Skip to content

Commit 082a496

Browse files
committed
Output cpyext libraries into separate subdirectories (fixes win32 errors)
1 parent d442f79 commit 082a496

File tree

1 file changed

+11
-5
lines changed
  • graalpython/com.oracle.graal.python.test/src/tests/cpyext

1 file changed

+11
-5
lines changed

graalpython/com.oracle.graal.python.test/src/tests/cpyext/__init__.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,16 +115,18 @@ def ccompile(self, name, check_duplicate_name=True):
115115
m.update(block)
116116
cur_checksum = m.hexdigest()
117117

118+
install_dir = _install_dir_for(name)
119+
118120
# see if there is already a checksum file
119-
checksum_file = DIR / f'{name}{EXT_SUFFIX}.sha256'
121+
checksum_file = install_dir / f'{name}{EXT_SUFFIX}.sha256'
120122
available_checksum = ""
121123
if checksum_file.exists():
122124
# read checksum file
123125
with open(checksum_file, "r") as f:
124126
available_checksum = f.readline()
125127

126128
# note, the suffix is already a string like '.so'
127-
lib_file = DIR / f'{name}{EXT_SUFFIX}'
129+
lib_file = install_dir / f'{name}{EXT_SUFFIX}'
128130

129131
if check_duplicate_name and available_checksum != cur_checksum and name in compiled_registry:
130132
print(f"\n\nWARNING: module with name '{name}' was already compiled, but with different source code. "
@@ -140,7 +142,7 @@ def ccompile(self, name, check_duplicate_name=True):
140142
if available_checksum != cur_checksum or not lib_file.exists():
141143
module = Extension(name, sources=[str(source_file)])
142144
verbosity = '--verbose' if sys.flags.verbose else '--quiet'
143-
args = [verbosity, 'build', 'install_lib', '-f', f'--install-dir={DIR}', 'clean']
145+
args = [verbosity, 'build', 'install_lib', '-f', f'--install-dir={install_dir}', 'clean']
144146
setup(
145147
script_name='setup',
146148
script_args=args,
@@ -402,7 +404,7 @@ def __repr__(self):
402404
return "<CPyExtFunction %s>" % self.name
403405

404406
def test(self):
405-
sys.path.insert(0, str(DIR))
407+
sys.path.insert(0, str(_install_dir_for(self.name)))
406408
try:
407409
cmodule = __import__(self.name)
408410
finally:
@@ -509,6 +511,10 @@ def get_value(self, key, args, kwds):
509511
return Formatter.get_value(key, args, kwds)
510512

511513

514+
def _install_dir_for(name):
515+
return DIR / 'build' / name
516+
517+
512518
def _compile_module(c_source, name):
513519
source_file = DIR / f'{name}.c'
514520
with open(source_file, "wb", buffering=0) as f:
@@ -521,7 +527,7 @@ def _compile_module(c_source, name):
521527
except FileNotFoundError:
522528
raise SystemError("source file %s not available" % (source_file,))
523529
ccompile(None, name)
524-
sys.path.insert(0, str(DIR))
530+
sys.path.insert(0, str(_install_dir_for(name)))
525531
try:
526532
cmodule = __import__(name)
527533
finally:

0 commit comments

Comments
 (0)