X-Git-Url: https://git.distorted.org.uk/~mdw/termux-packages/blobdiff_plain/a5b4ca0cb76a94bc38c60cb6fcc2733f3d8d9f6c..6073310a1489b347c75f932c9586f136e40931f7:/build-package.sh diff --git a/build-package.sh b/build-package.sh index 408ee9b0..667d0fee 100755 --- a/build-package.sh +++ b/build-package.sh @@ -5,31 +5,16 @@ set -e -o pipefail -u # Read settings from .termuxrc if existing: test -f $HOME/.termuxrc && . $HOME/.termuxrc -# Configurable settings: -: ${ANDROID_HOME:="${HOME}/lib/android-sdk"} -: ${NDK:="${HOME}/lib/android-ndk"} -: ${TERMUX_MAKE_PROCESSES:='4'} -: ${TERMUX_TOPDIR:="$HOME/.termux-build"} -: ${TERMUX_ARCH:="aarch64"} # arm, aarch64, i686 or x86_64. -: ${TERMUX_PREFIX:='/data/data/com.termux/files/usr'} -: ${TERMUX_ANDROID_HOME:='/data/data/com.termux/files/home'} -: ${TERMUX_DEBUG:=""} -: ${TERMUX_PROCESS_DEB:=""} -: ${TERMUX_API_LEVEL:="21"} -: ${TERMUX_ANDROID_BUILD_TOOLS_VERSION:="24.0.1"} -: ${TERMUX_NDK_VERSION:="13"} -: ${TERMUX_IS_DISABLED:=""} - # Handle command-line arguments: show_usage () { echo "Usage: ./build-package.sh [-a ARCH] [-d] [-D] PACKAGE" - echo "Build a package." - echo "Use -d for debug build." - echo "-D for disabled package." - echo "" + echo "Build a package by creating a .deb file in the debs/ folder." + echo " -a The architecture to build for: aarch64(default), arm, i686, x86_64 or all." + echo " -d Build with debug symbols." + echo " -D Build a disabled package in disabled-packages/." exit 1 } -while getopts :a:h:d:D option +while getopts :a:hd:D option do case "$option" in a) TERMUX_ARCH="$OPTARG";; @@ -42,6 +27,28 @@ done shift $(($OPTIND-1)) if [ "$#" -ne 1 ]; then show_usage; fi +# Configurable settings: +: ${ANDROID_HOME:="${HOME}/lib/android-sdk"} +: ${NDK:="${HOME}/lib/android-ndk"} +: ${TERMUX_MAKE_PROCESSES:='4'} +: ${TERMUX_TOPDIR:="$HOME/.termux-build"} +: ${TERMUX_ARCH:="aarch64"} # arm, aarch64, i686 or x86_64. +if [ "x86_64" = $TERMUX_ARCH -o "aarch64" = $TERMUX_ARCH ]; then + TERMUX_ARCH_BITS=64 +else + TERMUX_ARCH_BITS=32 +fi +TERMUX_HOST_PLATFORM="${TERMUX_ARCH}-linux-android" +if [ $TERMUX_ARCH = "arm" ]; then TERMUX_HOST_PLATFORM="${TERMUX_HOST_PLATFORM}eabi"; fi +: ${TERMUX_PREFIX:='/data/data/com.termux/files/usr'} +: ${TERMUX_ANDROID_HOME:='/data/data/com.termux/files/home'} +: ${TERMUX_DEBUG:=""} +: ${TERMUX_PROCESS_DEB:=""} +: ${TERMUX_API_LEVEL:="21"} +: ${TERMUX_ANDROID_BUILD_TOOLS_VERSION:="24.0.1"} +: ${TERMUX_NDK_VERSION:="13"} +: ${TERMUX_IS_DISABLED:=""} + # Check the NDK: if [ ! -d "$NDK" ]; then echo 'ERROR: $NDK not defined as pointing at a directory - define it pointing at a android NDK installation!' @@ -63,7 +70,7 @@ if [[ $1 == *"/"* ]]; then export TERMUX_PKG_BUILDER_DIR=`realpath $1` else # Package name: - if [ -n $TERMUX_IS_DISABLED ]; then + if [ -n "$TERMUX_IS_DISABLED" ]; then export TERMUX_PKG_BUILDER_DIR=$TERMUX_SCRIPTDIR/disabled-packages/$TERMUX_PKG_NAME else export TERMUX_PKG_BUILDER_DIR=$TERMUX_SCRIPTDIR/packages/$TERMUX_PKG_NAME @@ -123,7 +130,6 @@ TERMUX_PKG_HOMEPAGE="" TERMUX_PKG_DESCRIPTION="FIXME:Add description" TERMUX_PKG_FOLDERNAME="" TERMUX_PKG_KEEP_STATIC_LIBRARIES="false" -TERMUX_PKG_KEEP_HEADER_FILES="false" TERMUX_PKG_ESSENTIAL="" TERMUX_PKG_CONFLICTS="" # https://www.debian.org/doc/debian-policy/ch-relationships.html#s-conflicts TERMUX_PKG_REPLACES="" @@ -178,11 +184,13 @@ termux_download() { # Optional checksum argument: local EXPECTED=$3 if [ $EXPECTED != $ACTUAL_CHECKSUM ]; then - >&2 printf "Wrong checksum for $URL:\nExpected: $EXPECTED\nActual: $ACTUAL_CHECKSUM\n" + >&2 printf "Wrong checksum for %s:\nExpected: %s\nActual: %s\n" \ + "$URL" "$EXPECTED" "$ACTUAL_CHECKSUM" exit 1 fi else - printf "No validation of checksum for $URL:\nActual: $ACTUAL_CHECKSUM\n" + printf "No validation of checksum for %s:\nActual: %s\n" \ + "$URL" "$ACTUAL_CHECKSUM" fi mv "$TMPFILE" "$DESTINATION" return @@ -245,7 +253,7 @@ termux_step_post_extract_package () { # After termux_step_post_extract_package() and before termux_step_patch_package() termux_step_host_build () { $TERMUX_PKG_SRCDIR/configure ${TERMUX_PKG_EXTRA_HOSTBUILD_CONFIGURE_ARGS} - make + make -j $TERMUX_MAKE_PROCESSES } # This should not be overridden @@ -560,7 +568,7 @@ if [ -n "${TERMUX_PKG_BLACKLISTED_ARCHES:=""}" -a "$TERMUX_PKG_BLACKLISTED_ARCHE fi echo "termux - building $1 for arch $TERMUX_ARCH..." -test -t 1 && printf "\033]0;$1...\007" +test -t 1 && printf "\033]0;%s...\007" "$1" # Compute full version: TERMUX_PKG_FULLVERSION=$TERMUX_PKG_VERSION @@ -578,14 +586,6 @@ TERMUX_STANDALONE_TOOLCHAIN+="-v2" # We put this after system PATH to avoid picking up toolchain stripped python export PATH=$PATH:$TERMUX_STANDALONE_TOOLCHAIN/bin -if [ "x86_64" = $TERMUX_ARCH -o "aarch64" = $TERMUX_ARCH ]; then - TERMUX_ARCH_BITS=64 -else - TERMUX_ARCH_BITS=32 -fi -TERMUX_HOST_PLATFORM="${TERMUX_ARCH}-linux-android" -if [ $TERMUX_ARCH = "arm" ]; then TERMUX_HOST_PLATFORM="${TERMUX_HOST_PLATFORM}eabi"; fi - export AR=$TERMUX_HOST_PLATFORM-ar if [ "$TERMUX_PKG_CLANG" = "no" ]; then export AS=${TERMUX_HOST_PLATFORM}-gcc @@ -866,15 +866,15 @@ $TERMUX_TAR -cJf $TERMUX_PKG_PACKAGEDIR/control.tar.xz . # In the .deb ar file there should be a file "debian-binary" with "2.0" as the content: TERMUX_PKG_DEBFILE=$TERMUX_DEBDIR/${TERMUX_PKG_NAME}_${TERMUX_PKG_FULLVERSION}_${TERMUX_ARCH}.deb # Create the actual .deb file: -ar cr $TERMUX_PKG_DEBFILE \ - $TERMUX_COMMON_CACHEDIR/debian-binary \ - $TERMUX_PKG_PACKAGEDIR/control.tar.xz \ - $TERMUX_PKG_PACKAGEDIR/data.tar.xz +ar cr "$TERMUX_PKG_DEBFILE" \ + "$TERMUX_COMMON_CACHEDIR/debian-binary" \ + "$TERMUX_PKG_PACKAGEDIR/control.tar.xz" \ + "$TERMUX_PKG_PACKAGEDIR/data.tar.xz" if [ "$TERMUX_PROCESS_DEB" != "" ]; then - $TERMUX_PROCESS_DEB $TERMUX_PKG_DEBFILE + $TERMUX_PROCESS_DEB "$TERMUX_PKG_DEBFILE" fi echo "termux - build of '$1' done" -test -t 1 && printf "\033]0;$1 - DONE\007" +test -t 1 && printf "\033]0;%s - DONE\007" "$1" exit 0