diff --git a/build-package.sh b/build-package.sh index 990fa2e307..1cf185d2e9 100755 --- a/build-package.sh +++ b/build-package.sh @@ -30,8 +30,7 @@ source "$TERMUX_SCRIPTDIR/scripts/utils/docker/docker.sh"; docker__create_docker # Functions for working with packages source "$TERMUX_SCRIPTDIR/scripts/utils/package/package.sh" -SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct 2>/dev/null || date "+%s") -export SOURCE_DATE_EPOCH +export SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH:-$(git log -1 --pretty=%ct 2>/dev/null || date "+%s")} if [ "$(uname -o)" = "Android" ] || [ -e "/system/bin/app_process" ]; then if [ "$(id -u)" = "0" ]; then diff --git a/scripts/build/termux_create_pacman_subpackages.sh b/scripts/build/termux_create_pacman_subpackages.sh index 11538c0a43..d12c97c92b 100644 --- a/scripts/build/termux_create_pacman_subpackages.sh +++ b/scripts/build/termux_create_pacman_subpackages.sh @@ -82,9 +82,6 @@ termux_create_pacman_subpackages() { local SUB_PKG_INSTALLSIZE SUB_PKG_INSTALLSIZE=$(du -bs . | cut -f 1) - local BUILD_DATE - BUILD_DATE=$(date +%s) - local PKG_DEPS_SPC=" ${TERMUX_PKG_DEPENDS//,/} " if [ -z "$TERMUX_SUBPKG_DEPEND_ON_PARENT" ] && [ "${PKG_DEPS_SPC/ $SUB_PKG_NAME /}" = "$PKG_DEPS_SPC" ]; then # Does pacman supports versioned dependencies? @@ -113,7 +110,7 @@ termux_create_pacman_subpackages() { echo "pkgver = $TERMUX_PKG_FULLVERSION_FOR_PACMAN" echo "pkgdesc = $(echo "$TERMUX_SUBPKG_DESCRIPTION" | tr '\n' ' ')" echo "url = $TERMUX_PKG_HOMEPAGE" - echo "builddate = $BUILD_DATE" + echo "builddate = $SOURCE_DATE_EPOCH" echo "packager = $TERMUX_PKG_MAINTAINER" echo "size = $SUB_PKG_INSTALLSIZE" echo "arch = $SUB_PKG_ARCH" @@ -163,7 +160,7 @@ termux_create_pacman_subpackages() { echo "pkgver = $TERMUX_PKG_FULLVERSION_FOR_PACMAN" echo "pkgarch = $SUB_PKG_ARCH" echo "packager = $TERMUX_PKG_MAINTAINER" - echo "builddate = $BUILD_DATE" + echo "builddate = $SOURCE_DATE_EPOCH" } > .BUILDINFO # Write package installation hooks. @@ -200,6 +197,9 @@ termux_create_pacman_subpackages() { PKG_FORMAT="xz";; esac + # ensure all elements of the package have the same mtime + find . -exec touch -h -d @$SOURCE_DATE_EPOCH {} + + # Create the actual .pkg file: local TERMUX_SUBPKG_PACMAN_FILE=$TERMUX_OUTPUT_DIR/${SUB_PKG_NAME}${DEBUG}-${TERMUX_PKG_FULLVERSION_FOR_PACMAN}-${SUB_PKG_ARCH}.pkg.tar.${PKG_FORMAT} shopt -s dotglob globstar @@ -207,6 +207,7 @@ termux_create_pacman_subpackages() { --options='!all,use-set,type,uid,gid,mode,time,size,md5,sha256,link' \ --null --files-from - --exclude .MTREE | \ gzip -c -f -n > .MTREE + touch -d @$SOURCE_DATE_EPOCH .MTREE printf '%s\0' **/* | bsdtar --no-fflags -cnf - --null --files-from - | \ $COMPRESS > "$TERMUX_SUBPKG_PACMAN_FILE" shopt -u dotglob globstar diff --git a/scripts/build/termux_step_create_pacman_package.sh b/scripts/build/termux_step_create_pacman_package.sh index e68729ea9d..1c5acb3f46 100644 --- a/scripts/build/termux_step_create_pacman_package.sh +++ b/scripts/build/termux_step_create_pacman_package.sh @@ -37,9 +37,6 @@ termux_step_create_pacman_package() { local PACMAN_FILE=$TERMUX_OUTPUT_DIR/${TERMUX_PKG_NAME}${DEBUG}-${TERMUX_PKG_FULLVERSION_FOR_PACMAN}-${TERMUX_ARCH}.pkg.tar.${PKG_FORMAT} - local BUILD_DATE - BUILD_DATE=$(date +%s) - if [ "$TERMUX_GLOBAL_LIBRARY" = "true" ] && [ "$TERMUX_PACKAGE_LIBRARY" = "glibc" ]; then test ! -z "$TERMUX_PKG_DEPENDS" && TERMUX_PKG_DEPENDS=$(package__add_prefix_glibc_to_package_list "$TERMUX_PKG_DEPENDS") test ! -z "$TERMUX_PKG_BREAKS" && TERMUX_PKG_BREAKS=$(package__add_prefix_glibc_to_package_list "$TERMUX_PKG_BREAKS") @@ -57,7 +54,7 @@ termux_step_create_pacman_package() { echo "pkgver = $TERMUX_PKG_FULLVERSION_FOR_PACMAN" echo "pkgdesc = $(echo "$TERMUX_PKG_DESCRIPTION" | tr '\n' ' ')" echo "url = $TERMUX_PKG_HOMEPAGE" - echo "builddate = $BUILD_DATE" + echo "builddate = $SOURCE_DATE_EPOCH" echo "packager = $TERMUX_PKG_MAINTAINER" echo "size = $TERMUX_PKG_INSTALLSIZE" echo "arch = $TERMUX_ARCH" @@ -115,19 +112,23 @@ termux_step_create_pacman_package() { echo "pkgver = $TERMUX_PKG_FULLVERSION_FOR_PACMAN" echo "pkgarch = $TERMUX_ARCH" echo "packager = $TERMUX_PKG_MAINTAINER" - echo "builddate = $BUILD_DATE" + echo "builddate = $SOURCE_DATE_EPOCH" } > .BUILDINFO # Write installation hooks. termux_step_create_debscripts termux_step_create_pacman_install_hook + # ensure all elements of the package have the same mtime + find . -exec touch -h -d @$SOURCE_DATE_EPOCH {} + + # Create package shopt -s dotglob globstar printf '%s\0' **/* | bsdtar -cnf - --format=mtree \ --options='!all,use-set,type,uid,gid,mode,time,size,md5,sha256,link' \ --null --files-from - --exclude .MTREE | \ gzip -c -f -n > .MTREE + touch -d @$SOURCE_DATE_EPOCH .MTREE printf '%s\0' **/* | bsdtar --no-fflags -cnf - --null --files-from - | \ $COMPRESS > "$PACMAN_FILE" shopt -u dotglob globstar