Opened 2 years ago

Closed 12 months ago

Last modified 4 months ago

#52468 closed defect (fixed)

gtk3 3.22.0_0 build fails on 10.5 ppc

Reported by: dgonyier (Dwaine Gonyier) Owned by: dbevans (David B. Evans)
Priority: Normal Milestone:
Component: ports Version: 2.3.4
Keywords: leopard powerpc Cc: jeremyhu (Jeremy Huddleston Sequoia), ballapete (Peter Dyballa), ken-cunningham-webuse, udbraumann, mojca (Mojca Miklavec), khepler, dgonyier (Dwaine Gonyier), MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Port: gtk3

Description

$ arch
ppc
$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.5.8
BuildVersion:   9L31a

Build log attached.

Attachments (5)

main.log (489.0 KB) - added by dgonyier (Dwaine Gonyier) 2 years ago.
main.log
main.2.log (298.2 KB) - added by ballapete (Peter Dyballa) 2 years ago.
Contains the other error
main.3.log (297.3 KB) - added by ballapete (Peter Dyballa) 2 years ago.
main.log of gtk3 @3.22.1_0
main.4.log (163.7 KB) - added by ballapete (Peter Dyballa) 2 years ago.
main.log from gtk3 3.22.5, trying to build +quartz
patch-gdkevents-quartz_NSTypes-10_5_compat.diff (782 bytes) - added by ballapete (Peter Dyballa) 2 years ago.
Fixes in Leopard unknown NS Event Types

Download all attachments as: .zip

Change History (71)

Changed 2 years ago by dgonyier (Dwaine Gonyier)

Attachment: main.log added

main.log

comment:1 Changed 2 years ago by dgonyier (Dwaine Gonyier)

If it matters, I am trying to upgrade from gtk3 @3.20.9_0+x11 (active)to latest (3.22.0_0)

comment:2 Changed 2 years ago by ryandesign (Ryan Schmidt)

Keywords: leopard added
Owner: changed from macports-tickets@… to devans@…

comment:3 Changed 2 years ago by ridethecliche@…

I think you may need to explicitly specify the +X11 variant when installing the port.

comment:4 in reply to:  3 Changed 2 years ago by dbevans (David B. Evans)

Status: newassigned

Replying to ridethecliche@…:

I think you may need to explicitly specify the +X11 variant when installing the port.

No, for the following reasons:

  • +x11 is the default variant (try port info gtk3 and see which variants have a + in front of them)
  • when you upgrade a port, upgrade will attempt to follow the previously installed variants, in your case +x11

comment:5 Changed 2 years ago by dbevans (David B. Evans)

The error seems to be a ppc specific error while linking libgdk-3.0.dylib. I'm not sure what to do with this and I don't have a ppc machine available to play with it. Perhaps some one with knowledge about how clang 3.4 generates ppc code (or not) could help explain what is happening.

:info:build libtool: link: /opt/local/bin/clang-mp-3.4 -arch ppc -dynamiclib -Wl,-undefined -Wl,dynamic_lookup -o .libs/libgdk-3.0.dylib  .libs/libgdk_3_la-gdkcolor.o .libs/libgdk_3_la-gdk-private.o .libs/libgdk_3_la-gdk.o .libs/libgdk_3_la-gdkapplaunchcontext.o .libs/libgdk_3_la-gdkcairo.o .libs/libgdk_3_la-gdkcursor.o .libs/libgdk_3_la-gdkdeprecated.o .libs/libgdk_3_la-gdkdevice.o .libs/libgdk_3_la-gdkdevicepad.o .libs/libgdk_3_la-gdkdevicetool.o .libs/libgdk_3_la-gdkdevicemanager.o .libs/libgdk_3_la-gdkdisplay.o .libs/libgdk_3_la-gdkdisplaymanager.o .libs/libgdk_3_la-gdkdnd.o .libs/libgdk_3_la-gdkdrawingcontext.o .libs/libgdk_3_la-gdkevents.o .libs/libgdk_3_la-gdkframetimings.o .libs/libgdk_3_la-gdkgl.o .libs/libgdk_3_la-gdkglcontext.o .libs/libgdk_3_la-gdkglobals.o .libs/libgdk_3_la-gdkkeys.o .libs/libgdk_3_la-gdkkeyuni.o .libs/libgdk_3_la-gdkmonitor.o .libs/libgdk_3_la-gdkoffscreenwindow.o .libs/libgdk_3_la-gdkframeclock.o .libs/libgdk_3_la-gdkframeclockidle.o .libs/libgdk_3_la-gdkpango.o .libs/libgdk_3_la-gdkpixbuf-drawable.o .libs/libgdk_3_la-gdkproperty.o .libs/libgdk_3_la-gdkrectangle.o .libs/libgdk_3_la-gdkrgba.o .libs/libgdk_3_la-gdkscreen.o .libs/libgdk_3_la-gdkseat.o .libs/libgdk_3_la-gdkseatdefault.o .libs/libgdk_3_la-gdkselection.o .libs/libgdk_3_la-gdkvisual.o .libs/libgdk_3_la-gdkwindow.o .libs/libgdk_3_la-gdkwindowimpl.o .libs/libgdk_3_la-gdkenumtypes.o .libs/libgdk_3_la-gdkmarshalers.o .libs/libgdk_3_la-gdkresources.o   .libs/libgdk-3.lax/libgdk-x11.a/gdkapplaunchcontext-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkasync.o .libs/libgdk-3.lax/libgdk-x11.a/gdkcursor-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkdevice-core-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkdevice-xi2.o .libs/libgdk-3.lax/libgdk-x11.a/gdkdevicemanager-core-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkdevicemanager-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkdevicemanager-xi2.o .libs/libgdk-3.lax/libgdk-x11.a/gdkdisplay-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkdisplaymanager-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkdnd-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkeventsource.o .libs/libgdk-3.lax/libgdk-x11.a/gdkeventtranslator.o .libs/libgdk-3.lax/libgdk-x11.a/gdkgeometry-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkglcontext-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkkeys-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkmain-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkmonitor-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkproperty-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkscreen-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkselection-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdktestutils-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkvisual-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkwindow-x11.o .libs/libgdk-3.lax/libgdk-x11.a/gdkxftdefaults.o .libs/libgdk-3.lax/libgdk-x11.a/gdkxid.o .libs/libgdk-3.lax/libgdk-x11.a/xsettings-client.o   -L/opt/local/lib /opt/local/lib/libpangocairo-1.0.dylib /opt/local/lib/libpango-1.0.dylib /opt/local/lib/libgdk_pixbuf-2.0.dylib /opt/local/lib/libcairo-gobject.dylib /opt/local/lib/libgio-2.0.dylib /opt/local/lib/libgobject-2.0.dylib /opt/local/lib/libglib-2.0.dylib /opt/local/lib/libintl.dylib /opt/local/lib/libfontconfig.dylib /opt/local/lib/libfreetype.dylib /opt/local/lib/libXinerama.dylib /opt/local/lib/libXi.dylib /opt/local/lib/libXrandr.dylib /opt/local/lib/libXcursor.dylib /opt/local/lib/libXrender.dylib /opt/local/lib/libXcomposite.dylib /opt/local/lib/libXdamage.dylib /opt/local/lib/libxcb.dylib /opt/local/lib/libXau.dylib /opt/local/lib/libXdmcp.dylib /opt/local/lib/libXfixes.dylib /opt/local/lib/libcairo.dylib /opt/local/lib/libX11.dylib /opt/local/lib/libXext.dylib /opt/local/lib/libepoxy.dylib -lm  -arch ppc -Os -arch ppc -Wl,-headerpad_max_install_names -arch ppc   -framework CoreFoundation -framework ApplicationServices -pthread -install_name  /opt/local/lib/libgdk-3.0.dylib -compatibility_version 2201 -current_version 2201.0 -Wl,-single_module
:info:build ld warning: codegen with reference kind 17 in _gdk_color_get_type prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 14 in _gdk_color_get_type prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 17 in _gdk_color_get_type prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 14 in _gdk_color_get_type prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 14 in _gdk_color_get_type prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 17 in _gdk__private__ prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 14 in _gdk__private__ prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 17 in _gdk_pre_parse prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 17 in _gdk_pre_parse prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 14 in _gdk_pre_parse prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 14 in _gdk_pre_parse prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 17 in _gdk_pre_parse prevents image from loading in dyld shared cache

lots more like that and then alot of these

:info:build ld warning: codegen with reference kind 17 in _read_settings prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 14 in _read_settings prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 17 in _read_settings prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 14 in _read_settings prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 17 in _read_settings prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 14 in _read_settings prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 14 in _read_settings prevents image from loading in dyld shared cache
:info:build ld warning: codegen with reference kind 14 in _read_settings prevents image from loading in dyld shared cache
:info:build ld: absolute addressing (perhaps -mdynamic-no-pic) used in _gdk_color_copy from .libs/libgdk_3_la-gdkcolor.o not allowed in slidable image. Use '-read_only_relocs suppress' to enable text relocs
:info:build collect2: ld returned 1 exit status
:info:build clang: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)
:info:build make[4]: *** [libgdk-3.la] Error 1

At any rate, if you look at the list of binary modules being linked, I think it's safe to say it's building +x11.

Last edited 2 years ago by ryandesign (Ryan Schmidt) (previous) (diff)

comment:6 Changed 2 years ago by dbevans (David B. Evans)

Cc: jeremyhu@… added

A similar story with babl can be seen in #48454 but no solution there either.

comment:7 Changed 2 years ago by ken-cunningham-webuse

if either of you would like a PPC machine to be made available to you via ssh/VNC/ARD to work on this or any other port, let me know. I have a number of them and they are available to you for the asking.

Last edited 2 years ago by ken-cunningham-webuse (previous) (diff)

comment:8 in reply to:  1 Changed 2 years ago by ken-cunningham-webuse

Replying to dgonyier@…:

If it matters, I am trying to upgrade from gtk3 @3.20.9_0+x11 (active)to latest (3.22.0_0)

I'd just like to make sure you know that you don't have to upgrade, necessarily. You can peg the port at the last working version, and it will no longer come up for upgrading. If it gets fixed (and we hope it will) then you can remove the peg and upgrade it at that time.

Check out <https://guide.macports.org/chunked/development.local-repositories.html>

Last edited 2 years ago by ken-cunningham-webuse (previous) (diff)

comment:9 Changed 2 years ago by jeremyhu (Jeremy Huddleston Sequoia)

You're not going to get very far if you expect clang-3.4 to work for ppc. I think it wasn't until around 3.6 that it became semi-usable. See my note in LibcxxOnOlderSystems#Leopardppc

Last edited 2 years ago by ryandesign (Ryan Schmidt) (previous) (diff)

comment:10 Changed 2 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Leopard is in a weak spot when it comes to newer toolchains because libc++ (which newer versions of clang depend on) doesn't work well with exceptions on Leopard due to issues getting libunwind built right. See http://www.llvm.org/bugs/show_bug.cgi?id=22270. You'll want to fix that bug if you want to have any hope of libc++ working on Leopard.

comment:11 Changed 2 years ago by ballapete (Peter Dyballa)

Cc: Peter_Dyballa@… added

Cc Me!

comment:12 Changed 2 years ago by ballapete (Peter Dyballa)

I have a different fault on PPC Mac OS X 10.5.8, Leopard:

/bin/sh ../libtool  --tag=CC   --mode=compile /opt/local/bin/clang-mp-3.4 -arch ppc -DHAVE_CONFIG_H -I. -I..  -DG_LOG_DOMAIN=\"Gdk\" -DG_LOG_USE_STRUCTURED=1 -DGDK_COMPILATION -I.. -I../gdk -I.. -DG_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS -DGLIB_MIN_REQUIRED_VERSION=GLIB_VERSION_2_48 -DGLIB_MAX_ALLOWED_VERSION=GLIB_VERSION_2_50 -D_REENTRANT -I/opt/local/include/pango-1.0 -I/opt/local/include/harfbuzz -I/opt/local/include -I/opt/local/include/pango-1.0 -I/opt/local/include/gdk-pixbuf-2.0 -I/opt/local/include/libpng16 -I/opt/local/include/cairo -I/opt/local/include/gio-unix-2.0/ -I/opt/local/include -I/opt/local/include/cairo -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -I/opt/local/include/pixman-1 -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include  -I/opt/local/include -DX_LOCALE -I/opt/local/include    -pipe -Os -fstrict-aliasing -arch ppc -Wall -MT libgdk_3_la-gdkresources.lo -MD -MP -MF .deps/libgdk_3_la-gdkresources.Tpo -c -o libgdk_3_la-gdkresources.lo `test -f 'gdkresources.c' || echo './'`gdkresources.c
libtool: compile:  /opt/local/bin/clang-mp-3.4 -arch ppc -DHAVE_CONFIG_H -I. -I.. -DG_LOG_DOMAIN=\"Gdk\" -DG_LOG_USE_STRUCTURED=1 -DGDK_COMPILATION -I.. -I../gdk -I.. -DG_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS -DGLIB_MIN_REQUIRED_VERSION=GLIB_VERSION_2_48 -DGLIB_MAX_ALLOWED_VERSION=GLIB_VERSION_2_50 -D_REENTRANT -I/opt/local/include/pango-1.0 -I/opt/local/include/harfbuzz -I/opt/local/include -I/opt/local/include/pango-1.0 -I/opt/local/include/gdk-pixbuf-2.0 -I/opt/local/include/libpng16 -I/opt/local/include/cairo -I/opt/local/include/gio-unix-2.0/ -I/opt/local/include -I/opt/local/include/cairo -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -I/opt/local/include/pixman-1 -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include -I/opt/local/include -DX_LOCALE -I/opt/local/include -pipe -Os -fstrict-aliasing -arch ppc -Wall -MT libgdk_3_la-gdkresources.lo -MD -MP -MF .deps/libgdk_3_la-gdkresources.Tpo -c gdkresources.c  -fno-common -DPIC -o .libs/libgdk_3_la-gdkresources.o
libtool: compile:  /opt/local/bin/clang-mp-3.4 -arch ppc -DHAVE_CONFIG_H -I. -I.. -DG_LOG_DOMAIN=\"Gdk\" -DG_LOG_USE_STRUCTURED=1 -DGDK_COMPILATION -I.. -I../gdk -I.. -DG_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS -DGLIB_MIN_REQUIRED_VERSION=GLIB_VERSION_2_48 -DGLIB_MAX_ALLOWED_VERSION=GLIB_VERSION_2_50 -D_REENTRANT -I/opt/local/include/pango-1.0 -I/opt/local/include/harfbuzz -I/opt/local/include -I/opt/local/include/pango-1.0 -I/opt/local/include/gdk-pixbuf-2.0 -I/opt/local/include/libpng16 -I/opt/local/include/cairo -I/opt/local/include/gio-unix-2.0/ -I/opt/local/include -I/opt/local/include/cairo -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -I/opt/local/include/pixman-1 -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include -I/opt/local/include -DX_LOCALE -I/opt/local/include -pipe -Os -fstrict-aliasing -arch ppc -Wall -MT libgdk_3_la-gdkresources.lo -MD -MP -MF .deps/libgdk_3_la-gdkresources.Tpo -c gdkresources.c -o libgdk_3_la-gdkresources.o >/dev/null 2>&1
mv -f .deps/libgdk_3_la-gdkresources.Tpo .deps/libgdk_3_la-gdkresources.Plo
/bin/sh ../libtool  --tag=CC   --mode=link /opt/local/bin/clang-mp-3.4 -arch ppc    -pipe -Os -fstrict-aliasing -arch ppc -Wall  -version-info 2200:0:2200 -export-dynamic -rpath /opt/local/lib   -L/opt/local/lib -Wl,-headerpad_max_install_names -arch ppc -o libgdk-3.la -rpath /opt/local/lib  libgdk_3_la-gdkcolor.lo libgdk_3_la-gdk-private.lo libgdk_3_la-gdk.lo libgdk_3_la-gdkapplaunchcontext.lo libgdk_3_la-gdkcairo.lo libgdk_3_la-gdkcursor.lo libgdk_3_la-gdkdeprecated.lo libgdk_3_la-gdkdevice.lo libgdk_3_la-gdkdevicepad.lo libgdk_3_la-gdkdevicetool.lo libgdk_3_la-gdkdevicemanager.lo libgdk_3_la-gdkdisplay.lo libgdk_3_la-gdkdisplaymanager.lo libgdk_3_la-gdkdnd.lo libgdk_3_la-gdkdrawingcontext.lo libgdk_3_la-gdkevents.lo libgdk_3_la-gdkframetimings.lo libgdk_3_la-gdkgl.lo libgdk_3_la-gdkglcontext.lo libgdk_3_la-gdkglobals.lo libgdk_3_la-gdkkeys.lo libgdk_3_la-gdkkeyuni.lo libgdk_3_la-gdkmonitor.lo libgdk_3_la-gdkoffscreenwindow.lo libgdk_3_la-gdkframeclock.lo libgdk_3_la-gdkframeclockidle.lo libgdk_3_la-gdkpango.lo libgdk_3_la-gdkpixbuf-drawable.lo libgdk_3_la-gdkproperty.lo libgdk_3_la-gdkrectangle.lo libgdk_3_la-gdkrgba.lo libgdk_3_la-gdkscreen.lo libgdk_3_la-gdkseat.lo libgdk_3_la-gdkseatdefault.lo libgdk_3_la-gdkselection.lo libgdk_3_la-gdkvisual.lo libgdk_3_la-gdkwindow.lo libgdk_3_la-gdkwindowimpl.lo libgdk_3_la-gdkenumtypes.lo libgdk_3_la-gdkmarshalers.lo libgdk_3_la-gdkresources.lo -L/opt/local/lib -lpangocairo-1.0 -lpango-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl -lfontconfig -lfreetype -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage -lXfixes -lcairo -lX11 -lXext -lepoxy -lm  x11/libgdk-x11.la      
libtool: link: /opt/local/bin/clang-mp-3.4 -arch ppc -dynamiclib -Wl,-undefined -Wl,dynamic_lookup -o .libs/libgdk-3.0.dylib  .libs/libgdk_3_la-gdkcolor.o .libs/libgdk_3_la-gdk-private.o .libs/libgdk_3_la-gdk.o .libs/libgdk_3_la-gdkapplaunchcontext.o .libs/libgdk_3_la-gdkcairo.o .libs/libgdk_3_la-gdkcursor.o .libs/libgdk_3_la-gdkdeprecated.o .libs/libgdk_3_la-gdkdevice.o .libs/libgdk_3_la-gdkdevicepad.o .libs/libgdk_3_la-gdkdevicetool.o .libs/libgdk_3_la-gdkdevicemanager.o .libs/libgdk_3_la-gdkdisplay.o .libs/libgdk_3_la-gdkdisplaymanager.o .libs/libgdk_3_la-gdkdnd.o .libs/libgdk_3_la-gdkdrawingcontext.o .libs/libgdk_3_la-gdkevents.o .libs/libgdk_3_la-gdkframetimings.o .libs/libgdk_3_la-gdkgl.o .libs/libgdk_3_la-gdkglcontext.o .libs/libgdk_3_la-gdkglobals.o .libs/libgdk_3_la-gdkkeys.o .libs/libgdk_3_la-gdkkeyuni.o .libs/libgdk_3_la-gdkmonitor.o .libs/libgdk_3_la-gdkoffscreenwindow.o .libs/libgdk_3_la-gdkframeclock.o .libs/libgdk_3_la-gdkframeclockidle.o .libs/libgdk_3_la-gdkpango.o .libs/libgdk_3_la-gdkpixbuf-drawable.o .libs/libgdk_3_la-gdkproperty.o .libs/libgdk_3_la-gdkrectangle.o .libs/libgdk_3_la-gdkrgba.o .libs/libgdk_3_la-gdkscreen.o .libs/libgdk_3_la-gdkseat.o .libs/libgdk_3_la-gdkseatdefault.o .libs/libgdk_3_la-gdkselection.o .libs/libgdk_3_la-gdkvisual.o .libs/libgdk_3_la-gdkwindow.o .libs/libgdk_3_la-gdkwindowimpl.o .libs/libgdk_3_la-gdkenumtypes.o .libs/libgdk_3_la-gdkmarshalers.o .libs/libgdk_3_la-gdkresources.o   -Wl,-force_load,x11/.libs/libgdk-x11.a  -L/opt/local/lib /opt/local/lib/libpangocairo-1.0.dylib /opt/local/lib/libpango-1.0.dylib /opt/local/lib/libgdk_pixbuf-2.0.dylib /opt/local/lib/libcairo-gobject.dylib /opt/local/lib/libgio-2.0.dylib /opt/local/lib/libgobject-2.0.dylib /opt/local/lib/libglib-2.0.dylib /opt/local/lib/libintl.dylib /opt/local/lib/libfontconfig.dylib /opt/local/lib/libfreetype.dylib /opt/local/lib/libXinerama.dylib /opt/local/lib/libXi.dylib /opt/local/lib/libXrandr.dylib /opt/local/lib/libXcursor.dylib /opt/local/lib/libXrender.dylib /opt/local/lib/libXcomposite.dylib /opt/local/lib/libXdamage.dylib /opt/local/lib/libxcb.dylib /opt/local/lib/libXau.dylib /opt/local/lib/libXdmcp.dylib /opt/local/lib/libXfixes.dylib /opt/local/lib/libcairo.dylib /opt/local/lib/libX11.dylib /opt/local/lib/libXext.dylib /opt/local/lib/libepoxy.dylib -lm  -arch ppc -Os -arch ppc -Wl,-headerpad_max_install_names -arch ppc   -framework CoreFoundation -framework ApplicationServices -pthread -install_name  /opt/local/lib/libgdk-3.0.dylib -compatibility_version 2201 -current_version 2201.0 -Wl,-single_module
ld: illegal text-relocation to cstring in .libs/libgdk_3_la-gdkcolor.o from _gdk_color_copy in .libs/libgdk_3_la-gdkcolor.o for architecture ppc
collect2: ld returned 1 exit status
clang: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)
make[4]: *** [libgdk-3.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_gnome_gtk3/gtk3/work/gtk+-3.22.0/gdk'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_gnome_gtk3/gtk3/work/gtk+-3.22.0/gdk'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_gnome_gtk3/gtk3/work/gtk+-3.22.0/gdk'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_gnome_gtk3/gtk3/work/gtk+-3.22.0'
make: *** [all] Error 2
make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_gnome_gtk3/gtk3/work/gtk+-3.22.0'
Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_gnome_gtk3/gtk3/work/gtk+-3.22.0" && /usr/bin/make -w all CC="/opt/local/bin/clang-mp-3.4 -arch ppc" CC_FOR_BUILD="/opt/local/bin/clang-mp-3.4 -arch ppc" V=1 CPP_FOR_BUILD="/usr/bin/cpp" 
Exit code: 2
Error: Failed to build gtk3: command execution failed
pete 235 /\ port select --summary
Name       Selected      Options
====       ========      =======
clang      mp-clang-3.3  mp-clang-3.3 mp-clang-3.4 none
gcc        apple-gcc42   apple-gcc42 gcc40 gcc42 llvm-gcc42 mp-gcc47 mp-gcc48 mp-gcc49 mp-gcc5 none
llvm       mp-llvm-3.3   mp-llvm-3.3 mp-llvm-3.4 none

Changed 2 years ago by ballapete (Peter Dyballa)

Attachment: main.2.log added

Contains the other error

comment:13 Changed 2 years ago by ken-cunningham-webuse

perhaps a thing to try on 10.5 PPC is to edit this block in the Portfile

# blacklist compilers that do not support C11 (redefinition of typedef ‘GdkX11Monitor’ at gdkscreen-x11.h:33)

if {[variant_isset quartz]} {
    compiler.blacklist  *gcc* {clang < 425}
} else {
    compiler.blacklist  *gcc* {clang < 300}
}

re-enable gcc, and try a newer gcc that supports C11 <http://gcc.gnu.org/projects/cxx-status.html#cxx11> -- most of which build on Tiger PPC and so probably build on Leopard PPC.

$ port -v installed | grep gcc
  apple-gcc42 @5666.3_15+bootstrap platform='darwin 8' archs='ppc'
  apple-gcc42 @5666.3_15 (active) platform='darwin 8' archs='ppc'
  gcc5 @5.4.0_0 (active) platform='darwin 8' archs='ppc'
  gcc6 @6.1.0_0 (active) platform='darwin 8' archs='ppc'
  gcc46 @4.6.4_9 (active) platform='darwin 8' archs='ppc'
  gcc48 @4.8.5_0 (active) platform='darwin 8' archs='ppc'
  gcc_select @0.1_8 (active) platform='darwin 8' archs='noarch'
  libgcc @6.1.0_0 (active) platform='darwin 8' archs='ppc'
Last edited 2 years ago by ken-cunningham-webuse (previous) (diff)

comment:14 Changed 2 years ago by jeremyhu (Jeremy Huddleston Sequoia)

That would result in different ports using different C++ runtimes, causing issues across library boundaries.

If you wanted to pursue that route, you could remove all C++ ports, install gcc6, setup your default compilers to be something like "gcc6 gcc5 gcc4.9" and then re-install your ports. You'll have to manually edit ports that blacklist *gcc* for C++11, including the cxx11 portgroup to accept your toolchain choice.

That's not a supported option, and you will run into trouble...

but that's the cost of trying to make a decade old system on a 9 year old OS work with current software.

comment:15 Changed 2 years ago by ken-cunningham-webuse

Hi Jeremy. Only thinking of doing this on PPC, where it appears there are no other options at the moment. Always greatly appreciate your brain and input. If I could fix the libunwind bug, I certainly would! Perhaps I'm getting there. Best, Ken

comment:16 Changed 2 years ago by ken-cunningham-webuse

by the way -- is there an elegant way to see which installed ports are using c++?

comment:17 Changed 2 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Good luck. I've had that libunwind bug on my "when I get to it" list for quite some time, but that's a very long list =/

As you run into trouble, feel free to bounce them off of me. Hopefully it goes smooth.

If it looks good, we could add a new option for configure.cxx_stdlib like macports-libstdc++ which would do this fairly easily (although many ports will need to adapt).

---

which installed ports are using c++

grep -R 'c++' /opt/local and port provides .. ? =/

comment:18 Changed 2 years ago by dbevans (David B. Evans)

Thanks for the help in clarifying the issues, Jeremy. I'm not going to anything further on this ticket until the toolchain issues are solved but please keep me in the loop. Ken, I'll take you up on the offer for a ssh login account on one of your ppc machines. Contact me directly with details. It would be good to at least be able to verify issues and potential solutions on a ppc machine. The ppc buildbot is backed up almost two weeks at this point so won't be much help for debugging for a while.

comment:19 Changed 2 years ago by ken-cunningham-webuse

so far, on PPC, it looks like all the c++ ports I can identify are linked against /usr/lib/libstdc++.

/opt/local/lib/libpspell.15.dylib:
	/opt/local/lib/libpspell.15.dylib (compatibility version 17.0.0, current version 17.5.0)
	/opt/local/lib/libaspell.15.dylib (compatibility version 17.0.0, current version 17.5.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.1.12)
	/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
	/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)

on the other hand, I've got libstdc++.dylib all over the place:

$locate libstdc++.dylib
/Developer/SDKs/MacOSX10.3.9.sdk/usr/lib/gcc/powerpc-apple-darwin7/4.0.0/libstdc++.dylib
/Developer/SDKs/MacOSX10.3.9.sdk/usr/lib/gcc/powerpc-apple-darwin7/4.0.1/libstdc++.dylib
/Developer/SDKs/MacOSX10.3.9.sdk/usr/lib/libstdc++.dylib
/Developer/SDKs/MacOSX10.3.9.sdk/usr/power-apple-darwin8/4.0.1/libstdc++.dylib
/Developer/SDKs/MacOSX10.4u.sdk/usr/i686-apple-darwin8/4.0.1/libstdc++.dylib
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin8/4.0.0/libstdc++.dylib
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin8/4.0.1/libstdc++.dylib
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/powerpc-apple-darwin8/4.0.0/libstdc++.dylib
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/powerpc-apple-darwin8/4.0.1/libstdc++.dylib
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/libstdc++.dylib
/Developer/SDKs/MacOSX10.4u.sdk/usr/power-apple-darwin8/4.0.1/libstdc++.dylib
/Developer/usr/lib/gcc/i686-apple-darwin8/4.0.1/libstdc++.dylib
/Developer/usr/lib/gcc/powerpc-apple-darwin8/4.0.1/libstdc++.dylib
/opt/local/lib/apple-gcc42/gcc/powerpc-apple-darwin8/4.2.1/libstdc++.dylib
/opt/local/lib/gcc46/libstdc++.dylib
/opt/local/lib/gcc48/libstdc++.dylib
/opt/local/lib/gcc5/libstdc++.dylib
/opt/local/lib/gcc6/libstdc++.dylib
/usr/lib/gcc/i686-apple-darwin8/4.0.1/libstdc++.dylib
/usr/lib/gcc/powerpc-apple-darwin8/4.0.1/libstdc++.dylib

but I'm going to take a bit of a leap that the only way this mess can work at all is if all these different copies of this library (all being built by gcc in the first place) are compatible with each other (not including the i686 copies for universal compiling on 10.4, of course). So that part should be OK.

Last edited 2 years ago by ken-cunningham-webuse (previous) (diff)

comment:20 in reply to:  19 ; Changed 2 years ago by larryv (Lawrence Velázquez)

I don’t believe this is the case. MacPorts’ libstdc++ (/opt/local/*/libstdc++.dylib) and Apple’s libstdc++ (everything else) are distinct. It doesn’t matter which compiler was used to build them.

What you have to do is make sure that all your ports use MacPorts’ libstdc++ and not Apple’s, which you would try to do by setting default_compilers as Jeremy mentioned earlier.

comment:21 in reply to:  20 ; Changed 2 years ago by ken-cunningham-webuse

Replying to larryv@…:

make sure that all your ports use MacPorts’ libstdc++ and not Apple’s

even there, though -- there are (currently) 5 libstdc++.dylibs installed by MacPorts for different versions of gcc. They must be able to interact, Larry, otherwise everything would have to be built with only one version of one family of a c++ compiler, and we know that's not the case.

And if gcc5's version of libstdc++ can interact with gcc48's version, then why not apple-gcc-42's version too?

Ah -- sometimes this gets to be as confusing as those time-travel movies where you go back and bump into a previous version of yourself :>

comment:22 in reply to:  21 Changed 2 years ago by larryv (Lawrence Velázquez)

Replying to ken.cunningham.webuse@…:

even there, though -- there are (currently) 5 libstdc++.dylibs installed by MacPorts for different versions of gcc. They must be able to interact, Larry, otherwise everything would have to be built with only one version of one family of a c++ compiler, and we know that's not the case.

You’ll find that ${prefix}/lib/gcc{46,47,48,49,5,6}/libstdc++.6.dylib are all symlinks to the single libstdc++ provided by libgcc at ${prefix}/lib/libgcc/libstdc++.6.dylib.

Ah -- sometimes this gets to be as confusing as those time-travel movies where you go back and bump into a previous version of yourself :>

Indeed!

comment:23 Changed 2 years ago by ken-cunningham-webuse

Now I get it. Thanks.

comment:24 Changed 2 years ago by ken-cunningham-webuse

Just add an option here, <https://github.com/fangism/llvm> has a version of clang/llvm for powerpc darwin8 that is noted to be @3.7.0.... I see David Fang was around MacPorts several years ago, but now seems to be using fink. C++11 is specifically mentioned.

At this moment I have no idea what the status of this toolchain is or what might / might not be involved getting it into macports.

Here's a bit more <http://vlsi.cornell.edu/~fang/sw/llvm/>

Last edited 2 years ago by ken-cunningham-webuse (previous) (diff)

comment:25 Changed 2 years ago by jeremyhu (Jeremy Huddleston Sequoia)

AFAIK, there's nothing in David's patch series that isn't in ours. I incorporated his patches a couple years ago and have since upstreamed some and continually rebased the others.

comment:26 Changed 2 years ago by dbevans (David B. Evans)

Well, if there's any progress in this area, I vote to use gtk3 as a proof of concept test case. It's really blocking any progress with current GNOME ports for the ppc folks. I really don't understand the failure mode reported here but I see lots of similar reports on other builds when googling. So it's not uncommon. I'm assuming it's a tool chain issue but it bothers me that the previous version builds fine and this one doesn't. So it makes me think there might be a critical code change that, if identified, could be worked around. Or maybe it's chaos theory in action. Just musing.

comment:27 Changed 2 years ago by ken-cunningham-webuse

As so often happens, it doesn't take me too long to reach the edges of my knowledge in these areas. I notice the system-installed /usr/lib/libstdc++.6.dylib is versioned like this:

$ otool -L /usr/lib/libstdc++.6.dylib
/usr/lib/libstdc++.6.dylib:
	/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.1.5)
	/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)

and the macports-installed /opt/local/lib/gcc6/libstdc++.dylib is versioned like this:

$ otool -L /opt/local/lib/libgcc/libstdc++.6.dylib
/opt/local/lib/libgcc/libstdc++.6.dylib:
	/opt/local/lib/libgcc/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.22.0)
	/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
	/opt/local/lib/libgcc/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.1.12)

I'm looking specifically at the fact that the system version and macports version of libstdc++.6.dylib both have a compatibility version of 7.0.0. That would make someone like me think these two c++ libraries would be compatible -- and one would expect the minor version changes (4 vs 22) to represent certain enhancements or fixes that would not be expected to affect compatibility.

Which - if reasonably accurate - would make the whole 'move forward' process considerably easier...

comment:28 Changed 2 years ago by ken-cunningham-webuse

FYI - on 10.4 Tiger PPC:

$ sudo port -v install gtk3 configure.compiler=macports-gcc-6

results in success

  gtk3 @3.22.1_0+x11 (active) platform='darwin 8' archs='ppc'

without touching the portfile.

comment:29 Changed 2 years ago by dbevans (David B. Evans)

Cc: ken.cunningham.webuse@… added

You're on your own here. The basic idea is that you want to come up with a tool set that you will use for everything on this platform. And the dependencies too. Did you build all gtk3's dependencies with gcc6 (and it's runtime)?

So the test is not whether gtk3 builds (a good start) but whether everything you want to install (say the rest of the GNOME ports) build as well. Then there's the +quartz issue. This is where things get interesting. gcc6 has some support for objective C 1.0 and some 2.0 features but whether this will work with Apple's objective C syntax and link with Apple frameworks is an interesting unknown in my mind.

So the next thing I would try is building gtk3 +quartz and see what happens.

By the way, gtk3 builds a demo app, gtk3-demo, that demonstrates most of the API. Give that a try and see what happens. For this to look right you need to install gnome-themes-standard too. Would be interesting if I could run this remotely using ssh -X.

This all goes toward establishing a tool chain that can be used reliably on your platform. That combined with your port repo overlay should be the biggest part being able to build and use modern software on such an old platform.

comment:30 Changed 2 years ago by dbevans (David B. Evans)

Cc: braumann@… added
Keywords: powerpc added

BTW, in comment:ticket:52605:4 braumann@... reports that gtk3 @3.22.1_0 builds successfully for him on Leopard PPC.

Last edited 20 months ago by ryandesign (Ryan Schmidt) (previous) (diff)

comment:31 Changed 2 years ago by mojca (Mojca Miklavec)

Cc: mojca@… added

Cc Me!

comment:32 Changed 2 years ago by ken-cunningham-webuse

to be noted that although gtk3 builds on Leopard, it actually doesn't seem to work. (oddly, it works quite well on TIger -- go figure).

This error happens both with the standard compiler chain build (currently at gtk3 @3.20.9_0+x11) and also with the gcc6 version building the 3.22.1_0.

I tried a lot of different things to fix this - detailed below.

(gtk3-demo:69297): Gtk-WARNING **: Failed to get the GNOME session proxy: The name org.gnome.SessionManager is not owned

(gtk3-demo:69297): Gtk-WARNING **: Failed to get the Xfce session proxy: The name org.xfce.SessionManager is not owned

(gtk3-demo:69297): Gtk-WARNING **: Failed to get an inhibit portal proxy: The name org.freedesktop.portal.Desktop is not owned
dyld: lazy symbol binding failed: Symbol not found: _CFStringIsSurrogateHighCharacter
  Referenced from: /opt/macports-gcccxx11/lib/libpangocairo-1.0.0.dylib
  Expected in: dynamic lookup

dyld: Symbol not found: _CFStringIsSurrogateHighCharacter
  Referenced from: /opt/macports-gcccxx11/lib/libpangocairo-1.0.0.dylib
  Expected in: dynamic lookup

Trace/BPT trap

fix attempts

================
first thought - brought in symbols from 10.6 only
presumably due to error in AvailabilityInternal.h
fixed AvailabilityInternal.h and rebuilt -- > fail

============
try rebuilding pango with stock macports compiler --> fail

=============
try rebuilding pango with sudo port install pango -quartz+x11
--> fails -- portfile forces +quartz

==================
edit portfile to disable force of +quartz and sudo port install pango -quartz+x11
success with building pango without +quartz
  pango @1.40.3_0+x11 (active) platform='darwin 9' archs='ppc'
but fails again

=======
try changing post-configure, edit to HAVE_CORE_TEXT 0 in config.h, and then building
pango installs without error

but still same error -- that is very frustrating

===============
  tried editing AvailabilityInternal.h to #define __MAC_OS_X_VERSION_MAX_ALLOWED __MAC_10_5
  =====>fail


===================

try editing this block:
    // set up internal macros
    // KENFIX - REMOVE 10_6 refs
    //#if __MAC_OS_X_VERSION_MAX_ALLOWED < __MAC_10_6
    //    #define __AVAILABILITY_INTERNAL__MAC_10_6        __AVAILABILITY_INTERNAL_UNAVAILABLE
    //#elif __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_6
    //    #define __AVAILABILITY_INTERNAL__MAC_10_6        __AVAILABILITY_INTERNAL_WEAK_IMPORT
    //#else    
    //    #define __AVAILABILITY_INTERNAL__MAC_10_6
    //#endif
    // END KENFIX

STILL FAILS -- so changed it back

=========

try editing to:  #define __MAC_OS_X_VERSION_MAX_ALLOWED __MAC_10_5
in
 
/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/TextCommon.h

===> FAILS

============

try adding the following to macports.conf
macosx_deployment_target 10.5

===> fails

all I have left in my quiver of thoughts is to edit the source for pango

work/pango-1.40.3/pango/pangocoretext-shape.c

to change the coretext calls

_CFStringIsSurrogateHighCharacter

to 10.5 friendly versions

UCIsSurrogateHighCharacter (in TextCommon.h)

but -- it seems there must be a more elegant way to get the weak linking to stop failing on 10.5 that I'm not thinking of ....

Last edited 2 years ago by ken-cunningham-webuse (previous) (diff)

comment:33 Changed 2 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Last edited 20 months ago by ryandesign (Ryan Schmidt) (previous) (diff)

comment:34 Changed 2 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Also, file a bug against pango to stop using -undefined dynamic as that usually just leads to problems.

comment:35 Changed 2 years ago by khepler

Cc: khepler@… added

Cc Me!

comment:36 Changed 2 years ago by ken-cunningham-webuse

you must be an Apple engineer :>

I tried most of the LeopardSDKFixes -- I was a bit nervous about copying libgcc_s.10.5.dylib from SnowLeopard (Intel) into Leopard (PPC) but otool does say there is PPC code in it, so it would likely work. But now I think the Availability tests are not actually the root of the problem. Leopard implements just enough CoreText to pass the test, but not enough to fulfill the needs. So it fails at runtime.

"-undefined dynamic" - which I didn't know much about before -- would be exactly the problem.

It should be possible to make Leopard fail the pango CoreText test (which is what I presume must happen on Tiger) and then it should work. Or edit the code in the file mentioned.

comment:37 Changed 2 years ago by jeremyhu (Jeremy Huddleston Sequoia)

There actually is no code in libgcc_s.10.5.dylib. It is just a stub dylib for linking.

CFStringIsSurrogateHighCharacter was added in Snow Leopard. The use of -undefined dynamic masks this problem.

comment:38 Changed 2 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Small correction... -undefined dynamic_lookup, not -undefined dynamic

Kicked off my Leopard VM, and indeed we see the compiler warnings about the implicit declaration:

pangocoretext-shape.c:153:11: warning: implicit declaration of function 'CFStringIsSurrogateHighCharacter' is invalid in C99 [-Wimplicit-function-declaration]
      if (CFStringIsSurrogateHighCharacter (CFStringGetCharacterAtIndex (cstr, i)) &&
          ^
pangocoretext-shape.c:155:11: warning: implicit declaration of function 'CFStringIsSurrogateLowCharacter' is invalid in C99 [-Wimplicit-function-declaration]
          CFStringIsSurrogateLowCharacter (CFStringGetCharacterAtIndex (cstr, i + 1)))
          ^
pangocoretext-shape.c:199:16: warning: implicit declaration of function 'CFStringGetLongCharacterForSurrogatePair' is invalid in C99 [-Wimplicit-function-declaration]
        return CFStringGetLongCharacterForSurrogatePair (ch, ch2);
               ^

and the subsequent usage of -undefined dynamic_lookup (via -Wl,-undefined -Wl,dynamic_lookup):

libtool: link: /opt/local/bin/clang-mp-3.7 -dynamiclib -Wl,-undefined -Wl,dynamic_lookup -o .libs/libpangocairo-1.0.0.dylib  .libs/pangocairo-context.o .libs/pangocairo-font.o .libs/pangocairo-fontmap.o .libs/pangocairo-render.o .libs/pangocairo-fcfont.o .libs/pangocairo-fcfontmap.o .libs/pangocoretext.o .libs/pangocoretext-fontmap.o .libs/pangocoretext-shape.o .libs/pangocairo-coretextfont.o .libs/pangocairo-coretextfontmap.o   -framework CoreFoundation -framework ApplicationServices -L/opt/local/lib ./.libs/libpango-1.0.dylib -lcairo ./.libs/libpangoft2-1.0.dylib /opt/local/var/macports/build/_Users_jeremy_src_macports_trunk_dports_x11_pango/pango/work/pango-1.40.3/pango/.libs/libpango-1.0.dylib -lgobject-2.0 -lgthread-2.0 -lglib-2.0 -lintl -lharfbuzz -lfontconfig -lm -lfreetype  -arch x86_64 -Os -arch x86_64 -arch i386 -Wl,-headerpad_max_install_names -arch x86_64 -arch i386 -Wl,-dylib_file -Wl,/opt/local/lib/libpango-1.0.0.dylib:/opt/local/var/macports/build/_Users_jeremy_src_macports_trunk_dports_x11_pango/pango/work/pango-1.40.3/pango/.libs/libpango-1.0.dylib   -framework CoreFoundation -framework ApplicationServices -install_name  /opt/local/lib/libpangocairo-1.0.0.dylib -compatibility_version 4001 -current_version 4001.3 -Wl,-single_module -Wl,-exported_symbols_list,.libs/libpangocairo-1.0-symbols.expsym

comment:39 Changed 2 years ago by ken-cunningham-webuse

Yep. Getting it.

Found a 'hack' to fix pango on Leopard. FInd this bit in the configure script

if ac_fn_c_try_link "$LINENO"; then :
  have_core_text=yes
else
  have_core_text=no
fi

and change to (duh - should have just done this in the first place):

if ac_fn_c_try_link "$LINENO"; then :
  have_core_text=no
else
  have_core_text=no
fi

and rebuild pango and core text is forced out and the missing symbols disappear. I'd make a reinplace to do this for everyone, but that's not too popular these days. So anyone on this list can just do it for themselves, if they wish.

Now to see what comes next :> Thanks Jeremy.

comment:40 Changed 2 years ago by jeremyhu (Jeremy Huddleston Sequoia)

The pango issue is fixed in r154022 (I didn't fix the dynamic_lookup issue).

comment:41 Changed 2 years ago by ballapete (Peter Dyballa)

Meanwhile the version of GTK3 has grown to 3.22.1_0 – and still fails to built. After the described changes of the Leopard SDK I upgraded pango (to pango @1.40.3_1+quartz+x11) and started again the build of GTK3 – and a new error, I think, appeared:

/bin/sh ../libtool  --tag=CC   --mode=link /opt/local/bin/clang-mp-3.4 -arch ppc    -pipe -Os -fstrict-aliasing -arch ppc -Wall  -version-info 2200:1:2200 -export-dynamic -rpath /opt/local/lib   -L/opt/local/lib -Wl,-headerpad_max_install_names -arch ppc -o libgdk-3.la -rpath /opt/local/lib  libgdk_3_la-gdkcolor.lo libgdk_3_la-gdk-private.lo libgdk_3_la-gdk.lo libgdk_3_la-gdkapplaunchcontext.lo libgdk_3_la-gdkcairo.lo libgdk_3_la-gdkcursor.lo libgdk_3_la-gdkdeprecated.lo libgdk_3_la-gdkdevice.lo libgdk_3_la-gdkdevicepad.lo libgdk_3_la-gdkdevicetool.lo libgdk_3_la-gdkdevicemanager.lo libgdk_3_la-gdkdisplay.lo libgdk_3_la-gdkdisplaymanager.lo libgdk_3_la-gdkdnd.lo libgdk_3_la-gdkdrawingcontext.lo libgdk_3_la-gdkevents.lo libgdk_3_la-gdkframetimings.lo libgdk_3_la-gdkgl.lo libgdk_3_la-gdkglcontext.lo libgdk_3_la-gdkglobals.lo libgdk_3_la-gdkkeys.lo libgdk_3_la-gdkkeyuni.lo libgdk_3_la-gdkmonitor.lo libgdk_3_la-gdkoffscreenwindow.lo libgdk_3_la-gdkframeclock.lo libgdk_3_la-gdkframeclockidle.lo libgdk_3_la-gdkpango.lo libgdk_3_la-gdkpixbuf-drawable.lo libgdk_3_la-gdkproperty.lo libgdk_3_la-gdkrectangle.lo libgdk_3_la-gdkrgba.lo libgdk_3_la-gdkscreen.lo libgdk_3_la-gdkseat.lo libgdk_3_la-gdkseatdefault.lo libgdk_3_la-gdkselection.lo libgdk_3_la-gdkvisual.lo libgdk_3_la-gdkwindow.lo libgdk_3_la-gdkwindowimpl.lo libgdk_3_la-gdkenumtypes.lo libgdk_3_la-gdkmarshalers.lo libgdk_3_la-gdkresources.lo -L/opt/local/lib -lpangocairo-1.0 -lpango-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl -lfontconfig -lfreetype -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage -lXfixes -lcairo -lX11 -lXext -lepoxy -lm  x11/libgdk-x11.la      
libtool: link: /opt/local/bin/clang-mp-3.4 -arch ppc -dynamiclib -Wl,-undefined -Wl,dynamic_lookup -o .libs/libgdk-3.0.dylib  .libs/libgdk_3_la-gdkcolor.o .libs/libgdk_3_la-gdk-private.o .libs/libgdk_3_la-gdk.o .libs/libgdk_3_la-gdkapplaunchcontext.o .libs/libgdk_3_la-gdkcairo.o .libs/libgdk_3_la-gdkcursor.o .libs/libgdk_3_la-gdkdeprecated.o .libs/libgdk_3_la-gdkdevice.o .libs/libgdk_3_la-gdkdevicepad.o .libs/libgdk_3_la-gdkdevicetool.o .libs/libgdk_3_la-gdkdevicemanager.o .libs/libgdk_3_la-gdkdisplay.o .libs/libgdk_3_la-gdkdisplaymanager.o .libs/libgdk_3_la-gdkdnd.o .libs/libgdk_3_la-gdkdrawingcontext.o .libs/libgdk_3_la-gdkevents.o .libs/libgdk_3_la-gdkframetimings.o .libs/libgdk_3_la-gdkgl.o .libs/libgdk_3_la-gdkglcontext.o .libs/libgdk_3_la-gdkglobals.o .libs/libgdk_3_la-gdkkeys.o .libs/libgdk_3_la-gdkkeyuni.o .libs/libgdk_3_la-gdkmonitor.o .libs/libgdk_3_la-gdkoffscreenwindow.o .libs/libgdk_3_la-gdkframeclock.o .libs/libgdk_3_la-gdkframeclockidle.o .libs/libgdk_3_la-gdkpango.o .libs/libgdk_3_la-gdkpixbuf-drawable.o .libs/libgdk_3_la-gdkproperty.o .libs/libgdk_3_la-gdkrectangle.o .libs/libgdk_3_la-gdkrgba.o .libs/libgdk_3_la-gdkscreen.o .libs/libgdk_3_la-gdkseat.o .libs/libgdk_3_la-gdkseatdefault.o .libs/libgdk_3_la-gdkselection.o .libs/libgdk_3_la-gdkvisual.o .libs/libgdk_3_la-gdkwindow.o .libs/libgdk_3_la-gdkwindowimpl.o .libs/libgdk_3_la-gdkenumtypes.o .libs/libgdk_3_la-gdkmarshalers.o .libs/libgdk_3_la-gdkresources.o   -Wl,-force_load,x11/.libs/libgdk-x11.a  -L/opt/local/lib /opt/local/lib/libpangocairo-1.0.dylib /opt/local/lib/libpango-1.0.dylib /opt/local/lib/libgdk_pixbuf-2.0.dylib /opt/local/lib/libcairo-gobject.dylib /opt/local/lib/libgio-2.0.dylib /opt/local/lib/libgobject-2.0.dylib /opt/local/lib/libglib-2.0.dylib /opt/local/lib/libintl.dylib /opt/local/lib/libfontconfig.dylib /opt/local/lib/libfreetype.dylib /opt/local/lib/libXinerama.dylib /opt/local/lib/libXi.dylib /opt/local/lib/libXrandr.dylib /opt/local/lib/libXcursor.dylib /opt/local/lib/libXrender.dylib /opt/local/lib/libXcomposite.dylib /opt/local/lib/libXdamage.dylib /opt/local/lib/libxcb.dylib /opt/local/lib/libXau.dylib /opt/local/lib/libXdmcp.dylib /opt/local/lib/libXfixes.dylib /opt/local/lib/libcairo.dylib /opt/local/lib/libX11.dylib /opt/local/lib/libXext.dylib /opt/local/lib/libepoxy.dylib -lm  -arch ppc -Os -arch ppc -Wl,-headerpad_max_install_names -arch ppc   -framework CoreFoundation -framework ApplicationServices -pthread -install_name  /opt/local/lib/libgdk-3.0.dylib -compatibility_version 2201 -current_version 2201.1 -Wl,-single_module
ld: illegal text-relocation to cstring in .libs/libgdk_3_la-gdkcolor.o from _gdk_color_copy in .libs/libgdk_3_la-gdkcolor.o for architecture ppc
collect2: ld returned 1 exit status
clang: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)
make[4]: *** [libgdk-3.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_gnome_gtk3/gtk3/work/gtk+-3.22.1/gdk'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_gnome_gtk3/gtk3/work/gtk+-3.22.1/gdk'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_gnome_gtk3/gtk3/work/gtk+-3.22.1/gdk'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_gnome_gtk3/gtk3/work/gtk+-3.22.1'
make: *** [all] Error 2
make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_gnome_gtk3/gtk3/work/gtk+-3.22.1'
Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_gnome_gtk3/gtk3/work/gtk+-3.22.1" && /usr/bin/make -w all CC="/opt/local/bin/clang-mp-3.4 -arch ppc" CC_FOR_BUILD="/opt/local/bin/clang-mp-3.4 -arch ppc" V=1 CPP_FOR_BUILD="/usr/bin/cpp" 

A rebuild of gdk-pixbuf2 @2.36.0_0+x11 necessary?

Changed 2 years ago by ballapete (Peter Dyballa)

Attachment: main.3.log added

main.log of gtk3 @3.22.1_0

comment:42 in reply to:  41 ; Changed 2 years ago by ken-cunningham-webuse

Success. I confirm good success with this now, on 10.5 PPC. Hope this proves helpful to people.

gtk3 3.22.1_0 builds without error, and the gtk3-demo appears to work as it should as well. I also had to install xorg-server on 10.5 to get it to work correctly, but it's better to have the current version of that anyway.

For this particular version, I built gtk3 @3.22.1 with gcc6, and most, but not all, the dependents with gcc6 as well. Some of the dependents will not build with gcc6, and have to be built with the default compiler (which in most cases appears to be apple's gcc-4.2). None of those ports appear to contain c++ code, AFAIK. I still can only get to gtk @3.20.9_0+x11 using the default 10.5 tool chain.

/bin/sh ../libtool --tag=CC --mode=link /opt/local/bin/clang-mp-3.4 -arch ppc

Peter - why is your system trying to build gtk with clang-3.4? I don't think that will work on PPC. You can build gtk3@3.22.1 with gcc6 (and likely gcc5 or gcc48) on PPC at present. YMMV. I don't at present build anything on 10.5 PPC with clang.

Last edited 2 years ago by ken-cunningham-webuse (previous) (diff)

comment:43 in reply to:  42 Changed 2 years ago by ballapete (Peter Dyballa)

Replying to ken.cunningham.webuse@…:

/bin/sh ../libtool --tag=CC --mode=link /opt/local/bin/clang-mp-3.4 -arch ppc

Peter - why is your system trying to build gtk with clang-3.4? I don't think that will work on PPC. You can build gtk3@3.22.1 with gcc6 (and likely gcc5 or gcc48) on PPC at present. YMMV. I don't at present build anything on 10.5 PPC with clang.

Because Portfile dictates this? Beside, there are these settings active:

pete 314 /\ port select --summary
Name       Selected      Options
====       ========      =======
clang      mp-clang-3.4  mp-clang-3.3 mp-clang-3.4 none
cython     cython27      cython27 none
db         none          none
gcc        apple-gcc42   apple-gcc42 gcc40 gcc42 llvm-gcc42 mp-gcc47 mp-gcc48 mp-gcc49 mp-gcc5 mp-gcc6 none
llvm       mp-llvm-3.4   mp-llvm-3.3 mp-llvm-3.4 none
nosetests  nosetests27   nosetests27 none
python     python27      python25-apple python27 python35 none
python2    python27      python25-apple python27 none
python3    python35      python35 none

Configure outputs these lines:

checking for gcc... /opt/local/bin/clang-mp-3.4 -arch ppc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /opt/local/bin/clang-mp-3.4 -arch ppc accepts -g... yes
checking for /opt/local/bin/clang-mp-3.4 -arch ppc option to accept ISO C89... none needed
checking whether /opt/local/bin/clang-mp-3.4 -arch ppc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of /opt/local/bin/clang-mp-3.4 -arch ppc... gcc3
checking how to run the C preprocessor... /opt/local/bin/clang-mp-3.4 -arch ppc -E
checking for gcc... gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) gcc3
checking how to run the C preprocessor... gcc -E
checking whether /opt/local/bin/clang-mp-3.4 -arch ppc and cc understand -c and -o together... yes

Config.log contains findings of Clang and GCC mixed:

configure:4157: checking for gcc
configure:4184: result: /opt/local/bin/clang-mp-3.4 -arch ppc
configure:4413: checking for C compiler version
configure:4422: /opt/local/bin/clang-mp-3.4 -arch ppc --version >&5
clang version 3.4.2 (tags/RELEASE_34/dot2-final)
Target: powerpc-apple-darwin9.8.0
Thread model: posix
configure:4433: $? = 0
configure:4422: /opt/local/bin/clang-mp-3.4 -arch ppc -v >&5
clang version 3.4.2 (tags/RELEASE_34/dot2-final)
Target: powerpc-apple-darwin9.8.0
Thread model: posix
Selected GCC installation: 
configure:4433: $? = 0
configure:4422: /opt/local/bin/clang-mp-3.4 -arch ppc -V >&5
clang: error: argument to '-V' is missing (expected 1 value)
clang: error: no input files
configure:4433: $? = 1
configure:4422: /opt/local/bin/clang-mp-3.4 -arch ppc -qversion >&5
clang: error: unknown argument: '-qversion'
clang: error: no input files
configure:4433: $? = 1
configure:4453: checking whether the C compiler works
configure:4475: /opt/local/bin/clang-mp-3.4 -arch ppc -pipe -Os -fstrict-aliasing -arch ppc -I/opt/local/include -DX_LOCALE -L/opt/local/lib -Wl,-headerpad_max_install_names -arch ppc conftest.c  >&5
configure:4479: $? = 0
configure:4527: result: yes
configure:4530: checking for C compiler default output file name
configure:4532: result: a.out
configure:4538: checking for suffix of executables
configure:4545: /opt/local/bin/clang-mp-3.4 -arch ppc -o conftest -pipe -Os -fstrict-aliasing -arch ppc -I/opt/local/include -DX_LOCALE -L/opt/local/lib -Wl,-headerpad_max_install_names -arch ppc conftest.c  >&5
configure:4549: $? = 0
configure:4571: result: 
configure:4593: checking whether we are cross compiling
configure:4601: /opt/local/bin/clang-mp-3.4 -arch ppc -o conftest -pipe -Os -fstrict-aliasing -arch ppc -I/opt/local/include -DX_LOCALE -L/opt/local/lib -Wl,-headerpad_max_install_names -arch ppc conftest.c  >&5
configure:4605: $? = 0
configure:4612: ./conftest
configure:4616: $? = 0
configure:4631: result: no
configure:4636: checking for suffix of object files
configure:4658: /opt/local/bin/clang-mp-3.4 -arch ppc -c -pipe -Os -fstrict-aliasing -arch ppc -I/opt/local/include -DX_LOCALE conftest.c >&5
configure:4662: $? = 0
configure:4683: result: o
configure:4687: checking whether we are using the GNU C compiler
configure:4706: /opt/local/bin/clang-mp-3.4 -arch ppc -c -pipe -Os -fstrict-aliasing -arch ppc -I/opt/local/include -DX_LOCALE conftest.c >&5
configure:4706: $? = 0
configure:4715: result: yes
configure:4724: checking whether /opt/local/bin/clang-mp-3.4 -arch ppc accepts -g
configure:4744: /opt/local/bin/clang-mp-3.4 -arch ppc -c -g -I/opt/local/include -DX_LOCALE conftest.c >&5
configure:4744: $? = 0
configure:4785: result: yes
configure:4802: checking for /opt/local/bin/clang-mp-3.4 -arch ppc option to accept ISO C89
configure:4865: /opt/local/bin/clang-mp-3.4 -arch ppc  -c -pipe -Os -fstrict-aliasing -arch ppc -I/opt/local/include -DX_LOCALE conftest.c >&5
configure:4865: $? = 0
configure:4878: result: none needed
configure:4903: checking whether /opt/local/bin/clang-mp-3.4 -arch ppc understands -c and -o together
configure:4925: /opt/local/bin/clang-mp-3.4 -arch ppc -c conftest.c -o conftest2.o
configure:4928: $? = 0
configure:4925: /opt/local/bin/clang-mp-3.4 -arch ppc -c conftest.c -o conftest2.o
configure:4928: $? = 0
configure:4940: result: yes
configure:4968: checking for style of include used by make
configure:4996: result: GNU
configure:5022: checking dependency style of /opt/local/bin/clang-mp-3.4 -arch ppc
configure:5133: result: gcc3
configure:5153: checking how to run the C preprocessor
configure:5184: /opt/local/bin/clang-mp-3.4 -arch ppc -E -I/opt/local/include -DX_LOCALE conftest.c
configure:5184: $? = 0
configure:5198: /opt/local/bin/clang-mp-3.4 -arch ppc -E -I/opt/local/include -DX_LOCALE conftest.c
conftest.c:9:10: fatal error: 'ac_nonexistent.h' file not found
#include <ac_nonexistent.h>
         ^
1 error generated.
configure:5198: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "gtk+"
| #define PACKAGE_TARNAME "gtk+"
| #define PACKAGE_VERSION "3.22.1"
| #define PACKAGE_STRING "gtk+ 3.22.1"
| #define PACKAGE_BUGREPORT "http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2B"
| #define PACKAGE_URL ""
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:5223: result: /opt/local/bin/clang-mp-3.4 -arch ppc -E
configure:5243: /opt/local/bin/clang-mp-3.4 -arch ppc -E -I/opt/local/include -DX_LOCALE conftest.c
configure:5243: $? = 0
configure:5257: /opt/local/bin/clang-mp-3.4 -arch ppc -E -I/opt/local/include -DX_LOCALE conftest.c
conftest.c:9:10: fatal error: 'ac_nonexistent.h' file not found
#include <ac_nonexistent.h>
         ^
1 error generated.
configure:5257: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "gtk+"
| #define PACKAGE_TARNAME "gtk+"
| #define PACKAGE_VERSION "3.22.1"
| #define PACKAGE_STRING "gtk+ 3.22.1"
| #define PACKAGE_BUGREPORT "http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2B"
| #define PACKAGE_URL ""
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:5341: checking for gcc
configure:5357: found /opt/local/bin/gcc
configure:5368: result: gcc
configure:5597: checking for C compiler version
configure:5606: gcc --version >&5
powerpc-apple-darwin9-gcc-apple-4.2.4 (GCC) 4.2.4 (Apple Inc. build 5666) (dot 3) (MacPorts apple-gcc42 5666.3_15+gpl3)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:5617: $? = 0
configure:5606: gcc -v >&5
Using built-in specs.
Target: powerpc-apple-darwin9
Configured with: /opt/local/var/macports/build/_opt_mports_trunk_dports_lang_apple-gcc42/apple-gcc42/work/objroot/src/configure --disable-checking --enable-werror --prefix=/opt/local --mandir=/opt/local/share/man --enable-languages=c,c++,objc,obj-c++ --libexecdir=/opt/local/libexec/apple-gcc42 --libdir=/opt/local/lib/apple-gcc42 --includedir=/opt/local/include/apple-gcc42 --program-suffix=-apple-4.2 --with-system-zlib --disable-nls --with-slibdir=/usr/lib --build=powerpc-apple-darwin9 --with-gxx-include-dir=/usr/include/c++/4.0.0 --host=powerpc-apple-darwin9 --target=powerpc-apple-darwin9
Thread model: posix
gcc version 4.2.4 (Apple Inc. build 5666) (dot 3) (MacPorts apple-gcc42 5666.3_15+gpl3)
configure:5617: $? = 0
configure:5606: gcc -V >&5
gcc-apple-4.2: argument to `-V' is missing
configure:5617: $? = 1
configure:5606: gcc -qversion >&5
powerpc-apple-darwin9-gcc-apple-4.2.4: no input files
configure:5617: $? = 1
configure:5621: checking whether we are using the GNU C compiler
configure:5649: result: yes
configure:5658: checking whether gcc accepts -g
configure:5678: /opt/local/bin/clang-mp-3.4 -arch ppc -c -pipe -Os -fstrict-aliasing -arch ppc -I/opt/local/include -DX_LOCALE conftest.c >&5
configure:5678: $? = 0
configure:5719: result: yes
configure:5736: checking for gcc option to accept ISO C89
configure:5812: result: none needed
configure:5837: checking whether gcc understands -c and -o together
configure:5874: result: yes
configure:5893: checking dependency style of gcc
configure:6004: result: gcc3
configure:6024: checking how to run the C preprocessor
configure:6055: /opt/local/bin/clang-mp-3.4 -arch ppc -E -I/opt/local/include -DX_LOCALE conftest.c
configure:6055: $? = 0
configure:6069: /opt/local/bin/clang-mp-3.4 -arch ppc -E -I/opt/local/include -DX_LOCALE conftest.c
conftest.c:9:10: fatal error: 'ac_nonexistent.h' file not found
#include <ac_nonexistent.h>
         ^
1 error generated.
configure:6069: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "gtk+"
| #define PACKAGE_TARNAME "gtk+"
| #define PACKAGE_VERSION "3.22.1"
| #define PACKAGE_STRING "gtk+ 3.22.1"
| #define PACKAGE_BUGREPORT "http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2B"
| #define PACKAGE_URL ""
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:6094: result: gcc -E
configure:6114: /opt/local/bin/clang-mp-3.4 -arch ppc -E -I/opt/local/include -DX_LOCALE conftest.c
configure:6114: $? = 0
configure:6128: /opt/local/bin/clang-mp-3.4 -arch ppc -E -I/opt/local/include -DX_LOCALE conftest.c
conftest.c:9:10: fatal error: 'ac_nonexistent.h' file not found
#include <ac_nonexistent.h>
         ^
1 error generated.
configure:6128: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "gtk+"
| #define PACKAGE_TARNAME "gtk+"
| #define PACKAGE_VERSION "3.22.1"
| #define PACKAGE_STRING "gtk+ 3.22.1"
| #define PACKAGE_BUGREPORT "http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2B"
| #define PACKAGE_URL ""
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:6166: checking whether /opt/local/bin/clang-mp-3.4 -arch ppc and cc understand -c and -o together
configure:6197: /opt/local/bin/clang-mp-3.4 -arch ppc -c conftest.c -o conftest2.o >&5
configure:6201: $? = 0
configure:6207: /opt/local/bin/clang-mp-3.4 -arch ppc -c conftest.c -o conftest2.o >&5
configure:6211: $? = 0
configure:6222: cc -c conftest.c >&5
configure:6226: $? = 0
configure:6234: cc -c conftest.c -o conftest2.o >&5
configure:6238: $? = 0
configure:6244: cc -c conftest.c -o conftest2.o >&5
configure:6248: $? = 0
configure:6266: result: yes

comment:44 Changed 2 years ago by ballapete (Peter Dyballa)

It's port doing this:

DEBUG: Environment: 
CC='/opt/local/bin/clang-mp-3.4 -arch ppc'
CC_PRINT_OPTIONS='YES'
CC_PRINT_OPTIONS_FILE='/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_gnome_gtk3/gtk3/work/.CC_PRINT_OPTIONS'
CFLAGS='-pipe -Os -fstrict-aliasing -arch ppc'
CPATH='/opt/local/include'
CPPFLAGS='-I/opt/local/include -DX_LOCALE'
CXX='/opt/local/bin/clang++-mp-3.4'
CXXFLAGS='-pipe -Os -stdlib=libstdc++ -arch ppc'
F77FLAGS='-m32'
F90FLAGS='-pipe -Os -m32'
FCFLAGS='-pipe -Os -m32'
FFLAGS='-pipe -Os'
INSTALL='/usr/bin/install -c'
LDFLAGS='-L/opt/local/lib -Wl,-headerpad_max_install_names -arch ppc'
LIBRARY_PATH='/opt/local/lib'
MACOSX_DEPLOYMENT_TARGET='10.5'
OBJC='/opt/local/bin/clang-mp-3.4'
OBJCFLAGS='-pipe -Os -arch ppc'
OBJCXX='/opt/local/bin/clang++-mp-3.4'
OBJCXXFLAGS='-pipe -Os -stdlib=libstdc++ -arch ppc'
DEBUG: Assembled command: 'cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_gnome_gtk3/gtk3/work/gtk+-3.22.1" && ./configure --prefix=/opt/local --enable-static --disable-glibtest --enable-introspection --disable-cloudprint --disable-mir-backend --disable-wayland-backend --disable-schemas-compile gio_can_sniff=yes --enable-xinerama --x-include=/opt/local/include --x-lib=/opt/local/lib --enable-x11-backend'
DEBUG: Executing command line:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_gnome_gtk3/gtk3/work/gtk+-3.22.1" && ./configure --prefix=/opt/local --enable-static --disable-glibtest --enable-introspection --disable-cloudprint --disable-mir-backend --disable-wayland-backend --disable-schemas-compile gio_can_sniff=yes --enable-xinerama --x-include=/opt/local/include --x-lib=/opt/local/lib --enable-x11-backend 

comment:45 Changed 2 years ago by ken-cunningham-webuse

OK, Peter, I might be able to help you. This works for me here on my 6 functional PPC machines.

  1. clang would not appear to be useful, at present, on PPC. Nobody on Earth likely knows more about this than Jeremy, and that's what he says above (comment 9). So I would suggest you uninstall your installations of clang-3.3 and clang-3.4 and forget about them for the time being. Perhaps someone might make clang-3.7 work on PPC one day, with libc++. I doubt it, but if so, then we will all flock to it. Until then, clang on PPC is not appearing to be an option to me at present.
  1. look at your /opt/local/etc/macports/macports.conf file and make sure you haven't messed with it at all. You want default values in there. If you added anything, strongly consider deleting it.
  1. clean out any partially-installed ports. Look in /opt/local/var/macports/build to see if you have any left behind. sudo port clean them.
  1. now you need to decide what to do. (Unless you feel you really know what you're doing, or are a glutton for punishment, I suggest you look carefully at option a.)
    1. Stick with ports that are known to work with the default toolchain and hope for someone to fix clang-3.7 someday. This is safest, but you won't be fully up-to-date with the world with every port, which may or may not matter to you. If you decide to do this, set up a local repository for ports (as I described in comment8 above). This takes 2 minutes to do. Move the older portfile for gtk3 @3.20.9_0 into there, with it's folder structure (gnome/gtk3). You are done. gtk3 will never again try to update. All other ports will move along. As you come across ports that won't update any longer, move them in there too. I have set up repositories like this for Tiger, Leopard, and SnowLeopard, and shared them on github. You can use mine if you want, or make your own.
    2. Use the default toolchain for most things, but when a port like gtk3 won't update, if you need the update, try a newer gcc. This works, as above (comment 28). $ sudo port -v install gtk3 configure.compiler=macports-gcc-6 will force gtk3 to install using the compiler of your choice, in this case gcc6. it will override any blacklisting in the portfile. If it builds successfully, which it does in this case, you won't know for certain if you might have a problem with c++ libraries. I believe, actually, everything will probably usually work corrrectly, but I know 0.01% of what Jeremy knows and he says you could have problems with c++ libraries doing this. Basically they could speak slightly different dialects. Some things may not interact correctly, even if they build correctly. You'll have to test them yourself. You might have problems. You might not.
    3. use gcc6 to build mostly everything, but use the default toolchain when gcc6 won't work. This would solve the dialect problem, if everything built with gcc6. Most things do, as it turns out. Unfortunately, a few ports do not. To do this, you either need to uninstall all your ports and start over (yuck), or at least identify the c++ ports (see comment 17 above) uninstall those, and proceed as below:

put this at the top of your /opt/local/etc/macports/macports.conf

cxx_stdlib        macports-libstdc++
buildfromsource   always
default_compilers macports-gcc-6 macports-gcc-5 macports-gcc-4.8 

this will override any compiler selections in the portfile, and it appears to override any blacklisting in the portfile as well and also, somewhat surprisingly, it seems to override the cxx11 portgroup. It just works. I haven't needed to touch a single portfile so far. Then try to reinstall your uninstalled ports. Certain ports will not build. When that happens, you might often find fixes in homebrew or on Google to make gcc6 work, as usually many have been down this road before. It's usually something simple, like better error checking in newer gcc versions that you need to override. Sometimes it is not simple (like fancier objective-c that gcc6 doesn't understand). In those cases, you need to temporarily disable your default compiler like this:

cxx_stdlib        macports-libstdc++
buildfromsource   always
#default_compilers macports-gcc-6 macports-gcc-5 macports-gcc-4.8 

build that one port that wouldn't build with gcc6 with the default toolchain (which it will do automatically for your), and then remove that # to re-enable your default compilers. Once again, the dialect problem might occur if the port contains c++ code. You'll have to test it out. Once again, I have never actually seen a problem doing this, but a problem could happen.

If you find you're mostly interested in open-source software for the PPC machine you're using, and the Mac software is no longer too relevant to you, it would make sense to look into PPC variants of Unix instead -- there are Debian and I believe Ubuntu versions for PPC that often will be installable.

Last edited 2 years ago by ken-cunningham-webuse (previous) (diff)

comment:46 Changed 2 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Note that cxx_stdlib macports-libstdc++ actually isn't supported by the toolchain. Having this in your macports.conf file right now has the nice effect of causing an error (basically, "I don't know what macports-libstdc++ is") if something ends up trying to use clang++ rather than g++-mp-6 to compile C++ code (which is what you want).

Option 4c is probably the best approach if you want a modern toolchain for darwin/ppc and don't have the expertise to push on the libunwind blockers for libc++ on Leopard.

comment:47 in reply to:  45 Changed 2 years ago by ballapete (Peter Dyballa)

Replying to ken.cunningham.webuse@…:

OK, Peter, I might be able to help you. I am not the world's expert on macports, gcc, clang, or anything else, but this works for me here on my 6 functional PPC machines.

I'll wait for a systematic update of MacPorts. Anyway, I won't have access to my PowerBook G4 the next four or five weeks.

comment:48 Changed 2 years ago by ballapete (Peter Dyballa)

With gtk33.22.5_0 I get on PPC Leopard a differrnt error:

ld: illegal text-relocation to cstring in .libs/libgdk_3_la-gdkcolor.o from _gdk_color_copy in .libs/libgdk_3_la-gdkcolor.o for architecture ppc

There seems to exist a cure, http://stackoverflow.com/questions/6650178/illegal-text-reloc-to-non-lazy-ptr-error-while-building-in-xcode-4-with-libav-l, but setting in Portfile

if {[variant_isset universal]} {
    foreach arch ${configure.universal_archs} {
        lappend merger_build_args(${arch})  CC='${configure.cc} -arch ${arch}'
        lappend merger_build_args(${arch})  CC_FOR_BUILD='${configure.cc} -arch ${arch} -Wl,-read_only_relocs suppress'
        lappend merger_build_args(${arch})  LDFLAGS='${configure.ldflags} -arch ${arch} -read_only_relocs suppress'
        lappend merger_destroot_args(${arch})  CC='${configure.cc} -arch ${arch}'
        lappend merger_destroot_args(${arch})  CC_FOR_BUILD='${configure.cc} -arch ${arch} -Wl,-read_only_relocs suppress'
        lappend merger_destroot_args(${arch})  LDFLAGS='${configure.ldflags} -arch ${arch} -read_only_relocs suppress'
    }
} else {
    build.args-append       CC="${configure.cc} ${configure.cc_archflags}" \
                            CC_FOR_BUILD="${configure.cc} ${configure.cc_archflags} -Wl,-read_only_relocs suppress" \
							LDFLAGS="${configure.ldflags} -read_only_relocs suppress"
    destroot.args-append    CC="${configure.cc} ${configure.cc_archflags}" \
                            CC_FOR_BUILD="${configure.cc} ${configure.cc_archflags} -Wl,-read_only_relocs suppress" \
							LDFLAGS="${configure.ldflags} -read_only_relocs suppress"
}

leads to only a few uses of -read_only_relocs suppress … At least the error is consistent.

comment:49 Changed 2 years ago by ballapete (Peter Dyballa)

Trying to build gtk3 with Quartz leads to other errors:

gdkevents-quartz.c:356:10: error: use of undeclared identifier 'NSEventTypeMagnify'
    case NSEventTypeMagnify:
         ^
gdkevents-quartz.c:357:10: error: use of undeclared identifier 'NSEventTypeRotate'
    case NSEventTypeRotate:
         ^

and

gdkevents-quartz.c:835:10: error: use of undeclared identifier 'NSEventTypeMagnify'
    case NSEventTypeMagnify:
         ^
gdkevents-quartz.c:836:10: error: use of undeclared identifier 'NSEventTypeRotate'
    case NSEventTypeRotate:
         ^

Changed 2 years ago by ballapete (Peter Dyballa)

Attachment: main.4.log added

main.log from gtk3 3.22.5, trying to build +quartz

comment:50 in reply to:  49 Changed 2 years ago by ballapete (Peter Dyballa)

Replying to ballapete:

Trying to build gtk3 with Quartz leads to other errors:

These can be fixed with the patch – but in the end the same text-relocation error breaks the build.

Changed 2 years ago by ballapete (Peter Dyballa)

Fixes in Leopard unknown NS Event Types

comment:51 Changed 2 years ago by ballapete (Peter Dyballa)

Half an hour ago I managed to build gtk3 @3.22.6_0+x11 (active) platform='darwin 9' archs='ppc' on PowerBook G4. First try with the default Portfile failed – I think this was the error:

ld: illegal text-relocation to cstring in .libs/libgdk_3_la-gdkcolor.o from _gdk_color_copy in .libs/libgdk_3_la-gdkcolor.o for architecture ppc

So I patched Portfile to compile with -fPIC. Hours later the complete build finished (now libgsf and graphviz are being rebuilt). gtk3-demo fails to launch. Error:

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000000

I'll try to build some Emacsen with GTK3 support and see whether they work.

A main.log is not available, the *compilation* buffer in GNU Emacs was lost because port too dumb to understand that it cannot rev-upgrade emacs @24.5_0+motif+x11 with the Portfile of GNU Emacs 25.1. Obviously Macports needs an upgrade to stow away the built port and its Portfile.

comment:52 Changed 2 years ago by ballapete (Peter Dyballa)

Oh, I should have mentioned that I had selected Clang 3.4 for clang.

comment:53 Changed 2 years ago by ballapete (Peter Dyballa)

Building GNU Emacs 24.5 with apple-gcc42 @5666.3_15+gpl3, the default compiler, succeeds, but launching it fails when I use GTK3. The other X toolkits work fine…

The GTK3 error, whatever it means, maybe just a personal misconfigaration, is:

(emacs:46373): Gtk-CRITICAL **: gtk_accelerator_parse_with_keycode: assertion 'accelerator != NULL' failed
Fatal error 10: Bus error
Backtrace:
0   emacs                               0x000f0754 emacs_backtrace + 96
1   emacs                               0x000cffb4 terminate_due_to_signal + 136
2   emacs                               0x000ee6e0 get_random + 0
3   emacs                               0x000eeae4 init_signals + 648
4   libSystem.B.dylib                   0x90fe289c _sigtramp + 68
Bus error (core dumped)
Exit 138

CrashReporters tells:

Thread 0 Crashed:
0   libSystem.B.dylib             	0x90fe49f0 __kill + 12
1   emacs                         	0x000cffd8 terminate_due_to_signal + 172

Thread 1:
0   libSystem.B.dylib             	0x90fc6c14 select$DARWIN_EXTSN + 12
1   libglib-2.0.0.dylib           	0x011fdce4 g_poll + 440
2   libglib-2.0.0.dylib           	0x011f0304 g_main_context_iterate + 348
3   libglib-2.0.0.dylib           	0x011f0610 g_main_context_iteration + 64
4   libglib-2.0.0.dylib           	0x011f0668 glib_worker_main + 48
5   libglib-2.0.0.dylib           	0x01216f94 g_thread_proxy + 160
6   libSystem.B.dylib             	0x90fa4f70 _pthread_start + 316

Thread 0 crashed with PPC Thread State 32:
  srr0: 0x90fe49f0  srr1: 0x0000f030   dar: 0xe10db674 dsisr: 0x40000000
    r0: 0x00000025    r1: 0xbfffc0b0    r2: 0x00000520    r3: 0x00000000
    r4: 0x00000000    r5: 0x00000001    r6: 0x00003638    r7: 0x00000000
    r8: 0x00000002    r9: 0x00000208   r10: 0x00000000   r11: 0xa02aa52c
   r12: 0x90fe49dc   r13: 0x00000013   r14: 0x00b6d2a0   r15: 0x00000000
   r16: 0x02c0cac0   r17: 0x0000009f   r18: 0xbfffcaf0   r19: 0xbfffc9bc
   r20: 0x011a6b18   r21: 0x011a84c8   r22: 0xbfffc9bc   r23: 0xbfffcaf0
   r24: 0x00000003   r25: 0x00000000   r26: 0x00000044   r27: 0xbfffc288
   r28: 0x003eea50   r29: 0x00000028   r30: 0x0000000a   r31: 0x000cff34
    cr: 0x42222222   xer: 0x00000004    lr: 0x000cffdc   ctr: 0x90fe49dc
vrsave: 0xbfffd4c1

This must not necessarily be a GTK3 issue – Clang34 cannot produce any variant of GNU Emacs, neither X11 nor AppKit (ns) nor the mac based one. Either already temacs crashes or the built emacs binary – what is this software good for? Fill up empty space on the disk? But GCC6 can. And the built GNU Emacs 24.5 GTK3 variant also crashes and it does so of the same reason and at quite the same addresses. So the build of GTK3 is quite useless – well, built with Clang!

So I'll tried to install gtk3 +x11 configure.compiler=macports-gcc-6

comment:54 Changed 2 years ago by ballapete (Peter Dyballa)

GCC 6.2.0 at least can change the error GNU Emacs produces when crashing upon launch, besides creating runable binaries:

emacs:44300): Gtk-WARNING **: gtk_window_parse_geometry() called on a window with no visible children; the window should be set up before gtk_window_parse_geometry() is called.

(emacs:44300): Gtk-CRITICAL **: gtk_distribute_natural_allocation: assertion 'extra_space >= 0' failed

And GTK3 can perform one thing reliably well: Launching another completely useless X server. Which reminds me of MS Windows.

comment:55 Changed 2 years ago by ballapete (Peter Dyballa)

No, that's wrong: The GCC 6.2.0 compiled GNU Emacs 24.5 with GTK3 toolkit comes up and runs! (It was just buried below other windows.)

comment:56 Changed 2 years ago by ballapete (Peter Dyballa)

Even better: A working GNU Emacs 24.5 with GTK3 toolkit can also be compiled with apple-gcc-4.2.4. So it's probably better to rely on GCC 6 than on Clang. At least on PPC Leopard. I am going to test on PPC Tiger.

comment:57 Changed 2 years ago by kencu (Ken)

go up and look at comment 45 from three months ago when we first worked this out, for a more long-lasting solution. It does work on Tiger.

Last edited 2 years ago by kencu (Ken) (previous) (diff)

comment:58 Changed 2 years ago by kencu (Ken)

I suppose I should rebuild libgcc to default to gcc4-compatible ABI mode on 10.4 and 10.5 PPC if I'm going to do this. I wonder if that would make it fully-compatible with the system's libstdc++, or just less-incompatible?

<https://gcc.gnu.org/onlinedocs/libstdc++/manual/configure.html>

--with-default-libstdcxx-abi=gcc4-compatible

comment:59 Changed 2 years ago by dgonyier (Dwaine Gonyier)

Cc: dgonyier added

comment:60 Changed 20 months ago by kencu (Ken)

Adding PortGroup cxx11 1.1 and removing the other blacklisting would now appear to be the most appropriate way to solve the toolchain issues in this ticket. Works fine on 10.4 and 10.5 PPC using gcc6, and provides the clang version minimums previously indicated in the Portfile for the Intel builds.

comment:61 Changed 17 months ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Cc: MarcusCalhoun-Lopez added

comment:62 Changed 17 months ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

I believe there may be a misunderstanding here.
gtk3 requires C11 not C++11.
Therefore, the C++ standard library compatibility issue is not relevant.

comment:63 Changed 17 months ago by kencu (Ken)

Yes, probably so. In the end, the cxx11 1.1 PortGroup does fix this build, but it does so by forcing appropriate compilers and not via the cxx11 compatibility flag.

comment:64 in reply to:  63 Changed 17 months ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Replying to kencu:

Yes, probably so. In the end, the cxx11 1.1 PortGroup does fix this build, but it does so by forcing appropriate compilers and not via the cxx11 compatibility flag.

#55139 is an attempt to solve this problem in a more general way.

comment:65 Changed 17 months ago by ballapete (Peter Dyballa)

Meanwhile gtk3 @3.22.25_0+x11 has built with GCC 6.

Last edited 17 months ago by ballapete (Peter Dyballa) (previous) (diff)

comment:66 Changed 12 months ago by kencu (Ken)

Resolution: fixed
Status: assignedclosed

closed by this commit.

Last edited 4 months ago by ryandesign (Ryan Schmidt) (previous) (diff)
Note: See TracTickets for help on using tickets.