diff --git a/.github/actions/install/action.yml b/.github/actions/install/action.yml index 97210bbf..6db412e1 100644 --- a/.github/actions/install/action.yml +++ b/.github/actions/install/action.yml @@ -17,7 +17,7 @@ inputs: zig-v8: description: 'zig v8 version to install' required: false - default: 'v0.1.11' + default: 'v0.1.12' v8: description: 'v8 version to install' required: false diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8077fb47..6eedb8ed 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,6 +26,9 @@ jobs: submodules: recursive - uses: ./.github/actions/install + with: + os: ${{env.OS}} + arch: ${{env.ARCH}} - name: zig build run: zig build --release=safe -Doptimize=ReleaseSafe -Dengine=v8 -Dcpu=x86_64 -Dgit_commit=$(git rev-parse --short ${{ github.sha }}) @@ -40,6 +43,38 @@ jobs: artifacts: lightpanda-${{ env.ARCH }}-${{ env.OS }} tag: nightly + build-linux-aarch64: + env: + ARCH: aarch64 + OS: linux + + runs-on: ubuntu-22.04-arm + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + # fetch submodules recusively, to get zig-js-runtime submodules also. + submodules: recursive + + - uses: ./.github/actions/install + with: + os: ${{env.OS}} + arch: ${{env.ARCH}} + + - name: zig build + run: zig build --release=safe -Doptimize=ReleaseSafe -Dengine=v8 -Dgit_commit=$(git rev-parse --short ${{ github.sha }}) + + - name: Rename binary + run: mv zig-out/bin/lightpanda lightpanda-${{ env.ARCH }}-${{ env.OS }} + + - name: Upload the build + uses: ncipollo/release-action@v1 + with: + allowUpdates: true + artifacts: lightpanda-${{ env.ARCH }}-${{ env.OS }} + tag: nightly + build-macos-aarch64: env: ARCH: aarch64 diff --git a/Dockerfile b/Dockerfile index 899c6446..ae7443e2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,11 @@ -FROM ubuntu:22.04 +FROM ubuntu:24.04 +ARG MINISIG=0.12 ARG ZIG=0.13.0 ARG ZIG_MINISIG=RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U -ARG OS=linux ARG ARCH=x86_64 ARG V8=11.1.134 -ARG ZIG_V8=v0.1.11 +ARG ZIG_V8=v0.1.12 RUN apt-get update -yq && \ apt-get install -yq xz-utils \ @@ -16,25 +16,25 @@ RUN apt-get update -yq && \ curl git # install minisig -RUN curl -L -O https://github.com/jedisct1/minisign/releases/download/0.11/minisign-0.11-linux.tar.gz && \ - tar xvzf minisign-0.11-linux.tar.gz +RUN curl --fail -L -O https://github.com/jedisct1/minisign/releases/download/${MINISIG}/minisign-${MINISIG}-linux.tar.gz && \ + tar xvzf minisign-${MINISIG}-linux.tar.gz # install zig -RUN curl -O https://ziglang.org/download/${ZIG}/zig-linux-x86_64-${ZIG}.tar.xz && \ - curl -O https://ziglang.org/download/${ZIG}/zig-linux-x86_64-${ZIG}.tar.xz.minisig +RUN curl --fail -L -O https://ziglang.org/download/${ZIG}/zig-linux-${ARCH}-${ZIG}.tar.xz +RUN curl --fail -L -O https://ziglang.org/download/${ZIG}/zig-linux-${ARCH}-${ZIG}.tar.xz.minisig -RUN minisign-linux/x86_64/minisign -Vm zig-linux-x86_64-${ZIG}.tar.xz -P ${ZIG_MINISIG} +RUN minisign-linux/${ARCH}/minisign -Vm zig-linux-${ARCH}-${ZIG}.tar.xz -P ${ZIG_MINISIG} # clean minisg RUN rm -fr minisign-0.11-linux.tar.gz minisign-linux # install zig -RUN tar xvf zig-linux-x86_64-${ZIG}.tar.xz && \ - mv zig-linux-x86_64-${ZIG} /usr/local/lib && \ - ln -s /usr/local/lib/zig-linux-x86_64-${ZIG}/zig /usr/local/bin/zig +RUN tar xvf zig-linux-${ARCH}-${ZIG}.tar.xz && \ + mv zig-linux-${ARCH}-${ZIG} /usr/local/lib && \ + ln -s /usr/local/lib/zig-linux-${ARCH}-${ZIG}/zig /usr/local/bin/zig # clean up zig install -RUN rm -fr zig-linux-x86_64-${ZIG}.tar.xz zig-linux-x86_64-${ZIG}.tar.xz.minisig +RUN rm -fr zig-linux-${ARCH}-${ZIG}.tar.xz zig-linux-${ARCH}-${ZIG}.tar.xz.minisig # force use of http instead of ssh with github RUN cat < /root/.gitconfig @@ -60,14 +60,14 @@ RUN make install-libiconv && \ make install-mimalloc # download and install v8 -RUN curl -L -o libc_v8.a https://github.com/lightpanda-io/zig-v8-fork/releases/download/${ZIG_V8}/libc_v8_${V8}_${OS}_${ARCH}.a && \ - mkdir -p vendor/zig-js-runtime/vendor/v8/${ARCH}-${OS}/release && \ - mv libc_v8.a vendor/zig-js-runtime/vendor/v8/${ARCH}-${OS}/release/libc_v8.a +RUN curl --fail -L -o libc_v8.a https://github.com/lightpanda-io/zig-v8-fork/releases/download/${ZIG_V8}/libc_v8_${V8}_linux_${ARCH}.a && \ + mkdir -p vendor/zig-js-runtime/vendor/v8/${ARCH}-linux/release && \ + mv libc_v8.a vendor/zig-js-runtime/vendor/v8/${ARCH}-linux/release/libc_v8.a # build release RUN make build -FROM ubuntu:22.04 +FROM ubuntu:24.04 # copy ca certificates COPY --from=0 /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt