Commit ece95325 authored by Henderson, Shane's avatar Henderson, Shane
Browse files

Add devcontainer to replicate ci build env

parent 3b430733
Loading
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
{
  "name": "Futility",
  "image": "savannah.ornl.gov/vera/vera-builder:latest",

  // Keep the container-side workspace consistent across platforms
  "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",

  // Basic QoL for CMake projects
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-vscode.cmake-tools",
        "ms-vscode.cpptools",
        "fortran-lang.linter-gfortran",
        "fortran-lang.linter"
      ],
      "settings": {
        "cmake.sourceDirectory": "${workspaceFolder}",
        "cmake.buildDirectory": "${workspaceFolder}/build"
      }
    }
  },

  "containerEnv": {
  "LD_LIBRARY_PATH": "/opt/vera_tpls/petsc-3.12.4/lib:/opt/vera_tpls/hdf5-1.10.11/lib:/opt/vera_tpls/lapack-3.5.0/lib:${containerEnv:LD_LIBRARY_PATH}",
  "LIBRARY_PATH": "/opt/vera_tpls/petsc-3.12.4/lib:/opt/vera_tpls/hdf5-1.10.11/lib:/opt/vera_tpls/lapack-3.5.0/lib:${containerEnv:LIBRARY_PATH}"
},


  // Don’t pretend you know their build options yet; just create a build dir
  "postCreateCommand": "mkdir -p build && echo 'Ready: configure with cmake -S . -B build <opts>'",

  // If your image is “dev” oriented, root is simplest cross-platform
  "remoteUser": "root"
}
 No newline at end of file

CMakePresets.json

0 → 100644
+108 −0
Original line number Diff line number Diff line
{
  "version": 6,
  "cmakeMinimumRequired": { "major": 3, "minor": 21, "patch": 0 },

  "configurePresets": [
    {
      "name": "base",
      "hidden": true,
      "generator": "Unix Makefiles",
      "binaryDir": "${sourceDir}/build/${presetName}",
      "cacheVariables": {
        "Futility_ENABLE_DBC": "TRUE",
        "Futility_ENABLE_TESTS": "ON",
        "CMAKE_CXX_FLAGS": "-w",
        "Futility_ENABLE_OpenMP": "TRUE",
        "PYTHON_EXECUTABLE": "/usr/bin/python2"
      },
      "environment": {
        "TPL_DIR": "/opt/vera_tpls",
        "PETSC_DIR": "/opt/vera_tpls/petsc-3.12.4",
        "HDF5_DIR": "/opt/vera_tpls/hdf5-1.10.11",
        "SILO_DIR": "/opt/vera_tpls/silo-4.10.2",
        "CMAKE_LIBRARY_PATH": "/opt/vera_tpls/petsc-3.12.4/lib;/opt/vera_tpls/lapack-3.5.0/lib;/opt/vera_tpls/hdf5-1.10.11/lib",
        "CMAKE_INCLUDE_PATH": "/opt/vera_tpls/petsc-3.12.4/include;/opt/vera_tpls/hdf5-1.10.11/include"
      }
    },

    {
      "name": "serial-debug",
      "displayName": "Serial (Debug) — CI parity",
      "inherits": "base",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "DEBUG",

        "TPL_ENABLE_MPI": "OFF",
        "TPL_ENABLE_PETSC": "OFF",
        "TPL_ENABLE_HDF5": "OFF",

        "TPL_ENABLE_BLAS": "ON",
        "BLAS_LIBRARY_DIRS": "/opt/vera_tpls/lapack-3.5.0/lib",
        "TPL_ENABLE_LAPACK": "ON",
        "LAPACK_LIBRARY_DIRS": "/opt/vera_tpls/lapack-3.5.0/lib",

        "CMAKE_C_COMPILER": "gcc",
        "CMAKE_CXX_COMPILER": "g++"
      }
    },

    {
      "name": "mpi-debug",
      "displayName": "MPI (Debug) — CI parity",
      "inherits": "base",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "DEBUG",

        "TPL_ENABLE_MPI": "ON",
        "TPL_ENABLE_PETSC": "ON",
        "TPL_ENABLE_HDF5": "ON",

        "TPL_ENABLE_BLAS": "ON",
        "BLAS_LIBRARY_DIRS": "/opt/vera_tpls/lapack-3.5.0/lib",
        "TPL_ENABLE_LAPACK": "ON",
        "LAPACK_LIBRARY_DIRS": "/opt/vera_tpls/lapack-3.5.0/lib",

        "HDF5_LIBRARY_DIRS": "/opt/vera_tpls/hdf5-1.10.11/lib",
        "HDF5_INCLUDE_DIRS": "/opt/vera_tpls/hdf5-1.10.11/include;/opt/vera_tpls/hdf5-1.10.11/include/shared;/opt/vera_tpls/hdf5-1.10.11/include/static",
        "TPL_HDF5_INCLUDE_DIRS": "/opt/vera_tpls/hdf5-1.10.11/include;/opt/vera_tpls/hdf5-1.10.11/include/shared;/opt/vera_tpls/hdf5-1.10.11/include/static",
        "HDF5_LIBRARY_NAMES": "hdf5;hdf5_cpp;hdf5_fortran;hdf5_hl;hdf5_hl_cpp;hdf5_hl_fortran;z",

        "PETSC_INCLUDE_DIRS": "/opt/vera_tpls/petsc-3.12.4/include",
        "PETSC_LIBRARY_DIRS": "/opt/vera_tpls/petsc-3.12.4/lib",
        "PETSC_LIBRARY_NAMES": "petsc",

        "Futility_SCALE_TEST_TIMEOUT": "3.00",
        "CMAKE_Fortran_COMPILER": "mpif90",
        "CMAKE_C_COMPILER": "mpicc",
        "CMAKE_CXX_COMPILER": "mpicxx"
      }
    }
  ],

  "buildPresets": [
    { "name": "serial-debug", "configurePreset": "serial-debug", "jobs": 0 },
    { "name": "mpi-debug", "configurePreset": "mpi-debug", "jobs": 0 }
  ],

  "testPresets": [
    {
      "name": "serial",
      "displayName": "CTest (serial)",
      "configurePreset": "serial-debug",
      "execution": { "jobs": 4 },
      "output": { "outputOnFailure": true }
    },
    {
      "name": "mpi",
      "displayName": "CTest (mpi) — excludes CI-disabled tests",
      "configurePreset": "mpi-debug",
      "execution": { "jobs": 4 },
      "output": { "outputOnFailure": true },
      "filter": {
        "exclude": {
          "name": "COBRA_TFUtils|DataTransferKit"
        }
      }
    }
  ]
}