From ea79eac19faf259c4313fd4080ffdcd25738a002 Mon Sep 17 00:00:00 2001 From: Samuel Dionne-Riel Date: Sat, 14 Dec 2024 00:37:58 -0500 Subject: [PATCH 1/3] makepkg: Use SOURCE_DATE_EPOCH for more reproducible source tarballs --- scripts/libmakepkg/srcinfo.sh.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/libmakepkg/srcinfo.sh.in b/scripts/libmakepkg/srcinfo.sh.in index c43d4cee..96df7721 100644 --- a/scripts/libmakepkg/srcinfo.sh.in +++ b/scripts/libmakepkg/srcinfo.sh.in @@ -113,7 +113,7 @@ srcinfo_write_package() { write_srcinfo_header() { printf "# Generated by makepkg %s\n" "$makepkg_version" - printf "# %s\n" "$(LC_ALL=C date -u)" + printf "# %s\n" "$(LC_ALL=C date --date="@$SOURCE_DATE_EPOCH" -u)" } write_srcinfo_content() { From af68f192afec941b2b1bffa2dab260b84e98a58c Mon Sep 17 00:00:00 2001 From: Samuel Dionne-Riel Date: Sat, 14 Dec 2024 00:37:33 -0500 Subject: [PATCH 2/3] makepkg: Unify source time for reproducible source tarballs --- scripts/makepkg.sh.in | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 591b010e..7de46fb7 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -683,6 +683,9 @@ create_srcpackage() { if [[ "$file" = "$(get_filename "$file")" ]] || (( SOURCEONLY == 2 )); then local absfile absfile=$(get_filepath "$file") || missing_source_file "$file" + if (( REPRODUCIBLE )); then + touch -d @$SOURCE_DATE_EPOCH "$absfile" + fi msg2 "$(gettext "Adding %s...")" "${absfile##*/}" ln -s "$absfile" "$srclinks/$pkgbase" fi @@ -724,6 +727,12 @@ create_srcpackage() { local fullver=$(get_full_version) local pkg_file="$SRCPKGDEST/${pkgbase}-${fullver}${SRCEXT}" + if (( REPRODUCIBLE )); then + # We have activated reproducible builds, so unify source times before + # building + find "${srclinks}/${pkgbase}" -exec touch -h -d @$SOURCE_DATE_EPOCH {} + + fi + # tar it up msg2 "$(gettext "Compressing source package...")" cd_safe "${srclinks}" From 63e99312c2ad4f4cd30c135a69bba7be5c96591a Mon Sep 17 00:00:00 2001 From: Samuel Dionne-Riel Date: Sat, 14 Dec 2024 02:19:57 -0500 Subject: [PATCH 3/3] makepkg: Use sorted inputs for source tarballs too --- scripts/makepkg.sh.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 7de46fb7..9e5a1d7e 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -739,7 +739,8 @@ create_srcpackage() { # TODO: Maybe this can be set globally for robustness shopt -s -o pipefail - LANG=C bsdtar --no-fflags @BSDTAR_NO_READ_SPARSE@ -cLf - ${pkgbase} | compress_as "$SRCEXT" > "${pkg_file}" || ret=$? + list_package_files | LANG=C bsdtar --no-fflags @BSDTAR_NO_READ_SPARSE@ -cnLf - --null --files-from - | + compress_as "$SRCEXT" > "${pkg_file}" || ret=$? shopt -u -o pipefail