From b309680fb7602a9d773d8a03166259c2364ad656 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 4 Sep 2019 18:25:29 +0200 Subject: [PATCH] Fix CTM loading on Linux CURA-6739 Note that this doesn't work with Python 3.5.7, but with 3.6 and 3.7. To make Python 3.5.7 work, a fix needs to be backported from 3.6 for ctypes.util.find_library() for Linux. --- cura_app.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/cura_app.py b/cura_app.py index 42581f134e..44bef048f2 100755 --- a/cura_app.py +++ b/cura_app.py @@ -155,5 +155,20 @@ if Platform.isOSX() and getattr(sys, "frozen", False): path_list.append(search_path) os.environ["DYLD_FALLBACK_LIBRARY_PATH"] = ":".join(path_list) +# WORKAROUND: CURA-6739 +# Similar CTM file loading fix for Linux, but NOTE THAT this doesn't work directly with Python 3.5.7. There's a fix +# for ctypes.util.find_library() in Python 3.6 and 3.7. That fix makes sure that find_library() will check +# LD_LIBRARY_PATH. With Python 3.5, that fix needs to be backported to make this workaround work. +if Platform.isLinux() and getattr(sys, "frozen", False): + old_env = os.environ.get("LD_LIBRARY_PATH", "") + # This is where libopenctm.so is in the AppImage. + search_path = os.path.join(CuraApplication.getInstallPrefix(), "bin") + path_list = old_env.split(":") + if search_path not in path_list: + path_list.append(search_path) + os.environ["LD_LIBRARY_PATH"] = ":".join(path_list) + import trimesh.exchange.load + os.environ["LD_LIBRARY_PATH"] = old_env + app = CuraApplication() app.run()