#18181: openmotif apps (xpdf, grace) fail to run in Leopard ------------------------------------+--------------------------------------- Reporter: macosx12345@… | Owner: ricci@… Type: defect | Status: assigned Priority: Normal | Milestone: Port Bugs Component: ports | Version: 1.7.0 Keywords: motif non-widget child | Port: openmotif ------------------------------------+--------------------------------------- Comment(by cjdeloye@…): Replying to [ticket:18181 macosx12345@…]: I experienced the same problem on OS X 10.4.11 (both PPC and i386) trying to use xmgrace (port: grace) AFTER upgrading to macports v. 1.70 and doing a "port upgrade outdated". The problem seems to come in from two name conflicts (_vendorShellWidgetClass, _vendorShellClassRec ) between libXm and the /opt/local/lib/libXt. My setup default is to use /usr/X11R6 not the /opt/local Xorg version of X11, so the linking against the Xorg libraries was unexpected. The linking error I get when doing a 'port -v build openmotif' is {{{ /usr/libexec/gcc/powerpc-apple-darwin8/4.0.1/ld: warning multiple definitions of symbol _vendorShellWidgetClass /opt/local/lib/libXm.dylib(VendorS.o) definition of _vendorShellWidgetClass /opt/local/lib/libXt.dylib(Vendor.o) definition of _vendorShellWidgetClass /usr/libexec/gcc/powerpc-apple-darwin8/4.0.1/ld: warning multiple definitions of symbol _vendorShellClassRec /opt/local/lib/libXm.dylib(VendorS.o) definition of _vendorShellClassRec /opt/local/lib/libXt.dylib(Vendor.o) definition of _vendorShellClassRec }}} After experimenting, I could get openmotif to compile and successfully ran its demo binaries in /opt/local/share/Xm when forcing linking openmotif against the OS X system version of X11. The problem I was running into was that the default linker flag order appears to be '-L/opt/local/lib -L/usr/X11R6/lib', which drags in the macports Xorg libraries instead of the system X11 libs. Thus, a temporary solution to this problem (albeit temporary and inelegant and which may not work on OS X 10.5 since the system X11 implementation is different) is to modify the openmotif Portfile to ensure that the /usr/X11R6/ branch is looked at before /opt/local by the compiler and linker. Applying the following patch to the Portfile (which also removes the Xorg dependencies from the openmotif port) accomplishes this and produced a working openmotif package for me. To get xmgrace to work, similar changes to the configure.ldflags and configure.cppflags in the grace Portfile were made. {{{ --- Portfile.org 2009-03-05 17:00:33.000000000 -0600 +++ Portfile 2009-03-05 17:06:29.000000000 -0600 @@ -33,12 +33,6 @@ port:jpeg \ port:libpng \ port:libiconv \ - port:xorg-libsm \ - port:xorg-libXext \ - port:Xft2 \ - port:xorg-libXmu \ - port:xorg-libXp \ - port:xorg-libXt patchfiles patch-demos-programs-peridoc-Makefile.in.diff \ patch-lib-Mrm-Makefile.in.diff @@ -50,14 +44,14 @@ # This block helps us link correctly and setup our pc files correctly when we are # +system_x11 and x11prefix is somewhere non-standard -if { ![file exists ${prefix}/lib/pkgconfig/x11.pc] && ![file exists ${x11prefix}/lib/pkgconfig/x11.pc] } { +#if { ![file exists ${prefix}/lib/pkgconfig/x11.pc] && ![file exists ${x11prefix}/lib/pkgconfig/x11.pc] } { # AC_X_PATH blindly asks xmkmf where X11 is, and it always uses /usr/X11R6. # These next three lines should cause AC_X_PATH to let us setup our CPPFLAGS # and LDFLAGS without interference configure.args-append --x-include=${prefix}/include --x-lib=${prefix}/lib - configure.cppflags-append -I${x11prefix}/include - configure.ldflags-append -L${x11prefix}/lib -} + configure.cppflags -I${x11prefix}/include -I${prefix}/include + configure.ldflags -L${x11prefix}/lib -L${prefix}/lib +#} configure.args --mandir=${prefix}/share/man \ --enable-xft \ }}} -- Ticket URL: <http://trac.macports.org/ticket/18181#comment:21> MacPorts <http://www.macports.org/> Ports system for Mac OS