From d581746a643480ec9c20df8a1e3fd92941f19987 Mon Sep 17 00:00:00 2001 From: zhangyao Date: Mon, 12 May 2025 10:00:11 +0800 Subject: [PATCH] support srcpath option for build --- relocatable-perl.spec | 22 +++-- support-srcpath-option-for-build.patch | 106 +++++++++++++++++++++++++ 2 files changed, 122 insertions(+), 6 deletions(-) create mode 100644 support-srcpath-option-for-build.patch diff --git a/relocatable-perl.spec b/relocatable-perl.spec index 3259f7d..528497a 100644 --- a/relocatable-perl.spec +++ b/relocatable-perl.spec @@ -1,16 +1,17 @@ -%define debug_package %{nil} %define perl_version 5.34.0 Name: relocatable-perl Version: %{perl_version}.0 -Release: 1 +Release: 2 Summary: self-contained, portable perl binaries License: Artistic-1.0 and GPL-1.0-or-later URL: https://github.com/skaji/%{name}/ Source0: https://github.com/skaji/%{name}/archive/%{version}/%{name}-%{version}.tar.gz +Patch0001: support-srcpath-option-for-build.patch + BuildRequires: make perl-Devel-PatchPerl perl-File-pushd perl-Module-Pluggable perl-IPC-Run3 -BuildRequires: perl-App-ChangeShebang +BuildRequires: perl-App-ChangeShebang bzip2-devel zlib-devel %description self-contained, portable perl binaries @@ -22,27 +23,36 @@ mkdir -p %{_builddir}/perl.src/ pushd %{_builddir}/perl.src yumdownloader --source perl rpm2cpio perl-%{perl_version}*.src.rpm | cpio -div +rpmbuild -bp -D "_sourcedir %{_builddir}/perl.src" perl.spec +cp -rf %{_builddir}/perl-%{perl_version}/* %{_builddir}/%{name}-%{version} +cp -R %{_builddir}/perl-%{perl_version}/. %{_builddir}/%{name}-%{version} popd %build +BUILD_BZIP2=0 +BZIP2_LIB=%{_libdir} +export BUILD_BZIP2 BZIP2_LIB # close darwin and close remote download sed -i "s/^use Devel::PatchPerl::Plugin::FixCompoundTokenSplitByMacro;/# &/" build/relocatable-perl-build sed -i "s/^use CPAN::Perl::Releases::MetaCPAN 'perl_tarballs';/# &/" build/relocatable-perl-build sed -i "s/^use HTTP::Tinyish;/# &/" build/relocatable-perl-build -%{__perl} build/relocatable-perl-build --prefix %{_builddir}/%{name}-%{version} --tarball %{_builddir}/perl.src/perl-%{perl_version}.tar.xz +%{__perl} build/relocatable-perl-build --prefix %{_builddir}/%{name}-%{version} --srcpath %{_builddir}/%{name}-%{version} --perl_version perl-%{perl_version} %install mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_libdir} change-shebang -f bin/* -%{_fixperms} lib/* +%{_fixperms} lib64/* cp -apr bin/* %{buildroot}%{_bindir} -cp -apr lib/* %{buildroot}%{_libdir} +cp -apr lib64/* %{buildroot}%{_libdir} %files %{_bindir}/* %{_libdir}/* %changelog +* Mon May 12 2025 zhangyao - 5.34.0.0-2 +- support srcpath option for build + * Mon Apr 07 2025 xinghe - 5.34.0.0-1 - Init package diff --git a/support-srcpath-option-for-build.patch b/support-srcpath-option-for-build.patch new file mode 100644 index 0000000..65a99e2 --- /dev/null +++ b/support-srcpath-option-for-build.patch @@ -0,0 +1,106 @@ +From d847354f4a0a0e2450e559e162257b096bc53973 Mon Sep 17 00:00:00 2001 +From: zhangyao +Date: Fri, 25 Apr 2025 16:05:43 +0800 +Subject: [PATCH] support srcpath option for build + +--- + build/relocatable-perl-build | 27 +++++++++++++++++++++------ + 1 file changed, 21 insertions(+), 6 deletions(-) + +diff --git a/build/relocatable-perl-build b/build/relocatable-perl-build +index 0b2f6b2..22bfbba 100644 +--- a/build/relocatable-perl-build ++++ b/build/relocatable-perl-build +@@ -51,6 +51,7 @@ relocatable-perl-build - building perl with relocatable settings + --perl_version install perl version + --tarball use local tar.gz + --jobs parallel build, default: 1 ++ --srcpath use local perl source path + --help, -h show this help message + + Examples: +@@ -68,6 +69,7 @@ GetOptions + "prefix=s" => \(my $prefix), + "perl_version=s" => \(my $perl_version), + "tarball=s" => \(my $tarball), ++ "srcpath=s" => \(my $srcpath), + "jobs=i" => \(my $jobs), + "help|h" => sub { pod2usage(0) }, + or pod2usage(1); +@@ -75,6 +77,8 @@ or pod2usage(1); + $prefix or do { warn "prefix option is required.\n"; pod2usage(1) }; + if ($tarball && $tarball =~ /5\.(\d+)\.(\d+)/) { + $perl_version = "5.$1.$2"; ++} elsif ($perl_version && $perl_version =~ /5\.(\d+)\.(\d+)/) { ++ $perl_version = "5.$1.$2"; + } + $perl_version or do { warn "perl_verion option is required.\n"; pod2usage(1) }; + +@@ -84,7 +88,7 @@ if (!-d $prefix) { + die "don't have write permission to $prefix\n"; + } + +-perl_build($prefix, $perl_version, $tarball); ++perl_build($prefix, $perl_version, $tarball, $srcpath); + force_symlink($prefix, $perl_version); + + my $config_heavy = `$prefix/bin/perldoc -lm Config_heavy.pl`; +@@ -103,7 +107,7 @@ system "$prefix/bin/perl -V"; + exit; + + sub perl_build { +- my ($prefix, $perl_version, $tarball) = @_; ++ my ($prefix, $perl_version, $tarball, $srcpath) = @_; + + my $current_dir = getcwd; + +@@ -113,7 +117,10 @@ sub perl_build { + mkdir $tempdir or die "mkdir $tempdir: $!\n"; + + my %tar_option = ("tar.gz" => "xzf", "tar.bz2" => "xjf", "tar.xz" => "xJf"); +- if ($tarball) { ++ if ($srcpath) { ++ say "---> use $srcpath"; ++ $tempdir = $srcpath; ++ } elsif ($tarball) { + say "---> use $tarball"; + my ($suffix) = $tarball =~ /\.(tar\.(?:gz|bz2|xz))$/; + run ["tar", $tar_option{$suffix}, $tarball, "-C", $tempdir], $log; +@@ -136,6 +143,8 @@ sub perl_build { + "-Dman1dir=none", + "-Dman3dir=none", + "-DDEBUGGING=-g", ++ "-Dusethreads", ++ "-Duseithreads", + ); + if ($Config{archname} =~ /linux/i) { + # ubuntu 18.04 does not have xlocale.h +@@ -150,16 +159,22 @@ sub perl_build { + } + push @Configure, "-des"; + +- chdir "$tempdir/perl-$perl_version" or die; ++ if ($srcpath) { ++ chdir "$tempdir" or die; ++ } else { ++ chdir "$tempdir/perl-$perl_version" or die; ++ } + my $devel = "Devel::PatchPerl"; + say "---> patching by $devel " . $devel->VERSION; + $devel->patch_source($perl_version, "."); + say "---> building perl $perl_version, see $log for progress"; + run \@Configure, $log; + my @option = $jobs ? ("--jobs=$jobs") : (); +- run ["make", @option, "install"], $log; ++ run ["make", @option, "install"]; + chdir $current_dir; +- rmtree $tempdir; ++ if (!$srcpath) { ++ rmtree $tempdir; ++ } + } + + sub patch_config_heavy { +-- +2.33.0 +