use ncurses-config to find all curses related libs
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
@@ -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
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.
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
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.
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
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.
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_LIBSis expanded.
Right. I remember there are ways to assign a variable only once, I will check the make documentation.
Olaf
PATCH v2 1/1 use ncurses-config to find all curses related libs
In reply to Olaf HeringAfter 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
@@ -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