public inbox for [email protected]
help / color / mirror / Atom feedFrom: Tom Lane <[email protected]>
To: Peter Eisentraut <[email protected]>
Cc: Greg Sabino Mullane <[email protected]>
Cc: [email protected]
Cc: Magnus Hagander <[email protected]>
Subject: Re: Tarball builds in the new world order
Date: Mon, 29 Apr 2024 12:14:10 -0400
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>
<CAKAnmmLS20mob0wWibo9ZNoMzxnP=LYN85dd41iy+KeuPN73+A@mail.gmail.com>
<[email protected]>
<[email protected]>
<[email protected]>
Peter Eisentraut <[email protected]> writes:
> On 26.04.24 21:24, Tom Lane wrote:
>> Concretely, I'm proposing the attached. Peter didn't like
>> PG_COMMIT_HASH, so I have PG_COMMIT_REFSPEC below, but I'm not
>> wedded to that if a better name is proposed.
> This seems ok to me, but note that we do have an equivalent
> implementation in meson. If we don't want to update that in a similar
> way, maybe we should disable it.
OK. After poking at that for awhile, it seemed like "default to
HEAD" fits into meson a lot better than "throw an error if the
variable isn't set", so I switched to doing it like that.
One reason is that AFAICT you can only set the variable during
"meson setup" not during "ninja". This won't matter to the
tarball build script, which does a one-off configuration run
anyway. But for manual use, a movable target like HEAD might be
more convenient given that behavior.
I tested this by building tarballs using the makefiles on a RHEL8
box, and using meson on my MacBook (with recent MacPorts tools).
I got bit-for-bit identical files, which I found rather impressive
given the gap between the platforms. Maybe this "reproducible builds"
wheeze will actually work.
I also changed the variable name to PG_GIT_REVISION per your
other suggestion.
regards, tom lane
Attachments:
[text/x-diff] v2-0001-make-packaged-commit-selectable.patch (2.6K, ../[email protected]/2-v2-0001-make-packaged-commit-selectable.patch)
download | inline diff:
diff --git a/GNUmakefile.in b/GNUmakefile.in
index 30553b2a95..9e41794f60 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -87,6 +87,9 @@ update-unicode: | submake-generated-headers submake-libpgport
distdir = postgresql-$(VERSION)
dummy = =install=
+# git revision to be packaged
+PG_GIT_REVISION ?= HEAD
+
GIT = git
dist: $(distdir).tar.gz $(distdir).tar.bz2
@@ -102,10 +105,10 @@ distdir-location:
# on, Unix machines.
$(distdir).tar.gz:
- $(GIT) -C $(srcdir) -c core.autocrlf=false archive --format tar.gz -9 --prefix $(distdir)/ HEAD -o $(abs_top_builddir)/$@
+ $(GIT) -C $(srcdir) -c core.autocrlf=false archive --format tar.gz -9 --prefix $(distdir)/ $(PG_GIT_REVISION) -o $(abs_top_builddir)/$@
$(distdir).tar.bz2:
- $(GIT) -C $(srcdir) -c core.autocrlf=false -c tar.tar.bz2.command='$(BZIP2) -c' archive --format tar.bz2 --prefix $(distdir)/ HEAD -o $(abs_top_builddir)/$@
+ $(GIT) -C $(srcdir) -c core.autocrlf=false -c tar.tar.bz2.command='$(BZIP2) -c' archive --format tar.bz2 --prefix $(distdir)/ $(PG_GIT_REVISION) -o $(abs_top_builddir)/$@
distcheck: dist
rm -rf $(dummy)
diff --git a/meson.build b/meson.build
index cdfd31377d..1c0579d5a6 100644
--- a/meson.build
+++ b/meson.build
@@ -3469,6 +3469,8 @@ bzip2 = find_program('bzip2', required: false, native: true)
distdir = meson.project_name() + '-' + meson.project_version()
+pg_git_revision = get_option('PG_GIT_REVISION')
+
# Note: core.autocrlf=false is needed to avoid line-ending conversion
# in case the environment has a different setting. Without this, a
# tarball created on Windows might be different than on, and unusable
@@ -3483,7 +3485,7 @@ tar_gz = custom_target('tar.gz',
'-9',
'--prefix', distdir + '/',
'-o', join_paths(meson.build_root(), '@OUTPUT@'),
- 'HEAD', '.'],
+ pg_git_revision],
output: distdir + '.tar.gz',
)
@@ -3497,7 +3499,7 @@ if bzip2.found()
'--format', 'tar.bz2',
'--prefix', distdir + '/',
'-o', join_paths(meson.build_root(), '@OUTPUT@'),
- 'HEAD', '.'],
+ pg_git_revision],
output: distdir + '.tar.bz2',
)
else
diff --git a/meson_options.txt b/meson_options.txt
index 249ecc5ffd..246cecf382 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -55,6 +55,9 @@ option('atomics', type: 'boolean', value: true,
option('spinlocks', type: 'boolean', value: true,
description: 'Use spinlocks')
+option('PG_GIT_REVISION', type: 'string', value: 'HEAD',
+ description: 'git revision to be packaged by pgdist target')
+
# Compilation options
[text/x-diff] v2-0002-fix-tarball-build-script.patch (733B, ../[email protected]/3-v2-0002-fix-tarball-build-script.patch)
download | inline diff:
--- mk-one-release.orig 2024-04-23 17:30:08.983226671 -0400
+++ mk-one-release 2024-04-29 12:10:38.106723387 -0400
@@ -39,13 +39,17 @@ mkdir pgsql
git archive ${gitref} | tar xf - -C pgsql
# Include the git ref in the output tarballs
+# (This has no effect with v17 and up; instead we rely on "git archive"
+# to include the commit hash in the tar header)
echo ${gitref} >pgsql/.gitrevision
cd pgsql
./configure
# Produce .tar.gz and .tar.bz2 files
-make dist
+# (With v17 and up, this will repeat the "git archive" call; the contents
+# of the working directory don't matter directly to the results.)
+make dist PG_GIT_REVISION=${gitref}
# Generate md5 and sha256 sums, and copy files to output
for x in *.tar.*; do
view thread (9+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected], [email protected], [email protected]
Subject: Re: Tarball builds in the new world order
In-Reply-To: <[email protected]>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox