Patchwork [2/3] ncurses: bump to 5.9

login
register
mail settings
Submitter Thomas Petazzoni
Date July 26, 2012, 6:49 p.m.
Message ID <1343328590-1803-2-git-send-email-thomas.petazzoni@free-electrons.com>
Download mbox | patch
Permalink /patch/173474/
State Accepted
Headers show

Comments

Thomas Petazzoni - July 26, 2012, 6:49 p.m.
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.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 .../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
Gustavo Zacarias - July 26, 2012, 7:15 p.m.
On 07/26/12 15:49, Thomas Petazzoni wrote:

> 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.
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

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.
Thomas Petazzoni - July 26, 2012, 8:33 p.m.
Le Thu, 26 Jul 2012 16:15:15 -0300,
Gustavo Zacarias <gustavo@zacarias.com.ar> a écrit :

> > After this bump, I build tested a large number of the ncurses reverse
> > dependencies we have in Buildroot, and they all built fine.
> > 
> > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> 
> 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
Thomas Petazzoni - July 27, 2012, 6:59 a.m.
Le Thu, 26 Jul 2012 16:15:15 -0300,
Gustavo Zacarias <gustavo@zacarias.com.ar> a écrit :

> 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
Gustavo Zacarias - July 27, 2012, 10:21 a.m.
On 07/27/12 03:59, Thomas Petazzoni wrote:

> Le Thu, 26 Jul 2012 16:15:15 -0300,
> Gustavo Zacarias <gustavo@zacarias.com.ar> a écrit :
> 
>> 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

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.
Thomas Petazzoni - July 27, 2012, 10:28 a.m.
Le Fri, 27 Jul 2012 07:21:39 -0300,
Gustavo Zacarias <gustavo@zacarias.com.ar> a écrit :

> 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
Arnout Vandecappelle - July 27, 2012, 11:23 a.m.
On 07/27/12 12:28, Thomas Petazzoni wrote:
> 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
Gustavo Zacarias - July 27, 2012, 11:27 a.m.
On 07/27/12 08:23, Arnout Vandecappelle wrote:

> On 07/27/12 12:28, Thomas Petazzoni wrote:
>> 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.
Thomas Petazzoni - July 27, 2012, 11:38 a.m.
Le Fri, 27 Jul 2012 13:23:45 +0200,
Arnout Vandecappelle <arnout@mind.be> a écrit :

>   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
Gustavo Zacarias - July 27, 2012, 11:40 a.m.
On 07/27/12 08:38, Thomas Petazzoni wrote:

> Le Fri, 27 Jul 2012 13:23:45 +0200,
> Arnout Vandecappelle <arnout@mind.be> a écrit :
> 
>>   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

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.

Patch

diff --git a/package/ncurses/ncurses-01-fixup-pkg-config-handling.patch b/package/ncurses/ncurses-01-fixup-pkg-config-handling.patch
new file mode 100644
index 0000000..e1cfc75
--- /dev/null
+++ b/package/ncurses/ncurses-01-fixup-pkg-config-handling.patch
@@ -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 <thomas.petazzoni@free-electrons.com>
+
+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)
+ 
diff --git a/package/ncurses/ncurses.mk b/package/ncurses/ncurses.mk
index 72a8030..e0df2aa 100644
--- a/package/ncurses/ncurses.mk
+++ b/package/ncurses/ncurses.mk
@@ -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