Re: OpenMotif fails to run
Re: OpenMotif fails to run
- Subject: Re: OpenMotif fails to run
- From: Tom Roberts <email@hidden>
- Date: Thu, 08 Sep 2016 13:24:35 -0500
- Organization: Muons, Inc.
Thank you very much. Note that using libXt.6.dylib from 2.7.9 did
NOT solve my problem.
By downgrading XQuartz to 2.7.8 I am able to build and run my
large program on El Capitan (so I did not bother with the test
program).
I look forward to this issue between OpenMotif and XQuartz being
resolved. I won't be involved, as I know nothing about either (my
code uses neither, but it uses 3rd-party libraries that use both).
This incompatibility is a burden, as my application bundle must
grow to include all of the X11 libraries.
Tom Roberts
On 9/8/16 9/8/16 - 2:47 AM, Jeremy
Huddleston Sequoia wrote:
Yes, openmotif is buggy here and needs to be fixed. libXt used to build with -flat_namespace in order to support buggy coding paradigms used by OpenMotif and libXaw. libXt was fixed to use proper namspacing and libXaw and libXaw3d were updated as well to not require that buggy hack (eg: https://cgit.freedesktop.org/xorg/lib/libXaw/commit/?id=b3049d9b13333c0e67f1f23959227020741f486b). Openmotif needs to follow suit with a similar change.
Note that XQuartz continues to ship libXt.6.dylib built with -Wl,-flat_namespace in order to maintain binary compatibility with existing openmotif binaries. The 2-level-namespace version was shipped as libXt.7.dylib. Unfortunately, executables that make use of openmotif and libXaw sometimes don't work at all because they pull in both versions of libXt and end up with library cross-talk. I really regret that wasn't discovered in the months of beta and rc testing in which this change was available. Had it been known before release, I probably would've scrapped the version bump and stayed with a single libXt version (the one with the 2-level namespace), informing OpenMotif users to stay on an older version of XQuartz until OpenMotif released a fix.
This was discussed in IRC back in January (see https://echelog.com/logs/browse/macports/1452121200) and do some other google searches for vendorShellClassRec and vendorShellWidgetClass. Here's a snippit of that conversation that is relevant:
[08:32:38] <jeremyhu_> howarth: FWIW, you should spend your effort trying to fix openmotif instead.
[08:32:41] <howarth> doesn't force the replacement of the existing tcl/tk ports that are installed when building pymol
[08:32:59] <jeremyhu_> See
http://pastebin.com/vdaq1gwD
as a suggested starting point. It looks like it needs additional work though because nedit doesn't launch with it.
[08:35:45] <jeremyhu_> howarth: A quick look through looks like there are a bunch of vendorShellClassRec references that I need to get pointed at _XmVendorShellClassRec instead.
On Sep 7, 2016, at 14:37, Tom Roberts <email@hidden> wrote:
This is Mac OS X 10.11.6 (El Capitan) with XQuartz 2.7.9. I installed OpenMotif 2.3.4 using HomeBrew (so it's in /usr/local). I have a very large program that uses Motif, which fails now, but worked when built on Mavericks with an older XQuartz; I traced its problem to Motif, and Motif's problem seems to be related to libXt.
I found a simple Motif example here (attached, after fixing two trivial warnings in this old code)
https://www.cs.cf.ac.uk/Dave/X_lecture/node5.html
It builds in the usual way:
gcc -I/usr/local/include -I/opt/X11/include push.c /usr/local/lib/libXm.dylib \
/opt/X11/lib/libXt.dylib
But it does not run, with an error similar to my large program:
a.out
Error: attempt to add non-widget child "dsm" to parent "a.out" which supports only widgets
BTW I have also seen these error messages from my large program when trying different combinations:
Error: Couldn't find per display information
Warning: XmManager ClassInitialize: XmeTraitSet failed
Error: attempt to add non-widget child "DropSiteManager" to parent "main" which \
supports only widgets
_XmGetDefaultDisplay cannot be used prior to VendorS.Initialize, returns NULL
(I believe this last is from incorrectly linking libXt before libXm.)
In desperation I went back to the old versions of libXm and libXt (that work in my large program, built on Mavericks and runs now on El Capitan; libXm.2.dylib came from its bundle):
gcc -I/usr/local/include -I/opt/X11/include push.c /usr/local/lib/libXm.2.dylib \
/opt/X11/lib/libXt.6.dylib
a.out
Warning: Cannot find callback list in XtAddCallback
A window pops up with the push button, but pushing the button does not print the message (as the warning suggests). That's why I suspect the problem is in XQuartz and not OpenMotif. (It's possible my large program does not use this feature of libXt.)
Help, please!
(I also have an inquiry in homebrew-discuss with subject "openmotif fails to run".)
<push.c> _______________________________________________
Do not post admin requests to the list. They will be ignored.
X11-users mailing list (email@hidden)
This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
X11-users mailing list (email@hidden)
This email sent to email@hidden
|
_______________________________________________
Do not post admin requests to the list. They will be ignored.
X11-users mailing list (email@hidden)
This email sent to email@hidden