From d5ac281f3e476ddf4494760d2ba0b9cdc12dfefa Mon Sep 17 00:00:00 2001 From: thespad Date: Wed, 11 Sep 2024 15:37:32 +0100 Subject: [PATCH] Bundle binaries at buildtime --- .github/workflows/BuildImage.yml | 16 ++++++- Dockerfile | 11 ++++- .../init-mod-universal-calibre-setup/run | 42 ++----------------- 3 files changed, 27 insertions(+), 42 deletions(-) diff --git a/.github/workflows/BuildImage.yml b/.github/workflows/BuildImage.yml index 76e43731..ff766164 100644 --- a/.github/workflows/BuildImage.yml +++ b/.github/workflows/BuildImage.yml @@ -1,8 +1,16 @@ name: Build Image -on: [push, pull_request_target, workflow_dispatch] +on: + push: + pull_request_target: + workflow_dispatch: + inputs: + mod_version: + type: string + required: false env: + MOD_VERSION: ${{ inputs.mod_version }} GITHUB_REPO: "linuxserver/docker-mods" #don't modify ENDPOINT: "linuxserver/mods" #don't modify BASEIMAGE: "universal" #replace @@ -20,7 +28,11 @@ jobs: echo "BASEIMAGE=${{ env.BASEIMAGE }}" >> $GITHUB_OUTPUT echo "MODNAME=${{ env.MODNAME }}" >> $GITHUB_OUTPUT # **** If the mod needs to be versioned, set the versioning logic below. Otherwise leave as is. **** - MOD_VERSION=$(curl -sX GET "https://api.github.com/repos/kovidgoyal/calibre/releases/latest" | jq -r '.tag_name') + if [[ -z "${{ env.MOD_VERSION }}" ]]; then + MOD_VERSION=$(curl -sX GET "https://api.github.com/repos/kovidgoyal/calibre/releases/latest" | jq -r '.tag_name') + else + MOD_VERSION=${{ env.MOD_VERSION }} + fi echo "MOD_VERSION=${MOD_VERSION}" >> $GITHUB_OUTPUT outputs: GITHUB_REPO: ${{ steps.outputs.outputs.GITHUB_REPO }} diff --git a/Dockerfile b/Dockerfile index 86025ef3..be11bc90 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # syntax=docker/dockerfile:1 ## Buildstage ## -FROM ghcr.io/linuxserver/baseimage-alpine:3.19 AS buildstage +FROM ghcr.io/linuxserver/baseimage-alpine:3.20 AS buildstage ARG MOD_VERSION @@ -12,6 +12,15 @@ RUN \ MOD_VERSION=$(curl -sX GET "https://api.github.com/repos/kovidgoyal/calibre/releases/latest" \ | jq -r '.tag_name'); \ fi && \ + if [ "$(uname -m)" == "x86_64" ]; then \ + curl -o \ + /root-layer/calibre.txz -L \ + "https://download.calibre-ebook.com/${MOD_VERSION:1}/calibre-${MOD_VERSION:1}-x86_64.txz"; \ + elif [ "$(uname -m)" == "aarch64" ]; then \ + curl -o \ + /root-layer/calibre.txz -L \ + "https://download.calibre-ebook.com/${MOD_VERSION:1}/calibre-${MOD_VERSION:1}-arm64.txz"; \ + fi && \ echo $MOD_VERSION > /root-layer/CALIBRE_RELEASE # copy local files diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-universal-calibre-setup/run b/root/etc/s6-overlay/s6-rc.d/init-mod-universal-calibre-setup/run index fbb4bb78..002583a4 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-universal-calibre-setup/run +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-universal-calibre-setup/run @@ -1,20 +1,6 @@ #!/usr/bin/with-contenv bash -if [[ "$(uname -m)" == "armv7l" ]]; then -cat <<-EOF - ******************************************************** - ******************************************************** - * * - * !!!! * - * universal-calibre mod is not supported on armhf. * - * * - ******************************************************** - ******************************************************** -EOF -exit 0 -fi - -if [ ! -f /usr/bin/apt ]; then +if [[ ! -f /usr/bin/apt ]]; then cat <<-EOF ******************************************************** ******************************************************** @@ -31,33 +17,11 @@ fi export DEBIAN_FRONTEND="noninteractive" -CALIBRE_RELEASE="$(cat /CALIBRE_RELEASE)" -if [ -z ${CALIBRE_RELEASE+x} ]; then - CALIBRE_RELEASE=$(curl -sX GET "https://api.github.com/repos/kovidgoyal/calibre/releases/latest" \ - | awk '/tag_name/{print $4;exit}' FS='[""]'); \ -fi - - -if [ ! -e /usr/bin/calibre-server ] || [ "${CALIBRE_RELEASE}" != "$(cat /config/.CALIBRE_RELEASE || :)" ]; then - echo "**** Installing/updating calibre ****" - rm -rf /app/calibre - mkdir -p \ - /app/calibre - if [ "$(uname -m)" == "x86_64" ]; then - curl -o \ - /tmp/calibre.txz -L \ - "https://github.com/kovidgoyal/calibre/releases/download/${CALIBRE_RELEASE}/calibre-${CALIBRE_RELEASE:1}-x86_64.txz" - elif [ "$(uname -m)" == "aarch64" ]; then - curl -o \ - /tmp/calibre.txz -L \ - "https://github.com/kovidgoyal/calibre/releases/download/${CALIBRE_RELEASE}/calibre-${CALIBRE_RELEASE:1}-arm64.txz" - fi +if [[ ! -e /usr/bin/calibre-server ]]; then tar xf \ /tmp/calibre.txz \ -C /app/calibre rm /tmp/calibre.txz + echo "Installing Calibre version $(cat /CALIBRE_RELEASE)" /app/calibre/calibre_postinstall - echo "${CALIBRE_RELEASE}" > /config/.CALIBRE_RELEASE -else - echo "**** Calibre already installed, skipping ****" fi