From fbecc9b37029425f07e872589dcfd0533cf476aa Mon Sep 17 00:00:00 2001 From: TheSpad Date: Wed, 22 Mar 2023 10:25:09 +0000 Subject: [PATCH 01/10] Try building for aarch64 too --- Dockerfile | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1deebb8..cdb0953 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,29 @@ ## Buildstage ## -FROM ghcr.io/linuxserver/baseimage-alpine:3.17 as buildstage +FROM ghcr.io/linuxserver/baseimage-alpine:3.17 as buildstage-amd64 + +RUN \ + echo "**** install packages ****" && \ + apk add -U --update --no-cache --virtual=build-dependencies \ + autoconf \ + automake \ + build-base && \ + echo "**** install par2cmdline-turbo from source ****" && \ + mkdir /tmp/par2cmdline && \ + curl -o \ + /tmp/par2cmdline.tar.gz -L \ + "https://github.com/animetosho/par2cmdline-turbo/archive/refs/heads/turbo.tar.gz" && \ + tar xf \ + /tmp/par2cmdline.tar.gz -C \ + /tmp/par2cmdline --strip-components=1 && \ + cd /tmp/par2cmdline && \ + ./automake.sh && \ + ./configure && \ + make && \ + make check && \ + make install DESTDIR=/root-layer + +## Buildstage ## +FROM --platform=aarch64 ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.17 as buildstage-aarch64 RUN \ echo "**** install packages ****" && \ @@ -22,8 +46,6 @@ RUN \ make check && \ make install DESTDIR=/root-layer -# copy local files -COPY root/ /root-layer/ ## Single layer deployed image ## FROM scratch @@ -31,4 +53,5 @@ FROM scratch LABEL maintainer="thespad" # Add files from buildstage -COPY --from=buildstage /root-layer/ / +COPY --from=buildstage-amd64 /root-layer/ /amd64 +COPY --from=buildstage-aarch64 /root-layer/ /aarch64 From 256bca187769ea760cb0bffb11e6a253a82f5da8 Mon Sep 17 00:00:00 2001 From: TheSpad Date: Wed, 22 Mar 2023 10:36:05 +0000 Subject: [PATCH 02/10] Setup qemu --- .github/workflows/BuildImage.yml | 6 ++++++ Dockerfile | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/BuildImage.yml b/.github/workflows/BuildImage.yml index 344969e..607ed9b 100644 --- a/.github/workflows/BuildImage.yml +++ b/.github/workflows/BuildImage.yml @@ -13,6 +13,12 @@ jobs: steps: - uses: actions/checkout@v3 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Build image run: | docker build --no-cache -t ${{ github.sha }} . diff --git a/Dockerfile b/Dockerfile index cdb0953..a427724 100644 --- a/Dockerfile +++ b/Dockerfile @@ -53,5 +53,5 @@ FROM scratch LABEL maintainer="thespad" # Add files from buildstage -COPY --from=buildstage-amd64 /root-layer/ /amd64 -COPY --from=buildstage-aarch64 /root-layer/ /aarch64 +COPY --from=buildstage-amd64 /root-layer/ /tmp/amd64 +COPY --from=buildstage-aarch64 /root-layer/ /tmp/aarch64 From 1816717f5a54e2f5ee19785e9e2cf0df65be2e04 Mon Sep 17 00:00:00 2001 From: TheSpad Date: Wed, 22 Mar 2023 10:37:41 +0000 Subject: [PATCH 03/10] Use buildx explicitly --- .github/workflows/BuildImage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/BuildImage.yml b/.github/workflows/BuildImage.yml index 607ed9b..4bb3b50 100644 --- a/.github/workflows/BuildImage.yml +++ b/.github/workflows/BuildImage.yml @@ -21,7 +21,7 @@ jobs: - name: Build image run: | - docker build --no-cache -t ${{ github.sha }} . + docker buildx build --no-cache -t ${{ github.sha }} . - name: Tag image if: ${{ github.ref == format('refs/heads/{0}-{1}', env.BASEIMAGE, env.MODNAME) }} From 476c4256617d2c85f551699cbba1585260d97f3b Mon Sep 17 00:00:00 2001 From: TheSpad Date: Wed, 22 Mar 2023 10:54:29 +0000 Subject: [PATCH 04/10] Add linux-headers for arm build --- Dockerfile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index a427724..d5b301a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ## Buildstage ## -FROM ghcr.io/linuxserver/baseimage-alpine:3.17 as buildstage-amd64 +FROM ghcr.io/linuxserver/baseimage-alpine:3.17 as buildstage-x86_64 RUN \ echo "**** install packages ****" && \ @@ -30,7 +30,8 @@ RUN \ apk add -U --update --no-cache --virtual=build-dependencies \ autoconf \ automake \ - build-base && \ + build-base \ + linux-headers && \ echo "**** install par2cmdline-turbo from source ****" && \ mkdir /tmp/par2cmdline && \ curl -o \ @@ -53,5 +54,5 @@ FROM scratch LABEL maintainer="thespad" # Add files from buildstage -COPY --from=buildstage-amd64 /root-layer/ /tmp/amd64 -COPY --from=buildstage-aarch64 /root-layer/ /tmp/aarch64 +COPY --from=buildstage-x86_64 /root-layer/ /par2cmdline-turbo/x86_64 +COPY --from=buildstage-aarch64 /root-layer/ /par2cmdline-turbo/aarch64 From 873e80f85104440db2f5eb70650dc86b235fee83 Mon Sep 17 00:00:00 2001 From: TheSpad Date: Wed, 22 Mar 2023 10:54:45 +0000 Subject: [PATCH 05/10] Copy appropriate arch binaries --- .../init-mod-sabnzbd-par2cmdline-turbo-install/run | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run b/root/etc/s6-overlay/s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run index 68593f2..4f21576 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run @@ -8,3 +8,12 @@ echo "*** Removing existing par2cmdline packages ***" if apk list --installed -q | grep par2cmdline &> /dev/null; then apk del --purge -q par2cmdline fi + +ARCH=$(uname -m) +if [[ -d "/par2cmdline-turbo/${ARCH}" ]]; then + echo "**** Installing par2cmdline-turbo ****" + cp -a "/par2cmdline-turbo/${ARCH}/*" / + rm -rf /par2cmdline-turbo +else + echo "**** par2cmdline-turbo already installed ****" +fi \ No newline at end of file From 09ca40ef23061eb8e272e3cce31f1b6c02d071d8 Mon Sep 17 00:00:00 2001 From: TheSpad Date: Wed, 22 Mar 2023 11:25:40 +0000 Subject: [PATCH 06/10] Don't run build tests on arm as they fail in qemu --- Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d5b301a..d42d14b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -44,7 +44,6 @@ RUN \ ./automake.sh && \ ./configure && \ make && \ - make check && \ make install DESTDIR=/root-layer From ff9a51a06218659303e464129c667c492dfc2649 Mon Sep 17 00:00:00 2001 From: TheSpad Date: Wed, 22 Mar 2023 14:15:38 +0000 Subject: [PATCH 07/10] Consolidate on single layer --- Dockerfile | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index d42d14b..8dcef1f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -46,6 +46,11 @@ RUN \ make && \ make install DESTDIR=/root-layer +FROM scratch as consolidate-builds + +COPY --from=buildstage-x86_64 /root-layer/ /par2cmdline-turbo/x86_64 +COPY --from=buildstage-aarch64 /root-layer/ /par2cmdline-turbo/aarch64 +COPY root/ / ## Single layer deployed image ## FROM scratch @@ -53,5 +58,4 @@ FROM scratch LABEL maintainer="thespad" # Add files from buildstage -COPY --from=buildstage-x86_64 /root-layer/ /par2cmdline-turbo/x86_64 -COPY --from=buildstage-aarch64 /root-layer/ /par2cmdline-turbo/aarch64 +COPY --from=consolidate-builds / / From 0ff782864fd6ab2936a1166a8fdd8e12d290cf30 Mon Sep 17 00:00:00 2001 From: TheSpad Date: Wed, 22 Mar 2023 14:15:47 +0000 Subject: [PATCH 08/10] Fix quoting --- .../s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run b/root/etc/s6-overlay/s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run index 4f21576..20d0cdb 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run @@ -12,7 +12,7 @@ fi ARCH=$(uname -m) if [[ -d "/par2cmdline-turbo/${ARCH}" ]]; then echo "**** Installing par2cmdline-turbo ****" - cp -a "/par2cmdline-turbo/${ARCH}/*" / + cp -a /par2cmdline-turbo/${ARCH}/* / rm -rf /par2cmdline-turbo else echo "**** par2cmdline-turbo already installed ****" From 9ffb377667ce88a1f271b71140eea847e81909ea Mon Sep 17 00:00:00 2001 From: TheSpad Date: Wed, 22 Mar 2023 14:16:48 +0000 Subject: [PATCH 09/10] Newline --- .../s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run b/root/etc/s6-overlay/s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run index 20d0cdb..094816b 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run @@ -16,4 +16,4 @@ if [[ -d "/par2cmdline-turbo/${ARCH}" ]]; then rm -rf /par2cmdline-turbo else echo "**** par2cmdline-turbo already installed ****" -fi \ No newline at end of file +fi From b6bde13256258c8badd07aced7a802c60a2c2d99 Mon Sep 17 00:00:00 2001 From: TheSpad Date: Wed, 22 Mar 2023 14:53:09 +0000 Subject: [PATCH 10/10] Update readme --- README.md | 2 ++ .../s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b2b3242..b14c131 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ This mod adds the [par2cmdline-turbo](https://github.com/animetosho/par2cmdline-turbo) fork as a replacement for the standard par2cmdline package. +It is supported on both amd64 and aarch64 (arm64) platforms, but not armhf (arm32). + In the SABnzbd docker arguments, set an environment variable `DOCKER_MODS=linuxserver/mods:sabnzbd-par2cmdline-turbo` If adding multiple mods, enter them in an array separated by `|`, such as `DOCKER_MODS=linuxserver/mods:sabnzbd-par2cmdline-turbo|linuxserver/mods:openssh-server-mod2` diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run b/root/etc/s6-overlay/s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run index 094816b..943b3f5 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-sabnzbd-par2cmdline-turbo-install/run @@ -15,5 +15,5 @@ if [[ -d "/par2cmdline-turbo/${ARCH}" ]]; then cp -a /par2cmdline-turbo/${ARCH}/* / rm -rf /par2cmdline-turbo else - echo "**** par2cmdline-turbo already installed ****" + echo "**** par2cmdline-turbo already installed or platform unsupported ****" fi