termux_error_exit "Unsupported arch: $TERMUX_ARCH"
fi
- local TERMUX_GO_VERSION=go1.9
+ local TERMUX_GO_VERSION=go1.9.2
local TERMUX_GO_PLATFORM=linux-amd64
local TERMUX_BUILDGO_FOLDER=$TERMUX_COMMON_CACHEDIR/${TERMUX_GO_VERSION}
rm -Rf "$TERMUX_COMMON_CACHEDIR/go" "$TERMUX_BUILDGO_FOLDER"
termux_download https://storage.googleapis.com/golang/${TERMUX_GO_VERSION}.${TERMUX_GO_PLATFORM}.tar.gz \
"$TERMUX_BUILDGO_TAR" \
- d70eadefce8e160638a9a6db97f7192d8463069ab33138893ad3bf31b0650a79
+ de874549d9a8d8d8062be05808509c09a88a248e77ec14eb77453530829ac02b
( cd "$TERMUX_COMMON_CACHEDIR"; tar xf "$TERMUX_BUILDGO_TAR"; mv go "$TERMUX_BUILDGO_FOLDER"; rm "$TERMUX_BUILDGO_TAR" )
}
-# Utility function for cmake-built packages to setup a current ninja.
+# Utility function to setup a current ninja build system.
termux_setup_ninja() {
- local NINJA_VERSION=1.7.2
+ local NINJA_VERSION=1.8.2
local NINJA_FOLDER=$TERMUX_COMMON_CACHEDIR/ninja-$NINJA_VERSION
if [ ! -x $NINJA_FOLDER/ninja ]; then
mkdir -p $NINJA_FOLDER
local NINJA_ZIP_FILE=$TERMUX_PKG_TMPDIR/ninja-$NINJA_VERSION.zip
termux_download https://github.com/ninja-build/ninja/releases/download/v$NINJA_VERSION/ninja-linux.zip \
$NINJA_ZIP_FILE \
- 38fa8cfb9c1632a5cdf7a32fe1a7c5aa89e96c1d492c28624f4cc018e68458b9
+ d2fea9ff33b3ef353161ed906f260d565ca55b8ca0568fa07b1d2cab90a84a07
unzip $NINJA_ZIP_FILE -d $NINJA_FOLDER
fi
export PATH=$NINJA_FOLDER:$PATH
}
-# Utility function for cmake-built packages to setup a current meson.
+# Utility function to setup a current meson build system.
termux_setup_meson() {
termux_setup_ninja
- local MESON_VERSION=0.42.0
+ local MESON_VERSION=0.43.0
local MESON_FOLDER=$TERMUX_COMMON_CACHEDIR/meson-$MESON_VERSION
if [ ! -d "$MESON_FOLDER" ]; then
local MESON_TAR_NAME=meson-$MESON_VERSION.tar.gz
termux_download \
https://github.com/mesonbuild/meson/releases/download/$MESON_VERSION/meson-$MESON_VERSION.tar.gz \
$MESON_TAR_FILE \
- a74c7387a3dd8171e931bcd948355f7f9529368eae72c3c22a9beef6c2e73498
+ c513eca90e0d70bf14cd1eaafea2fa91cf40a73326a7ff61f08a005048057340
tar xf "$MESON_TAR_FILE" -C "$TERMUX_COMMON_CACHEDIR"
(cd $MESON_FOLDER && patch -p1 < $TERMUX_SCRIPTDIR/scripts/meson-android.patch)
fi
TERMUX_MESON="$MESON_FOLDER/meson.py"
- TERMUX_MESON_CROSSFILE=$TERMUX_COMMON_CACHEDIR/meson-crossfile-$TERMUX_ARCH-v1.txt
+ TERMUX_MESON_CROSSFILE=$TERMUX_COMMON_CACHEDIR/meson-crossfile-$TERMUX_ARCH-v2.txt
if [ ! -f $TERMUX_MESON_CROSSFILE ]; then
local MESON_CPU MESON_CPU_FAMILY
if [ $TERMUX_ARCH = "arm" ]; then
c = '$CC'
cpp = '$CXX'
ld = '$LD'
- pkg-config = '$PKG_CONFIG'
+ pkgconfig = '$PKG_CONFIG'
strip = '$STRIP'
[properties]
needs_exe_wrapper = true
fi
}
-# Utility function for cmake-built packages to setup a current cmake.
+# Utility function to setup a current cmake build system
termux_setup_cmake() {
local TERMUX_CMAKE_MAJORVESION=3.9
- local TERMUX_CMAKE_MINORVERSION=2
+ local TERMUX_CMAKE_MINORVERSION=5
local TERMUX_CMAKE_VERSION=$TERMUX_CMAKE_MAJORVESION.$TERMUX_CMAKE_MINORVERSION
local TERMUX_CMAKE_TARNAME=cmake-${TERMUX_CMAKE_VERSION}-Linux-x86_64.tar.gz
local TERMUX_CMAKE_TARFILE=$TERMUX_PKG_TMPDIR/$TERMUX_CMAKE_TARNAME
if [ ! -d "$TERMUX_CMAKE_FOLDER" ]; then
termux_download https://cmake.org/files/v$TERMUX_CMAKE_MAJORVESION/$TERMUX_CMAKE_TARNAME \
"$TERMUX_CMAKE_TARFILE" \
- f4e1e848e21c3fba134fbddd793860ba9a17c35d0aeaa3bd83149a6ec1bf9fbb
+ bbe7e2ea703835661bb92fedd485d62dc587ee36daaedaa0a7bebcbf937a1cea
rm -Rf "$TERMUX_PKG_TMPDIR/cmake-${TERMUX_CMAKE_VERSION}-Linux-x86_64"
tar xf "$TERMUX_CMAKE_TARFILE" -C "$TERMUX_PKG_TMPDIR"
mv "$TERMUX_PKG_TMPDIR/cmake-${TERMUX_CMAKE_VERSION}-Linux-x86_64" \
# Handle command-line arguments:
_show_usage () {
- echo "Usage: ./build-package.sh [-a ARCH] [-d] [-D] PACKAGE"
+ echo "Usage: ./build-package.sh [-a ARCH] [-d] [-D] [-f] [-q] [-s] PACKAGE"
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/."
echo " -f Force build even if package has already been built."
+ echo " -q Quiet build"
echo " -s Skip dependency check."
exit 1
}
- while getopts :a:hdDfs option; do
+ while getopts :a:hdDfqs option; do
case "$option" in
a) TERMUX_ARCH="$OPTARG";;
h) _show_usage;;
d) TERMUX_DEBUG=true;;
D) local TERMUX_IS_DISABLED=true;;
f) TERMUX_FORCE_BUILD=true;;
+ q) export TERMUX_QUIET_BUILD=true;;
s) export TERMUX_SKIP_DEPCHECK=true;;
?) termux_error_exit "./build-package.sh: illegal option -$OPTARG";;
esac
if [ ! -d "$1" ]; then termux_error_exit "'$1' seems to be a path but is not a directory"; fi
export TERMUX_PKG_BUILDER_DIR
TERMUX_PKG_BUILDER_DIR=$(realpath "$1")
- # Skip depcheck for external package:
- TERMUX_SKIP_DEPCHECK=true
else
# Package name:
if [ -n "${TERMUX_IS_DISABLED=""}" ]; then
TERMUX_PKG_BUILD_DEPENDS=""
TERMUX_PKG_HOMEPAGE=""
TERMUX_PKG_DESCRIPTION="FIXME:Add description"
- TERMUX_PKG_FOLDERNAME=""
TERMUX_PKG_KEEP_STATIC_LIBRARIES="false"
TERMUX_PKG_ESSENTIAL=""
TERMUX_PKG_CONFLICTS="" # https://www.debian.org/doc/debian-policy/ch-relationships.html#s-conflicts
if [ -z "${TERMUX_SKIP_DEPCHECK:=""}" ]; then
local p TERMUX_ALL_DEPS
- TERMUX_ALL_DEPS=$(./scripts/buildorder.py "$TERMUX_PKG_NAME")
+ TERMUX_ALL_DEPS=$(./scripts/buildorder.py "$TERMUX_PKG_BUILDER_DIR")
for p in $TERMUX_ALL_DEPS; do
- if [ "$p" != "$TERMUX_PKG_NAME" ]; then
- echo "Building dependency $p if necessary..."
- ./build-package.sh -a $TERMUX_ARCH -s "$p"
- fi
+ echo "Building dependency $p if necessary..."
+ ./build-package.sh -a $TERMUX_ARCH -s "$p"
done
fi
termux_download \
https://raw.githubusercontent.com/termux/termux-elf-cleaner/v$TERMUX_ELF_CLEANER_VERSION/termux-elf-cleaner.cpp \
$TERMUX_ELF_CLEANER_SRC \
- 11a38372f4d0e36b7556382c7ecffecae35cee8b68daaee2dbee025f758e17ee
+ 62c3cf9813756a1b262108fbc39684c5cfd3f9a69b376276bb1ac6af138f5fa2
if [ "$TERMUX_ELF_CLEANER_SRC" -nt "$TERMUX_ELF_CLEANER" ]; then
g++ -std=c++11 -Wall -Wextra -pedantic -Os "$TERMUX_ELF_CLEANER_SRC" -o "$TERMUX_ELF_CLEANER"
fi
local file="$TERMUX_PKG_CACHEDIR/$filename"
termux_download "$TERMUX_PKG_SRCURL" "$file" "$TERMUX_PKG_SHA256"
- if [ "x$TERMUX_PKG_FOLDERNAME" = "x" ]; then
- folder="${filename%%.t*}" && folder="${folder%%.zip}"
- folder="${folder/_/-}" # dpkg uses _ in tar filename, but - in folder
- else
- folder=$TERMUX_PKG_FOLDERNAME
- fi
- rm -Rf $folder
+ local folder
+ set +o pipefail
if [ "${file##*.}" = zip ]; then
+ folder=`unzip -qql "$file" | head -n1 | tr -s ' ' | cut -d' ' -f5-`
+ rm -Rf $folder
unzip -q "$file"
+ mv $folder "$TERMUX_PKG_SRCDIR"
else
- tar xf "$file"
+ mkdir "$TERMUX_PKG_SRCDIR"
+ tar xf "$file" -C "$TERMUX_PKG_SRCDIR" --strip-components=1
fi
- mv $folder "$TERMUX_PKG_SRCDIR"
+ set -o pipefail
}
# Hook for packages to act just after the package has been extracted.
if [ "$TERMUX_PKG_EXTRA_CONFIGURE_ARGS" != "${TERMUX_PKG_EXTRA_CONFIGURE_ARGS/--libexecdir=/}" ]; then
LIBEXEC_FLAG=""
fi
+ QUIET_BUILD=
+ if [ ! -z ${TERMUX_QUIET_BUILD+x} ]; then
+ QUIET_BUILD="--enable-silent-rules"
+ fi
# Some packages provides a $PKG-config script which some configure scripts pickup instead of pkg-config:
mkdir "$TERMUX_PKG_TMPDIR/config-scripts"
$DISABLE_NLS \
$ENABLE_SHARED \
$DISABLE_STATIC \
- $LIBEXEC_FLAG
+ $LIBEXEC_FLAG \
+ $QUIET_BUILD
}
termux_step_configure_cmake () {