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.



Reply via email to