Skip to content

Commit

Permalink
add aarch64-linux
Browse files Browse the repository at this point in the history
  • Loading branch information
skaji committed Apr 22, 2022
1 parent 1b63368 commit 3acf897
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 27 deletions.
18 changes: 15 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,26 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: docker build -t skaji/relocatable-perl -f build/Dockerfile .
- run: bash build/github-actions.sh linux_create_artifacts
- run: docker build --build-arg IMAGE=centos:centos6 -t skaji/relocatable-perl -f build/Dockerfile .
- run: bash build/github-actions.sh x86_64_linux_create_artifacts
- uses: actions/upload-artifact@v2
with:
name: x86_64-linux
path: x86_64-linux
aarch64-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker/setup-qemu-action@v1
- uses: docker/setup-buildx-action@v1
- run: docker buildx build --platform linux/arm64 --build-arg IMAGE=centos:centos7 -t skaji/relocatable-perl -f build/Dockerfile --load .
- run: bash build/github-actions.sh aarch64_linux_create_artifacts
- uses: actions/upload-artifact@v2
with:
name: aarch64-linux
path: aarch64-linux
darwin-2level:
runs-on: macOS-latest
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- run: sw_vers
Expand Down
39 changes: 36 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,26 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: docker build -t skaji/relocatable-perl -f build/Dockerfile .
- run: bash build/github-actions.sh linux_create_artifacts
- run: docker build --build-arg IMAGE=centos:centos6 -t skaji/relocatable-perl -f build/Dockerfile .
- run: bash build/github-actions.sh x86_64_linux_create_artifacts
- uses: actions/upload-artifact@v2
with:
name: x86_64-linux
path: x86_64-linux
aarch64-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker/setup-qemu-action@v1
- uses: docker/setup-buildx-action@v1
- run: docker buildx build --platform linux/arm64 --build-arg IMAGE=centos:centos7 -t skaji/relocatable-perl -f build/Dockerfile --load .
- run: bash build/github-actions.sh aarch64_linux_create_artifacts
- uses: actions/upload-artifact@v2
with:
name: aarch64-linux
path: aarch64-linux
darwin-2level:
runs-on: macOS-latest
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- run: sw_vers
Expand All @@ -32,12 +44,17 @@ jobs:
runs-on: ubuntu-latest
needs:
- x86_64-linux
- aarch64-linux
- darwin-2level
steps:
- uses: actions/download-artifact@v2
with:
name: x86_64-linux
path: x86_64-linux
- uses: actions/download-artifact@v2
with:
name: aarch64-linux
path: aarch64-linux
- uses: actions/download-artifact@v2
with:
name: darwin-2level
Expand Down Expand Up @@ -65,6 +82,22 @@ jobs:
asset_path: x86_64-linux/perl-x86_64-linux.tar.xz
asset_name: perl-x86_64-linux.tar.xz
asset_content_type: application/x-xz
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: aarch64-linux/perl-aarch64-linux.tar.gz
asset_name: perl-aarch64-linux.tar.gz
asset_content_type: application/gzip
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: aarch64-linux/perl-aarch64-linux.tar.xz
asset_name: perl-aarch64-linux.tar.xz
asset_content_type: application/x-xz
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
21 changes: 12 additions & 9 deletions build/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
FROM centos:centos6 as builder
ARG IMAGE
FROM $IMAGE
ARG IMAGE

RUN sed -i 's/^#baseurl=/baseurl=/g; s/^mirrorlist=/#mirrorlist=/g; s/http:\/\/mirror.centos.org/https:\/\/vault.centos.org/g' /etc/yum.repos.d/CentOS-Base.repo
RUN if [[ $IMAGE = centos:centos6 ]]; then sed -i 's/^#baseurl=/baseurl=/g; s/^mirrorlist=/#mirrorlist=/g; s/http:\/\/mirror.centos.org/https:\/\/vault.centos.org/g' /etc/yum.repos.d/CentOS-Base.repo; fi
RUN yum install -y \
gcc \
make \
Expand All @@ -10,24 +12,25 @@ RUN yum install -y \
xz
RUN mkdir -p \
/lib \
/lib/x86_64-linux-gnu \
/lib/$(uname -m)-linux-gnu \
/lib64 \
/usr/lib \
/usr/lib/x86_64-linux-gnu \
/usr/lib/$(uname -m)-linux-gnu \
/usr/lib64 \
/usr/local/lib \
/usr/local/lib64
RUN curl -fsSL https://git.io/perl-install | bash -s /perl
RUN mkdir /perl
RUN curl -fsSL https://github.com/skaji/relocatable-perl/releases/download/5.34.1.0/perl-$(uname -m)-linux.tar.xz | tar xJf - --strip-components 1 -C /perl
RUN curl -fsSL --compressed -o /cpm https://git.io/cpm
COPY build/relocatable-perl-build build/cpm.yml BUILD_VERSION /
RUN /perl/bin/perl /cpm install -g
RUN /perl/bin/perl /relocatable-perl-build --perl_version $(cat /BUILD_VERSION) --prefix /opt/perl
RUN /opt/perl/bin/perl /cpm install -g App::cpanminus App::ChangeShebang
RUN /opt/perl/bin/change-shebang -f /opt/perl/bin/*
RUN cp -r /opt/perl /tmp/perl-x86_64-linux
RUN cp -r /opt/perl /tmp/perl-$(uname -m)-linux
RUN set -eux; \
cd /tmp; \
tar cf perl-x86_64-linux.tar perl-x86_64-linux; \
gzip -9 --stdout perl-x86_64-linux.tar > /perl-x86_64-linux.tar.gz; \
xz -9 --stdout perl-x86_64-linux.tar > /perl-x86_64-linux.tar.xz; \
tar cf perl-$(uname -m)-linux.tar perl-$(uname -m)-linux; \
gzip -9 --stdout perl-$(uname -m)-linux.tar > /perl-$(uname -m)-linux.tar.gz; \
xz -9 --stdout perl-$(uname -m)-linux.tar > /perl-$(uname -m)-linux.tar.xz; \
true
17 changes: 14 additions & 3 deletions build/github-actions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,22 @@ mac_create_artifacts() {
xz -9 --stdout perl-darwin-2level.tar > darwin-2level/perl-darwin-2level.tar.xz
}

linux_create_artifacts() {
x86_64_linux_create_artifacts() {
mkdir x86_64-linux
ID=$(docker create skaji/relocatable-perl)
docker cp $ID:/perl-x86_64-linux.tar.gz x86_64-linux/
docker cp $ID:/perl-x86_64-linux.tar.xz x86_64-linux/
docker rm $ID
}

aarch64_linux_create_artifacts() {
mkdir aarch64-linux
ID=$(docker create --platform linux/arm64 skaji/relocatable-perl)
docker cp $ID:/perl-aarch64-linux.tar.gz aarch64-linux/
docker cp $ID:/perl-aarch64-linux.tar.xz aarch64-linux/
docker rm $ID
}

case "$1" in
mac_prepare_tools)
mac_prepare_tools
Expand All @@ -46,8 +54,11 @@ mac_build_perl)
mac_create_artifacts)
mac_create_artifacts
;;
linux_create_artifacts)
linux_create_artifacts
x86_64_linux_create_artifacts)
x86_64_linux_create_artifacts
;;
aarch64_linux_create_artifacts)
aarch64_linux_create_artifacts
;;
*)
echo "unknown command: $1" >&2
Expand Down
20 changes: 11 additions & 9 deletions build/relocatable-perl-build
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ use CPAN::Perl::Releases::MetaCPAN 'perl_tarballs';
use HTTP::Tinyish;
use IPC::Run3 'run3';
use version;
use POSIX 'uname';

sub run {
my ($cmd, $log) = @_;
Expand Down Expand Up @@ -136,15 +137,16 @@ sub perl_build {
# remove -lnsl
push @Configure, "-Dlibs=-lpthread -ldl -lm -lcrypt -lutil -lc";

my @libpth = qw(
/lib
/lib/x86_64-linux-gnu
/lib64
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib64
/usr/local/lib
/usr/local/lib64
my $arch = (uname)[4];
my @libpth = (
"/lib",
"/lib/$arch-linux-gnu",
"/lib64",
"/usr/lib",
"/usr/lib/$arch-linux-gnu",
"/usr/lib64",
"/usr/local/lib",
"/usr/local/lib64",
);
push @Configure, "-Dlibpth=@libpth";
}
Expand Down

0 comments on commit 3acf897

Please sign in to comment.