Skip to contentSkip to conversation

ncurses: get the post staging installation hook called properly

PATCH New Thomas Petazzoni 3 participants 12 messages Jul 26, 2012 – Jul 27, 2012

lore
Share & tools
lore
#0 lore raw

PATCH 1/3 ncurses: get the post staging installation hook called properly

There was a typo in the name of the variable to register the hook, which prevent the hook from actually being called.

---
 package/ncurses/ncurses.mk |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/ncurses/ncurses.mk +1 -1
index 421d855..72a8030 100644
@@ -57,7 +57,7 @@ define NCURSES_PATCH_NCURSES_CONFIG
 		$(STAGING_DIR)/usr/bin/ncurses5-config
 endef
 
-NCURSES_POST_STAGING_INSTALL_HOOKS += NCURSES_PATCH_NCURSES_CONFIG
+NCURSES_POST_INSTALL_STAGING_HOOKS += NCURSES_PATCH_NCURSES_CONFIG
 
 ifeq ($(BR2_HAVE_DEVFILES),y)
 define NCURSES_INSTALL_TARGET_DEVFILES
Signature · 1 line
1.7.9.5
#1 lore raw

PATCH 2/3 ncurses: bump to 5.9

Bumping to 5.9 has two nice side-effects:

* It builds fine on noMMU architectures such as Blackfin, which will fix build failures like
http://autobuild.buildroot.org/results/cf3e6a95c82b60d63da041293db576a8f21f9136/build-end.log.

* It installs a pkg-config file, which will allow gpsd to find ncurses properly, without the need to use ncurses5-config, which means we can get rid of one of our gpsd patches. Thanks to Mike Frysinger for pointing the new --enable-pc-files option.

After this bump, I build tested a large number of the ncurses reverse dependencies we have in Buildroot, and they all built fine.

---
 .../ncurses-01-fixup-pkg-config-handling.patch     |   89 ++++++++++++++++++++
 package/ncurses/ncurses.mk                         |    5 +-
 2 files changed, 92 insertions(+), 2 deletions(-)
 create mode 100644 package/ncurses/ncurses-01-fixup-pkg-config-handling.patch
package/ncurses/ncurses-01-fixup-pkg-config-handling.patch new file +89 -0
new file mode 100644
index 0000000..e1cfc75
@@ -0,0 +1,89 @@
+Change handling of PKG_CONFIG_LIBDIR
+
+When PKG_CONFIG_LIBDIR was unset in the environment, the configure
+script was deducing the PKG_CONFIG_LIBDIR from the location of the
+pkg-config binary, which doesn't make a lot of sense, and isn't done
+by other autotools based packages.
+
+Also, the configure script was checking that the directory really
+exists. This forced to create the directory *and* provide an absolute
+path in PKG_CONFIG_LIBDIR, which didn't play well with the fact that
+at installation time, PKG_CONFIG_LIBDIR is suffixed to DESTDIR, which
+means that we got two times the staging directory location.
+
+This patch fixes both of those issues. Also, since ncurses uses a fork
+of autoconf 2.13, we can't simply use _AUTORECONF=YES, so we also fix
+the configure script in this patch.
+
+Signed-off-by: Thomas Petazzoni <[email protected]>
+
+Index: b/configure
+===================================================================
+--- a/configure
++++ b/configure
+@@ -3623,27 +3623,20 @@
+ 
+ 	# Leave this as something that can be overridden in the environment.
+ 	if test -z "$PKG_CONFIG_LIBDIR" ; then
+-		PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG" | sed -e 's,/[^/]*/[^/]*$,,'`/lib/pkgconfig
++		PKG_CONFIG_LIBDIR="/usr/lib/pkgconfig"
+ 	fi
++
+ 	PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/^://' -e 's/:.*//'`
+-	if test -n "$PKG_CONFIG_LIBDIR" && test -d "$PKG_CONFIG_LIBDIR" ; then
+ 
+-# Check whether --enable-pc-files or --disable-pc-files was given.
+-if test "${enable_pc_files+set}" = set; then
+-  enableval="$enable_pc_files"
+-  enable_pc_files=$enableval
+-else
+-  enable_pc_files=no
+-fi;
+-		echo "$as_me:3638: result: $enable_pc_files" >&5
+-echo "${ECHO_T}$enable_pc_files" >&6
++        # Check whether --enable-pc-files or --disable-pc-files was given.
++	if test "${enable_pc_files+set}" = set; then
++	    enableval="$enable_pc_files"
++	    enable_pc_files=$enableval
+ 	else
+-		echo "$as_me:3641: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-		{ echo "$as_me:3643: WARNING: did not find library $PKG_CONFIG_LIBDIR" >&5
+-echo "$as_me: WARNING: did not find library $PKG_CONFIG_LIBDIR" >&2;}
+-		enable_pc_files=no
+-	fi
++	    enable_pc_files=no
++	fi;
++	echo "$as_me:3638: result: $enable_pc_files" >&5
++	echo "${ECHO_T}$enable_pc_files" >&6
+ fi
+ 
+ echo "$as_me:3649: checking if we should assume mixed-case filenames" >&5
+Index: b/configure.in
+===================================================================
+--- a/configure.in
++++ b/configure.in
+@@ -174,20 +174,14 @@
+ 
+ 	# Leave this as something that can be overridden in the environment.
+ 	if test -z "$PKG_CONFIG_LIBDIR" ; then
+-		PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG" | sed -e 's,/[[^/]]*/[[^/]]*$,,'`/lib/pkgconfig
++		PKG_CONFIG_LIBDIR="/usr/lib/pkgconfig"
+ 	fi
+ 	PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/^://' -e 's/:.*//'`
+-	if test -n "$PKG_CONFIG_LIBDIR" && test -d "$PKG_CONFIG_LIBDIR" ; then
+-		AC_ARG_ENABLE(pc-files,
++	AC_ARG_ENABLE(pc-files,
+ 			[  --enable-pc-files       generate and install .pc files for pkg-config],
+ 			[enable_pc_files=$enableval],
+ 			[enable_pc_files=no])
+-		AC_MSG_RESULT($enable_pc_files)
+-	else
+-		AC_MSG_RESULT(no)
+-		AC_MSG_WARN(did not find library $PKG_CONFIG_LIBDIR)
+-		enable_pc_files=no
+-	fi
++	AC_MSG_RESULT($enable_pc_files)
+ fi
+ AC_SUBST(PKG_CONFIG_LIBDIR)
+ 
package/ncurses/ncurses.mk +3 -2
index 72a8030..e0df2aa 100644
@@ -23,7 +23,7 @@
 # USA
 
 # TARGETS
-NCURSES_VERSION = 5.7
+NCURSES_VERSION = 5.9
 NCURSES_SITE = $(BR2_GNU_MIRROR)/ncurses
 NCURSES_INSTALL_STAGING = YES
 NCURSES_DEPENDENCIES = host-ncurses
@@ -41,7 +41,8 @@ NCURSES_CONF_OPT = \
 	--enable-echo \
 	--enable-const \
 	--enable-overwrite \
-	--enable-broken_linker
+	--enable-broken_linker \
+	--enable-pc-files
 
 ifneq ($(BR2_ENABLE_DEBUG),y)
 NCURSES_CONF_OPT += --without-debug
Signature · 1 line
1.7.9.5
#2 lore raw

PATCH 2/3 ncurses: bump to 5.9

Quoted 11 lines · Thomas Petazzoni

Bumping to 5.9 has two nice side-effects:

* It builds fine on noMMU architectures such as Blackfin, which will fix build failures like
http://autobuild.buildroot.org/results/cf3e6a95c82b60d63da041293db576a8f21f9136/build-end.log.

* It installs a pkg-config file, which will allow gpsd to find ncurses properly, without the need to use ncurses5-config, which means we can get rid of one of our gpsd patches. Thanks to Mike Frysinger for pointing the new --enable-pc-files option.

Quoted 4 lines

After this bump, I build tested a large number of the ncurses reverse dependencies we have in Buildroot, and they all built fine.

Nack.
The version bump to 5.8 and 5.9 had issues in the past and still has. It may compile just fine but it segfaults miserably in a target, chroot or qemu image.
Simple test, i586 target with external toolchain, build less and see. Regards.

#3 lore raw

PATCH 2/3 ncurses: bump to 5.9

Le Thu, 26 Jul 2012 16:15:15 -0300,
Gustavo Zacarias <[email protected]> a ?crit :

Quoted 11 lines
Quoted 4 lines

After this bump, I build tested a large number of the ncurses reverse dependencies we have in Buildroot, and they all built fine.

Nack.
The version bump to 5.8 and 5.9 had issues in the past and still has. It may compile just fine but it segfaults miserably in a target, chroot or qemu image.
Simple test, i586 target with external toolchain, build less and see. Regards.

Yes, I just did some runtime testing, and also faced segfaults. Now that you say it, I also remember what you said.

Thanks!

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#4 lore raw

PATCH 2/3 ncurses: bump to 5.9

In reply to Gustavo Zacarias

Le Thu, 26 Jul 2012 16:15:15 -0300,
Gustavo Zacarias <[email protected]> a ?crit :

Quoted 5 lines

Nack.
The version bump to 5.8 and 5.9 had issues in the past and still has. It may compile just fine but it segfaults miserably in a target, chroot or qemu image.
Simple test, i586 target with external toolchain, build less and see.

There must something odd: both Yocto and PTXdist are using ncurses 5.9, so I presume it works for them. So it's not as simple as "cross-compilation breaks ncurses 5.9", it's something more subtle than that.

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#5 lore raw

PATCH 2/3 ncurses: bump to 5.9

Quoted 9 lines · Thomas Petazzoni

Le Thu, 26 Jul 2012 16:15:15 -0300,
Gustavo Zacarias <[email protected]> a ?crit :

Quoted 5 lines

Nack.
The version bump to 5.8 and 5.9 had issues in the past and still has. It may compile just fine but it segfaults miserably in a target, chroot or qemu image.
Simple test, i586 target with external toolchain, build less and see.

Quoted 6 lines

There must something odd: both Yocto and PTXdist are using ncurses 5.9, so I presume it works for them. So it's not as simple as "cross-compilation breaks ncurses 5.9", it's something more subtle than that.

Thomas

Yes, i agree it's pretty much some little thing.
I did some tests in the past and it doesn't seem to be configure options related (didn't try everything around, just what would be more obvious to cause such a failure).
Yet OpenWRT, which is BR's closest relative, still uses 5.7, maybe they didn't care about bumping it or hit the same issue.
I'll give it another shot later today.
Regards.

#6 lore raw

PATCH 2/3 ncurses: bump to 5.9

Le Fri, 27 Jul 2012 07:21:39 -0300,
Gustavo Zacarias <[email protected]> a ?crit :

Quoted 6 lines

Yes, i agree it's pretty much some little thing.
I did some tests in the past and it doesn't seem to be configure options related (didn't try everything around, just what would be more obvious to cause such a failure).
Yet OpenWRT, which is BR's closest relative, still uses 5.7, maybe they didn't care about bumping it or hit the same issue.

I indeed just talked to Florian Fainelli on IRC (he is an OpenWRT developer), and he remembers hearing issues about ncurses 5.9, and those issues being the reason to stick to 5.7 for now.

But still, PTXdist and OE have it. So it should work somehow. And they don't seem to have bizarre patches.

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#7 lore raw

PATCH 2/3 ncurses: bump to 5.9

Quoted 2 lines · Thomas Petazzoni

But still, PTXdist and OE have it. So it should work somehow. And they don't seem to have bizarre patches.

Does the segfault issue also occur on arm or powerpc? Neither PTXdist
nor OE is a big i386 user, so maybe they just didn't notice the problem.

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#8 lore raw

PATCH 2/3 ncurses: bump to 5.9

Quoted 9 lines · Arnout Vandecappelle
Quoted 2 lines · Thomas Petazzoni

But still, PTXdist and OE have it. So it should work somehow. And they don't seem to have bizarre patches.

Does the segfault issue also occur on arm or powerpc? Neither PTXdist
nor OE is a big i386 user, so maybe they just didn't notice the problem.

Regards,
Arnout

Gentoo has 5.9 as stable for all major architectures, i'm pretty sure it works so it's something we're doing different/wrong. Regards.

#9 lore raw

PATCH 2/3 ncurses: bump to 5.9

In reply to Arnout Vandecappelle

Le Fri, 27 Jul 2012 13:23:45 +0200,
Arnout Vandecappelle <[email protected]> a ?crit :

Quoted 2 lines

Does the segfault issue also occur on arm or powerpc? Neither PTXdist
nor OE is a big i386 user, so maybe they just didn't notice the problem.

Yesterday, I tried on ARM Cortex-A8 within the Qemu VExpress emulation (using Linaro toolchain), and it segfaulted. I haven't tried on real hardware though, so could always be a Qemu problem, or a toolchain problem.

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#10 lore raw

PATCH 2/3 ncurses: bump to 5.9

Quoted 6 lines · Thomas Petazzoni

Le Fri, 27 Jul 2012 13:23:45 +0200,
Arnout Vandecappelle <[email protected]> a ?crit :

Quoted 2 lines

Does the segfault issue also occur on arm or powerpc? Neither PTXdist
nor OE is a big i386 user, so maybe they just didn't notice the problem.

Quoted 6 lines

Yesterday, I tried on ARM Cortex-A8 within the Qemu VExpress emulation (using Linaro toolchain), and it segfaulted. I haven't tried on real hardware though, so could always be a Qemu problem, or a toolchain problem.

Thomas

I've tried on real hardware (arm, powerpc) and it's the same issue. I'll do some tests on a chroot (i586 or x86_64) to try track it down since it fails too, at least for i586.
Regards.

#11 lore raw

PATCH 3/3 gpsd: remove patch to handle ncurses5-config custom location

In reply to Thomas Petazzoni

Now that ncurses has been bumped to 5.9, it installs .pc files for pkg-config, which allows gpsd to find it properly without the need to specify a custom location for ncurses5-config.

Since gpsd now uses pkg-config to find the ncurses library, we also add host-pkg-config in the dependencies.

---
 .../gpsd/gpsd-02-sconstruct-disable-rpath.patch    |   17 ++++++++
 .../gpsd-02-sconstruct-ncurses-config-path.patch   |   44 --------------------
 .../gpsd/gpsd-03-sconstruct-disable-rpath.patch    |   17 --------
 package/gpsd/gpsd.mk                               |    3 +-
 4 files changed, 18 insertions(+), 63 deletions(-)
 create mode 100644 package/gpsd/gpsd-02-sconstruct-disable-rpath.patch
 delete mode 100644 package/gpsd/gpsd-02-sconstruct-ncurses-config-path.patch
 delete mode 100644 package/gpsd/gpsd-03-sconstruct-disable-rpath.patch
package/gpsd/gpsd-02-sconstruct-disable-rpath.patch new file +17 -0
new file mode 100644
index 0000000..5476450
@@ -0,0 +1,17 @@
+Disable addition of RPATH to the generated libraries
+
+Signed-off-by: Thomas Petazzoni <[email protected]>
+
+Index: b/SConstruct
+===================================================================
+--- a/SConstruct
++++ b/SConstruct
+@@ -273,8 +273,6 @@
+     env.Prepend(LIBPATH=[installdir('libdir')])
+ else:
+     env.Prepend(LIBPATH=[env["sysroot"] + installdir('libdir')])
+-if env["shared"]:
+-    env.Prepend(RPATH=[installdir('libdir')])
+ 
+ # Give deheader a way to set compiler flags
+ if 'MORECFLAGS' in os.environ:
package/gpsd/gpsd-02-sconstruct-ncurses-config-path.patch deleted +0 -44

44 lines not on this page · raw message

package/gpsd/gpsd-03-sconstruct-disable-rpath.patch deleted +0 -17
deleted file mode 100644
index 5476450..0000000
@@ -1,17 +0,0 @@
-Disable addition of RPATH to the generated libraries
-
-Signed-off-by: Thomas Petazzoni <[email protected]>
-
-Index: b/SConstruct
-===================================================================
---- a/SConstruct
-+++ b/SConstruct
-@@ -273,8 +273,6 @@
-     env.Prepend(LIBPATH=[installdir('libdir')])
- else:
-     env.Prepend(LIBPATH=[env["sysroot"] + installdir('libdir')])
--if env["shared"]:
--    env.Prepend(RPATH=[installdir('libdir')])
- 
- # Give deheader a way to set compiler flags
- if 'MORECFLAGS' in os.environ:
package/gpsd/gpsd.mk +1 -2
index 190732f..4482a11 100644
@@ -9,7 +9,7 @@ GPSD_LICENSE = BSD-3c
 GPSD_LICENSE_FILES = COPYING
 GPSD_INSTALL_STAGING = YES
 
-GPSD_DEPENDENCIES = host-scons
+GPSD_DEPENDENCIES = host-scons host-pkg-config
 
 GPSD_LDFLAGS = $(TARGET_LDFLAGS)
 
@@ -25,7 +25,6 @@ GPSD_SCONS_OPTS = \
 
 ifeq ($(BR2_PACKAGE_NCURSES),y)
 	GPSD_DEPENDENCIES += ncurses
-	GPSD_SCONS_OPTS += ncurses_config=$(STAGING_DIR)/usr/bin/ncurses5-config
 else
 	GPSD_SCONS_OPTS += ncurses=no
 endif
Signature · 1 line
1.7.9.5