Source: libpsl Version: 0.23.0-1 Severity: wishlist Tags: patch User: [email protected] Usertags: timestamps X-Debbugs-Cc: [email protected]
Hi, Whilst working on the Reproducible Builds effort [0], we noticed that libpsl could not be built reproducibly. This is because the manual page embeds the current build date. The attached patch generates these values from SOURCE_DATE_EPOCH, if it exists. Patch attached that modifies both the Autotools and Meson.build parts, even though I don't think the Meson build system is used right now. [0] https://reproducible-builds.org/ Regards, -- ,''`. : :' : Chris Lamb `. `'` [email protected] / chris-lamb.co.uk `-
--- a/debian/patches/0004-reproducible-build.patch 1969-12-31 16:00:00.000000000 -0800 --- b/debian/patches/0004-reproducible-build.patch 2026-07-15 09:03:12.126939478 -0700 @@ -0,0 +1,34 @@ +Description: Make the build reproducible +Author: Chris Lamb <[email protected]> +Last-Update: 2026-07-15 + +--- libpsl-0.23.0.orig/configure.ac ++++ libpsl-0.23.0/configure.ac +@@ -42,8 +42,8 @@ AC_SUBST([LIBPSL_VERSION_MAJOR], [$(echo + AC_SUBST([LIBPSL_VERSION_MINOR], [$(echo $VERSION | cut -d'.' -f2)]) + AC_SUBST([LIBPSL_VERSION_PATCH], [$(echo $VERSION | cut -d'.' -f3)]) + AC_SUBST([LIBPSL_VERSION_NUMBER], [$(printf '0x%02x%02x%02x' $LIBPSL_VERSION_MAJOR $LIBPSL_VERSION_MINOR $LIBPSL_VERSION_PATCH)]) +-AC_SUBST([COPYRIGHT_MONTH], [$(date +%B)]) +-AC_SUBST([COPYRIGHT_YEAR], [$(date +%Y)]) ++AC_SUBST([COPYRIGHT_MONTH], [m4_esyscmd([date -u -d "@$SOURCE_DATE_EPOCH" +%B 2>/dev/null || date -u -r $SOURCE_DATE_EPOCH +%B || date -u +%B])]) ++AC_SUBST([COPYRIGHT_YEAR], [m4_esyscmd([date -u -d "@$SOURCE_DATE_EPOCH" +%Y 2>/dev/null || date -u -r $SOURCE_DATE_EPOCH +%Y || date -u +%Y])]) + AC_CONFIG_FILES([include/libpsl.h tools/psl.1]) + + dnl +--- libpsl-0.23.0.orig/meson.build ++++ libpsl-0.23.0/meson.build +@@ -157,7 +157,13 @@ endif + # Shared configuration data for copyright date and version + _cdata = configuration_data() + _cdata.set('PACKAGE_VERSION', meson.project_version()) +-copyright_date = run_command(['date', '+%B %Y'], check: true).stdout().strip() ++date_exe = find_program('date') ++cmd = run_command('sh', '-c', 'echo $SOURCE_DATE_EPOCH') ++source_date_epoch = cmd.stdout().strip() ++if source_date_epoch == '' ++ source_date_epoch = run_command(date_exe, '+%s').stdout().strip() ++endif ++copyright_date = run_command(date_exe, '-u', '-d', '@' + source_date_epoch, '+%B %Y').stdout().strip() + _cdata.set('COPYRIGHT_MONTH', copyright_date.split()[0]) + _cdata.set('COPYRIGHT_YEAR', copyright_date.split()[1]) + --- a/debian/patches/series 2026-07-15 08:56:28.991855043 -0700 --- b/debian/patches/series 2026-07-15 09:03:08.612154387 -0700 @@ -1,3 +1,4 @@ 0001-remove-git-submodules.patch 0002-make-psl-make-dafsa-py3-based.patch 0003-rename-cdata-in-docs-as-well.patch +0004-reproducible-build.patch

