Patchwork [RFC] binconfig.bbclass: search configs in PKGD instead of S

login
register
mail settings
Submitter Stanislav Brabec
Date Jan. 27, 2011, 10:31 p.m.
Message ID <1296167465.14370.7.camel@utx.lan>
Download mbox | patch
Permalink /patch/390/
State RFC
Delegated to: Tom Rini
Headers show

Comments

Stanislav Brabec - Jan. 27, 2011, 10:31 p.m.
Hallo.

It seems that searching for binconfig in S makes more problems than it
brings benefits. It breaks for example ncurses - it populates
ncurses-config instead of ncurses5-config and ncursesw5-config).

Searching in the installed root seems to be more logical.

Most packages don't need to be ported to this change, as they install
config file with the same name as it exists in sources. But probably
several will need porting.
Andreas Oberritter - Jan. 28, 2011, 1:19 a.m.
On 01/27/2011 11:31 PM, Stanislav Brabec wrote:
> It seems that searching for binconfig in S makes more problems than it
> brings benefits. It breaks for example ncurses - it populates
> ncurses-config instead of ncurses5-config and ncursesw5-config).

Indeed. Installing *-config files which don't get installed by the
recipe is prone to cause subtle errors. I modified pkgconfig.bbclass in
a similar way in commit c2c8fe4c5629add94bd0b922f5b3446624a9f4d8.

"find recipes -name "*-config" -type f" shows candidates which may cause
breakage with this patch applied, in case they need to be installed but
only get copied to the source directory.

> Searching in the installed root seems to be more logical.
> 
> Most packages don't need to be ported to this change, as they install
> config file with the same name as it exists in sources. But probably
> several will need porting.

Why is this function needed at all? Isn't it possible to do the mangling
before or after do_install like in pkgconfig.bbclass?

Regards,
Andreas
Stanislav Brabec - Jan. 28, 2011, 2:32 p.m.
Andreas Oberritter wrote:
> On 01/27/2011 11:31 PM, Stanislav Brabec wrote:
> > It seems that searching for binconfig in S makes more problems than it
> > brings benefits. It breaks for example ncurses - it populates
> > ncurses-config instead of ncurses5-config and ncursesw5-config).
> 
> Indeed. Installing *-config files which don't get installed by the
> recipe is prone to cause subtle errors. I modified pkgconfig.bbclass in
> a similar way in commit c2c8fe4c5629add94bd0b922f5b3446624a9f4d8.

Yes, it can cause installation of .pc that are not intended to be
installed. It also saves the grep -v -- '-uninstalled.pc$'.

> "find recipes -name "*-config" -type f" shows candidates which may cause
> breakage with this patch applied, in case they need to be installed but
> only get copied to the source directory.

Well, it is possible, especially for packages that don't use "make
install" in any form. But the correct solution for that problem would be
different: Install these -config files in do_install and let binconfig
to mangle and move them automatically. If one depends on the old form of
binconfig, -config files are missing in the target native -devel
packages. (Most users will not see any problems until they try to
compile on the target native system.)

> > Searching in the installed root seems to be more logical.
> > 
> > Most packages don't need to be ported to this change, as they install
> > config file with the same name as it exists in sources. But probably
> > several will need porting.
> 
> Why is this function needed at all? Isn't it possible to do the mangling
> before or after do_install like in pkgconfig.bbclass?

binconfig files are a bit special:
- They have to be in the cross environment PATH. The target sysroot is
not (and cannot) be in the cross environment PATH. They have to be
mangled and moved to another location.

- They have to be different in the target package and in the staging
package. I can imagine a different solution, but the current one works
well for most packages.

In case of .pc files, this logic above is embedded into pkg-config
itself, so one does not need additional magic.

Patch

--- a/classes/binconfig.bbclass
+++ b/classes/binconfig.bbclass
@@ -49,7 +49,7 @@ 
 SYSROOT_PREPROCESS_FUNCS += "binconfig_sysroot_preprocess"
 
 binconfig_sysroot_preprocess () {
-	for config in `find ${S} -name '${BINCONFIG_GLOB}'`; do
+	for config in `find ${PKGD} -name '${BINCONFIG_GLOB}'`; do
 		configname=`basename $config`
 		install -d ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}
 		cat $config | sed ${@get_binconfig_mangle(d)} > ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/$configname