• Bug#807270: mk-origtargz: create reproducible tarballs and --mtime opti

    From Diederik de Haas@21:1/5 to Chris Lamb on Thu Mar 20 20:40:01 2025
    --32b87dfa564c0d5edc557b94c95ece37cf2f3438ccf642a4c8b0bd64b30f Content-Transfer-Encoding: quoted-printable
    Content-Type: text/plain; charset=UTF-8

    On Thu Aug 31, 2017 at 10:57 AM CEST, Chris Lamb wrote:
    mk-origtargz: create reproducible tarballs and --mtime option

    Adding a Reproducible Builds usertag and pinging the ML -- I hadn't
    spotted this wishlist bug before.

    How about adding f.e. ``--sort name`` to the tar invocation?
    That parameter was explicitly added for reproducibility here: https://salsa.debian.org/kernel-team/linux/-/commit/ea024852d4

    The Debian kernel team switched from their own 'genorig.py' script to
    using ``uscan``, which IIUC invokes mk-origtargz here: https://salsa.debian.org/kernel-team/linux/-/commit/55243dbd8d6842f

    But I want to use my local clone of the upstream kernel instead of
    downloading ~250MB each time, so I want to restore that 'genorig.py'
    script for myself, but still get identical results.

    The sha256sums of the uncompressed tar archives are identical and
    diff-ing the extracted orig.tar.xz archives showed no difference at all.
    So I went looking what could be the reason why the sha256sums of the orig.tar.xz files were different. And that's when I found the first
    mentioned commit. And reproducibility is good, so it seems best if
    mk-origtargz is improved to produce reproducible results.

    So a +1 on this feature request from me.

    Cheers,
    Diederik

    --32b87dfa564c0d5edc557b94c95ece37cf2f3438ccf642a4c8b0bd64b30f
    Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iHUEABYIAB0WIQT1sUPBYsyGmi4usy/XblvOeH7bbgUCZ9xq9gAKCRDXblvOeH7b brqAAQD/Ft+7HeG63H99M55nIS16pgVGEdCl3VZnZBYvmzsBlAEAjf3vZhpMSDYu do+wF7I3jxMJ8vk3ecBK4qirarI2EAo=Y6NM
    -----END PGP SIGNATURE-----

    --32b87dfa564c0d5edc557b94c95ece37cf2f3438ccf642a4c8b0bd64b30f--

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Josefsson@21:1/5 to Diederik de Haas on Thu Mar 20 22:50:01 2025
    +1 on reproducible tarballs. I've been spending way too much time to
    achieve this for 'make dist' tarballs of a couple of projects (libtasn1, libidn2, inetutils, ...). It is not a simple matter. Modification time
    of files is used by 'make' for dependency rebuild ordering and may also
    end up as timestamps inside files.

    "Diederik de Haas" <didi.debian@cknow.org> writes:

    On Thu Aug 31, 2017 at 10:57 AM CEST, Chris Lamb wrote:
    mk-origtargz: create reproducible tarballs and --mtime option

    Adding a Reproducible Builds usertag and pinging the ML -- I hadn't
    spotted this wishlist bug before.

    How about adding f.e. ``--sort name`` to the tar invocation?

    Here is one resource to read for more hints:

    https://www.gnu.org/software/tar/manual/html_node/Reproducibility.html

    /Simon

    -----BEGIN PGP SIGNATURE-----

    iQNoBAEWCAMQFiEEo8ychwudMQq61M8vUXIrCP5HRaIFAmfciosUHHNpbW9uQGpv c2Vmc3Nvbi5vcmfCHCYAmDMEXJLOtBYJKwYBBAHaRw8BAQdACIcrZIvhrxDBkK9f V+QlTmXxo2naObDuGtw58YaxlOu0JVNpbW9uIEpvc2Vmc3NvbiA8c2ltb25Aam9z ZWZzc29uLm9yZz6IlgQTFggAPgIbAwULCQgHAgYVCAkKCwIEFgIDAQIeAQIXgBYh BLHSvRN1vst4TPT4xNc89jjFPAa+BQJn0XQkBQkNZGbwAAoJENc89jjFPAa+BtIA /iR73CfBurG9y8pASh3cbGOMHpDZfMAtosu6jbpO69GHAP4p7l57d+iVty2VQMsx +3TCSAvZkpr4P/FuTzZ8JZe8BrgzBFySz4EWCSsGAQQB2kcPAQEHQOxTCIOaeXAx I2hIX4HK9bQTpNVei708oNr1Klm8qCGKiPUEGBYIACYCGwIWIQSx0r0Tdb7LeEz0 +MTXPPY4xTwGvgUCZ9F0SgUJDWRmSQCBdiAEGRYIAB0WIQSjzJyHC50xCrrUzy9R cisI/kdFogUCXJLPgQAKCRBRcisI/kdFoqdMAQCgH45aseZgIrwKOvUOA9QfsmeE 8GZHYNuFHmM9FEQS6AD6A4x5aYvoY6lo98pgtw2HPDhmcCXFItjXCrV4A0GmJA4J ENc89jjFPAa+wUUBAO64fbZek6FPlRK0DrlWsrjCXuLi6PUxyzCAY6lG2nhUAQC6 qobB9mkZlZ0qihy1x4JRtflqFcqqT9n7iUZkCDIiDbg4BFySz2oSCisGAQQBl1UB BQEBB0AxlRumDW6nZY7A+VCfek9VpEx6PJmdJyYPt3lNHMd6HAMBCAeIfgQYFggA JgIbDBYhBLHSvRN1vst4TPT4xNc89jjFPAa+BQJn0XTSBQkNZGboAAoJENc89jjF PAa+0M0BAPPRq73kLnHYNDMniVBOzUdi2XeF32idjEWWfjvyIJUOAP4wZ+ALxIeh is3Uw2BzGZE6ttXQ2Q+DeCJO3TPpIqaXDAAKCRBRcisI/kdFooXEAP9AFMkjdYja H18H00lc+N0IdCUJ3tYmAM4PhffVEj5D0QEA/Re/0S43Zoa6sjwdfNHA2imfLz2s /f3BBcFgk0KOoQw=
    =4Zdi
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Holger Levsen@21:1/5 to Simon Josefsson on Fri Mar 21 00:20:01 2025
    On Thu, Mar 20, 2025 at 10:37:15PM +0100, Simon Josefsson wrote:
    +1 on reproducible tarballs.

    sure, +1, patches welcome! :) \o/


    --
    cheers,
    Holger

    ⢀⣴⠾⠻⢶⣦⠀
    ⣾⠁⢠⠒⠀⣿⡁ holger@(debian|reproducible-builds|layer-acht).org
    ⢿⡄⠘⠷⠚⠋⠀ OpenPGP: B8BF54137B09D35CF026FE9D 091AB856069AAA1C
    ⠈⠳⣄

    When truth hurts, many prefer ignorance.

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEuL9UE3sJ01zwJv6dCRq4VgaaqhwFAmfcoA0ACgkQCRq4Vgaa qhycdBAAjp18k0mlsJIEJenzDqwF72GpuYnPdcozvphOav/1NsPwPGfIMpDJwhB5 d/NJ+C+ugHffTcUFSzdf+gzWDD7nMLXJ3NAGcHWtiomiYOj8Q6tHdASymAXOL1rm dGvk/ZPkF4BaOiMXmY2igBKB9A+Zd8nLjsDMz9JLXVDzeN18bfgoWN91Nz59TDZl +oWNOoOkSJMHXAP5P+QqOk5JUAhoJOpXNKNFzQ+OnopBU0TeAPnLzDTQXsj6v02b cbIaSbhfS3fUf0DuAAtWbZUv05j96X1MBsh5227Fi+G6P9zIZKKyHoxNl/z+gDUq GNlQXr9z4boyHErJJFLZei4V+jHjQUyK2349bZ3fZXi17S8L3cvfVXfC8qs6K/T2 pnau2aQIQFw21Q4egHmIGK95dgqc5whTP4MCd6JR2CWPViZm/0KdBMp3NrUzdB/5 gey/byPH6w4BNMM6hkVr4MbK6bTl0CfzeUI1Bmk8PK6H3RBaopnNNjKf149TBbTL 3SvvTEjpeB0F4H8D+YjVhiF0GJwCR1XAwFn+zYTth1mExbbkhgS2kVe+kFam4KL/ 8z8iJsnBgo+EPuzYsxDmqGZ5GOshbAPJFY6fKtxjb4XYoS9uXO61Ui4tK3oxTfkt
    qABa51
  • From Simon Josefsson@21:1/5 to Holger Levsen on Fri Mar 21 10:10:01 2025
    --=-=-=
    Content-Type: text/plain
    Content-Transfer-Encoding: quoted-printable

    Holger Levsen <holger@layer-acht.org> writes:

    On Thu, Mar 20, 2025 at 10:37:15PM +0100, Simon Josefsson wrote:
    +1 on reproducible tarballs.

    sure, +1, patches welcome! :) \o/

    Attached starting point, thoughts?

    https://salsa.debian.org/debian/devscripts/-/merge_requests/490

    The patch needs review/improvement from those more familiar with
    mk-origtargz and the debian/tests/ framework.

    My main argument is that solving this is harder than it looks, and I
    fear that solving the general problem here may actually be infeasible.
    It can help to realize this, otherwise one may think that solving this
    is just a matter of adding the right parameters (which is what the patch attempt to do).

    While we could attempt to continue patch things, how about a bigger
    question: why do we re-create tarballs?

    I guess there are many different use-cases, but I believe some of them
    are symptoms of some bigger problem. The solution in those use-cases
    isn't to improve reproducability of tarball re-creation, it is to avoid creating our own tarballs. Maybe some use-cases really do require us to re-create tarballs, and maybe in those particular cases designing a
    solution to the --mtime concern is feasible.

    For those wanting to understand why solving the --mtime concern is a
    hard problem, here is a partial helper tool to aid with this:

    https://lists.gnu.org/archive/html/bug-gnulib/2025-02/msg00166.html

    I dislike all that complexity though, so for some upstream projects
    (libtasn1, libidn2, inetutils, ...) I am using a heavy hammer like this:

    TAR_OPTIONS += --mode=go+u,go-w --mtime=$(abs_top_srcdir)/NEWS mtime-NEWS-to-git-HEAD:
    $(AM_V_GEN)if test -e $(srcdir)/.git \
    && command -v git > /dev/null; then \
    touch -m -t "$$(git log -1 --format=%cd --date=format-local:%Y%m%d%H%M.%S)" $(srcdir)/NEWS; \
    fi

    We could do the same in Debian, replacing NEWS with last timestamp of debian/changelog, but it is important to remember that this is an ugly workaround rather than a solution. Solving it like this will lead to
    other problems. Solving it properly requires going to the root cause of
    the problem, which is what Bruno is chasing in that e-mail thread.

    /Simon

    --=-=-Content-Type: text/x-diff
    Content-Disposition: inline;
    filename 01-MkOrigtargz-Improve-tarball-reproducibility.patch Content-Transfer-Encoding: quoted-printable

    From a811a58bb007f7f0fe474e0ff1a105c48fedc238 Mon Sep 17 00:00:00 2001
    From: Simon Josefsson <simon@josefsson.org>
    Date: Fri, 21 Mar 2025 09:40:48 +0100
    Subject: [PATCH] MkOrigtargz: Improve tarball reproducibility.

    The --format=ustar is better than the V7 format and is
    a conservative choice if we don't want to switch to PAX
    just yet, see discussion here: https://serverfault.com/questions/250511/which-tar-file-format-should-i-use

    Using --numeric-owner --owner=0 --group=0 avoids relying on the target
    system having a /etc/passwd and /etc/group user/group called 'root'
    and that they both map to uid/gid 0 which is the intent.

    Sorting filenames with --sort=name improve tarball reproducability.

    Hard code permissions with --mode=go=rX,u+rw,a-s inspired by Guix.

    Using --mtime and --clamp-mtime remains and is the complex part.
    ---
    lib/Devscripts/MkOrigtargz.pm | 18 +++++++++++++-----
    1 file changed, 13 insertions(+), 5 deletions(-)

    diff --git a/lib/Devscripts/MkOrigtargz.pm b/lib/Devscripts/MkOrigtargz.pm index b1a691dc..86993afc 100644
    --- a/lib/Devscripts/MkOrigtargz.pm
    +++ b/lib/Devscripts/MkOrigtargz.pm
    @@ -110,11 +110,19 @@ sub make_orig_targz {
    # tar it all up
    spawn(
    exec => [
    - 'tar', '--owner=root',
    - '--group=root', '--mode=a+rX',
    - '--create', '--file',
    - "$destfiletar", '--directory',
    - $tempdir, @files
    + 'tar',
    + '--format=ustar',
    + '--owner=0',
    + '--group=0',
    + '--numeric-owner',
    + '--sort=name',
    + '--mode=go=rX,u+rw,a-s',
    + '--create',
    + '--file',
    + "$destfiletar",
    + '--directory',
    + $tempdir,
    + @files
    ],
    wait_child => 1
    );
    --
    2.48.1


    --=
  • From Diederik de Haas@21:1/5 to Diederik de Haas on Sun Mar 23 16:50:01 2025
    --927df2e810bf2aba5c10087ed95e967dcee7a9b11540a2679dfe916ccc81 Content-Transfer-Encoding: quoted-printable
    Content-Type: text/plain; charset=UTF-8

    On Sun Mar 23, 2025 at 4:35 PM CET, Diederik de Haas wrote:
    https://www.gnu.org/software/tar/manual/html_section/Formats.html
    ...
    I also see 'posix' as archive format:
    "The format defined by POSIX.1-2001 and later."
    "This archive format will be the default format for future versions of
    GNU tar."
    ...
    btw: Is this what you mean by 'pax'?
    The serverfault page describes it as POSIX.1-2001, but the Formats page doesn't have the word 'pax'.

    Answering this myself after checking ``tar --help``:

    Archive format selection:
    pax POSIX 1003.1-2001 (pax) format
    posix same as pax

    Cheers,
    Diederik

    --927df2e810bf2aba5c10087ed95e967dcee7a9b11540a2679dfe916ccc81
    Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iHUEABYIAB0WIQT1sUPBYsyGmi4usy/XblvOeH7bbgUCZ+AsVwAKCRDXblvOeH7b bt4OAP9vbLrkF65wUGNHT/4LG1rztiir0T808i2j5LSVpLOCmAD8CK/iD6dKwZKm x+skU2+/U5uf/juY+qaHyURlnNzIQA0=NK97
    -----END PGP SIGNATURE-----

    --927df2e810bf2aba5c10087ed95e967dcee7a9b11540a2679dfe916ccc81--

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Diederik de Haas@21:1/5 to Simon Josefsson on Sun Mar 23 16:50:01 2025
    --17ec159295bc8672466a7ea3e43d6839e917836511a8124edee16cf45a1c Content-Transfer-Encoding: quoted-printable
    Content-Type: text/plain; charset=UTF-8

    On Fri Mar 21, 2025 at 10:06 AM CET, Simon Josefsson wrote:
    Holger Levsen <holger@layer-acht.org> writes:
    On Thu, Mar 20, 2025 at 10:37:15PM +0100, Simon Josefsson wrote:
    +1 on reproducible tarballs.

    sure, +1, patches welcome! :) \o/

    Attached starting point, thoughts?

    https://salsa.debian.org/debian/devscripts/-/merge_requests/490

    The patch needs review/improvement from those more familiar with
    mk-origtargz and the debian/tests/ framework.

    I had made some comments on the MR, but I think it's useful to keep it
    all together, so I'll redo that here. At the end of the message.

    My main argument is that solving this is harder than it looks, and I
    fear that solving the general problem here may actually be infeasible.

    ... having looked into this a bit more, I agree. (more later)

    It can help to realize this, otherwise one may think that solving this
    is just a matter of adding the right parameters (which is what the patch attempt to do).

    While we could attempt to continue patch things, how about a bigger
    question: why do we re-create tarballs?

    I consider that out of scope for this bug, so I won't comment on that.

    For those wanting to understand why solving the --mtime concern is a
    hard problem, here is a partial helper tool to aid with this:

    https://lists.gnu.org/archive/html/bug-gnulib/2025-02/msg00166.html

    I dislike all that complexity though, so for some upstream projects

    I actually like that, not for its 'complexity' but for having clear
    rules and (especially if everyone uses that) consistency.
    There is one 'problem' though: it only supports git (for now?).

    (libtasn1, libidn2, inetutils, ...) I am using a heavy hammer like this:

    TAR_OPTIONS += --mode=go+u,go-w --mtime=$(abs_top_srcdir)/NEWS mtime-NEWS-to-git-HEAD:
    $(AM_V_GEN)if test -e $(srcdir)/.git \
    && command -v git > /dev/null; then \
    touch -m -t "$$(git log -1 --format=%cd --date=format-local:%Y%m%d%H%M.%S)" $(srcdir)/NEWS; \
    fi

    The ``genorig.py`` script stored the orig_date like this:

    orig_date = time.strftime("%a, %d %b %Y %H:%M:%S +0000",
    time.gmtime(
    os.stat(os.path.join(self.dir, self.orig, 'Makefile'))
    .st_mtime))

    And then orig_date is used to set the --mtime parameter to tar.
    That ``genorig.py`` script also had a useful comment:

    # exclude_files() will change dir mtimes. Capture the original
    # release time so we can apply it to the final tarball.

    I don't really care which date format is used, but I do care that it's
    used consistently. And if the archive is repackaged or not, the mtime
    should be the same (which was the whole idea behind storing orig_date). Similarly it shouldn't matter if the archive is created via ``uscan`` or
    via a call to ``mk-origtargz`` directly.

    We could do the same in Debian, replacing NEWS with last timestamp of debian/changelog, but it is important to remember that this is an ugly workaround rather than a solution.

    It's indeed a(n ugly) workaround but I do think it's useful; having each package declare which upstream file to use sounds like a very bad idea.

    Solving it like this will lead to other problems.
    Solving it properly requires going to the root cause of
    the problem, which is what Bruno is chasing in that e-mail thread.

    I do like solving things properly, but having stopped myself from going
    into too many rabbit holes, I'll settle for a decent one ;-)

    And now for a review of the patch/MR itself:

    First of all: thanks for a proper commit message :-)

    From a811a58bb007f7f0fe474e0ff1a105c48fedc238 Mon Sep 17 00:00:00 2001
    From: Simon Josefsson <simon@josefsson.org>
    Date: Fri, 21 Mar 2025 09:40:48 +0100
    Subject: [PATCH] MkOrigtargz: Improve tarball reproducibility.

    The --format=ustar is better than the V7 format and is
    a conservative choice if we don't want to switch to PAX
    just yet, see discussion here: https://serverfault.com/questions/250511/which-tar-file-format-should-i-use

    I do like references/links but what I'm missing is *why* *you* propose
    to go with ustar and not go with any of the other archive formats.
    I usually put links at the bottom of the commit message which can be
    used for background/further reading, but the commit message itself
    should contain all the information needed.

    https://www.gnu.org/software/tar/manual/html_section/Formats.html

    says about ustar: "Archive format defined by POSIX.1-1988 and later."
    which I think is a really good argument (I like standards).

    I also see 'posix' as archive format:
    "The format defined by POSIX.1-2001 and later."
    "This archive format will be the default format for future versions of
    GNU tar."

    POSIX.1-2001 doesn't sound too recent, so why not go with that?
    There may be very valid reasons, but please describe why you choose NOT
    to go with that.
    That can then be used in the future to re-evaluate that choice.

    btw: Is this what you mean by 'pax'?
    The serverfault page describes it as POSIX.1-2001, but the Formats page
    doesn't have the word 'pax'.
    The upstream tar git repo does have a 'paxutils' submodule, not to be
    confused with the 'pax-utils' Debian package.
    Then there's also a 'pax' Debian package "Portable Archive Interchange
    (cpio, pax, tar)" which sounds useful (?), but its package description
    has this: "This is the MirBSD paxtar implementation supporting the
    formats ... old tar, and ustar, but not the format known as pax yet" :-O

    [ continuing with 'Formats' ]
    "The default format for GNU tar is defined at compilation time. You may
    check it by running tar --help, and examining the last lines of its
    output. Usually, GNU tar is configured to create archives in ‘gnu’
    format, however, a future version will switch to ‘posix’."

    ```sh
    diederik@bagend:~$ tar --version
    tar (GNU tar) 1.35
    diederik@bagend:~$ tar --help | tail -n3
    *This* tar defaults to:
    --format=gnu -f- -b20 --quoting-style=escape --rmt-command=/usr/sbin/rmt --rsh-command=/usr/bin/rsh
    ```

    The ``gnu`` archive format description has:
    "Format used by GNU tar versions up to 1.13.25."
    I didn't see a format specification in ``debian/rules``, so it seems the default is still ``gnu``?

    It sounds to me that ``ustar`` or ``posix`` are better then ``gnu``, but
    is it wise if the Debian tar package uses a different archive format
    (by default) then what mk-origtargz does/will do?
    The Debian tar maintainer had its last upload 4 years ago and I haven't
    found any upload by its official 'uploader' ... ever, so CC-ing them
    didn't sound too useful.

    And then I stopped myself from going into more rabbit holes ...

    Using --numeric-owner --owner=0 --group=0 avoids relying on the target
    system having a /etc/passwd and /etc/group user/group called 'root'
    and that they both map to uid/gid 0 which is the intent.

    Excellent.

    Sorting filenames with --sort=name improve tarball reproducability.

    Idem.

    Hard code permissions with --mode=go=rX,u+rw,a-s inspired by Guix.

    Why? Does this change the permissions of the files in the archive?
    If so, then that sounds like a bad idea.
    If it is useful, then the reasoning for doing that should be documented
    with an optional link to the Guix page (?) that you used for its
    justification.

    Using --mtime and --clamp-mtime remains and is the complex part.

    Without it, this patch won't close bug 807270, but referencing that bug
    in this patch seems *very* useful.
    And I want to reiterate that "exclude_files() will change dir mtimes",
    which IIUC makes things NOT reproducible.

    ---
    lib/Devscripts/MkOrigtargz.pm | 18 +++++++++++++-----
    1 file changed, 13 insertions(+), 5 deletions(-)

    diff --git a/lib/Devscripts/MkOrigtargz.pm b/lib/Devscripts/MkOrigtargz.pm index b1a691dc..86993afc 100644
    --- a/lib/Devscripts/MkOrigtargz.pm
    +++ b/lib/Devscripts/MkOrigtargz.pm
    @@ -110,11 +110,19 @@ sub make_orig_targz {
    # tar it all up
    spawn(
    exec => [
    - 'tar', '--owner=root',
    - '--group=root', '--mode=a+rX',
    - '--create', '--file',
    - "$destfiletar", '--directory',
    - $tempdir, @files
    + 'tar',
    + '--format=ustar',
    + '--owner=0',
    + '--group=0',
    + '--numeric-owner',
    + '--sort=name',
    + '--mode=go=rX,u+rw,a-s',
    + '--create',
    + '--file',
    + "$destfiletar",
    + '--directory',
    + $tempdir,
    + @files

    You're using a mix of tabs and spaces above; please use only spaces to
    match the rest of the file.

    ],
    wait_child => 1
    );
    --

    Cheers,
    Diederik

    --17ec159295bc8672466a7ea3e43d6839e917836511a8124edee16cf45a1c
    Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iHUEABYIAB0WIQT1sUPBYsyGmi4usy/XblvOeH7bbgUCZ+AqLQAKCRDXblvOeH7b bsU3AQCHytzPElsibWHUWOIMDx8FIeNZA3nobLpK76/isinROgEA5/wH9f4cRdFm t3xYe7vLcozHakCGNrdkiwglrvIxPQo=3pUr
    -----END PGP SIGNATURE-----

    --17ec159295bc8672466a7ea3e43d6839e917836511a8124edee16cf45a1c--

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Diederik de Haas@21:1/5 to Diederik de Haas on Sun Mar 23 17:00:01 2025
    --4f68fb6d690f37b9a79846a18e7f5b8acac95700a07ea02e60b4924158ce Content-Transfer-Encoding: quoted-printable
    Content-Type: text/plain; charset=UTF-8

    On Sun Mar 23, 2025 at 4:35 PM CET, Diederik de Haas wrote:
    On Fri Mar 21, 2025 at 10:06 AM CET, Simon Josefsson wrote:
    From a811a58bb007f7f0fe474e0ff1a105c48fedc238 Mon Sep 17 00:00:00 2001
    From: Simon Josefsson <simon@josefsson.org>
    Date: Fri, 21 Mar 2025 09:40:48 +0100
    Subject: [PATCH] MkOrigtargz: Improve tarball reproducibility.

    Forgot to mention this, but please also add a link to https://www.gnu.org/software/tar/manual/html_node/Reproducibility.html

    which you shared in your mail before the patch and is *really* useful!

    Cheers,
    Diederik

    --4f68fb6d690f37b9a79846a18e7f5b8acac95700a07ea02e60b4924158ce
    Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iHUEABYIAB0WIQT1sUPBYsyGmi4usy/XblvOeH7bbgUCZ+AtOgAKCRDXblvOeH7b bnbAAP9f+ZLfJMZmDCcYZGnrBs6w7VyGx7wvE5dTikJpqCPcMAD/dEOjqEd9HnSd mBHlxE0bB7H94OtJ8cucZKN41ZJHDgI=uR50
    -----END PGP SIGNATURE-----

    --4f68fb6d690f37b9a79846a18e7f5b8acac95700a07ea02e60b4924158ce--

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)