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
|
# Functions for working with packages
|
||||||
source "$TERMUX_SCRIPTDIR/scripts/utils/package/package.sh"
|
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=${SOURCE_DATE_EPOCH:-$(git log -1 --pretty=%ct 2>/dev/null || date "+%s")}
|
||||||
export SOURCE_DATE_EPOCH
|
|
||||||
|
|
||||||
if [ "$(uname -o)" = "Android" ] || [ -e "/system/bin/app_process" ]; then
|
if [ "$(uname -o)" = "Android" ] || [ -e "/system/bin/app_process" ]; then
|
||||||
if [ "$(id -u)" = "0" ]; then
|
if [ "$(id -u)" = "0" ]; then
|
||||||
|
|
|
@ -82,9 +82,6 @@ termux_create_pacman_subpackages() {
|
||||||
local SUB_PKG_INSTALLSIZE
|
local SUB_PKG_INSTALLSIZE
|
||||||
SUB_PKG_INSTALLSIZE=$(du -bs . | cut -f 1)
|
SUB_PKG_INSTALLSIZE=$(du -bs . | cut -f 1)
|
||||||
|
|
||||||
local BUILD_DATE
|
|
||||||
BUILD_DATE=$(date +%s)
|
|
||||||
|
|
||||||
local PKG_DEPS_SPC=" ${TERMUX_PKG_DEPENDS//,/} "
|
local PKG_DEPS_SPC=" ${TERMUX_PKG_DEPENDS//,/} "
|
||||||
if [ -z "$TERMUX_SUBPKG_DEPEND_ON_PARENT" ] && [ "${PKG_DEPS_SPC/ $SUB_PKG_NAME /}" = "$PKG_DEPS_SPC" ]; then
|
if [ -z "$TERMUX_SUBPKG_DEPEND_ON_PARENT" ] && [ "${PKG_DEPS_SPC/ $SUB_PKG_NAME /}" = "$PKG_DEPS_SPC" ]; then
|
||||||
# Does pacman supports versioned dependencies?
|
# Does pacman supports versioned dependencies?
|
||||||
|
@ -113,7 +110,7 @@ termux_create_pacman_subpackages() {
|
||||||
echo "pkgver = $TERMUX_PKG_FULLVERSION_FOR_PACMAN"
|
echo "pkgver = $TERMUX_PKG_FULLVERSION_FOR_PACMAN"
|
||||||
echo "pkgdesc = $(echo "$TERMUX_SUBPKG_DESCRIPTION" | tr '\n' ' ')"
|
echo "pkgdesc = $(echo "$TERMUX_SUBPKG_DESCRIPTION" | tr '\n' ' ')"
|
||||||
echo "url = $TERMUX_PKG_HOMEPAGE"
|
echo "url = $TERMUX_PKG_HOMEPAGE"
|
||||||
echo "builddate = $BUILD_DATE"
|
echo "builddate = $SOURCE_DATE_EPOCH"
|
||||||
echo "packager = $TERMUX_PKG_MAINTAINER"
|
echo "packager = $TERMUX_PKG_MAINTAINER"
|
||||||
echo "size = $SUB_PKG_INSTALLSIZE"
|
echo "size = $SUB_PKG_INSTALLSIZE"
|
||||||
echo "arch = $SUB_PKG_ARCH"
|
echo "arch = $SUB_PKG_ARCH"
|
||||||
|
@ -163,7 +160,7 @@ termux_create_pacman_subpackages() {
|
||||||
echo "pkgver = $TERMUX_PKG_FULLVERSION_FOR_PACMAN"
|
echo "pkgver = $TERMUX_PKG_FULLVERSION_FOR_PACMAN"
|
||||||
echo "pkgarch = $SUB_PKG_ARCH"
|
echo "pkgarch = $SUB_PKG_ARCH"
|
||||||
echo "packager = $TERMUX_PKG_MAINTAINER"
|
echo "packager = $TERMUX_PKG_MAINTAINER"
|
||||||
echo "builddate = $BUILD_DATE"
|
echo "builddate = $SOURCE_DATE_EPOCH"
|
||||||
} > .BUILDINFO
|
} > .BUILDINFO
|
||||||
|
|
||||||
# Write package installation hooks.
|
# Write package installation hooks.
|
||||||
|
@ -200,6 +197,9 @@ termux_create_pacman_subpackages() {
|
||||||
PKG_FORMAT="xz";;
|
PKG_FORMAT="xz";;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# ensure all elements of the package have the same mtime
|
||||||
|
find . -exec touch -h -d @$SOURCE_DATE_EPOCH {} +
|
||||||
|
|
||||||
# Create the actual .pkg file:
|
# 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}
|
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
|
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' \
|
--options='!all,use-set,type,uid,gid,mode,time,size,md5,sha256,link' \
|
||||||
--null --files-from - --exclude .MTREE | \
|
--null --files-from - --exclude .MTREE | \
|
||||||
gzip -c -f -n > .MTREE
|
gzip -c -f -n > .MTREE
|
||||||
|
touch -d @$SOURCE_DATE_EPOCH .MTREE
|
||||||
printf '%s\0' **/* | bsdtar --no-fflags -cnf - --null --files-from - | \
|
printf '%s\0' **/* | bsdtar --no-fflags -cnf - --null --files-from - | \
|
||||||
$COMPRESS > "$TERMUX_SUBPKG_PACMAN_FILE"
|
$COMPRESS > "$TERMUX_SUBPKG_PACMAN_FILE"
|
||||||
shopt -u dotglob globstar
|
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 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
|
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_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")
|
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 "pkgver = $TERMUX_PKG_FULLVERSION_FOR_PACMAN"
|
||||||
echo "pkgdesc = $(echo "$TERMUX_PKG_DESCRIPTION" | tr '\n' ' ')"
|
echo "pkgdesc = $(echo "$TERMUX_PKG_DESCRIPTION" | tr '\n' ' ')"
|
||||||
echo "url = $TERMUX_PKG_HOMEPAGE"
|
echo "url = $TERMUX_PKG_HOMEPAGE"
|
||||||
echo "builddate = $BUILD_DATE"
|
echo "builddate = $SOURCE_DATE_EPOCH"
|
||||||
echo "packager = $TERMUX_PKG_MAINTAINER"
|
echo "packager = $TERMUX_PKG_MAINTAINER"
|
||||||
echo "size = $TERMUX_PKG_INSTALLSIZE"
|
echo "size = $TERMUX_PKG_INSTALLSIZE"
|
||||||
echo "arch = $TERMUX_ARCH"
|
echo "arch = $TERMUX_ARCH"
|
||||||
|
@ -115,19 +112,23 @@ termux_step_create_pacman_package() {
|
||||||
echo "pkgver = $TERMUX_PKG_FULLVERSION_FOR_PACMAN"
|
echo "pkgver = $TERMUX_PKG_FULLVERSION_FOR_PACMAN"
|
||||||
echo "pkgarch = $TERMUX_ARCH"
|
echo "pkgarch = $TERMUX_ARCH"
|
||||||
echo "packager = $TERMUX_PKG_MAINTAINER"
|
echo "packager = $TERMUX_PKG_MAINTAINER"
|
||||||
echo "builddate = $BUILD_DATE"
|
echo "builddate = $SOURCE_DATE_EPOCH"
|
||||||
} > .BUILDINFO
|
} > .BUILDINFO
|
||||||
|
|
||||||
# Write installation hooks.
|
# Write installation hooks.
|
||||||
termux_step_create_debscripts
|
termux_step_create_debscripts
|
||||||
termux_step_create_pacman_install_hook
|
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
|
# Create package
|
||||||
shopt -s dotglob globstar
|
shopt -s dotglob globstar
|
||||||
printf '%s\0' **/* | bsdtar -cnf - --format=mtree \
|
printf '%s\0' **/* | bsdtar -cnf - --format=mtree \
|
||||||
--options='!all,use-set,type,uid,gid,mode,time,size,md5,sha256,link' \
|
--options='!all,use-set,type,uid,gid,mode,time,size,md5,sha256,link' \
|
||||||
--null --files-from - --exclude .MTREE | \
|
--null --files-from - --exclude .MTREE | \
|
||||||
gzip -c -f -n > .MTREE
|
gzip -c -f -n > .MTREE
|
||||||
|
touch -d @$SOURCE_DATE_EPOCH .MTREE
|
||||||
printf '%s\0' **/* | bsdtar --no-fflags -cnf - --null --files-from - | \
|
printf '%s\0' **/* | bsdtar --no-fflags -cnf - --null --files-from - | \
|
||||||
$COMPRESS > "$PACMAN_FILE"
|
$COMPRESS > "$PACMAN_FILE"
|
||||||
shopt -u dotglob globstar
|
shopt -u dotglob globstar
|
||||||
|
|
Loading…
Reference in New Issue