23
23
import subprocess
24
24
import sys
25
25
import tempfile
26
- from distutils .errors import CompileError
27
26
from pathlib import Path
28
27
29
28
from setuptools import Extension , find_packages , setup
@@ -42,28 +41,28 @@ def build_extension(self, ext):
42
41
if not isinstance (ext , IsalExtension ):
43
42
super ().build_extension (ext )
44
43
return
45
- # Check for isa-l include directories. This is useful when installing
46
- # in a conda environment.
47
- possible_prefixes = [sys .exec_prefix , sys .base_exec_prefix ]
48
- for prefix in possible_prefixes :
49
- if os .path .exists (os .path .join (prefix , "include" , "isa-l" )):
50
- ext .include_dirs = [
51
- os .path .join (prefix , "include" )]
52
- break # Only one include directory is needed.
53
- ext .libraries = ["isal" ]
54
- try : # First try to link dynamically
55
- super ().build_extension (ext )
56
- except CompileError :
57
- # Dynamic linking failed, build ISA-L and link statically.
58
- ext .libraries = [] # Make sure libraries are empty
44
+
45
+ # Add option to link dynamically for packaging systems such as conda.
46
+ if os .getenv ("PYTHON_ISAL_LINK_DYNAMIC" ) is not None :
47
+ # Check for isa-l include directories. This is useful when
48
+ # installing in a conda environment.
49
+ possible_prefixes = [sys .exec_prefix , sys .base_exec_prefix ]
50
+ for prefix in possible_prefixes :
51
+ if os .path .exists (os .path .join (prefix , "include" , "isa-l" )):
52
+ ext .include_dirs = [
53
+ os .path .join (prefix , "include" )]
54
+ break # Only one include directory is needed.
55
+ ext .libraries = ["isal" ]
56
+ else :
59
57
isa_l_prefix_dir = build_isa_l ()
60
58
ext .include_dirs = [os .path .join (isa_l_prefix_dir ,
61
- "include" )]
59
+ "include" )]
62
60
# -fPIC needed for proper static linking
63
61
ext .extra_compile_args = ["-fPIC" ]
64
62
ext .extra_objects = [
65
63
os .path .join (isa_l_prefix_dir , "lib" , "libisal.a" )]
66
- super ().build_extension (ext )
64
+
65
+ super ().build_extension (ext )
67
66
68
67
69
68
# Use a cache to prevent isa-l from being build twice. According to the
0 commit comments