From e522049f23998e64fd0b88cd66de8e8f42100bf1 Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Thu, 23 Mar 2023 21:20:18 -0700 Subject: [PATCH] meson: add install-{quiet, world} targets To define our own install target, we need dependencies on the i18n targets, which we did not collect so far. Discussion: https://postgr.es/m/3fc3bb9b-f7f8-d442-35c1-ec82280c564a@enterprisedb.com --- meson.build | 76 +++++++++++++++++----- src/backend/po/meson.build | 2 +- src/bin/initdb/po/meson.build | 2 +- src/bin/pg_amcheck/po/meson.build | 2 +- src/bin/pg_archivecleanup/po/meson.build | 2 +- src/bin/pg_basebackup/po/meson.build | 2 +- src/bin/pg_checksums/po/meson.build | 2 +- src/bin/pg_config/po/meson.build | 2 +- src/bin/pg_controldata/po/meson.build | 2 +- src/bin/pg_ctl/po/meson.build | 2 +- src/bin/pg_dump/po/meson.build | 2 +- src/bin/pg_resetwal/po/meson.build | 2 +- src/bin/pg_rewind/po/meson.build | 2 +- src/bin/pg_test_fsync/po/meson.build | 2 +- src/bin/pg_test_timing/po/meson.build | 2 +- src/bin/pg_upgrade/po/meson.build | 2 +- src/bin/pg_verifybackup/po/meson.build | 2 +- src/bin/pg_waldump/po/meson.build | 2 +- src/bin/psql/po/meson.build | 2 +- src/bin/scripts/po/meson.build | 2 +- src/interfaces/ecpg/ecpglib/po/meson.build | 2 +- src/interfaces/ecpg/preproc/po/meson.build | 2 +- src/interfaces/libpq/po/meson.build | 2 +- src/interfaces/libpq/test/meson.build | 4 +- src/pl/plperl/po/meson.build | 2 +- src/pl/plpgsql/src/po/meson.build | 2 +- src/pl/plpython/po/meson.build | 2 +- src/pl/tcl/po/meson.build | 2 +- 28 files changed, 89 insertions(+), 43 deletions(-) diff --git a/meson.build b/meson.build index 33dd5b43ed..09f619b12f 100644 --- a/meson.build +++ b/meson.build @@ -2543,6 +2543,7 @@ bin_targets = [] pl_targets = [] contrib_targets = [] testprep_targets = [] +nls_targets = [] # Define the tests to distribute them to the correct test styles later @@ -2846,21 +2847,6 @@ generated_sources_ac += {'': ['GNUmakefile']} testprep_targets += test_install_libs -# command to install files used for tests, which aren't installed by default -install_test_files_args = [ - install_files, - '--prefix', dir_prefix, - '--install', contrib_data_dir, test_install_data, - '--install', dir_lib_pkg, test_install_libs, -] - -# Target installing files required for installcheck of various modules -run_target('install-test-files', - command: [python] + install_test_files_args, - depends: testprep_targets, -) - - # If there are any files in the source directory that we also generate in the # build directory, they might get preferred over the newly generated files, # e.g. because of a #include "file", which always will search in the current @@ -2915,6 +2901,64 @@ endif +############################################################### +# Install targets +############################################################### + + +# We want to define additional install targets beyond what meson provides. For +# that we need to define targets depending on nearly everything. We collected +# the results of i18n.gettext() invocations into nls_targets, that also +# includes maintainer targets though. Collect the ones we want as a dependency. +# +# i18n.gettext() doesn't return the dependencies before 0.60 - but the gettext +# generation happens during install, so that's not a real issue. +nls_mo_targets = [] +if libintl.found() and meson.version().version_compare('>=0.60') + # use range() to avoid the flattening of the list that forech() would do + foreach off : range(0, nls_targets.length()) + # i18n.gettext() list containing 1) list of built .mo files 2) maintainer + # -pot target 3) maintainer -pot target + nls_mo_targets += nls_targets[off][0] + endforeach + alias_target('nls', nls_mo_targets) +endif + + +all_built = [ + backend_targets, + bin_targets, + libpq_st, + pl_targets, + contrib_targets, + nls_mo_targets, + testprep_targets, + ecpg_targets, +] + +# Meson's default install target is quite verbose. Provide one that is quiet. +install_quiet = custom_target('install-quiet', + output: 'install-quiet', + build_always_stale: true, + build_by_default: false, + command: meson_args + ['install', '--quiet', '--no-rebuild'], + depends: all_built, +) + +# Target to install files used for tests, which aren't installed by default +install_test_files_args = [ + install_files, + '--prefix', dir_prefix, + '--install', contrib_data_dir, test_install_data, + '--install', dir_lib_pkg, test_install_libs, +] +run_target('install-test-files', + command: [python] + install_test_files_args, + depends: testprep_targets, +) + + + ############################################################### # Test prep ############################################################### @@ -3185,6 +3229,7 @@ if meson.version().version_compare('>=0.57') endif + ############################################################### # Pseudo targets ############################################################### @@ -3194,6 +3239,7 @@ alias_target('bin', bin_targets + [libpq_st]) alias_target('pl', pl_targets) alias_target('contrib', contrib_targets) alias_target('testprep', testprep_targets) +alias_target('install-world', install_quiet, installdocs) diff --git a/src/backend/po/meson.build b/src/backend/po/meson.build index 772399b0bd..b3cb083eb2 100644 --- a/src/backend/po/meson.build +++ b/src/backend/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('postgres-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('postgres-' + pg_version_major.to_string())] diff --git a/src/bin/initdb/po/meson.build b/src/bin/initdb/po/meson.build index 6506c5264e..ad19398417 100644 --- a/src/bin/initdb/po/meson.build +++ b/src/bin/initdb/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('initdb-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('initdb-' + pg_version_major.to_string())] diff --git a/src/bin/pg_amcheck/po/meson.build b/src/bin/pg_amcheck/po/meson.build index 9cb62eaaae..618de4f445 100644 --- a/src/bin/pg_amcheck/po/meson.build +++ b/src/bin/pg_amcheck/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('pg_amcheck-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('pg_amcheck-' + pg_version_major.to_string())] diff --git a/src/bin/pg_archivecleanup/po/meson.build b/src/bin/pg_archivecleanup/po/meson.build index 79957fa2b9..c6f33edcad 100644 --- a/src/bin/pg_archivecleanup/po/meson.build +++ b/src/bin/pg_archivecleanup/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('pg_archivecleanup-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('pg_archivecleanup-' + pg_version_major.to_string())] diff --git a/src/bin/pg_basebackup/po/meson.build b/src/bin/pg_basebackup/po/meson.build index 437f7e0606..2a39f5ffeb 100644 --- a/src/bin/pg_basebackup/po/meson.build +++ b/src/bin/pg_basebackup/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('pg_basebackup-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('pg_basebackup-' + pg_version_major.to_string())] diff --git a/src/bin/pg_checksums/po/meson.build b/src/bin/pg_checksums/po/meson.build index 273f55d901..97b20f263c 100644 --- a/src/bin/pg_checksums/po/meson.build +++ b/src/bin/pg_checksums/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('pg_checksums-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('pg_checksums-' + pg_version_major.to_string())] diff --git a/src/bin/pg_config/po/meson.build b/src/bin/pg_config/po/meson.build index 7e4629ffc4..f515af816e 100644 --- a/src/bin/pg_config/po/meson.build +++ b/src/bin/pg_config/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('pg_config-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('pg_config-' + pg_version_major.to_string())] diff --git a/src/bin/pg_controldata/po/meson.build b/src/bin/pg_controldata/po/meson.build index 73a77568b6..685f1c167a 100644 --- a/src/bin/pg_controldata/po/meson.build +++ b/src/bin/pg_controldata/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('pg_controldata-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('pg_controldata-' + pg_version_major.to_string())] diff --git a/src/bin/pg_ctl/po/meson.build b/src/bin/pg_ctl/po/meson.build index da7710090e..3d35f7ad21 100644 --- a/src/bin/pg_ctl/po/meson.build +++ b/src/bin/pg_ctl/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('pg_ctl-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('pg_ctl-' + pg_version_major.to_string())] diff --git a/src/bin/pg_dump/po/meson.build b/src/bin/pg_dump/po/meson.build index 3b627711d7..cc9d368011 100644 --- a/src/bin/pg_dump/po/meson.build +++ b/src/bin/pg_dump/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('pg_dump-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('pg_dump-' + pg_version_major.to_string())] diff --git a/src/bin/pg_resetwal/po/meson.build b/src/bin/pg_resetwal/po/meson.build index c82c6a4263..fa75d28752 100644 --- a/src/bin/pg_resetwal/po/meson.build +++ b/src/bin/pg_resetwal/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('pg_resetwal-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('pg_resetwal-' + pg_version_major.to_string())] diff --git a/src/bin/pg_rewind/po/meson.build b/src/bin/pg_rewind/po/meson.build index b0ccd16bbb..bffe7debea 100644 --- a/src/bin/pg_rewind/po/meson.build +++ b/src/bin/pg_rewind/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('pg_rewind-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('pg_rewind-' + pg_version_major.to_string())] diff --git a/src/bin/pg_test_fsync/po/meson.build b/src/bin/pg_test_fsync/po/meson.build index b25a6d0f82..46d0ac587e 100644 --- a/src/bin/pg_test_fsync/po/meson.build +++ b/src/bin/pg_test_fsync/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('pg_test_fsync-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('pg_test_fsync-' + pg_version_major.to_string())] diff --git a/src/bin/pg_test_timing/po/meson.build b/src/bin/pg_test_timing/po/meson.build index 918225a1cf..7bc84d5c7f 100644 --- a/src/bin/pg_test_timing/po/meson.build +++ b/src/bin/pg_test_timing/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('pg_test_timing-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('pg_test_timing-' + pg_version_major.to_string())] diff --git a/src/bin/pg_upgrade/po/meson.build b/src/bin/pg_upgrade/po/meson.build index b4ba67b1c5..8531c3b31e 100644 --- a/src/bin/pg_upgrade/po/meson.build +++ b/src/bin/pg_upgrade/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('pg_upgrade-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('pg_upgrade-' + pg_version_major.to_string())] diff --git a/src/bin/pg_verifybackup/po/meson.build b/src/bin/pg_verifybackup/po/meson.build index 092b8a95f3..181cf640e7 100644 --- a/src/bin/pg_verifybackup/po/meson.build +++ b/src/bin/pg_verifybackup/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('pg_verifybackup-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('pg_verifybackup-' + pg_version_major.to_string())] diff --git a/src/bin/pg_waldump/po/meson.build b/src/bin/pg_waldump/po/meson.build index 076dbcafb4..c4188032d7 100644 --- a/src/bin/pg_waldump/po/meson.build +++ b/src/bin/pg_waldump/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('pg_waldump-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('pg_waldump-' + pg_version_major.to_string())] diff --git a/src/bin/psql/po/meson.build b/src/bin/psql/po/meson.build index da257154d4..103ed93a78 100644 --- a/src/bin/psql/po/meson.build +++ b/src/bin/psql/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('psql-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('psql-' + pg_version_major.to_string())] diff --git a/src/bin/scripts/po/meson.build b/src/bin/scripts/po/meson.build index a28ec9ed04..00a9f208ac 100644 --- a/src/bin/scripts/po/meson.build +++ b/src/bin/scripts/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('pgscripts-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('pgscripts-' + pg_version_major.to_string())] diff --git a/src/interfaces/ecpg/ecpglib/po/meson.build b/src/interfaces/ecpg/ecpglib/po/meson.build index 95e748d9fa..39fcc93bfc 100644 --- a/src/interfaces/ecpg/ecpglib/po/meson.build +++ b/src/interfaces/ecpg/ecpglib/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('ecpglib' + '6' + '-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('ecpglib' + '6' + '-' + pg_version_major.to_string())] diff --git a/src/interfaces/ecpg/preproc/po/meson.build b/src/interfaces/ecpg/preproc/po/meson.build index 1b2ff11654..43f825b88b 100644 --- a/src/interfaces/ecpg/preproc/po/meson.build +++ b/src/interfaces/ecpg/preproc/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('ecpg-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('ecpg-' + pg_version_major.to_string())] diff --git a/src/interfaces/libpq/po/meson.build b/src/interfaces/libpq/po/meson.build index 5489b23b79..a7a1df87ae 100644 --- a/src/interfaces/libpq/po/meson.build +++ b/src/interfaces/libpq/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('libpq' + '5' + '-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('libpq' + '5' + '-' + pg_version_major.to_string())] diff --git a/src/interfaces/libpq/test/meson.build b/src/interfaces/libpq/test/meson.build index b2a4b06fd2..d56b63e118 100644 --- a/src/interfaces/libpq/test/meson.build +++ b/src/interfaces/libpq/test/meson.build @@ -10,7 +10,7 @@ if host_system == 'windows' '--FILEDESC', 'libpq test program',]) endif -executable('libpq_uri_regress', +testprep_targets += executable('libpq_uri_regress', libpq_uri_regress_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args + { @@ -29,7 +29,7 @@ if host_system == 'windows' '--FILEDESC', 'libpq test program',]) endif -executable('libpq_testclient', +testprep_targets += executable('libpq_testclient', libpq_testclient_sources, dependencies: [frontend_code, libpq], kwargs: default_bin_args + { diff --git a/src/pl/plperl/po/meson.build b/src/pl/plperl/po/meson.build index 2c3cd190cd..f1c8e7d00a 100644 --- a/src/pl/plperl/po/meson.build +++ b/src/pl/plperl/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('plperl-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('plperl-' + pg_version_major.to_string())] diff --git a/src/pl/plpgsql/src/po/meson.build b/src/pl/plpgsql/src/po/meson.build index 1fa97d6ab5..aad875948b 100644 --- a/src/pl/plpgsql/src/po/meson.build +++ b/src/pl/plpgsql/src/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('plpgsql-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('plpgsql-' + pg_version_major.to_string())] diff --git a/src/pl/plpython/po/meson.build b/src/pl/plpython/po/meson.build index e5457069b4..ddaa1913b8 100644 --- a/src/pl/plpython/po/meson.build +++ b/src/pl/plpython/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('plpython-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('plpython-' + pg_version_major.to_string())] diff --git a/src/pl/tcl/po/meson.build b/src/pl/tcl/po/meson.build index 3e7d3287f8..9e5c8e95f1 100644 --- a/src/pl/tcl/po/meson.build +++ b/src/pl/tcl/po/meson.build @@ -1,3 +1,3 @@ # Copyright (c) 2022-2023, PostgreSQL Global Development Group -i18n.gettext('pltcl-' + pg_version_major.to_string()) +nls_targets += [i18n.gettext('pltcl-' + pg_version_major.to_string())]