This is pretty simple and hopefully self-explanatory, but please do ask 
questions if needed.

Thanks,
--Zem


>From c4a5adf001d3124854572bab561fbe3a21a885d4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ziemowit=20=C5=81=C4=85ski?=
 <[email protected]>
Date: Tue, 6 Dec 2022 19:53:57 -0800
Subject: [PATCH] Fix issues with libintl and libgpgme

The `libintl` library was not getting pulled in if `ngettext()` was missing but 
option `i18n` was not specified.
The accepted `libgpgme` version was too old, leading to a missing 
`GPGME_KEYLIST_MODE_LOCATE` macro.

Signed-off-by: Ziemowit Łąski <[email protected]>
---
 meson.build | 36 +++++++++++++++++++++---------------
 1 file changed, 21 insertions(+), 15 deletions(-)

diff --git a/meson.build b/meson.build
index c8ee42fd..a6c92276 100644
--- a/meson.build
+++ b/meson.build
@@ -77,16 +77,21 @@ conf.set_quoted('CACHEDIR', join_paths(LOCALSTATEDIR, 
'cache/pacman/pkg/'))
 conf.set_quoted('HOOKDIR', join_paths(SYSCONFDIR, 'pacman.d/hooks/'))
 conf.set_quoted('ROOTDIR', ROOTDIR)
 
-libintl = dependency('', required: false)
-if get_option('i18n')
-  if not cc.has_function('ngettext')
-    libintl = cc.find_library('intl', required : false, static: 
get_option('buildstatic'))
-    if not libintl.found()
-      error('ngettext not found but NLS support requested')
-    endif
-  endif
-  conf.set('ENABLE_NLS', 1)
+# i18n / ngettext
+has_ngettext = cc.has_function('ngettext')
+libintl = dependency('libintl',
+                     required: false,
+                     static: get_option('buildstatic'))
+if not libintl.found()
+  libintl = cc.find_library('libintl',
+                            required: false,
+                            static: get_option('buildstatic'))
+endif                            
+conf.set('HAVE_LIBINTL', libintl.found())
+if not libintl.found() and (get_option('i18n') or not has_ngettext)
+  error('libintl not found even though ngettext() not found or NLS support 
requested')
 endif
+conf.set('ENABLE_NLS', 1)
 
 # dependencies
 libarchive = dependency('libarchive',
@@ -104,7 +109,7 @@ libcurl = dependency('libcurl',
                      static : get_option('buildstatic'))
 conf.set('HAVE_LIBCURL', libcurl.found())
 
-needed_gpgme_version = '>=1.3.0'
+needed_gpgme_version = '>=1.12.0'
 gpgme = dependency('gpgme',
                    version : needed_gpgme_version,
                    required : get_option('gpgme'),
@@ -290,7 +295,7 @@ subdir('src/util')
 subdir('scripts')
 
 # Internationalization
-if get_option('i18n')
+if conf.get('HAVE_LIBINTL')
   i18n = import('i18n')
   subdir('lib/libalpm/po')
   subdir('src/pacman/po')
@@ -350,7 +355,7 @@ pacman_bin = executable(
   pacman_sources,
   include_directories : includes,
   link_with : [libalpm, libcommon],
-  dependencies : [libarchive],
+  dependencies : [libarchive, libintl],
   install : true,
 )
 
@@ -359,7 +364,7 @@ executable(
   pacman_conf_sources,
   include_directories : includes,
   link_with : [libalpm, libcommon],
-  dependencies : [libarchive],
+  dependencies : [libarchive, libintl],
   install : true,
 )
 
@@ -368,7 +373,7 @@ executable(
   testpkg_sources,
   include_directories : includes,
   link_with : [libalpm],
-  dependencies : [libarchive],
+  dependencies : [libarchive, libintl],
   install : true,
 )
 
@@ -420,7 +425,7 @@ foreach path : [
        join_paths(DATAROOTDIR, 'makepkg-template/'),
        join_paths(DATAROOTDIR, 'libalpm/hooks/'),
        ]
-       meson.add_install_script('sh', '-c', 'mkdir -p 
"$DESTDIR/@0@"'.format(path))
+       meson.add_install_script('sh', '-c', 'mkdir -p 
"$DESTDIR@0@"'.format(path))
 endforeach
 
 TEST_ENV = environment()
@@ -464,6 +469,7 @@ message('\n    '.join([
   '  Build docs               : @0@'.format(build_doc),
   '  debug build              : @0@'.format(get_option('buildtype') == 
'debug'),
   '  Use libcurl              : @0@'.format(conf.get('HAVE_LIBCURL')),
+  '  Use libintl              : @0@'.format(conf.get('HAVE_LIBINTL')),
   '  Use GPGME                : @0@'.format(conf.get('HAVE_LIBGPGME')),
   '  Use OpenSSL              : @0@'.format(conf.has('HAVE_LIBSSL') and
                                             conf.get('HAVE_LIBSSL') == 1),
-- 
2.38.1.windows.1

Reply via email to