perl: split perl-cross into its own recipe

As perl and perl-cross need to be updated (and patches rebased)
in lockstep, devtool upgrade (and therefore AUH) can't cope with it.
Manually updating is still possible, but painful.

Split determinism.patch into perl and perl-cross parts, move the
rest of the perl-cross patches.

(From OE-Core rev: 60dcb230f65fb1a0f23341c379676f82213d6240)

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Alexander Kanavin
2021-06-04 11:14:53 +02:00
committed by Richard Purdie
parent d39cef3f82
commit 53cf53147f
9 changed files with 118 additions and 36 deletions

View File

@@ -558,6 +558,7 @@ RECIPE_MAINTAINER_pn-pciutils = "Chen Qi <Qi.Chen@windriver.com>"
RECIPE_MAINTAINER_pn-pcmanfm = "Alexander Kanavin <alex.kanavin@gmail.com>"
RECIPE_MAINTAINER_pn-perf = "Bruce Ashfield <bruce.ashfield@gmail.com>"
RECIPE_MAINTAINER_pn-perl = "Alexander Kanavin <alex.kanavin@gmail.com>"
RECIPE_MAINTAINER_pn-perlcross = "Alexander Kanavin <alex.kanavin@gmail.com>"
RECIPE_MAINTAINER_pn-piglit = "Ross Burton <ross.burton@arm.com>"
RECIPE_MAINTAINER_pn-pigz = "Hongxu Jia <hongxu.jia@windriver.com>"
RECIPE_MAINTAINER_pn-pinentry = "Armin Kuster <akuster808@gmail.com>"

View File

@@ -0,0 +1,29 @@
**perl-cross** provides configure script, top-level Makefile
and some auxiliary files for [perl](http://www.perl.org),
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](http://arsv.github.io/perl-cross/) for more info.
In particular, [configure usage](http://arsv.github.io/perl-cross/usage.html)
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.

View File

@@ -0,0 +1,46 @@
Fixes to make the perl build reproducible:
a) Remove the \n from configure_attr.sh since it gets quoted differently depending on
whether the shell is bash or dash which can cause the test result to be incorrect.
Reported upstream: https://github.com/arsv/perl-cross/issues/87
b) Sort the order of the module lists from configure_mods.sh since otherwise
the result isn't the same leading to makefile differences.
Reported upstream: https://github.com/arsv/perl-cross/issues/88
c) Sort the Encode::Byte byte_t.fnm file output (and the makefile depends whilst
there for good measure)
This needs to go to upstream perl (not done)
d) Use bash for perl-cross configure since otherwise trnl gets set to "\n" with bash
and "" with dash
Reported upstream: https://github.com/arsv/perl-cross/issues/87
RP 2020/2/7
Upstream-Status: Pending [75% submitted]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org
Index: perl-5.30.1/cnf/configure_mods.sh
===================================================================
--- perl-5.30.1.orig/cnf/configure_mods.sh
+++ perl-5.30.1/cnf/configure_mods.sh
@@ -82,7 +82,7 @@ extonlyif() {
}
definetrimspaces() {
- v=`echo "$2" | sed -r -e 's/\s+/ /g' -e 's/^\s+//' -e 's/\s+$//'`
+ v=`echo "$2" | sed -r -e 's/\s+/ /g' -e 's/^\s+//' -e 's/\s+$//' | xargs -n1 | LANG=C sort | xargs`
define $1 "$v"
}
Index: perl-5.30.1/cnf/configure
===================================================================
--- perl-5.30.1.orig/cnf/configure
+++ perl-5.30.1/cnf/configure
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
base=${0%/*}; test -z "$base" && base=.

View File

@@ -0,0 +1,38 @@
SUMMARY = "Perl-cross build system"
HOMEPAGE = "https://github.com/arsv/perl-cross"
DESCRIPTION = "perl-cross provides configure script, top-level Makefile and some auxiliary files for perl, \
with the primary emphasis on cross-compiling the source."
SECTION = "devel"
LICENSE = "Artistic-1.0 | GPL-1.0+"
# README.md is taken from https://github.com/arsv/perl-cross/blob/master/README.md
# but is not provided inside the release tarballs
LIC_FILES_CHKSUM = "file://${WORKDIR}/README.md;md5=252fcce2026b765fee1ad74d2fb07a3b"
inherit allarch
SRC_URI = "https://github.com/arsv/perl-cross/releases/download/${PV}/perl-cross-${PV}.tar.gz;name=perl-cross \
file://README.md \
file://0001-configure_tool.sh-do-not-quote-the-argument-to-comma.patch \
file://0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch \
file://0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch \
file://determinism.patch \
"
UPSTREAM_CHECK_URI = "https://github.com/arsv/perl-cross/releases/"
SRC_URI[perl-cross.sha256sum] = "91c66f6b2b99fccfd4fee14660b677380b0c98f9456359e91449798c2ad2ef25"
S = "${WORKDIR}/perl-cross-${PV}"
do_configure () {
}
do_compile () {
}
do_install_class-native() {
mkdir -p ${D}/${datadir}/perl-cross/
cp -rf ${S}/* ${D}/${datadir}/perl-cross/
}
BBCLASSEXTEND = "native"

View File

@@ -21,19 +21,6 @@ RP 2020/2/7
Upstream-Status: Pending [75% submitted]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org
Index: perl-5.30.1/cnf/configure_mods.sh
===================================================================
--- perl-5.30.1.orig/cnf/configure_mods.sh
+++ perl-5.30.1/cnf/configure_mods.sh
@@ -82,7 +82,7 @@ extonlyif() {
}
definetrimspaces() {
- v=`echo "$2" | sed -r -e 's/\s+/ /g' -e 's/^\s+//' -e 's/\s+$//'`
+ v=`echo "$2" | sed -r -e 's/\s+/ /g' -e 's/^\s+//' -e 's/\s+$//' | xargs -n1 | LANG=C sort | xargs`
define $1 "$v"
}
Index: perl-5.30.1/cpan/Encode/Byte/Makefile.PL
===================================================================
--- perl-5.30.1.orig/cpan/Encode/Byte/Makefile.PL
@@ -56,13 +43,3 @@ Index: perl-5.30.1/cpan/Encode/Byte/Makefile.PL
{
print FILELIST $self->catfile($dir,$file) . "\n";
}
Index: perl-5.30.1/cnf/configure
===================================================================
--- perl-5.30.1.orig/cnf/configure
+++ perl-5.30.1/cnf/configure
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
base=${0%/*}; test -z "$base" && base=.

View File

@@ -9,18 +9,14 @@ LIC_FILES_CHKSUM = "file://Copying;md5=5b122a36d0f6dc55279a0ebc69f3c60b \
SRC_URI = "https://www.cpan.org/src/5.0/perl-${PV}.tar.gz;name=perl \
https://github.com/arsv/perl-cross/releases/download/1.3.5/perl-cross-1.3.5.tar.gz;name=perl-cross \
file://perl-rdepends.txt \
file://0001-configure_tool.sh-do-not-quote-the-argument-to-comma.patch \
file://0001-ExtUtils-MakeMaker-add-LDFLAGS-when-linking-binary-m.patch \
file://0001-Somehow-this-module-breaks-through-the-perl-wrapper-.patch \
file://errno_ver.diff \
file://native-perlinc.patch \
file://0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch \
file://perl-dynloader.patch \
file://0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch \
file://0002-Constant-Fix-up-shebang.patch \
file://determinism.patch \
file://determinism.patch \
"
SRC_URI_append_class-native = " \
file://perl-configpm-switch.patch \
@@ -30,13 +26,12 @@ SRC_URI_append_class-target = " \
"
SRC_URI[perl.sha256sum] = "03b693901cd8ae807231b1787798cf1f2e0b8a56218d07b7da44f784a7caeb2c"
SRC_URI[perl-cross.sha256sum] = "91c66f6b2b99fccfd4fee14660b677380b0c98f9456359e91449798c2ad2ef25"
S = "${WORKDIR}/perl-${PV}"
inherit upstream-version-is-even update-alternatives
DEPENDS += "zlib virtual/crypt"
DEPENDS += "perlcross-native zlib virtual/crypt"
PERL_LIB_VER = "${@'.'.join(d.getVar('PV').split('.')[0:2])}.0"
@@ -47,12 +42,8 @@ PACKAGECONFIG[gdbm] = ",-Ui_gdbm,gdbm"
# Don't generate comments in enc2xs output files. They are not reproducible
export ENC2XS_NO_COMMENTS = "1"
do_unpack_append() {
bb.build.exec_func('do_copy_perlcross', d)
}
do_copy_perlcross() {
cp -rfp ${WORKDIR}/perl-cross*/* ${S}
do_configure_prepend() {
cp -rfp ${STAGING_DATADIR_NATIVE}/perl-cross/* ${S}
}
do_configure_class-target() {