forked from jahway603/hush-docs
jahway603
6 months ago
4 changed files with 264 additions and 2 deletions
@ -0,0 +1,139 @@ |
|||||
|
#!/usr/bin/env bash |
||||
|
# Copyright (c) 2016-2023 The Hush developers |
||||
|
# Distributed under the GPLv3 software license, see the accompanying |
||||
|
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html |
||||
|
|
||||
|
# For use with https://git.hush.is/jahway603/hush-docs/src/branch/master/advanced/cross-compile-hush-full-node-to-aarch64-with-docker.md, |
||||
|
# Please follow that |
||||
|
set -eu -o pipefail |
||||
|
|
||||
|
# Check if cmake, a new dependency for randomx support, is installed on system and exits if it is not |
||||
|
if ! [ -x "$(command -v cmake)" ]; then |
||||
|
echo 'Error: cmake is not installed. Install cmake and try again.' >&2 |
||||
|
exit 1 |
||||
|
fi |
||||
|
|
||||
|
function cmd_pref() { |
||||
|
if type -p "$2" > /dev/null; then |
||||
|
eval "$1=$2" |
||||
|
else |
||||
|
eval "$1=$3" |
||||
|
fi |
||||
|
} |
||||
|
cat <<'EOF' |
||||
|
.~~~~~~~~~~~~~~~~. |
||||
|
{{ Building Hush!! }} |
||||
|
`~~~~~~~~~~~~~~~~` |
||||
|
\ ^__^ |
||||
|
\ (@@)\_______ |
||||
|
(__)\ HUSH )\/\ $ |
||||
|
z zz ||----w | z | |
||||
|
zz zz z || z ||xxx z z|z zz |
||||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz |
||||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz |
||||
|
EOF |
||||
|
|
||||
|
# If a g-prefixed version of the command exists, use it preferentially. |
||||
|
function gprefix() { |
||||
|
cmd_pref "$1" "g$2" "$2" |
||||
|
} |
||||
|
|
||||
|
gprefix READLINK readlink |
||||
|
cd "$(dirname "$("$READLINK" -f "$0")")/.." |
||||
|
|
||||
|
# Allow user overrides to $MAKE. Typical usage for users who need it: |
||||
|
# MAKE=gmake ./util/build.sh -j$(nproc) |
||||
|
if [[ -z "${MAKE-}" ]]; then |
||||
|
MAKE=make |
||||
|
fi |
||||
|
|
||||
|
# Allow overrides to $BUILD and $HOST for porters. Most users will not need it. |
||||
|
# BUILD=i686-pc-linux-gnu ./util/build.sh |
||||
|
if [[ -z "${BUILD-}" ]]; then |
||||
|
BUILD="$(./depends/config.guess)" |
||||
|
fi |
||||
|
if [[ -z "${HOST-}" ]]; then |
||||
|
HOST="$BUILD" |
||||
|
fi |
||||
|
|
||||
|
# Allow users to set arbitrary compile flags. Most users will not need this. |
||||
|
if [[ -z "${CONFIGURE_FLAGS-}" ]]; then |
||||
|
CONFIGURE_FLAGS="" |
||||
|
fi |
||||
|
|
||||
|
if [ "x$*" = 'x--help' ] |
||||
|
then |
||||
|
cat ./util/dragon.txt |
||||
|
cat <<EOF |
||||
|
Welcome To The Hush Build System, Here Be Dragons! |
||||
|
Usage: |
||||
|
$0 --help |
||||
|
Show this help message and exit. |
||||
|
$0 [ --enable-lcov || --disable-tests ] [ --disable-mining ] [ --disable-libs ] [ MAKEARGS... ] |
||||
|
Build Hush and most of its transitive dependencies from source. MAKEARGS are applied to both dependencies and Hush itself. |
||||
|
If --enable-lcov is passed, Hush is configured to add coverage instrumentation, thus enabling "make cov" to work. |
||||
|
If --disable-tests is passed instead, the Hush tests are not built. |
||||
|
If --disable-mining is passed, Hush is configured to not build any mining code. It must be passed after the test arguments, if present. |
||||
|
It must be passed after the test/mining arguments, if present. |
||||
|
EOF |
||||
|
exit 0 |
||||
|
fi |
||||
|
|
||||
|
set -x |
||||
|
|
||||
|
# If --enable-lcov is the first argument, enable lcov coverage support: |
||||
|
LCOV_ARG='' |
||||
|
HARDENING_ARG='--enable-hardening' |
||||
|
TEST_ARG='' |
||||
|
if [ "x${1:-}" = 'x--enable-lcov' ] |
||||
|
then |
||||
|
LCOV_ARG='--enable-lcov' |
||||
|
HARDENING_ARG='--disable-hardening' |
||||
|
shift |
||||
|
elif [ "x${1:-}" = 'x--disable-tests' ] |
||||
|
then |
||||
|
TEST_ARG='--enable-tests=no' |
||||
|
shift |
||||
|
fi |
||||
|
|
||||
|
# If --disable-mining is the next argument, disable mining code: |
||||
|
MINING_ARG='' |
||||
|
if [ "x${1:-}" = 'x--disable-mining' ] |
||||
|
then |
||||
|
MINING_ARG='--enable-mining=no' |
||||
|
shift |
||||
|
fi |
||||
|
|
||||
|
# Just show the useful info |
||||
|
eval "$MAKE" --version | head -n2 |
||||
|
as --version | head -n1 |
||||
|
as --version | tail -n1 |
||||
|
ld -v |
||||
|
|
||||
|
HOST="$HOST" BUILD="$BUILD" "$MAKE" "$@" -C ./depends/ V=1 |
||||
|
|
||||
|
./autogen.sh |
||||
|
|
||||
|
CONFIG_SITE="$PWD/depends/$HOST/share/config.site" ./configure "$HARDENING_ARG" "$LCOV_ARG" "$TEST_ARG" "$MINING_ARG" $CONFIGURE_FLAGS CXXFLAGS='-g' |
||||
|
|
||||
|
# Build CryptoConditions stuff |
||||
|
WD=$PWD |
||||
|
cd src/cc |
||||
|
echo $PWD |
||||
|
./makecustom |
||||
|
cd $WD |
||||
|
|
||||
|
# Build RandomX |
||||
|
cd src/RandomX |
||||
|
if [ -d "build" ] |
||||
|
then |
||||
|
ls -la build/librandomx* |
||||
|
else |
||||
|
mkdir build && cd build |
||||
|
cmake -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_STRIP=/usr/bin/aarch64-linux-gnu-strip -DARCH_ID=aarch64 .. |
||||
|
make |
||||
|
fi |
||||
|
|
||||
|
cd $WD |
||||
|
|
||||
|
"$MAKE" "$@" V=1 |
@ -0,0 +1,120 @@ |
|||||
|
#!/usr/bin/env bash |
||||
|
# Copyright (c) 2016-2023 The Hush developers |
||||
|
# Distributed under the GPLv3 software license, see the accompanying |
||||
|
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html |
||||
|
# |
||||
|
# Remix for SBC (Single Board Computer) like PineBook, Rock64, Raspberry Pi, etc. |
||||
|
## Usage: ./util/build-debian-package-ARM.sh |
||||
|
|
||||
|
# Pre-requisite checks |
||||
|
# 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 |
||||
|
|
||||
|
echo "Let There Be Hush Debian ARM Packages" |
||||
|
echo "" |
||||
|
echo " ______" |
||||
|
echo " |\_______________ (_____\\______________" |
||||
|
echo "HH======#H###############H#######################" |
||||
|
echo ' ~"""""""""""""""`##(_))#H\"""""Y########' |
||||
|
echo " )) \#H\ ##Y###" |
||||
|
echo 'dew " }#H)' |
||||
|
echo "" |
||||
|
|
||||
|
set -e |
||||
|
set -x |
||||
|
|
||||
|
BUILD_PATH="/tmp/hush-debian-$$" |
||||
|
PACKAGE_NAME="hush" |
||||
|
SRC_PATH=`pwd` |
||||
|
SRC_DEB=$SRC_PATH/contrib/debian |
||||
|
SRC_DOC=$SRC_PATH/doc |
||||
|
ARCH="aarch64" |
||||
|
|
||||
|
umask 022 |
||||
|
|
||||
|
if [ ! -d $BUILD_PATH ]; then |
||||
|
mkdir $BUILD_PATH |
||||
|
fi |
||||
|
|
||||
|
PACKAGE_VERSION=$($SRC_PATH/src/hushd --version|grep version|cut -d' ' -f4|cut -d- -f1|sed 's/v//g') |
||||
|
DEBVERSION=$(echo $PACKAGE_VERSION | sed 's/-beta/~beta/' | sed 's/-rc/~rc/' | sed 's/-/+/') |
||||
|
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 |
||||
|
|
||||
|
cp $SRC_PATH/contrib/asmap/asmap.dat $DEB_SHR |
||||
|
cp $SRC_PATH/sapling-spend.params $DEB_SHR |
||||
|
cp $SRC_PATH/sapling-output.params $DEB_SHR |
||||
|
cp $SRC_PATH/src/hushd $DEB_BIN |
||||
|
strip $DEB_BIN/hushd |
||||
|
cp $SRC_PATH/src/hush-cli $DEB_BIN |
||||
|
strip $DEB_BIN/hush-cli |
||||
|
cp $SRC_PATH/src/hush-tx $DEB_BIN |
||||
|
strip $DEB_BIN/hush-tx |
||||
|
|
||||
|
# these are scripts and don't require a strip |
||||
|
cp $SRC_PATH/src/dragonx-cli $DEB_BIN |
||||
|
cp $SRC_PATH/src/dragonxd $DEB_BIN |
||||
|
|
||||
|
cp $SRC_PATH/src/hush-smart-chain $DEB_BIN |
||||
|
#cp $SRC_DEB/changelog $DEB_DOC/changelog.Debian |
||||
|
cp $SRC_DEB/copyright $DEB_DOC |
||||
|
cp -r $SRC_DEB/examples $DEB_DOC |
||||
|
# Copy manpages |
||||
|
cp $SRC_DOC/man/hushd.1 $DEB_MAN/hushd.1 |
||||
|
cp $SRC_DOC/man/hush-cli.1 $DEB_MAN/hush-cli.1 |
||||
|
cp $SRC_DOC/man/hush-tx.1 $DEB_MAN/hush-tx.1 |
||||
|
|
||||
|
# Copy bash completion files |
||||
|
cp $SRC_PATH/contrib/hushd.bash-completion $DEB_CMP/hushd |
||||
|
cp $SRC_PATH/contrib/hush-cli.bash-completion $DEB_CMP/hush-cli |
||||
|
cp $SRC_PATH/contrib/hush-tx.bash-completion $DEB_CMP/hush-tx |
||||
|
# Gzip files |
||||
|
#gzip --best -n $DEB_DOC/changelog |
||||
|
#gzip --best -n $DEB_DOC/changelog.Debian |
||||
|
gzip --best -n $DEB_MAN/hushd.1 |
||||
|
gzip --best -n $DEB_MAN/hush-cli.1 |
||||
|
gzip --best -n $DEB_MAN/hush-tx.1 |
||||
|
|
||||
|
cd $SRC_PATH/contrib |
||||
|
|
||||
|
# Create the control file |
||||
|
dpkg-shlibdeps $DEB_BIN/hushd $DEB_BIN/hush-cli $DEB_BIN/hush-tx |
||||
|
dpkg-gencontrol -P$BUILD_DIR -v$DEBVERSION |
||||
|
#dpkg-gencontrol -P$BUILD_DIR |
||||
|
|
||||
|
# 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…
Reference in new issue