bug-gettext
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Gettext's libgettextpo fails linking due to a missing dependency on libt


From: L. E. Segovia
Subject: Gettext's libgettextpo fails linking due to a missing dependency on libtextstyle
Date: Mon, 22 Feb 2021 00:00:39 +0000
User-agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0

Hi all,

I'm writing to ask if you have experienced the following issue with gettext on macOS.

I've been working on updating the libraries that we ship with Krita (MR here: https://invent.kde.org/graphics/krita/-/merge_requests/718), and among them I tried to upgrade gettext to 0.21.

Apart from the linker warnings that have been reported previously here:

https://lists.gnu.org/archive/html/bug-gettext/2020-11/msg00025.html

Gettext cannot be compiled under our macOS toolchain (with our own built libiconv) because of an error when linking libgettextpo:

/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-recursive
Making all in gnulib-local
make[2]: Nothing to be done for `all'.
Making all in gettext-runtime
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-recursive
Making all in doc
make[4]: Nothing to be done for `all'.
Making all in intl
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-am
make[5]: Nothing to be done for `all-am'.
Making all in intl-java
make[4]: Nothing to be done for `all'.
Making all in intl-csharp
make[4]: Nothing to be done for `all'.
Making all in gnulib-lib
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-recursive
make[6]: Nothing to be done for `all-am'.
Making all in libasprintf
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-am
Making all in src
make[4]: Nothing to be done for `all'.
Making all in po
make[4]: Nothing to be done for `all'.
Making all in man
make[4]: Nothing to be done for `all'.
Making all in m4
make[4]: Nothing to be done for `all'.
Making all in tests
make[4]: Nothing to be done for `all'.
Making all in libtextstyle
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-recursive
Making all in lib
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-am
make[5]: Nothing to be done for `all-am'.
Making all in tests
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-recursive
Making all in .
make[6]: Nothing to be done for `all-am'.
Making all in adhoc-tests
make[4]: Nothing to be done for `all'.
Making all in doc
make[4]: Nothing to be done for `all'.
Making all in gettext-tools
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-recursive
Making all in intl
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-am
make[5]: Nothing to be done for `all-am'.
Making all in gnulib-lib
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-am
make[5]: Nothing to be done for `all-am'.
Making all in libgrep
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-am
make[5]: Nothing to be done for `all-am'.
Making all in src
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-am
make[5]: Nothing to be done for `all-am'.
Making all in libgettextpo
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-am
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -version-info 5:7:5 -rpath /Volumes/Kiki/krita-mac/i/lib -no-undefined -o libgettextpo.la -rpath /Volumes/Kiki/krita-mac/i/lib gettext-po.lo ../src/str-list.lo ../src/dir-list.lo ../src/message.lo ../src/msgl-ascii.lo ../src/po-error.lo ../src/po-xerror.lo ../src/write-catalog.lo ../src/write-po.lo ../src/open-catalog.lo ../src/po-charset.lo ../src/po-lex.lo ../src/po-gram-gen.lo ../src/read-po.lo ../src/read-catalog-abstract.lo ../src/read-catalog.lo ../src/plural-table.lo ../src/format-c.lo ../src/format-python.lo ../src/format-python-brace.lo ../src/format-java.lo ../src/format-java-printf.lo ../src/format-csharp.lo ../src/format-javascript.lo ../src/format-scheme.lo ../src/format-lisp.lo ../src/format-elisp.lo ../src/format-librep.lo ../src/format-ruby.lo ../src/format-sh.lo ../src/format-awk.lo ../src/format-lua.lo ../src/format-pascal.lo ../src/format-smalltalk.lo ../src/format-qt.lo ../src/format-qt-plural.lo ../src/format-kde.lo ../src/format-kde-kuit.lo ../src/format-boost.lo ../src/format-tcl.lo ../src/format-perl.lo ../src/format-perl-brace.lo ../src/format-php.lo ../src/format-gcc-internal.lo ../src/format-gfc-internal.lo ../src/format.lo ../src/plural-exp.lo ../src/plural-eval.lo ../src/msgl-check.lo ../src/sentence.lo libgnu.la ../intl/libintl.la -liconv -Wl,-framework -Wl,CoreFoundation -liconv -lc libtool: link: gcc -dynamiclib -o .libs/libgettextpo.0.dylib .libs/gettext-po.o ../src/.libs/str-list.o ../src/.libs/dir-list.o ../src/.libs/message.o ../src/.libs/msgl-ascii.o ../src/.libs/po-error.o ../src/.libs/po-xerror.o ../src/.libs/write-catalog.o ../src/.libs/write-po.o ../src/.libs/open-catalog.o ../src/.libs/po-charset.o ../src/.libs/po-lex.o ../src/.libs/po-gram-gen.o ../src/.libs/read-po.o ../src/.libs/read-catalog-abstract.o ../src/.libs/read-catalog.o ../src/.libs/plural-table.o ../src/.libs/format-c.o ../src/.libs/format-python.o ../src/.libs/format-python-brace.o ../src/.libs/format-java.o ../src/.libs/format-java-printf.o ../src/.libs/format-csharp.o ../src/.libs/format-javascript.o ../src/.libs/format-scheme.o ../src/.libs/format-lisp.o ../src/.libs/format-elisp.o ../src/.libs/format-librep.o ../src/.libs/format-ruby.o ../src/.libs/format-sh.o ../src/.libs/format-awk.o ../src/.libs/format-lua.o ../src/.libs/format-pascal.o ../src/.libs/format-smalltalk.o ../src/.libs/format-qt.o ../src/.libs/format-qt-plural.o ../src/.libs/format-kde.o ../src/.libs/format-kde-kuit.o ../src/.libs/format-boost.o ../src/.libs/format-tcl.o ../src/.libs/format-perl.o ../src/.libs/format-perl-brace.o ../src/.libs/format-php.o ../src/.libs/format-gcc-internal.o ../src/.libs/format-gfc-internal.o ../src/.libs/format.o ../src/.libs/plural-exp.o ../src/.libs/plural-eval.o ../src/.libs/msgl-check.o ../src/.libs/sentence.o -Wl,-force_load,./.libs/libgnu.a /Volumes/Kiki/krita-mac/depbuild/ext_gettext/ext_gettext-prefix/src/ext_gettext-build/gettext-tools/intl/.libs/libintl.dylib ../intl/.libs/libintl.dylib -liconv -lc -g -O2 -Wl,-framework -Wl,CoreFoundation -install_name /Volumes/Kiki/krita-mac/i/lib/libgettextpo.0.dylib -compatibility_version 6 -current_version 6.7 -Wl,-single_module
Undefined symbols for architecture x86_64:
  "_file_ostream_create", referenced from:
      _msgdomain_list_print in write-catalog.o
  "_ostream_free", referenced from:
      _msgdomain_list_print in write-catalog.o
  "_ostream_write_mem", referenced from:
      _message_print_comment in write-po.o
      _wrap in write-po.o
  "_ostream_write_str", referenced from:
      _message_print_comment in write-po.o
      _message_print_comment_dot in write-po.o
      _message_print_comment_filepos in write-po.o
      _message_print_comment_flags in write-po.o
      _msgdomain_list_print_po in write-po.o
      _wrap in write-po.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[5]: *** [libgettextpo.la] Error 1
make[4]: *** [all] Error 2
make[3]: *** [all-recursive] Error 1
make[2]: *** [all] Error 2
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

All of the symbols referenced above come from libtextstyle, which the library for some reason doesn't link against.

Since the detection logic in libtextstyle.m4 doesn't yield the bundled libtextstyle, the fix I came up with was hardcoding libtextstyle.la in the dependencies of libgettext.po as follows:

diff --git a/gettext-tools/libgettextpo/Makefile.am b/gettext-tools/libgettextpo/Makefile.am
index 59b016ee..fe3b27e7 100644
--- a/gettext-tools/libgettextpo/Makefile.am
+++ b/gettext-tools/libgettextpo/Makefile.am
@@ -107,7 +107,25 @@ LTV_AGE=5
 # How to build libgettextpo.la.
 # Don't make it depend on libgettextsrc.la or libgettextlib.la, since they
 # define an uncontrolled amount of symbols.
-libgettextpo_la_LIBADD = libgnu.la $(WOE32_LIBADD) $(LTLIBUNISTRING)
+# Amyspark: Need @LTLIBTEXTSTYLE@ because in macOS the linker will complain:
+# Undefined symbols for architecture x86_64:
+#  "_file_ostream_create", referenced from:
+#      _msgdomain_list_print in write-catalog.o
+#  "_ostream_free", referenced from:
+#      _msgdomain_list_print in write-catalog.o
+#  "_ostream_write_mem", referenced from:
+#      _message_print_comment in write-po.o
+#      _wrap in write-po.o
+#  "_ostream_write_str", referenced from:
+#      _message_print_comment in write-po.o
+#      _message_print_comment_dot in write-po.o
+#      _message_print_comment_filepos in write-po.o
+#      _message_print_comment_flags in write-po.o
+#      _msgdomain_list_print_po in write-po.o
+#      _wrap in write-po.o
+# ld: symbol(s) not found for architecture x86_64
+# clang: error: linker command failed with exit code 1 (use -v to see invocation) +libgettextpo_la_LIBADD = libgnu.la ../../libtextstyle/lib/libtextstyle.la $(WOE32_LIBADD) $(LTLIBUNISTRING)
 libgettextpo_la_LDFLAGS = \
   -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \
   -rpath $(libdir) \

What would be a more correct way of fixing this?

Thanks in advance!

--
amyspark 🌸 https://www.amyspark.me



reply via email to

[Prev in Thread] Current Thread [Next in Thread]