2021-08-21 16:02:31 +00:00
|
|
|
termux_step_get_dependencies() {
|
2023-01-03 14:57:00 +00:00
|
|
|
if [ "$TERMUX_SKIP_DEPCHECK" = true ] || [ "$TERMUX_PKG_METAPACKAGE" = true ]; then
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$TERMUX_INSTALL_DEPS" = true ]; then
|
2021-08-21 16:02:31 +00:00
|
|
|
# Download repo files
|
|
|
|
termux_get_repo_files
|
|
|
|
|
|
|
|
# When doing build on device, ensure that apt lists are up-to-date.
|
2022-02-02 14:45:36 +00:00
|
|
|
if [ "$TERMUX_ON_DEVICE_BUILD" = "true" ]; then
|
2022-05-22 18:00:24 +00:00
|
|
|
case "$TERMUX_APP_PACKAGE_MANAGER" in
|
|
|
|
"apt") apt update;;
|
2022-03-09 06:40:01 +00:00
|
|
|
"pacman") pacman -Sy;;
|
2022-02-02 14:45:36 +00:00
|
|
|
esac
|
|
|
|
fi
|
2021-08-21 16:02:31 +00:00
|
|
|
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
|
2022-03-09 06:40:01 +00:00
|
|
|
read DEP_ARCH DEP_VERSION DEP_VERSION_PAC <<< $(termux_extract_dep_info $PKG "${PKG_DIR}")
|
2023-01-03 14:57:00 +00:00
|
|
|
[ ! "$TERMUX_QUIET_BUILD" = true ] && echo "Downloading dependency $PKG@$DEP_VERSION if necessary..."
|
|
|
|
local force_build_dependency="$TERMUX_FORCE_BUILD_DEPENDENCIES"
|
|
|
|
if [ "$TERMUX_FORCE_BUILD_DEPENDENCIES" = "true" ] && [ "$TERMUX_ON_DEVICE_BUILD" = "true" ] && ! pacakge__is_package_on_device_build_supported "$PKG_DIR"; then
|
|
|
|
echo "Building dependency $PKG on device is not supported. It will be downloaded..."
|
|
|
|
force_build_dependency="false"
|
2021-08-21 16:02:31 +00:00
|
|
|
fi
|
2023-01-03 14:57:00 +00:00
|
|
|
local build_dependency=false
|
|
|
|
if [ "$force_build_dependency" = "true" ]; then
|
|
|
|
[ ! "$TERMUX_QUIET_BUILD" = true ] && echo "Force building dependency $PKG instead of downloading due to -I flag..."
|
|
|
|
termux_force_check_package_dependency && continue
|
|
|
|
build_dependency=true
|
|
|
|
else
|
|
|
|
if pacakge__is_package_version_built "$PKG" "$DEP_VERSION"; then
|
|
|
|
[ ! "$TERMUX_QUIET_BUILD" = true ] && echo "Skipping already built dependency $PKG@$DEP_VERSION"
|
2021-08-21 16:02:31 +00:00
|
|
|
continue
|
|
|
|
fi
|
2023-01-03 14:57:00 +00:00
|
|
|
if ! termux_download_deb_pac $PKG $DEP_ARCH $DEP_VERSION $DEP_VERSION_PAC; then
|
|
|
|
if [ "$TERMUX_FORCE_BUILD_DEPENDENCIES" = "true" ] && [ "$TERMUX_ON_DEVICE_BUILD" = "true" ]; then
|
|
|
|
echo "Download of $PKG@$DEP_VERSION from $TERMUX_REPO_URL failed"
|
|
|
|
return 1
|
|
|
|
else
|
|
|
|
echo "Download of $PKG@$DEP_VERSION from $TERMUX_REPO_URL failed, building instead"
|
|
|
|
build_dependency=true
|
|
|
|
fi
|
|
|
|
fi
|
2021-08-21 16:02:31 +00:00
|
|
|
fi
|
2023-01-03 14:57:00 +00:00
|
|
|
if $build_dependency; then
|
|
|
|
TERMUX_BUILD_IGNORE_LOCK=true ./build-package.sh -I $(test "${TERMUX_FORCE_BUILD_DEPENDENCIES}" = "true" && echo "-F" || true) --format $TERMUX_PACKAGE_FORMAT "${PKG_DIR}"
|
2021-08-21 16:02:31 +00:00
|
|
|
continue
|
|
|
|
fi
|
2023-01-03 14:57:00 +00:00
|
|
|
termux_add_package_to_built_packages_list "$PKG"
|
2021-08-21 16:02:31 +00:00
|
|
|
if [ "$TERMUX_ON_DEVICE_BUILD" = "false" ]; then
|
2023-01-03 14:57:00 +00:00
|
|
|
[ ! "$TERMUX_QUIET_BUILD" = true ] && echo "extracting $PKG to $TERMUX_COMMON_CACHEDIR-$DEP_ARCH..."
|
2021-08-21 16:02:31 +00:00
|
|
|
(
|
|
|
|
cd $TERMUX_COMMON_CACHEDIR-$DEP_ARCH
|
|
|
|
ar x ${PKG}_${DEP_VERSION}_${DEP_ARCH}.deb data.tar.xz
|
2022-03-09 06:40:01 +00:00
|
|
|
if tar -tf data.tar.xz|grep "^./$">/dev/null; then
|
2021-08-21 16:02:31 +00:00
|
|
|
# Strip prefixed ./, to avoid possible
|
|
|
|
# permission errors from tar
|
|
|
|
tar -xf data.tar.xz --strip-components=1 \
|
|
|
|
--no-overwrite-dir -C /
|
|
|
|
else
|
|
|
|
tar -xf data.tar.xz --no-overwrite-dir -C /
|
|
|
|
fi
|
|
|
|
)
|
|
|
|
fi
|
|
|
|
mkdir -p $TERMUX_BUILT_PACKAGES_DIRECTORY
|
2022-03-09 06:40:01 +00:00
|
|
|
echo "$DEP_VERSION" > "$TERMUX_BUILT_PACKAGES_DIRECTORY/$PKG"
|
|
|
|
done<<<$(./scripts/buildorder.py -i "$TERMUX_PKG_BUILDER_DIR" $TERMUX_PACKAGES_DIRECTORIES || echo "ERROR")
|
2023-01-03 14:57:00 +00:00
|
|
|
else
|
2021-08-21 16:02:31 +00:00
|
|
|
# Build dependencies
|
|
|
|
while read PKG PKG_DIR; do
|
|
|
|
if [ -z $PKG ]; then
|
|
|
|
continue
|
|
|
|
elif [ "$PKG" = "ERROR" ]; then
|
|
|
|
termux_error_exit "Obtaining buildorder failed"
|
|
|
|
fi
|
2021-09-10 16:10:02 +00:00
|
|
|
# Built dependencies are put in the default TERMUX_OUTPUT_DIR instead of the specified one
|
2023-01-03 14:57:00 +00:00
|
|
|
if [ "$TERMUX_FORCE_BUILD_DEPENDENCIES" = "true" ]; then
|
|
|
|
[ ! "$TERMUX_QUIET_BUILD" = true ] && echo "Force building dependency $PKG..."
|
|
|
|
if [ "$TERMUX_ON_DEVICE_BUILD" = "true" ] && ! pacakge__is_package_on_device_build_supported "$PKG_DIR"; then
|
|
|
|
echo "Building $PKG on device is not supported. Consider passing -I flag to download it instead"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
read DEP_ARCH DEP_VERSION DEP_VERSION_PAC <<< $(termux_extract_dep_info $PKG "${PKG_DIR}")
|
|
|
|
termux_force_check_package_dependency && continue
|
|
|
|
else
|
|
|
|
[ ! "$TERMUX_QUIET_BUILD" = true ] && echo "Building dependency $PKG if necessary..."
|
|
|
|
fi
|
|
|
|
TERMUX_BUILD_IGNORE_LOCK=true ./build-package.sh -s $(test "${TERMUX_FORCE_BUILD_DEPENDENCIES}" = "true" && echo "-F" || true) --format $TERMUX_PACKAGE_FORMAT "${PKG_DIR}"
|
2022-03-09 06:40:01 +00:00
|
|
|
done<<<$(./scripts/buildorder.py "$TERMUX_PKG_BUILDER_DIR" $TERMUX_PACKAGES_DIRECTORIES || echo "ERROR")
|
2021-08-21 16:02:31 +00:00
|
|
|
fi
|
|
|
|
}
|
2023-01-03 14:57:00 +00:00
|
|
|
|
|
|
|
termux_force_check_package_dependency() {
|
|
|
|
if termux_check_package_in_built_packages_list "$PKG" && pacakge__is_package_version_built "$PKG" "$DEP_VERSION"; then
|
|
|
|
[ ! "$TERMUX_QUIET_BUILD" = true ] && echo "Skipping already built dependency $PKG@$DEP_VERSION"
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
return 1
|
|
|
|
}
|