Skip to content
Snippets Groups Projects
Commit c9cdddda authored by Éloïs's avatar Éloïs
Browse files

[build] debian: migrate to cargo-deb

parent 51c6ec27
No related branches found
No related tags found
1 merge request!111Resolve "Debian package: build deb properly"
...@@ -22,7 +22,7 @@ variables: ...@@ -22,7 +22,7 @@ variables:
.rust_stable_lin64: &rust_stable_lin64 .rust_stable_lin64: &rust_stable_lin64
<<: *rust_changes <<: *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: tags:
- redshift-rs-stable - redshift-rs-stable
before_script: before_script:
...@@ -51,7 +51,7 @@ variables: ...@@ -51,7 +51,7 @@ variables:
.rust_stable_armv7: &rust_stable_armv7 .rust_stable_armv7: &rust_stable_armv7
<<: *rust_changes <<: *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: tags:
- redshift-rs-stable - redshift-rs-stable
before_script: before_script:
......
...@@ -19,3 +19,20 @@ durs-tui = { path = "../../lib/modules/tui" } ...@@ -19,3 +19,20 @@ durs-tui = { path = "../../lib/modules/tui" }
[features] [features]
ssl = ["durs-ws2p-v1-legacy/ssl"] 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
#!/bin/bash #!/bin/bash
# ------------
# Check params
# ------------
if [[ -z "${1}" ]]; then if [[ -z "${1}" ]]; then
echo "Fatal: no version given to build script" echo "Fatal: no version given to build script"
exit 1 exit 1
fi 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 # Functions
# --------- # ---------
...@@ -40,72 +58,40 @@ build_extra_server() { ...@@ -40,72 +58,40 @@ build_extra_server() {
# - # -
# Parameters: # Parameters:
# 1. Building type (either “desktop” or “server”). # 1. Building type (either “desktop” or “server”).
# 2. Debian package name.
build_deb_pack() { build_deb_pack() {
rm -rf "${RELEASES}/durs-armv7" #cd "bin/durs-${1}"
mkdir "${RELEASES}/durs-armv7" || exit 1 #cargo build --release --target=armv7-unknown-linux-gnueabihf --features=ssl
cp -r "${ROOT}/release/extra/debian/package/"* "${RELEASES}/durs-armv7" || exit 1 cargo deb --manifest-path="bin/durs-${1}/Cargo.toml" --target=${TARGET} --variant=arm --output "${BIN}/duniter-rust-${1}-${DURS_TAG}-armv7.deb"
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
create_desc "${BIN}/duniter-rust-${1}-${DURS_TAG}-armv7.deb" "${1}" "Linux (Ubuntu/Debian/Raspbian)" create_desc "${BIN}/duniter-rust-${1}-${DURS_TAG}-armv7.deb" "${1}" "Linux (Ubuntu/Debian/Raspbian)"
} }
# ----------- # ------------
# Prepare # BEGIN SCRIPT
# ----------- # ------------
DURS_TAG="v${1}"
DURS_DEB_VER=" ${1}"
TARGET="armv7-unknown-linux-gnueabihf"
# -----------
# Folders
# -----------
ROOT="${PWD}" # Prepare
WORK_NAME=work mkdir -p "${RELEASES}" "${BIN}" || exit 1
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
# ----------- # Clean up
# Downloads rm -rf "${BIN}/"*.{deb,tar.gz}{,.desc}
# -----------
cd "${DOWNLOADS}" # ---------------------
# Build Debian packages
# ---------------------
# ----------- build_deb_pack server
# Releases #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..." # Build .tar.gz
cd "${ROOT}/bin/durs-server" # ---------------
cargo build --release --features=ssl --target=${TARGET} || exit 1
# Create releases directory
mkdir -p "${RELEASES}/server_" || exit 1 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/${TARGET}/release/durs" "${RELEASES}/server_/" || exit 1
#cp "${ROOT}/target/release/durs" "${RELEASES}/desktop_" || 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 ...@@ -114,17 +100,7 @@ cp "${ROOT}/images/duniter-rs.png" "${RELEASES}/server_/" || exit 1
#cp "${ROOT}/images/duniter-rs.png" "${RELEASES}/desktop_" || exit 1 #cp "${ROOT}/images/duniter-rs.png" "${RELEASES}/desktop_" || exit 1
# --------------- # package tar.gz for server variant
# Build .tar.gz
# ---------------
cd "${RELEASES}/server_" cd "${RELEASES}/server_"
tar czf "${BIN}/duniter-rust-server-${DURS_TAG}-armv7.tar.gz" * || exit 1 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)" 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
#!/bin/bash #!/bin/bash
# -------------
# Check params
# -------------
if [[ -z "${1}" ]]; then if [[ -z "${1}" ]]; then
echo "Fatal: no version given to build script" echo "Fatal: no version given to build script"
exit 1 exit 1
fi 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 # Functions
# --------- # ---------
...@@ -40,73 +57,39 @@ build_extra_server() { ...@@ -40,73 +57,39 @@ build_extra_server() {
# - # -
# Parameters: # Parameters:
# 1. Building type (either “desktop” or “server”). # 1. Building type (either “desktop” or “server”).
# 2. Debian package name.
build_deb_pack() { build_deb_pack() {
rm -rf "${RELEASES}/durs-x64" cd "${ROOT}/bin/durs-${1}"
mkdir "${RELEASES}/durs-x64" || exit 1 cargo deb --output "${BIN}/duniter-rust-${1}-${DURS_TAG}-linux-x64.deb"
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
create_desc "${BIN}/duniter-rust-${1}-${DURS_TAG}-linux-x64.deb" "${1}" "Linux (Ubuntu/Debian)" create_desc "${BIN}/duniter-rust-${1}-${DURS_TAG}-linux-x64.deb" "${1}" "Linux (Ubuntu/Debian)"
} }
# ----------- # ------------
# Prepare # BEGIn SCRIPT
# ----------- # ------------
DURS_TAG="v${1}"
DURS_DEB_VER=" ${1}"
# Prepare
mkdir -p "${RELEASES}" "${BIN}" || exit 1
#rustup add target ${TARGET} || exit 1 #rustup add target ${TARGET} || exit 1
# ----------- # Clean up
# Folders rm -rf "${BIN}/"*.{deb,tar.gz}{,.desc}
# -----------
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}"
# ----------- # ---------------------
# Releases # Build Debian packages
# ----------- # ---------------------
# Prepare sources build_deb_pack server
mkdir -p "${RELEASES}/durs" || exit 1 #build_deb_pack desktop
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..." # Build .tar.gz
cd "${ROOT}/bin/durs-server" # ---------------
cargo build --release --features=ssl || exit 1
# Create releases directory
mkdir -p "${RELEASES}/server_" || exit 1 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}/server_/" || exit 1
#cp "${ROOT}/target/release/durs" "${RELEASES}/desktop_" || exit 1 #cp "${ROOT}/target/release/durs" "${RELEASES}/desktop_" || exit 1
...@@ -114,18 +97,7 @@ cp "${ROOT}/target/release/durs" "${RELEASES}/server_/" || 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}/server_/" || exit 1
#cp "${ROOT}/images/duniter-rs.png" "${RELEASES}/desktop_" || exit 1 #cp "${ROOT}/images/duniter-rs.png" "${RELEASES}/desktop_" || exit 1
# package tar.gz for server variant
# ---------------
# Build .tar.gz
# ---------------
cd "${RELEASES}/server_" cd "${RELEASES}/server_"
tar czf "${BIN}/duniter-rust-server-${DURS_TAG}-linux-x64.tar.gz" * || exit 1 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)" 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
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
#!/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
#!/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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment