All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Purdie <richard.purdie@linuxfoundation.org>
To: Saul Wold <sgw@linux.intel.com>
Cc: poky@yoctoproject.org
Subject: Re: [PATCH 1/1] pango: Fix modules load failure in multilib environment
Date: Sun, 06 May 2012 09:48:16 +0100	[thread overview]
Message-ID: <1336294096.23777.55.camel@ted> (raw)
In-Reply-To: <4FA4A56E.8050602@linux.intel.com>

On Fri, 2012-05-04 at 20:58 -0700, Saul Wold wrote:
> On 05/02/2012 12:43 AM, edwin.zhai@intel.com wrote:
> > From: Zhai Edwin<edwin.zhai@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@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@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







  reply	other threads:[~2012-05-06  8:48 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-02  7:43 [PATCH 0/1] Fix pango modules load failure in multilib environment, Edwin, May2, 2012 edwin.zhai
2012-05-02  7:43 ` [PATCH 1/1] pango: Fix modules load failure in multilib environment edwin.zhai
2012-05-04 18:11   ` [poky] " Scott Garman
2012-05-05  3:58   ` Saul Wold
2012-05-06  8:48     ` Richard Purdie [this message]
2012-05-07  0:55       ` Zhai, Edwin
2012-05-07  8:06         ` Richard Purdie
  -- strict thread matches above, loose matches on Subject: below --
2012-05-08 14:43 [PATCH 0/1][V2] Fix pango modules load failure in multilib environment, Edwin, May8, 2012 edwin.zhai
2012-05-08 14:43 ` [PATCH 1/1] pango: Fix modules load failure in multilib environment edwin.zhai
2012-05-08 15:18   ` Richard Purdie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1336294096.23777.55.camel@ted \
    --to=richard.purdie@linuxfoundation.org \
    --cc=poky@yoctoproject.org \
    --cc=sgw@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.