From a1cd982098c8f6a714870ae512b4a9cdeacb9440 Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Fri, 9 Jun 2023 20:12:16 -0700 Subject: [PATCH] meson: Add dependencies to perl modules to various script invocations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Eventually it is likely worth trying to deal with this in a more expansive way, by generating dependency files generated within the scripts. But it's not entirely obvious how to do that in perl and is work more suitable for 17 anyway. Reported-by: Dagfinn Ilmari Mannsåker Reviewed-by: Tristan Partin Discussion: https://postgr.es/m/87v8g7s6bf.fsf@wibble.ilmari.org --- meson.build | 14 ++++++++++++++ src/common/meson.build | 4 ++-- src/common/unicode/meson.build | 3 +++ src/include/catalog/meson.build | 2 +- src/include/nodes/meson.build | 1 + src/include/utils/meson.build | 1 + src/interfaces/ecpg/preproc/meson.build | 19 ++++--------------- src/pl/plpgsql/src/meson.build | 7 ++++--- 8 files changed, 30 insertions(+), 21 deletions(-) diff --git a/meson.build b/meson.build index 16b2e86646..82f2782673 100644 --- a/meson.build +++ b/meson.build @@ -2681,6 +2681,20 @@ gen_export_kwargs = { +### +### Helpers for custom targets used across the tree +### + +catalog_pm = files('src/backend/catalog/Catalog.pm') +perfect_hash_pm = files('src/tools/PerfectHash.pm') +gen_kwlist_deps = [perfect_hash_pm] +gen_kwlist_cmd = [ + perl, '-I', '@SOURCE_ROOT@/src/tools', + files('src/tools/gen_keywordlist.pl'), + '--output', '@OUTDIR@', '@INPUT@'] + + + ### ### windows resources related stuff ### diff --git a/src/common/meson.build b/src/common/meson.build index 41bd58ebdf..9efc80ac02 100644 --- a/src/common/meson.build +++ b/src/common/meson.build @@ -54,8 +54,8 @@ endif common_kwlist = custom_target('kwlist', input: files('../include/parser/kwlist.h'), output: 'kwlist_d.h', - command: [perl, '-I', '@SOURCE_ROOT@/src/tools', files('../tools/gen_keywordlist.pl'), - '--extern', '--output', '@OUTDIR@', '@INPUT@']) + depend_files: gen_kwlist_deps, + command: [gen_kwlist_cmd, '--extern']) generated_sources += common_kwlist common_sources += common_kwlist diff --git a/src/common/unicode/meson.build b/src/common/unicode/meson.build index 1ffece1550..9033c4a3dc 100644 --- a/src/common/unicode/meson.build +++ b/src/common/unicode/meson.build @@ -28,6 +28,7 @@ update_unicode_targets += \ custom_target('unicode_norm_table.h', input: [unicode_data['UnicodeData.txt'], unicode_data['CompositionExclusions.txt']], output: ['unicode_norm_table.h', 'unicode_norm_hashfunc.h'], + depend_files: perfect_hash_pm, command: [ perl, files('generate-unicode_norm_table.pl'), '--outdir', '@OUTDIR@', '@INPUT@'], @@ -38,6 +39,7 @@ update_unicode_targets += \ custom_target('unicode_nonspacing_table.h', input: [unicode_data['UnicodeData.txt']], output: ['unicode_nonspacing_table.h'], + depend_files: perfect_hash_pm, command: [perl, files('generate-unicode_nonspacing_table.pl'), '@INPUT@'], build_by_default: false, capture: true, @@ -56,6 +58,7 @@ update_unicode_targets += \ custom_target('unicode_normprops_table.h', input: [unicode_data['DerivedNormalizationProps.txt']], output: ['unicode_normprops_table.h'], + depend_files: perfect_hash_pm, command: [perl, files('generate-unicode_normprops_table.pl'), '@INPUT@'], build_by_default: false, capture: true, diff --git a/src/include/catalog/meson.build b/src/include/catalog/meson.build index 3179be09d3..c3fd05d027 100644 --- a/src/include/catalog/meson.build +++ b/src/include/catalog/meson.build @@ -111,7 +111,7 @@ generated_catalog_headers = custom_target('generated_catalog_headers', output: output_files, install_dir: output_install, input: input, - depend_files: bki_data_f, + depend_files: bki_data_f + catalog_pm, build_by_default: true, install: true, command: [ diff --git a/src/include/nodes/meson.build b/src/include/nodes/meson.build index 9a8e85c4a5..626dc696d5 100644 --- a/src/include/nodes/meson.build +++ b/src/include/nodes/meson.build @@ -50,6 +50,7 @@ node_support_install = [ generated_nodes = custom_target('nodetags.h', input: node_support_input, output: node_support_output, + depend_files: catalog_pm, command: [ perl, files('../../backend/nodes/gen_node_support.pl'), '-o', '@OUTDIR@', diff --git a/src/include/utils/meson.build b/src/include/utils/meson.build index 2fed1e3f8e..c212c4091f 100644 --- a/src/include/utils/meson.build +++ b/src/include/utils/meson.build @@ -44,6 +44,7 @@ fmgrtab_output = ['fmgroids.h', 'fmgrprotos.h', 'fmgrtab.c'] fmgrtab_target = custom_target('fmgrtab', input: '../catalog/pg_proc.dat', output : fmgrtab_output, + depend_files: catalog_pm, command: [perl, '-I', '@SOURCE_ROOT@/src/backend/catalog/', files('../../backend/utils/Gen_fmgrtab.pl'), '--include-path=@SOURCE_ROOT@/src/include', '--output=@OUTDIR@', '@INPUT@'], install: true, install_dir: [dir_include_server / 'utils', dir_include_server / 'utils', false], diff --git a/src/interfaces/ecpg/preproc/meson.build b/src/interfaces/ecpg/preproc/meson.build index 08d772d261..eef8f1864f 100644 --- a/src/interfaces/ecpg/preproc/meson.build +++ b/src/interfaces/ecpg/preproc/meson.build @@ -69,14 +69,8 @@ c_kwlist = custom_target('c_kwlist_d.h', input: ['c_kwlist.h'], output: ['c_kwlist_d.h'], depends: check_rules, - command: [ - perl, - '-I', '@SOURCE_ROOT@/src/tools', - '@SOURCE_ROOT@/src/tools/gen_keywordlist.pl', - '--output', '@OUTDIR@', - '--varname', 'ScanCKeywords', - '--no-case-fold', '@INPUT0@', - ], + depend_files: gen_kwlist_deps, + command: [gen_kwlist_cmd, '--varname', 'ScanCKeywords', '--no-case-fold'], ) generated_sources += c_kwlist ecpg_sources += c_kwlist @@ -84,13 +78,8 @@ ecpg_sources += c_kwlist ecpg_kwlist = custom_target('ecpg_kwlist_d.h', input: ['ecpg_kwlist.h'], output: ['ecpg_kwlist_d.h'], - command: [ - perl, '-I', - '@SOURCE_ROOT@/src/tools', - '@SOURCE_ROOT@/src/tools/gen_keywordlist.pl', - '--output', '@OUTDIR@', - '--varname', 'ScanECPGKeywords', '@INPUT0@', - ] + depend_files: gen_kwlist_deps, + command: [gen_kwlist_cmd, '--varname', 'ScanECPGKeywords'], ) generated_sources += ecpg_kwlist ecpg_sources += ecpg_kwlist diff --git a/src/pl/plpgsql/src/meson.build b/src/pl/plpgsql/src/meson.build index e185a87024..85e7293b37 100644 --- a/src/pl/plpgsql/src/meson.build +++ b/src/pl/plpgsql/src/meson.build @@ -25,11 +25,11 @@ pl_errcodes = custom_target('plerrcodes', generated_sources += pl_errcodes plpgsql_sources += pl_errcodes -gen_keywordlist = files('../../../../src/tools/gen_keywordlist.pl') pl_reserved = custom_target('pl_reserved_kwlist', input: ['pl_reserved_kwlist.h'], output: ['pl_reserved_kwlist_d.h'], - command: [perl, '-I', '@SOURCE_ROOT@/src/tools', gen_keywordlist, '--output', '@OUTDIR@', '--varname', 'ReservedPLKeywords', '@INPUT@'] + depend_files: gen_kwlist_deps, + command: [gen_kwlist_cmd, '--varname', 'ReservedPLKeywords'], ) generated_sources += pl_reserved plpgsql_sources += pl_reserved @@ -37,7 +37,8 @@ plpgsql_sources += pl_reserved pl_unreserved = custom_target('pl_unreserved_kwlist', input: ['pl_unreserved_kwlist.h'], output: ['pl_unreserved_kwlist_d.h'], - command: [perl, '-I', '@SOURCE_ROOT@/src/tools', gen_keywordlist, '--output', '@OUTDIR@', '--varname', 'UnreservedPLKeywords', '@INPUT@'] + depend_files: gen_kwlist_deps, + command: [gen_kwlist_cmd, '--varname', 'UnreservedPLKeywords'], ) generated_sources += pl_unreserved plpgsql_sources += pl_unreserved