Re: OpenMotif fails to run
Re: OpenMotif fails to run
- Subject: Re: OpenMotif fails to run
- From: César <email@hidden>
- Date: Thu, 08 Sep 2016 23:40:55 +0200
I cannot check how I did it, because I'm not at the computer right now, but I successfully build and run large Motif apps on 2.7.9 on El Cap. Note that I'm not using OpenMotif anymore (the current Motif release dropped the "Open" prefix while moving to LGPL). Another point that might be of interest is that I'm statically linking with Motif. Also, I had to deal with the flat namespace stuff, I don't remember if this meant to use some linker flag or some specially named lib (but I didn't compile Xt myself, I use the 2.7.9 XQuartz bundled libs.
César
El jueves, 8 de septiembre de 2016, Jeremy Huddleston Sequoia <
email@hidden> escribió:
> On Sep 8, 2016, at 12:11, Tom Roberts <email@hidden> wrote:
>
> Ok. Thanks. I'll try copying libXt.6.dylib from 2.7.8 into my build tree for Darwin, then install XQuartz 2.7.9 and build, including it in the bundle. I suspect that this might work, and will be much less growth in the bundle.
>
> I don't know why libXt.6.dylib from 2.7.9 doesn't work for me (if it did, I would have solved this a week ago without asking questions on multiple developer email lists).
I suspect because you are using libXaw as well.
Note that libXt.6.dylib is unchanged between 2.7.8 and 2.7.9.
>
> Tom Roberts
>
>
> On 9/8/16 9/8/16 - 1:28 PM, Jeremy Huddleston Sequoia wrote:
>>> On Sep 8, 2016, at 11:24, Tom Roberts <email@hidden> wrote:
>>>
>>> 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.
>> It shouldn't need to. Do you have a dependency on libXaw or libXaw3d? If so, you can just build your own replacements of those libraries that link against libXt.6.dylib instead of libXt.7.dylib.
>>
>> I have some thoughts about improving the fallback case that will require a bit more manual intervention but will be more reliable and I'll include that in the next release when I get some cycles to put out an rc1.
>>
>>> 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
>>>>> )
>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>
>>>>>
>>>>> This email sent to
>>>>> email@hidden
>>>>
>>>> _______________________________________________
>>>> Do not post admin requests to the list. They will be ignored.
>>>> X11-users mailing list (
>>>> email@hidden
>>>> )
>>>> Help/Unsubscribe/Update your Subscription:
>>>>
>>>>
>>>> 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