Skip to contentSkip to conversation

use ncurses-config to find all curses related libs

PATCH Superseded Olaf Hering 2 participants 8 messages Nov 22, 2011 – Nov 29, 2011

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 use ncurses-config to find all curses related libs

After a split of libtinfo from libncurses in openSuSE Factory the tools will not link anymore. In the URL below it was suggested to use 'ncurses-config --libs' to find the correct linker options. But ncurses-config does not exist neither in SLES11 nor in openSuSE. So check for both ncurses5-config and ncurses-config, if the latter happens to exist in other environments.

With this change xen-unstable tools build succeeds again in SLES11 and the latest openSuSE development branch.

http://lists.opensuse.org/opensuse-packaging/2011-11/msg00055.html

config/StdGNU.mk +1 -1
diff -r 0b1ac7b3ee4d config/StdGNU.mk
@@ -67,7 +67,7 @@ XEN_CONFIG_DIR = $(CONFIG_DIR)/xen
 XEN_SCRIPT_DIR = $(XEN_CONFIG_DIR)/scripts
 
 SOCKET_LIBS =
-CURSES_LIBS = -lncurses
+CURSES_LIBS = $(shell if ! ncurses5-config --libs 2>/dev/null ; then ncurses-config --libs ; fi)
 PTHREAD_LIBS = -lpthread
 UTIL_LIBS = -lutil
 DLOPEN_LIBS = -ldl
#1 lore raw

Olaf Hering writes ("[Xen-devel] [PATCH] use ncurses-config to find all curses related libs"):

Quoted 9 lines

After a split of libtinfo from libncurses in openSuSE Factory the tools will not link anymore. In the URL below it was suggested to use 'ncurses-config --libs' to find the correct linker options. But ncurses-config does not exist neither in SLES11 nor in openSuSE. So check for both ncurses5-config and ncurses-config, if the latter happens to exist in other environments.

With this change xen-unstable tools build succeeds again in SLES11 and the latest openSuSE development branch.

Thanks. However:

config/StdGNU.mk XEN_CONFIG_DIR = $(CONFIG_DIR)/xen · line 70

Quoted 2 lines
config/StdGNU.mk +1 -1
-CURSES_LIBS = -lncurses
+CURSES_LIBS = $(shell if ! ncurses5-config --libs 2>/dev/null ; then ncurses-config --libs ; fi)

In the case where ncurses5-config is not provided, this will fail.

Ian.

#2 lore raw
Quoted 5 lines · Ian Jackson

Olaf Hering writes ("[Xen-devel] [PATCH] use ncurses-config to find all curses related libs"):

config/StdGNU.mk XEN_CONFIG_DIR = $(CONFIG_DIR)/xen · line 70

Quoted 2 lines
config/StdGNU.mk +1 -1
-CURSES_LIBS = -lncurses
+CURSES_LIBS = $(shell if ! ncurses5-config --libs 2>/dev/null ; then ncurses-config --libs ; fi)

In the case where ncurses5-config is not provided, this will fail.

It seems to work for me, with this example foo is printed:

if ! ABC 2>/dev/null ; then echo foo ; fi

Olaf

#3 lore raw

Olaf Hering writes ("Re: [Xen-devel] [PATCH] use ncurses-config to find all curses related libs"):

Quoted 6 lines · Ian Jackson
Quoted 5 lines

Olaf Hering writes ("[Xen-devel] [PATCH] use ncurses-config to find all curses related libs"):

config/StdGNU.mk XEN_CONFIG_DIR = $(CONFIG_DIR)/xen · line 70

Quoted 2 lines
config/StdGNU.mk +1 -1
-CURSES_LIBS = -lncurses
+CURSES_LIBS = $(shell if ! ncurses5-config --libs 2>/dev/null ; then ncurses-config --libs ; fi)

In the case where ncurses5-config is not provided, this will fail.

Sorry, I wasn't sufficiently clear. The case that fails is if neither ncurses5-config nor ncurses-config is provided. The default should be to use -lncurses as before.

Quoted 3 lines

It seems to work for me, with this example foo is printed:

if ! ABC 2>/dev/null ; then echo foo ; fi

Yes, but it won't include -lncurses in CURSES_LIBS.

Ian.

#4 lore raw
Quoted 11 lines · Ian Jackson

Olaf Hering writes ("Re: [Xen-devel] [PATCH] use ncurses-config to find all curses related libs"):

Quoted 6 lines · Ian Jackson
Quoted 5 lines

Olaf Hering writes ("[Xen-devel] [PATCH] use ncurses-config to find all curses related libs"):

config/StdGNU.mk XEN_CONFIG_DIR = $(CONFIG_DIR)/xen · line 70

Quoted 2 lines
config/StdGNU.mk +1 -1
-CURSES_LIBS = -lncurses
+CURSES_LIBS = $(shell if ! ncurses5-config --libs 2>/dev/null ; then ncurses-config --libs ; fi)

In the case where ncurses5-config is not provided, this will fail.

Sorry, I wasn't sufficiently clear. The case that fails is if neither ncurses5-config nor ncurses-config is provided. The default should be to use -lncurses as before.

I see. Another if construct, or a check_ncurses script which looks for ncurses5-config or ncurses-config. After some digging in old SuSE releases, ncurses5-config appeared in 11.0 (2008), SLES10 does not have it yes . So blindly relying on -config scripts will likely break building on old distributions.

This should work:

if ! ncurses5-config --libs 2>/dev/null;then if ! ncurses-config --libs ; then echo '-lncurses' ; fi ; fi

Olaf

#5 lore raw

Olaf Hering writes ("Re: [Xen-devel] [PATCH] use ncurses-config to find all curses related libs"):

Quoted 3 lines

This should work:

if ! ncurses5-config --libs 2>/dev/null;then if ! ncurses-config --libs ; then echo '-lncurses' ; fi ; fi

That's an improvement, but it reruns the shell rune for every time CURSES_LIBS is expanded.

Ian.

#6 lore raw
Quoted 7 lines · Ian Jackson

Olaf Hering writes ("Re: [Xen-devel] [PATCH] use ncurses-config to find all curses related libs"):

Quoted 3 lines

This should work:

if ! ncurses5-config --libs 2>/dev/null;then if ! ncurses-config --libs ; then echo '-lncurses' ; fi ; fi

That's an improvement, but it reruns the shell rune for every time CURSES_LIBS is expanded.

Right. I remember there are ways to assign a variable only once, I will check the make documentation.

Olaf

#7 lore raw

PATCH v2 1/1 use ncurses-config to find all curses related libs

In reply to Olaf Hering

After a split of libtinfo from libncurses in openSuSE Factory the tools will not link anymore. In the URL below it was suggested to use 'ncurses-config --libs' to find the correct linker options. But ncurses-config does not exist neither in SLES11 nor in openSuSE. So check for both ncurses5-config and ncurses-config, if the latter happens to exist in other environments.

With this change xen-unstable tools build succeeds again in SLES11 and the latest openSuSE development branch.

http://lists.opensuse.org/opensuse-packaging/2011-11/msg00055.html

config/StdGNU.mk +1 -1
diff -r 4319d77f5b3b config/StdGNU.mk
@@ -67,7 +67,7 @@ XEN_CONFIG_DIR = $(CONFIG_DIR)/xen
 XEN_SCRIPT_DIR = $(XEN_CONFIG_DIR)/scripts
 
 SOCKET_LIBS =
-CURSES_LIBS = -lncurses
+CURSES_LIBS ?= $(shell if ! ncurses5-config --libs 2>/dev/null;then if ! ncurses-config --libs 2>/dev/null;then echo -lncurses;fi;fi)
 PTHREAD_LIBS = -lpthread
 UTIL_LIBS = -lutil
 DLOPEN_LIBS = -ldl