I like that Guix is moving to a preference for non-'make dist' tarballs!

I have suspected that this could lead to some really complex circular or
cross-compile/bootstrap problems, and that we eventually for some small
set of packages could end up believing that a 'make dist' tarball is the
lesser of all evils after all.  But I hope that my fear here is wrong.

Janneke Nieuwenhuizen <[email protected]> writes:

>>   
>> https://blog.josefsson.org/2024/04/13/reproducible-and-minimal-source-only-tarballs/
>
> Yes, the only point I might still disagree on is the ChangeLog (yes,
> git-to-changelog must be fixed, preferrably written in Guile, and until
> then you need to set not only timezone but also locale; well, that's
> doable).  But it's a difficult choice, without any generated files:
> good, without ChangeLog: bad.  Hmm.

I later realized there is a compromise between these two positions:

 1) Require entire git history so that git2cl or git-to-changelog works

 2) Require that building a reproducible tarball works from a --depth 1
 checkout (or a git-archive tarball).

and that compromose is to demand that your --depth only need to be as
large to cover up until the last release, and then do something like:

.PHONY: gen-ChangeLog
gen-ChangeLog:
        $(AM_V_GEN)if test -e $(srcdir)/.git; then                      \
          LC_ALL=en_US.UTF-8 TZ=UTC0                                    \
            $(top_srcdir)/build-aux/gitlog-to-changelog                 \
              --srcdir=$(srcdir) --                                     \
              v$(PREV_VERSION)~.. > $(distdir)/cl-t &&                  \
            { printf '\n\nSee the source repo for older entries\n'      \
              >> $(distdir)/cl-t &&                                     \
              rm -f $(distdir)/ChangeLog &&                             \
              mv $(distdir)/cl-t $(distdir)/ChangeLog; }                \
        fi

That is, only include ChangeLog entries between the last public release
and the current public release.  I use this for GNU InetUtils releases
(and possibly some other packages).

I think this isn't entirely against GNU policy.  There is tradition in
GNU projects to trim ChangeLog (e.g., GNU coreutils), and this is just
more heavy trimming.

However, I am leaning towards a conclusion that generated and vendored
files in git are generally indefensible, and that we gave up on the
concept of ChangeLog files when we stopped maintaining them by hand and
started relying on git logs as the source.

/Simon

Attachment: signature.asc
Description: PGP signature

Reply via email to