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