|
1 | 1 | import logging |
2 | 2 | import os |
| 3 | +from pathlib import Path |
3 | 4 | import re |
4 | 5 | import stat |
5 | 6 | import sys |
@@ -245,49 +246,45 @@ def api(self) -> CDLL: |
245 | 246 |
|
246 | 247 | if self._api is None: |
247 | 248 |
|
248 | | - bin_dirpath = ( |
249 | | - os.path.abspath(os.path.dirname(sys.executable)) |
250 | | - if hasattr(sys, "frozen") |
251 | | - else os.path.dirname(os.path.abspath(__file__)) |
252 | | - ) |
| 249 | + # Set the base path once |
| 250 | + base_path = Path(__file__).parent |
253 | 251 |
|
254 | | - # Flexlm Settings |
255 | | - # prevent flexlm gui to pop up |
| 252 | + # Set environment variables for FlexLM |
256 | 253 | os.environ["FLEXLM_BATCH"] = "1" |
257 | | - # set a low timeout from originally 10 seconds |
258 | 254 | if "FLEXLM_TIMEOUT" not in os.environ: |
259 | 255 | os.environ["FLEXLM_TIMEOUT"] = "200000" |
260 | 256 |
|
261 | | - # windows |
262 | | - if "win32" in sys.platform: |
263 | | - |
| 257 | + # Platform-specific configurations |
| 258 | + if sys.platform == "win32": |
| 259 | + bin_dirpath = base_path / "lib" / "windows" |
264 | 260 | shared_lib_name = "api_extended.dll" |
265 | | - self.load_dynamic_library(os.path.join(bin_dirpath, "libmmd.dll")) |
266 | | - self.load_dynamic_library(os.path.join(bin_dirpath, "libifcoremd.dll")) |
267 | | - self.load_dynamic_library(os.path.join(bin_dirpath, "libifportmd.dll")) |
268 | | - self.load_dynamic_library(os.path.join(bin_dirpath, "libiomp5md.dll")) |
269 | | - self.load_dynamic_library( |
270 | | - os.path.join(bin_dirpath, "femzip_a_dyna_sidact_generic.dll") |
271 | | - ) |
272 | | - self.load_dynamic_library( |
273 | | - os.path.join(bin_dirpath, "libfemzip_post_licgenerator_ext_flexlm.dll") |
274 | | - ) |
275 | | - # linux hopefully |
| 261 | + libs = [ |
| 262 | + "libmmd.dll", |
| 263 | + "libifcoremd.dll", |
| 264 | + "libifportmd.dll", |
| 265 | + "libiomp5md.dll", |
| 266 | + "femzip_a_dyna_sidact_generic.dll", |
| 267 | + "libfemzip_post_licgenerator_ext_flexlm.dll", |
| 268 | + ] |
276 | 269 | else: |
| 270 | + bin_dirpath = base_path / "lib" / "linux" |
277 | 271 | shared_lib_name = "api_extended.so" |
278 | | - self.load_dynamic_library(os.path.join(bin_dirpath, "libiomp5.so")) |
279 | | - self.load_dynamic_library(os.path.join(bin_dirpath, "libintlc.so.5")) |
280 | | - self.load_dynamic_library(os.path.join(bin_dirpath, "libirng.so")) |
281 | | - self.load_dynamic_library(os.path.join(bin_dirpath, "libimf.so")) |
282 | | - self.load_dynamic_library(os.path.join(bin_dirpath, "libsvml.so")) |
283 | | - self.load_dynamic_library( |
284 | | - os.path.join(bin_dirpath, "libfemzip_a_dyna_sidact_generic.so") |
285 | | - ) |
286 | | - self.load_dynamic_library( |
287 | | - os.path.join(bin_dirpath, "libfemzip_post_licgenerator_ext_flexlm.so") |
288 | | - ) |
289 | | - |
290 | | - filepath = os.path.join(bin_dirpath, shared_lib_name) |
| 272 | + libs = [ |
| 273 | + "libiomp5.so", |
| 274 | + "libintlc.so.5", |
| 275 | + "libirng.so", |
| 276 | + "libimf.so", |
| 277 | + "libsvml.so", |
| 278 | + "libfemzip_a_dyna_sidact_generic.so", |
| 279 | + "libfemzip_post_licgenerator_ext_flexlm.so", |
| 280 | + ] |
| 281 | + |
| 282 | + # Load all the dynamic libraries |
| 283 | + for lib in libs: |
| 284 | + self.load_dynamic_library(bin_dirpath / lib) |
| 285 | + |
| 286 | + # Load the main shared library |
| 287 | + filepath = bin_dirpath / shared_lib_name |
291 | 288 | self._api = self.load_dynamic_library(filepath) |
292 | 289 |
|
293 | 290 | # license check |
|
0 commit comments