The current beta of ooRexx 5.0.0 installed on Linux systems does not allow libraries to successfully link to librexx.so and librexxapi.so. The reason being that the symbolic links are missing for the major version 4 (librexx.so.4). ooRexx 4.2.0 has even more symbolic linkds to its shared objects with major version numbers 3 and 2.
Or with other words: please add also all symbolic links to librexx*.so that ooRexx 4.2.0 does.
Anonymous
Yesterday, I noticed that the ooRexx 5.0 libraries (like librexxapi.so) get a link with a trailing "5.0.0" (like librexxapi.so.5.0.0) but no "5" (like librexxapi.so.5), no "4" (like librexxapi.so.4), no "3" (like librexxapi.so.3) and no "2" (like librexxapi.so.2), which seems to not be correct, because breaking existing programs that got linked with pre-5 versions of ooRexx.
So Cmake for Linux should create the symlinks to 4, 3 and 2 versions of all libraries to allow programs compiled to those versions of ooRexx to keep running. Otherwise at load time a missing file error will be raised and the program would not be started anymore.
This bug report does not carry the full information, so I copy the e-mail from 2017-01-26, 14:12 (oorexx developer list), which gives some more explanations:
Hi Michael,
On 26.01.2017 12:55, Michael Lueck wrote:
Maybe I should file a bug/RFE (also for the security manager issue).
---rony
So what you want is:
Correct?
Similarly for the other libs, I presume?
Last edit: Alexander Adolf 2018-01-30
Hi Alexander,
it seems that from earlier installations the pattern was:
Not sure why the Linux version I looked at (listed in the initial bug description above) would include the path into the symbolic link (not really knowing such Linux/MacOSX details).
Yes, it should also pertain to all the other libs.
Thank you very much for looking into this!
Best regards,
---rony
(I'm typing this for the 3rd time over now; many thanks SF for the brand new web interface with no local storage at all...)
I have researched and experimented a bit, and it turns out this is non-trivial with
cmake
.cmake
uses the follwoing scheme to create symlinks under a generic name:Search the
cmake
docs forNAMELINK_ONLY
andNAMELINK_SKIP
.To get the symlinks you are lookimg for, we would need the inverse scheme, however.
To me, it would seem that creating such compatibility symilnks would best fit as a postinstall script for an installer package. There may be ways to get this with
cpack
, but with which I have zero experience.I hence afraid that I will have to leave this to the
cpack
, and deb/rpm experts out there. Sorry for not havig better news!Thank you very much for looking into this! (Had hoped that a pure CMake solution would be possible.)
The enclosed patch creates symbolic links on Unix systems. Tested with MacOS, Linux and Windows.
The enclosed patch is basically the same as "patch-sym-links.txt" as of two days ago with the following changes:
to turn down verbosity a message() statement got commented and an unneeded comment got removed
the library and archive output directory got changed from "bin" to "lib" as per recommendation of Enrico Sorchetti
* the logic for naming the 64-bit rpm (Fedora) installation package got changed to correctly includ the string "x86_64" in its name; test follows the deb logic
The enclosed patch was successfully used in creating ooRexx for Windows, Linux and MacOSX r11661 today.
I assume this patch was committed with [r11670] Additional Mac changes plus addition of symbolic links.
The links created now look suspicious to me (see below ...
so.nnn
vs. ...n.so
)Would a 2.x native library be looking for /usr/lib/librexx.so.2 (or whatever the correct name was)?
Do we really need to provide for Rexx 2.x backwards compatibility?
Related
Commit: [r11670]
I don't think we should claim complete compatibility with anything before the first ooRexx release, which would have been 3.0.0. And I agree, those links look dodgy.
Indeed, the non-Apple links need to have the version number after the so name. The enclosed patch adjusts the CMakeList.txt file accordingly and starts the symbol link generation with version 3, instead of 2.
Tested on Apple and Linux.
Committed patch wih revision [r11680]
Related
Commit: [r11680]