[poky] [PATCH 1/1] pango: Fix modules load failure in multilib environment
Richard Purdie
richard.purdie at linuxfoundation.org
Sun May 6 01:48:16 PDT 2012
On Fri, 2012-05-04 at 20:58 -0700, Saul Wold wrote:
> On 05/02/2012 12:43 AM, edwin.zhai at intel.com wrote:
> > From: Zhai Edwin<edwin.zhai at intel.com>
> >
> > Multi-libs of Pango need different modules, thus different config files and
> > utils. This patch separate config file and utils into different directory to
> > avoid conflict.
> >
> > [YOCTO #2356] got fixed.
> >
> > Signed-off-by: Zhai Edwin<edwin.zhai at intel.com>
> > ---
> > .../pango/pango-1.28.4/multilib-fix.patch | 90 ++++++++++++++++++++
> > meta/recipes-graphics/pango/pango.inc | 12 ++-
> > meta/recipes-graphics/pango/pango_1.28.4.bb | 7 +-
> > 3 files changed, 101 insertions(+), 8 deletions(-)
> > create mode 100644 meta/recipes-graphics/pango/pango-1.28.4/multilib-fix.patch
> >
> > diff --git a/meta/recipes-graphics/pango/pango-1.28.4/multilib-fix.patch b/meta/recipes-graphics/pango/pango-1.28.4/multilib-fix.patch
> > new file mode 100644
> > index 0000000..87d7a0a
> > --- /dev/null
> > +++ b/meta/recipes-graphics/pango/pango-1.28.4/multilib-fix.patch
> > @@ -0,0 +1,90 @@
> > +Fix modules load failure in multilib environment.
> > +
> > +Multi-lib need different configs produced by different utils, so need keep both
> > +of them by putting them in different directory.
> > +
> > +Signed-off-by: Zhai Edwin<edwin.zhai at intel.com>
> > +
> > +Upstream-Status: Inappropriate [other] - Upstream may have nice fix in future
> > +
> > +Index: pango-1.28.4/pango/pango-utils.c
> > +===================================================================
> > +--- pango-1.28.4.orig/pango/pango-utils.c 2012-04-28 16:23:48.000000000 +0800
> > ++++ pango-1.28.4/pango/pango-utils.c 2012-05-02 10:19:14.000000000 +0800
> > +@@ -678,6 +678,19 @@
> > +
> > + #endif
> > +
> > ++#ifndef G_OS_WIN32
> > ++/* return the relative baselib dir */
> > ++const char *
> > ++pango_get_baselib_directory (void)
> > ++{
> > ++ char *libdir = g_strdup(LIBDIR);
> > ++ char *baselib = g_strdup( g_strrstr(libdir, "lib"));
> > ++ g_free(libdir);
> > ++
> > ++ return baselib;
> > ++}
> > ++#endif
> > ++
> > + /**
> > + * pango_get_sysconf_subdirectory:
> > + *
> > +Index: pango-1.28.4/pango/modules.c
> > +===================================================================
> > +--- pango-1.28.4.orig/pango/modules.c 2010-09-22 03:37:01.000000000 +0800
> > ++++ pango-1.28.4/pango/modules.c 2012-05-02 10:42:57.000000000 +0800
> > +@@ -523,12 +523,17 @@
> > +
> > + char *file_str = pango_config_key_get ("Pango/ModuleFiles");
> > + char **files;
> > ++ char *baselib = pango_get_baselib_directory();
> > + int n;
> > +
> > + dlloaded_modules = g_hash_table_new (g_str_hash, g_str_equal);
> > +
> > + if (!file_str)
> > + file_str = g_build_filename (pango_get_sysconf_subdirectory (),
> > ++#ifndef G_OS_WIN32
> > ++/* For multilib case, keep multiple config file for different libs */
> > ++ baselib,
> > ++#endif
> > + "pango.modules",
> > + NULL);
> > +
> > +@@ -550,6 +555,7 @@
> > +
> > + g_strfreev (files);
> > + g_free (file_str);
> > ++ g_free (baselib);
> > +
> > + dlloaded_engines = g_slist_reverse (dlloaded_engines);
> > + }
> > +@@ -631,6 +637,7 @@
> > + {
> > + const char *engine_type = g_quark_to_string (info->engine_type_id);
> > + const char *render_type = g_quark_to_string (info->render_type_id);
> > ++ char *baselib = pango_get_baselib_directory();
> > +
> > + init_modules();
> > +
> > +@@ -640,6 +647,10 @@
> > + if (!no_module_warning)
> > + {
> > + gchar *filename = g_build_filename (pango_get_sysconf_subdirectory (),
> > ++#ifndef G_OS_WIN32
> > ++/* For multilib case, keep multiple config file for different libs */
> > ++ baselib,
> > ++#endif
> > + "pango.modules",
> > + NULL);
> > + g_critical ("No modules found:\n"
> > +@@ -652,6 +663,7 @@
> > + filename,
> > + filename);
> > + g_free (filename);
> > ++ g_free (baselib);
> > +
> > + no_module_warning = TRUE;
> > + }
> > diff --git a/meta/recipes-graphics/pango/pango.inc b/meta/recipes-graphics/pango/pango.inc
> > index a2d5dc3..2184da3 100644
> > --- a/meta/recipes-graphics/pango/pango.inc
> > +++ b/meta/recipes-graphics/pango/pango.inc
> > @@ -32,9 +32,11 @@ EXTRA_AUTORECONF = ""
> > # seems to go wrong with default cflags
> > FULL_OPTIMIZATION_arm = "-O2"
> >
> > +# keep multiple version of utils under ${bindir} in multilib environment
> > EXTRA_OECONF = "--disable-glibtest \
> > --enable-explicit-deps=no \
> > - --disable-debug"
> > + --disable-debug \
> > + --bindir=${bindir}/${baselib}"
> >
> > LEAD_SONAME = "libpango-1.0*"
> > LIBV = "1.6.0"
> > @@ -44,8 +46,8 @@ if [ "x$D" != "x" ]; then
> > exit 1
> > fi
> >
> > -if ! [ -e $D${sysconfdir}/pango ] ; then
> > - mkdir -p $D${sysconfdir}/pango
> > +if ! [ -e $D${sysconfdir}/pango/${baselib} ] ; then
> > + mkdir -p $D${sysconfdir}/pango/${baselib}
> > fi
> > }
> >
> > @@ -54,9 +56,9 @@ python populate_packages_prepend () {
> >
> > modules_root = d.expand('${libdir}/pango/${LIBV}/modules')
> >
> > - do_split_packages(d, modules_root, '^pango-(.*)\.so$', 'pango-module-%s', 'Pango module %s', prologue + 'pango-querymodules> /etc/pango/pango.modules')
> > + do_split_packages(d, modules_root, '^pango-(.*)\.so$', 'pango-module-%s', 'Pango module %s', prologue + '${bindir}/${baselib}/pango-querymodules> /etc/pango/${baselib}/pango.modules')
> > }
> >
> > -FILES_${PN} = "${sysconfdir}/pango/* ${bindir}/* ${libdir}/libpango*${SOLIBS}"
> > +FILES_${PN} = "${sysconfdir}/pango/* ${bindir}/${baselib}/* ${libdir}/libpango*${SOLIBS}"
>
> This change to ${bindir}/${baselib} does not seem right to me, that
> would be /usr/bin/usr/lib.
No, it woud be /usr/bin/lib.
> It also results in a packaging issue:
> ERROR: For recipe pango, the following files/directories were installed
> but not shipped in any package:
> ERROR: /usr/bin/lib/.debug
> ERROR: /usr/bin/lib/.debug/pango-querymodules
> ERROR: /usr/bin/lib/.debug/pango-view
>
>
> Please review this patch
There is a missing FILES_${PN}-dbg += "${bindir}/${baselib}/.debug".
I am left wondering if we would be better doing something like:
do_install_append () {
if [ "${MLPREFIX}" != "" ]; then
mv ${bindir}/pango-querymodules ${bindir}/${MLPREFIX}pango-querymodules
fi
}
It would also be worth cosidering if the patch would be any neater if we
pass ${MLPREFIX} in as an extra variable?
Cheers,
Richard
More information about the poky
mailing list