Skip to contentSkip to conversation

Fix perl re-execution issues

PATCH Applied Paul Eggleton 3 participants 5 messages Apr 16, 2012 – Apr 18, 2012

lore
Share & tools
lore
#0 lore raw

cover Fix perl re-execution issues

Fix re-execution issues within perl.

Note: I identified that some references to /usr/include are still not being substituted before or after this patch - you can see these by doing "grep -rI '/usr/include' *" in WORKDIR after do_configure(). I do not know enough about how we build perl to know if these are an issue or not, thus I left them alone.

The following change since commit 4e1a8ed1ab7e7bd950e511c79ddfe072cb280a6e:

bitbake.conf: Include abi_version.conf in a early stage (2012-04-16 12:51:50 +0100)

is available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib paule/perl-reexec
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=paule/perl-reexec

Paul Eggleton (1):
perl: fix re-execution of patch/configure

 meta/recipes-devtools/perl/perl_5.14.2.bb |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)
Signature · 1 line
1.7.5.4
#1 lore raw

PATCH 1/1 perl: fix re-execution of patch/configure

The perl recipe's do_configure() does some manual sed replacements over the entire WORKDIR. Fix the following issues with this:

* Skip patches, which fixes re-execution of do_patch after do_configure has run once
* Ensure that the replacement operation does nothing if do_configure is re-executed
* Avoid unnecessarily modifying /usr/include paths within documentation that will end up being packaged
* Fix a quoting issue in the expression used in the grep command that ended up causing files that did not contain .*\.h after /usr/include to be matched and modified.

The files modified during do_configure have been compared before and after this patch to ensure there are no unexpected changes. Some /usr/include paths that are not within documentation are no longer being substituted however these are all within comments or scripts for other Unix operating systems that are not applicable.

[YOCTO #2194]

---
 meta/recipes-devtools/perl/perl_5.14.2.bb |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)
meta/recipes-devtools/perl/perl_5.14.2.bb +3 -3
index 8f3ad25..ecb2262 100644
@@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://Copying;md5=2b4c6ffbcfcbdee469f02565f253d81a \
 # We need gnugrep (for -I)
 DEPENDS = "virtual/db grep-native"
 DEPENDS += "gdbm zlib"
-PR = "r5"
+PR = "r6"
 
 # 5.10.1 has Module::Build built-in
 PROVIDES += "libmodule-build-perl"
@@ -163,9 +163,9 @@ do_configure() {
 			;;
 	esac
         # These are strewn all over the source tree
-        for foo in `grep -I -m1 \/usr\/include\/.*\\.h ${WORKDIR}/* -r | cut -f 1 -d ":"` ; do
+        for foo in `grep -I --exclude="*.patch" --exclude="*.diff" --exclude="*.pod" --exclude="README*" -m1 "/usr/include/.*\.h" ${WORKDIR}/* -r -l` ${S}/utils/h2xs.PL ; do
             echo Fixing: $foo
-            sed -e "s%/usr/include/%${STAGING_INCDIR}/%g" -i $foo
+            sed -e 's|\([ "^'\''I]\+\)/usr/include/|\1${STAGING_INCDIR}/|g' -i $foo
         done
 
         rm -f config
Signature · 1 line
1.7.5.4
#2 lore raw

Re: [PATCH 1/1] perl: fix re-execution of patch/configure

Paul Eggleton <paul.eggleton-VuQAYsv1563Yd54FQh9/[email protected]>

meta/recipes-devtools/perl/perl_5.14.2.bb do_configure() { · line 166

Quoted 2 lines · writes:
meta/recipes-devtools/perl/perl_5.14.2.bb +1 -1
-        for foo in `grep -I -m1 \/usr\/include\/.*\\.h ${WORKDIR}/* -r | cut -f 1 -d ":"` ; do
+        for foo in `grep -I --exclude="*.patch" --exclude="*.diff" --exclude="*.pod" --exclude="README*" -m1 "/usr/include/.*\.h" ${WORKDIR}/* -r -l` ${S}/utils/h2xs.PL ; do

It would be much better to replace the 'grep -r' by 'find -type f ... | xargs grep'. 'grep -r' is very bad because:

* '-r' is not standardized

* it can return symlinks which might point to read-only locations (e.g. patches/config.sh* are such links). 'sed -i' on such files can make the build fail.

Enrico

#3 lore raw
In reply to Paul Eggleton
Quoted 5 lines · On Monday 16 April 2012 17:43:01 Paul Eggleton wrote:

Fix re-execution issues within perl.

Note: I identified that some references to /usr/include are still not being substituted before or after this patch - you can see these by doing "grep -rI '/usr/include' *"

er, that should be:

grep -rI "'/usr/include'" *

Cheers,
Paul

Signature · 2 lines
Paul Eggleton
Intel Open Source Technology Centre
Applied
#4 lore raw
In reply to Paul Eggleton
Quoted 17 lines · Paul Eggleton

Fix re-execution issues within perl.

Note: I identified that some references to /usr/include are still not being substituted before or after this patch - you can see these by doing "grep -rI '/usr/include' *" in WORKDIR after do_configure(). I do not know enough about how we build perl to know if these are an issue or not, thus I left them alone.

The following change since commit 4e1a8ed1ab7e7bd950e511c79ddfe072cb280a6e:

   bitbake.conf: Include abi_version.conf in a early stage (2012-04-16 12:51:50 +0100)

is available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib paule/perl-reexec
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=paule/perl-reexec

Quoted 6 lines

Paul Eggleton (1):
perl: fix re-execution of patch/configure

  meta/recipes-devtools/perl/perl_5.14.2.bb |    6 +++---
  1 files changed, 3 insertions(+), 3 deletions(-)

Merged into OE-Core

Thanks
Sau!