mirror of
https://git.yoctoproject.org/poky
synced 2026-04-29 18:32:20 +02:00
After the commit(60dcb230f6 perl: split perl-cross into its own recipe)
introduced, the source files mainly come from two parts, one is from
SRI_URI during do_fetch and the other with below means during do_configure.
do_configure_prepend() {
cp -rfp ${STAGING_DATADIR_NATIVE}/perl-cross/* ${S}
}
And the source files will be changed during do_compile with below
logic in Makefile.
$(CROSSPATCHED): %.applied: %.patch
patch -p1 -i $< && touch $@
And there comes build failure with below steps:
$ bitbake perl-native
Make a change as below
$ git diff
diff --git a/meta/recipes-devtools/perl-cross/perlcross_1.3.6.bb b/meta/recipes-devtools/perl-cross/perlcross_1.3.6.bb
index b77bbd1fd4..4c5e35ab80 100644
--- a/meta/recipes-devtools/perl-cross/perlcross_1.3.6.bb
+++ b/meta/recipes-devtools/perl-cross/perlcross_1.3.6.bb
@@ -33,6 +33,7 @@ do_compile () {
do_install_class-native() {
mkdir -p ${D}/${datadir}/perl-cross/
cp -rf ${S}/* ${D}/${datadir}/perl-cross/
+ echo "test" > ${D}/${datadir}/perl-cross/testfile
}
$ bitbake perl-native
| NOTE: make -j 48
| make crosspatch
| make[1]: Entering directory '/buildarea1/myu2/wr_build/wr1021_20210616_perl/build/tmp-glibc/work/x86_64-linux/perl-native/5.34.0-r0/perl-5.34.0'
| patch -p1 -i cnf/diffs/perl5-5.34.0/time-hires.patch && touch cnf/diffs/perl5-5.34.0/time-hires.applied
| patch -p1 -i cnf/diffs/perl5-5.34.0/xconfig.patch && touch cnf/diffs/perl5-5.34.0/xconfig.applied
| patch -p1 -i cnf/diffs/perl5-5.34.0/posix-makefile.patch && touch cnf/diffs/perl5-5.34.0/posix-makefile.applied
| File dist/Time-HiRes/Makefile.PL is read-only; trying to patch anyway
| patching file dist/Time-HiRes/Makefile.PL
| Reversed (or previously applied) patch detected! Assume -R? [n]
| Apply anyway? [n]
| Skipping patch.
| 4 out of 4 hunks ignored -- saving rejects to file dist/Time-HiRes/Makefile.PL.rej
| patch -p1 -i cnf/diffs/perl5-5.34.0/test-commonsense.patch && touch cnf/diffs/perl5-5.34.0/test-commonsense.applied
| File perl.h is read-only; trying to patch anyway
| patching file perl.h
| Reversed (or previously applied) patch detected! Assume -R? [n]
| Apply anyway? [n]
| Skipping patch.
| 1 out of 1 hunk ignored -- saving rejects to file perl.h.rej
| make[1]: *** [Makefile:64: cnf/diffs/perl5-5.34.0/time-hires.applied] Error 1
[snip]
It's because the source files patched twice, so check the file if patched
or not to avoid the source files patched more than one time to fix the
build failure as above.
(From OE-Core rev: 2a71a1f308b7f97d83bd23b0f8e733543841efad)
Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
perl-cross provides configure script, top-level Makefile
and some auxiliary files for perl,
with the primary emphasis on cross-compiling the source.
# Get perl and perl-cross sources
curl -L -O http://www.cpan.org/src/5.0/perl-5.24.1.tar.gz
curl -L -O https://github.com/arsv/perl-cross/releases/download/1.1.3/perl-cross-1.1.3.tar.gz
# Unpack perl-cross over perl, overwriting Makefile
tar -zxf perl-5.24.1.tar.gz
cd perl-5.24.1
tar --strip-components=1 -zxf ../perl-cross-1.1.3.tar.gz
# Proceed as usual with most autoconfed packages
./configure --target=arm-linux-gnueabi --prefix=/usr -Duseshrplib
make -j4
make DESTDIR=/path/to/staging/dir install
Unlike mainline Perl, this configure never runs any target executables,
relying solely on compile/link tests and pre-defined hints.
On the flip side, it is only meant to run on resonably sane modern unix systems.
Check project pages for more info.
In particular, configure usage
lists available configure options.
Perl-cross is a free software licensed under the same terms
as the original perl source.
See LICENSE, Copying and Artistic files.