{"slug":"perl","tag":"5.44.0-CE-ubuntu24.04-r1","current":true,"account":false,"tarball":"ReadyStack-perl-5.44.0-CE-ubuntu24.04-r1.tar.gz","tarball_sha256":"dd5a1e13fea4ff54f02f15a979c3de3a5f04e311fc34448d833f77efe785e346","generated_at":"2026-10-29T19:19:59Z","dockerfile":"Dockerfile.offline.pinned","build_script":"BUILD_OFFLINE.sh","pins":{"upstream":{"repo":"https://github.com/Perl/perl5","ref":"v5.44.0","commit":"e634cc838fb1785dfafb5d13b52807ea16b5c52c","url":"https://github.com/Perl/perl5/tree/e634cc838fb1785dfafb5d13b52807ea16b5c52c"},"fetches":[{"kind":"git","url":"https://github.com/Perl/perl5","ref":"v5.44.0"},{"kind":"http","url":"https://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7049.tar.gz"},{"kind":"http","url":"https://cpan.metacpan.org/authors/id/C/CH/CHRISN/Net-SSLeay-1.96.tar.gz"},{"kind":"http","url":"https://cpan.metacpan.org/authors/id/S/SU/SULLR/IO-Socket-SSL-2.099.tar.gz"}],"bases":[{"image":"ubuntu:24.04","digest":"sha256:24737cef17f4e22b1977df7d9a05e77c4e28b7da5b8911f8d8ccda136bf3573c"}],"toolchain":{"buildkit":"moby/buildkit:v0.31.2","buildkit_image_digest":"sha256:e0e67ea9c4bb07bdef683e29f70f3b623d1eb9c82274a9ec04e6bb0511449fb0","builder_images":["ubuntu:24.04@sha256:24737cef17f4e22b1977df7d9a05e77c4e28b7da5b8911f8d8ccda136bf3573c"]},"build_method":"source-rebuild-c","source_date_epoch":1783955925,"source_date_epoch_utc":"2026-07-13T15:18:45Z","target":{"image":"readystack/perl:5.44.0-CE-ubuntu24.04-r1","image_manifest_digest":"sha256:0c90f579e86e939c44af9b0192fe17ce442e12510d27d223cebe001345c2631b","config_digest":"sha256:86feee93e9b810140607a07aec3d331adc43b5b8356f728fe57e6fef34c50599"},"checksummed_files":14053},"files":[{"path":"BASES.tsv","size":121,"sha256":"0da49a3ea98fcaa345080b1a4230d2c798b395f71854063c2af657eb53a8a2e0","public":"full","lines":1,"url":"/api/recipe/perl/5.44.0-CE-ubuntu24.04-r1/files/BASES.tsv","text":"ubuntu:24.04@sha256:24737cef17f4e22b1977df7d9a05e77c4e28b7da5b8911f8d8ccda136bf3573c\tbases/ubuntu_24.04_24737cef17f4.oci\n"},{"path":"BUILD_OFFLINE.sh","size":6738,"sha256":"83299978ccd02a0b69e163d760da1211b401bbfa35a3184ca674dc37ff876732","public":"preview","lines":125,"preview":{"text":"#!/usr/bin/env bash\n# =============================================================================\n# ReadyStack — offline reproducible rebuild.\n#\n# Rebuilds this product's image from THIS ARCHIVE ALONE, with no network access\n# of any kind, and prints the resulting linux/amd64 image-manifest digest.\n# Run ./VERIFY_OFFLINE.sh afterwards to assert it equals the published digest.\n#\n# Requirements: linux/amd64 Docker host, docker buildx >= 0.30, jq, tar.\n# No git, no registry access, no additional tooling.\n#\n#   ./BUILD_OFFLINE.sh                the rebuild (OCI image + a docker-loadable copy)\n#   ./BUILD_OFFLINE.sh --provenance   the same rebuild with SLSA v1 build provenance (mode=max) attached to the OCI\n#                                     image, generated by BuildKit, not by any build step. Run on your own hardened,\n#                                     isolated build platform and sign that provenance with a key the build cannot\n#                                     reach, and the result meets SLSA Build Level 3 (see REBUILD.md). The image\n#                                     digest is the same either way.\n# =============================================================================\nset -euo pipefail\nPROVENANCE=0\nfor arg in \"$@\"; do\n  case \"$arg\" in\n    --provenance) PROVENANCE=1 ;;\n    -h|--help) sed -n '2,20p' \"$0\"; exit 0 ;;","lines_shown":24,"lines_total":125}},{"path":"CHECKSUMS.sha256","size":1734651,"sha256":"b6c3fee4682a7db9c22d70890c2781cfe04c53ad7ff9c7061f0f6209ef4a76ce","public":"account","lines":14053},{"path":"DOCKERFILE_NAME.txt","size":26,"sha256":"9aadd1ede68e016a6f163c97befc5ff2fcdc8ebd4f84b108dba63cb195fa8c84","public":"full","lines":1,"url":"/api/recipe/perl/5.44.0-CE-ubuntu24.04-r1/files/DOCKERFILE_NAME.txt","text":"Dockerfile.offline.pinned\n"},{"path":"Dockerfile","size":4723,"sha256":"5b4f7ae024f5a4dcd3379c2200c3272a83387abcf529778e2543749322226498","public":"account","lines":48},{"path":"Dockerfile.offline","size":4723,"sha256":"5b4f7ae024f5a4dcd3379c2200c3272a83387abcf529778e2543749322226498","public":"account","lines":48},{"path":"Dockerfile.offline.pinned","size":4723,"sha256":"5b4f7ae024f5a4dcd3379c2200c3272a83387abcf529778e2543749322226498","public":"preview","lines":48,"preview":{"text":"# GENERATED L-009 hermetic C build (--network=none, SBOM+SLSA-attestation-producing).\n# Pinned bases; vendored source (in-tree deps) + extra build debs + runtime debs from Dockerfile.vendor.\nFROM ubuntu:24.04@sha256:24737cef17f4e22b1977df7d9a05e77c4e28b7da5b8911f8d8ccda136bf3573c AS cbuild\n# dpkg-install the vendored EXTRA build debs (pkg-config/libssl-dev/...) — gcc/make are in the builder.\nRUN --mount=type=bind,source=vendored/build-debs,target=/tmp/bdebs \\\n    set --; for f in /tmp/bdebs/*.deb; do [ -e \"$f\" ] && set -- \"$@\" \"$f\"; done; \\\n    for pass in 1 2 3 4 5; do [ $# -eq 0 ] || dpkg -i --skip-same-version \"$@\" >/dev/null 2>&1 && break; done; \\\n    dpkg --configure -a && bad= && for d in \"$@\"; do p=$(dpkg-deb -f \"$d\" Package) v=$(dpkg-deb -f \"$d\" Version); \\\n      case \"$(dpkg-query -W -f='${Version} ${db:Status-Abbrev}' \"$p\" 2>/dev/null)\" in \"$v ii\"*) ;; *) bad=\"$bad $p=$v\" ;; esac; done && \\\n    { [ -z \"$bad\" ] || { echo \"vendored debs not installed at their vendored version:$bad\" >&2; false; }; }\nWORKDIR /src\nCOPY vendored/perl-src/ .\nARG SOURCE_DATE_EPOCH=1783955925\nENV SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH}\nRUN printf \"cf_time='%s'\\n\" \"$(LC_ALL=C date -u -d @$SOURCE_DATE_EPOCH)\" > config.over && sh Configure -des -Dprefix=/opt/perl -Dvendorprefix=/opt/perl -Duseshrplib -Dman1dir=none -Dman3dir=none -Dcf_by=readystack -Dcf_email=root@localhost -Dperladmin=root@localhost -Dmyhostname=localhost -Dmydomain=.localdomain -Dmyuname=linux -Dosvers=generic\nRUN make -j\"$(nproc)\"\nRUN make test_prep && cd t && LD_LIBRARY_PATH=/src PERL_SKIP_TTY_TEST=1 TEST_JOBS=\"$(nproc)\" ./perl harness base/*.t comp/*.t op/*.t re/*.t uni/*.t\nRUN make install\nRUN export PATH=/opt/perl/bin:$PATH PERL_MM_USE_DEFAULT=1 && mkdir -p /tmp/cpan && cd /tmp/cpan && for t in Net-SSLeay-1.96 IO-Socket-SSL-2.099; do tar xzf /src/readystack-cpan/$t.tar.gz && (cd $t && perl Makefile.PL INSTALLMAN1DIR=none INSTALLMAN3DIR=none && make && make install NO_PERLLOCAL=1) || exit 1; done\nRUN tar xzf /src/readystack-cpan/App-cpanminus-1.7049.tar.gz -C /tmp/cpan && /opt/perl/bin/perl -pe 's{^#!perl$}{#!/opt/perl/bin/perl} if $. == 1; s{http://(www\\.cpan\\.org|backpan\\.perl\\.org|cpan\\.metacpan\\.org|fastapi\\.metacpan\\.org|cpanmetadb\\.plackperl\\.org)}{https://$1}g; s{try_lwp=>1}{try_lwp=>0}g' /tmp/cpan/App-cpanminus-1.7049/bin/cpanm > /opt/perl/bin/cpanm && chmod 0755 /opt/perl/bin/cpanm && ! grep -Eq 'http://(www\\.cpan\\.org|backpan\\.perl\\.org|cpan\\.metacpan\\.org|fastapi\\.metacpan\\.org|cpanmetadb\\.plackperl\\.org)' /opt/perl/bin/cpanm && /opt/perl/bin/cpanm --version\nFROM ubuntu:24.04@sha256:24737cef17f4e22b1977df7d9a05e77c4e28b7da5b8911f8d8ccda136bf3573c\nENV DEBIAN_FRONTEND=noninteractive PATH=/home/perl/perl5/bin:/opt/perl/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PERL5LIB=/home/perl/perl5/lib/perl5 PERL_CPANM_OPT=--local-lib=/home/perl/perl5 LANG=C.UTF-8\nRUN --mount=type=bind,source=vendored/debs,target=/tmp/debs \\\n    set --; for f in /tmp/debs/*.deb; do [ -e \"$f\" ] && set -- \"$@\" \"$f\"; done; \\","lines_shown":24,"lines_total":48}},{"path":"Dockerfile.vendor","size":2356,"sha256":"d6559f0724802b363159eb75aa1a7688d9319cba1d6970cfb47bfac3ade7fc43","public":"account","lines":26},{"path":"MANIFEST.txt","size":779077,"sha256":"a92e038330bc75c384f32cb4516ebae0abfe5d62c1457cdaa1adcf724a56e098","public":"account","lines":14055},{"path":"SOURCE_DATE_EPOCH.txt","size":11,"sha256":"45386a525228fecc0bcc745ed9e4136ac7ffff30585db54f7676de301c22ed61","public":"full","lines":1,"url":"/api/recipe/perl/5.44.0-CE-ubuntu24.04-r1/files/SOURCE_DATE_EPOCH.txt","text":"1783955925\n"},{"path":"TARGET_DIGEST.txt","size":486,"sha256":"db5a0a3ef8e16a3b816f8d5e45c5bba826b00af3fbf4d8e2e0f6a123fb05e9b5","public":"full","lines":9,"url":"/api/recipe/perl/5.44.0-CE-ubuntu24.04-r1/files/TARGET_DIGEST.txt","text":"image_manifest_digest=sha256:0c90f579e86e939c44af9b0192fe17ce442e12510d27d223cebe001345c2631b\nconfig_digest=sha256:86feee93e9b810140607a07aec3d331adc43b5b8356f728fe57e6fef34c50599\ntag=readystack/perl:5.44.0-CE-ubuntu24.04-r1\nprobe_port=80\nprobe_path=/\nprobe_timeout=180\nprobe_exec=perl -e 'exit 0'\nverify_boot=skip\nverify_boot_reason=this image is a language runtime with no long-running service; the digest match above proves the rebuild, and `docker run --rm <image> perl -v` runs it\n"},{"path":"VERIFY_OFFLINE.sh","size":8100,"sha256":"dc0b5cd5c104a5da5c3f4e379e8f3d2eeffa307c8545067925bb4317a722b0b7","public":"account","lines":138},{"path":"docs/PROVENANCE.md","size":1682,"sha256":"222e0d7b4d34c97c4dd150fffdc651932ddbcb1b41d6f9067f022c5822192ea2","public":"account","lines":28},{"path":"docs/REBUILD.md","size":5146,"sha256":"94c79a9db1fec8a41a396269775625b14103156d78fcb3fb0cc10eb0961a94a2","public":"account","lines":59},{"path":"docs/VERIFY.md","size":1940,"sha256":"c6d2591ee1e786150e8cb04f54130b2b4a55dea38a6a400aef1a5fbc2bbdd382","public":"account","lines":34},{"path":"docs/provenance/BASE_IMAGE_DIGESTS.lock","size":59,"sha256":"e3890dfded905a10c5c6765bee986fe0a98dd4f1ef17a8434b1eac5951c79c27","public":"full","lines":2,"url":"/api/recipe/perl/5.44.0-CE-ubuntu24.04-r1/files/docs/provenance/BASE_IMAGE_DIGESTS.lock","text":"# base images for perl (resolve at build_kit)\nubuntu:24.04\n"},{"path":"docs/provenance/BUILD_RECIPE.json","size":4541,"sha256":"b98efaf4bb6a984bb3452eabac266c400886cd7a5d655ba33858d4f04fa88d9d","public":"account","lines":46},{"path":"docs/provenance/CUSTODY_INPUTS.json","size":640,"sha256":"ab3d79843b6238efa1d78f1e10b210a8cb8dea9316dfba01352f3dab7aa52d59","public":"account","lines":17},{"path":"docs/provenance/SOURCE_FILE_MANIFEST.json","size":211844,"sha256":"6bb2d9f972838703847168d7f19e5c36fe623e25cfba97f3ad64a950dab9c6be","public":"account","lines":5007},{"path":"docs/provenance/SOURCE_TREE_HASH.json","size":298,"sha256":"552706f3374958509e06362b96de0c929da75037232de528d30d4c6c0365a7cb","public":"full","lines":9,"url":"/api/recipe/perl/5.44.0-CE-ubuntu24.04-r1/files/docs/provenance/SOURCE_TREE_HASH.json","text":"{\n  \"schema\": \"kitforge.source_tree_hash.v1\",\n  \"slug\": \"perl\",\n  \"repo\": \"https://github.com/Perl/perl5\",\n  \"ref\": \"v5.44.0\",\n  \"commit\": \"e634cc838fb1785dfafb5d13b52807ea16b5c52c\",\n  \"tree_listing_sha256\": \"798436621305c697a963e9634f981a1392eb03308f55a9a7653150306e9182cc\",\n  \"file_count\": 6949\n}"},{"path":"docs/provenance/SYSTEM_PINNING.lock","size":64,"sha256":"9d43656b2e3e48cbea86cce6b01947b82904bd6799faf2c1836bca4615c185e3","public":"account","lines":7},{"path":"docs/provenance/TOOLCHAIN.lock","size":3654,"sha256":"52424f51a964f1a20ddb02a2df8783ee24124b90d14a295e5bf043888f3a4078","public":"account","lines":65},{"path":"rebuild.json","size":1251,"sha256":"fdfb3a188aa3665138403b6eabcb62fbce236ea6bb09862750d14c13753abed3","public":"account","lines":31},{"path":"toolchain/BUILDKIT_TAG.txt","size":22,"sha256":"fcd530eeb02b063d2f047adad6eef896422a8e8d558513e5f09b2a262be32573","public":"full","lines":1,"url":"/api/recipe/perl/5.44.0-CE-ubuntu24.04-r1/files/toolchain/BUILDKIT_TAG.txt","text":"moby/buildkit:v0.31.2\n"}],"skipped":[],"kit_adds":{"bases":{"files":5,"bytes":29771169},"docs":{"files":6996,"bytes":105091389},"toolchain":{"files":1,"bytes":111529472},"vendored":{"files":7029,"bytes":191558260}},"links":{"page":"https://readystack.dev/products/perl/recipe","signup":"https://readystack.dev/login.html?create=1&next=%2Fproducts%2Fperl%2Frecipe","kit":"https://readystack.dev/buy.html?product=perl"}}