diff --git a/containers/jug/setup_detectors.py b/containers/jug/setup_detectors.py index 11beda56786014fa02fdfe0cc29d096145aee4e6..d9a84e3572cc099d15d8e9b42df2a255f0a09b6a 100755 --- a/containers/jug/setup_detectors.py +++ b/containers/jug/setup_detectors.py @@ -84,20 +84,41 @@ if __name__ == '__main__': data_dir = '{}/share/{}'.format(prefix, det) ## build and install print(' - {}-{}'.format(det, cfg['version'])) - ## clone/build/install detector libraries - cmd = ['rm -rf /tmp/build /tmp/det', - '&&', - 'git clone --depth 1 -b {version} {repo_grp}/{detector}.git /tmp/det'.format( - version=cfg['version'], - repo_grp=DETECTOR_REPO_GROUP, - detector=det), - '&&', - 'cmake -B /tmp/build -S /tmp/det -DCMAKE_CXX_STANDARD=17', - '-DCMAKE_CXX_FLAGS="-Wno-psabi"', - '-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache', - '-DCMAKE_INSTALL_PREFIX={prefix}'.format(prefix=prefix), - '&&', - 'cmake --build /tmp/build -j$(($(($(nproc)/4))+1)) -- install'] + ## cleanup + cmd = ['rm -rf /tmp/build /tmp/det'] + print(' '.join(cmd)) + subprocess.check_call(' '.join(cmd), shell=True) + ## clone + cmd = [ + 'git clone --depth 1 -b {version} {repo_grp}/{detector}.git /tmp/det'.format( + version=cfg['version'], + repo_grp=DETECTOR_REPO_GROUP, + detector=det) + ] + print(' '.join(cmd)) + subprocess.check_call(' '.join(cmd), shell=True) + ## patches + if cfg['patches']: + for patch in cfg['patches']: + cmd = ['curl -L {patch} | patch -p1 -d/tmp/det'] + print(' '.join(cmd)) + subprocess.check_call(' '.join(cmd), shell=True) + ## build + cxxflags = '' + if cfg['cxxflags']: + cxxflags = cfg['cxxflags'] + cmd = [ + 'cmake -B /tmp/build -S /tmp/det -DCMAKE_CXX_STANDARD=17', + '-DCMAKE_CXX_FLAGS="-Wno-psabi {cxxflags}"', + '-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache', + '-DCMAKE_INSTALL_PREFIX={prefix}'.format(prefix=prefix) + ] + print(' '.join(cmd)) + subprocess.check_call(' '.join(cmd), shell=True) + ## install + cmd = [ + 'cmake --build /tmp/build -j$(($(($(nproc)/4))+1)) -- install' + ] print(' '.join(cmd)) subprocess.check_call(' '.join(cmd), shell=True) ## write version info to jug_info if available