#!/usr/bin/env python import os import shlex import tempfile import subprocess as sp def run(cmd, **kwargs): result = sp.run(shlex.split(cmd), check=True, text=True, stdout=sp.PIPE, stderr=sp.STDOUT, **kwargs) print(f'Called {cmd}') print(f' exit code: {result.returncode}') print(f' stdout: {result.stdout.strip()}') return result.stdout.strip() def main(): blacklist = ['OMP', 'GOTO', 'BLAS', 'FSL'] env = os.environ.copy() for varname in list(env.keys()): if any(b in varname for b in blacklist): env.pop(varname) env['OMP_NUM_THREADS'] = '8' env['BLAS_NUM_THREADS'] = '8' run('make') # Default behaviour should be: OMP multi-threaded, BLAS single threaded. assert run('./test_fslStartup', env=env) == '8 1 8' # With FSL_SKIP_GLOBAL, BLAS should be multi-threaded env['FSL_SKIP_GLOBAL'] = '1' assert run('./test_fslStartup', env=env) == '8 8 8' if __name__ == '__main__': main()