On 24.04.24 00:05, Tom Lane wrote:
> It makes tarballs all right, but whatever commit ID you specify
> is semi-ignored, and you get a tarball corresponding to HEAD
> of master. (The PDFs come from the right version, though!)
>
> The reason for that is that the mk-one-release script does this
> (shorn of not-relevant-here details):
>
> export BASE=/home/pgsql
> export GIT_DIR=$BASE/postgresql.git
>
> mkdir pgsql
>
> # Export the selected git ref
> git archive ${gitref} | tar xf - -C pgsql
Where does ${gitref} come from? Why doesn't this line use git archive
HEAD | ... ?
> What I suggest is doing this in mk-one-release:
>
> -make dist
> +make dist PG_COMMIT_HASH=${gitref}
>
> and changing the "make dist" rules to write $(PG_COMMIT_HASH) not
> HEAD. The extra make variable will have no effect in the back
> branches, while it should cause the right thing to happen with
> the new implementation of "make dist".
I suppose we could do something like that, but we'd also need to come up
with a meson version.
(Let's not use "hash" though, since other ways to commit specify a
commit can be used.)
> This change seems like a good thing anyway for anyone who's tempted
> to use "make dist" manually, since they wouldn't necessarily want
> to package HEAD either.
A tin-foil-hat argument is that we might not want to encourage that,
because for reproducibility, we need a known git commit and also a known
implementation of make dist. If in the future someone uses the make
dist implementation of PG19 to build a tarball for PG17, it might not
come out the same way as using the make dist implementation of PG17.