Outdated dependency
Description
I installed OMSimulator in a virtual environment using pip. Trying to execute OMSimulator I recieve the following error:
OSError: libicuuc.so.66: cannot open shared object file: No such file or directory
After some googling I applied this workaround which solves the issue.
However, it would be nice if this dependency was updated to a more recent version or ideally included.
Steps to reproduce the behavior
- Create and activate virtual environment
- Install OMSimulator using pip
python3 -m venv .venv
. ./.venv/bin/activate
- Create a simple python script (in current location)
# test.py
from OMSimulator import OMSimulator
oms = OMSimulator()
version = oms.getVersion()
print(version)
- Execute script
python3 test.py
Expected behavior
error message:
OSError: libicuuc.so.66: cannot open shared object file: No such file or directory
Version and OS
- Version: OMSimulator v2.1.1.post257-g1eb92ef-linux-notlm
- OS: Ubuntu 22.04.5 LTS
@arun3688 Do you have time to comment on this issue?
@robha67 @danlo76 i am not a linux user, but in general libicuuc.so.66 should be default installed in Ubuntu Operating System, I think these are system libraries and not part of OMSimulator
@arun3688 But if I understand @danlo76 correctly, the issue only occurs when installing OMSimulator using pip.
@arun3688 @robha67 I believe the libicuuc.so.66 was the default version installed in Ubuntu 20.04, but we are currently using Ubuntu 22.04 where libicuuc.so.70 is default.
@danlo76 so it is a os problem? if so, can we close this issue?
@robha67 at the risk of not understanding, I would still argue that this is an OMSimulator issue. As stated in the description there is a workaround but it seems problematic if a specific version of the library is required which is installed only on specific OS versions. @arun3688 this is not my field of expertise. Feel free to close the issue if you feel I am wrong.
@danlo76 If I understand you correctly, there is currently an OMSimulator dependency to an old version of the libicuuc.so. @arun3688 could this be updated?
@robha67 correct. At least for the version stated if installed using pip.
@robha67 @danlo76 I can reproduce the problem in WSL and I found that it is not related with version libicuuc.so.66, but the how the prebuilt binaries in linux are linked with libOMSimulator.so, because in windows i can see it is build and linked with libicuuc74.dll and it works see below, may be the linux server which we are building the artifacts has only libicuuc.so.66 and OMSimulator is linked with that version and when you download from pip it complains about the error, As you said it happens only with pip package, but if you build the OMSimulator as stand alone package, it will be linked with the latest available libicuuc version and it will work
# ldd build/bin/libOMSimulator.dll
ntdll.dll => /c/WINDOWS/SYSTEM32/ntdll.dll (0x7ffb1ab70000)
KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7ffb19370000)
KERNELBASE.dll => /c/WINDOWS/System32/KERNELBASE.dll (0x7ffb17ee0000)
msvcrt.dll => /c/WINDOWS/System32/msvcrt.dll (0x7ffb18ad0000)
ucrtbase.dll => /c/WINDOWS/System32/ucrtbase.dll (0x7ffb18610000)
libgcc_s_seh-1.dll => /c/OPENMODELICAGIT/OpenModelica/build/bin/libgcc_s_seh-1.dll (0x7ffafc8c0000)
libwinpthread-1.dll => /c/OPENMODELICAGIT/OpenModelica/build/bin/libwinpthread-1.dll (0x1e83bec0000)
libicuuc74.dll => /c/OPENMODELICAGIT/OpenModelica/build/bin/libicuuc74.dll (0x7ffaad670000)
libwinpthread-1.dll => /c/OPENMODELICAGIT/OpenModelica/build/bin/libwinpthread-1.dll (0x7ffb02ea0000)
libstdc++-6.dll => /c/OPENMODELICAGIT/OpenModelica/build/bin/libstdc++-6.dll (0x7ffaac9c0000)
ADVAPI32.dll => /c/WINDOWS/System32/ADVAPI32.dll (0x7ffb188b0000)
sechost.dll => /c/WINDOWS/System32/sechost.dll (0x7ffb1a7c0000)
libicudt74.dll => /c/OPENMODELICAGIT/OpenModelica/build/bin/libicudt74.dll (0x7ffa89890000)
bcrypt.dll => /c/WINDOWS/System32/bcrypt.dll (0x7ffb17eb0000)
RPCRT4.dll => /c/WINDOWS/System32/RPCRT4.dll (0x7ffb18d60000)
CRYPTBASE.DLL => /c/WINDOWS/System32/CRYPTBASE.DLL (0x7ffb17710000)
bcryptPrimitives.dll => /c/WINDOWS/System32/bcryptPrimitives.dll (0x7ffb18590000)
@arun3688 Ok, then does the linux build server need to be updated? Who should we ping this issue to?
@robha67 i will ask adrian about this
@arun3688 Thank you!
@arun3688 Do you have any update on this issue?
@lochel not yet, i guess we need to update the server
Where do we link the library? Is it introduced as a dependency by one of the 3rd party libs? Maybe linking it statically would solve the problem?
@robha67 @danlo76 We have now updated the server and now OMSimulator should link with the latest icu libraries, and we made a new pip release https://pypi.org/project/OMSimulator/2.1.3/, please test the new pip package and the issue should be solved
@arun3688 Thank you! We will test this shortly.
@arun3688 Sorry for the delay in response. I can confirm that this issue is solved for this particular version of libicuuc.