All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] ncurses library location fix
@ 2012-03-13  2:08 Scott Garman
  2012-03-13  2:08 ` [PATCH 1/3] path.py: add make_relative_symlink method Scott Garman
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: Scott Garman @ 2012-03-13  2:08 UTC (permalink / raw)
  To: openembedded-core

Hello,

This pull request improves the way ncurses libraries are installed,
moving only libncurses, libncursesw, and libtinfo soname libs into
base_libdir, and leaving everything else in libdir. This is how
ncurses is packaged on my Ubuntu host, and doing things this way
fixes bug #2070 so ncurses will work within python again. It is
also a partial bugfix for bug #1937.

Scott

The following changes since commit f47ada62a3da879006e7cb27479dc9b72c56e923:

  cmake.bbclass: add ${base_libdir} to CMAKE_LIBRARY_PATH (2012-03-12 17:46:16 +0000)

are available in the git repository at:
  git://git.pokylinux.org/poky-contrib sgarman/python-ncurses-fix-oe
  http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=sgarman/python-ncurses-fix-oe

Scott Garman (3):
  path.py: add make_relative_symlink method
  ncurses: move only libncurses and libtinfo to base_libdir
  gettext: do not set libncurses prefix explicitly

 meta/lib/oe/path.py                           |   27 +++++++++++++++++
 meta/recipes-core/gettext/gettext_0.18.1.1.bb |    5 +--
 meta/recipes-core/ncurses/ncurses.inc         |   40 +++++++++++++++++-------
 3 files changed, 56 insertions(+), 16 deletions(-)

-- 
1.7.5.4




^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 1/3] path.py: add make_relative_symlink method
  2012-03-13  2:08 [PATCH 0/3] ncurses library location fix Scott Garman
@ 2012-03-13  2:08 ` Scott Garman
  2012-03-13  2:08 ` [PATCH 2/3] ncurses: move only libncurses and libtinfo to base_libdir Scott Garman
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 11+ messages in thread
From: Scott Garman @ 2012-03-13  2:08 UTC (permalink / raw)
  To: openembedded-core

This method allows you to convert an absolute symlink into a
relative one.

Signed-off-by: Scott Garman <scott.a.garman@intel.com>
---
 meta/lib/oe/path.py |   27 +++++++++++++++++++++++++++
 1 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/meta/lib/oe/path.py b/meta/lib/oe/path.py
index 683b097..1fdfa87 100644
--- a/meta/lib/oe/path.py
+++ b/meta/lib/oe/path.py
@@ -40,6 +40,33 @@ def relative(src, dest):
 
         return os.path.sep.join(relpath)
 
+def make_relative_symlink(path):
+    """ Convert an absolute symlink to a relative one """
+    if not os.path.islink(path):
+        return
+    link = os.readlink(path)
+    if not os.path.isabs(link):
+        return
+
+    # find the common ancestor directory
+    ancestor = path
+    depth = 0
+    while ancestor and not link.startswith(ancestor):
+        ancestor = ancestor.rpartition('/')[0]
+        depth += 1
+
+    if not ancestor:
+        print "make_relative_symlink() Error: unable to find the common ancestor of %s and its target" % path
+        return
+
+    base = link.partition(ancestor)[2].strip('/')
+    while depth > 1:
+        base = "../" + base
+        depth -= 1
+
+    os.remove(path)
+    os.symlink(base, path)
+
 def format_display(path, metadata):
     """ Prepare a path for display to the user. """
     rel = relative(metadata.getVar("TOPDIR", True), path)
-- 
1.7.5.4




^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/3] ncurses: move only libncurses and libtinfo to base_libdir
  2012-03-13  2:08 [PATCH 0/3] ncurses library location fix Scott Garman
  2012-03-13  2:08 ` [PATCH 1/3] path.py: add make_relative_symlink method Scott Garman
@ 2012-03-13  2:08 ` Scott Garman
  2012-03-13 20:51   ` Andreas Oberritter
  2012-03-13  2:08 ` [PATCH 3/3] gettext: do not set libncurses prefix explicitly Scott Garman
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Scott Garman @ 2012-03-13  2:08 UTC (permalink / raw)
  To: openembedded-core

The previous approach to moving the ncurses libraries to
base_libdir was too aggressive, and it broke curses support
in python.

Instead, move only libncurses, libncursesw, and libtinfo to
base_libdir and leave the remaining libraries in libdir.

Also delete ${libdir}/terminfo as it never gets packaged to
avoid a QA warning.

This fixes [YOCTO #2070] and is a partial fix for [YOCTO #1937].

Signed-off-by: Scott Garman <scott.a.garman@intel.com>
---
 meta/recipes-core/ncurses/ncurses.inc |   40 +++++++++++++++++++++++----------
 1 files changed, 28 insertions(+), 12 deletions(-)

diff --git a/meta/recipes-core/ncurses/ncurses.inc b/meta/recipes-core/ncurses/ncurses.inc
index 3b10c43..e450868 100644
--- a/meta/recipes-core/ncurses/ncurses.inc
+++ b/meta/recipes-core/ncurses/ncurses.inc
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://ncurses/base/version.c;beginline=1;endline=27;md5=cbc
 SECTION = "libs"
 DEPENDS = "ncurses-native"
 DEPENDS_virtclass-native = ""
-INC_PR = "r4"
+INC_PR = "r5"
 
 inherit autotools binconfig multilib_header
 
@@ -44,7 +44,6 @@ ncurses_configure() {
 	        --enable-hard-tabs \
 	        --enable-xmc-glitch \
 	        --enable-colorfgbg \
-	        --libdir=${base_libdir} \
 	        --with-termpath='${sysconfdir}/termcap:${datadir}/misc/termcap' \
 	        --with-terminfo-dirs='${sysconfdir}/terminfo:${datadir}/terminfo' \
 	        --with-shared \
@@ -114,7 +113,12 @@ _install_opts = "\
   install.libs install.includes install.man \
 "
 
-do_install() {
+python do_install () {
+	bb.build.exec_func("shell_do_install", d)
+	oe.path.make_relative_symlink(d.expand("${D}${libdir}/libtinfo.so"))
+}
+
+shell_do_install() {
         # Order of installation is important; widec installs a 'curses.h'
         # header with more definitions and must be installed last hence.
         # Compatibility of these headers will be checked in 'do_test()'.
@@ -147,6 +151,8 @@ do_install() {
                 ln -sf xterm-color ${D}${sysconfdir}/terminfo/x/xterm
         fi
 
+        rm ${D}${libdir}/terminfo
+
         if [ "${PN}" = "ncurses" ]; then
                 mv ${D}${bindir}/clear ${D}${bindir}/clear.${PN}
                 mv ${D}${bindir}/reset ${D}${bindir}/reset.${PN}
@@ -158,7 +164,7 @@ do_install() {
         # else when '-Wl,--no-copy-dt-needed-entries' has been set in
         # linker flags.
         for i in libncurses libncursesw; do
-                f=${D}${base_libdir}/$i.so
+                f=${D}${libdir}/$i.so
                 test -h $f || continue
                 rm -f $f
                 echo '/* GNU ld script */'  >$f
@@ -167,20 +173,33 @@ do_install() {
 
         # Make sure that libcurses is linked so that it gets -ltinfo
         # also, this should be addressed upstream really.
-        ln -sf libncurses.so ${D}${base_libdir}/libcurses.so
+        ln -sf libncurses.so ${D}${libdir}/libcurses.so
 
         # create libtermcap.so linker script for backward compatibility
-        f=${D}${base_libdir}/libtermcap.so
+        f=${D}${libdir}/libtermcap.so
         echo '/* GNU ld script */' >$f
         echo 'INPUT(AS_NEEDED(-ltinfo))' >>$f
 
+        if [ ! -d "${D}${base_libdir}" ]; then
+            # Setting base_libdir to libdir as is done in the -native
+            # case will skip this code
+            mkdir ${D}${base_libdir}
+            mv ${D}${libdir}/libncurses.so.* ${D}${base_libdir}
+            mv ${D}${libdir}/libncursesw.so.* ${D}${base_libdir}
+
+            mv ${D}${libdir}/libtinfo.so.* ${D}${base_libdir}
+            rm ${D}${libdir}/libtinfo.so
+            # We'll turn this into a relative symlink after do_install returns
+            ln -sf ${D}${base_libdir}/libtinfo.so.5 ${D}${libdir}/libtinfo.so
+        fi
+
         oe_multilib_header curses.h
 }
 
 python populate_packages_prepend () {
-        base_libdir = d.expand("${base_libdir}")
+        libdir = d.expand("${libdir}")
         pnbase = d.expand("${PN}-lib%s")
-        do_split_packages(d, base_libdir, '^lib(.*)\.so\..*', pnbase, 'ncurses %s library', prepend=True, extra_depends = '', allow_links=True)
+        do_split_packages(d, libdir, '^lib(.*)\.so\..*', pnbase, 'ncurses %s library', prepend=True, extra_depends = '', allow_links=True)
 }
 
 
@@ -212,10 +231,7 @@ FILES_${PN} = "\
   ${bindir}/ncurses5-config \
   ${bindir}/ncursesw5-config \
   ${datadir}/tabset \
-"
-
-FILES_${PN}-dev += "\
- ${base_libdir}/*.so \
+  ${base_libdir}/* \
 "
 
 # This keeps only tput/tset in ncurses
-- 
1.7.5.4




^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 3/3] gettext: do not set libncurses prefix explicitly
  2012-03-13  2:08 [PATCH 0/3] ncurses library location fix Scott Garman
  2012-03-13  2:08 ` [PATCH 1/3] path.py: add make_relative_symlink method Scott Garman
  2012-03-13  2:08 ` [PATCH 2/3] ncurses: move only libncurses and libtinfo to base_libdir Scott Garman
@ 2012-03-13  2:08 ` Scott Garman
  2012-03-13 13:16   ` Richard Purdie
  2012-03-13  5:30 ` [PATCH 0/3] ncurses library location fix Scott Garman
  2012-03-13  8:09 ` Koen Kooi
  4 siblings, 1 reply; 11+ messages in thread
From: Scott Garman @ 2012-03-13  2:08 UTC (permalink / raw)
  To: openembedded-core

The --with-libncurses-prefix configure option was added before
this recipe had ncurses in DEPENDS, so it should be safe to
remove it.

Signed-off-by: Scott Garman <scott.a.garman@intel.com>
---
 meta/recipes-core/gettext/gettext_0.18.1.1.bb |    5 +----
 1 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/meta/recipes-core/gettext/gettext_0.18.1.1.bb b/meta/recipes-core/gettext/gettext_0.18.1.1.bb
index 3c65dca..daee5c0 100644
--- a/meta/recipes-core/gettext/gettext_0.18.1.1.bb
+++ b/meta/recipes-core/gettext/gettext_0.18.1.1.bb
@@ -5,7 +5,7 @@ SECTION = "libs"
 LICENSE = "GPL-3+ & LGPL-2.1+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
-PR = "r7"
+PR = "r8"
 DEPENDS = "libxml2-native gettext-native virtual/libiconv ncurses expat"
 DEPENDS_virtclass-native = "libxml2-native"
 PROVIDES = "virtual/libintl virtual/gettext"
@@ -21,8 +21,6 @@ SRC_URI_append_libc-uclibc = " file://wchar-uclibc.patch \
 SRC_URI[md5sum] = "3dd55b952826d2b32f51308f2f91aa89"
 SRC_URI[sha256sum] = "93ac71a7afa5b70c1b1032516663658c51e653087f42a3fc8044752c026443e9"
 
-#PARALLEL_MAKE = ""
-
 inherit autotools
 
 EXTRA_OECONF += "--without-lispdir \
@@ -32,7 +30,6 @@ EXTRA_OECONF += "--without-lispdir \
                  --disable-native-java \
                  --disable-openmp \
                  --with-included-glib \
-                 --with-libncurses-prefix=${STAGING_LIBDIR}/.. \
                  --without-emacs \
                  --without-cvs \
                  --without-git \
-- 
1.7.5.4




^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/3] ncurses library location fix
  2012-03-13  2:08 [PATCH 0/3] ncurses library location fix Scott Garman
                   ` (2 preceding siblings ...)
  2012-03-13  2:08 ` [PATCH 3/3] gettext: do not set libncurses prefix explicitly Scott Garman
@ 2012-03-13  5:30 ` Scott Garman
  2012-03-13  8:09 ` Koen Kooi
  4 siblings, 0 replies; 11+ messages in thread
From: Scott Garman @ 2012-03-13  5:30 UTC (permalink / raw)
  To: openembedded-core

On 03/12/2012 07:08 PM, Scott Garman wrote:
> Hello,
>
> This pull request improves the way ncurses libraries are installed,
> moving only libncurses, libncursesw, and libtinfo soname libs into
> base_libdir, and leaving everything else in libdir. This is how
> ncurses is packaged on my Ubuntu host, and doing things this way
> fixes bug #2070 so ncurses will work within python again. It is
> also a partial bugfix for bug #1937.

I'll add that I've build-tested this on all five of our qemu 
architectures, and runtime tested the python curses fix on qemux86-64.

Scott

-- 
Scott Garman
Embedded Linux Engineer - Yocto Project
Intel Open Source Technology Center



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/3] ncurses library location fix
  2012-03-13  2:08 [PATCH 0/3] ncurses library location fix Scott Garman
                   ` (3 preceding siblings ...)
  2012-03-13  5:30 ` [PATCH 0/3] ncurses library location fix Scott Garman
@ 2012-03-13  8:09 ` Koen Kooi
  2012-03-13  8:52   ` Scott Garman
  4 siblings, 1 reply; 11+ messages in thread
From: Koen Kooi @ 2012-03-13  8:09 UTC (permalink / raw)
  To: Patches and discussions about the oe-core layer


Op 13 mrt. 2012, om 03:08 heeft Scott Garman het volgende geschreven:

> Hello,
> 
> This pull request improves the way ncurses libraries are installed,
> moving only libncurses, libncursesw, and libtinfo soname libs into
> base_libdir, and leaving everything else in libdir. This is how
> ncurses is packaged on my Ubuntu host, and doing things this way
> fixes bug #2070 so ncurses will work within python again.

Shouldn't there a PR bump for python as well in this series?

regards,

Koen



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/3] ncurses library location fix
  2012-03-13  8:09 ` Koen Kooi
@ 2012-03-13  8:52   ` Scott Garman
  0 siblings, 0 replies; 11+ messages in thread
From: Scott Garman @ 2012-03-13  8:52 UTC (permalink / raw)
  To: openembedded-core

On 03/13/2012 01:09 AM, Koen Kooi wrote:
>
> Op 13 mrt. 2012, om 03:08 heeft Scott Garman het volgende geschreven:
>
>> Hello,
>>
>> This pull request improves the way ncurses libraries are installed,
>> moving only libncurses, libncursesw, and libtinfo soname libs into
>> base_libdir, and leaving everything else in libdir. This is how
>> ncurses is packaged on my Ubuntu host, and doing things this way
>> fixes bug #2070 so ncurses will work within python again.
>
> Shouldn't there a PR bump for python as well in this series?

Just pushed a commit to my branch to do this.

Scott

-- 
Scott Garman
Embedded Linux Engineer - Yocto Project
Intel Open Source Technology Center



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 3/3] gettext: do not set libncurses prefix explicitly
  2012-03-13  2:08 ` [PATCH 3/3] gettext: do not set libncurses prefix explicitly Scott Garman
@ 2012-03-13 13:16   ` Richard Purdie
  2012-03-13 19:58     ` Scott Garman
  0 siblings, 1 reply; 11+ messages in thread
From: Richard Purdie @ 2012-03-13 13:16 UTC (permalink / raw)
  To: Patches and discussions about the oe-core layer

On Mon, 2012-03-12 at 19:08 -0700, Scott Garman wrote:
> The --with-libncurses-prefix configure option was added before
> this recipe had ncurses in DEPENDS, so it should be safe to
> remove it.
> 
> Signed-off-by: Scott Garman <scott.a.garman@intel.com>
> ---
>  meta/recipes-core/gettext/gettext_0.18.1.1.bb |    5 +----
>  1 files changed, 1 insertions(+), 4 deletions(-)
> 
> diff --git a/meta/recipes-core/gettext/gettext_0.18.1.1.bb b/meta/recipes-core/gettext/gettext_0.18.1.1.bb
> index 3c65dca..daee5c0 100644
> --- a/meta/recipes-core/gettext/gettext_0.18.1.1.bb
> +++ b/meta/recipes-core/gettext/gettext_0.18.1.1.bb
> @@ -5,7 +5,7 @@ SECTION = "libs"
>  LICENSE = "GPL-3+ & LGPL-2.1+"
>  LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
>  
> -PR = "r7"
> +PR = "r8"
>  DEPENDS = "libxml2-native gettext-native virtual/libiconv ncurses expat"
>  DEPENDS_virtclass-native = "libxml2-native"
>  PROVIDES = "virtual/libintl virtual/gettext"
> @@ -21,8 +21,6 @@ SRC_URI_append_libc-uclibc = " file://wchar-uclibc.patch \
>  SRC_URI[md5sum] = "3dd55b952826d2b32f51308f2f91aa89"
>  SRC_URI[sha256sum] = "93ac71a7afa5b70c1b1032516663658c51e653087f42a3fc8044752c026443e9"
>  
> -#PARALLEL_MAKE = ""
> -
>  inherit autotools
>  
>  EXTRA_OECONF += "--without-lispdir \
> @@ -32,7 +30,6 @@ EXTRA_OECONF += "--without-lispdir \
>                   --disable-native-java \
>                   --disable-openmp \
>                   --with-included-glib \
> -                 --with-libncurses-prefix=${STAGING_LIBDIR}/.. \
>                   --without-emacs \
>                   --without-cvs \
>                   --without-git \

Sadly this breaks gettext for me as I'm now seeing things like:

i586-poky-linux-libtool: link: i586-poky-linux-gcc -m32 -march=i586 --sysroot=/media/build1/poky/build/tmp/sysroots/qemux86 -std=gnu99 -O2 -pipe -g -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o .libs/recode-sr-latin recode_sr_latin-recode-sr-latin.o recode_sr_latin-filter-sr-latin.o  ../gnulib-lib/.libs/libgettextlib.so -L/usr/lib -lc -lncurses
/media/build1/poky/build/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.6.4/ld: warning: library search path "/usr/lib" is unsafe for cross-compilation
/media/build1/poky/build/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.6.4/ld: skipping incompatible /usr/lib/libtinfo.so when searching for -ltinfo
/media/build1/poky/build/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.6.4/ld: skipping incompatible /usr/lib/libtinfo.a when searching for -ltinfo

in the logs which triggers a QA warning.

Cheers,

Richard




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 3/3] gettext: do not set libncurses prefix explicitly
  2012-03-13 13:16   ` Richard Purdie
@ 2012-03-13 19:58     ` Scott Garman
  0 siblings, 0 replies; 11+ messages in thread
From: Scott Garman @ 2012-03-13 19:58 UTC (permalink / raw)
  To: openembedded-core

On 03/13/2012 06:16 AM, Richard Purdie wrote:
> On Mon, 2012-03-12 at 19:08 -0700, Scott Garman wrote:
>> The --with-libncurses-prefix configure option was added before
>> this recipe had ncurses in DEPENDS, so it should be safe to
>> remove it.
>>
>> Signed-off-by: Scott Garman<scott.a.garman@intel.com>
>> ---
>>   meta/recipes-core/gettext/gettext_0.18.1.1.bb |    5 +----
>>   1 files changed, 1 insertions(+), 4 deletions(-)
>>
>> diff --git a/meta/recipes-core/gettext/gettext_0.18.1.1.bb b/meta/recipes-core/gettext/gettext_0.18.1.1.bb
>> index 3c65dca..daee5c0 100644
>> --- a/meta/recipes-core/gettext/gettext_0.18.1.1.bb
>> +++ b/meta/recipes-core/gettext/gettext_0.18.1.1.bb
>> @@ -5,7 +5,7 @@ SECTION = "libs"
>>   LICENSE = "GPL-3+&  LGPL-2.1+"
>>   LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
>>
>> -PR = "r7"
>> +PR = "r8"
>>   DEPENDS = "libxml2-native gettext-native virtual/libiconv ncurses expat"
>>   DEPENDS_virtclass-native = "libxml2-native"
>>   PROVIDES = "virtual/libintl virtual/gettext"
>> @@ -21,8 +21,6 @@ SRC_URI_append_libc-uclibc = " file://wchar-uclibc.patch \
>>   SRC_URI[md5sum] = "3dd55b952826d2b32f51308f2f91aa89"
>>   SRC_URI[sha256sum] = "93ac71a7afa5b70c1b1032516663658c51e653087f42a3fc8044752c026443e9"
>>
>> -#PARALLEL_MAKE = ""
>> -
>>   inherit autotools
>>
>>   EXTRA_OECONF += "--without-lispdir \
>> @@ -32,7 +30,6 @@ EXTRA_OECONF += "--without-lispdir \
>>                    --disable-native-java \
>>                    --disable-openmp \
>>                    --with-included-glib \
>> -                 --with-libncurses-prefix=${STAGING_LIBDIR}/.. \
>>                    --without-emacs \
>>                    --without-cvs \
>>                    --without-git \
>
> Sadly this breaks gettext for me as I'm now seeing things like:
>
> i586-poky-linux-libtool: link: i586-poky-linux-gcc -m32 -march=i586 --sysroot=/media/build1/poky/build/tmp/sysroots/qemux86 -std=gnu99 -O2 -pipe -g -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o .libs/recode-sr-latin recode_sr_latin-recode-sr-latin.o recode_sr_latin-filter-sr-latin.o  ../gnulib-lib/.libs/libgettextlib.so -L/usr/lib -lc -lncurses
> /media/build1/poky/build/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.6.4/ld: warning: library search path "/usr/lib" is unsafe for cross-compilation
> /media/build1/poky/build/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.6.4/ld: skipping incompatible /usr/lib/libtinfo.so when searching for -ltinfo
> /media/build1/poky/build/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.6.4/ld: skipping incompatible /usr/lib/libtinfo.a when searching for -ltinfo
>
> in the logs which triggers a QA warning.

Argh. Please revert that commit then. It was harmless on my two build 
test systems, but apparently it is needed on others to avoid host 
contamination.

Scott

-- 
Scott Garman
Embedded Linux Engineer - Yocto Project
Intel Open Source Technology Center



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/3] ncurses: move only libncurses and libtinfo to base_libdir
  2012-03-13  2:08 ` [PATCH 2/3] ncurses: move only libncurses and libtinfo to base_libdir Scott Garman
@ 2012-03-13 20:51   ` Andreas Oberritter
  2012-03-13 22:11     ` Scott Garman
  0 siblings, 1 reply; 11+ messages in thread
From: Andreas Oberritter @ 2012-03-13 20:51 UTC (permalink / raw)
  To: openembedded-core

On 13.03.2012 03:08, Scott Garman wrote:
> The previous approach to moving the ncurses libraries to
> base_libdir was too aggressive, and it broke curses support
> in python.
> 
> Instead, move only libncurses, libncursesw, and libtinfo to
> base_libdir and leave the remaining libraries in libdir.
> 
> Also delete ${libdir}/terminfo as it never gets packaged to
> avoid a QA warning.
> 
> This fixes [YOCTO #2070] and is a partial fix for [YOCTO #1937].

Hello Scott,

package splitting doesn't seem to work anymore. Libs that previously had
their own package now end up being stored in the main ncurses package.

Regards,
Andreas

> Signed-off-by: Scott Garman <scott.a.garman@intel.com>
> ---
>  meta/recipes-core/ncurses/ncurses.inc |   40 +++++++++++++++++++++++----------
>  1 files changed, 28 insertions(+), 12 deletions(-)
> 
> diff --git a/meta/recipes-core/ncurses/ncurses.inc b/meta/recipes-core/ncurses/ncurses.inc
> index 3b10c43..e450868 100644
> --- a/meta/recipes-core/ncurses/ncurses.inc
> +++ b/meta/recipes-core/ncurses/ncurses.inc
> @@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://ncurses/base/version.c;beginline=1;endline=27;md5=cbc
>  SECTION = "libs"
>  DEPENDS = "ncurses-native"
>  DEPENDS_virtclass-native = ""
> -INC_PR = "r4"
> +INC_PR = "r5"
>  
>  inherit autotools binconfig multilib_header
>  
> @@ -44,7 +44,6 @@ ncurses_configure() {
>  	        --enable-hard-tabs \
>  	        --enable-xmc-glitch \
>  	        --enable-colorfgbg \
> -	        --libdir=${base_libdir} \
>  	        --with-termpath='${sysconfdir}/termcap:${datadir}/misc/termcap' \
>  	        --with-terminfo-dirs='${sysconfdir}/terminfo:${datadir}/terminfo' \
>  	        --with-shared \
> @@ -114,7 +113,12 @@ _install_opts = "\
>    install.libs install.includes install.man \
>  "
>  
> -do_install() {
> +python do_install () {
> +	bb.build.exec_func("shell_do_install", d)
> +	oe.path.make_relative_symlink(d.expand("${D}${libdir}/libtinfo.so"))
> +}
> +
> +shell_do_install() {
>          # Order of installation is important; widec installs a 'curses.h'
>          # header with more definitions and must be installed last hence.
>          # Compatibility of these headers will be checked in 'do_test()'.
> @@ -147,6 +151,8 @@ do_install() {
>                  ln -sf xterm-color ${D}${sysconfdir}/terminfo/x/xterm
>          fi
>  
> +        rm ${D}${libdir}/terminfo
> +
>          if [ "${PN}" = "ncurses" ]; then
>                  mv ${D}${bindir}/clear ${D}${bindir}/clear.${PN}
>                  mv ${D}${bindir}/reset ${D}${bindir}/reset.${PN}
> @@ -158,7 +164,7 @@ do_install() {
>          # else when '-Wl,--no-copy-dt-needed-entries' has been set in
>          # linker flags.
>          for i in libncurses libncursesw; do
> -                f=${D}${base_libdir}/$i.so
> +                f=${D}${libdir}/$i.so
>                  test -h $f || continue
>                  rm -f $f
>                  echo '/* GNU ld script */'  >$f
> @@ -167,20 +173,33 @@ do_install() {
>  
>          # Make sure that libcurses is linked so that it gets -ltinfo
>          # also, this should be addressed upstream really.
> -        ln -sf libncurses.so ${D}${base_libdir}/libcurses.so
> +        ln -sf libncurses.so ${D}${libdir}/libcurses.so
>  
>          # create libtermcap.so linker script for backward compatibility
> -        f=${D}${base_libdir}/libtermcap.so
> +        f=${D}${libdir}/libtermcap.so
>          echo '/* GNU ld script */' >$f
>          echo 'INPUT(AS_NEEDED(-ltinfo))' >>$f
>  
> +        if [ ! -d "${D}${base_libdir}" ]; then
> +            # Setting base_libdir to libdir as is done in the -native
> +            # case will skip this code
> +            mkdir ${D}${base_libdir}
> +            mv ${D}${libdir}/libncurses.so.* ${D}${base_libdir}
> +            mv ${D}${libdir}/libncursesw.so.* ${D}${base_libdir}
> +
> +            mv ${D}${libdir}/libtinfo.so.* ${D}${base_libdir}
> +            rm ${D}${libdir}/libtinfo.so
> +            # We'll turn this into a relative symlink after do_install returns
> +            ln -sf ${D}${base_libdir}/libtinfo.so.5 ${D}${libdir}/libtinfo.so
> +        fi
> +
>          oe_multilib_header curses.h
>  }
>  
>  python populate_packages_prepend () {
> -        base_libdir = d.expand("${base_libdir}")
> +        libdir = d.expand("${libdir}")
>          pnbase = d.expand("${PN}-lib%s")
> -        do_split_packages(d, base_libdir, '^lib(.*)\.so\..*', pnbase, 'ncurses %s library', prepend=True, extra_depends = '', allow_links=True)
> +        do_split_packages(d, libdir, '^lib(.*)\.so\..*', pnbase, 'ncurses %s library', prepend=True, extra_depends = '', allow_links=True)
>  }
>  
>  
> @@ -212,10 +231,7 @@ FILES_${PN} = "\
>    ${bindir}/ncurses5-config \
>    ${bindir}/ncursesw5-config \
>    ${datadir}/tabset \
> -"
> -
> -FILES_${PN}-dev += "\
> - ${base_libdir}/*.so \
> +  ${base_libdir}/* \
>  "
>  
>  # This keeps only tput/tset in ncurses




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/3] ncurses: move only libncurses and libtinfo to base_libdir
  2012-03-13 20:51   ` Andreas Oberritter
@ 2012-03-13 22:11     ` Scott Garman
  0 siblings, 0 replies; 11+ messages in thread
From: Scott Garman @ 2012-03-13 22:11 UTC (permalink / raw)
  To: openembedded-core

On 03/13/2012 01:51 PM, Andreas Oberritter wrote:
> On 13.03.2012 03:08, Scott Garman wrote:
>> The previous approach to moving the ncurses libraries to
>> base_libdir was too aggressive, and it broke curses support
>> in python.
>>
>> Instead, move only libncurses, libncursesw, and libtinfo to
>> base_libdir and leave the remaining libraries in libdir.
>>
>> Also delete ${libdir}/terminfo as it never gets packaged to
>> avoid a QA warning.
>>
>> This fixes [YOCTO #2070] and is a partial fix for [YOCTO #1937].
>
> Hello Scott,
>
> package splitting doesn't seem to work anymore. Libs that previously had
> their own package now end up being stored in the main ncurses package.

Thanks for reporting this, Andreas. I am working on a fix for it now. My 
apologies for the trouble.

Scott

-- 
Scott Garman
Embedded Linux Engineer - Yocto Project
Intel Open Source Technology Center



^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2012-03-13 22:21 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-03-13  2:08 [PATCH 0/3] ncurses library location fix Scott Garman
2012-03-13  2:08 ` [PATCH 1/3] path.py: add make_relative_symlink method Scott Garman
2012-03-13  2:08 ` [PATCH 2/3] ncurses: move only libncurses and libtinfo to base_libdir Scott Garman
2012-03-13 20:51   ` Andreas Oberritter
2012-03-13 22:11     ` Scott Garman
2012-03-13  2:08 ` [PATCH 3/3] gettext: do not set libncurses prefix explicitly Scott Garman
2012-03-13 13:16   ` Richard Purdie
2012-03-13 19:58     ` Scott Garman
2012-03-13  5:30 ` [PATCH 0/3] ncurses library location fix Scott Garman
2012-03-13  8:09 ` Koen Kooi
2012-03-13  8:52   ` Scott Garman

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.