Opened 3 months ago

Last modified 12 days ago

#69279 new defect

gpgme @1.23.2 does not build on PPC Tiger, Mac OS X 10.4.11, because of "Undefined symbols"

Reported by: ballapete (Peter "Pete" Dyballa) Owned by:
Priority: Normal Milestone:
Component: ports Version: 2.9.1
Keywords: ppc tiger Cc:
Port: gpgme

Description

libtool: compile:  /opt/local/bin/g++-mp-7 -std=c++11 -DHAVE_CONFIG_H -I. -I../../../conf -I../../../src -fvisibility=hidden -I/opt/local/include -I/opt/local/include -DBUILDING_GPGMEPP -Wsuggest-override -Wzero-as-null-pointer-constant -I/opt/local/include -pipe -Os -std=c++17 -D_GLIBCXX_USE_CXX11_ABI=0 -arch ppc -MT context_vanilla.lo -MD -MP -MF .deps/context_vanilla.Tpo -c context_vanilla.cpp -o context_vanilla.o >/dev/null 2>&1
mv -f .deps/context_vanilla.Tpo .deps/context_vanilla.Plo
/bin/sh ../../../libtool  --tag=CXX   --mode=link /opt/local/bin/g++-mp-7 -std=c++11  -pipe -Os -std=c++17 -D_GLIBCXX_USE_CXX11_ABI=0 -arch ppc -no-undefined -version-info 26:1:20 -L/opt/local/lib -Wl,-headerpad_max_install_names -arch ppc -o libgpgmepp.la -rpath /opt/local/lib exception.lo context.lo key.lo trustitem.lo data.lo callbacks.lo eventloopinteractor.lo editinteractor.lo keylistresult.lo keygenerationresult.lo importresult.lo decryptionresult.lo verificationresult.lo signingresult.lo encryptionresult.lo engineinfo.lo gpgsetexpirytimeeditinteractor.lo gpgsetownertrusteditinteractor.lo gpgsignkeyeditinteractor.lo gpgadduserideditinteractor.lo gpggencardkeyinteractor.lo gpgaddexistingsubkeyeditinteractor.lo gpgrevokekeyeditinteractor.lo defaultassuantransaction.lo scdgetinfoassuantransaction.lo gpgagentgetinfoassuantransaction.lo statusconsumerassuantransaction.lo vfsmountresult.lo configuration.lo tofuinfo.lo swdbresult.lo util.lo  context_vanilla.lo   ../../../src/libgpgme.la -L/opt/local/lib -lassuan 
libtool: link: /opt/local/bin/g++-mp-7 -dynamiclib -arch ppc  -o .libs/libgpgmepp.6.dylib  .libs/exception.o .libs/context.o .libs/key.o .libs/trustitem.o .libs/data.o .libs/callbacks.o .libs/eventloopinteractor.o .libs/editinteractor.o .libs/keylistresult.o .libs/keygenerationresult.o .libs/importresult.o .libs/decryptionresult.o .libs/verificationresult.o .libs/signingresult.o .libs/encryptionresult.o .libs/engineinfo.o .libs/gpgsetexpirytimeeditinteractor.o .libs/gpgsetownertrusteditinteractor.o .libs/gpgsignkeyeditinteractor.o .libs/gpgadduserideditinteractor.o .libs/gpggencardkeyinteractor.o .libs/gpgaddexistingsubkeyeditinteractor.o .libs/gpgrevokekeyeditinteractor.o .libs/defaultassuantransaction.o .libs/scdgetinfoassuantransaction.o .libs/gpgagentgetinfoassuantransaction.o .libs/statusconsumerassuantransaction.o .libs/vfsmountresult.o .libs/configuration.o .libs/tofuinfo.o .libs/swdbresult.o .libs/util.o .libs/context_vanilla.o   -L/opt/local/lib ../../../src/.libs/libgpgme.dylib /opt/local/lib/libgpg-error.dylib /opt/local/lib/libassuan.dylib  -Os -arch ppc -Wl,-headerpad_max_install_names -arch ppc   -install_name  /opt/local/lib/libgpgmepp.6.dylib -compatibility_version 27 -current_version 27.1 -Wl,-single_module
Undefined symbols:
  "strcasecmp(char const*, char const*)", referenced from:
      GpgME::Key::isRoot() const in key.o
      GpgME::Key::mergeWith(GpgME::Key const&) in key.o
ld: symbol(s) not found
collect2: error: ld returned 1 exit status
make[4]: *** [libgpgmepp.la] Error 1
make[4]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_devel_gpgme/gpgme/work/gpgme-1.23.2/lang/cpp/src'

In C I's say strcasecmp is in libc…

These seem to be the relevant statements:

/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_devel_gpgme/gpgme/work/gpgme-1.23.2/lang/cpp/src/key.cpp:201:           strcasecmp(key->subkeys->fpr, key->chain_id) == 0;
/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_devel_gpgme/gpgme/work/gpgme-1.23.2/lang/cpp/src/key.cpp:329:            strcasecmp(this->primaryFingerprint(), other.primaryFingerprint()) != 0) {

Attachments (1)

main.log (227.8 KB) - added by ballapete (Peter "Pete" Dyballa) 3 months ago.
Main.log from PPC Tiger, Mac OS X 10.4.11

Download all attachments as: .zip

Change History (9)

Changed 3 months ago by ballapete (Peter "Pete" Dyballa)

Attachment: main.log added

Main.log from PPC Tiger, Mac OS X 10.4.11

comment:1 in reply to:  description ; Changed 3 weeks ago by barracuda156

Replying to ballapete:

Yeah, it fails.

Did you try reporting this to upstream? https://www.gnupg.org/documentation/bts.html

comment:2 in reply to:  1 Changed 3 weeks ago by ballapete (Peter "Pete" Dyballa)

Replying to barracuda156:

Did you try reporting this to upstream? https://www.gnupg.org/documentation/bts.html

Yes: https://dev.gnupg.org/T7056. Werner Koch relegated to me a German developer who did not respond. Now easter is over and so are the school holidays. Time for repetition!

comment:3 Changed 3 weeks ago by barracuda156

Maybe this can be ported? https://github.com/muttmua/mutt/blob/1f3da81014914afad4b07086a7d56af9ee32f9aa/strcasecmp.c

Ideally, of course, this should go into legacysupport.

  1. S. Alternatively, C++ can be disabled, but that will leave some dependents in trouble. (Well, still better than a broken gpgme though.)
Last edited 3 weeks ago by barracuda156 (previous) (diff)

comment:4 Changed 3 weeks ago by ballapete (Peter "Pete" Dyballa)

According to https://developer.apple.com/documentation/kernel/1579333-strcasecmp strcasecmp() is in Tiger… And I also see it declared in string.h and strings.h – although put between include guards as neither for _ANSI_SOURCE nor _POSIX_C_SOURCE. A manual entry exists as well – but it seems missing from libc

comment:5 Changed 3 weeks ago by kencu (Ken)

it's also in /usr/lib/libSystem.dylib (check with nm).

So -- bit of a mystery to solve yet.

comment:6 in reply to:  5 Changed 3 weeks ago by ballapete (Peter "Pete" Dyballa)

Replying to kencu:

it's also in /usr/lib/libSystem.dylib (check with nm).

Yes, nm, this helps! Was using otool

So -- bit of a mystery to solve yet.

Why I am using the wrong tools? I'd presume age, too many other "projects"…

comment:7 Changed 3 weeks ago by barracuda156

In bbed2fcab35f2e526904ad4f8cda6f3cd69e572d/macports-ports (master):

gpgme: temporarily disable c++ part on Tiger to unbreak the port

See: #69279

comment:8 Changed 12 days ago by ballapete (Peter "Pete" Dyballa)

It built now: gpgme @1.23.2_0 (active) requested_variants='' platform='darwin 8' archs='ppc' date='2024-04-30T12:12:11+0200'.

The developers seem to be uninterested…

Note: See TracTickets for help on using tickets.