From c9cdddda9b0544960e0f8fbdc1241c0334e5e877 Mon Sep 17 00:00:00 2001 From: librelois <elois@ifee.fr> Date: Sat, 2 Mar 2019 00:40:06 +0100 Subject: [PATCH] [build] debian: migrate to cargo-deb --- .gitlab-ci.yml | 4 +- bin/durs-server/Cargo.toml | 17 +++ release/arch/armv7/build-armv7.sh | 106 +++++++------------ release/arch/linux-x64/build-lin-x64.sh | 106 +++++++------------ release/extra/debian/package/DEBIAN/control | 9 -- release/extra/debian/package/DEBIAN/postinst | 23 ---- release/extra/debian/package/DEBIAN/prerm | 5 - 7 files changed, 99 insertions(+), 171 deletions(-) delete mode 100644 release/extra/debian/package/DEBIAN/control delete mode 100755 release/extra/debian/package/DEBIAN/postinst delete mode 100755 release/extra/debian/package/DEBIAN/prerm diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ddeaefea..1d3c6593 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,7 +22,7 @@ variables: .rust_stable_lin64: &rust_stable_lin64 <<: *rust_changes - image: registry.duniter.org/docker/duniter-rs-ci:v1.32.0 + image: registry.duniter.org/docker/duniter-rs-ci:v1.33.3 tags: - redshift-rs-stable before_script: @@ -51,7 +51,7 @@ variables: .rust_stable_armv7: &rust_stable_armv7 <<: *rust_changes - image: registry.duniter.org/docker/rust/armv7-builder:v1.32.0 + image: registry.duniter.org/docker/rust/armv7-builder:v1.33.0 tags: - redshift-rs-stable before_script: diff --git a/bin/durs-server/Cargo.toml b/bin/durs-server/Cargo.toml index 37da50e5..2b36eab6 100644 --- a/bin/durs-server/Cargo.toml +++ b/bin/durs-server/Cargo.toml @@ -19,3 +19,20 @@ durs-tui = { path = "../../lib/modules/tui" } [features] ssl = ["durs-ws2p-v1-legacy/ssl"] +[package.metadata.deb] +maintainer = "librelois <elois@duniter.org>" +depends = "$auto" +section = "misc" +priority = "optional" +assets = [ + ["../../target/release/durs", "usr/bin/", "755"], + ["../../images/duniter-rs.png", "usr/share/durs/", "644"], +] +features = ["ssl"] + +[package.metadata.deb.variants.arm] +assets = [ + ["../../target/armv7-unknown-linux-gnueabihf/release/durs", "usr/bin/", "755"], + ["../../images/duniter-rs.png", "usr/share/durs/", "644"], +] +features = ["ssl"] \ No newline at end of file diff --git a/release/arch/armv7/build-armv7.sh b/release/arch/armv7/build-armv7.sh index 04f40071..618511e4 100644 --- a/release/arch/armv7/build-armv7.sh +++ b/release/arch/armv7/build-armv7.sh @@ -1,10 +1,28 @@ #!/bin/bash +# ------------ +# Check params +# ------------ + if [[ -z "${1}" ]]; then echo "Fatal: no version given to build script" exit 1 fi +# --------- +# Constants +# --------- + +DURS_TAG="v${1}" +DURS_DEB_VER=" ${1}" +TARGET="armv7-unknown-linux-gnueabihf" + +ROOT="${PWD}" +WORK_NAME=work +WORK="${ROOT}/${WORK_NAME}" +RELEASES="${WORK}/releases" +BIN="${WORK}/bin" + # --------- # Functions # --------- @@ -40,72 +58,40 @@ build_extra_server() { # - # Parameters: # 1. Building type (either “desktop” or “server”). -# 2. Debian package name. build_deb_pack() { - rm -rf "${RELEASES}/durs-armv7" - mkdir "${RELEASES}/durs-armv7" || exit 1 - cp -r "${ROOT}/release/extra/debian/package/"* "${RELEASES}/durs-armv7" || exit 1 - build_extra_${1} "${RELEASES}/durs-armv7" - mkdir -p "${RELEASES}/durs-armv7/opt/durs/" || exit 1 - chmod 755 "${RELEASES}/durs-armv7/DEBIAN/"post* || exit 1 - chmod 755 "${RELEASES}/durs-armv7/DEBIAN/"pre* || exit 1 - sed -i "s/Version:.*/Version:${DURS_DEB_VER}/g" "${RELEASES}/durs-armv7/DEBIAN/control" || exit 1 - - cd "${RELEASES}/${1}_/" - zip -qr "${RELEASES}/durs-armv7/opt/durs/durs.zip" * || exit 1 - - sed -i "s/Package: .*/Package: ${2}/g" "${RELEASES}/durs-armv7/DEBIAN/control" || exit 1 - - cd "${RELEASES}" - dpkg-deb --build durs-armv7 || exit 1 - mv durs-armv7.deb "${BIN}/duniter-rust-${1}-${DURS_TAG}-armv7.deb" || exit 1 + #cd "bin/durs-${1}" + #cargo build --release --target=armv7-unknown-linux-gnueabihf --features=ssl + cargo deb --manifest-path="bin/durs-${1}/Cargo.toml" --target=${TARGET} --variant=arm --output "${BIN}/duniter-rust-${1}-${DURS_TAG}-armv7.deb" create_desc "${BIN}/duniter-rust-${1}-${DURS_TAG}-armv7.deb" "${1}" "Linux (Ubuntu/Debian/Raspbian)" } -# ----------- -# Prepare -# ----------- - -DURS_TAG="v${1}" -DURS_DEB_VER=" ${1}" -TARGET="armv7-unknown-linux-gnueabihf" - -# ----------- -# Folders -# ----------- +# ------------ +# BEGIN SCRIPT +# ------------ -ROOT="${PWD}" -WORK_NAME=work -WORK="${ROOT}/${WORK_NAME}" -DOWNLOADS="${WORK}/downloads" -RELEASES="${WORK}/releases" -BIN="${WORK}/bin" - -mkdir -p "${DOWNLOADS}" "${RELEASES}" "${BIN}" || exit 1 -rm -rf "${BIN}/"*.{deb,tar.gz}{,.desc} # Clean up +# Prepare +mkdir -p "${RELEASES}" "${BIN}" || exit 1 -# ----------- -# Downloads -# ----------- +# Clean up +rm -rf "${BIN}/"*.{deb,tar.gz}{,.desc} -cd "${DOWNLOADS}" +# --------------------- +# Build Debian packages +# --------------------- -# ----------- -# Releases -# ----------- +build_deb_pack server +#build_deb_pack desktop -# Prepare sources -mkdir -p "${RELEASES}/durs" || exit 1 -cp -r $(find "${ROOT}" -mindepth 1 -maxdepth 1 ! -name "${WORK_NAME}") "${RELEASES}/durs" || exit 1 -cd "${RELEASES}/durs" -rm -Rf .gitignore .git || exit 1 # Remove git files -# Build binary -echo ">> Building binary..." -cd "${ROOT}/bin/durs-server" -cargo build --release --features=ssl --target=${TARGET} || exit 1 +# --------------- +# Build .tar.gz +# --------------- +# Create releases directory mkdir -p "${RELEASES}/server_" || exit 1 +#mkdir -p "${RELEASES}/desktop_" || exit 1 + +# Copy binary (build by cargo deb) cp "${ROOT}/target/${TARGET}/release/durs" "${RELEASES}/server_/" || exit 1 #cp "${ROOT}/target/release/durs" "${RELEASES}/desktop_" || exit 1 @@ -114,17 +100,7 @@ cp "${ROOT}/images/duniter-rs.png" "${RELEASES}/server_/" || exit 1 #cp "${ROOT}/images/duniter-rs.png" "${RELEASES}/desktop_" || exit 1 -# --------------- -# Build .tar.gz -# --------------- - +# package tar.gz for server variant cd "${RELEASES}/server_" tar czf "${BIN}/duniter-rust-server-${DURS_TAG}-armv7.tar.gz" * || exit 1 create_desc "${BIN}/duniter-rust-server-${DURS_TAG}-armv7.tar.gz" "Server" "Linux (generic)" - -# ----------------------- -# Build Debian packages -# ----------------------- - -build_deb_pack server durs -#build_deb_pack desktop durs diff --git a/release/arch/linux-x64/build-lin-x64.sh b/release/arch/linux-x64/build-lin-x64.sh index c7ae3a60..15f57729 100644 --- a/release/arch/linux-x64/build-lin-x64.sh +++ b/release/arch/linux-x64/build-lin-x64.sh @@ -1,10 +1,27 @@ #!/bin/bash +# ------------- +# Check params +# ------------- + if [[ -z "${1}" ]]; then echo "Fatal: no version given to build script" exit 1 fi +# ----------- +# Constants +# ----------- + +DURS_TAG="v${1}" +DURS_DEB_VER=" ${1}" + +ROOT="${PWD}" +WORK_NAME=work +WORK="${ROOT}/${WORK_NAME}" +RELEASES="${WORK}/releases" +BIN="${WORK}/bin" + # --------- # Functions # --------- @@ -40,73 +57,39 @@ build_extra_server() { # - # Parameters: # 1. Building type (either “desktop” or “server”). -# 2. Debian package name. build_deb_pack() { - rm -rf "${RELEASES}/durs-x64" - mkdir "${RELEASES}/durs-x64" || exit 1 - cp -r "${ROOT}/release/extra/debian/package/"* "${RELEASES}/durs-x64" || exit 1 - build_extra_${1} "${RELEASES}/durs-x64" - mkdir -p "${RELEASES}/durs-x64/opt/durs/" || exit 1 - chmod 755 "${RELEASES}/durs-x64/DEBIAN/"post* || exit 1 - chmod 755 "${RELEASES}/durs-x64/DEBIAN/"pre* || exit 1 - sed -i "s/Version:.*/Version:${DURS_DEB_VER}/g" "${RELEASES}/durs-x64/DEBIAN/control" || exit 1 - - cd "${RELEASES}/${1}_/" - zip -qr "${RELEASES}/durs-x64/opt/durs/durs.zip" * || exit 1 - - sed -i "s/Package: .*/Package: ${2}/g" "${RELEASES}/durs-x64/DEBIAN/control" || exit 1 - - cd "${RELEASES}" - dpkg-deb --build durs-x64 || exit 1 - mv durs-x64.deb "${BIN}/duniter-rust-${1}-${DURS_TAG}-linux-x64.deb" || exit 1 + cd "${ROOT}/bin/durs-${1}" + cargo deb --output "${BIN}/duniter-rust-${1}-${DURS_TAG}-linux-x64.deb" create_desc "${BIN}/duniter-rust-${1}-${DURS_TAG}-linux-x64.deb" "${1}" "Linux (Ubuntu/Debian)" } -# ----------- -# Prepare -# ----------- - -DURS_TAG="v${1}" -DURS_DEB_VER=" ${1}" +# ------------ +# BEGIn SCRIPT +# ------------ +# Prepare +mkdir -p "${RELEASES}" "${BIN}" || exit 1 #rustup add target ${TARGET} || exit 1 -# ----------- -# Folders -# ----------- - -ROOT="${PWD}" -WORK_NAME=work -WORK="${ROOT}/${WORK_NAME}" -DOWNLOADS="${WORK}/downloads" -RELEASES="${WORK}/releases" -BIN="${WORK}/bin" - -mkdir -p "${DOWNLOADS}" "${RELEASES}" "${BIN}" || exit 1 -rm -rf "${BIN}/"*.{deb,tar.gz}{,.desc} # Clean up - -# ----------- -# Downloads -# ----------- - -cd "${DOWNLOADS}" +# Clean up +rm -rf "${BIN}/"*.{deb,tar.gz}{,.desc} -# ----------- -# Releases -# ----------- +# --------------------- +# Build Debian packages +# --------------------- -# Prepare sources -mkdir -p "${RELEASES}/durs" || exit 1 -cp -r $(find "${ROOT}" -mindepth 1 -maxdepth 1 ! -name "${WORK_NAME}") "${RELEASES}/durs" || exit 1 -cd "${RELEASES}/durs" -rm -Rf .gitignore .git || exit 1 # Remove git files +build_deb_pack server +#build_deb_pack desktop -# Build binary -echo ">> Building binary..." -cd "${ROOT}/bin/durs-server" -cargo build --release --features=ssl || exit 1 +# --------------- +# Build .tar.gz +# --------------- +# Create releases directory mkdir -p "${RELEASES}/server_" || exit 1 +#mkdir -p "${RELEASES}/desktop_" || exit 1 + +# Copy binary (build by cargo deb) cp "${ROOT}/target/release/durs" "${RELEASES}/server_/" || exit 1 #cp "${ROOT}/target/release/durs" "${RELEASES}/desktop_" || exit 1 @@ -114,18 +97,7 @@ cp "${ROOT}/target/release/durs" "${RELEASES}/server_/" || exit 1 cp "${ROOT}/images/duniter-rs.png" "${RELEASES}/server_/" || exit 1 #cp "${ROOT}/images/duniter-rs.png" "${RELEASES}/desktop_" || exit 1 - -# --------------- -# Build .tar.gz -# --------------- - +# package tar.gz for server variant cd "${RELEASES}/server_" tar czf "${BIN}/duniter-rust-server-${DURS_TAG}-linux-x64.tar.gz" * || exit 1 create_desc "${BIN}/duniter-rust-server-${DURS_TAG}-linux-x64.tar.gz" "Server" "Linux (generic)" - -# ----------------------- -# Build Debian packages -# ----------------------- - -build_deb_pack server durs -#build_deb_pack desktop durs diff --git a/release/extra/debian/package/DEBIAN/control b/release/extra/debian/package/DEBIAN/control deleted file mode 100644 index 50190018..00000000 --- a/release/extra/debian/package/DEBIAN/control +++ /dev/null @@ -1,9 +0,0 @@ -Package: duniter-rs -Version: 0.0.1 -Depends: unzip -Section: misc -Priority: optional -Architecture: all -Installed-Size: 20000 -Maintainer: Éloïs <elois@duniter.org> -Description: Crypto-currency software to powering Ğ1 libre currency diff --git a/release/extra/debian/package/DEBIAN/postinst b/release/extra/debian/package/DEBIAN/postinst deleted file mode 100755 index 7926d5fe..00000000 --- a/release/extra/debian/package/DEBIAN/postinst +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -DURS_ROOT=/opt/durs -DUN_SOURCES=$DURS_ROOT -mkdir -p $DUN_SOURCES - -# Duniter-Rust binary extraction -if [[ -f $DURS_ROOT/durs.zip ]]; then - unzip -q -d $DUN_SOURCES/ $DURS_ROOT/durs.zip - rm -rf $DURS_ROOT/durs.zip -fi - -# Create binary symbolic link -chmod 755 $DUN_SOURCES/durs -ln -s $DUN_SOURCES/durs /usr/bin/durs - -# Add durs user for service -mkdir -p /var/lib/durs -adduser --system --quiet --home /var/lib/durs --no-create-home --disabled-password --group durs -chown durs:durs /var/lib/durs - -# Add reading rights -chmod +r -R $DURS_ROOT diff --git a/release/extra/debian/package/DEBIAN/prerm b/release/extra/debian/package/DEBIAN/prerm deleted file mode 100755 index 565cc57f..00000000 --- a/release/extra/debian/package/DEBIAN/prerm +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -[[ -f /usr/bin/durs ]] && rm /usr/bin/durs -[[ -f /usr/bin/durs-desktop ]] && rm -f /usr/bin/durs-desktop -[[ -d /opt/durs ]] && rm -Rf /opt/durs -- GitLab