From 5493481c5c118a46a642006d939a99c2e39bbd48 Mon Sep 17 00:00:00 2001 From: Leonid Pliushch Date: Wed, 14 Aug 2019 20:29:58 +0300 Subject: [PATCH] build-package.sh: better support for metapackages --- scripts/build/configure/termux_step_configure.sh | 2 ++ scripts/build/termux_step_create_datatar.sh | 2 +- scripts/build/termux_step_extract_package.sh | 2 +- scripts/build/termux_step_handle_hostbuild.sh | 3 ++- scripts/build/termux_step_install_license.sh | 2 ++ scripts/build/termux_step_make.sh | 2 ++ scripts/build/termux_step_make_install.sh | 2 ++ scripts/build/termux_step_massage.sh | 2 ++ scripts/build/termux_step_patch_package.sh | 2 ++ scripts/build/termux_step_replace_guess_scripts.sh | 2 ++ scripts/build/termux_step_setup_toolchain.sh | 2 ++ scripts/build/termux_step_setup_variables.sh | 1 + scripts/build/termux_step_start_build.sh | 10 ++++++++-- 13 files changed, 29 insertions(+), 5 deletions(-) diff --git a/scripts/build/configure/termux_step_configure.sh b/scripts/build/configure/termux_step_configure.sh index 6d1d434fd..e508a0c6e 100644 --- a/scripts/build/configure/termux_step_configure.sh +++ b/scripts/build/configure/termux_step_configure.sh @@ -1,4 +1,6 @@ termux_step_configure() { + [ "$TERMUX_PKG_METAPACKAGE" = "true" ] && return + if [ "$TERMUX_PKG_FORCE_CMAKE" = "false" ] && [ -f "$TERMUX_PKG_SRCDIR/configure" ]; then termux_step_configure_autotools elif [ -f "$TERMUX_PKG_SRCDIR/CMakeLists.txt" ]; then diff --git a/scripts/build/termux_step_create_datatar.sh b/scripts/build/termux_step_create_datatar.sh index 703a127b4..8702ed776 100644 --- a/scripts/build/termux_step_create_datatar.sh +++ b/scripts/build/termux_step_create_datatar.sh @@ -8,7 +8,7 @@ termux_step_create_datatar() { termux_error_exit "Package contains hard links: $HARDLINKS" fi - if [ "${TERMUX_PKG_METAPACKAGE-false}" = "true" ]; then + if [ "$TERMUX_PKG_METAPACKAGE" = "true" ]; then # Metapackage doesn't have data inside. rm -rf data else diff --git a/scripts/build/termux_step_extract_package.sh b/scripts/build/termux_step_extract_package.sh index b17a029d9..a8d3a4c61 100644 --- a/scripts/build/termux_step_extract_package.sh +++ b/scripts/build/termux_step_extract_package.sh @@ -1,5 +1,5 @@ termux_step_extract_package() { - if [ -z "${TERMUX_PKG_SRCURL:=""}" ] || [ "${TERMUX_PKG_SKIP_SRC_EXTRACT-false}" = "true" ]; then + if [ -z "${TERMUX_PKG_SRCURL:=""}" ] || [ "${TERMUX_PKG_SKIP_SRC_EXTRACT-false}" = "true" ] || [ "$TERMUX_PKG_METAPACKAGE" = "true" ]; then mkdir -p "$TERMUX_PKG_SRCDIR" return fi diff --git a/scripts/build/termux_step_handle_hostbuild.sh b/scripts/build/termux_step_handle_hostbuild.sh index ab029a18c..54bec3d61 100644 --- a/scripts/build/termux_step_handle_hostbuild.sh +++ b/scripts/build/termux_step_handle_hostbuild.sh @@ -1,5 +1,6 @@ termux_step_handle_hostbuild() { - if [ "$TERMUX_PKG_HOSTBUILD" = "false" ]; then return; fi + [ "$TERMUX_PKG_METAPACKAGE" = "true" ] && return + [ "$TERMUX_PKG_HOSTBUILD" = "false" ] && return cd "$TERMUX_PKG_SRCDIR" for patch in $TERMUX_PKG_BUILDER_DIR/*.patch.beforehostbuild; do diff --git a/scripts/build/termux_step_install_license.sh b/scripts/build/termux_step_install_license.sh index f0e88f91e..65b1fa11b 100644 --- a/scripts/build/termux_step_install_license.sh +++ b/scripts/build/termux_step_install_license.sh @@ -1,4 +1,6 @@ termux_step_install_license() { + [ "$TERMUX_PKG_METAPACKAGE" = "true" ] && return + mkdir -p "$TERMUX_PREFIX/share/doc/$TERMUX_PKG_NAME" if [ ! "${TERMUX_PKG_LICENSE_FILE}" = "" ]; then diff --git a/scripts/build/termux_step_make.sh b/scripts/build/termux_step_make.sh index c5379586c..65a31bb3c 100644 --- a/scripts/build/termux_step_make.sh +++ b/scripts/build/termux_step_make.sh @@ -1,4 +1,6 @@ termux_step_make() { + [ "$TERMUX_PKG_METAPACKAGE" = "true" ] && return + local QUIET_BUILD= if [ "$TERMUX_QUIET_BUILD" = true ]; then QUIET_BUILD="-s" diff --git a/scripts/build/termux_step_make_install.sh b/scripts/build/termux_step_make_install.sh index 10d729412..5755c0891 100644 --- a/scripts/build/termux_step_make_install.sh +++ b/scripts/build/termux_step_make_install.sh @@ -1,4 +1,6 @@ termux_step_make_install() { + [ "$TERMUX_PKG_METAPACKAGE" = "true" ] && return + if test -f build.ninja; then ninja -w dupbuild=warn -j $TERMUX_MAKE_PROCESSES install elif ls ./*akefile &> /dev/null || [ -n "$TERMUX_PKG_EXTRA_MAKE_ARGS" ]; then diff --git a/scripts/build/termux_step_massage.sh b/scripts/build/termux_step_massage.sh index c3ad3f97f..5036ad2ce 100644 --- a/scripts/build/termux_step_massage.sh +++ b/scripts/build/termux_step_massage.sh @@ -1,4 +1,6 @@ termux_step_massage() { + [ "$TERMUX_PKG_METAPACKAGE" = "true" ] && return + cd "$TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX" # Remove lib/charset.alias which is installed by gettext-using packages: diff --git a/scripts/build/termux_step_patch_package.sh b/scripts/build/termux_step_patch_package.sh index 27d6f65f3..ddba5a53b 100644 --- a/scripts/build/termux_step_patch_package.sh +++ b/scripts/build/termux_step_patch_package.sh @@ -1,4 +1,6 @@ termux_step_patch_package() { + [ "$TERMUX_PKG_METAPACKAGE" = "true" ] && return + cd "$TERMUX_PKG_SRCDIR" local DEBUG_PATCHES="" if [ "$TERMUX_DEBUG" = "true" ]; then diff --git a/scripts/build/termux_step_replace_guess_scripts.sh b/scripts/build/termux_step_replace_guess_scripts.sh index 0f5f73127..cacb459ea 100644 --- a/scripts/build/termux_step_replace_guess_scripts.sh +++ b/scripts/build/termux_step_replace_guess_scripts.sh @@ -1,4 +1,6 @@ termux_step_replace_guess_scripts() { + [ "$TERMUX_PKG_METAPACKAGE" = "true" ] && return + 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 index 2a0ec17dc..3bac2e01d 100644 --- a/scripts/build/termux_step_setup_toolchain.sh +++ b/scripts/build/termux_step_setup_toolchain.sh @@ -1,4 +1,6 @@ termux_step_setup_toolchain() { + [ "$TERMUX_PKG_METAPACKAGE" = "true" ] && return + export CFLAGS="" export LDFLAGS="-L${TERMUX_PREFIX}/lib" diff --git a/scripts/build/termux_step_setup_variables.sh b/scripts/build/termux_step_setup_variables.sh index d399b3ee9..6ec8eb96f 100644 --- a/scripts/build/termux_step_setup_variables.sh +++ b/scripts/build/termux_step_setup_variables.sh @@ -131,6 +131,7 @@ termux_step_setup_variables() { TERMUX_PKG_FORCE_CMAKE=false # 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=true # set to false if debug build doesn't exist or doesn't work, for example for python based packages + TERMUX_PKG_METAPACKAGE=false unset CFLAGS CPPFLAGS LDFLAGS CXXFLAGS } diff --git a/scripts/build/termux_step_start_build.sh b/scripts/build/termux_step_start_build.sh index b4b1aac17..a09df2b2e 100644 --- a/scripts/build/termux_step_start_build.sh +++ b/scripts/build/termux_step_start_build.sh @@ -2,6 +2,12 @@ termux_step_start_build() { # shellcheck source=/dev/null source "$TERMUX_PKG_BUILDER_SCRIPT" + if [ "$TERMUX_PKG_METAPACKAGE" = "true" ]; then + # Metapackage has no sources and therefore platform-independent. + TERMUX_PKG_SKIP_SRC_EXTRACT=true + TERMUX_PKG_PLATFORM_INDEPENDENT=true + fi + TERMUX_STANDALONE_TOOLCHAIN="$TERMUX_COMMON_CACHEDIR/android-r${TERMUX_NDK_VERSION}-api-${TERMUX_PKG_API_LEVEL}" # Bump the below version if a change is made in toolchain setup to ensure # that everyone gets an updated toolchain: @@ -41,7 +47,7 @@ termux_step_start_build() { fi fi - if [ "$TERMUX_SKIP_DEPCHECK" = false ] && [ "$TERMUX_INSTALL_DEPS" = true ]; then + if [ "$TERMUX_SKIP_DEPCHECK" = false ] && [ "$TERMUX_INSTALL_DEPS" = true ] && [ "$TERMUX_PKG_METAPACKAGE" = "false" ]; then # Download repo files termux_get_repo_files @@ -87,7 +93,7 @@ termux_step_start_build() { mkdir -p $TERMUX_BUILT_PACKAGES_DIRECTORY echo "$DEP_VERSION" > "$TERMUX_BUILT_PACKAGES_DIRECTORY/$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 + elif [ "$TERMUX_SKIP_DEPCHECK" = false ] && [ "$TERMUX_INSTALL_DEPS" = false ] && [ "$TERMUX_PKG_METAPACKAGE" = "false" ]; then # Build dependencies while read PKG PKG_DIR; do if [ -z $PKG ]; then