1
0
mirror of https://github.com/postgres/postgres.git synced 2025-08-31 17:02:12 +03:00

meson: Add initial version of meson based build system

Autoconf is showing its age, fewer and fewer contributors know how to wrangle
it. Recursive make has a lot of hard to resolve dependency issues and slow
incremental rebuilds. Our home-grown MSVC build system is hard to maintain for
developers not using Windows and runs tests serially. While these and other
issues could individually be addressed with incremental improvements, together
they seem best addressed by moving to a more modern build system.

After evaluating different build system choices, we chose to use meson, to a
good degree based on the adoption by other open source projects.

We decided that it's more realistic to commit a relatively early version of
the new build system and mature it in tree.

This commit adds an initial version of a meson based build system. It supports
building postgres on at least AIX, FreeBSD, Linux, macOS, NetBSD, OpenBSD,
Solaris and Windows (however only gcc is supported on aix, solaris). For
Windows/MSVC postgres can now be built with ninja (faster, particularly for
incremental builds) and msbuild (supporting the visual studio GUI, but
building slower).

Several aspects (e.g. Windows rc file generation, PGXS compatibility, LLVM
bitcode generation, documentation adjustments) are done in subsequent commits
requiring further review. Other aspects (e.g. not installing test-only
extensions) are not yet addressed.

When building on Windows with msbuild, builds are slower when using a visual
studio version older than 2019, because those versions do not support
MultiToolTask, required by meson for intra-target parallelism.

The plan is to remove the MSVC specific build system in src/tools/msvc soon
after reaching feature parity. However, we're not planning to remove the
autoconf/make build system in the near future. Likely we're going to keep at
least the parts required for PGXS to keep working around until all supported
versions build with meson.

Some initial help for postgres developers is at
https://wiki.postgresql.org/wiki/Meson

With contributions from Thomas Munro, John Naylor, Stone Tickle and others.

Author: Andres Freund <andres@anarazel.de>
Author: Nazir Bilal Yavuz <byavuz81@gmail.com>
Author: Peter Eisentraut <peter@eisentraut.org>
Reviewed-By: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Discussion: https://postgr.es/m/20211012083721.hvixq4pnh2pixr3j@alap3.anarazel.de
This commit is contained in:
Andres Freund
2022-09-21 21:53:12 -07:00
parent fbb5f54b67
commit e6927270cd
265 changed files with 10962 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
adminpack = shared_module('adminpack',
['adminpack.c'],
kwargs: contrib_mod_args,
)
contrib_targets += adminpack
install_data(
'adminpack.control',
'adminpack--1.0.sql',
'adminpack--1.0--1.1.sql',
'adminpack--1.1--2.0.sql',
'adminpack--2.0--2.1.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'adminpack',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': ['adminpack'],
},
}

View File

@@ -0,0 +1,37 @@
amcheck = shared_module('amcheck', [
'verify_heapam.c',
'verify_nbtree.c',
],
kwargs: contrib_mod_args,
)
contrib_targets += amcheck
install_data(
'amcheck.control',
'amcheck--1.0.sql',
'amcheck--1.0--1.1.sql',
'amcheck--1.1--1.2.sql',
'amcheck--1.2--1.3.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'amcheck',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'check',
'check_btree',
'check_heap',
],
},
'tap': {
'tests': [
't/001_verify_heapam.pl',
't/002_cic.pl',
't/003_cic_2pc.pl',
],
},
}

View File

@@ -0,0 +1,5 @@
autoinc = shared_module('auth_delay',
['auth_delay.c'],
kwargs: contrib_mod_args,
)
contrib_targets += autoinc

View File

@@ -0,0 +1,16 @@
auto_explain = shared_module('auto_explain',
files('auto_explain.c'),
kwargs: contrib_mod_args,
)
contrib_targets += auto_explain
tests += {
'name': 'auto_explain',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'tap': {
'tests': [
't/001_auto_explain.pl',
],
},
}

View File

@@ -0,0 +1,22 @@
basebackup_to_shell_sources = files(
'basebackup_to_shell.c',
)
basebackup_to_shell = shared_module('basebackup_to_shell',
basebackup_to_shell_sources,
kwargs: contrib_mod_args,
)
contrib_targets += basebackup_to_shell
tests += {
'name': 'basebackup_to_shell',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'tap': {
'tests': [
't/001_basic.pl',
],
'env': {'GZIP_PROGRAM': gzip.path(),
'TAR': tar.path()},
},
}

View File

@@ -0,0 +1,23 @@
basic_archive_sources = files(
'basic_archive.c',
)
basic_archive = shared_module('basic_archive',
basic_archive_sources,
kwargs: contrib_mod_args,
)
contrib_targets += basic_archive
tests += {
'name': 'basic_archive',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'basic_archive',
],
'regress_args': [
'--temp-config', files('basic_archive.conf'),
],
},
}

36
contrib/bloom/meson.build Normal file
View File

@@ -0,0 +1,36 @@
bloom_sources = files(
'blcost.c',
'blinsert.c',
'blscan.c',
'blutils.c',
'blvacuum.c',
'blvalidate.c',
)
bloom = shared_module('bloom',
bloom_sources,
kwargs: contrib_mod_args,
)
contrib_targets += bloom
install_data(
'bloom.control',
'bloom--1.0.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'bloom',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'bloom',
],
},
'tap': {
'tests': [
't/001_wal.pl',
],
},
}

View File

@@ -0,0 +1,42 @@
if not perl_dep.found()
subdir_done()
endif
bool_plperl_sources = files(
'bool_plperl.c',
)
bool_plperl = shared_module('bool_plperl',
bool_plperl_sources,
include_directories: [plperl_inc, include_directories('.')],
kwargs: contrib_mod_args + {
'dependencies': [perl_dep, contrib_mod_args['dependencies']],
'install_rpath': ':'.join(mod_install_rpaths + ['@0@/CORE'.format(archlibexp)]),
'build_rpath': '@0@/CORE'.format(archlibexp),
},
)
contrib_targets += bool_plperl
install_data(
'bool_plperl.control',
'bool_plperl--1.0.sql',
kwargs: contrib_data_args,
)
install_data(
'bool_plperlu.control',
'bool_plperlu--1.0.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'bool_plperl',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'bool_plperl',
'bool_plperlu',
],
},
}

View File

@@ -0,0 +1,54 @@
btree_gin = shared_module('btree_gin',
files('btree_gin.c'),
kwargs: contrib_mod_args,
)
contrib_targets += btree_gin
install_data(
'btree_gin.control',
'btree_gin--1.0.sql',
'btree_gin--1.0--1.1.sql',
'btree_gin--1.1--1.2.sql',
'btree_gin--1.2--1.3.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'btree_gin',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'install_btree_gin',
'int2',
'int4',
'int8',
'float4',
'float8',
'money',
'oid',
'timestamp',
'timestamptz',
'time',
'timetz',
'date',
'interval',
'macaddr',
'macaddr8',
'inet',
'cidr',
'text',
'varchar',
'char',
'bytea',
'bit',
'varbit',
'numeric',
'enum',
'uuid',
'name',
'bool',
'bpchar',
],
},
}

View File

@@ -0,0 +1,84 @@
btree_gist_sources = files(
'btree_bit.c',
'btree_bool.c',
'btree_bytea.c',
'btree_cash.c',
'btree_date.c',
'btree_enum.c',
'btree_float4.c',
'btree_float8.c',
'btree_gist.c',
'btree_inet.c',
'btree_int2.c',
'btree_int4.c',
'btree_int8.c',
'btree_interval.c',
'btree_macaddr.c',
'btree_macaddr8.c',
'btree_numeric.c',
'btree_oid.c',
'btree_text.c',
'btree_time.c',
'btree_ts.c',
'btree_utils_num.c',
'btree_utils_var.c',
'btree_uuid.c',
)
btree_gist = shared_module('btree_gist',
btree_gist_sources,
kwargs: contrib_mod_args,
)
contrib_targets += btree_gist
install_data(
'btree_gist.control',
'btree_gist--1.0--1.1.sql',
'btree_gist--1.1--1.2.sql',
'btree_gist--1.2.sql',
'btree_gist--1.2--1.3.sql',
'btree_gist--1.3--1.4.sql',
'btree_gist--1.4--1.5.sql',
'btree_gist--1.5--1.6.sql',
'btree_gist--1.6--1.7.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'btree_gist',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'init',
'int2',
'int4',
'int8',
'float4',
'float8',
'cash',
'oid',
'timestamp',
'timestamptz',
'time',
'timetz',
'date',
'interval',
'macaddr',
'macaddr8',
'inet',
'cidr',
'text',
'varchar',
'char',
'bytea',
'bit',
'varbit',
'numeric',
'uuid',
'not_equal',
'enum',
'bool',
],
},
}

View File

@@ -0,0 +1,34 @@
citext_sources = files(
'citext.c',
)
citext = shared_module('citext',
citext_sources,
kwargs: contrib_mod_args,
)
contrib_targets += citext
install_data(
'citext.control',
'citext--1.0--1.1.sql',
'citext--1.1--1.2.sql',
'citext--1.2--1.3.sql',
'citext--1.3--1.4.sql',
'citext--1.4.sql',
'citext--1.4--1.5.sql',
'citext--1.5--1.6.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'citext',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'create_index_acl',
'citext',
'citext_utf8',
],
},
}

53
contrib/cube/meson.build Normal file
View File

@@ -0,0 +1,53 @@
cube_sources = files(
'cube.c',
)
cube_scan = custom_target('cubescan',
input: 'cubescan.l',
output: 'cubescan.c',
command: flex_cmd,
)
generated_sources += cube_scan
cube_sources += cube_scan
cube_parse = custom_target('cubeparse',
input: 'cubeparse.y',
kwargs: bison_kw,
)
generated_sources += cube_parse.to_list()
cube_sources += cube_parse
cube = shared_module('cube',
cube_sources,
include_directories: include_directories('.'),
kwargs: contrib_mod_args,
)
contrib_targets += cube
install_data(
'cube.control',
'cube--1.0--1.1.sql',
'cube--1.1--1.2.sql',
'cube--1.2.sql',
'cube--1.2--1.3.sql',
'cube--1.3--1.4.sql',
'cube--1.4--1.5.sql',
kwargs: contrib_data_args,
)
install_headers(
'cubedata.h',
install_dir: dir_include_extension / 'cube',
)
tests += {
'name': 'cube',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'cube',
'cube_sci',
],
},
}

View File

@@ -0,0 +1,31 @@
dblink_sources = files(
'dblink.c',
)
dblink = shared_module('dblink',
dblink_sources,
kwargs: contrib_mod_args + {
'dependencies': contrib_mod_args['dependencies'] + [libpq],
},
)
contrib_targets += dblink
install_data(
'dblink.control',
'dblink--1.0--1.1.sql',
'dblink--1.1--1.2.sql',
'dblink--1.2.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'dblink',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'dblink',
],
'regress_args': ['--dlpath', meson.build_root() / 'src/test/regress'],
},
}

View File

@@ -0,0 +1,22 @@
dict_int = shared_module('dict_int',
files('dict_int.c'),
kwargs: contrib_mod_args,
)
contrib_targets += dict_int
install_data(
'dict_int.control',
'dict_int--1.0.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'dict_int',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'dict_int',
],
},
}

View File

@@ -0,0 +1,29 @@
dict_xsyn = shared_module('dict_xsyn',
files('dict_xsyn.c'),
kwargs: contrib_mod_args,
)
contrib_targets += dict_xsyn
install_data(
'dict_xsyn.control',
'dict_xsyn--1.0.sql',
kwargs: contrib_data_args,
)
install_data(
'xsyn_sample.rules',
kwargs: contrib_data_args + {
'install_dir': dir_data / 'tsearch_data'
}
)
tests += {
'name': 'dict_xsyn',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'dict_xsyn',
],
},
}

View File

@@ -0,0 +1,23 @@
earthdistance = shared_module('earthdistance',
files('earthdistance.c'),
kwargs: contrib_mod_args,
)
contrib_targets += earthdistance
install_data(
'earthdistance.control',
'earthdistance--1.0--1.1.sql',
'earthdistance--1.1.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'earthdistance',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'earthdistance',
],
},
}

View File

@@ -0,0 +1,22 @@
file_fdw = shared_module('file_fdw',
files('file_fdw.c'),
kwargs: contrib_mod_args,
)
contrib_targets += file_fdw
install_data(
'file_fdw.control',
'file_fdw--1.0.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'file_fdw',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'file_fdw',
],
},
}

View File

@@ -0,0 +1,26 @@
fuzzystrmatch = shared_module('fuzzystrmatch',
files(
'fuzzystrmatch.c',
'dmetaphone.c'
),
kwargs: contrib_mod_args,
)
contrib_targets += fuzzystrmatch
install_data(
'fuzzystrmatch.control',
'fuzzystrmatch--1.0--1.1.sql',
'fuzzystrmatch--1.1.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'fuzzystrmatch',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'fuzzystrmatch',
],
},
}

View File

@@ -0,0 +1,44 @@
# .. so that includes of hstore/hstore.h work
hstore_inc = include_directories('.', '../')
hstore = shared_module('hstore',
files(
'hstore_compat.c',
'hstore_gin.c',
'hstore_gist.c',
'hstore_io.c',
'hstore_op.c',
'hstore_subs.c',
),
kwargs: contrib_mod_args,
)
contrib_targets += hstore
install_data(
'hstore.control',
'hstore--1.1--1.2.sql',
'hstore--1.2--1.3.sql',
'hstore--1.3--1.4.sql',
'hstore--1.4.sql',
'hstore--1.4--1.5.sql',
'hstore--1.5--1.6.sql',
'hstore--1.6--1.7.sql',
'hstore--1.7--1.8.sql',
kwargs: contrib_data_args,
)
install_headers(
'hstore.h',
install_dir: dir_include_extension / 'hstore',
)
tests += {
'name': 'hstore',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'hstore',
],
},
}

View File

@@ -0,0 +1,43 @@
if not perl_dep.found()
subdir_done()
endif
hstore_plperl_sources = files(
'hstore_plperl.c',
)
hstore_plperl = shared_module('hstore_plperl',
hstore_plperl_sources,
include_directories: [plperl_inc, hstore_inc],
kwargs: contrib_mod_args + {
'dependencies': [perl_dep, contrib_mod_args['dependencies']],
'install_rpath': ':'.join(mod_install_rpaths + ['@0@/CORE'.format(archlibexp)]),
'build_rpath': '@0@/CORE'.format(archlibexp),
},
)
contrib_targets += hstore_plperl
install_data(
'hstore_plperl.control',
'hstore_plperl--1.0.sql',
kwargs: contrib_data_args,
)
install_data(
'hstore_plperlu.control',
'hstore_plperlu--1.0.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'hstore_plperl',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'hstore_plperl',
'hstore_plperlu',
'create_transform',
],
},
}

View File

@@ -0,0 +1,37 @@
if not python3_dep.found()
subdir_done()
endif
hstore_plpython_sources = files(
'hstore_plpython.c',
)
hstore_plpython = shared_module('hstore_plpython3',
hstore_plpython_sources,
include_directories: [plpython_inc, hstore_inc, ],
c_args: ['-DPLPYTHON_LIBNAME="plpython3"'],
kwargs: contrib_mod_args + {
'dependencies': [python3_dep, contrib_mod_args['dependencies']],
},
)
contrib_targets += hstore_plpython
install_data(
'hstore_plpython3u--1.0.sql',
'hstore_plpython3u.control',
kwargs: contrib_data_args,
)
hstore_plpython_regress = [
'hstore_plpython'
]
tests += {
'name': 'hstore_plpython',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': hstore_plpython_regress,
'regress_args': ['--load-extension=hstore'],
},
}

View File

@@ -0,0 +1,6 @@
install_data(
'intagg.control',
'intagg--1.0--1.1.sql',
'intagg--1.1.sql',
kwargs: contrib_data_args,
)

View File

@@ -0,0 +1,37 @@
intarray_sources = files(
'_int_bool.c',
'_int_gin.c',
'_int_gist.c',
'_int_op.c',
'_int_selfuncs.c',
'_int_tool.c',
'_intbig_gist.c',
)
intarray = shared_module('_int',
intarray_sources,
kwargs: contrib_mod_args,
)
contrib_targets += intarray
install_data(
'intarray.control',
'intarray--1.0--1.1.sql',
'intarray--1.1--1.2.sql',
'intarray--1.2.sql',
'intarray--1.2--1.3.sql',
'intarray--1.3--1.4.sql',
'intarray--1.4--1.5.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'intarray',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'_int',
],
},
}

33
contrib/isn/meson.build Normal file
View File

@@ -0,0 +1,33 @@
isn_sources = files(
'isn.c',
)
isn = shared_module('isn',
isn_sources,
kwargs: contrib_mod_args,
)
contrib_targets += isn
install_data(
'isn.control',
'isn--1.0--1.1.sql',
'isn--1.1--1.2.sql',
'isn--1.1.sql',
kwargs: contrib_data_args,
)
install_headers(
'isn.h',
install_dir: dir_include_extension / 'isn',
)
tests += {
'name': 'isn',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'isn',
],
},
}

View File

@@ -0,0 +1,43 @@
if not perl_dep.found()
subdir_done()
endif
jsonb_plperl_sources = files(
'jsonb_plperl.c',
)
jsonb_plperl = shared_module('jsonb_plperl',
jsonb_plperl_sources,
include_directories: [plperl_inc],
kwargs: contrib_mod_args + {
'dependencies': [perl_dep, contrib_mod_args['dependencies']],
'install_rpath': ':'.join(mod_install_rpaths + ['@0@/CORE'.format(archlibexp)]),
'build_rpath': '@0@/CORE'.format(archlibexp),
},
)
contrib_targets += jsonb_plperl
install_data(
'jsonb_plperl.control',
'jsonb_plperl--1.0.sql',
kwargs: contrib_data_args,
)
install_data(
'jsonb_plperlu.control',
'jsonb_plperlu--1.0.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'jsonb_plperl',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'jsonb_plperl',
'jsonb_plperlu',
],
},
}

View File

@@ -0,0 +1,36 @@
if not python3_dep.found()
subdir_done()
endif
jsonb_plpython_sources = files(
'jsonb_plpython.c',
)
jsonb_plpython = shared_module('jsonb_plpython3',
jsonb_plpython_sources,
include_directories: [plpython_inc],
c_args: ['-DPLPYTHON_LIBNAME="plpython3"'],
kwargs: contrib_mod_args + {
'dependencies': [python3_dep, contrib_mod_args['dependencies']],
},
)
contrib_targets += jsonb_plpython
install_data(
'jsonb_plpython3u.control',
'jsonb_plpython3u--1.0.sql',
kwargs: contrib_data_args,
)
jsonb_plpython_regress = [
'jsonb_plpython'
]
tests += {
'name': 'jsonb_plpython',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': jsonb_plpython_regress,
},
}

27
contrib/lo/meson.build Normal file
View File

@@ -0,0 +1,27 @@
lo_sources = files(
'lo.c',
)
lo = shared_module('lo',
lo_sources,
kwargs: contrib_mod_args,
)
contrib_targets += lo
install_data(
'lo.control',
'lo--1.0--1.1.sql',
'lo--1.1.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'lo',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'lo',
],
},
}

44
contrib/ltree/meson.build Normal file
View File

@@ -0,0 +1,44 @@
ltree_sources = files(
'_ltree_gist.c',
'_ltree_op.c',
'crc32.c',
'lquery_op.c',
'ltree_gist.c',
'ltree_io.c',
'ltree_op.c',
'ltxtquery_io.c',
'ltxtquery_op.c',
)
# .. so that includes of ltree/ltree.h work
ltree_inc = include_directories('.', '../')
ltree = shared_module('ltree',
ltree_sources,
kwargs: contrib_mod_args,
)
contrib_targets += ltree
install_data(
'ltree.control',
'ltree--1.0--1.1.sql',
'ltree--1.1--1.2.sql',
'ltree--1.1.sql',
kwargs: contrib_data_args,
)
install_headers(
'ltree.h',
install_dir: dir_include_extension / 'ltree',
)
tests += {
'name': 'ltree',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'ltree',
],
},
}

View File

@@ -0,0 +1,37 @@
if not python3_dep.found()
subdir_done()
endif
ltree_plpython_sources = files(
'ltree_plpython.c',
)
ltree_plpython = shared_module('ltree_plpython3',
ltree_plpython_sources,
include_directories: [plpython_inc, ltree_inc],
c_args: ['-DPLPYTHON_LIBNAME="plpython3"'],
kwargs: contrib_mod_args + {
'dependencies': [python3_dep, contrib_mod_args['dependencies']],
},
)
contrib_targets += ltree_plpython
install_data(
'ltree_plpython3u--1.0.sql',
'ltree_plpython3u.control',
kwargs: contrib_data_args,
)
ltree_plpython_regress = [
'ltree_plpython'
]
tests += {
'name': 'ltree_plpython',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': ltree_plpython_regress,
'regress_args': ['--load-extension=ltree'],
},
}

66
contrib/meson.build Normal file
View File

@@ -0,0 +1,66 @@
contrib_mod_args = pg_mod_args
contrib_data_dir = dir_data_extension
contrib_data_args = {
'install_dir': contrib_data_dir,
}
subdir('adminpack')
subdir('amcheck')
subdir('auth_delay')
subdir('auto_explain')
subdir('basic_archive')
subdir('bloom')
subdir('basebackup_to_shell')
subdir('bool_plperl')
subdir('btree_gin')
subdir('btree_gist')
subdir('citext')
subdir('cube')
subdir('dblink')
subdir('dict_int')
subdir('dict_xsyn')
subdir('earthdistance')
subdir('file_fdw')
subdir('fuzzystrmatch')
subdir('hstore')
subdir('hstore_plperl')
subdir('hstore_plpython')
subdir('intagg')
subdir('intarray')
subdir('isn')
subdir('jsonb_plperl')
subdir('jsonb_plpython')
subdir('lo')
subdir('ltree')
subdir('ltree_plpython')
subdir('oid2name')
subdir('old_snapshot')
subdir('pageinspect')
subdir('passwordcheck')
subdir('pg_buffercache')
subdir('pgcrypto')
subdir('pg_freespacemap')
subdir('pg_prewarm')
subdir('pgrowlocks')
subdir('pg_stat_statements')
subdir('pgstattuple')
subdir('pg_surgery')
subdir('pg_trgm')
subdir('pg_visibility')
subdir('pg_walinspect')
subdir('postgres_fdw')
subdir('seg')
subdir('sepgsql')
subdir('spi')
subdir('sslinfo')
# start-scripts doesn't contain build products
subdir('tablefunc')
subdir('tcn')
subdir('test_decoding')
subdir('tsm_system_rows')
subdir('tsm_system_time')
subdir('unaccent')
subdir('uuid-ossp')
subdir('vacuumlo')
subdir('xml2')

View File

@@ -0,0 +1,17 @@
oid2name = executable('oid2name',
['oid2name.c'],
dependencies: [frontend_code, libpq],
kwargs: default_bin_args,
)
contrib_targets += oid2name
tests += {
'name': 'oid2name',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'tap': {
'tests': [
't/001_basic.pl',
],
},
}

View File

@@ -0,0 +1,15 @@
old_snapshot_sources = files(
'time_mapping.c',
)
old_snapshot = shared_module('old_snapshot',
old_snapshot_sources,
kwargs: contrib_mod_args,
)
contrib_targets += old_snapshot
install_data(
'old_snapshot.control',
'old_snapshot--1.0.sql',
kwargs: contrib_data_args,
)

View File

@@ -0,0 +1,50 @@
pageinspect_sources = files(
'brinfuncs.c',
'btreefuncs.c',
'fsmfuncs.c',
'ginfuncs.c',
'gistfuncs.c',
'hashfuncs.c',
'heapfuncs.c',
'rawpage.c',
)
pageinspect = shared_module('pageinspect',
pageinspect_sources,
kwargs: contrib_mod_args,
)
contrib_targets += pageinspect
install_data(
'pageinspect--1.0--1.1.sql',
'pageinspect--1.1--1.2.sql',
'pageinspect--1.2--1.3.sql',
'pageinspect--1.3--1.4.sql',
'pageinspect--1.4--1.5.sql',
'pageinspect--1.5--1.6.sql',
'pageinspect--1.5.sql',
'pageinspect--1.6--1.7.sql',
'pageinspect--1.7--1.8.sql',
'pageinspect--1.8--1.9.sql',
'pageinspect--1.9--1.10.sql',
'pageinspect.control',
kwargs: contrib_data_args,
)
tests += {
'name': 'pageinspect',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'page',
'btree',
'brin',
'gin',
'gist',
'hash',
'checksum',
'oldextversions',
],
},
}

View File

@@ -0,0 +1,30 @@
passwordcheck_sources = files(
'passwordcheck.c',
)
passwordcheck_c_args = []
passwordcheck_deps = []
# uncomment the following two lines to enable cracklib support
# passwordcheck_c_args += ['-DUSE_CRACKLIB', '-DCRACKLIB_DICTPATH="/usr/lib/cracklib_dict"']
# passwordcheck_deps += [cc.find_library('crack')]
passwordcheck = shared_module('passwordcheck',
passwordcheck_sources,
c_args: passwordcheck_c_args,
kwargs: contrib_mod_args + {
'dependencies': contrib_mod_args.get('dependencies') + passwordcheck_deps,
}
)
contrib_targets += passwordcheck
tests += {
'name': 'passwordcheck',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'passwordcheck',
],
},
}

View File

@@ -0,0 +1,27 @@
pg_buffercache = shared_module('pg_buffercache',
files(
'pg_buffercache_pages.c',
),
kwargs: contrib_mod_args,
)
contrib_targets += pg_buffercache
install_data(
'pg_buffercache--1.0--1.1.sql',
'pg_buffercache--1.1--1.2.sql',
'pg_buffercache--1.2--1.3.sql',
'pg_buffercache--1.2.sql',
'pg_buffercache.control',
kwargs: contrib_data_args,
)
tests += {
'name': 'pg_buffercache',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'pg_buffercache',
],
},
}

View File

@@ -0,0 +1,29 @@
pg_freespacemap = shared_module('pg_freespacemap',
files(
'pg_freespacemap.c',
),
kwargs: contrib_mod_args,
)
contrib_targets += pg_freespacemap
install_data(
'pg_freespacemap--1.0--1.1.sql',
'pg_freespacemap--1.1--1.2.sql',
'pg_freespacemap--1.1.sql',
'pg_freespacemap.control',
kwargs: contrib_data_args,
)
tests += {
'name': 'pg_freespacemap',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'pg_freespacemap',
],
'regress_args': [
'--temp-config', files('pg_freespacemap.conf')
],
},
}

View File

@@ -0,0 +1,27 @@
pg_prewarm = shared_module('pg_prewarm',
files(
'autoprewarm.c',
'pg_prewarm.c',
),
kwargs: contrib_mod_args,
)
contrib_targets += pg_prewarm
install_data(
'pg_prewarm--1.0--1.1.sql',
'pg_prewarm--1.1--1.2.sql',
'pg_prewarm--1.1.sql',
'pg_prewarm.control',
kwargs: contrib_data_args,
)
tests += {
'name': 'pg_prewarm',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'tap': {
'tests': [
't/001_basic.pl',
],
},
}

View File

@@ -0,0 +1,35 @@
pg_stat_statements = shared_module('pg_stat_statements',
files('pg_stat_statements.c'),
kwargs: contrib_mod_args + {
'dependencies': contrib_mod_args['dependencies'],
},
)
contrib_targets += pg_stat_statements
install_data(
'pg_stat_statements.control',
'pg_stat_statements--1.4.sql',
'pg_stat_statements--1.9--1.10.sql',
'pg_stat_statements--1.8--1.9.sql',
'pg_stat_statements--1.7--1.8.sql',
'pg_stat_statements--1.6--1.7.sql',
'pg_stat_statements--1.5--1.6.sql',
'pg_stat_statements--1.4--1.5.sql',
'pg_stat_statements--1.3--1.4.sql',
'pg_stat_statements--1.2--1.3.sql',
'pg_stat_statements--1.1--1.2.sql',
'pg_stat_statements--1.0--1.1.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'pg_stat_statements',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'pg_stat_statements',
],
'regress_args': ['--temp-config', files('pg_stat_statements.conf')],
},
}

View File

@@ -0,0 +1,25 @@
pg_surgery = shared_module('pg_surgery',
files(
'heap_surgery.c',
),
kwargs: contrib_mod_args,
)
contrib_targets += pg_surgery
install_data(
'pg_surgery--1.0.sql',
'pg_surgery.control',
kwargs: contrib_data_args,
)
tests += {
'name': 'pg_surgery',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'heap_surgery',
],
},
}

View File

@@ -0,0 +1,35 @@
pg_trgm = shared_module('pg_trgm',
files(
'trgm_gin.c',
'trgm_gist.c',
'trgm_op.c',
'trgm_regexp.c',
),
kwargs: contrib_mod_args,
)
contrib_targets += pg_trgm
install_data(
'pg_trgm--1.0--1.1.sql',
'pg_trgm--1.1--1.2.sql',
'pg_trgm--1.2--1.3.sql',
'pg_trgm--1.3--1.4.sql',
'pg_trgm--1.3.sql',
'pg_trgm--1.4--1.5.sql',
'pg_trgm--1.5--1.6.sql',
'pg_trgm.control',
kwargs: contrib_data_args,
)
tests += {
'name': 'pg_trgm',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'pg_trgm',
'pg_word_trgm',
'pg_strict_word_trgm',
],
},
}

View File

@@ -0,0 +1,26 @@
pg_visibility = shared_module('pg_visibility',
files(
'pg_visibility.c',
),
kwargs: contrib_mod_args,
)
contrib_targets += pg_visibility
install_data(
'pg_visibility--1.0--1.1.sql',
'pg_visibility--1.1--1.2.sql',
'pg_visibility--1.1.sql',
'pg_visibility.control',
kwargs: contrib_data_args,
)
tests += {
'name': 'pg_visibility',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'pg_visibility',
],
},
}

View File

@@ -0,0 +1,27 @@
pg_walinspect_sources = files('pg_walinspect.c')
pg_walinspect = shared_module('pg_walinspect',
pg_walinspect_sources,
kwargs: contrib_mod_args + {
'dependencies': contrib_mod_args['dependencies'],
},
)
contrib_targets += pg_walinspect
install_data(
'pg_walinspect.control',
'pg_walinspect--1.0.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'pg_walinspect',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'pg_walinspect',
],
'regress_args': ['--temp-config', files('walinspect.conf')],
},
}

View File

@@ -0,0 +1,100 @@
if not ssl.found()
subdir_done()
endif
pgcrypto_sources = files(
'crypt-blowfish.c',
'crypt-des.c',
'crypt-gensalt.c',
'crypt-md5.c',
'mbuf.c',
'pgcrypto.c',
'pgp-armor.c',
'pgp-cfb.c',
'pgp-compress.c',
'pgp-decrypt.c',
'pgp-encrypt.c',
'pgp-info.c',
'pgp-mpi.c',
'pgp-pgsql.c',
'pgp-pubdec.c',
'pgp-pubenc.c',
'pgp-pubkey.c',
'pgp-s2k.c',
'pgp.c',
'px-crypt.c',
'px-hmac.c',
'px.c',
)
pgcrypto_regress = [
'init',
'md5',
'sha1',
'hmac-md5',
'hmac-sha1',
'blowfish',
'rijndael',
'sha2',
'des',
'3des',
'cast5',
'crypt-des',
'crypt-md5',
'crypt-blowfish',
'crypt-xdes',
'pgp-armor',
'pgp-decrypt',
'pgp-encrypt',
'pgp-pubkey-decrypt',
'pgp-pubkey-encrypt',
'pgp-info',
]
pgcrypto_openssl_sources = files(
'openssl.c',
'pgp-mpi-openssl.c',
)
pgcrypto_deps = []
pgcrypto_link_with = []
pgcrypto_deps += ssl
pgcrypto_sources += pgcrypto_openssl_sources
if zlib.found()
pgcrypto_deps += zlib
pgcrypto_regress += 'pgp-compression'
else
pgcrypto_regress += 'pgp-zlib-DISABLED'
endif
pgcrypto = shared_module('pgcrypto',
pgcrypto_sources,
link_with: pgcrypto_link_with,
kwargs: contrib_mod_args + {
'dependencies': [pgcrypto_deps, contrib_mod_args['dependencies']]
},
)
contrib_targets += pgcrypto
install_data(
'pgcrypto--1.0--1.1.sql',
'pgcrypto--1.1--1.2.sql',
'pgcrypto--1.2--1.3.sql',
'pgcrypto--1.3.sql',
'pgcrypto.control',
kwargs: contrib_data_args,
)
tests += {
'name': 'pgcrypto',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
pgcrypto_regress,
],
},
}

View File

@@ -0,0 +1,27 @@
pgrowlocks = shared_module('pgrowlocks',
files(
'pgrowlocks.c',
),
kwargs: contrib_mod_args,
)
contrib_targets += pgrowlocks
install_data(
'pgrowlocks--1.0--1.1.sql',
'pgrowlocks--1.1--1.2.sql',
'pgrowlocks--1.2.sql',
'pgrowlocks.control',
kwargs: contrib_data_args,
)
tests += {
'name': 'pgrowlocks',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'isolation': {
'specs': [
'pgrowlocks',
],
'regress_args': ['--load-extension=pgrowlocks'],
},
}

View File

@@ -0,0 +1,31 @@
pgstattuple = shared_module('pgstattuple',
files(
'pgstatapprox.c',
'pgstatindex.c',
'pgstattuple.c',
),
kwargs: contrib_mod_args,
)
contrib_targets += pgstattuple
install_data(
'pgstattuple--1.0--1.1.sql',
'pgstattuple--1.1--1.2.sql',
'pgstattuple--1.2--1.3.sql',
'pgstattuple--1.3--1.4.sql',
'pgstattuple--1.4--1.5.sql',
'pgstattuple--1.4.sql',
'pgstattuple.control',
kwargs: contrib_data_args,
)
tests += {
'name': 'pgstattuple',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'pgstattuple',
],
},
}

View File

@@ -0,0 +1,34 @@
postgres_fdw_sources = files(
'connection.c',
'deparse.c',
'option.c',
'postgres_fdw.c',
'shippable.c',
)
postgres_fdw = shared_module('postgres_fdw',
postgres_fdw_sources,
kwargs: contrib_mod_args + {
'dependencies': contrib_mod_args['dependencies'] + [libpq],
},
)
contrib_targets += postgres_fdw
install_data(
'postgres_fdw.control',
'postgres_fdw--1.0.sql',
'postgres_fdw--1.0--1.1.sql',
kwargs: contrib_data_args,
)
tests += {
'name': 'postgres_fdw',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'postgres_fdw',
],
'regress_args': ['--dlpath', meson.build_root() / 'src/test/regress'],
},
}

51
contrib/seg/meson.build Normal file
View File

@@ -0,0 +1,51 @@
seg_sources = files(
'seg.c',
)
seg_scan = custom_target('segscan',
input: 'segscan.l',
output: 'segscan.c',
command: flex_cmd,
)
generated_sources += seg_scan
seg_sources += seg_scan
seg_parse = custom_target('segparse',
input: 'segparse.y',
kwargs: bison_kw,
)
generated_sources += seg_parse.to_list()
seg_sources += seg_parse
seg = shared_module('seg',
seg_sources,
include_directories: include_directories('.'),
kwargs: contrib_mod_args,
)
contrib_targets += seg
install_data(
'seg.control',
'seg--1.0--1.1.sql',
'seg--1.1--1.2.sql',
'seg--1.1.sql',
'seg--1.2--1.3.sql',
'seg--1.3--1.4.sql',
kwargs: contrib_data_args,
)
install_headers(
'segdata.h',
install_dir: dir_include_extension / 'seg',
)
tests += {
'name': 'seg',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'seg',
],
},
}

View File

@@ -0,0 +1,34 @@
if not selinux.found()
subdir_done()
endif
sepgsql_sources = files(
'database.c',
'dml.c',
'hooks.c',
'label.c',
'proc.c',
'relation.c',
'schema.c',
'selinux.c',
'uavc.c',
)
sepgsql = shared_module('sepgsql',
sepgsql_sources,
kwargs: contrib_mod_args + {
'dependencies': [selinux, contrib_mod_args['dependencies']],
}
)
contrib_targets += sepgsql
custom_target('sepgsql.sql',
input: 'sepgsql.sql.in',
output: 'sepgsql.sql',
command: [sed, '-e', 's,MODULE_PATHNAME,$libdir/sepgsql,g', '@INPUT@'],
capture: true,
install: true,
install_dir: contrib_data_args['install_dir'],
)
# TODO: implement sepgsql tests

50
contrib/spi/meson.build Normal file
View File

@@ -0,0 +1,50 @@
autoinc = shared_module('autoinc',
['autoinc.c'],
kwargs: contrib_mod_args,
)
contrib_targets += autoinc
install_data('autoinc.control', 'autoinc--1.0.sql',
kwargs: contrib_data_args,
)
insert_username = shared_module('insert_username',
['insert_username.c'],
kwargs: contrib_mod_args,
)
contrib_targets += insert_username
install_data(
'insert_username.control',
'insert_username--1.0.sql',
kwargs: contrib_data_args,
)
moddatetime = shared_module('moddatetime',
['moddatetime.c'],
kwargs: contrib_mod_args,
)
contrib_targets += moddatetime
install_data(
'moddatetime.control',
'moddatetime--1.0.sql',
kwargs: contrib_data_args,
)
# this is needed for the regression tests;
# comment out if you want a quieter refint package for other uses
refint_cflags = ['-DREFINT_VERBOSE']
refint = shared_module('refint',
['refint.c'],
c_args: refint_cflags,
kwargs: contrib_mod_args,
)
contrib_targets += refint
install_data('refint.control', 'refint--1.0.sql',
kwargs: contrib_data_args,
)

View File

@@ -0,0 +1,21 @@
if not ssl.found()
subdir_done()
endif
sslinfo = shared_module('sslinfo',
files(
'sslinfo.c',
),
kwargs: contrib_mod_args + {
'dependencies': [ssl, contrib_mod_args['dependencies']],
}
)
contrib_targets += sslinfo
install_data(
'sslinfo--1.0--1.1.sql',
'sslinfo--1.1--1.2.sql',
'sslinfo--1.2.sql',
'sslinfo.control',
kwargs: contrib_data_args,
)

View File

@@ -0,0 +1,24 @@
tablefunc = shared_module('tablefunc',
files(
'tablefunc.c',
),
kwargs: contrib_mod_args,
)
contrib_targets += tablefunc
install_data(
'tablefunc--1.0.sql',
'tablefunc.control',
kwargs: contrib_data_args,
)
tests += {
'name': 'tablefunc',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'tablefunc',
],
},
}

25
contrib/tcn/meson.build Normal file
View File

@@ -0,0 +1,25 @@
tcn = shared_module('tcn',
files(
'tcn.c',
),
kwargs: contrib_mod_args,
)
contrib_targets += tcn
install_data(
'tcn--1.0.sql',
'tcn.control',
kwargs: contrib_data_args,
)
tests += {
'name': 'tcn',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'isolation': {
'specs': [
'tcn',
],
'regress_args': ['--load-extension=tcn'],
},
}

View File

@@ -0,0 +1,63 @@
test_decoding_sources = files(
'test_decoding.c',
)
test_decoding = shared_module('test_decoding',
test_decoding_sources,
kwargs: contrib_mod_args,
)
contrib_targets += test_decoding
tests += {
'name': 'test_decoding',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'ddl',
'xact',
'rewrite',
'toast',
'permissions',
'decoding_in_xact',
'decoding_into_rel',
'binary',
'prepared',
'replorigin',
'time',
'messages',
'spill',
'slot',
'truncate',
'stream',
'stats',
'twophase',
'twophase_stream',
],
'regress_args': [
'--temp-config', files('logical.conf'),
],
},
'isolation': {
'specs': [
'mxact',
'delayed_startup',
'ondisk_startup',
'concurrent_ddl_dml',
'oldest_xmin',
'snapshot_transfer',
'subxact_without_top',
'concurrent_stream',
'twophase_snapshot',
'slot_creation_error',
],
'regress_args': [
'--temp-config', files('logical.conf'),
],
},
'tap': {
'tests': [
't/001_repl_stats.pl',
],
},
}

View File

@@ -0,0 +1,24 @@
tsm_system_rows = shared_module('tsm_system_rows',
files(
'tsm_system_rows.c',
),
kwargs: contrib_mod_args,
)
contrib_targets += tsm_system_rows
install_data(
'tsm_system_rows--1.0.sql',
'tsm_system_rows.control',
kwargs: contrib_data_args,
)
tests += {
'name': 'tsm_system_rows',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'tsm_system_rows',
],
},
}

View File

@@ -0,0 +1,24 @@
tsm_system_time = shared_module('tsm_system_time',
files(
'tsm_system_time.c',
),
kwargs: contrib_mod_args,
)
contrib_targets += tsm_system_time
install_data(
'tsm_system_time--1.0.sql',
'tsm_system_time.control',
kwargs: contrib_data_args,
)
tests += {
'name': 'tsm_system_time',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'tsm_system_time',
],
},
}

View File

@@ -0,0 +1,32 @@
unaccent = shared_module('unaccent',
files(
'unaccent.c',
),
kwargs: contrib_mod_args,
)
contrib_targets += unaccent
install_data(
'unaccent--1.0--1.1.sql',
'unaccent--1.1.sql',
'unaccent.control',
kwargs: contrib_data_args,
)
install_data(
'unaccent.rules',
install_dir: dir_data / 'tsearch_data'
)
# XXX: Implement downlo
tests += {
'name': 'unaccent',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'unaccent',
],
'regress_args': ['--encoding=UTF8'],
},
}

View File

@@ -0,0 +1,31 @@
if not uuid.found()
subdir_done()
endif
uuid_ossp = shared_module('uuid-ossp',
files(
'uuid-ossp.c',
),
kwargs: contrib_mod_args + {
'dependencies': [uuid, contrib_mod_args['dependencies']],
},
)
contrib_targets += uuid_ossp
install_data(
'uuid-ossp--1.0--1.1.sql',
'uuid-ossp--1.1.sql',
'uuid-ossp.control',
kwargs: contrib_data_args,
)
tests += {
'name': 'uuid-ossp',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'uuid_ossp',
],
},
}

View File

@@ -0,0 +1,17 @@
vacuumlo = executable('vacuumlo',
['vacuumlo.c'],
dependencies: [frontend_code, libpq],
kwargs: default_bin_args,
)
contrib_targets += vacuumlo
tests += {
'name': 'vacuumlo',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'tap': {
'tests': [
't/001_basic.pl',
],
},
}

32
contrib/xml2/meson.build Normal file
View File

@@ -0,0 +1,32 @@
if not libxml.found()
subdir_done()
endif
xml2 = shared_module('pgxml',
files(
'xpath.c',
'xslt_proc.c',
),
kwargs: contrib_mod_args + {
'dependencies': [libxml, libxslt, contrib_mod_args['dependencies']],
},
)
contrib_targets += xml2
install_data(
'xml2--1.0--1.1.sql',
'xml2--1.1.sql',
'xml2.control',
kwargs: contrib_data_args,
)
tests += {
'name': 'xml2',
'sd': meson.current_source_dir(),
'bd': meson.current_build_dir(),
'regress': {
'sql': [
'xml2',
],
},
}