From 01df14763431df1506cbae206945cd165c66d1d3 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 3 May 2024 11:08:50 -0400 Subject: [PATCH] Allow selecting the git revision to be packaged by "make dist". Commit 619bc23a1 changed "make dist" to invoke "git archive", but hard-wired the call to specify that the HEAD revision should be packaged. Our tarball building process needs to be able to specify which git commit to package (notably, for packaging back branches). While we could make that work with some hackery to operate in detached-HEAD state, it's a lot nicer just to expose git archive's ability to specify what to package. Hence, invent a new make variable PG_GIT_REVISION. This is undocumented, but so is "make dist". Also make corresponding changes in the meson scripts. We have no near-term intention of using that for package building, but it will likely happen eventually, so stay prepared. Discussion: https://postgr.es/m/3552543.1713909947@sss.pgh.pa.us --- GNUmakefile.in | 7 +++++-- meson.build | 6 ++++-- meson_options.txt | 3 +++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/GNUmakefile.in b/GNUmakefile.in index 30553b2a95..cf6e759486 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