diff --git a/Lib/distutils/extension.py b/Lib/distutils/extension.py --- a/Lib/distutils/extension.py +++ b/Lib/distutils/extension.py @@ -106,6 +106,8 @@ class Extension: if not (isinstance(sources, list) and all(isinstance(v, str) for v in sources)): raise AssertionError("'sources' must be a list of strings") + if any(os.path.isabs(v) for v in sources): + raise AssertionError("'sources' must contain relative paths") self.name = name self.sources = sources diff --git a/Lib/distutils/tests/test_build_ext.py b/Lib/distutils/tests/test_build_ext.py --- a/Lib/distutils/tests/test_build_ext.py +++ b/Lib/distutils/tests/test_build_ext.py @@ -41,8 +41,8 @@ class BuildExtTestCase(TempdirManager, def test_build_ext(self): global ALREADY_TESTED copy_xxmodule_c(self.tmp_dir) - xx_c = os.path.join(self.tmp_dir, 'xxmodule.c') - xx_ext = Extension('xx', [xx_c]) + os.chdir(self.tmp_dir) + xx_ext = Extension('xx', ['xxmodule.c']) dist = Distribution({'name': 'xx', 'ext_modules': [xx_ext]}) dist.package_dir = self.tmp_dir cmd = build_ext(dist) @@ -291,9 +291,9 @@ class BuildExtTestCase(TempdirManager, def test_get_outputs(self): tmp_dir = self.mkdtemp() - c_file = os.path.join(tmp_dir, 'foo.c') - self.write_file(c_file, 'void PyInit_foo(void) {}\n') - ext = Extension('foo', [c_file], optional=False) + os.chdir(tmp_dir) + self.write_file('foo.c', 'void PyInit_foo(void) {}\n') + ext = Extension('foo', ['foo.c'], optional=False) dist = Distribution({'name': 'xx', 'ext_modules': [ext]}) cmd = build_ext(dist) @@ -304,7 +304,7 @@ class BuildExtTestCase(TempdirManager, cmd.build_lib = os.path.join(self.tmp_dir, 'build') cmd.build_temp = os.path.join(self.tmp_dir, 'tempt') - # issue #5977 : distutils build_ext.get_outputs + # issue #5977: distutils build_ext.get_outputs # returns wrong result with --inplace other_tmp_dir = os.path.realpath(self.mkdtemp()) old_wd = os.getcwd()