Thread

Commits

  1. meson: Add missing dependency to unicode test programs

  1. 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?
    
    
    
    
    
  2. 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
    
    
    
    
  3. 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!