###############################################################################
# Conduit CI Checks
###############################################################################
# Ref:
# https://aka.ms/yaml

#####
# TO USE A NEW CONTAINER, UPDATE TAG NAME HERE AS PART OF YOUR PR!
#####
variables:
  ubuntu_18_tag: alpinedav/ascent-ci:ubuntu-18-devel
  ubuntu_21_10_tag: alpinedav/ascent-ci:ubuntu-21.10-devel

# only build merge target pr to develop
trigger: none
pr:
  branches:
    include:
    - develop

# fast fail sanity checks
stages:
- stage: Sanity
  jobs:
  - job: BLT_Time_Travel_Check
    pool:
      vmImage: 'ubuntu-latest'
    steps:
      - checkout: self
        clean: boolean
        submodules: recursive

      - script: |
          #######################################
          # run our sanity check script
          #######################################
          git fetch
          python3 scripts/ci/check_blt_time_travel.py
        displayName: 'BLT Time Travel Check'

# main checks
# TODO:
# - setup coverage
#
- stage: Main
  jobs:
  ###############################################################################
  # Ubuntu 18 build and test, using spack to build tpls
  #
  # When setup in Ascent, Azure didint have an Ubuntu 18 dev image, so we are 
  #  using the standard Ubuntu 18 container.
  #
  ###############################################################################
  - job: Ubuntu
    pool:
      vmImage: 'ubuntu-latest'
    container: ${{ variables.ubuntu_18_tag }}
    timeoutInMinutes: 0
    strategy:
      matrix:
        ub_18_shared_minimal_cmake_3_14:
          containerImage: ${{ variables.ubuntu_18_tag }}
          COMPILER_CC: gcc
          COMPILER_CXX: g++
          COMPILER_FC: gfortran
          FORCE_COMPILERS: OFF
          COMPILER_SPEC: gcc
          BUILD_SHARED_LIBS: ON
          CMAKE_BUILD_TYPE: Debug
          ENABLE_COVERAGE: OFF
          ENABLE_MPI: OFF
          ENABLE_DOCS: OFF
          ENABLE_RELAY_WEBSERVER: OFF
          ENABLE_HDF5: OFF
          ENABLE_HDF5_COMPAT: ON
          HDF5_SPEC: "hdf5~mpi"
          ENABLE_SILO: OFF
          ENABLE_ADIOS: OFF
          ENABLE_PARMETIS: OFF
          ENABLE_PYTHON: OFF
          ENABLE_PYTHON2: OFF
          CMAKE_VERSION: 3.14.2
          BLT_CXX_STD: c++11
          BLT_ENABLE_FIND_MPI: ON

        ub_18_shared_py27_cmake_3_14:
          containerImage: ${{ variables.ubuntu_18_tag }}
          COMPILER_CC: gcc
          COMPILER_CXX: g++
          COMPILER_FC: gfortran
          COMPILER_SPEC: gcc
          FORCE_COMPILERS: OFF
          BUILD_SHARED_LIBS: ON
          CMAKE_BUILD_TYPE: Debug
          ENABLE_COVERAGE: ON
          ENABLE_MPI: ON
          ENABLE_DOCS: OFF
          ENABLE_RELAY_WEBSERVER: ON
          ENABLE_HDF5: ON
          ENABLE_HDF5_COMPAT: ON
          HDF5_SPEC: "hdf5~mpi"
          ENABLE_SILO: ON
          ENABLE_ADIOS: OFF
          ENABLE_PYTHON: ON
          ENABLE_PARMETIS: ON
          ENABLE_PYTHON2: ON
          PYTHON2_CONSTRAINTS: " ^py-setuptools@44.1.0 ^py-numpy@1.16.5"
          PYTHON_VERSION: 2.7.18
          CMAKE_VERSION: 3.14.2
          BLT_CXX_STD: c++11
          BLT_ENABLE_FIND_MPI: ON

        ub_18_static_py27_cmake_3_14:
          containerImage: ${{ variables.ubuntu_18_tag }}
          COMPILER_CC: gcc
          COMPILER_CXX: g++
          COMPILER_FC: gfortran
          COMPILER_SPEC: gcc
          FORCE_COMPILERS: OFF
          BUILD_SHARED_LIBS: OFF
          CMAKE_BUILD_TYPE: Debug
          ENABLE_COVERAGE: OFF
          ENABLE_MPI: ON
          ENABLE_DOCS: OFF
          ENABLE_RELAY_WEBSERVER: ON
          ENABLE_HDF5: ON
          ENABLE_HDF5_COMPAT: ON
          HDF5_SPEC: "hdf5~mpi"
          ENABLE_SILO: ON
          ENABLE_ADIOS: OFF
          ENABLE_PARMETIS: ON
          ENABLE_PYTHON: ON
          ENABLE_PYTHON2: ON
          PYTHON2_CONSTRAINTS: " ^py-setuptools@44.1.0 ^py-numpy@1.16.5"
          PYTHON_VERSION: 2.7.18
          CMAKE_VERSION: 3.14.2
          BLT_CXX_STD: c++11
          BLT_ENABLE_FIND_MPI: ON

        ub_18_shared_py37_cmake_3_14:
          containerImage: ${{ variables.ubuntu_18_tag }}
          COMPILER_CC: gcc
          COMPILER_CXX: g++
          COMPILER_FC: gfortran
          COMPILER_SPEC: gcc
          FORCE_COMPILERS: OFF
          BUILD_SHARED_LIBS: ON
          CMAKE_BUILD_TYPE: Debug
          ENABLE_COVERAGE: OFF
          ENABLE_MPI: ON
          ENABLE_DOCS: ON
          ENABLE_RELAY_WEBSERVER: ON
          ENABLE_HDF5: ON
          ENABLE_HDF5_COMPAT: ON
          HDF5_SPEC: "hdf5~mpi"
          ENABLE_SILO: ON
          ENABLE_ADIOS: OFF
          ENABLE_PARMETIS: ON
          ENABLE_PYTHON: ON
          ENABLE_PYTHON2: OFF
          PYTHON_VERSION: 3.7.6
          CMAKE_VERSION: 3.14.2
          BLT_CXX_STD: c++11
          BLT_ENABLE_FIND_MPI: ON

        ub_18_shared_py38_cmake_3_21:
          containerImage: ${{ variables.ubuntu_18_tag }}
          COMPILER_CC: gcc
          COMPILER_CXX: g++
          COMPILER_FC: gfortran
          COMPILER_SPEC: gcc
          FORCE_COMPILERS: OFF
          BUILD_SHARED_LIBS: ON
          CMAKE_BUILD_TYPE: Debug
          ENABLE_COVERAGE: OFF
          ENABLE_MPI: ON
          ENABLE_DOCS: ON
          ENABLE_RELAY_WEBSERVER: ON
          ENABLE_HDF5: ON
          ENABLE_HDF5_COMPAT: ON
          HDF5_SPEC: "hdf5~mpi"
          ENABLE_SILO: ON
          ENABLE_ADIOS: OFF
          ENABLE_PARMETIS: ON
          ENABLE_PYTHON: ON
          ENABLE_PYTHON2: OFF
          PYTHON_VERSION: 3.8.8
          CMAKE_VERSION: 3.21.1
          BLT_CXX_STD: c++11
          BLT_ENABLE_FIND_MPI: ON

        ub_18_shared_py38_cmake_3_21_hdf5_1_10:
          containerImage: ${{ variables.ubuntu_18_tag }}
          COMPILER_CC: gcc
          COMPILER_CXX: g++
          COMPILER_FC: gfortran
          COMPILER_SPEC: gcc
          FORCE_COMPILERS: OFF
          BUILD_SHARED_LIBS: ON
          CMAKE_BUILD_TYPE: Debug
          ENABLE_COVERAGE: OFF
          ENABLE_MPI: ON
          ENABLE_DOCS: ON
          ENABLE_RELAY_WEBSERVER: ON
          ENABLE_HDF5: ON
          ENABLE_HDF5_COMPAT: OFF
          HDF5_SPEC: "hdf5@1.10.7~mpi"
          ENABLE_SILO: ON
          ENABLE_ADIOS: OFF
          ENABLE_PARMETIS: ON
          ENABLE_PYTHON: ON
          ENABLE_PYTHON2: OFF
          PYTHON_VERSION: 3.8.8
          CMAKE_VERSION: 3.21.1
          BLT_CXX_STD: c++11
          BLT_ENABLE_FIND_MPI: ON

        ub_18_shared_py38_cmake_3_21_hdf5_1_12:
          containerImage: ${{ variables.ubuntu_18_tag }}
          COMPILER_CC: gcc
          COMPILER_CXX: g++
          COMPILER_FC: gfortran
          COMPILER_SPEC: gcc
          FORCE_COMPILERS: OFF
          BUILD_SHARED_LIBS: ON
          CMAKE_BUILD_TYPE: Debug
          ENABLE_COVERAGE: OFF
          ENABLE_MPI: ON
          ENABLE_DOCS: ON
          ENABLE_RELAY_WEBSERVER: ON
          ENABLE_HDF5: ON
          ENABLE_HDF5_COMPAT: OFF
          HDF5_SPEC: "hdf5@1.12.0~mpi"
          # silo requires hdf5 1.10, so for now we can't
          # test both silo and hdf5 1.12 support
          ENABLE_SILO: OFF
          ENABLE_ADIOS: OFF
          ENABLE_PARMETIS: ON
          ENABLE_PYTHON: ON
          ENABLE_PYTHON2: OFF
          PYTHON_VERSION: 3.8.8
          CMAKE_VERSION: 3.20.0
          BLT_CXX_STD: c++11
          BLT_ENABLE_FIND_MPI: ON

        ub_18_shared_py310_cmake_3_24_hdf5_1_14:
          containerImage: ${{ variables.ubuntu_18_tag }}
          COMPILER_CC: gcc
          COMPILER_CXX: g++
          COMPILER_FC: gfortran
          COMPILER_SPEC: gcc
          FORCE_COMPILERS: OFF
          BUILD_SHARED_LIBS: ON
          CMAKE_BUILD_TYPE: Debug
          ENABLE_COVERAGE: OFF
          ENABLE_MPI: ON
          ENABLE_DOCS: ON
          ENABLE_RELAY_WEBSERVER: ON
          ENABLE_HDF5: ON
          ENABLE_HDF5_COMPAT: OFF
          HDF5_SPEC: "hdf5@1.14.0~mpi"
          # silo requires hdf5 1.10, so for now we can't
          # test both silo and hdf5 1.14 support
          ENABLE_SILO: OFF
          ENABLE_ADIOS: OFF
          ENABLE_PARMETIS: ON
          ENABLE_PYTHON: ON
          ENABLE_PYTHON2: OFF
          PYTHON_VERSION: 3.10.6
          CMAKE_VERSION: 3.24.2
          BLT_CXX_STD: c++11
          BLT_ENABLE_FIND_MPI: ON

        ub_18_shared_py310_cmake_3_26_hdf5_1_14:
          containerImage: ${{ variables.ubuntu_18_tag }}
          COMPILER_CC: gcc
          COMPILER_CXX: g++
          COMPILER_FC: gfortran
          COMPILER_SPEC: gcc
          FORCE_COMPILERS: OFF
          BUILD_SHARED_LIBS: ON
          CMAKE_BUILD_TYPE: Debug
          ENABLE_COVERAGE: OFF
          ENABLE_MPI: ON
          ENABLE_DOCS: ON
          ENABLE_RELAY_WEBSERVER: ON
          ENABLE_HDF5: ON
          ENABLE_HDF5_COMPAT: OFF
          HDF5_SPEC: "hdf5@1.14.0~mpi"
          # silo requires hdf5 1.10, so for now we can't
          # test both silo and hdf5 1.14 support
          ENABLE_SILO: OFF
          ENABLE_ADIOS: OFF
          ENABLE_PARMETIS: ON
          ENABLE_PYTHON: ON
          ENABLE_PYTHON2: OFF
          PYTHON_VERSION: 3.10.6
          CMAKE_VERSION: 3.26.0
          BLT_CXX_STD: c++11
          BLT_ENABLE_FIND_MPI: ON

        ub_18_shared_mpi_compilers_direct_cmake_3_21:
          containerImage: ${{ variables.ubuntu_18_tag }}
          COMPILER_CC: mpicc
          COMPILER_CXX: mpic++
          COMPILER_FC: mpif90
          COMPILER_SPEC: gcc
          FORCE_COMPILERS: ON
          BUILD_SHARED_LIBS: ON
          CMAKE_BUILD_TYPE: Debug
          ENABLE_COVERAGE: OFF
          ENABLE_MPI: ON
          ENABLE_DOCS: ON
          ENABLE_HDF5: ON
          ENABLE_HDF5_COMPAT: ON
          HDF5_SPEC: "hdf5~mpi"
          ENABLE_SILO: ON
          ENABLE_ADIOS: OFF
          ENABLE_PYTHON: OFF
          CMAKE_VERSION: 3.21.1
          BLT_CXX_STD: c++11
          BLT_ENABLE_FIND_MPI: OFF

        ub_21_10_shared_py38_cmake_3_21:
          containerImage: ${{ variables.ubuntu_21_10_tag }}
          COMPILER_CC: gcc
          COMPILER_CXX: g++
          COMPILER_FC: gfortran
          COMPILER_SPEC: gcc
          FORCE_COMPILERS: OFF
          BUILD_SHARED_LIBS: ON
          CMAKE_BUILD_TYPE: Debug
          ENABLE_COVERAGE: OFF
          ENABLE_MPI: ON
          ENABLE_DOCS: ON
          ENABLE_RELAY_WEBSERVER: ON
          ENABLE_HDF5: ON
          ENABLE_HDF5_COMPAT: ON
          HDF5_SPEC: "hdf5~mpi"
          ENABLE_SILO: ON
          ENABLE_ADIOS: OFF
          ENABLE_PARMETIS: ON
          ENABLE_PYTHON: ON
          ENABLE_PYTHON2: OFF
          PYTHON_VERSION: 3.8.8
          CMAKE_VERSION: 3.21.1
          BLT_CXX_STD: c++11
          BLT_ENABLE_FIND_MPI: ON

    steps:
      - checkout: self
        clean: boolean
        submodules: recursive

      - script: |
           ##################
           # setup build env
           ##################
           # output env
           cat etc/*rel*
           # install pkgs we need
           sudo apt-get update && sudo apt-get -y install python3
           env
        displayName: 'Prepare build env'

      - script: |
           #################################
           # run uber to build tpls
           #################################
           #
           pwd
           # echo system python details
           which python
           python3 --version
           # setup spack spec
           export SPACK_SPEC="%${COMPILER_SPEC}"
           # mpi
           if [ $ENABLE_MPI  = 'ON' ]; then export SPACK_SPEC="${SPACK_SPEC}+mpi"; fi
           if [ $ENABLE_MPI  = 'OFF' ]; then export SPACK_SPEC="${SPACK_SPEC}~mpi"; fi
           # hdf5
           if [ $ENABLE_HDF5_COMPAT = 'OFF' ]; then export SPACK_SPEC="${SPACK_SPEC}~hdf5_compat"; fi
           # silo
           if [ $ENABLE_SILO  = 'ON' ]; then export SPACK_SPEC="${SPACK_SPEC}+silo"; fi
           if [ $ENABLE_SILO  = 'OFF' ]; then export SPACK_SPEC="${SPACK_SPEC}~silo"; fi
           # parmetis
           if [ $ENABLE_PARMETIS = 'ON' ]; then export SPACK_SPEC="${SPACK_SPEC}+parmetis"; fi
           if [ $ENABLE_PARMETIS = 'OFF' ]; then export SPACK_SPEC="${SPACK_SPEC}~parmetis"; fi
           # adios
           if [ $ENABLE_ADIOS  = 'ON' ]; then export SPACK_SPEC="${SPACK_SPEC}+adios~zfp"; fi
           if [ $ENABLE_ADIOS  = 'OFF' ]; then export SPACK_SPEC="${SPACK_SPEC}~adios"; fi
           # python
           if [ $ENABLE_PYTHON  = 'ON' ]; then export SPACK_SPEC="${SPACK_SPEC}+python"; fi
           if [ $ENABLE_PYTHON  = 'OFF' ]; then export SPACK_SPEC="${SPACK_SPEC}~python"; fi
           # docs
           if [ $ENABLE_DOCS  = 'ON' ]; then export SPACK_SPEC="${SPACK_SPEC}+doc"; fi
           if [ $ENABLE_DOCS  = 'OFF' ]; then export SPACK_SPEC="${SPACK_SPEC}~doc"; fi
           # package ver selections and extra tweaks
           export SPACK_SPEC="${SPACK_SPEC} ^cmake@${CMAKE_VERSION}"
           # python constraints
           if [ $ENABLE_PYTHON = 'ON' ]; then export SPACK_SPEC="${SPACK_SPEC} ^python@${PYTHON_VERSION}"; fi
           if [ $ENABLE_PYTHON2 = 'ON' ]; then export SPACK_SPEC="${SPACK_SPEC} ${PYTHON2_CONSTRAINTS}"; fi
           # hdf5 constraints
           if [ $ENABLE_HDF5 = 'ON' ]; then export SPACK_SPEC="${SPACK_SPEC} ^${HDF5_SPEC}"; fi
           # silo constraints
           if [ $ENABLE_SILO = 'ON' ]; then export SPACK_SPEC="${SPACK_SPEC} ^silo~mpi"; fi
           # show final spec
           echo "SPACK SPEC:"
           echo $SPACK_SPEC
           # run uber to build tpls
           python3 scripts/uberenv/uberenv.py -k --spack-allow-deprecated --spec "${SPACK_SPEC}" --spack-config-dir=scripts/uberenv_configs/spack_configs/configs/alpinedav/ubuntu_18.04_devel/
        displayName: 'Spack Build Tpls'

      - script: |
           #################################
           # configure
           #################################
           # setup compiler env vars
           export CC=${COMPILER_CC}
           export CXX=${COMPILER_CXX}
           export FC=${COMPILER_FC}
           ${CC} --version
           # capture current path
           export ROOT_DIR=`pwd`
           # find spack generated host config file
           export HOST_CONFIG=`ls ${ROOT_DIR}/uberenv_libs/*.cmake`
           echo $HOST_CONFIG
           # find spack installed cmake
           export CMAKE_BIN_DIR=`ls -d ${ROOT_DIR}/uberenv_libs/spack/opt/spack/*/*/cmake*/bin`
           export PATH=${CMAKE_BIN_DIR}:$PATH
           echo $PATH
           which cmake
           cmake --version
           # prepare build dir
           mkdir build
           cd build
           # setup cmake options
           export CMAKE_OPTS="-C ${HOST_CONFIG}"
           export CMAKE_OPTS="${CMAKE_OPTS} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
           export CMAKE_OPTS="${CMAKE_OPTS} -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}"
           export CMAKE_OPTS="${CMAKE_OPTS} -DENABLE_COVERAGE=${ENABLE_COVERAGE}"
           export CMAKE_OPTS="${CMAKE_OPTS} -DBLT_CXX_STD=${BLT_CXX_STD}"
           export CMAKE_OPTS="${CMAKE_OPTS} -DENABLE_FIND_MPI=${BLT_ENABLE_FIND_MPI}"
           export CMAKE_OPTS="${CMAKE_OPTS} -DCMAKE_INSTALL_PREFIX=../install"
           # this is now getting set to the uberenv-pkg loc by spack, ignore for ci
           export CMAKE_OPTS="${CMAKE_OPTS} -DPYTHON_MODULE_INSTALL_PREFIX=IGNORE"
           if [ $FORCE_COMPILERS = 'ON' ]; then export CMAKE_OPTS="${CMAKE_OPTS} -DCMAKE_C_COMPILER=${COMPILER_CC}"; fi
           if [ $FORCE_COMPILERS = 'ON' ]; then export CMAKE_OPTS="${CMAKE_OPTS} -DCMAKE_CXX_COMPILER=${COMPILER_CXX}"; fi
           if [ $FORCE_COMPILERS = 'ON' ]; then export CMAKE_OPTS="${CMAKE_OPTS} -DCMAKE_Fortran_COMPILER=${COMPILER_FC}"; fi
           if [ $FORCE_COMPILERS = 'ON' ]; then export CMAKE_OPTS="${CMAKE_OPTS} -DMPIEXEC_NUMPROC_FLAG=-n"; fi
           # configure
           echo "CMAKE OPTIONS:"
           echo ${CMAKE_OPTS}
           cmake ${CMAKE_OPTS} ../src
        displayName: 'Configure with CMake'

      - script: |
           #################################
           # build
           #################################
           # build
           cd build
           make VERBOSE=1
        displayName: 'Build'

      - script: |
           #################################
           # test
           #################################
           # find spack installed cmake
           export ROOT_DIR=`pwd`
           export CMAKE_BIN_DIR=`ls -d ${ROOT_DIR}/uberenv_libs/spack/opt/spack/*/*/cmake*/bin`
           export PATH=${CMAKE_BIN_DIR}:$PATH
           which ctest
           cd build
           # run ctest
           ctest -T test --output-on-failure -V
        displayName: 'Run Unit Tests'

      - task: PublishTestResults@2
        inputs:
          testResultsFormat: 'cTest'
          testResultsFiles: '**/Test.xml'
        displayName: 'Unit Test Results'
        condition: always()

      - task: CopyFiles@2
        inputs:
          contents: 'build/tests/_output/**'
          targetFolder: $(Build.ArtifactStagingDirectory)
        condition: always()

      - task: PublishBuildArtifacts@1
        inputs:
          pathToPublish: $(Build.ArtifactStagingDirectory)
          artifactName: Conduit_Test_Outputs
        condition: always()

      - script: |
           #################################
           # install
           #################################
           cd build
           make install
        displayName: 'Install'

      - script: |
          ###########################
          # using with cmake example
          ###########################
          export CC=${COMPILER_CC}
          export CXX=${COMPILER_CXX}
          export FC=${COMPILER_FC}
          pwd
          ls -l
          # find spack installed cmake
          export ROOT_DIR=`pwd`
          export CMAKE_BIN_DIR=`ls -d ${ROOT_DIR}/uberenv_libs/spack/opt/spack/*/*/cmake*/bin`
          export PATH=${CMAKE_BIN_DIR}:$PATH
          echo $PATH
          which cmake
          cd install/examples/conduit/using-with-cmake
          rm -rf _test_build
          mkdir _test_build
          cd _test_build
          cmake ../
          make VERBOSE=1
          ./conduit_example
        displayName: 'Test vs Install (using-with-cmake)'

      - script: |
          ###########################
          # using with make example
          ###########################
          export CC=${COMPILER_CC}
          export CXX=${COMPILER_CXX}
          export FC=${COMPILER_FC}
          cat install/share/conduit/conduit_config.mk
          pwd
          ls -l
          cd install/examples/conduit/using-with-make
          make
          ./conduit_example
        displayName: 'Test vs Install (using-with-make)'

      - script: |
          ################################
          # using with cmake mpi example
          ###############################
          export CC=${COMPILER_CC}
          export CXX=${COMPILER_CXX}
          export FC=${COMPILER_FC}
          pwd
          ls -l
          # find spack installed cmake
          export ROOT_DIR=`pwd`
          export CMAKE_BIN_DIR=`ls -d ${ROOT_DIR}/uberenv_libs/spack/opt/spack/*/*/cmake*/bin`
          export PATH=${CMAKE_BIN_DIR}:$PATH
          echo $PATH
          which cmake
          cd install/examples/conduit/using-with-cmake-mpi
          rm -rf _test_build
          mkdir _test_build
          cd _test_build
          cmake ../
          make VERBOSE=1
          mpiexec -n 1 ./conduit_mpi_example
        displayName: 'Test vs Install (using-with-cmake-mpi)'
        condition: and(succeeded(),eq(variables['ENABLE_MPI'], 'ON'))

      - script: |
          ################################
          # cpp fort and py example
          ################################
          # only run this when python is enabled
          # (there might be a better way to do this with an azure `condition:` stmt)
          if [ $ENABLE_PYTHON = 'OFF' ]; then exit 0; fi
          export CC=${COMPILER_CC}
          export CXX=${COMPILER_CXX}
          export FC=${COMPILER_FC}
          pwd
          ls -l
          # find spack installed cmake
          export ROOT_DIR=`pwd`
          export CMAKE_BIN_DIR=`ls -d ${ROOT_DIR}/uberenv_libs/spack/opt/spack/*/*/cmake*/bin`
          export PATH=${CMAKE_BIN_DIR}:$PATH
          echo $PATH
          # find spack installed python
          export PYTHON_EXE=`ls -d ${ROOT_DIR}/uberenv_libs/spack/opt/spack/*/*/python*/bin/python`
          # add conduit module to python path
          export PYTHONPATH=${ROOT_DIR}/install/python-modules/
          echo $PYTHONPATH
          # CI LD_LIB FIX
          # NOTE: 
          #  THIS LD+_LIB FIX FOR AN ISSUE THAT OCCURED IN A CI PYTHON 2.7 STATIC LIBS TEST CASE
          #  Since the issue is related to hdf5 (not python!) we should investigate further.
          #
          export HDF5_ROOT_DIR=`ls -d ${ROOT_DIR}/uberenv_libs/spack/opt/spack/*/*/hdf5*/`
          export LD_LIBRARY_PATH="${HDF5_ROOT_DIR}/lib"
          if [ $ENABLE_SILO = 'ON' ]; then export SILO_ROOT_DIR=`ls -d ${ROOT_DIR}/uberenv_libs/spack/opt/spack/*/*/silo*/`; fi
          if [ $ENABLE_SILO = 'ON' ]; then export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${SILO_ROOT_DIR}/lib"; fi
          #
          # make sure we can import conduit from python before we try our compiled example
          $PYTHON_EXE -c "import conduit;print(conduit.about());"
          #
          which cmake
          # lets build
          cd install/examples/conduit/cpp_fort_and_py
          rm -rf _test_build
          mkdir _test_build
          cd _test_build
          cmake -DCONDUIT_DIR=${ROOT_DIR}/install  -DPYTHON_EXECUTABLE=${PYTHON_EXE} ../
          make VERBOSE=1
          # lets run!
          ./conduit_cpp_and_py_ex
          ./conduit_fort_and_py_ex
        displayName: 'Test vs Install (cpp_fort_and_py)'

      - script: |
          ################################################
          # using with cmake example vs reloc-ed install
          ################################################
          export CC=${COMPILER_CC}
          export CXX=${COMPILER_CXX}
          export FC=${COMPILER_FC}
          pwd
          ls -l
          # find spack installed cmake
          export ROOT_DIR=`pwd`
          export CMAKE_BIN_DIR=`ls -d ${ROOT_DIR}/uberenv_libs/spack/opt/spack/*/*/cmake*/bin`
          export PATH=${CMAKE_BIN_DIR}:$PATH
          echo $PATH
          which cmake
          mv install bananas
          cd bananas/examples/conduit/using-with-cmake
          rm -rf _test_build
          mkdir _test_build
          cd _test_build
          cmake ../
          make VERBOSE=1
          ./conduit_example
        displayName: 'Test vs Relocated Install (using-with-cmake)'

  ###############################################################################
  # Docker build and test case, that leverages our script that calls Docker Build
  ###############################################################################
  - job: Docker_Ubuntu
    pool:
      vmImage: 'ubuntu-latest'
    timeoutInMinutes: 0
    steps:
      - checkout: self
        clean: boolean
        submodules: recursive

      - script: |
          ####################
          # run docker build
          ####################
          cd src/examples/docker/ubuntu/ && ./example_build.sh
        displayName: 'Docker Build'


