[OE-core] [PATCH v2] libfm: upgrade to 1.1.0
Constantin Musca
constantinx.musca at intel.com
Fri Dec 28 11:28:49 UTC 2012
On 12/27/2012 07:52 PM, Saul Wold wrote:
> On 12/27/2012 06:39 AM, Constantin Musca wrote:
>> libfm_fix_for_automake-1.12.patch: removed
>> - problem not reprodicible anymore
>>
>> configure_fix.patch: removed
>> - not used
>>
>> [Other changes]
>> - create a symbolic link from ${includedir}/libfm-1.0 to
>> ${includedir}/libfm (this is where pcmanfm looks)
>>
>> Signed-off-by: Constantin Musca <constantinx.musca at intel.com>
>> ---
>> .../libfm/libfm-0.1.17/configure_fix.patch | 19 ---------
>> .../libfm-0.1.17/libfm_fix_for_automake-1.12.patch | 48
>> ----------------------
>> .../libfm/{libfm_0.1.17.bb => libfm_1.1.0.bb} | 14 +++++--
>> 3 files changed, 10 insertions(+), 71 deletions(-)
>> delete mode 100644
>> meta/recipes-support/libfm/libfm-0.1.17/configure_fix.patch
>> delete mode 100644
>> meta/recipes-support/libfm/libfm-0.1.17/libfm_fix_for_automake-1.12.patch
>> rename meta/recipes-support/libfm/{libfm_0.1.17.bb =>
>> libfm_1.1.0.bb} (71%)
>>
>> diff --git
>> a/meta/recipes-support/libfm/libfm-0.1.17/configure_fix.patch
>> b/meta/recipes-support/libfm/libfm-0.1.17/configure_fix.patch
>> deleted file mode 100644
>> index 351e6e7..0000000
>> --- a/meta/recipes-support/libfm/libfm-0.1.17/configure_fix.patch
>> +++ /dev/null
>> @@ -1,19 +0,0 @@
>> -Update configure.ac after docs removed in 0.1.16
>> -
>> -Upstream-Status: Pending
>> -
>> -Signed-off-by: Zhai Edwin <edwin.zhai at intel.com>
>> -Index: libfm-0.1.16/configure.ac
>> -===================================================================
>> ---- libfm-0.1.16.orig/configure.ac 2011-10-10 15:13:21.000000000
>> +0800
>> -+++ libfm-0.1.16/configure.ac 2011-10-10 15:13:30.000000000 +0800
>> -@@ -153,9 +153,6 @@
>> - data/Makefile
>> - data/ui/Makefile
>> - po/Makefile.in
>> -- docs/Makefile
>> -- docs/reference/Makefile
>> -- docs/reference/libfm/Makefile
>> - libfm.pc
>> - libfm-gtk.pc
>> - ])
>> diff --git
>> a/meta/recipes-support/libfm/libfm-0.1.17/libfm_fix_for_automake-1.12.patch
>> b/meta/recipes-support/libfm/libfm-0.1.17/libfm_fix_for_automake-1.12.patch
>>
>> deleted file mode 100644
>> index 3efb4dd..0000000
>> ---
>> a/meta/recipes-support/libfm/libfm-0.1.17/libfm_fix_for_automake-1.12.patch
>> +++ /dev/null
>> @@ -1,48 +0,0 @@
>> -Upstream-Status: Pending
>> -
>> -This patch fixes following kind of issues with automake 1.12
>> -| automake: warnings are treated as errors
>> -| data/ui/Makefile.am:21: warning: '%'-style pattern rules are a GNU
>> make extension
>> -...
>> -|
>> /srv/home/nitin/builds/build-gcc47/tmp/sysroots/x86_64-linux/usr/share/automake-1.12/am/ltlibrary.am:
>> warning: 'libfm-gtk.la': linking libtool libraries using a non-POSIX
>> -|
>> /srv/home/nitin/builds/build-gcc47/tmp/sysroots/x86_64-linux/usr/share/automake-1.12/am/ltlibrary.am:
>> archiver requires 'AM_PROG_AR' in 'configure.ac'
>> -...
>> -| src/Makefile.am:21: warning: compiling 'glib-compat.c' with
>> per-target flags requires 'AM_PROG_CC_C_O' in 'configure.ac'
>> -
>> -Signed-Off-By: Nitin A Kamble <nitin.a.kamble at intel.com>
>> -2012/05/03
>> -
>> -Index: libfm-0.1.17/configure.ac
>> -===================================================================
>> ---- libfm-0.1.17.orig/configure.ac
>> -+++ libfm-0.1.17/configure.ac
>> -@@ -4,11 +4,17 @@
>> - AC_PREREQ([2.63])
>> - AC_INIT([libfm], [0.1.17], [http://pcmanfm.sorceforge.net/])
>> - AM_INIT_AUTOMAKE([-Wall -Werror foreign])
>> -+
>> -+# automake 1.12 seems to require this, but automake 1.11 doesn't
>> recognize it
>> -+m4_pattern_allow([AM_PROG_AR])
>> -+AM_PROG_AR
>> -+
>> - AC_CONFIG_MACRO_DIR(m4)
>> - AC_CONFIG_HEADERS([config.h])
>> -
>> - # Checks for programs.
>> - AC_PROG_CC
>> -+AM_PROG_CC_C_O
>> - AM_PROG_LIBTOOL
>> -
>> - # Checks for libraries.
>> -Index: libfm-0.1.17/data/ui/Makefile.am
>> -===================================================================
>> ---- libfm-0.1.17.orig/data/ui/Makefile.am
>> -+++ libfm-0.1.17/data/ui/Makefile.am
>> -@@ -18,6 +18,6 @@ EXTRA_DIST = \
>> - $(NULL)
>> -
>> - # Purge GtkBuilder UI files
>> --%.ui: %.glade
>> -+.glade.ui:
>> - cp $< $@
>> - $(top_builddir)/src/xml-purge $@
>> diff --git a/meta/recipes-support/libfm/libfm_0.1.17.bb
>> b/meta/recipes-support/libfm/libfm_1.1.0.bb
>> similarity index 71%
>> rename from meta/recipes-support/libfm/libfm_0.1.17.bb
>> rename to meta/recipes-support/libfm/libfm_1.1.0.bb
>> index 2cac361..95a2ca0 100644
>> --- a/meta/recipes-support/libfm/libfm_0.1.17.bb
>> +++ b/meta/recipes-support/libfm/libfm_1.1.0.bb
>> @@ -10,16 +10,22 @@ LIC_FILES_CHKSUM =
>> "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
>> SECTION = "x11/libs"
>> DEPENDS = "glib-2.0 pango gtk+ menu-cache intltool-native"
>>
>> -PR = "r4"
>> +PR = "r0"
>>
>> SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/libfm-${PV}.tar.gz \
>> - file://libfm_fix_for_automake-1.12.patch \
>> "
>>
>> -SRC_URI[md5sum] = "a97e03d973e6ac727f28d0934d6c9ad5"
>> -SRC_URI[sha256sum] =
>> "1740681cff4cd4c5a2eaa9805d8898269cfb6a49a0bda0acb242def15bc7131b"
>> +SRC_URI[md5sum] = "a5bc8b8291cf810c659bfb3af378b5de"
>> +SRC_URI[sha256sum] =
>> "b9426e588670b53570b808c49abd1d103863614dd3622559b8c3ef1392fe0b3d"
>>
>> inherit autotools pkgconfig
>>
>> +do_install_append() {
>> + cd ${D}/${includedir}
>> + rm -rf ${BPN}
>> + ln -s ${BPN}-1.0 ${BPN}
>> + cd ${S}
>> +}
> This is not the correct way to do this kind of thing and I am not even
> sure why you need to do this at all. I tested unmodified libfm with
> pcmanfm 1.1.0 and it worked correctly, I think all the extra linking
> stuff was not needed at all.
>
> Looks like we can clean up the patches and simplify the recipe.
>
> Sau!
>
>
>> +
>> PACKAGES += "${PN}-mime"
>> FILES_${PN}-mime = "${datadir}/mime/"
>>
If you try to build unmodified libfm several times you will discover an
error like this:
ERROR: Error executing a python function in
/home/dev/yocto/poky/meta/recipes-support/libfm/libfm_1.1.0.bb:
OSError: [Errno 40] Too many levels of symbolic links:
'/home/dev/yocto/poky-build/tmp/work/armv5te-poky-linux-gnueabi/libfm/1.1.0-r0/packages-split/libfm-dev/usr/include/libfm/libfm-1.0'
ERROR: The stack trace of python calls that resulted in this
exception/failure was:
ERROR: File "populate_packages", line 177, in <module>
ERROR:
ERROR: File "populate_packages", line 147, in populate_packages
ERROR:
ERROR: The code that was being executed was:
ERROR: 0173: bb.note("%s contains dangling symlink
to %s" % (pkg, l))
ERROR: 0174: d.setVar('RDEPENDS_' + pkg,
bb.utils.join_deps(rdepends, commasep=False))
ERROR: 0175:
ERROR: 0176:
ERROR: *** 0177:populate_packages(d)
ERROR: 0178:
ERROR: [From file: 'populate_packages', lineno: 177, function: <module>]
ERROR: 0143: path = os.path.join(root, f)
ERROR: 0144: rpath = path[len(inst_root):]
ERROR: 0145: pkg_files[pkg].append(rpath)
ERROR: 0146: try:
ERROR: *** 0147: s = os.stat(path)
ERROR: 0148: except OSError, (err, strerror):
ERROR: 0149: if err != errno.ENOENT:
ERROR: 0150: raise
ERROR: 0151: target = os.readlink(path)
ERROR: [From file: 'populate_packages', lineno: 147, function:
populate_packages]
ERROR: Function failed: populate_packages
ERROR: Logfile of failure stored in:
/home/dev/yocto/poky-build/tmp/work/armv5te-poky-linux-gnueabi/libfm/1.1.0-r0/temp/log.do_package.743
The files from the package dir look like this:
libfm/1.1.0-r0/package/usr/include:
total 8.0K
drwxr-xr-x 2 costin costin 4.0K Dec 28 11:48 libfm/
drwxr-xr-x 2 costin costin 4.0K Dec 28 11:48 libfm-1.0/
libfm/1.1.0-r0/package/usr/include/libfm:
total 0
lrwxrwxrwx 1 costin costin 9 Dec 28 11:48 libfm-1.0 -> libfm-1.0
The problem is that we have the following definition in src/Makefile.am:
pkginclude_HEADERS = \
$(LIBFM_INCLUDES) \
$(LIBFM_GTK_INCLUDES) \
$(NULL)
Automake autogenerates from this definition code that creates
pkgincludedir which is (${includedir}/libfm}. Thus we have a race
condition between the code that creates pkgincludedir and the code that
tries to symlink ${includedir}/libfm-1.0 to ${includedir}/libfm. More
details can be found in patch v3. I hope now everything is clear.
Cheers,
Constantin
More information about the Openembedded-core
mailing list