Skip to content

Commit 8c3c3d2

Browse files
authored
Merge pull request #199 from mrbean-bremen/issue3591
Fixed accumulating include dirs after compile
2 parents 1efd3d5 + 6324549 commit 8c3c3d2

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

distutils/ccompiler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ def _fix_compile_args(self, output_dir, macros, include_dirs):
389389
raise TypeError("'macros' (if supplied) must be a list of tuples")
390390

391391
if include_dirs is None:
392-
include_dirs = self.include_dirs
392+
include_dirs = list(self.include_dirs)
393393
elif isinstance(include_dirs, (list, tuple)):
394394
include_dirs = list(include_dirs) + (self.include_dirs or [])
395395
else:

distutils/tests/test_ccompiler.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,17 @@ def test_has_function_prototype():
7676
assert not compiler.has_function(
7777
'setuptools_does_not_exist', includes=['<stdio.h>']
7878
)
79+
80+
81+
def test_include_dirs_after_multiple_compile_calls(c_file):
82+
"""
83+
Calling compile multiple times should not change the include dirs
84+
(regression test for setuptools issue #3591).
85+
"""
86+
compiler = ccompiler.new_compiler()
87+
python = sysconfig.get_paths()['include']
88+
compiler.set_include_dirs([python])
89+
compiler.compile(_make_strs([c_file]))
90+
assert compiler.include_dirs == [python]
91+
compiler.compile(_make_strs([c_file]))
92+
assert compiler.include_dirs == [python]

0 commit comments

Comments
 (0)