diff --git a/.github/static/powered-by-bintray.png b/.github/static/powered-by-bintray.png new file mode 100644 index 000000000..9bed58cbd Binary files /dev/null and b/.github/static/powered-by-bintray.png differ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 855e3fc88..2ac04e551 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,17 +1,9 @@ image: termux/package-builder:latest -variables: - ANDROID_HOME: "/home/builder/lib/android-sdk" - NDK: "/home/builder/lib/android-ndk" - stages: - build - deploy -before_script: - - cp -a /home/builder/.android $HOME/.android - - chown -R $(id -u):$(id -g) $HOME/.android - ## Common configuration for all build jobs. .job_template: &build_job stage: build diff --git a/README.md b/README.md index 75d1a7d86..06eb1b553 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Termux packages +[![Powered by JFrog Bintray](./.github/static/powered-by-bintray.png)](https://bintray.com) + [![pipeline status](https://gitlab.com/termux-mirror/termux-packages/badges/master/pipeline.svg)](https://gitlab.com/termux-mirror/termux-packages/commits/master) [![Join the chat at https://gitter.im/termux/termux](https://badges.gitter.im/termux/termux.svg)](https://gitter.im/termux/termux) @@ -35,8 +37,12 @@ Normally, all pull requests will be tested by [Travis CI](https://travis-ci.org/ All tests for master branch are done by Gitlab CI. -## Mailing Lists +## Contacts + +- General Mailing List: https://groups.io/g/termux + +- Developer Mailing List: https://groups.io/g/termux-dev -- [General Mailing List](https://groups.io/g/termux) +- Developer Chat: https://gitter.im/termux/dev or #termux/development on IRC/freenode. -- [Developer Mailing List](https://groups.io/g/termux-dev) +If you are interested in our weekly development sessions, please check the https://wiki.termux.com/wiki/Dev:Development_Sessions. Also, you may want to check the https://wiki.termux.com/wiki/Development. diff --git a/build-all.sh b/build-all.sh index e65318c17..4137e5b0e 100755 --- a/build-all.sh +++ b/build-all.sh @@ -55,28 +55,27 @@ fi exec > >(tee -a $BUILDALL_DIR/ALL.out) exec 2> >(tee -a $BUILDALL_DIR/ALL.err >&2) -trap "echo ERROR: See $BUILDALL_DIR/\${package}.err" ERR +trap "echo ERROR: See $BUILDALL_DIR/\${PKG}.err" ERR -for package_path in $(cat $BUILDORDER_FILE); do - package=$(basename $package_path) +while read PKG PKG_DIR; do # Check build status (grepping is a bit crude, but it works) - if [ -e $BUILDSTATUS_FILE ] && grep "^$package\$" $BUILDSTATUS_FILE >/dev/null; then - echo "Skipping $package" + if [ -e $BUILDSTATUS_FILE ] && grep "^$PKG\$" $BUILDSTATUS_FILE >/dev/null; then + echo "Skipping $PKG" continue fi - echo -n "Building $package... " + echo -n "Building $PKG... " BUILD_START=$(date "+%s") bash -x $BUILDSCRIPT -a $TERMUX_ARCH $TERMUX_DEBUG \ - ${TERMUX_DEBDIR+-o $TERMUX_DEBDIR} $TERMUX_INSTALL_DEPS $package \ - > $BUILDALL_DIR/${package}.out 2> $BUILDALL_DIR/${package}.err + ${TERMUX_DEBDIR+-o $TERMUX_DEBDIR} $TERMUX_INSTALL_DEPS $PKG_DIR \ + > $BUILDALL_DIR/${PKG}.out 2> $BUILDALL_DIR/${PKG}.err BUILD_END=$(date "+%s") BUILD_SECONDS=$(( $BUILD_END - $BUILD_START )) echo "done in $BUILD_SECONDS" # Update build status - echo "$package" >> $BUILDSTATUS_FILE -done + echo "$PKG" >> $BUILDSTATUS_FILE +done<${BUILDORDER_FILE} # Update build status rm -f $BUILDSTATUS_FILE diff --git a/build-package.sh b/build-package.sh index 9bf37088c..25c2791c9 100755 --- a/build-package.sh +++ b/build-package.sh @@ -4,741 +4,49 @@ set -e -o pipefail -u # Utility function to log an error message and exit with an error code. -termux_error_exit() { - echo "ERROR: $*" 1>&2 - exit 1 -} - -if [ "$(uname -o)" = Android ]; then - termux_error_exit "On-device builds are not supported - see README.md" -fi +source scripts/build/termux_error_exit.sh # Utility function to download a resource with an expected checksum. -termux_download() { - if [ $# != 3 ]; then - termux_error_exit "termux_download(): Invalid arguments - expected \$URL \$DESTINATION \$CHECKSUM" - fi - local URL="$1" - local DESTINATION="$2" - local CHECKSUM="$3" - - if [ -f "$DESTINATION" ] && [ "$CHECKSUM" != "SKIP_CHECKSUM" ]; then - # Keep existing file if checksum matches. - local EXISTING_CHECKSUM - EXISTING_CHECKSUM=$(sha256sum "$DESTINATION" | cut -f 1 -d ' ') - if [ "$EXISTING_CHECKSUM" = "$CHECKSUM" ]; then return; fi - fi - - local TMPFILE - TMPFILE=$(mktemp "$TERMUX_PKG_TMPDIR/download.$TERMUX_PKG_NAME.XXXXXXXXX") - echo "Downloading ${URL}" - local TRYMAX=6 - for try in $(seq 1 $TRYMAX); do - if curl -L --fail --retry 2 -o "$TMPFILE" "$URL"; then - local ACTUAL_CHECKSUM - ACTUAL_CHECKSUM=$(sha256sum "$TMPFILE" | cut -f 1 -d ' ') - if [ "$CHECKSUM" != "SKIP_CHECKSUM" ]; then - if [ "$CHECKSUM" != "$ACTUAL_CHECKSUM" ]; then - >&2 printf "Wrong checksum for %s:\nExpected: %s\nActual: %s\n" \ - "$URL" "$CHECKSUM" "$ACTUAL_CHECKSUM" - exit 1 - fi - else - printf "WARNING: No checksum check for %s:\nActual: %s\n" \ - "$URL" "$ACTUAL_CHECKSUM" - fi - mv "$TMPFILE" "$DESTINATION" - return - else - echo "Download of $URL failed (attempt $try/$TRYMAX)" 1>&2 - sleep 45 - fi - done - - termux_error_exit "Failed to download $URL" -} +source scripts/build/termux_download.sh # Utility function for golang-using packages to setup a go toolchain. -termux_setup_golang() { - export GOOS=android - export CGO_ENABLED=1 - export GO_LDFLAGS="-extldflags=-pie" - if [ "$TERMUX_ARCH" = "arm" ]; then - export GOARCH=arm - export GOARM=7 - elif [ "$TERMUX_ARCH" = "i686" ]; then - export GOARCH=386 - export GO386=sse2 - elif [ "$TERMUX_ARCH" = "aarch64" ]; then - export GOARCH=arm64 - elif [ "$TERMUX_ARCH" = "x86_64" ]; then - export GOARCH=amd64 - else - termux_error_exit "Unsupported arch: $TERMUX_ARCH" - fi - - local TERMUX_GO_VERSION=go1.11.5 - local TERMUX_GO_PLATFORM=linux-amd64 - - local TERMUX_BUILDGO_FOLDER=$TERMUX_COMMON_CACHEDIR/${TERMUX_GO_VERSION} - export GOROOT=$TERMUX_BUILDGO_FOLDER - export PATH=$GOROOT/bin:$PATH - - if [ -d "$TERMUX_BUILDGO_FOLDER" ]; then return; fi - - local TERMUX_BUILDGO_TAR=$TERMUX_COMMON_CACHEDIR/${TERMUX_GO_VERSION}.${TERMUX_GO_PLATFORM}.tar.gz - 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" \ - ff54aafedff961eb94792487e827515da683d61a5f9482f668008832631e5d25 - - ( cd "$TERMUX_COMMON_CACHEDIR"; tar xf "$TERMUX_BUILDGO_TAR"; mv go "$TERMUX_BUILDGO_FOLDER"; rm "$TERMUX_BUILDGO_TAR" ) -} +source scripts/build/setup/termux_setup_golang.sh # Utility function for rust-using packages to setup a rust toolchain. -termux_setup_rust() { - if [ $TERMUX_ARCH = "arm" ]; then - CARGO_TARGET_NAME=armv7-linux-androideabi - else - CARGO_TARGET_NAME=$TERMUX_ARCH-linux-android - fi - - local ENV_NAME=CARGO_TARGET_${CARGO_TARGET_NAME^^}_LINKER - ENV_NAME=${ENV_NAME//-/_} - export $ENV_NAME=$CC - - curl https://sh.rustup.rs -sSf > $TERMUX_PKG_TMPDIR/rustup.sh - sh $TERMUX_PKG_TMPDIR/rustup.sh -y - export PATH=$HOME/.cargo/bin:$PATH - - rustup target add $CARGO_TARGET_NAME -} +source scripts/build/setup/termux_setup_rust.sh # Utility function to setup a current ninja build system. -termux_setup_ninja() { - 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" \ - d2fea9ff33b3ef353161ed906f260d565ca55b8ca0568fa07b1d2cab90a84a07 - unzip "$NINJA_ZIP_FILE" -d "$NINJA_FOLDER" - fi - export PATH=$NINJA_FOLDER:$PATH -} +source scripts/build/setup/termux_setup_ninja.sh # Utility function to setup a current meson build system. -termux_setup_meson() { - termux_setup_ninja - local MESON_VERSION=0.49.0 - local MESON_FOLDER=$TERMUX_COMMON_CACHEDIR/meson-$MESON_VERSION-v1 - if [ ! -d "$MESON_FOLDER" ]; then - local MESON_TAR_NAME=meson-$MESON_VERSION.tar.gz - local MESON_TAR_FILE=$TERMUX_PKG_TMPDIR/$MESON_TAR_NAME - local MESON_TMP_FOLDER=$TERMUX_PKG_TMPDIR/meson-$MESON_VERSION - termux_download \ - "https://github.com/mesonbuild/meson/releases/download/$MESON_VERSION/meson-$MESON_VERSION.tar.gz" \ - "$MESON_TAR_FILE" \ - fb0395c4ac208eab381cd1a20571584bdbba176eb562a7efa9cb17cace0e1551 - tar xf "$MESON_TAR_FILE" -C "$TERMUX_PKG_TMPDIR" - mv "$MESON_TMP_FOLDER" "$MESON_FOLDER" - fi - TERMUX_MESON="$MESON_FOLDER/meson.py" - TERMUX_MESON_CROSSFILE=$TERMUX_PKG_TMPDIR/meson-crossfile-$TERMUX_ARCH.txt - local MESON_CPU MESON_CPU_FAMILY - if [ "$TERMUX_ARCH" = "arm" ]; then - MESON_CPU_FAMILY="arm" - MESON_CPU="armv7" - elif [ "$TERMUX_ARCH" = "i686" ]; then - MESON_CPU_FAMILY="x86" - MESON_CPU="i686" - elif [ "$TERMUX_ARCH" = "x86_64" ]; then - MESON_CPU_FAMILY="x86_64" - MESON_CPU="x86_64" - elif [ "$TERMUX_ARCH" = "aarch64" ]; then - MESON_CPU_FAMILY="arm" - MESON_CPU="aarch64" - else - termux_error_exit "Unsupported arch: $TERMUX_ARCH" - fi - - local CONTENT="" - echo "[binaries]" > $TERMUX_MESON_CROSSFILE - echo "ar = '$AR'" >> $TERMUX_MESON_CROSSFILE - echo "c = '$CC'" >> $TERMUX_MESON_CROSSFILE - echo "cpp = '$CXX'" >> $TERMUX_MESON_CROSSFILE - echo "ld = '$LD'" >> $TERMUX_MESON_CROSSFILE - echo "pkgconfig = '$PKG_CONFIG'" >> $TERMUX_MESON_CROSSFILE - echo "strip = '$STRIP'" >> $TERMUX_MESON_CROSSFILE - - echo '' >> $TERMUX_MESON_CROSSFILE - echo "[properties]" >> $TERMUX_MESON_CROSSFILE - echo "needs_exe_wrapper = true" >> $TERMUX_MESON_CROSSFILE - - echo -n "c_args = [" >> $TERMUX_MESON_CROSSFILE - local word first=true - for word in $CFLAGS $CPPFLAGS; do - if [ "$first" = "true" ]; then - first=false - else - echo -n ", " >> $TERMUX_MESON_CROSSFILE - fi - echo -n "'$word'" >> $TERMUX_MESON_CROSSFILE - done - echo ']' >> $TERMUX_MESON_CROSSFILE - - echo -n "cpp_args = [" >> $TERMUX_MESON_CROSSFILE - local word first=true - for word in $CXXFLAGS $CPPFLAGS; do - if [ "$first" = "true" ]; then - first=false - else - echo -n ", " >> $TERMUX_MESON_CROSSFILE - fi - echo -n "'$word'" >> $TERMUX_MESON_CROSSFILE - done - echo ']' >> $TERMUX_MESON_CROSSFILE - - local property - for property in c_link_args cpp_link_args; do - echo -n "$property = [" >> $TERMUX_MESON_CROSSFILE - first=true - for word in $LDFLAGS; do - if [ "$first" = "true" ]; then - first=false - else - echo -n ", " >> $TERMUX_MESON_CROSSFILE - fi - echo -n "'$word'" >> $TERMUX_MESON_CROSSFILE - done - echo ']' >> $TERMUX_MESON_CROSSFILE - done - - echo '' >> $TERMUX_MESON_CROSSFILE - echo "[host_machine]" >> $TERMUX_MESON_CROSSFILE - echo "cpu_family = '$MESON_CPU_FAMILY'" >> $TERMUX_MESON_CROSSFILE - echo "cpu = '$MESON_CPU'" >> $TERMUX_MESON_CROSSFILE - echo "endian = 'little'" >> $TERMUX_MESON_CROSSFILE - echo "system = 'android'" >> $TERMUX_MESON_CROSSFILE -} +source scripts/build/setup/termux_setup_meson.sh # Utility function to setup a current cmake build system -termux_setup_cmake() { - local TERMUX_CMAKE_MAJORVESION=3.13 - local TERMUX_CMAKE_MINORVERSION=4 - 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 - local TERMUX_CMAKE_FOLDER=$TERMUX_COMMON_CACHEDIR/cmake-$TERMUX_CMAKE_VERSION - if [ ! -d "$TERMUX_CMAKE_FOLDER" ]; then - termux_download https://cmake.org/files/v$TERMUX_CMAKE_MAJORVESION/$TERMUX_CMAKE_TARNAME \ - "$TERMUX_CMAKE_TARFILE" \ - 563a39e0a7c7368f81bfa1c3aff8b590a0617cdfe51177ddc808f66cc0866c76 - 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" \ - "$TERMUX_CMAKE_FOLDER" - fi - export PATH=$TERMUX_CMAKE_FOLDER/bin:$PATH - export CMAKE_INSTALL_ALWAYS=1 -} +source scripts/build/setup/termux_setup_cmake.sh # First step is to handle command-line arguments. Not to be overridden by packages. -termux_step_handle_arguments() { - _show_usage() { - echo "Usage: ./build-package.sh [-a ARCH] [-d] [-D] [-f] [-i] [-I] [-q] [-s] [-o DIR] 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 " -i Download and extract dependencies instead of building them." - echo " -I Download and extract dependencies instead of building them, keep existing /data/data/com.termux files." - echo " -q Quiet build." - echo " -s Skip dependency check." - echo " -o Specify deb directory. Default: debs/." - exit 1 - } - while getopts :a:hdDfiIqso: option; do - case "$option" in - a) TERMUX_ARCH="$OPTARG";; - h) _show_usage;; - d) export TERMUX_DEBUG=true;; - D) local TERMUX_IS_DISABLED=true;; - f) TERMUX_FORCE_BUILD=true;; - i) export TERMUX_INSTALL_DEPS=true;; - I) export TERMUX_INSTALL_DEPS=true && export TERMUX_NO_CLEAN=true;; - q) export TERMUX_QUIET_BUILD=true;; - s) export TERMUX_SKIP_DEPCHECK=true;; - o) TERMUX_DEBDIR="$(realpath -m $OPTARG)";; - ?) termux_error_exit "./build-package.sh: illegal option -$OPTARG";; - esac - done - shift $((OPTIND-1)) - - if [ "$#" -ne 1 ]; then _show_usage; fi - unset -f _show_usage - - # Handle 'all' arch: - if [ -n "${TERMUX_ARCH+x}" ] && [ "${TERMUX_ARCH}" = 'all' ]; then - for arch in 'aarch64' 'arm' 'i686' 'x86_64'; do - ./build-package.sh ${TERMUX_FORCE_BUILD+-f} -a $arch ${TERMUX_INSTALL_DEPS+-i} \ - ${TERMUX_DEBUG+-d} ${TERMUX_DEBDIR+-o $TERMUX_DEBDIR} "$1" - done - exit - fi - - # Check the package to build: - TERMUX_PKG_NAME=$(basename "$1") - export TERMUX_SCRIPTDIR - TERMUX_SCRIPTDIR=$(cd "$(dirname "$0")"; pwd) - if [[ $1 == *"/"* ]]; then - # Path to directory which may be outside this repo: - 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") - else - # Package name: - 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 - fi - fi - TERMUX_PKG_BUILDER_SCRIPT=$TERMUX_PKG_BUILDER_DIR/build.sh - if test ! -f "$TERMUX_PKG_BUILDER_SCRIPT"; then - termux_error_exit "No build.sh script at package dir $TERMUX_PKG_BUILDER_DIR!" - fi -} +source scripts/build/termux_step_handle_arguments.sh # Setup variables used by the build. Not to be overridden by packages. -termux_step_setup_variables() { - # shellcheck source=scripts/properties.sh - . "$TERMUX_SCRIPTDIR/scripts/properties.sh" - : "${TERMUX_MAKE_PROCESSES:="$(nproc)"}" - : "${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_PKG_API_LEVEL:="21"}" - : "${TERMUX_NO_CLEAN:="false"}" - : "${TERMUX_QUIET_BUILD:="false"}" - : "${TERMUX_DEBDIR:="${TERMUX_SCRIPTDIR}/debs"}" - : "${TERMUX_SKIP_DEPCHECK:="false"}" - : "${TERMUX_INSTALL_DEPS:="false"}" - : "${TERMUX_REPO_SIGNING_KEYS:="packages/apt/trusted.gpg packages/termux-keyring/grimler.gpg packages/termux-keyring/xeffyr.gpg"}" - : "${TERMUX_PKG_MAINTAINER:="Fredrik Fornwall @fornwall"}" - - if [ -z ${TERMUX_REPO_URL+x} ]; then - TERMUX_REPO_URL=(https://termux.net) - # TERMUX_REPO_URL=(https://termux.net https://grimler.se https://dl.bintray.com/xeffyr/unstable-packages) - fi - if [ -z ${TERMUX_REPO_DISTRIBUTION+x} ]; then - TERMUX_REPO_DISTRIBUTION=(stable) - # TERMUX_REPO_DISTRIBUTION=(stable root unstable) - fi - if [ -z ${TERMUX_REPO_COMPONENT+x} ]; then - TERMUX_REPO_COMPONENT=(main) - # TERMUX_REPO_COMPONENT=(main stable main) - fi - - if [ "x86_64" = "$TERMUX_ARCH" ] || [ "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 - - if [ ! -d "$NDK" ]; then - termux_error_exit 'NDK not pointing at a directory!' - fi - if ! grep -s -q "Pkg.Revision = $TERMUX_NDK_VERSION" "$NDK/source.properties"; then - termux_error_exit "Wrong NDK version - we need $TERMUX_NDK_VERSION" - fi - - # The build tuple that may be given to --build configure flag: - TERMUX_BUILD_TUPLE=$(sh "$TERMUX_SCRIPTDIR/scripts/config.guess") - - # 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. - TERMUX_D8=$ANDROID_HOME/build-tools/$TERMUX_ANDROID_BUILD_TOOLS_VERSION/d8 - - TERMUX_COMMON_CACHEDIR="$TERMUX_TOPDIR/_cache" - TERMUX_ELF_CLEANER=$TERMUX_COMMON_CACHEDIR/termux-elf-cleaner - - export prefix=${TERMUX_PREFIX} - export PREFIX=${TERMUX_PREFIX} - - TERMUX_PKG_BUILDDIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/build - TERMUX_PKG_CACHEDIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/cache - TERMUX_PKG_MASSAGEDIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/massage - TERMUX_PKG_PACKAGEDIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/package - TERMUX_PKG_SRCDIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/src - TERMUX_PKG_SHA256="" - TERMUX_PKG_TMPDIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/tmp - TERMUX_PKG_HOSTBUILD_DIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/host-build - TERMUX_PKG_PLATFORM_INDEPENDENT="" - TERMUX_PKG_NO_DEVELSPLIT="" - TERMUX_PKG_REVISION="0" # http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version - TERMUX_PKG_EXTRA_CONFIGURE_ARGS="" - TERMUX_PKG_EXTRA_HOSTBUILD_CONFIGURE_ARGS="" - TERMUX_PKG_EXTRA_MAKE_ARGS="" - TERMUX_PKG_BUILD_IN_SRC="" - TERMUX_PKG_RM_AFTER_INSTALL="" - TERMUX_PKG_BREAKS="" # https://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps - TERMUX_PKG_DEPENDS="" - TERMUX_PKG_BUILD_DEPENDS="" - TERMUX_PKG_HOMEPAGE="" - TERMUX_PKG_DESCRIPTION="FIXME:Add description" - TERMUX_PKG_KEEP_STATIC_LIBRARIES="false" - TERMUX_PKG_ESSENTIAL="" - TERMUX_PKG_CONFLICTS="" # https://www.debian.org/doc/debian-policy/ch-relationships.html#s-conflicts - TERMUX_PKG_RECOMMENDS="" # https://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps - TERMUX_PKG_SUGGESTS="" - TERMUX_PKG_REPLACES="" - TERMUX_PKG_PROVIDES="" #https://www.debian.org/doc/debian-policy/#virtual-packages-provides - 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_FORCE_CMAKE=no # if the package has autotools as well as cmake, then set this to prefer cmake - TERMUX_CMAKE_BUILD=Ninja # Which cmake generator to use - TERMUX_PKG_HAS_DEBUG=yes # set to no if debug build doesn't exist or doesn't work, for example for python based packages - - unset CFLAGS CPPFLAGS LDFLAGS CXXFLAGS -} +source scripts/build/termux_step_setup_variables.sh # Save away and restore build setups which may change between builds. -termux_step_handle_buildarch() { - # If $TERMUX_PREFIX already exists, it may have been built for a different arch - local TERMUX_ARCH_FILE=/data/TERMUX_ARCH - if [ -f "${TERMUX_ARCH_FILE}" ]; then - local TERMUX_PREVIOUS_ARCH - TERMUX_PREVIOUS_ARCH=$(cat $TERMUX_ARCH_FILE) - if [ "$TERMUX_PREVIOUS_ARCH" != "$TERMUX_ARCH" ]; then - local TERMUX_DATA_BACKUPDIRS=$TERMUX_TOPDIR/_databackups - mkdir -p "$TERMUX_DATA_BACKUPDIRS" - local TERMUX_DATA_PREVIOUS_BACKUPDIR=$TERMUX_DATA_BACKUPDIRS/$TERMUX_PREVIOUS_ARCH - local TERMUX_DATA_CURRENT_BACKUPDIR=$TERMUX_DATA_BACKUPDIRS/$TERMUX_ARCH - # Save current /data (removing old backup if any) - if test -e "$TERMUX_DATA_PREVIOUS_BACKUPDIR"; then - termux_error_exit "Directory already exists" - fi - if [ -d /data/data ]; then - mv /data/data "$TERMUX_DATA_PREVIOUS_BACKUPDIR" - fi - # Restore new one (if any) - if [ -d "$TERMUX_DATA_CURRENT_BACKUPDIR" ]; then - mv "$TERMUX_DATA_CURRENT_BACKUPDIR" /data/data - fi - fi - fi - - # Keep track of current arch we are building for. - echo "$TERMUX_ARCH" > $TERMUX_ARCH_FILE -} +source scripts/build/termux_step_handle_buildarch.sh # Function to get TERMUX_PKG_VERSION from build.sh -source scripts/termux_extract_dep_info.sh +source scripts/build/termux_extract_dep_info.sh -termux_download_deb() { - local package=$1 - local package_arch=$2 - local version=$3 - local deb_file=${package}_${version}_${package_arch}.deb - for idx in $(seq ${#TERMUX_REPO_URL[@]}); do - local TERMUX_REPO_NAME=$(echo ${TERMUX_REPO_URL[$idx-1]} | sed -e 's%https://%%g' -e 's%http://%%g' -e 's%/%-%g') - local PACKAGE_FILE_PATH="${TERMUX_REPO_NAME}-${TERMUX_REPO_DISTRIBUTION[$idx-1]}-${TERMUX_REPO_COMPONENT[$idx-1]}-Packages" - read -d "\n" PKG_PATH PKG_HASH <<<$(./scripts/get_hash_from_file.py "${TERMUX_COMMON_CACHEDIR}-$arch/$PACKAGE_FILE_PATH" $package $version) - if ! [ "$PKG_HASH" = "" ]; then - if [ ! "$TERMUX_QUIET_BUILD" = true ]; then - echo "Found $package in ${TERMUX_REPO_URL[$idx-1]}/dists/${TERMUX_REPO_DISTRIBUTION[$idx-1]}" - fi - break - fi - done - if [ "$PKG_HASH" = "" ]; then - return 1 - else - termux_download ${TERMUX_REPO_URL[$idx-1]}/${PKG_PATH} \ - $TERMUX_COMMON_CACHEDIR-$package_arch/${deb_file} \ - $PKG_HASH - return 0 - fi -} +# Function that downloads a .deb (using the termux_download function) +source scripts/build/termux_download_deb.sh # Script to download InRelease, verify it's signature and then download Packages.xz by hash -termux_step_get_repo_files() { - # Ensure folders present (but not $TERMUX_PKG_SRCDIR, it will be created in build) - mkdir -p "$TERMUX_COMMON_CACHEDIR" \ - "$TERMUX_COMMON_CACHEDIR-$TERMUX_ARCH" \ - "$TERMUX_COMMON_CACHEDIR-all" \ - "$TERMUX_DEBDIR" \ - "$TERMUX_PKG_BUILDDIR" \ - "$TERMUX_PKG_PACKAGEDIR" \ - "$TERMUX_PKG_TMPDIR" \ - "$TERMUX_PKG_CACHEDIR" \ - "$TERMUX_PKG_MASSAGEDIR" \ - $TERMUX_PREFIX/{bin,etc,lib,libexec,share,tmp,include} - if [ "$TERMUX_INSTALL_DEPS" = true ]; then - if [ "$TERMUX_NO_CLEAN" = false ]; then - # Remove all previously extracted/built files from $TERMUX_PREFIX: - rm -rf $TERMUX_PREFIX - rm -f /data/data/.built-packages/* - # Setup bootstrap - if [ $TERMUX_ARCH == aarch64 ]; then - local bootstrap_sha256=2944ad699814329007d1f9c056e7c8323243c8b4a257cbd05904216f89fc3746 - elif [ $TERMUX_ARCH == i686 ]; then - local bootstrap_sha256=8f4dee0b1e161689b60f330ac0cc813b56ab479f2cd789eb8459165a3be13bdb - elif [ $TERMUX_ARCH == arm ]; then - local bootstrap_sha256=f471c0af326677d87ca4926d54860d10d751dd4f8d615d5b1de902841601b41e - elif [ $TERMUX_ARCH == x86_64 ]; then - local bootstrap_sha256=93384f0343c13f604dbacd069276291bd7042fc6d42c6d7514c7e573d968c614 - fi - termux_download https://termux.net/bootstrap/bootstrap-${TERMUX_ARCH}.zip \ - ${TERMUX_COMMON_CACHEDIR}/bootstrap-${TERMUX_ARCH}.zip \ - $bootstrap_sha256 - unzip -qo ${TERMUX_COMMON_CACHEDIR}/bootstrap-${TERMUX_ARCH}.zip -d $TERMUX_PREFIX - ( - cd $TERMUX_PREFIX - while read link; do - ln -sf ${link/←/ } - done= 1.0) and similar version tags with sed: - _PKG_DEPENDS=$(echo ${TERMUX_PKG_DEPENDS//,/ } | sed "s/[(][^)]*[)]//g") - _PKG_BUILD_DEPENDS=${TERMUX_PKG_BUILD_DEPENDS//,/ } - for pkg in $_PKG_DEPENDS $_PKG_BUILD_DEPENDS; do - # llvm doesn't build if ndk-sysroot is installed: - if [ "$pkg" = "ndk-sysroot" ]; then continue; fi - read dep_arch dep_version <<< $(termux_extract_dep_info "$pkg") - - if [ ! "$TERMUX_QUIET_BUILD" = true ]; then - echo "Downloading dependency $pkg@$dep_version if necessary..." - fi - if ! termux_download_deb $pkg $dep_arch $dep_version; then - echo "Download of $pkg@$dep_version from $TERMUX_REPO_URL failed, building instead" - ./build-package.sh -a $TERMUX_ARCH -I "$pkg" - continue - else - if [ ! "$TERMUX_QUIET_BUILD" = true ]; then echo "Extracting $pkg..."; fi - ( - cd $TERMUX_COMMON_CACHEDIR-$dep_arch - ar x ${pkg}_${dep_version}_${dep_arch}.deb data.tar.xz - tar -xf data.tar.xz --no-overwrite-dir -C / - ) - fi - - if termux_download_deb $pkg-dev $dep_arch $dep_version; then - ( - cd $TERMUX_COMMON_CACHEDIR-$dep_arch - ar x $pkg-dev_${dep_version}_${dep_arch}.deb data.tar.xz - tar xf data.tar.xz --no-overwrite-dir -C / - ) - else - echo "Download of $pkg-dev@$dep_version from $TERMUX_REPO_URL failed" - fi - mkdir -p /data/data/.built-packages - echo "$dep_version" > "/data/data/.built-packages/$pkg" - done - elif [ "$TERMUX_SKIP_DEPCHECK" = false ] && [ "$TERMUX_INSTALL_DEPS" = false ]; then - # Build dependencies - local pkg - for pkg in $TERMUX_ALL_DEPS; do - echo "Building dependency $pkg if necessary..." - # Built dependencies are put in the default TERMUX_DEBDIR instead of the specified one - ./build-package.sh -a $TERMUX_ARCH -s "$pkg" - done - fi - - TERMUX_PKG_FULLVERSION=$TERMUX_PKG_VERSION - if [ "$TERMUX_PKG_REVISION" != "0" ] || [ "$TERMUX_PKG_FULLVERSION" != "${TERMUX_PKG_FULLVERSION/-/}" ]; then - # "0" is the default revision, so only include it if the upstream versions contains "-" itself - TERMUX_PKG_FULLVERSION+="-$TERMUX_PKG_REVISION" - fi - - if [ "$TERMUX_DEBUG" = true ]; then - if [ "$TERMUX_PKG_HAS_DEBUG" == "yes" ]; then - DEBUG="-dbg" - else - echo "Skipping building debug build for $TERMUX_PKG_NAME" - exit 0 - fi - else - DEBUG="" - fi - - if [ -z "$TERMUX_DEBUG" ] && - [ -z "${TERMUX_FORCE_BUILD+x}" ] && - [ -e "/data/data/.built-packages/$TERMUX_PKG_NAME" ]; then - if [ "$(cat "/data/data/.built-packages/$TERMUX_PKG_NAME")" = "$TERMUX_PKG_FULLVERSION" ]; then - echo "$TERMUX_PKG_NAME@$TERMUX_PKG_FULLVERSION built - skipping (rm /data/data/.built-packages/$TERMUX_PKG_NAME to force rebuild)" - exit 0 - fi - fi - - # 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_COMMON_CACHEDIR" \ - "$TERMUX_DEBDIR" \ - "$TERMUX_PKG_BUILDDIR" \ - "$TERMUX_PKG_PACKAGEDIR" \ - "$TERMUX_PKG_TMPDIR" \ - "$TERMUX_PKG_CACHEDIR" \ - "$TERMUX_PKG_MASSAGEDIR" \ - $TERMUX_PREFIX/{bin,etc,lib,libexec,share,tmp,include} - - # Make $TERMUX_PREFIX/bin/sh executable on the builder, so that build - # scripts can assume that it works on both builder and host later on: - ln -f -s /bin/sh "$TERMUX_PREFIX/bin/sh" - - local TERMUX_ELF_CLEANER_SRC=$TERMUX_COMMON_CACHEDIR/termux-elf-cleaner.cpp - local TERMUX_ELF_CLEANER_VERSION - TERMUX_ELF_CLEANER_VERSION=$(bash -c ". $TERMUX_SCRIPTDIR/packages/termux-elf-cleaner/build.sh; echo \$TERMUX_PKG_VERSION") - termux_download \ - "https://raw.githubusercontent.com/termux/termux-elf-cleaner/v$TERMUX_ELF_CLEANER_VERSION/termux-elf-cleaner.cpp" \ - "$TERMUX_ELF_CLEANER_SRC" \ - 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 - - if [ -n "$TERMUX_PKG_BUILD_IN_SRC" ]; then - echo "Building in src due to TERMUX_PKG_BUILD_IN_SRC being set" > "$TERMUX_PKG_BUILDDIR/BUILDING_IN_SRC.txt" - TERMUX_PKG_BUILDDIR=$TERMUX_PKG_SRCDIR - fi - - echo "termux - building $TERMUX_PKG_NAME for arch $TERMUX_ARCH..." - test -t 1 && printf "\033]0;%s...\007" "$TERMUX_PKG_NAME" - - # Avoid exporting PKG_CONFIG_LIBDIR until after termux_step_host_build. - export TERMUX_PKG_CONFIG_LIBDIR=$TERMUX_PREFIX/lib/pkgconfig - # Add a pkg-config file for the system zlib. - mkdir -p "$TERMUX_PKG_CONFIG_LIBDIR" - cat > "$TERMUX_PKG_CONFIG_LIBDIR/zlib.pc" <<-HERE - Name: zlib - Description: zlib compression library - Version: 1.2.8 - Requires: - Libs: -lz - HERE - - # Keep track of when build started so we can see what files have been created. - # We start by sleeping so that any generated files above (such as zlib.pc) get - # an older timestamp than the TERMUX_BUILD_TS_FILE. - sleep 1 - TERMUX_BUILD_TS_FILE=$TERMUX_PKG_TMPDIR/timestamp_$TERMUX_PKG_NAME - touch "$TERMUX_BUILD_TS_FILE" -} +source scripts/build/termux_step_start_build.sh # Run just after sourcing $TERMUX_PKG_BUILDER_SCRIPT. May be overridden by packages. -termux_step_extract_package() { - if [ -z "${TERMUX_PKG_SRCURL:=""}" ] || [ -n "${TERMUX_PKG_SKIP_SRC_EXTRACT:=""}" ]; then - mkdir -p "$TERMUX_PKG_SRCDIR" - return - fi - cd "$TERMUX_PKG_TMPDIR" - local PKG_SRCURL=(${TERMUX_PKG_SRCURL[@]}) - local PKG_SHA256=(${TERMUX_PKG_SHA256[@]}) - if [ ! ${#PKG_SRCURL[@]} == ${#PKG_SHA256[@]} ] && [ ! ${#PKG_SHA256[@]} == 0 ]; then - termux_error_exit "Error: length of TERMUX_PKG_SRCURL isn't equal to length of TERMUX_PKG_SHA256." - fi - # STRIP=1 extracts archives straight into TERMUX_PKG_SRCDIR while STRIP=0 puts them in subfolders. zip has same behaviour per default - # If this isn't desired then this can be fixed in termux_step_post_extract_package. - local STRIP=1 - for i in $(seq 0 $(( ${#PKG_SRCURL[@]}-1 ))); do - test "$i" -gt 0 && STRIP=0 - local filename - filename=$(basename "${PKG_SRCURL[$i]}") - local file="$TERMUX_PKG_CACHEDIR/$filename" - # Allow TERMUX_PKG_SHA256 to be empty: - set +u - termux_download "${PKG_SRCURL[$i]}" "$file" "${PKG_SHA256[$i]}" - set -u - - 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 - mkdir -p "$TERMUX_PKG_SRCDIR" - tar xf "$file" -C "$TERMUX_PKG_SRCDIR" --strip-components=$STRIP - fi - set -o pipefail - done -} +source scripts/build/termux_step_extract_package.sh # Hook for packages to act just after the package has been extracted. # Invoked in $TERMUX_PKG_SRCDIR. @@ -747,771 +55,82 @@ termux_step_post_extract_package() { } # Optional host build. Not to be overridden by packages. -termux_step_handle_hostbuild() { - if [ "x$TERMUX_PKG_HOSTBUILD" = "x" ]; then return; fi - - cd "$TERMUX_PKG_SRCDIR" - for patch in $TERMUX_PKG_BUILDER_DIR/*.patch.beforehostbuild; do - test -f "$patch" && sed "s%\@TERMUX_PREFIX\@%${TERMUX_PREFIX}%g" "$patch" | patch --silent -p1 - done - - local TERMUX_HOSTBUILD_MARKER="$TERMUX_PKG_HOSTBUILD_DIR/TERMUX_BUILT_FOR_$TERMUX_PKG_VERSION" - if [ ! -f "$TERMUX_HOSTBUILD_MARKER" ]; then - rm -Rf "$TERMUX_PKG_HOSTBUILD_DIR" - mkdir -p "$TERMUX_PKG_HOSTBUILD_DIR" - cd "$TERMUX_PKG_HOSTBUILD_DIR" - termux_step_host_build - touch "$TERMUX_HOSTBUILD_MARKER" - fi -} +source scripts/build/termux_step_handle_hostbuild.sh # Perform a host build. Will be called in $TERMUX_PKG_HOSTBUILD_DIR. # 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 -j "$TERMUX_MAKE_PROCESSES" -} +source scripts/build/termux_step_host_build.sh # Setup a standalone Android NDK toolchain. Not to be overridden by packages. -termux_step_setup_toolchain() { - # We put this after system PATH to avoid picking up toolchain stripped python - export PATH=$PATH:$TERMUX_STANDALONE_TOOLCHAIN/bin - - export CFLAGS="" - export LDFLAGS="-L${TERMUX_PREFIX}/lib" - - export AS=${TERMUX_HOST_PLATFORM}-clang - export CC=$TERMUX_HOST_PLATFORM-clang - export CXX=$TERMUX_HOST_PLATFORM-clang++ - - export AR=$TERMUX_HOST_PLATFORM-ar - export CPP=${TERMUX_HOST_PLATFORM}-cpp - export CC_FOR_BUILD=gcc - export LD=$TERMUX_HOST_PLATFORM-ld - export OBJDUMP=$TERMUX_HOST_PLATFORM-objdump - # Setup pkg-config for cross-compiling: - export PKG_CONFIG=$TERMUX_STANDALONE_TOOLCHAIN/bin/${TERMUX_HOST_PLATFORM}-pkg-config - export RANLIB=$TERMUX_HOST_PLATFORM-ranlib - export READELF=$TERMUX_HOST_PLATFORM-readelf - export STRIP=$TERMUX_HOST_PLATFORM-strip - - # Android 7 started to support DT_RUNPATH (but not DT_RPATH), so we may want - # LDFLAGS+="-Wl,-rpath=$TERMUX_PREFIX/lib -Wl,--enable-new-dtags" - # and no longer remove DT_RUNPATH in termux-elf-cleaner. - - if [ "$TERMUX_ARCH" = "arm" ]; then - # https://developer.android.com/ndk/guides/standalone_toolchain.html#abi_compatibility: - # "We recommend using the -mthumb compiler flag to force the generation of 16-bit Thumb-2 instructions". - # With r13 of the ndk ruby 2.4.0 segfaults when built on arm with clang without -mthumb. - CFLAGS+=" -march=armv7-a -mfpu=neon -mfloat-abi=softfp -mthumb" - LDFLAGS+=" -march=armv7-a" - elif [ "$TERMUX_ARCH" = "i686" ]; then - # From $NDK/docs/CPU-ARCH-ABIS.html: - CFLAGS+=" -march=i686 -msse3 -mstackrealign -mfpmath=sse" - elif [ "$TERMUX_ARCH" = "aarch64" ]; then - : - elif [ "$TERMUX_ARCH" = "x86_64" ]; then - : - else - termux_error_exit "Invalid arch '$TERMUX_ARCH' - support arches are 'arm', 'i686', 'aarch64', 'x86_64'" - fi - - if [ -n "$TERMUX_DEBUG" ]; then - CFLAGS+=" -g3 -O1 -fstack-protector --param ssp-buffer-size=4 -D_FORTIFY_SOURCE=2" - else - if [ $TERMUX_ARCH = arm ]; then - CFLAGS+=" -Os" - else - CFLAGS+=" -Oz" - fi - fi - - export CXXFLAGS="$CFLAGS" - export CPPFLAGS="-I${TERMUX_PREFIX}/include" - - # If libandroid-support is declared as a dependency, link to it explicitly: - if [ "$TERMUX_PKG_DEPENDS" != "${TERMUX_PKG_DEPENDS/libandroid-support/}" ]; then - LDFLAGS+=" -landroid-support" - fi - - export ac_cv_func_getpwent=no - export ac_cv_func_getpwnam=no - export ac_cv_func_getpwuid=no - export ac_cv_func_sigsetmask=no - export ac_cv_c_bigendian=no - - if [ ! -d $TERMUX_STANDALONE_TOOLCHAIN ]; then - # 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): - local _TERMUX_TOOLCHAIN_TMPDIR=${TERMUX_STANDALONE_TOOLCHAIN}-tmp - rm -Rf $_TERMUX_TOOLCHAIN_TMPDIR - - local _NDK_ARCHNAME=$TERMUX_ARCH - if [ "$TERMUX_ARCH" = "aarch64" ]; then - _NDK_ARCHNAME=arm64 - elif [ "$TERMUX_ARCH" = "i686" ]; then - _NDK_ARCHNAME=x86 - fi - - "$NDK/build/tools/make_standalone_toolchain.py" \ - --api "$TERMUX_PKG_API_LEVEL" \ - --arch $_NDK_ARCHNAME \ - --stl=libc++ \ - --install-dir $_TERMUX_TOOLCHAIN_TMPDIR - - # Remove android-support header wrapping not needed on android-21: - rm -Rf $_TERMUX_TOOLCHAIN_TMPDIR/sysroot/usr/local - - if [ "$TERMUX_ARCH" = "aarch64" ]; then - # Use gold by default to work around https://github.com/android-ndk/ndk/issues/148 - cp $_TERMUX_TOOLCHAIN_TMPDIR/bin/aarch64-linux-android-ld.gold \ - $_TERMUX_TOOLCHAIN_TMPDIR/bin/aarch64-linux-android-ld - cp $_TERMUX_TOOLCHAIN_TMPDIR/aarch64-linux-android/bin/ld.gold \ - $_TERMUX_TOOLCHAIN_TMPDIR/aarch64-linux-android/bin/ld - fi - - if [ "$TERMUX_ARCH" = "arm" ]; then - # Linker wrapper script to add '--exclude-libs libgcc.a', see - # https://github.com/android-ndk/ndk/issues/379 - # https://android-review.googlesource.com/#/c/389852/ - local linker - for linker in ld ld.bfd ld.gold; do - local wrap_linker=$_TERMUX_TOOLCHAIN_TMPDIR/$TERMUX_HOST_PLATFORM/bin/$linker - local real_linker=$_TERMUX_TOOLCHAIN_TMPDIR/$TERMUX_HOST_PLATFORM/bin/$linker.real - cp $wrap_linker $real_linker - echo '#!/bin/bash' > $wrap_linker - echo -n '$(dirname $0)/' >> $wrap_linker - echo -n $linker.real >> $wrap_linker - echo ' --exclude-libs libgcc.a "$@"' >> $wrap_linker - done - fi - - # Setup the cpp preprocessor: - cp $_TERMUX_TOOLCHAIN_TMPDIR/bin/$TERMUX_HOST_PLATFORM-clang \ - $_TERMUX_TOOLCHAIN_TMPDIR/bin/$TERMUX_HOST_PLATFORM-cpp - sed -i 's/clang70/clang70 -E/' \ - $_TERMUX_TOOLCHAIN_TMPDIR/bin/$TERMUX_HOST_PLATFORM-cpp - - 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" | \ - patch --silent -p1; - done - # elf.h: Taken from glibc since the elf.h in the NDK is lacking. - # ifaddrs.h: Added in android-24 unified headers, use a inline implementation for now. - # langinfo.h: Inline implementation of nl_langinfo(). - # iconv.h: Header for iconv, implemented in libandroid-support. - cp "$TERMUX_SCRIPTDIR"/ndk-patches/{ifaddrs.h,libintl.h,langinfo.h,iconv.h} usr/include - - # Remove from the NDK in favour of that from the libandroid-shmem. - # Remove as it doesn't work for non-root. - # Remove as we currently provide it from libandroid-glob. - # Remove as it's only for future (later than android-27). - rm usr/include/sys/{shm.h,sem.h} usr/include/{glob.h,spawn.h} - - sed -i "s/define __ANDROID_API__ __ANDROID_API_FUTURE__/define __ANDROID_API__ $TERMUX_PKG_API_LEVEL/" \ - usr/include/android/api-level.h - - local _LIBDIR=usr/lib - if [ $TERMUX_ARCH = x86_64 ]; then _LIBDIR+=64; fi - $TERMUX_ELF_CLEANER $_LIBDIR/*.so - - # zlib is really version 1.2.8 in the Android platform (at least - # starting from Android 5), not older as the NDK headers claim. - for file in zconf.h zlib.h; do - curl -o usr/include/$file \ - https://raw.githubusercontent.com/madler/zlib/v1.2.8/$file - done - unset file - cd $_TERMUX_TOOLCHAIN_TMPDIR/include/c++/4.9.x - sed "s%\@TERMUX_HOST_PLATFORM\@%${TERMUX_HOST_PLATFORM}%g" $TERMUX_SCRIPTDIR/ndk-patches/*.cpppatch | patch -p1 - # Fix relative path in gcc/g++ script: - sed -i "s%\`dirname \$0\`/../../../../%$NDK/toolchains/%g" $_TERMUX_TOOLCHAIN_TMPDIR/bin/${TERMUX_HOST_PLATFORM}-gcc - sed -i "s%\`dirname \$0\`/../../../../%$NDK/toolchains/%g" $_TERMUX_TOOLCHAIN_TMPDIR/bin/${TERMUX_HOST_PLATFORM}-g++ - mv $_TERMUX_TOOLCHAIN_TMPDIR $TERMUX_STANDALONE_TOOLCHAIN - fi - - local _STL_LIBFILE_NAME=libc++_shared.so - if [ ! -f $TERMUX_PREFIX/lib/libstdc++.so ]; then - # Setup libc++_shared.so in $PREFIX/lib and libstdc++.so as a link to it, - # so that other C++ using packages links to it instead of the default android - # C++ library which does not support exceptions or STL: - # https://developer.android.com/ndk/guides/cpp-support.html - # We do however want to avoid installing this, to avoid problems where e.g. - # libm.so on some i686 devices links against libstdc++.so. - # The libc++_shared.so library will be packaged in the libc++ package - # which is part of the base Termux installation. - mkdir -p "$TERMUX_PREFIX/lib" - cd "$TERMUX_PREFIX/lib" - - local _STL_LIBFILE= - if [ "$TERMUX_ARCH" = arm ]; then - local _STL_LIBFILE=$TERMUX_STANDALONE_TOOLCHAIN/${TERMUX_HOST_PLATFORM}/lib/armv7-a/$_STL_LIBFILE_NAME - elif [ "$TERMUX_ARCH" = x86_64 ]; then - local _STL_LIBFILE=$TERMUX_STANDALONE_TOOLCHAIN/${TERMUX_HOST_PLATFORM}/lib64/$_STL_LIBFILE_NAME - else - local _STL_LIBFILE=$TERMUX_STANDALONE_TOOLCHAIN/${TERMUX_HOST_PLATFORM}/lib/$_STL_LIBFILE_NAME - fi - - cp "$_STL_LIBFILE" . - $STRIP --strip-unneeded $_STL_LIBFILE_NAME - $TERMUX_ELF_CLEANER $_STL_LIBFILE_NAME - if [ $TERMUX_ARCH = "arm" ]; then - # Use a linker script to get libunwind.a. - echo 'INPUT(-lunwind -lc++_shared)' > libstdc++.so - else - ln -f $_STL_LIBFILE_NAME libstdc++.so - fi - fi - - export PKG_CONFIG_LIBDIR="$TERMUX_PKG_CONFIG_LIBDIR" - # Create a pkg-config wrapper. We use path to host pkg-config to - # avoid picking up a cross-compiled pkg-config later on. - local _HOST_PKGCONFIG - _HOST_PKGCONFIG=$(which pkg-config) - mkdir -p $TERMUX_STANDALONE_TOOLCHAIN/bin "$PKG_CONFIG_LIBDIR" - cat > "$PKG_CONFIG" <<-HERE - #!/bin/sh - export PKG_CONFIG_DIR= - export PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR - exec $_HOST_PKGCONFIG "\$@" - HERE - chmod +x "$PKG_CONFIG" -} +source scripts/build/termux_step_setup_toolchain.sh # Apply all *.patch files for the package. Not to be overridden by packages. -termux_step_patch_package() { - cd "$TERMUX_PKG_SRCDIR" - local DEBUG_PATCHES="" - if [ "$TERMUX_DEBUG" == "true" ] && [ -f $TERMUX_PKG_BUILDER_DIR/*.patch.debug ] ; then - DEBUG_PATCHES="$(ls $TERMUX_PKG_BUILDER_DIR/*.patch.debug)" - fi - # Suffix patch with ".patch32" or ".patch64" to only apply for these bitnesses: - shopt -s nullglob - for patch in $TERMUX_PKG_BUILDER_DIR/*.patch{$TERMUX_ARCH_BITS,} $DEBUG_PATCHES; do - test -f "$patch" && sed "s%\@TERMUX_PREFIX\@%${TERMUX_PREFIX}%g" "$patch" | \ - sed "s%\@TERMUX_HOME\@%${TERMUX_ANDROID_HOME}%g" | \ - patch --silent -p1 - done - shopt -u nullglob -} +source scripts/build/termux_step_patch_package.sh # Replace autotools build-aux/config.{sub,guess} with ours to add android targets. -termux_step_replace_guess_scripts() { - cd "$TERMUX_PKG_SRCDIR" - find . -name config.sub -exec chmod u+w '{}' \; -exec cp "$TERMUX_SCRIPTDIR/scripts/config.sub" '{}' \; - find . -name config.guess -exec chmod u+w '{}' \; -exec cp "$TERMUX_SCRIPTDIR/scripts/config.guess" '{}' \; -} +source scripts/build/termux_step_replace_guess_scripts.sh # For package scripts to override. Called in $TERMUX_PKG_BUILDDIR. termux_step_pre_configure() { return } -termux_step_configure_autotools() { - if [ ! -e "$TERMUX_PKG_SRCDIR/configure" ]; then return; fi - - local DISABLE_STATIC="--disable-static" - if [ "$TERMUX_PKG_EXTRA_CONFIGURE_ARGS" != "${TERMUX_PKG_EXTRA_CONFIGURE_ARGS/--enable-static/}" ]; then - # Do not --disable-static if package explicitly enables it (e.g. gdb needs enable-static to build) - DISABLE_STATIC="" - fi - - local DISABLE_NLS="--disable-nls" - if [ "$TERMUX_PKG_EXTRA_CONFIGURE_ARGS" != "${TERMUX_PKG_EXTRA_CONFIGURE_ARGS/--enable-nls/}" ]; then - # Do not --disable-nls if package explicitly enables it (for gettext itself) - DISABLE_NLS="" - fi - - local ENABLE_SHARED="--enable-shared" - if [ "$TERMUX_PKG_EXTRA_CONFIGURE_ARGS" != "${TERMUX_PKG_EXTRA_CONFIGURE_ARGS/--disable-shared/}" ]; then - ENABLE_SHARED="" - fi - - local HOST_FLAG="--host=$TERMUX_HOST_PLATFORM" - if [ "$TERMUX_PKG_EXTRA_CONFIGURE_ARGS" != "${TERMUX_PKG_EXTRA_CONFIGURE_ARGS/--host=/}" ]; then - HOST_FLAG="" - fi - - local LIBEXEC_FLAG="--libexecdir=$TERMUX_PREFIX/libexec" - if [ "$TERMUX_PKG_EXTRA_CONFIGURE_ARGS" != "${TERMUX_PKG_EXTRA_CONFIGURE_ARGS/--libexecdir=/}" ]; then - LIBEXEC_FLAG="" - fi - - local QUIET_BUILD= - if [ ! -z ${TERMUX_QUIET_BUILD+x} ]; then - QUIET_BUILD="--enable-silent-rules --silent --quiet" - fi - - # Some packages provides a $PKG-config script which some configure scripts pickup instead of pkg-config: - mkdir "$TERMUX_PKG_TMPDIR/config-scripts" - for f in $TERMUX_PREFIX/bin/*config; do - test -f "$f" && cp "$f" "$TERMUX_PKG_TMPDIR/config-scripts" - done - export PATH=$TERMUX_PKG_TMPDIR/config-scripts:$PATH - - # Avoid gnulib wrapping of functions when cross compiling. See - # http://wiki.osdev.org/Cross-Porting_Software#Gnulib - # https://gitlab.com/sortix/sortix/wikis/Gnulib - # https://github.com/termux/termux-packages/issues/76 - local AVOID_GNULIB="" - AVOID_GNULIB+=" ac_cv_func_nl_langinfo=yes" - AVOID_GNULIB+=" ac_cv_func_calloc_0_nonnull=yes" - AVOID_GNULIB+=" ac_cv_func_chown_works=yes" - AVOID_GNULIB+=" ac_cv_func_getgroups_works=yes" - AVOID_GNULIB+=" ac_cv_func_malloc_0_nonnull=yes" - AVOID_GNULIB+=" ac_cv_func_realloc_0_nonnull=yes" - AVOID_GNULIB+=" am_cv_func_working_getline=yes" - AVOID_GNULIB+=" gl_cv_func_dup2_works=yes" - AVOID_GNULIB+=" gl_cv_func_fcntl_f_dupfd_cloexec=yes" - AVOID_GNULIB+=" gl_cv_func_fcntl_f_dupfd_works=yes" - AVOID_GNULIB+=" gl_cv_func_fnmatch_posix=yes" - AVOID_GNULIB+=" gl_cv_func_getcwd_abort_bug=no" - AVOID_GNULIB+=" gl_cv_func_getcwd_null=yes" - AVOID_GNULIB+=" gl_cv_func_getcwd_path_max=yes" - AVOID_GNULIB+=" gl_cv_func_getcwd_posix_signature=yes" - AVOID_GNULIB+=" gl_cv_func_gettimeofday_clobber=no" - AVOID_GNULIB+=" gl_cv_func_gettimeofday_posix_signature=yes" - AVOID_GNULIB+=" gl_cv_func_link_works=yes" - AVOID_GNULIB+=" gl_cv_func_lstat_dereferences_slashed_symlink=yes" - AVOID_GNULIB+=" gl_cv_func_malloc_0_nonnull=yes" - AVOID_GNULIB+=" gl_cv_func_memchr_works=yes" - AVOID_GNULIB+=" gl_cv_func_mkdir_trailing_dot_works=yes" - AVOID_GNULIB+=" gl_cv_func_mkdir_trailing_slash_works=yes" - AVOID_GNULIB+=" gl_cv_func_mkfifo_works=yes" - AVOID_GNULIB+=" gl_cv_func_mknod_works=yes" - AVOID_GNULIB+=" gl_cv_func_realpath_works=yes" - AVOID_GNULIB+=" gl_cv_func_select_detects_ebadf=yes" - AVOID_GNULIB+=" gl_cv_func_snprintf_posix=yes" - AVOID_GNULIB+=" gl_cv_func_snprintf_retval_c99=yes" - AVOID_GNULIB+=" gl_cv_func_snprintf_truncation_c99=yes" - AVOID_GNULIB+=" gl_cv_func_stat_dir_slash=yes" - AVOID_GNULIB+=" gl_cv_func_stat_file_slash=yes" - AVOID_GNULIB+=" gl_cv_func_strerror_0_works=yes" - AVOID_GNULIB+=" gl_cv_func_symlink_works=yes" - AVOID_GNULIB+=" gl_cv_func_tzset_clobber=no" - AVOID_GNULIB+=" gl_cv_func_unlink_honors_slashes=yes" - AVOID_GNULIB+=" gl_cv_func_unlink_honors_slashes=yes" - AVOID_GNULIB+=" gl_cv_func_vsnprintf_posix=yes" - AVOID_GNULIB+=" gl_cv_func_vsnprintf_zerosize_c99=yes" - AVOID_GNULIB+=" gl_cv_func_wcwidth_works=yes" - AVOID_GNULIB+=" gl_cv_func_working_getdelim=yes" - AVOID_GNULIB+=" gl_cv_func_working_mkstemp=yes" - AVOID_GNULIB+=" gl_cv_func_working_mktime=yes" - AVOID_GNULIB+=" gl_cv_func_working_strerror=yes" - AVOID_GNULIB+=" gl_cv_header_working_fcntl_h=yes" - AVOID_GNULIB+=" gl_cv_C_locale_sans_EILSEQ=yes" - - # NOTE: We do not want to quote AVOID_GNULIB as we want word expansion. - # shellcheck disable=SC2086 - env $AVOID_GNULIB "$TERMUX_PKG_SRCDIR/configure" \ - --disable-dependency-tracking \ - --prefix=$TERMUX_PREFIX \ - --libdir=$TERMUX_PREFIX/lib \ - --disable-rpath --disable-rpath-hack \ - $HOST_FLAG \ - $TERMUX_PKG_EXTRA_CONFIGURE_ARGS \ - $DISABLE_NLS \ - $ENABLE_SHARED \ - $DISABLE_STATIC \ - $LIBEXEC_FLAG \ - $QUIET_BUILD -} - -termux_step_configure_cmake() { - termux_setup_cmake +# Setup configure args and run $TERMUX_PKG_SRCDIR/configure. This function is called from termux_step_configure +source scripts/build/configure/termux_step_configure_autotools.sh - local TOOLCHAIN_ARGS="-DCMAKE_ANDROID_STANDALONE_TOOLCHAIN=$TERMUX_STANDALONE_TOOLCHAIN" - local BUILD_TYPE=MinSizeRel - test -n "$TERMUX_DEBUG" && BUILD_TYPE=Debug +# Setup configure args and run cmake. This function is called from termux_step_configure +source scripts/build/configure/termux_step_configure_cmake.sh - local CMAKE_PROC=$TERMUX_ARCH - test $CMAKE_PROC == "arm" && CMAKE_PROC='armv7-a' - local MAKE_PROGRAM_PATH - if [ $TERMUX_CMAKE_BUILD = Ninja ]; then - termux_setup_ninja - MAKE_PROGRAM_PATH=$(which ninja) - else - MAKE_PROGRAM_PATH=$(which make) - fi +# Setup configure args and run meson. This function is called from termux_step_configure +source scripts/build/configure/termux_step_configure_meson.sh - # XXX: CMAKE_{AR,RANLIB} needed for at least jsoncpp build to not - # pick up cross compiled binutils tool in $PREFIX/bin: - cmake -G "$TERMUX_CMAKE_BUILD" "$TERMUX_PKG_SRCDIR" \ - -DCMAKE_AR="$(which $AR)" \ - -DCMAKE_UNAME="$(which uname)" \ - -DCMAKE_RANLIB="$(which $RANLIB)" \ - -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ - -DCMAKE_CROSSCOMPILING=True \ - -DCMAKE_C_FLAGS="$CFLAGS $CPPFLAGS" \ - -DCMAKE_CXX_FLAGS="$CXXFLAGS $CPPFLAGS" \ - -DCMAKE_LINKER="$TERMUX_STANDALONE_TOOLCHAIN/bin/$LD $LDFLAGS" \ - -DCMAKE_FIND_ROOT_PATH=$TERMUX_PREFIX \ - -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \ - -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \ - -DCMAKE_INSTALL_PREFIX=$TERMUX_PREFIX \ - -DCMAKE_MAKE_PROGRAM=$MAKE_PROGRAM_PATH \ - -DCMAKE_SYSTEM_PROCESSOR=$CMAKE_PROC \ - -DCMAKE_SYSTEM_NAME=Android \ - -DCMAKE_SYSTEM_VERSION=$TERMUX_PKG_API_LEVEL \ - -DCMAKE_SKIP_INSTALL_RPATH=ON \ - -DCMAKE_USE_SYSTEM_LIBRARIES=True \ - -DDOXYGEN_EXECUTABLE= \ - -DBUILD_TESTING=OFF \ - $TERMUX_PKG_EXTRA_CONFIGURE_ARGS $TOOLCHAIN_ARGS -} - -termux_step_configure_meson() { - termux_setup_meson - CC=gcc CXX=g++ $TERMUX_MESON \ - $TERMUX_PKG_SRCDIR \ - $TERMUX_PKG_BUILDDIR \ - --cross-file $TERMUX_MESON_CROSSFILE \ - --prefix $TERMUX_PREFIX \ - --libdir lib \ - --buildtype minsize \ - --strip \ - $TERMUX_PKG_EXTRA_CONFIGURE_ARGS -} - -termux_step_configure() { - if [ "$TERMUX_PKG_FORCE_CMAKE" == 'no' ] && [ -f "$TERMUX_PKG_SRCDIR/configure" ]; then - termux_step_configure_autotools - elif [ -f "$TERMUX_PKG_SRCDIR/CMakeLists.txt" ]; then - termux_step_configure_cmake - elif [ -f "$TERMUX_PKG_SRCDIR/meson.build" ]; then - termux_step_configure_meson - fi -} +# Configure the package +source scripts/build/configure/termux_step_configure.sh +# Hook for packages after configure step termux_step_post_configure() { return } -termux_step_make() { - local QUIET_BUILD= - if [ ! -z ${TERMUX_QUIET_BUILD+x} ]; then - QUIET_BUILD="-s" - fi +# Make package, either with ninja or make +source scripts/build/termux_step_make.sh - if test -f build.ninja; then - ninja -j $TERMUX_MAKE_PROCESSES - elif ls ./*akefile &> /dev/null || [ ! -z "$TERMUX_PKG_EXTRA_MAKE_ARGS" ]; then - if [ -z "$TERMUX_PKG_EXTRA_MAKE_ARGS" ]; then - make -j $TERMUX_MAKE_PROCESSES $QUIET_BUILD - else - make -j $TERMUX_MAKE_PROCESSES $QUIET_BUILD ${TERMUX_PKG_EXTRA_MAKE_ARGS} - fi - fi -} - -termux_step_make_install() { - if test -f build.ninja; then - ninja -j $TERMUX_MAKE_PROCESSES install - elif ls ./*akefile &> /dev/null || [ ! -z "$TERMUX_PKG_EXTRA_MAKE_ARGS" ]; then - : "${TERMUX_PKG_MAKE_INSTALL_TARGET:="install"}" - # Some packages have problem with parallell install, and it does not buy much, so use -j 1. - if [ -z "$TERMUX_PKG_EXTRA_MAKE_ARGS" ]; then - make -j 1 ${TERMUX_PKG_MAKE_INSTALL_TARGET} - else - make -j 1 ${TERMUX_PKG_EXTRA_MAKE_ARGS} ${TERMUX_PKG_MAKE_INSTALL_TARGET} - fi - elif test -f Cargo.toml; then - termux_setup_rust - cargo install \ - --path . \ - --force \ - --target $CARGO_TARGET_NAME \ - --root $TERMUX_PREFIX \ - $TERMUX_PKG_EXTRA_CONFIGURE_ARGS - # https://github.com/rust-lang/cargo/issues/3316: - rm $TERMUX_PREFIX/.crates.toml - fi -} +# Make install, either with ninja, make of cargo +source scripts/build/termux_step_make_install.sh # Hook function for package scripts to override. termux_step_post_make_install() { return } -termux_step_extract_into_massagedir() { - local TARBALL_ORIG=$TERMUX_PKG_PACKAGEDIR/${TERMUX_PKG_NAME}_orig.tar.gz - - # Build diff tar with what has changed during the build: - cd $TERMUX_PREFIX - tar -N "$TERMUX_BUILD_TS_FILE" \ - --exclude='lib/libc++_shared.so' --exclude='lib/libstdc++.so' \ - -czf "$TARBALL_ORIG" . - - # Extract tar in order to massage it - mkdir -p "$TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX" - cd "$TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX" - tar xf "$TARBALL_ORIG" - rm "$TARBALL_ORIG" -} - -termux_step_massage() { - cd "$TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX" - - # Remove lib/charset.alias which is installed by gettext-using packages: - rm -f lib/charset.alias - - # Remove non-english man pages: - test -d share/man && (cd share/man; for f in $(ls | grep -v man); do rm -Rf $f; done ) - - if [ -z "${TERMUX_PKG_KEEP_INFOPAGES+x}" ]; then - # Remove info pages: - rm -Rf share/info - fi - - # Remove locale files we're not interested in:: - rm -Rf share/locale - if [ -z "${TERMUX_PKG_KEEP_SHARE_DOC+x}" ]; then - # Remove info pages: - rm -Rf share/doc - fi - - # Remove old kept libraries (readline): - find . -name '*.old' -delete - - # Remove static libraries: - if [ $TERMUX_PKG_KEEP_STATIC_LIBRARIES = "false" ]; then - find . -name '*.a' -delete - find . -name '*.la' -delete - fi - - # Move over sbin to bin: - for file in sbin/*; do if test -f "$file"; then mv "$file" bin/; fi; done - - # Remove world permissions and add write permissions. - # The -f flag is used to suppress warnings about dangling symlinks (such - # as ones to /system/... which may not exist on the build machine): - find . -exec chmod -f u+w,g-rwx,o-rwx \{\} \; - - if [ "$TERMUX_DEBUG" = "" ]; then - # Strip binaries. file(1) may fail for certain unusual files, so disable pipefail. - set +e +o pipefail - find . -type f | xargs -r file | grep -E "(executable|shared object)" | grep ELF | cut -f 1 -d : | \ - xargs -r "$STRIP" --strip-unneeded --preserve-dates - set -e -o pipefail - fi - # Remove DT_ entries which the android 5.1 linker warns about: - find . -type f -print0 | xargs -r -0 "$TERMUX_ELF_CLEANER" - - # Fix shebang paths: - while IFS= read -r -d '' file - do - head -c 100 "$file" | grep -E "^#\!.*\\/bin\\/.*" | grep -q -E -v "^#\! ?\\/system" && sed --follow-symlinks -i -E "1 s@^#\!(.*)/bin/(.*)@#\!$TERMUX_PREFIX/bin/\2@" "$file" - done < <(find -L . -type f -print0) - - test ! -z "$TERMUX_PKG_RM_AFTER_INSTALL" && rm -Rf $TERMUX_PKG_RM_AFTER_INSTALL - - find . -type d -empty -delete # Remove empty directories - - if [ -d share/man ]; then - # Compress man pages with gzip: - find share/man -type f -print0 | xargs -r -0 gzip - # Update man page symlinks, e.g. unzstd.1 -> zstd.1: - while IFS= read -r -d '' file - do - local _link_value - _link_value=$(readlink $file) - rm $file - ln -s $_link_value.gz $file.gz - done < <(find share/man -type l -print0) - fi - - # Sub packages: - if [ -d include ] && [ -z "${TERMUX_PKG_NO_DEVELSPLIT}" ]; then - # Add virtual -dev sub package if there are include files: - local _DEVEL_SUBPACKAGE_FILE=$TERMUX_PKG_TMPDIR/${TERMUX_PKG_NAME}-dev.subpackage.sh - echo TERMUX_SUBPKG_INCLUDE=\"include share/vala share/man/man3 lib/pkgconfig share/aclocal lib/cmake $TERMUX_PKG_INCLUDE_IN_DEVPACKAGE\" > "$_DEVEL_SUBPACKAGE_FILE" - echo "TERMUX_SUBPKG_DESCRIPTION=\"Development files for ${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 - fi - # Now build all sub packages - rm -Rf "$TERMUX_TOPDIR/$TERMUX_PKG_NAME/subpackages" - for subpackage in $TERMUX_PKG_BUILDER_DIR/*.subpackage.sh $TERMUX_PKG_TMPDIR/*subpackage.sh; do - test ! -f "$subpackage" && continue - local SUB_PKG_NAME - SUB_PKG_NAME=$(basename "$subpackage" .subpackage.sh) - # Default value is same as main package, but sub package may override: - local TERMUX_SUBPKG_PLATFORM_INDEPENDENT=$TERMUX_PKG_PLATFORM_INDEPENDENT - local SUB_PKG_DIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/subpackages/$SUB_PKG_NAME - local TERMUX_SUBPKG_DEPENDS="" - local TERMUX_SUBPKG_CONFLICTS="" - local TERMUX_SUBPKG_REPLACES="" - local TERMUX_SUBPKG_CONFFILES="" - local SUB_PKG_MASSAGE_DIR=$SUB_PKG_DIR/massage/$TERMUX_PREFIX - local SUB_PKG_PACKAGE_DIR=$SUB_PKG_DIR/package - mkdir -p "$SUB_PKG_MASSAGE_DIR" "$SUB_PKG_PACKAGE_DIR" - - # shellcheck source=/dev/null - source "$subpackage" - - for includeset in $TERMUX_SUBPKG_INCLUDE; do - local _INCLUDE_DIRSET - _INCLUDE_DIRSET=$(dirname "$includeset") - test "$_INCLUDE_DIRSET" = "." && _INCLUDE_DIRSET="" - if [ -e "$includeset" ] || [ -L "$includeset" ]; then - # Add the -L clause to handle relative symbolic links: - mkdir -p "$SUB_PKG_MASSAGE_DIR/$_INCLUDE_DIRSET" - mv "$includeset" "$SUB_PKG_MASSAGE_DIR/$_INCLUDE_DIRSET" - fi - done - - local SUB_PKG_ARCH=$TERMUX_ARCH - test -n "$TERMUX_SUBPKG_PLATFORM_INDEPENDENT" && SUB_PKG_ARCH=all - - cd "$SUB_PKG_DIR/massage" - local SUB_PKG_INSTALLSIZE - SUB_PKG_INSTALLSIZE=$(du -sk . | cut -f 1) - tar -cJf "$SUB_PKG_PACKAGE_DIR/data.tar.xz" . +# Function to cp (through tar) installed files to massage dir +source scripts/build/termux_step_extract_into_massagedir.sh - mkdir -p DEBIAN - cd DEBIAN - cat > control <<-HERE - Package: $SUB_PKG_NAME - Architecture: ${SUB_PKG_ARCH} - Installed-Size: ${SUB_PKG_INSTALLSIZE} - Maintainer: $TERMUX_PKG_MAINTAINER - Version: $TERMUX_PKG_FULLVERSION - Homepage: $TERMUX_PKG_HOMEPAGE - HERE - test ! -z "$TERMUX_SUBPKG_DEPENDS" && echo "Depends: $TERMUX_SUBPKG_DEPENDS" >> control - test ! -z "$TERMUX_SUBPKG_CONFLICTS" && echo "Conflicts: $TERMUX_SUBPKG_CONFLICTS" >> control - test ! -z "$TERMUX_SUBPKG_REPLACES" && echo "Replaces: $TERMUX_SUBPKG_REPLACES" >> control - echo "Description: $TERMUX_SUBPKG_DESCRIPTION" >> control - tar -czf "$SUB_PKG_PACKAGE_DIR/control.tar.gz" . - - for f in $TERMUX_SUBPKG_CONFFILES; do echo "$TERMUX_PREFIX/$f" >> conffiles; done - - # Create the actual .deb file: - TERMUX_SUBPKG_DEBFILE=$TERMUX_DEBDIR/${SUB_PKG_NAME}${DEBUG}_${TERMUX_PKG_FULLVERSION}_${SUB_PKG_ARCH}.deb - test ! -f "$TERMUX_COMMON_CACHEDIR/debian-binary" && echo "2.0" > "$TERMUX_COMMON_CACHEDIR/debian-binary" - ar cr "$TERMUX_SUBPKG_DEBFILE" \ - "$TERMUX_COMMON_CACHEDIR/debian-binary" \ - "$SUB_PKG_PACKAGE_DIR/control.tar.gz" \ - "$SUB_PKG_PACKAGE_DIR/data.tar.xz" - - # Go back to main package: - cd "$TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX" - done - - # .. remove empty directories (NOTE: keep this last): - find . -type d -empty -delete - # Make sure user can read and write all files (problem with dpkg otherwise): - chmod -R u+rw . -} +# Function to run various cleanup/fixes +source scripts/build/termux_step_massage.sh +# Hook for packages after massage step termux_step_post_massage() { return } # Create data.tar.gz with files to package. Not to be overridden by package scripts. -termux_step_create_datatar() { - # Create data tarball containing files to package: - cd "$TERMUX_PKG_MASSAGEDIR" - - local HARDLINKS - HARDLINKS="$(find . -type f -links +1)" - if [ -n "$HARDLINKS" ]; then - termux_error_exit "Package contains hard links: $HARDLINKS" - fi - - if [ -z "${TERMUX_PKG_METAPACKAGE+x}" ] && [ "$(find . -type f)" = "" ]; then - termux_error_exit "No files in package" - fi - tar -cJf "$TERMUX_PKG_PACKAGEDIR/data.tar.xz" . -} +source scripts/build/termux_step_create_datatar.sh +# Hook function to create {pre,post}install, {pre,post}rm-scripts and similar termux_step_create_debscripts() { return } # Create the build deb file. Not to be overridden by package scripts. -termux_step_create_debfile() { - # Get install size. This will be written as the "Installed-Size" deb field so is measured in 1024-byte blocks: - local TERMUX_PKG_INSTALLSIZE - TERMUX_PKG_INSTALLSIZE=$(du -sk . | cut -f 1) - - # From here on TERMUX_ARCH is set to "all" if TERMUX_PKG_PLATFORM_INDEPENDENT is set by the package - test -n "$TERMUX_PKG_PLATFORM_INDEPENDENT" && TERMUX_ARCH=all - - mkdir -p DEBIAN - cat > DEBIAN/control <<-HERE - Package: $TERMUX_PKG_NAME - Architecture: ${TERMUX_ARCH} - Installed-Size: ${TERMUX_PKG_INSTALLSIZE} - Maintainer: $TERMUX_PKG_MAINTAINER - Version: $TERMUX_PKG_FULLVERSION - Homepage: $TERMUX_PKG_HOMEPAGE - HERE - test ! -z "$TERMUX_PKG_BREAKS" && echo "Breaks: $TERMUX_PKG_BREAKS" >> DEBIAN/control - test ! -z "$TERMUX_PKG_DEPENDS" && echo "Depends: $TERMUX_PKG_DEPENDS" >> DEBIAN/control - test ! -z "$TERMUX_PKG_ESSENTIAL" && echo "Essential: yes" >> DEBIAN/control - test ! -z "$TERMUX_PKG_CONFLICTS" && echo "Conflicts: $TERMUX_PKG_CONFLICTS" >> DEBIAN/control - test ! -z "$TERMUX_PKG_RECOMMENDS" && echo "Recommends: $TERMUX_PKG_RECOMMENDS" >> DEBIAN/control - test ! -z "$TERMUX_PKG_REPLACES" && echo "Replaces: $TERMUX_PKG_REPLACES" >> DEBIAN/control - test ! -z "$TERMUX_PKG_PROVIDES" && echo "Provides: $TERMUX_PKG_PROVIDES" >> DEBIAN/control - test ! -z "$TERMUX_PKG_SUGGESTS" && echo "Suggests: $TERMUX_PKG_SUGGESTS" >> DEBIAN/control - echo "Description: $TERMUX_PKG_DESCRIPTION" >> DEBIAN/control - - # Create DEBIAN/conffiles (see https://www.debian.org/doc/debian-policy/ap-pkg-conffiles.html): - for f in $TERMUX_PKG_CONFFILES; do echo "$TERMUX_PREFIX/$f" >> DEBIAN/conffiles; done - - # Allow packages to create arbitrary control files. - # XXX: Should be done in a better way without a function? - cd DEBIAN - termux_step_create_debscripts - - # Create control.tar.gz - tar -czf "$TERMUX_PKG_PACKAGEDIR/control.tar.gz" . - - test ! -f "$TERMUX_COMMON_CACHEDIR/debian-binary" && echo "2.0" > "$TERMUX_COMMON_CACHEDIR/debian-binary" - TERMUX_PKG_DEBFILE=$TERMUX_DEBDIR/${TERMUX_PKG_NAME}${DEBUG}_${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.gz" \ - "$TERMUX_PKG_PACKAGEDIR/data.tar.xz" -} - -termux_step_compare_debs() { - if [ "${TERMUX_INSTALL_DEPS}" = true ]; then - cd ${TERMUX_SCRIPTDIR} - if [ ! "$TERMUX_QUIET_BUILD" = true ]; then echo "COMPARING PACKAGES"; fi - - termux_download_deb $TERMUX_PKG_NAME $TERMUX_ARCH $TERMUX_PKG_FULLVERSION \ - && ( - deb_file=${TERMUX_PKG_NAME}_${TERMUX_PKG_FULLVERSION}_${TERMUX_ARCH}.deb - - # `|| true` to prevent debdiff's exit code from stopping build - debdiff $TERMUX_DEBDIR/$deb_file $TERMUX_COMMON_CACHEDIR-$TERMUX_ARCH/$deb_file || true - if [ ! "$TERMUX_QUIET_BUILD" = true ]; then echo "DONE COMPARING PACKAGES"; fi - ) || echo "Download of ${TERMUX_PKG_NAME}@${TERMUX_PKG_FULLVERSION} failed, not comparing debs" - fi -} +source scripts/build/termux_step_create_debfile.sh # Finish the build. Not to be overridden by package scripts. -termux_step_finish_build() { - echo "termux - build of '$TERMUX_PKG_NAME' done" - test -t 1 && printf "\033]0;%s - DONE\007" "$TERMUX_PKG_NAME" - mkdir -p /data/data/.built-packages - echo "$TERMUX_PKG_FULLVERSION" > "/data/data/.built-packages/$TERMUX_PKG_NAME" - exit 0 -} +source scripts/build/termux_step_finish_build.sh termux_step_handle_arguments "$@" termux_step_setup_variables termux_step_handle_buildarch -termux_step_get_repo_files termux_step_start_build termux_step_extract_package cd "$TERMUX_PKG_SRCDIR" @@ -1540,5 +159,4 @@ cd "$TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX" termux_step_post_massage termux_step_create_datatar termux_step_create_debfile -termux_step_compare_debs termux_step_finish_build diff --git a/ndk-patches/cstddef.cpppatch b/ndk-patches/cstddef.cpppatch deleted file mode 100644 index f62cc5ec8..000000000 --- a/ndk-patches/cstddef.cpppatch +++ /dev/null @@ -1,14 +0,0 @@ ---- /home/builder/cstddef.orig 2017-07-15 01:17:10.637496279 +0000 -+++ ./cstddef 2017-07-15 10:28:28.526713523 +0000 -@@ -40,7 +40,11 @@ - #endif - - // Don't include our own ; we don't want to declare ::nullptr_t. -+#ifdef __clang__ - #include_next -+#else -+#include "../../../lib/gcc/@TERMUX_HOST_PLATFORM@/4.9.x/include/stddef.h" -+#endif - #include <__nullptr> - - _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/packages/aapt/build.sh b/packages/aapt/build.sh index 4fb65a4a1..20a0f40c6 100644 --- a/packages/aapt/build.sh +++ b/packages/aapt/build.sh @@ -4,7 +4,7 @@ TERMUX_PKG_LICENSE="Apache-2.0" _TAG_VERSION=7.1.2 _TAG_REVISION=33 TERMUX_PKG_VERSION=${_TAG_VERSION}.${_TAG_REVISION} -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=3 TERMUX_PKG_BUILD_IN_SRC=yes TERMUX_PKG_DEPENDS="libexpat, libpng, libzopfli" diff --git a/packages/abook/build.sh b/packages/abook/build.sh index f2150b7de..eb349027b 100644 --- a/packages/abook/build.sh +++ b/packages/abook/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=http://abook.sourceforge.net/ TERMUX_PKG_DESCRIPTION="Abook is a text-based addressbook program designed to use with mutt mail client" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=0.6.0pre2 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SRCURL=http://abook.sourceforge.net/devel/abook-$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_SHA256=59d444504109dd96816e003b3023175981ae179af479349c34fa70bc12f6d385 TERMUX_PKG_DEPENDS="libandroid-support, ncurses, readline" diff --git a/packages/apt/build.sh b/packages/apt/build.sh index c6b8fab75..096ffadd4 100644 --- a/packages/apt/build.sh +++ b/packages/apt/build.sh @@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="Front-end for the dpkg package manager" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_DEPENDS="libcurl, liblzma, dpkg, gpgv, libc++, termux-exec" TERMUX_PKG_VERSION=1.4.9 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=d4d65e7c84da86f3e6dcc933bba46a08db429c9d933b667c864f5c0e880bac0d TERMUX_PKG_SRCURL=http://ftp.debian.org/debian/pool/main/a/apt/apt_${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" diff --git a/packages/aria2/build.sh b/packages/aria2/build.sh index 598f86449..4fffb428c 100644 --- a/packages/aria2/build.sh +++ b/packages/aria2/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://aria2.github.io TERMUX_PKG_DESCRIPTION="Download utility supporting HTTP/HTTPS, FTP, BitTorrent and Metalink" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=1.34.0 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=3 TERMUX_PKG_SHA256=3a44a802631606e138a9e172a3e9f5bcbaac43ce2895c1d8e2b46f30487e77a3 TERMUX_PKG_SRCURL=https://github.com/aria2/aria2/releases/download/release-${TERMUX_PKG_VERSION}/aria2-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_DEPENDS="c-ares, openssl, libxml2" diff --git a/packages/atomicparsley/build.sh b/packages/atomicparsley/build.sh index 3e1959c0b..08646921c 100644 --- a/packages/atomicparsley/build.sh +++ b/packages/atomicparsley/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://bitbucket.org/wez/atomicparsley TERMUX_PKG_DESCRIPTION="Read, parse and set metadata of MPEG-4 and 3gp files" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=0.9.6 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=3 TERMUX_PKG_SRCURL=https://bitbucket.org/wez/atomicparsley/get/${TERMUX_PKG_VERSION}.tar.bz2 TERMUX_PKG_SHA256=e28d46728be86219e6ce48695ea637d831ca0170ca6bdac99810996a8291ee50 TERMUX_PKG_EXTRA_CONFIGURE_ARGS="ac_cv_func_lroundf=yes" diff --git a/packages/bash/bash.patch b/packages/bash/bash.patch deleted file mode 100644 index af7782652..000000000 --- a/packages/bash/bash.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -u -r ../bash-4.2/lib/readline/complete.c ./lib/readline/complete.c ---- ../bash-4.2/lib/readline/complete.c 2011-01-16 21:32:57.000000000 +0100 -+++ ./lib/readline/complete.c 2014-01-13 12:28:56.338866643 +0100 -@@ -2021,7 +2021,7 @@ - const char *text; - int state; - { --#if defined (__WIN32__) || defined (__OPENNT) -+#if defined (__WIN32__) || defined (__OPENNT) || defined (__ANDROID__) - return (char *)NULL; - #else /* !__WIN32__ && !__OPENNT) */ - static char *username = (char *)NULL; diff --git a/packages/bash/build.sh b/packages/bash/build.sh index b39c29cb9..615f2d4e1 100644 --- a/packages/bash/build.sh +++ b/packages/bash/build.sh @@ -1,20 +1,21 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/bash/ TERMUX_PKG_DESCRIPTION="A sh-compatible shell that incorporates useful features from the Korn shell (ksh) and C shell (csh)" -TERMUX_PKG_LICENSE="GPL-2.0" -TERMUX_PKG_DEPENDS="ncurses, readline, libandroid-support, termux-tools, command-not-found" -_MAIN_VERSION=4.4 -_PATCH_VERSION=23 -TERMUX_PKG_REVISION=4 -TERMUX_PKG_SHA256=d86b3392c1202e8ff5a423b302e6284db7f8f435ea9f39b5b1b20fd3ac36dfcb +TERMUX_PKG_LICENSE="GPL-3.0" +TERMUX_PKG_DEPENDS="ncurses, readline (>= 8.0), libandroid-support, termux-tools, command-not-found" +_MAIN_VERSION=5.0 +_PATCH_VERSION=2 +TERMUX_PKG_SHA256=b4a80f2ac66170b2913efbfb9f2594f1f76c7b1afd11f799e22035d63077fb4d TERMUX_PKG_VERSION=${_MAIN_VERSION}.${_PATCH_VERSION} TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/bash/bash-${_MAIN_VERSION}.tar.gz +TERMUX_PKG_BUILD_IN_SRC=true TERMUX_PKG_ESSENTIAL=true -TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--enable-multibyte --without-bash-malloc --with-installed-readline ac_cv_header_grp_h=no ac_cv_rl_version=7.0" +TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--enable-multibyte --without-bash-malloc --with-installed-readline" TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" bash_cv_job_control_missing=present" TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" bash_cv_sys_siglist=yes" TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" bash_cv_func_sigsetjmp=present" TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" bash_cv_unusable_rtsigs=no" +TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" ac_cv_func_mbsnrtowcs=no" # Use bash_cv_dev_fd=whacky to use /proc/self/fd instead of /dev/fd. # After making this change process substitution such as in 'cat <(ls)' works. TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" bash_cv_dev_fd=whacky" @@ -31,38 +32,19 @@ TERMUX_PKG_RM_AFTER_INSTALL="share/man/man1/bashbug.1 bin/bashbug" termux_step_pre_configure() { declare -A PATCH_CHECKSUMS - PATCH_CHECKSUMS[001]=3e28d91531752df9a8cb167ad07cc542abaf944de9353fe8c6a535c9f1f17f0f - PATCH_CHECKSUMS[002]=7020a0183e17a7233e665b979c78c184ea369cfaf3e8b4b11f5547ecb7c13c53 - PATCH_CHECKSUMS[003]=51df5a9192fdefe0ddca4bdf290932f74be03ffd0503a3d112e4199905e718b2 - PATCH_CHECKSUMS[004]=ad080a30a4ac6c1273373617f29628cc320a35c8cd06913894794293dc52c8b3 - PATCH_CHECKSUMS[005]=221e4b725b770ad0bb6924df3f8d04f89eeca4558f6e4c777dfa93e967090529 - PATCH_CHECKSUMS[006]=6a8e2e2a6180d0f1ce39dcd651622fb6d2fd05db7c459f64ae42d667f1e344b8 - PATCH_CHECKSUMS[007]=de1ccc07b7bfc9e25243ad854f3bbb5d3ebf9155b0477df16aaf00a7b0d5edaf - PATCH_CHECKSUMS[008]=86144700465933636d7b945e89b77df95d3620034725be161ca0ca5a42e239ba - PATCH_CHECKSUMS[009]=0b6bdd1a18a0d20e330cc3bc71e048864e4a13652e29dc0ebf3918bea729343c - PATCH_CHECKSUMS[010]=8465c6f2c56afe559402265b39d9e94368954930f9aa7f3dfa6d36dd66868e06 - PATCH_CHECKSUMS[011]=dd56426ef7d7295e1107c0b3d06c192eb9298f4023c202ca2ba6266c613d170d - PATCH_CHECKSUMS[012]=fac271d2bf6372c9903e3b353cb9eda044d7fe36b5aab52f21f3f21cd6a2063e - PATCH_CHECKSUMS[013]=1b25efacbc1c4683b886d065b7a089a3601964555bcbf11f3a58989d38e853b6 - PATCH_CHECKSUMS[014]=a7f75cedb43c5845ab1c60afade22dcb5e5dc12dd98c0f5a3abcfb9f309bb17c - PATCH_CHECKSUMS[015]=d37602ecbeb62d5a22c8167ea1e621fcdbaaa79925890a973a45c810dd01c326 - PATCH_CHECKSUMS[016]=501f91cc89fadced16c73aa8858796651473602c722bb29f86a8ba588d0ff1b1 - PATCH_CHECKSUMS[017]=773f90b98768d4662a22470ea8eec5fdd8e3439f370f94638872aaf884bcd270 - PATCH_CHECKSUMS[018]=5bc494b42f719a8b0d844b7bd9ad50ebaae560e97f67c833c9e7e9d53981a8cc - PATCH_CHECKSUMS[019]=27170d6edfe8819835407fdc08b401d2e161b1400fe9d0c5317a51104c89c11e - PATCH_CHECKSUMS[020]=1840e2cbf26ba822913662f74037594ed562361485390c52813b38156c99522c - PATCH_CHECKSUMS[021]=bd8f59054a763ec1c64179ad5cb607f558708a317c2bdb22b814e3da456374c1 - PATCH_CHECKSUMS[022]=45331f0936e36ab91bfe44b936e33ed8a1b1848fa896e8a1d0f2ef74f297cb79 - PATCH_CHECKSUMS[023]=4fec236f3fbd3d0c47b893fdfa9122142a474f6ef66c20ffb6c0f4864dd591b6 - for patch_number in $(seq -f '%03g' ${_PATCH_VERSION}); do - PATCHFILE=$TERMUX_PKG_CACHEDIR/bash_patch_${patch_number}.patch + PATCH_CHECKSUMS[001]=f2fe9e1f0faddf14ab9bfa88d450a75e5d028fedafad23b88716bd657c737289 + PATCH_CHECKSUMS[002]=87e87d3542e598799adb3e7e01c8165bc743e136a400ed0de015845f7ff68707 + + for PATCH_NUM in $(seq -f '%03g' ${_PATCH_VERSION}); do + PATCHFILE=$TERMUX_PKG_CACHEDIR/bash_patch_${PATCH_NUM}.patch termux_download \ - "https://mirrors.kernel.org/gnu/bash/bash-4.4-patches/bash44-$patch_number" \ + "https://mirrors.kernel.org/gnu/bash/bash-${_MAIN_VERSION}-patches/bash${_MAIN_VERSION/./}-$PATCH_NUM" \ $PATCHFILE \ - ${PATCH_CHECKSUMS[$patch_number]} + ${PATCH_CHECKSUMS[$PATCH_NUM]} patch -p0 -i $PATCHFILE done + unset PATCH_CHECKSUMS PATCHFILE PATCH_NUM } termux_step_post_make_install() { diff --git a/packages/bash/config-top.h.patch b/packages/bash/config-top.h.patch index 8719bcf13..1905a3d63 100644 --- a/packages/bash/config-top.h.patch +++ b/packages/bash/config-top.h.patch @@ -1,7 +1,7 @@ -diff -uNr bash-4.4/config-top.h bash-4.4.mod/config-top.h ---- bash-4.4/config-top.h 2016-05-19 21:34:02.000000000 +0300 -+++ bash-4.4.mod/config-top.h 2018-06-21 11:12:01.926739639 +0300 -@@ -63,14 +63,14 @@ +diff -uNr bash-5.0/config-top.h bash-5.0.mod/config-top.h +--- bash-5.0/config-top.h 2018-10-12 22:35:23.000000000 +0300 ++++ bash-5.0.mod/config-top.h 2019-02-20 14:15:53.266802311 +0200 +@@ -63,7 +63,7 @@ /* The default value of the PATH variable. */ #ifndef DEFAULT_PATH_VALUE #define DEFAULT_PATH_VALUE \ @@ -9,7 +9,8 @@ diff -uNr bash-4.4/config-top.h bash-4.4.mod/config-top.h + "@TERMUX_PREFIX@/bin:@TERMUX_PREFIX@/bin/applets:." #endif - /* The value for PATH when invoking `command -p'. This is only used when + /* If you want to unconditionally set a value for PATH in every restricted +@@ -74,7 +74,7 @@ the Posix.2 confstr () function, or CS_PATH define are not present. */ #ifndef STANDARD_UTILS_PATH #define STANDARD_UTILS_PATH \ @@ -18,7 +19,7 @@ diff -uNr bash-4.4/config-top.h bash-4.4.mod/config-top.h #endif /* Default primary and secondary prompt strings. */ -@@ -87,7 +87,7 @@ +@@ -91,7 +91,7 @@ #define DEFAULT_BASHRC "~/.bashrc" /* System-wide .bashrc file for interactive shells. */ diff --git a/packages/bash/error.c.patch b/packages/bash/error.c.patch new file mode 100644 index 000000000..4e35e3076 --- /dev/null +++ b/packages/bash/error.c.patch @@ -0,0 +1,12 @@ +diff -uNr bash-5.0/error.c bash-5.0.mod/error.c +--- bash-5.0/error.c 2018-10-08 22:16:07.000000000 +0300 ++++ bash-5.0.mod/error.c 2019-02-20 14:19:39.265261705 +0200 +@@ -430,7 +430,7 @@ + static FILE *tracefp = (FILE *)NULL; + + if (tracefp == NULL) +- tracefp = fopen("/tmp/bash-trace.log", "a+"); ++ tracefp = fopen("@TERMUX_PREFIX@/tmp/bash-trace.log", "a+"); + + if (tracefp == NULL) + tracefp = stderr; diff --git a/packages/bash/getpwd.patch.disabled b/packages/bash/getpwd.patch.disabled deleted file mode 100644 index b08421261..000000000 --- a/packages/bash/getpwd.patch.disabled +++ /dev/null @@ -1,39 +0,0 @@ -diff -u -r ../bash-4.2/lib/readline/complete.c ./lib/readline/complete.c ---- ../bash-4.2/lib/readline/complete.c 2011-01-16 21:32:57.000000000 +0100 -+++ ./lib/readline/complete.c 2014-01-13 12:28:56.338866643 +0100 -@@ -2021,7 +2021,7 @@ - const char *text; - int state; - { --#if defined (__WIN32__) || defined (__OPENNT) -+#if defined (__WIN32__) || defined (__OPENNT) || defined (__ANDROID__) - return (char *)NULL; - #else /* !__WIN32__ && !__OPENNT) */ - static char *username = (char *)NULL; -diff -u -r ../bash-4.2/shell.c ./shell.c ---- ../bash-4.2/shell.c 2011-01-02 22:04:51.000000000 +0100 -+++ ./shell.c 2014-01-13 12:43:01.070846472 +0100 -@@ -1638,6 +1638,7 @@ - /* Don't fetch this more than once. */ - if (current_user.user_name == 0) - { -+#ifndef __ANDROID__ - entry = getpwuid (current_user.uid); - if (entry) - { -@@ -1649,12 +1650,15 @@ - } - else - { -+#endif - current_user.user_name = _("I have no name!"); - current_user.user_name = savestring (current_user.user_name); - current_user.shell = savestring ("/bin/sh"); - current_user.home_dir = savestring ("/"); -+#ifndef __ANDROID__ - } - endpwent (); -+#endif - } - } - diff --git a/packages/bash/lib-malloc-stats.c.patch b/packages/bash/lib-malloc-stats.c.patch new file mode 100644 index 000000000..2d54d4e0c --- /dev/null +++ b/packages/bash/lib-malloc-stats.c.patch @@ -0,0 +1,12 @@ +diff -uNr bash-5.0/lib/malloc/stats.c bash-5.0.mod/lib/malloc/stats.c +--- bash-5.0/lib/malloc/stats.c 2018-06-19 22:24:52.000000000 +0300 ++++ bash-5.0.mod/lib/malloc/stats.c 2019-02-20 14:17:52.094412438 +0200 +@@ -142,7 +142,7 @@ + _print_malloc_stats (s, fp); + } + +-#define TRACEROOT "/var/tmp/maltrace/stats." ++#define TRACEROOT "@TERMUX_PREFIX@/var/tmp/maltrace/stats." + + void + trace_malloc_stats (s, fn) diff --git a/packages/bash/lib-malloc-table.c.patch b/packages/bash/lib-malloc-table.c.patch new file mode 100644 index 000000000..dfe2a30f1 --- /dev/null +++ b/packages/bash/lib-malloc-table.c.patch @@ -0,0 +1,12 @@ +diff -uNr bash-5.0/lib/malloc/table.c bash-5.0.mod/lib/malloc/table.c +--- bash-5.0/lib/malloc/table.c 2016-01-15 15:47:26.000000000 +0200 ++++ bash-5.0.mod/lib/malloc/table.c 2019-02-20 14:18:05.854521552 +0200 +@@ -390,7 +390,7 @@ + _location_dump_table (stderr); + } + +-#define LOCROOT "/var/tmp/maltrace/locations." ++#define LOCROOT "@TERMUX_PREFIX@/var/tmp/maltrace/locations." + + void + mlocation_write_table () diff --git a/packages/bash/lib-malloc-trace.c.patch b/packages/bash/lib-malloc-trace.c.patch new file mode 100644 index 000000000..33f9f3d30 --- /dev/null +++ b/packages/bash/lib-malloc-trace.c.patch @@ -0,0 +1,12 @@ +diff -uNr bash-5.0/lib/malloc/trace.c bash-5.0.mod/lib/malloc/trace.c +--- bash-5.0/lib/malloc/trace.c 2016-01-15 15:48:23.000000000 +0200 ++++ bash-5.0.mod/lib/malloc/trace.c 2019-02-20 14:17:59.184468664 +0200 +@@ -108,7 +108,7 @@ + #endif + } + +-#define TRACEROOT "/var/tmp/maltrace/trace." ++#define TRACEROOT "@TERMUX_PREFIX@/var/tmp/maltrace/trace." + + void + malloc_set_tracefn (s, fn) diff --git a/packages/bash/lib-readline-complete.c.patch b/packages/bash/lib-readline-complete.c.patch new file mode 100644 index 000000000..c1164dd6b --- /dev/null +++ b/packages/bash/lib-readline-complete.c.patch @@ -0,0 +1,12 @@ +diff -uNr bash-5.0/lib/readline/complete.c bash-5.0.mod/lib/readline/complete.c +--- bash-5.0/lib/readline/complete.c 2017-07-05 02:43:20.000000000 +0300 ++++ bash-5.0.mod/lib/readline/complete.c 2019-02-20 14:15:49.683440481 +0200 +@@ -2231,7 +2231,7 @@ + char * + rl_username_completion_function (const char *text, int state) + { +-#if defined (__WIN32__) || defined (__OPENNT) ++#if defined (__WIN32__) || defined (__OPENNT) || defined (__ANDROID__) + return (char *)NULL; + #else /* !__WIN32__ && !__OPENNT) */ + static char *username = (char *)NULL; diff --git a/packages/bash/lib-readline-rlconf.h.patch b/packages/bash/lib-readline-rlconf.h.patch new file mode 100644 index 000000000..c21011240 --- /dev/null +++ b/packages/bash/lib-readline-rlconf.h.patch @@ -0,0 +1,12 @@ +diff -uNr bash-5.0/lib/readline/rlconf.h bash-5.0.mod/lib/readline/rlconf.h +--- bash-5.0/lib/readline/rlconf.h 2017-02-21 17:25:30.000000000 +0200 ++++ bash-5.0.mod/lib/readline/rlconf.h 2019-02-20 14:16:17.230326111 +0200 +@@ -43,7 +43,7 @@ + #define DEFAULT_INPUTRC "~/.inputrc" + + /* The ultimate last-ditch filename for an init file -- system-wide. */ +-#define SYS_INPUTRC "/etc/inputrc" ++#define SYS_INPUTRC "@TERMUX_PREFIX@/etc/inputrc" + + /* If defined, expand tabs to spaces. */ + #define DISPLAY_TABS diff --git a/packages/bash/lib-readline-util.c.patch b/packages/bash/lib-readline-util.c.patch new file mode 100644 index 000000000..d25becf31 --- /dev/null +++ b/packages/bash/lib-readline-util.c.patch @@ -0,0 +1,12 @@ +diff -uNr bash-5.0/lib/readline/util.c bash-5.0.mod/lib/readline/util.c +--- bash-5.0/lib/readline/util.c 2017-06-15 23:27:17.000000000 +0300 ++++ bash-5.0.mod/lib/readline/util.c 2019-02-20 14:18:24.271334221 +0200 +@@ -506,7 +506,7 @@ + if (x == 0) + x = "."; + #else +- x = "/var/tmp"; ++ x = "@TERMUX_PREFIX@/var/tmp"; + #endif + snprintf (fnbuf, sizeof (fnbuf), "%s/rltrace.%ld", x, (long)getpid()); + unlink(fnbuf); diff --git a/packages/bash/lib-sh-tmpfile.c.patch b/packages/bash/lib-sh-tmpfile.c.patch new file mode 100644 index 000000000..b77910868 --- /dev/null +++ b/packages/bash/lib-sh-tmpfile.c.patch @@ -0,0 +1,21 @@ +diff -uNr bash-5.0/lib/sh/tmpfile.c bash-5.0.mod/lib/sh/tmpfile.c +--- bash-5.0/lib/sh/tmpfile.c 2016-08-11 18:05:58.000000000 +0300 ++++ bash-5.0.mod/lib/sh/tmpfile.c 2019-02-20 14:17:08.270731426 +0200 +@@ -74,15 +74,11 @@ + return sys_tmpdir; + #endif + +- sys_tmpdir = "/tmp"; ++ sys_tmpdir = "@TERMUX_PREFIX@/tmp"; + if (file_iswdir (sys_tmpdir)) + return sys_tmpdir; + +- sys_tmpdir = "/var/tmp"; +- if (file_iswdir (sys_tmpdir)) +- return sys_tmpdir; +- +- sys_tmpdir = "/usr/tmp"; ++ sys_tmpdir = "@TERMUX_PREFIX@/var/tmp"; + if (file_iswdir (sys_tmpdir)) + return sys_tmpdir; + diff --git a/packages/bash/etc_hosts_and_profile_path.patch b/packages/bash/pathnames.h.in.patch similarity index 70% rename from packages/bash/etc_hosts_and_profile_path.patch rename to packages/bash/pathnames.h.in.patch index 616c3520f..89310df74 100644 --- a/packages/bash/etc_hosts_and_profile_path.patch +++ b/packages/bash/pathnames.h.in.patch @@ -1,5 +1,6 @@ ---- ../bash-4.2/pathnames.h.in 2009-01-04 20:32:40.000000000 +0100 -+++ ./pathnames.h.in 2014-02-04 18:34:17.000000000 +0100 +diff -uNr bash-5.0/pathnames.h.in bash-5.0.mod/pathnames.h.in +--- bash-5.0/pathnames.h.in 2009-01-04 21:32:40.000000000 +0200 ++++ bash-5.0.mod/pathnames.h.in 2019-02-20 14:15:56.880164371 +0200 @@ -22,10 +22,10 @@ #define _PATHNAMES_H_ diff --git a/packages/bash/shell.c.patch b/packages/bash/shell.c.patch new file mode 100644 index 000000000..1b51d4429 --- /dev/null +++ b/packages/bash/shell.c.patch @@ -0,0 +1,19 @@ +diff -uNr bash-5.0/shell.c bash-5.0.mod/shell.c +--- bash-5.0/shell.c 2018-12-06 18:28:21.000000000 +0200 ++++ bash-5.0.mod/shell.c 2019-02-20 14:19:29.808520144 +0200 +@@ -339,12 +339,12 @@ + { + struct stat sb; + +- if (stat ("/tmp", &sb) < 0) +- internal_warning (_("could not find /tmp, please create!")); ++ if (stat ("@TERMUX_PREFIX@/tmp", &sb) < 0) ++ internal_warning (_("could not find @TERMUX_PREFIX@/tmp, please create!")); + else + { + if (S_ISDIR (sb.st_mode) == 0) +- internal_warning (_("/tmp must be a valid directory name")); ++ internal_warning (_("@TERMUX_PREFIX@/tmp must be a valid directory name")); + } + } + #endif /* __CYGWIN__ */ diff --git a/packages/bash/y.tab.c.patch b/packages/bash/y.tab.c.patch deleted file mode 100644 index bdb490306..000000000 --- a/packages/bash/y.tab.c.patch +++ /dev/null @@ -1,13 +0,0 @@ -Fix breakage on android-21 due "conflicting type for '__errno'" - -diff -u -r ../bash-4.3/y.tab.c ./y.tab.c ---- ../bash-4.3/y.tab.c 2014-02-11 10:57:47.000000000 -0500 -+++ ./y.tab.c 2014-12-16 05:39:58.047338124 -0500 -@@ -280,7 +280,6 @@ - extern int bash_input_fd_changed; - #endif - --extern int errno; - /* **************************************************************** */ - /* */ - /* "Forward" declarations */ diff --git a/packages/bc/build.sh b/packages/bc/build.sh index b065cdb44..ce85fe91d 100644 --- a/packages/bc/build.sh +++ b/packages/bc/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/bc/ TERMUX_PKG_DESCRIPTION="Arbitrary precision numeric processing language" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=1.07.1 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/bc/bc-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=62adfca89b0a1c0164c2cdca59ca210c1d44c3ffc46daf9931cf4942664cb02a TERMUX_PKG_DEPENDS="readline,flex" diff --git a/packages/binutils/build.sh b/packages/binutils/build.sh index be98c5e04..8bb0e6502 100644 --- a/packages/binutils/build.sh +++ b/packages/binutils/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/binutils/ TERMUX_PKG_DESCRIPTION="Collection of binary tools, the main ones being ld, the GNU linker, and as, the GNU assembler" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=2.32 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=9b0d97b3d30df184d302bced12f976aa1e5fbf4b0be696cdebc6cca30411a46e TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/binutils/binutils-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--enable-gold --enable-plugins --disable-werror --with-system-zlib --enable-new-dtags" diff --git a/packages/boost/build.sh b/packages/boost/build.sh index 3ae2c3c6e..347d52a07 100644 --- a/packages/boost/build.sh +++ b/packages/boost/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://boost.org TERMUX_PKG_DESCRIPTION="Free peer-reviewed portable C++ source libraries" TERMUX_PKG_LICENSE="BSL-1.0" TERMUX_PKG_VERSION=1.69.0 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=8f32d4617390d1c2d16f26a27ab60d97807b35440d45891fa340fc2648b04406 TERMUX_PKG_SRCURL=https://dl.bintray.com/boostorg/release/$TERMUX_PKG_VERSION/source/boost_${TERMUX_PKG_VERSION//./_}.tar.bz2 TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/busybox/build.sh b/packages/busybox/build.sh index a9f4cb685..fbd05451d 100644 --- a/packages/busybox/build.sh +++ b/packages/busybox/build.sh @@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="Tiny versions of many common UNIX utilities into a singl TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_ESSENTIAL=yes TERMUX_PKG_VERSION=1.30.1 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=3d1d04a4dbd34048f4794815a5c48ebb9eb53c5277e09ffffc060323b95dfbdc TERMUX_PKG_SRCURL=https://busybox.net/downloads/busybox-${TERMUX_PKG_VERSION}.tar.bz2 TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/busybox/util-linux-setarch.c.patch b/packages/busybox/util-linux-setarch.c.patch new file mode 100644 index 000000000..5db8dbc9d --- /dev/null +++ b/packages/busybox/util-linux-setarch.c.patch @@ -0,0 +1,12 @@ +diff -uNr busybox-1.30.1/util-linux/setarch.c busybox-1.30.1.mod/util-linux/setarch.c +--- busybox-1.30.1/util-linux/setarch.c 2018-12-30 17:14:20.000000000 +0200 ++++ busybox-1.30.1.mod/util-linux/setarch.c 2019-03-02 14:06:38.150442254 +0200 +@@ -98,7 +98,7 @@ + + argv += optind; + if (!argv[0]) +- (--argv)[0] = (char*)"/bin/sh"; ++ (--argv)[0] = (char*)"@TERMUX_PREFIX@/bin/sh"; + + /* Try to execute the program */ + BB_EXECVP_or_die(argv); diff --git a/packages/ca-certificates/build.sh b/packages/ca-certificates/build.sh index aa6e27b5f..bd465d847 100644 --- a/packages/ca-certificates/build.sh +++ b/packages/ca-certificates/build.sh @@ -1,7 +1,7 @@ TERMUX_PKG_HOMEPAGE=https://curl.haxx.se/docs/caextract.html TERMUX_PKG_DESCRIPTION="Common CA certificates" TERMUX_PKG_LICENSE="GPL-2.0" -TERMUX_PKG_VERSION=20180124 +TERMUX_PKG_VERSION=20190124 TERMUX_PKG_SRCURL=https://curl.haxx.se/ca/cacert.pem # If the checksum has changed, it may be time to update the package version: TERMUX_PKG_SHA256=c1fd9b235896b1094ee97bfb7e042f93530b5e300781f59b45edf84ee8c75000 diff --git a/packages/calcurse/build.sh b/packages/calcurse/build.sh index 1f853837b..80348d81a 100644 --- a/packages/calcurse/build.sh +++ b/packages/calcurse/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://calcurse.org/ TERMUX_PKG_DESCRIPTION="calcurse is a calendar and scheduling application for the command line" TERMUX_PKG_LICENSE="BSD 2-Clause" -TERMUX_PKG_VERSION=4.3.0 -TERMUX_PKG_SHA256=31ecc3dc09e1e561502b4c94f965ed6b167c03e9418438c4a7ad5bad2c785f9a +TERMUX_PKG_VERSION=4.4.0 +TERMUX_PKG_SHA256=edcbc9dbcdfe3aba43ac70b8d6895fb0ff4a364df89762d1ca3053a14cec826f TERMUX_PKG_SRCURL=https://fossies.org/linux/privat/calcurse-$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_DEPENDS="libandroid-support, ncurses" diff --git a/packages/calcurse/io.c.patch b/packages/calcurse/io.c.patch index f7c6b9868..830e3974f 100644 --- a/packages/calcurse/io.c.patch +++ b/packages/calcurse/io.c.patch @@ -1,8 +1,21 @@ ---- ../../cache/calcurse-4.1.0/src/io.c 2016-03-27 12:26:18.000000000 +0200 -+++ ./src/io.c 2016-05-09 00:00:16.402558225 +0200 -@@ -1430,4 +1430,3 @@ void io_stop_psave_thread(void) - io_save_mutex_lock(); +diff -u -r ../calcurse-4.4.0/src/io.c ./src/io.c +--- ../calcurse-4.4.0/src/io.c 2019-02-04 20:44:04.000000000 +0000 ++++ ./src/io.c 2019-03-01 20:49:16.393057747 +0000 +@@ -1399,7 +1399,6 @@ + EXIT_IF(delay < 0, _("Invalid delay")); + char *mesg = _("Periodic save: data files have changed. Save cancelled."); + +- pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + for (;;) { + sleep(delay * MININSEC); + pthread_mutex_lock(&io_periodic_save_mutex); +@@ -1424,8 +1423,7 @@ + + /* Lock the mutex to avoid cancelling the thread during saving. */ + pthread_mutex_lock(&io_periodic_save_mutex); - pthread_cancel(io_t_psave); - pthread_join(io_t_psave, NULL); + pthread_kill(io_t_psave, 0); - io_save_mutex_unlock(); + pthread_mutex_unlock(&io_periodic_save_mutex); + io_t_psave = pthread_self(); + } diff --git a/packages/calcurse/notify.c.patch b/packages/calcurse/notify.c.patch deleted file mode 100644 index eacd8379c..000000000 --- a/packages/calcurse/notify.c.patch +++ /dev/null @@ -1,8 +0,0 @@ ---- ../../cache/calcurse-4.1.0/src/notify.c 2016-03-27 12:26:18.000000000 +0200 -+++ ./src/notify.c 2016-05-09 00:01:31.495324279 +0200 -@@ -193,4 +193,3 @@ void notify_stop_main_thread(void) - if (notify_t_main) { -- pthread_cancel(notify_t_main); -- pthread_join(notify_t_main, NULL); -+ pthread_kill(notify_t_main, 0); - } diff --git a/packages/calcurse/src-notify.c.patch b/packages/calcurse/src-notify.c.patch new file mode 100644 index 000000000..e6da91aba --- /dev/null +++ b/packages/calcurse/src-notify.c.patch @@ -0,0 +1,13 @@ +diff -u -r ../calcurse-4.4.0/src/notify.c ./src/notify.c +--- ../calcurse-4.4.0/src/notify.c 2019-01-18 22:38:58.000000000 +0000 ++++ ./src/notify.c 2019-03-01 20:45:55.019585998 +0000 +@@ -196,8 +196,7 @@ + if (pthread_equal(notify_t_main, pthread_self())) + return; + +- pthread_cancel(notify_t_main); +- pthread_join(notify_t_main, NULL); ++ pthread_kill(notify_t_main, 0); + notify_t_main = pthread_self(); + } + diff --git a/packages/calcurse/src-ui-calendar.c.patch b/packages/calcurse/src-ui-calendar.c.patch new file mode 100644 index 000000000..5489c43fb --- /dev/null +++ b/packages/calcurse/src-ui-calendar.c.patch @@ -0,0 +1,13 @@ +diff -u -r ../calcurse-4.4.0/src/ui-calendar.c ./src/ui-calendar.c +--- ../calcurse-4.4.0/src/ui-calendar.c 2019-01-18 22:38:58.000000000 +0000 ++++ ./src/ui-calendar.c 2019-03-01 20:47:58.622033795 +0000 +@@ -123,8 +123,7 @@ + if (pthread_equal(ui_calendar_t_date, pthread_self())) + return; + +- pthread_cancel(ui_calendar_t_date); +- pthread_join(ui_calendar_t_date, NULL); ++ pthread_kill(ui_calendar_t_date, 0); + ui_calendar_t_date = pthread_self(); + } + diff --git a/packages/calcurse/ui-calendar.c.patch b/packages/calcurse/ui-calendar.c.patch deleted file mode 100644 index 6b163a349..000000000 --- a/packages/calcurse/ui-calendar.c.patch +++ /dev/null @@ -1,8 +0,0 @@ ---- ../../cache/calcurse-4.1.0/src/ui-calendar.c 2016-03-27 12:26:18.000000000 +0200 -+++ ./src/ui-calendar.c 2016-05-09 00:01:52.327536161 +0200 -@@ -145,4 +145,3 @@ void ui_calendar_stop_date_thread(void) - if (ui_calendar_t_date) { -- pthread_cancel(ui_calendar_t_date); -- pthread_join(ui_calendar_t_date, NULL); -+ pthread_kill(ui_calendar_t_date, 0); - } diff --git a/packages/cgdb/build.sh b/packages/cgdb/build.sh index 06d1b323f..d12ec313b 100644 --- a/packages/cgdb/build.sh +++ b/packages/cgdb/build.sh @@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="A lightweight curses (terminal-based) interface to the G TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_DEPENDS="ncurses,readline,gdb,libutil" TERMUX_PKG_VERSION=0.7.0 -TERMUX_PKG_REVISION=3 +TERMUX_PKG_REVISION=5 TERMUX_PKG_SRCURL=https://cgdb.me/files/cgdb-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=bf7a9264668db3f9342591b08b2cc3bbb08e235ba2372877b4650b70c6fb5423 TERMUX_PKG_BUILD_IN_SRC="yes" diff --git a/packages/cmake/build.sh b/packages/cmake/build.sh index 1d691590c..f77a1b534 100644 --- a/packages/cmake/build.sh +++ b/packages/cmake/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://cmake.org/ TERMUX_PKG_DESCRIPTION="Family of tools designed to build, test and package software" TERMUX_PKG_LICENSE="BSD 3-Clause" TERMUX_PKG_VERSION=3.13.4 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=fdd928fee35f472920071d1c7f1a6a2b72c9b25e04f7a37b409349aef3f20e9b TERMUX_PKG_SRCURL=https://www.cmake.org/files/v${TERMUX_PKG_VERSION:0:4}/cmake-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="libarchive, libcurl, libexpat, jsoncpp, libuv, rhash, make, clang" diff --git a/packages/coreutils/build.sh b/packages/coreutils/build.sh index b70c66a1b..7ee803590 100644 --- a/packages/coreutils/build.sh +++ b/packages/coreutils/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/coreutils/ TERMUX_PKG_DESCRIPTION="Basic file, shell and text manipulation utilities from the GNU project" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=8.30 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=e831b3a86091496cdba720411f9748de81507798f6130adeaef872d206e1b057 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/coreutils/coreutils-${TERMUX_PKG_VERSION}.tar.xz # pinky has no usage on Android. diff --git a/packages/coreutils/fix-paths.patch b/packages/coreutils/fix-paths.patch new file mode 100644 index 000000000..cb8356190 --- /dev/null +++ b/packages/coreutils/fix-paths.patch @@ -0,0 +1,92 @@ +diff -uNr coreutils-8.30/lib/getusershell.c coreutils-8.30.mod/lib/getusershell.c +--- coreutils-8.30/lib/getusershell.c 2018-05-14 07:20:31.000000000 +0300 ++++ coreutils-8.30.mod/lib/getusershell.c 2019-03-01 20:16:36.731319198 +0200 +@@ -56,7 +56,7 @@ + static char const* const default_shells[] = + { + ADDITIONAL_DEFAULT_SHELLS +- "/bin/sh", "/bin/csh", "/usr/bin/sh", "/usr/bin/csh", NULL ++ "@TERMUX_PREFIX@/bin/sh", "@TERMUX_PREFIX@/bin/bash", "@TERMUX_PREFIX@/bin/ash", "@TERMUX_PREFIX@/bin/csh", NULL + }; + + /* Index of the next shell in 'default_shells' to return. +diff -uNr coreutils-8.30/lib/tempname.c coreutils-8.30.mod/lib/tempname.c +--- coreutils-8.30/lib/tempname.c 2018-05-14 07:22:38.000000000 +0300 ++++ coreutils-8.30.mod/lib/tempname.c 2019-03-01 20:14:04.073892964 +0200 +@@ -33,7 +33,7 @@ + + #include + #ifndef P_tmpdir +-# define P_tmpdir "/tmp" ++# define P_tmpdir "@TERMUX_PREFIX@/tmp" + #endif + #ifndef TMP_MAX + # define TMP_MAX 238328 +@@ -149,8 +149,8 @@ + { + if (direxists (P_tmpdir)) + dir = P_tmpdir; +- else if (strcmp (P_tmpdir, "/tmp") != 0 && direxists ("/tmp")) +- dir = "/tmp"; ++ else if (strcmp (P_tmpdir, "@TERMUX_PREFIX@/tmp") != 0 && direxists ("@TERMUX_PREFIX@/tmp")) ++ dir = "@TERMUX_PREFIX@/tmp"; + else + { + __set_errno (ENOENT); +diff -uNr coreutils-8.30/src/mktemp.c coreutils-8.30.mod/src/mktemp.c +--- coreutils-8.30/src/mktemp.c 2018-05-14 07:20:24.000000000 +0300 ++++ coreutils-8.30.mod/src/mktemp.c 2019-03-01 20:12:37.923442265 +0200 +@@ -270,7 +270,7 @@ + else if (dest_dir_arg && *dest_dir_arg) + dest_dir = dest_dir_arg; + else +- dest_dir = "/tmp"; ++ dest_dir = "@TERMUX_PREFIX@/tmp"; + + if (last_component (template) != template) + die (EXIT_FAILURE, 0, +@@ -284,7 +284,7 @@ + else + { + char *env = getenv ("TMPDIR"); +- dest_dir = (env && *env ? env : "/tmp"); ++ dest_dir = (env && *env ? env : "@TERMUX_PREFIX@/tmp"); + } + if (IS_ABSOLUTE_FILE_NAME (template)) + die (EXIT_FAILURE, 0, +diff -uNr coreutils-8.30/src/sort.c coreutils-8.30.mod/src/sort.c +--- coreutils-8.30/src/sort.c 2018-05-14 07:20:24.000000000 +0300 ++++ coreutils-8.30.mod/src/sort.c 2019-03-01 20:13:40.883773368 +0200 +@@ -105,7 +105,7 @@ + #endif + + #ifndef DEFAULT_TMPDIR +-# define DEFAULT_TMPDIR "/tmp" ++# define DEFAULT_TMPDIR "@TERMUX_PREFIX@/tmp" + #endif + + /* Maximum number of lines to merge every time a NODE is taken from +diff -uNr coreutils-8.30/src/split.c coreutils-8.30.mod/src/split.c +--- coreutils-8.30/src/split.c 2018-05-14 07:20:24.000000000 +0300 ++++ coreutils-8.30.mod/src/split.c 2019-03-01 20:15:52.004434545 +0200 +@@ -481,7 +481,7 @@ + pid_t child_pid; + char const *shell_prog = getenv ("SHELL"); + if (shell_prog == NULL) +- shell_prog = "/bin/sh"; ++ shell_prog = "@TERMUX_PREFIX@/bin/sh"; + if (setenv ("FILE", name, 1) != 0) + die (EXIT_FAILURE, errno, + _("failed to set FILE environment variable")); +diff -uNr coreutils-8.30/src/tac.c coreutils-8.30.mod/src/tac.c +--- coreutils-8.30/src/tac.c 2018-05-14 07:20:24.000000000 +0300 ++++ coreutils-8.30.mod/src/tac.c 2019-03-01 20:13:29.470380749 +0200 +@@ -67,7 +67,7 @@ + + + #ifndef DEFAULT_TMPDIR +-# define DEFAULT_TMPDIR "/tmp" ++# define DEFAULT_TMPDIR "@TERMUX_PREFIX@/tmp" + #endif + + /* The number of bytes per atomic read. */ diff --git a/packages/coreutils/mktemp.patch b/packages/coreutils/mktemp.patch deleted file mode 100644 index 58cdbd4c7..000000000 --- a/packages/coreutils/mktemp.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -u -r ../coreutils-8.22/src/mktemp.c ./src/mktemp.c ---- ../coreutils-8.22/src/mktemp.c 2013-12-04 15:48:30.000000000 +0100 -+++ ./src/mktemp.c 2014-06-03 11:31:58.351787119 +0200 -@@ -269,7 +269,7 @@ - else if (dest_dir_arg && *dest_dir_arg) - dest_dir = dest_dir_arg; - else -- dest_dir = "/tmp"; -+ dest_dir = "@TERMUX_PREFIX@/tmp"; - - if (last_component (template) != template) - error (EXIT_FAILURE, 0, -@@ -283,7 +283,7 @@ - else - { - char *env = getenv ("TMPDIR"); -- dest_dir = (env && *env ? env : "/tmp"); -+ dest_dir = (env && *env ? env : "@TERMUX_PREFIX@/tmp"); - } - if (IS_ABSOLUTE_FILE_NAME (template)) - error (EXIT_FAILURE, 0, diff --git a/packages/curseofwar/build.sh b/packages/curseofwar/build.sh index 6caeb37fc..2f5c86d97 100644 --- a/packages/curseofwar/build.sh +++ b/packages/curseofwar/build.sh @@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="Fast-paced action strategy game focusing on high-level s TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_DEPENDS="ncurses" TERMUX_PKG_VERSION=1.2.0 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=3 TERMUX_PKG_SRCURL=https://github.com/a-nikolaev/curseofwar/archive/v${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=91b7781e26341faa6b6999b6baf6e74ef532fa94303ab6a2bf9ff6d614a3f670 diff --git a/packages/ddrescue/build.sh b/packages/ddrescue/build.sh index f5b6aed8c..6e07a4444 100644 --- a/packages/ddrescue/build.sh +++ b/packages/ddrescue/build.sh @@ -1,7 +1,6 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/ddrescue/ TERMUX_PKG_DESCRIPTION="GNU data recovery tool" TERMUX_PKG_LICENSE="GPL-3.0" -TERMUX_PKG_VERSION=1.23 -TERMUX_PKG_REVISION=1 -TERMUX_PKG_SHA256=a9ae2dd44592bf386c9c156a5dacaeeb901573c9867ada3608f887d401338d8d +TERMUX_PKG_VERSION=1.24 +TERMUX_PKG_SHA256=4b5d3feede70e3657ca6b3c7844f23131851cbb6af0cecc9721500f7d7021087 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/ddrescue/ddrescue-${TERMUX_PKG_VERSION}.tar.lz diff --git a/packages/dnsutils/build.sh b/packages/dnsutils/build.sh index 2c88c172a..db986b1c9 100644 --- a/packages/dnsutils/build.sh +++ b/packages/dnsutils/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.isc.org/downloads/bind/ TERMUX_PKG_DESCRIPTION="Clients provided with BIND" TERMUX_PKG_LICENSE="MPL-2.0" TERMUX_PKG_VERSION=9.13.6 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=ae771f209fd807d6cb9db20e16ee96ec4ba44b2052cda8c4487ddacae124870e TERMUX_PKG_SRCURL="ftp://ftp.isc.org/isc/bind9/${TERMUX_PKG_VERSION}/bind-${TERMUX_PKG_VERSION}.tar.gz" TERMUX_PKG_DEPENDS="openssl, readline, resolv-conf" diff --git a/packages/dnsutils/lib-irs-context.c.patch b/packages/dnsutils/lib-irs-context.c.patch new file mode 100644 index 000000000..5e1df193d --- /dev/null +++ b/packages/dnsutils/lib-irs-context.c.patch @@ -0,0 +1,12 @@ +diff -uNr bind-9.13.6/lib/irs/context.c bind-9.13.6.mod/lib/irs/context.c +--- bind-9.13.6/lib/irs/context.c 2019-02-07 01:44:09.000000000 +0200 ++++ bind-9.13.6.mod/lib/irs/context.c 2019-03-02 02:39:12.188552664 +0200 +@@ -42,7 +42,7 @@ + + #ifndef DNS_CONF + /*% location of dns.conf */ +-#define DNS_CONF "/etc/dns.conf" ++#define DNS_CONF "@TERMUX_PREFIX@/etc/dns.conf" + #endif + + static bool thread_key_initialized = false; diff --git a/packages/ffmpeg/build.sh b/packages/ffmpeg/build.sh index bf555a5d8..e49f62b04 100644 --- a/packages/ffmpeg/build.sh +++ b/packages/ffmpeg/build.sh @@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="Tools and libraries to manipulate a wide range of multim TERMUX_PKG_LICENSE="GPL-3.0" # NOTE: mpv has to be rebuilt and version bumped after updating ffmpeg. TERMUX_PKG_VERSION=4.1.1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=373749824dfd334d84e55dff406729edfd1606575ee44dd485d97d45ea4d2d86 TERMUX_PKG_SRCURL=https://www.ffmpeg.org/releases/ffmpeg-${TERMUX_PKG_VERSION}.tar.xz # libbz2 is used by matroska decoder: diff --git a/packages/ffmpeg/libavutil-file_open.c.patch b/packages/ffmpeg/libavutil-file_open.c.patch new file mode 100644 index 000000000..4d2971428 --- /dev/null +++ b/packages/ffmpeg/libavutil-file_open.c.patch @@ -0,0 +1,21 @@ +diff -uNr ffmpeg-4.1.1/libavutil/file_open.c ffmpeg-4.1.1.mod/libavutil/file_open.c +--- ffmpeg-4.1.1/libavutil/file_open.c 2019-02-09 22:56:02.000000000 +0200 ++++ ffmpeg-4.1.1.mod/libavutil/file_open.c 2019-03-02 01:54:58.775236751 +0200 +@@ -119,7 +119,7 @@ + #undef free + free(ptr); + #else +- size_t len = strlen(prefix) + 12; /* room for "/tmp/" and "XXXXXX\0" */ ++ size_t len = strlen(prefix) + strlen("@TERMUX_PREFIX@/tmp/") + 7; /* room for "@TERMUX_PREFIX@/tmp/" and "XXXXXX\0" */ + *filename = av_malloc(len); + #endif + /* -----common section-----*/ +@@ -136,7 +136,7 @@ + # endif + fd = open(*filename, O_RDWR | O_BINARY | O_CREAT | O_EXCL, 0600); + #else +- snprintf(*filename, len, "/tmp/%sXXXXXX", prefix); ++ snprintf(*filename, len, "@TERMUX_PREFIX@/tmp/%sXXXXXX", prefix); + fd = mkstemp(*filename); + #if defined(_WIN32) || defined (__ANDROID__) + if (fd < 0) { diff --git a/packages/file/build.sh b/packages/file/build.sh index f848a5cea..761450026 100644 --- a/packages/file/build.sh +++ b/packages/file/build.sh @@ -1,8 +1,9 @@ TERMUX_PKG_HOMEPAGE=https://darwinsys.com/file/ TERMUX_PKG_DESCRIPTION="Command-line tool that tells you in words what kind of data a file contains" TERMUX_PKG_LICENSE="BSD 2-Clause" -TERMUX_PKG_VERSION=5.35 -TERMUX_PKG_SHA256=30c45e817440779be7aac523a905b123cba2a6ed0bf4f5439e1e99ba940b5546 +TERMUX_PKG_VERSION=5.36 +TERMUX_PKG_REVISION=1 +TERMUX_PKG_SHA256=fb608290c0fd2405a8f63e5717abf6d03e22e183fb21884413d1edd918184379 TERMUX_PKG_SRCURL=ftp://ftp.astron.com/pub/file/file-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_EXTRA_CONFIGURE_ARGS="ac_cv_func_mmap_fixed_mapped=yes" TERMUX_PKG_EXTRA_MAKE_ARGS="FILE_COMPILE=$TERMUX_PKG_HOSTBUILD_DIR/src/file" diff --git a/packages/file/fix-paths.patch b/packages/file/fix-paths.patch new file mode 100644 index 000000000..8ad7b12b9 --- /dev/null +++ b/packages/file/fix-paths.patch @@ -0,0 +1,24 @@ +diff -uNr file-5.35/src/compress.c file-5.35.mod/src/compress.c +--- file-5.35/src/compress.c 2018-10-15 19:29:16.000000000 +0300 ++++ file-5.35.mod/src/compress.c 2019-03-02 01:49:14.754069208 +0200 +@@ -410,7 +410,7 @@ + ssize_t r; + int tfd; + +- (void)strlcpy(buf, "/tmp/file.XXXXXX", sizeof buf); ++ (void)strlcpy(buf, "@TERMUX_PREFIX@/tmp/file.XXXXXX", sizeof buf); + #ifndef HAVE_MKSTEMP + { + char *ptr = mktemp(buf); +diff -uNr file-5.35/src/file.h file-5.35.mod/src/file.h +--- file-5.35/src/file.h 2018-10-15 19:29:16.000000000 +0300 ++++ file-5.35.mod/src/file.h 2019-03-02 01:49:41.984157713 +0200 +@@ -79,7 +79,7 @@ + #define ENABLE_CONDITIONALS + + #ifndef MAGIC +-#define MAGIC "/etc/magic" ++#define MAGIC "@TERMUX_PREFIX@/etc/magic" + #endif + + #if defined(__EMX__) || defined (WIN32) diff --git a/packages/fish/build.sh b/packages/fish/build.sh index 5ef15d53f..375324ee6 100644 --- a/packages/fish/build.sh +++ b/packages/fish/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://fishshell.com/ TERMUX_PKG_DESCRIPTION="Shell geared towards interactive use" TERMUX_PKG_LICENSE="GPL-2.0" -TERMUX_PKG_VERSION=3.0.1 -TERMUX_PKG_SHA256=21677a5755ee1738bad2cf8179c104068f8bb81b969660d5a2af4ba6eceba5e4 +TERMUX_PKG_VERSION=3.0.2 +TERMUX_PKG_SHA256=14728ccc6b8e053d01526ebbd0822ca4eb0235e6487e832ec1d0d22f1395430e TERMUX_PKG_SRCURL=https://github.com/fish-shell/fish-shell/releases/download/$TERMUX_PKG_VERSION/fish-${TERMUX_PKG_VERSION}.tar.gz # fish calls 'tput' from ncurses-utils, at least when cancelling (Ctrl+C) a command line. # man is needed since fish calls apropos during command completion. diff --git a/packages/fossil/build.sh b/packages/fossil/build.sh index 31b30929a..09a27f6b0 100644 --- a/packages/fossil/build.sh +++ b/packages/fossil/build.sh @@ -3,8 +3,8 @@ TERMUX_PKG_DESCRIPTION="DSCM with built-in wiki, http interface and server, tick TERMUX_PKG_LICENSE="BSD 2-Clause" TERMUX_PKG_API_LEVEL=23 TERMUX_PKG_MAINTAINER="Vishal Biswas @vishalbiswas" -TERMUX_PKG_VERSION=2.7 -TERMUX_PKG_SHA256=2c24359131d7495e47dc95021eb35f1ba408ded9087e36370d94742a4011033c +TERMUX_PKG_VERSION=2.8 +TERMUX_PKG_SHA256=6a32bec73de26ff5cc8bbb0b7b45360f4e4145931fd215ed91414ed190b3715d TERMUX_PKG_SRCURL=https://www.fossil-scm.org/index.html/uv/fossil-src-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="libsqlite, openssl" diff --git a/packages/frobtads/build.sh b/packages/frobtads/build.sh index 11703e88d..96de21f9a 100644 --- a/packages/frobtads/build.sh +++ b/packages/frobtads/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=http://www.tads.org/frobtads.htm TERMUX_PKG_DESCRIPTION="TADS is a free authoring system for writing your own Interactive Fiction" TERMUX_PKG_LICENSE="custom" TERMUX_PKG_VERSION=1.2.4 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=705be5849293844f499a85280e793941b0eacb362b90d49d85ae8308e4c5b63c TERMUX_PKG_SRCURL=https://github.com/realnc/frobtads/releases/download/$TERMUX_PKG_VERSION/frobtads-$TERMUX_PKG_VERSION.tar.bz2 TERMUX_PKG_RM_AFTER_INSTALL="share/frobtads/tads3/doc share/frobtads/tads3/lib/webuires" diff --git a/packages/gawk/build.sh b/packages/gawk/build.sh index 447577657..ae6351da2 100644 --- a/packages/gawk/build.sh +++ b/packages/gawk/build.sh @@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="Programming language designed for text processing" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_DEPENDS="libandroid-support, libmpfr, libgmp, readline" TERMUX_PKG_VERSION=4.2.1 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=3 TERMUX_PKG_SHA256=d1119785e746d46a8209d28b2de404a57f983aa48670f4e225531d3bdc175551 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/gawk/gawk-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_RM_AFTER_INSTALL="bin/gawk-* bin/igawk share/man/man1/igawk.1" diff --git a/packages/gdb/build.sh b/packages/gdb/build.sh index 89b9de58e..e6b50fe06 100644 --- a/packages/gdb/build.sh +++ b/packages/gdb/build.sh @@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="The standard GNU Debugger that runs on many Unix-like sy TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_DEPENDS="liblzma, libexpat, readline, ncurses, libmpfr" TERMUX_PKG_VERSION=8.2.1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=0a6a432907a03c5c8eaad3c3cffd50c00a40c3a5e3c4039440624bae703f2202 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/gdb/gdb-${TERMUX_PKG_VERSION}.tar.xz # gdb can not build with our normal --disable-static: https://sourceware.org/bugzilla/show_bug.cgi?id=15916 diff --git a/packages/gdk-pixbuf/Makefile.in.patch b/packages/gdk-pixbuf/Makefile.in.patch deleted file mode 100644 index f0367ced1..000000000 --- a/packages/gdk-pixbuf/Makefile.in.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -u -r ../gdk-pixbuf-2.36.9/Makefile.in ./Makefile.in ---- ../gdk-pixbuf-2.36.9/Makefile.in 2017-08-19 17:24:08.000000000 +0000 -+++ ./Makefile.in 2017-12-02 00:17:57.592766016 +0000 -@@ -451,7 +451,7 @@ - top_build_prefix = @top_build_prefix@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ --SUBDIRS = gdk-pixbuf po docs thumbnailer tests contrib win32 -+SUBDIRS = gdk-pixbuf po docs tests contrib win32 - meson_files = \ - meson.build \ - meson_options.txt \ diff --git a/packages/gdk-pixbuf/build.sh b/packages/gdk-pixbuf/build.sh index 8c3939c33..93a000043 100644 --- a/packages/gdk-pixbuf/build.sh +++ b/packages/gdk-pixbuf/build.sh @@ -1,12 +1,13 @@ TERMUX_PKG_HOMEPAGE=https://developer.gnome.org/gdk-pixbuf/ TERMUX_PKG_DESCRIPTION="Library for image loading and manipulation" TERMUX_PKG_LICENSE="LGPL-2.1" -TERMUX_PKG_VERSION=2.36.12 -TERMUX_PKG_SHA256=fff85cf48223ab60e3c3c8318e2087131b590fd6f1737e42cb3759a3b427a334 +TERMUX_PKG_VERSION=2.38.1 +TERMUX_PKG_SHA256=f19ff836ba991031610dcc53774e8ca436160f7d981867c8c3a37acfe493ab3a TERMUX_PKG_SRCURL=ftp://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/${TERMUX_PKG_VERSION:0:4}/gdk-pixbuf-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_DEPENDS="glib, libpng, libtiff, libjpeg-turbo" TERMUX_PKG_DEVPACKAGE_DEPENDS="libpng-dev, glib-dev" TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" -gio_can_sniff=no ---disable-glibtest +-Dgio_sniffing=false +-Dgir=false +-Dx11=false " diff --git a/packages/gegl/build.sh b/packages/gegl/build.sh index dd6afdb35..388ceb9ec 100644 --- a/packages/gegl/build.sh +++ b/packages/gegl/build.sh @@ -1,9 +1,8 @@ TERMUX_PKG_HOMEPAGE=http://gegl.org/ TERMUX_PKG_DESCRIPTION="Data flow based image processing framework" TERMUX_PKG_LICENSE="GPL-3.0" -TERMUX_PKG_VERSION=0.4.12 -TERMUX_PKG_REVISION=1 -TERMUX_PKG_SHA256=e967293eabe89257e1d511bf68435fbfd44e6e0f9ef51b86cc50781f09eb5852 +TERMUX_PKG_VERSION=0.4.14 +TERMUX_PKG_SHA256=4c01d58599d8ddb3714effd2675ea1863272cf2d7d9ed3d32aee80c89f859901 TERMUX_PKG_SRCURL=https://download.gimp.org/pub/gegl/${TERMUX_PKG_VERSION:0:3}/gegl-${TERMUX_PKG_VERSION}.tar.bz2 TERMUX_PKG_DEPENDS="libandroid-support, ffmpeg, babl, json-glib, libjpeg-turbo, libpng, libjasper, littlecms, libtiff, librsvg" TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" diff --git a/packages/gettext/build.sh b/packages/gettext/build.sh index 3417dde9f..0e5469d0d 100644 --- a/packages/gettext/build.sh +++ b/packages/gettext/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/gettext/ TERMUX_PKG_DESCRIPTION="GNU Internationalization utilities" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=0.19.8.1 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=105556dbc5c3fbbc2aa0edb46d22d055748b6f5c7cd7a8d99f8e7eb84e938be4 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/gettext/gettext-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/git/build.sh b/packages/git/build.sh index 531df4e22..ec86ad891 100644 --- a/packages/git/build.sh +++ b/packages/git/build.sh @@ -3,9 +3,8 @@ TERMUX_PKG_DESCRIPTION="Fast, scalable, distributed revision control system" TERMUX_PKG_LICENSE="GPL-2.0" # less is required as a pager for git log, and the busybox less does not handle used escape sequences. TERMUX_PKG_DEPENDS="libcurl, less, openssl, pcre2" -TERMUX_PKG_VERSION=2.20.1 -TERMUX_PKG_REVISION=1 -TERMUX_PKG_SHA256=9d2e91e2faa2ea61ba0a70201d023b36f54d846314591a002c610ea2ab81c3e9 +TERMUX_PKG_VERSION=2.21.0 +TERMUX_PKG_SHA256=8ccb1ce743ee991d91697e163c47c11be4bf81efbdd9fb0b4a7ad77cc0020d28 TERMUX_PKG_SRCURL=https://www.kernel.org/pub/software/scm/git/git-${TERMUX_PKG_VERSION}.tar.xz ## This requires a working $TERMUX_PREFIX/bin/sh on the host building: TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" diff --git a/packages/glib/build.sh b/packages/glib/build.sh index a2e0ec7b3..3285716e9 100644 --- a/packages/glib/build.sh +++ b/packages/glib/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://developer.gnome.org/glib/ TERMUX_PKG_DESCRIPTION="Library providing core building blocks for libraries and applications written in C" TERMUX_PKG_LICENSE="LGPL-2.1" TERMUX_PKG_VERSION=2.58.3 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=8f43c31767e88a25da72b52a40f3301fefc49a665b56dc10ee7cc9565cbe7481 TERMUX_PKG_SRCURL=https://ftp.gnome.org/pub/gnome/sources/glib/${TERMUX_PKG_VERSION:0:4}/glib-${TERMUX_PKG_VERSION}.tar.xz # libandroid-support to get langinfo.h in include path. diff --git a/packages/glib/fix-hardcoded-paths.patch b/packages/glib/fix-hardcoded-paths.patch index 8241b4bd1..49ca8036e 100644 --- a/packages/glib/fix-hardcoded-paths.patch +++ b/packages/glib/fix-hardcoded-paths.patch @@ -1,7 +1,7 @@ -diff -uNr glib-2.56.1/gio/gdbusaddress.c glib-2.56.1.mod/gio/gdbusaddress.c ---- glib-2.56.1/gio/gdbusaddress.c 2018-02-06 17:44:20.000000000 +0200 -+++ glib-2.56.1.mod/gio/gdbusaddress.c 2018-06-19 14:33:32.367220998 +0300 -@@ -1624,7 +1624,7 @@ +diff -uNr glib-2.58.3/gio/gdbusaddress.c glib-2.58.3.mod/gio/gdbusaddress.c +--- glib-2.58.3/gio/gdbusaddress.c 2019-01-21 15:38:50.000000000 +0200 ++++ glib-2.58.3.mod/gio/gdbusaddress.c 2019-03-02 02:08:55.324976201 +0200 +@@ -1628,7 +1628,7 @@ ret = g_strdup (g_getenv ("DBUS_SYSTEM_BUS_ADDRESS")); if (ret == NULL) { @@ -10,9 +10,9 @@ diff -uNr glib-2.56.1/gio/gdbusaddress.c glib-2.56.1.mod/gio/gdbusaddress.c } break; -diff -uNr glib-2.56.1/gio/gdbusprivate.c glib-2.56.1.mod/gio/gdbusprivate.c ---- glib-2.56.1/gio/gdbusprivate.c 2018-04-07 05:10:22.000000000 +0300 -+++ glib-2.56.1.mod/gio/gdbusprivate.c 2018-06-19 14:38:52.253904135 +0300 +diff -uNr glib-2.58.3/gio/gdbusprivate.c glib-2.58.3.mod/gio/gdbusprivate.c +--- glib-2.58.3/gio/gdbusprivate.c 2019-01-21 15:38:50.000000000 +0200 ++++ glib-2.58.3.mod/gio/gdbusprivate.c 2019-03-02 02:08:55.328309547 +0200 @@ -2098,17 +2098,17 @@ /* TODO: use PACKAGE_LOCALSTATEDIR ? */ ret = NULL; @@ -34,9 +34,9 @@ diff -uNr glib-2.56.1/gio/gdbusprivate.c glib-2.56.1.mod/gio/gdbusprivate.c } else { -diff -uNr glib-2.56.1/gio/gnetworking.h.in glib-2.56.1.mod/gio/gnetworking.h.in ---- glib-2.56.1/gio/gnetworking.h.in 2017-07-14 02:03:38.000000000 +0300 -+++ glib-2.56.1.mod/gio/gnetworking.h.in 2018-06-19 14:33:00.180552674 +0300 +diff -uNr glib-2.58.3/gio/gnetworking.h.in glib-2.58.3.mod/gio/gnetworking.h.in +--- glib-2.58.3/gio/gnetworking.h.in 2019-01-21 15:38:50.000000000 +0200 ++++ glib-2.58.3.mod/gio/gnetworking.h.in 2019-03-02 02:08:55.331642893 +0200 @@ -55,7 +55,7 @@ #endif @@ -46,10 +46,10 @@ diff -uNr glib-2.56.1/gio/gnetworking.h.in glib-2.56.1.mod/gio/gnetworking.h.in #endif #ifndef CMSG_LEN -diff -uNr glib-2.56.1/gio/gunixmounts.c glib-2.56.1.mod/gio/gunixmounts.c ---- glib-2.56.1/gio/gunixmounts.c 2018-04-07 05:10:22.000000000 +0300 -+++ glib-2.56.1.mod/gio/gunixmounts.c 2018-06-19 14:42:12.380581105 +0300 -@@ -522,7 +522,7 @@ +diff -uNr glib-2.58.3/gio/gunixmounts.c glib-2.58.3.mod/gio/gunixmounts.c +--- glib-2.58.3/gio/gunixmounts.c 2019-01-21 15:38:50.000000000 +0200 ++++ glib-2.58.3.mod/gio/gunixmounts.c 2019-03-02 02:08:55.331642893 +0200 +@@ -539,7 +539,7 @@ return _PATH_MOUNTED; # endif #else @@ -58,7 +58,7 @@ diff -uNr glib-2.56.1/gio/gunixmounts.c glib-2.56.1.mod/gio/gunixmounts.c #endif } -@@ -648,7 +648,7 @@ +@@ -666,7 +666,7 @@ mountinfo_path = _PATH_MOUNTED; # endif #else @@ -67,7 +67,7 @@ diff -uNr glib-2.56.1/gio/gunixmounts.c glib-2.56.1.mod/gio/gunixmounts.c #endif return mountinfo_path; -@@ -939,7 +939,7 @@ +@@ -960,7 +960,7 @@ #elif defined(VFSTAB) return VFSTAB; #else @@ -76,7 +76,7 @@ diff -uNr glib-2.56.1/gio/gunixmounts.c glib-2.56.1.mod/gio/gunixmounts.c #endif #endif } -@@ -2894,7 +2894,7 @@ +@@ -2955,7 +2955,7 @@ /* see if device with similar major:minor as /dev/root is mention * in /etc/mtab (it usually is) */ @@ -85,10 +85,242 @@ diff -uNr glib-2.56.1/gio/gunixmounts.c glib-2.56.1.mod/gio/gunixmounts.c if (f != NULL) { struct mntent *entp; -diff -uNr glib-2.56.1/gio/xdgmime/xdgmime.c glib-2.56.1.mod/gio/xdgmime/xdgmime.c ---- glib-2.56.1/gio/xdgmime/xdgmime.c 2018-03-12 18:23:37.000000000 +0200 -+++ glib-2.56.1.mod/gio/xdgmime/xdgmime.c 2018-06-19 14:43:59.737253299 +0300 -@@ -253,7 +253,7 @@ +diff -uNr glib-2.58.3/gio/tests/org.gtk.test.gschema.override.orig glib-2.58.3.mod/gio/tests/org.gtk.test.gschema.override.orig +--- glib-2.58.3/gio/tests/org.gtk.test.gschema.override.orig 2019-01-21 15:38:50.000000000 +0200 ++++ glib-2.58.3.mod/gio/tests/org.gtk.test.gschema.override.orig 1970-01-01 03:00:00.000000000 +0300 +@@ -1,2 +0,0 @@ +-[org.gtk.test.per-desktop:GNOME-Classic] +-desktop = "GNOME Classic" +diff -uNr glib-2.58.3/gio/tests/org.gtk.test.gschema.xml.orig glib-2.58.3.mod/gio/tests/org.gtk.test.gschema.xml.orig +--- glib-2.58.3/gio/tests/org.gtk.test.gschema.xml.orig 2019-01-21 15:38:50.000000000 +0200 ++++ glib-2.58.3.mod/gio/tests/org.gtk.test.gschema.xml.orig 1970-01-01 03:00:00.000000000 +0300 +@@ -1,222 +0,0 @@ +- +- +- +- +- "Hello, earthlings" +- A greeting +- +- Greeting of the invading martians +- +- +- +- "So long" +- +- +- +- +- +- +- +- +- +- true +- +- +- +- +- +- true +- +- +- 25 +- +- +- -1234 +- +- +- 1234 +- +- +- -123456 +- +- +- 123456 +- +- +- -123456789 +- +- +- 123456789 +- +- +- 123.456 +- +- +- "a string, it seems" +- +- +- "/a/object/path" +- +- +- +- +- +- ("one",(2,3)) +- +- +- [0,1,2,3,4,5] +- +- +- +- { +- "AC": [0,0, 0,0,0,0,0,0], +- "IV": [0,0, 0,0,0,0,0,0] +- } +- +- +- +- +- +- +- "Unnamed" +- +- +- "BackSpace" +- +- +- +- +- +- false +- +- +- false +- +- +- 0 +- +- +- 0 +- +- +- 0 +- +- +- 0 +- +- +- 0 +- +- +- 0 +- +- +- 0 +- +- +- 0 +- +- +- "" +- +- +- [48, 49] +- +- +- [] +- +- +- 'foo' +- +- +- ['mourning', 'laughing'] +- +- +- 33 +- +- +- +- +- +- +- 'bar' +- +- +- +- +- +- [] +- +- +- +- +- +- +- +- +- [] +- +- +- 'bar' +- +- +- +- +- +- 33 +- +- +- +- +- +- +- 33 +- +- +- +- +- +- 0 +- +- +- +- +- +- +- a paragraph. +- +- with some whitespace. +- +- because not everyone has a great editor. +- +- +- +- +- lots of space is as one. +- +- 0 +- +- +- +- +- +- 0 +- +- +- '' +- +- +- +- 42 +- +- 0 +- +- +- +- +- +- "GNOME" +- +- +- +- +diff -uNr glib-2.58.3/gio/xdgmime/xdgmime.c glib-2.58.3.mod/gio/xdgmime/xdgmime.c +--- glib-2.58.3/gio/xdgmime/xdgmime.c 2019-01-21 15:38:50.000000000 +0200 ++++ glib-2.58.3.mod/gio/xdgmime/xdgmime.c 2019-03-02 02:08:55.334976238 +0200 +@@ -255,7 +255,7 @@ xdg_data_dirs = getenv ("XDG_DATA_DIRS"); if (xdg_data_dirs == NULL) @@ -97,10 +329,10 @@ diff -uNr glib-2.56.1/gio/xdgmime/xdgmime.c glib-2.56.1.mod/gio/xdgmime/xdgmime. ptr = xdg_data_dirs; -diff -uNr glib-2.56.1/glib/gcharset.c glib-2.56.1.mod/glib/gcharset.c ---- glib-2.56.1/glib/gcharset.c 2018-04-07 05:10:22.000000000 +0300 -+++ glib-2.56.1.mod/glib/gcharset.c 2018-06-19 14:33:00.183886007 +0300 -@@ -297,7 +297,7 @@ +diff -uNr glib-2.58.3/glib/gcharset.c glib-2.58.3.mod/glib/gcharset.c +--- glib-2.58.3/glib/gcharset.c 2019-01-21 15:38:50.000000000 +0200 ++++ glib-2.58.3.mod/glib/gcharset.c 2019-03-02 02:08:55.334976238 +0200 +@@ -298,7 +298,7 @@ if (g_once_init_enter (&alias_table)) { GHashTable *table = g_hash_table_new (g_str_hash, g_str_equal); @@ -109,10 +341,10 @@ diff -uNr glib-2.56.1/glib/gcharset.c glib-2.56.1.mod/glib/gcharset.c g_once_init_leave (&alias_table, table); } -diff -uNr glib-2.56.1/glib/gutils.c glib-2.56.1.mod/glib/gutils.c ---- glib-2.56.1/glib/gutils.c 2018-01-08 23:34:19.000000000 +0200 -+++ glib-2.56.1.mod/glib/gutils.c 2018-06-19 14:35:11.100559415 +0300 -@@ -378,7 +378,7 @@ +diff -uNr glib-2.58.3/glib/gutils.c glib-2.58.3.mod/glib/gutils.c +--- glib-2.58.3/glib/gutils.c 2019-01-21 15:38:50.000000000 +0200 ++++ glib-2.58.3.mod/glib/gutils.c 2019-03-02 02:10:27.148655478 +0200 +@@ -381,7 +381,7 @@ * what to search if PATH is unset. POSIX may, dunno. */ @@ -121,7 +353,16 @@ diff -uNr glib-2.56.1/glib/gutils.c glib-2.56.1.mod/glib/gutils.c } #else n = GetModuleFileNameW (NULL, wfilename, MAXPATHLEN); -@@ -2028,7 +2028,7 @@ +@@ -959,7 +959,7 @@ + if (tmp == NULL || *tmp == '\0') + { + g_free (tmp); +- tmp = g_strdup ("/tmp"); ++ tmp = g_strdup ("@TERMUX_PREFIX@/tmp"); + } + #endif /* !G_OS_WIN32 */ + +@@ -2043,7 +2043,7 @@ #ifndef G_OS_WIN32 if (!data_dirs || !data_dirs[0]) @@ -130,7 +371,7 @@ diff -uNr glib-2.56.1/glib/gutils.c glib-2.56.1.mod/glib/gutils.c data_dir_vector = g_strsplit (data_dirs, G_SEARCHPATH_SEPARATOR_S, 0); #else -@@ -2104,7 +2104,7 @@ +@@ -2119,7 +2119,7 @@ } #else if (!conf_dirs || !conf_dirs[0]) diff --git a/packages/gmic/build.sh b/packages/gmic/build.sh index 58b368433..1ead78528 100644 --- a/packages/gmic/build.sh +++ b/packages/gmic/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://gmic.eu TERMUX_PKG_DESCRIPTION="Full-featured framework for image processing" TERMUX_PKG_LICENSE="CeCILL-2.1" TERMUX_PKG_VERSION=2.4.5 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=e87efa20abdedf5e0000c490669d76c8a8d16a9fafa27bc9e31b79b5cbc3277f TERMUX_PKG_SRCURL=https://gmic.eu/files/source/gmic_$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_DEPENDS="graphicsmagick++, libcurl, fftw, libpng, libjpeg-turbo, libtiff" diff --git a/packages/gnuchess/build.sh b/packages/gnuchess/build.sh index 93930d1f9..0f9aec3c8 100644 --- a/packages/gnuchess/build.sh +++ b/packages/gnuchess/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/chess/ TERMUX_PKG_DESCRIPTION="Chess-playing program" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=6.2.5 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/chess/gnuchess-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=9a99e963355706cab32099d140b698eda9de164ebce40a5420b1b9772dd04802 TERMUX_PKG_DEPENDS="ncurses, readline" diff --git a/packages/gnugo/build.sh b/packages/gnugo/build.sh index f864cfeb4..589ba1564 100644 --- a/packages/gnugo/build.sh +++ b/packages/gnugo/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/gnugo/ TERMUX_PKG_DESCRIPTION="Program that plays the game of Go" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=3.8 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/gnugo/gnugo-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=da68d7a65f44dcf6ce6e4e630b6f6dd9897249d34425920bfdd4e07ff1866a72 TERMUX_PKG_DEPENDS="ncurses, readline" diff --git a/packages/gnupg/build.sh b/packages/gnupg/build.sh index 334984302..42c137a6d 100644 --- a/packages/gnupg/build.sh +++ b/packages/gnupg/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.gnupg.org/ TERMUX_PKG_DESCRIPTION="Implementation of the OpenPGP standard for encrypting and signing data and communication" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=2.2.13 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=76c787a955f9e6e0ead47c9be700bfb9d454f955a7b7c7e697aa719bac7b11d8 TERMUX_PKG_SRCURL=https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-${TERMUX_PKG_VERSION}.tar.bz2 TERMUX_PKG_DEPENDS="libassuan,libbz2,libgcrypt,libksba,libsqlite,libnpth,readline,pinentry,libgpg-error" diff --git a/packages/gnupg/dirmngr-dns.patch b/packages/gnupg/dirmngr-dns.patch deleted file mode 100644 index eb56ea2aa..000000000 --- a/packages/gnupg/dirmngr-dns.patch +++ /dev/null @@ -1,42 +0,0 @@ -diff -u -r ../gnupg-2.1.22/dirmngr/dns.c ./dirmngr/dns.c ---- ../gnupg-2.1.22/dirmngr/dns.c 2017-07-25 09:37:05.000000000 +0200 -+++ ./dirmngr/dns.c 2017-07-29 20:54:37.445647974 +0200 -@@ -5424,7 +5424,7 @@ - if (!(resconf = dns_resconf_open(&error))) - goto error; - -- if ((error = dns_resconf_loadpath(resconf, "/etc/resolv.conf"))) { -+ if ((error = dns_resconf_loadpath(resconf, "@TERMUX_PREFIX@/etc/resolv.conf"))) { - /* - * NOTE: Both the glibc and BIND9 resolvers ignore a missing - * /etc/resolv.conf, defaulting to a nameserver of -@@ -5436,7 +5436,7 @@ - goto error; - } - -- if ((error = dns_nssconf_loadpath(resconf, "/etc/nsswitch.conf"))) { -+ if ((error = dns_nssconf_loadpath(resconf, "@TERMUX_PREFIX@/etc/nsswitch.conf"))) { - if (error != ENOENT) - goto error; - } -@@ -10407,7 +10407,7 @@ - panic("dns_resconf_open: %s", dns_strerror(error)); - - if (!MAIN.resconf.count) -- MAIN.resconf.path[MAIN.resconf.count++] = "/etc/resolv.conf"; -+ MAIN.resconf.path[MAIN.resconf.count++] = "@TERMUX_PREFIX@/etc/resolv.conf"; - - for (i = 0; i < MAIN.resconf.count; i++) { - path = MAIN.resconf.path[i]; -diff -u -r ../gnupg-2.1.22/dirmngr/dns-stuff.c ./dirmngr/dns-stuff.c ---- ../gnupg-2.1.22/dirmngr/dns-stuff.c 2017-05-25 20:24:30.000000000 +0200 -+++ ./dirmngr/dns-stuff.c 2017-07-29 20:54:00.414067929 +0200 -@@ -114,7 +114,7 @@ - #define DEFAULT_TIMEOUT 30 - - --#define RESOLV_CONF_NAME "/etc/resolv.conf" -+#define RESOLV_CONF_NAME "@TERMUX_PREFIX@/etc/resolv.conf" - - /* Two flags to enable verbose and debug mode. */ - static int opt_verbose; diff --git a/packages/gnupg/fix-paths.patch b/packages/gnupg/fix-paths.patch new file mode 100644 index 000000000..a2682c929 --- /dev/null +++ b/packages/gnupg/fix-paths.patch @@ -0,0 +1,240 @@ +diff -uNr gnupg-2.2.13/dirmngr/certcache.c gnupg-2.2.13.mod/dirmngr/certcache.c +--- gnupg-2.2.13/dirmngr/certcache.c 2018-04-25 13:38:04.000000000 +0300 ++++ gnupg-2.2.13.mod/dirmngr/certcache.c 2019-03-02 01:32:08.653821497 +0200 +@@ -674,11 +674,8 @@ + #ifdef DEFAULT_TRUST_STORE_FILE + { DEFAULT_TRUST_STORE_FILE } + #else +- { "/etc/ssl/ca-bundle.pem" }, +- { "/etc/ssl/certs/ca-certificates.crt" }, +- { "/etc/pki/tls/cert.pem" }, +- { "/usr/local/share/certs/ca-root-nss.crt" }, +- { "/etc/ssl/cert.pem" } ++ { "@TERMUX_PREFIX@/etc/tls/cert.pem" }, ++ { "@TERMUX_PREFIX@/etc/ssl/cert.pem" } + #endif /*!DEFAULT_TRUST_STORE_FILE*/ + }; + int idx; +diff -uNr gnupg-2.2.13/dirmngr/dns.c gnupg-2.2.13.mod/dirmngr/dns.c +--- gnupg-2.2.13/dirmngr/dns.c 2018-12-18 09:26:53.000000000 +0200 ++++ gnupg-2.2.13.mod/dirmngr/dns.c 2019-03-02 01:33:24.937449148 +0200 +@@ -5112,7 +5112,7 @@ + if (!(hosts = dns_hosts_open(&error))) + goto error; + +- if ((error = dns_hosts_loadpath(hosts, "/etc/hosts"))) ++ if ((error = dns_hosts_loadpath(hosts, "@TERMUX_PREFIX@/etc/hosts"))) + goto error; + + return hosts; +@@ -5428,7 +5428,7 @@ + if (!(resconf = dns_resconf_open(&error))) + goto error; + +- if ((error = dns_resconf_loadpath(resconf, "/etc/resolv.conf"))) { ++ if ((error = dns_resconf_loadpath(resconf, "@TERMUX_PREFIX@/etc/resolv.conf"))) { + /* + * NOTE: Both the glibc and BIND9 resolvers ignore a missing + * /etc/resolv.conf, defaulting to a nameserver of +@@ -5440,7 +5440,7 @@ + goto error; + } + +- if ((error = dns_nssconf_loadpath(resconf, "/etc/nsswitch.conf"))) { ++ if ((error = dns_nssconf_loadpath(resconf, "@TERMUX_PREFIX@/etc/nsswitch.conf"))) { + if (error != ENOENT) + goto error; + } +@@ -10436,7 +10436,7 @@ + panic("dns_resconf_open: %s", dns_strerror(error)); + + if (!MAIN.resconf.count) +- MAIN.resconf.path[MAIN.resconf.count++] = "/etc/resolv.conf"; ++ MAIN.resconf.path[MAIN.resconf.count++] = "@TERMUX_PREFIX@/etc/resolv.conf"; + + for (i = 0; i < MAIN.resconf.count; i++) { + path = MAIN.resconf.path[i]; +@@ -10485,11 +10485,11 @@ + return *hosts; + + if (!MAIN.hosts.count) { +- MAIN.hosts.path[MAIN.hosts.count++] = "/etc/hosts"; ++ MAIN.hosts.path[MAIN.hosts.count++] = "@TERMUX_PREFIX@/etc/hosts"; + + /* Explicitly test dns_hosts_local() */ + if (!(*hosts = dns_hosts_local(&error))) +- panic("%s: %s", "/etc/hosts", dns_strerror(error)); ++ panic("%s: %s", "@TERMUX_PREFIX@/etc/hosts", dns_strerror(error)); + + return *hosts; + } +diff -uNr gnupg-2.2.13/dirmngr/dns-stuff.c gnupg-2.2.13.mod/dirmngr/dns-stuff.c +--- gnupg-2.2.13/dirmngr/dns-stuff.c 2018-07-03 12:54:26.000000000 +0300 ++++ gnupg-2.2.13.mod/dirmngr/dns-stuff.c 2019-03-02 01:32:38.027267980 +0200 +@@ -114,7 +114,7 @@ + #define DEFAULT_TIMEOUT 30 + + +-#define RESOLV_CONF_NAME "/etc/resolv.conf" ++#define RESOLV_CONF_NAME "@TERMUX_PREFIX@/etc/resolv.conf" + + /* Two flags to enable verbose and debug mode. */ + static int opt_verbose; +@@ -602,7 +602,7 @@ + derr = dns_hosts_loadpath (ld.hosts, hosts_path); + xfree (hosts_path); + #else +- derr = dns_hosts_loadpath (ld.hosts, "/etc/hosts"); ++ derr = dns_hosts_loadpath (ld.hosts, "@TERMUX_PREFIX@/etc/hosts"); + #endif + if (derr) + { +diff -uNr gnupg-2.2.13/dirmngr/ks-engine-ldap.c gnupg-2.2.13.mod/dirmngr/ks-engine-ldap.c +--- gnupg-2.2.13/dirmngr/ks-engine-ldap.c 2018-10-25 18:37:53.000000000 +0300 ++++ gnupg-2.2.13.mod/dirmngr/ks-engine-ldap.c 2019-03-02 01:32:08.667154882 +0200 +@@ -1947,9 +1947,9 @@ + + if (dump_modlist) + { +- dump = es_fopen("/tmp/modlist.txt", "w"); ++ dump = es_fopen("@TERMUX_PREFIX@/tmp/modlist.txt", "w"); + if (! dump) +- log_error ("Failed to open /tmp/modlist.txt: %s\n", ++ log_error ("Failed to open @TERMUX_PREFIX@/tmp/modlist.txt: %s\n", + strerror (errno)); + + if (dump) +diff -uNr gnupg-2.2.13/g10/exec.c gnupg-2.2.13.mod/g10/exec.c +--- gnupg-2.2.13/g10/exec.c 2017-08-28 13:22:54.000000000 +0300 ++++ gnupg-2.2.13.mod/g10/exec.c 2019-03-02 01:32:08.667154882 +0200 +@@ -180,7 +180,7 @@ + tmp=".GnuPG"; + mkdir(tmp,0700); /* Error checks occur later on */ + #else +- tmp="/tmp"; ++ tmp="@TERMUX_PREFIX@/tmp"; + #endif + } + } +@@ -383,7 +383,7 @@ + char *shell=getenv("SHELL"); + + if(shell==NULL) +- shell="/bin/sh"; ++ shell="@TERMUX_PREFIX@/bin/sh"; + + /* I'm the child */ + +diff -uNr gnupg-2.2.13/g13/be-encfs.c gnupg-2.2.13.mod/g13/be-encfs.c +--- gnupg-2.2.13/g13/be-encfs.c 2017-08-28 13:22:54.000000000 +0300 ++++ gnupg-2.2.13.mod/g13/be-encfs.c 2019-03-02 01:32:08.670488228 +0200 +@@ -410,7 +410,7 @@ + if (err) + goto leave; + +- mountpoint = xtrystrdup ("/tmp/.#g13_XXXXXX"); ++ mountpoint = xtrystrdup ("@TERMUX_PREFIX@/tmp/.#g13_XXXXXX"); + if (!mountpoint) + { + err = gpg_error_from_syserror (); +@@ -420,7 +420,7 @@ + { + err = gpg_error_from_syserror (); + log_error (_("can't create directory '%s': %s\n"), +- "/tmp/.#g13_XXXXXX", gpg_strerror (err)); ++ "@TERMUX_PREFIX@/tmp/.#g13_XXXXXX", gpg_strerror (err)); + goto leave; + } + +diff -uNr gnupg-2.2.13/g13/mount.c gnupg-2.2.13.mod/g13/mount.c +--- gnupg-2.2.13/g13/mount.c 2017-08-28 13:22:54.000000000 +0300 ++++ gnupg-2.2.13.mod/g13/mount.c 2019-03-02 01:32:08.670488228 +0200 +@@ -82,14 +82,14 @@ + + if (!mountpoint) + { +- mountpoint_buffer = xtrystrdup ("/tmp/g13-XXXXXX"); ++ mountpoint_buffer = xtrystrdup ("@TERMUX_PREFIX@/tmp/g13-XXXXXX"); + if (!mountpoint_buffer) + return gpg_error_from_syserror (); + if (!gnupg_mkdtemp (mountpoint_buffer)) + { + err = gpg_error_from_syserror (); + log_error (_("can't create directory '%s': %s\n"), +- "/tmp/g13-XXXXXX", gpg_strerror (err)); ++ "@TERMUX_PREFIX@/tmp/g13-XXXXXX", gpg_strerror (err)); + xfree (mountpoint_buffer); + return err; + } +diff -uNr gnupg-2.2.13/scd/scdaemon.c gnupg-2.2.13.mod/scd/scdaemon.c +--- gnupg-2.2.13/scd/scdaemon.c 2018-03-21 20:43:33.000000000 +0200 ++++ gnupg-2.2.13.mod/scd/scdaemon.c 2019-03-02 01:32:08.670488228 +0200 +@@ -766,10 +766,10 @@ + write. */ + if (allow_coredump) + { +- if (chdir("/tmp")) +- log_debug ("chdir to '/tmp' failed: %s\n", strerror (errno)); ++ if (chdir("@TERMUX_PREFIX@/tmp")) ++ log_debug ("chdir to '@TERMUX_PREFIX@/tmp' failed: %s\n", strerror (errno)); + else +- log_debug ("changed working directory to '/tmp'\n"); ++ log_debug ("changed working directory to '@TERMUX_PREFIX@/tmp'\n"); + } + + /* In multi server mode we need to listen on an additional +diff -uNr gnupg-2.2.13/tests/gpgscm/ffi.c gnupg-2.2.13.mod/tests/gpgscm/ffi.c +--- gnupg-2.2.13/tests/gpgscm/ffi.c 2017-08-28 13:22:54.000000000 +0300 ++++ gnupg-2.2.13.mod/tests/gpgscm/ffi.c 2019-03-02 01:32:08.673821575 +0200 +@@ -355,7 +355,7 @@ + FFI_RETURN_STRING (sc, "/temp"); + FFI_RETURN_STRING (sc, buffer); + #else +- FFI_RETURN_STRING (sc, "/tmp"); ++ FFI_RETURN_STRING (sc, "@TERMUX_PREFIX@/tmp"); + #endif + } + +diff -uNr gnupg-2.2.13/tools/addgnupghome gnupg-2.2.13.mod/tools/addgnupghome +--- gnupg-2.2.13/tools/addgnupghome 2018-12-11 09:44:33.000000000 +0200 ++++ gnupg-2.2.13.mod/tools/addgnupghome 2019-03-02 01:32:08.673821575 +0200 +@@ -70,10 +70,10 @@ + return + fi + for f in $filelist; do +- if [ -d /etc/skel/.gnupg/$f ]; then ++ if [ -d @TERMUX_PREFIX@/etc/skel/.gnupg/$f ]; then + mkdir $f + else +- cp /etc/skel/.gnupg/$f $f ++ cp @TERMUX_PREFIX@/etc/skel/.gnupg/$f $f + fi + if ! chown $user $f ; then + error "error changing ownership of \`$f'" +@@ -102,11 +102,11 @@ + info "please note that only users from /etc/passwd are checked" + fi + +-if [ ! -d /etc/skel/.gnupg ]; then +- error "skeleton directory \`/etc/skel/.gnupg' does not exist" ++if [ ! -d @TERMUX_PREFIX@/etc/skel/.gnupg ]; then ++ error "skeleton directory \`@TERMUX_PREFIX@/etc/skel/.gnupg' does not exist" + exit 1 + fi +-cd "/etc/skel/.gnupg" || (error "error cd-ing to \`/etc/skel/.gnupg'"; exit 1) ++cd "@TERMUX_PREFIX@/etc/skel/.gnupg" || (error "error cd-ing to \`@TERMUX_PREFIX@/etc/skel/.gnupg'"; exit 1) + filelist=$(find . \( -type f -o -type d \) '!' -name '*~' '!' -name . -print) + + +diff -uNr gnupg-2.2.13/tools/symcryptrun.c gnupg-2.2.13.mod/tools/symcryptrun.c +--- gnupg-2.2.13/tools/symcryptrun.c 2017-08-28 13:22:54.000000000 +0300 ++++ gnupg-2.2.13.mod/tools/symcryptrun.c 2019-03-02 01:32:08.673821575 +0200 +@@ -319,7 +319,7 @@ + + p = getenv ("TMPDIR"); + if (!p || !*p) +- p = "/tmp"; ++ p = "@TERMUX_PREFIX@/tmp"; + if (p[strlen (p) - 1] == '/') + name = xstrconcat (p, "gpg-XXXXXX", NULL); + else diff --git a/packages/gnupg/g10-exec.c.patch b/packages/gnupg/g10-exec.c.patch deleted file mode 100644 index 67b131026..000000000 --- a/packages/gnupg/g10-exec.c.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uNr gnupg-2.2.8/g10/exec.c gnupg-2.2.8.mod/g10/exec.c ---- gnupg-2.2.8/g10/exec.c 2017-08-28 13:22:54.000000000 +0300 -+++ gnupg-2.2.8.mod/g10/exec.c 2018-06-19 19:08:38.918070875 +0300 -@@ -383,7 +383,7 @@ - char *shell=getenv("SHELL"); - - if(shell==NULL) -- shell="/bin/sh"; -+ shell="@TERMUX_PREFIX@/bin/sh"; - - /* I'm the child */ - diff --git a/packages/gnuplot/build.sh b/packages/gnuplot/build.sh index bfb78807c..1842a1bfa 100644 --- a/packages/gnuplot/build.sh +++ b/packages/gnuplot/build.sh @@ -2,12 +2,12 @@ TERMUX_PKG_HOMEPAGE=http://gnuplot.info/ TERMUX_PKG_DESCRIPTION="Command-line driven graphing utility" TERMUX_PKG_LICENSE="BSD" TERMUX_PKG_VERSION=5.2.6 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=35dd8f013139e31b3028fac280ee12d4b1346d9bb5c501586d1b5a04ae7a94ee TERMUX_PKG_SRCURL=https://downloads.sourceforge.net/project/gnuplot/gnuplot/${TERMUX_PKG_VERSION}/gnuplot-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--without-x --with-lua=no --with-bitmap-terminals" TERMUX_PKG_DEPENDS="libandroid-support, readline, pango, libgd" TERMUX_PKG_HOSTBUILD=yes -TERMUX_PKG_REVISION=1 termux_step_host_build() { "$TERMUX_PKG_SRCDIR/configure" diff --git a/packages/googletest/build.sh b/packages/googletest/build.sh index 1d2e67d28..162059fdf 100644 --- a/packages/googletest/build.sh +++ b/packages/googletest/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://github.com/google/googletest TERMUX_PKG_DESCRIPTION="Google C++ testing framework" TERMUX_PKG_LICENSE="BSD 3-Clause" TERMUX_PKG_VERSION=1.8.1 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c TERMUX_PKG_SRCURL=https://github.com/google/googletest/archive/release-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_NO_DEVELSPLIT=yes diff --git a/packages/gperf/build.sh b/packages/gperf/build.sh index 018b44a26..cc22f469f 100644 --- a/packages/gperf/build.sh +++ b/packages/gperf/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/gperf TERMUX_PKG_DESCRIPTION="A perfect hash function generator" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=3.1 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=3 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/gperf/gperf-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=588546b945bba4b70b6a3a616e80b4ab466e3f33024a352fc2198112cdbb3ae2 TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/graphicsmagick/build.sh b/packages/graphicsmagick/build.sh index 81d7a3cad..a9eec7b81 100644 --- a/packages/graphicsmagick/build.sh +++ b/packages/graphicsmagick/build.sh @@ -2,10 +2,11 @@ TERMUX_PKG_HOMEPAGE=http://www.graphicsmagick.org/ TERMUX_PKG_DESCRIPTION="Collection of image processing tools" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_VERSION=1.3.31 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=096bbb59d6f3abd32b562fc3b34ea90d88741dc5dd888731d61d17e100394278 # Bandwith limited on main ftp site, so it's asked to use sourceforge instead: TERMUX_PKG_SRCURL=http://downloads.sourceforge.net/project/graphicsmagick/graphicsmagick/${TERMUX_PKG_VERSION}/GraphicsMagick-${TERMUX_PKG_VERSION}.tar.xz -TERMUX_PKG_DEPENDS="littlecms, libtiff, freetype, libjasper, libjpeg-turbo, libpng, libbz2, libxml2, liblzma" +TERMUX_PKG_DEPENDS="littlecms, libtiff, freetype, libjasper, libjpeg-turbo, libpng, libbz2, libxml2, liblzma, zstd" TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" ac_cv_func_ftime=no --with-fontpath=/system/fonts diff --git a/packages/graphviz/build.sh b/packages/graphviz/build.sh index 4a159ffe3..04d1f4cc0 100644 --- a/packages/graphviz/build.sh +++ b/packages/graphviz/build.sh @@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="Rich set of graph drawing tools" TERMUX_PKG_LICENSE="EPL-2.0" TERMUX_PKG_MAINTAINER="Dustin DeWeese @HackerFoo" TERMUX_PKG_VERSION=2.40.1 -TERMUX_PKG_REVISION=4 +TERMUX_PKG_REVISION=5 TERMUX_PKG_SRCURL=https://fossies.org/linux/misc/graphviz-$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_SHA256=ca5218fade0204d59947126c38439f432853543b0818d9d728c589dfe7f3a421 TERMUX_PKG_DEPENDS="libandroid-glob,libcairo,pango,libexpat,libltdl,librsvg,libgd" diff --git a/packages/gst-plugins-bad/build.sh b/packages/gst-plugins-bad/build.sh index 9fe473e0c..d9ddd941b 100644 --- a/packages/gst-plugins-bad/build.sh +++ b/packages/gst-plugins-bad/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://gstreamer.freedesktop.org/ TERMUX_PKG_DESCRIPTION="GStreamer Bad Plug-ins" TERMUX_PKG_LICENSE="LGPL-2.0" TERMUX_PKG_VERSION=1.14.4 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=910b4e0e2e897e8b6d06767af1779d70057c309f67292f485ff988d087aa0de5 TERMUX_PKG_SRCURL=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/gst-plugins-ugly/build.sh b/packages/gst-plugins-ugly/build.sh index cb6788365..572148ee9 100644 --- a/packages/gst-plugins-ugly/build.sh +++ b/packages/gst-plugins-ugly/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://gstreamer.freedesktop.org/ TERMUX_PKG_DESCRIPTION="GStreamer Ugly Plug-ins" TERMUX_PKG_LICENSE="LGPL-2.0" TERMUX_PKG_VERSION=1.14.4 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=ac02d837f166c35ff6ce0738e281680d0b90052cfb1f0255dcf6aaca5f0f6d23 TERMUX_PKG_SRCURL=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/gzip/build.sh b/packages/gzip/build.sh index afb8f7168..7b393f20b 100644 --- a/packages/gzip/build.sh +++ b/packages/gzip/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/gzip/ TERMUX_PKG_DESCRIPTION="Standard GNU file compression utilities" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=1.10 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=8425ccac99872d544d4310305f915f5ea81e04d0f437ef1a230dc9d1c819d7c0 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/gzip/gzip-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_EXTRA_CONFIGURE_ARGS="ac_cv_path_GREP=grep" diff --git a/packages/gzip/zdiff.in.patch b/packages/gzip/zdiff.in.patch new file mode 100644 index 000000000..6234c061c --- /dev/null +++ b/packages/gzip/zdiff.in.patch @@ -0,0 +1,12 @@ +diff -uNr gzip-1.10/zdiff.in gzip-1.10.mod/zdiff.in +--- gzip-1.10/zdiff.in 2018-03-31 06:55:32.000000000 +0300 ++++ gzip-1.10.mod/zdiff.in 2019-03-01 18:41:43.685032331 +0200 +@@ -119,7 +119,7 @@ + case $TMPDIR in + / | /*/) ;; + /*) TMPDIR=$TMPDIR/;; +- *) TMPDIR=/tmp/;; ++ *) TMPDIR=@TERMUX_PREFIX@/tmp/;; + esac + if type mktemp >/dev/null 2>&1; then + tmp=`mktemp "${TMPDIR}zdiffXXXXXXXXX"` || diff --git a/packages/gzip/zgrep.in.patch b/packages/gzip/zgrep.in.patch new file mode 100644 index 000000000..3269fe352 --- /dev/null +++ b/packages/gzip/zgrep.in.patch @@ -0,0 +1,12 @@ +diff -uNr gzip-1.10/zgrep.in gzip-1.10.mod/zgrep.in +--- gzip-1.10/zgrep.in 2018-03-31 06:55:32.000000000 +0300 ++++ gzip-1.10.mod/zgrep.in 2019-03-01 18:41:31.001645453 +0200 +@@ -136,7 +136,7 @@ + case $TMPDIR in + / | /*/) ;; + /*) TMPDIR=$TMPDIR/;; +- *) TMPDIR=/tmp/;; ++ *) TMPDIR=@TERMUX_PREFIX@/tmp/;; + esac + if type mktemp >/dev/null 2>&1; then + pattmp=$(mktemp "${TMPDIR}zgrepXXXXXXXXX") || exit 2 diff --git a/packages/harfbuzz/build.sh b/packages/harfbuzz/build.sh index 09b7cb14d..fe3fcff8e 100644 --- a/packages/harfbuzz/build.sh +++ b/packages/harfbuzz/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.freedesktop.org/wiki/Software/HarfBuzz/ TERMUX_PKG_DESCRIPTION="OpenType text shaping engine" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_VERSION=2.3.1 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=f205699d5b91374008d6f8e36c59e419ae2d9a7bb8c5d9f34041b9a5abcae468 TERMUX_PKG_SRCURL=https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-${TERMUX_PKG_VERSION}.tar.bz2 TERMUX_PKG_DEPENDS="freetype,glib,libbz2,libpng,libgraphite" diff --git a/packages/hashdeep/build.sh b/packages/hashdeep/build.sh index 2fed33625..f85ddd7bf 100644 --- a/packages/hashdeep/build.sh +++ b/packages/hashdeep/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=http://md5deep.sourceforge.net/ TERMUX_PKG_DESCRIPTION="Programs to compute hashsums of arbitrary number of files recursively" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=4.4 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=3 TERMUX_PKG_SRCURL=https://github.com/jessek/hashdeep/archive/v$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_SHA256=ad78d42142f9a74fe8ec0c61bc78d6588a528cbb9aede9440f50b6ff477f3a7f if [ "$TERMUX_ARCH_BITS" = 32 ]; then diff --git a/packages/hub/build.sh b/packages/hub/build.sh index b5700f6d7..93ee4a289 100644 --- a/packages/hub/build.sh +++ b/packages/hub/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://hub.github.com/ TERMUX_PKG_DESCRIPTION="Command-line wrapper for git that makes you better at GitHub" TERMUX_PKG_LICENSE="MIT" -TERMUX_PKG_VERSION=2.9.0 -TERMUX_PKG_SHA256=48aa49cd6eb14a4ea243019323bb0b8b193fc8c3fbdcc3597f87cca11ae0394c +TERMUX_PKG_VERSION=2.10.0 +TERMUX_PKG_SHA256=c1599a7387df5de6cd309094525a1f14728ca9d09cc5e168805e8fcec829e13f TERMUX_PKG_SRCURL=https://github.com/github/hub/archive/v${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="git" diff --git a/packages/hugo/build.sh b/packages/hugo/build.sh index ca4943220..2d73e0a4e 100644 --- a/packages/hugo/build.sh +++ b/packages/hugo/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://gohugo.io/ TERMUX_PKG_DESCRIPTION="A fast and flexible static site generator" TERMUX_PKG_LICENSE="Apache-2.0" TERMUX_PKG_VERSION=0.54.0 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=fe0f4d4542491706cc19cb8c0acd63f1d9989cfbeaaad39d93031e91bf73fd91 TERMUX_PKG_SRCURL=https://github.com/gohugoio/hugo/archive/v$TERMUX_PKG_VERSION.tar.gz diff --git a/packages/hunspell/build.sh b/packages/hunspell/build.sh index 16532a524..70a231991 100644 --- a/packages/hunspell/build.sh +++ b/packages/hunspell/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://hunspell.github.io TERMUX_PKG_DESCRIPTION="Spell checker" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=1.7.0 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=bb27b86eb910a8285407cf3ca33b62643a02798cf2eef468c0a74f6c3ee6bc8a TERMUX_PKG_SRCURL=https://github.com/hunspell/hunspell/archive/v${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--with-ui --with-readline" diff --git a/packages/hydra/build.sh b/packages/hydra/build.sh index 3f8477c17..1c0c471ac 100644 --- a/packages/hydra/build.sh +++ b/packages/hydra/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://github.com/vanhauser-thc/thc-hydra TERMUX_PKG_DESCRIPTION="Network logon cracker supporting different services" TERMUX_PKG_LICENSE="GPL-3.0" -TERMUX_PKG_VERSION=8.8 -TERMUX_PKG_SHA256=bc895a7aebdf0279186d40140f0dc1546ac6f3a5c5bc9d13b13766bffea3e966 +TERMUX_PKG_VERSION=8.9.1 +TERMUX_PKG_SHA256=7c615622d9d22a65b007e545f2d85da06c422a042f720bd6c5578a1844dec40e TERMUX_PKG_SRCURL=https://github.com/vanhauser-thc/thc-hydra/archive/v$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_BUILD_IN_SRC=yes TERMUX_PKG_DEPENDS="openssl, pcre, libssh" diff --git a/packages/inetutils/build.sh b/packages/inetutils/build.sh index 9fa0c5e27..e0c1d4302 100644 --- a/packages/inetutils/build.sh +++ b/packages/inetutils/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/inetutils/ TERMUX_PKG_DESCRIPTION="Collection of common network programs" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=1.9.4 -TERMUX_PKG_REVISION=5 +TERMUX_PKG_REVISION=6 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/inetutils/inetutils-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_SHA256=849d96f136effdef69548a940e3e0ec0624fc0c81265296987986a0dd36ded37 TERMUX_PKG_DEPENDS="readline, libutil" diff --git a/packages/ipfs/build.sh b/packages/ipfs/build.sh index f48bfbddd..fa07031ef 100644 --- a/packages/ipfs/build.sh +++ b/packages/ipfs/build.sh @@ -2,8 +2,8 @@ TERMUX_PKG_HOMEPAGE=https://ipfs.io/ TERMUX_PKG_DESCRIPTION="A peer-to-peer hypermedia distribution protocol" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_MAINTAINER="Leonid Plyushch @xeffyr" -TERMUX_PKG_VERSION=0.4.18 -TERMUX_PKG_SHA256=bc03def6ac902d99ae29c60819dad2133af776d3f6779c55781afccaa89cec84 +TERMUX_PKG_VERSION=0.4.19 +TERMUX_PKG_SHA256=de0540e6d10aebbef602dc70da39c666952f980ceaccbd4aafb1578301706139 TERMUX_PKG_SRCURL=https://github.com/ipfs/go-ipfs/archive/v${TERMUX_PKG_VERSION}.tar.gz termux_step_make() { diff --git a/packages/irssi/build.sh b/packages/irssi/build.sh index 9b9681b62..054992134 100644 --- a/packages/irssi/build.sh +++ b/packages/irssi/build.sh @@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="Terminal based IRC client" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_DEPENDS="ncurses, openssl, glib, libandroid-glob" TERMUX_PKG_VERSION=1.2.0 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=1643fca1d8b35e5a5d7b715c9c889e1e9cdb7e578e06487901ea959e6ab3ebe5 TERMUX_PKG_SRCURL=https://github.com/irssi/irssi/releases/download/$TERMUX_PKG_VERSION/irssi-$TERMUX_PKG_VERSION.tar.xz TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/irssi/fix-paths.patch b/packages/irssi/fix-paths.patch new file mode 100644 index 000000000..373d56a8f --- /dev/null +++ b/packages/irssi/fix-paths.patch @@ -0,0 +1,42 @@ +diff -uNr irssi-1.2.0/src/fe-common/core/fe-exec.c irssi-1.2.0.mod/src/fe-common/core/fe-exec.c +--- irssi-1.2.0/src/fe-common/core/fe-exec.c 2019-02-11 19:27:58.000000000 +0200 ++++ irssi-1.2.0.mod/src/fe-common/core/fe-exec.c 2019-03-01 20:46:39.912473788 +0200 +@@ -281,7 +281,7 @@ + + static void process_exec(PROCESS_REC *rec, const char *cmd) + { +- const char *shell_args[4] = { "/bin/sh", "-c", NULL, NULL }; ++ const char *shell_args[4] = { "@TERMUX_PREFIX@/bin/sh", "-c", NULL, NULL }; + char **args; + int in[2], out[2]; + int n; +@@ -339,7 +339,7 @@ + if (rec->shell) { + execvp(shell_args[0], (char **) shell_args); + +- fprintf(stderr, "Exec: /bin/sh: %s\n", g_strerror(errno)); ++ fprintf(stderr, "Exec: @TERMUX_PREFIX@/bin/sh: %s\n", g_strerror(errno)); + } else { + args = g_strsplit(cmd, " ", -1); + execvp(args[0], args); +diff -uNr irssi-1.2.0/src/fe-fuzz/fe-common/core/theme-load.c irssi-1.2.0.mod/src/fe-fuzz/fe-common/core/theme-load.c +--- irssi-1.2.0/src/fe-fuzz/fe-common/core/theme-load.c 2019-02-11 19:27:58.000000000 +0200 ++++ irssi-1.2.0.mod/src/fe-fuzz/fe-common/core/theme-load.c 2019-03-01 20:47:09.179339329 +0200 +@@ -38,7 +38,7 @@ + int LLVMFuzzerInitialize(int *argc, char ***argv) { + core_register_options(); + fe_common_core_register_options(); +- char *irssi_argv[] = {*argv[0], "--home", "/tmp/irssi", NULL}; ++ char *irssi_argv[] = {*argv[0], "--home", "@TERMUX_PREFIX@/tmp/irssi", NULL}; + int irssi_argc = sizeof(irssi_argv) / sizeof(char *) - 1; + args_execute(irssi_argc, irssi_argv); + core_preinit((*argv)[0]); +@@ -52,7 +52,7 @@ + int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + gchar *copy = g_strndup((const gchar *)data, size); + +- FILE *fp = fopen("/tmp/irssi/fuzz.theme", "wb"); ++ FILE *fp = fopen("@TERMUX_PREFIX@/tmp/irssi/fuzz.theme", "wb"); + if (fp) { + fwrite(copy, strlen(copy), 1, fp); + fclose(fp); diff --git a/packages/jsoncpp/build.sh b/packages/jsoncpp/build.sh index 760cf8042..4c66f6802 100644 --- a/packages/jsoncpp/build.sh +++ b/packages/jsoncpp/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://github.com/open-source-parsers/jsoncpp TERMUX_PKG_DESCRIPTION="C++ library for interacting with JSON" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_VERSION=1.8.4 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=c49deac9e0933bcb7044f08516861a2d560988540b23de2ac1ad443b219afdb6 TERMUX_PKG_SRCURL=https://github.com/open-source-parsers/jsoncpp/archive/${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" diff --git a/packages/krb5/build.sh b/packages/krb5/build.sh index b13044a61..fd0ad7150 100644 --- a/packages/krb5/build.sh +++ b/packages/krb5/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://web.mit.edu/kerberos TERMUX_PKG_DESCRIPTION="The Kerberos network authentication system" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_VERSION=1.16.2 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=9f721e1fe593c219174740c71de514c7228a97d23eb7be7597b2ae14e487f027 TERMUX_PKG_SRCURL=https://fossies.org/linux/misc/krb5-$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_DEPENDS="libandroid-support, libandroid-glob, readline, openssl, libutil, libdb" diff --git a/packages/ldc/build.sh b/packages/ldc/build.sh index fb1d35356..0069d24f6 100644 --- a/packages/ldc/build.sh +++ b/packages/ldc/build.sh @@ -30,7 +30,6 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" " TERMUX_PKG_KEEP_STATIC_LIBRARIES=true TERMUX_PKG_NO_DEVELSPLIT=yes -TERMUX_PKG_MAINTAINER="Joakim @joakim-noah" termux_step_post_extract_package() { mv llvm-${TERMUX_PKG_VERSION[1]}.src llvm diff --git a/packages/ledger/build.sh b/packages/ledger/build.sh index c7dad6b98..4c6756292 100644 --- a/packages/ledger/build.sh +++ b/packages/ledger/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.ledger-cli.org TERMUX_PKG_DESCRIPTION="Powerful, double-entry accounting system" TERMUX_PKG_LICENSE="BSD 3-Clause" TERMUX_PKG_VERSION=3.1.2 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=3ecebe00e8135246e5437e4364bb7a38869fad7c3250b849cf8c18ca2628182e TERMUX_PKG_SRCURL=https://github.com/ledger/ledger/archive/${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="boost, libedit, libmpfr, utf8cpp, libgmp" diff --git a/packages/leveldb/build.sh b/packages/leveldb/build.sh index 477f132fa..cc0148612 100644 --- a/packages/leveldb/build.sh +++ b/packages/leveldb/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://github.com/google/leveldb TERMUX_PKG_DESCRIPTION="Fast key-value storage library" TERMUX_PKG_LICENSE="BSD 3-Clause" TERMUX_PKG_VERSION=1.20 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=f5abe8b5b209c2f36560b75f32ce61412f39a2922f7045ae764a2c23335b6664 TERMUX_PKG_SRCURL=https://github.com/google/leveldb/archive/v${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/lftp/build.sh b/packages/lftp/build.sh index 3e048802d..a3ef73778 100644 --- a/packages/lftp/build.sh +++ b/packages/lftp/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://lftp.tech/ TERMUX_PKG_DESCRIPTION="FTP/HTTP client and file transfer program" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=4.8.4 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=3 TERMUX_PKG_SHA256=4ebc271e9e5cea84a683375a0f7e91086e5dac90c5d51bb3f169f75386107a62 TERMUX_PKG_SRCURL=https://lftp.tech/ftp/lftp-${TERMUX_PKG_VERSION}.tar.xz # (1) Android has dn_expand, but lftp assumes that dn_skipname then exists, which it does not on android. diff --git a/packages/libarchive/archive_util.c.patch b/packages/libarchive/archive_util.c.patch new file mode 100644 index 000000000..e874a4abe --- /dev/null +++ b/packages/libarchive/archive_util.c.patch @@ -0,0 +1,12 @@ +diff -uNr libarchive-3.3.3/libarchive/archive_util.c libarchive-3.3.3.mod/libarchive/archive_util.c +--- libarchive-3.3.3/libarchive/archive_util.c 2018-09-02 09:05:18.000000000 +0300 ++++ libarchive-3.3.3.mod/libarchive/archive_util.c 2019-03-02 02:14:39.252942170 +0200 +@@ -374,7 +374,7 @@ + #ifdef _PATH_TMP + tmp = _PATH_TMP; + #else +- tmp = "/tmp"; ++ tmp = "@TERMUX_PREFIX@/tmp"; + #endif + archive_strcpy(temppath, tmp); + if (temppath->s[temppath->length-1] != '/') diff --git a/packages/libarchive/build.sh b/packages/libarchive/build.sh index a9ef9e6f7..0a5bd5fca 100644 --- a/packages/libarchive/build.sh +++ b/packages/libarchive/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.libarchive.org/ TERMUX_PKG_DESCRIPTION="Multi-format archive and compression library" TERMUX_PKG_LICENSE="BSD 2-Clause" TERMUX_PKG_VERSION=3.3.3 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=ba7eb1781c9fbbae178c4c6bad1c6eb08edab9a1496c64833d1715d022b30e2e TERMUX_PKG_SRCURL=https://www.libarchive.org/downloads/libarchive-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="libbz2, liblzma, libxml2, openssl" diff --git a/packages/libbz2/build.sh b/packages/libbz2/build.sh index d4e24f60a..c9b58398a 100644 --- a/packages/libbz2/build.sh +++ b/packages/libbz2/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=http://www.bzip.org/ TERMUX_PKG_DESCRIPTION="BZ2 format compression library" TERMUX_PKG_LICENSE="BSD" TERMUX_PKG_VERSION=1.0.6 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=4bbea71ae30a0e5a8ddcee8da750bc978a479ba11e04498d082fa65c2f8c1ad5 TERMUX_PKG_SRCURL=https://fossies.org/linux/misc/bzip2-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_EXTRA_MAKE_ARGS="PREFIX=$TERMUX_PREFIX" diff --git a/packages/libbz2/fix-paths.patch b/packages/libbz2/fix-paths.patch new file mode 100644 index 000000000..36490b1a8 --- /dev/null +++ b/packages/libbz2/fix-paths.patch @@ -0,0 +1,21 @@ +diff -uNr bzip2-1.0.6/bzdiff bzip2-1.0.6.mod/bzdiff +--- bzip2-1.0.6/bzdiff 2007-01-03 04:00:55.000000000 +0200 ++++ bzip2-1.0.6.mod/bzdiff 2019-03-01 20:44:12.401418675 +0200 +@@ -37,7 +37,7 @@ + echo "Usage: $prog [${comp}_options] file [file]" + exit 1 + fi +-tmp=`mktemp ${TMPDIR:-/tmp}/bzdiff.XXXXXXXXXX` || { ++tmp=`mktemp ${TMPDIR:-@TERMUX_PREFIX@/tmp}/bzdiff.XXXXXXXXXX` || { + echo 'cannot create a temporary file' >&2 + exit 1 + } +@@ -56,7 +56,7 @@ + bzip2 -cdfq "$2" > $tmp + bzip2 -cdfq "$1" | $comp $OPTIONS - $tmp + STAT="$?" +- /bin/rm -f $tmp;; ++ rm -f $tmp;; + + *) bzip2 -cdfq "$1" | $comp $OPTIONS - "$2" + STAT="$?";; diff --git a/packages/libcaca/build.sh b/packages/libcaca/build.sh index f2161395b..251e26f9b 100644 --- a/packages/libcaca/build.sh +++ b/packages/libcaca/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=http://caca.zoy.org/wiki/libcaca TERMUX_PKG_DESCRIPTION="Graphics library that outputs text instead of pixels" TERMUX_PKG_LICENSE="WTFPL" TERMUX_PKG_VERSION=0.99.beta19 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=3 # Switched to mirror on 2014-12-22 since master was down: TERMUX_PKG_SRCURL=http://fossies.org/linux/privat/libcaca-${TERMUX_PKG_VERSION}.tar.gz # http://caca.zoy.org/files/libcaca/libcaca-${TERMUX_PKG_VERSION}.tar.gz diff --git a/packages/libcln/build.sh b/packages/libcln/build.sh index 517246c3d..3750c0746 100644 --- a/packages/libcln/build.sh +++ b/packages/libcln/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.ginac.de/CLN/ TERMUX_PKG_DESCRIPTION="CLN is a library for efficient computations with all kinds of numbers in arbitrary precision" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=1.3.4 -TERMUX_PKG_REVISION=3 +TERMUX_PKG_REVISION=4 TERMUX_PKG_SRCURL=https://fossies.org/linux/privat/cln-$TERMUX_PKG_VERSION.tar.xz TERMUX_PKG_SHA256=c32e59b6afbcf8b84075ab454c42982429c6ea9675aee2bbda176cb85293e38f TERMUX_PKG_DEPENDS="libgmp" diff --git a/packages/libconfig/build.sh b/packages/libconfig/build.sh index e8c148b10..e3398f234 100644 --- a/packages/libconfig/build.sh +++ b/packages/libconfig/build.sh @@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="C/C++ Configuration File Library" TERMUX_PKG_LICENSE="LGPL-2.0" TERMUX_PKG_MAINTAINER="Leonid Plyushch @xeffyr" TERMUX_PKG_VERSION=1.7.2 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SRCURL=https://github.com/hyperrealm/libconfig/archive/v${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=f67ac44099916ae260a6c9e290a90809e7d782d96cdd462cac656ebc5b685726 diff --git a/packages/libdb/build.sh b/packages/libdb/build.sh index b6178bff2..487ee0850 100644 --- a/packages/libdb/build.sh +++ b/packages/libdb/build.sh @@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="The Berkeley DB embedded database system (library)" TERMUX_PKG_LICENSE="BSD 3-Clause" TERMUX_PKG_MAINTAINER="Vishal Biswas @vishalbiswas" TERMUX_PKG_VERSION=6.2.32 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SRCURL=http://download.oracle.com/berkeley-db/db-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=a9c5e2b004a5777aa03510cfe5cd766a4a3b777713406b02809c17c8e0e7a8fb TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" diff --git a/packages/libdb/fix-tmpdir.patch b/packages/libdb/fix-tmpdir.patch new file mode 100644 index 000000000..e7f1a2ce1 --- /dev/null +++ b/packages/libdb/fix-tmpdir.patch @@ -0,0 +1,48 @@ +diff -uNr db-6.2.32/lang/sql/generated/sqlite3.c db-6.2.32.mod/lang/sql/generated/sqlite3.c +--- db-6.2.32/lang/sql/generated/sqlite3.c 2017-04-13 17:06:15.000000000 +0300 ++++ db-6.2.32.mod/lang/sql/generated/sqlite3.c 2019-03-02 02:06:14.891040820 +0200 +@@ -30788,9 +30788,9 @@ + 0, + 0, + 0, +- "/var/tmp", +- "/usr/tmp", +- "/tmp", ++ "@TERMUX_PREFIX@/var/tmp", ++ "@TERMUX_PREFIX@/usr/tmp", ++ "@TERMUX_PREFIX@/tmp", + 0 /* List terminator */ + }; + unsigned int i; +diff -uNr db-6.2.32/lang/sql/sqlite/src/os_unix.c db-6.2.32.mod/lang/sql/sqlite/src/os_unix.c +--- db-6.2.32/lang/sql/sqlite/src/os_unix.c 2017-04-13 17:06:17.000000000 +0300 ++++ db-6.2.32.mod/lang/sql/sqlite/src/os_unix.c 2019-03-02 02:06:27.711088791 +0200 +@@ -5450,9 +5450,9 @@ + 0, + 0, + 0, +- "/var/tmp", +- "/usr/tmp", +- "/tmp", ++ "@TERMUX_PREFIX@/var/tmp", ++ "@TERMUX_PREFIX@/usr/tmp", ++ "@TERMUX_PREFIX@/tmp", + 0 /* List terminator */ + }; + unsigned int i; +diff -uNr db-6.2.32/src/os/os_tmpdir.c db-6.2.32.mod/src/os/os_tmpdir.c +--- db-6.2.32/src/os/os_tmpdir.c 2017-04-13 17:06:21.000000000 +0300 ++++ db-6.2.32.mod/src/os/os_tmpdir.c 2019-03-02 02:06:03.557665103 +0200 +@@ -125,9 +125,9 @@ + DB_TEMP_DIRECTORY("C:/temp"); + DB_TEMP_DIRECTORY("C:/tmp"); + #else +- DB_TEMP_DIRECTORY("/var/tmp"); +- DB_TEMP_DIRECTORY("/usr/tmp"); +- DB_TEMP_DIRECTORY("/tmp"); ++ DB_TEMP_DIRECTORY("@TERMUX_PREFIX@/var/tmp"); ++ DB_TEMP_DIRECTORY("@TERMUX_PREFIX@/usr/tmp"); ++ DB_TEMP_DIRECTORY("@TERMUX_PREFIX@/tmp"); + #if defined(ANDROID) || defined(DB_ANDROID) + DB_TEMP_DIRECTORY("/cache"); + #endif diff --git a/packages/libflac/build.sh b/packages/libflac/build.sh index 93fa0e6e3..0232b720d 100644 --- a/packages/libflac/build.sh +++ b/packages/libflac/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://xiph.org/flac/ TERMUX_PKG_DESCRIPTION="FLAC (Free Lossless Audio Codec) library" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=1.3.2 -TERMUX_PKG_REVISION=5 +TERMUX_PKG_REVISION=6 TERMUX_PKG_SRCURL=http://downloads.xiph.org/releases/flac/flac-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_SHA256=91cfc3ed61dc40f47f050a109b08610667d73477af6ef36dcad31c31a4a8d53f TERMUX_PKG_DEPENDS="libogg" diff --git a/packages/libgc/build.sh b/packages/libgc/build.sh index 072fd65e2..24de4fc2f 100644 --- a/packages/libgc/build.sh +++ b/packages/libgc/build.sh @@ -1,10 +1,10 @@ TERMUX_PKG_HOMEPAGE=http://www.hboehm.info/gc/ TERMUX_PKG_DESCRIPTION="Library providing the Boehm-Demers-Weiser conservative garbage collector" TERMUX_PKG_LICENSE="GPL-2.0" -TERMUX_PKG_VERSION=(8.0.2 - 7.6.8) -TERMUX_PKG_SHA256=(4e8ca4b5b72a3a27971daefaa9b621f0a716695b23baa40b7eac78de2eeb51cb - 1d6a279edf81767e74d2ad2c9fce09459bc65f12c6525a40b0cb3e53c089f665) +TERMUX_PKG_VERSION=(8.0.4 + 7.6.10) +TERMUX_PKG_SHA256=(436a0ddc67b1ac0b0405b61a9675bca9e075c8156f4debd1d06f3a56c7cd289d + 587edf60817f56daf1e1ab38a4b3c729b8e846ff67b4f62a6157183708f099af) TERMUX_PKG_SRCURL=(https://github.com/ivmai/bdwgc/releases/download/v$TERMUX_PKG_VERSION/gc-$TERMUX_PKG_VERSION.tar.gz https://github.com/ivmai/libatomic_ops/releases/download/v${TERMUX_PKG_VERSION[1]}/libatomic_ops-${TERMUX_PKG_VERSION[1]}.tar.gz) TERMUX_PKG_RM_AFTER_INSTALL="share/gc" diff --git a/packages/libgc/os_dep.c.patch b/packages/libgc/os_dep.c.patch deleted file mode 100644 index 5186e911b..000000000 --- a/packages/libgc/os_dep.c.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -u -r ../gc-8.0.2/os_dep.c ./os_dep.c ---- ../gc-8.0.2/os_dep.c 2018-12-23 21:28:41.000000000 +0000 -+++ ./os_dep.c 2019-01-20 19:58:07.823582155 +0000 -@@ -436,7 +436,9 @@ - - # if (defined(LINUX) || defined(HURD)) && !defined(IGNORE_PROG_DATA_START) - /* Try the easy approaches first: */ --# ifdef HOST_ANDROID -+# ifdef HOST_ANDROID_DISABLED_TERMUX -+ /* This workaround for gold linker when only aarch64 is using it in -+ Termux breaks other arches - apply it to aarch64 only. */ - /* Workaround for "gold" (default) linker (as of Android NDK r10e). */ - if ((word)__data_start < (word)_etext - && (word)_etext < (word)__dso_handle) { diff --git a/packages/libgraphite/build.sh b/packages/libgraphite/build.sh index 35fcf52d5..283e2daf4 100644 --- a/packages/libgraphite/build.sh +++ b/packages/libgraphite/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://github.com/silnrsi/graphite TERMUX_PKG_DESCRIPTION="Font system for multiple languages" TERMUX_PKG_LICENSE="LGPL-2.0" TERMUX_PKG_VERSION=1.3.13 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=2f9f609deeddfe2b193502adc8df3b0396694b799a433c36e85fd1242e654cd9 TERMUX_PKG_SRCURL=https://github.com/silnrsi/graphite/archive/${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_RM_AFTER_INSTALL="bin/gr2fonttest" diff --git a/packages/libgrpc/build.sh b/packages/libgrpc/build.sh index f6393bb72..e55f743bf 100644 --- a/packages/libgrpc/build.sh +++ b/packages/libgrpc/build.sh @@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="High performance, open source, general RPC framework tha TERMUX_PKG_LICENSE="Apache-2.0" TERMUX_PKG_MAINTAINER="Vishal Biswas @vishalbiswas" TERMUX_PKG_VERSION=1.17.2 +TERMUX_PKG_REVISION=1 TERMUX_PKG_DEPENDS="openssl, protobuf, c-ares" TERMUX_PKG_BUILD_DEPENDS="libprotobuf" TERMUX_PKG_HOSTBUILD=true diff --git a/packages/libhdf5/build.sh b/packages/libhdf5/build.sh index 84917a86a..9c9f0c89c 100644 --- a/packages/libhdf5/build.sh +++ b/packages/libhdf5/build.sh @@ -4,7 +4,7 @@ TERMUX_PKG_LICENSE="BSD 3-Clause" _HDF5_MAJOR=1 _HDF5_MINOR=10 _HDF5_PATCH=1 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_VERSION=${_HDF5_MAJOR}.${_HDF5_MINOR}.${_HDF5_PATCH} TERMUX_PKG_SHA256=9c5ce1e33d2463fb1a42dd04daacbc22104e57676e2204e3d66b1ef54b88ebf2 TERMUX_PKG_SRCURL=https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-${_HDF5_MAJOR}.${_HDF5_MINOR}/hdf5-$TERMUX_PKG_VERSION/src/hdf5-$TERMUX_PKG_VERSION.tar.bz2 @@ -36,6 +36,6 @@ termux_step_post_make_install() { Requires: Libs: -L\${libdir} -lhdf5 Cflags: -I\${includedir} - + HERE } diff --git a/packages/libical/build.sh b/packages/libical/build.sh index d815291a9..b656d5ce1 100644 --- a/packages/libical/build.sh +++ b/packages/libical/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=http://libical.github.io/libical/ TERMUX_PKG_DESCRIPTION="Libical is an Open Source implementation of the iCalendar protocols and protocol data units" TERMUX_PKG_LICENSE="LGPL-2.0" TERMUX_PKG_VERSION=3.0.4 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=72b216e10233c3f60cb06062facf41f3b0f70615e5a60b47f9853341a0d5d145 TERMUX_PKG_SRCURL=https://github.com/libical/libical/releases/download/v$TERMUX_PKG_VERSION/libical-$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_DEPENDS="libxml2" diff --git a/packages/libicu/build.sh b/packages/libicu/build.sh index 75f8eba8e..ddbf42262 100644 --- a/packages/libicu/build.sh +++ b/packages/libicu/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=http://site.icu-project.org/home TERMUX_PKG_DESCRIPTION='International Components for Unicode library' TERMUX_PKG_LICENSE="BSD" TERMUX_PKG_VERSION=63.1 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=150a1e278fbc5a2ae77aa2efdfb87dcd43321390fe211158192049baaba799b0 TERMUX_PKG_SRCURL=https://fossies.org/linux/misc/icu4c-${TERMUX_PKG_VERSION//./_}-src.tar.xz TERMUX_PKG_INCLUDE_IN_DEVPACKAGE="bin/icu-config share/man/man1/icu-config.1 lib/icu share/icu" diff --git a/packages/libjasper/build.sh b/packages/libjasper/build.sh index 28b4498bc..e51827814 100644 --- a/packages/libjasper/build.sh +++ b/packages/libjasper/build.sh @@ -9,3 +9,6 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" -H$TERMUX_PKG_SRCDIR -B$TERMUX_PKG_BUILDDIR " +termux_step_pre_configure() { + LDFLAGS+=" -lm" +} diff --git a/packages/libllvm/build.sh b/packages/libllvm/build.sh index 4361fcbd6..451eb8c40 100644 --- a/packages/libllvm/build.sh +++ b/packages/libllvm/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://clang.llvm.org/ TERMUX_PKG_DESCRIPTION="Modular compiler and toolchain technologies library" TERMUX_PKG_LICENSE="NCSA" TERMUX_PKG_VERSION=7.0.1 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=(a38dfc4db47102ec79dcc2aa61e93722c5f6f06f0a961073bd84b78fb949419b a45b62dde5d7d5fdcdfa876b0af92f164d434b06e9e89b5d0b1cbc65dfe3f418 8869aab2dd2d8e00d69943352d3166d159d7eae2615f66a684f4a0999fc74031 @@ -20,7 +21,7 @@ bin/macho-dump lib/libgomp.a lib/libiomp5.a " -TERMUX_PKG_DEPENDS="binutils, ncurses, ndk-sysroot, ndk-stl, libffi" +TERMUX_PKG_DEPENDS="binutils, ncurses, ndk-sysroot, libffi" # Replace gcc since gcc is deprecated by google on android and is not maintained upstream. # Conflict with clang versions earlier than 3.9.1-3 since they bundled llvm. TERMUX_PKG_CONFLICTS="gcc, clang (<< 3.9.1-3)" diff --git a/packages/libllvm/tools-clang-lib-Driver-ToolChains-Linux.cpp.patch b/packages/libllvm/tools-clang-lib-Driver-ToolChains-Linux.cpp.patch index ac8cc2a67..6592a8d5b 100644 --- a/packages/libllvm/tools-clang-lib-Driver-ToolChains-Linux.cpp.patch +++ b/packages/libllvm/tools-clang-lib-Driver-ToolChains-Linux.cpp.patch @@ -1,11 +1,49 @@ ---- ../cache/cfe-6.0.0.src/lib/Driver/ToolChains/Linux.cpp 2017-12-11 18:14:51.000000000 +0000 -+++ ./tools/clang/lib/Driver/ToolChains/Linux.cpp 2018-03-13 03:32:36.142985756 +0000 -@@ -816,7 +816,7 @@ +--- ./linux.cpp.orig 2019-02-18 04:44:14.793138642 +0000 ++++ ./tools/clang/lib/Driver/ToolChains/Linux.cpp 2019-02-18 04:52:44.527535617 +0000 +@@ -311,6 +311,8 @@ + // possible permutations of these directories, and seeing which ones it added + // to the link paths. + path_list &Paths = getFilePaths(); ++ if(IsAndroid) ++ addPathIfExists(D, SysRoot + "@TERMUX_PREFIX@/lib", Paths); + + const std::string OSLibDir = getOSLibDir(Triple, Args); + const std::string MultiarchTriple = getMultiarchTriple(D, Triple, SysRoot); +@@ -652,8 +654,27 @@ + return; + + if (!DriverArgs.hasArg(options::OPT_nostdlibinc)) ++ if (getTriple().isAndroid()) { ++ switch (getTriple().getArch()) { ++ case llvm::Triple::x86_64: ++ addSystemInclude(DriverArgs, CC1Args, SysRoot + "@TERMUX_PREFIX@/include/x86_64-linux-android"); ++ break; ++ case llvm::Triple::x86: ++ addSystemInclude(DriverArgs, CC1Args, SysRoot + "@TERMUX_PREFIX@/include/i686-linux-android"); ++ break; ++ case llvm::Triple::aarch64: ++ addSystemInclude(DriverArgs, CC1Args, SysRoot + "@TERMUX_PREFIX@/include/aarch64-linux-android"); ++ break; ++ case llvm::Triple::arm: ++ case llvm::Triple::thumb: ++ addSystemInclude(DriverArgs, CC1Args, SysRoot + "@TERMUX_PREFIX@/include/arm-linux-androideabi"); ++ break; ++ default: ++ break; ++ } ++ + addSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/local/include"); +- ++ } + if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) { + SmallString<128> P(D.ResourceDir); + llvm::sys::path::append(P, "include"); +@@ -968,7 +989,7 @@ } bool Linux::isPIEDefault() const { - return (getTriple().isAndroid() && !getTriple().isAndroidVersionLT(16)) || -+ return getTriple().isAndroid() || ++ return getTriple().isAndroid() || getTriple().isMusl() || getSanitizerArgs().requiresPIE(); } diff --git a/packages/liblua/build.sh b/packages/liblua/build.sh index 5fede34c0..1c7ae9cf4 100644 --- a/packages/liblua/build.sh +++ b/packages/liblua/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.lua.org/ TERMUX_PKG_DESCRIPTION="Shared library for the Lua interpreter" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_VERSION=5.3.5 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=0c2eed3f960446e1a3e4b9a1ca2f3ff893b6ce41942cf54d5dd59ab4b3b058ac TERMUX_PKG_SRCURL=https://www.lua.org/ftp/lua-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_EXTRA_MAKE_ARGS=linux diff --git a/packages/libmosquitto/build.sh b/packages/libmosquitto/build.sh index c47eef67e..106e71b74 100644 --- a/packages/libmosquitto/build.sh +++ b/packages/libmosquitto/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://mosquitto.org/ TERMUX_PKG_DESCRIPTION="MQTT library" TERMUX_PKG_LICENSE="EPL-1.0" -TERMUX_PKG_VERSION=1.5.7 -TERMUX_PKG_SHA256=d4024c3388502d50be4192991e90d66dfb344376104df3f63846c9f201779955 +TERMUX_PKG_VERSION=1.5.8 +TERMUX_PKG_SHA256=78d7e70c3794dc3a1d484b4f2f8d3addebe9c2da3f5a1cebe557f7d13beb0da4 TERMUX_PKG_SRCURL=https://mosquitto.org/files/source/mosquitto-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="c-ares, libwebsockets, openssl" TERMUX_PKG_MAINTAINER="Nathaniel Wesley Filardo @nwf" diff --git a/packages/libpng/build.sh b/packages/libpng/build.sh index 87a56fad8..e0bdc50ec 100644 --- a/packages/libpng/build.sh +++ b/packages/libpng/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=http://www.libpng.org/pub/png/libpng.html TERMUX_PKG_DESCRIPTION="Official PNG reference library" TERMUX_PKG_LICENSE="Libpng" TERMUX_PKG_VERSION=1.6.36 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=eceb924c1fa6b79172fdfd008d335f0e59172a86a66481e09d4089df872aa319 TERMUX_PKG_SRCURL=https://fossies.org/linux/misc/libpng-$TERMUX_PKG_VERSION.tar.xz TERMUX_PKG_INCLUDE_IN_DEVPACKAGE="bin/libpng-config bin/libpng16-config" diff --git a/packages/libprotobuf/build.sh b/packages/libprotobuf/build.sh index 57ac89f71..4f80b7165 100644 --- a/packages/libprotobuf/build.sh +++ b/packages/libprotobuf/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://github.com/google/protobuf TERMUX_PKG_DESCRIPTION="Protocol buffers C++ library" TERMUX_PKG_LICENSE="BSD 3-Clause" TERMUX_PKG_VERSION=3.6.1 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=3d4e589d81b2006ca603c1ab712c9715a76227293032d05b26fca603f90b3f5b TERMUX_PKG_SRCURL=https://github.com/google/protobuf/archive/v${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_HOSTBUILD=yes diff --git a/packages/libpulseaudio/build.sh b/packages/libpulseaudio/build.sh index 9ac649ce5..ee22b2962 100644 --- a/packages/libpulseaudio/build.sh +++ b/packages/libpulseaudio/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.freedesktop.org/wiki/Software/PulseAudio TERMUX_PKG_DESCRIPTION="A featureful, general-purpose sound server - shared libraries" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=12.2 -TERMUX_PKG_REVISION=10 +TERMUX_PKG_REVISION=12 TERMUX_PKG_SHA256=809668ffc296043779c984f53461c2b3987a45b7a25eb2f0a1d11d9f23ba4055 TERMUX_PKG_SRCURL=https://www.freedesktop.org/software/pulseaudio/releases/pulseaudio-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_DEPENDS="libltdl, libsndfile, libandroid-glob, libsoxr, speexdsp" diff --git a/packages/libpulseaudio/fix-paths.patch b/packages/libpulseaudio/fix-paths.patch new file mode 100644 index 000000000..df652bf1d --- /dev/null +++ b/packages/libpulseaudio/fix-paths.patch @@ -0,0 +1,145 @@ +diff -uNr pulseaudio-12.2/src/Makefile.am pulseaudio-12.2.mod/src/Makefile.am +--- pulseaudio-12.2/src/Makefile.am 2018-07-16 17:40:33.000000000 +0300 ++++ pulseaudio-12.2.mod/src/Makefile.am 2019-03-02 02:22:51.618146972 +0200 +@@ -1903,7 +1903,7 @@ + module_augment_properties_la_LDFLAGS = $(MODULE_LDFLAGS) + module_augment_properties_la_LIBADD = $(MODULE_LIBADD) + #module_augment_properties_la_CFLAGS = $(AM_CFLAGS) -DDESKTOPFILEDIR=\"$(datadir)/applications\" +-module_augment_properties_la_CFLAGS = $(AM_CFLAGS) -DDESKTOPFILEDIR=\"/usr/share/applications\" -DPA_MODULE_NAME=module_augment_properties ++module_augment_properties_la_CFLAGS = $(AM_CFLAGS) -DDESKTOPFILEDIR=\"@TERMUX_PREFIX@/share/applications\" -DPA_MODULE_NAME=module_augment_properties + + # Cork certain streams while others are active (e.g. cork music when phone streams appear) + module_role_cork_la_SOURCES = modules/module-role-cork.c \ +diff -uNr pulseaudio-12.2/src/Makefile.in pulseaudio-12.2.mod/src/Makefile.in +--- pulseaudio-12.2/src/Makefile.in 2018-07-16 17:57:09.000000000 +0300 ++++ pulseaudio-12.2.mod/src/Makefile.in 2019-03-02 02:22:31.711404512 +0200 +@@ -4708,7 +4708,7 @@ + module_augment_properties_la_LDFLAGS = $(MODULE_LDFLAGS) + module_augment_properties_la_LIBADD = $(MODULE_LIBADD) + #module_augment_properties_la_CFLAGS = $(AM_CFLAGS) -DDESKTOPFILEDIR=\"$(datadir)/applications\" +-module_augment_properties_la_CFLAGS = $(AM_CFLAGS) -DDESKTOPFILEDIR=\"/usr/share/applications\" -DPA_MODULE_NAME=module_augment_properties ++module_augment_properties_la_CFLAGS = $(AM_CFLAGS) -DDESKTOPFILEDIR=\"@TERMUX_PREFIX@/share/applications\" -DPA_MODULE_NAME=module_augment_properties + + # Cork certain streams while others are active (e.g. cork music when phone streams appear) + module_role_cork_la_SOURCES = modules/module-role-cork.c \ +diff -uNr pulseaudio-12.2/src/modules/echo-cancel/module-echo-cancel.c pulseaudio-12.2.mod/src/modules/echo-cancel/module-echo-cancel.c +--- pulseaudio-12.2/src/modules/echo-cancel/module-echo-cancel.c 2018-07-16 17:40:33.000000000 +0300 ++++ pulseaudio-12.2.mod/src/modules/echo-cancel/module-echo-cancel.c 2019-03-02 02:25:58.655526061 +0200 +@@ -2047,18 +2047,18 @@ + } + + if (u->save_aec) { +- pa_log("Creating AEC files in /tmp"); +- u->captured_file = fopen("/tmp/aec_rec.sw", "wb"); ++ pa_log("Creating AEC files in @TERMUX_PREFIX@/tmp"); ++ u->captured_file = fopen("@TERMUX_PREFIX@/tmp/aec_rec.sw", "wb"); + if (u->captured_file == NULL) + perror ("fopen failed"); +- u->played_file = fopen("/tmp/aec_play.sw", "wb"); ++ u->played_file = fopen("@TERMUX_PREFIX@/tmp/aec_play.sw", "wb"); + if (u->played_file == NULL) + perror ("fopen failed"); +- u->canceled_file = fopen("/tmp/aec_out.sw", "wb"); ++ u->canceled_file = fopen("@TERMUX_PREFIX@/tmp/aec_out.sw", "wb"); + if (u->canceled_file == NULL) + perror ("fopen failed"); + if (u->ec->params.drift_compensation) { +- u->drift_file = fopen("/tmp/aec_drift.txt", "w"); ++ u->drift_file = fopen("@TERMUX_PREFIX@/tmp/aec_drift.txt", "w"); + if (u->drift_file == NULL) + perror ("fopen failed"); + } +diff -uNr pulseaudio-12.2/src/modules/module-pipe-source.c pulseaudio-12.2.mod/src/modules/module-pipe-source.c +--- pulseaudio-12.2/src/modules/module-pipe-source.c 2018-07-14 18:53:48.000000000 +0300 ++++ pulseaudio-12.2.mod/src/modules/module-pipe-source.c 2019-03-02 02:25:16.902033631 +0200 +@@ -59,7 +59,7 @@ + "channels= " + "channel_map="); + +-#define DEFAULT_FILE_NAME "/tmp/music.input" ++#define DEFAULT_FILE_NAME "@TERMUX_PREFIX@/tmp/music.input" + #define DEFAULT_SOURCE_NAME "fifo_input" + + struct userdata { +diff -uNr pulseaudio-12.2/src/modules/module-protocol-stub.c pulseaudio-12.2.mod/src/modules/module-protocol-stub.c +--- pulseaudio-12.2/src/modules/module-protocol-stub.c 2018-07-13 22:06:15.000000000 +0300 ++++ pulseaudio-12.2.mod/src/modules/module-protocol-stub.c 2019-03-02 02:24:55.008616887 +0200 +@@ -301,9 +301,9 @@ + # if defined(USE_PROTOCOL_ESOUND) + + # if defined(USE_PER_USER_ESOUND_SOCKET) +- u->socket_path = pa_sprintf_malloc("/tmp/.esd-%lu/socket", (unsigned long) getuid()); ++ u->socket_path = pa_sprintf_malloc("@TERMUX_PREFIX@/tmp/.esd-%lu/socket", (unsigned long) getuid()); + # else +- u->socket_path = pa_xstrdup("/tmp/.esd/socket"); ++ u->socket_path = pa_xstrdup("@TERMUX_PREFIX@/tmp/.esd/socket"); + # endif + + /* This socket doesn't reside in our own runtime dir but in +diff -uNr pulseaudio-12.2/src/pulsecore/core-util.c pulseaudio-12.2.mod/src/pulsecore/core-util.c +--- pulseaudio-12.2/src/pulsecore/core-util.c 2018-07-16 17:40:33.000000000 +0300 ++++ pulseaudio-12.2.mod/src/pulsecore/core-util.c 2019-03-02 02:21:18.667793155 +0200 +@@ -1834,7 +1834,7 @@ + * users, too. Since we need POSIX locking and UNIX sockets in + * this directory, we try XDG_RUNTIME_DIR first, and if that isn't + * set create a directory in $HOME and link it to a random subdir +- * in /tmp, if it was not explicitly configured. */ ++ * in @TERMUX_PREFIX@/tmp, if it was not explicitly configured. */ + + m = pa_in_system_mode() ? 0755U : 0700U; + +@@ -1907,7 +1907,7 @@ + + #ifdef HAVE_SYMLINK + /* Hmm, so the runtime directory didn't exist yet, so let's +- * create one in /tmp and symlink that to it */ ++ * create one in @TERMUX_PREFIX@/tmp and symlink that to it */ + + if (make_random_dir_and_link(0700, k) < 0) { + +@@ -3120,8 +3120,8 @@ + if ((f = pa_fopen_cloexec(PA_MACHINE_ID, "r")) || + (f = pa_fopen_cloexec(PA_MACHINE_ID_FALLBACK, "r")) || + #if !defined(OS_IS_WIN32) +- (f = pa_fopen_cloexec("/etc/machine-id", "r")) || +- (f = pa_fopen_cloexec("/var/lib/dbus/machine-id", "r")) ++ (f = pa_fopen_cloexec("@TERMUX_PREFIX@/etc/machine-id", "r")) || ++ (f = pa_fopen_cloexec("@TERMUX_PREFIX@/var/lib/dbus/machine-id", "r")) + #else + false + #endif +@@ -3468,7 +3468,7 @@ + pa_is_path_absolute(t)) + return t; + +- return "/tmp"; ++ return "@TERMUX_PREFIX@/tmp"; + } + + int pa_open_cloexec(const char *fn, int flags, mode_t mode) { +diff -uNr pulseaudio-12.2/src/pulsecore/esound.h pulseaudio-12.2.mod/src/pulsecore/esound.h +--- pulseaudio-12.2/src/pulsecore/esound.h 2018-07-13 22:06:12.000000000 +0300 ++++ pulseaudio-12.2.mod/src/pulsecore/esound.h 2019-03-02 02:24:34.161870804 +0200 +@@ -23,8 +23,8 @@ + /* Most of the following is blatantly stolen from esound. */ + + /* path and name of the default EsounD domain socket */ +-#define ESD_UNIX_SOCKET_DIR "/tmp/.esd" +-#define ESD_UNIX_SOCKET_NAME "/tmp/.esd/socket" ++#define ESD_UNIX_SOCKET_DIR "@TERMUX_PREFIX@/tmp/.esd" ++#define ESD_UNIX_SOCKET_NAME "@TERMUX_PREFIX@/tmp/.esd/socket" + + /* length of the audio buffer size */ + #define ESD_BUF_SIZE (4 * 1024) +diff -uNr pulseaudio-12.2/src/pulsecore/shm.c pulseaudio-12.2.mod/src/pulsecore/shm.c +--- pulseaudio-12.2/src/pulsecore/shm.c 2018-07-13 22:06:12.000000000 +0300 ++++ pulseaudio-12.2.mod/src/pulsecore/shm.c 2019-03-02 02:28:09.806025965 +0200 +@@ -67,7 +67,7 @@ + /* On Linux we know that the shared memory blocks are files in + * /dev/shm. We can use that information to list all blocks and + * cleanup unused ones */ +-#define SHM_PATH "/dev/shm/" ++#define SHM_PATH "@TERMUX_PREFIX@/tmp/" + #define SHM_ID_LEN 10 + #elif defined(__sun) + #define SHM_PATH "/tmp" diff --git a/packages/libpulseaudio/module-aaudio-sink.c b/packages/libpulseaudio/module-aaudio-sink.c index 45852d0e9..f8276c4e6 100644 --- a/packages/libpulseaudio/module-aaudio-sink.c +++ b/packages/libpulseaudio/module-aaudio-sink.c @@ -52,11 +52,17 @@ PA_MODULE_USAGE( "sink_properties= " "rate= " "latency= " + "pm= " "no_close_hack= " ); #define DEFAULT_SINK_NAME "AAudio sink" +enum { + SINK_MESSAGE_RENDER = PA_SINK_MESSAGE_MAX, + SINK_MESSAGE_OPEN_STREAM +}; + struct userdata { pa_core *core; pa_module *module; @@ -65,9 +71,12 @@ struct userdata { pa_thread *thread; pa_thread_mq thread_mq; pa_rtpoll *rtpoll; + pa_rtpoll_item *rtpoll_item; + pa_asyncmsgq *aaudio_msgq; - uint32_t latency; uint32_t rate; + uint32_t latency; + uint32_t pm; bool no_close; pa_memchunk memchunk; @@ -83,38 +92,32 @@ static const char* const valid_modargs[] = { "sink_properties", "rate", "latency", + "pm", "no_close_hack", NULL }; -static void update_latency(struct userdata *u) { - pa_usec_t block_usec; +static int process_render(struct userdata *u, void *audioData, int64_t numFrames) { + pa_assert(u->sink->thread_info.state != PA_SINK_INIT); - if(!u->latency) { - block_usec = PA_USEC_PER_SEC * AAudioStream_getBufferSizeInFrames(u->stream) / u->sink->sample_spec.rate / 2; - if(!pa_thread_mq_get()) - pa_sink_set_fixed_latency(u->sink, block_usec); - else - pa_sink_set_fixed_latency_within_thread(u->sink, block_usec); - } + /* a render message could be queued after a set state message */ + if (!PA_SINK_IS_LINKED(u->sink->thread_info.state)) + return AAUDIO_CALLBACK_RESULT_STOP; + + u->memchunk.memblock = pa_memblock_new_fixed(u->core->mempool, audioData, u->frame_size * numFrames, false); + u->memchunk.length = pa_memblock_get_length(u->memchunk.memblock); + pa_sink_render_into_full(u->sink, &u->memchunk); + pa_memblock_unref_fixed(u->memchunk.memblock); + + return AAUDIO_CALLBACK_RESULT_CONTINUE; } -static aaudio_data_callback_result_t buffer_callback(AAudioStream *stream, void *userdata, void *audioData, int32_t numFrames) { +static aaudio_data_callback_result_t data_callback(AAudioStream *stream, void *userdata, void *audioData, int32_t numFrames) { struct userdata* u = userdata; pa_assert(u); - if (!pa_thread_mq_get()) { - pa_log_debug("Thread starting up"); - pa_thread_mq_install(&u->thread_mq); - } - - u->memchunk.memblock = pa_memblock_new_fixed(u->core->mempool, audioData, numFrames * u->frame_size, false); - u->memchunk.length = numFrames * u->frame_size; - pa_sink_render_into_full(u->sink, &u->memchunk); - pa_memblock_unref_fixed(u->memchunk.memblock); - - return AAUDIO_CALLBACK_RESULT_CONTINUE; + return pa_asyncmsgq_send(u->aaudio_msgq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_RENDER, audioData, numFrames, NULL); } static void error_callback(AAudioStream *stream, void *userdata, aaudio_result_t error) { @@ -123,15 +126,8 @@ static void error_callback(AAudioStream *stream, void *userdata, aaudio_result_t pa_assert(u); if (error == AAUDIO_ERROR_DISCONNECTED) { - if (!pa_thread_mq_get()) { - pa_sink_suspend(u->sink, true, PA_SUSPEND_UNAVAILABLE); - pa_sink_suspend(u->sink, false, PA_SUSPEND_UNAVAILABLE); - } else { - AAudioStream_requestStop(u->stream); - AAudioStream_requestStart(u->stream); - update_latency(u); - pa_log("Failed to reconfigure sink for new device.\n"); - } + pa_sink_suspend(u->sink, true, PA_SUSPEND_UNAVAILABLE); + pa_sink_suspend(u->sink, false, PA_SUSPEND_UNAVAILABLE); } } @@ -150,8 +146,8 @@ static int pa_open_aaudio_stream(struct userdata *u) pa_sample_spec *ss = &u->ss; CHK(AAudio_createStreamBuilder(&u->builder)); - AAudioStreamBuilder_setPerformanceMode(u->builder, AAUDIO_PERFORMANCE_MODE_LOW_LATENCY); - AAudioStreamBuilder_setDataCallback(u->builder, buffer_callback, u); + AAudioStreamBuilder_setPerformanceMode(u->builder, AAUDIO_PERFORMANCE_MODE_NONE + u->pm); + AAudioStreamBuilder_setDataCallback(u->builder, data_callback, u); AAudioStreamBuilder_setErrorCallback(u->builder, error_callback, u); want_float = ss->format > PA_SAMPLE_S16BE; @@ -178,68 +174,44 @@ fail: #undef CHK -static void thread_func(void *userdata) { - struct userdata *u = userdata; - - pa_assert(u); - - pa_log_debug("Thread starting up"); - pa_thread_mq_install(&u->thread_mq); - - for (;;) { - int ret; - - if (PA_SINK_IS_LINKED(u->sink->thread_info.state)) { - AAudioStream_requestStart(u->stream); - update_latency(u); - break; - } - - /* Hmm, nothing to do. Let's sleep */ - if ((ret = pa_rtpoll_run(u->rtpoll)) < 0) - goto fail; - - if (ret == 0) - goto finish; +static pa_usec_t get_latency(struct userdata *u) { + if(!u->latency) { + return PA_USEC_PER_SEC * AAudioStream_getBufferSizeInFrames(u->stream) / u->ss.rate / 2; + } else { + return PA_USEC_PER_MSEC * u->latency; } +} - for (;;) { - int ret; +static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *memchunk) { + struct userdata* u = PA_SINK(o)->userdata; - /* Hmm, nothing to do. Let's sleep */ - if ((ret = pa_rtpoll_run(u->rtpoll)) < 0) - goto fail; + pa_assert(u); - if (ret == 0) - goto finish; + switch (code) { + case SINK_MESSAGE_RENDER: + return process_render(u, data, offset); + case SINK_MESSAGE_OPEN_STREAM: + if (pa_open_aaudio_stream(u) < 0) { + pa_log("pa_open_aaudio_stream() failed."); + return -1; + } + code = PA_SINK_MESSAGE_SET_FIXED_LATENCY; + offset = get_latency(u); + break; } -fail: - /* If this was no regular exit from the loop we have to continue - * processing messages until we received PA_MESSAGE_SHUTDOWN */ - pa_asyncmsgq_post(u->thread_mq.outq, PA_MSGOBJECT(u->core), PA_CORE_MESSAGE_UNLOAD_MODULE, u->module, 0, NULL, NULL); - pa_asyncmsgq_wait_for(u->thread_mq.inq, PA_MESSAGE_SHUTDOWN); - -finish: - pa_log_debug("Thread shutting down"); -} + return pa_sink_process_msg(o, code, data, offset, memchunk); +}; -static int state_func(pa_sink *s, pa_sink_state_t state, pa_suspend_cause_t suspend_cause) { +static int state_func_main(pa_sink *s, pa_sink_state_t state, pa_suspend_cause_t suspend_cause) { struct userdata *u = s->userdata; - int r = 0; uint32_t idx; pa_sink_input *i; pa_idxset *inputs; - if ((PA_SINK_IS_OPENED(s->state) && state == PA_SINK_SUSPENDED) || - (PA_SINK_IS_LINKED(s->state) && state == PA_SINK_UNLINKED)) { - if (u->no_close) { - AAudioStream_requestStop(u->stream); - } else { - AAudioStream_close(u->stream); - } - } else if (s->state == PA_SINK_SUSPENDED && PA_SINK_IS_OPENED(state)) { - pa_open_aaudio_stream(u); + if (s->state == PA_SINK_SUSPENDED && PA_SINK_IS_OPENED(state)) { + if (pa_asyncmsgq_send(u->aaudio_msgq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_OPEN_STREAM, NULL, 0, NULL) < 0) + return -1; inputs = pa_idxset_copy(s->inputs, NULL); PA_IDXSET_FOREACH(i, inputs, idx) { @@ -260,11 +232,31 @@ static int state_func(pa_sink *s, pa_sink_state_t state, pa_suspend_cause_t susp PA_IDXSET_FOREACH(i, inputs, idx) pa_sink_input_cork(i, false); pa_idxset_free(inputs, NULL); + } + return 0; +} - AAudioStream_requestStart(u->stream); - update_latency(u); +static int state_func_io(pa_sink *s, pa_sink_state_t state, pa_suspend_cause_t suspend_cause) { + struct userdata *u = s->userdata; + + if ((PA_SINK_IS_OPENED(s->thread_info.state) && state == PA_SINK_SUSPENDED) || + (PA_SINK_IS_LINKED(s->thread_info.state) && state == PA_SINK_UNLINKED)) { + AAudioStream_requestStop(u->stream); + if (!u->no_close) + AAudioStream_close(u->stream); + } else if (s->thread_info.state == PA_SINK_SUSPENDED && PA_SINK_IS_OPENED(state)) { + if (AAudioStream_requestStart(u->stream) < 0) + pa_log("AAudioStream_requestStart() failed."); + } else if (s->thread_info.state == PA_SINK_INIT && PA_SINK_IS_LINKED(state)) { + if (PA_SINK_IS_OPENED(state)) { + if (AAudioStream_requestStart(u->stream) < 0) + pa_log("AAudioStream_requestStart() failed."); + } else { + if (!u->no_close) + AAudioStream_close(u->stream); + } } - return r; + return 0; } static int reconfigure_func(pa_sink *s, pa_sample_spec *ss, bool passthrough) { @@ -276,12 +268,39 @@ static void process_rewind(pa_sink *s) { pa_sink_process_rewind(s, 0); } +static void thread_func(void *userdata) { + struct userdata *u = userdata; + + pa_assert(u); + + pa_log_debug("Thread starting up"); + pa_thread_mq_install(&u->thread_mq); + + for (;;) { + int ret; + + if ((ret = pa_rtpoll_run(u->rtpoll)) < 0) + goto fail; + + if (ret == 0) + goto finish; + } + +fail: + /* If this was no regular exit from the loop we have to continue + * processing messages until we received PA_MESSAGE_SHUTDOWN */ + pa_asyncmsgq_post(u->thread_mq.outq, PA_MSGOBJECT(u->core), PA_CORE_MESSAGE_UNLOAD_MODULE, u->module, 0, NULL, NULL); + pa_asyncmsgq_wait_for(u->thread_mq.inq, PA_MESSAGE_SHUTDOWN); + +finish: + pa_log_debug("Thread shutting down"); +} + int pa__init(pa_module*m) { struct userdata *u = NULL; pa_channel_map map; pa_modargs *ma = NULL; pa_sink_new_data data; - pa_usec_t block_usec; pa_assert(m); @@ -290,7 +309,25 @@ int pa__init(pa_module*m) { u->core = m->core; u->module = m; u->rtpoll = pa_rtpoll_new(); - pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll); + + if (pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll) < 0) { + pa_log("pa_thread_mq_init() failed."); + goto fail; + } + + /* The queue linking the AudioTrack thread and our RT thread */ + u->aaudio_msgq = pa_asyncmsgq_new(0); + if (!u->aaudio_msgq) { + pa_log("pa_asyncmsgq_new() failed."); + goto fail; + } + + /* The msgq from the AudioTrack RT thread should have an even higher + * priority than the normal message queues, to match the guarantee + * all other drivers make: supplying the audio device with data is + * the top priority -- and as long as that is possible we don't do + * anything else */ + u->rtpoll_item = pa_rtpoll_item_new_asyncmsgq_read(u->rtpoll, PA_RTPOLL_EARLY-1, u->aaudio_msgq); if (!(ma = pa_modargs_new(m->argument, valid_modargs))) { pa_log("Failed to parse module arguments."); @@ -301,6 +338,11 @@ int pa__init(pa_module*m) { map = m->core->default_channel_map; pa_modargs_get_sample_rate(ma, &u->rate); + pa_modargs_get_value_u32(ma, "latency", &u->latency); + + u->pm = AAUDIO_PERFORMANCE_MODE_LOW_LATENCY - AAUDIO_PERFORMANCE_MODE_NONE; + pa_modargs_get_value_u32(ma, "pm", &u->pm); + pa_modargs_get_value_boolean(ma, "no_close_hack", &u->no_close); if (pa_open_aaudio_stream(u) < 0) @@ -330,20 +372,16 @@ int pa__init(pa_module*m) { goto fail; } - u->sink->parent.process_msg = pa_sink_process_msg; - u->sink->set_state_in_main_thread = state_func; + u->sink->parent.process_msg = sink_process_msg; + u->sink->set_state_in_main_thread = state_func_main; + u->sink->set_state_in_io_thread = state_func_io; u->sink->reconfigure = reconfigure_func; u->sink->request_rewind = process_rewind; u->sink->userdata = u; pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq); pa_sink_set_rtpoll(u->sink, u->rtpoll); - - pa_modargs_get_value_u32(ma, "latency", &u->latency); - if (u->latency) { - block_usec = PA_USEC_PER_MSEC * u->latency; - pa_sink_set_fixed_latency(u->sink, block_usec); - } + pa_sink_set_fixed_latency(u->sink, get_latency(u)); if (!(u->thread = pa_thread_new("aaudio-sink", thread_func, u))) { pa_log("Failed to create thread."); @@ -395,6 +433,12 @@ void pa__done(pa_module*m) { if (u->sink) pa_sink_unref(u->sink); + if (u->rtpoll_item) + pa_rtpoll_item_free(u->rtpoll_item); + + if (u->aaudio_msgq) + pa_asyncmsgq_unref(u->aaudio_msgq); + if (u->rtpoll) pa_rtpoll_free(u->rtpoll); diff --git a/packages/libpulseaudio/module-sles-sink.c b/packages/libpulseaudio/module-sles-sink.c index 365de12f7..33c699221 100644 --- a/packages/libpulseaudio/module-sles-sink.c +++ b/packages/libpulseaudio/module-sles-sink.c @@ -58,6 +58,10 @@ PA_MODULE_USAGE( #define DEFAULT_SINK_NAME "OpenSL ES sink" #define BLOCK_USEC (PA_USEC_PER_MSEC * 125) +enum { + SINK_MESSAGE_RENDER = PA_SINK_MESSAGE_MAX +}; + struct userdata { pa_core *core; pa_module *module; @@ -66,6 +70,8 @@ struct userdata { pa_thread *thread; pa_thread_mq thread_mq; pa_rtpoll *rtpoll; + pa_rtpoll_item *rtpoll_item; + pa_asyncmsgq *sles_msgq; pa_usec_t block_usec; @@ -90,19 +96,36 @@ static const char* const valid_modargs[] = { NULL }; -static void process_render(SLBufferQueueItf bq, void *userdata) { +static void process_render(void *userdata) { struct userdata* u = userdata; pa_assert(u); - if (!pa_thread_mq_get()) { - pa_log_debug("Thread starting up"); - pa_thread_mq_install(&u->thread_mq); - } + /* a render message could be queued after a set state message */ + if (!PA_SINK_IS_LINKED(u->sink->thread_info.state)) + return; u->memchunk.length = u->nbytes; pa_sink_render_into(u->sink, &u->memchunk); - (*bq)->Enqueue(bq, u->buf, u->memchunk.length); + (*u->bqPlayerBufferQueue)->Enqueue(u->bqPlayerBufferQueue, u->buf, u->memchunk.length); +} + +static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *memchunk) { + switch (code) { + case SINK_MESSAGE_RENDER: + process_render(data); + return 0; + } + + return pa_sink_process_msg(o, code, data, offset, memchunk); +}; + +static void sles_callback(SLBufferQueueItf bqPlayerBufferQueue, void *userdata) { + struct userdata* u = userdata; + + pa_assert(u); + + pa_assert_se(pa_asyncmsgq_send(u->sles_msgq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_RENDER, u, 0, NULL) == 0); } #define CHK(stmt) { \ @@ -160,7 +183,7 @@ static int pa_init_sles_player(struct userdata *u, pa_sample_spec *ss) { CHK((*u->bqPlayerObject)->GetInterface(u->bqPlayerObject, SL_IID_PLAY, &u->bqPlayerPlay)); CHK((*u->bqPlayerObject)->GetInterface(u->bqPlayerObject, SL_IID_BUFFERQUEUE, &u->bqPlayerBufferQueue)); - CHK((*u->bqPlayerBufferQueue)->RegisterCallback(u->bqPlayerBufferQueue, process_render, u)); + CHK((*u->bqPlayerBufferQueue)->RegisterCallback(u->bqPlayerBufferQueue, sles_callback, u)); return 0; @@ -175,27 +198,12 @@ static void thread_func(void *userdata) { pa_assert(u); - for (;;) { - int ret; - - /* Render some data and drop it immediately */ - if (PA_SINK_IS_LINKED(u->sink->thread_info.state)) { - process_render(u->bqPlayerBufferQueue, u); - break; - } - - /* Hmm, nothing to do. Let's sleep */ - if ((ret = pa_rtpoll_run(u->rtpoll)) < 0) - goto fail; - - if (ret == 0) - goto finish; - } + pa_log_debug("Thread starting up"); + pa_thread_mq_install(&u->thread_mq); for (;;) { int ret; - /* Hmm, nothing to do. Let's sleep */ if ((ret = pa_rtpoll_run(u->rtpoll)) < 0) goto fail; @@ -215,15 +223,14 @@ finish: static int state_func(pa_sink *s, pa_sink_state_t state, pa_suspend_cause_t suspend_cause) { struct userdata *u = s->userdata; - int r = 0; if ((PA_SINK_IS_OPENED(s->state) && state == PA_SINK_SUSPENDED) || (PA_SINK_IS_LINKED(s->state) && state == PA_SINK_UNLINKED)) - r = (*u->bqPlayerPlay)->SetPlayState(u->bqPlayerPlay, SL_PLAYSTATE_STOPPED); - else if ((s->state == PA_SINK_SUSPENDED && PA_SINK_IS_OPENED(state)) || - (s->state == PA_SINK_INIT && PA_SINK_IS_LINKED(state))) - r = (*u->bqPlayerPlay)->SetPlayState(u->bqPlayerPlay, SL_PLAYSTATE_PLAYING); - return r; + (*u->bqPlayerPlay)->SetPlayState(u->bqPlayerPlay, SL_PLAYSTATE_STOPPED); + else if ((s->state == PA_SINK_SUSPENDED || state == PA_SINK_INIT) && + PA_SINK_IS_LINKED(state)) + (*u->bqPlayerPlay)->SetPlayState(u->bqPlayerPlay, SL_PLAYSTATE_PLAYING); + return 0; } static void process_rewind(pa_sink *s) { @@ -245,7 +252,25 @@ int pa__init(pa_module*m) { u->core = m->core; u->module = m; u->rtpoll = pa_rtpoll_new(); - pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll); + + if (pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll) < 0) { + pa_log("pa_thread_mq_init() failed."); + goto fail; + } + + /* The queue linking the AudioTrack thread and our RT thread */ + u->sles_msgq = pa_asyncmsgq_new(0); + if (!u->sles_msgq) { + pa_log("pa_asyncmsgq_new() failed."); + goto fail; + } + + /* The msgq from the AudioTrack RT thread should have an even higher + * priority than the normal message queues, to match the guarantee + * all other drivers make: supplying the audio device with data is + * the top priority -- and as long as that is possible we don't do + * anything else */ + u->rtpoll_item = pa_rtpoll_item_new_asyncmsgq_read(u->rtpoll, PA_RTPOLL_EARLY-1, u->sles_msgq); if (!(ma = pa_modargs_new(m->argument, valid_modargs))) { pa_log("Failed to parse module arguments."); @@ -294,7 +319,7 @@ int pa__init(pa_module*m) { goto fail; } - u->sink->parent.process_msg = pa_sink_process_msg; + u->sink->parent.process_msg = sink_process_msg; u->sink->set_state_in_main_thread = state_func; u->sink->request_rewind = process_rewind; u->sink->userdata = u; @@ -319,6 +344,7 @@ int pa__init(pa_module*m) { } pa_sink_put(u->sink); + sles_callback(u->bqPlayerBufferQueue, u); pa_modargs_free(ma); @@ -355,11 +381,6 @@ void pa__done(pa_module*m) { if (u->sink) pa_sink_unlink(u->sink); - if (u->thread) { - pa_asyncmsgq_send(u->thread_mq.inq, NULL, PA_MESSAGE_SHUTDOWN, NULL, 0, NULL); - pa_thread_free(u->thread); - } - DESTROY(bqPlayerObject); DESTROY(outputMixObject); DESTROY(engineObject); @@ -367,11 +388,22 @@ void pa__done(pa_module*m) { pa_memblock_unref_fixed(u->memchunk.memblock); free(u->buf); + if (u->thread) { + pa_asyncmsgq_send(u->thread_mq.inq, NULL, PA_MESSAGE_SHUTDOWN, NULL, 0, NULL); + pa_thread_free(u->thread); + } + pa_thread_mq_done(&u->thread_mq); if (u->sink) pa_sink_unref(u->sink); + if (u->rtpoll_item) + pa_rtpoll_item_free(u->rtpoll_item); + + if (u->sles_msgq) + pa_asyncmsgq_unref(u->sles_msgq); + if (u->rtpoll) pa_rtpoll_free(u->rtpoll); diff --git a/packages/libpulseaudio/tmpdir.patch b/packages/libpulseaudio/tmpdir.patch deleted file mode 100644 index 7a47e9bcb..000000000 --- a/packages/libpulseaudio/tmpdir.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- src/src/pulsecore/core-util.c.orig 2017-01-13 03:02:18.000000000 +0000 -+++ src/src/pulsecore/core-util.c 2017-03-06 22:31:51.321911880 +0000 -@@ -1812,7 +1812,7 @@ - * users, too. Since we need POSIX locking and UNIX sockets in - * this directory, we try XDG_RUNTIME_DIR first, and if that isn't - * set create a directory in $HOME and link it to a random subdir -- * in /tmp, if it was not explicitly configured. */ -+ * in @TERMUX_PREFIX@/tmp, if it was not explicitly configured. */ - - m = pa_in_system_mode() ? 0755U : 0700U; - -@@ -1885,7 +1885,7 @@ - - #ifdef HAVE_SYMLINK - /* Hmm, so the runtime directory didn't exist yet, so let's -- * create one in /tmp and symlink that to it */ -+ * create one in @TERMUX_PREFIX@/tmp and symlink that to it */ - - if (make_random_dir_and_link(0700, k) < 0) { - -@@ -3429,7 +3429,7 @@ - pa_is_path_absolute(t)) - return t; - -- return "/tmp"; -+ return "@TERMUX_PREFIX@/tmp"; - } - - int pa_open_cloexec(const char *fn, int flags, mode_t mode) { diff --git a/packages/librsvg/build.sh b/packages/librsvg/build.sh index 4cfdae611..87a22da07 100644 --- a/packages/librsvg/build.sh +++ b/packages/librsvg/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://wiki.gnome.org/action/show/Projects/LibRsvg TERMUX_PKG_DESCRIPTION="Library to render SVG files using cairo" TERMUX_PKG_LICENSE="LGPL-2.0" -TERMUX_PKG_VERSION=2.45.4 -TERMUX_PKG_SHA256=eeb6105cb28deec7a8a2ef270ae86b13fc555ff7dc85014a6b3e7cf0e88a7b4f +TERMUX_PKG_VERSION=2.45.5 +TERMUX_PKG_SHA256=600872dc608fe5e01bfd8d5b3046d01b53b99121bc5ab9663531b53630843700 TERMUX_PKG_SRCURL=http://ftp.gnome.org/pub/GNOME/sources/librsvg/${TERMUX_PKG_VERSION:0:4}/librsvg-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_DEPENDS="libcroco,pango,gdk-pixbuf,libcairo-gobject" TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--disable-introspection --disable-pixbuf-loader" diff --git a/packages/libsqlite/build.sh b/packages/libsqlite/build.sh index 07649b8fc..15504f2ff 100644 --- a/packages/libsqlite/build.sh +++ b/packages/libsqlite/build.sh @@ -4,8 +4,8 @@ TERMUX_PKG_LICENSE="Public Domain" # Note: Updating this version requires bumping the tcl package as well. _SQLITE_MAJOR=3 _SQLITE_MINOR=27 -_SQLITE_PATCH=1 -TERMUX_PKG_SHA256=54a92b8ff73ff6181f89b9b0c08949119b99e8cccef93dbef90e852a8b10f4f8 +_SQLITE_PATCH=2 +TERMUX_PKG_SHA256=50c39e85ea28b5ecfdb3f9e860afe9ba606381e21836b2849efca6a0bfe6ef6e TERMUX_PKG_VERSION=${_SQLITE_MAJOR}.${_SQLITE_MINOR}.${_SQLITE_PATCH} TERMUX_PKG_SRCURL=https://www.sqlite.org/2019/sqlite-autoconf-${_SQLITE_MAJOR}${_SQLITE_MINOR}0${_SQLITE_PATCH}00.tar.gz # ac_cv_func_strerror_r=no as strerror_r() with the diff --git a/packages/libssh/build.sh b/packages/libssh/build.sh index 8a9a1055d..eb9803774 100644 --- a/packages/libssh/build.sh +++ b/packages/libssh/build.sh @@ -1,8 +1,9 @@ TERMUX_PKG_HOMEPAGE=https://www.libssh.org/ TERMUX_PKG_DESCRIPTION="Tiny C SSH library" TERMUX_PKG_LICENSE="LGPL-2.0" -TERMUX_PKG_VERSION=0.8.6 -TERMUX_PKG_SHA256=1046b95632a07fc00b1ea70ee683072d0c8a23f544f4535440b727812002fd01 +TERMUX_PKG_VERSION=0.8.7 +TERMUX_PKG_REVISION=1 +TERMUX_PKG_SHA256=43304ca22f0ba0b654e14b574a39816bc70212fdea5858a6637cc26cade3d592 TERMUX_PKG_SRCURL=https://www.libssh.org/files/${TERMUX_PKG_VERSION:0:3}/libssh-$TERMUX_PKG_VERSION.tar.xz TERMUX_PKG_DEPENDS="openssl" TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" diff --git a/packages/libssh/fix-paths.patch b/packages/libssh/fix-paths.patch new file mode 100644 index 000000000..8006d36ec --- /dev/null +++ b/packages/libssh/fix-paths.patch @@ -0,0 +1,63 @@ +diff -uNr libssh-0.8.6/examples/ssh_server_fork.c libssh-0.8.6.mod/examples/ssh_server_fork.c +--- libssh-0.8.6/examples/ssh_server_fork.c 2018-12-24 09:35:54.000000000 +0200 ++++ libssh-0.8.6.mod/examples/ssh_server_fork.c 2019-03-02 13:54:01.710902660 +0200 +@@ -308,7 +308,7 @@ + if (login_tty(cdata->pty_slave) != 0) { + exit(1); + } +- execl("/bin/sh", "sh", mode, command, NULL); ++ execl("@TERMUX_PREFIX@/bin/sh", "sh", mode, command, NULL); + exit(0); + default: + close(cdata->pty_slave); +@@ -347,7 +347,7 @@ + close(out[1]); + close(err[1]); + /* exec the requested command. */ +- execl("/bin/sh", "sh", "-c", command, NULL); ++ execl("@TERMUX_PREFIX@/bin/sh", "sh", "-c", command, NULL); + exit(0); + } + +diff -uNr libssh-0.8.6/src/options.c libssh-0.8.6.mod/src/options.c +--- libssh-0.8.6/src/options.c 2018-12-24 09:35:55.000000000 +0200 ++++ libssh-0.8.6.mod/src/options.c 2019-03-02 13:55:07.926515301 +0200 +@@ -622,7 +622,7 @@ + SAFE_FREE(session->opts.global_knownhosts); + if (v == NULL) { + session->opts.global_knownhosts = +- strdup("/etc/ssh/ssh_known_hosts"); ++ strdup("@TERMUX_PREFIX@/etc/ssh/ssh_known_hosts"); + if (session->opts.global_knownhosts == NULL) { + ssh_set_error_oom(session); + return -1; +@@ -1327,7 +1327,7 @@ + goto out; + } + if (filename == NULL) { +- r = ssh_config_parse_file(session, "/etc/ssh/ssh_config"); ++ r = ssh_config_parse_file(session, "@TERMUX_PREFIX@/etc/ssh/ssh_config"); + } + + out: +@@ -1366,7 +1366,7 @@ + session->opts.knownhosts = tmp; + + if (session->opts.global_knownhosts == NULL) { +- tmp = strdup("/etc/ssh/ssh_known_hosts"); ++ tmp = strdup("@TERMUX_PREFIX@/etc/ssh/ssh_known_hosts"); + } else { + tmp = ssh_path_expand_escape(session, session->opts.global_knownhosts); + } +diff -uNr libssh-0.8.6/src/socket.c libssh-0.8.6.mod/src/socket.c +--- libssh-0.8.6/src/socket.c 2018-12-10 15:05:43.000000000 +0200 ++++ libssh-0.8.6.mod/src/socket.c 2019-03-02 13:54:24.269341523 +0200 +@@ -805,7 +805,7 @@ + * @param out output file descriptor + */ + void ssh_execute_command(const char *command, socket_t in, socket_t out){ +- const char *args[]={"/bin/sh","-c",command,NULL}; ++ const char *args[]={"@TERMUX_PREFIX@/bin/sh","-c",command,NULL}; + /* redirect in and out to stdin, stdout and stderr */ + dup2(in, 0); + dup2(out,1); diff --git a/packages/libssh/fix-ssh_config-path.patch b/packages/libssh/fix-ssh_config-path.patch deleted file mode 100644 index e5292e966..000000000 --- a/packages/libssh/fix-ssh_config-path.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uNr libssh-0.7.5/src/options.c libssh-0.7.5.mod/src/options.c ---- libssh-0.7.5/src/options.c 2017-04-13 17:33:04.000000000 +0300 -+++ libssh-0.7.5.mod/src/options.c 2017-09-12 11:16:10.212992453 +0300 -@@ -1232,7 +1232,7 @@ - goto out; - } - if (filename == NULL) { -- r = ssh_config_parse_file(session, "/etc/ssh/ssh_config"); -+ r = ssh_config_parse_file(session, "@TERMUX_PREFIX@/etc/ssh/ssh_config"); - } - - out: diff --git a/packages/libtiff/build.sh b/packages/libtiff/build.sh index 3726e30a4..9d35d0ab4 100644 --- a/packages/libtiff/build.sh +++ b/packages/libtiff/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=http://www.simplesystems.org/libtiff/ # Note that http://lib TERMUX_PKG_DESCRIPTION="Support for the Tag Image File Format (TIFF) for storing image data" TERMUX_PKG_LICENSE="BSD" TERMUX_PKG_VERSION=4.0.10 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=2c52d11ccaf767457db0c46795d9c7d1a8d8f76f68b0b800a3dfe45786b996e4 TERMUX_PKG_SRCURL=http://download.osgeo.org/libtiff/tiff-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="libjpeg-turbo, liblzma" diff --git a/packages/libvpx/build.sh b/packages/libvpx/build.sh index 309b58d6c..4a3f4a6d3 100644 --- a/packages/libvpx/build.sh +++ b/packages/libvpx/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.webmproject.org TERMUX_PKG_DESCRIPTION="VP8 & VP9 Codec SDK" TERMUX_PKG_LICENSE="BSD 3-Clause" TERMUX_PKG_VERSION=1.8.0 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=86df18c694e1c06cc8f83d2d816e9270747a0ce6abe316e93a4f4095689373f6 TERMUX_PKG_SRCURL=https://github.com/webmproject/libvpx/archive/v${TERMUX_PKG_VERSION}.tar.gz diff --git a/packages/libx264/build.sh b/packages/libx264/build.sh index ae2d5e92b..d4546b2b3 100644 --- a/packages/libx264/build.sh +++ b/packages/libx264/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://www.videolan.org/developers/x264.html TERMUX_PKG_DESCRIPTION="Library for encoding video streams into the H.264/MPEG-4 AVC format" TERMUX_PKG_LICENSE="GPL-2.0" -TERMUX_PKG_VERSION=20180211 -TERMUX_PKG_SHA256=cc9eaecaa7acc450120330979a53dbf8479c21ce7f4ab1aecc245d42384894bd +TERMUX_PKG_VERSION=20190215 +TERMUX_PKG_SHA256=731c26a106dd97509feaaba2e6b57b27c754031d48186af6e1474cc0e1eee582 TERMUX_PKG_SRCURL=http://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${TERMUX_PKG_VERSION}-2245-stable.tar.bz2 # Avoid linking against ffmpeg libraries to avoid circular dependency: TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" diff --git a/packages/libx265/build.sh b/packages/libx265/build.sh index d395e11d7..868010ad1 100644 --- a/packages/libx265/build.sh +++ b/packages/libx265/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=http://x265.org/ TERMUX_PKG_DESCRIPTION="H.265/HEVC video stream encoder library" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=3.0 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=c5b9fc260cabbc4a81561a448f4ce9cad7218272b4011feabc3a6b751b2f0662 TERMUX_PKG_SRCURL=http://ftp.videolan.org/pub/videolan/x265/x265_${TERMUX_PKG_VERSION}.tar.gz diff --git a/packages/libxapian/build.sh b/packages/libxapian/build.sh index cc89bbf98..c7c684f9d 100644 --- a/packages/libxapian/build.sh +++ b/packages/libxapian/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://xapian.org TERMUX_PKG_DESCRIPTION="Xapian search engine library" TERMUX_PKG_LICENSE="GPL-2.0" -TERMUX_PKG_VERSION=1.4.10 -TERMUX_PKG_SHA256=68669327e08544ac88fe3473745dbcae4e8e98d5060b436c4d566f1f78709bb8 +TERMUX_PKG_VERSION=1.4.11 +TERMUX_PKG_SHA256=9f16b2f3e2351a24034d7636f73566ab74c3f0729e9e0492934e956b25c5bc07 TERMUX_PKG_SRCURL=http://oligarchy.co.uk/xapian/${TERMUX_PKG_VERSION}/xapian-core-${TERMUX_PKG_VERSION}.tar.xz # Note that we cannot /proc/sys/kernel/random/uuid (permission denied on # new android versions) so need libuuid. diff --git a/packages/libzmq/build.sh b/packages/libzmq/build.sh index 7fbf8f7d3..e5cc95bd5 100644 --- a/packages/libzmq/build.sh +++ b/packages/libzmq/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=http://zeromq.org/ TERMUX_PKG_DESCRIPTION="Fast messaging system built on sockets. C and C++ bindings. aka 0MQ, ZMQ." TERMUX_PKG_LICENSE="LGPL-2.0" TERMUX_PKG_VERSION=4.3.1 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=bcbabe1e2c7d0eec4ed612e10b94b112dd5f06fcefa994a0c79a45d835cd21eb TERMUX_PKG_SRCURL=https://github.com/zeromq/libzmq/releases/download/v${TERMUX_PKG_VERSION}/zeromq-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="libsodium" diff --git a/packages/libzopfli/build.sh b/packages/libzopfli/build.sh index f4b586376..4e9cecb1a 100644 --- a/packages/libzopfli/build.sh +++ b/packages/libzopfli/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://github.com/google/zopfli TERMUX_PKG_DESCRIPTION="New zlib compatible compressor library" TERMUX_PKG_LICENSE="Apache-2.0" TERMUX_PKG_VERSION=1.0.2 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=4a570307c37172d894ec4ef93b6e8e3aacc401e78cbcc51cf85b212dbc379a55 TERMUX_PKG_SRCURL=https://github.com/google/zopfli/archive/zopfli-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/lldb/build.sh b/packages/lldb/build.sh index aee810a02..b4d6da6e6 100644 --- a/packages/lldb/build.sh +++ b/packages/lldb/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://lldb.llvm.org TERMUX_PKG_DESCRIPTION="LLVM based debugger" TERMUX_PKG_LICENSE="NCSA" TERMUX_PKG_VERSION=7.0.1 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=76b46be75b412a3d22f0d26279306ae7e274fe4d7988a2184c529c38a6a76982 TERMUX_PKG_SRCURL=https://releases.llvm.org/${TERMUX_PKG_VERSION}/lldb-$TERMUX_PKG_VERSION.src.tar.xz TERMUX_PKG_DEPENDS="libedit, libllvm, libxml2, ncurses-ui-libs" diff --git a/packages/ltrace/build.sh b/packages/ltrace/build.sh index 729c183fe..d563b5be8 100644 --- a/packages/ltrace/build.sh +++ b/packages/ltrace/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=http://www.ltrace.org/ TERMUX_PKG_DESCRIPTION="Tracks runtime library calls in dynamically linked programs" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=0.7.3.20160411 -TERMUX_PKG_REVISION=3 +TERMUX_PKG_REVISION=4 TERMUX_PKG_DEPENDS="libelf" local _COMMIT=2def9f1217374cc8371105993003b2c663aefda7 TERMUX_PKG_SRCURL=https://github.com/dkogan/ltrace/archive/${_COMMIT}.zip diff --git a/packages/lynx/build.sh b/packages/lynx/build.sh index 5bd7f46f5..b4b53d251 100644 --- a/packages/lynx/build.sh +++ b/packages/lynx/build.sh @@ -2,11 +2,11 @@ TERMUX_PKG_HOMEPAGE=http://lynx.browser.org/ TERMUX_PKG_DESCRIPTION="The text web browser" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=2.8.9rel.1 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=387f193d7792f9cfada14c60b0e5c0bff18f227d9257a39483e14fa1aaf79595 TERMUX_PKG_SRCURL=http://invisible-mirror.net/archives/lynx/tarballs/lynx${TERMUX_PKG_VERSION}.tar.bz2 TERMUX_PKG_DEPENDS="ncurses, openssl, libbz2, libidn" -TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--with-screen=ncursesw --enable-widec --enable-scrollbar --enable-nested-tables --enable-htmlized-cfg --with-ssl --with-zlib --with-bzlib --enable-cjk --enable-japanese-utf8 --enable-progressbar --enable-prettysrc --enable-forms-options --enable-8bit-toupper --enable-ascii-ctypes --disable-font-switch" +TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--with-screen=ncursesw --enable-widec --enable-scrollbar --enable-nested-tables --enable-htmlized-cfg --with-ssl --with-zlib --with-bzlib --enable-cjk --enable-japanese-utf8 --enable-progressbar --enable-prettysrc --enable-forms-options --enable-8bit-toupper --enable-ascii-ctypes --disable-font-switch --with-mime-libdir=$TERMUX_PREFIX/etc" ## set default paths for tools that may be used in runtime by 'lynx' binary TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" ac_cv_path_BZIP2=${TERMUX_PREFIX}/bin/bzip2" diff --git a/packages/lynx/fix-paths.patch b/packages/lynx/fix-paths.patch new file mode 100644 index 000000000..b6468c091 --- /dev/null +++ b/packages/lynx/fix-paths.patch @@ -0,0 +1,78 @@ +diff -uNr lynx2.8.9rel.1/src/LYNews.c lynx2.8.9rel.1.mod/src/LYNews.c +--- lynx2.8.9rel.1/src/LYNews.c 2018-03-18 20:51:02.000000000 +0200 ++++ lynx2.8.9rel.1.mod/src/LYNews.c 2019-03-01 22:04:51.671752655 +0200 +@@ -261,7 +261,7 @@ + StrAllocCat(cp, org); + } + #ifdef UNIX +- else if ((fp = fopen("/etc/organization", TXT_R)) != NULL) { ++ else if ((fp = fopen("@TERMUX_PREFIX@/etc/organization", TXT_R)) != NULL) { + char *buffer = 0; + + if (LYSafeGets(&buffer, fp) != NULL) { +diff -uNr lynx2.8.9rel.1/src/LYUtils.c lynx2.8.9rel.1.mod/src/LYUtils.c +--- lynx2.8.9rel.1/src/LYUtils.c 2018-05-16 00:20:52.000000000 +0300 ++++ lynx2.8.9rel.1.mod/src/LYUtils.c 2019-03-01 22:05:42.915339501 +0200 +@@ -165,7 +165,7 @@ + #if defined(__FreeBSD__) || defined(__bsdi__) + #define UTMP_FILE _PATH_UTMP + #else +-#define UTMP_FILE "/etc/utmp" ++#define UTMP_FILE "@TERMUX_PREFIX@/etc/utmp" + #endif /* __FreeBSD__ || __bsdi__ */ + #endif /* !UTMP_FILE */ + +@@ -5185,7 +5185,7 @@ + /* + * Use /tmp; it should be writable. + */ +- StrAllocCopy(HomeDir, "/tmp"); ++ StrAllocCopy(HomeDir, "@TERMUX_PREFIX@/tmp"); + } + #endif + #endif /* VMS */ +diff -uNr lynx2.8.9rel.1/WWW/Library/Implementation/HTFile.c lynx2.8.9rel.1.mod/WWW/Library/Implementation/HTFile.c +--- lynx2.8.9rel.1/WWW/Library/Implementation/HTFile.c 2018-05-12 02:20:35.000000000 +0300 ++++ lynx2.8.9rel.1.mod/WWW/Library/Implementation/HTFile.c 2019-03-01 22:04:51.675086005 +0200 +@@ -145,7 +145,7 @@ + static const char *HTCacheRoot = "/WWW$SCRATCH"; /* Where to cache things */ + + #else +-static const char *HTCacheRoot = "/tmp/W3_Cache_"; /* Where to cache things */ ++static const char *HTCacheRoot = "@TERMUX_PREFIX@/tmp/W3_Cache_"; /* Where to cache things */ + #endif /* VMS */ + + static char s_no_suffix[] = "*"; +@@ -743,7 +743,7 @@ + home = LYGetEnv("HOME"); + #endif + if (home == NULL) +- home = "/tmp"; ++ home = "@TERMUX_PREFIX@/tmp"; + #endif /* VMS */ + HTSprintf0(&result, "%s/WWW/%s/%s%s", home, acc_method, host, path); + } else { +diff -uNr lynx2.8.9rel.1/WWW/Library/Implementation/HTFormat.c lynx2.8.9rel.1.mod/WWW/Library/Implementation/HTFormat.c +--- lynx2.8.9rel.1/WWW/Library/Implementation/HTFormat.c 2018-05-12 01:18:24.000000000 +0300 ++++ lynx2.8.9rel.1.mod/WWW/Library/Implementation/HTFormat.c 2019-03-01 22:04:51.678419355 +0200 +@@ -27,7 +27,7 @@ + #ifdef NeXT + #define PRESENT_POSTSCRIPT "open %s; /bin/rm -f %s\n" + #else +-#define PRESENT_POSTSCRIPT "(ghostview %s ; /bin/rm -f %s)&\n" ++#define PRESENT_POSTSCRIPT "(ghostview %s ; rm -f %s)&\n" + /* Full pathname would be better! */ + #endif /* NeXT */ + #endif /* UNIX */ +diff -uNr lynx2.8.9rel.1/WWW/Library/Implementation/HTNews.c lynx2.8.9rel.1.mod/WWW/Library/Implementation/HTNews.c +--- lynx2.8.9rel.1/WWW/Library/Implementation/HTNews.c 2018-02-26 02:28:40.000000000 +0200 ++++ lynx2.8.9rel.1.mod/WWW/Library/Implementation/HTNews.c 2019-03-01 22:04:51.681752704 +0200 +@@ -36,7 +36,7 @@ + #endif /* DEFAULT_NEWS_HOST */ + + #ifndef NEWS_SERVER_FILE +-#define NEWS_SERVER_FILE "/usr/local/lib/rn/server" ++#define NEWS_SERVER_FILE "@TERMUX_PREFIX@/lib/rn/server" + #endif /* NEWS_SERVER_FILE */ + + #ifndef NEWS_AUTH_FILE diff --git a/packages/lynx/lynx2.8.9dev.19_WWW_Library_Implementation_HTFormat.c.patch b/packages/lynx/lynx2.8.9dev.19_WWW_Library_Implementation_HTFormat.c.patch deleted file mode 100644 index a0ee15fbb..000000000 --- a/packages/lynx/lynx2.8.9dev.19_WWW_Library_Implementation_HTFormat.c.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uNr lynx2.8.9dev.19/WWW/Library/Implementation/HTFormat.c lynx2.8.9dev.19.mod/WWW/Library/Implementation/HTFormat.c ---- lynx2.8.9dev.19/WWW/Library/Implementation/HTFormat.c 2018-05-12 01:18:24.000000000 +0300 -+++ lynx2.8.9dev.19.mod/WWW/Library/Implementation/HTFormat.c 2018-06-19 19:42:26.744841948 +0300 -@@ -27,7 +27,7 @@ - #ifdef NeXT - #define PRESENT_POSTSCRIPT "open %s; /bin/rm -f %s\n" - #else --#define PRESENT_POSTSCRIPT "(ghostview %s ; /bin/rm -f %s)&\n" -+#define PRESENT_POSTSCRIPT "(ghostview %s ; rm -f %s)&\n" - /* Full pathname would be better! */ - #endif /* NeXT */ - #endif /* UNIX */ diff --git a/packages/lynx/lynx2.8.9dev.19_src_LYUtils.c.patch b/packages/lynx/lynx2.8.9dev.19_src_LYUtils.c.patch deleted file mode 100644 index 5c712e64c..000000000 --- a/packages/lynx/lynx2.8.9dev.19_src_LYUtils.c.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uNr lynx2.8.9dev.19/src/LYUtils.c lynx2.8.9dev.19.mod/src/LYUtils.c ---- lynx2.8.9dev.19/src/LYUtils.c 2018-05-16 00:20:52.000000000 +0300 -+++ lynx2.8.9dev.19.mod/src/LYUtils.c 2018-06-19 19:40:07.058168089 +0300 -@@ -5185,7 +5185,7 @@ - /* - * Use /tmp; it should be writable. - */ -- StrAllocCopy(HomeDir, "/tmp"); -+ StrAllocCopy(HomeDir, "@TERMUX_PREFIX@/tmp"); - } - #endif - #endif /* VMS */ diff --git a/packages/lzip/build.sh b/packages/lzip/build.sh index 35b93fb51..3ba7e8b09 100644 --- a/packages/lzip/build.sh +++ b/packages/lzip/build.sh @@ -2,5 +2,6 @@ TERMUX_PKG_HOMEPAGE=https://www.nongnu.org/lzip/ TERMUX_PKG_DESCRIPTION="Lossless data compressor similar to gzip and bzip2" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=1.21 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=68c703c7b5198b3fd7a0c3f20011e9a8c938b8dec14824c4c873922fdb01719f TERMUX_PKG_SRCURL=https://download.savannah.gnu.org/releases/lzip/lzip-${TERMUX_PKG_VERSION}.tar.lz diff --git a/packages/m4/build.sh b/packages/m4/build.sh index c59e623fa..345e60637 100644 --- a/packages/m4/build.sh +++ b/packages/m4/build.sh @@ -2,5 +2,6 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/m4/m4.html TERMUX_PKG_DESCRIPTION="Traditional Unix macro processor" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=1.4.18 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/m4/m4-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_SHA256=f2c1e86ca0a404ff281631bdc8377638992744b175afb806e25871a24a934e07 diff --git a/packages/m4/fix-paths.patch b/packages/m4/fix-paths.patch new file mode 100644 index 000000000..e69db88ff --- /dev/null +++ b/packages/m4/fix-paths.patch @@ -0,0 +1,58 @@ +diff -uNr m4-1.4.18/lib/spawni.c m4-1.4.18.mod/lib/spawni.c +--- m4-1.4.18/lib/spawni.c 2016-12-31 15:54:42.000000000 +0200 ++++ m4-1.4.18.mod/lib/spawni.c 2019-03-01 20:54:18.601984363 +0200 +@@ -32,7 +32,7 @@ + #if _LIBC || HAVE_PATHS_H + # include + #else +-# define _PATH_BSHELL "/bin/sh" ++# define _PATH_BSHELL "@TERMUX_PREFIX@/bin/sh" + #endif + + #include +diff -uNr m4-1.4.18/lib/tempname.c m4-1.4.18.mod/lib/tempname.c +--- m4-1.4.18/lib/tempname.c 2016-12-31 15:54:42.000000000 +0200 ++++ m4-1.4.18.mod/lib/tempname.c 2019-03-01 20:52:48.978132063 +0200 +@@ -32,7 +32,7 @@ + + #include + #ifndef P_tmpdir +-# define P_tmpdir "/tmp" ++# define P_tmpdir "@TERMUX_PREFIX@/tmp" + #endif + #ifndef TMP_MAX + # define TMP_MAX 238328 +@@ -148,8 +148,8 @@ + { + if (direxists (P_tmpdir)) + dir = P_tmpdir; +- else if (strcmp (P_tmpdir, "/tmp") != 0 && direxists ("/tmp")) +- dir = "/tmp"; ++ else if (strcmp (P_tmpdir, "@TERMUX_PREFIX@/tmp") != 0 && direxists ("@TERMUX_PREFIX@/tmp")) ++ dir = "@TERMUX_PREFIX@/tmp"; + else + { + __set_errno (ENOENT); +diff -uNr m4-1.4.18/lib/tmpdir.c m4-1.4.18.mod/lib/tmpdir.c +--- m4-1.4.18/lib/tmpdir.c 2016-12-31 15:54:42.000000000 +0200 ++++ m4-1.4.18.mod/lib/tmpdir.c 2019-03-01 20:53:16.521626327 +0200 +@@ -36,7 +36,7 @@ + # ifdef _P_tmpdir /* native Windows */ + # define P_tmpdir _P_tmpdir + # else +-# define P_tmpdir "/tmp" ++# define P_tmpdir "@TERMUX_PREFIX@/tmp" + # endif + #endif + +@@ -130,8 +130,8 @@ + #endif + if (direxists (P_tmpdir)) + dir = P_tmpdir; +- else if (strcmp (P_tmpdir, "/tmp") != 0 && direxists ("/tmp")) +- dir = "/tmp"; ++ else if (strcmp (P_tmpdir, "@TERMUX_PREFIX@/tmp") != 0 && direxists ("@TERMUX_PREFIX@/tmp")) ++ dir = "@TERMUX_PREFIX@/tmp"; + else + { + __set_errno (ENOENT); diff --git a/packages/mariadb/build.sh b/packages/mariadb/build.sh index 34a5f2048..b7ce7c779 100644 --- a/packages/mariadb/build.sh +++ b/packages/mariadb/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://mariadb.org TERMUX_PKG_DESCRIPTION="A drop-in replacement for mysql server" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=10.3.12 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=f7449a34c25e0455928d7983dae83fd2069fe1f16c4c5f4aeed9ed9d3f081ff6 TERMUX_PKG_SRCURL=https://ftp.osuosl.org/pub/mariadb/mariadb-$TERMUX_PKG_VERSION/source/mariadb-$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" diff --git a/packages/mathomatic/build.sh b/packages/mathomatic/build.sh index afc5e4e5e..83fd7f4ae 100644 --- a/packages/mathomatic/build.sh +++ b/packages/mathomatic/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://en.wikipedia.org/wiki/Mathomatic TERMUX_PKG_DESCRIPTION="Simple CAS and symbolic calculator" TERMUX_PKG_LICENSE="LGPL-2.0" TERMUX_PKG_VERSION=16.0.5 -TERMUX_PKG_REVISION=3 +TERMUX_PKG_REVISION=5 TERMUX_PKG_SRCURL="https://fossies.org/linux/misc/old/mathomatic-${TERMUX_PKG_VERSION}.tar.xz" TERMUX_PKG_SHA256=7f525bdb2e13006549dd8f17906c26f926f5ac51174f02f074107c612491e05c TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/mathomatic/fix-paths.patch b/packages/mathomatic/fix-paths.patch new file mode 100644 index 000000000..21242572d --- /dev/null +++ b/packages/mathomatic/fix-paths.patch @@ -0,0 +1,33 @@ +diff -uNr mathomatic-16.0.5/am.h mathomatic-16.0.5.mod/am.h +--- mathomatic-16.0.5/am.h 2012-08-19 17:42:52.000000000 +0300 ++++ mathomatic-16.0.5.mod/am.h 2019-03-01 20:49:40.456989348 +0200 +@@ -57,7 +57,7 @@ + #define TEXT_ROWS STANDARD_SCREEN_ROWS /* number of lines per page in the symbolic math library */ + #define TEXT_COLUMNS STANDARD_SCREEN_COLUMNS /* default number of columns per page in the symbolic math library */ + +-#define TMP_FILE "/tmp/mathomatic.XXXXXX" /* temporary file template for mkstemp(3) */ ++#define TMP_FILE "@TERMUX_PREFIX@/tmp/mathomatic.XXXXXX" /* temporary file template for mkstemp(3) */ + + #define PROMPT_STR "-> " /* user interface main prompt strings, preceded by the current equation number */ + #define HTML_PROMPT_STR "−> " /* main prompt in HTML output mode, should be same number of columns as above */ +diff -uNr mathomatic-16.0.5/help.c mathomatic-16.0.5.mod/help.c +--- mathomatic-16.0.5/help.c 2012-10-01 13:43:46.000000000 +0300 ++++ mathomatic-16.0.5.mod/help.c 2019-03-01 20:50:09.883839729 +0200 +@@ -612,7 +612,7 @@ + #else + cp1 = getenv("SHELL"); + if (cp1 == NULL) { +- cp1 = "/bin/sh"; ++ cp1 = "@TERMUX_PREFIX@/bin/sh"; + } + #endif + #if 0 +@@ -1157,7 +1157,7 @@ + } + if (cp[0] == '!') { + SP("A command preceded by an exclamation point (such as \"!ls\") is taken to"); +- SP("be a shell command and is passed unchanged to the shell (/bin/sh) when"); ++ SP("be a shell command and is passed unchanged to the shell (@TERMUX_PREFIX@/bin/sh) when"); + SP("Mathomatic is not in secure mode. \"!\" by itself invokes the default shell,"); + EP("which is specified in the SHELL environment variable.\n"); + diff --git a/packages/mathomatic/fix-tmp_file.patch b/packages/mathomatic/fix-tmp_file.patch deleted file mode 100644 index f27d1a152..000000000 --- a/packages/mathomatic/fix-tmp_file.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uNr mathomatic-16.0.5/am.h mathomatic-16.0.5.mod/am.h ---- mathomatic-16.0.5/am.h 2012-08-19 17:42:52.000000000 +0300 -+++ mathomatic-16.0.5.mod/am.h 2017-09-14 14:36:31.112860259 +0300 -@@ -57,7 +57,7 @@ - #define TEXT_ROWS STANDARD_SCREEN_ROWS /* number of lines per page in the symbolic math library */ - #define TEXT_COLUMNS STANDARD_SCREEN_COLUMNS /* default number of columns per page in the symbolic math library */ - --#define TMP_FILE "/tmp/mathomatic.XXXXXX" /* temporary file template for mkstemp(3) */ -+#define TMP_FILE "@TERMUX_PREFIX@/tmp/mathomatic.XXXXXX" /* temporary file template for mkstemp(3) */ - - #define PROMPT_STR "-> " /* user interface main prompt strings, preceded by the current equation number */ - #define HTML_PROMPT_STR "−> " /* main prompt in HTML output mode, should be same number of columns as above */ diff --git a/packages/mosh/build.sh b/packages/mosh/build.sh index fbd3a3b93..3c7cc75c5 100644 --- a/packages/mosh/build.sh +++ b/packages/mosh/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://mosh.org TERMUX_PKG_DESCRIPTION="Mobile shell that supports roaming and intelligent local echo" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=1.3.2 -TERMUX_PKG_REVISION=8 +TERMUX_PKG_REVISION=10 TERMUX_PKG_SHA256=da600573dfa827d88ce114e0fed30210689381bbdcff543c931e4d6a2e851216 TERMUX_PKG_SRCURL=https://github.com/mobile-shell/mosh/releases/download/mosh-${TERMUX_PKG_VERSION}/mosh-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="libandroid-support, libprotobuf, ncurses, openssl, openssh, libutil" diff --git a/packages/mosh/mosh-server.cc.patch b/packages/mosh/mosh-server.cc.patch new file mode 100644 index 000000000..c15a39ee0 --- /dev/null +++ b/packages/mosh/mosh-server.cc.patch @@ -0,0 +1,14 @@ +diff -uNr mosh-1.3.2/src/frontend/mosh-server.cc mosh-1.3.2.mod/src/frontend/mosh-server.cc +--- mosh-1.3.2/src/frontend/mosh-server.cc 2017-07-23 00:14:53.000000000 +0300 ++++ mosh-1.3.2.mod/src/frontend/mosh-server.cc 2019-03-01 22:37:18.009498882 +0200 +@@ -562,8 +562,8 @@ + // this always happens. + // XXX Hackish knowledge of Ubuntu PAM configuration. + // But this seems less awful than build-time detection with autoconf. +- if (!print_motd("/run/motd.dynamic")) { +- print_motd("/var/run/motd.dynamic"); ++ if (!print_motd("@TERMUX_PREFIX@/run/motd.dynamic")) { ++ print_motd("@TERMUX_PREFIX@/var/run/motd.dynamic"); + } + // Always print traditional /etc/motd. + print_motd("/etc/motd"); diff --git a/packages/mpd/build.sh b/packages/mpd/build.sh index 286ed7716..6c3a1200d 100644 --- a/packages/mpd/build.sh +++ b/packages/mpd/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://www.musicpd.org TERMUX_PKG_DESCRIPTION="Music player daemon" TERMUX_PKG_LICENSE="GPL-2.0" -TERMUX_PKG_VERSION=0.21.4 -TERMUX_PKG_SHA256=42e8c4f3a0a0e4632a68a2b72f580620deea539b513ac97ea3e2ed8b17094452 +TERMUX_PKG_VERSION=0.21.5 +TERMUX_PKG_SHA256=90e557c887639425629d20e7404030d4dcea938ec8c2ea648a8d80c6b14b3d30 TERMUX_PKG_SRCURL=https://github.com/MusicPlayerDaemon/MPD/archive/v$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_DEPENDS="libcurl, libid3tag, libopus, libpulseaudio, libmpdclient, openal-soft, libvorbis, libsqlite, ffmpeg, libmp3lame, libbz2, libogg" TERMUX_PKG_BUILD_DEPENDS="boost" diff --git a/packages/nano/build.sh b/packages/nano/build.sh index 0a80d739e..f47a94c6e 100644 --- a/packages/nano/build.sh +++ b/packages/nano/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.nano-editor.org/ TERMUX_PKG_DESCRIPTION="Small, free and friendly text editor" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=3.2 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=3 TERMUX_PKG_SHA256=d12773af3589994b2e4982c5792b07c6240da5b86c5aef2103ab13b401fe6349 TERMUX_PKG_SRCURL=https://nano-editor.org/dist/latest/nano-$TERMUX_PKG_VERSION.tar.xz TERMUX_PKG_DEPENDS="libandroid-support, libandroid-glob, ncurses" diff --git a/packages/nano/src-files.c.patch b/packages/nano/src-files.c.patch new file mode 100644 index 000000000..44b22c006 --- /dev/null +++ b/packages/nano/src-files.c.patch @@ -0,0 +1,12 @@ +diff -uNr nano-3.2/src/files.c nano-3.2.mod/src/files.c +--- nano-3.2/src/files.c 2018-11-05 21:04:46.000000000 +0200 ++++ nano-3.2.mod/src/files.c 2019-03-01 22:09:30.233108029 +0200 +@@ -1439,7 +1439,7 @@ + + /* if P_tmpdir is NULL, use /tmp. */ + if (full_tempdir == NULL) +- full_tempdir = mallocstrcpy(NULL, "/tmp/"); ++ full_tempdir = mallocstrcpy(NULL, "@TERMUX_PREFIX@/tmp/"); + + full_tempdir = charealloc(full_tempdir, strlen(full_tempdir) + 12); + strcat(full_tempdir, "nano.XXXXXX"); diff --git a/packages/ncmpcpp/build.sh b/packages/ncmpcpp/build.sh index bb374aa0e..ac1ed24fd 100644 --- a/packages/ncmpcpp/build.sh +++ b/packages/ncmpcpp/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://rybczak.net/ncmpcpp/ TERMUX_PKG_DESCRIPTION="NCurses Music Player Client (Plus Plus)" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=0.8.2 -TERMUX_PKG_REVISION=5 +TERMUX_PKG_REVISION=6 TERMUX_PKG_SHA256=650ba3e8089624b7ad9e4cc19bc1ac6028edb7523cc111fa1686ea44c0921554 TERMUX_PKG_SRCURL=https://rybczak.net/ncmpcpp/stable/ncmpcpp-${TERMUX_PKG_VERSION}.tar.bz2 TERMUX_PKG_DEPENDS="fftw, boost, readline, libcurl, libmpdclient, ncurses" diff --git a/packages/ncurses/build.sh b/packages/ncurses/build.sh index e1428e0a2..cfc483ddc 100644 --- a/packages/ncurses/build.sh +++ b/packages/ncurses/build.sh @@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="Library for text-based user interfaces in a terminal-ind TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_VERSION=(6.1.20181117 9.22) +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=(b5568d53d31787cda727f949b68bcb60c667dba5deff72bd7ade40dbe45e4b16 e94628e9bcfa0adb1115d83649f898d6edb4baced44f5d5b769c2eeb8b95addd) TERMUX_PKG_SRCURL=(https://dl.bintray.com/termux/upstream/ncurses-${TERMUX_PKG_VERSION:0:3}-${TERMUX_PKG_VERSION:4}.tgz diff --git a/packages/ncurses/fix-paths.patch b/packages/ncurses/fix-paths.patch new file mode 100644 index 000000000..603089d82 --- /dev/null +++ b/packages/ncurses/fix-paths.patch @@ -0,0 +1,35 @@ +diff -uNr ncurses-6.1-20181117/progs/tic.c ncurses-6.1-20181117.mod/progs/tic.c +--- ncurses-6.1-20181117/progs/tic.c 2018-03-18 02:05:10.000000000 +0200 ++++ ncurses-6.1-20181117.mod/progs/tic.c 2019-03-01 20:40:56.193173489 +0200 +@@ -386,7 +386,7 @@ + { + FILE *result = 0; + +- _nc_STRCPY(filename, "/tmp/XXXXXX", PATH_MAX); ++ _nc_STRCPY(filename, "@TERMUX_PREFIX@/tmp/XXXXXX", PATH_MAX); + #if HAVE_MKSTEMP + { + int oldmask = (int) umask(077); +@@ -900,7 +900,7 @@ + } else { + if (infodump == TRUE) { + /* captoinfo's no-argument case */ +- source_file = "/etc/termcap"; ++ source_file = "@TERMUX_PREFIX@/etc/termcap"; + if ((termcap = getenv("TERMCAP")) != 0 + && (namelst = make_namelist(getenv("TERM"))) != 0) { + if (access(termcap, F_OK) == 0) { +diff -uNr ncurses-6.1-20181117/progs/tset.c ncurses-6.1-20181117.mod/progs/tset.c +--- ncurses-6.1-20181117/progs/tset.c 2017-10-08 03:01:29.000000000 +0300 ++++ ncurses-6.1-20181117.mod/progs/tset.c 2019-03-01 20:40:15.049476720 +0200 +@@ -566,8 +566,8 @@ + goto map; + } + #else +- if ((fp = fopen("/etc/ttytype", "r")) != 0 +- || (fp = fopen("/etc/ttys", "r")) != 0) { ++ if ((fp = fopen("@TERMUX_PREFIX@/etc/ttytype", "r")) != 0 ++ || (fp = fopen("@TERMUX_PREFIX@/etc/ttys", "r")) != 0) { + char buffer[BUFSIZ]; + char *s, *t, *d; + diff --git a/packages/ncurses/tic-fix-tmp-path.patch b/packages/ncurses/tic-fix-tmp-path.patch deleted file mode 100644 index 784e5f15c..000000000 --- a/packages/ncurses/tic-fix-tmp-path.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uNr ncurses-6.0-20170909/progs/tic.c ncurses-6.0-20170909.mod/progs/tic.c ---- ncurses-6.0-20170909/progs/tic.c 2017-08-26 23:56:55.000000000 +0300 -+++ ncurses-6.0-20170909.mod/progs/tic.c 2017-09-14 15:45:21.992857305 +0300 -@@ -386,7 +386,7 @@ - { - FILE *result = 0; - -- _nc_STRCPY(filename, "/tmp/XXXXXX", PATH_MAX); -+ _nc_STRCPY(filename, "@TERMUX_PREFIX@/tmp/XXXXXX", PATH_MAX); - #if HAVE_MKSTEMP - { - int oldmask = (int) umask(077); diff --git a/packages/ndk-multilib/build.sh b/packages/ndk-multilib/build.sh index a0ac9dbca..822d75628 100644 --- a/packages/ndk-multilib/build.sh +++ b/packages/ndk-multilib/build.sh @@ -2,7 +2,6 @@ TERMUX_PKG_HOMEPAGE=https://developer.android.com/tools/sdk/ndk/index.html TERMUX_PKG_DESCRIPTION="Multilib binaries for cross-compilation" TERMUX_PKG_LICENSE="NCSA" TERMUX_PKG_VERSION=$TERMUX_NDK_VERSION -TERMUX_PKG_REVISION=3 TERMUX_PKG_NO_DEVELSPLIT=yes TERMUX_PKG_KEEP_STATIC_LIBRARIES="true" TERMUX_PKG_PLATFORM_INDEPENDENT=true diff --git a/packages/ndk-stl/build.sh b/packages/ndk-stl/build.sh deleted file mode 100644 index daa1b0f08..000000000 --- a/packages/ndk-stl/build.sh +++ /dev/null @@ -1,22 +0,0 @@ -TERMUX_PKG_HOMEPAGE=https://developer.android.com/tools/sdk/ndk/index.html -TERMUX_PKG_DESCRIPTION="Header files from the Android NDK needed for compiling C++ programs using STL" -TERMUX_PKG_LICENSE="NCSA" -TERMUX_PKG_VERSION=$TERMUX_NDK_VERSION -TERMUX_PKG_REVISION=4 -TERMUX_PKG_NO_DEVELSPLIT=yes - -termux_step_extract_into_massagedir() { - mkdir -p $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/include/c++/v1/ - cp -Rf $TERMUX_STANDALONE_TOOLCHAIN/include/c++/4.9.x/* $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/include/c++/v1/ - - ( cd $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/include/c++/v1/ && patch -p1 < $TERMUX_PKG_BUILDER_DIR/math-header.diff ) - - # Revert the patch for that's only used for using g++ - # from the ndk (https://github.com/android-ndk/ndk/issues/215): - cd $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/include/c++/v1/ - sed "s%\@TERMUX_HOST_PLATFORM\@%${TERMUX_HOST_PLATFORM}%g" $TERMUX_SCRIPTDIR/ndk-patches/cstddef.cpppatch | patch -p1 -R -} - -termux_step_massage() { - echo "overriding termux_step_massage to avoid removing header files" -} diff --git a/packages/ndk-stl/math-header.diff b/packages/ndk-stl/math-header.diff deleted file mode 100644 index 33618e596..000000000 --- a/packages/ndk-stl/math-header.diff +++ /dev/null @@ -1,24 +0,0 @@ -diff -u -r ../../../../../../../../../massage-pristine/data/data/com.termux/files/usr/include/c++/v1/cmath ./cmath ---- ../../../../../../../../../massage-pristine/data/data/com.termux/files/usr/include/c++/v1/cmath 2018-01-03 00:47:31.973545021 +0100 -+++ ./cmath 2018-01-03 00:48:02.453189261 +0100 -@@ -302,7 +302,7 @@ - */ - - #include <__config> --#include -+#include - - #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) - #pragma GCC system_header -diff -u -r ../../../../../../../../../massage-pristine/data/data/com.termux/files/usr/include/c++/v1/math.h ./math.h ---- ../../../../../../../../../massage-pristine/data/data/com.termux/files/usr/include/c++/v1/math.h 2018-01-03 00:47:31.985544880 +0100 -+++ ./math.h 2018-01-03 00:48:24.732929153 +0100 -@@ -298,7 +298,7 @@ - #pragma GCC system_header - #endif - --#include_next -+#include <../../math.h> - - #ifdef __cplusplus - diff --git a/packages/ndk-sysroot/build.sh b/packages/ndk-sysroot/build.sh index ea588d8c7..6fe3da28d 100644 --- a/packages/ndk-sysroot/build.sh +++ b/packages/ndk-sysroot/build.sh @@ -2,13 +2,13 @@ TERMUX_PKG_HOMEPAGE=https://developer.android.com/tools/sdk/ndk/index.html TERMUX_PKG_DESCRIPTION="System header and library files from the Android NDK needed for compiling C programs" TERMUX_PKG_LICENSE="NCSA" TERMUX_PKG_VERSION=$TERMUX_NDK_VERSION -TERMUX_PKG_REVISION=10 +#TERMUX_PKG_REVISION=10 TERMUX_PKG_NO_DEVELSPLIT=yes TERMUX_PKG_KEEP_STATIC_LIBRARIES="true" # This package has taken over from the previous libutil-dev # and iconv.h from libandroid-support-dev: TERMUX_PKG_CONFLICTS="libutil-dev, libgcc, libandroid-support-dev" -TERMUX_PKG_REPLACES="libutil-dev, libgcc, libandroid-support-dev" +TERMUX_PKG_REPLACES="libutil-dev, libgcc, libandroid-support-dev, ndk-stl" termux_step_extract_into_massagedir() { mkdir -p $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/lib/pkgconfig \ @@ -17,11 +17,7 @@ termux_step_extract_into_massagedir() { cp -Rf $TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/include/* \ $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/include - local _LIBDIR=lib - if [ "$TERMUX_ARCH" = "x86_64" ]; then - _LIBDIR=lib64 - fi - cp $TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/${_LIBDIR}/*.o \ + cp $TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib/$TERMUX_HOST_PLATFORM/$TERMUX_PKG_API_LEVEL/*.o \ $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/lib cp "$PKG_CONFIG_LIBDIR/zlib.pc" \ @@ -35,15 +31,18 @@ termux_step_extract_into_massagedir() { local LIBGCC_PATH=$TERMUX_STANDALONE_TOOLCHAIN/lib/gcc/$TERMUX_HOST_PLATFORM/4.9.x if [ $TERMUX_ARCH = "arm" ]; then LIBGCC_PATH+="/armv7-a"; fi - LIBGCC_PATH+="/libgcc.a" - cp $LIBGCC_PATH $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/lib/ - + cp $LIBGCC_PATH/* -r $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/lib/ + cp $TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib/$TERMUX_HOST_PLATFORM/$TERMUX_PKG_API_LEVEL/libcompiler_rt-extras.a $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/lib/ # librt and libpthread are built into libc on android, so setup them as symlinks # to libc for compatibility with programs that users try to build: local _SYSTEM_LIBDIR=/system/lib64 if [ $TERMUX_ARCH_BITS = 32 ]; then _SYSTEM_LIBDIR=/system/lib; fi mkdir -p $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/lib cd $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/lib + if [ $TERMUX_ARCH = "arm" ]; then + rm thumb -rf + cp $TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib/$TERMUX_HOST_PLATFORM/libunwind.a . + fi ln -f -s $_SYSTEM_LIBDIR/libc.so librt.so ln -f -s $_SYSTEM_LIBDIR/libc.so libpthread.so } diff --git a/packages/neovim/build.sh b/packages/neovim/build.sh index 58a3b1c57..1b7c3d674 100644 --- a/packages/neovim/build.sh +++ b/packages/neovim/build.sh @@ -34,6 +34,10 @@ termux_step_host_build() { rm -Rf build/ } +termux_step_pre_configure() { + TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DLUA_MATH_LIBRARY=$TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib/$TERMUX_HOST_PLATFORM/$TERMUX_PKG_API_LEVEL/libm.so" +} + termux_step_post_make_install() { local _CONFIG_DIR=$TERMUX_PREFIX/share/nvim mkdir -p $_CONFIG_DIR diff --git a/packages/net-tools/arp.c.patch b/packages/net-tools/arp.c.patch new file mode 100644 index 000000000..bcc8b4943 --- /dev/null +++ b/packages/net-tools/arp.c.patch @@ -0,0 +1,21 @@ +diff -uNr net-tools/arp.c net-tools.mod/arp.c +--- net-tools/arp.c 2017-02-21 20:24:32.000000000 +0200 ++++ net-tools.mod/arp.c 2019-03-01 19:05:20.555355036 +0200 +@@ -644,7 +644,7 @@ + fprintf(stderr, _(" -i, --device specify network interface (e.g. eth0)\n")); + fprintf(stderr, _(" -D, --use-device read from given device\n")); + fprintf(stderr, _(" -A, -p, --protocol specify protocol family\n")); +- fprintf(stderr, _(" -f, --file read new entries from file or from /etc/ethers\n\n")); ++ fprintf(stderr, _(" -f, --file read new entries from file or from $PREFIX/etc/ethers\n\n")); + + fprintf(stderr, _(" =Use '-H ' to specify hardware address type. Default: %s\n"), DFLT_HW); + fprintf(stderr, _(" List of possible hardware types (which support ARP):\n")); +@@ -791,7 +791,7 @@ + break; + + case 2: /* process an EtherFile */ +- what = arp_file(argv[optind] ? argv[optind] : "/etc/ethers"); ++ what = arp_file(argv[optind] ? argv[optind] : "@TERMUX_PREFIX@/etc/ethers"); + break; + + case 3: /* delete an ARP entry from the cache */ diff --git a/packages/net-tools/build.sh b/packages/net-tools/build.sh index c575aaf3c..2ffef547e 100644 --- a/packages/net-tools/build.sh +++ b/packages/net-tools/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=http://net-tools.sourceforge.net/ TERMUX_PKG_DESCRIPTION="Configuration tools for Linux networking" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=1.60.2017.02.21 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 local commit=479bb4a7e11a4084e2935c0a576388f92469225b TERMUX_PKG_SHA256=7e9f8e8dcbabed0c8eeb976100496567abae7ac9d92c72cebd1a9d965473e943 # We use a mirror to avoid using diff --git a/packages/net-tools/lib-pathnames.h.patch b/packages/net-tools/lib-pathnames.h.patch new file mode 100644 index 000000000..e8a887128 --- /dev/null +++ b/packages/net-tools/lib-pathnames.h.patch @@ -0,0 +1,12 @@ +diff -uNr net-tools/lib/pathnames.h net-tools.mod/lib/pathnames.h +--- net-tools/lib/pathnames.h 2017-02-21 20:24:32.000000000 +0200 ++++ net-tools.mod/lib/pathnames.h 2019-03-01 19:05:45.935478227 +0200 +@@ -47,7 +47,7 @@ + #define _PATH_PROCNET_IFINET6 "/proc/net/if_inet6" + #define _PATH_PROCNET_DEV "/proc/net/dev" + #define _PATH_PROCNET_RARP "/proc/net/rarp" +-#define _PATH_ETHERS "/etc/ethers" ++#define _PATH_ETHERS "@TERMUX_PREFIX@/etc/ethers" + #define _PATH_PROCNET_ROSE "/proc/net/rose" + #define _PATH_PROCNET_ROSE_NEIGH "/proc/net/rose_neigh" + #define _PATH_PROCNET_ROSE_NODES "/proc/net/rose_nodes" diff --git a/packages/net-tools/nameif.c.patch b/packages/net-tools/nameif.c.patch index 3157bbac1..0c42c1ff3 100644 --- a/packages/net-tools/nameif.c.patch +++ b/packages/net-tools/nameif.c.patch @@ -1,5 +1,6 @@ ---- ./nameif.c 2017-02-21 23:54:32.000000000 +0530 -+++ ../nameif.c 2017-04-09 14:47:40.889765378 +0530 +diff -uNr net-tools/nameif.c net-tools.mod/nameif.c +--- net-tools/nameif.c 2017-02-21 20:24:32.000000000 +0200 ++++ net-tools.mod/nameif.c 2019-03-01 19:02:26.447822359 +0200 @@ -10,7 +10,7 @@ #endif #include @@ -9,3 +10,12 @@ #include #include #include +@@ -25,7 +25,7 @@ + #include "net-support.h" + #include "util.h" + +-const char default_conf[] = "/etc/mactab"; ++const char default_conf[] = "@TERMUX_PREFIX@/etc/mactab"; + const char *fname = default_conf; + int use_syslog; + int ctl_sk = -1; diff --git a/packages/net-tools/rarp.c.patch b/packages/net-tools/rarp.c.patch new file mode 100644 index 000000000..f01592894 --- /dev/null +++ b/packages/net-tools/rarp.c.patch @@ -0,0 +1,12 @@ +diff -uNr net-tools/rarp.c net-tools.mod/rarp.c +--- net-tools/rarp.c 2017-02-21 20:24:32.000000000 +0200 ++++ net-tools.mod/rarp.c 2019-03-01 19:06:09.028923071 +0200 +@@ -178,7 +178,7 @@ + fprintf(stderr, _("Usage: rarp -a list entries in cache.\n")); + fprintf(stderr, _(" rarp -d delete entry from cache.\n")); + fprintf(stderr, _(" rarp [] -s add entry to cache.\n")); +- fprintf(stderr, _(" rarp -f add entries from /etc/ethers.\n")); ++ fprintf(stderr, _(" rarp -f add entries from $PREFIX/etc/ethers.\n")); + fprintf(stderr, _(" rarp -V display program version.\n\n")); + + fprintf(stderr, _(" =Use '-H ' to specify hardware address type. Default: %s\n"), DFLT_HW); diff --git a/packages/net-tools/slattach.c.patch b/packages/net-tools/slattach.c.patch new file mode 100644 index 000000000..2b0078f27 --- /dev/null +++ b/packages/net-tools/slattach.c.patch @@ -0,0 +1,12 @@ +diff -uNr net-tools/slattach.c net-tools.mod/slattach.c +--- net-tools/slattach.c 2017-02-21 20:24:32.000000000 +0200 ++++ net-tools.mod/slattach.c 2019-03-01 21:54:06.558251056 +0200 +@@ -55,7 +55,7 @@ + #include "util.h" + + #ifndef _PATH_LOCKD +-#define _PATH_LOCKD "/var/lock" /* lock files */ ++#define _PATH_LOCKD "@TERMUX_PREFIX@/var/lock" /* lock files */ + #endif + #ifndef _UID_UUCP + #define _UID_UUCP "uucp" /* owns locks */ diff --git a/packages/newsboat/build.sh b/packages/newsboat/build.sh index 0e119e010..bcf8022c5 100644 --- a/packages/newsboat/build.sh +++ b/packages/newsboat/build.sh @@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="RSS/Atom feed reader for the text console" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_API_LEVEL=24 TERMUX_PKG_VERSION=2.14.1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=4bd0d3b1901a3fc7e0ef73b800587c28181a57b175c36b547dbd84636330df66 TERMUX_PKG_SRCURL=https://newsboat.org/releases/${TERMUX_PKG_VERSION}/newsboat-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_DEPENDS="libandroid-support, libandroid-glob, json-c, libsqlite, libcurl, libxml2, stfl, ncurses, openssl" diff --git a/packages/newsboat/fix-paths.patch b/packages/newsboat/fix-paths.patch new file mode 100644 index 000000000..425383d67 --- /dev/null +++ b/packages/newsboat/fix-paths.patch @@ -0,0 +1,60 @@ +diff -uNr newsboat-2.14.1/src/controller.cpp newsboat-2.14.1.mod/src/controller.cpp +--- newsboat-2.14.1/src/controller.cpp 2019-02-10 18:07:09.000000000 +0200 ++++ newsboat-2.14.1.mod/src/controller.cpp 2019-03-01 21:52:00.350784451 +0200 +@@ -768,7 +768,7 @@ + } else { + snprintf(filename, + sizeof(filename), +- "/tmp/newsboat-article.XXXXXX"); ++ "@TERMUX_PREFIX@/tmp/newsboat-article.XXXXXX"); + } + int fd = mkstemp(filename); + if (fd != -1) { +diff -uNr newsboat-2.14.1/src/formaction.cpp newsboat-2.14.1.mod/src/formaction.cpp +--- newsboat-2.14.1/src/formaction.cpp 2019-02-10 18:07:09.000000000 +0200 ++++ newsboat-2.14.1.mod/src/formaction.cpp 2019-03-01 21:51:38.197304516 +0200 +@@ -540,7 +540,7 @@ + return ""; + } else { + char* my_argv[4]; +- my_argv[0] = const_cast("/bin/sh"); ++ my_argv[0] = const_cast("@TERMUX_PREFIX@/bin/sh"); + my_argv[1] = const_cast("-c"); + my_argv[2] = const_cast(cmdline.c_str()); + my_argv[3] = nullptr; +diff -uNr newsboat-2.14.1/src/itemrenderer.cpp newsboat-2.14.1.mod/src/itemrenderer.cpp +--- newsboat-2.14.1/src/itemrenderer.cpp 2019-02-10 18:07:09.000000000 +0200 ++++ newsboat-2.14.1.mod/src/itemrenderer.cpp 2019-03-01 21:51:38.200637872 +0200 +@@ -92,7 +92,7 @@ + rnd.render(source, lines, thelinks, url); + } else { + char* argv[4]; +- argv[0] = const_cast("/bin/sh"); ++ argv[0] = const_cast("@TERMUX_PREFIX@/bin/sh"); + argv[1] = const_cast("-c"); + argv[2] = const_cast(renderer.c_str()); + argv[3] = nullptr; +diff -uNr newsboat-2.14.1/src/pbcontroller.cpp newsboat-2.14.1.mod/src/pbcontroller.cpp +--- newsboat-2.14.1/src/pbcontroller.cpp 2019-02-10 18:07:09.000000000 +0200 ++++ newsboat-2.14.1.mod/src/pbcontroller.cpp 2019-03-01 21:51:38.200637872 +0200 +@@ -281,7 +281,7 @@ + cfgparser.register_handler("reset-unread-on-update", &null_cah); + + try { +- cfgparser.parse("/etc/newsboat/config"); ++ cfgparser.parse("@TERMUX_PREFIX@/etc/newsboat/config"); + cfgparser.parse(config_file); + } catch (const ConfigException& ex) { + std::cout << ex.what() << std::endl; +diff -uNr newsboat-2.14.1/src/rssparser.cpp newsboat-2.14.1.mod/src/rssparser.cpp +--- newsboat-2.14.1/src/rssparser.cpp 2019-02-10 18:07:09.000000000 +0200 ++++ newsboat-2.14.1.mod/src/rssparser.cpp 2019-03-01 21:51:38.203971227 +0200 +@@ -291,7 +291,7 @@ + { + std::string buf = utils::retrieve_url(uri, cfgcont); + +- char* argv[4] = {const_cast("/bin/sh"), ++ char* argv[4] = {const_cast("@TERMUX_PREFIX@/bin/sh"), + const_cast("-c"), + const_cast(filter.c_str()), + nullptr}; diff --git a/packages/nginx/build.sh b/packages/nginx/build.sh index 011752483..245120ed7 100644 --- a/packages/nginx/build.sh +++ b/packages/nginx/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://www.nginx.org TERMUX_PKG_DESCRIPTION="Lightweight HTTP server" TERMUX_PKG_LICENSE="BSD 2-Clause" -TERMUX_PKG_VERSION=1.15.8 -TERMUX_PKG_SHA256=a8bdafbca87eb99813ae4fcac1ad0875bf725ce19eb265d28268c309b2b40787 +TERMUX_PKG_VERSION=1.15.9 +TERMUX_PKG_SHA256=e4cfba989bba614cd53f3f406ac6da9f05977d6b1296e5d20a299f10c2d7ae43 TERMUX_PKG_SRCURL=http://nginx.org/download/nginx-$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_BUILD_IN_SRC=true TERMUX_PKG_DEPENDS="libandroid-glob, libcrypt, pcre, openssl" diff --git a/packages/ninja/build.sh b/packages/ninja/build.sh index e19dc7a83..cd69e7921 100644 --- a/packages/ninja/build.sh +++ b/packages/ninja/build.sh @@ -1,9 +1,9 @@ TERMUX_PKG_HOMEPAGE=https://ninja-build.org TERMUX_PKG_DESCRIPTION="A small build system with a focus on speed" TERMUX_PKG_LICENSE="Apache-2.0" -TERMUX_PKG_VERSION=1.8.2 +TERMUX_PKG_VERSION=1.9.0 TERMUX_PKG_REVISION=1 -TERMUX_PKG_SHA256=86b8700c3d0880c2b44c2ff67ce42774aaf8c28cbf57725cb881569288c1c6f4 +TERMUX_PKG_SHA256=5d7ec75828f8d3fd1a0c2f31b5b0cea780cdfe1031359228c428c1a48bfcd5b9 TERMUX_PKG_SRCURL=https://github.com/ninja-build/ninja/archive/v${TERMUX_PKG_VERSION}.tar.gz termux_step_configure() { diff --git a/packages/ninja/configure.py.patch b/packages/ninja/configure.py.patch index 559681e45..7892c38fa 100644 --- a/packages/ninja/configure.py.patch +++ b/packages/ninja/configure.py.patch @@ -6,7 +6,7 @@ index a443748..697a110 100755 objs += cxx('minidump-win32') objs += cc('getopt') else: -+ objs += cc('posix_spawn') ++ objs += cxx('spawn') objs += cxx('subprocess-posix') if platform.is_aix(): objs += cc('getopt') diff --git a/packages/ninja/src-posix_spawn.c.patch b/packages/ninja/src-posix_spawn.c.patch deleted file mode 100644 index aa0ad9935..000000000 --- a/packages/ninja/src-posix_spawn.c.patch +++ /dev/null @@ -1,162 +0,0 @@ -diff --git a/src/posix_spawn.c b/src/posix_spawn.c -new file mode 100644 -index 0000000..18ceb06 ---- /dev/null -+++ b/src/posix_spawn.c -@@ -0,0 +1,156 @@ -+/* -+ * dhcpcd - DHCP client daemon -+ * Copyright (c) 2006-2012 Roy Marples -+ * All rights reserved -+ -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ */ -+ -+/* This implementation of posix_spawn is only suitable for the needs of dhcpcd -+ * but it could easily be extended to other applications. */ -+ -+#include -+#include -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include "posix_spawn.h" -+ -+#ifndef _NSIG -+#ifdef _SIG_MAXSIG -+#define _NSIG _SIG_MAXSIG + 1 -+#else -+/* Guess */ -+#define _NSIG SIGPWR + 1 -+#endif -+#endif -+ -+extern char **environ; -+ -+static int -+posix_spawnattr_handle(const posix_spawnattr_t *attrp) -+{ -+ struct sigaction sa; -+ int i; -+ -+ if (attrp->posix_attr_flags & POSIX_SPAWN_SETSIGMASK) -+ sigprocmask(SIG_SETMASK, &attrp->posix_attr_sigmask, NULL); -+ -+ if (attrp->posix_attr_flags & POSIX_SPAWN_SETSIGDEF) { -+ memset(&sa, 0, sizeof(sa)); -+ sa.sa_handler = SIG_DFL; -+ for (i = 1; i < _NSIG; i++) { -+ if (sigismember(&attrp->posix_attr_sigdefault, i)) { -+ if (sigaction(i, &sa, NULL) == -1) -+ return -1; -+ } -+ } -+ } -+ -+ return 0; -+} -+ -+inline static int -+is_vfork_safe(short int flags) -+{ -+ return !(flags & (POSIX_SPAWN_SETSIGDEF | POSIX_SPAWN_SETSIGMASK)); -+} -+ -+int -+posix_spawn(pid_t *pid, const char *path, -+ const posix_spawn_file_actions_t *file_actions, -+ const posix_spawnattr_t *attrp, -+ char *const argv[], char *const envp[]) -+{ -+ short int flags; -+ pid_t p; -+ volatile int error; -+ -+ error = 0; -+ flags = attrp ? attrp->posix_attr_flags : 0; -+ if (file_actions == NULL && is_vfork_safe(flags)) -+ p = vfork(); -+ else -+#ifdef THERE_IS_NO_FORK -+ return ENOSYS; -+#else -+ p = fork(); -+#endif -+ switch (p) { -+ case -1: -+ return errno; -+ case 0: -+ if (attrp) { -+ error = posix_spawnattr_handle(attrp); -+ if (error) -+ _exit(127); -+ } -+ execve(path, argv, envp); -+ error = errno; -+ _exit(127); -+ default: -+ if (error != 0) -+ waitpid(p, NULL, WNOHANG); -+ else if (pid != NULL) -+ *pid = p; -+ return error; -+ } -+} -+ -+int -+posix_spawnattr_init(posix_spawnattr_t *attr) -+{ -+ -+ memset(attr, 0, sizeof(*attr)); -+ attr->posix_attr_flags = 0; -+ sigprocmask(0, NULL, &attr->posix_attr_sigmask); -+ sigemptyset(&attr->posix_attr_sigdefault); -+ return 0; -+} -+ -+int -+posix_spawnattr_setflags(posix_spawnattr_t *attr, short flags) -+{ -+ -+ attr->posix_attr_flags = flags; -+ return 0; -+} -+ -+int -+posix_spawnattr_setsigmask(posix_spawnattr_t *attr, const sigset_t *sigmask) -+{ -+ -+ attr->posix_attr_sigmask = *sigmask; -+ return 0; -+} -+ -+int -+posix_spawnattr_setsigdefault(posix_spawnattr_t *attr, const sigset_t *sigmask) -+{ -+ -+ attr->posix_attr_sigdefault = *sigmask; -+ return 0; -+} diff --git a/packages/ninja/src-posix_spawn.h.patch b/packages/ninja/src-posix_spawn.h.patch deleted file mode 100644 index 1b7b81689..000000000 --- a/packages/ninja/src-posix_spawn.h.patch +++ /dev/null @@ -1,59 +0,0 @@ -diff --git a/src/posix_spawn.h b/src/posix_spawn.h -new file mode 100644 -index 0000000..ccfb0f0 ---- /dev/null -+++ b/src/posix_spawn.h -@@ -0,0 +1,53 @@ -+/* -+ * dhcpcd - DHCP client daemon -+ * Copyright (c) 2006-2012 Roy Marples -+ * All rights reserved -+ -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ */ -+ -+#ifndef POSIX_SPAWN_H -+#define POSIX_SPAWN_H -+ -+#include -+ -+typedef struct { -+ short posix_attr_flags; -+#define POSIX_SPAWN_SETSIGDEF 0x10 -+#define POSIX_SPAWN_SETSIGMASK 0x20 -+ sigset_t posix_attr_sigmask; -+ sigset_t posix_attr_sigdefault; -+} posix_spawnattr_t; -+ -+typedef struct { -+// int unused; -+} posix_spawn_file_actions_t; -+ -+int posix_spawn(pid_t *, const char *, -+ const posix_spawn_file_actions_t *, const posix_spawnattr_t *, -+ char *const [], char *const []); -+int posix_spawnattr_init(posix_spawnattr_t *); -+int posix_spawnattr_setflags(posix_spawnattr_t *, short); -+int posix_spawnattr_setsigmask(posix_spawnattr_t *, const sigset_t *); -+int posix_spawnattr_setsigdefault(posix_spawnattr_t *, const sigset_t *); -+ -+#endif diff --git a/packages/ninja/src-spawn.cc.patch b/packages/ninja/src-spawn.cc.patch new file mode 100644 index 000000000..abc853b26 --- /dev/null +++ b/packages/ninja/src-spawn.cc.patch @@ -0,0 +1,387 @@ +diff --git a/src/spawn.cc b/src/spawn.cc +new file mode 100644 +index 0000000..1eed715 +--- /dev/null ++++ b/src/spawn.cc +@@ -0,0 +1,381 @@ ++/* ++ * Copyright (C) 2017 The Android Open Source Project ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS ++ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ++ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, ++ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS ++ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED ++ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ++ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ++ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++#include "spawn.h" ++ ++// Bionic "private/ScopedSignalBlocker.h" + one macro needed ++#define BIONIC_DISALLOW_COPY_AND_ASSIGN(TypeName) \ ++ TypeName(const TypeName&) = delete; \ ++ void operator=(const TypeName&) = delete ++ ++class ScopedSignalBlocker { ++ public: ++ // Block all signals. ++ explicit ScopedSignalBlocker() { ++ sigset_t set; ++ sigfillset(&set); ++ sigprocmask(SIG_BLOCK, &set, &old_set_); ++ } ++ ++ // Block just the specified signal. ++ explicit ScopedSignalBlocker(int signal) { ++ sigset_t set = {}; ++ sigaddset(&set, signal); ++ sigprocmask(SIG_BLOCK, &set, &old_set_); ++ } ++ ++ ~ScopedSignalBlocker() { ++ reset(); ++ } ++ ++ void reset() { ++ sigprocmask(SIG_SETMASK, &old_set_, nullptr); ++ } ++ ++ sigset_t old_set_; ++ ++ BIONIC_DISALLOW_COPY_AND_ASSIGN(ScopedSignalBlocker); ++}; ++ ++// Bionic "private/SigSetConverter.h" ++union SigSetConverter { ++ int bsd; ++ sigset_t sigset; ++ sigset64_t sigset64; ++}; ++ ++enum Action { ++ kOpen, ++ kClose, ++ kDup2 ++}; ++ ++struct __posix_spawn_file_action { ++ __posix_spawn_file_action* next; ++ ++ Action what; ++ int fd; ++ int new_fd; ++ char* path; ++ int flags; ++ mode_t mode; ++ ++ void Do() { ++ if (what == kOpen) { ++ fd = open(path, flags, mode); ++ if (fd == -1) _exit(127); ++ // If it didn't land where we wanted it, move it. ++ if (fd != new_fd) { ++ if (dup2(fd, new_fd) == -1) _exit(127); ++ close(fd); ++ } ++ } else if (what == kClose) { ++ // Failure to close is ignored. ++ close(fd); ++ } else { ++ if (dup2(fd, new_fd) == -1) _exit(127); ++ } ++ } ++}; ++ ++struct __posix_spawn_file_actions { ++ __posix_spawn_file_action* head; ++ __posix_spawn_file_action* last; ++ ++ void Do() { ++ for (__posix_spawn_file_action* action = head; action != nullptr; action = action->next) { ++ action->Do(); ++ } ++ } ++}; ++ ++struct __posix_spawnattr { ++ short flags; ++ pid_t pgroup; ++ sched_param schedparam; ++ int schedpolicy; ++ SigSetConverter sigmask; ++ SigSetConverter sigdefault; ++}; ++ ++static void ApplyAttrs(short flags, const posix_spawnattr_t* attr) { ++ // POSIX: "If POSIX_SPAWN_SETSIGDEF is set ... signals in sigdefault ... ++ // shall be set to their default actions in the child process." ++ // POSIX: "Signals set to be caught by the calling process shall be ++ // set to the default action in the child process." ++ bool use_sigdefault = ((flags & POSIX_SPAWN_SETSIGDEF) != 0); ++ const struct sigaction default_sa = { .sa_handler = SIG_DFL }; ++ for (int s = 1; s < _NSIG; ++s) { ++ bool reset = false; ++ if (use_sigdefault && sigismember(&(*attr)->sigdefault.sigset, s)) { ++ reset = true; ++ } else { ++ struct sigaction current; ++ if (sigaction(s, nullptr, ¤t) == -1) _exit(127); ++ reset = (current.sa_handler != SIG_IGN && current.sa_handler != SIG_DFL); ++ } ++ if (reset && sigaction(s, &default_sa, nullptr) == -1) _exit(127); ++ } ++ ++ if ((flags & POSIX_SPAWN_SETPGROUP) != 0 && setpgid(0, (*attr)->pgroup) == -1) _exit(127); ++ if ((flags & POSIX_SPAWN_SETSID) != 0 && setsid() == -1) _exit(127); ++ ++ // POSIX_SPAWN_SETSCHEDULER overrides POSIX_SPAWN_SETSCHEDPARAM, but it is not an error ++ // to set both. ++ if ((flags & POSIX_SPAWN_SETSCHEDULER) != 0) { ++ if (sched_setscheduler(0, (*attr)->schedpolicy, &(*attr)->schedparam) == -1) _exit(127); ++ } else if ((flags & POSIX_SPAWN_SETSCHEDPARAM) != 0) { ++ if (sched_setparam(0, &(*attr)->schedparam) == -1) _exit(127); ++ } ++ ++ if ((flags & POSIX_SPAWN_RESETIDS) != 0) { ++ if (seteuid(getuid()) == -1 || setegid(getgid()) == -1) _exit(127); ++ } ++ ++ if ((flags & POSIX_SPAWN_SETSIGMASK) != 0) { ++ if (sigprocmask(SIG_SETMASK, &(*attr)->sigmask.sigset, nullptr)) _exit(127); ++ } ++} ++ ++static int posix_spawn(pid_t* pid_ptr, ++ const char* path, ++ const posix_spawn_file_actions_t* actions, ++ const posix_spawnattr_t* attr, ++ char* const argv[], ++ char* const env[], ++ int exec_fn(const char* path, char* const argv[], char* const env[])) { ++ // See http://man7.org/linux/man-pages/man3/posix_spawn.3.html ++ // and http://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn.html ++ ++ ScopedSignalBlocker ssb; ++ ++ short flags = attr ? (*attr)->flags : 0; ++ bool use_vfork = ((flags & POSIX_SPAWN_USEVFORK) != 0) || (actions == nullptr && flags == 0); ++ ++ pid_t pid = use_vfork ? vfork() : fork(); ++ if (pid == -1) return errno; ++ ++ if (pid == 0) { ++ // Child. ++ ApplyAttrs(flags, attr); ++ if (actions) (*actions)->Do(); ++ if ((flags & POSIX_SPAWN_SETSIGMASK) == 0) ssb.reset(); ++ exec_fn(path, argv, env ? env : environ); ++ _exit(127); ++ } ++ ++ // Parent. ++ if (pid_ptr) *pid_ptr = pid; ++ return 0; ++} ++ ++int posix_spawn(pid_t* pid, const char* path, const posix_spawn_file_actions_t* actions, ++ const posix_spawnattr_t* attr, char* const argv[], char* const env[]) { ++ return posix_spawn(pid, path, actions, attr, argv, env, execve); ++} ++ ++int posix_spawnp(pid_t* pid, const char* file, const posix_spawn_file_actions_t* actions, ++ const posix_spawnattr_t* attr, char* const argv[], char* const env[]) { ++ return posix_spawn(pid, file, actions, attr, argv, env, execvpe); ++} ++ ++int posix_spawnattr_init(posix_spawnattr_t* attr) { ++ *attr = reinterpret_cast<__posix_spawnattr*>(calloc(1, sizeof(__posix_spawnattr))); ++ return (*attr == nullptr) ? errno : 0; ++} ++ ++int posix_spawnattr_destroy(posix_spawnattr_t* attr) { ++ free(*attr); ++ *attr = nullptr; ++ return 0; ++} ++ ++int posix_spawnattr_setflags(posix_spawnattr_t* attr, short flags) { ++ if ((flags & ~(POSIX_SPAWN_RESETIDS | POSIX_SPAWN_SETPGROUP | POSIX_SPAWN_SETSIGDEF | ++ POSIX_SPAWN_SETSIGMASK | POSIX_SPAWN_SETSCHEDPARAM | POSIX_SPAWN_SETSCHEDULER | ++ POSIX_SPAWN_USEVFORK | POSIX_SPAWN_SETSID)) != 0) { ++ return EINVAL; ++ } ++ (*attr)->flags = flags; ++ return 0; ++} ++ ++int posix_spawnattr_getflags(const posix_spawnattr_t* attr, short* flags) { ++ *flags = (*attr)->flags; ++ return 0; ++} ++ ++int posix_spawnattr_setpgroup(posix_spawnattr_t* attr, pid_t pgroup) { ++ (*attr)->pgroup = pgroup; ++ return 0; ++} ++ ++int posix_spawnattr_getpgroup(const posix_spawnattr_t* attr, pid_t* pgroup) { ++ *pgroup = (*attr)->pgroup; ++ return 0; ++} ++ ++int posix_spawnattr_setsigmask(posix_spawnattr_t* attr, const sigset_t* mask) { ++ (*attr)->sigmask.sigset = *mask; ++ return 0; ++} ++ ++int posix_spawnattr_setsigmask64(posix_spawnattr_t* attr, const sigset64_t* mask) { ++ (*attr)->sigmask.sigset64 = *mask; ++ return 0; ++} ++ ++int posix_spawnattr_getsigmask(const posix_spawnattr_t* attr, sigset_t* mask) { ++ *mask = (*attr)->sigmask.sigset; ++ return 0; ++} ++ ++int posix_spawnattr_getsigmask64(const posix_spawnattr_t* attr, sigset64_t* mask) { ++ *mask = (*attr)->sigmask.sigset64; ++ return 0; ++} ++ ++int posix_spawnattr_setsigdefault(posix_spawnattr_t* attr, const sigset_t* mask) { ++ (*attr)->sigdefault.sigset = *mask; ++ return 0; ++} ++ ++int posix_spawnattr_setsigdefault64(posix_spawnattr_t* attr, const sigset64_t* mask) { ++ (*attr)->sigdefault.sigset64 = *mask; ++ return 0; ++} ++ ++int posix_spawnattr_getsigdefault(const posix_spawnattr_t* attr, sigset_t* mask) { ++ *mask = (*attr)->sigdefault.sigset; ++ return 0; ++} ++ ++int posix_spawnattr_getsigdefault64(const posix_spawnattr_t* attr, sigset64_t* mask) { ++ *mask = (*attr)->sigdefault.sigset64; ++ return 0; ++} ++ ++int posix_spawnattr_setschedparam(posix_spawnattr_t* attr, const struct sched_param* param) { ++ (*attr)->schedparam = *param; ++ return 0; ++} ++ ++int posix_spawnattr_getschedparam(const posix_spawnattr_t* attr, struct sched_param* param) { ++ *param = (*attr)->schedparam; ++ return 0; ++} ++ ++int posix_spawnattr_setschedpolicy(posix_spawnattr_t* attr, int policy) { ++ (*attr)->schedpolicy = policy; ++ return 0; ++} ++ ++int posix_spawnattr_getschedpolicy(const posix_spawnattr_t* attr, int* policy) { ++ *policy = (*attr)->schedpolicy; ++ return 0; ++} ++ ++int posix_spawn_file_actions_init(posix_spawn_file_actions_t* actions) { ++ *actions = reinterpret_cast<__posix_spawn_file_actions*>(calloc(1, sizeof(**actions))); ++ return (*actions == nullptr) ? errno : 0; ++} ++ ++int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t* actions) { ++ __posix_spawn_file_action* a = (*actions)->head; ++ while (a) { ++ __posix_spawn_file_action* last = a; ++ a = a->next; ++ free(last->path); ++ free(last); ++ } ++ free(*actions); ++ *actions = nullptr; ++ return 0; ++} ++ ++static int posix_spawn_add_file_action(posix_spawn_file_actions_t* actions, ++ Action what, ++ int fd, ++ int new_fd, ++ const char* path, ++ int flags, ++ mode_t mode) { ++ __posix_spawn_file_action* action = ++ reinterpret_cast<__posix_spawn_file_action*>(malloc(sizeof(*action))); ++ if (action == nullptr) return errno; ++ ++ action->next = nullptr; ++ if (path != nullptr) { ++ action->path = strdup(path); ++ if (action->path == nullptr) { ++ free(action); ++ return errno; ++ } ++ } else { ++ action->path = nullptr; ++ } ++ action->what = what; ++ action->fd = fd; ++ action->new_fd = new_fd; ++ action->flags = flags; ++ action->mode = mode; ++ ++ if ((*actions)->head == nullptr) { ++ (*actions)->head = (*actions)->last = action; ++ } else { ++ (*actions)->last->next = action; ++ (*actions)->last = action; ++ } ++ ++ return 0; ++} ++ ++int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t* actions, ++ int fd, const char* path, int flags, mode_t mode) { ++ if (fd < 0) return EBADF; ++ return posix_spawn_add_file_action(actions, kOpen, -1, fd, path, flags, mode); ++} ++ ++int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t* actions, int fd) { ++ if (fd < 0) return EBADF; ++ return posix_spawn_add_file_action(actions, kClose, fd, -1, nullptr, 0, 0); ++} ++ ++int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t* actions, int fd, int new_fd) { ++ if (fd < 0 || new_fd < 0) return EBADF; ++ return posix_spawn_add_file_action(actions, kDup2, fd, new_fd, nullptr, 0, 0); ++} diff --git a/packages/ninja/src-spawn.h.patch b/packages/ninja/src-spawn.h.patch new file mode 100644 index 000000000..b6880958d --- /dev/null +++ b/packages/ninja/src-spawn.h.patch @@ -0,0 +1,96 @@ +diff --git a/src/spawn.h b/src/spawn.h +new file mode 100644 +index 0000000..2e239bf +--- /dev/null ++++ b/src/spawn.h +@@ -0,0 +1,90 @@ ++/* ++ * Copyright (C) 2017 The Android Open Source Project ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS ++ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ++ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, ++ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS ++ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED ++ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ++ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ++ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ */ ++ ++#ifndef _SPAWN_H_ ++#define _SPAWN_H_ ++ ++#include ++#include ++#include ++#include ++ ++__BEGIN_DECLS ++ ++#define POSIX_SPAWN_RESETIDS 1 ++#define POSIX_SPAWN_SETPGROUP 2 ++#define POSIX_SPAWN_SETSIGDEF 4 ++#define POSIX_SPAWN_SETSIGMASK 8 ++#define POSIX_SPAWN_SETSCHEDPARAM 16 ++#define POSIX_SPAWN_SETSCHEDULER 32 ++#if defined(__USE_GNU) ++#define POSIX_SPAWN_USEVFORK 64 ++#define POSIX_SPAWN_SETSID 128 ++#endif ++ ++typedef struct __posix_spawnattr* posix_spawnattr_t; ++typedef struct __posix_spawn_file_actions* posix_spawn_file_actions_t; ++ ++int posix_spawn(pid_t* __pid, const char* __path, const posix_spawn_file_actions_t* __actions, const posix_spawnattr_t* __attr, char* const __argv[], char* const __env[]) __INTRODUCED_IN(28); ++int posix_spawnp(pid_t* __pid, const char* __file, const posix_spawn_file_actions_t* __actions, const posix_spawnattr_t* __attr, char* const __argv[], char* const __env[]) __INTRODUCED_IN(28); ++ ++int posix_spawnattr_init(posix_spawnattr_t* __attr) __INTRODUCED_IN(28); ++int posix_spawnattr_destroy(posix_spawnattr_t* __attr) __INTRODUCED_IN(28); ++ ++int posix_spawnattr_setflags(posix_spawnattr_t* __attr, short __flags) __INTRODUCED_IN(28); ++int posix_spawnattr_getflags(const posix_spawnattr_t* __attr, short* __flags) __INTRODUCED_IN(28); ++ ++int posix_spawnattr_setpgroup(posix_spawnattr_t* __attr, pid_t __pgroup) __INTRODUCED_IN(28); ++int posix_spawnattr_getpgroup(const posix_spawnattr_t* __attr, pid_t* __pgroup) __INTRODUCED_IN(28); ++ ++int posix_spawnattr_setsigmask(posix_spawnattr_t* __attr, const sigset_t* __mask) __INTRODUCED_IN(28); ++int posix_spawnattr_setsigmask64(posix_spawnattr_t* __attr, const sigset64_t* __mask) __INTRODUCED_IN(28); ++int posix_spawnattr_getsigmask(const posix_spawnattr_t* __attr, sigset_t* __mask) __INTRODUCED_IN(28); ++int posix_spawnattr_getsigmask64(const posix_spawnattr_t* __attr, sigset64_t* __mask) __INTRODUCED_IN(28); ++ ++int posix_spawnattr_setsigdefault(posix_spawnattr_t* __attr, const sigset_t* __mask) __INTRODUCED_IN(28); ++int posix_spawnattr_setsigdefault64(posix_spawnattr_t* __attr, const sigset64_t* __mask) __INTRODUCED_IN(28); ++int posix_spawnattr_getsigdefault(const posix_spawnattr_t* __attr, sigset_t* __mask) __INTRODUCED_IN(28); ++int posix_spawnattr_getsigdefault64(const posix_spawnattr_t* __attr, sigset64_t* __mask) __INTRODUCED_IN(28); ++ ++int posix_spawnattr_setschedparam(posix_spawnattr_t* __attr, const struct sched_param* __param) __INTRODUCED_IN(28); ++int posix_spawnattr_getschedparam(const posix_spawnattr_t* __attr, struct sched_param* __param) __INTRODUCED_IN(28); ++ ++int posix_spawnattr_setschedpolicy(posix_spawnattr_t* __attr, int __policy) __INTRODUCED_IN(28); ++int posix_spawnattr_getschedpolicy(const posix_spawnattr_t* __attr, int* __policy) __INTRODUCED_IN(28); ++ ++int posix_spawn_file_actions_init(posix_spawn_file_actions_t* __actions) __INTRODUCED_IN(28); ++int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t* __actions) __INTRODUCED_IN(28); ++ ++int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t* __actions, int __fd, const char* __path, int __flags, mode_t __mode) __INTRODUCED_IN(28); ++int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t* __actions, int __fd) __INTRODUCED_IN(28); ++int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t* __actions, int __fd, int __new_fd) __INTRODUCED_IN(28); ++ ++__END_DECLS ++ ++#endif diff --git a/packages/ninja/src-subprocess-posix.cc.patch b/packages/ninja/src-subprocess-posix.cc.patch index 1a9b21612..820029c67 100644 --- a/packages/ninja/src-subprocess-posix.cc.patch +++ b/packages/ninja/src-subprocess-posix.cc.patch @@ -10,59 +10,18 @@ index 1de22c3..f988297 100644 extern char** environ; -+#include "posix_spawn.h" ++#include "spawn.h" #include "util.h" Subprocess::Subprocess(bool use_console) : fd_(-1), pid_(-1), -@@ -54,11 +54,11 @@ bool Subprocess::Start(SubprocessSet* set, const string& command) { - SetCloseOnExec(fd_); - - posix_spawn_file_actions_t action; -- if (posix_spawn_file_actions_init(&action) != 0) -+ /*if (posix_spawn_file_actions_init(&action) != 0) - Fatal("posix_spawn_file_actions_init: %s", strerror(errno)); - - if (posix_spawn_file_actions_addclose(&action, output_pipe[0]) != 0) -- Fatal("posix_spawn_file_actions_addclose: %s", strerror(errno)); -+ Fatal("posix_spawn_file_actions_addclose: %s", strerror(errno));*/ - - posix_spawnattr_t attr; - if (posix_spawnattr_init(&attr) != 0) -@@ -73,7 +73,7 @@ bool Subprocess::Start(SubprocessSet* set, const string& command) { - // default action in the new process image, so no explicit - // POSIX_SPAWN_SETSIGDEF parameter is needed. - -- if (!use_console_) { -+ /*if (!use_console_) { - // Put the child in its own process group, so ctrl-c won't reach it. - flags |= POSIX_SPAWN_SETPGROUP; - // No need to posix_spawnattr_setpgroup(&attr, 0), it's the default. -@@ -92,7 +92,7 @@ bool Subprocess::Start(SubprocessSet* set, const string& command) { - Fatal("posix_spawn_file_actions_addclose: %s", strerror(errno)); - // In the console case, output_pipe is still inherited by the child and - // closed when the subprocess finishes, which then notifies ninja. -- } -+ }*/ - #ifdef POSIX_SPAWN_USEVFORK - flags |= POSIX_SPAWN_USEVFORK; - #endif -@@ -100,15 +100,15 @@ bool Subprocess::Start(SubprocessSet* set, const string& command) { - if (posix_spawnattr_setflags(&attr, flags) != 0) - Fatal("posix_spawnattr_setflags: %s", strerror(errno)); +@@ -110,8 +110,8 @@ bool Subprocess::Start(SubprocessSet* set, const string& command) { + if (err != 0) + Fatal("posix_spawnattr_setflags: %s", strerror(err)); - const char* spawned_args[] = { "/bin/sh", "-c", command.c_str(), NULL }; -- if (posix_spawn(&pid_, "/bin/sh", &action, &attr, -+ const char* spawned_args[] = { "/system/bin/sh", "-c", command.c_str(), NULL }; -+ if (posix_spawn(&pid_, "/system/bin/sh", &action, &attr, - const_cast(spawned_args), environ) != 0) - Fatal("posix_spawn: %s", strerror(errno)); - -- if (posix_spawnattr_destroy(&attr) != 0) -+ /*if (posix_spawnattr_destroy(&attr) != 0) - Fatal("posix_spawnattr_destroy: %s", strerror(errno)); - if (posix_spawn_file_actions_destroy(&action) != 0) -- Fatal("posix_spawn_file_actions_destroy: %s", strerror(errno)); -+ Fatal("posix_spawn_file_actions_destroy: %s", strerror(errno));*/ - - close(output_pipe[1]); - return true; +- err = posix_spawn(&pid_, "/bin/sh", &action, &attr, ++ const char* spawned_args[] = { "@TERMUX_PREFIX@/bin/sh", "-c", command.c_str(), NULL }; ++ err = posix_spawn(&pid_, "@TERMUX_PREFIX@/bin/sh", &action, &attr, + const_cast(spawned_args), environ); + if (err != 0) + Fatal("posix_spawn: %s", strerror(err)); diff --git a/packages/nmap/build.sh b/packages/nmap/build.sh index 0d04fb86f..df71a28d4 100644 --- a/packages/nmap/build.sh +++ b/packages/nmap/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://nmap.org/ TERMUX_PKG_DESCRIPTION="Utility for network discovery and security auditing" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=7.70 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=4 TERMUX_PKG_SHA256=847b068955f792f4cc247593aca6dc3dc4aae12976169873247488de147a6e18 TERMUX_PKG_SRCURL=https://nmap.org/dist/nmap-${TERMUX_PKG_VERSION}.tar.bz2 # Depend on netcat so that it gets installed automatically when installing diff --git a/packages/nmap/fix-paths.patch b/packages/nmap/fix-paths.patch new file mode 100644 index 000000000..feb5de783 --- /dev/null +++ b/packages/nmap/fix-paths.patch @@ -0,0 +1,90 @@ +diff -uNr nmap-7.70/ncat/ncat_connect.c nmap-7.70.mod/ncat/ncat_connect.c +--- nmap-7.70/ncat/ncat_connect.c 2018-01-28 23:18:17.000000000 +0200 ++++ nmap-7.70.mod/ncat/ncat_connect.c 2019-03-02 01:35:44.977992954 +0200 +@@ -1005,7 +1005,7 @@ + char *tmpdir = getenv("TMPDIR"); + size_t size=0, offset=0; + strbuf_sprintf(&tmp_name, &size, &offset, "%s/ncat.XXXXXX", +- tmpdir ? tmpdir : "/tmp"); ++ tmpdir ? tmpdir : "@TERMUX_PREFIX@/tmp"); + if (mkstemp(tmp_name) == -1) { + bye("Failed to create name for temporary DGRAM source Unix domain socket (mkstemp)."); + } +diff -uNr nmap-7.70/ncat/ncat_main.c nmap-7.70.mod/ncat/ncat_main.c +--- nmap-7.70/ncat/ncat_main.c 2018-03-05 03:53:34.000000000 +0200 ++++ nmap-7.70.mod/ncat/ncat_main.c 2019-03-02 01:35:44.977992954 +0200 +@@ -999,8 +999,8 @@ + + #ifndef WIN32 + /* See if the shell is executable before we get deep into this */ +- if (o.execmode == EXEC_SHELL && access("/bin/sh", X_OK) == -1) +- bye("/bin/sh is not executable, so `-c' won't work."); ++ if (o.execmode == EXEC_SHELL && access("@TERMUX_PREFIX@/bin/sh", X_OK) == -1) ++ bye("@TERMUX_PREFIX@/bin/sh is not executable, so `-c' won't work."); + #endif + + if (targetaddrs->addr.storage.ss_family != AF_UNSPEC) { +diff -uNr nmap-7.70/ncat/ncat_posix.c nmap-7.70.mod/ncat/ncat_posix.c +--- nmap-7.70/ncat/ncat_posix.c 2018-01-28 23:18:17.000000000 +0200 ++++ nmap-7.70.mod/ncat/ncat_posix.c 2019-03-02 01:35:44.981326300 +0200 +@@ -239,7 +239,7 @@ + char **cmdargs; + + case EXEC_SHELL: +- execl("/bin/sh", "sh", "-c", cmdexec, (void *) NULL); ++ execl("@TERMUX_PREFIX@/bin/sh", "sh", "-c", cmdexec, (void *) NULL); + break; + #ifdef HAVE_LUA + case EXEC_LUA: +diff -uNr nmap-7.70/nmap_dns.cc nmap-7.70.mod/nmap_dns.cc +--- nmap-7.70/nmap_dns.cc 2018-01-28 23:18:17.000000000 +0200 ++++ nmap-7.70.mod/nmap_dns.cc 2019-03-02 01:35:44.981326300 +0200 +@@ -1016,9 +1016,9 @@ + char fmt[32]; + char ipaddr[INET6_ADDRSTRLEN+1]; + +- fp = fopen("/etc/resolv.conf", "r"); ++ fp = fopen("@TERMUX_PREFIX@/etc/resolv.conf", "r"); + if (fp == NULL) { +- if (firstrun) error("mass_dns: warning: Unable to open /etc/resolv.conf. Try using --system-dns or specify valid servers with --dns-servers"); ++ if (firstrun) error("mass_dns: warning: Unable to open $PREFIX/etc/resolv.conf. Try using --system-dns or specify valid servers with --dns-servers"); + return; + } + +@@ -1099,7 +1099,7 @@ + parse_etchosts(tpbuf); + + #else +- parse_etchosts("/etc/hosts"); ++ parse_etchosts("@TERMUX_PREFIX@/etc/hosts"); + #endif // WIN32 + } + +diff -uNr nmap-7.70/protocols.cc nmap-7.70.mod/protocols.cc +--- nmap-7.70/protocols.cc 2018-01-28 23:18:17.000000000 +0200 ++++ nmap-7.70.mod/protocols.cc 2019-03-02 01:37:23.878379187 +0200 +@@ -156,8 +156,8 @@ + int res; + + if (nmap_fetchfile(filename, sizeof(filename), "nmap-protocols") != 1) { +- error("Unable to find nmap-protocols! Resorting to /etc/protocols"); +- strcpy(filename, "/etc/protocols"); ++ error("Unable to find nmap-protocols! Resorting to @TERMUX_PREFIX@/etc/protocols"); ++ strcpy(filename, "@TERMUX_PREFIX@/etc/protocols"); + } + + fp = fopen(filename, "r"); +diff -uNr nmap-7.70/services.cc nmap-7.70.mod/services.cc +--- nmap-7.70/services.cc 2018-01-28 23:18:17.000000000 +0200 ++++ nmap-7.70.mod/services.cc 2019-03-02 01:36:46.291565552 +0200 +@@ -202,8 +202,8 @@ + + if (nmap_fetchfile(filename, sizeof(filename), "nmap-services") != 1) { + #ifndef WIN32 +- error("Unable to find nmap-services! Resorting to /etc/services"); +- strcpy(filename, "/etc/services"); ++ error("Unable to find nmap-services! Resorting to @TERMUX_PREFIX@/etc/services"); ++ strcpy(filename, "@TERMUX_PREFIX@/etc/services"); + #else + int len, wnt = GetVersion() < 0x80000000; + error("Unable to find nmap-services! Resorting to /etc/services"); diff --git a/packages/nmap/ncat-bin-sh-path.patch b/packages/nmap/ncat-bin-sh-path.patch deleted file mode 100644 index b6b6b36d0..000000000 --- a/packages/nmap/ncat-bin-sh-path.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff -u -r ../nmap-7.40/ncat/ncat_main.c ./ncat/ncat_main.c ---- ../nmap-7.40/ncat/ncat_main.c 2016-12-14 01:12:23.000000000 +0100 -+++ ./ncat/ncat_main.c 2017-02-17 11:46:27.468844181 +0100 -@@ -965,8 +965,8 @@ - - #ifndef WIN32 - /* See if the shell is executable before we get deep into this */ -- if (o.execmode == EXEC_SHELL && access("/bin/sh", X_OK) == -1) -- bye("/bin/sh is not executable, so `-c' won't work."); -+ if (o.execmode == EXEC_SHELL && access("@TERMUX_PREFIX@/bin/sh", X_OK) == -1) -+ bye("@TERMUX_PREFIX@/bin/sh is not executable, so `-c' won't work."); - #endif - - if (targetss.storage.ss_family != AF_UNSPEC) { -diff -u -r ../nmap-7.40/ncat/ncat_posix.c ./ncat/ncat_posix.c ---- ../nmap-7.40/ncat/ncat_posix.c 2016-12-14 01:12:23.000000000 +0100 -+++ ./ncat/ncat_posix.c 2017-02-17 11:47:09.716313620 +0100 -@@ -239,7 +239,7 @@ - char **cmdargs; - - case EXEC_SHELL: -- execl("/bin/sh", "sh", "-c", cmdexec, (void *) NULL); -+ execl("@TERMUX_PREFIX@/bin/sh", "sh", "-c", cmdexec, (void *) NULL); - break; - #ifdef HAVE_LUA - case EXEC_LUA: diff --git a/packages/nmap/nmap_dns.cc.patch b/packages/nmap/nmap_dns.cc.patch deleted file mode 100644 index 13cc3a553..000000000 --- a/packages/nmap/nmap_dns.cc.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -u -r ../nmap-7.01/nmap_dns.cc ./nmap_dns.cc ---- ../nmap-7.01/nmap_dns.cc 2015-10-07 13:49:24.000000000 -0400 -+++ ./nmap_dns.cc 2015-12-15 18:49:27.994641597 -0500 -@@ -959,9 +959,9 @@ - char fmt[32]; - char ipaddr[INET6_ADDRSTRLEN+1]; - -- fp = fopen("/etc/resolv.conf", "r"); -+ fp = fopen("@TERMUX_PREFIX@/etc/resolv.conf", "r"); - if (fp == NULL) { -- if (firstrun) error("mass_dns: warning: Unable to open /etc/resolv.conf. Try using --system-dns or specify valid servers with --dns-servers"); -+ if (firstrun) error("mass_dns: warning: Unable to open $PREFIX/etc/resolv.conf. Try using --system-dns or specify valid servers with --dns-servers"); - return; - } - diff --git a/packages/nnn/build.sh b/packages/nnn/build.sh index 76efbf3c7..a2682e01b 100644 --- a/packages/nnn/build.sh +++ b/packages/nnn/build.sh @@ -1,8 +1,9 @@ TERMUX_PKG_HOMEPAGE=https://github.com/jarun/nnn TERMUX_PKG_DESCRIPTION="Free, fast, friendly file browser" TERMUX_PKG_LICENSE="BSD 2-Clause" -TERMUX_PKG_VERSION=2.2 -TERMUX_PKG_SHA256=88dd08d624ae7a61ef749b1e258e4b29ed61ba9fcc5a18813f291ce80efc5e74 +TERMUX_PKG_VERSION=2.3 +TERMUX_PKG_REVISION=1 +TERMUX_PKG_SHA256=eaad2ccf0d781aeeb38fdfc4ad75a0405ca3da4f82ded64cce766a74a2b299ab TERMUX_PKG_SRCURL=https://github.com/jarun/nnn/archive/v${TERMUX_PKG_VERSION}.tar.gz -TERMUX_PKG_DEPENDS="file, findutils, ncurses" +TERMUX_PKG_DEPENDS="file, findutils, readline" TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/nodejs-lts/build.sh b/packages/nodejs-lts/build.sh index 1d303d21f..32ee4c9b6 100644 --- a/packages/nodejs-lts/build.sh +++ b/packages/nodejs-lts/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://nodejs.org/ TERMUX_PKG_DESCRIPTION="Platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications" TERMUX_PKG_LICENSE="MIT" -TERMUX_PKG_VERSION=10.15.1 -TERMUX_PKG_SHA256=1a55f7b9fb80442182d9e1eba4fca4dac3c781cdcb25d6be37b24d253f61c858 +TERMUX_PKG_VERSION=10.15.2 +TERMUX_PKG_SHA256=b8bb2da7cb016e895bc2f70009a420f6b8d519e66548624b6130bbfbd5118c59 TERMUX_PKG_SRCURL=https://nodejs.org/dist/v${TERMUX_PKG_VERSION}/node-v${TERMUX_PKG_VERSION}.tar.xz # Note that we do not use a shared libuv to avoid an issue with the Android # linker, which does not use symbols of linked shared libraries when resolving diff --git a/packages/nodejs/build.sh b/packages/nodejs/build.sh index e1d063150..fba953ff6 100644 --- a/packages/nodejs/build.sh +++ b/packages/nodejs/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://nodejs.org/ TERMUX_PKG_DESCRIPTION="Platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications" TERMUX_PKG_LICENSE="MIT" -TERMUX_PKG_VERSION=11.10.0 -TERMUX_PKG_SHA256=9fc2ac66ae4608c4c4bd6accc3f0af58ec52dd45fe35c9c0b4059e377119d1cf +TERMUX_PKG_VERSION=11.10.1 +TERMUX_PKG_SHA256=c9ed8de288a76b7a2c7f89ec52b10a6c741ed88d16499033ab5ec88351836006 TERMUX_PKG_SRCURL=https://nodejs.org/dist/v${TERMUX_PKG_VERSION}/node-v${TERMUX_PKG_VERSION}.tar.xz # Note that we do not use a shared libuv to avoid an issue with the Android # linker, which does not use symbols of linked shared libraries when resolving diff --git a/packages/notmuch/build.sh b/packages/notmuch/build.sh index 9d095a657..d9a16da5e 100644 --- a/packages/notmuch/build.sh +++ b/packages/notmuch/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://notmuchmail.org TERMUX_PKG_DESCRIPTION="Thread-based email index, search and tagging system" TERMUX_PKG_LICENSE="GPL-3.0" -TERMUX_PKG_VERSION=0.28.1 -TERMUX_PKG_SHA256=d111e938137d5a465afc2b133d14df1fa356537d9ce752c919fe5673f3749a55 +TERMUX_PKG_VERSION=0.28.2 +TERMUX_PKG_SHA256=85a6498033451e188bcebbb3a4841e77c8d07b7fb1db89f17a74d6038f73e931 TERMUX_PKG_SRCURL=https://notmuchmail.org/releases/notmuch-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_BUILD_IN_SRC=yes TERMUX_PKG_DEPENDS="glib, libgmime, libtalloc, libxapian" diff --git a/packages/openal-soft/alcConfig.c.patch b/packages/openal-soft/alcConfig.c.patch new file mode 100644 index 000000000..aa7bfa112 --- /dev/null +++ b/packages/openal-soft/alcConfig.c.patch @@ -0,0 +1,21 @@ +diff -uNr openal-soft-1.18.2/Alc/alcConfig.c openal-soft-1.18.2.mod/Alc/alcConfig.c +--- openal-soft-1.18.2/Alc/alcConfig.c 2017-09-24 16:41:50.000000000 +0300 ++++ openal-soft-1.18.2.mod/Alc/alcConfig.c 2019-03-02 02:17:37.066950410 +0200 +@@ -424,7 +424,7 @@ + al_string ppath; + FILE *f; + +- str = "/etc/openal/alsoft.conf"; ++ str = "@TERMUX_PREFIX@/etc/openal/alsoft.conf"; + + TRACE("Loading config %s...\n", str); + f = al_fopen(str, "r"); +@@ -435,7 +435,7 @@ + } + + if(!(str=getenv("XDG_CONFIG_DIRS")) || str[0] == 0) +- str = "/etc/xdg"; ++ str = "@TERMUX_PREFIX@/etc/xdg"; + strncpy(buffer, str, sizeof(buffer)-1); + buffer[sizeof(buffer)-1] = 0; + /* Go through the list in reverse, since "the order of base directories diff --git a/packages/openal-soft/build.sh b/packages/openal-soft/build.sh index b6a6094b9..bf8eba1af 100644 --- a/packages/openal-soft/build.sh +++ b/packages/openal-soft/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=http://openal-soft.org/ TERMUX_PKG_DESCRIPTION="Software implementation of the OpenAL API" TERMUX_PKG_LICENSE="LGPL-2.0" TERMUX_PKG_VERSION=1.18.2 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=9f8ac1e27fba15a59758a13f0c7f6540a0605b6c3a691def9d420570506d7e82 TERMUX_PKG_SRCURL=http://openal-soft.org/openal-releases/openal-soft-$TERMUX_PKG_VERSION.tar.bz2 TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" diff --git a/packages/openssh/build.sh b/packages/openssh/build.sh index d9358b38c..6c113966c 100644 --- a/packages/openssh/build.sh +++ b/packages/openssh/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.openssh.com/ TERMUX_PKG_DESCRIPTION="Secure shell for logging into a remote machine" TERMUX_PKG_LICENSE="BSD" TERMUX_PKG_VERSION=7.9p1 -TERMUX_PKG_REVISION=4 +TERMUX_PKG_REVISION=5 TERMUX_PKG_SHA256=6b4b3ba2253d84ed3771c8050728d597c91cfce898713beb7b64a305b6f11aad TERMUX_PKG_SRCURL=https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="libandroid-support, ldns, openssl, libedit, libutil, termux-auth, krb5" diff --git a/packages/openssh/session.c.patch b/packages/openssh/session.c.patch index 2f559197a..aaa006fda 100644 --- a/packages/openssh/session.c.patch +++ b/packages/openssh/session.c.patch @@ -1,17 +1,25 @@ -diff --git a/session.c.orig b/session.c -index 58826db..890e452 100644 ---- a/session.c.orig -+++ b/session.c -@@ -199,7 +199,7 @@ auth_input_request_forwarding(struct ssh *ssh, struct passwd * pw) +diff -uNr openssh-7.9p1/session.c openssh-7.9p1.mod/session.c +--- openssh-7.9p1/session.c 2018-10-17 03:01:20.000000000 +0300 ++++ openssh-7.9p1.mod/session.c 2019-03-01 23:13:36.360949253 +0200 +@@ -200,7 +200,7 @@ temporarily_use_uid(pw); - + /* Allocate a buffer for the socket name, and format the name. */ - auth_sock_dir = xstrdup("/tmp/ssh-XXXXXXXXXX"); + auth_sock_dir = xstrdup("@TERMUX_PREFIX@/tmp/ssh-XXXXXXXXXX"); - + /* Create private directory for socket */ if (mkdtemp(auth_sock_dir) == NULL) { -@@ -802,7 +802,7 @@ do_motd(void) +@@ -268,7 +268,7 @@ + return; + + temporarily_use_uid(pw); +- auth_info_file = xstrdup("/tmp/sshauth.XXXXXXXXXXXXXXX"); ++ auth_info_file = xstrdup("@TERMUX_PREFIX@/tmp/sshauth.XXXXXXXXXXXXXXX"); + if ((fd = mkstemp(auth_info_file)) == -1) { + error("%s: mkstemp: %s", __func__, strerror(errno)); + goto out; +@@ -833,7 +833,7 @@ f = fopen(login_getcapstr(lc, "welcome", "/etc/motd", "/etc/motd"), "r"); #else @@ -20,21 +28,21 @@ index 58826db..890e452 100644 #endif if (f) { while (fgets(buf, sizeof(buf), f)) -@@ -1044,8 +1044,10 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell) +@@ -1082,8 +1082,10 @@ # endif /* HAVE_CYGWIN */ #endif /* HAVE_LOGIN_CAP */ - + +#ifdef _PATH_MAILDIR snprintf(buf, sizeof buf, "%.200s/%.50s", _PATH_MAILDIR, pw->pw_name); child_set_env(&env, &envsize, "MAIL", buf); +#endif - + /* Normal systems set SHELL by default. */ child_set_env(&env, &envsize, "SHELL", shell); -@@ -1053,6 +1055,15 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell) - if (getenv("TZ")) - child_set_env(&env, &envsize, "TZ", getenv("TZ")); - +@@ -1127,6 +1129,15 @@ + auth_sock_name); + + +#ifdef __ANDROID__ + char const* envs_to_keep[] = {"LD_LIBRARY_PATH", "PATH", "ANDROID_ROOT", "ANDROID_DATA", "EXTERNAL_STORAGE", "LANG", "PREFIX", "TMPDIR"}; + for (i = 0; i < (sizeof(envs_to_keep) / sizeof(envs_to_keep[0])); i++) { diff --git a/packages/openssl/apps-ocsp.c.patch b/packages/openssl/apps-ocsp.c.patch index 67830f394..cdad42a89 100644 --- a/packages/openssl/apps-ocsp.c.patch +++ b/packages/openssl/apps-ocsp.c.patch @@ -1,12 +1,11 @@ -diff -u -r ../openssl-1.1.1-pre8/apps/ocsp.c ./apps/ocsp.c ---- ../openssl-1.1.1-pre8/apps/ocsp.c 2018-06-20 14:48:09.000000000 +0000 -+++ ./apps/ocsp.c 2018-08-17 21:17:37.915758081 +0000 -@@ -37,7 +37,7 @@ - # include +diff -u -r ../openssl-1.1.1b/apps/ocsp.c ./apps/ocsp.c +--- ../openssl-1.1.1b/apps/ocsp.c 2019-02-26 14:15:30.000000000 +0000 ++++ ./apps/ocsp.c 2019-03-01 20:32:41.429610048 +0000 +@@ -51,6 +51,7 @@ + #endif - # if defined(OPENSSL_SYS_UNIX) && !defined(OPENSSL_NO_SOCK) \ -- && !defined(OPENSSL_NO_POSIX_IO) -+ && !defined(OPENSSL_NO_POSIX_IO) && !defined(__ANDROID__) + # if !defined(NO_FORK) && !defined(OPENSSL_NO_SOCK) \ ++ && !defined(__ANDROID__) \ + && !defined(OPENSSL_NO_POSIX_IO) # define OCSP_DAEMON # include - # include diff --git a/packages/openssl/build.sh b/packages/openssl/build.sh index d3bce04d2..f0d149f8f 100644 --- a/packages/openssl/build.sh +++ b/packages/openssl/build.sh @@ -2,9 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://www.openssl.org/ TERMUX_PKG_DESCRIPTION="Library implementing the SSL and TLS protocols as well as general purpose cryptography functions" TERMUX_PKG_LICENSE="BSD" TERMUX_PKG_DEPENDS="ca-certificates" -TERMUX_PKG_VERSION=1.1.1a -TERMUX_PKG_SHA256=fc20130f8b7cbd2fb918b2f14e2f429e109c31ddd0fb38fc5d71d9ffed3f9f41 +TERMUX_PKG_VERSION=1.1.1b +TERMUX_PKG_SHA256=5c557b023230413dfb0756f3137a13e6d726838ccd1430888ad15bfb2b43ea4b TERMUX_PKG_SRCURL=https://www.openssl.org/source/openssl-${TERMUX_PKG_VERSION/\~/-}.tar.gz +TERMUX_PKG_CONFFILES="etc/tls/openssl.cnf" TERMUX_PKG_RM_AFTER_INSTALL="bin/c_rehash etc/ssl/misc" TERMUX_PKG_BUILD_IN_SRC=yes TERMUX_PKG_CONFLICTS="libcurl (<< 7.61.0-1)" diff --git a/packages/openssl/openssl-tool.subpackage.sh b/packages/openssl/openssl-tool.subpackage.sh index 257ffd176..62ede318f 100644 --- a/packages/openssl/openssl-tool.subpackage.sh +++ b/packages/openssl/openssl-tool.subpackage.sh @@ -1,4 +1,3 @@ -TERMUX_SUBPKG_INCLUDE="bin etc/tls/openssl.cnf" +TERMUX_SUBPKG_INCLUDE="bin" TERMUX_SUBPKG_DESCRIPTION="The openssl command line cryptographic tool" TERMUX_SUBPKG_DEPENDS="openssl" -TERMUX_SUBPKG_CONFFILES="etc/tls/openssl.cnf" diff --git a/packages/opusfile/build.sh b/packages/opusfile/build.sh index 107830d85..66b89b953 100644 --- a/packages/opusfile/build.sh +++ b/packages/opusfile/build.sh @@ -2,7 +2,9 @@ TERMUX_PKG_HOMEPAGE=https://www.opus-codec.org/ TERMUX_PKG_DESCRIPTION="A high-level API for decoding and seeking within .opus files" TERMUX_PKG_LICENSE="BSD 3-Clause" TERMUX_PKG_VERSION=0.11 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=74ce9b6cf4da103133e7b5c95df810ceb7195471e1162ed57af415fabf5603bf TERMUX_PKG_SRCURL=https://downloads.xiph.org/releases/opus/opusfile-$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_BUILD_IN_SRC=yes TERMUX_PKG_DEPENDS="libopus, libogg" +TERMUX_PKG_DEVPACKAGE_DEPENDS="libopus-dev, libogg-dev" diff --git a/packages/p7zip/build.sh b/packages/p7zip/build.sh index 5aef266f0..d08881877 100644 --- a/packages/p7zip/build.sh +++ b/packages/p7zip/build.sh @@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="Command-line version of the 7zip compressed file archive TERMUX_PKG_LICENSE="LGPL-2.0" TERMUX_PKG_MAINTAINER="Francisco Demartino @franciscod" TERMUX_PKG_VERSION=16.02 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=5eb20ac0e2944f6cb9c2d51dd6c4518941c185347d4089ea89087ffdd6e2341f TERMUX_PKG_SRCURL=https://downloads.sourceforge.net/project/p7zip/p7zip/${TERMUX_PKG_VERSION}/p7zip_${TERMUX_PKG_VERSION}_src_all.tar.bz2 TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/parted/build.sh b/packages/parted/build.sh index 5b5570a19..f5a2e2b0e 100644 --- a/packages/parted/build.sh +++ b/packages/parted/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/parted/ TERMUX_PKG_DESCRIPTION="Versatile partition editor" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=3.2 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/parted/parted-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_SHA256=858b589c22297cacdf437f3baff6f04b333087521ab274f7ab677cb8c6bb78e4 TERMUX_PKG_DEPENDS="libuuid, readline" diff --git a/packages/patch/build.sh b/packages/patch/build.sh index 251433299..88cada16d 100644 --- a/packages/patch/build.sh +++ b/packages/patch/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://savannah.gnu.org/projects/patch/ TERMUX_PKG_DESCRIPTION="GNU patch which applies diff files to create patched files" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=2.7.6 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/patch/patch-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_SHA256=ac610bda97abe0d9f6b7c963255a11dcb196c25e337c61f94e4778d632f1d8fd +TERMUX_PKG_EXTRA_CONFIGURE_ARGS="ac_cv_path_ED=$TERMUX_PREFIX/bin/ed" diff --git a/packages/patch/tmpdir-path.patch b/packages/patch/tmpdir-path.patch new file mode 100644 index 000000000..28db55589 --- /dev/null +++ b/packages/patch/tmpdir-path.patch @@ -0,0 +1,35 @@ +diff -uNr patch-2.7.6/lib/tempname.c patch-2.7.6.mod/lib/tempname.c +--- patch-2.7.6/lib/tempname.c 2018-02-03 14:41:53.000000000 +0200 ++++ patch-2.7.6.mod/lib/tempname.c 2019-03-01 18:34:47.353225515 +0200 +@@ -32,7 +32,7 @@ + + #include + #ifndef P_tmpdir +-# define P_tmpdir "/tmp" ++# define P_tmpdir "@TERMUX_PREFIX@/tmp" + #endif + #ifndef TMP_MAX + # define TMP_MAX 238328 +@@ -147,8 +147,8 @@ + { + if (direxists (P_tmpdir)) + dir = P_tmpdir; +- else if (strcmp (P_tmpdir, "/tmp") != 0 && direxists ("/tmp")) +- dir = "/tmp"; ++ else if (strcmp (P_tmpdir, "@TERMUX_PREFIX@/tmp") != 0 && direxists ("@TERMUX_PREFIX@/tmp")) ++ dir = "@TERMUX_PREFIX@/tmp"; + else + { + __set_errno (ENOENT); +diff -uNr patch-2.7.6/src/util.c patch-2.7.6.mod/src/util.c +--- patch-2.7.6/src/util.c 2018-02-03 14:41:49.000000000 +0200 ++++ patch-2.7.6.mod/src/util.c 2019-03-01 18:35:00.313283739 +0200 +@@ -1601,7 +1601,7 @@ + } + + #ifndef TMPDIR +-#define TMPDIR "/tmp" ++#define TMPDIR "@TERMUX_PREFIX@/tmp" + #endif + + struct try_safe_open_args diff --git a/packages/patchelf/build.sh b/packages/patchelf/build.sh index 5d0b785a4..479879f4a 100644 --- a/packages/patchelf/build.sh +++ b/packages/patchelf/build.sh @@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="Utility to modify the dynamic linker and RPATH of ELF ex TERMUX_PKG_LICENSE="GPL-3.0" # Using a git snapshot to fix https://github.com/termux/termux-packages/issues/1706. TERMUX_PKG_VERSION=0.9.0.1 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=fbf494896e3bb8cef9c47b8c3f4d6d387ab19ff4161b61a8fafbcf7395f960a2 TERMUX_PKG_SRCURL=https://github.com/NixOS/patchelf/archive/29c085fd9d3fc972f75b3961905d6b4ecce7eb2b.zip TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/pcre/build.sh b/packages/pcre/build.sh index dff9470dc..ce2fa5658 100644 --- a/packages/pcre/build.sh +++ b/packages/pcre/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://www.pcre.org TERMUX_PKG_DESCRIPTION="Library implementing regular expression pattern matching using the same syntax and semantics as Perl 5" TERMUX_PKG_LICENSE="BSD 3-Clause" -TERMUX_PKG_VERSION=8.42 -TERMUX_PKG_SHA256=2cd04b7c887808be030254e8d77de11d3fe9d4505c39d4b15d2664ffe8bf9301 +TERMUX_PKG_VERSION=8.43 +TERMUX_PKG_SHA256=91e762520003013834ac1adb4a938d53b22a216341c061b0cf05603b290faf6b TERMUX_PKG_SRCURL=https://ftp.pcre.org/pub/pcre/pcre-${TERMUX_PKG_VERSION}.tar.bz2 TERMUX_PKG_INCLUDE_IN_DEVPACKAGE="bin/pcre-config" TERMUX_PKG_RM_AFTER_INSTALL="bin/pcregrep bin/pcretest share/man/man1/pcre*.1 lib/libpcreposix.so lib/libpcreposix.so.0 lib/libpcreposix.so.0.0.2" diff --git a/packages/php/build.sh b/packages/php/build.sh index c32dfa397..9509ebc36 100644 --- a/packages/php/build.sh +++ b/packages/php/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://php.net TERMUX_PKG_DESCRIPTION="Server-side, HTML-embedded scripting language" TERMUX_PKG_LICENSE="PHP-3.0" TERMUX_PKG_VERSION=7.3.2 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=010b868b4456644ae227d05ad236c8b0a1f57dc6320e7e5ad75e86c5baf0a9a8 TERMUX_PKG_SRCURL=https://secure.php.net/distributions/php-${TERMUX_PKG_VERSION}.tar.xz # Build native php for phar to build (see pear-Makefile.frag.patch): diff --git a/packages/php/ext-pgsql-config.m4.patch b/packages/php/ext-pgsql-config.m4.patch index 2b6f9822c..5c7b27725 100644 --- a/packages/php/ext-pgsql-config.m4.patch +++ b/packages/php/ext-pgsql-config.m4.patch @@ -5,11 +5,11 @@ diff -u -r ../php-7.1.3/ext/pgsql/config.m4 ./ext/pgsql/config.m4 LDFLAGS=$old_LDFLAGS PHP_ADD_LIBRARY_WITH_PATH(pq, $PGSQL_LIBDIR, PGSQL_SHARED_LIBADD) -+ dnl The pgsql extension uses pcre so needs to link explicitly ++ dnl The pgsql extension uses pcre2 so needs to link explicitly + dnl against it to work on android (the php binary, which dlopen():s -+ dnl this module already links to pcre, but that is not enough on ++ dnl this module already links to pcre2, but that is not enough on + dnl Android, see https://github.com/android-ndk/ndk/issues/201): -+ PHP_ADD_LIBRARY_WITH_PATH(pcre, $PGSQL_LIBDIR, PGSQL_SHARED_LIBADD) ++ PHP_ADD_LIBRARY_WITH_PATH(pcre2-8, $PGSQL_LIBDIR, PGSQL_SHARED_LIBADD) PHP_SUBST(PGSQL_SHARED_LIBADD) PHP_ADD_INCLUDE($PGSQL_INCLUDE) diff --git a/packages/pinentry/build.sh b/packages/pinentry/build.sh index 222c12985..c975a06a9 100644 --- a/packages/pinentry/build.sh +++ b/packages/pinentry/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.gnupg.org/related_software/pinentry/index.html TERMUX_PKG_DESCRIPTION="Dialog allowing secure password entry" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=1.1.0 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=68076686fa724a290ea49cdf0d1c0c1500907d1b759a3bcbfbec0293e8f56570 TERMUX_PKG_SRCURL=https://www.gnupg.org/ftp/gcrypt/pinentry/pinentry-${TERMUX_PKG_VERSION}.tar.bz2 TERMUX_PKG_DEPENDS="libandroid-support, libassuan, ncurses" diff --git a/packages/pinentry/pinentry-emacs.c.patch b/packages/pinentry/pinentry-emacs.c.patch new file mode 100644 index 000000000..e605324e9 --- /dev/null +++ b/packages/pinentry/pinentry-emacs.c.patch @@ -0,0 +1,12 @@ +diff -uNr pinentry-1.1.0/pinentry/pinentry-emacs.c pinentry-1.1.0.mod/pinentry/pinentry-emacs.c +--- pinentry-1.1.0/pinentry/pinentry-emacs.c 2017-12-03 18:13:05.000000000 +0200 ++++ pinentry-1.1.0.mod/pinentry/pinentry-emacs.c 2019-03-01 18:38:36.250899637 +0200 +@@ -134,7 +134,7 @@ + } + else + #endif +- tmpdir = "/tmp"; ++ tmpdir = "@TERMUX_PREFIX@/tmp"; + } + + socket_name_storage = malloc (strlen (tmpdir) diff --git a/packages/play-audio/build.sh b/packages/play-audio/build.sh index 6276a11ab..7a49bf3a6 100644 --- a/packages/play-audio/build.sh +++ b/packages/play-audio/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://github.com/termux/play-audio TERMUX_PKG_DESCRIPTION="Simple commandline audio player for Android" TERMUX_PKG_LICENSE="Apache-2.0" TERMUX_PKG_VERSION=0.5 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=e114123c4b337cddb1d4aa6c3287574d8c81b2dc4b3abc07ce21616fa14f9e82 TERMUX_PKG_SRCURL=https://github.com/termux/play-audio/archive/v${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/poppler/build.sh b/packages/poppler/build.sh index 3fd873c7b..9a1c93974 100644 --- a/packages/poppler/build.sh +++ b/packages/poppler/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://poppler.freedesktop.org/ TERMUX_PKG_DESCRIPTION="PDF rendering library" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=0.72.0 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=c1747eb8f26e9e753c4001ed951db2896edc1021b6d0f547a0bd2a27c30ada51 TERMUX_PKG_SRCURL=https://poppler.freedesktop.org/poppler-${TERMUX_PKG_VERSION}.tar.xz # libcairo and littlecms is used by pdftocairo: diff --git a/packages/postgresql/build.sh b/packages/postgresql/build.sh index 3ff37accb..2277a712e 100644 --- a/packages/postgresql/build.sh +++ b/packages/postgresql/build.sh @@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="Object-relational SQL database" TERMUX_PKG_LICENSE="BSD" TERMUX_PKG_MAINTAINER='Vishal Biswas @vishalbiswas' TERMUX_PKG_VERSION=11.2 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=2676b9ce09c21978032070b6794696e0aa5a476e3d21d60afc036dc0a9c09405 TERMUX_PKG_SRCURL=https://ftp.postgresql.org/pub/source/v$TERMUX_PKG_VERSION/postgresql-$TERMUX_PKG_VERSION.tar.bz2 TERMUX_PKG_DEPENDS="openssl, libcrypt, readline, libandroid-shmem, libuuid, libxml2" diff --git a/packages/profanity/build.sh b/packages/profanity/build.sh index bdcc8b43d..615b0354b 100644 --- a/packages/profanity/build.sh +++ b/packages/profanity/build.sh @@ -1,23 +1,25 @@ TERMUX_PKG_HOMEPAGE=http://profanity.im TERMUX_PKG_DESCRIPTION="Profanity is a console based XMPP client written in C using ncurses and libstrophe, inspired by Irssi" TERMUX_PKG_LICENSE="GPL-3.0" -TERMUX_PKG_VERSION=0.5.1 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_VERSION=0.6.0 +TERMUX_PKG_REVISION=1 TERMUX_PKG_MAINTAINER="Oliver Schmidhauser @Neo-Oli" TERMUX_PKG_SRCURL=http://profanity.im/profanity-${TERMUX_PKG_VERSION}.tar.gz -TERMUX_PKG_SHA256=e3513713e74ec3363fbdbac2919bdc17e249988780cc5a4589d1425807a7feb8 -TERMUX_PKG_DEPENDS="libandroid-support,ncurses,glib,libmesode,libcurl,readline,libuuid,libotr,gpgme,python" +TERMUX_PKG_SHA256=51b0932924a391656423af0d85f14dde049ac1e94214f948849d37df1c2759c4 +TERMUX_PKG_DEPENDS="libandroid-support, ncurses, glib, libmesode, libcurl, readline, libuuid, libotr, gpgme, python, libassuan, libgpg-error" +# openssl, libexpat needed by libmesode, pcre needed by glib: +TERMUX_PKG_BUILD_DEPENDS="openssl, libexpat, pcre, libgcrypt-dev, libcrypt-dev" TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" --disable-python-plugins" TERMUX_PKG_BUILD_IN_SRC=yes termux_step_pre_configure() { - CPPFLAGS+=" -I$TERMUX_PREFIX/include/python3.7m" - LDFLAGS+=" -lpython3.7m" + CPPFLAGS+=" -I$TERMUX_PREFIX/include/python3.7m" + LDFLAGS+=" -lpython3.7m" } termux_step_post_configure() { - # Enable python support manually, as trying to go using --enable-python-plugins - # causes configure trying to execut python: - echo '#define HAVE_PYTHON 1' >> $TERMUX_PKG_SRCDIR/src/config.h - perl -p -i -e 's|#am__objects_2|am__objects_2|' $TERMUX_PKG_SRCDIR/Makefile + # Enable python support manually, as trying to go using --enable-python-plugins + # causes configure trying to execute python: + echo '#define HAVE_PYTHON 1' >> $TERMUX_PKG_SRCDIR/src/config.h + perl -p -i -e 's|#am__objects_2|am__objects_2|' $TERMUX_PKG_SRCDIR/Makefile } diff --git a/packages/proot/build.sh b/packages/proot/build.sh index 10cd3a217..a11904898 100644 --- a/packages/proot/build.sh +++ b/packages/proot/build.sh @@ -2,11 +2,11 @@ TERMUX_PKG_HOMEPAGE=https://proot-me.github.io/ TERMUX_PKG_DESCRIPTION="Emulate chroot, bind mount and binfmt_misc for non-root users" TERMUX_PKG_LICENSE="GPL-2.0" # Just bump commit and version when needed: -_COMMIT=df715ceac26cf331a626b7ccabcb94c4fd7d12cf +_COMMIT=0e29e5a9db6c56beddcca8b50d4ba91af5b1c171 TERMUX_PKG_VERSION=5.1.107 -TERMUX_PKG_REVISION=18 +TERMUX_PKG_REVISION=19 TERMUX_PKG_SRCURL=https://github.com/termux/proot/archive/${_COMMIT}.zip -TERMUX_PKG_SHA256=026d3f522d4d55310c433e00839be5410a46b9e5626a54bdb1b1c9869dd1d032 +TERMUX_PKG_SHA256=0cc2748aa53beaf3f23384237b0b5537679976087536de0d065dacea812379c5 TERMUX_PKG_DEPENDS="libtalloc" # Install loader in libexec instead of extracting it every time diff --git a/packages/python/build.sh b/packages/python/build.sh index 792ee9c98..5fb7c5e67 100644 --- a/packages/python/build.sh +++ b/packages/python/build.sh @@ -6,7 +6,7 @@ TERMUX_PKG_DEPENDS="libandroid-support, ncurses, readline, libffi, openssl, libu TERMUX_PKG_DEVPACKAGE_DEPENDS="libcrypt-dev" _MAJOR_VERSION=3.7 TERMUX_PKG_VERSION=${_MAJOR_VERSION}.2 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=d83fe8ce51b1bb48bbcf0550fd265b9a75cdfdfa93f916f9e700aef8444bf1bb TERMUX_PKG_SRCURL=https://www.python.org/ftp/python/${TERMUX_PKG_VERSION}/Python-${TERMUX_PKG_VERSION}.tar.xz diff --git a/packages/python2/build.sh b/packages/python2/build.sh index 7fcbd0cf5..aced5804a 100644 --- a/packages/python2/build.sh +++ b/packages/python2/build.sh @@ -12,7 +12,7 @@ TERMUX_PKG_HOSTBUILD=true _MAJOR_VERSION=2.7 TERMUX_PKG_VERSION=${_MAJOR_VERSION}.15 -TERMUX_PKG_REVISION=6 +TERMUX_PKG_REVISION=7 TERMUX_PKG_SHA256=22d9b1ac5b26135ad2b8c2901a9413537e08749a753356ee913c84dbd2df5574 TERMUX_PKG_SRCURL=https://www.python.org/ftp/python/${TERMUX_PKG_VERSION}/Python-${TERMUX_PKG_VERSION}.tar.xz diff --git a/packages/qalc/build.sh b/packages/qalc/build.sh index 6298e5765..ce64a0bc6 100644 --- a/packages/qalc/build.sh +++ b/packages/qalc/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://qalculate.github.io/ TERMUX_PKG_DESCRIPTION="Powerful and easy to use command line calculator" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=2.8.1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=a901be570bbfad80f1fccb1839ef2d03f6f2b7a02b051df35d5b687a08396105 TERMUX_PKG_SRCURL=https://github.com/Qalculate/libqalculate/releases/download/v$TERMUX_PKG_VERSION/libqalculate-$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_DEPENDS="libcurl, libmpfr, libxml2, readline, libgmp" diff --git a/packages/radare2/build.sh b/packages/radare2/build.sh index 001335d93..936c8a776 100644 --- a/packages/radare2/build.sh +++ b/packages/radare2/build.sh @@ -1,9 +1,9 @@ TERMUX_PKG_HOMEPAGE=https://rada.re TERMUX_PKG_DESCRIPTION="Advanced Hexadecimal Editor" TERMUX_PKG_LICENSE="GPL-3.0" -TERMUX_PKG_VERSION=3.2.1 +TERMUX_PKG_VERSION=3.3.0 TERMUX_PKG_REVISION=1 -TERMUX_PKG_SHA256=a4d0c1b3a3dfd810749578227940b8ea77e517d2c4d284c9687e49224a272796 +TERMUX_PKG_SHA256=3c092bdf8676d7d49537926258c50557bca98d7d669babfed6113ff82c403bcb TERMUX_PKG_SRCURL=https://github.com/radare/radare2/archive/$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_DEPENDS="libuv" TERMUX_PKG_BUILD_IN_SRC="yes" diff --git a/packages/radare2/libr-core-cconfig.c.patch b/packages/radare2/libr-core-cconfig.c.patch index bce27b364..6e87aab7d 100644 --- a/packages/radare2/libr-core-cconfig.c.patch +++ b/packages/radare2/libr-core-cconfig.c.patch @@ -1,21 +1,23 @@ -diff -u -r ../radare2-2.6.0/libr/core/cconfig.c ./libr/core/cconfig.c ---- ../radare2-2.6.0/libr/core/cconfig.c 2018-05-21 03:18:13.000000000 +0200 -+++ ./libr/core/cconfig.c 2018-05-22 16:08:13.832239788 +0200 -@@ -2649,12 +2649,8 @@ +diff -u -r ../radare2-3.3.0/libr/core/cconfig.c ./libr/core/cconfig.c +--- ../radare2-3.3.0/libr/core/cconfig.c 2019-02-19 12:35:24.000000000 +0000 ++++ ./libr/core/cconfig.c 2019-03-01 23:31:17.730684566 +0000 +@@ -2961,14 +2961,10 @@ free (path); } SETCB ("dir.source", "", &cb_dirsrc, "Path to find source files"); - SETPREF ("dir.types", "/usr/include", "Default path to look for cparse type files"); ++ SETPREF ("dir.types", "@TERMUX_PREFIX@/usr/include", "Default path to look for cparse type files"); + SETCB ("dir.home", r_sys_getenv (R_SYS_HOME), &cb_dirhome, "Path for the home directory"); + SETCB ("dir.tmp", r_sys_getenv (R_SYS_TMP), &cb_dirtmp, "Path of the tmp directory"); -#if __ANDROID__ - SETPREF ("dir.projects", "/data/data/org.radare.radare2installer/radare2/projects", "Default path for projects"); -#else -+ SETPREF ("dir.types", "@TERMUX_PREFIX@/include", "Default path to look for cparse type files"); SETPREF ("dir.projects", R_JOIN_2_PATHS ("~", R2_HOME_PROJECTS), "Default path for projects"); -#endif SETCB ("dir.zigns", R_JOIN_2_PATHS ("~", R2_HOME_ZIGNS), &cb_dirzigns, "Default path for zignatures (see zo command)"); + SETPREF ("stack.reg", "SP", "Which register to use as stack pointer in the visual debug"); SETPREF ("stack.bytes", "true", "Show bytes instead of words in stack"); - SETPREF ("stack.anotated", "false", "Show anotated hexdump in visual debug"); -@@ -2773,6 +2769,9 @@ +@@ -3099,6 +3095,9 @@ #if __WINDOWS__ r_config_set (cfg, "http.browser", "start"); #else @@ -25,7 +27,7 @@ diff -u -r ../radare2-2.6.0/libr/core/cconfig.c ./libr/core/cconfig.c if (r_file_exists ("/usr/bin/openURL")) { // iOS ericautils r_config_set (cfg, "http.browser", "/usr/bin/openURL"); } else if (r_file_exists ("/system/bin/toolbox")) { -@@ -2785,16 +2784,13 @@ +@@ -3111,16 +3110,13 @@ } else { r_config_set (cfg, "http.browser", "firefox"); } @@ -43,3 +45,5 @@ diff -u -r ../radare2-2.6.0/libr/core/cconfig.c ./libr/core/cconfig.c SETPREF ("http.port", "9090", "HTTP server port"); SETPREF ("http.maxport", "9999", "Last HTTP server port"); SETPREF ("http.ui", "m", "Default webui (enyo, m, p, t)"); +Only in ./libr/core: cconfig.c.orig +Only in ./libr/core: cconfig.c.rej diff --git a/packages/radare2/libr-util-diff.c.patch b/packages/radare2/libr-util-diff.c.patch new file mode 100644 index 000000000..054e2fbd9 --- /dev/null +++ b/packages/radare2/libr-util-diff.c.patch @@ -0,0 +1,12 @@ +diff -uNr radare2-3.2.1/libr/util/diff.c radare2-3.2.1.mod/libr/util/diff.c +--- radare2-3.2.1/libr/util/diff.c 2019-01-08 18:14:43.000000000 +0200 ++++ radare2-3.2.1.mod/libr/util/diff.c 2019-03-02 03:17:18.566391827 +0200 +@@ -145,7 +145,7 @@ + char* err = NULL; + char* out = NULL; + int out_len; +- (void)r_sys_cmd_str_full ("/usr/bin/diff -u .a .b", NULL, &out, &out_len, &err); ++ (void)r_sys_cmd_str_full ("@TERMUX_PREFIX@/bin/diff -u .a .b", NULL, &out, &out_len, &err); + r_file_rm (".a"); + r_file_rm (".b"); + free (err); diff --git a/packages/radare2/libr-util-sandbox.c.patch b/packages/radare2/libr-util-sandbox.c.patch new file mode 100644 index 000000000..87a057a9a --- /dev/null +++ b/packages/radare2/libr-util-sandbox.c.patch @@ -0,0 +1,12 @@ +diff -uNr radare2-3.2.1/libr/util/sandbox.c radare2-3.2.1.mod/libr/util/sandbox.c +--- radare2-3.2.1/libr/util/sandbox.c 2019-01-08 18:14:43.000000000 +0200 ++++ radare2-3.2.1.mod/libr/util/sandbox.c 2019-03-02 02:42:52.796061199 +0200 +@@ -154,7 +154,7 @@ + return system (x); + #endif + } +- return execl ("/bin/sh", "sh", "-c", x, (const char*)NULL); ++ return execl ("@TERMUX_PREFIX@/bin/sh", "sh", "-c", x, (const char*)NULL); + #else + #include + if (n && !strchr (x, '|')) { diff --git a/packages/radare2/shlr-Makefile.patch b/packages/radare2/shlr-Makefile.patch deleted file mode 100644 index 2c9dd81ef..000000000 --- a/packages/radare2/shlr-Makefile.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- radare2-3.2.1_2/shlr/Makefile -+++ radare2-3.2.1/shlr/Makefile -@@ -25,8 +25,8 @@ - CS_URL=$(GIT_PREFIX)github.com/aquynh/capstone.git - CS_UPD=20181224 - # NOTE: when you update CS_TIP or CS_BRA, also update them in shlr/meson.build --CS_BRA=v4.1 --CS_TIP=0ff8220adef16a942697afd245afc5ab0f70cbf8 -+CS_BRA=master -+CS_TIP=58a80a93f995c23a8681dcc38dccfc6bab9cd7a4 - # REVERT THIS COMMIT BECAUSE ITS WRONG - CS_REV= - CS_PATCHES=1 diff --git a/packages/readline/build.sh b/packages/readline/build.sh index d60ed6ea2..bf6105ad0 100644 --- a/packages/readline/build.sh +++ b/packages/readline/build.sh @@ -1,33 +1,16 @@ -TERMUX_PKG_HOMEPAGE=https://tiswww.case.edu/php/chet/readline/rltop.html +TERMUX_PKG_HOMEPAGE="https://tiswww.case.edu/php/chet/readline/rltop.html" TERMUX_PKG_DESCRIPTION="Library that allow users to edit command lines as they are typed in" -TERMUX_PKG_LICENSE="GPL-2.0" +TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_DEPENDS="libandroid-support, ncurses" -_MAIN_VERSION=7.0 -_PATCH_VERSION=5 -TERMUX_PKG_REVISION=2 -TERMUX_PKG_SHA256=750d437185286f40a369e1e4f4764eda932b9459b5ec9a731628393dd3d32334 -TERMUX_PKG_VERSION=${_MAIN_VERSION}.${_PATCH_VERSION} -TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/readline/readline-${_MAIN_VERSION}.tar.gz +TERMUX_PKG_BREAKS="bash (<< 5.0)" +TERMUX_PKG_VERSION="8.0" +TERMUX_PKG_SHA256=e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461 +TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/readline/readline-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--with-curses --enable-multibyte bash_cv_wcwidth_broken=no" TERMUX_PKG_EXTRA_MAKE_ARGS="SHLIB_LIBS=-lncursesw" TERMUX_PKG_CONFFILES="etc/inputrc" termux_step_pre_configure() { - local PATCH_CHECKSUMS - PATCH_CHECKSUMS[1]=9ac1b3ac2ec7b1bf0709af047f2d7d2a34ccde353684e57c6b47ebca77d7a376 - PATCH_CHECKSUMS[2]=8747c92c35d5db32eae99af66f17b384abaca961653e185677f9c9a571ed2d58 - PATCH_CHECKSUMS[3]=9e43aa93378c7e9f7001d8174b1beb948deefa6799b6f581673f465b7d9d4780 - PATCH_CHECKSUMS[4]=f925683429f20973c552bff6702c74c58c2a38ff6e5cf305a8e847119c5a6b64 - PATCH_CHECKSUMS[5]=ca159c83706541c6bbe39129a33d63bbd76ac594303f67e4d35678711c51b753 - for patch_number in $(seq -f '%03g' ${_PATCH_VERSION}); do - PATCHFILE=$TERMUX_PKG_CACHEDIR/readline_patch_${patch_number}.patch - termux_download \ - "https://mirrors.kernel.org/gnu/readline/readline-7.0-patches/readline70-$patch_number" \ - $PATCHFILE \ - ${PATCH_CHECKSUMS[patch_number]} - patch -p0 -i $PATCHFILE - done - CFLAGS+=" -fexceptions" } diff --git a/packages/readline/rlconf.h.patch b/packages/readline/rlconf.h.patch new file mode 100644 index 000000000..03156a5a5 --- /dev/null +++ b/packages/readline/rlconf.h.patch @@ -0,0 +1,11 @@ +--- readline-8.0/rlconf.h 2017-02-21 20:55:30.000000000 +0530 ++++ readline-8.0-mod/rlconf.h 2019-02-20 20:45:45.583654990 +0530 +@@ -43,7 +43,7 @@ + #define DEFAULT_INPUTRC "~/.inputrc" + + /* The ultimate last-ditch filename for an init file -- system-wide. */ +-#define SYS_INPUTRC "/etc/inputrc" ++#define SYS_INPUTRC "@TERMUX_PREFIX@/etc/inputrc" + + /* If defined, expand tabs to spaces. */ + #define DISPLAY_TABS diff --git a/packages/readline/sys_inputrc_path.patch b/packages/readline/sys_inputrc_path.patch deleted file mode 100644 index 4d54db9fc..000000000 --- a/packages/readline/sys_inputrc_path.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../readline-6.2/rlconf.h 2009-01-04 20:32:33.000000000 +0100 -+++ ./rlconf.h 2014-02-04 18:30:16.000000000 +0100 -@@ -39,7 +39,7 @@ - #define DEFAULT_INPUTRC "~/.inputrc" - - /* The ultimate last-ditch filenname for an init file -- system-wide. */ --#define SYS_INPUTRC "/etc/inputrc" -+#define SYS_INPUTRC "@TERMUX_PREFIX@/etc/inputrc" - - /* If defined, expand tabs to spaces. */ - #define DISPLAY_TABS diff --git a/packages/rgbds/build.sh b/packages/rgbds/build.sh index 63b51499a..44e4cf4e9 100644 --- a/packages/rgbds/build.sh +++ b/packages/rgbds/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://rednex.github.io/rgbds/ TERMUX_PKG_DESCRIPTION="Rednex Game Boy Development System" TERMUX_PKG_LICENSE="MIT" -TERMUX_PKG_VERSION=0.3.7 -TERMUX_PKG_SHA256=9ffdbdf223e40b18e0e64083356092d07c268b42b78d8fd29fcc468969936a04 +TERMUX_PKG_VERSION=0.3.8 +TERMUX_PKG_SHA256=ec47b7d7a1b03534ab14b261d13511a18c8b1c3ebddea414e7034496f3423c05 TERMUX_PKG_SRCURL=https://github.com/rednex/rgbds/releases/download/v${TERMUX_PKG_VERSION}/rgbds-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="libpng" TERMUX_PKG_BUILD_IN_SRC=true diff --git a/packages/rhash/build.sh b/packages/rhash/build.sh index ff853060d..ddd4cb5ae 100644 --- a/packages/rhash/build.sh +++ b/packages/rhash/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://github.com/rhash/RHash TERMUX_PKG_DESCRIPTION="Console utility for calculation and verification of magnet links and a wide range of hash sums" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_VERSION=1.3.8 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=be536a56acfefc87dbc8b1db30fc639020e41edf05518185ea98630e3df7c04c TERMUX_PKG_SRCURL=https://github.com/rhash/RHash/archive/v$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_DEPENDS="openssl" diff --git a/packages/rhash/parse_cmdline.c.patch b/packages/rhash/parse_cmdline.c.patch new file mode 100644 index 000000000..c2924f2f4 --- /dev/null +++ b/packages/rhash/parse_cmdline.c.patch @@ -0,0 +1,12 @@ +diff -uNr RHash-1.3.8/parse_cmdline.c RHash-1.3.8.mod/parse_cmdline.c +--- RHash-1.3.8/parse_cmdline.c 2019-02-04 06:05:28.000000000 +0200 ++++ RHash-1.3.8.mod/parse_cmdline.c 2019-03-01 20:33:22.425704712 +0200 +@@ -547,7 +547,7 @@ + static const char* find_conf_file(void) + { + #ifndef SYSCONFDIR +-# define SYSCONFDIR "/etc" ++# define SYSCONFDIR "@TERMUX_PREFIX@/etc" + #endif + #define CONFIG_FILENAME "rhashrc" + diff --git a/packages/rlwrap/build.sh b/packages/rlwrap/build.sh index cc66e0fb9..04c646707 100644 --- a/packages/rlwrap/build.sh +++ b/packages/rlwrap/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://github.com/hanslub42/rlwrap TERMUX_PKG_DESCRIPTION="Wrapper using readline to enable editing of keyboard input for commands" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=0.43 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SRCURL=https://fossies.org/linux/privat/rlwrap-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_SHA256=4ed39d0399a82942e2edc9feed6e7736f898c58d531d47ce543a063c17f41f22 TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" diff --git a/packages/rsync/build.sh b/packages/rsync/build.sh index bfb359538..4c3703820 100644 --- a/packages/rsync/build.sh +++ b/packages/rsync/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://rsync.samba.org/ TERMUX_PKG_DESCRIPTION="Utility that provides fast incremental file transfer" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=3.1.3 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=55cc554efec5fdaad70de921cd5a5eeb6c29a95524c715f3bbf849235b0800c0 TERMUX_PKG_SRCURL=https://rsync.samba.org/ftp/rsync/src/rsync-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--with-rsyncd-conf=$TERMUX_PREFIX/etc/rsyncd.conf --with-included-zlib=no --disable-debug" diff --git a/packages/rsync/rsync.h.patch b/packages/rsync/rsync.h.patch new file mode 100644 index 000000000..c534d11b2 --- /dev/null +++ b/packages/rsync/rsync.h.patch @@ -0,0 +1,12 @@ +diff -uNr rsync-3.1.3/rsync.h rsync-3.1.3.mod/rsync.h +--- rsync-3.1.3/rsync.h 2018-01-15 20:58:31.000000000 +0200 ++++ rsync-3.1.3.mod/rsync.h 2019-03-01 22:40:29.926940976 +0200 +@@ -29,7 +29,7 @@ + /* RSYNCD_SYSCONF is now set in config.h */ + #define RSYNCD_USERCONF "rsyncd.conf" + +-#define DEFAULT_LOCK_FILE "/var/run/rsyncd.lock" ++#define DEFAULT_LOCK_FILE "@TERMUX_PREFIX@/var/run/rsyncd.lock" + #define URL_PREFIX "rsync://" + + #define SYMLINK_PREFIX "/rsyncd-munged/" /* This MUST have a trailing slash! */ diff --git a/packages/ruby/build.sh b/packages/ruby/build.sh index c95729314..243f3493c 100644 --- a/packages/ruby/build.sh +++ b/packages/ruby/build.sh @@ -1,10 +1,10 @@ TERMUX_PKG_HOMEPAGE=https://www.ruby-lang.org/ TERMUX_PKG_DESCRIPTION="Dynamic programming language with a focus on simplicity and productivity" TERMUX_PKG_LICENSE="BSD 2-Clause" -_MAJOR_VERSION=2.5 -TERMUX_PKG_VERSION=${_MAJOR_VERSION}.3 -TERMUX_PKG_REVISION=1 -TERMUX_PKG_SHA256=1cc9d0359a8ea35fc6111ec830d12e60168f3b9b305a3c2578357d360fcf306f +_MAJOR_VERSION=2.6 +TERMUX_PKG_VERSION=${_MAJOR_VERSION}.1 +TERMUX_PKG_REVISION=2 +TERMUX_PKG_SHA256=47b629808e9fd44ce1f760cdf3ed14875fc9b19d4f334e82e2cf25cb2898f2f2 TERMUX_PKG_SRCURL=https://cache.ruby-lang.org/pub/ruby/${_MAJOR_VERSION}/ruby-${TERMUX_PKG_VERSION}.tar.xz # libbffi is used by the fiddle extension module: TERMUX_PKG_DEPENDS="libandroid-support, libffi, libgmp, readline, openssl, libutil, libyaml" @@ -23,6 +23,7 @@ termux_step_pre_configure() { if [ "$TERMUX_ARCH_BITS" = 32 ]; then # process.c:function timetick2integer: error: undefined reference to '__mulodi4' TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" rb_cv_builtin___builtin_mul_overflow=no" + CFLAGS="${CFLAGS/-Os/-Oz}" fi } diff --git a/packages/ruby/configure.ac.patch b/packages/ruby/configure.ac.patch deleted file mode 100644 index 9e08f332e..000000000 --- a/packages/ruby/configure.ac.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- /home/vagrant/ruby-2.5.0/configure.ac 2017-12-15 09:43:40.000000000 +0000 -+++ src/configure.ac 2018-02-14 19:07:11.272257521 +0000 -@@ -742,7 +742,7 @@ - rb_cv_warnflags="$warnflags" - AS_IF([test "$GCC:${warnflags+set}:no" = yes::no], [ - AS_IF([test $gcc_major -ge 4], [ -- extra_warning=-Werror=extra-tokens -+ extra_warning= - ], [ - extra_warning= - ]) -@@ -765,9 +765,7 @@ - -Werror=pointer-arith \ - -Werror=write-strings \ - -Werror=declaration-after-statement \ -- -Werror=shorten-64-to-32 \ - -Werror=implicit-function-declaration \ -- -Werror=division-by-zero \ - -Werror=deprecated-declarations \ - -Werror=misleading-indentation \ - -Wno-packed-bitfield-compat \ diff --git a/packages/ruby/configure.patch b/packages/ruby/configure.patch deleted file mode 100644 index 76e68ed98..000000000 --- a/packages/ruby/configure.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- /home/vagrant/ruby-2.5.0/configure 2017-12-25 07:00:28.000000000 +0000 -+++ src/configure 2018-02-14 19:06:28.742701948 +0000 -@@ -7434,7 +7434,7 @@ - - if test $gcc_major -ge 4; then : - -- extra_warning=-Werror=extra-tokens -+ extra_warning= - - else - -@@ -7464,9 +7464,7 @@ - -Werror=pointer-arith \ - -Werror=write-strings \ - -Werror=declaration-after-statement \ -- -Werror=shorten-64-to-32 \ - -Werror=implicit-function-declaration \ -- -Werror=division-by-zero \ - -Werror=deprecated-declarations \ - -Werror=misleading-indentation \ - -Wno-packed-bitfield-compat \ diff --git a/packages/ruby/fix-paths.patch b/packages/ruby/fix-paths.patch index ac934fd57..8d3d790dd 100644 --- a/packages/ruby/fix-paths.patch +++ b/packages/ruby/fix-paths.patch @@ -95,30 +95,6 @@ diff -uNr ruby-2.4.2/lib/resolv.rb ruby-2.4.2.mod/lib/resolv.rb if File.exist? filename config_hash = Config.parse_resolv_conf(filename) else -diff -uNr ruby-2.4.2/lib/rubygems/config_file.rb ruby-2.4.2.mod/lib/rubygems/config_file.rb ---- ruby-2.4.2/lib/rubygems/config_file.rb 2016-09-28 03:57:53.000000000 +0300 -+++ ruby-2.4.2.mod/lib/rubygems/config_file.rb 2017-09-15 13:47:05.912800582 +0300 -@@ -81,7 +81,7 @@ - - path.strip - rescue LoadError -- RbConfig::CONFIG["sysconfdir"] || "/etc" -+ RbConfig::CONFIG["sysconfdir"] || "@TERMUX_PREFIX@/etc" - end - end - -diff -uNr ruby-2.4.2/lib/rubygems/defaults.rb ruby-2.4.2.mod/lib/rubygems/defaults.rb ---- ruby-2.4.2/lib/rubygems/defaults.rb 2017-09-15 11:42:55.262805911 +0300 -+++ ruby-2.4.2.mod/lib/rubygems/defaults.rb 2017-09-15 13:59:05.152800068 +0300 -@@ -116,7 +116,7 @@ - - def self.default_bindir - if defined? RUBY_FRAMEWORK_VERSION then # mac framework support -- '/usr/bin' -+ '@TERMUX_PREFIX@/bin' - else # generic install - RbConfig::CONFIG['bindir'] - end diff -uNr ruby-2.4.2/lib/webrick/config.rb ruby-2.4.2.mod/lib/webrick/config.rb --- ruby-2.4.2/lib/webrick/config.rb 2016-12-07 14:59:48.000000000 +0200 +++ ruby-2.4.2.mod/lib/webrick/config.rb 2017-09-15 12:03:02.402805048 +0300 diff --git a/packages/ruby/lib-fileutils.rb.patch b/packages/ruby/lib-fileutils.rb.patch deleted file mode 100644 index 56991b558..000000000 --- a/packages/ruby/lib-fileutils.rb.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- /home/vagrant/ruby-2.5.0/lib/fileutils.rb 2017-12-22 08:00:10.000000000 +0000 -+++ ./lib/fileutils.rb 2018-02-17 23:19:55.344655246 +0000 -@@ -744,8 +744,8 @@ - # - def compare_stream(a, b) - bsize = fu_stream_blksize(a, b) -- sa = String.new(capacity: bsize) -- sb = String.new(capacity: bsize) -+ sa = String.new -+ sb = String.new - begin - a.read(bsize, sa) - b.read(bsize, sb) diff --git a/packages/ruby/lib-rubygems-defaults.rb.patch b/packages/ruby/lib-rubygems-defaults.rb.patch deleted file mode 100644 index 33d14ccd8..000000000 --- a/packages/ruby/lib-rubygems-defaults.rb.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -u -r ../ruby-2.4.0/lib/rubygems/defaults.rb ./lib/rubygems/defaults.rb ---- ../ruby-2.4.0/lib/rubygems/defaults.rb 2016-06-24 06:13:11.000000000 +0200 -+++ ./lib/rubygems/defaults.rb 2017-01-31 22:53:59.125074751 +0100 -@@ -191,6 +191,9 @@ - # end - - def self.platform_defaults -- {} -+ { -+ 'install' => '--no-rdoc --no-ri --env-shebang', -+ 'update' => '--no-rdoc --no-ri --env-shebang' -+ } - end - end diff --git a/packages/ruby/lib-rubygems-installer.rb.patch b/packages/ruby/lib-rubygems-installer.rb.patch deleted file mode 100644 index 5ae54e410..000000000 --- a/packages/ruby/lib-rubygems-installer.rb.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -u -r ../ruby-2.4.0/lib/rubygems/installer.rb ./lib/rubygems/installer.rb ---- ../ruby-2.4.0/lib/rubygems/installer.rb 2016-09-28 03:16:43.000000000 +0200 -+++ ./lib/rubygems/installer.rb 2017-01-31 22:49:11.992624578 +0100 -@@ -31,7 +31,7 @@ - # Paths where env(1) might live. Some systems are broken and have it in - # /bin - -- ENV_PATHS = %w[/usr/bin/env /bin/env] -+ ENV_PATHS = %w[@TERMUX_PREFIX@/bin/env /usr/bin/env] - - ## - # Deprecated in favor of Gem::Ext::BuildError diff --git a/packages/ruby/process.c.patch b/packages/ruby/process.c.patch index ffd099e3a..90a42e9fb 100644 --- a/packages/ruby/process.c.patch +++ b/packages/ruby/process.c.patch @@ -1,6 +1,7 @@ ---- /home/vagrant/ruby-2.5.0/process.c 2017-12-14 10:24:38.000000000 +0000 -+++ src/process.c 2018-02-14 18:48:50.591627727 +0000 -@@ -1240,9 +1240,9 @@ +diff -u -r ../ruby-2.6.1/process.c ./process.c +--- ../ruby-2.6.1/process.c 2018-12-22 10:23:06.000000000 +0000 ++++ ./process.c 2019-02-16 09:27:04.713434722 +0000 +@@ -1569,9 +1569,9 @@ *argv = (char *)prog; *--argv = (char *)"sh"; if (envp) @@ -12,19 +13,19 @@ } #else -@@ -1310,9 +1310,9 @@ +@@ -1639,9 +1639,9 @@ } #else if (envp_str) -- execle("/bin/sh", "sh", "-c", str, (char *)NULL, (char **)RSTRING_PTR(envp_str)); /* async-signal-safe */ -+ execle("@TERMUX_PREFIX@/bin/sh", "sh", "-c", str, (char *)NULL, (char **)RSTRING_PTR(envp_str)); /* async-signal-safe */ +- execle("/bin/sh", "sh", "-c", str, (char *)NULL, RB_IMEMO_TMPBUF_PTR(envp_str)); /* async-signal-safe */ ++ execle("@TERMUX_PREFIX@/bin/sh", "sh", "-c", str, (char *)NULL, RB_IMEMO_TMPBUF_PTR(envp_str)); /* async-signal-safe */ else - execl("/bin/sh", "sh", "-c", str, (char *)NULL); /* async-signal-safe (since SUSv4) */ + execl("@TERMUX_PREFIX@/bin/sh", "sh", "-c", str, (char *)NULL); /* async-signal-safe (since SUSv4) */ #endif /* _WIN32 */ return errno; } -@@ -1415,7 +1415,7 @@ +@@ -1744,7 +1744,7 @@ if (status == -1 && errno == ENOEXEC) { *argv = (char *)prog; *--argv = (char *)"sh"; @@ -33,7 +34,7 @@ after_exec(); if (status == -1) errno = ENOEXEC; } -@@ -1453,7 +1453,7 @@ +@@ -1782,7 +1782,7 @@ char *shell = dln_find_exe_r("sh", 0, fbuf, sizeof(fbuf)); before_exec(); diff --git a/packages/ruby/template-configure-ext.mk.tmpl.patch b/packages/ruby/template-configure-ext.mk.tmpl.patch deleted file mode 100644 index e57330914..000000000 --- a/packages/ruby/template-configure-ext.mk.tmpl.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- /home/vagrant/ruby-2.5.0/template/configure-ext.mk.tmpl 2017-04-23 16:19:22.000000000 +0000 -+++ ./template/configure-ext.mk.tmpl 2018-02-17 23:31:02.304445580 +0000 -@@ -24,7 +24,7 @@ - MINIRUBY = <%=miniruby%> - SCRIPT_ARGS = <%=script_args%> - EXTMK_ARGS = $(SCRIPT_ARGS) --gnumake=$(gnumake) --extflags="$(EXTLDFLAGS)" \ -- --make-flags='MINIRUBY=$(MINIRUBY)' -+ --make-flags="MINIRUBY='$(MINIRUBY)'" - - all: exts gems - exts: diff --git a/packages/ruby/tool-rbinstall.rb.patch b/packages/ruby/tool-rbinstall.rb.patch index 71a80d826..879d337de 100644 --- a/packages/ruby/tool-rbinstall.rb.patch +++ b/packages/ruby/tool-rbinstall.rb.patch @@ -5,7 +5,7 @@ def install_default_gem(dir, srcdir) - gem_dir = Gem.default_dir -+ gem_dir = "@TERMUX_PREFIX@/lib/ruby/gems/2.5.0" ++ gem_dir = "@TERMUX_PREFIX@/lib/ruby/gems/2.6.0" directories = Gem.ensure_gem_subdirectories(gem_dir, :mode => $dir_mode) prepare "default gems from #{dir}", gem_dir, directories @@ -14,7 +14,7 @@ install?(:ext, :comm, :gem, :'bundled-gems') do - gem_dir = Gem.default_dir -+ gem_dir = "@TERMUX_PREFIX@/lib/ruby/gems/2.5.0" ++ gem_dir = "@TERMUX_PREFIX@/lib/ruby/gems/2.6.0" directories = Gem.ensure_gem_subdirectories(gem_dir, :mode => $dir_mode) prepare "bundled gems", gem_dir, directories install_dir = with_destdir(gem_dir) diff --git a/packages/socat/build.sh b/packages/socat/build.sh index 07d02627d..4799ed7ce 100644 --- a/packages/socat/build.sh +++ b/packages/socat/build.sh @@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="Relay for bidirectional data transfer between two indepe TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_DEPENDS="openssl, readline, libutil" TERMUX_PKG_VERSION=1.7.3.2 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=3 TERMUX_PKG_SRCURL=http://www.dest-unreach.org/socat/download/socat-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=ce3efc17e3e544876ebce7cd6c85b3c279fda057b2857fcaaf67b9ab8bdaf034 TERMUX_PKG_EXTRA_CONFIGURE_ARGS="ac_header_resolv_h=no ac_cv_c_compiler_gnu=yes ac_compiler_gnu=yes" # sc_cv_sys_crdly_shift=9 sc_cv_sys_csize_shift=4 sc_cv_sys_tabdly_shift=11" diff --git a/packages/sox/build.sh b/packages/sox/build.sh index 868fa35d0..e8da605ad 100644 --- a/packages/sox/build.sh +++ b/packages/sox/build.sh @@ -2,17 +2,10 @@ TERMUX_PKG_HOMEPAGE=http://sox.sourceforge.net/ TERMUX_PKG_DESCRIPTION="Command line utility for converting between and applying effects to various audio files formats" TERMUX_PKG_LICENSE="LGPL-2.1" TERMUX_PKG_VERSION=14.4.2 -TERMUX_PKG_REVISION=10 +TERMUX_PKG_REVISION=11 TERMUX_PKG_SRCURL=http://downloads.sourceforge.net/project/sox/sox/${TERMUX_PKG_VERSION}/sox-${TERMUX_PKG_VERSION}.tar.bz2 TERMUX_PKG_SHA256=81a6956d4330e75b5827316e44ae381e6f1e8928003c6aa45896da9041ea149c -TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" ---with-oggvorbis ---without-opus ---with-pulseaudio=dyn ---without-sndfile -" -# Depend on file for libmagic.so linking: -TERMUX_PKG_DEPENDS="libltdl, file, libpng, libmp3lame, libogg, libvorbis, libandroid-glob, libflac, libid3tag, libmad, libpulseaudio" +TERMUX_PKG_DEPENDS="file, libpng, libmp3lame, libvorbis, libandroid-glob, libflac, libid3tag, libmad, libpulseaudio, opusfile, libsndfile" termux_step_pre_configure() { LDFLAGS+=" -landroid-glob" diff --git a/packages/squid/build.sh b/packages/squid/build.sh index 389041132..f6d64799e 100644 --- a/packages/squid/build.sh +++ b/packages/squid/build.sh @@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="Full-featured Web proxy cache server" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_MAINTAINER="Vishal Biswas @vishalbiswas" TERMUX_PKG_VERSION=4.5 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=553edf76d6ee9a1627af9c2be7be850c14cd6836170b3d6c1393fd700d44ccc5 TERMUX_PKG_SRCURL=http://www.squid-cache.org/Versions/v4/squid-$TERMUX_PKG_VERSION.tar.xz TERMUX_PKG_DEPENDS="libcrypt, openssl, libnettle, libltdl" diff --git a/packages/tar/build.sh b/packages/tar/build.sh index f56cd4551..faa9956b7 100644 --- a/packages/tar/build.sh +++ b/packages/tar/build.sh @@ -1,8 +1,9 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/tar/ TERMUX_PKG_DESCRIPTION="GNU tar for manipulating tar archives" TERMUX_PKG_LICENSE="GPL-3.0" -TERMUX_PKG_VERSION=1.31 -TERMUX_PKG_SHA256=37f3ef1ceebd8b7e1ebf5b8cc6c65bb8ebf002c7d049032bf456860f25ec2dc1 +TERMUX_PKG_VERSION=1.32 +TERMUX_PKG_REVISION=1 +TERMUX_PKG_SHA256=d0d3ae07f103323be809bc3eac0dcc386d52c5262499fe05511ac4788af1fdd8 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/tar/tar-${TERMUX_PKG_VERSION}.tar.xz # Allow xz compression (busybox only provides xz decompression): TERMUX_PKG_DEPENDS="xz-utils, libandroid-glob" diff --git a/packages/tar/tmpdir-path.patch b/packages/tar/tmpdir-path.patch new file mode 100644 index 000000000..aeee2f1b5 --- /dev/null +++ b/packages/tar/tmpdir-path.patch @@ -0,0 +1,35 @@ +diff -uNr tar-1.31/gnu/tempname.c tar-1.31.mod/gnu/tempname.c +--- tar-1.31/gnu/tempname.c 2019-01-02 20:16:01.000000000 +0200 ++++ tar-1.31.mod/gnu/tempname.c 2019-03-01 18:31:05.035530338 +0200 +@@ -32,7 +32,7 @@ + + #include + #ifndef P_tmpdir +-# define P_tmpdir "/tmp" ++# define P_tmpdir "@TERMUX_PREFIX@/tmp" + #endif + #ifndef TMP_MAX + # define TMP_MAX 238328 +@@ -147,8 +147,8 @@ + { + if (direxists (P_tmpdir)) + dir = P_tmpdir; +- else if (strcmp (P_tmpdir, "/tmp") != 0 && direxists ("/tmp")) +- dir = "/tmp"; ++ else if (strcmp (P_tmpdir, "@TERMUX_PREFIX@/tmp") != 0 && direxists ("@TERMUX_PREFIX@/tmp")) ++ dir = "@TERMUX_PREFIX@/tmp"; + else + { + __set_errno (ENOENT); +diff -uNr tar-1.31/src/xheader.c tar-1.31.mod/src/xheader.c +--- tar-1.31/src/xheader.c 2019-01-02 20:07:48.000000000 +0200 ++++ tar-1.31.mod/src/xheader.c 2019-03-01 18:31:18.538927987 +0200 +@@ -387,7 +387,7 @@ + size_t len; + const char *tmp = getenv ("TMPDIR"); + if (!tmp) +- tmp = "/tmp"; ++ tmp = "@TERMUX_PREFIX@/tmp"; + len = strlen (tmp) + sizeof (GLOBAL_HEADER_TEMPLATE); /* Includes nul */ + globexthdr_name = xmalloc (len); + strcpy(globexthdr_name, tmp); diff --git a/packages/tasksh/build.sh b/packages/tasksh/build.sh index e11daa85e..4652d565b 100644 --- a/packages/tasksh/build.sh +++ b/packages/tasksh/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://taskwarrior.org TERMUX_PKG_DESCRIPTION="Shell command wrapping Taskwarrior commands" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_VERSION=1.2.0 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=4 TERMUX_PKG_SRCURL=https://taskwarrior.org/download/tasksh-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=6e42f949bfd7fbdde4870af0e7b923114cc96c4344f82d9d924e984629e21ffd TERMUX_PKG_DEPENDS="readline, taskwarrior, libandroid-glob" diff --git a/packages/taskwarrior/build.sh b/packages/taskwarrior/build.sh index b94b3bdde..603bd61f6 100644 --- a/packages/taskwarrior/build.sh +++ b/packages/taskwarrior/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://taskwarrior.org TERMUX_PKG_DESCRIPTION="Utility for managing your TODO list" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_VERSION=2.5.1 -TERMUX_PKG_REVISION=5 +TERMUX_PKG_REVISION=6 TERMUX_PKG_SRCURL=https://taskwarrior.org/download/task-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=d87bcee58106eb8a79b850e9abc153d98b79e00d50eade0d63917154984f2a15 TERMUX_PKG_DEPENDS="libgnutls, libuuid, libandroid-glob" diff --git a/packages/termux-elf-cleaner/build.sh b/packages/termux-elf-cleaner/build.sh index 4acc3eabf..1f0d9a84e 100644 --- a/packages/termux-elf-cleaner/build.sh +++ b/packages/termux-elf-cleaner/build.sh @@ -4,7 +4,7 @@ TERMUX_PKG_LICENSE="GPL-3.0" # NOTE: The termux-elf-cleaner.cpp file is used by build-package.sh # to create a native binary. Bumping this version will need # updating the checksum used there. -TERMUX_PKG_VERSION=1.2 +TERMUX_PKG_VERSION=1.3 TERMUX_PKG_SRCURL=https://github.com/termux/termux-elf-cleaner/archive/v${TERMUX_PKG_VERSION}.tar.gz -TERMUX_PKG_SHA256=956d35778bf40523543a98ecec79d7d895a08ac69da1018acb84658a1c94e82b +TERMUX_PKG_SHA256=972e768d6e5b780415190bda966f76401d95e5da66fef01ba0dbd63a1ea106cf TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/tesseract/build.sh b/packages/tesseract/build.sh index 8230090e8..6e31b6804 100644 --- a/packages/tesseract/build.sh +++ b/packages/tesseract/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://github.com/tesseract-ocr/tesseract TERMUX_PKG_DESCRIPTION="Tesseract is probably the most accurate open source OCR engine available" TERMUX_PKG_LICENSE="Apache-2.0" TERMUX_PKG_VERSION=4.0.0 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=a1f5422ca49a32e5f35c54dee5112b11b99928fc9f4ee6695cdc6768d69f61dd TERMUX_PKG_SRCURL=https://github.com/tesseract-ocr/tesseract/archive/${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="libtool, libuuid, leptonica, libandroid-glob" diff --git a/packages/texinfo/build.sh b/packages/texinfo/build.sh index f0e7006d4..be0a4e71a 100644 --- a/packages/texinfo/build.sh +++ b/packages/texinfo/build.sh @@ -1,9 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/texinfo/ TERMUX_PKG_DESCRIPTION="Documentation system for on-line information and printed output" TERMUX_PKG_LICENSE="GPL-3.0" -TERMUX_PKG_VERSION=6.5 -TERMUX_PKG_REVISION=1 -TERMUX_PKG_SHA256=77774b3f4a06c20705cc2ef1c804864422e3cf95235e965b1f00a46df7da5f62 +TERMUX_PKG_VERSION=6.6 +TERMUX_PKG_SHA256=9bb9ca00da53f26a7e5725eee49689cd4a1e18d25d5b061ac8b2053018d93d66 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/texinfo/texinfo-${TERMUX_PKG_VERSION}.tar.xz # gawk is used by texindex: TERMUX_PKG_DEPENDS="ncurses, perl, gawk" diff --git a/packages/texlive-bin/build.sh b/packages/texlive-bin/build.sh index d08859996..4594dde78 100644 --- a/packages/texlive-bin/build.sh +++ b/packages/texlive-bin/build.sh @@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="TeX Live is a distribution of the TeX typesetting system TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_MAINTAINER="Henrik Grimler @Grimler91" TERMUX_PKG_VERSION=20180414 -TERMUX_PKG_REVISION=6 +TERMUX_PKG_REVISION=7 TERMUX_PKG_SHA256=b6251e2edefb174ca402109d7f82df3cb98e45d367fada627a61de7ed2d4380d # FIXME: update version format and SRCURL when texlive 2019 is released TERMUX_PKG_SRCURL=https://github.com/TeX-Live/texlive-source/archive/texlive-2018.2.tar.gz diff --git a/packages/timewarrior/build.sh b/packages/timewarrior/build.sh index 7ba3796f4..d52cd6d65 100644 --- a/packages/timewarrior/build.sh +++ b/packages/timewarrior/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://tasktools.org/projects/timewarrior.html TERMUX_PKG_DESCRIPTION="Command-line time tracker" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_VERSION=1.1.1 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=3 TERMUX_PKG_SHA256=1f7d9a62e55fc5a3126433654ccb1fd7d2d135f06f05697f871897c9db77ccc9 TERMUX_PKG_SRCURL=https://taskwarrior.org/download/timew-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="libandroid-glob" diff --git a/packages/tor/build.sh b/packages/tor/build.sh index 9f64fa1e7..a5d4080b6 100644 --- a/packages/tor/build.sh +++ b/packages/tor/build.sh @@ -2,8 +2,8 @@ TERMUX_PKG_HOMEPAGE=https://www.torproject.org TERMUX_PKG_DESCRIPTION="The Onion Router anonymizing overlay network" TERMUX_PKG_LICENSE="BSD 3-Clause" TERMUX_PKG_DEPENDS="libevent, openssl, liblzma" -TERMUX_PKG_VERSION=0.3.5.7 -TERMUX_PKG_SHA256=1b0887fc21ac535befea7243c5d5f1e31394d7458d64b30807a3e98cca0d839e +TERMUX_PKG_VERSION=0.3.5.8 +TERMUX_PKG_SHA256=d5c56603942a8927670f50a4a469fb909e29d3571fdd013389d567e57abc0b47 TERMUX_PKG_SRCURL=https://www.torproject.org/dist/tor-$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--disable-zstd --disable-unittests" TERMUX_PKG_CONFFILES="etc/tor/torrc" diff --git a/packages/units/build.sh b/packages/units/build.sh index ce62daa39..3fde73073 100644 --- a/packages/units/build.sh +++ b/packages/units/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/units/ TERMUX_PKG_DESCRIPTION="Converts between different systems of units" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=2.18 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=64959c231c280ceb4f3e6ae6a19b918247b6174833f7f1894704c444869c4678 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/units/units-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="readline, libandroid-support" diff --git a/packages/unrar/build.sh b/packages/unrar/build.sh index 30927d6e7..8260cc327 100644 --- a/packages/unrar/build.sh +++ b/packages/unrar/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://www.rarlab.com/ TERMUX_PKG_DESCRIPTION="Tool for extracting files from .rar archives" TERMUX_PKG_LICENSE="custom" -TERMUX_PKG_VERSION=5.7.1 -TERMUX_PKG_SHA256=d208abcceecfee0084bb8a93e9b756319d906a3ac6380ee5d10285fb0ffc4d65 +TERMUX_PKG_VERSION=5.7.3 +TERMUX_PKG_SHA256=40e856b78374f258d8a1f5f02c02f828c5392a0118c9300fd169a300b520a444 TERMUX_PKG_SRCURL=https://www.rarlab.com/rar/unrarsrc-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="libandroid-support" TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/utfdecode/build.sh b/packages/utfdecode/build.sh index 0b08716e3..bbccacc5d 100644 --- a/packages/utfdecode/build.sh +++ b/packages/utfdecode/build.sh @@ -2,6 +2,6 @@ TERMUX_PKG_HOMEPAGE=https://github.com/fornwall/utfdecode TERMUX_PKG_DESCRIPTION="Tool for decoding, encoding and debugging unicode" TERMUX_PKG_LICENSE="Apache-2.0" TERMUX_PKG_VERSION=0.3.4 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=3 TERMUX_PKG_SHA256=5fd1473f6cf6bdedeb33569c3b0f6823aceda366c714f6a475e2d28767f99b5a TERMUX_PKG_SRCURL=https://github.com/fornwall/utfdecode/releases/download/v$TERMUX_PKG_VERSION/utfdecode-$TERMUX_PKG_VERSION.tar.gz diff --git a/packages/util-linux/build.sh b/packages/util-linux/build.sh index ee2602f59..524ebd640 100644 --- a/packages/util-linux/build.sh +++ b/packages/util-linux/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://en.wikipedia.org/wiki/Util-linux TERMUX_PKG_DESCRIPTION="Miscellaneous system utilities" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=2.33.1 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=c14bd9f3b6e1792b90db87696e87ec643f9d63efa0a424f092a5a6b2f2dbef21 TERMUX_PKG_SRCURL=https://www.kernel.org/pub/linux/utils/util-linux/v${TERMUX_PKG_VERSION:0:4}/util-linux-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_DEPENDS="ncurses, libutil, libcrypt" diff --git a/packages/util-linux/fix-paths.patch b/packages/util-linux/fix-paths.patch new file mode 100644 index 000000000..8bfb9748e --- /dev/null +++ b/packages/util-linux/fix-paths.patch @@ -0,0 +1,423 @@ +diff -uNr util-linux-2.33.1/include/pathnames.h util-linux-2.33.1.mod/include/pathnames.h +--- util-linux-2.33.1/include/pathnames.h 2019-01-08 15:58:25.324719638 +0200 ++++ util-linux-2.33.1.mod/include/pathnames.h 2019-03-02 01:26:11.465802555 +0200 +@@ -20,68 +20,58 @@ + + /* DEFPATHs from don't include /usr/local */ + #undef _PATH_DEFPATH +- +-#ifdef USE_USRDIR_PATHS_ONLY +-# define _PATH_DEFPATH "/usr/local/bin:/usr/bin" +-#else +-# define _PATH_DEFPATH "/usr/local/bin:/bin:/usr/bin" +-#endif ++#define _PATH_DEFPATH "@TERMUX_PREFIX@/bin:@TERMUX_PREFIX@/bin/applets" + + #undef _PATH_DEFPATH_ROOT +- +-#ifdef USE_USRDIR_PATHS_ONLY +-# define _PATH_DEFPATH_ROOT "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" +-#else +-# define _PATH_DEFPATH_ROOT "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin" +-#endif ++#define _PATH_DEFPATH_ROOT "@TERMUX_PREFIX@/bin:@TERMUX_PREFIX@/bin/applets" + + #define _PATH_HUSHLOGIN ".hushlogin" +-#define _PATH_HUSHLOGINS "/etc/hushlogins" ++#define _PATH_HUSHLOGINS "@TERMUX_PREFIX@/etc/hushlogins" + +-#define _PATH_NOLOGIN_TXT "/etc/nologin.txt" ++#define _PATH_NOLOGIN_TXT "@TERMUX_PREFIX@/etc/nologin.txt" + + #ifndef _PATH_MAILDIR +-# define _PATH_MAILDIR "/var/spool/mail" ++# define _PATH_MAILDIR "@TERMUX_PREFIX@/var/spool/mail" + #endif +-#define _PATH_MOTDFILE "/usr/share/misc/motd:/run/motd:/etc/motd" ++#define _PATH_MOTDFILE "@TERMUX_PREFIX@/share/misc/motd:@TERMUX_PREFIX@/var/run/motd:@TERMUX_PREFIX@/etc/motd" + #ifndef _PATH_NOLOGIN +-# define _PATH_NOLOGIN "/etc/nologin" ++# define _PATH_NOLOGIN "@TERMUX_PREFIX@/etc/nologin" + #endif +-#define _PATH_VAR_NOLOGIN "/var/run/nologin" ++#define _PATH_VAR_NOLOGIN "@TERMUX_PREFIX@/var/run/nologin" + + #ifndef _PATH_LOGIN +-# define _PATH_LOGIN "/bin/login" ++# define _PATH_LOGIN "@TERMUX_PREFIX@/bin/login" + #endif +-#define _PATH_SHUTDOWN "/sbin/shutdown" ++#define _PATH_SHUTDOWN "@TERMUX_PREFIX@/bin/shutdown" + + #define _PATH_TERMCOLORS_DIRNAME "terminal-colors.d" +-#define _PATH_TERMCOLORS_DIR "/etc/" _PATH_TERMCOLORS_DIRNAME ++#define _PATH_TERMCOLORS_DIR "@TERMUX_PREFIX@/etc/" _PATH_TERMCOLORS_DIRNAME + + /* login paths */ +-#define _PATH_PASSWD "/etc/passwd" +-#define _PATH_GSHADOW "/etc/gshadow" +-#define _PATH_GROUP "/etc/group" +-#define _PATH_SHADOW_PASSWD "/etc/shadow" +-#define _PATH_SHELLS "/etc/shells" ++#define _PATH_PASSWD "@TERMUX_PREFIX@/etc/passwd" ++#define _PATH_GSHADOW "@TERMUX_PREFIX@/etc/gshadow" ++#define _PATH_GROUP "@TERMUX_PREFIX@/etc/group" ++#define _PATH_SHADOW_PASSWD "@TERMUX_PREFIX@/etc/shadow" ++#define _PATH_SHELLS "@TERMUX_PREFIX@/etc/shells" + + #ifndef _PATH_BTMP +-# define _PATH_BTMP "/var/log/btmp" ++# define _PATH_BTMP "@TERMUX_PREFIX@/var/log/btmp" + #endif + +-#define _PATH_ISSUE "/etc/issue" ++#define _PATH_ISSUE "@TERMUX_PREFIX@/etc/issue" + #define _PATH_ISSUEDIR _PATH_ISSUE ".d" + +-#define _PATH_OS_RELEASE_ETC "/etc/os-release" +-#define _PATH_OS_RELEASE_USR "/usr/lib/os-release" ++#define _PATH_OS_RELEASE_ETC "@TERMUX_PREFIX@/etc/os-release" ++#define _PATH_OS_RELEASE_USR "@TERMUX_PREFIX@/lib/os-release" + #define _PATH_NUMLOCK_ON _PATH_RUNSTATEDIR "/numlock-on" +-#define _PATH_LOGINDEFS "/etc/login.defs" ++#define _PATH_LOGINDEFS "@TERMUX_PREFIX@/etc/login.defs" + + /* misc paths */ +-#define _PATH_WORDS "/usr/share/dict/words" +-#define _PATH_WORDS_ALT "/usr/share/dict/web2" ++#define _PATH_WORDS "@TERMUX_PREFIX@/share/dict/words" ++#define _PATH_WORDS_ALT "@TERMUX_PREFIX@/share/dict/web2" + + /* mount paths */ +-#define _PATH_FILESYSTEMS "/etc/filesystems" ++#define _PATH_FILESYSTEMS "@TERMUX_PREFIX@/etc/filesystems" + #define _PATH_PROC_SWAPS "/proc/swaps" + #define _PATH_PROC_FILESYSTEMS "/proc/filesystems" + #define _PATH_PROC_MOUNTS "/proc/mounts" +@@ -112,7 +102,7 @@ + # ifdef MOUNTED /* deprecated */ + # define _PATH_MOUNTED MOUNTED + # else +-# define _PATH_MOUNTED "/etc/mtab" ++# define _PATH_MOUNTED "@TERMUX_PREFIX@/etc/mtab" + # endif + #endif + +@@ -120,7 +110,7 @@ + # ifdef MNTTAB /* deprecated */ + # define _PATH_MNTTAB MNTTAB + # else +-# define _PATH_MNTTAB "/etc/fstab" ++# define _PATH_MNTTAB "@TERMUX_PREFIX@/etc/fstab" + # endif + #endif + +@@ -147,11 +137,7 @@ + #define _PATH_DEV_BYPARTUUID "/dev/disk/by-partuuid" + + /* hwclock paths */ +-#ifdef CONFIG_ADJTIME_PATH +-# define _PATH_ADJTIME CONFIG_ADJTIME_PATH +-#else +-# define _PATH_ADJTIME "/etc/adjtime" +-#endif ++#define _PATH_ADJTIME "@TERMUX_PREFIX@/etc/adjtime" + + #ifdef __ia64__ + # define _PATH_RTC_DEV "/dev/efirtc" +diff -uNr util-linux-2.33.1/lib/exec_shell.c util-linux-2.33.1.mod/lib/exec_shell.c +--- util-linux-2.33.1/lib/exec_shell.c 2018-09-20 15:38:55.851404915 +0300 ++++ util-linux-2.33.1.mod/lib/exec_shell.c 2019-03-02 01:26:11.469135901 +0200 +@@ -28,7 +28,7 @@ + + #include "exec_shell.h" + +-#define DEFAULT_SHELL "/bin/sh" ++#define DEFAULT_SHELL "@TERMUX_PREFIX@/bin/sh" + + void __attribute__((__noreturn__)) exec_shell(void) + { +diff -uNr util-linux-2.33.1/libblkid/src/blkidP.h util-linux-2.33.1.mod/libblkid/src/blkidP.h +--- util-linux-2.33.1/libblkid/src/blkidP.h 2018-09-20 15:38:55.853404903 +0300 ++++ util-linux-2.33.1.mod/libblkid/src/blkidP.h 2019-03-02 01:26:11.469135901 +0200 +@@ -288,7 +288,7 @@ + #define BLKID_BIC_FL_CHANGED 0x0004 /* Cache has changed from disk */ + + /* config file */ +-#define BLKID_CONFIG_FILE "/etc/blkid.conf" ++#define BLKID_CONFIG_FILE "@TERMUX_PREFIX@/etc/blkid.conf" + + /* cache file on systemds with /run */ + #define BLKID_RUNTIME_TOPDIR "/run" +@@ -296,7 +296,7 @@ + #define BLKID_CACHE_FILE BLKID_RUNTIME_DIR "/blkid.tab" + + /* old systems */ +-#define BLKID_CACHE_FILE_OLD "/etc/blkid.tab" ++#define BLKID_CACHE_FILE_OLD "@TERMUX_PREFIX@/etc/blkid.tab" + + #define BLKID_PROBE_OK 0 + #define BLKID_PROBE_NONE 1 +diff -uNr util-linux-2.33.1/libblkid/src/topology/dm.c util-linux-2.33.1.mod/libblkid/src/topology/dm.c +--- util-linux-2.33.1/libblkid/src/topology/dm.c 2018-09-20 15:38:55.856404884 +0300 ++++ util-linux-2.33.1.mod/libblkid/src/topology/dm.c 2019-03-02 01:27:49.282834302 +0200 +@@ -30,9 +30,8 @@ + const struct blkid_idmag *mag __attribute__((__unused__))) + { + const char *paths[] = { +- "/usr/local/sbin/dmsetup", +- "/usr/sbin/dmsetup", +- "/sbin/dmsetup" ++ "@TERMUX_PREFIX@/bin/dmsetup", ++ "@TERMUX_PREFIX@/sbin/dmsetup" + }; + int dmpipe[] = { -1, -1 }, stripes, stripesize; + const char *cmd = NULL; +diff -uNr util-linux-2.33.1/libblkid/src/topology/lvm.c util-linux-2.33.1.mod/libblkid/src/topology/lvm.c +--- util-linux-2.33.1/libblkid/src/topology/lvm.c 2017-09-18 12:48:03.563891490 +0300 ++++ util-linux-2.33.1.mod/libblkid/src/topology/lvm.c 2019-03-02 01:28:56.036419326 +0200 +@@ -36,9 +36,8 @@ + const struct blkid_idmag *mag __attribute__((__unused__))) + { + const char *paths[] = { +- "/usr/local/sbin/lvdisplay", +- "/usr/sbin/lvdisplay", +- "/sbin/lvdisplay" ++ "@TERMUX_PREFIX@/bin/lvdisplay", ++ "@TERMUX_PREFIX@/sbin/lvdisplay" + }; + int lvpipe[] = { -1, -1 }, stripes = 0, stripesize = 0; + FILE *stream = NULL; +diff -uNr util-linux-2.33.1/libuuid/src/uuidd.h util-linux-2.33.1.mod/libuuid/src/uuidd.h +--- util-linux-2.33.1/libuuid/src/uuidd.h 2018-06-04 10:57:02.806445781 +0300 ++++ util-linux-2.33.1.mod/libuuid/src/uuidd.h 2019-03-02 01:28:28.309647886 +0200 +@@ -38,7 +38,7 @@ + #define UUIDD_DIR _PATH_RUNSTATEDIR "/uuidd" + #define UUIDD_SOCKET_PATH UUIDD_DIR "/request" + #define UUIDD_PIDFILE_PATH UUIDD_DIR "/uuidd.pid" +-#define UUIDD_PATH "/usr/sbin/uuidd" ++#define UUIDD_PATH "@TERMUX_PREFIX@/bin/uuidd" + + #define UUIDD_OP_GETPID 0 + #define UUIDD_OP_GET_MAXOP 1 +diff -uNr util-linux-2.33.1/libuuid/src/uuidP.h util-linux-2.33.1.mod/libuuid/src/uuidP.h +--- util-linux-2.33.1/libuuid/src/uuidP.h 2018-09-20 15:38:55.870404799 +0300 ++++ util-linux-2.33.1.mod/libuuid/src/uuidP.h 2019-03-02 01:29:29.103211342 +0200 +@@ -37,7 +37,7 @@ + + #include "uuid.h" + +-#define LIBUUID_CLOCK_FILE "/var/lib/libuuid/clock.txt" ++#define LIBUUID_CLOCK_FILE "@TERMUX_PREFIX@/var/lib/libuuid/clock.txt" + + /* + * Offset between 15-Oct-1582 and 1-Jan-70 +diff -uNr util-linux-2.33.1/login-utils/login.c util-linux-2.33.1.mod/login-utils/login.c +--- util-linux-2.33.1/login-utils/login.c 2018-12-07 13:31:45.441532191 +0200 ++++ util-linux-2.33.1.mod/login-utils/login.c 2019-03-02 01:26:11.469135901 +0200 +@@ -1358,7 +1358,7 @@ + + strcpy(buff, "exec "); + strcat(buff, pwd->pw_shell); +- childArgv[childArgc++] = "/bin/sh"; ++ childArgv[childArgc++] = "@TERMUX_PREFIX@/bin/sh"; + childArgv[childArgc++] = "-sh"; + childArgv[childArgc++] = "-c"; + childArgv[childArgc++] = buff; +@@ -1377,7 +1377,7 @@ + + execvp(childArgv[0], childArgv + 1); + +- if (!strcmp(childArgv[0], "/bin/sh")) ++ if (!strcmp(childArgv[0], "@TERMUX_PREFIX@/bin/sh")) + warn(_("couldn't exec shell script")); + else + warn(_("no shell")); +diff -uNr util-linux-2.33.1/login-utils/su-common.c util-linux-2.33.1.mod/login-utils/su-common.c +--- util-linux-2.33.1/login-utils/su-common.c 2018-12-07 13:31:45.441532191 +0200 ++++ util-linux-2.33.1.mod/login-utils/su-common.c 2019-03-02 01:26:11.472469247 +0200 +@@ -96,7 +96,7 @@ + #define is_pam_failure(_rc) ((_rc) != PAM_SUCCESS) + + /* The shell to run if none is given in the user's passwd entry. */ +-#define DEFAULT_SHELL "/bin/sh" ++#define DEFAULT_SHELL "@TERMUX_PREFIX@/bin/sh" + + /* The user to become if none is specified. */ + #define DEFAULT_USER "root" +diff -uNr util-linux-2.33.1/login-utils/sulogin.c util-linux-2.33.1.mod/login-utils/sulogin.c +--- util-linux-2.33.1/login-utils/sulogin.c 2018-09-20 15:38:55.873404781 +0300 ++++ util-linux-2.33.1.mod/login-utils/sulogin.c 2019-03-02 01:26:11.475802592 +0200 +@@ -742,7 +742,7 @@ + if (pwd->pw_shell[0]) + su_shell = pwd->pw_shell; + else +- su_shell = "/bin/sh"; ++ su_shell = "@TERMUX_PREFIX@/bin/sh"; + } + if ((p = strrchr(su_shell, '/')) == NULL) + p = su_shell; +@@ -791,9 +791,9 @@ + execl(su_shell, shell, NULL); + warn(_("failed to execute %s"), su_shell); + +- xsetenv("SHELL", "/bin/sh", 1); +- execl("/bin/sh", profile ? "-sh" : "sh", NULL); +- warn(_("failed to execute %s"), "/bin/sh"); ++ xsetenv("SHELL", "@TERMUX_PREFIX@/bin/sh", 1); ++ execl("@TERMUX_PREFIX@/bin/sh", profile ? "-sh" : "sh", NULL); ++ warn(_("failed to execute %s"), "@TERMUX_PREFIX@/bin/sh"); + } + + static void usage(void) +diff -uNr util-linux-2.33.1/misc-utils/whereis.c util-linux-2.33.1.mod/misc-utils/whereis.c +--- util-linux-2.33.1/misc-utils/whereis.c 2018-06-04 10:57:02.811445742 +0300 ++++ util-linux-2.33.1.mod/misc-utils/whereis.c 2019-03-02 01:26:11.475802592 +0200 +@@ -97,82 +97,23 @@ + }; + + static const char *bindirs[] = { +- "/usr/bin", +- "/usr/sbin", +-#if defined(MULTIARCHTRIPLET) +- "/lib/" MULTIARCHTRIPLET, +- "/usr/lib/" MULTIARCHTRIPLET, +- "/usr/local/lib/" MULTIARCHTRIPLET, +-#endif +- "/usr/lib", +- "/usr/lib64", +- "/bin", ++ "@TERMUX_PREFIX@/bin", ++ "@TERMUX_PREFIX@/bin/applets", ++ "@TERMUX_PREFIX@/libexec", + "/sbin", +- "/etc", +- "/usr/etc", +- "/lib", +- "/lib64", +- "/usr/games", +- "/usr/games/bin", +- "/usr/games/lib", +- "/usr/emacs/etc", +- "/usr/lib/emacs/*/etc", +- "/usr/TeX/bin", +- "/usr/tex/bin", +- "/usr/interviews/bin/LINUX", +- +- "/usr/X11R6/bin", +- "/usr/X386/bin", +- "/usr/bin/X11", +- "/usr/X11/bin", +- "/usr/X11R5/bin", +- +- "/usr/local/bin", +- "/usr/local/sbin", +- "/usr/local/etc", +- "/usr/local/lib", +- "/usr/local/games", +- "/usr/local/games/bin", +- "/usr/local/emacs/etc", +- "/usr/local/TeX/bin", +- "/usr/local/tex/bin", +- "/usr/local/bin/X11", +- +- "/usr/contrib", +- "/usr/hosts", +- "/usr/include", +- +- "/usr/g++-include", +- +- "/usr/ucb", +- "/usr/old", +- "/usr/new", +- "/usr/local", +- "/usr/libexec", +- "/usr/share", +- +- "/opt/*/bin", ++ "/system/bin", ++ "/system/xbin", + NULL + }; + + static const char *mandirs[] = { +- "/usr/man/*", +- "/usr/share/man/*", +- "/usr/X386/man/*", +- "/usr/X11/man/*", +- "/usr/TeX/man/*", +- "/usr/interviews/man/mann", +- "/usr/share/info", ++ "@TERMUX_PREFIX@/share/man/*", ++ "@TERMUX_PREFIX@/share/info", + NULL + }; + + static const char *srcdirs[] = { +- "/usr/src/*", +- "/usr/src/lib/libc/*", +- "/usr/src/lib/libc/net/*", +- "/usr/src/ucb/pascal", +- "/usr/src/ucb/pascal/utilities", +- "/usr/src/undoc", ++ "@TERMUX_PREFIX@/src", + NULL + }; + +diff -uNr util-linux-2.33.1/sys-utils/setarch.c util-linux-2.33.1.mod/sys-utils/setarch.c +--- util-linux-2.33.1/sys-utils/setarch.c 2019-01-04 12:19:16.258737400 +0200 ++++ util-linux-2.33.1.mod/sys-utils/setarch.c 2019-03-02 01:26:44.309257925 +0200 +@@ -315,7 +315,7 @@ + /* Don't use ifdef sparc here, we get "Unrecognized architecture" + * error message later if necessary */ + if (strcmp(arch, "sparc32bash") == 0) { +- shell = "/bin/bash"; ++ shell = "@TERMUX_PREFIX@/bin/bash"; + shell_arg = ""; + goto set_arch; + } +@@ -425,7 +425,7 @@ + verify_arch_domain(target, arch); + + if (!argc) { +- shell = "/bin/sh"; ++ shell = "@TERMUX_PREFIX@/bin/sh"; + shell_arg = "-sh"; + } + if (verbose) { +diff -uNr util-linux-2.33.1/sys-utils/setpriv.c util-linux-2.33.1.mod/sys-utils/setpriv.c +--- util-linux-2.33.1/sys-utils/setpriv.c 2019-01-04 12:47:44.026147542 +0200 ++++ util-linux-2.33.1.mod/sys-utils/setpriv.c 2019-03-02 01:26:11.479135938 +0200 +@@ -58,7 +58,7 @@ + #define SETPRIV_EXIT_PRIVERR 127 /* how we exit when we fail to set privs */ + + /* The shell to set SHELL env.variable if none is given in the user's passwd entry. */ +-#define DEFAULT_SHELL "/bin/sh" ++#define DEFAULT_SHELL "@TERMUX_PREFIX@/bin/sh" + + static gid_t get_group(const char *s, const char *err); + +diff -uNr util-linux-2.33.1/text-utils/more.c util-linux-2.33.1.mod/text-utils/more.c +--- util-linux-2.33.1/text-utils/more.c 2018-09-20 15:38:55.990404066 +0300 ++++ util-linux-2.33.1.mod/text-utils/more.c 2019-03-02 01:26:11.479135938 +0200 +@@ -1877,7 +1877,7 @@ + + } + if ((ctl->shell = getenv("SHELL")) == NULL) +- ctl->shell = "/bin/sh"; ++ ctl->shell = "@TERMUX_PREFIX@/bin/sh"; + } + ctl->no_tty_in = tcgetattr(STDIN_FILENO, &ctl->output_tty); + tcgetattr(STDERR_FILENO, &ctl->output_tty); +diff -uNr util-linux-2.33.1/text-utils/pg.c util-linux-2.33.1.mod/text-utils/pg.c +--- util-linux-2.33.1/text-utils/pg.c 2018-06-04 10:57:02.900445049 +0300 ++++ util-linux-2.33.1.mod/text-utils/pg.c 2019-03-02 01:26:11.482469284 +0200 +@@ -1365,7 +1365,7 @@ + { + const char *sh = getenv("SHELL"); + if (!sh) +- sh = "/bin/sh"; ++ sh = "@TERMUX_PREFIX@/bin/sh"; + if (!nobuf) + fclose(fbuf); + fclose(find); diff --git a/packages/valgrind/build.sh b/packages/valgrind/build.sh index db0325071..22e1e34d9 100644 --- a/packages/valgrind/build.sh +++ b/packages/valgrind/build.sh @@ -16,6 +16,7 @@ termux_step_pre_configure() { if [ "$TERMUX_ARCH" == "aarch64" ]; then cp $TERMUX_PKG_BUILDER_DIR/aarch64-setjmp.S $TERMUX_PKG_SRCDIR autoreconf -if + TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --enable-only64bit" fi if [ "$TERMUX_ARCH" == "arm" ]; then # valgrind doesn't like arm; armv7 works, though. diff --git a/packages/vim-python/build.sh b/packages/vim-python/build.sh index 15c652814..af1a87f82 100644 --- a/packages/vim-python/build.sh +++ b/packages/vim-python/build.sh @@ -5,9 +5,9 @@ TERMUX_PKG_DEPENDS="ncurses, vim-runtime, python" TERMUX_PKG_RECOMMENDS="diffutils" # vim should only be updated every 50 releases on multiples of 50. # Update both vim and vim-python to the same version in one PR. -TERMUX_PKG_VERSION=8.1.0900 +TERMUX_PKG_VERSION=8.1.0950 TERMUX_PKG_REVISION=1 -TERMUX_PKG_SHA256=5a7cfa4dcaa96c41b32332ea5c6b9d1f6b3dc0a5f010ce7095ed15ae37eb0f33 +TERMUX_PKG_SHA256=0c43a741424ac3b15347359247d806d3f62d79eea7e8a20f1bfd04bb2cc89f5c TERMUX_PKG_SRCURL="https://github.com/vim/vim/archive/v${TERMUX_PKG_VERSION}.tar.gz" TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" vim_cv_getcwd_broken=no diff --git a/packages/vim/build.sh b/packages/vim/build.sh index f832a5a29..0c737383b 100644 --- a/packages/vim/build.sh +++ b/packages/vim/build.sh @@ -5,9 +5,9 @@ TERMUX_PKG_DEPENDS="ncurses, vim-runtime" TERMUX_PKG_RECOMMENDS="diffutils" # vim should only be updated every 50 releases on multiples of 50. # Update both vim and vim-python to the same version in one PR. -TERMUX_PKG_VERSION=8.1.0900 +TERMUX_PKG_VERSION=8.1.0950 TERMUX_PKG_REVISION=1 -TERMUX_PKG_SHA256=5a7cfa4dcaa96c41b32332ea5c6b9d1f6b3dc0a5f010ce7095ed15ae37eb0f33 +TERMUX_PKG_SHA256=0c43a741424ac3b15347359247d806d3f62d79eea7e8a20f1bfd04bb2cc89f5c TERMUX_PKG_SRCURL="https://github.com/vim/vim/archive/v${TERMUX_PKG_VERSION}.tar.gz" TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" vim_cv_getcwd_broken=no diff --git a/packages/wcalc/build.sh b/packages/wcalc/build.sh index 6488300df..6e19f46bf 100644 --- a/packages/wcalc/build.sh +++ b/packages/wcalc/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=http://w-calc.sourceforge.net TERMUX_PKG_DESCRIPTION="Capable calculator" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=2.5 -TERMUX_PKG_REVISION=3 +TERMUX_PKG_REVISION=4 TERMUX_PKG_SRCURL=http://downloads.sourceforge.net/w-calc/wcalc-${TERMUX_PKG_VERSION}.tar.bz2 TERMUX_PKG_SHA256=0e2c17c20f935328dcdc6cb4c06250a6732f9ee78adf7a55c01133960d6d28ee TERMUX_PKG_DEPENDS="flex,libmpfr,libgmp,readline" diff --git a/packages/weechat/build.sh b/packages/weechat/build.sh index e435ba9f0..5a8b82f08 100644 --- a/packages/weechat/build.sh +++ b/packages/weechat/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://weechat.org/ TERMUX_PKG_DESCRIPTION="Fast, light and extensible IRC chat client" TERMUX_PKG_LICENSE="GPL-2.0" -TERMUX_PKG_VERSION=2.3 -TERMUX_PKG_SHA256=3c5919c23feb40368fae08f3581448c707e1bdb14c835c06c31b78ebadbb2456 +TERMUX_PKG_VERSION=2.4 +TERMUX_PKG_SHA256=61a6afe9849b96e99c1f3cde612d1748a03c807059dad459e3a6acbc5cf100fd TERMUX_PKG_SRCURL=https://www.weechat.org/files/src/weechat-${TERMUX_PKG_VERSION}.tar.bz2 TERMUX_PKG_DEPENDS="ncurses, libgcrypt, libcurl, libgnutls, libandroid-support" TERMUX_PKG_RM_AFTER_INSTALL="bin/weechat-curses share/man/man1/weechat-headless.1 share/icons" diff --git a/packages/weechat/cmake-FindRuby.cmake.patch b/packages/weechat/cmake-FindRuby.cmake.patch new file mode 100644 index 000000000..2554412cc --- /dev/null +++ b/packages/weechat/cmake-FindRuby.cmake.patch @@ -0,0 +1,12 @@ +diff -u -r ../weechat-2.4/cmake/FindRuby.cmake ./cmake/FindRuby.cmake +--- ../weechat-2.4/cmake/FindRuby.cmake 2019-02-17 07:20:07.000000000 +0000 ++++ ./cmake/FindRuby.cmake 2019-02-24 18:49:43.397998264 +0000 +@@ -33,7 +33,7 @@ + + find_package(PkgConfig) + if(PKG_CONFIG_FOUND) +- pkg_search_module(RUBY ruby-2.5 ruby-2.4 ruby-2.3 ruby-2.2 ruby-2.1 ruby-2.0 ruby-1.9 ruby-1.8) ++ pkg_search_module(RUBY ruby-2.6 ruby-2.5 ruby-2.4 ruby-2.3 ruby-2.2 ruby-2.1 ruby-2.0 ruby-1.9 ruby-1.8) + endif() + + if(RUBY_FOUND) diff --git a/packages/wget/build.sh b/packages/wget/build.sh index 720a3c4b7..7390239b4 100644 --- a/packages/wget/build.sh +++ b/packages/wget/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/wget/ TERMUX_PKG_DESCRIPTION="Commandline tool for retrieving files using HTTP, HTTPS and FTP" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=1.20.1 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=0f63e84dd23dc53ab3ab6f483c3afff8301e54c165783f772101cdd9b1c64928 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/wget/wget-${TERMUX_PKG_VERSION}.tar.lz TERMUX_PKG_DEPENDS="pcre2, openssl, libuuid, libandroid-support, libunistring" diff --git a/packages/wget/tmpdir-path.patch b/packages/wget/tmpdir-path.patch new file mode 100644 index 000000000..9f8b03b88 --- /dev/null +++ b/packages/wget/tmpdir-path.patch @@ -0,0 +1,46 @@ +diff -uNr wget-1.20.1/lib/tempname.c wget-1.20.1.mod/lib/tempname.c +--- wget-1.20.1/lib/tempname.c 2018-12-26 22:08:19.000000000 +0200 ++++ wget-1.20.1.mod/lib/tempname.c 2019-03-01 18:28:01.751293299 +0200 +@@ -32,7 +32,7 @@ + + #include + #ifndef P_tmpdir +-# define P_tmpdir "/tmp" ++# define P_tmpdir "@TERMUX_PREFIX@/tmp" + #endif + #ifndef TMP_MAX + # define TMP_MAX 238328 +@@ -147,8 +147,8 @@ + { + if (direxists (P_tmpdir)) + dir = P_tmpdir; +- else if (strcmp (P_tmpdir, "/tmp") != 0 && direxists ("/tmp")) +- dir = "/tmp"; ++ else if (strcmp (P_tmpdir, "@TERMUX_PREFIX@/tmp") != 0 && direxists ("@TERMUX_PREFIX@/tmp")) ++ dir = "@TERMUX_PREFIX@/tmp"; + else + { + __set_errno (ENOENT); +diff -uNr wget-1.20.1/lib/tmpdir.c wget-1.20.1.mod/lib/tmpdir.c +--- wget-1.20.1/lib/tmpdir.c 2018-12-26 22:08:19.000000000 +0200 ++++ wget-1.20.1.mod/lib/tmpdir.c 2019-03-01 18:27:22.434424043 +0200 +@@ -36,7 +36,7 @@ + # ifdef _P_tmpdir /* native Windows */ + # define P_tmpdir _P_tmpdir + # else +-# define P_tmpdir "/tmp" ++# define P_tmpdir "@TERMUX_PREFIX@/tmp" + # endif + #endif + +@@ -130,8 +130,8 @@ + #endif + if (direxists (P_tmpdir)) + dir = P_tmpdir; +- else if (strcmp (P_tmpdir, "/tmp") != 0 && direxists ("/tmp")) +- dir = "/tmp"; ++ else if (strcmp (P_tmpdir, "@TERMUX_PREFIX@/tmp") != 0 && direxists ("@TERMUX_PREFIX@/tmp")) ++ dir = "@TERMUX_PREFIX@/tmp"; + else + { + __set_errno (ENOENT); diff --git a/packages/wireguard-tools/build.sh b/packages/wireguard-tools/build.sh index 18423ddfa..b6fb18e45 100644 --- a/packages/wireguard-tools/build.sh +++ b/packages/wireguard-tools/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://www.wireguard.com TERMUX_PKG_DESCRIPTION="Tools for the WireGuard secure network tunnel" TERMUX_PKG_LICENSE="GPL-2.0" -TERMUX_PKG_VERSION=0.0.20190123 -TERMUX_PKG_SHA256=edd13c7631af169e3838621b1a1bff3ef73cf7bc778eec2bd55f7c1089ffdf9b +TERMUX_PKG_VERSION=0.0.20190227 +TERMUX_PKG_SHA256=fcdb26fd2692d9e1dee54d14418603c38fbb973a06ce89d08fbe45292ff37f79 TERMUX_PKG_SRCURL=https://git.zx2c4.com/WireGuard/snapshot/WireGuard-$TERMUX_PKG_VERSION.tar.xz TERMUX_PKG_DEPENDS="libmnl, tsu" TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/xorriso/build.sh b/packages/xorriso/build.sh index 27706baee..8f536b19f 100644 --- a/packages/xorriso/build.sh +++ b/packages/xorriso/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/xorriso TERMUX_PKG_DESCRIPTION="Tool for creating ISO files." TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=1.5.0 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=a93fa7ae5bb1902198cddfec25201388156932f36f2f5da829bf4fcae9a6062b TERMUX_PKG_SRCURL=https://www.gnu.org/software/xorriso/xorriso-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="libandroid-support, readline, libbz2" diff --git a/scripts/Dockerfile b/scripts/Dockerfile index d6d438f6e..dc512fceb 100644 --- a/scripts/Dockerfile +++ b/scripts/Dockerfile @@ -29,6 +29,9 @@ RUN apt-get update && \ cd /home/builder/lib/android-sdk/tools && \ rm -Rf emulator* lib* proguard templates +# Switch User +USER builder:builder + # We expect this to be mounted with '-v $PWD:/home/builder/termux-packages': WORKDIR /home/builder/termux-packages diff --git a/scripts/build/configure/termux_step_configure.sh b/scripts/build/configure/termux_step_configure.sh new file mode 100644 index 000000000..80b5c7a61 --- /dev/null +++ b/scripts/build/configure/termux_step_configure.sh @@ -0,0 +1,9 @@ +termux_step_configure() { + if [ "$TERMUX_PKG_FORCE_CMAKE" == 'no' ] && [ -f "$TERMUX_PKG_SRCDIR/configure" ]; then + termux_step_configure_autotools + elif [ -f "$TERMUX_PKG_SRCDIR/CMakeLists.txt" ]; then + termux_step_configure_cmake + elif [ -f "$TERMUX_PKG_SRCDIR/meson.build" ]; then + termux_step_configure_meson + fi +} diff --git a/scripts/build/configure/termux_step_configure_autotools.sh b/scripts/build/configure/termux_step_configure_autotools.sh new file mode 100644 index 000000000..42232ea54 --- /dev/null +++ b/scripts/build/configure/termux_step_configure_autotools.sh @@ -0,0 +1,109 @@ +termux_step_configure_autotools() { + if [ ! -e "$TERMUX_PKG_SRCDIR/configure" ]; then return; fi + + local DISABLE_STATIC="--disable-static" + if [ "$TERMUX_PKG_EXTRA_CONFIGURE_ARGS" != "${TERMUX_PKG_EXTRA_CONFIGURE_ARGS/--enable-static/}" ]; then + # Do not --disable-static if package explicitly enables it (e.g. gdb needs enable-static to build) + DISABLE_STATIC="" + fi + + local DISABLE_NLS="--disable-nls" + if [ "$TERMUX_PKG_EXTRA_CONFIGURE_ARGS" != "${TERMUX_PKG_EXTRA_CONFIGURE_ARGS/--enable-nls/}" ]; then + # Do not --disable-nls if package explicitly enables it (for gettext itself) + DISABLE_NLS="" + fi + + local ENABLE_SHARED="--enable-shared" + if [ "$TERMUX_PKG_EXTRA_CONFIGURE_ARGS" != "${TERMUX_PKG_EXTRA_CONFIGURE_ARGS/--disable-shared/}" ]; then + ENABLE_SHARED="" + fi + + local HOST_FLAG="--host=$TERMUX_HOST_PLATFORM" + if [ "$TERMUX_PKG_EXTRA_CONFIGURE_ARGS" != "${TERMUX_PKG_EXTRA_CONFIGURE_ARGS/--host=/}" ]; then + HOST_FLAG="" + fi + + local LIBEXEC_FLAG="--libexecdir=$TERMUX_PREFIX/libexec" + if [ "$TERMUX_PKG_EXTRA_CONFIGURE_ARGS" != "${TERMUX_PKG_EXTRA_CONFIGURE_ARGS/--libexecdir=/}" ]; then + LIBEXEC_FLAG="" + fi + + local QUIET_BUILD= + if [ $TERMUX_QUIET_BUILD = true ]; then + QUIET_BUILD="--enable-silent-rules --silent --quiet" + fi + + # Some packages provides a $PKG-config script which some configure scripts pickup instead of pkg-config: + mkdir "$TERMUX_PKG_TMPDIR/config-scripts" + for f in $TERMUX_PREFIX/bin/*config; do + test -f "$f" && cp "$f" "$TERMUX_PKG_TMPDIR/config-scripts" + done + export PATH=$TERMUX_PKG_TMPDIR/config-scripts:$PATH + + # Avoid gnulib wrapping of functions when cross compiling. See + # http://wiki.osdev.org/Cross-Porting_Software#Gnulib + # https://gitlab.com/sortix/sortix/wikis/Gnulib + # https://github.com/termux/termux-packages/issues/76 + local AVOID_GNULIB="" + AVOID_GNULIB+=" ac_cv_func_nl_langinfo=yes" + AVOID_GNULIB+=" ac_cv_func_calloc_0_nonnull=yes" + AVOID_GNULIB+=" ac_cv_func_chown_works=yes" + AVOID_GNULIB+=" ac_cv_func_getgroups_works=yes" + AVOID_GNULIB+=" ac_cv_func_malloc_0_nonnull=yes" + AVOID_GNULIB+=" ac_cv_func_realloc_0_nonnull=yes" + AVOID_GNULIB+=" am_cv_func_working_getline=yes" + AVOID_GNULIB+=" gl_cv_func_dup2_works=yes" + AVOID_GNULIB+=" gl_cv_func_fcntl_f_dupfd_cloexec=yes" + AVOID_GNULIB+=" gl_cv_func_fcntl_f_dupfd_works=yes" + AVOID_GNULIB+=" gl_cv_func_fnmatch_posix=yes" + AVOID_GNULIB+=" gl_cv_func_getcwd_abort_bug=no" + AVOID_GNULIB+=" gl_cv_func_getcwd_null=yes" + AVOID_GNULIB+=" gl_cv_func_getcwd_path_max=yes" + AVOID_GNULIB+=" gl_cv_func_getcwd_posix_signature=yes" + AVOID_GNULIB+=" gl_cv_func_gettimeofday_clobber=no" + AVOID_GNULIB+=" gl_cv_func_gettimeofday_posix_signature=yes" + AVOID_GNULIB+=" gl_cv_func_link_works=yes" + AVOID_GNULIB+=" gl_cv_func_lstat_dereferences_slashed_symlink=yes" + AVOID_GNULIB+=" gl_cv_func_malloc_0_nonnull=yes" + AVOID_GNULIB+=" gl_cv_func_memchr_works=yes" + AVOID_GNULIB+=" gl_cv_func_mkdir_trailing_dot_works=yes" + AVOID_GNULIB+=" gl_cv_func_mkdir_trailing_slash_works=yes" + AVOID_GNULIB+=" gl_cv_func_mkfifo_works=yes" + AVOID_GNULIB+=" gl_cv_func_mknod_works=yes" + AVOID_GNULIB+=" gl_cv_func_realpath_works=yes" + AVOID_GNULIB+=" gl_cv_func_select_detects_ebadf=yes" + AVOID_GNULIB+=" gl_cv_func_snprintf_posix=yes" + AVOID_GNULIB+=" gl_cv_func_snprintf_retval_c99=yes" + AVOID_GNULIB+=" gl_cv_func_snprintf_truncation_c99=yes" + AVOID_GNULIB+=" gl_cv_func_stat_dir_slash=yes" + AVOID_GNULIB+=" gl_cv_func_stat_file_slash=yes" + AVOID_GNULIB+=" gl_cv_func_strerror_0_works=yes" + AVOID_GNULIB+=" gl_cv_func_symlink_works=yes" + AVOID_GNULIB+=" gl_cv_func_tzset_clobber=no" + AVOID_GNULIB+=" gl_cv_func_unlink_honors_slashes=yes" + AVOID_GNULIB+=" gl_cv_func_unlink_honors_slashes=yes" + AVOID_GNULIB+=" gl_cv_func_vsnprintf_posix=yes" + AVOID_GNULIB+=" gl_cv_func_vsnprintf_zerosize_c99=yes" + AVOID_GNULIB+=" gl_cv_func_wcwidth_works=yes" + AVOID_GNULIB+=" gl_cv_func_working_getdelim=yes" + AVOID_GNULIB+=" gl_cv_func_working_mkstemp=yes" + AVOID_GNULIB+=" gl_cv_func_working_mktime=yes" + AVOID_GNULIB+=" gl_cv_func_working_strerror=yes" + AVOID_GNULIB+=" gl_cv_header_working_fcntl_h=yes" + AVOID_GNULIB+=" gl_cv_C_locale_sans_EILSEQ=yes" + + # NOTE: We do not want to quote AVOID_GNULIB as we want word expansion. + # shellcheck disable=SC2086 + env $AVOID_GNULIB "$TERMUX_PKG_SRCDIR/configure" \ + --disable-dependency-tracking \ + --prefix=$TERMUX_PREFIX \ + --libdir=$TERMUX_PREFIX/lib \ + --disable-rpath --disable-rpath-hack \ + $HOST_FLAG \ + $TERMUX_PKG_EXTRA_CONFIGURE_ARGS \ + $DISABLE_NLS \ + $ENABLE_SHARED \ + $DISABLE_STATIC \ + $LIBEXEC_FLAG \ + $QUIET_BUILD +} diff --git a/scripts/build/configure/termux_step_configure_cmake.sh b/scripts/build/configure/termux_step_configure_cmake.sh new file mode 100644 index 000000000..a8ba47db7 --- /dev/null +++ b/scripts/build/configure/termux_step_configure_cmake.sh @@ -0,0 +1,45 @@ +termux_step_configure_cmake() { + termux_setup_cmake + + local TOOLCHAIN_ARGS="-DCMAKE_ANDROID_STANDALONE_TOOLCHAIN=$TERMUX_STANDALONE_TOOLCHAIN" + local BUILD_TYPE=MinSizeRel + test -n "$TERMUX_DEBUG" && BUILD_TYPE=Debug + + local CMAKE_PROC=$TERMUX_ARCH + test $CMAKE_PROC == "arm" && CMAKE_PROC='armv7-a' + local MAKE_PROGRAM_PATH + if [ $TERMUX_CMAKE_BUILD = Ninja ]; then + termux_setup_ninja + MAKE_PROGRAM_PATH=$(which ninja) + else + MAKE_PROGRAM_PATH=$(which make) + fi + CFLAGS+=" --target=$CCTERMUX_HOST_PLATFORM -fno-addrsig" + CXXFLAGS+=" --target=$CCTERMUX_HOST_PLATFORM -fno-addrsig" + LDFLAGS+=" --target=$CCTERMUX_HOST_PLATFORM" + + # XXX: CMAKE_{AR,RANLIB} needed for at least jsoncpp build to not + # pick up cross compiled binutils tool in $PREFIX/bin: + cmake -G "$TERMUX_CMAKE_BUILD" "$TERMUX_PKG_SRCDIR" \ + -DCMAKE_AR="$(which $AR)" \ + -DCMAKE_UNAME="$(which uname)" \ + -DCMAKE_RANLIB="$(which $RANLIB)" \ + -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ + -DCMAKE_CROSSCOMPILING=True \ + -DCMAKE_C_FLAGS="$CFLAGS $CPPFLAGS" \ + -DCMAKE_CXX_FLAGS="$CXXFLAGS $CPPFLAGS" \ + -DCMAKE_LINKER="$TERMUX_STANDALONE_TOOLCHAIN/bin/$LD $LDFLAGS" \ + -DCMAKE_FIND_ROOT_PATH=$TERMUX_PREFIX \ + -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \ + -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \ + -DCMAKE_INSTALL_PREFIX=$TERMUX_PREFIX \ + -DCMAKE_MAKE_PROGRAM=$MAKE_PROGRAM_PATH \ + -DCMAKE_SYSTEM_PROCESSOR=$CMAKE_PROC \ + -DCMAKE_SYSTEM_NAME=Android \ + -DCMAKE_SYSTEM_VERSION=$TERMUX_PKG_API_LEVEL \ + -DCMAKE_SKIP_INSTALL_RPATH=ON \ + -DCMAKE_USE_SYSTEM_LIBRARIES=True \ + -DDOXYGEN_EXECUTABLE= \ + -DBUILD_TESTING=OFF \ + $TERMUX_PKG_EXTRA_CONFIGURE_ARGS $TOOLCHAIN_ARGS +} diff --git a/scripts/build/configure/termux_step_configure_meson.sh b/scripts/build/configure/termux_step_configure_meson.sh new file mode 100644 index 000000000..0964c14a3 --- /dev/null +++ b/scripts/build/configure/termux_step_configure_meson.sh @@ -0,0 +1,12 @@ +termux_step_configure_meson() { + termux_setup_meson + CC=gcc CXX=g++ $TERMUX_MESON \ + $TERMUX_PKG_SRCDIR \ + $TERMUX_PKG_BUILDDIR \ + --cross-file $TERMUX_MESON_CROSSFILE \ + --prefix $TERMUX_PREFIX \ + --libdir lib \ + --buildtype minsize \ + --strip \ + $TERMUX_PKG_EXTRA_CONFIGURE_ARGS +} diff --git a/scripts/build/setup/termux_setup_cmake.sh b/scripts/build/setup/termux_setup_cmake.sh new file mode 100644 index 000000000..bcbc385b1 --- /dev/null +++ b/scripts/build/setup/termux_setup_cmake.sh @@ -0,0 +1,19 @@ +termux_setup_cmake() { + local TERMUX_CMAKE_MAJORVESION=3.13 + local TERMUX_CMAKE_MINORVERSION=4 + 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 + local TERMUX_CMAKE_FOLDER=$TERMUX_COMMON_CACHEDIR/cmake-$TERMUX_CMAKE_VERSION + if [ ! -d "$TERMUX_CMAKE_FOLDER" ]; then + termux_download https://cmake.org/files/v$TERMUX_CMAKE_MAJORVESION/$TERMUX_CMAKE_TARNAME \ + "$TERMUX_CMAKE_TARFILE" \ + 563a39e0a7c7368f81bfa1c3aff8b590a0617cdfe51177ddc808f66cc0866c76 + 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" \ + "$TERMUX_CMAKE_FOLDER" + fi + export PATH=$TERMUX_CMAKE_FOLDER/bin:$PATH + export CMAKE_INSTALL_ALWAYS=1 +} diff --git a/scripts/build/setup/termux_setup_golang.sh b/scripts/build/setup/termux_setup_golang.sh new file mode 100644 index 000000000..24578c369 --- /dev/null +++ b/scripts/build/setup/termux_setup_golang.sh @@ -0,0 +1,36 @@ +# Utility function for golang-using packages to setup a go toolchain. +termux_setup_golang() { + export GOOS=android + export CGO_ENABLED=1 + export GO_LDFLAGS="-extldflags=-pie" + if [ "$TERMUX_ARCH" = "arm" ]; then + export GOARCH=arm + export GOARM=7 + elif [ "$TERMUX_ARCH" = "i686" ]; then + export GOARCH=386 + export GO386=sse2 + elif [ "$TERMUX_ARCH" = "aarch64" ]; then + export GOARCH=arm64 + elif [ "$TERMUX_ARCH" = "x86_64" ]; then + export GOARCH=amd64 + else + termux_error_exit "Unsupported arch: $TERMUX_ARCH" + fi + + local TERMUX_GO_VERSION=go1.11.5 + local TERMUX_GO_PLATFORM=linux-amd64 + + local TERMUX_BUILDGO_FOLDER=$TERMUX_COMMON_CACHEDIR/${TERMUX_GO_VERSION} + export GOROOT=$TERMUX_BUILDGO_FOLDER + export PATH=$GOROOT/bin:$PATH + + if [ -d "$TERMUX_BUILDGO_FOLDER" ]; then return; fi + + local TERMUX_BUILDGO_TAR=$TERMUX_COMMON_CACHEDIR/${TERMUX_GO_VERSION}.${TERMUX_GO_PLATFORM}.tar.gz + 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" \ + ff54aafedff961eb94792487e827515da683d61a5f9482f668008832631e5d25 + + ( cd "$TERMUX_COMMON_CACHEDIR"; tar xf "$TERMUX_BUILDGO_TAR"; mv go "$TERMUX_BUILDGO_FOLDER"; rm "$TERMUX_BUILDGO_TAR" ) +} diff --git a/scripts/build/setup/termux_setup_meson.sh b/scripts/build/setup/termux_setup_meson.sh new file mode 100644 index 000000000..0c54185d7 --- /dev/null +++ b/scripts/build/setup/termux_setup_meson.sh @@ -0,0 +1,93 @@ +termux_setup_meson() { + termux_setup_ninja + local MESON_VERSION=0.49.2 + local MESON_FOLDER=$TERMUX_COMMON_CACHEDIR/meson-$MESON_VERSION-v1 + if [ ! -d "$MESON_FOLDER" ]; then + local MESON_TAR_NAME=meson-$MESON_VERSION.tar.gz + local MESON_TAR_FILE=$TERMUX_PKG_TMPDIR/$MESON_TAR_NAME + local MESON_TMP_FOLDER=$TERMUX_PKG_TMPDIR/meson-$MESON_VERSION + termux_download \ + "https://github.com/mesonbuild/meson/releases/download/$MESON_VERSION/meson-$MESON_VERSION.tar.gz" \ + "$MESON_TAR_FILE" \ + ef9f14326ec1e30d3ba1a26df0f92826ede5a79255ad723af78a2691c37109fd + tar xf "$MESON_TAR_FILE" -C "$TERMUX_PKG_TMPDIR" + mv "$MESON_TMP_FOLDER" "$MESON_FOLDER" + fi + TERMUX_MESON="$MESON_FOLDER/meson.py" + TERMUX_MESON_CROSSFILE=$TERMUX_PKG_TMPDIR/meson-crossfile-$TERMUX_ARCH.txt + local MESON_CPU MESON_CPU_FAMILY + if [ "$TERMUX_ARCH" = "arm" ]; then + MESON_CPU_FAMILY="arm" + MESON_CPU="armv7" + elif [ "$TERMUX_ARCH" = "i686" ]; then + MESON_CPU_FAMILY="x86" + MESON_CPU="i686" + elif [ "$TERMUX_ARCH" = "x86_64" ]; then + MESON_CPU_FAMILY="x86_64" + MESON_CPU="x86_64" + elif [ "$TERMUX_ARCH" = "aarch64" ]; then + MESON_CPU_FAMILY="arm" + MESON_CPU="aarch64" + else + termux_error_exit "Unsupported arch: $TERMUX_ARCH" + fi + + local CONTENT="" + echo "[binaries]" > $TERMUX_MESON_CROSSFILE + echo "ar = '$AR'" >> $TERMUX_MESON_CROSSFILE + echo "c = '$CC'" >> $TERMUX_MESON_CROSSFILE + echo "cpp = '$CXX'" >> $TERMUX_MESON_CROSSFILE + echo "ld = '$LD'" >> $TERMUX_MESON_CROSSFILE + echo "pkgconfig = '$PKG_CONFIG'" >> $TERMUX_MESON_CROSSFILE + echo "strip = '$STRIP'" >> $TERMUX_MESON_CROSSFILE + + echo '' >> $TERMUX_MESON_CROSSFILE + echo "[properties]" >> $TERMUX_MESON_CROSSFILE + echo "needs_exe_wrapper = true" >> $TERMUX_MESON_CROSSFILE + + echo -n "c_args = [" >> $TERMUX_MESON_CROSSFILE + local word first=true + for word in $CFLAGS $CPPFLAGS; do + if [ "$first" = "true" ]; then + first=false + else + echo -n ", " >> $TERMUX_MESON_CROSSFILE + fi + echo -n "'$word'" >> $TERMUX_MESON_CROSSFILE + done + echo ']' >> $TERMUX_MESON_CROSSFILE + + echo -n "cpp_args = [" >> $TERMUX_MESON_CROSSFILE + local word first=true + for word in $CXXFLAGS $CPPFLAGS; do + if [ "$first" = "true" ]; then + first=false + else + echo -n ", " >> $TERMUX_MESON_CROSSFILE + fi + echo -n "'$word'" >> $TERMUX_MESON_CROSSFILE + done + echo ']' >> $TERMUX_MESON_CROSSFILE + + local property + for property in c_link_args cpp_link_args; do + echo -n "$property = [" >> $TERMUX_MESON_CROSSFILE + first=true + for word in $LDFLAGS; do + if [ "$first" = "true" ]; then + first=false + else + echo -n ", " >> $TERMUX_MESON_CROSSFILE + fi + echo -n "'$word'" >> $TERMUX_MESON_CROSSFILE + done + echo ']' >> $TERMUX_MESON_CROSSFILE + done + + echo '' >> $TERMUX_MESON_CROSSFILE + echo "[host_machine]" >> $TERMUX_MESON_CROSSFILE + echo "cpu_family = '$MESON_CPU_FAMILY'" >> $TERMUX_MESON_CROSSFILE + echo "cpu = '$MESON_CPU'" >> $TERMUX_MESON_CROSSFILE + echo "endian = 'little'" >> $TERMUX_MESON_CROSSFILE + echo "system = 'android'" >> $TERMUX_MESON_CROSSFILE +} diff --git a/scripts/build/setup/termux_setup_ninja.sh b/scripts/build/setup/termux_setup_ninja.sh new file mode 100644 index 000000000..850ab426a --- /dev/null +++ b/scripts/build/setup/termux_setup_ninja.sh @@ -0,0 +1,14 @@ +termux_setup_ninja() { + local NINJA_VERSION=1.9.0 + 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" \ + 609cc10d0f226a4d9050e4d4a57be9ea706858cce64b9132102c3789c868da92 + unzip "$NINJA_ZIP_FILE" -d "$NINJA_FOLDER" + chmod 755 $NINJA_FOLDER/ninja + fi + export PATH=$NINJA_FOLDER:$PATH +} diff --git a/scripts/build/setup/termux_setup_rust.sh b/scripts/build/setup/termux_setup_rust.sh new file mode 100644 index 000000000..50907296f --- /dev/null +++ b/scripts/build/setup/termux_setup_rust.sh @@ -0,0 +1,17 @@ +termux_setup_rust() { + if [ $TERMUX_ARCH = "arm" ]; then + CARGO_TARGET_NAME=armv7-linux-androideabi + else + CARGO_TARGET_NAME=$TERMUX_ARCH-linux-android + fi + + local ENV_NAME=CARGO_TARGET_${CARGO_TARGET_NAME^^}_LINKER + ENV_NAME=${ENV_NAME//-/_} + export $ENV_NAME=$CC + + curl https://sh.rustup.rs -sSf > $TERMUX_PKG_TMPDIR/rustup.sh + sh $TERMUX_PKG_TMPDIR/rustup.sh -y --default-toolchain 1.32.0 + export PATH=$HOME/.cargo/bin:$PATH + + rustup target add $CARGO_TARGET_NAME +} diff --git a/scripts/build/termux_download.sh b/scripts/build/termux_download.sh new file mode 100755 index 000000000..4f729d506 --- /dev/null +++ b/scripts/build/termux_download.sh @@ -0,0 +1,48 @@ +termux_download() { + if [ $# != 3 ]; then + termux_error_exit "termux_download(): Invalid arguments - expected \$URL \$DESTINATION \$CHECKSUM" + fi + local URL="$1" + local DESTINATION="$2" + local CHECKSUM="$3" + + if [ -f "$DESTINATION" ] && [ "$CHECKSUM" != "SKIP_CHECKSUM" ]; then + # Keep existing file if checksum matches. + local EXISTING_CHECKSUM + EXISTING_CHECKSUM=$(sha256sum "$DESTINATION" | cut -f 1 -d ' ') + if [ "$EXISTING_CHECKSUM" = "$CHECKSUM" ]; then return; fi + fi + + local TMPFILE + TMPFILE=$(mktemp "$TERMUX_PKG_TMPDIR/download.$TERMUX_PKG_NAME.XXXXXXXXX") + echo "Downloading ${URL}" + local TRYMAX=6 + for try in $(seq 1 $TRYMAX); do + if curl -L --fail --retry 2 -o "$TMPFILE" "$URL"; then + local ACTUAL_CHECKSUM + ACTUAL_CHECKSUM=$(sha256sum "$TMPFILE" | cut -f 1 -d ' ') + if [ "$CHECKSUM" != "SKIP_CHECKSUM" ]; then + if [ "$CHECKSUM" != "$ACTUAL_CHECKSUM" ]; then + >&2 printf "Wrong checksum for %s:\nExpected: %s\nActual: %s\n" \ + "$URL" "$CHECKSUM" "$ACTUAL_CHECKSUM" + exit 1 + fi + else + printf "WARNING: No checksum check for %s:\nActual: %s\n" \ + "$URL" "$ACTUAL_CHECKSUM" + fi + mv "$TMPFILE" "$DESTINATION" + return + else + echo "Download of $URL failed (attempt $try/$TRYMAX)" 1>&2 + sleep 45 + fi + done + + termux_error_exit "Failed to download $URL" +} + +# Make script standalone executable as well as sourceable +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + termux_download "$@" +fi diff --git a/scripts/build/termux_download_deb.sh b/scripts/build/termux_download_deb.sh new file mode 100755 index 000000000..5b4351b81 --- /dev/null +++ b/scripts/build/termux_download_deb.sh @@ -0,0 +1,33 @@ +termux_download_deb() { + local PACKAGE=$1 + local PACKAGE_ARCH=$2 + local VERSION=$3 + local DEB_FILE=${PACKAGE}_${VERSION}_${PACKAGE_ARCH}.deb + PKG_HASH="" + for idx in $(seq ${#TERMUX_REPO_URL[@]}); do + local TERMUX_REPO_NAME=$(echo ${TERMUX_REPO_URL[$idx-1]} | sed -e 's%https://%%g' -e 's%http://%%g' -e 's%/%-%g') + local PACKAGE_FILE_PATH="${TERMUX_REPO_NAME}-${TERMUX_REPO_DISTRIBUTION[$idx-1]}-${TERMUX_REPO_COMPONENT[$idx-1]}-Packages" + if [ -f "${TERMUX_COMMON_CACHEDIR}-${PACKAGE_ARCH}/${PACKAGE_FILE_PATH}" ]; then + read -d "\n" PKG_PATH PKG_HASH <<<$(./scripts/get_hash_from_file.py "${TERMUX_COMMON_CACHEDIR}-${PACKAGE_ARCH}/$PACKAGE_FILE_PATH" $PACKAGE $VERSION) + if [ ! -z "$PKG_HASH" ]; then + if [ ! "$TERMUX_QUIET_BUILD" = true ]; then + echo "Found $PACKAGE in ${TERMUX_REPO_URL[$idx-1]}/dists/${TERMUX_REPO_DISTRIBUTION[$idx-1]}" + fi + break + fi + fi + done + if [ "$PKG_HASH" = "" ]; then + return 1 + else + termux_download ${TERMUX_REPO_URL[$idx-1]}/${PKG_PATH} \ + $TERMUX_COMMON_CACHEDIR-$PACKAGE_ARCH/${DEB_FILE} \ + $PKG_HASH + return 0 + fi +} + +# Make script standalone executable as well as sourceable +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + termux_download "$@" +fi diff --git a/scripts/build/termux_error_exit.sh b/scripts/build/termux_error_exit.sh new file mode 100644 index 000000000..487a19112 --- /dev/null +++ b/scripts/build/termux_error_exit.sh @@ -0,0 +1,8 @@ +termux_error_exit() { + echo "ERROR: $*" 1>&2 + exit 1 +} + +if [ "$(uname -o)" = Android ]; then + termux_error_exit "On-device builds are not supported - see README.md" +fi diff --git a/scripts/termux_extract_dep_info.sh b/scripts/build/termux_extract_dep_info.sh old mode 100644 new mode 100755 similarity index 67% rename from scripts/termux_extract_dep_info.sh rename to scripts/build/termux_extract_dep_info.sh index 91b99c301..49d3be7d2 --- a/scripts/termux_extract_dep_info.sh +++ b/scripts/build/termux_extract_dep_info.sh @@ -1,13 +1,14 @@ termux_extract_dep_info() { - package=$1 - if [ ! -d packages/$package ] && [ -f packages/*/${package}.subpackage.sh ]; then + PKG=$1 + PKG_DIR=$2 + if [ "$PKG" != "$(basename ${PKG_DIR})" ]; then # We are dealing with a subpackage TERMUX_ARCH=$( - # set TERMUX_SUBPKG_PLATFORM_INDEPENDENT to mother package's value and override if needed + # set TERMUX_SUBPKG_PLATFORM_INDEPENDENT to parent package's value and override if needed TERMUX_PKG_PLATFORM_INDEPENDENT="" - source $(dirname $(find packages/ -name "$package.subpackage.sh"))/build.sh + source ${PKG_DIR}/build.sh TERMUX_SUBPKG_PLATFORM_INDEPENDENT=$TERMUX_PKG_PLATFORM_INDEPENDENT - source $(find packages/ -name "$package.subpackage.sh") + source ${PKG_DIR}/${PKG}.subpackage.sh if [ "$TERMUX_SUBPKG_PLATFORM_INDEPENDENT" = yes ]; then echo all else @@ -15,10 +16,9 @@ termux_extract_dep_info() { fi ) - package=$(basename $(dirname $(find packages/ -name "$package.subpackage.sh"))) - elif [ "${package/-dev/}-dev" == "${package}" ]; then + elif [ "${PKG/-dev/}-dev" == "${PKG}" ]; then # dev package - package=${package/-dev/} + PKG=${PKG/-dev/} fi ( # Reset TERMUX_PKG_PLATFORM_INDEPENDENT and TERMUX_PKG_REVISION since these aren't @@ -26,7 +26,7 @@ termux_extract_dep_info() { # deps that should have the default values TERMUX_PKG_PLATFORM_INDEPENDENT="" TERMUX_PKG_REVISION="0" - source packages/$package/build.sh + source ${PKG_DIR}/build.sh if [ "$TERMUX_PKG_PLATFORM_INDEPENDENT" = yes ]; then TERMUX_ARCH=all; fi if [ "$TERMUX_PKG_REVISION" != "0" ] || [ "$TERMUX_PKG_VERSION" != "${TERMUX_PKG_VERSION/-/}" ]; then TERMUX_PKG_VERSION+="-$TERMUX_PKG_REVISION" diff --git a/scripts/build/termux_get_repo_files.sh b/scripts/build/termux_get_repo_files.sh new file mode 100644 index 000000000..3f7ed2006 --- /dev/null +++ b/scripts/build/termux_get_repo_files.sh @@ -0,0 +1,70 @@ +termux_get_repo_files() { + # Ensure folders present (but not $TERMUX_PKG_SRCDIR, it will be created in build) + mkdir -p "$TERMUX_COMMON_CACHEDIR" \ + "$TERMUX_COMMON_CACHEDIR-$TERMUX_ARCH" \ + "$TERMUX_COMMON_CACHEDIR-all" \ + "$TERMUX_DEBDIR" \ + "$TERMUX_PKG_BUILDDIR" \ + "$TERMUX_PKG_PACKAGEDIR" \ + "$TERMUX_PKG_TMPDIR" \ + "$TERMUX_PKG_CACHEDIR" \ + "$TERMUX_PKG_MASSAGEDIR" \ + $TERMUX_PREFIX/{bin,etc,lib,libexec,share,tmp,include} + if [ "$TERMUX_INSTALL_DEPS" = true ]; then + if [ "$TERMUX_NO_CLEAN" = false ]; then + # Remove all previously extracted/built files from $TERMUX_PREFIX: + rm -rf $TERMUX_PREFIX + rm -f /data/data/.built-packages/* + # Setup bootstrap + if [ $TERMUX_ARCH == aarch64 ]; then + local bootstrap_sha256=2944ad699814329007d1f9c056e7c8323243c8b4a257cbd05904216f89fc3746 + elif [ $TERMUX_ARCH == i686 ]; then + local bootstrap_sha256=8f4dee0b1e161689b60f330ac0cc813b56ab479f2cd789eb8459165a3be13bdb + elif [ $TERMUX_ARCH == arm ]; then + local bootstrap_sha256=f471c0af326677d87ca4926d54860d10d751dd4f8d615d5b1de902841601b41e + elif [ $TERMUX_ARCH == x86_64 ]; then + local bootstrap_sha256=93384f0343c13f604dbacd069276291bd7042fc6d42c6d7514c7e573d968c614 + fi + termux_download https://termux.net/bootstrap/bootstrap-${TERMUX_ARCH}.zip \ + ${TERMUX_COMMON_CACHEDIR}/bootstrap-${TERMUX_ARCH}.zip \ + $bootstrap_sha256 + unzip -qo ${TERMUX_COMMON_CACHEDIR}/bootstrap-${TERMUX_ARCH}.zip -d $TERMUX_PREFIX + ( + cd $TERMUX_PREFIX + while read link; do + ln -sf ${link/←/ } + done DEBIAN/control <<-HERE + Package: $TERMUX_PKG_NAME + Architecture: ${TERMUX_ARCH} + Installed-Size: ${TERMUX_PKG_INSTALLSIZE} + Maintainer: $TERMUX_PKG_MAINTAINER + Version: $TERMUX_PKG_FULLVERSION + Homepage: $TERMUX_PKG_HOMEPAGE + HERE + test ! -z "$TERMUX_PKG_BREAKS" && echo "Breaks: $TERMUX_PKG_BREAKS" >> DEBIAN/control + test ! -z "$TERMUX_PKG_DEPENDS" && echo "Depends: $TERMUX_PKG_DEPENDS" >> DEBIAN/control + test ! -z "$TERMUX_PKG_ESSENTIAL" && echo "Essential: yes" >> DEBIAN/control + test ! -z "$TERMUX_PKG_CONFLICTS" && echo "Conflicts: $TERMUX_PKG_CONFLICTS" >> DEBIAN/control + test ! -z "$TERMUX_PKG_RECOMMENDS" && echo "Recommends: $TERMUX_PKG_RECOMMENDS" >> DEBIAN/control + test ! -z "$TERMUX_PKG_REPLACES" && echo "Replaces: $TERMUX_PKG_REPLACES" >> DEBIAN/control + test ! -z "$TERMUX_PKG_PROVIDES" && echo "Provides: $TERMUX_PKG_PROVIDES" >> DEBIAN/control + test ! -z "$TERMUX_PKG_SUGGESTS" && echo "Suggests: $TERMUX_PKG_SUGGESTS" >> DEBIAN/control + echo "Description: $TERMUX_PKG_DESCRIPTION" >> DEBIAN/control + + # Create DEBIAN/conffiles (see https://www.debian.org/doc/debian-policy/ap-pkg-conffiles.html): + for f in $TERMUX_PKG_CONFFILES; do echo "$TERMUX_PREFIX/$f" >> DEBIAN/conffiles; done + + # Allow packages to create arbitrary control files. + # XXX: Should be done in a better way without a function? + cd DEBIAN + termux_step_create_debscripts + + # Create control.tar.gz + tar -czf "$TERMUX_PKG_PACKAGEDIR/control.tar.gz" . + + test ! -f "$TERMUX_COMMON_CACHEDIR/debian-binary" && echo "2.0" > "$TERMUX_COMMON_CACHEDIR/debian-binary" + TERMUX_PKG_DEBFILE=$TERMUX_DEBDIR/${TERMUX_PKG_NAME}${DEBUG}_${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.gz" \ + "$TERMUX_PKG_PACKAGEDIR/data.tar.xz" +} diff --git a/scripts/build/termux_step_extract_into_massagedir.sh b/scripts/build/termux_step_extract_into_massagedir.sh new file mode 100644 index 000000000..9ad1c8c09 --- /dev/null +++ b/scripts/build/termux_step_extract_into_massagedir.sh @@ -0,0 +1,15 @@ +termux_step_extract_into_massagedir() { + local TARBALL_ORIG=$TERMUX_PKG_PACKAGEDIR/${TERMUX_PKG_NAME}_orig.tar.gz + + # Build diff tar with what has changed during the build: + cd $TERMUX_PREFIX + tar -N "$TERMUX_BUILD_TS_FILE" \ + --exclude='lib/libc++_shared.so' --exclude='lib/libstdc++.so' \ + -czf "$TARBALL_ORIG" . + + # Extract tar in order to massage it + mkdir -p "$TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX" + cd "$TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX" + tar xf "$TARBALL_ORIG" + rm "$TARBALL_ORIG" +} diff --git a/scripts/build/termux_step_extract_package.sh b/scripts/build/termux_step_extract_package.sh new file mode 100644 index 000000000..1fed93567 --- /dev/null +++ b/scripts/build/termux_step_extract_package.sh @@ -0,0 +1,38 @@ +termux_step_extract_package() { + if [ -z "${TERMUX_PKG_SRCURL:=""}" ] || [ -n "${TERMUX_PKG_SKIP_SRC_EXTRACT:=""}" ]; then + mkdir -p "$TERMUX_PKG_SRCDIR" + return + fi + cd "$TERMUX_PKG_TMPDIR" + local PKG_SRCURL=(${TERMUX_PKG_SRCURL[@]}) + local PKG_SHA256=(${TERMUX_PKG_SHA256[@]}) + if [ ! ${#PKG_SRCURL[@]} == ${#PKG_SHA256[@]} ] && [ ! ${#PKG_SHA256[@]} == 0 ]; then + termux_error_exit "Error: length of TERMUX_PKG_SRCURL isn't equal to length of TERMUX_PKG_SHA256." + fi + # STRIP=1 extracts archives straight into TERMUX_PKG_SRCDIR while STRIP=0 puts them in subfolders. zip has same behaviour per default + # If this isn't desired then this can be fixed in termux_step_post_extract_package. + local STRIP=1 + for i in $(seq 0 $(( ${#PKG_SRCURL[@]}-1 ))); do + test "$i" -gt 0 && STRIP=0 + local filename + filename=$(basename "${PKG_SRCURL[$i]}") + local file="$TERMUX_PKG_CACHEDIR/$filename" + # Allow TERMUX_PKG_SHA256 to be empty: + set +u + termux_download "${PKG_SRCURL[$i]}" "$file" "${PKG_SHA256[$i]}" + set -u + + 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 + mkdir -p "$TERMUX_PKG_SRCDIR" + tar xf "$file" -C "$TERMUX_PKG_SRCDIR" --strip-components=$STRIP + fi + set -o pipefail + done +} diff --git a/scripts/build/termux_step_finish_build.sh b/scripts/build/termux_step_finish_build.sh new file mode 100644 index 000000000..b8528b897 --- /dev/null +++ b/scripts/build/termux_step_finish_build.sh @@ -0,0 +1,7 @@ +termux_step_finish_build() { + echo "termux - build of '$TERMUX_PKG_NAME' done" + test -t 1 && printf "\033]0;%s - DONE\007" "$TERMUX_PKG_NAME" + mkdir -p /data/data/.built-packages + echo "$TERMUX_PKG_FULLVERSION" > "/data/data/.built-packages/$TERMUX_PKG_NAME" + exit 0 +} diff --git a/scripts/build/termux_step_handle_arguments.sh b/scripts/build/termux_step_handle_arguments.sh new file mode 100644 index 000000000..92cbdfc4e --- /dev/null +++ b/scripts/build/termux_step_handle_arguments.sh @@ -0,0 +1,66 @@ +termux_step_handle_arguments() { + _show_usage() { + echo "Usage: ./build-package.sh [-a ARCH] [-d] [-D] [-f] [-i] [-I] [-q] [-s] [-o DIR] 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 " -i Download and extract dependencies instead of building them." + echo " -I Download and extract dependencies instead of building them, keep existing /data/data/com.termux files." + echo " -q Quiet build." + echo " -s Skip dependency check." + echo " -o Specify deb directory. Default: debs/." + exit 1 + } + while getopts :a:hdDfiIqso: option; do + case "$option" in + a) TERMUX_ARCH="$OPTARG";; + h) _show_usage;; + d) export TERMUX_DEBUG=true;; + D) local TERMUX_IS_DISABLED=true;; + f) TERMUX_FORCE_BUILD=true;; + i) export TERMUX_INSTALL_DEPS=true;; + I) export TERMUX_INSTALL_DEPS=true && export TERMUX_NO_CLEAN=true;; + q) export TERMUX_QUIET_BUILD=true;; + s) export TERMUX_SKIP_DEPCHECK=true;; + o) TERMUX_DEBDIR="$(realpath -m $OPTARG)";; + ?) termux_error_exit "./build-package.sh: illegal option -$OPTARG";; + esac + done + shift $((OPTIND-1)) + + if [ "$#" -ne 1 ]; then _show_usage; fi + unset -f _show_usage + + # Handle 'all' arch: + if [ -n "${TERMUX_ARCH+x}" ] && [ "${TERMUX_ARCH}" = 'all' ]; then + for arch in 'aarch64' 'arm' 'i686' 'x86_64'; do + ./build-package.sh ${TERMUX_FORCE_BUILD+-f} -a $arch ${TERMUX_INSTALL_DEPS+-i} \ + ${TERMUX_DEBUG+-d} ${TERMUX_DEBDIR+-o $TERMUX_DEBDIR} "$1" + done + exit + fi + + # Check the package to build: + TERMUX_PKG_NAME=$(basename "$1") + export TERMUX_SCRIPTDIR + TERMUX_SCRIPTDIR=$(cd "$(dirname "$0")"; pwd) + if [[ $1 == *"/"* ]]; then + # Path to directory which may be outside this repo: + 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") + else + # Package name: + 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 + fi + fi + TERMUX_PKG_BUILDER_SCRIPT=$TERMUX_PKG_BUILDER_DIR/build.sh + if test ! -f "$TERMUX_PKG_BUILDER_SCRIPT"; then + termux_error_exit "No build.sh script at package dir $TERMUX_PKG_BUILDER_DIR!" + fi +} diff --git a/scripts/build/termux_step_handle_buildarch.sh b/scripts/build/termux_step_handle_buildarch.sh new file mode 100644 index 000000000..bd5ab2c3d --- /dev/null +++ b/scripts/build/termux_step_handle_buildarch.sh @@ -0,0 +1,28 @@ +termux_step_handle_buildarch() { + # If $TERMUX_PREFIX already exists, it may have been built for a different arch + local TERMUX_ARCH_FILE=/data/TERMUX_ARCH + if [ -f "${TERMUX_ARCH_FILE}" ]; then + local TERMUX_PREVIOUS_ARCH + TERMUX_PREVIOUS_ARCH=$(cat $TERMUX_ARCH_FILE) + if [ "$TERMUX_PREVIOUS_ARCH" != "$TERMUX_ARCH" ]; then + local TERMUX_DATA_BACKUPDIRS=$TERMUX_TOPDIR/_databackups + mkdir -p "$TERMUX_DATA_BACKUPDIRS" + local TERMUX_DATA_PREVIOUS_BACKUPDIR=$TERMUX_DATA_BACKUPDIRS/$TERMUX_PREVIOUS_ARCH + local TERMUX_DATA_CURRENT_BACKUPDIR=$TERMUX_DATA_BACKUPDIRS/$TERMUX_ARCH + # Save current /data (removing old backup if any) + if test -e "$TERMUX_DATA_PREVIOUS_BACKUPDIR"; then + termux_error_exit "Directory already exists" + fi + if [ -d /data/data ]; then + mv /data/data "$TERMUX_DATA_PREVIOUS_BACKUPDIR" + fi + # Restore new one (if any) + if [ -d "$TERMUX_DATA_CURRENT_BACKUPDIR" ]; then + mv "$TERMUX_DATA_CURRENT_BACKUPDIR" /data/data + fi + fi + fi + + # Keep track of current arch we are building for. + echo "$TERMUX_ARCH" > $TERMUX_ARCH_FILE +} diff --git a/scripts/build/termux_step_handle_hostbuild.sh b/scripts/build/termux_step_handle_hostbuild.sh new file mode 100644 index 000000000..ea1563bcc --- /dev/null +++ b/scripts/build/termux_step_handle_hostbuild.sh @@ -0,0 +1,17 @@ +termux_step_handle_hostbuild() { + if [ "x$TERMUX_PKG_HOSTBUILD" = "x" ]; then return; fi + + cd "$TERMUX_PKG_SRCDIR" + for patch in $TERMUX_PKG_BUILDER_DIR/*.patch.beforehostbuild; do + test -f "$patch" && sed "s%\@TERMUX_PREFIX\@%${TERMUX_PREFIX}%g" "$patch" | patch --silent -p1 + done + + local TERMUX_HOSTBUILD_MARKER="$TERMUX_PKG_HOSTBUILD_DIR/TERMUX_BUILT_FOR_$TERMUX_PKG_VERSION" + if [ ! -f "$TERMUX_HOSTBUILD_MARKER" ]; then + rm -Rf "$TERMUX_PKG_HOSTBUILD_DIR" + mkdir -p "$TERMUX_PKG_HOSTBUILD_DIR" + cd "$TERMUX_PKG_HOSTBUILD_DIR" + termux_step_host_build + touch "$TERMUX_HOSTBUILD_MARKER" + fi +} diff --git a/scripts/build/termux_step_host_build.sh b/scripts/build/termux_step_host_build.sh new file mode 100644 index 000000000..1705bd4e8 --- /dev/null +++ b/scripts/build/termux_step_host_build.sh @@ -0,0 +1,4 @@ +termux_step_host_build() { + "$TERMUX_PKG_SRCDIR/configure" ${TERMUX_PKG_EXTRA_HOSTBUILD_CONFIGURE_ARGS} + make -j "$TERMUX_MAKE_PROCESSES" +} diff --git a/scripts/build/termux_step_make.sh b/scripts/build/termux_step_make.sh new file mode 100644 index 000000000..1d9a5e618 --- /dev/null +++ b/scripts/build/termux_step_make.sh @@ -0,0 +1,16 @@ +termux_step_make() { + local QUIET_BUILD= + if [ $TERMUX_QUIET_BUILD = true ]; then + QUIET_BUILD="-s" + fi + + if test -f build.ninja; then + ninja -w dupbuild=warn -j $TERMUX_MAKE_PROCESSES + elif ls ./*akefile &> /dev/null || [ ! -z "$TERMUX_PKG_EXTRA_MAKE_ARGS" ]; then + if [ -z "$TERMUX_PKG_EXTRA_MAKE_ARGS" ]; then + make -j $TERMUX_MAKE_PROCESSES $QUIET_BUILD + else + make -j $TERMUX_MAKE_PROCESSES $QUIET_BUILD ${TERMUX_PKG_EXTRA_MAKE_ARGS} + fi + fi +} diff --git a/scripts/build/termux_step_make_install.sh b/scripts/build/termux_step_make_install.sh new file mode 100644 index 000000000..7d3183f14 --- /dev/null +++ b/scripts/build/termux_step_make_install.sh @@ -0,0 +1,23 @@ +termux_step_make_install() { + if test -f build.ninja; then + ninja -w dupbuild=warn -j $TERMUX_MAKE_PROCESSES install + elif ls ./*akefile &> /dev/null || [ ! -z "$TERMUX_PKG_EXTRA_MAKE_ARGS" ]; then + : "${TERMUX_PKG_MAKE_INSTALL_TARGET:="install"}" + # Some packages have problem with parallell install, and it does not buy much, so use -j 1. + if [ -z "$TERMUX_PKG_EXTRA_MAKE_ARGS" ]; then + make -j 1 ${TERMUX_PKG_MAKE_INSTALL_TARGET} + else + make -j 1 ${TERMUX_PKG_EXTRA_MAKE_ARGS} ${TERMUX_PKG_MAKE_INSTALL_TARGET} + fi + elif test -f Cargo.toml; then + termux_setup_rust + cargo install \ + --path . \ + --force \ + --target $CARGO_TARGET_NAME \ + --root $TERMUX_PREFIX \ + $TERMUX_PKG_EXTRA_CONFIGURE_ARGS + # https://github.com/rust-lang/cargo/issues/3316: + rm $TERMUX_PREFIX/.crates.toml + fi +} diff --git a/scripts/build/termux_step_massage.sh b/scripts/build/termux_step_massage.sh new file mode 100644 index 000000000..8d739f02e --- /dev/null +++ b/scripts/build/termux_step_massage.sh @@ -0,0 +1,157 @@ +termux_step_massage() { + cd "$TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX" + + # Remove lib/charset.alias which is installed by gettext-using packages: + rm -f lib/charset.alias + + # Remove non-english man pages: + test -d share/man && (cd share/man; for f in $(ls | grep -v man); do rm -Rf $f; done ) + + if [ -z "${TERMUX_PKG_KEEP_INFOPAGES+x}" ]; then + # Remove info pages: + rm -Rf share/info + fi + + # Remove locale files we're not interested in:: + rm -Rf share/locale + if [ -z "${TERMUX_PKG_KEEP_SHARE_DOC+x}" ]; then + # Remove info pages: + rm -Rf share/doc + fi + + # Remove old kept libraries (readline): + find . -name '*.old' -delete + + # Remove static libraries: + if [ $TERMUX_PKG_KEEP_STATIC_LIBRARIES = "false" ]; then + find . -name '*.a' -delete + find . -name '*.la' -delete + fi + + # Move over sbin to bin: + for file in sbin/*; do if test -f "$file"; then mv "$file" bin/; fi; done + + # Remove world permissions and add write permissions. + # The -f flag is used to suppress warnings about dangling symlinks (such + # as ones to /system/... which may not exist on the build machine): + find . -exec chmod -f u+w,g-rwx,o-rwx \{\} \; + + if [ "$TERMUX_DEBUG" = "" ]; then + # Strip binaries. file(1) may fail for certain unusual files, so disable pipefail. + set +e +o pipefail + find . -type f | xargs -r file | grep -E "(executable|shared object)" | grep ELF | cut -f 1 -d : | \ + xargs -r "$STRIP" --strip-unneeded --preserve-dates + set -e -o pipefail + fi + # Remove DT_ entries which the android 5.1 linker warns about: + find . -type f -print0 | xargs -r -0 "$TERMUX_ELF_CLEANER" + + # Fix shebang paths: + while IFS= read -r -d '' file + do + head -c 100 "$file" | grep -E "^#\!.*\\/bin\\/.*" | grep -q -E -v "^#\! ?\\/system" && sed --follow-symlinks -i -E "1 s@^#\!(.*)/bin/(.*)@#\!$TERMUX_PREFIX/bin/\2@" "$file" + done < <(find -L . -type f -print0) + + test ! -z "$TERMUX_PKG_RM_AFTER_INSTALL" && rm -Rf $TERMUX_PKG_RM_AFTER_INSTALL + + find . -type d -empty -delete # Remove empty directories + + if [ -d share/man ]; then + # Compress man pages with gzip: + find share/man -type f -print0 | xargs -r -0 gzip + # Update man page symlinks, e.g. unzstd.1 -> zstd.1: + while IFS= read -r -d '' file + do + local _link_value + _link_value=$(readlink $file) + rm $file + ln -s $_link_value.gz $file.gz + done < <(find share/man -type l -print0) + fi + + # Sub packages: + if [ -d include ] && [ -z "${TERMUX_PKG_NO_DEVELSPLIT}" ]; then + # Add virtual -dev sub package if there are include files: + local _DEVEL_SUBPACKAGE_FILE=$TERMUX_PKG_TMPDIR/${TERMUX_PKG_NAME}-dev.subpackage.sh + echo TERMUX_SUBPKG_INCLUDE=\"include share/vala share/man/man3 lib/pkgconfig share/aclocal lib/cmake $TERMUX_PKG_INCLUDE_IN_DEVPACKAGE\" > "$_DEVEL_SUBPACKAGE_FILE" + echo "TERMUX_SUBPKG_DESCRIPTION=\"Development files for ${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 + fi + # Now build all sub packages + rm -Rf "$TERMUX_TOPDIR/$TERMUX_PKG_NAME/subpackages" + for subpackage in $TERMUX_PKG_BUILDER_DIR/*.subpackage.sh $TERMUX_PKG_TMPDIR/*subpackage.sh; do + test ! -f "$subpackage" && continue + local SUB_PKG_NAME + SUB_PKG_NAME=$(basename "$subpackage" .subpackage.sh) + # Default value is same as main package, but sub package may override: + local TERMUX_SUBPKG_PLATFORM_INDEPENDENT=$TERMUX_PKG_PLATFORM_INDEPENDENT + local SUB_PKG_DIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/subpackages/$SUB_PKG_NAME + local TERMUX_SUBPKG_DEPENDS="" + local TERMUX_SUBPKG_CONFLICTS="" + local TERMUX_SUBPKG_REPLACES="" + local TERMUX_SUBPKG_CONFFILES="" + local SUB_PKG_MASSAGE_DIR=$SUB_PKG_DIR/massage/$TERMUX_PREFIX + local SUB_PKG_PACKAGE_DIR=$SUB_PKG_DIR/package + mkdir -p "$SUB_PKG_MASSAGE_DIR" "$SUB_PKG_PACKAGE_DIR" + + # shellcheck source=/dev/null + source "$subpackage" + + for includeset in $TERMUX_SUBPKG_INCLUDE; do + local _INCLUDE_DIRSET + _INCLUDE_DIRSET=$(dirname "$includeset") + test "$_INCLUDE_DIRSET" = "." && _INCLUDE_DIRSET="" + if [ -e "$includeset" ] || [ -L "$includeset" ]; then + # Add the -L clause to handle relative symbolic links: + mkdir -p "$SUB_PKG_MASSAGE_DIR/$_INCLUDE_DIRSET" + mv "$includeset" "$SUB_PKG_MASSAGE_DIR/$_INCLUDE_DIRSET" + fi + done + + local SUB_PKG_ARCH=$TERMUX_ARCH + test -n "$TERMUX_SUBPKG_PLATFORM_INDEPENDENT" && SUB_PKG_ARCH=all + + cd "$SUB_PKG_DIR/massage" + local SUB_PKG_INSTALLSIZE + SUB_PKG_INSTALLSIZE=$(du -sk . | cut -f 1) + tar -cJf "$SUB_PKG_PACKAGE_DIR/data.tar.xz" . + + mkdir -p DEBIAN + cd DEBIAN + cat > control <<-HERE + Package: $SUB_PKG_NAME + Architecture: ${SUB_PKG_ARCH} + Installed-Size: ${SUB_PKG_INSTALLSIZE} + Maintainer: $TERMUX_PKG_MAINTAINER + Version: $TERMUX_PKG_FULLVERSION + Homepage: $TERMUX_PKG_HOMEPAGE + HERE + test ! -z "$TERMUX_SUBPKG_DEPENDS" && echo "Depends: $TERMUX_SUBPKG_DEPENDS" >> control + test ! -z "$TERMUX_SUBPKG_CONFLICTS" && echo "Conflicts: $TERMUX_SUBPKG_CONFLICTS" >> control + test ! -z "$TERMUX_SUBPKG_REPLACES" && echo "Replaces: $TERMUX_SUBPKG_REPLACES" >> control + echo "Description: $TERMUX_SUBPKG_DESCRIPTION" >> control + tar -czf "$SUB_PKG_PACKAGE_DIR/control.tar.gz" . + + for f in $TERMUX_SUBPKG_CONFFILES; do echo "$TERMUX_PREFIX/$f" >> conffiles; done + + # Create the actual .deb file: + TERMUX_SUBPKG_DEBFILE=$TERMUX_DEBDIR/${SUB_PKG_NAME}${DEBUG}_${TERMUX_PKG_FULLVERSION}_${SUB_PKG_ARCH}.deb + test ! -f "$TERMUX_COMMON_CACHEDIR/debian-binary" && echo "2.0" > "$TERMUX_COMMON_CACHEDIR/debian-binary" + ar cr "$TERMUX_SUBPKG_DEBFILE" \ + "$TERMUX_COMMON_CACHEDIR/debian-binary" \ + "$SUB_PKG_PACKAGE_DIR/control.tar.gz" \ + "$SUB_PKG_PACKAGE_DIR/data.tar.xz" + + # Go back to main package: + cd "$TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX" + done + + # .. remove empty directories (NOTE: keep this last): + find . -type d -empty -delete + # Make sure user can read and write all files (problem with dpkg otherwise): + chmod -R u+rw . +} diff --git a/scripts/build/termux_step_patch_package.sh b/scripts/build/termux_step_patch_package.sh new file mode 100644 index 000000000..52da30242 --- /dev/null +++ b/scripts/build/termux_step_patch_package.sh @@ -0,0 +1,15 @@ +termux_step_patch_package() { + cd "$TERMUX_PKG_SRCDIR" + local DEBUG_PATCHES="" + if [ "$TERMUX_DEBUG" == "true" ] && [ -f $TERMUX_PKG_BUILDER_DIR/*.patch.debug ] ; then + DEBUG_PATCHES="$(ls $TERMUX_PKG_BUILDER_DIR/*.patch.debug)" + fi + # Suffix patch with ".patch32" or ".patch64" to only apply for these bitnesses: + shopt -s nullglob + for patch in $TERMUX_PKG_BUILDER_DIR/*.patch{$TERMUX_ARCH_BITS,} $DEBUG_PATCHES; do + test -f "$patch" && sed "s%\@TERMUX_PREFIX\@%${TERMUX_PREFIX}%g" "$patch" | \ + sed "s%\@TERMUX_HOME\@%${TERMUX_ANDROID_HOME}%g" | \ + patch --silent -p1 + done + shopt -u nullglob +} diff --git a/scripts/build/termux_step_replace_guess_scripts.sh b/scripts/build/termux_step_replace_guess_scripts.sh new file mode 100644 index 000000000..0f5f73127 --- /dev/null +++ b/scripts/build/termux_step_replace_guess_scripts.sh @@ -0,0 +1,5 @@ +termux_step_replace_guess_scripts() { + cd "$TERMUX_PKG_SRCDIR" + find . -name config.sub -exec chmod u+w '{}' \; -exec cp "$TERMUX_SCRIPTDIR/scripts/config.sub" '{}' \; + find . -name config.guess -exec chmod u+w '{}' \; -exec cp "$TERMUX_SCRIPTDIR/scripts/config.guess" '{}' \; +} diff --git a/scripts/build/termux_step_setup_toolchain.sh b/scripts/build/termux_step_setup_toolchain.sh new file mode 100644 index 000000000..4ca48dcf4 --- /dev/null +++ b/scripts/build/termux_step_setup_toolchain.sh @@ -0,0 +1,198 @@ +termux_step_setup_toolchain() { + # We put this after system PATH to avoid picking up toolchain stripped python + export PATH=$PATH:$TERMUX_STANDALONE_TOOLCHAIN/bin + + export CFLAGS="" + export LDFLAGS="-L${TERMUX_PREFIX}/lib" + + export AS=${TERMUX_HOST_PLATFORM}-clang + export CC=$TERMUX_HOST_PLATFORM-clang + export CXX=$TERMUX_HOST_PLATFORM-clang++ + + export CCTERMUX_HOST_PLATFORM=$TERMUX_HOST_PLATFORM$TERMUX_PKG_API_LEVEL + if [ $TERMUX_ARCH = arm ]; then + CCTERMUX_HOST_PLATFORM=armv7a-linux-androideabi$TERMUX_PKG_API_LEVEL + fi + export AR=$TERMUX_HOST_PLATFORM-ar + export CPP=${TERMUX_HOST_PLATFORM}-cpp + export CC_FOR_BUILD=gcc + export LD=$TERMUX_HOST_PLATFORM-ld + export OBJDUMP=$TERMUX_HOST_PLATFORM-objdump + # Setup pkg-config for cross-compiling: + export PKG_CONFIG=$TERMUX_STANDALONE_TOOLCHAIN/bin/${TERMUX_HOST_PLATFORM}-pkg-config + export RANLIB=$TERMUX_HOST_PLATFORM-ranlib + export READELF=$TERMUX_HOST_PLATFORM-readelf + export STRIP=$TERMUX_HOST_PLATFORM-strip + + # Android 7 started to support DT_RUNPATH (but not DT_RPATH), so we may want + # LDFLAGS+="-Wl,-rpath=$TERMUX_PREFIX/lib -Wl,--enable-new-dtags" + # and no longer remove DT_RUNPATH in termux-elf-cleaner. + + if [ "$TERMUX_ARCH" = "arm" ]; then + # https://developer.android.com/ndk/guides/standalone_toolchain.html#abi_compatibility: + # "We recommend using the -mthumb compiler flag to force the generation of 16-bit Thumb-2 instructions". + # With r13 of the ndk ruby 2.4.0 segfaults when built on arm with clang without -mthumb. + CFLAGS+=" -march=armv7-a -mfpu=neon -mfloat-abi=softfp -mthumb" + LDFLAGS+=" -march=armv7-a" + elif [ "$TERMUX_ARCH" = "i686" ]; then + # From $NDK/docs/CPU-ARCH-ABIS.html: + CFLAGS+=" -march=i686 -msse3 -mstackrealign -mfpmath=sse" + elif [ "$TERMUX_ARCH" = "aarch64" ]; then + : + elif [ "$TERMUX_ARCH" = "x86_64" ]; then + : + else + termux_error_exit "Invalid arch '$TERMUX_ARCH' - support arches are 'arm', 'i686', 'aarch64', 'x86_64'" + fi + + if [ -n "$TERMUX_DEBUG" ]; then + CFLAGS+=" -g3 -O1 -fstack-protector --param ssp-buffer-size=4 -D_FORTIFY_SOURCE=2" + else + if [ $TERMUX_ARCH = arm ]; then + CFLAGS+=" -Os" + else + CFLAGS+=" -Oz" + fi + fi + + export CXXFLAGS="$CFLAGS" + export CPPFLAGS="-I${TERMUX_PREFIX}/include" + + # If libandroid-support is declared as a dependency, link to it explicitly: + if [ "$TERMUX_PKG_DEPENDS" != "${TERMUX_PKG_DEPENDS/libandroid-support/}" ]; then + LDFLAGS+=" -landroid-support" + fi + + export ac_cv_func_getpwent=no + export ac_cv_func_getpwnam=no + export ac_cv_func_getpwuid=no + export ac_cv_func_sigsetmask=no + export ac_cv_c_bigendian=no + + if [ ! -d $TERMUX_STANDALONE_TOOLCHAIN ]; then + # 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): + local _TERMUX_TOOLCHAIN_TMPDIR=${TERMUX_STANDALONE_TOOLCHAIN}-tmp + rm -Rf $_TERMUX_TOOLCHAIN_TMPDIR + + local _NDK_ARCHNAME=$TERMUX_ARCH + if [ "$TERMUX_ARCH" = "aarch64" ]; then + _NDK_ARCHNAME=arm64 + elif [ "$TERMUX_ARCH" = "i686" ]; then + _NDK_ARCHNAME=x86 + fi + + "$NDK/build/tools/make_standalone_toolchain.py" \ + --api "$TERMUX_PKG_API_LEVEL" \ + --arch $_NDK_ARCHNAME \ + --stl=libc++ \ + --install-dir $_TERMUX_TOOLCHAIN_TMPDIR + + # Remove android-support header wrapping not needed on android-21: + rm -Rf $_TERMUX_TOOLCHAIN_TMPDIR/sysroot/usr/local + + if [ "$TERMUX_ARCH" = "aarch64" ]; then + # Use gold by default to work around https://github.com/android-ndk/ndk/issues/148 + cp $_TERMUX_TOOLCHAIN_TMPDIR/bin/aarch64-linux-android-ld.gold \ + $_TERMUX_TOOLCHAIN_TMPDIR/bin/aarch64-linux-android-ld + cp $_TERMUX_TOOLCHAIN_TMPDIR/aarch64-linux-android/bin/ld.gold \ + $_TERMUX_TOOLCHAIN_TMPDIR/aarch64-linux-android/bin/ld + fi + + if [ "$TERMUX_ARCH" = "arm" ]; then + # Linker wrapper script to add '--exclude-libs libgcc.a', see + # https://github.com/android-ndk/ndk/issues/379 + # https://android-review.googlesource.com/#/c/389852/ + local linker + for linker in ld ld.bfd ld.gold; do + local wrap_linker=$_TERMUX_TOOLCHAIN_TMPDIR/$TERMUX_HOST_PLATFORM/bin/$linker + local real_linker=$_TERMUX_TOOLCHAIN_TMPDIR/$TERMUX_HOST_PLATFORM/bin/$linker.real + cp $wrap_linker $real_linker + echo '#!/bin/bash' > $wrap_linker + echo -n '$(dirname $0)/' >> $wrap_linker + echo -n $linker.real >> $wrap_linker + echo ' --exclude-libs libgcc.a "$@"' >> $wrap_linker + done + fi + + # Setup the cpp preprocessor: + cp $_TERMUX_TOOLCHAIN_TMPDIR/bin/$TERMUX_HOST_PLATFORM-clang \ + $_TERMUX_TOOLCHAIN_TMPDIR/bin/$TERMUX_HOST_PLATFORM-cpp + sed -i 's/clang80/clang80 -E/' \ + $_TERMUX_TOOLCHAIN_TMPDIR/bin/$TERMUX_HOST_PLATFORM-cpp + + 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" | \ + patch --silent -p1; + done + # elf.h: Taken from glibc since the elf.h in the NDK is lacking. + # ifaddrs.h: Added in android-24 unified headers, use a inline implementation for now. + # langinfo.h: Inline implementation of nl_langinfo(). + # iconv.h: Header for iconv, implemented in libandroid-support. + cp "$TERMUX_SCRIPTDIR"/ndk-patches/{ifaddrs.h,libintl.h,langinfo.h,iconv.h} usr/include + + # Remove from the NDK in favour of that from the libandroid-shmem. + # Remove as it doesn't work for non-root. + # Remove as we currently provide it from libandroid-glob. + # Remove as it's only for future (later than android-27). + rm usr/include/sys/{shm.h,sem.h} usr/include/{glob.h,spawn.h} + + sed -i "s/define __ANDROID_API__ __ANDROID_API_FUTURE__/define __ANDROID_API__ $TERMUX_PKG_API_LEVEL/" \ + usr/include/android/api-level.h + + $TERMUX_ELF_CLEANER usr/lib/*/*/*.so + + # zlib is really version 1.2.8 in the Android platform (at least + # starting from Android 5), not older as the NDK headers claim. + for file in zconf.h zlib.h; do + curl -o usr/include/$file \ + https://raw.githubusercontent.com/madler/zlib/v1.2.8/$file + done + unset file + grep -lrw $_TERMUX_TOOLCHAIN_TMPDIR/sysroot/usr/include/c++/v1 -e '' | xargs -n 1 sed -i 's//\"version\"/g' + mv $_TERMUX_TOOLCHAIN_TMPDIR $TERMUX_STANDALONE_TOOLCHAIN + fi + + local _STL_LIBFILE_NAME=libc++_shared.so + if [ ! -f $TERMUX_PREFIX/lib/libstdc++.so ]; then + # Setup libc++_shared.so in $PREFIX/lib and libstdc++.so as a link to it, + # so that other C++ using packages links to it instead of the default android + # C++ library which does not support exceptions or STL: + # https://developer.android.com/ndk/guides/cpp-support.html + # We do however want to avoid installing this, to avoid problems where e.g. + # libm.so on some i686 devices links against libstdc++.so. + # The libc++_shared.so library will be packaged in the libc++ package + # which is part of the base Termux installation. + mkdir -p "$TERMUX_PREFIX/lib" + cd "$TERMUX_PREFIX/lib" + + local _STL_LIBFILE=$TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib/${TERMUX_HOST_PLATFORM}/$_STL_LIBFILE_NAME + + cp "$_STL_LIBFILE" . + $STRIP --strip-unneeded $_STL_LIBFILE_NAME + $TERMUX_ELF_CLEANER $_STL_LIBFILE_NAME + if [ $TERMUX_ARCH = "arm" ]; then + # Use a linker script to get libunwind.a. + echo 'INPUT(-lunwind -lc++_shared)' > libstdc++.so + else + ln -f $_STL_LIBFILE_NAME libstdc++.so + fi + fi + + export PKG_CONFIG_LIBDIR="$TERMUX_PKG_CONFIG_LIBDIR" + # Create a pkg-config wrapper. We use path to host pkg-config to + # avoid picking up a cross-compiled pkg-config later on. + local _HOST_PKGCONFIG + _HOST_PKGCONFIG=$(which pkg-config) + mkdir -p $TERMUX_STANDALONE_TOOLCHAIN/bin "$PKG_CONFIG_LIBDIR" + cat > "$PKG_CONFIG" <<-HERE + #!/bin/sh + export PKG_CONFIG_DIR= + export PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR + exec $_HOST_PKGCONFIG "\$@" + HERE + chmod +x "$PKG_CONFIG" +} diff --git a/scripts/build/termux_step_setup_variables.sh b/scripts/build/termux_step_setup_variables.sh new file mode 100644 index 000000000..fd1dc6cfd --- /dev/null +++ b/scripts/build/termux_step_setup_variables.sh @@ -0,0 +1,101 @@ +termux_step_setup_variables() { + # shellcheck source=scripts/properties.sh + . "$TERMUX_SCRIPTDIR/scripts/properties.sh" + : "${TERMUX_MAKE_PROCESSES:="$(nproc)"}" + : "${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_PKG_API_LEVEL:="21"}" + : "${TERMUX_NO_CLEAN:="false"}" + : "${TERMUX_QUIET_BUILD:="false"}" + : "${TERMUX_DEBDIR:="${TERMUX_SCRIPTDIR}/debs"}" + : "${TERMUX_SKIP_DEPCHECK:="false"}" + : "${TERMUX_INSTALL_DEPS:="false"}" + : "${TERMUX_REPO_SIGNING_KEYS:="packages/apt/trusted.gpg packages/termux-keyring/grimler.gpg packages/termux-keyring/xeffyr.gpg"}" + : "${TERMUX_PKG_MAINTAINER:="Fredrik Fornwall @fornwall"}" + : "${TERMUX_PACKAGES_DIRECTORIES:="packages"}" + + if [ -z ${TERMUX_REPO_URL+x} ]; then + TERMUX_REPO_URL=(https://termux.net) + # TERMUX_REPO_URL=(https://termux.net https://grimler.se https://dl.bintray.com/xeffyr/unstable-packages) + fi + if [ -z ${TERMUX_REPO_DISTRIBUTION+x} ]; then + TERMUX_REPO_DISTRIBUTION=(stable) + # TERMUX_REPO_DISTRIBUTION=(stable root unstable) + fi + if [ -z ${TERMUX_REPO_COMPONENT+x} ]; then + TERMUX_REPO_COMPONENT=(main) + # TERMUX_REPO_COMPONENT=(main stable main) + fi + + if [ "x86_64" = "$TERMUX_ARCH" ] || [ "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 + + if [ ! -d "$NDK" ]; then + termux_error_exit 'NDK not pointing at a directory!' + fi + if ! grep -s -q "Pkg.Revision = $TERMUX_NDK_VERSION_NUM" "$NDK/source.properties"; then + termux_error_exit "Wrong NDK version - we need $TERMUX_NDK_VERSION" + fi + + # The build tuple that may be given to --build configure flag: + TERMUX_BUILD_TUPLE=$(sh "$TERMUX_SCRIPTDIR/scripts/config.guess") + + # 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. + TERMUX_D8=$ANDROID_HOME/build-tools/$TERMUX_ANDROID_BUILD_TOOLS_VERSION/d8 + + TERMUX_COMMON_CACHEDIR="$TERMUX_TOPDIR/_cache" + TERMUX_ELF_CLEANER=$TERMUX_COMMON_CACHEDIR/termux-elf-cleaner + + export prefix=${TERMUX_PREFIX} + export PREFIX=${TERMUX_PREFIX} + + TERMUX_PKG_BUILDDIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/build + TERMUX_PKG_CACHEDIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/cache + TERMUX_PKG_MASSAGEDIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/massage + TERMUX_PKG_PACKAGEDIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/package + TERMUX_PKG_SRCDIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/src + TERMUX_PKG_SHA256="" + TERMUX_PKG_TMPDIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/tmp + TERMUX_PKG_HOSTBUILD_DIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/host-build + TERMUX_PKG_PLATFORM_INDEPENDENT="" + TERMUX_PKG_NO_DEVELSPLIT="" + TERMUX_PKG_REVISION="0" # http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version + TERMUX_PKG_EXTRA_CONFIGURE_ARGS="" + TERMUX_PKG_EXTRA_HOSTBUILD_CONFIGURE_ARGS="" + TERMUX_PKG_EXTRA_MAKE_ARGS="" + TERMUX_PKG_BUILD_IN_SRC="" + TERMUX_PKG_RM_AFTER_INSTALL="" + TERMUX_PKG_BREAKS="" # https://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps + TERMUX_PKG_DEPENDS="" + TERMUX_PKG_BUILD_DEPENDS="" + TERMUX_PKG_HOMEPAGE="" + TERMUX_PKG_DESCRIPTION="FIXME:Add description" + TERMUX_PKG_KEEP_STATIC_LIBRARIES="false" + TERMUX_PKG_ESSENTIAL="" + TERMUX_PKG_CONFLICTS="" # https://www.debian.org/doc/debian-policy/ch-relationships.html#s-conflicts + TERMUX_PKG_RECOMMENDS="" # https://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps + TERMUX_PKG_SUGGESTS="" + TERMUX_PKG_REPLACES="" + TERMUX_PKG_PROVIDES="" #https://www.debian.org/doc/debian-policy/#virtual-packages-provides + 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_FORCE_CMAKE=no # if the package has autotools as well as cmake, then set this to prefer cmake + TERMUX_CMAKE_BUILD=Ninja # Which cmake generator to use + TERMUX_PKG_HAS_DEBUG=yes # set to no if debug build doesn't exist or doesn't work, for example for python based packages + + unset CFLAGS CPPFLAGS LDFLAGS CXXFLAGS +} diff --git a/scripts/build/termux_step_start_build.sh b/scripts/build/termux_step_start_build.sh new file mode 100644 index 000000000..5c5933363 --- /dev/null +++ b/scripts/build/termux_step_start_build.sh @@ -0,0 +1,156 @@ +termux_step_start_build() { + # shellcheck source=/dev/null + source "$TERMUX_PKG_BUILDER_SCRIPT" + + TERMUX_STANDALONE_TOOLCHAIN="$TERMUX_COMMON_CACHEDIR/${TERMUX_NDK_VERSION}-${TERMUX_ARCH}-${TERMUX_PKG_API_LEVEL}" + # Bump the below version if a change is made in toolchain setup to ensure + # that everyone gets an updated toolchain: + TERMUX_STANDALONE_TOOLCHAIN+="-v1" + + if [ -n "${TERMUX_PKG_BLACKLISTED_ARCHES:=""}" ] && [ "$TERMUX_PKG_BLACKLISTED_ARCHES" != "${TERMUX_PKG_BLACKLISTED_ARCHES/$TERMUX_ARCH/}" ]; then + echo "Skipping building $TERMUX_PKG_NAME for arch $TERMUX_ARCH" + exit 0 + fi + + if [ "$TERMUX_SKIP_DEPCHECK" = false ] && [ "$TERMUX_INSTALL_DEPS" = true ]; then + # Download repo files + termux_get_repo_files + # Download dependencies + while read PKG PKG_DIR; do + if [ -z $PKG ]; then + continue + elif [ "$PKG" = "ERROR" ]; then + termux_error_exit "Obtaining buildorder failed" + fi + # llvm doesn't build if ndk-sysroot is installed: + if [ "$PKG" = "ndk-sysroot" ]; then continue; fi + read DEP_ARCH DEP_VERSION <<< $(termux_extract_dep_info $PKG "${PKG_DIR}") + + if [ ! "$TERMUX_QUIET_BUILD" = true ]; then + echo "Downloading dependency $PKG@$DEP_VERSION if necessary..." + fi + if ! termux_download_deb $PKG $DEP_ARCH $DEP_VERSION; then + echo "Download of $PKG@$DEP_VERSION from $TERMUX_REPO_URL failed, building instead" + ./build-package.sh -a $TERMUX_ARCH -I "${PKG_DIR}" + continue + else + if [ ! "$TERMUX_QUIET_BUILD" = true ]; then echo "extracting $PKG..."; fi + ( + cd $TERMUX_COMMON_CACHEDIR-$DEP_ARCH + ar x ${PKG}_${DEP_VERSION}_${DEP_ARCH}.deb data.tar.xz + tar -xf data.tar.xz --no-overwrite-dir -C / + ) + fi + + if termux_download_deb $PKG-dev $DEP_ARCH $DEP_VERSION; then + ( + cd $TERMUX_COMMON_CACHEDIR-$DEP_ARCH + ar x $PKG-dev_${DEP_VERSION}_${DEP_ARCH}.deb data.tar.xz + tar xf data.tar.xz --no-overwrite-dir -C / + ) + else + echo "Download of $PKG-dev@$DEP_VERSION from $TERMUX_REPO_URL failed" + fi + mkdir -p /data/data/.built-packages + echo "$DEP_VERSION" > "/data/data/.built-packages/$PKG" + done<<<$(./scripts/buildorder.py -i "$TERMUX_PKG_BUILDER_DIR" $TERMUX_PACKAGES_DIRECTORIES || echo "ERROR") + elif [ "$TERMUX_SKIP_DEPCHECK" = false ] && [ "$TERMUX_INSTALL_DEPS" = false ]; then + # Build dependencies + while read PKG PKG_DIR; do + if [ -z $PKG ]; then + continue + elif [ "$PKG" = "ERROR" ]; then + termux_error_exit "Obtaining buildorder failed" + fi + echo "Building dependency $PKG if necessary..." + # Built dependencies are put in the default TERMUX_DEBDIR instead of the specified one + ./build-package.sh -a $TERMUX_ARCH -s "${PKG_DIR}" + done<<<$(./scripts/buildorder.py "$TERMUX_PKG_BUILDER_DIR" $TERMUX_PACKAGES_DIRECTORIES || echo "ERROR") + fi + + TERMUX_PKG_FULLVERSION=$TERMUX_PKG_VERSION + if [ "$TERMUX_PKG_REVISION" != "0" ] || [ "$TERMUX_PKG_FULLVERSION" != "${TERMUX_PKG_FULLVERSION/-/}" ]; then + # "0" is the default revision, so only include it if the upstream versions contains "-" itself + TERMUX_PKG_FULLVERSION+="-$TERMUX_PKG_REVISION" + fi + + if [ "$TERMUX_DEBUG" = true ]; then + if [ "$TERMUX_PKG_HAS_DEBUG" == "yes" ]; then + DEBUG="-dbg" + else + echo "Skipping building debug build for $TERMUX_PKG_NAME" + exit 0 + fi + else + DEBUG="" + fi + + if [ -z "$TERMUX_DEBUG" ] && + [ -z "${TERMUX_FORCE_BUILD+x}" ] && + [ -e "/data/data/.built-packages/$TERMUX_PKG_NAME" ]; then + if [ "$(cat "/data/data/.built-packages/$TERMUX_PKG_NAME")" = "$TERMUX_PKG_FULLVERSION" ]; then + echo "$TERMUX_PKG_NAME@$TERMUX_PKG_FULLVERSION built - skipping (rm /data/data/.built-packages/$TERMUX_PKG_NAME to force rebuild)" + exit 0 + fi + fi + + # 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_COMMON_CACHEDIR" \ + "$TERMUX_DEBDIR" \ + "$TERMUX_PKG_BUILDDIR" \ + "$TERMUX_PKG_PACKAGEDIR" \ + "$TERMUX_PKG_TMPDIR" \ + "$TERMUX_PKG_CACHEDIR" \ + "$TERMUX_PKG_MASSAGEDIR" \ + $TERMUX_PREFIX/{bin,etc,lib,libexec,share,tmp,include} + + # Make $TERMUX_PREFIX/bin/sh executable on the builder, so that build + # scripts can assume that it works on both builder and host later on: + ln -f -s /bin/sh "$TERMUX_PREFIX/bin/sh" + + local TERMUX_ELF_CLEANER_SRC=$TERMUX_COMMON_CACHEDIR/termux-elf-cleaner.cpp + local TERMUX_ELF_CLEANER_VERSION + TERMUX_ELF_CLEANER_VERSION=$(bash -c ". $TERMUX_SCRIPTDIR/packages/termux-elf-cleaner/build.sh; echo \$TERMUX_PKG_VERSION") + termux_download \ + "https://raw.githubusercontent.com/termux/termux-elf-cleaner/v$TERMUX_ELF_CLEANER_VERSION/termux-elf-cleaner.cpp" \ + "$TERMUX_ELF_CLEANER_SRC" \ + 690991371101cd1dadf73f07f73d1db72fe1cd646dcccf11cd252e194bd5de76 + if [ "$TERMUX_ELF_CLEANER_SRC" -nt "$TERMUX_ELF_CLEANER" ]; then + g++ -std=c++11 -Wall -Wextra -pedantic -Os -D__ANDROID_API__=$TERMUX_PKG_API_LEVEL \ + "$TERMUX_ELF_CLEANER_SRC" -o "$TERMUX_ELF_CLEANER" + fi + + if [ -n "$TERMUX_PKG_BUILD_IN_SRC" ]; then + echo "Building in src due to TERMUX_PKG_BUILD_IN_SRC being set" > "$TERMUX_PKG_BUILDDIR/BUILDING_IN_SRC.txt" + TERMUX_PKG_BUILDDIR=$TERMUX_PKG_SRCDIR + fi + + echo "termux - building $TERMUX_PKG_NAME for arch $TERMUX_ARCH..." + test -t 1 && printf "\033]0;%s...\007" "$TERMUX_PKG_NAME" + + # Avoid exporting PKG_CONFIG_LIBDIR until after termux_step_host_build. + export TERMUX_PKG_CONFIG_LIBDIR=$TERMUX_PREFIX/lib/pkgconfig + # Add a pkg-config file for the system zlib. + mkdir -p "$TERMUX_PKG_CONFIG_LIBDIR" + cat > "$TERMUX_PKG_CONFIG_LIBDIR/zlib.pc" <<-HERE + Name: zlib + Description: zlib compression library + Version: 1.2.8 + Requires: + Libs: -lz + HERE + ln -sf $TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib/$TERMUX_HOST_PLATFORM/$TERMUX_PKG_API_LEVEL/libz.so $TERMUX_PREFIX/lib/libz.so + # Keep track of when build started so we can see what files have been created. + # We start by sleeping so that any generated files above (such as zlib.pc) get + # an older timestamp than the TERMUX_BUILD_TS_FILE. + sleep 1 + TERMUX_BUILD_TS_FILE=$TERMUX_PKG_TMPDIR/timestamp_$TERMUX_PKG_NAME + touch "$TERMUX_BUILD_TS_FILE" +} diff --git a/scripts/buildorder.py b/scripts/buildorder.py index 52d6e41e3..2219de753 100755 --- a/scripts/buildorder.py +++ b/scripts/buildorder.py @@ -107,13 +107,26 @@ class TermuxSubPackage: self.name = os.path.basename(subpackage_file_path).split('.subpackage.sh')[0] self.parent = parent self.deps = parse_build_file_dependencies(subpackage_file_path) + self.dir = parent.dir + + self.needed_by = set() # Populated outside constructor, reverse of deps. def __repr__(self): return "<{} '{}' parent='{}'>".format(self.__class__.__name__, self.name, self.parent) -def read_packages_from_directories(directories): + def recursive_dependencies(self, pkgs_map): + """All the dependencies of the subpackage, both direct and indirect. + Only relevant when building in fast-build mode""" + result = [] + for dependency_name in sorted(self.deps): + dependency_package = pkgs_map[dependency_name] + result += dependency_package.recursive_dependencies(pkgs_map) + result += [dependency_package] + return unique_everseen(result) + +def read_packages_from_directories(directories, fast_build_mode): """Construct a map from package name to TermuxPackage. - For subpackages this maps from the subpackage name to the parent package.""" + Subpackages are mapped to the parent package if fast_build_mode is false.""" pkgs_map = {} all_packages = [] @@ -132,6 +145,8 @@ def read_packages_from_directories(directories): for subpkg in new_package.subpkgs: if subpkg.name in pkgs_map: die('Duplicated package: ' + subpkg.name) + elif fast_build_mode: + pkgs_map[subpkg.name] = subpkg else: pkgs_map[subpkg.name] = new_package all_packages.append(subpkg) @@ -141,7 +156,7 @@ def read_packages_from_directories(directories): if dependency_name not in pkgs_map: die('Package %s depends on non-existing package "%s"' % (pkg.name, dependency_name)) dep_pkg = pkgs_map[dependency_name] - if not isinstance(pkg, TermuxSubPackage): + if fast_build_mode or not isinstance(pkg, TermuxSubPackage): dep_pkg.needed_by.add(pkg) return pkgs_map @@ -198,7 +213,7 @@ def generate_full_buildorder(pkgs_map): return build_order -def generate_target_buildorder(target_path, pkgs_map): +def generate_target_buildorder(target_path, pkgs_map, fast_build_mode): "Generate a build order for building the dependencies of the specified package." if target_path.endswith('/'): target_path = target_path[:-1] @@ -209,28 +224,52 @@ def generate_target_buildorder(target_path, pkgs_map): def main(): "Generate the build order either for all packages or a specific one." - packages_directories = ['packages'] - full_buildorder = len(sys.argv) == 1 + import argparse + + parser = argparse.ArgumentParser(description='Generate order in which to build dependencies for a package. Generates') + parser.add_argument('-i', default=False, action='store_true', + help='Generate dependency list for fast-build mode. This includes subpackages in output since these can be downloaded.') + parser.add_argument('package', nargs='?', + help='Package to generate dependency list for.') + parser.add_argument('package_dirs', nargs='*', + help='Directories with packages. Can for example point to "../x11-packages/packages/". "packages/" is appended automatically.') + args = parser.parse_args() + fast_build_mode = args.i + package = args.package + packages_directories = args.package_dirs + if 'packages' not in packages_directories: + packages_directories.append('packages') + + if not package: + full_buildorder = True + else: + full_buildorder = False + + if fast_build_mode and full_buildorder: + die('-i mode does not work when building all packages') + if not full_buildorder: packages_real_path = os.path.realpath('packages') - for path in sys.argv[1:]: + for path in packages_directories: if not os.path.isdir(path): die('Not a directory: ' + path) - if path.endswith('/'): - path = path[:-1] - parent_path = os.path.dirname(path) - if packages_real_path != os.path.realpath(parent_path): - packages_directories.append(parent_path) - pkgs_map = read_packages_from_directories(packages_directories) + if package: + if package[-1] == "/": + package = package[:-1] + if not os.path.isdir(package): + die('Not a directory: ' + package) + if not os.path.relpath(os.path.dirname(package), '.') in packages_directories: + packages_directories.insert(0, os.path.dirname(package)) + pkgs_map = read_packages_from_directories(packages_directories, fast_build_mode) if full_buildorder: build_order = generate_full_buildorder(pkgs_map) else: - build_order = generate_target_buildorder(sys.argv[1], pkgs_map) + build_order = generate_target_buildorder(package, pkgs_map, fast_build_mode) for pkg in build_order: - print(pkg.dir) + print("%-30s %s" % (pkg.name, pkg.dir)) if __name__ == '__main__': main() diff --git a/scripts/properties.sh b/scripts/properties.sh index 64ed69216..3c39fbe92 100644 --- a/scripts/properties.sh +++ b/scripts/properties.sh @@ -1,5 +1,7 @@ -TERMUX_NDK_VERSION=18 TERMUX_ANDROID_BUILD_TOOLS_VERSION=28.0.3 +TERMUX_NDK_VERSION_NUM=19 +TERMUX_NDK_REVISION=b +TERMUX_NDK_VERSION=$TERMUX_NDK_VERSION_NUM$TERMUX_NDK_REVISION test -f "$HOME/.termuxrc" && . "$HOME/.termuxrc" diff --git a/scripts/run-docker.sh b/scripts/run-docker.sh index 8274135f9..0fe40be7d 100755 --- a/scripts/run-docker.sh +++ b/scripts/run-docker.sh @@ -20,28 +20,27 @@ echo "Running container '$CONTAINER_NAME' from image '$IMAGE_NAME'..." docker start $CONTAINER_NAME > /dev/null 2> /dev/null || { echo "Creating new container..." docker run \ - --detach \ - --env HOME=$HOME \ - --name $CONTAINER_NAME \ - --volume $REPOROOT:$HOME/termux-packages \ - --tty \ - $IMAGE_NAME + --detach \ + --name $CONTAINER_NAME \ + --volume $REPOROOT:$HOME/termux-packages \ + --tty \ + $IMAGE_NAME if [ "$UNAME" != Darwin ]; then if [ $(id -u) -ne 1000 -a $(id -u) -ne 0 ] then - echo "Changed builder uid/gid... (this may take a while)" - docker exec --tty $CONTAINER_NAME chown -R $(id -u) $HOME - docker exec --tty $CONTAINER_NAME chown -R $(id -u) /data - docker exec --tty $CONTAINER_NAME usermod -u $(id -u) builder - docker exec --tty $CONTAINER_NAME groupmod -g $(id -g) builder + echo "Changed builder uid/gid... (this may take a while)" + docker exec --tty $CONTAINER_NAME sudo chown -R $(id -u) $HOME + docker exec --tty $CONTAINER_NAME sudo chown -R $(id -u) /data + docker exec --tty $CONTAINER_NAME sudo usermod -u $(id -u) builder + docker exec --tty $CONTAINER_NAME sudo groupmod -g $(id -g) builder fi fi } if [ "$#" -eq "0" ]; then - docker exec --interactive --tty --user $USER $CONTAINER_NAME bash + docker exec --interactive --tty $CONTAINER_NAME bash else - docker exec --interactive --tty --user $USER $CONTAINER_NAME $@ + docker exec --interactive --tty $CONTAINER_NAME $@ fi diff --git a/scripts/setup-android-sdk.sh b/scripts/setup-android-sdk.sh index 73c07b8e2..d76b2c2e5 100755 --- a/scripts/setup-android-sdk.sh +++ b/scripts/setup-android-sdk.sh @@ -7,7 +7,7 @@ set -e -u ANDROID_SDK_FILE=sdk-tools-linux-4333796.zip ANDROID_SDK_SHA256=92ffee5a1d98d856634e8b71132e8a95d96c83a63fde1099be3d86df3106def9 ANDROID_NDK_FILE=android-ndk-r${TERMUX_NDK_VERSION}-Linux-x86_64.zip -ANDROID_NDK_SHA256=c413dd014edc37f822d0dc88fabc05b64232d07d5c6e9345224e47073fdf140b +ANDROID_NDK_SHA256=0fbb1645d0f1de4dde90a4ff79ca5ec4899c835e729d692f433fda501623257a if [ ! -d $ANDROID_HOME ]; then mkdir -p $ANDROID_HOME