Skip to contentSkip to conversation

slang: fix static link with ncurses

PATCH New Baruch Siach 3 participants 4 messages Mar 1, 2016 – Mar 5, 2016

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 slang: fix static link with ncurses

slang does forgets ncurses that is a dependency of readline when linking the slsh binary. Correct this.

While at it, also make sure to use staging ncurses5-config script and not the host one.

Fixes:
http://autobuild.buildroot.net/results/1dc/1dc52048254c32a24070fef1c1039cebb32e7ac1/
http://autobuild.buildroot.net/results/c17/c176511cbb147c2d8cb0ec0ff3c1612ce8971cb8/
http://autobuild.buildroot.net/results/78d/78dc2ba07b1d7f888aab94e223f3e0b1a1df3af5/

---
 package/slang/slang.mk | 4 ++++
 1 file changed, 4 insertions(+)
package/slang/slang.mk +4 -0
index 1a7576afc363..464d92065112 100644
@@ -40,6 +40,10 @@ endif
 
 ifeq ($(BR2_PACKAGE_NCURSES),y)
 SLANG_DEPENDENCIES += ncurses
+SLANG_CONF_ENV += ac_cv_path_nc5config=$(STAGING_DIR)/usr/bin/ncurses5-config
+ifeq ($(BR2_STATIC_LIBS),y)
+SLANG_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs ncurses`"
+endif
 else
 SLANG_CONF_OPTS += ac_cv_path_nc5config=no
 endif
Signature · 1 line
2.7.0
#1 lore raw

PATCH 1/1 slang: fix static link with ncurses

Quoted 23 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Baruch" == Baruch Siach <[email protected]> writes:

slang does forgets ncurses that is a dependency of readline when linking the slsh binary. Correct this.

While at it, also make sure to use staging ncurses5-config script and not the host one.

Fixes:
http://autobuild.buildroot.net/results/1dc/1dc52048254c32a24070fef1c1039cebb32e7ac1/
http://autobuild.buildroot.net/results/c17/c176511cbb147c2d8cb0ec0ff3c1612ce8971cb8/
http://autobuild.buildroot.net/results/78d/78dc2ba07b1d7f888aab94e223f3e0b1a1df3af5/

---
 package/slang/slang.mk | 4 ++++
 1 file changed, 4 insertions(+)
package/slang/slang.mk +0 -0
index 1a7576afc363..464d92065112 100644

package/slang/slang.mk endif · line 46

Quoted 7 lines
package/slang/slang.mk +4 -0
@@ -40,6 +40,10 @@ endif
 
 ifeq ($(BR2_PACKAGE_NCURSES),y)
 SLANG_DEPENDENCIES += ncurses
+SLANG_CONF_ENV += ac_cv_path_nc5config=$(STAGING_DIR)/usr/bin/ncurses5-config
+ifeq ($(BR2_STATIC_LIBS),y)
+SLANG_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs ncurses`"
+endif

You forgot to add host-pkgconf as a dependency. Why is both needed, doesn't ncurses5-config return correct info?

Here they seem to be equivalent with a static build:

./host/usr/bin/pkg-config --libs ncurses
-lncurses
./staging/usr/bin/ncurses5-config --libs -L/home/peko/source/buildroot/output-test/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib -lncurses

Your commit message talks about readline, so perhaps the problem is really about readline? How does slang figure out how to link with readline?

Signature · 1 line
Bye, Peter Korsgaard
#2 lore raw

PATCH 1/1 slang: fix static link with ncurses

Hi Peter,

Quoted 24 lines · Peter Korsgaard
Quoted 23 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Baruch" == Baruch Siach <[email protected]> writes:

slang does forgets ncurses that is a dependency of readline when linking the slsh binary. Correct this.

While at it, also make sure to use staging ncurses5-config script and not the host one.

Fixes:
http://autobuild.buildroot.net/results/1dc/1dc52048254c32a24070fef1c1039cebb32e7ac1/
http://autobuild.buildroot.net/results/c17/c176511cbb147c2d8cb0ec0ff3c1612ce8971cb8/
http://autobuild.buildroot.net/results/78d/78dc2ba07b1d7f888aab94e223f3e0b1a1df3af5/

---
 package/slang/slang.mk | 4 ++++
 1 file changed, 4 insertions(+)
package/slang/slang.mk +0 -0
index 1a7576afc363..464d92065112 100644
@@ -40,6 +40,10 @@ endif
Quoted 9 lines

package/slang/slang.mk endif · line 46

Quoted 6 lines
package/slang/slang.mk +4 -0
 ifeq ($(BR2_PACKAGE_NCURSES),y)
 SLANG_DEPENDENCIES += ncurses
+SLANG_CONF_ENV += ac_cv_path_nc5config=$(STAGING_DIR)/usr/bin/ncurses5-config
+ifeq ($(BR2_STATIC_LIBS),y)
+SLANG_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs ncurses`"
+endif

You forgot to add host-pkgconf as a dependency. Why is both needed, doesn't ncurses5-config return correct info?

It does. I'll change that in v2.

Quoted 6 lines

Here they seem to be equivalent with a static build:

./host/usr/bin/pkg-config --libs ncurses
-lncurses
./staging/usr/bin/ncurses5-config --libs -L/home/peko/source/buildroot/output-test/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib -lncurses

slang does not link with ncurses. The only use for ncurses5-config in slang is to find the location of terminfo files at run-time. The output of host ncurses5-config doesn't make sense.

$ ./output/host/usr/bin/ncurses5-config --terminfo
/home/baruch/git/buildroot-fixes/output/host/usr/share/terminfo
$ ./output/staging/usr/bin/ncurses5-config --terminfo
/usr/share/terminfo
Quoted 2 lines

Your commit message talks about readline, so perhaps the problem is really about readline? How does slang figure out how to link with readline?

slang configure script just hard codes LIB_READLINE=-lreadline when it gets --with-readline=gnu like we do. I'll move the BR2_STATIC_LIBS block under BR2_PACKAGE_READLINE above.

Thanks for reviewing.

baruch

Signature · 3 lines
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
#3 lore raw

PATCH 1/1 slang: fix static link with ncurses

In reply to Baruch Siach

Dear Baruch Siach,

Quoted 11 lines · Baruch Siach

slang does forgets ncurses that is a dependency of readline when linking the slsh binary. Correct this.

While at it, also make sure to use staging ncurses5-config script and not the host one.

Fixes:
http://autobuild.buildroot.net/results/1dc/1dc52048254c32a24070fef1c1039cebb32e7ac1/
http://autobuild.buildroot.net/results/c17/c176511cbb147c2d8cb0ec0ff3c1612ce8971cb8/
http://autobuild.buildroot.net/results/78d/78dc2ba07b1d7f888aab94e223f3e0b1a1df3af5/

Quoted 4 lines
---
 package/slang/slang.mk | 4 ++++
 1 file changed, 4 insertions(+)

I've marked this patch as Superseded in patchwork, as I believe it was superseded by your patch "[PATCH] slang: fix static link with readline", even though the title has changed and v2 was not indicated.

Let me know if this isn't correct.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com