Browse Source

Added a Debian Package build script

pull/150/head
jahway603 2 weeks ago
parent
commit
4ad9ab8492
  1. 7
      README.md
  2. 3
      contrib/debian/control
  3. 124
      util/build-debian-package.sh

7
README.md

@ -44,7 +44,7 @@ Choose: 1) Proceed with installation (default)
source $HOME/.cargo/env
rustup install 1.49
rustup default 1.49
rustup -V
rustc -V
```
**Nothing below will work without the Linux "build-essential" package. Check that your system has it installed. If not, and you're using a Ubuntu/Debian distro, then you can install with `apt install build-essential`.**
@ -60,6 +60,11 @@ sudo apt-get -y install build-essential qtbase5-dev qt5-qmake qtcreator qttools5
sudo apt-get -y install build-essential qt5-default qt5-qmake qtcreator qttools5-dev-tools
```
##### Debian 11.x:
```shell script
sudo apt-get -y install build-essential qtbase5-dev qt5-qmake qtcreator qttools5-dev-tools
```
Compiling can take some time, so be patient and wait for it to finish. It will take potentially a long time for slower systems. Be Patient and please report compiler problems!
```shell script

3
contrib/debian/control

@ -10,4 +10,5 @@ Vcs-Git: https://git.hush.is/hush/SilentDragonLite.git
Package: silentdragonlite
Architecture: amd64 arm64
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: SilentDragonLite is a lightwallet for HUSH which does not require you to download the full blockchain.
Description: Lightwallet (litewallet) for HUSH
This lightwallet does not require you to download the full blockchain.

124
util/build-debian-package.sh

@ -0,0 +1,124 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2024 The Hush developers
# Distributed under the GPLv3 software license, see the accompanying
# file LICENSE or https://www.gnu.org/licenses/gpl-3.0.en.html
#
## USAGE
# ./util/build-debian-package.sh <architecture flag>
#
## Example to build debian pkg for amd64 (most common):
# ./util/build-debian-package.sh --amd64
#
## Example to build debian pkg for ARM (aarch64):
# ./util/build-debian-package.sh --arm
#
## USAGE Requirements:
# - Needs to be run in SDL root directory
# - Needs to be run on a Debian system (NOT UBUNTU)
echo "Let's see who read the USAGE EXAMPLES in this script or not..."
echo ""
# Check if it's already built on system and exit if it is not
if ! [ -x "$(command -v ./SilentDragonLite)" ] || [ -x "$(command -v ./silentdragonlite)" ]; then
echo 'Error: SilentDragonLite is not compiled yet. Follow the instructions in README.md first and try again.' >&2
echo ""
exit 1
fi
# Check if lintian is installed and exit if it is not
if ! [ -x "$(command -v lintian)" ]; then
echo 'Error: lintian is not installed yet. Consult your Linux version package manager...' >&2
echo 'On Debian/Ubuntu, try "sudo apt install lintian"'
echo ""
exit 1
fi
# Check if fakeroot is installed and exit if it is not
if ! [ -x "$(command -v fakeroot)" ]; then
echo 'Error: fakeroot is not installed yet. Consult your Linux version package manager...' >&2
echo 'On Debian/Ubuntu, try "sudo apt install fakeroot"'
echo ""
exit 1
fi
## Command line options section
# Check if there are no CLI options entered and exit if so
if [ -z "$1" ]; then
echo 'YOU DOING IT WRONG...' >&2
echo 'Read the Usage Examples at top of this script & TRY AGAIN' >&2
exit 1
fi
# Architecture CLI option
if [ "$1" = "--amd64" -o "$1" = "--a64" ]; then
ARCH="amd64"
elif [ "$1" = "--arm" -o "$1" = "--ARM" -o "$1" = "--aarch64" ]; then
ARCH="aarch64"
fi
PACKAGE_VERSION=$(grep APP_VERSION src/version.h |cut -d\" -f2)
echo "Let There Be Hush SilentDragonLite Debian Packages!"
echo ""
echo "((_,...,_))"
echo " |o o|"
echo " \ /"
echo " ^_^ cp97"
echo ""
set -e
set -x
BUILD_PATH="/tmp/silentdragonlite-debian-$$"
PACKAGE_NAME="silentdragonlite"
SRC_PATH=`pwd`
SRC_DEB=$SRC_PATH/contrib/debian
SRC_DOC=$SRC_PATH/doc
umask 022
if [ ! -d $BUILD_PATH ]; then
mkdir $BUILD_PATH
fi
DEBVERSION=$(echo $PACKAGE_VERSION)
BUILD_DIR="$BUILD_PATH/$PACKAGE_NAME-$PACKAGE_VERSION-$ARCH"
if [ -d $BUILD_DIR ]; then
rm -R $BUILD_DIR
fi
DEB_BIN=$BUILD_DIR/usr/bin
DEB_CMP=$BUILD_DIR/usr/share/bash-completion/completions
DEB_DOC=$BUILD_DIR/usr/share/doc/$PACKAGE_NAME
DEB_MAN=$BUILD_DIR/usr/share/man/man1
DEB_SHR=$BUILD_DIR/usr/share/hush
mkdir -p $BUILD_DIR/DEBIAN $DEB_CMP $DEB_BIN $DEB_DOC $DEB_MAN $DEB_SHR
chmod 0755 -R $BUILD_DIR/*
# Package maintainer scripts (currently empty)
#cp $SRC_DEB/postinst $BUILD_DIR/DEBIAN
#cp $SRC_DEB/postrm $BUILD_DIR/DEBIAN
#cp $SRC_DEB/preinst $BUILD_DIR/DEBIAN
#cp $SRC_DEB/prerm $BUILD_DIR/DEBIAN
# Copy binary
cp $SRC_PATH/SilentDragonLite $DEB_BIN/silentdragonlite
strip $DEB_BIN/silentdragonlite
cp $SRC_DEB/changelog $DEB_DOC
cp $SRC_DEB/copyright $DEB_DOC
cd $SRC_PATH/contrib
# Create the control file
# had to comment line below to move forward in this build script...
#dpkg-shlibdeps $DEB_BIN/silentdragonlite
dpkg-gencontrol -P$BUILD_DIR -v$DEBVERSION
# Create the Debian package
fakeroot dpkg-deb --build $BUILD_DIR
cp $BUILD_PATH/$PACKAGE_NAME-$PACKAGE_VERSION-$ARCH.deb $SRC_PATH
shasum -a 256 $SRC_PATH/$PACKAGE_NAME-$PACKAGE_VERSION-$ARCH.deb
# Analyze with Lintian, reporting bugs and policy violations
lintian -i $SRC_PATH/$PACKAGE_NAME-$PACKAGE_VERSION-$ARCH.deb
exit 0
Loading…
Cancel
Save