diff --git a/.github/workflows/mcstas-basictest.yml b/.github/workflows/mcstas-basictest.yml index 67d3bf6be..c9baa36cd 100644 --- a/.github/workflows/mcstas-basictest.yml +++ b/.github/workflows/mcstas-basictest.yml @@ -63,13 +63,13 @@ jobs: id: setup-linux if: runner.os == 'Linux' run: | - sudo apt -y install libgsl-dev + sudo apt -y install libgsl-dev libnexus-dev - name: Setup (macOS) id: setup-macos if: runner.os == 'macOS' run: | - brew install bison flex gfortran gsl + brew install bison flex gfortran gsl homebrew/science/nexusformat - name: Setup (Windows) id: setup-Windows @@ -107,9 +107,9 @@ jobs: which cmake cmake --version - - name: Configure build and install mcstas on Unix - id: mcstas-install-unix - if: runner.os != 'Windows' + - name: Configure build and install mcstas + id: mcstas-install + if: ${{ matrix.CC != 'cl.exe' && runner.os }} run: | if [ "$RUNNER_OS" == "macOS" ]; then mkdir ${HOME}/tmp; fi if [ "$RUNNER_OS" == "macOS" ]; then export SDKROOT=$(xcrun --sdk macosx --show-sdk-path); fi @@ -163,34 +163,13 @@ jobs: cat ../install_mcstas/share/mcstas/tools/Python/mccodelib/mccode_config.json echo ******************************************************************************* - - name: Configure build and install mcstas on Windows-Mingw - id: mcstas-install-windows-mingw - if: ${{ matrix.CC == 'gcc.exe' && runner.os == 'Windows' }} - run: > - cmake -B build -S src - -G "Unix Makefiles" - -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc.exe - "-DCMAKE_INSTALL_PREFIX=./install" - -DMCVERSION="3.99.99" - -DMCCODE_BUILD_CONDA_PKG=OFF - -DMCCODE_BUILD_WINDOWS_MINGW=ON - -DMCCODE_CONFIG_MCPL2=ON - -DCMAKE_INSTALL_LIBDIR=lib - -DBUILD_MCSTAS=ON - -DMCCODE_USE_LEGACY_DESTINATIONS=OFF - -DBUILD_TOOLS=ON - -DENABLE_COMPONENTS=ON - -DENABLE_CIF2HKL=ON - -DENABLE_NEUTRONICS=OFF - -DMPIINCLUDEDIR=%MPIINCVAR% - -DMPILIBDIR=%MPILIBVAR% - - name: Configure build and install mcstas on Windows-MSVC id: mcstas-install-windows-msvc if: ${{ matrix.CC != 'gcc.exe' && runner.os == 'Windows' }} + shell: cmd run: > cmake -B build -S src - "-DCMAKE_INSTALL_PREFIX=./install" + "-DCMAKE_INSTALL_PREFIX=./install_mcstas" -DMCVERSION="3.99.99" -DMCCODE_BUILD_CONDA_PKG=OFF -DMCCODE_CONFIG_MCPL2=ON @@ -205,29 +184,38 @@ jobs: -DMPILIBDIR=%MPILIBVAR% - name: CMake build - if: runner.os == 'Windows' + if: ${{ matrix.CC != 'gcc.exe' && runner.os == 'Windows' }} shell: cmd run: cmake --build build --config Release -j 2 - name: CMake install - if: runner.os == 'Windows' + if: ${{ matrix.CC != 'gcc.exe' && runner.os == 'Windows' }} run: cmake --install build --config Release - name: set MCSTAS env var if: runner.os == 'Windows' - run: echo MCSTAS=%CD%\install\share\mcstas\resources >> %GITHUB_ENV% + run: echo MCSTAS=%CD%\install_mcstas\share\mcstas\resources >> %GITHUB_ENV% - name: check MCSTAS env var if: runner.os == 'Windows' run: echo %MCSTAS% - - name: Various Windows debugging + - name: Various Windows debugging - McStas if: runner.os == 'Windows' shell: cmd run: | - type .\install\share\mcstas\tools\Python\mccodelib\mccode_config.json - .\install\bin\mcrun -h - .\install\bin\mcstas -v + type .\install_mcstas\share\mcstas\tools\Python\mccodelib\mccode_config.json + .\install_mcstas\bin\mcrun -h + .\install_mcstas\bin\mcstas -v + if [ "${{ matrix.cc }}" != "cl.exe" ]; + then + mcpl-config -s + ncrystal-config -s + fi + + - name: Various Windows debugging - MCPL and NCrystal + if: runner.os == 'Windows' + run: | mcpl-config -s ncrystal-config -s @@ -247,35 +235,30 @@ jobs: python3 -mpip install PyYAML ply McStasscript ncrystal mcpl mcpl-extra jinja2 psutil fi - # Start of Unix tests + # Start of tests - name: Launch RNG test instrument id: RNG-test - if: runner.os != 'Windows' - # Status: Works on Unixes run: | set -e set -u set -x - export MCSTAS_EXECUTABLE="mcstas" - export MCSTAS_PYGEN_EXECUTABLE="mcstas-pygen" - export MCRUN_EXECUTABLE="mcrun" export MD5SUM="md5sum" - if [ "$RUNNER_OS" == "Windows" ]; - then - export MCSTAS_EXECUTABLE="mcstas.exe" - export MCSTAS_PYGEN_EXECUTABLE="mcstas-pygen.exe" - export MCRUN_EXECUTABLE="mcrun.bat" - fi if [ "$RUNNER_OS" == "macOS" ]; then export MD5SUM="md5" fi - test -f ./install_mcstas/bin/${MCSTAS_EXECUTABLE} - ./install_mcstas/bin/${MCSTAS_EXECUTABLE} --version - mkdir run_RNG && cd run_RNG - cp ../install_mcstas/share/mcstas/resources/examples/Tests_RNG/Test_RNG_rand01/Test_RNG_rand01.instr . - ../install_mcstas/bin/${MCRUN_EXECUTABLE} Test_RNG_rand01.instr -s1000 Ncount=1000 -d RNGtest - export SUM=`grep -v \# RNGtest/rngout.dat | ${MD5SUM} | cut -f1 -d\ ` + if [ "$RUNNER_OS" == "Windows" ]; + then + export SUFFIX=".bat" + export EXESUFFIX=".exe" + else + export SUFFIX="" + export EXESUFFIX="" + fi + test -f ./install_mcstas/bin/mcstas${EXESUFFIX} + ./install_mcstas/bin/mcstas${EXESUFFIX} --version + ./install_mcstas/bin/mctest${SUFFIX} --instr=Test_RNG_rand01 --testdir=run_singletests --suffix=${{ matrix.mpi }} + export SUM=`find run_singletests -name rngout.dat | xargs -n1 grep -v \# | ${MD5SUM} | cut -f1 -d\ ` export EXPECTED="f192ce4609e2225bf9d42ce9c5fa5a86" if [ "${EXPECTED}" == "${SUM}" ]; then @@ -288,171 +271,138 @@ jobs: - name: Launch BNL_H8 instrument id: h8-test - if: runner.os != 'Windows' - # Status: Works on Unixes run: | set -e set -u set -x - export MCSTAS_EXECUTABLE="mcstas" - export MCSTAS_PYGEN_EXECUTABLE="mcstas-pygen" - export MCRUN_EXECUTABLE="mcrun" + export MD5SUM="md5sum" + if [ "$RUNNER_OS" == "macOS" ]; + then + export MD5SUM="md5" + fi if [ "$RUNNER_OS" == "Windows" ]; then - export MCSTAS_EXECUTABLE="mcstas.exe" - export MCSTAS_PYGEN_EXECUTABLE="mcstas-pygen.exe" - export MCRUN_EXECUTABLE="mcrun.bat" + export SUFFIX=".bat" + export EXESUFFIX=".exe" + else + export SUFFIX="" + export EXESUFFIX="" + fi + test -f ./install_mcstas/bin/mcstas${EXESUFFIX} + ./install_mcstas/bin/mcstas${EXESUFFIX} --version + ./install_mcstas/bin/mctest${SUFFIX} --instr=BNL_H8 --testdir=run_singletests --suffix=${{ matrix.mpi }} + if [ "${{ matrix.cc }}" != "cl.exe" ]; + then + ./install_mcstas/bin/mctest${SUFFIX} --instr=BNL_H8 --mpi=2 --testdir=run_singletests --suffix=${{ matrix.mpi }} fi - test -f ./install_mcstas/bin/${MCSTAS_EXECUTABLE} - ./install_mcstas/bin/${MCSTAS_EXECUTABLE} --version - mkdir run_BNL_H8 && cd run_BNL_H8 - cp ../install_mcstas/share/mcstas/resources/examples/BNL/BNL_H8/BNL_H8.instr . - ../install_mcstas/bin/${MCRUN_EXECUTABLE} BNL_H8.instr lambda=2.36 - ../install_mcstas/bin/${MCSTAS_PYGEN_EXECUTABLE} BNL_H8.instr - - - name: Launch BNL_H8 instrument (MPI) - id: h8-test-mpi + + - name: Launch ISIS_CRISP + id: ISIS_CRISP if: runner.os != 'Windows' - # Status: Works on Unixes run: | set -e set -u set -x - export MCSTAS_EXECUTABLE="mcstas" - export MCSTAS_PYGEN_EXECUTABLE="mcstas-pygen" - export MCRUN_EXECUTABLE="mcrun" - if [ "$RUNNER_OS" == "macOS" ]; then export TMPDIR=${HOME}/tmp; fi + export MD5SUM="md5sum" + if [ "$RUNNER_OS" == "macOS" ]; + then + export MD5SUM="md5" + fi if [ "$RUNNER_OS" == "Windows" ]; then - export MCSTAS_EXECUTABLE="mcstas.exe" - export MCSTAS_PYGEN_EXECUTABLE="mcstas-pygen.exe" - export MCRUN_EXECUTABLE="mcrun.bat" + export SUFFIX=".bat" + export EXESUFFIX=".exe" + else + export SUFFIX="" + export EXESUFFIX="" fi - test -f ./install_mcstas/bin/${MCSTAS_EXECUTABLE} - ./install_mcstas/bin/${MCSTAS_EXECUTABLE} --version - mkdir run_BNL_H8_mpi && cd run_BNL_H8_mpi - cp ../install_mcstas/share/mcstas/resources/examples/BNL/BNL_H8/BNL_H8.instr . - ../install_mcstas/bin/${MCRUN_EXECUTABLE} --verbose --mpi=2 BNL_H8.instr lambda=2.36 + test -f ./install_mcstas/bin/mcstas${EXESUFFIX} + ./install_mcstas/bin/mcstas${EXESUFFIX} --version + ./install_mcstas/bin/mctest${SUFFIX} --instr=ISIS_CRISP --testdir=run_singletests --suffix=${{ matrix.mpi }} + ./install_mcstas/bin/mctest${SUFFIX} --instr=ISIS_CRISP --mpi=2 --testdir=run_singletests --suffix=${{ matrix.mpi }} - name: Launch MCPL test instrument id: mcpl-test if: runner.os != 'Windows' - # Status: Works on Unixes run: | set -e set -u set -x - export MCSTAS_EXECUTABLE="mcstas" - export MCRUN_EXECUTABLE="mcrun" - if [ "$RUNNER_OS" == "Windows" ]; + export MD5SUM="md5sum" + if [ "$RUNNER_OS" == "macOS" ]; then - export MCSTAS_EXECUTABLE="mcstas.exe" - export MCRUN_EXECUTABLE="mcrun.bat" + export MD5SUM="md5" fi - export PATH=${PATH}:${PWD}/install_mcstas/bin/:${PWD}/install_mcstas/mcstas/3.99.99/bin/ - test -f ./install_mcstas/bin/${MCSTAS_EXECUTABLE} - ./install_mcstas/bin/${MCSTAS_EXECUTABLE} --version - mkdir run_ESS_BEER_MCPL && cd run_ESS_BEER_MCPL - cp ../install_mcstas/share/mcstas/resources/examples/ESS/ESS_BEER_MCPL/* . - ../install_mcstas/bin/${MCRUN_EXECUTABLE} ESS_BEER_MCPL.instr repetition=50 - - - name: Launch MCPL test instrument (mpi) - id: mcpl-test-mpi - if: runner.os != 'Windows' - # Status: Works on Unixes - run: | - set -e - set -u - set -x - export MCSTAS_EXECUTABLE="mcstas" - export MCRUN_EXECUTABLE="mcrun" - if [ "$RUNNER_OS" == "macOS" ]; then export TMPDIR=${HOME}/tmp; fi if [ "$RUNNER_OS" == "Windows" ]; then - export MCSTAS_EXECUTABLE="mcstas.exe" - export MCRUN_EXECUTABLE="mcrun.bat" + export SUFFIX=".bat" + export EXESUFFIX=".exe" + else + export SUFFIX="" + export EXESUFFIX="" fi - export PATH=${PATH}:${PWD}/install_mcstas/bin/:${PWD}/install_mcstas/mcstas/3.99.99/bin/ - test -f ./install_mcstas/bin/${MCSTAS_EXECUTABLE} - ./install_mcstas/bin/${MCSTAS_EXECUTABLE} --version - mkdir run_ESS_BEER_MCPL_mpi && cd run_ESS_BEER_MCPL_mpi - cp ../install_mcstas/share/mcstas/resources/examples/ESS/ESS_BEER_MCPL/* . - ../install_mcstas/bin/${MCRUN_EXECUTABLE} --verbose --mpi=2 ESS_BEER_MCPL.instr repetition=100 + test -f ./install_mcstas/bin/mcstas${EXESUFFIX} + ./install_mcstas/bin/mcstas${EXESUFFIX} --version + ./install_mcstas/bin/mctest${SUFFIX} --instr=ESS_BEER_MCPL --testdir=run_singletests --suffix=${{ matrix.mpi }} + ./install_mcstas/bin/mctest${SUFFIX} --instr=Test_MCPL_input --testdir=run_singletests --suffix=${{ matrix.mpi }} + ./install_mcstas/bin/mctest${SUFFIX} --instr=Test_MCPL_output --testdir=run_singletests --suffix=${{ matrix.mpi }} + ./install_mcstas/bin/mctest${SUFFIX} --instr=ESS_BEER_MCPL --mpi=2 --testdir=run_singletests --suffix=${{ matrix.mpi }} + ./install_mcstas/bin/mctest${SUFFIX} --instr=Test_MCPL_input --mpi=2 --testdir=run_singletests --suffix=${{ matrix.mpi }} + ./install_mcstas/bin/mctest${SUFFIX} --instr=Test_MCPL_output --mpi=2 --testdir=run_singletests --suffix=${{ matrix.mpi }} + - name: Launch NCrystal test instrument id: ncrystal-test if: runner.os != 'Windows' - # Status: Works on Unixes run: | set -e set -u set -x - export MCSTAS_EXECUTABLE="mcstas" - export MCRUN_EXECUTABLE="mcrun" - if [ "$RUNNER_OS" == "Windows" ]; + export MD5SUM="md5sum" + if [ "$RUNNER_OS" == "macOS" ]; then - export MCSTAS_EXECUTABLE="mcstas.exe" - export MCRUN_EXECUTABLE="mcrun.bat" + export MD5SUM="md5" fi - export PATH=${PATH}:${PWD}/install_mcstas/bin/:${PWD}/install_mcstas/mcstas/3.99.99/bin/ - test -f ./install_mcstas/bin/${MCSTAS_EXECUTABLE} - ./install_mcstas/bin/${MCSTAS_EXECUTABLE} --version - mkdir run_NCrystal_example && cd run_NCrystal_example - cp ../install_mcstas/share/mcstas/resources/examples/NCrystal/NCrystal_example/NCrystal_example.instr . - ../install_mcstas/bin/${MCRUN_EXECUTABLE} NCrystal_example.instr sample_cfg="Y2O3_sg206_Yttrium_Oxide.ncmat;density=0.6x" - - - name: Launch NCrystal test instrument (mpi) - id: ncrystal-test-mpi - if: runner.os != 'Windows' - # Status: Works on Unixes - run: | - set -e - set -u - set -x - export MCSTAS_EXECUTABLE="mcstas" - export MCRUN_EXECUTABLE="mcrun" - if [ "$RUNNER_OS" == "macOS" ]; then export TMPDIR=${HOME}/tmp; fi if [ "$RUNNER_OS" == "Windows" ]; then - export MCSTAS_EXECUTABLE="mcstas.exe" - export MCRUN_EXECUTABLE="mcrun.bat" + export SUFFIX=".bat" + export EXESUFFIX=".exe" + else + export SUFFIX="" + export EXESUFFIX="" + fi + test -f ./install_mcstas/bin/mcstas${EXESUFFIX} + ./install_mcstas/bin/mctest${SUFFIX} --instr=NCrystal_example --testdir=run_singletests --suffix=${{ matrix.mpi }} + if [ "${{ matrix.cc }}" != "cl.exe" ]; + then + ./install_mcstas/bin/mctest${SUFFIX} --instr=NCrystal_example --mpi=2 --testdir=run_singletests --suffix=${{ matrix.mpi }} fi - export PATH=${PATH}:${PWD}/install_mcstas/bin/:${PWD}/install_mcstas/mcstas/3.99.99/bin/ - test -f ./install_mcstas/bin/${MCSTAS_EXECUTABLE} - ./install_mcstas/bin/${MCSTAS_EXECUTABLE} --version - mkdir run_NCrystal_example_mpi && cd run_NCrystal_example_mpi - cp ../install_mcstas/share/mcstas/resources/examples/NCrystal/NCrystal_example/NCrystal_example.instr . - ncrystal-config --version - export NUM_MPI=2 - ../install_mcstas/bin/${MCRUN_EXECUTABLE} --verbose --mpi=${NUM_MPI} NCrystal_example.instr sample_cfg="Y2O3_sg206_Yttrium_Oxide.ncmat;density=0.6x" - name: Launch NeXus test instrument id: nexus-test - if: runner.os == 'Linux' # Linux only - # Status: Works on Linux (NeXus packages w/napi.h missing on mac+Windows) + if: runner.os != 'Windows' run: | set -e set -u set -x - sudo apt-get update - sudo apt-get -y install libnexus-dev - export MCSTAS_EXECUTABLE="mcstas" - export MCRUN_EXECUTABLE="mcrun" - export PATH=${PATH}:${PWD}/install_mcstas/bin/:${PWD}/install_mcstas/mcstas/3.99.99/bin/ - if [ "x$(uname | cut -f1 -d_)" == "xMINGW64" ]; + export MD5SUM="md5sum" + if [ "$RUNNER_OS" == "macOS" ]; then - export MCSTAS_EXECUTABLE="mcstas.exe" - export MCRUN_EXECUTABLE="mcrun.bat" + export MD5SUM="md5" fi - test -f ./install_mcstas/bin/${MCSTAS_EXECUTABLE} - ./install_mcstas/bin/${MCSTAS_EXECUTABLE} --version - mkdir run_templateSANS_Mantid && cd run_templateSANS_Mantid - cp ../install_mcstas/share/mcstas/resources/examples/Mantid/templateSANS_Mantid/templateSANS_Mantid.instr . - #Not a final solution!!!: - #if [ "x$(uname)" == "xDarwin" ]; then export MCSTAS_CC_OVERRIDE=/usr/bin/clang; fi - if [ "x$(uname)" == "xLinux" ]; then - ../install_mcstas/bin/${MCRUN_EXECUTABLE} --format=NeXus --IDF templateSANS_Mantid.instr lambda=6 - ../install_mcstas/bin/${MCRUN_EXECUTABLE} -c --verbose --mpi=2 --format=NeXus --IDF templateSANS_Mantid.instr lambda=6 + if [ "$RUNNER_OS" == "Windows" ]; + then + export SUFFIX=".bat" + export EXESUFFIX=".exe" + else + export SUFFIX="" + export EXESUFFIX="" + fi + test -f ./install_mcstas/bin/mcstas${EXESUFFIX} + ./install_mcstas/bin/mctest${SUFFIX} --instr=templateSANS_Mantid --testdir=run_singletests --suffix=${{ matrix.mpi }} + if [ "${{ matrix.cc }}" != "cl.exe" ]; + then + ./install_mcstas/bin/mctest${SUFFIX} --instr=templateSANS_Mantid --mpi=2 --testdir=run_singletests --suffix=${{ matrix.mpi }} fi - name: Check for modified instruments @@ -480,9 +430,9 @@ jobs: if [ "$NUMMATCH" -gt "0" ]; then if [ "$RUNNER_OS" != "Windows" ]; then - mctest --mpi=2 --testdir run_${comp} --comp=${comp} --suffix=${{ matrix.CC }}_CHANGES $PERMISSIVE --verbose + mctest --mpi=2 --testdir run_${comp} --comp=${comp} --suffix=CHANGES_${{ matrix.CC }}_${{ matrix.mpi }} $PERMISSIVE --verbose else - echo .\\install\\bin\\mctest --verbose --testdir run_${comp} --comp=${comp} --suffix=${{ matrix.CC }}_CHANGES --permissive --verbose >> changedinstr.bat + mctest.bat --mpi=2 --testdir run_${comp} --comp=${comp} --suffix=CHANGES_${{ matrix.CC }}_${{ matrix.mpi }} $PERMISSIVE --verbose fi else echo No matching tests found @@ -513,97 +463,14 @@ jobs: fi mkdir run_mctest && cd run_mctest if [ "$RUNNER_OS" != "Windows" ]; then - mctest --mpi=2 --testdir $PWD $SCOPE --suffix=${{ matrix.CC }}_CHANGES $PERMISSIVE + mctest --mpi=2 --testdir $PWD $SCOPE --suffix=CHANGES_${{ matrix.mpi }} $PERMISSIVE mcviewtest --nobrowse $PWD else - echo .\\install\\bin\\mctest --verbose --testdir=run_mctest $SCOPE --suffix=${{ matrix.CC }}_CHANGES --permissive >> ..\\changedinstr.bat + mctest.bat --mpi=2 --testdir $PWD $SCOPE --suffix=CHANGES_${{ matrix.mpi }} $PERMISSIVE + mcviewtest.bat --nobrowse $PWD fi fi - # END of Unix tests - - - name: Run modified instruments Win - id: instr-test-Win - if: runner.os == 'Windows' # Windows only - shell: cmd - run: | - if exist changedinstr.bat ( - call .\changedinstr.bat - ) - - # Start of Windows tests - - name: Prepare rundirs Windows - if: runner.os == 'Windows' # Windows only - shell: cmd - run: mkdir run_rng run_std run_mcpl_output run_mcpl_input run_mcpl_input_once run_union run_ncrystal - - - name: Prepare and run rng instrument Windows - if: runner.os == 'Windows' # Windows only - shell: cmd - working-directory: run_rng - run: | - copy ..\install\share\mcstas\resources\examples\Tests_RNG\Test_RNG_rand01\Test_RNG_rand01.instr test.instr - ..\install\bin\mcrun --verbose test.instr -s1000 Ncount=1000 -d RNGtest - - - name: Prepare and run BNL_H8 instrument Windows - if: runner.os == 'Windows' # Windows only - shell: cmd - working-directory: run_std - run: | - copy ..\install\share\mcstas\resources\examples\BNL\BNL_H8\BNL_H8.instr test.instr - ..\install\bin\mcrun --verbose test.instr -s1000 -y - - - name: Prepare and run NCrystal instrument Windows - if: runner.os == 'Windows' # Windows only - shell: cmd - working-directory: run_ncrystal - run: | - copy ..\install\share\mcstas\resources\examples\NCrystal\NCrystal_example\NCrystal_example.instr test.instr - ..\install\bin\mcrun --verbose test.instr -s1000 -y - - - name: Prepare and run MCPL_input instrument Windows - if: runner.os == 'Windows' # Windows only - shell: cmd - working-directory: run_mcpl_input - run: | - copy ..\install\share\mcstas\resources\examples\Tests_MCPL_etc\Test_MCPL_input\Test_MCPL_input.instr test.instr - copy ..\install\share\mcstas\resources\examples\Tests_MCPL_etc\Test_MCPL_input\voutput.mcpl.gz . - ..\install\bin\mcrun --verbose test.instr -s1000 -y - - - name: Prepare and run MCPL_input_once instrument Windows - if: runner.os == 'Windows' # Windows only - shell: cmd - working-directory: run_mcpl_input_once - run: | - copy ..\install\share\mcstas\resources\examples\Tests_MCPL_etc\Test_MCPL_input_once\Test_MCPL_input_once.instr test.instr - copy ..\install\share\mcstas\resources\examples\Tests_MCPL_etc\Test_MCPL_input_once\voutput.mcpl.gz . - ..\install\bin\mcrun --verbose test.instr -s1000 -y - - - name: Prepare and run MCPL_output instrument Windows - if: runner.os == 'Windows' # Windows only - shell: cmd - working-directory: run_mcpl_output - run: | - copy ..\install\share\mcstas\resources\examples\Tests_MCPL_etc\Test_MCPL_output\Test_MCPL_output.instr test.instr - ..\install\bin\mcrun --verbose test.instr -s1000 -y - - - name: Test RNG instrument output Windows - if: runner.os == 'Windows' # Windows only - working-directory: run_rng - shell: bash - run: | - export SUM=`grep -v \# RNGtest/rngout.dat | dos2unix | md5sum | cut -f1 -d\ ` - export EXPECTED="f192ce4609e2225bf9d42ce9c5fa5a86" - if [ "${EXPECTED}" == "${SUM}" ]; - then - echo RNG test success! - true - else - echo RNG test failure! - false - fi - # END of Windows tests - - name: 'Tar output files' id: tar-package if: always() diff --git a/.github/workflows/mcstas-conda-basictest.yml b/.github/workflows/mcstas-conda-basictest.yml index 95a66ad1e..7ddc8ee0f 100644 --- a/.github/workflows/mcstas-conda-basictest.yml +++ b/.github/workflows/mcstas-conda-basictest.yml @@ -35,7 +35,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: path: src fetch-depth: 2 diff --git a/.github/workflows/mcstas-conda-testsuite.yml b/.github/workflows/mcstas-conda-testsuite.yml index 6d3311fa5..ff33771f0 100644 --- a/.github/workflows/mcstas-conda-testsuite.yml +++ b/.github/workflows/mcstas-conda-testsuite.yml @@ -33,7 +33,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: path: src diff --git a/.github/workflows/mcxtrace-basictest.yml b/.github/workflows/mcxtrace-basictest.yml index 146e95389..c75077237 100644 --- a/.github/workflows/mcxtrace-basictest.yml +++ b/.github/workflows/mcxtrace-basictest.yml @@ -115,9 +115,9 @@ jobs: which cmake cmake --version - - name: Configure build and install mcxtrace on Unix - id: mcxtrace-install-unix - if: runner.os != 'Windows' + - name: Configure build and install mcxtrace + id: mcxtrace-install + if: ${{ matrix.CC != 'cl.exe' && runner.os }} run: | if [ "$RUNNER_OS" == "macOS" ]; then mkdir ${HOME}/tmp; fi if [ "$RUNNER_OS" == "macOS" ]; then export SDKROOT=$(xcrun --sdk macosx --show-sdk-path); fi @@ -172,34 +172,13 @@ jobs: cat ../install_mcxtrace/share/mcxtrace/tools/Python/mccodelib/mccode_config.json echo ******************************************************************************* - - name: Configure build and install mcxtrace on Windows-Mingw - id: mcxtrace-install-windows-mingw - if: ${{ matrix.CC == 'gcc.exe' && runner.os == 'Windows' }} - run: > - cmake -B build -S src - -G "Unix Makefiles" - -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc.exe - "-DCMAKE_INSTALL_PREFIX=./install" - -DMCVERSION="3.99.99" - -DMCCODE_BUILD_CONDA_PKG=OFF - -DMCCODE_BUILD_WINDOWS_MINGW=ON - -DMCCODE_CONFIG_MCPL2=ON - -DCMAKE_INSTALL_LIBDIR=lib - -DBUILD_MCXTRACE=ON - -DMCCODE_USE_LEGACY_DESTINATIONS=OFF - -DBUILD_TOOLS=ON - -DENABLE_COMPONENTS=ON - -DENABLE_CIF2HKL=ON - -DENABLE_NEUTRONICS=OFF - -DMPIINCLUDEDIR=%MPIINCVAR% - -DMPILIBDIR=%MPILIBVAR% - - name: Configure build and install mcxtrace on Windows-MSVC id: mcxtrace-install-windows-msvc if: ${{ matrix.CC != 'gcc.exe' && runner.os == 'Windows' }} + shell: cmd run: > cmake -B build -S src - "-DCMAKE_INSTALL_PREFIX=./install" + "-DCMAKE_INSTALL_PREFIX=./install_mcxtrace" -DMCVERSION="3.99.99" -DMCCODE_BUILD_CONDA_PKG=OFF -DMCCODE_CONFIG_MCPL2=ON @@ -214,29 +193,37 @@ jobs: -DMPILIBDIR=%MPILIBVAR% - name: CMake build - if: runner.os == 'Windows' + if: ${{ matrix.CC != 'gcc.exe' && runner.os == 'Windows' }} shell: cmd run: cmake --build build --config Release -j 2 - name: CMake install - if: runner.os == 'Windows' + if: ${{ matrix.CC != 'gcc.exe' && runner.os == 'Windows' }} run: cmake --install build --config Release - name: set MCXTRACE env var if: runner.os == 'Windows' - run: echo MCXTRACE=%CD%\install\share\mcxtrace\resources >> %GITHUB_ENV% + run: echo MCXTRACE=%CD%\install_mcxtrace\share\mcxtrace\resources >> %GITHUB_ENV% - name: check MCXTRACE env var if: runner.os == 'Windows' run: echo %MCXTRACE% - - name: Various Windows debugging + - name: Various Windows debugging - McXtrace if: runner.os == 'Windows' shell: cmd run: | - type .\install\share\mcxtrace\tools\Python\mccodelib\mccode_config.json - .\install\bin\mxrun -h - .\install\bin\mcxtrace -v + type .\install_mcxtrace\share\mcxtrace\tools\Python\mccodelib\mccode_config.json + .\install_mcxtrace\bin\mxrun -h + .\install_mcxtrace\bin\mcxtrace -v + if [ "${{ matrix.cc }}" != "cl.exe" ]; + then + mcpl-config -s + fi + + - name: Various Windows debugging - MCPL + if: runner.os == 'Windows' + run: | mcpl-config -s - name: Pip install Unix @@ -255,35 +242,30 @@ jobs: python3 -mpip install PyYAML ply McStasscript mcpl mcpl-extra jinja2 psutil fi - # Start of Unix tests + # Start of tests - name: Launch RNG test instrument id: RNG-test - if: runner.os != 'Windows' - # Status: Works on Unixes run: | set -e set -u set -x - export MCXTRACE_EXECUTABLE="mcxtrace" - export MCXTRACE_PYGEN_EXECUTABLE="mcxtrace-pygen" - export MXRUN_EXECUTABLE="mxrun" export MD5SUM="md5sum" - if [ "$RUNNER_OS" == "Windows" ]; - then - export MCXTRACE_EXECUTABLE="mcxtrace.exe" - export MCXTRACE_PYGEN_EXECUTABLE="mcxtrace-pygen.exe" - export MXRUN_EXECUTABLE="mxrun.bat" - fi if [ "$RUNNER_OS" == "macOS" ]; then export MD5SUM="md5" fi - test -f ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} - ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} --version - mkdir run_RNG && cd run_RNG - cp ../install_mcxtrace/share/mcxtrace/resources/examples/Tests_RNG/Test_RNG_rand01/Test_RNG_rand01.instr . - ../install_mcxtrace/bin/${MXRUN_EXECUTABLE} Test_RNG_rand01.instr -s1000 Ncount=1000 -d RNGtest - export SUM=`grep -v \# RNGtest/rngout.dat | ${MD5SUM} | cut -f1 -d\ ` + if [ "$RUNNER_OS" == "Windows" ]; + then + export SUFFIX=".bat" + export EXESUFFIX=".exe" + else + export SUFFIX="" + export EXESUFFIX="" + fi + test -f ./install_mcxtrace/bin/mcxtrace${EXESUFFIX} + ./install_mcxtrace/bin/mcxtrace${EXESUFFIX} --version + ./install_mcxtrace/bin/mxtest${SUFFIX} --instr=Test_RNG_rand01 --testdir=run_singletests --suffix=${{ matrix.mpi }} + export SUM=`find run_singletests -name rngout.dat | xargs -n1 grep -v \# | ${MD5SUM} | cut -f1 -d\ ` export EXPECTED="f192ce4609e2225bf9d42ce9c5fa5a86" if [ "${EXPECTED}" == "${SUM}" ]; then @@ -295,98 +277,116 @@ jobs: fi - name: Launch JJ_SAXS instrument - id: JJ_SAXS-basic - if: runner.os != 'Windows' - # Status: Works on Unixes + id: JJ_SAXS run: | set -e set -u set -x - export MCXTRACE_EXECUTABLE="mcxtrace" - export MCXTRACE_PYGEN_EXECUTABLE="mcxtrace-pygen" - export MXRUN_EXECUTABLE="mxrun" + export MD5SUM="md5sum" + if [ "$RUNNER_OS" == "macOS" ]; + then + export MD5SUM="md5" + fi if [ "$RUNNER_OS" == "Windows" ]; then - export MCXTRACE_EXECUTABLE="mcxtrace.exe" - export MCXTRACE_PYGEN_EXECUTABLE="mcxtrace-pygen.exe" - export MXRUN_EXECUTABLE="mxrun.bat" + export SUFFIX=".bat" + export EXESUFFIX=".exe" + else + export SUFFIX="" + export EXESUFFIX="" fi - test -f ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} - ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} --version - mkdir run_JJ_SAXS && cd run_JJ_SAXS - cp ../install_mcxtrace/share/mcxtrace/resources/examples/SAXSLAB/JJ_SAXS/JJ_SAXS.instr . - ../install_mcxtrace/bin/${MXRUN_EXECUTABLE} JJ_SAXS.instr pin2_pos=0.2 pin3_pos=0.4 optic_L=0.1 sample_pos=0.2 detector_pos=2 - ../install_mcxtrace/bin/${MCXTRACE_PYGEN_EXECUTABLE} JJ_SAXS.instr - - - name: Launch JJ_SAXS instrument (MPI) - id: JJ_SAXS-mpi - if: runner.os != 'Windows' - # Status: Works on Unixes + test -f ./install_mcxtrace/bin/mcxtrace${EXESUFFIX} + ./install_mcxtrace/bin/mcxtrace${EXESUFFIX} --version + ./install_mcxtrace/bin/mxtest${SUFFIX} --instr=JJ_SAXS --testdir=run_singletests --suffix=${{ matrix.mpi }} + if [ "${{ matrix.cc }}" != "cl.exe" ]; + then + ./install_mcxtrace/bin/mxtest${SUFFIX} --instr=JJ_SAXS --mpi=2 --testdir=run_singletests --suffix=${{ matrix.mpi }} + fi + + - name: Launch ESRF_BM29 instrument + id: ESRF_BM29 run: | set -e set -u set -x - export MCXTRACE_EXECUTABLE="mcxtrace" - export MCXTRACE_PYGEN_EXECUTABLE="mcxtrace-pygen" - export MXRUN_EXECUTABLE="mxrun" - if [ "$RUNNER_OS" == "macOS" ]; then export TMPDIR=${HOME}/tmp; fi + export MD5SUM="md5sum" + if [ "$RUNNER_OS" == "macOS" ]; + then + export MD5SUM="md5" + fi if [ "$RUNNER_OS" == "Windows" ]; then - export MCXTRACE_EXECUTABLE="mcxtrace.exe" - export MXRUN_EXECUTABLE="mxrun.bat" + export SUFFIX=".bat" + export EXESUFFIX=".exe" + else + export SUFFIX="" + export EXESUFFIX="" + fi + test -f ./install_mcxtrace/bin/mcxtrace${EXESUFFIX} + ./install_mcxtrace/bin/mcxtrace${EXESUFFIX} --version + ./install_mcxtrace/bin/mxtest${SUFFIX} --instr=ESRF_BM29 --testdir=run_singletests --suffix=${{ matrix.mpi }} + if [ "${{ matrix.cc }}" != "cl.exe" ]; + then + ./install_mcxtrace/bin/mxtest${SUFFIX} --instr=ESRF_BM29 --mpi=2 --testdir=run_singletests --suffix=${{ matrix.mpi }} fi - test -f ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} - ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} --version - mkdir run_JJ_SAXS_mpi && cd run_JJ_SAXS_mpi - cp ../install_mcxtrace/share/mcxtrace/resources/examples/SAXSLAB/JJ_SAXS/JJ_SAXS.instr . - ../install_mcxtrace/bin/${MXRUN_EXECUTABLE} --verbose --mpi=2 JJ_SAXS.instr pin2_pos=0.2 pin3_pos=0.4 optic_L=0.1 sample_pos=0.2 detector_pos=2 - name: Launch MCPL test instrument id: mcpl-test if: runner.os != 'Windows' - # Status: Works on Unixes run: | set -e set -u set -x - export MCXTRACE_EXECUTABLE="mcxtrace" - export MXRUN_EXECUTABLE="mxrun" + export MD5SUM="md5sum" + if [ "$RUNNER_OS" == "macOS" ]; + then + export MD5SUM="md5" + fi if [ "$RUNNER_OS" == "Windows" ]; then - export MCXTRACE_EXECUTABLE="mcxtrace.exe" - export MXRUN_EXECUTABLE="mxrun.bat" + export SUFFIX=".bat" + export EXESUFFIX=".exe" + else + export SUFFIX="" + export EXESUFFIX="" fi - export PATH=${PATH}:${PWD}/install_mcxtrace/bin/:${PWD}/install_mcxtrace/mcxtrace/3.99.99/bin/ - test -f ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} - ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} --version - mkdir run_Test_MCPL_input && cd run_Test_MCPL_input - cp ../install_mcxtrace/share/mcxtrace/resources/examples/Tests_MCPL_etc/Test_MCPL_input/Test_MCPL_input.instr . - cp ../install_mcxtrace/share/mcxtrace/resources/examples/Tests_MCPL_etc/Test_MCPL_input/voutput.mcpl.gz . - ../install_mcxtrace/bin/${MXRUN_EXECUTABLE} Test_MCPL_input.instr repeat=10 MCPLFILE=voutput.mcpl.gz - - - name: Launch MCPL test instrument (MPI) - id: mcpl-test-mpi - if: runner.os != 'Windows' - # Status: Works on Unixes + test -f ./install_mcxtrace/bin/mcxtrace${EXESUFFIX} + ./install_mcxtrace/bin/mcxtrace${EXESUFFIX} --version + ./install_mcxtrace/bin/mxtest${SUFFIX} --instr=Test_MCPL_input --testdir=run_singletests --suffix=${{ matrix.mpi }} + ./install_mcxtrace/bin/mxtest${SUFFIX} --instr=Test_MCPL_output --testdir=run_singletests --suffix=${{ matrix.mpi }} + if [ "$RUNNER_OS" != "Windows" ]; + then + ./install_mcxtrace/bin/mxtest${SUFFIX} --instr=Test_MCPL_input --mpi=2 --testdir=run_singletests --suffix=${{ matrix.mpi }} + ./install_mcxtrace/bin/mxtest${SUFFIX} --instr=Test_MCPL_output --mpi=2 --testdir=run_singletests --suffix=${{ matrix.mpi }} + fi + + - name: Launch Absorption test instrument + id: Absorption-test + if: runner.os != 'Windows' # Missing xraylib dependency run: | set -e set -u set -x - export MCXTRACE_EXECUTABLE="mcxtrace" - export MXRUN_EXECUTABLE="mxrun" - if [ "$RUNNER_OS" == "macOS" ]; then export TMPDIR=${HOME}/tmp; fi + export MD5SUM="md5sum" + if [ "$RUNNER_OS" == "macOS" ]; + then + export MD5SUM="md5" + fi if [ "$RUNNER_OS" == "Windows" ]; then - export MCXTRACE_EXECUTABLE="mcxtrace.exe" - export MXRUN_EXECUTABLE="mxrun.bat" + export SUFFIX=".bat" + export EXESUFFIX=".exe" + else + export SUFFIX="" + export EXESUFFIX="" + fi + test -f ./install_mcxtrace/bin/mcxtrace${EXESUFFIX} + ./install_mcxtrace/bin/mcxtrace${EXESUFFIX} --version + ./install_mcxtrace/bin/mxtest${SUFFIX} --instr=Test_Absorption --testdir=run_singletests --suffix=${{ matrix.mpi }} + if [ "$RUNNER_OS" != "Windows" ]; + then + ./install_mcxtrace/bin/mxtest${SUFFIX} --instr=Test_Absorption --mpi=2 --testdir=run_singletests --suffix=${{ matrix.mpi }} fi - export PATH=${PATH}:${PWD}/install_mcxtrace/bin/:${PWD}/install_mcxtrace/mcxtrace/3.99.99/bin/ - test -f ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} - ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} --version - mkdir run_Test_MCPL_input_mpi && cd run_Test_MCPL_input_mpi - cp ../install_mcxtrace/share/mcxtrace/resources/examples/Tests_MCPL_etc/Test_MCPL_input/Test_MCPL_input.instr . - cp ../install_mcxtrace/share/mcxtrace/resources/examples/Tests_MCPL_etc/Test_MCPL_input/voutput.mcpl.gz . - ../install_mcxtrace/bin/${MXRUN_EXECUTABLE} --verbose --mpi=2 Test_MCPL_input.instr repeat=20 MCPLFILE=voutput.mcpl.gz - name: Check for modified instruments id: instr-test @@ -413,9 +413,9 @@ jobs: if [ "$NUMMATCH" -gt "0" ]; then if [ "$RUNNER_OS" != "Windows" ]; then - mxtest --mpi=2 --testdir run_${comp} --comp=${comp} --suffix=${{ matrix.CC }}_CHANGES $PERMISSIVE --verbose + mxtest --mpi=2 --testdir run_${comp} --comp=${comp} --suffix=CHANGES_${{ matrix.CC }}_${{ matrix.mpi }} $PERMISSIVE --verbose else - echo .\\install\\bin\\mxtest --verbose --testdir run_${comp} --comp=${comp} --suffix=${{ matrix.CC }}_CHANGES --permissive --verbose >> changedinstr.bat + mxtest.bat --mpi=2 --testdir run_${comp} --comp=${comp} --suffix=CHANGES_${{ matrix.CC }}_${{ matrix.mpi }} $PERMISSIVE --verbose fi else echo No matching tests found @@ -446,80 +446,14 @@ jobs: fi mkdir run_mxtest && cd run_mxtest if [ "$RUNNER_OS" != "Windows" ]; then - mxtest --mpi=2 --testdir $PWD $SCOPE --suffix=${{ matrix.CC }}_CHANGES $PERMISSIVE + mxtest --mpi=2 --testdir $PWD $SCOPE --suffix=CHANGES_${{ matrix.mpi }} $PERMISSIVE mxviewtest --nobrowse $PWD else - echo .\\install\\bin\\mxtest --verbose --testdir=run_mxtest $SCOPE --suffix=${{ matrix.CC }}_CHANGES --permissive >> ..\\changedinstr.bat + mxtest.bat --mpi=2 --testdir $PWD $SCOPE --suffix=CHANGES_${{ matrix.mpi }} $PERMISSIVE + mxviewtest.bat --nobrowse $PWD fi fi - # END of Unix tests - - - name: Run modified instruments Win - id: instr-test-Win - if: runner.os == 'Windows' # Windows only - shell: cmd - run: | - if exist changedinstr.bat ( - call .\changedinstr.bat - ) - - # Start of Windows tests - - name: Prepare rundirs Windows - if: runner.os == 'Windows' # Windows only - shell: cmd - run: mkdir run_rng run_std run_mcpl_output run_mcpl_input run_union - - - name: Prepare and run rng instrument Windows - if: runner.os == 'Windows' # Windows only - shell: cmd - working-directory: run_rng - run: | - copy ..\install\share\mcxtrace\resources\examples\Tests_RNG\Test_RNG_rand01\Test_RNG_rand01.instr test.instr - ..\install\bin\mxrun --verbose test.instr -s1000 Ncount=1000 -d RNGtest - - - name: Prepare and run CRL instrument Windows MSVC - if: runner.os == 'Windows' && matrix.cc != 'gcc.exe' # Windows MSVC only - shell: cmd - working-directory: run_std - run: | - copy ..\install\share\mcxtrace\resources\examples\Tests_optics\Test_CRL\Test_CRL.instr test.instr - ..\install\bin\mxrun --verbose test.instr -s1000 -y - - - name: Prepare and run MCPL_input instrument Windows - if: runner.os == 'Windows' # Windows only - shell: cmd - working-directory: run_mcpl_input - run: | - copy ..\install\share\mcxtrace\resources\examples\Tests_MCPL_etc\Test_MCPL_input\Test_MCPL_input.instr test.instr - copy ..\install\share\mcxtrace\resources\examples\Tests_MCPL_etc\Test_MCPL_input\voutput.mcpl.gz . - ..\install\bin\mxrun --verbose test.instr -s1000 -y - - - name: Prepare and run MCPL_output instrument Windows - if: runner.os == 'Windows' # Windows only - shell: cmd - working-directory: run_mcpl_output - run: | - copy ..\install\share\mcxtrace\resources\examples\Tests_MCPL_etc\Test_MCPL_output\Test_MCPL_output.instr test.instr - ..\install\bin\mxrun --verbose test.instr -s1000 -y - - - name: Test RNG instrument output Windows - if: runner.os == 'Windows' # Windows only - working-directory: run_rng - shell: bash - run: | - export SUM=`grep -v \# RNGtest/rngout.dat | dos2unix | md5sum | cut -f1 -d\ ` - export EXPECTED="f192ce4609e2225bf9d42ce9c5fa5a86" - if [ "${EXPECTED}" == "${SUM}" ]; - then - echo RNG test success! - true - else - echo RNG test failure! - false - fi - # END of Windows tests - - name: 'Tar output files' id: tar-package if: always() diff --git a/.github/workflows/mcxtrace-conda-basictest.yml b/.github/workflows/mcxtrace-conda-basictest.yml index f437d2167..a01102c71 100644 --- a/.github/workflows/mcxtrace-conda-basictest.yml +++ b/.github/workflows/mcxtrace-conda-basictest.yml @@ -35,7 +35,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: path: src fetch-depth: 2 diff --git a/.github/workflows/mcxtrace-conda-testsuite.yml b/.github/workflows/mcxtrace-conda-testsuite.yml index 18be47528..fd0ba52de 100644 --- a/.github/workflows/mcxtrace-conda-testsuite.yml +++ b/.github/workflows/mcxtrace-conda-testsuite.yml @@ -33,7 +33,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: path: src