On Fri, Jun 27, 2014 at 2:32 PM, Robby Workman <[email protected]> wrote:

> On Thu, 26 Jun 2014 15:49:20 -0500
> Dan Williams <[email protected]> wrote:
>
> > On Thu, 2014-06-26 at 14:58 -0500, Dan Williams wrote:
> > > On Thu, 2014-06-26 at 12:44 -0500, Robby Workman wrote:
> > > > On Thu, 26 Jun 2014 12:27:14 -0500
> > > > Robby Workman <[email protected]> wrote:
> > > >
> > > > > On Thu, 26 Jun 2014 10:16:41 -0500
> > > > > Dan Williams <[email protected]> wrote:
> > > > >
> > > > > > On Thu, 2014-06-26 at 01:19 -0500, Robby Workman wrote:
> > > > > > > On Thu, 26 Jun 2014 07:55:58 +0200
> > > > > > > Vincent Bernat <[email protected]> wrote:
> > > > > > >
> > > > > > > >  ❦ 25 juin 2014 21:36 -0500, Robby Workman
> > > > > > > > <[email protected]> :
> > > > > > > >
> > > > > > > > > Okay, looks like that's ncurses, so let's link ncurses
> > > > > > > > > too:
> > > > > > > > >
> > > > > > > > >   [rworkman@liberty NetworkManager-0.9.9.98]$ gcc -o
> > > > > > > > > testrl -lreadline -lncurses testrl.c [rworkman@liberty
> > > > > > > > > NetworkManager-0.9.9.98]$ strings testrl | grep readline
> > > > > > > > > libreadline.so.6 readline
> > > > > > > > >   readline
> > > > > > > > >
> > > > > > > > > Now, here's where I'm unclear.  If I add
> > > > > > > > > LDFLAGS="-lnurses" to the configure environment, the
> > > > > > > > > test passes and the complete build occurs successfully.
> > > > > > > > > What's unclear is *why* that's needed -- is this an
> > > > > > > > > omission in the NM sources (isn't nmtui a curses client
> > > > > > > > > and thus ncurses should be linked?) or is something
> > > > > > > > > different about how we (Slackware) build readline?
> > > > > > > >
> > > > > > > > GNU readline requires linking to ncurses as well to get
> > > > > > > > termcap symbols. Here is an autoconf recipe for that:
> > > > > > > >
> http://www.gnu.org/software/autoconf-archive/ax_lib_readline.html
> > > > > > >
> > > > > > > If I'm reading that correctly, that snippet above tries to
> > > > > > > link in curses if it encounters failure, so perhaps NM
> > > > > > > should use it? Maybe not though - there's at least one
> > > > > > > other project (nftables) where I've encountered the same
> > > > > > > problem.
> > > > > > >
> > > > > > > While digging around a bit after sending this, I found that
> > > > > > > we add "--with-curses" to the readline configure to use it
> > > > > > > instead of libtermcap, so it's *supposed* to be linked in
> > > > > > > already and this would not be a problem.  However, for
> > > > > > > whatever reason (it's not clear whether it's intentional or
> > > > > > > not), the upstream sources don't use TERMCAP_LIBS (set to
> > > > > > > "-lcurses" per the configure flag) when building the shared
> > > > > > > library.  It appears that at least one distro solves that
> > > > > > > by running 'make SHLIB_LIBS="-lcurses"' when building, but
> > > > > > > I don't see where Fedora did that, so it's not clear at all
> > > > > > > how they link curses (or even if they do, when means I
> > > > > > > wonder how the configure test in OP works there).
> > > > > > >
> > > > > > > Assuming this is indeed a problem, it's been in Slackware
> > > > > > > for years without causing any actual issues - the readline
> > > > > > > library from 13.37 (released in April 2011) doesn't link
> > > > > > > ncurses either, so I'm not convinced that we're doing
> > > > > > > anything wrong (but I'm open to argument).
> > > > > >
> > > > > > What does 'ldd' on your libreadline.so return?  Mine has:
> > > > > >
> > > > > >       linux-vdso.so.1 =>  (0x00007fff191fe000)
> > > > > >       libtinfo.so.5 => /lib64/libtinfo.so.5
> > > > > > (0x0000003473400000) libc.so.6 => /lib64/libc.so.6
> > > > > > (0x000000345ac00000) /lib64/ld-linux-x86-64.so.2
> > > > > > (0x000000345a800000)
> > > > > >
> > > > > > so at least the dynamic linker knows that libtinfo (provided
> > > > > > by ncurses) is required here, and should load that in for the
> > > > > > configure test program.
> > > > >
> > > > >
> > > > > # ldd /usr/lib64/libreadline.so.6
> > > > >         linux-vdso.so.1 (0x00007ffff43ff000)
> > > > >         libc.so.6 => /lib64/libc.so.6 (0x00007ffda6b37000)
> > > > >         /lib64/ld-linux-x86-64.so.2 (0x00007ffda7179000)
> > > > >
> > > > > I don't have any links to support this, but in talking with a
> > > > > couple of folks who've "been around a while," it seems that the
> > > > > lack of direct linking is intentional on the part of upstream
> > > > > readlinke -- this allows the specific apps to use whichever
> > > > > (termcap / ncurses) is appropriate for them.  The autoconf
> > > > > stuff linked earlier seems to somewhat support that, but again,
> > > > > I don't have a definitive answer on it.
> > > >
> > > >
> > > > ...and comment #1 seems to support that (but apparently the
> > > > official RH position changed since then):
> > > >
> > > > https://bugzilla.redhat.com/show_bug.cgi?id=162023
> > >
> > > Fun.  nmcli doesn't care which one you link with, so NM would rather
> > > just use whatever you have lying around.  Unfortunately it seems we
> > > have to make the user specify one?
> >
> > Robby, can you test the attached patch?  If it works for you we'll try
> > to get it into git master and 0.9.10.
>
>
> Yep, configure test for readline passes, the build completes successfully,
> and the nmtui binary at least runs (I've not actually running the NM daemon
> version yet, so I can't really test functionality).
>
> Thanks for the patience and help on this :-)
>
> Great, thanks for working on that :)

Rgds
Saxa


> -RW
> _______________________________________________
> networkmanager-list mailing list
> [email protected]
> https://mail.gnome.org/mailman/listinfo/networkmanager-list
>
_______________________________________________
networkmanager-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to