Brian_Cowan
August 5th, 2015, 08:58 PM
When starting a legacy Motif 2.2 application on an Ubuntu 14.04 host, we get this little bit of fun:
symbol lookup error: [redacted path]: undefined symbol: XmRedisplayWidget
The application worked fine on Red hat Linux 6.everything. (with openmotif installed)
After a lot of digging, we found out that after installing libmotif[-common|3|4] and libmotif[-common|3|4]:i386, libXm.so.3 was actually a symlink to libXm.so.4. And a quick "strings" check confirmed that the symbol wasn't defined. On a RHEL 6.6 system, libXm.so.3 was a symlink to libXm.so.3.0.2, and contained that symbol reference.
I look in the man pages and that widget call is in the man pages that came along for the ride when I installed libmotif-dev.
What we wound up doing was grabbing an older version of libmotif3, and then manually installing it:
mkdir libmotif
cd libmotif
wget http://hr.archive.ubuntu.com/ubuntu/pool/multiverse/o/openmotif/libmotif3_2.2.3-4_i386.deb
dpkg -x ./libmotif3_2.2.3-4_i386.deb .
<copy/move appropriate libraries>
Now here is the question, the lack of a *documented* symbol in a library is a defect, but whose? Is this a Canonical packaging issue, or an openmotif issue? Essentially, "who do we yell at?" which is the biggest question when dealing with open source. Is Libmotif4 supposed to be fully backwards compatible with libmotif3? If I look at https://motif.ics.com/motif/downloads I see that it claims that the "latest" is 2.3.4-1, yet apt --installed list says:
libmotif-common/trusty,now 2.3.4-5 all [installed]
libmotif3/trusty,now 2.3.4-5 amd64
libmotif4/trusty,now 2.3.4-5 amd64
Incidentally, the XmRedisplayWidget symbol *is* in the 2.3.4-1 download from https://motif.ics.com/motif/downloads. But finding the source/changelog for the -5 version seems to be a challenge. So, we wind up with the same question... is -5 a Canonical thing or an Integrated Computer Solutions thing?
symbol lookup error: [redacted path]: undefined symbol: XmRedisplayWidget
The application worked fine on Red hat Linux 6.everything. (with openmotif installed)
After a lot of digging, we found out that after installing libmotif[-common|3|4] and libmotif[-common|3|4]:i386, libXm.so.3 was actually a symlink to libXm.so.4. And a quick "strings" check confirmed that the symbol wasn't defined. On a RHEL 6.6 system, libXm.so.3 was a symlink to libXm.so.3.0.2, and contained that symbol reference.
I look in the man pages and that widget call is in the man pages that came along for the ride when I installed libmotif-dev.
What we wound up doing was grabbing an older version of libmotif3, and then manually installing it:
mkdir libmotif
cd libmotif
wget http://hr.archive.ubuntu.com/ubuntu/pool/multiverse/o/openmotif/libmotif3_2.2.3-4_i386.deb
dpkg -x ./libmotif3_2.2.3-4_i386.deb .
<copy/move appropriate libraries>
Now here is the question, the lack of a *documented* symbol in a library is a defect, but whose? Is this a Canonical packaging issue, or an openmotif issue? Essentially, "who do we yell at?" which is the biggest question when dealing with open source. Is Libmotif4 supposed to be fully backwards compatible with libmotif3? If I look at https://motif.ics.com/motif/downloads I see that it claims that the "latest" is 2.3.4-1, yet apt --installed list says:
libmotif-common/trusty,now 2.3.4-5 all [installed]
libmotif3/trusty,now 2.3.4-5 amd64
libmotif4/trusty,now 2.3.4-5 amd64
Incidentally, the XmRedisplayWidget symbol *is* in the 2.3.4-1 download from https://motif.ics.com/motif/downloads. But finding the source/changelog for the -5 version seems to be a challenge. So, we wind up with the same question... is -5 a Canonical thing or an Integrated Computer Solutions thing?