Thread
Commits
-
meson: Add missing dependency to unicode test programs
- 2845cd1ca0cd 18.0 landed
-
unicode test programs don't build with meson
Peter Eisentraut <peter@eisentraut.org> — 2024-10-18T10:11:00Z
The test programs in src/common/unicode/ (case_test, category_test, norm_test), don't build with meson if the nls option is enabled, because a libintl dependency is missing. (pg_strerror_r() in src/port/strerror.c makes a gettext call, so in that sense libpgport has a dependency on libintl.) The makefiles are ok, because they just link all programs against all libraries that configure finds, more or less, but meson needs explicit dependencies declared. I can see a few ways to fix that, so I'm looking for feedback on which way is best. 1) Add libintl directly to the affected programs, like case_test = executable('case_test', ['case_test.c'], - dependencies: [frontend_port_code, icu], + dependencies: [frontend_port_code, icu, libintl], include_directories: inc, link_with: [common_static, pgport_static], build_by_default: false, etc. 2) Add libintl as a dependency of frontend_port_code: --- a/meson.build +++ b/meson.build @@ -2986,7 +2986,7 @@ subdir('config') frontend_port_code = declare_dependency( compile_args: ['-DFRONTEND'], include_directories: [postgres_inc], - dependencies: os_deps, + dependencies: [os_deps, libintl], ) 3) Add libintl to os_deps directly? 4) Change the dependencies of the test programs to something like --- a/src/common/unicode/meson.build +++ b/src/common/unicode/meson.build @@ -75,7 +75,7 @@ inc = include_directories('.') norm_test = executable('norm_test', ['norm_test.c', norm_test_table], - dependencies: [frontend_port_code], + dependencies: [frontend_code], include_directories: inc, link_with: [common_static, pgport_static], build_by_default: false, Or something else, or some combination? -
Re: unicode test programs don't build with meson
Aleksander Alekseev <aleksander@timescale.com> — 2024-10-18T13:17:52Z
Hi Peter, > 1) Add libintl directly to the affected programs, like > > case_test = executable('case_test', > ['case_test.c'], > - dependencies: [frontend_port_code, icu], > + dependencies: [frontend_port_code, icu, libintl], > include_directories: inc, > link_with: [common_static, pgport_static], > build_by_default: false, To me the first option seems to be the most natural one (does the program depend on the library? add it to the list of dependencies for this program). Also it seems to be most consistent with what we currently have, see how icu is listed. -- Best regards, Aleksander Alekseev -
Re: unicode test programs don't build with meson
Peter Eisentraut <peter@eisentraut.org> — 2024-10-30T07:32:05Z
On 18.10.24 15:17, Aleksander Alekseev wrote: >> 1) Add libintl directly to the affected programs, like >> >> case_test = executable('case_test', >> ['case_test.c'], >> - dependencies: [frontend_port_code, icu], >> + dependencies: [frontend_port_code, icu, libintl], >> include_directories: inc, >> link_with: [common_static, pgport_static], >> build_by_default: false, > > To me the first option seems to be the most natural one (does the > program depend on the library? add it to the list of dependencies for > this program). Also it seems to be most consistent with what we > currently have, see how icu is listed. As there were no other opinions forthcoming, I have committed it like this. Thanks!