package/ncurses: fix builds with both shared and static libs
PATCH 1/1 package/ncurses: fix builds with both shared and static libs
When both shared and static libs are enabled, we have two shell constructs to run, but they are not properly separated, leading to build failures like:
ln -sf libncursesw.a /home/idnc_sk/IOLINUX/builds/micro-x86_64-corei7/
output/host/usr/x86_64-buildroot-linux-uclibc/sysroot/usr/lib/libcurse
s.a for lib in libncurses libmenu libpanel libform; do ln -sf ${lib}w.
so /home/idnc_sk/IOLINUX/builds/micro-x86_64-corei7/output/host/usr/x8
6_64-buildroot-linux-uclibc/sysroot/usr/lib/${lib}.so; done
/bin/bash: -c: line 0: syntax error near unexpected token `do'
/bin/bash: -c: line 0: `ln -sf libncursesw.a /home/idnc_sk/IOLINUX/bui
lds/micro-x86_64-corei7/output/host/usr/x86_64-buildroot-linux-uclibc/
sysroot/usr/lib/libcurses.a for lib in libncurses libmenu libpanel lib
form; do ln -sf ${lib}w.so /home/idnc_sk/IOLINUX/builds/micro-x86_64-c
orei7/output/host/usr/x86_64-buildroot-linux-uclibc/sysroot/usr/lib/${
lib}.so; done'As can be seen, there is a missing semi-colon ';' between the symlink command and the for loop:
ln -sf libncursesw.a [...]/libcurses.a for lib in [...]
Fix that by adding a semi-colon after each first shell constructs, to properly separate the two. If the second one is not enabled (i.e. for a static-only build), there is a trailing semi-colon, but that's perfectly valid shell syntax.
--- package/ncurses/ncurses.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
package/ncurses/ncurses.mk +2 -2
@@ -86,10 +86,10 @@ define NCURSES_LINK_PC endef NCURSES_LINK_TARGET_LIBS = \ - $(if $(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),$(call NCURSES_LINK_LIBS_STATIC,$(TARGET_DIR))) \ + $(if $(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),$(call NCURSES_LINK_LIBS_STATIC,$(TARGET_DIR));) \ $(if $(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),$(call NCURSES_LINK_LIBS_SHARED,$(TARGET_DIR))) NCURSES_LINK_STAGING_LIBS = \ - $(if $(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),$(call NCURSES_LINK_LIBS_STATIC,$(STAGING_DIR))) \ + $(if $(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),$(call NCURSES_LINK_LIBS_STATIC,$(STAGING_DIR));) \ $(if $(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),$(call NCURSES_LINK_LIBS_SHARED,$(STAGING_DIR))) NCURSES_LINK_STAGING_PC = $(call NCURSES_LINK_PC,$(STAGING_DIR))
Signature · 1 line
1.9.1
Thomas Petazzoni
AppliedPATCH 1/1 package/ncurses: fix builds with both shared and static libs
Dear Yann E. MORIN,
Quoted 22 lines · Yann E. MORIN
When both shared and static libs are enabled, we have two shell constructs to run, but they are not properly separated, leading to build failures like:
ln -sf libncursesw.a /home/idnc_sk/IOLINUX/builds/micro-x86_64-corei7/ output/host/usr/x86_64-buildroot-linux-uclibc/sysroot/usr/lib/libcurse s.a for lib in libncurses libmenu libpanel libform; do ln -sf ${lib}w. so /home/idnc_sk/IOLINUX/builds/micro-x86_64-corei7/output/host/usr/x8 6_64-buildroot-linux-uclibc/sysroot/usr/lib/${lib}.so; done /bin/bash: -c: line 0: syntax error near unexpected token `do' /bin/bash: -c: line 0: `ln -sf libncursesw.a /home/idnc_sk/IOLINUX/bui lds/micro-x86_64-corei7/output/host/usr/x86_64-buildroot-linux-uclibc/ sysroot/usr/lib/libcurses.a for lib in libncurses libmenu libpanel lib form; do ln -sf ${lib}w.so /home/idnc_sk/IOLINUX/builds/micro-x86_64-c orei7/output/host/usr/x86_64-buildroot-linux-uclibc/sysroot/usr/lib/${ lib}.so; done'As can be seen, there is a missing semi-colon ';' between the symlink command and the for loop:
ln -sf libncursesw.a [...]/libcurses.a for lib in [...]
Quoted 7 lines
Fix that by adding a semi-colon after each first shell constructs, to properly separate the two. If the second one is not enabled (i.e. for a static-only build), there is a trailing semi-colon, but that's perfectly valid shell syntax.
Reported-by idnc_sk on IRCSigned-off-by "Yann E. MORIN" <[email protected]>
Applied, thanks.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com