From 9ad722c6f3220fa55528721ce141aa2c871d7774 Mon Sep 17 00:00:00 2001 From: Nico Isenbeck Date: Mon, 24 Apr 2023 17:14:09 +0200 Subject: [PATCH] Add support for arm64 and some minor postinst improvements --- build.sh | 4 ++-- patch/arm64/Dockerfile.patch | 31 +++++++++++++++++++++++++++++++ postinst.dist | 6 ++++++ 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 patch/arm64/Dockerfile.patch diff --git a/build.sh b/build.sh index 8840432..968c467 100755 --- a/build.sh +++ b/build.sh @@ -38,7 +38,7 @@ while getopts ":r:o:d:a:p:i:u:e:" opt; do done if [ -z "$REF" ]; then REF=$(curl -s https://api.github.com/repos/dani-garcia/vaultwarden/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/' | cut -c 1-); fi ARCH=$ARCH_DIR -if [[ "$ARCH" =~ ^arm ]]; then ARCH="armhf"; fi +if [[ "$ARCH" =~ ^arm7 ]]; then ARCH="armhf"; fi # Clone vaultwarden if [ ! -d "$SRC" ]; then @@ -94,7 +94,7 @@ sed -E "s/(FROM[[:space:]]*debian:)[^-]+(-.+)/\1${OS_VERSION_NAME}\2/g" -i "$DIR CONTROL="$DEBIANDIR/control" cp "$DIR/control.dist" "$CONTROL" sed -i "s/@@PACKAGENAME@@/$PACKAGENAME/g" "$CONTROL" -sed -i "s/Version:.*/Version: $REF-1/" "$CONTROL" +sed -i "s/Version:.*/Version: $REF-1-$OS_VERSION_NAME/" "$CONTROL" sed -i "s/Architecture:.*/Architecture: $ARCH/" "$CONTROL" # Prepare Systemd-unit diff --git a/patch/arm64/Dockerfile.patch b/patch/arm64/Dockerfile.patch new file mode 100644 index 0000000..5432d71 --- /dev/null +++ b/patch/arm64/Dockerfile.patch @@ -0,0 +1,31 @@ +diff --git a/docker/arm64/Dockerfile b/docker/arm64/Dockerfile +index 117517a..2c82058 100644 +--- a/docker/arm64/Dockerfile ++++ b/docker/arm64/Dockerfile +@@ -96,6 +96,26 @@ RUN touch src/main.rs + # your actual source files being built + RUN cargo build --features ${DB} --release --target=aarch64-unknown-linux-gnu + ++####################### dpkg target ########################## ++FROM build as dpkg ++RUN mkdir /outdir ++RUN mkdir -p /vaultwarden_package/DEBIAN ++RUN mkdir -p /vaultwarden_package/usr/local/bin ++RUN mkdir -p /vaultwarden_package/usr/lib/systemd/system ++RUN mkdir -p /vaultwarden_package/etc/@@PACKAGEDIR@@ ++RUN mkdir -p /vaultwarden_package/usr/share/@@PACKAGEDIR@@ ++ ++WORKDIR /vaultwarden_package ++COPY debian/control /vaultwarden_package/DEBIAN/control ++COPY debian/postinst /vaultwarden_package/DEBIAN/postinst ++COPY debian/conffiles /vaultwarden_package/DEBIAN/conffiles ++COPY debian/config.env /vaultwarden_package/etc/@@PACKAGEDIR@@ ++COPY debian/@@EXECUTABLENAME@@.service /vaultwarden_package/usr/lib/systemd/system ++COPY --from=vault /web-vault /vaultwarden_package/usr/share/@@PACKAGEDIR@@/web-vault ++COPY --from=build app/target/aarch64-unknown-linux-gnu/release/vaultwarden /vaultwarden_package/usr/local/bin/@@EXECUTABLENAME@@ ++ ++RUN dpkg-deb --build . /outdir/@@PACKAGEDIR@@.deb ++ + ######################## RUNTIME IMAGE ######################## + # Create a new stage with a minimal image + # because we already have a binary built diff --git a/postinst.dist b/postinst.dist index 69f29c1..02cbec3 100755 --- a/postinst.dist +++ b/postinst.dist @@ -1,4 +1,10 @@ #!/bin/sh +if [ -f /etc/@@PACKAGEDIR@@/Rocket.toml ] +then + mv /etc/@@PACKAGEDIR@@/Rocket.toml /etc/@@PACKAGEDIR@@/Rocket.toml.deprecated +fi DIR_MODE=0700 adduser --system --group --home /var/lib/@@PACKAGEDIR@@ @@SERVICEUSER@@ chmod 700 /var/lib/@@PACKAGEDIR@@ chmod 600 /etc/@@PACKAGEDIR@@/config.env +systemctl daemon-reload +systemctl restart vaultwarden.service