[poky] [PATCH 1/1] pango: Fix modules load failure in multilib environment

Saul Wold sgw at linux.intel.com
Fri May 4 20:58:38 PDT 2012


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.

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

Thanks
	Sau!


>   FILES_${PN}-dbg += "${libdir}/pango/${LIBV}/modules/.debug"
>   FILES_${PN}-dev += "${libdir}/pango/${LIBV}/modules/*.la"
> diff --git a/meta/recipes-graphics/pango/pango_1.28.4.bb b/meta/recipes-graphics/pango/pango_1.28.4.bb
> index 8d71de0..e72e8a2 100644
> --- a/meta/recipes-graphics/pango/pango_1.28.4.bb
> +++ b/meta/recipes-graphics/pango/pango_1.28.4.bb
> @@ -2,10 +2,11 @@ require pango.inc
>
>   LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
>
> -PR = "r7"
> +PR = "r8"
>
> -SRC_URI += "file://no-tests.patch"
> -SRC_URI += "file://noconst.patch"
> +SRC_URI += "file://no-tests.patch \
> +            file://noconst.patch \
> +            file://multilib-fix.patch"
>
>   SRC_URI[archive.md5sum] = "3f3989700f04e9117d30544a9078b3a0"
>   SRC_URI[archive.sha256sum] = "7eb035bcc10dd01569a214d5e2bc3437de95d9ac1cfa9f50035a687c45f05a9f"



More information about the poky mailing list