build-packages.sh: introduce SOURCE_DATE_EPOCH (#19593)
- Allow SOURCE_DATE_EPOCH to be set externally - Replace BUILD_DATE with SOURCE_DATE_EPOCH for same timestamp - Set timestamp for all files in pacman package
This commit is contained in:
parent
6306428c84
commit
09127c8970
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue