Patchwork libpcap: Move pcap-config to -dev package

login
register
mail settings
Submitter Koen Kooi
Date May 7, 2012, 7:15 a.m.
Message ID <92E739C4-DF13-4933-92C0-A6F18CD81957@dominion.thruhere.net>
Download mbox | patch
Permalink /patch/27205/
State New
Headers show

Comments

Koen Kooi - May 7, 2012, 7:15 a.m.
Op 7 mei 2012, om 08:59 heeft Saul Wold het volgende geschreven:

> On 05/04/2012 11:57 PM, Koen Kooi wrote:
>> 
>> Op 5 mei 2012, om 02:13 heeft Saul Wold het volgende geschreven:
>> 
>>> pcap-config is a tool used for getting the cflags and ln flags for development
>>> 
>>> [YOCTO #2367]
>>> 
>>> Signed-off-by: Saul Wold<sgw@linux.intel.com>
>>> ---
>>> meta/recipes-connectivity/libpcap/libpcap.inc |    7 ++++++-
>>> 1 files changed, 6 insertions(+), 1 deletions(-)
>>> 
>>> diff --git a/meta/recipes-connectivity/libpcap/libpcap.inc b/meta/recipes-connectivity/libpcap/libpcap.inc
>>> index 427078f..7950b2a 100644
>>> --- a/meta/recipes-connectivity/libpcap/libpcap.inc
>>> +++ b/meta/recipes-connectivity/libpcap/libpcap.inc
>>> @@ -13,7 +13,7 @@ DEPENDS = "flex-native bison-native"
>>> PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'bluetooth', 'bluetooth', '', d)}"
>>> PACKAGECONFIG[bluetooth] = "--enable-bluetooth,--disable-bluetooth,bluez4"
>>> 
>>> -INC_PR = "r1"
>>> +INC_PR = "r2"
>>> 
>>> SRC_URI = "http://www.tcpdump.org/release/libpcap-${PV}.tar.gz"
>>> 
>>> @@ -30,3 +30,8 @@ do_configure_prepend () {
>>>         cat aclocal.m4>  acinclude.m4
>>>     fi
>>> }
>>> +
>>> +# pcap-config is a dev tool and should not be packaged in the
>>> +# core package.
>>> +FILES_${PN} = "${libdir}/lib*${SOLIBS}"
>>> +FILES_${PN}-dev += "${bindir}"
>> 
>> Change that go ${bindir}/pcap-config to avoid being too greedy during upgrades. Or just inherit 'binconfig' :)
> 
> It already inherits binconfig!
> 
> That does not seem to address which package it gets installed in!

Ah right, the oe-core binconfig.bbclass lacks changes that the OE-classic one has:

koen@dominion:/OE/tentacle/sources/openembedded-core/meta$ diff -u classes/binconfig.bbclass /OE/org.openembedded.dev/classes/binconfig.bbclass
Saul Wold - May 11, 2012, 4:10 p.m.
On 05/07/2012 12:15 AM, Koen Kooi wrote:
>
> Op 7 mei 2012, om 08:59 heeft Saul Wold het volgende geschreven:
>
>> On 05/04/2012 11:57 PM, Koen Kooi wrote:
>>>
>>> Op 5 mei 2012, om 02:13 heeft Saul Wold het volgende geschreven:
>>>
>>>> pcap-config is a tool used for getting the cflags and ln flags for development
>>>>
>>>> [YOCTO #2367]
>>>>
>>>> Signed-off-by: Saul Wold<sgw@linux.intel.com>
>>>> ---
>>>> meta/recipes-connectivity/libpcap/libpcap.inc |    7 ++++++-
>>>> 1 files changed, 6 insertions(+), 1 deletions(-)
>>>>
>>>> diff --git a/meta/recipes-connectivity/libpcap/libpcap.inc b/meta/recipes-connectivity/libpcap/libpcap.inc
>>>> index 427078f..7950b2a 100644
>>>> --- a/meta/recipes-connectivity/libpcap/libpcap.inc
>>>> +++ b/meta/recipes-connectivity/libpcap/libpcap.inc
>>>> @@ -13,7 +13,7 @@ DEPENDS = "flex-native bison-native"
>>>> PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'bluetooth', 'bluetooth', '', d)}"
>>>> PACKAGECONFIG[bluetooth] = "--enable-bluetooth,--disable-bluetooth,bluez4"
>>>>
>>>> -INC_PR = "r1"
>>>> +INC_PR = "r2"
>>>>
>>>> SRC_URI = "http://www.tcpdump.org/release/libpcap-${PV}.tar.gz"
>>>>
>>>> @@ -30,3 +30,8 @@ do_configure_prepend () {
>>>>          cat aclocal.m4>   acinclude.m4
>>>>      fi
>>>> }
>>>> +
>>>> +# pcap-config is a dev tool and should not be packaged in the
>>>> +# core package.
>>>> +FILES_${PN} = "${libdir}/lib*${SOLIBS}"
>>>> +FILES_${PN}-dev += "${bindir}"
>>>
>>> Change that go ${bindir}/pcap-config to avoid being too greedy during upgrades. Or just inherit 'binconfig' :)
>>
>> It already inherits binconfig!
>>
>> That does not seem to address which package it gets installed in!
>
> Ah right, the oe-core binconfig.bbclass lacks changes that the OE-classic one has:
>
Digging into this has uncovered a small rat's nest of problems! There 
are a around 25 recipes that use binconfig and most of them deliver just 
libraries and a -config command.  There are a number of cases where more 
content is delivered in the FILES_${PN}.

Using the buildhistory tools I was able to see that there are more than 
just pcap with this issue, and moving to the code below does not seem to 
work correctly, since it places the -configs into 
<some_path>/tmp/sysroots/${MACHINE}/<some_path>/tmp/sysroots/${MACHINE>, 
because ${STAGING_BINDIR_CROS} contains  ${STAGING_DIR_HOST} already!

And it's not clear that the FILES_${PN}-dev addition does the correct 
thing since FILES_${PN} is greedy in $bindir, another set change would 
be required to exclude the *-config files from FILES_${PN} which 
currently most of the recipes do by overriding FILES_${PN} with just the 
*.so* line, except for the ones like cups which has a huge amount of 
FILES_${PN} delivered.

I am digging!

Sau!


> koen@dominion:/OE/tentacle/sources/openembedded-core/meta$ diff -u classes/binconfig.bbclass /OE/org.openembedded.dev/classes/binconfig.bbclass
> --- classes/binconfig.bbclass	2012-01-30 13:43:41.000000000 +0100
> +++ /OE/org.openembedded.dev/classes/binconfig.bbclass	2011-04-28 13:29:17.000000000 +0200
> @@ -1,3 +1,5 @@
> +FILES_${PN}-dev += "${bindir}/*-config"
> +
>   # The namespaces can clash here hence the two step replace
>   def get_binconfig_mangle(d):
>   	s = "-e ''"
> @@ -17,6 +19,8 @@
>   		s += " -e 's:OEEXECPREFIX:${STAGING_DIR_HOST}${exec_prefix}:'"
>   		s += " -e 's:-I${WORKDIR}:-I${STAGING_INCDIR}:'"
>   		s += " -e 's:-L${WORKDIR}:-L${STAGING_LIBDIR}:'"
> +		if bb.data.getVar("OE_BINCONFIG_EXTRA_MANGLE", d):
> +		    s += bb.data.getVar("OE_BINCONFIG_EXTRA_MANGLE", d)
>   	return s
>
>   BINCONFIG_GLOB ?= "*-config"
> @@ -45,10 +49,10 @@
>   SYSROOT_PREPROCESS_FUNCS += "binconfig_sysroot_preprocess"
>
>   binconfig_sysroot_preprocess () {
> -	for config in `find ${S} -name '${BINCONFIG_GLOB}'`; do
> +	for config in `find ${D} -name '${BINCONFIG_GLOB}'`; do
>   		configname=`basename $config`
> -		install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}
> -		cat $config | sed ${@get_binconfig_mangle(d)}>  ${SYSROOT_DESTDIR}${bindir_crossscripts}/$configname
> -		chmod u+x ${SYSROOT_DESTDIR}${bindir_crossscripts}/$configname
> +		install -d ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}
> +		cat $config | sed ${@get_binconfig_mangle(d)}>  ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/$configname
> +		chmod u+x ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/$configname
>   	done
>   }
>
>
>

Patch

--- classes/binconfig.bbclass	2012-01-30 13:43:41.000000000 +0100
+++ /OE/org.openembedded.dev/classes/binconfig.bbclass	2011-04-28 13:29:17.000000000 +0200
@@ -1,3 +1,5 @@ 
+FILES_${PN}-dev += "${bindir}/*-config"
+
 # The namespaces can clash here hence the two step replace
 def get_binconfig_mangle(d):
 	s = "-e ''"
@@ -17,6 +19,8 @@ 
 		s += " -e 's:OEEXECPREFIX:${STAGING_DIR_HOST}${exec_prefix}:'"
 		s += " -e 's:-I${WORKDIR}:-I${STAGING_INCDIR}:'"
 		s += " -e 's:-L${WORKDIR}:-L${STAGING_LIBDIR}:'"
+		if bb.data.getVar("OE_BINCONFIG_EXTRA_MANGLE", d):
+		    s += bb.data.getVar("OE_BINCONFIG_EXTRA_MANGLE", d)
 	return s
 
 BINCONFIG_GLOB ?= "*-config"
@@ -45,10 +49,10 @@ 
 SYSROOT_PREPROCESS_FUNCS += "binconfig_sysroot_preprocess"
 
 binconfig_sysroot_preprocess () {
-	for config in `find ${S} -name '${BINCONFIG_GLOB}'`; do
+	for config in `find ${D} -name '${BINCONFIG_GLOB}'`; do
 		configname=`basename $config`
-		install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}
-		cat $config | sed ${@get_binconfig_mangle(d)} > ${SYSROOT_DESTDIR}${bindir_crossscripts}/$configname
-		chmod u+x ${SYSROOT_DESTDIR}${bindir_crossscripts}/$configname
+		install -d ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}
+		cat $config | sed ${@get_binconfig_mangle(d)} > ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/$configname
+		chmod u+x ${SYSROOT_DESTDIR}${STAGING_BINDIR_CROSS}/$configname
 	done
 }