* [PATCH] Use config scripts to detect ncurses libs for, menuconfig/nconfig dialogs
@ 2013-02-24 15:50 Justin
2013-02-25 18:30 ` Yann E. MORIN
0 siblings, 1 reply; 6+ messages in thread
From: Justin @ 2013-02-24 15:50 UTC (permalink / raw)
To: linux-kbuild, linux-kernel
[-- Attachment #1.1: Type: text/plain, Size: 3198 bytes --]
Hi,
when ncurses is build with --with-termlib several symbols are moved to a
seperate terminfo library (libtinfo.so). Current Kernel buildsystem
results in a build error with menuconfig and nconfig dialogs.
gcc -o scripts/kconfig/mconf scripts/kconfig/mconf.o
scripts/kconfig/zconf.tab.o scripts/kconfig/lxdialog/checklist.o
scripts/kconfig/lxdialog/util.o scripts/kconfig/lxdialog/inputbox.o
scripts/kconfig/lxdialog/textbox.o scripts/kconfig/lxdialog/yesno.o
scripts/kconfig/lxdialog/menubox.o -lncursesw
scripts/kconfig/mconf.o:mconf.c:function show_help: error: undefined
reference to 'stdscr'
scripts/kconfig/lxdialog/checklist.o:checklist.c:function print_arrows:
error: undefined reference to 'acs_map'
scripts/kconfig/lxdialog/checklist.o:checklist.c:function print_arrows:
error: undefined reference to 'acs_map'
scripts/kconfig/lxdialog/checklist.o:checklist.c:function print_arrows:
error: undefined reference to 'acs_map'
scripts/kconfig/lxdialog/checklist.o:checklist.c:function print_arrows:
error: undefined reference to 'acs_map'
scripts/kconfig/lxdialog/checklist.o:checklist.c:function
dialog_checklist: error: undefined reference to 'stdscr'
scripts/kconfig/lxdialog/checklist.o:checklist.c:function
dialog_checklist: error: undefined reference to 'COLS'
scripts/kconfig/lxdialog/checklist.o:checklist.c:function
dialog_checklist: error: undefined reference to 'stdscr'
scripts/kconfig/lxdialog/checklist.o:checklist.c:function
dialog_checklist: error: undefined reference to 'LINES'
scripts/kconfig/lxdialog/checklist.o:checklist.c:function
dialog_checklist: error: undefined reference to 'keypad'
scripts/kconfig/lxdialog/checklist.o:checklist.c:function
dialog_checklist: error: undefined reference to 'keypad'
scripts/kconfig/lxdialog/util.o:util.c:function dialog_clear: error:
undefined reference to 'COLS'
scripts/kconfig/lxdialog/util.o:util.c:function dialog_clear: error:
undefined reference to 'LINES'
scripts/kconfig/lxdialog/util.o:util.c:function dialog_clear: error:
undefined reference to 'stdscr'
scripts/kconfig/lxdialog/util.o:util.c:function dialog_clear: error:
undefined reference to 'COLS'
scripts/kconfig/lxdialog/util.o:util.c:function dialog_clear: error:
undefined reference to 'COLS'
scripts/kconfig/lxdialog/util.o:util.c:function init_dialog: error:
undefined reference to 'keypad'
scripts/kconfig/lxdialog/util.o:util.c:function init_dialog: error:
undefined reference to 'cbreak'
scripts/kconfig/lxdialog/util.o:util.c:function on_key_esc: error:
undefined reference to 'nodelay'
scripts/kconfig/lxdialog/util.o:util.c:function on_key_esc: error:
undefined reference to 'keypad'
scripts/kconfig/lxdialog/util.o:util.c:function on_key_esc: error:
undefined reference to 'nodelay'
scripts/kconfig/lxdialog/inputbox.o:inputbox.c:function dialog_inputbox:
error: undefined reference to 'LINES'
scripts/kconfig/lxdialog/textbox.o:textbox.c:function dialog_textbox:
error: undefined reference to 'LINES'
collect2: error: ld returned 1 exit status
Attached patch uses ncurses5-config and pkg-config to detect the libs to
link with. Please include this to fix the build error.
justin
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-Use-config-scripts-to-detect-ncurses-libs-for-menuco.patch --]
[-- Type: text/x-patch; name="0001-Use-config-scripts-to-detect-ncurses-libs-for-menuco.patch", Size: 2293 bytes --]
From 5c3e9e44432697b9f638c5367e01bdde47adf0f2 Mon Sep 17 00:00:00 2001
From: Justin Lecher <jlec@gentoo.org>
Date: Sun, 24 Feb 2013 16:02:00 +0100
Subject: [PATCH] Use config scripts to detect ncurses libs for
menuconfig/nconfig dialogs
When building ncurses with --with-termlib several symbols get moved from
libncurses.so to libtinfo.so. Thus when linking with libncurses.so, one
additionally needs to link with libtinfo.so.
Ncurses provides a config script (ncurses5-config) and an interface with
pkg-config. This patch makes use of those to detect the necessary libs
for linking of the ncurses menuconfig and nconfig dialogs.
Signed-off-by: Justin Lecher <jlec@gentoo.org>
---
scripts/kconfig/Makefile | 2 +-
scripts/kconfig/lxdialog/check-lxdialog.sh | 22 ++++++++++++++--------
2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
index 3091794..7649047 100644
--- a/scripts/kconfig/Makefile
+++ b/scripts/kconfig/Makefile
@@ -216,7 +216,7 @@ HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \
HOSTLOADLIBES_mconf = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC))
-HOSTLOADLIBES_nconf = -lmenu -lpanel -lncurses
+HOSTLOADLIBES_nconf = `pkg-config --libs menu panel ncurses`
$(obj)/qconf.o: $(obj)/.tmp_qtcheck
ifeq ($(qconf-target),1)
diff --git a/scripts/kconfig/lxdialog/check-lxdialog.sh b/scripts/kconfig/lxdialog/check-lxdialog.sh
index c8e8a71..4699c1b 100644
--- a/scripts/kconfig/lxdialog/check-lxdialog.sh
+++ b/scripts/kconfig/lxdialog/check-lxdialog.sh
@@ -4,15 +4,21 @@
# What library to link
ldflags()
{
- for ext in so a dll.a dylib ; do
- for lib in ncursesw ncurses curses ; do
- $cc -print-file-name=lib${lib}.${ext} | grep -q /
- if [ $? -eq 0 ]; then
- echo "-l${lib}"
- exit
- fi
+ if type -p ncurses5-config &> /dev/null ; then
+ ncurses5-config --libs
+ exit 0
+ else
+ for ext in so a dll.a dylib ; do
+ for lib in ncursesw ncurses curses ; do
+ $cc -print-file-name=lib${lib}.${ext} | \
+ grep -q /
+ if [ $? -eq 0 ]; then
+ echo "-l${lib}"
+ exit
+ fi
+ done
done
- done
+ fi
exit 1
}
--
1.8.1.4
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 263 bytes --]
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] Use config scripts to detect ncurses libs for, menuconfig/nconfig dialogs
2013-02-24 15:50 [PATCH] Use config scripts to detect ncurses libs for, menuconfig/nconfig dialogs Justin
@ 2013-02-25 18:30 ` Yann E. MORIN
2013-02-25 20:32 ` Justin
0 siblings, 1 reply; 6+ messages in thread
From: Yann E. MORIN @ 2013-02-25 18:30 UTC (permalink / raw)
To: linux-kbuild, jlec; +Cc: linux-kernel
Justin, All,
On Sunday 24 February 2013 Justin wrote:
> when ncurses is build with --with-termlib several symbols are moved to a
> seperate terminfo library (libtinfo.so). Current Kernel buildsystem
> results in a build error with menuconfig and nconfig dialogs.
Do you know of a distribution where this is the case, so I can test?
[--SNIP--]
> Attached patch uses ncurses5-config and pkg-config to detect the libs to
> link with. Please include this to fix the build error.
Next time, please include the patch directly in the mail body, it is easier
to review and comment. Using 'git send-email' does that automatically for
you.
> Subject: [PATCH] Use config scripts to detect ncurses libs for
> menuconfig/nconfig dialogs
>
> When building ncurses with --with-termlib several symbols get moved from
> libncurses.so to libtinfo.so. Thus when linking with libncurses.so, one
> additionally needs to link with libtinfo.so.
>
> Ncurses provides a config script (ncurses5-config) and an interface with
> pkg-config. This patch makes use of those to detect the necessary libs
> for linking of the ncurses menuconfig and nconfig dialogs.
I think I would prefer spearate patches, one for mconf, one for nconf.
> Signed-off-by: Justin Lecher <jlec@gentoo.org>
> ---
>
> scripts/kconfig/Makefile | 2 +-
> scripts/kconfig/lxdialog/check-lxdialog.sh | 22 ++++++++++++++--------
> 2 files changed, 15 insertions(+), 9 deletions(-)
>
> diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
> index 3091794..7649047 100644
> --- a/scripts/kconfig/Makefile
> +++ b/scripts/kconfig/Makefile
> @@ -216,7 +216,7 @@ HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0
> gmodule-2.0 libglade-2.0` \
>
> HOSTLOADLIBES_mconf = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags
> $(HOSTCC))
>
> -HOSTLOADLIBES_nconf = -lmenu -lpanel -lncurses
> +HOSTLOADLIBES_nconf = `pkg-config --libs menu panel ncurses`
On my distro (Debian stable) ncurses has no pkg-config file installed, so
this fails.
> $(obj)/qconf.o: $(obj)/.tmp_qtcheck
>
> ifeq ($(qconf-target),1)
>
> diff --git a/scripts/kconfig/lxdialog/check-lxdialog.sh
> b/scripts/kconfig/lxdialog/check-lxdialog.sh index c8e8a71..4699c1b 100644
> --- a/scripts/kconfig/lxdialog/check-lxdialog.sh
> +++ b/scripts/kconfig/lxdialog/check-lxdialog.sh
> @@ -4,15 +4,21 @@
>
> # What library to link
> ldflags()
> {
>
> - for ext in so a dll.a dylib ; do
> - for lib in ncursesw ncurses curses ; do
> - $cc -print-file-name=lib${lib}.${ext} | grep -q /
> - if [ $? -eq 0 ]; then
> - echo "-l${lib}"
> - exit
> - fi
> + if type -p ncurses5-config &> /dev/null ; then
^^
This is a bashism, and will not work on purely POSIX shells.
Please use: >/dev/null 2>&1
> + ncurses5-config --libs
I'd write:
if ! ncurses5-config --libs 2>/dev/null; then
old-code goes here
fi
> + exit 0
(nit-picking) I'd prefer you be consistent with existing code which just
calls 'exit' without a number.
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Use config scripts to detect ncurses libs for, menuconfig/nconfig dialogs
2013-02-25 18:30 ` Yann E. MORIN
@ 2013-02-25 20:32 ` Justin
2013-02-25 20:53 ` Yann E. MORIN
0 siblings, 1 reply; 6+ messages in thread
From: Justin @ 2013-02-25 20:32 UTC (permalink / raw)
To: Yann E. MORIN; +Cc: linux-kbuild, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 1518 bytes --]
On 25.02.2013 19:30, Yann E. MORIN wrote:
> Justin, All,
>
> On Sunday 24 February 2013 Justin wrote:
>> when ncurses is build with --with-termlib several symbols are moved to a
>> seperate terminfo library (libtinfo.so). Current Kernel buildsystem
>> results in a build error with menuconfig and nconfig dialogs.
>
> Do you know of a distribution where this is the case, so I can test?
This is using Gentoo Linux testing with ld.gold. But I assume you will
get the same result using any distro with gold.
>
> I think I would prefer spearate patches, one for mconf, one for nconf.
I will send new patches in a separate mail, so that we can do the review
there.
>>
>> -HOSTLOADLIBES_nconf = -lmenu -lpanel -lncurses
>> +HOSTLOADLIBES_nconf = `pkg-config --libs menu panel ncurses`
>
> On my distro (Debian stable) ncurses has no pkg-config file installed, so
> this fails.
I already feared that. Will convert it to ncurses5-config which should
be available on any recent distro.
>> - fi
>> + if type -p ncurses5-config &> /dev/null ; then
> ^^
> This is a bashism, and will not work on purely POSIX shells.
> Please use: >/dev/null 2>&1
Thanks for noting this.
>> + exit 0
>
> (nit-picking) I'd prefer you be consistent with existing code which just
> calls 'exit' without a number.
I added it to be more precise on the return value. But I don't care as
simple exit should result in the same.
Thanks for the review.
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 263 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Use config scripts to detect ncurses libs for, menuconfig/nconfig dialogs
2013-02-25 20:32 ` Justin
@ 2013-02-25 20:53 ` Yann E. MORIN
2013-02-26 6:59 ` justin
2013-02-27 14:30 ` justin
0 siblings, 2 replies; 6+ messages in thread
From: Yann E. MORIN @ 2013-02-25 20:53 UTC (permalink / raw)
To: jlec; +Cc: linux-kbuild, linux-kernel
Justin, All,
On Monday 25 February 2013 Justin wrote:
> On 25.02.2013 19:30, Yann E. MORIN wrote:
> > On Sunday 24 February 2013 Justin wrote:
> >> when ncurses is build with --with-termlib several symbols are moved to a
> >> seperate terminfo library (libtinfo.so). Current Kernel buildsystem
> >> results in a build error with menuconfig and nconfig dialogs.
> >
> > Do you know of a distribution where this is the case, so I can test?
>
> This is using Gentoo Linux testing with ld.gold. But I assume you will
> get the same result using any distro with gold.
No, I meant a distro where ncurses is built with --with-termlib.
On my Debian stable (squeeze), libtinfo does not exist at all,
so I can not test linking against it:
$ apt-file search libtinfo
(zilch)
But I'll see at installing a Gentoo (if that's not too complex) in a
VM to do the checks (can you confirm that Gentoo by default configures
ncurses with --with-termlib ?).
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Use config scripts to detect ncurses libs for, menuconfig/nconfig dialogs
2013-02-25 20:53 ` Yann E. MORIN
@ 2013-02-26 6:59 ` justin
2013-02-27 14:30 ` justin
1 sibling, 0 replies; 6+ messages in thread
From: justin @ 2013-02-26 6:59 UTC (permalink / raw)
To: Yann E. MORIN; +Cc: linux-kbuild, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 1292 bytes --]
On 25/02/13 21:53, Yann E. MORIN wrote:
> Justin, All,
>
> On Monday 25 February 2013 Justin wrote:
>> On 25.02.2013 19:30, Yann E. MORIN wrote:
>>> On Sunday 24 February 2013 Justin wrote:
>>>> when ncurses is build with --with-termlib several symbols are moved to a
>>>> seperate terminfo library (libtinfo.so). Current Kernel buildsystem
>>>> results in a build error with menuconfig and nconfig dialogs.
>>>
>>> Do you know of a distribution where this is the case, so I can test?
>>
>> This is using Gentoo Linux testing with ld.gold. But I assume you will
>> get the same result using any distro with gold.
>
> No, I meant a distro where ncurses is built with --with-termlib.
> On my Debian stable (squeeze), libtinfo does not exist at all,
> so I can not test linking against it:
>
> $ apt-file search libtinfo
> (zilch)
>
> But I'll see at installing a Gentoo (if that's not too complex) in a
> VM to do the checks (can you confirm that Gentoo by default configures
> ncurses with --with-termlib ?).
>
> Regards,
> Yann E. MORIN.
>
I can be build optionally (mostly for binary package compatibility
reasons) with --with-termlib. I will send a step-by-step instruction how
to test this with our live cd later today.
Thanks,
Justin
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 263 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Use config scripts to detect ncurses libs for, menuconfig/nconfig dialogs
2013-02-25 20:53 ` Yann E. MORIN
2013-02-26 6:59 ` justin
@ 2013-02-27 14:30 ` justin
1 sibling, 0 replies; 6+ messages in thread
From: justin @ 2013-02-27 14:30 UTC (permalink / raw)
To: Yann E. MORIN; +Cc: linux-kbuild, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 1417 bytes --]
On 25/02/13 21:53, Yann E. MORIN wrote:
>>> Do you know of a distribution where this is the case, so I can test?
Fedora is also building with --with-termlib but they are using a ld
script to workaround the linking problem. I talked to our (Gentoo Linux)
base-system maintainers but they refused to apply this, instead they
said the consuming packages should be fixed. This is now an ongoing effort.
> But I'll see at installing a Gentoo (if that's not too complex) in a
> VM to do the checks (can you confirm that Gentoo by default configures
> ncurses with --with-termlib ?).
>
It is not the "default" configuration in a classic sense, because it
will only build with that option if a consuming package requests this.
Here the receipt for generic reproduction:
* Get yourself a copy of our live dvd
(http://gentoo.inode.at//releases/x86/20121221/)
* Kick a vm or boot from the dvd (Make sure you have enough RAM, because
you will compile ncurses on it and place the git checkout there.)
* Get a terminal and switch to root
* Update the package db by running: emerge --sync
* Rebuild ncurses with:
ACCEPT_KEYWORDS="~x86" USE="tinfo" emerge -va1 ncurses
Important here that "tinfo" is marked as changing USE (colored green)
* Switch to ld.gold with "binutils-config --linker ld.gold" (make sure
that it worked out -> ld -v)
* git clone the kernel and do your testing.
Justin
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 263 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-02-27 14:30 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-24 15:50 [PATCH] Use config scripts to detect ncurses libs for, menuconfig/nconfig dialogs Justin
2013-02-25 18:30 ` Yann E. MORIN
2013-02-25 20:32 ` Justin
2013-02-25 20:53 ` Yann E. MORIN
2013-02-26 6:59 ` justin
2013-02-27 14:30 ` justin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).