| 45 | shutil.copy(SOURCE, os.path.join(pkg_dir, os.path.basename(SOURCE))) |
| 46 | |
| 47 | def run_cmd(operation, cmd): |
| 48 | env = os.environ.copy() |
| 49 | if std: |
| 50 | env['CPYTHON_TEST_CPP_STD'] = std |
| 51 | if limited: |
| 52 | env['CPYTHON_TEST_LIMITED'] = '1' |
| 53 | env['CPYTHON_TEST_EXT_NAME'] = extension_name |
| 54 | env['TEST_INTERNAL_C_API'] = str(int(self.TEST_INTERNAL_C_API)) |
| 55 | if extra_cflags: |
| 56 | env['CPYTHON_TEST_EXTRA_CFLAGS'] = extra_cflags |
| 57 | if support.verbose: |
| 58 | print('Run:', ' '.join(map(shlex.quote, cmd))) |
| 59 | subprocess.run(cmd, check=True, env=env) |
| 60 | else: |
| 61 | proc = subprocess.run(cmd, |
| 62 | env=env, |
| 63 | stdout=subprocess.PIPE, |
| 64 | stderr=subprocess.STDOUT, |
| 65 | text=True) |
| 66 | if proc.returncode: |
| 67 | print('Run:', ' '.join(map(shlex.quote, cmd))) |
| 68 | print(proc.stdout, end='') |
| 69 | self.fail( |
| 70 | f"{operation} failed with exit code {proc.returncode}") |
| 71 | |
| 72 | # Build and install the C++ extension |
| 73 | cmd = [python_exe, '-X', 'dev', |