OpenMC/tools/ci/gha-install.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

69 lines
2.2 KiB
Python
Raw Permalink Normal View History

import os
import shutil
import subprocess
def install(omp=False, mpi=False, phdf5=False, dagmc=False, libmesh=False):
# Create build directory and change to it
shutil.rmtree('build', ignore_errors=True)
os.mkdir('build')
os.chdir('build')
# Build in RelWithDebInfo mode by default with support for MCPL
cmake_cmd = ['cmake', '-DCMAKE_BUILD_TYPE=RelWithDebInfo', '-DOPENMC_USE_MCPL=on']
# Turn off OpenMP if specified
if not omp:
cmake_cmd.append('-DOPENMC_USE_OPENMP=off')
# Use MPI wrappers when building in parallel
if mpi:
2022-04-05 15:56:10 -05:00
cmake_cmd.append('-DOPENMC_USE_MPI=on')
# Tell CMake to prefer parallel HDF5 if specified
if phdf5:
if not mpi:
raise ValueError('Parallel HDF5 must be used in '
'conjunction with MPI.')
cmake_cmd.append('-DHDF5_PREFER_PARALLEL=ON')
else:
cmake_cmd.append('-DHDF5_PREFER_PARALLEL=OFF')
2018-09-21 16:22:54 -04:00
if dagmc:
cmake_cmd.append('-DOPENMC_USE_DAGMC=ON')
cmake_cmd.append('-DOPENMC_USE_UWUW=ON')
dagmc_path = os.environ.get('HOME') + '/DAGMC'
cmake_cmd.append('-DCMAKE_PREFIX_PATH=' + dagmc_path)
2020-05-20 21:04:01 -05:00
if libmesh:
cmake_cmd.append('-DOPENMC_USE_LIBMESH=ON')
libmesh_path = os.environ.get('HOME') + '/LIBMESH'
cmake_cmd.append('-DCMAKE_PREFIX_PATH=' + libmesh_path)
2020-05-20 21:04:01 -05:00
# Build in coverage mode for coverage testing
cmake_cmd.append('-DOPENMC_ENABLE_COVERAGE=on')
# Enable strict FP for cross-platform reproducibility in CI
cmake_cmd.append('-DOPENMC_ENABLE_STRICT_FP=on')
# Build and install
cmake_cmd.append('..')
print(' '.join(cmake_cmd))
subprocess.check_call(cmake_cmd)
2018-10-02 21:27:00 -05:00
subprocess.check_call(['make', '-j4'])
subprocess.check_call(['sudo', 'make', 'install'])
def main():
# Convert Travis matrix environment variables into arguments for install()
omp = (os.environ.get('OMP') == 'y')
mpi = (os.environ.get('MPI') == 'y')
phdf5 = (os.environ.get('PHDF5') == 'y')
2018-09-21 16:22:54 -04:00
dagmc = (os.environ.get('DAGMC') == 'y')
2020-05-20 21:04:01 -05:00
libmesh = (os.environ.get('LIBMESH') == 'y')
2018-07-06 11:01:35 -05:00
# Build and install
install(omp, mpi, phdf5, dagmc, libmesh)
if __name__ == '__main__':
main()