X-Git-Url: https://git.distorted.org.uk/~mdw/termux-packages/blobdiff_plain/ed021630df742435f7b8b0b3d21e74d9bab6e182..382cfb780ca9a40f80e3932544bd32aeccb66e5a:/build-package.sh?ds=sidebyside diff --git a/build-package.sh b/build-package.sh index c1289ef3..c670f37d 100755 --- a/build-package.sh +++ b/build-package.sh @@ -17,7 +17,7 @@ test -f $HOME/.termuxrc && . $HOME/.termuxrc : ${TERMUX_DEBUG:=""} : ${TERMUX_PROCESS_DEB:=""} : ${TERMUX_API_LEVEL:="21"} -: ${TERMUX_ANDROID_BUILD_TOOLS_VERSION:="23.0.3"} +: ${TERMUX_ANDROID_BUILD_TOOLS_VERSION:="24.0.1"} : ${TERMUX_NDK_VERSION:="12"} # Handle command-line arguments: @@ -97,6 +97,8 @@ test -t 1 && printf "\033]0;$1...\007" # to avoid stuff like arm-linux-androideabi-ld there to conflict with ones from # the standalone toolchain. TERMUX_DX=$ANDROID_HOME/build-tools/$TERMUX_ANDROID_BUILD_TOOLS_VERSION/dx +TERMUX_JACK=$ANDROID_HOME/build-tools/$TERMUX_ANDROID_BUILD_TOOLS_VERSION/jack.jar +TERMUX_JILL=$ANDROID_HOME/build-tools/$TERMUX_ANDROID_BUILD_TOOLS_VERSION/jill.jar # We put this after system PATH to avoid picking up toolchain stripped python export PATH=$PATH:$TERMUX_STANDALONE_TOOLCHAIN/bin @@ -150,7 +152,7 @@ elif [ $TERMUX_ARCH = "aarch64" ]; then LDFLAGS+=" -Wl,-rpath-link,$TERMUX_PREFIX/lib" LDFLAGS+=" -Wl,-rpath-link,$TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib" elif [ $TERMUX_ARCH = "x86_64" ]; then - continue + : else echo "Error: Invalid arch '$TERMUX_ARCH' - support arches are 'arm', 'i686', 'aarch64', 'x86_64'" exit 1 @@ -184,13 +186,19 @@ if [ ! -d $TERMUX_STANDALONE_TOOLCHAIN ]; then else _TERMUX_TOOLCHAIN="${_TERMUX_NDK_TOOLCHAIN_NAME}-clang" fi + + # Do not put toolchain in place until we are done with setup, to avoid having a half setup + # toolchain left in place if something goes wrong (or process is just aborted): + _TERMUX_TOOLCHAIN_TMPDIR=${TERMUX_STANDALONE_TOOLCHAIN}-tmp + rm -Rf $_TERMUX_TOOLCHAIN_TMPDIR + bash $NDK/build/tools/make-standalone-toolchain.sh --platform=android-$TERMUX_API_LEVEL --toolchain=${_TERMUX_TOOLCHAIN} \ - --install-dir=$TERMUX_STANDALONE_TOOLCHAIN + --install-dir=$_TERMUX_TOOLCHAIN_TMPDIR if [ "arm" = $TERMUX_ARCH ]; then # Fix to allow e.g. to be included: - cp $TERMUX_STANDALONE_TOOLCHAIN/include/c++/4.9/arm-linux-androideabi/armv7-a/bits/* $TERMUX_STANDALONE_TOOLCHAIN/include/c++/4.9/bits + cp $_TERMUX_TOOLCHAIN_TMPDIR/include/c++/4.9.x/arm-linux-androideabi/armv7-a/bits/* $_TERMUX_TOOLCHAIN_TMPDIR/include/c++/4.9.x/bits fi - cd $TERMUX_STANDALONE_TOOLCHAIN/sysroot + cd $_TERMUX_TOOLCHAIN_TMPDIR/sysroot for f in $TERMUX_SCRIPTDIR/ndk_patches/*.patch; do sed "s%\@TERMUX_PREFIX\@%${TERMUX_PREFIX}%g" $f | \ sed "s%\@TERMUX_HOME\@%${TERMUX_ANDROID_HOME}%g" | \ @@ -198,7 +206,8 @@ if [ ! -d $TERMUX_STANDALONE_TOOLCHAIN ]; then done # elf.h is taken from glibc since the elf.h in the NDK is lacking. # sysexits.h is header-only and used by a few programs. - cp $TERMUX_SCRIPTDIR/ndk_patches/{elf.h,sysexits.h} $TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/include + cp $TERMUX_SCRIPTDIR/ndk_patches/{elf.h,sysexits.h} $_TERMUX_TOOLCHAIN_TMPDIR/sysroot/usr/include + mv $_TERMUX_TOOLCHAIN_TMPDIR $TERMUX_STANDALONE_TOOLCHAIN fi export TERMUX_COMMON_CACHEDIR="$TERMUX_TOPDIR/_cache" @@ -230,12 +239,13 @@ TERMUX_PKG_ESSENTIAL="" TERMUX_PKG_CONFLICTS="" # https://www.debian.org/doc/debian-policy/ch-relationships.html#s-conflicts TERMUX_PKG_CONFFILES="" TERMUX_PKG_INCLUDE_IN_DEVPACKAGE="" +TERMUX_PKG_DEVPACKAGE_DEPENDS="" # Set if a host build should be done in TERMUX_PKG_HOSTBUILD_DIR: TERMUX_PKG_HOSTBUILD="" TERMUX_PKG_MAINTAINER="Fredrik Fornwall " # Cleanup old state -rm -Rf $TERMUX_PKG_BUILDDIR $TERMUX_PKG_PACKAGEDIR $TERMUX_PKG_SRCDIR $TERMUX_PKG_TMPDIR $TERMUX_PKG_MASSAGEDIR +rm -Rf $TERMUX_PKG_BUILDDIR $TERMUX_PKG_PACKAGEDIR $TERMUX_PKG_SRCDIR $TERMUX_PKG_TMPDIR $TERMUX_PKG_MASSAGEDIR # If $TERMUX_PREFIX already exists, it may have been built for a different arch TERMUX_ARCH_FILE=/data/TERMUX_ARCH @@ -550,7 +560,11 @@ termux_step_massage () { _DEVEL_SUBPACKAGE_FILE=$TERMUX_PKG_TMPDIR/${TERMUX_PKG_NAME}-dev.subpackage.sh echo TERMUX_SUBPKG_INCLUDE=\"include share/man/man3 lib/pkgconfig share/aclocal $TERMUX_PKG_INCLUDE_IN_DEVPACKAGE\" > $_DEVEL_SUBPACKAGE_FILE echo TERMUX_SUBPKG_DESCRIPTION=\"Development files for ${TERMUX_PKG_NAME}\" >> $_DEVEL_SUBPACKAGE_FILE - echo TERMUX_SUBPKG_DEPENDS=\"$TERMUX_PKG_NAME\" >> $_DEVEL_SUBPACKAGE_FILE + if [ -n "$TERMUX_PKG_DEVPACKAGE_DEPENDS" ]; then + echo TERMUX_SUBPKG_DEPENDS=\"$TERMUX_PKG_NAME,$TERMUX_PKG_DEVPACKAGE_DEPENDS\" >> $_DEVEL_SUBPACKAGE_FILE + else + echo TERMUX_SUBPKG_DEPENDS=\"$TERMUX_PKG_NAME\" >> $_DEVEL_SUBPACKAGE_FILE + fi if [ x$TERMUX_PKG_CONFLICTS != x ]; then # Assume that dev packages conflicts as well. echo "TERMUX_SUBPKG_CONFLICTS=${TERMUX_PKG_CONFLICTS}-dev" >> $_DEVEL_SUBPACKAGE_FILE