diff --git a/.gitignore b/.gitignore index cef43ea..6f61f59 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ perl-*.bz2 downloads +build.* diff --git a/build.sh b/build.sh index 493514a..dd55c19 100755 --- a/build.sh +++ b/build.sh @@ -4,10 +4,17 @@ set -euo pipefail for build in 5*; do TAG=simcop2387/perl:$(echo $build | perl -pE 's/,/-/g') - echo building $TAG... + LOCAL_TAG=registry.docker.home.simcop2387.info:443/simcop2387/perl:$(echo $build | perl -pE 's/,/-/g') + PLATFORMS=linux/amd64,linux/arm64 + if [[ $build == *"quadmath"* ]]; then + # exclude arm64 from quadmath builds since it doesn't apply + PLATFORMS=linux/amd64 + fi + echo building $TAG... $PLATFORMS ( cd $build; - docker build -t $TAG . - docker push $TAG - ) | ts "$TAG [%H:%M:%S]" > build.$TAG.log || echo " Failed to build $TAG" + docker buildx build --cache-from type=registry,ref=registry.docker.home.simcop2387.info:443/simcop2387/perl --cache-to type=registry,ref=registry.docker.home.simcop2387.info:443/simcop2387/perl,mode=max --platform=$PLATFORMS --progress=simple -t $TAG -t $LOCAL_TAG --push . 2>&1 && \ + docker push $TAG && \ + docker push $LOCAL_TAG + ) | ts "$TAG [%H:%M:%S]" | tee build.$TAG.log || echo " Failed to build $TAG" done diff --git a/config.yml b/config.yml index c0260ff..43e4fc1 100644 --- a/config.yml +++ b/config.yml @@ -12,7 +12,7 @@ options: releases: - version: 5.28.3 sha256: 77dc1ddf541643af14d585867d3d0741cce45d0dbe8f1467024e63165d9e2fc5 - run_tests: parallel + run_tests: no type: xz debian_release: - buster @@ -20,7 +20,7 @@ releases: - version: 5.26.3 sha256: e0a17cdaed5304aea1783e507e56bb0001dd72c46f211553ead3a580c3f38135 - run_tests: parallel + run_tests: no type: xz debian_release: - buster @@ -28,7 +28,7 @@ releases: - version: 5.24.4 sha256: 7f080287ff64750270689843ae945f02159a33cb8f2fc910248c15befba5db84 - run_tests: parallel + run_tests: no type: xz debian_release: - buster @@ -36,7 +36,7 @@ releases: - version: 5.22.4 sha256: 713243dce27d7aa0bdbf52b2070de5ce449f9ffbcc14a93efbc6f2beff0f5ce8 - run_tests: parallel + run_tests: no type: xz debian_release: - buster @@ -44,7 +44,7 @@ releases: - version: 5.20.3 sha256: 1b40068166c242e34a536836286e70b78410602a80615143301e52aa2901493b - run_tests: parallel + run_tests: no type: bz2 debian_release: - buster @@ -52,7 +52,7 @@ releases: - version: 5.30.3 sha256: 6967595f2e3f3a94544c35152f9a25e0cb8ea24ae45f4bf1882f2e33f4a400f4 - run_tests: parallel + run_tests: no type: xz debian_release: - buster @@ -60,7 +60,7 @@ releases: - version: 5.32.1 sha256: 57cc47c735c8300a8ce2fa0643507b44c4ae59012bfdad0121313db639e02309 - run_tests: parallel + run_tests: no type: xz debian_release: - buster @@ -68,7 +68,23 @@ releases: - version: 5.34.0 sha256: 82c2e5e5c71b0e10487a80d79140469ab1f8056349ca8545140a224dbbed7ded - run_tests: parallel + run_tests: no + type: xz + debian_release: + - buster + - bullseye + + - version: 5.34.1 + sha256: 6d52cf833ff1af27bb5e986870a2c30cec73c044b41e3458cd991f94374039f7 + run_tests: no + type: xz + debian_release: + - buster + - bullseye + + - version: 5.36.0 + sha256: 0f386dccbee8e26286404b2cca144e1005be65477979beb9b1ba272d4819bcf0 + run_tests: no type: xz debian_release: - buster diff --git a/cpanfile b/cpanfile index 7de3599..1d74639 100644 --- a/cpanfile +++ b/cpanfile @@ -4,3 +4,6 @@ requires 'YAML::XS'; on 'develop' => sub { requires 'Perl::Tidy'; }; + +requires 'LWP::Simple'; +requires 'LWP::Protocol::https'; diff --git a/downloads/.keep b/downloads/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/generate.pl b/generate.pl index 40a89f4..60d61c1 100755 --- a/generate.pl +++ b/generate.pl @@ -125,7 +125,7 @@ for my $release (@{$config->{releases}}) { } else { print "Downloading $url\n"; - getstore($url, "downloads/$file"); + getstore($url, "downloads/$file") or die "failed"; } { my $dir = "downloads/perl-$release->{version}"; @@ -290,18 +290,18 @@ RUN perl -i.bak -pE '$x=$_; $x=~s|^deb |deb-src |g;$_.=$x' /etc/apt/sources.list && apt -yq build-dep perl \ && {{docker_slim_run_install}} \ && curl -SL {{url}} -o perl-{{version}}.tar.{{type}} \ - && echo '{{sha256}} *perl-{{version}}.tar.{{type}}' | sha256sum -c - -RUN tar --strip-components=1 -xaf perl-{{version}}.tar.{{type}} -C /usr/src/perl \ + && echo '{{sha256}} *perl-{{version}}.tar.{{type}}' | sha256sum -c - \ + && tar --strip-components=1 -xaf perl-{{version}}.tar.{{type}} -C /usr/src/perl \ && rm perl-{{version}}.tar.{{type}} \ && cat *.patch | patch -p1 \ - && echo 'print "1..0 # Skipped: Tests are invalid"' > /usr/src/perl/ext/GDBM_File/t/fatal.t -RUN gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ + && echo 'print "1..0 # Skipped: Tests are invalid"' > /usr/src/perl/ext/GDBM_File/t/fatal.t \ + && gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ && archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \ && archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \ && ./Configure -Darchname="$gnuArch" "$archFlag" {{args}} {{extra_flags}} -des \ && make -j$(nproc) \ - && {{test}} -RUN make install \ + && {{test}} \ + && make install \ && cd /usr/src \ && curl -LO {{cpanm_dist_url}} \ && echo '{{cpanm_dist_sha256}} *{{cpanm_dist_name}}.tar.gz' | sha256sum -c - \