diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dd4ffbe..63ee56f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,29 +9,29 @@ on: pull_request: jobs: - x86_64-linux: + linux-amd64: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - 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 + - run: bash build/github-actions.sh linux_amd64_create_artifacts - uses: actions/upload-artifact@v2 with: - name: x86_64-linux - path: x86_64-linux - aarch64-linux: + name: linux-amd64 + path: linux-amd64 + linux-arm64: 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 + - run: bash build/github-actions.sh linux_arm64_create_artifacts - uses: actions/upload-artifact@v2 with: - name: aarch64-linux - path: aarch64-linux - darwin-2level: + name: linux-arm64 + path: linux-arm64 + darwin-amd64: runs-on: macos-latest steps: - uses: actions/checkout@v2 @@ -41,5 +41,5 @@ jobs: - run: bash build/github-actions.sh mac_create_artifacts - uses: actions/upload-artifact@v2 with: - name: darwin-2level - path: darwin-2level + name: darwin-amd64 + path: darwin-amd64 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c839454..563dfd4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,29 +6,29 @@ on: - '*' jobs: - x86_64-linux: + linux-amd64: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - 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 + - run: bash build/github-actions.sh linux_amd64_create_artifacts - uses: actions/upload-artifact@v2 with: - name: x86_64-linux - path: x86_64-linux - aarch64-linux: + name: linux-amd64 + path: linux-amd64 + linux-arm64: 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 + - run: bash build/github-actions.sh linux_arm64_create_artifacts - uses: actions/upload-artifact@v2 with: - name: aarch64-linux - path: aarch64-linux - darwin-2level: + name: linux-arm64 + path: linux-arm64 + darwin-amd64: runs-on: macos-latest steps: - uses: actions/checkout@v2 @@ -38,27 +38,27 @@ jobs: - run: bash build/github-actions.sh mac_create_artifacts - uses: actions/upload-artifact@v2 with: - name: darwin-2level - path: darwin-2level + name: darwin-amd64 + path: darwin-amd64 release: runs-on: ubuntu-latest needs: - - x86_64-linux - - aarch64-linux - - darwin-2level + - linux-amd64 + - linux-arm64 + - darwin-amd64 steps: - uses: actions/download-artifact@v2 with: - name: x86_64-linux - path: x86_64-linux + name: linux-amd64 + path: linux-amd64 - uses: actions/download-artifact@v2 with: - name: aarch64-linux - path: aarch64-linux + name: linux-arm64 + path: linux-arm64 - uses: actions/download-artifact@v2 with: - name: darwin-2level - path: darwin-2level + name: darwin-amd64 + path: darwin-amd64 - uses: actions/create-release@v1 id: create_release env: @@ -71,46 +71,46 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: x86_64-linux/perl-x86_64-linux.tar.gz - asset_name: perl-x86_64-linux.tar.gz + asset_path: linux-amd64/perl-linux-amd64.tar.gz + asset_name: perl-linux-amd64.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: x86_64-linux/perl-x86_64-linux.tar.xz - asset_name: perl-x86_64-linux.tar.xz + asset_path: linux-amd64/perl-linux-amd64.tar.xz + asset_name: perl-linux-amd64.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_path: linux-arm64/perl-linux-arm64.tar.gz + asset_name: perl-linux-arm64.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_path: linux-arm64/perl-linux-arm64.tar.xz + asset_name: perl-linux-arm64.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: darwin-2level/perl-darwin-2level.tar.gz - asset_name: perl-darwin-2level.tar.gz + asset_path: darwin-amd64/perl-darwin-amd64.tar.gz + asset_name: perl-darwin-amd64.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: darwin-2level/perl-darwin-2level.tar.xz - asset_name: perl-darwin-2level.tar.xz + asset_path: darwin-amd64/perl-darwin-amd64.tar.xz + asset_name: perl-darwin-amd64.tar.xz asset_content_type: application/x-xz diff --git a/build/Dockerfile b/build/Dockerfile index 7da147c..2524021 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -20,17 +20,18 @@ RUN mkdir -p \ /usr/local/lib \ /usr/local/lib64 RUN mkdir /perl -RUN curl -fsSL https://github.com/skaji/relocatable-perl/releases/download/5.34.1.1/perl-$(uname -m)-linux.tar.xz | tar xJf - --strip-components 1 -C /perl -RUN curl -fsSL --compressed -o /cpm https://git.io/cpm +RUN curl -fsSL https://github.com/skaji/relocatable-perl/releases/download/5.36.0.0/perl-$(uname -m)-linux.tar.xz | tar xJf - --strip-components 1 -C /perl +RUN curl -fsSL --compressed -o /cpm https://raw.githubusercontent.com/skaji/cpm/main/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-$(uname -m)-linux RUN set -eux; \ cd /tmp; \ - 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 + _ARCHNAME=$(if [[ $(uname -m) = x86_64 ]]; then echo amd64; else echo arm64; fi); \ + cp -r /opt/perl perl-linux-$_ARCHNAME; \ + tar cf perl-linux-$_ARCHNAME.tar perl-linux-$_ARCHNAME; \ + gzip -9 --stdout perl-linux-$_ARCHNAME.tar > /perl-linux-$_ARCHNAME.tar.gz; \ + xz -9 --stdout perl-linux-$_ARCHNAME.tar > /perl-linux-$_ARCHNAME.tar.xz; \ + : diff --git a/build/github-actions.sh b/build/github-actions.sh index abc0df1..0d42bd0 100644 --- a/build/github-actions.sh +++ b/build/github-actions.sh @@ -11,9 +11,12 @@ mac_prepare_tools() { mac_build_perl() { export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin - curl -fsSL https://git.io/perl-install | bash -s ~/perl - curl -fsSL --compressed -o ~/cpm https://git.io/cpm + rm -rf ~/perl ~/cpm + mkdir ~/perl + curl -fsSL https://github.com/skaji/relocatable-perl/releases/download/5.36.0.0/perl-darwin-2level.tar.xz | gtar xJf - --strip-components 1 -C ~/perl + curl -fsSL --compressed -o ~/cpm https://raw.githubusercontent.com/skaji/cpm/main/cpm ~/perl/bin/perl ~/cpm install -g --cpmfile build/cpm.yml + sudo rm -rf /opt/perl sudo install -m 755 -o $USER -g staff -d /opt/perl ~/perl/bin/perl build/relocatable-perl-build --prefix /opt/perl --perl_version $(cat BUILD_VERSION) /opt/perl/bin/perl ~/cpm install -g App::cpanminus App::ChangeShebang @@ -21,26 +24,28 @@ mac_build_perl() { } mac_create_artifacts() { - mkdir darwin-2level - gcp -r /opt/perl ./perl-darwin-2level - gtar cf perl-darwin-2level.tar perl-darwin-2level - gzip -9 --stdout perl-darwin-2level.tar > darwin-2level/perl-darwin-2level.tar.gz - xz -9 --stdout perl-darwin-2level.tar > darwin-2level/perl-darwin-2level.tar.xz + local archname=$(if [[ $(uname -m) = x86_64 ]]; then echo amd64; else echo arm64; fi) + rm -rf darwin-$archname perl-darwin-$archname* + gcp -r /opt/perl perl-darwin-$archname + gtar cf perl-darwin-$archname.tar perl-darwin-$archname + mkdir darwin-$archname + gzip -9 --stdout perl-darwin-$archname.tar > darwin-$archname/perl-darwin-$archname.tar.gz + xz -9 --stdout perl-darwin-$archname.tar > darwin-$archname/perl-darwin-$archname.tar.xz } -x86_64_linux_create_artifacts() { - mkdir x86_64-linux +linux_amd64_create_artifacts() { + mkdir linux-amd64 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 cp $ID:/perl-linux-amd64.tar.gz linux-amd64/ + docker cp $ID:/perl-linux-amd64.tar.xz linux-amd64/ docker rm $ID } -aarch64_linux_create_artifacts() { - mkdir aarch64-linux +linux_arm64_create_artifacts() { + mkdir linux-arm64 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 cp $ID:/perl-linux-arm64.tar.gz linux-arm64/ + docker cp $ID:/perl-linux-arm64.tar.xz linux-arm64/ docker rm $ID } @@ -54,11 +59,11 @@ mac_build_perl) mac_create_artifacts) mac_create_artifacts ;; -x86_64_linux_create_artifacts) - x86_64_linux_create_artifacts +linux_amd64_create_artifacts) + linux_amd64_create_artifacts ;; -aarch64_linux_create_artifacts) - aarch64_linux_create_artifacts +linux_arm64_create_artifacts) + linux_arm64_create_artifacts ;; *) echo "unknown command: $1" >&2