Merge pull request #5574 from termux/build-git-clone

build-package: add termux_git_clone_src function
This commit is contained in:
Henrik Grimler 2020-07-21 20:10:08 +02:00 committed by GitHub
commit 9344a7ce65
52 changed files with 188 additions and 258 deletions

View File

@ -89,17 +89,29 @@ source "$TERMUX_SCRIPTDIR/scripts/build/termux_download_deb.sh"
# shellcheck source=scripts/build/termux_get_repo_files.sh
source "$TERMUX_SCRIPTDIR/scripts/build/termux_get_repo_files.sh"
# Source the package build script and start building. No to be overridden by packages.
# Source the package build script and start building. Not to be overridden by packages.
# shellcheck source=scripts/build/termux_step_start_build.sh
source "$TERMUX_SCRIPTDIR/scripts/build/termux_step_start_build.sh"
# Run just after sourcing $TERMUX_PKG_BUILDER_SCRIPT. May be overridden by packages.
# shellcheck source=scripts/build/termux_step_extract_package.sh
source "$TERMUX_SCRIPTDIR/scripts/build/termux_step_extract_package.sh"
# Run just after sourcing $TERMUX_PKG_BUILDER_SCRIPT. Can be overridden by packages.
# shellcheck source=scripts/build/get_source/termux_step_get_source.sh
source "$TERMUX_SCRIPTDIR/scripts/build/get_source/termux_step_get_source.sh"
# Hook for packages to act just after the package has been extracted.
# Invoked in $TERMUX_PKG_SRCDIR.
termux_step_post_extract_package() {
# Run from termux_step_get_source if TERMUX_PKG_SRCURL ends with .git.
# shellcheck source=scripts/build/get_source/termux_step_get_source.sh
source "$TERMUX_SCRIPTDIR/scripts/build/get_source/termux_git_clone_src.sh"
# Run from termux_step_get_source if TERMUX_PKG_SRCURL does not ends with .git.
# shellcheck source=scripts/build/get_source/termux_download_src_archive.sh
source "$TERMUX_SCRIPTDIR/scripts/build/get_source/termux_download_src_archive.sh"
# Run from termux_step_get_source after termux_download_src_archive.
# shellcheck source=scripts/build/get_source/termux_unpack_src_archive.sh
source "$TERMUX_SCRIPTDIR/scripts/build/get_source/termux_unpack_src_archive.sh"
# Hook for packages to act just after the package sources have been obtained.
# Invoked from $TERMUX_PKG_SRCDIR.
termux_step_post_get_source() {
return
}
@ -108,7 +120,7 @@ termux_step_post_extract_package() {
source "$TERMUX_SCRIPTDIR/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()
# After termux_step_post_get_source() and before termux_step_patch_package()
# shellcheck source=scripts/build/termux_step_host_build.sh
source "$TERMUX_SCRIPTDIR/scripts/build/termux_step_host_build.sh"
@ -223,21 +235,21 @@ if [ "$TERMUX_ON_DEVICE_BUILD" = "true" ]; then
fi
_show_usage() {
echo "Usage: ./build-package.sh [options] PACKAGE_1 PACKAGE_2 ..."
echo
echo "Build a package by creating a .deb file in the debs/ folder."
echo
echo "Available options:"
[ "$TERMUX_ON_DEVICE_BUILD" = "false" ] && 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."
[ "$TERMUX_ON_DEVICE_BUILD" = "false" ] && 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
echo "Usage: ./build-package.sh [options] PACKAGE_1 PACKAGE_2 ..."
echo
echo "Build a package by creating a .deb file in the debs/ folder."
echo
echo "Available options:"
[ "$TERMUX_ON_DEVICE_BUILD" = "false" ] && 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."
[ "$TERMUX_ON_DEVICE_BUILD" = "false" ] && 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
@ -337,9 +349,10 @@ while (($# > 0)); do
termux_step_setup_variables
termux_step_handle_buildarch
termux_step_start_build
termux_step_extract_package
cd "$TERMUX_PKG_CACHEDIR"
termux_step_get_source
cd "$TERMUX_PKG_SRCDIR"
termux_step_post_extract_package
termux_step_post_get_source
termux_step_handle_hostbuild
termux_step_setup_toolchain
termux_step_patch_package
@ -356,7 +369,7 @@ while (($# > 0)); do
termux_step_make_install
cd "$TERMUX_PKG_BUILDDIR"
termux_step_post_make_install
termux_step_install_service_scripts
termux_step_install_service_scripts
termux_step_install_license
cd "$TERMUX_PKG_MASSAGEDIR"
termux_step_extract_into_massagedir

View File

@ -4,8 +4,9 @@ TERMUX_PKG_LICENSE="Apache-2.0"
TERMUX_PKG_VERSION=${TERMUX_ANDROID_BUILD_TOOLS_VERSION}
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_PLATFORM_INDEPENDENT=true
TERMUX_PKG_SKIP_SRC_EXTRACT=true
termux_step_extract_package() {
termux_step_get_source() {
mkdir -p "$TERMUX_PKG_SRCDIR" && cd "$TERMUX_PKG_SRCDIR"
mkdir -p com/android/apksig/internal/asn1
termux_download \

View File

@ -7,7 +7,7 @@ TERMUX_PKG_SHA256=64ebcec9f8ac5b2487125a86a7760d2591ac9e1d3dbd59489633f9de62a576
TERMUX_PKG_DEPENDS="m4, make, perl"
TERMUX_PKG_PLATFORM_INDEPENDENT=true
termux_step_post_extract_package() {
termux_step_post_get_source() {
perl -p -i -e "s|/bin/sh|$TERMUX_PREFIX/bin/sh|" lib/*/*.m4
}

View File

@ -11,7 +11,7 @@ TERMUX_PKG_DEPENDS="liblmdb, openssl, libandroid-glob, pcre"
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--with-workdir=$TERMUX_PREFIX/var/lib/cfengine --without-pam --without-selinux-policy --without-systemd-service --with-lmdb=$TERMUX_PREFIX --with-openssl=$TERMUX_PREFIX --with-pcre=$TERMUX_PREFIX"
termux_step_post_extract_package() {
termux_step_post_get_source() {
cd cfengine-masterfiles-${TERMUX_PKG_VERSION}
EXPLICIT_VERSION=${TERMUX_PKG_VERSION} ./configure --prefix=$TERMUX_PREFIX/var/lib/cfengine --bindir=$TERMUX_PREFIX/bin
make install

View File

@ -16,7 +16,7 @@ bin/
share/cryptopp/
"
termux_step_extract_package() {
termux_step_get_source() {
mkdir -p $TERMUX_PKG_CACHEDIR
termux_download $TERMUX_PKG_SRCURL $TERMUX_PKG_CACHEDIR/cryptopp.zip \
$TERMUX_PKG_SHA256

View File

@ -11,7 +11,7 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--enable-tmpdir=$TERMUX_PREFIX/tmp"
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_HOSTBUILD=true
termux_step_post_extract_package() {
termux_step_post_get_source() {
export regcomp_works=yes
./autogen.sh
}

View File

@ -4,13 +4,14 @@ TERMUX_PKG_LICENSE="BSD"
TERMUX_PKG_LICENSE_FILE="sdk/LICENSE"
TERMUX_PKG_VERSION=2.7.2
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_SKIP_SRC_EXTRACT=true
# Dart uses tar and gzip to extract downloaded packages.
# Busybox-based versions of such utilities cause issues so
# complete ones should be used.
TERMUX_PKG_DEPENDS="gzip, tar"
termux_step_extract_package() {
termux_step_get_source() {
mkdir -p $TERMUX_PKG_SRCDIR
cd $TERMUX_PKG_SRCDIR
@ -27,21 +28,22 @@ termux_step_extract_package() {
gclient sync -D --force --reset
}
termux_step_make() {
cd sdk
local DEST_CPU
termux_step_post_get_source() {
if [ $TERMUX_ARCH = "arm" ]; then
DEST_CPU="arm"
export DEST_CPU="arm"
elif [ $TERMUX_ARCH = "i686" ]; then
DEST_CPU="ia32"
export DEST_CPU="ia32"
elif [ $TERMUX_ARCH = "aarch64" ]; then
DEST_CPU="arm64"
export DEST_CPU="arm64"
elif [ $TERMUX_ARCH = "x86_64" ]; then
DEST_CPU="x64"
export DEST_CPU="x64"
else
termux_error_exit "Unsupported arch '$TERMUX_ARCH'"
fi
}
termux_step_make() {
cd sdk
rm -f ./out/*/args.gn
DART_MAKE_PLATFORM_SDK=true python2 ./tools/build.py --mode release --arch=$DEST_CPU --os=android create_sdk
@ -50,19 +52,6 @@ termux_step_make() {
termux_step_make_install() {
cd sdk
local DEST_CPU
if [ $TERMUX_ARCH = "arm" ]; then
DEST_CPU="ARM"
elif [ $TERMUX_ARCH = "i686" ]; then
DEST_CPU="IA32"
elif [ $TERMUX_ARCH = "aarch64" ]; then
DEST_CPU="ARM64"
elif [ $TERMUX_ARCH = "x86_64" ]; then
DEST_CPU="X64"
else
termux_error_exit "Unsupported arch '$TERMUX_ARCH'"
fi
chmod +x ./out/ReleaseAndroid${DEST_CPU}/dart-sdk/bin/*
cp -r ./out/ReleaseAndroid${DEST_CPU}/dart-sdk ${TERMUX_PREFIX}/lib

View File

@ -7,7 +7,7 @@ TERMUX_PKG_SRCURL=https://sourceforge.net/projects/dirb/files/dirb/${TERMUX_PKG_
TERMUX_PKG_SHA256=f3748ade231ca211a01acbec31cc6a3b576f6c56c906d73329d7dbb79f60fc2c
TERMUX_PKG_DEPENDS="libcurl"
termux_step_post_extract_package() {
termux_step_post_get_source() {
# dirb222.tar.gz has directory permission problem
chmod +x -R "$TERMUX_PKG_SRCDIR"
}

View File

@ -6,8 +6,9 @@ TERMUX_PKG_REVISION=3
TERMUX_PKG_DEPENDS="libxml2-utils"
TERMUX_PKG_PLATFORM_INDEPENDENT=true
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_SKIP_SRC_EXTRACT=true
termux_step_extract_package() {
termux_step_get_source() {
mkdir -p $TERMUX_PKG_SRCDIR
cd $TERMUX_PKG_SRCDIR

View File

@ -7,8 +7,9 @@ TERMUX_PKG_REVISION=1
TERMUX_PKG_DEPENDS="docbook-xml, libxml2-utils, xsltproc"
TERMUX_PKG_PLATFORM_INDEPENDENT=true
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_SKIP_SRC_EXTRACT=true
termux_step_extract_package() {
termux_step_get_source() {
mkdir -p $TERMUX_PKG_SRCDIR
cd $TERMUX_PKG_SRCDIR

View File

@ -10,22 +10,24 @@ TERMUX_PKG_SHA256=69dad18a1fcacd342a7d44c5abf74f50e7529975553a24c64bce0b29b86af4
TERMUX_PKG_PLATFORM_INDEPENDENT=true
TERMUX_PKG_CONFLICTS="ecj4.6"
termux_step_extract_package() {
RAW_JAR=$TERMUX_PKG_CACHEDIR/ecj-${_VERSION}.jar
termux_step_pre_configure() {
# Certain packages are not safe to build on device because their
# build.sh script deletes specific files in $TERMUX_PREFIX.
if $TERMUX_ON_DEVICE_BUILD; then
termux_error_exit "Package '$TERMUX_PKG_NAME' is not safe for on-device builds."
fi
mkdir $TERMUX_PKG_SRCDIR
}
termux_step_make() {
local RAW_JAR=$TERMUX_PKG_CACHEDIR/ecj-${_VERSION}.jar
termux_step_get_source() {
mkdir $TERMUX_PKG_SRCDIR
termux_download $TERMUX_PKG_SRCURL \
$RAW_JAR \
$TERMUX_PKG_SHA256
}
termux_step_make() {
mkdir -p $TERMUX_PREFIX/share/{dex,java}
$TERMUX_D8 \
--classpath $ANDROID_HOME/platforms/android-$TERMUX_PKG_API_LEVEL/android.jar \

View File

@ -8,7 +8,7 @@ TERMUX_PKG_DEPENDS="dash, erlang"
TERMUX_PKG_SUGGESTS="clang, make"
TERMUX_PKG_PLATFORM_INDEPENDENT=true
termux_step_extract_package() {
termux_step_get_source() {
termux_download "$TERMUX_PKG_SRCURL" "$TERMUX_PKG_CACHEDIR"/prebuilt.zip \
"$TERMUX_PKG_SHA256"

View File

@ -63,7 +63,7 @@ share/man/man1/grep-changelog.1.gz
# program still remain in the emacs package):
TERMUX_PKG_RM_AFTER_INSTALL+=" bin/ctags share/man/man1/ctags.1 share/man/man1/ctags.1.gz"
termux_step_post_extract_package() {
termux_step_post_get_source() {
# Certain packages are not safe to build on device because their
# build.sh script deletes specific files in $TERMUX_PREFIX.
if $TERMUX_ON_DEVICE_BUILD; then

View File

@ -11,7 +11,7 @@ TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--without-javac --with-ssl=${TERMUX_PREFIX} --with-termcap"
TERMUX_PKG_EXTRA_MAKE_ARGS="noboot"
termux_step_post_extract_package() {
termux_step_post_get_source() {
# We need a host build every time:
rm -Rf "$TERMUX_PKG_HOSTBUILD_DIR"
./otp_build autoconf

View File

@ -17,7 +17,7 @@ TERMUX_PKG_RM_AFTER_INSTALL="lib/*ng-test*"
# --without-async due to that using pthread_cancel().
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--without-async --with-pcaudiolib"
termux_step_post_extract_package() {
termux_step_post_get_source() {
# Certain packages are not safe to build on device because their
# build.sh script deletes specific files in $TERMUX_PREFIX.
if $TERMUX_ON_DEVICE_BUILD; then

View File

@ -15,7 +15,7 @@ CCAUX=gcc
--with-system-libtiff
"
termux_step_post_extract_package() {
termux_step_post_get_source() {
rm -rdf $TERMUX_PKG_SRCDIR/{jpeg,libpng,expat,jasper,freetype,lcms2,tiff,openjpeg}
}

View File

@ -8,7 +8,7 @@ TERMUX_PKG_DEPENDS="libandroid-support"
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_MAKE_PROCESSES=1
termux_step_post_extract_package() {
termux_step_post_get_source() {
local file filename
filename=$(basename "$TERMUX_PKG_SRCURL")
file="$TERMUX_PKG_CACHEDIR/$filename"

View File

@ -1,32 +1,12 @@
TERMUX_PKG_HOMEPAGE=http://gnunet.org
TERMUX_PKG_DESCRIPTION="A framework for secure peer-to-peer networking"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_SRCURL=https://gnunet.org/git/gnunet.git
TERMUX_PKG_VERSION=0.13.1
TERMUX_PKG_DEPENDS="gnurl, libgcrypt, libgmp, libidn, libjansson, libltdl, libmicrohttpd, libsqlite, libunistring, libsodium"
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="ac_cv_have_decl_struct_in6_ifreq=yes"
termux_step_extract_package() {
local CHECKED_OUT_FOLDER=$TERMUX_PKG_CACHEDIR/checkout-$TERMUX_PKG_VERSION
if [ ! -d $CHECKED_OUT_FOLDER ]; then
local TMP_CHECKOUT=$TERMUX_PKG_TMPDIR/tmp-checkout
rm -Rf $TMP_CHECKOUT
mkdir -p $TMP_CHECKOUT
git clone --depth 1 \
--branch v$TERMUX_PKG_VERSION \
https://gnunet.org/git/gnunet.git \
$TMP_CHECKOUT
cd $TMP_CHECKOUT
git submodule update --init # --depth 1
mv $TMP_CHECKOUT $CHECKED_OUT_FOLDER
fi
mkdir $TERMUX_PKG_SRCDIR
cd $TERMUX_PKG_SRCDIR
cp -Rf $CHECKED_OUT_FOLDER/* .
}
termux_step_pre_configure() {
CPPFLAGS+=" -D_LINUX_IN6_H"
./bootstrap

View File

@ -7,6 +7,6 @@ TERMUX_PKG_SRCURL=https://github.com/gpsbabel/gpsbabel/archive/gpsbabel_${TERMUX
TERMUX_PKG_SHA256=22860e913f093aa9124e295d52d1d4ae1afccaa67ed6bed6f1f8d8b0a45336d1
TERMUX_PKG_DEPENDS="libexpat"
termux_step_post_extract_package() {
termux_step_post_get_source() {
TERMUX_PKG_SRCDIR+=/gpsbabel
}

View File

@ -14,7 +14,7 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
--enable-sysconfjoesubdir=/jupp
"
termux_step_post_extract_package() {
termux_step_post_get_source() {
chmod +x $TERMUX_PKG_SRCDIR/configure
}

View File

@ -24,7 +24,7 @@ DEFKTNAME=$TERMUX_PREFIX/etc/krb5.keytab
DEFCKTNAME=$TERMUX_PREFIX/var/krb5/user/%{euid}/client.keytab
"
termux_step_post_extract_package() {
termux_step_post_get_source() {
TERMUX_PKG_SRCDIR+="/src"
}

View File

@ -6,7 +6,7 @@ TERMUX_PKG_VERSION=1.18.4
TERMUX_PKG_SRCURL=https://dl.k8s.io/v$TERMUX_PKG_VERSION/kubernetes-src.tar.gz
TERMUX_PKG_SHA256=6db48e6725bb1ad78aa7e770b316175874c121a72cdc4eebb6a796b8655f0c68
termux_step_extract_package() {
termux_step_get_source() {
mkdir -p "$TERMUX_PKG_CACHEDIR"
mkdir -p "$TERMUX_PKG_SRCDIR"

View File

@ -40,7 +40,7 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
-DCMAKE_INSTALL_PREFIX=$LLVM_INSTALL_DIR
"
termux_step_post_extract_package() {
termux_step_post_get_source() {
# Certain packages are not safe to build on device because their
# build.sh script deletes specific files in $TERMUX_PREFIX.
if $TERMUX_ON_DEVICE_BUILD; then

View File

@ -11,7 +11,7 @@ TERMUX_PKG_PRE_DEPENDS="dpkg (>= 1.19.4-3)"
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_ESSENTIAL=true
termux_step_post_extract_package() {
termux_step_post_get_source() {
cp wcwidth-${TERMUX_PKG_VERSION[1]}/wcwidth.c src/
}

View File

@ -1,16 +1,13 @@
TERMUX_PKG_HOMEPAGE=https://www.duktape.org/
TERMUX_PKG_DESCRIPTION="An embeddable Javascript engine with a focus on portability and compact footprint"
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_SRCURL=https://github.com/svaarala/duktape.git
TERMUX_PKG_VERSION=2.5.0
TERMUX_PKG_REVISION=1
TERMUX_PKG_REPLACES="duktape (<< 2.3.0-1), libduktape-dev"
TERMUX_PKG_BREAKS="duktape (<< 2.3.0-1), libduktape-dev"
TERMUX_PKG_BUILD_IN_SRC=true
termux_step_extract_package() {
git clone --depth=1 https://github.com/svaarala/duktape.git -b v${TERMUX_PKG_VERSION} ${TERMUX_PKG_SRCDIR}
}
termux_step_pre_configure() {
if $TERMUX_ON_DEVICE_BUILD; then
# configure.py requires 'yaml' python2 module.

View File

@ -12,7 +12,7 @@ TERMUX_PKG_BREAKS="libgc-dev"
TERMUX_PKG_REPLACES="libgc-dev"
TERMUX_PKG_RM_AFTER_INSTALL="share/gc"
termux_step_post_extract_package() {
termux_step_post_get_source() {
mv libatomic_ops-${TERMUX_PKG_VERSION[1]} libatomic_ops
./autogen.sh
}

View File

@ -8,7 +8,7 @@ TERMUX_PKG_BREAKS="libgpg-error-dev"
TERMUX_PKG_REPLACES="libgpg-error-dev"
TERMUX_PKG_RM_AFTER_INSTALL="share/common-lisp"
termux_step_post_extract_package() {
termux_step_post_get_source() {
# Upstream only has Android definitions for platform-specific lock objects.
# See https://lists.gnupg.org/pipermail/gnupg-devel/2014-January/028203.html
# for how to generate a lock-obj header file on devices.

View File

@ -1,6 +1,7 @@
TERMUX_PKG_HOMEPAGE=https://grpc.io/
TERMUX_PKG_DESCRIPTION="High performance, open source, general RPC framework that puts mobile and HTTP/2 first"
TERMUX_PKG_LICENSE="Apache-2.0"
TERMUX_PKG_SRCURL=https://github.com/grpc/grpc.git
TERMUX_PKG_VERSION=1.29.1
TERMUX_PKG_REVISION=3
TERMUX_PKG_DEPENDS="libc++, openssl, protobuf, c-ares, zlib"
@ -24,26 +25,7 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
-DProtobuf_PROTOC_LIBRARY=$TERMUX_PREFIX/lib/libprotoc.so
"
termux_step_extract_package() {
local CHECKED_OUT_FOLDER=$TERMUX_PKG_CACHEDIR/checkout-$TERMUX_PKG_VERSION
if [ ! -d $CHECKED_OUT_FOLDER ]; then
local TMP_CHECKOUT=$TERMUX_PKG_TMPDIR/tmp-checkout
rm -Rf $TMP_CHECKOUT
mkdir -p $TMP_CHECKOUT
git clone --depth 1 \
--branch v$TERMUX_PKG_VERSION \
https://github.com/grpc/grpc.git \
$TMP_CHECKOUT
cd $TMP_CHECKOUT
git submodule update --init # --depth 1
mv $TMP_CHECKOUT $CHECKED_OUT_FOLDER
fi
mkdir $TERMUX_PKG_SRCDIR
cd $TERMUX_PKG_SRCDIR
cp -Rf $CHECKED_OUT_FOLDER/* .
termux_step_post_get_source() {
termux_setup_protobuf
}

View File

@ -1,7 +1,7 @@
TERMUX_PKG_HOMEPAGE=http://site.icu-project.org/home
TERMUX_PKG_DESCRIPTION='International Components for Unicode library'
TERMUX_PKG_LICENSE="BSD"
# We override TERMUX_PKG_SRCDIR termux_step_post_extract_package so need to do
# We override TERMUX_PKG_SRCDIR termux_step_post_get_source so need to do
# this hack to be able to find the license file.
TERMUX_PKG_LICENSE_FILE="../LICENSE"
# Function `icu::number::FormattedNumber::getAllFieldPositions` was removed
@ -17,6 +17,6 @@ TERMUX_PKG_HOSTBUILD=true
TERMUX_PKG_EXTRA_HOSTBUILD_CONFIGURE_ARGS="--disable-samples --disable-tests"
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--disable-samples --disable-tests --with-cross-build=$TERMUX_PKG_HOSTBUILD_DIR"
termux_step_post_extract_package() {
termux_step_post_get_source() {
TERMUX_PKG_SRCDIR+="/source"
}

View File

@ -55,7 +55,7 @@ TERMUX_PKG_HAS_DEBUG=false
# cp: cannot stat '../src/projects/openmp/runtime/exports/common.min.50.ompt.optional/include/omp.h': No such file or directory
# common.min.50.ompt.optional should be common.deb.50.ompt.optional when doing debug build
termux_step_post_extract_package() {
termux_step_post_get_source() {
if [ "$TERMUX_PKG_QUICK_REBUILD" = "false" ]; then
mv clang-${TERMUX_PKG_VERSION}.src tools/clang
mv clang-tools-extra-${TERMUX_PKG_VERSION}.src tools/clang/tools/extra

View File

@ -9,6 +9,6 @@ TERMUX_PKG_DEPENDS="glib, libjansson"
TERMUX_PKG_BREAKS="libsearpc-dev"
TERMUX_PKG_REPLACES="libsearpc-dev"
termux_step_post_extract_package() {
termux_step_post_get_source() {
./autogen.sh
}

View File

@ -10,6 +10,6 @@ TERMUX_PKG_BREAKS="libzmq-dev"
TERMUX_PKG_REPLACES="libzmq-dev"
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--with-libsodium --disable-libunwind --disable-Werror"
termux_step_post_extract_package() {
termux_step_post_get_source() {
./autogen.sh
}

View File

@ -1,7 +1,9 @@
TERMUX_PKG_HOMEPAGE=https://tls.mbed.org/
TERMUX_PKG_DESCRIPTION="Light-weight cryptographic and SSL/TLS library"
TERMUX_PKG_LICENSE="Apache-2.0"
TERMUX_PKG_SRCURL=https://github.com/ARMmbed/mbedtls.git
TERMUX_PKG_VERSION=2.22.0
TERMUX_PKG_GIT_BRANCH=mbedtls-$TERMUX_PKG_VERSION
TERMUX_PKG_BREAKS="mbedtls-dev"
TERMUX_PKG_REPLACES="mbedtls-dev"
@ -11,24 +13,3 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
-DENABLE_TESTING=OFF
-DENABLE_PROGRAMS=OFF
"
termux_step_extract_package() {
local CHECKED_OUT_FOLDER=$TERMUX_PKG_CACHEDIR/checkout-$TERMUX_PKG_VERSION
if [ ! -d $CHECKED_OUT_FOLDER ]; then
local TMP_CHECKOUT=$TERMUX_PKG_TMPDIR/tmp-checkout
rm -Rf $TMP_CHECKOUT
mkdir -p $TMP_CHECKOUT
git clone --depth 1 \
--branch mbedtls-$TERMUX_PKG_VERSION \
https://github.com/ARMmbed/mbedtls.git \
$TMP_CHECKOUT
cd $TMP_CHECKOUT
git submodule update --init # --depth 1
mv $TMP_CHECKOUT $CHECKED_OUT_FOLDER
fi
mkdir $TERMUX_PKG_SRCDIR
cd $TERMUX_PKG_SRCDIR
cp -Rf $CHECKED_OUT_FOLDER/* .
}

View File

@ -1,31 +1,10 @@
TERMUX_PKG_HOMEPAGE=https://micro-editor.github.io/
TERMUX_PKG_DESCRIPTION="Modern and intuitive terminal-based text editor"
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_SRCURL=https://github.com/zyedidia/micro.git
TERMUX_PKG_VERSION=2.0.6
TERMUX_PKG_REVISION=1
termux_step_extract_package() {
local CHECKED_OUT_FOLDER=$TERMUX_PKG_CACHEDIR/checkout-$TERMUX_PKG_VERSION
if [ ! -d $CHECKED_OUT_FOLDER ]; then
local TMP_CHECKOUT=$TERMUX_PKG_TMPDIR/tmp-checkout
rm -Rf $TMP_CHECKOUT
mkdir -p $TMP_CHECKOUT
git clone --depth 1 \
--branch v$TERMUX_PKG_VERSION \
https://github.com/zyedidia/micro.git \
$TMP_CHECKOUT
cd $TMP_CHECKOUT
git submodule update --init # --depth 1
mv $TMP_CHECKOUT $CHECKED_OUT_FOLDER
fi
mkdir $TERMUX_PKG_SRCDIR
cd $TERMUX_PKG_SRCDIR
cp -Rf $CHECKED_OUT_FOLDER/* .
cp -Rf $CHECKED_OUT_FOLDER/.git .
}
termux_step_make() {
return
}

View File

@ -17,7 +17,7 @@ TERMUX_PKG_RM_AFTER_INSTALL="lib/node_modules/npm/html lib/node_modules/npm/make
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_HOSTBUILD=true
termux_step_post_extract_package() {
termux_step_post_get_source() {
# Prevent caching of host build:
rm -Rf $TERMUX_PKG_HOSTBUILD_DIR
}

View File

@ -31,7 +31,7 @@ TERMUX_PKG_HOSTBUILD=true
# collect2: error: ld returned 1 exit status
TERMUX_PKG_BLACKLISTED_ARCHES="x86_64"
termux_step_post_extract_package() {
termux_step_post_get_source() {
# Prevent caching of host build:
rm -Rf $TERMUX_PKG_HOSTBUILD_DIR
}

View File

@ -16,7 +16,7 @@ TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_MAKE_PROCESSES=1
TERMUX_PKG_RM_AFTER_INSTALL="bin/perl${TERMUX_PKG_VERSION}"
termux_step_post_extract_package() {
termux_step_post_get_source() {
# Certain packages are not safe to build on device because their
# build.sh script deletes specific files in $TERMUX_PREFIX.
if $TERMUX_ON_DEVICE_BUILD; then

View File

@ -13,6 +13,6 @@ TERMUX_PKG_DEPENDS="libpng, littlecms, zlib"
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--disable-sse"
termux_step_post_extract_package() {
termux_step_post_get_source() {
mv $TERMUX_PKG_SRCDIR/libimagequant-$TERMUX_PKG_VERSION/* $TERMUX_PKG_SRCDIR/lib/
}

View File

@ -1,6 +1,7 @@
TERMUX_PKG_HOMEPAGE=https://www.freedesktop.org/wiki/Software/PulseAudio
TERMUX_PKG_DESCRIPTION="A featureful, general-purpose sound server"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_SRCURL=https://github.com/pulseaudio/pulseaudio.git
TERMUX_PKG_VERSION=13.0
TERMUX_PKG_REVISION=2
TERMUX_PKG_DEPENDS="libltdl, libsndfile, libandroid-glob, libsoxr, speexdsp"
@ -21,27 +22,7 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--disable-neon-opt
ax_cv_PTHREAD_PRIO_INHERIT=no"
TERMUX_PKG_CONFFILES="etc/pulse/client.conf etc/pulse/daemon.conf etc/pulse/default.pa etc/pulse/system.pa"
termux_step_extract_package() {
local CHECKED_OUT_FOLDER=$TERMUX_PKG_CACHEDIR/checkout-$TERMUX_PKG_VERSION
if [ ! -d $CHECKED_OUT_FOLDER ]; then
local TMP_CHECKOUT=$TERMUX_PKG_TMPDIR/tmp-checkout
rm -Rf $TMP_CHECKOUT
mkdir -p $TMP_CHECKOUT
git clone --depth 1 \
--branch v$TERMUX_PKG_VERSION \
https://github.com/pulseaudio/pulseaudio.git \
$TMP_CHECKOUT
cd $TMP_CHECKOUT
git submodule update --init # --depth 1
mv $TMP_CHECKOUT $CHECKED_OUT_FOLDER
fi
mkdir $TERMUX_PKG_SRCDIR
cd $TERMUX_PKG_SRCDIR
cp -Rf $CHECKED_OUT_FOLDER/* .
cp -Rf $CHECKED_OUT_FOLDER/.git .
termux_step_post_get_source() {
NOCONFIGURE=1 ./bootstrap.sh
}

View File

@ -28,7 +28,7 @@ SWIFT_BUILD_FLAGS="$SWIFT_ANDROID_NDK_FLAGS --build-toolchain-only
--build-swift-dynamic-stdlib=0 --build-swift-dynamic-sdk-overlay=0"
fi
termux_step_post_extract_package() {
termux_step_post_get_source() {
if [ "$TERMUX_PKG_QUICK_REBUILD" = "false" ]; then
# The Swift build-script requires a particular organization of source directories,
# which the following sets up.

View File

@ -10,7 +10,7 @@ TERMUX_PKG_SHA256=(6199304fc9697a2eb78c542357aec984924bc2ecad90f3bedf1f6299fe345
c37f52fc39c62b3391a0eae061cef2c4079dfd4af0e3bdabac1be98316f9c451)
TERMUX_PKG_DEPENDS="libandroid-glob, libc++"
termux_step_post_extract_package() {
termux_step_post_get_source() {
rmdir src/libshared
mv libshared-${_LIBSHARED_COMMIT}/ src/libshared
}

View File

@ -9,7 +9,7 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS="ac_cv_file__dev_ptmx=no"
TERMUX_PKG_DEPENDS="pcre, libgnutls, zlib"
TERMUX_PKG_BUILD_IN_SRC=true
termux_step_post_extract_package() {
termux_step_post_get_source() {
TERMUX_PKG_SRCDIR+="/src"
TERMUX_PKG_BUILDDIR="$TERMUX_PKG_SRCDIR"
}

View File

@ -2,10 +2,9 @@ TERMUX_PKG_HOMEPAGE=https://transmissionbt.com/
TERMUX_PKG_DESCRIPTION="Easy, lean and powerful BitTorrent client"
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_VERSION=3.00
TERMUX_PKG_GIT_BRANCH=$TERMUX_PKG_VERSION
TERMUX_PKG_REVISION=2
TERMUX_PKG_SRCURL=https://github.com/transmission/transmission.git
# lint-packages complains if SHA256 is not set
TERMUX_PKG_SHA256=SKIP_CHECKSUM
TERMUX_PKG_DEPENDS="libcurl, libevent, miniupnpc, openssl"
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--without-gtk --enable-lightweight --cache-file=termux_configure.cache"
# transmission already puts timestamps in the info printed to stdout so no need for svlogd -tt,
@ -15,26 +14,6 @@ TERMUX_PKG_SERVICE_SCRIPT=(
"transmission/log" 'mkdir -p "$LOGDIR/sv/transmission"\nexec svlogd "$LOGDIR/sv/transmission"'
)
termux_step_extract_package() {
local CHECKED_OUT_FOLDER=$TERMUX_PKG_CACHEDIR/checkout-$TERMUX_PKG_VERSION
if [ ! -d $CHECKED_OUT_FOLDER ]; then
local TMP_CHECKOUT=$TERMUX_PKG_TMPDIR/tmp-checkout
rm -Rf $TMP_CHECKOUT
mkdir -p $TMP_CHECKOUT
git clone --depth 1 \
--branch $TERMUX_PKG_VERSION \
$TERMUX_PKG_SRCURL \
$TMP_CHECKOUT
cd $TMP_CHECKOUT
git submodule update --init --recursive
mv $TMP_CHECKOUT $CHECKED_OUT_FOLDER
fi
rm -rf $TERMUX_PKG_SRCDIR
cp -Rf $CHECKED_OUT_FOLDER $TERMUX_PKG_SRCDIR
}
termux_step_pre_configure() {
CFLAGS+=" -D_POSIX_C_SOURCE=200809L"
./autogen.sh

View File

@ -9,7 +9,7 @@ TERMUX_PKG_SHA256=849d7ef5af80d03e76cc05ed9fb8fa2bcc2b724b51ebfd1b6be11c7863f5b3
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" --with-conf=$TERMUX_PREFIX/etc/tsocks.conf"
termux_step_post_extract_package() {
termux_step_post_get_source() {
cp $TERMUX_PKG_SRCDIR/tsocks-1.8/* $TERMUX_PKG_SRCDIR/
}

View File

@ -6,7 +6,7 @@ TERMUX_PKG_SRCURL=https://github.com/jmacd/xdelta/archive/v${TERMUX_PKG_VERSION}
TERMUX_PKG_SHA256=7515cf5378fca287a57f4e2fee1094aabc79569cfe60d91e06021a8fd7bae29d
TERMUX_PKG_DEPENDS=liblzma
termux_step_post_extract_package() {
termux_step_post_get_source() {
TERMUX_PKG_SRCDIR+=/xdelta3
}

View File

@ -0,0 +1,16 @@
termux_download_src_archive() {
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
for i in $(seq 0 $(( ${#PKG_SRCURL[@]}-1 ))); do
local file="$TERMUX_PKG_CACHEDIR/$(basename "${PKG_SRCURL[$i]}")"
if [ "${PKG_SHA256[$i]}" == "" ]; then
termux_download "${PKG_SRCURL[$i]}" "$file"
else
termux_download "${PKG_SRCURL[$i]}" "$file" "${PKG_SHA256[$i]}"
fi
done
}

View File

@ -0,0 +1,27 @@
termux_git_clone_src() {
local CHECKED_OUT_FOLDER=$TERMUX_PKG_TMPDIR/checkout-$TERMUX_PKG_VERSION
local TMP_CHECKOUT=$TERMUX_PKG_CACHEDIR/tmp-checkout
# If user aborts git clone step here the folder needs to be removed
# manually. IMO this is better than git cloning the src everytime
if [ ! -d $CHECKED_OUT_FOLDER ] && [ ! -d $TMP_CHECKOUT ]; then
if [ "$TERMUX_PKG_GIT_BRANCH" == "" ]; then
TERMUX_PKG_GIT_BRANCH=v$TERMUX_PKG_VERSION
fi
git clone --depth 1 \
--branch $TERMUX_PKG_GIT_BRANCH \
$TERMUX_PKG_SRCURL \
$TMP_CHECKOUT
cd $TMP_CHECKOUT
git submodule update --init --recursive
cd ..
fi
if [ ! -d $CHECKED_OUT_FOLDER ]; then
cp -Rf $TMP_CHECKOUT $CHECKED_OUT_FOLDER
fi
rm -rf $TERMUX_PKG_SRCDIR
cp -Rf $CHECKED_OUT_FOLDER $TERMUX_PKG_SRCDIR
}

View File

@ -0,0 +1,13 @@
termux_step_get_source() {
if [ "${TERMUX_PKG_SRCURL: -4}" == ".git" ]; then
termux_git_clone_src
else
if [ -z "${TERMUX_PKG_SRCURL:=""}" ] || [ "${TERMUX_PKG_SKIP_SRC_EXTRACT-false}" = "true" ] || [ "$TERMUX_PKG_METAPACKAGE" = "true" ]; then
mkdir -p "$TERMUX_PKG_SRCDIR"
return
fi
termux_download_src_archive
cd $TERMUX_PKG_TMPDIR
termux_extract_src_archive
fi
}

View File

@ -0,0 +1,23 @@
termux_extract_src_archive() {
# 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_get_source.
local STRIP=1
local PKG_SRCURL=(${TERMUX_PKG_SRCURL[@]})
local PKG_SHA256=(${TERMUX_PKG_SHA256[@]})
for i in $(seq 0 $(( ${#PKG_SRCURL[@]}-1 ))); do
local file="$TERMUX_PKG_CACHEDIR/$(basename "${PKG_SRCURL[$i]}")"
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
test "$i" -gt 0 && STRIP=0
mkdir -p "$TERMUX_PKG_SRCDIR"
tar xf "$file" -C "$TERMUX_PKG_SRCDIR" --strip-components=$STRIP
fi
set -o pipefail
done
}

View File

@ -1,38 +0,0 @@
termux_step_extract_package() {
if [ -z "${TERMUX_PKG_SRCURL:=""}" ] || [ "${TERMUX_PKG_SKIP_SRC_EXTRACT-false}" = "true" ] || [ "$TERMUX_PKG_METAPACKAGE" = "true" ]; 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
}

View File

@ -102,6 +102,7 @@ termux_step_setup_variables() {
TERMUX_PKG_PACKAGEDIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/package
TERMUX_PKG_SRCDIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/src
TERMUX_PKG_SHA256=""
TERMUX_PKG_GIT_BRANCH="" # branch defaults to 'v$TERMUX_PKG_VERSION' unless this variable is defined
TERMUX_PKG_TMPDIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/tmp
TERMUX_PKG_HOSTBUILD_DIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/host-build
TERMUX_PKG_PLATFORM_INDEPENDENT=false

View File

@ -236,6 +236,8 @@ lint_package() {
echo "LENGTHS OF 'TERMUX_PKG_SRCURL' AND 'TERMUX_PKG_SHA256' ARE NOT EQUAL"
pkg_lint_error=true
fi
elif [ "${TERMUX_PKG_SRCURL: -4}" == ".git" ]; then
echo "NOT SET (acceptable since TERMUX_PKG_SRCURL is git repo)"
else
echo "NOT SET"
pkg_lint_error=true