Bonsoir Jean-Louis,

today I finished up a new version of BSF4ooRexx that should work in this 
use-case. You can get it
from
<https://sourceforge.net/projects/bsf4oorexx/files/beta/20200928/BSF4ooRexx_install_v641-20210719-beta.zip/download>.
(This version got tested against MacOS, Linux and Windows.)

If you test this version in your environment then please let me know of any 
difficulties or problems
that you encounter. (This version of BSF4ooRexx is still supposed to be usable 
against ooRexx 4.1
and higher, however 5.0 is *strongly* advised due to its stable 
multithreadingness. For that reason
some JavaFX samples will deny being run on ooRexx prior to 5.0. This is another 
reason for me to ask
for a release version of ooRexx 5.0 beta *as is*, as it is much stabler, faster 
and powerful than
any earlier version of ooRexx.)

---rony


On 18.07.2021 00:02, Jean Louis Faucher wrote:
> Gute nacht Rony
>
> I have an atypical configuration where I use DYLD_LIBRARY_PATH to locate the 
> BSF4OORexx library.
> This is because I don’t “install” BSF4OORexx, I just unzip the delivery, copy 
> and rename the
> libraries to bsf4oorex/install/64
> With this configuration, your test cases are working (not saying this is the 
> solution).
>
>
> If I don’t set DYLD_LIBRARY_PATH, I get the same error than yours.
>
> I compared the output of the next command in both cases
> DYLD_PRINT_LIBRARIES="1" DYLD_PRINT_APIS="1" rexx -e "call bsf.cls”
>
> In the working session:
> dlopen(librexxapi.dylib, 0x00000001)
>   dlopen(librexxapi.dylib) ==> 0x10936da50
> dlopen(libBSF4ooRexx.dylib, 0x00000001)
> dyld: loaded:
> /local/rexx/bsf4oorexx/BSF4ooRexx_install_v641-20210715-beta/bsf4oorexx/install/64/libBSF4ooRexx.dylib
> dyld: loaded:
> /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/server/libjvm.dylib
> dyld: loaded: /usr/lib/libstdc++.6.0.9.dylib
>
> In the not working session:
> dlopen(librexxapi.dylib, 0x00000001)
>   dlopen(librexxapi.dylib) ==> 0x10dd4a990
> dlopen(libBSF4ooRexx.dylib, 0x00000001)
>   dlopen() failed, error: 'dlopen(libBSF4ooRexx.dylib, 1): image not found'
> dlopen(/usr/lib/libBSF4ooRexx.dylib, 0x00000001)
>   dlopen() failed, error: 'dlopen(/usr/lib/libBSF4ooRexx.dylib, 1): image not 
> found'
>    919 *-* ::routine xBSF                   PUBLIC   EXTERNAL "LIBRARY 
> BSF4ooRexx BSF            
>     "
>      1 *-* call bsf.cls
> Error 98 running 
> /local/rexx/bsf4oorexx/BSF4ooRexx_install_v641-20210715-beta/bsf4oorexx/BSF.CLS
> line 919:  Execution error.
> Error 98.903:  Unable to load library "BSF4ooRexx".
>
> I find "/usr/lib” in one file:
> SysLibrary.cpp
>
>     // try loading directly
>     libraryHandle = dlopen(nameBuffer, RTLD_LAZY);
>     // if not found, then try from /usr/lib
>     if (libraryHandle == NULL)
>     {
>         sprintf(nameBuffer, "/usr/lib/lib%s%s", name, ORX_SHARED_LIBRARY_EXT);
>         libraryHandle = dlopen(nameBuffer, RTLD_LAZY);
>
> The part to investigate is how to make the first dlopen work without using 
> DYLD_LIBRARY_PATH:
> If I put libBSF4ooRexx.dylib in the lib folder of oorexx then it works 
> (RPATH).
> If I put libBSF4ooRexx.dylib in the current directory then it works (see man 
> dlopen).
> I don’t know if other solutions are possible for the first dlopen
>
> The other solution could to add “/usr/local/lib” as 2nd fallback.
> But that brings the question of order.
> Maybe a more general solution would be to use an environment variable like 
> REXX_LIBRARY_PATH.
> We have already REXX_PATH for locating the rexx files.
>
>
> Jean-Louis
>
>> On 17 Jul 2021, at 21:56, Rony G. Flatscher <rony.flatsc...@wu.ac.at
>> <mailto:rony.flatsc...@wu.ac.at>> wrote:
>>
>> On MacOSX the BSF4ooRexx library is named "libBSF4ooRexx.dylib".
>>
>> Testing the changes in the BSF4ooRexx installation scripts and then testing 
>> the resulting
>> installations surfaced a problem on MacOSX: libBSF4ooRexx.dylib can be 
>> loaded via Java and used
>> successfully.
>>
>> However, loading "libBSF4ooRexx.dylib" via ooRexx is not successful. To be 
>> precise, the
>>
>>     ::routine xbsf PUBLIC EXTERNAL "LIBRARY BSF4ooRexx BSF"
>>
>> fails with the execution error:
>>
>>     Error 98.903: Unable to load library "BSF4ooRexx".
>>
>> Here two rexxtry.rex sessions, the first one is run with "rexxj.sh 
>> /usr/local/bin/rexxtry.rex"
>> which loads a Java program that will load the BSF4ooRexx library to then 
>> execute
>> /usr/local/bin/rexxtry.rex. This is followed by a "rexx rexxtry.rex" session 
>> which yields the
>> exection error. This is then followed by the "rexx -e" statement which does 
>> a call BSF.CLS which
>> then shows the full error message:
>>
>>     rony@ronymac2014 ~ % rexxj.sh /usr/local/bin/rexxtry.rex 
>> REXX-ooRexx_5.0.0(MT)_64-bit 6.05 12
>>     Jul 2021 rexxtry.rex lets you interactively try REXX statements. Each 
>> string is executed when
>>     you hit Enter. Enter 'call tell' for a description of the features. Go 
>> on - try a few...
>>     Enter 'exit' to end. call bsf.cls 
>> .............................................. rexxtry.rex
>>     on DARWIN say .bsf4rexx~display.version ooRexx 5.0.0 r12280 (12 Jul 
>> 2021) / BSF 641.20210715
>>     / Java 1.8.0_162, 64-bit / Darwin 20.5.0 
>> ..............................................
>>     rexxtry.rex on DARWIN exit
>>     rony@ronymac2014 ~ % rexxtry.rex REXX-ooRexx_5.0.0(MT)_64-bit 6.05 12 
>> Jul 2021 rexxtry.rex
>>     lets you interactively try REXX statements. Each string is executed when 
>> you hit Enter. Enter
>>     'call tell' for a description of the features. Go on - try a few... 
>> Enter 'exit' to end. call
>>     bsf.cls Oooops ! ... try again. Execution error. Unable to load library 
>> "BSF4ooRexx". rc =
>>     98.903 .................................. rexxtry.rex on DARWIN exit
>>     *rony@ronymac2014 ~ % rexx -e "call bsf.cls"****919 *-* ::routine xBSF 
>> PUBLIC EXTERNAL
>>     "LIBRARY BSF4ooRexx BSF "****1 *-* call bsf.cls****Error 98 running 
>> /usr/local/bin/BSF.CLS
>>     line 919: Execution error.****Error 98.903: Unable to load library 
>> "BSF4ooRexx".*
>>     rony@ronymac2014 ~ % 
>>
>> It is the first of five external "LIBRARY BSF4ooRexx XXX" directives (these 
>> five external
>> function names are: "BSF", "BsfCreateRexxProxy", "BsfRexxProxy", 
>> "BsfUninit4JavaBean",
>> "BsfLoadJava"). So it is the first time the "BSF4ooRexx" library needs to be 
>> proecessed by ooRexx
>> in this way.
>>
>> This was tested against the Sourceforge version of ooRexx r12280, July 12 
>> 2021.
>>
>> Is there anything I could do to help pinpoint the problem?
>>
>> ---rony
>>

_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to