From b7d9d9b7d66256be1ac138f1a5fdc5453b60dc2a Mon Sep 17 00:00:00 2001 From: sisungo Date: Fri, 3 Jul 2026 22:30:54 +0800 Subject: [PATCH] feat: add package perl Signed-off-by: sisungo --- packages/perl/pkgbuild.py | 72 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 packages/perl/pkgbuild.py diff --git a/packages/perl/pkgbuild.py b/packages/perl/pkgbuild.py new file mode 100644 index 0000000..06e5719 --- /dev/null +++ b/packages/perl/pkgbuild.py @@ -0,0 +1,72 @@ +import os +import subprocess + +from lib import arch, cpp +from lib.make import * + +upstream_version = "5.42.2" + +version(upstream_version) +source_url("https://www.cpan.org/src/5.0/perl-5.42.2.tar.gz") + +block_hook("autolink") + + +def build(): + subprocess.run( + [ + "./Configure", + "-de", + f"-Dcc={os.environ.get('CC', 'cc')}", + f"-Doptimize={os.environ.get('CFLAGS', '')}", + "-Dusethreads", + "-Duseshrplib", + "-Dprefix=/", + "-Dvendorprefix=/", + f"-Dprivlib={get_prefix('libperl')}/share/core_perl", + f"-Darchlib={get_prefix('libperl')}/lib/core_perl", + f"-Dsitelib=/lib/{arch.get_target()}/perl5/site_perl", + f"-Dsitearch=/lib/{arch.get_target()}/perl5/site_arch", + f"-Dvendorlib=/lib/{arch.get_target()}/perl5/vendor_perl", + f"-Dvendorarch=/lib/{arch.get_target()}/perl5/vendor_arch", + f"-Dscriptdir={get_prefix('perl')}/bin/core_perl", + "-Dsitescript=/bin/site_perl", + "-Dvendorscript=/bin/vendor_perl", + "-Dinc_version_list=none", + "-Dman1dir=/share/man/man1", + "-Dman3dir=/share/man/man3", + "-Dman1ext=1perl", + "-Dman3ext=3perl", + f"-Dlddlflags=-shared {os.environ.get('LDFLAGS', '')}", + f"-Dldflags={os.environ.get('LDFLAGS', '')}", + ], + check=True, + ) + cpp.make() + cpp.make_install() + + +on_build(build) + + +def pack_libperl(composer): + composer.makedir("lib") + composer.makedir("share") + composer.add_dir("lib/core_perl", "lib/core_perl") + composer.add_dir("share/core_perl", "share/core_perl") + + +package("libperl") +dep("semi-libc @same-arch") +on_pack(pack_libperl) + + +def pack_perl(composer): + composer.add_dir("bin", "bin") + + +package("perl") +dep("libperl (same)") +cpp.use_auto_pack(["bin"]) +link("bin/perl", "/bin/perl") +link(f"bin/perl{upstream_version}", f"/bin/perl{upstream_version}")