mirror of https://github.com/postgres/postgres
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
189 lines
5.0 KiB
189 lines
5.0 KiB
|
|
curldep = dependency('libcurl')
|
|
|
|
pg_version = meson.project_version().substring(0,2)
|
|
src_version = 'src' + pg_version
|
|
|
|
pg_tde_sources = files(
|
|
'src/pg_tde.c',
|
|
'src/transam/pg_tde_xact_handler.c',
|
|
'src/access/pg_tde_tdemap.c',
|
|
'src/access/pg_tde_slot.c',
|
|
src_version / 'access/pg_tdeam.c',
|
|
src_version / 'access/pg_tdeam_handler.c',
|
|
src_version / 'access/pg_tdeam_visibility.c',
|
|
src_version / 'access/pg_tdetoast.c',
|
|
src_version / 'access/pg_tde_io.c',
|
|
src_version / 'access/pg_tde_prune.c',
|
|
src_version / 'access/pg_tde_rewrite.c',
|
|
src_version / 'access/pg_tde_vacuumlazy.c',
|
|
src_version / 'access/pg_tde_visibilitymap.c',
|
|
'src/access/pg_tde_ddl.c',
|
|
'src/access/pg_tde_xlog.c',
|
|
'src/access/pg_tde_xlog_encrypt.c',
|
|
|
|
'src/encryption/enc_tde.c',
|
|
'src/encryption/enc_aes.c',
|
|
|
|
'src/keyring/keyring_curl.c',
|
|
'src/keyring/keyring_file.c',
|
|
'src/keyring/keyring_vault.c',
|
|
'src/keyring/keyring_kmip.c',
|
|
'src/keyring/keyring_kmip_ereport.c',
|
|
'src/keyring/keyring_api.c',
|
|
|
|
'src/smgr/pg_tde_smgr.c',
|
|
|
|
'src/catalog/tde_global_space.c',
|
|
'src/catalog/tde_keyring.c',
|
|
'src/catalog/tde_keyring_parse_opts.c',
|
|
'src/catalog/tde_principal_key.c',
|
|
'src/common/pg_tde_shmem.c',
|
|
'src/common/pg_tde_utils.c',
|
|
'src/pg_tde_defs.c',
|
|
'src/pg_tde.c',
|
|
'src/pg_tde_event_capture.c',
|
|
)
|
|
|
|
incdir = include_directories(src_version / 'include', 'src/include', '.', 'src/libkmip/libkmip/include/')
|
|
|
|
kmip = static_library(
|
|
'kmip',
|
|
files(
|
|
'src/libkmip/libkmip/src/kmip.c',
|
|
'src/libkmip/libkmip/src/kmip_bio.c',
|
|
'src/libkmip/libkmip/src/kmip_locate.c',
|
|
'src/libkmip/libkmip/src/kmip_memset.c'
|
|
),
|
|
c_args: [ '-w' ], # This is a 3rd party, disable warnings completely
|
|
include_directories: incdir
|
|
)
|
|
|
|
deps_update = {'dependencies': contrib_mod_args.get('dependencies') + [curldep]}
|
|
|
|
mod_args = contrib_mod_args + deps_update
|
|
|
|
pg_tde = shared_module('pg_tde',
|
|
pg_tde_sources,
|
|
c_pch: pch_postgres_h,
|
|
kwargs: mod_args,
|
|
include_directories: incdir,
|
|
link_whole: [kmip]
|
|
)
|
|
contrib_targets += pg_tde
|
|
|
|
ldflags = []
|
|
if host_system == 'darwin'
|
|
# On MacOS Shared Libraries and Loadable Modules are different things,
|
|
# so we need to pass an extra flag to the linker.
|
|
ldflags += '-bundle'
|
|
endif
|
|
|
|
install_data(
|
|
'pg_tde.control',
|
|
'pg_tde--1.0-beta2.sql',
|
|
kwargs: contrib_data_args,
|
|
)
|
|
|
|
|
|
sql_tests = [
|
|
'toast_decrypt_basic',
|
|
'toast_extended_storage_basic',
|
|
'move_large_tuples_basic',
|
|
'non_sorted_off_compact_basic',
|
|
'update_compare_indexes_basic',
|
|
'pg_tde_is_encrypted_basic',
|
|
'test_issue_153_fix_basic',
|
|
'multi_insert_basic',
|
|
'keyprovider_dependency_basic',
|
|
'trigger_on_view_basic',
|
|
'change_access_method_basic',
|
|
'insert_update_delete_basic',
|
|
'tablespace_basic',
|
|
'vault_v2_test_basic',
|
|
'kmip_test_basic',
|
|
'alter_index_basic',
|
|
'merge_join_basic',
|
|
'cache_alloc',
|
|
]
|
|
|
|
tap_tests = [
|
|
't/001_basic.pl',
|
|
't/002_rotate_key.pl',
|
|
't/003_remote_config.pl',
|
|
't/004_file_config.pl',
|
|
't/005_multiple_extensions.pl',
|
|
't/006_remote_vault_config.pl',
|
|
't/007_access_control.pl',
|
|
't/009_key_rotate_tablespace.pl',
|
|
]
|
|
|
|
if get_variable('percona_ext', false)
|
|
sql_tests += [
|
|
'toast_decrypt',
|
|
'toast_extended_storage',
|
|
'move_large_tuples',
|
|
'non_sorted_off_compact',
|
|
'update_compare_indexes',
|
|
'update',
|
|
'pg_tde_is_encrypted',
|
|
'test_issue_153_fix',
|
|
'multi_insert',
|
|
'keyprovider_dependency',
|
|
'trigger_on_view',
|
|
'change_access_method',
|
|
'insert_update_delete',
|
|
'tablespace',
|
|
'vault_v2_test',
|
|
'kmip_test',
|
|
'alter_index',
|
|
'merge_join',
|
|
]
|
|
|
|
tap_tests += [
|
|
't/008_tde_heap.pl',
|
|
]
|
|
endif
|
|
|
|
tests += {
|
|
'name': 'pg_tde',
|
|
'sd': meson.current_source_dir(),
|
|
'bd': meson.current_build_dir(),
|
|
'regress': {
|
|
'sql': sql_tests,
|
|
'regress_args': ['--temp-config', files('pg_tde.conf')],
|
|
'runningcheck': false,
|
|
},
|
|
'tap': {
|
|
'tests': tap_tests },
|
|
}
|
|
|
|
# TODO: do not duplicate
|
|
tde_decrypt_sources = files(
|
|
'src/access/pg_tde_tdemap.c',
|
|
'src/access/pg_tde_xlog_encrypt.c',
|
|
'src/catalog/tde_global_space.c',
|
|
'src/catalog/tde_keyring.c',
|
|
'src/catalog/tde_keyring_parse_opts.c',
|
|
'src/catalog/tde_principal_key.c',
|
|
'src/common/pg_tde_utils.c',
|
|
'src/encryption/enc_aes.c',
|
|
'src/encryption/enc_tde.c',
|
|
'src/keyring/keyring_api.c',
|
|
'src/keyring/keyring_curl.c',
|
|
'src/keyring/keyring_file.c',
|
|
'src/keyring/keyring_vault.c',
|
|
'src/keyring/keyring_kmip.c',
|
|
'src/keyring/keyring_kmip_ereport.c',
|
|
)
|
|
|
|
pg_tde_inc = incdir
|
|
|
|
pg_tde_frontend = static_library('pg_tde_frontend',
|
|
tde_decrypt_sources,
|
|
c_pch: pch_postgres_h,
|
|
c_args: ['-DFRONTEND'],
|
|
kwargs: mod_args,
|
|
include_directories: incdir,
|
|
link_whole: [kmip]
|
|
)
|
|
|