termux-packages/build-package.sh

186 lines
6.1 KiB
Bash
Raw Normal View History

2015-06-13 01:03:31 +02:00
#!/bin/bash
2018-08-27 22:27:42 +02:00
# shellcheck disable=SC1117
2015-06-13 01:03:31 +02:00
set -e -o pipefail -u
# Utility function to log an error message and exit with an error code.
source scripts/build/termux_error_exit.sh
# Utility function to download a resource with an expected checksum.
source scripts/build/termux_download.sh
# Utility function for golang-using packages to setup a go toolchain.
source scripts/build/setup/termux_setup_golang.sh
# Utility function for rust-using packages to setup a rust toolchain.
source scripts/build/setup/termux_setup_rust.sh
2017-11-07 02:26:49 +01:00
# Utility function to setup a current ninja build system.
source scripts/build/setup/termux_setup_ninja.sh
2017-11-07 02:26:49 +01:00
# Utility function to setup a current meson build system.
source scripts/build/setup/termux_setup_meson.sh
2017-11-07 02:26:49 +01:00
# Utility function to setup a current cmake build system
source scripts/build/setup/termux_setup_cmake.sh
# First step is to handle command-line arguments. Not to be overridden by packages.
source scripts/build/termux_step_handle_arguments.sh
# Setup variables used by the build. Not to be overridden by packages.
source scripts/build/termux_step_setup_variables.sh
# Save away and restore build setups which may change between builds.
source scripts/build/termux_step_handle_buildarch.sh
# Function to get TERMUX_PKG_VERSION from build.sh
source scripts/build/termux_extract_dep_info.sh
# 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
source scripts/build/termux_step_get_repo_files.sh
# Source the package build script and start building. No to be overridden by packages.
source scripts/build/termux_step_start_build.sh
# Run just after sourcing $TERMUX_PKG_BUILDER_SCRIPT. May be overridden by packages.
source scripts/build/termux_step_extract_package.sh
2015-06-13 01:03:31 +02:00
# Hook for packages to act just after the package has been extracted.
# Invoked in $TERMUX_PKG_SRCDIR.
2017-01-10 12:35:05 +01:00
termux_step_post_extract_package() {
2019-02-12 09:23:21 +01:00
return
2015-06-13 01:03:31 +02:00
}
# Optional host build. Not to be overridden by packages.
source scripts/build/termux_step_handle_hostbuild.sh
2015-06-13 01:03:31 +02:00
# Perform a host build. Will be called in $TERMUX_PKG_HOSTBUILD_DIR.
# After termux_step_post_extract_package() and before termux_step_patch_package()
source scripts/build/termux_step_host_build.sh
2015-06-13 01:03:31 +02:00
# Setup a standalone Android NDK toolchain. Not to be overridden by packages.
source scripts/build/termux_step_setup_toolchain.sh
# Apply all *.patch files for the package. Not to be overridden by packages.
source scripts/build/termux_step_patch_package.sh
2015-06-13 01:03:31 +02:00
# Replace autotools build-aux/config.{sub,guess} with ours to add android targets.
source scripts/build/termux_step_replace_guess_scripts.sh
2015-06-13 01:03:31 +02:00
# For package scripts to override. Called in $TERMUX_PKG_BUILDDIR.
2017-01-10 12:35:05 +01:00
termux_step_pre_configure() {
return
2015-06-13 01:03:31 +02:00
}
# 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
2015-06-13 01:03:31 +02:00
# Setup configure args and run cmake. This function is called from termux_step_configure
source scripts/build/configure/termux_step_configure_cmake.sh
2017-01-15 13:48:05 +01:00
# Setup configure args and run meson. This function is called from termux_step_configure
source scripts/build/configure/termux_step_configure_meson.sh
# Configure the package
source scripts/build/configure/termux_step_configure.sh
2017-01-15 13:48:05 +01:00
termux_step_post_configure() {
return
2015-06-13 01:03:31 +02:00
}
# Make package, either with ninja or make
source scripts/build/termux_step_make.sh
2015-06-13 01:03:31 +02:00
# Make install, either with ninja, make of cargo
source scripts/build/termux_step_make_install.sh
2015-06-13 01:03:31 +02:00
# Hook function for package scripts to override.
2017-01-10 12:35:05 +01:00
termux_step_post_make_install() {
return
2015-06-13 01:03:31 +02:00
}
# Function to cp (through tar) installed files to massage dir
source scripts/build/termux_step_extract_into_massagedir.sh
2015-06-13 01:03:31 +02:00
# Function to run various cleanup/fixes
source scripts/build/termux_step_massage.sh
2015-06-13 01:03:31 +02:00
2017-01-10 12:35:05 +01:00
termux_step_post_massage() {
return
2015-06-13 01:03:31 +02:00
}
# Create data.tar.gz with files to package. Not to be overridden by package scripts.
source scripts/build/termux_step_create_datatar.sh
2016-01-11 01:45:41 +01:00
2017-01-10 12:35:05 +01:00
termux_step_create_debscripts() {
return
}
# Create the build deb file. Not to be overridden by package scripts.
source scripts/build/termux_step_create_debfile.sh
2015-06-13 01:03:31 +02:00
termux_step_compare_debs() {
if [ "${TERMUX_INSTALL_DEPS}" = true ]; then
cd ${TERMUX_SCRIPTDIR}
for DEB in $TERMUX_PKG_NAME $(basename $TERMUX_PKG_BUILDER_DIR/*.subpackage.sh | sed 's%\.subpackage\.sh%%g') $(basename $TERMUX_PKG_TMPDIR/*.subpackage.sh | sed 's%\.subpackage\.sh%%g'); do
read DEB_ARCH DEB_VERSION <<< $(termux_extract_dep_info "$DEB")
termux_download_deb $DEB $DEB_ARCH $DEB_VERSION \
&& (
DEB_FILE=${DEB}_${DEB_VERSION}_${DEB_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
) || echo "Download of ${DEB}@${DEB_VERSION} failed, not comparing debs"
echo ""
done
fi
}
2017-10-02 16:54:53 +02:00
# 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
}
termux_step_handle_arguments "$@"
termux_step_setup_variables
termux_step_handle_buildarch
termux_step_get_repo_files
termux_step_start_build
2015-06-13 01:03:31 +02:00
termux_step_extract_package
cd "$TERMUX_PKG_SRCDIR"
2015-06-13 01:03:31 +02:00
termux_step_post_extract_package
termux_step_handle_hostbuild
termux_step_setup_toolchain
2015-06-13 01:03:31 +02:00
termux_step_patch_package
termux_step_replace_guess_scripts
cd "$TERMUX_PKG_SRCDIR"
2015-06-13 01:03:31 +02:00
termux_step_pre_configure
cd "$TERMUX_PKG_BUILDDIR"
2015-06-13 01:03:31 +02:00
termux_step_configure
cd "$TERMUX_PKG_BUILDDIR"
2015-06-13 01:03:31 +02:00
termux_step_post_configure
cd "$TERMUX_PKG_BUILDDIR"
2015-06-13 01:03:31 +02:00
termux_step_make
cd "$TERMUX_PKG_BUILDDIR"
2015-06-13 01:03:31 +02:00
termux_step_make_install
cd "$TERMUX_PKG_BUILDDIR"
2015-06-13 01:03:31 +02:00
termux_step_post_make_install
cd "$TERMUX_PKG_MASSAGEDIR"
2015-06-13 01:03:31 +02:00
termux_step_extract_into_massagedir
cd "$TERMUX_PKG_MASSAGEDIR"
2015-06-13 01:03:31 +02:00
termux_step_massage
cd "$TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX"
2015-06-13 01:03:31 +02:00
termux_step_post_massage
termux_step_create_datatar
termux_step_create_debfile
termux_step_compare_debs
termux_step_finish_build