set -e -o pipefail -u
-if [ "$#" -ne 1 ]; then echo "ERROR: Specify one argument!"; exit 1; fi
-export TERMUX_PKG_NAME=$1
+if [ "$#" -ne 1 ]; then echo "ERROR: Specify one argument (name of or path to package)"; exit 1; fi
+export TERMUX_PKG_NAME=`basename $1`
export TERMUX_SCRIPTDIR=`cd $(dirname $0); pwd`
-export TERMUX_PKG_BUILDER_DIR=$TERMUX_SCRIPTDIR/packages/$TERMUX_PKG_NAME
+
+if [[ $1 == *"/"* ]]; then
+ # Path to directory which may be outside this repo:
+ if [ ! -d $1 ]; then echo "ERROR: '$1' seems to be a path but is not a directory"; exit 1; fi
+ export TERMUX_PKG_BUILDER_DIR=`realpath $1`
+else
+ # Package name:
+ export TERMUX_PKG_BUILDER_DIR=$TERMUX_SCRIPTDIR/packages/$TERMUX_PKG_NAME
+fi
export TERMUX_PKG_BUILDER_SCRIPT=$TERMUX_PKG_BUILDER_DIR/build.sh
-if test ! -f $TERMUX_PKG_BUILDER_SCRIPT; then echo "ERROR: No such package builder: ${TERMUX_PKG_BUILDER_SCRIPT}!"; exit 1; fi
+if test ! -f $TERMUX_PKG_BUILDER_SCRIPT; then echo "ERROR: No build.sh script at supposed package dir $TERMUX_PKG_BUILDER_DIR!"; exit 1; fi
echo "termux - building $1..."
test -t 1 && printf "\033]0;$1...\007"
: ${TERMUX_GCC_VERSION:="4.9"}
: ${TERMUX_API_LEVEL:="21"}
: ${TERMUX_STANDALONE_TOOLCHAIN:="$HOME/lib/android-standalone-toolchain-${TERMUX_ARCH}-api${TERMUX_API_LEVEL}-gcc${TERMUX_GCC_VERSION}"}
-: ${TERMUX_ANDROID_BUILD_TOOLS_VERSION:="22.0.1"}
+: ${TERMUX_ANDROID_BUILD_TOOLS_VERSION:="23.0.0"}
# We do not put all of build-tools/$TERMUX_ANDROID_BUILD_TOOLS_VERSION/ into PATH
# to avoid stuff like arm-linux-androideabi-ld there to conflict with ones from
# the standalone toolchain.
# Cleanup old state
rm -Rf $TERMUX_PKG_BUILDDIR $TERMUX_PKG_PACKAGEDIR $TERMUX_PKG_SRCDIR $TERMUX_PKG_TMPDIR $TERMUX_PKG_MASSAGEDIR
# Ensure folders present (but not $TERMUX_PKG_SRCDIR, it will be created in build)
-mkdir -p $TERMUX_PKG_BUILDDIR $TERMUX_PKG_PACKAGEDIR $TERMUX_PKG_TMPDIR $TERMUX_PKG_CACHEDIR $TERMUX_PKG_MASSAGEDIR $PKG_CONFIG_LIBDIR $TERMUX_PREFIX/{bin,lib,share,tmp}
+mkdir -p $TERMUX_PKG_BUILDDIR $TERMUX_PKG_PACKAGEDIR $TERMUX_PKG_TMPDIR $TERMUX_PKG_CACHEDIR $TERMUX_PKG_MASSAGEDIR $PKG_CONFIG_LIBDIR $TERMUX_PREFIX/{bin,etc,lib,libexec,share,tmp}
# If $TERMUX_PREFIX already exists, it may have been built for a different arch
TERMUX_ARCH_FILE=/data/TERMUX_ARCH
if [ "$TERMUX_DEBUG" = "" ]; then
find . -type f | xargs file | grep -E "(executable|shared object)" | grep ELF | cut -f 1 -d : | xargs $STRIP --strip-unneeded --preserve-dates -R '.gnu.version*'
fi
- # Remove DT_ entries which the android 5.1 linker warns about:
- find . -type f | xargs $TERMUX_ELF_CLEANER
# Fix shebang paths:
for file in `find . -type f`; do
head -c 100 $file | grep -E "^#\!.*\\/bin\\/.*" | grep -q -E -v "^#\! ?\\/system" && sed --follow-symlinks -i -E "s@^#\!(.*)/bin/(.*)@#\!$TERMUX_PREFIX/bin/\2@" $file
done
set -e -o pipefail
+ # Remove DT_ entries which the android 5.1 linker warns about:
+ find . -type f | xargs $TERMUX_ELF_CLEANER
test ! -z "$TERMUX_PKG_RM_AFTER_INSTALL" && rm -Rf $TERMUX_PKG_RM_AFTER_INSTALL
termux_step_post_make_install
cd $TERMUX_PKG_MASSAGEDIR
termux_step_extract_into_massagedir
+cd $TERMUX_PKG_MASSAGEDIR
termux_step_massage
+cd $TERMUX_PKG_MASSAGEDIR
termux_step_post_massage
# Create data tarball containing files to package: