Hide Forgot
Description of problem: pkg-config returns incorrect results for ncurses (missing tinfo dependency) 'pkg-config --libs --static ncurses' doesn't return the tinfo link flag values. Doing an objdump or ldd to the libncurses.so library returns the libtinfo library. # objdump -x /usr/lib64/libncurses.so | grep NEEDED NEEDED libc.so.6 NEEDED libdl.so.2 NEEDED libtinfo.so.5 At present, below is the output for pkg-config. Actual results: $ /usr/bin/pkg-config --libs --static ncurses -lncurses $ /usr/bin/pkg-config --libs --static ncursesw -lncursesw Expected results: The pkg-config entry should be changed to require tinfo. We need to add tinfo to Requires: field in ncurses.pc and ncursesw.pc $ /usr/bin/pkg-config --libs --static ncurses -lncurses -ltinfo $ /usr/bin/pkg-config --libs --static ncursesw -lncursesw -ltinfo Version-Release number of selected component (if applicable): Red Hat Enterprise Linux 6 ncurses-5.7-3.20090208.el6.x86_64 ncurses-devel-5.7-3.20090208.el6.x86_64
Created attachment 818281 [details] ncurses.pc file with tinfo added
This request was evaluated by Red Hat Product Management for inclusion in the current release of Red Hat Enterprise Linux. Because the affected component is not scheduled to be updated in the current release, Red Hat is unable to address this request at this time. Red Hat invites you to ask your support representative to propose this request, if appropriate, in the next release of Red Hat Enterprise Linux.
Yes, with static linking -ltinfo should be included in the list. But it needs to be in requires.private so it's not listed when using dynamic linking. I.e. Requires.private: tinfo
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2015-0687.html
If "pkg-config --libs ncurses" returns only "-lncurses", and the linker flags --no-add-needed is used, don't we have a problem ? If I understood correctly, the --no-add-needed flag even became the default in redhat 7. And when using clang, which invokes directly the linker, the --no-add-needed flag is always added as soon as we are on a redhat system (c.f. https://llvm.org/bugs/show_bug.cgi?id=19745) And on debian "pkg-config --libs ncurses" returns "-lncurses -ltinfo". That said, I guess I can use "pkg-config --libs ncurses tinfo" instead, centos 5 did not have a pkgconfig file anyway, and this will work on redhat >= 6 and on debian.
I think that depends on the application. If it uses the libtinfo symbols, it should use pkg-config to get the tinfo libs and don't expect it will be included in the ncurses libs.