diff --git a/build-package.sh b/build-package.sh index 67bd9e75a..7766620ba 100755 --- a/build-package.sh +++ b/build-package.sh @@ -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 diff --git a/packages/apksigner/build.sh b/packages/apksigner/build.sh index b38576902..ac64b9711 100644 --- a/packages/apksigner/build.sh +++ b/packages/apksigner/build.sh @@ -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 \ diff --git a/packages/autoconf/build.sh b/packages/autoconf/build.sh index 0341fcace..4e5e2079d 100644 --- a/packages/autoconf/build.sh +++ b/packages/autoconf/build.sh @@ -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 } diff --git a/packages/cfengine/build.sh b/packages/cfengine/build.sh index ec530131c..57d0d7e07 100644 --- a/packages/cfengine/build.sh +++ b/packages/cfengine/build.sh @@ -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 diff --git a/packages/cryptopp/build.sh b/packages/cryptopp/build.sh index 09a16eeb0..adc148d20 100644 --- a/packages/cryptopp/build.sh +++ b/packages/cryptopp/build.sh @@ -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 diff --git a/packages/ctags/build.sh b/packages/ctags/build.sh index 2e6c34e02..59cca00b5 100644 --- a/packages/ctags/build.sh +++ b/packages/ctags/build.sh @@ -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 } diff --git a/packages/dart/build.sh b/packages/dart/build.sh index 9f55d2eb3..22d93c699 100644 --- a/packages/dart/build.sh +++ b/packages/dart/build.sh @@ -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 diff --git a/packages/dirb/build.sh b/packages/dirb/build.sh index 07f642782..c9058ed30 100644 --- a/packages/dirb/build.sh +++ b/packages/dirb/build.sh @@ -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" } diff --git a/packages/docbook-xml/build.sh b/packages/docbook-xml/build.sh index be02df41c..87e38e07c 100644 --- a/packages/docbook-xml/build.sh +++ b/packages/docbook-xml/build.sh @@ -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 diff --git a/packages/docbook-xsl/build.sh b/packages/docbook-xsl/build.sh index d1899e8bb..1fac2e3b1 100644 --- a/packages/docbook-xsl/build.sh +++ b/packages/docbook-xsl/build.sh @@ -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 diff --git a/packages/ecj/build.sh b/packages/ecj/build.sh index 62925d66b..28563a0c2 100644 --- a/packages/ecj/build.sh +++ b/packages/ecj/build.sh @@ -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 \ diff --git a/packages/elixir/build.sh b/packages/elixir/build.sh index c57b083b5..203d0d034 100644 --- a/packages/elixir/build.sh +++ b/packages/elixir/build.sh @@ -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" diff --git a/packages/emacs/build.sh b/packages/emacs/build.sh index f23458d65..1d1c877cb 100644 --- a/packages/emacs/build.sh +++ b/packages/emacs/build.sh @@ -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 diff --git a/packages/erlang/build.sh b/packages/erlang/build.sh index 13da461d5..c682c1b07 100644 --- a/packages/erlang/build.sh +++ b/packages/erlang/build.sh @@ -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 diff --git a/packages/espeak/build.sh b/packages/espeak/build.sh index d8d71fee9..f3d2546c8 100644 --- a/packages/espeak/build.sh +++ b/packages/espeak/build.sh @@ -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 diff --git a/packages/ghostscript/build.sh b/packages/ghostscript/build.sh index 4084fc931..a30eb1c3a 100644 --- a/packages/ghostscript/build.sh +++ b/packages/ghostscript/build.sh @@ -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} } diff --git a/packages/gkermit/build.sh b/packages/gkermit/build.sh index 541f063dd..082ab95b0 100644 --- a/packages/gkermit/build.sh +++ b/packages/gkermit/build.sh @@ -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" diff --git a/packages/gnunet/build.sh b/packages/gnunet/build.sh index 6eb5722b1..3e5895d77 100644 --- a/packages/gnunet/build.sh +++ b/packages/gnunet/build.sh @@ -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 diff --git a/packages/gpsbabel/build.sh b/packages/gpsbabel/build.sh index c8759a534..cd6ff6c0c 100644 --- a/packages/gpsbabel/build.sh +++ b/packages/gpsbabel/build.sh @@ -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 } diff --git a/packages/jupp/build.sh b/packages/jupp/build.sh index 30dd0e1c6..8b318da14 100644 --- a/packages/jupp/build.sh +++ b/packages/jupp/build.sh @@ -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 } diff --git a/packages/krb5/build.sh b/packages/krb5/build.sh index f75a4874e..5119eb0fd 100644 --- a/packages/krb5/build.sh +++ b/packages/krb5/build.sh @@ -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" } diff --git a/packages/kubectl/build.sh b/packages/kubectl/build.sh index 893ccf030..3cbbbc323 100644 --- a/packages/kubectl/build.sh +++ b/packages/kubectl/build.sh @@ -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" diff --git a/packages/ldc/build.sh b/packages/ldc/build.sh index 2172c6d44..35af20d58 100644 --- a/packages/ldc/build.sh +++ b/packages/ldc/build.sh @@ -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 diff --git a/packages/libandroid-support/build.sh b/packages/libandroid-support/build.sh index 28ce3c547..6fd203b02 100644 --- a/packages/libandroid-support/build.sh +++ b/packages/libandroid-support/build.sh @@ -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/ } diff --git a/packages/libduktape/build.sh b/packages/libduktape/build.sh index 9dcaadda6..ab605eb90 100644 --- a/packages/libduktape/build.sh +++ b/packages/libduktape/build.sh @@ -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. diff --git a/packages/libgc/build.sh b/packages/libgc/build.sh index d670708be..778bc0f91 100644 --- a/packages/libgc/build.sh +++ b/packages/libgc/build.sh @@ -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 } diff --git a/packages/libgpg-error/build.sh b/packages/libgpg-error/build.sh index 504931488..247ee346d 100644 --- a/packages/libgpg-error/build.sh +++ b/packages/libgpg-error/build.sh @@ -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. diff --git a/packages/libgrpc/build.sh b/packages/libgrpc/build.sh index bb9ae0f40..f521fac53 100644 --- a/packages/libgrpc/build.sh +++ b/packages/libgrpc/build.sh @@ -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 } diff --git a/packages/libicu/build.sh b/packages/libicu/build.sh index 84e0b3d08..956f12c93 100644 --- a/packages/libicu/build.sh +++ b/packages/libicu/build.sh @@ -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" } diff --git a/packages/libllvm/build.sh b/packages/libllvm/build.sh index 0ab7bc9b4..472729d73 100644 --- a/packages/libllvm/build.sh +++ b/packages/libllvm/build.sh @@ -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 diff --git a/packages/libsearpc/build.sh b/packages/libsearpc/build.sh index 41b288b85..5841967c2 100644 --- a/packages/libsearpc/build.sh +++ b/packages/libsearpc/build.sh @@ -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 } diff --git a/packages/libzmq/build.sh b/packages/libzmq/build.sh index 40f1091af..5bd93fdd4 100644 --- a/packages/libzmq/build.sh +++ b/packages/libzmq/build.sh @@ -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 } diff --git a/packages/mbedtls/build.sh b/packages/mbedtls/build.sh index 1b3d5bc19..fa9743354 100644 --- a/packages/mbedtls/build.sh +++ b/packages/mbedtls/build.sh @@ -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/* . -} diff --git a/packages/micro/build.sh b/packages/micro/build.sh index 6c1d3f1fd..a1214cb63 100644 --- a/packages/micro/build.sh +++ b/packages/micro/build.sh @@ -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 } diff --git a/packages/nodejs-lts/build.sh b/packages/nodejs-lts/build.sh index 1c047c124..4f3b4fb26 100644 --- a/packages/nodejs-lts/build.sh +++ b/packages/nodejs-lts/build.sh @@ -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 } diff --git a/packages/nodejs/build.sh b/packages/nodejs/build.sh index 2710b1aba..4f44fa594 100644 --- a/packages/nodejs/build.sh +++ b/packages/nodejs/build.sh @@ -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 } diff --git a/packages/perl/build.sh b/packages/perl/build.sh index 9d4be446a..d74a1e604 100644 --- a/packages/perl/build.sh +++ b/packages/perl/build.sh @@ -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 diff --git a/packages/pngquant/build.sh b/packages/pngquant/build.sh index d866b0baa..55370d5d2 100644 --- a/packages/pngquant/build.sh +++ b/packages/pngquant/build.sh @@ -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/ } diff --git a/packages/pulseaudio/build.sh b/packages/pulseaudio/build.sh index f823bf8e1..8602b0fdf 100644 --- a/packages/pulseaudio/build.sh +++ b/packages/pulseaudio/build.sh @@ -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 } diff --git a/packages/swift/build.sh b/packages/swift/build.sh index aa5c564d0..31f6af07d 100644 --- a/packages/swift/build.sh +++ b/packages/swift/build.sh @@ -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. diff --git a/packages/timewarrior/build.sh b/packages/timewarrior/build.sh index 68bb1c64e..2f691e8d3 100644 --- a/packages/timewarrior/build.sh +++ b/packages/timewarrior/build.sh @@ -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 } diff --git a/packages/tintin++/build.sh b/packages/tintin++/build.sh index 2fe69551e..3f46544f5 100644 --- a/packages/tintin++/build.sh +++ b/packages/tintin++/build.sh @@ -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" } diff --git a/packages/transmission/build.sh b/packages/transmission/build.sh index a1c68ca17..296e18049 100644 --- a/packages/transmission/build.sh +++ b/packages/transmission/build.sh @@ -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 diff --git a/packages/tsocks/build.sh b/packages/tsocks/build.sh index 119d3b2e3..4620cbbab 100644 --- a/packages/tsocks/build.sh +++ b/packages/tsocks/build.sh @@ -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/ } diff --git a/packages/xdelta3/build.sh b/packages/xdelta3/build.sh index 67bd57e2d..a8145acc4 100644 --- a/packages/xdelta3/build.sh +++ b/packages/xdelta3/build.sh @@ -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 } diff --git a/scripts/build/get_source/termux_download_src_archive.sh b/scripts/build/get_source/termux_download_src_archive.sh new file mode 100644 index 000000000..e74b691e1 --- /dev/null +++ b/scripts/build/get_source/termux_download_src_archive.sh @@ -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 +} diff --git a/scripts/build/get_source/termux_git_clone_src.sh b/scripts/build/get_source/termux_git_clone_src.sh new file mode 100644 index 000000000..5b042fffa --- /dev/null +++ b/scripts/build/get_source/termux_git_clone_src.sh @@ -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 +} diff --git a/scripts/build/get_source/termux_step_get_source.sh b/scripts/build/get_source/termux_step_get_source.sh new file mode 100644 index 000000000..deff700f7 --- /dev/null +++ b/scripts/build/get_source/termux_step_get_source.sh @@ -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 +} diff --git a/scripts/build/get_source/termux_unpack_src_archive.sh b/scripts/build/get_source/termux_unpack_src_archive.sh new file mode 100644 index 000000000..320b28ff1 --- /dev/null +++ b/scripts/build/get_source/termux_unpack_src_archive.sh @@ -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 +} diff --git a/scripts/build/termux_step_extract_package.sh b/scripts/build/termux_step_extract_package.sh deleted file mode 100644 index a8d3a4c61..000000000 --- a/scripts/build/termux_step_extract_package.sh +++ /dev/null @@ -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 -} diff --git a/scripts/build/termux_step_setup_variables.sh b/scripts/build/termux_step_setup_variables.sh index 416f0d266..df6f7da04 100644 --- a/scripts/build/termux_step_setup_variables.sh +++ b/scripts/build/termux_step_setup_variables.sh @@ -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 diff --git a/scripts/lint-packages.sh b/scripts/lint-packages.sh index 415d37f5a..6397e7b69 100755 --- a/scripts/lint-packages.sh +++ b/scripts/lint-packages.sh @@ -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