Patchwork rpm: avoid dependency on perl and python for -native build

login
register
mail settings
Submitter Phil Blundell
Date June 2, 2011, 9:48 a.m.
Message ID <1307008107.2529.175.camel@phil-desktop>
Download mbox | patch
Permalink /patch/5309/
State New, archived
Headers show

Comments

Phil Blundell - June 2, 2011, 9:48 a.m.
Update override naming (_native -> _virtclass-native) to disable perl
and python bindings when building native rpm, and adjust the DEPENDS to
match.

Perl bindings were, in fact, already disabled for both native and target
builds so it's only the python ones that have really changed.

Signed-off-by: Phil Blundell <philb@gnu.org>
---
 meta/recipes-devtools/rpm/rpm_5.4.0.bb |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)
Mark Hatle - June 2, 2011, 1:29 p.m.
On 6/2/11 4:48 AM, Phil Blundell wrote:
> Update override naming (_native -> _virtclass-native) to disable perl
> and python bindings when building native rpm, and adjust the DEPENDS to
> match.
> 
> Perl bindings were, in fact, already disabled for both native and target
> builds so it's only the python ones that have really changed.
> 
> Signed-off-by: Phil Blundell <philb@gnu.org>

Acked-by: Mark Hatle <mark.hatle@windriver.com>

> ---
>  meta/recipes-devtools/rpm/rpm_5.4.0.bb |   10 ++++++----
>  1 files changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/meta/recipes-devtools/rpm/rpm_5.4.0.bb b/meta/recipes-devtools/rpm/rpm_5.4.0.bb
> index d3f85f2..5c30f1c 100644
> --- a/meta/recipes-devtools/rpm/rpm_5.4.0.bb
> +++ b/meta/recipes-devtools/rpm/rpm_5.4.0.bb
> @@ -42,8 +42,10 @@ HOMEPAGE = "http://rpm5.org/"
>  LICENSE = "LGPL 2.1"
>  LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
>  
> -DEPENDS = "bzip2 zlib python perl db openssl elfutils expat libpcre attr acl popt"
> -PR = "r16"
> +rpmdeps = "bzip2 zlib db openssl elfutils expat libpcre attr acl popt"
> +DEPENDS = "${rpmdeps} python perl"
> +DEPENDS_virtclass-native = "${rpmdeps}"
> +PR = "r17"
>  
>  # rpm2cpio is a shell script, which is part of the rpm src.rpm.  It is needed
>  # in order to extract the distribution SRPM into a format we can extract...
> @@ -92,7 +94,7 @@ WITH_PYTHON = "	--with-python=${PYTHON_BASEVERSION} \
>  		--without-pythonembed \
>  	      "
>  
> -WITH_PYTHON_native = " --without-python"
> +WITH_PYTHON_virtclass-native = " --without-python"
>  
>  # Perl modules are not built, but they could be enabled fairly easily
>  # the perl module creation and installation would need to be patched.
> @@ -100,7 +102,7 @@ WITH_PYTHON_native = " --without-python"
>  #WITH_PERL = "	--with-perl --without-perlembed"
>  WITH_PERL = "	--without-perl"
>  
> -WITH_PERL_native = " --without-perl"
> +WITH_PERL_virtclass-native = " --without-perl"
>  
>  WITH_DB = "--with-db --with-dbsql --without-db-tools-integrated --without-sqlite"
>
Richard Purdie - June 2, 2011, 1:52 p.m.
On Thu, 2011-06-02 at 10:48 +0100, Phil Blundell wrote:
> Update override naming (_native -> _virtclass-native) to disable perl
> and python bindings when building native rpm, and adjust the DEPENDS to
> match.
> 
> Perl bindings were, in fact, already disabled for both native and target
> builds so it's only the python ones that have really changed.
> 
> Signed-off-by: Phil Blundell <philb@gnu.org>
> ---

Merged to master, thanks.

Richard
Richard Purdie - June 2, 2011, 9:25 p.m.
On Thu, 2011-06-02 at 10:48 +0100, Phil Blundell wrote:
> Update override naming (_native -> _virtclass-native) to disable perl
> and python bindings when building native rpm, and adjust the DEPENDS to
> match.
> 
> Perl bindings were, in fact, already disabled for both native and target
> builds so it's only the python ones that have really changed.
> 
> Signed-off-by: Phil Blundell <philb@gnu.org>
> ---
>  meta/recipes-devtools/rpm/rpm_5.4.0.bb |   10 ++++++----
>  1 files changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/meta/recipes-devtools/rpm/rpm_5.4.0.bb b/meta/recipes-devtools/rpm/rpm_5.4.0.bb
> index d3f85f2..5c30f1c 100644
> --- a/meta/recipes-devtools/rpm/rpm_5.4.0.bb
> +++ b/meta/recipes-devtools/rpm/rpm_5.4.0.bb
> @@ -42,8 +42,10 @@ HOMEPAGE = "http://rpm5.org/"
>  LICENSE = "LGPL 2.1"
>  LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
>  
> -DEPENDS = "bzip2 zlib python perl db openssl elfutils expat libpcre attr acl popt"
> -PR = "r16"
> +rpmdeps = "bzip2 zlib db openssl elfutils expat libpcre attr acl popt"
> +DEPENDS = "${rpmdeps} python perl"
> +DEPENDS_virtclass-native = "${rpmdeps}"
> +PR = "r17"
>  
>  # rpm2cpio is a shell script, which is part of the rpm src.rpm.  It is needed
>  # in order to extract the distribution SRPM into a format we can extract...
> @@ -92,7 +94,7 @@ WITH_PYTHON = "	--with-python=${PYTHON_BASEVERSION} \
>  		--without-pythonembed \
>  	      "
>  
> -WITH_PYTHON_native = " --without-python"
> +WITH_PYTHON_virtclass-native = " --without-python"
>  
>  # Perl modules are not built, but they could be enabled fairly easily
>  # the perl module creation and installation would need to be patched.
> @@ -100,7 +102,7 @@ WITH_PYTHON_native = " --without-python"
>  #WITH_PERL = "	--with-perl --without-perlembed"
>  WITH_PERL = "	--without-perl"
>  
> -WITH_PERL_native = " --without-perl"
> +WITH_PERL_virtclass-native = " --without-perl"
>  
>  WITH_DB = "--with-db --with-dbsql --without-db-tools-integrated --without-sqlite"
>  

This appears to break the rpm-native build with:

| checking whether to build with Lua library... no
| ++ executing failure action
| ++ mapping --with-pcre=yes to --with-pcre="external:internal:none"
| ++ searching location: external
| ++ searching location: internal
| -- skipping not existing local sub-directory: pcre
| ++ searching location: none
| -- no operation
| checking pcre.h usability... no
| checking pcre.h presence... no
| checking for pcre.h... no
| checking for pcre_compile in -lpcre... no
| checking whether to build with PCRE library... no
| ++ executing failure action
| configure: error: PCRE is mandatory. If you don't have  libpcre then --with-pcre=internal could be used
| ERROR: oe_runconf failed
| ERROR: Function 'do_configure' failed (see /media/build2/builds/rptest/b2/tmp/work/x86_64-linux/rpm-native-5.4.0-r17/temp/log.do_configure.8572 for further information)
| ERROR: Function 'do_configure' failed (see /media/build2/builds/rptest/b2/tmp/work/x86_64-linux/rpm-native-5.4.0-r17/temp/log.do_configure.8572 for further information)
NOTE: package rpm-native-5.4.0-r17: task do_configure: Failed
ERROR: Task 48 (virtual:native:/media/build2/builds/rptest/meta/recipes-devtools/rpm/rpm_5.4.0.bb, do_configure) failed with exit code '1'
ERROR: 'virtual:native:/media/build2/builds/rptest/meta/recipes-devtools/rpm/rpm_5.4.0.bb' failed

:(

Cheers,

Richard
Phil Blundell - June 2, 2011, 9:37 p.m.
On Thu, 2011-06-02 at 22:25 +0100, Richard Purdie wrote:
> | checking pcre.h usability... no
> | checking pcre.h presence... no
> | checking for pcre.h... no
> | checking for pcre_compile in -lpcre... no
> | checking whether to build with PCRE library... no
> | ++ executing failure action
> | configure: error: PCRE is mandatory. If you don't have  libpcre then --with-pcre=internal could be used

Oh dear, that's not too good.  Can you send me a copy of the config.log
corresponding to that failure?  Is pcre actually in your sysroot, or has
it just not been built and staged at all?

p.
Richard Purdie - June 2, 2011, 10:26 p.m.
On Thu, 2011-06-02 at 22:37 +0100, Phil Blundell wrote:
> On Thu, 2011-06-02 at 22:25 +0100, Richard Purdie wrote:
> > | checking pcre.h usability... no
> > | checking pcre.h presence... no
> > | checking for pcre.h... no
> > | checking for pcre_compile in -lpcre... no
> > | checking whether to build with PCRE library... no
> > | ++ executing failure action
> > | configure: error: PCRE is mandatory. If you don't have  libpcre then --with-pcre=internal could be used
> 
> Oh dear, that's not too good.  Can you send me a copy of the config.log
> corresponding to that failure?  Is pcre actually in your sysroot, or has
> it just not been built and staged at all?

Its not been built or staged at all. I think I'm being a little hasty in
blaming your patch directly, its interacting very badly with one that
was working happily in my tree todo with cleaning up native.bbclass.

What you're doing is setting:

DEPENDS = "X"
DEPENDS_virtclass-native = "X"

and assuming that the DEPENDS_virtclass-native will get post processed
by native.bbclass to add the -native bits where needed. With my cleanup
one side effect is that no longer happens.

My understanding is that if you are going to explicitly override DEPENDS
like that you get what you say you want. We therefore likely need to do
something like:

DEPENDS = "X Y Z ${EXTRAPERLDEPS}"
EXTRAPERLDEPS = "perl python"
EXTRAPERLDEPS_virtclass-native = ""

Cheers,

Richard
Phil Blundell - June 3, 2011, 10:32 a.m.
On Thu, 2011-06-02 at 23:26 +0100, Richard Purdie wrote:
> My understanding is that if you are going to explicitly override DEPENDS
> like that you get what you say you want. We therefore likely need to do
> something like:
> 
> DEPENDS = "X Y Z ${EXTRAPERLDEPS}"
> EXTRAPERLDEPS = "perl python"
> EXTRAPERLDEPS_virtclass-native = ""

Yes, that would be neater.  As it happens I did try that first but it
didn't seem to work: for reasons which were (and remain) a bit
mysterious to me, the original EXTRAPERLDEPS were always showing up in
DEPENDS for the virtclass-native build.  I assumed at the time that
there was some ordering problem between the override being processed and
the ORIG_DEPENDS assignment in native.bbclass, but I wasn't entirely
sure what the intended semantics were and so I didn't pursue that line
of enquiry any further.

p.

Patch

diff --git a/meta/recipes-devtools/rpm/rpm_5.4.0.bb b/meta/recipes-devtools/rpm/rpm_5.4.0.bb
index d3f85f2..5c30f1c 100644
--- a/meta/recipes-devtools/rpm/rpm_5.4.0.bb
+++ b/meta/recipes-devtools/rpm/rpm_5.4.0.bb
@@ -42,8 +42,10 @@  HOMEPAGE = "http://rpm5.org/"
 LICENSE = "LGPL 2.1"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
-DEPENDS = "bzip2 zlib python perl db openssl elfutils expat libpcre attr acl popt"
-PR = "r16"
+rpmdeps = "bzip2 zlib db openssl elfutils expat libpcre attr acl popt"
+DEPENDS = "${rpmdeps} python perl"
+DEPENDS_virtclass-native = "${rpmdeps}"
+PR = "r17"
 
 # rpm2cpio is a shell script, which is part of the rpm src.rpm.  It is needed
 # in order to extract the distribution SRPM into a format we can extract...
@@ -92,7 +94,7 @@  WITH_PYTHON = "	--with-python=${PYTHON_BASEVERSION} \
 		--without-pythonembed \
 	      "
 
-WITH_PYTHON_native = " --without-python"
+WITH_PYTHON_virtclass-native = " --without-python"
 
 # Perl modules are not built, but they could be enabled fairly easily
 # the perl module creation and installation would need to be patched.
@@ -100,7 +102,7 @@  WITH_PYTHON_native = " --without-python"
 #WITH_PERL = "	--with-perl --without-perlembed"
 WITH_PERL = "	--without-perl"
 
-WITH_PERL_native = " --without-perl"
+WITH_PERL_virtclass-native = " --without-perl"
 
 WITH_DB = "--with-db --with-dbsql --without-db-tools-integrated --without-sqlite"