From 11b6db28fa7457c7cd0349ceea0afa3f9c489f2f Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Wed, 1 Nov 2023 05:54:44 -0400 Subject: [PATCH v3 3/4] abidiff option --- .cirrus.tasks.yml | 1 + meson.build | 4 +++- meson_options.txt | 3 +++ src/backend/meson.build | 10 ++++++++++ src/interfaces/ecpg/compatlib/meson.build | 8 ++++++++ src/interfaces/ecpg/ecpglib/meson.build | 8 ++++++++ src/interfaces/ecpg/pgtypeslib/meson.build | 8 ++++++++ src/interfaces/libpq/meson.build | 8 ++++++++ src/pl/plpgsql/src/meson.build | 8 ++++++++ 9 files changed, 57 insertions(+), 1 deletion(-) diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml index f13a0eeeb7b..4c35c192f40 100644 --- a/.cirrus.tasks.yml +++ b/.cirrus.tasks.yml @@ -364,6 +364,7 @@ task: su postgres <<-EOF meson setup \ --buildtype=debug \ + -Dabidiff=enabled \ -Dabidw=enabled \ -Dcassert=true \ ${LINUX_MESON_FEATURES} \ diff --git a/meson.build b/meson.build index 4a34a8a0434..6d38083bea7 100644 --- a/meson.build +++ b/meson.build @@ -2562,9 +2562,11 @@ endif ############################################################### -# abidw +# abidw/abidiff ############################################################### +abidiff = find_program('abidiff', required: get_option('abidiff')) + abidw = find_program('abidw', required: get_option('abidw'), disabler: true) abidw_flags = [ '--drop-undefined-syms', diff --git a/meson_options.txt b/meson_options.txt index 6367e077f3c..a19f74c50e8 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -73,6 +73,9 @@ option('rpath', type: 'boolean', value: true, # External dependencies +option('abidiff', type: 'feature', value: 'disabled', + description: 'Enable abidiff tests') + option('abidw', type: 'feature', value: 'disabled', description: 'Build ELF ABI serializations') diff --git a/src/backend/meson.build b/src/backend/meson.build index 2f8bb221e9b..eea738aa142 100644 --- a/src/backend/meson.build +++ b/src/backend/meson.build @@ -161,6 +161,16 @@ custom_target('postgres.abi.xml', command: abidw_cmd, build_by_default: true) +if get_option('abidiff').enabled() + test('postgres.abidiff', + abidiff, + args: ['--no-added-syms', + '--suppr', files('postgres.abidiff-suppr.ini'), + files('postgres.@0@-@1@.abi.xml'.format(host_cpu, host_system)), + postgres], + suite: 'abidiff') +endif + pg_mod_c_args = cflags_mod pg_mod_cpp_args = cxxflags_mod pg_mod_link_args = ldflags_sl + ldflags_mod diff --git a/src/interfaces/ecpg/compatlib/meson.build b/src/interfaces/ecpg/compatlib/meson.build index fc101080d35..eb5f2a292b0 100644 --- a/src/interfaces/ecpg/compatlib/meson.build +++ b/src/interfaces/ecpg/compatlib/meson.build @@ -47,6 +47,14 @@ custom_target('libecpg_compat.abi.xml', command: abidw_cmd, build_by_default: true) +if get_option('abidiff').enabled() + test('libecpg_compat.abidiff', + abidiff, + args: [files('libecpg_compat.@0@-@1@.abi.xml'.format(host_cpu, host_system)), + ecpg_compat_so], + suite: 'abidiff') +endif + pkgconfig.generate( name: 'libecpg_compat', description: 'PostgreSQL libecpg_compat library', diff --git a/src/interfaces/ecpg/ecpglib/meson.build b/src/interfaces/ecpg/ecpglib/meson.build index 29851a0e79f..894a9f3c421 100644 --- a/src/interfaces/ecpg/ecpglib/meson.build +++ b/src/interfaces/ecpg/ecpglib/meson.build @@ -58,6 +58,14 @@ custom_target('libecpg.abi.xml', command: abidw_cmd, build_by_default: true) +if get_option('abidiff').enabled() + test('libecpg.abidiff', + abidiff, + args: [files('libecpg.@0@-@1@.abi.xml'.format(host_cpu, host_system)), + ecpglib_so], + suite: 'abidiff') +endif + pkgconfig.generate( name: 'libecpg', description: 'PostgreSQL libecpg library', diff --git a/src/interfaces/ecpg/pgtypeslib/meson.build b/src/interfaces/ecpg/pgtypeslib/meson.build index 0158d51b6bb..967b55c7293 100644 --- a/src/interfaces/ecpg/pgtypeslib/meson.build +++ b/src/interfaces/ecpg/pgtypeslib/meson.build @@ -52,6 +52,14 @@ custom_target('libpgtypes.abi.xml', command: abidw_cmd, build_by_default: true) +if get_option('abidiff').enabled() + test('libpgtypes.abidiff', + abidiff, + args: [files('libpgtypes.@0@-@1@.abi.xml'.format(host_cpu, host_system)), + ecpg_pgtypes_so], + suite: 'abidiff') +endif + pkgconfig.generate( name: 'libpgtypes', description: 'PostgreSQL libpgtypes library', diff --git a/src/interfaces/libpq/meson.build b/src/interfaces/libpq/meson.build index 1336e0f2a47..42b258503a5 100644 --- a/src/interfaces/libpq/meson.build +++ b/src/interfaces/libpq/meson.build @@ -90,6 +90,14 @@ custom_target('libpq.abi.xml', command: abidw_cmd, build_by_default: true) +if get_option('abidiff').enabled() + test('libpq.abidiff', + abidiff, + args: [files('libpq.@0@-@1@.abi.xml'.format(host_cpu, host_system)), + libpq_so], + suite: 'abidiff') +endif + pkgconfig.generate( name: 'libpq', description: 'PostgreSQL libpq library', diff --git a/src/pl/plpgsql/src/meson.build b/src/pl/plpgsql/src/meson.build index 5fcbc946138..66345291506 100644 --- a/src/pl/plpgsql/src/meson.build +++ b/src/pl/plpgsql/src/meson.build @@ -63,6 +63,14 @@ custom_target('plpgsql.abi.xml', command: abidw_cmd, build_by_default: true) +if get_option('abidiff').enabled() + test('plpgsql.abidiff', + abidiff, + args: [files('plpgsql.@0@-@1@.abi.xml'.format(host_cpu, host_system)), + plpgsql], + suite: 'abidiff') +endif + install_data( 'plpgsql.control', 'plpgsql--1.0.sql', -- 2.42.0