v2-0016-Add-Meson-overrides.patch
text/x-patch
Filename: v2-0016-Add-Meson-overrides.patch
Type: text/x-patch
Part: 15
Message:
Re: Meson build updates
Patch
Format: format-patch
Series: patch v2-0016
Subject: Add Meson overrides
| File | + | − |
|---|---|---|
| src/backend/meson.build | 2 | 0 |
| src/bin/initdb/meson.build | 2 | 0 |
| src/bin/pg_amcheck/meson.build | 2 | 0 |
| src/bin/pg_archivecleanup/meson.build | 2 | 0 |
| src/bin/pg_basebackup/meson.build | 6 | 0 |
| src/bin/pgbench/meson.build | 2 | 0 |
| src/bin/pg_checksums/meson.build | 2 | 0 |
| src/bin/pg_config/meson.build | 2 | 0 |
| src/bin/pg_controldata/meson.build | 2 | 0 |
| src/bin/pg_ctl/meson.build | 2 | 0 |
| src/bin/pg_dump/meson.build | 6 | 0 |
| src/bin/pg_resetwal/meson.build | 2 | 0 |
| src/bin/pg_rewind/meson.build | 2 | 0 |
| src/bin/pg_test_fsync/meson.build | 2 | 0 |
| src/bin/pg_test_timing/meson.build | 2 | 0 |
| src/bin/pg_upgrade/meson.build | 2 | 0 |
| src/bin/pg_verifybackup/meson.build | 2 | 0 |
| src/bin/pg_waldump/meson.build | 2 | 0 |
| src/bin/psql/meson.build | 2 | 0 |
| src/bin/scripts/meson.build | 4 | 2 |
| src/interfaces/ecpg/preproc/meson.build | 2 | 0 |
| src/interfaces/libpq/meson.build | 2 | 0 |
From be4f22cd3c2bed3d288634df77333ed9646989da Mon Sep 17 00:00:00 2001
From: Tristan Partin <tristan@neon.tech>
Date: Wed, 17 May 2023 10:36:52 -0500
Subject: [PATCH v2 16/17] Add Meson overrides
Meson has the ability to do transparent overrides when projects are used
as subprojects. For instance, say I am building a Postgres extension. I
can define Postgres to be a subproject of my extension given the
following wrap file:
[wrap-git]
url = https://git.postgresql.org/git/postgresql.git
revision = master
depth = 1
[provide]
dependency_names = libpq
Then in my extension (root project), I can have the following line
snippet:
libpq = dependency('libpq')
This will tell Meson to transparently compile libpq prior to it
compiling my extension (because I depend on libpq) if libpq isn't found
on the host system.
I have also added overrides for the various public-facing exectuables.
Though I don't expect them to get much usage, might as well go ahead and
override them. They can be used by adding the following line to the
aforementioned wrap file:
program_names = initdb, postgres, ...
Then in my extension (root project), I can find them with the following
line:
initdb = find_program('initdb')
Again, initdb will be compiled transparently as my extension gets built
if and only if initdb isn't found on the host system.
---
src/backend/meson.build | 2 ++
src/bin/initdb/meson.build | 2 ++
src/bin/pg_amcheck/meson.build | 2 ++
src/bin/pg_archivecleanup/meson.build | 2 ++
src/bin/pg_basebackup/meson.build | 6 ++++++
src/bin/pg_checksums/meson.build | 2 ++
src/bin/pg_config/meson.build | 2 ++
src/bin/pg_controldata/meson.build | 2 ++
src/bin/pg_ctl/meson.build | 2 ++
src/bin/pg_dump/meson.build | 6 ++++++
src/bin/pg_resetwal/meson.build | 2 ++
src/bin/pg_rewind/meson.build | 2 ++
src/bin/pg_test_fsync/meson.build | 2 ++
src/bin/pg_test_timing/meson.build | 2 ++
src/bin/pg_upgrade/meson.build | 2 ++
src/bin/pg_verifybackup/meson.build | 2 ++
src/bin/pg_waldump/meson.build | 2 ++
src/bin/pgbench/meson.build | 2 ++
src/bin/psql/meson.build | 2 ++
src/bin/scripts/meson.build | 6 ++++--
src/interfaces/ecpg/preproc/meson.build | 2 ++
src/interfaces/libpq/meson.build | 2 ++
22 files changed, 54 insertions(+), 2 deletions(-)
diff --git a/src/backend/meson.build b/src/backend/meson.build
index ccfc382fcf..ac2f66d920 100644
--- a/src/backend/meson.build
+++ b/src/backend/meson.build
@@ -147,6 +147,8 @@ postgres = executable('postgres',
backend_targets += postgres
+meson.override_find_program('postgres', postgres)
+
pg_mod_c_args = cflags_mod
pg_mod_cpp_args = cxxflags_mod
pg_mod_link_args = ldflags_sl + ldflags_mod
diff --git a/src/bin/initdb/meson.build b/src/bin/initdb/meson.build
index 49743630aa..12b4918e8b 100644
--- a/src/bin/initdb/meson.build
+++ b/src/bin/initdb/meson.build
@@ -23,6 +23,8 @@ initdb = executable('initdb',
)
bin_targets += initdb
+meson.override_find_program('initdb', initdb)
+
tests += {
'name': 'initdb',
'sd': meson.current_source_dir(),
diff --git a/src/bin/pg_amcheck/meson.build b/src/bin/pg_amcheck/meson.build
index 2ade5aba03..8694abbf07 100644
--- a/src/bin/pg_amcheck/meson.build
+++ b/src/bin/pg_amcheck/meson.build
@@ -17,6 +17,8 @@ pg_amcheck = executable('pg_amcheck',
)
bin_targets += pg_amcheck
+meson.override_find_program('pg_amcheck', pg_amcheck)
+
tests += {
'name': 'pg_amcheck',
'sd': meson.current_source_dir(),
diff --git a/src/bin/pg_archivecleanup/meson.build b/src/bin/pg_archivecleanup/meson.build
index 28349db58b..6eecb42b05 100644
--- a/src/bin/pg_archivecleanup/meson.build
+++ b/src/bin/pg_archivecleanup/meson.build
@@ -17,6 +17,8 @@ pg_archivecleanup = executable('pg_archivecleanup',
)
bin_targets += pg_archivecleanup
+meson.override_find_program('pg_archivecleanup', pg_archivecleanup)
+
tests += {
'name': 'pg_archivecleanup',
'sd': meson.current_source_dir(),
diff --git a/src/bin/pg_basebackup/meson.build b/src/bin/pg_basebackup/meson.build
index c684622bfb..589c664163 100644
--- a/src/bin/pg_basebackup/meson.build
+++ b/src/bin/pg_basebackup/meson.build
@@ -37,6 +37,8 @@ pg_basebackup = executable('pg_basebackup',
)
bin_targets += pg_basebackup
+meson.override_find_program('pg_basebackup', pg_basebackup)
+
pg_receivewal_sources = files(
'pg_receivewal.c',
@@ -56,6 +58,8 @@ pg_receivewal = executable('pg_receivewal',
)
bin_targets += pg_receivewal
+meson.override_find_program('pg_receivewal', pg_receivewal)
+
pg_recvlogical_sources = files(
'pg_recvlogical.c',
@@ -75,6 +79,8 @@ pg_recvlogical = executable('pg_recvlogical',
)
bin_targets += pg_recvlogical
+meson.override_find_program('pg_recvlogical', pg_recvlogical)
+
tests += {
'name': 'pg_basebackup',
'sd': meson.current_source_dir(),
diff --git a/src/bin/pg_checksums/meson.build b/src/bin/pg_checksums/meson.build
index 5528526094..d54e76ae6c 100644
--- a/src/bin/pg_checksums/meson.build
+++ b/src/bin/pg_checksums/meson.build
@@ -18,6 +18,8 @@ pg_checksums = executable('pg_checksums',
)
bin_targets += pg_checksums
+meson.override_find_program('pg_checksums', pg_checksums)
+
tests += {
'name': 'pg_checksums',
'sd': meson.current_source_dir(),
diff --git a/src/bin/pg_config/meson.build b/src/bin/pg_config/meson.build
index 7fd7e94e2d..bea966f63e 100644
--- a/src/bin/pg_config/meson.build
+++ b/src/bin/pg_config/meson.build
@@ -17,6 +17,8 @@ pg_config = executable('pg_config',
)
bin_targets += pg_config
+meson.override_find_program('pg_config', pg_config)
+
tests += {
'name': 'pg_config',
'sd': meson.current_source_dir(),
diff --git a/src/bin/pg_controldata/meson.build b/src/bin/pg_controldata/meson.build
index 03c9d0ae3e..4521828b1f 100644
--- a/src/bin/pg_controldata/meson.build
+++ b/src/bin/pg_controldata/meson.build
@@ -17,6 +17,8 @@ pg_controldata = executable('pg_controldata',
)
bin_targets += pg_controldata
+meson.override_find_program('pg_controldata', pg_controldata)
+
tests += {
'name': 'pg_controldata',
'sd': meson.current_source_dir(),
diff --git a/src/bin/pg_ctl/meson.build b/src/bin/pg_ctl/meson.build
index 608a52f9fb..b62519c15f 100644
--- a/src/bin/pg_ctl/meson.build
+++ b/src/bin/pg_ctl/meson.build
@@ -17,6 +17,8 @@ pg_ctl = executable('pg_ctl',
)
bin_targets += pg_ctl
+meson.override_find_program('pg_ctl', pg_ctl)
+
tests += {
'name': 'pg_ctl',
'sd': meson.current_source_dir(),
diff --git a/src/bin/pg_dump/meson.build b/src/bin/pg_dump/meson.build
index 9d59a106f3..ae89758ef6 100644
--- a/src/bin/pg_dump/meson.build
+++ b/src/bin/pg_dump/meson.build
@@ -45,6 +45,8 @@ pg_dump = executable('pg_dump',
)
bin_targets += pg_dump
+meson.override_find_program('pg_dump', pg_dump)
+
pg_dumpall_sources = files(
'pg_dumpall.c',
@@ -64,6 +66,8 @@ pg_dumpall = executable('pg_dumpall',
)
bin_targets += pg_dumpall
+meson.override_find_program('pg_dumpall', pg_dumpall)
+
pg_restore_sources = files(
'pg_restore.c',
@@ -83,6 +87,8 @@ pg_restore = executable('pg_restore',
)
bin_targets += pg_restore
+meson.override_find_program('pg_restore', pg_restore)
+
tests += {
'name': 'pg_dump',
'sd': meson.current_source_dir(),
diff --git a/src/bin/pg_resetwal/meson.build b/src/bin/pg_resetwal/meson.build
index 3f08a819bb..e7d4ab3fa5 100644
--- a/src/bin/pg_resetwal/meson.build
+++ b/src/bin/pg_resetwal/meson.build
@@ -17,6 +17,8 @@ pg_resetwal = executable('pg_resetwal',
)
bin_targets += pg_resetwal
+meson.override_find_program('pg_resetwal', pg_resetwal)
+
tests += {
'name': 'pg_resetwal',
'sd': meson.current_source_dir(),
diff --git a/src/bin/pg_rewind/meson.build b/src/bin/pg_rewind/meson.build
index fd22818be4..23d698d8fd 100644
--- a/src/bin/pg_rewind/meson.build
+++ b/src/bin/pg_rewind/meson.build
@@ -27,6 +27,8 @@ pg_rewind = executable('pg_rewind',
)
bin_targets += pg_rewind
+meson.override_find_program('pg_rewind', pg_rewind)
+
tests += {
'name': 'pg_rewind',
diff --git a/src/bin/pg_test_fsync/meson.build b/src/bin/pg_test_fsync/meson.build
index aaf65c310e..3a03156508 100644
--- a/src/bin/pg_test_fsync/meson.build
+++ b/src/bin/pg_test_fsync/meson.build
@@ -17,6 +17,8 @@ pg_test_fsync = executable('pg_test_fsync',
)
bin_targets += pg_test_fsync
+meson.override_find_program('pg_test_fsync', pg_test_fsync)
+
tests += {
'name': 'pg_test_fsync',
'sd': meson.current_source_dir(),
diff --git a/src/bin/pg_test_timing/meson.build b/src/bin/pg_test_timing/meson.build
index 02f4a5c641..8a5aa29135 100644
--- a/src/bin/pg_test_timing/meson.build
+++ b/src/bin/pg_test_timing/meson.build
@@ -17,6 +17,8 @@ pg_test_timing = executable('pg_test_timing',
)
bin_targets += pg_test_timing
+meson.override_find_program('pg_test_timing', pg_test_timing)
+
tests += {
'name': 'pg_test_timing',
'sd': meson.current_source_dir(),
diff --git a/src/bin/pg_upgrade/meson.build b/src/bin/pg_upgrade/meson.build
index 12a97f84e2..3046b3f471 100644
--- a/src/bin/pg_upgrade/meson.build
+++ b/src/bin/pg_upgrade/meson.build
@@ -32,6 +32,8 @@ pg_upgrade = executable('pg_upgrade',
)
bin_targets += pg_upgrade
+meson.override_find_program('pg_upgrade', pg_upgrade)
+
tests += {
'name': 'pg_upgrade',
diff --git a/src/bin/pg_verifybackup/meson.build b/src/bin/pg_verifybackup/meson.build
index 9369da1bc6..5b670fd3e5 100644
--- a/src/bin/pg_verifybackup/meson.build
+++ b/src/bin/pg_verifybackup/meson.build
@@ -18,6 +18,8 @@ pg_verifybackup = executable('pg_verifybackup',
)
bin_targets += pg_verifybackup
+meson.override_find_program('pg_verifybackup', pg_verifybackup)
+
tests += {
'name': 'pg_verifybackup',
'sd': meson.current_source_dir(),
diff --git a/src/bin/pg_waldump/meson.build b/src/bin/pg_waldump/meson.build
index ae674d17c3..c03f212842 100644
--- a/src/bin/pg_waldump/meson.build
+++ b/src/bin/pg_waldump/meson.build
@@ -24,6 +24,8 @@ pg_waldump = executable('pg_waldump',
)
bin_targets += pg_waldump
+meson.override_find_program('pg_waldump', pg_waldump)
+
tests += {
'name': 'pg_waldump',
'sd': meson.current_source_dir(),
diff --git a/src/bin/pgbench/meson.build b/src/bin/pgbench/meson.build
index e3c7619cf4..b8b46ef721 100644
--- a/src/bin/pgbench/meson.build
+++ b/src/bin/pgbench/meson.build
@@ -35,6 +35,8 @@ pgbench = executable('pgbench',
)
bin_targets += pgbench
+meson.override_find_program('pgbench', pgbench)
+
tests += {
'name': 'pgbench',
'sd': meson.current_source_dir(),
diff --git a/src/bin/psql/meson.build b/src/bin/psql/meson.build
index a0a4ac7afb..cf20b3a7a4 100644
--- a/src/bin/psql/meson.build
+++ b/src/bin/psql/meson.build
@@ -53,6 +53,8 @@ psql = executable('psql',
)
bin_targets += psql
+meson.override_find_program('psql', psql)
+
install_data('psqlrc.sample',
install_dir: dir_data,
)
diff --git a/src/bin/scripts/meson.build b/src/bin/scripts/meson.build
index 5b4f8a6f85..fa16814710 100644
--- a/src/bin/scripts/meson.build
+++ b/src/bin/scripts/meson.build
@@ -26,13 +26,15 @@ foreach binary : binaries
'--FILEDESC', '@0@ - PostgreSQL utility'.format(binary),])
endif
- binary = executable(binary,
+ exe = executable(binary,
binary_sources,
link_with: [scripts_common],
dependencies: [frontend_code, libpq],
kwargs: default_bin_args,
)
- bin_targets += binary
+ bin_targets += exe
+
+ meson.override_find_program(binary, exe)
endforeach
tests += {
diff --git a/src/interfaces/ecpg/preproc/meson.build b/src/interfaces/ecpg/preproc/meson.build
index 08d772d261..f7c9f79c81 100644
--- a/src/interfaces/ecpg/preproc/meson.build
+++ b/src/interfaces/ecpg/preproc/meson.build
@@ -110,4 +110,6 @@ ecpg_exe = executable('ecpg',
)
ecpg_targets += ecpg_exe
+meson.override_find_program('ecpg', ecpg_exe)
+
subdir('po', if_found: libintl)
diff --git a/src/interfaces/libpq/meson.build b/src/interfaces/libpq/meson.build
index 80e6a15adf..6d18970e81 100644
--- a/src/interfaces/libpq/meson.build
+++ b/src/interfaces/libpq/meson.build
@@ -84,6 +84,8 @@ libpq = declare_dependency(
include_directories: [include_directories('.')]
)
+meson.override_dependency('libpq', libpq)
+
pkgconfig.generate(
name: 'libpq',
description: 'PostgreSQL libpq library',
--
Tristan Partin
Neon (https://neon.tech)