stages: - build - test - synthesis - release variables: PKG_CONFIG_PATH: /opt/openssl-3.5.4/lib/pkgconfig:/opt/openssl-3.5.4/lib64/pkgconfig CMAKE_PREFIX_PATH: /opt/qt-6.9.0-static:/opt/eigen-3.4 build:x86:gcc-12: stage: build variables: CC: gcc CXX: g++ tags: - gcc - x86 needs: [] script: - mkdir build - cd build - source /opt/rh/gcc-toolset-12/enable - cmake -DCMAKE_BUILD_TYPE=Release -DJFJOCH_VIEWER_BUILD=ON .. - make -j48 build:x86:gcc-13: stage: build variables: CC: gcc CXX: g++ tags: - gcc - x86 needs: [] script: - mkdir build - cd build - source /opt/rh/gcc-toolset-13/enable - cmake -DCMAKE_BUILD_TYPE=Release -DJFJOCH_VIEWER_BUILD=ON .. - make -j48 build:x86:gcc_writer: stage: build variables: CC: gcc CXX: g++ tags: - gcc - x86 needs: [] script: - mkdir build - cd build - source /opt/rh/gcc-toolset-12/enable - cmake -DCMAKE_BUILD_TYPE=Release -DJFJOCH_WRITER_ONLY=ON .. - make -j48 build:x86:gcc_nocuda: stage: build variables: CC: gcc CXX: g++ tags: - gcc - x86 needs: [] script: - mkdir build - cd build - source /opt/rh/gcc-toolset-12/enable - cmake -DCMAKE_BUILD_TYPE=Release -DJFJOCH_USE_CUDA=OFF .. - make -j48 build:x86:driver: stage: build variables: CC: gcc CXX: g++ tags: - gcc - x86 needs: [] script: - cd fpga/pcie_driver - make build:x86:python_client: stage: build needs: [] tags: - python script: - bash gen_python_client.sh artifacts: paths: - dist/jfjoch_client-*whl - dist/jfjoch_client-*tar.gz expire_in: 1 week build:x86:frontend: stage: build tags: - x86 needs: [] script: - mkdir build - cd build - /usr/bin/cmake .. - make frontend - cd ../frontend/dist - tar czf ../../jfjoch_frontend.tar.gz * artifacts: paths: - jfjoch_frontend.tar.gz expire_in: 1 week build:x86:rpm: stage: build tags: - x86 needs: [] script: - mkdir build - cd build - source /opt/rh/gcc-toolset-12/enable - cmake -DCMAKE_BUILD_TYPE=Release -DJFJOCH_INSTALL_DRIVER_SOURCE=ON -DJFJOCH_VIEWER_BUILD=ON .. - make frontend - make -j48 package - mv *.rpm .. artifacts: paths: - "jfjoch-*.rpm" expire_in: 1 week build:x86:rpm_nocuda: stage: build tags: - x86 needs: [] script: - mkdir build - cd build - source /opt/rh/gcc-toolset-12/enable - cmake -DCMAKE_BUILD_TYPE=Release -DJFJOCH_INSTALL_DRIVER_SOURCE=ON -DJFJOCH_VIEWER_BUILD=ON -DJFJOCH_USE_CUDA=OFF .. - make frontend - make -j48 package - mv *.rpm .. artifacts: paths: - "jfjoch-viewer*.rpm" expire_in: 1 week build:x86:sls9:rpm: stage: build tags: - x86 needs: [] script: - mkdir build - cd build - source /opt/rh/gcc-toolset-12/enable - cmake -DCMAKE_BUILD_TYPE=Release -DJFJOCH_INSTALL_DRIVER_SOURCE=OFF -DJFJOCH_VIEWER_BUILD=OFF -DSLS9=ON .. - make frontend - make -j48 package - mv *.rpm .. artifacts: paths: - "jfjoch-slsdet9*.rpm" expire_in: 1 week test:x86:gcc: stage: test timeout: 90m variables: CTEST_OUTPUT_ON_FAILURE: 1 CC: gcc CXX: g++ needs: ["build:x86:gcc-12"] dependencies: [] tags: - gcc - x86 script: - source /opt/rh/gcc-toolset-12/enable - mkdir -p build - cd build - cmake -DCMAKE_BUILD_TYPE=Release .. - make -j48 jfjoch_test jfjoch_hdf5_test - cd tests - ./jfjoch_test -r junit -o report.xml - cd ../tools - ./jfjoch_hdf5_test ../../tests/test_data/compression_benchmark.h5 artifacts: expire_in: 1 week reports: junit: build/tests/report.xml test:x86:crystfel: stage: test timeout: 90m variables: CTEST_OUTPUT_ON_FAILURE: 1 CC: gcc CXX: g++ needs: ["build:x86:gcc-12"] dependencies: [] tags: - gcc - x86 - crystfel script: - source /opt/rh/gcc-toolset-12/enable - mkdir -p build - cd build - cmake -DCMAKE_BUILD_TYPE=Release .. - make -j8 jfjoch_hdf5_test - cd ../tests/crystfel - ../../build/tools/jfjoch_hdf5_test ../../tests/test_data/compression_benchmark.h5 10 - indexamajig -i writing_test.lst -g jf4m.geom -o x.stream --indexing=xgandalf test:x86:xds_durin: stage: test timeout: 90m variables: CTEST_OUTPUT_ON_FAILURE: 1 CC: gcc CXX: g++ needs: ["build:x86:gcc-12"] dependencies: [] tags: - gcc - x86 - xds script: - source /opt/rh/gcc-toolset-12/enable - mkdir -p build - cd build - cmake -DCMAKE_BUILD_TYPE=Release .. - make -j8 jfjoch_hdf5_test - cd ../tests/xds_durin - ../../build/tools/jfjoch_hdf5_test ../../tests/test_data/compression_benchmark.h5 25 - xds_par |grep -a1 ISa |tail -n1 test:x86:xds_durin_new_hdf5_format: stage: test timeout: 90m variables: CTEST_OUTPUT_ON_FAILURE: 1 CC: gcc CXX: g++ needs: ["build:x86:gcc-12"] dependencies: [] tags: - gcc - x86 - xds script: - source /opt/rh/gcc-toolset-12/enable - mkdir -p build - cd build - cmake -DCMAKE_BUILD_TYPE=Release .. - make -j8 jfjoch_hdf5_test - cd ../tests/xds_durin - HDF5MASTER_NEW_FORMAT=1 ../../build/tools/jfjoch_hdf5_test ../../tests/test_data/compression_benchmark.h5 25 - xds_par |grep -a1 ISa |tail -n1 test:x86:xds_neggia: stage: test timeout: 90m variables: CTEST_OUTPUT_ON_FAILURE: 1 CC: gcc CXX: g++ needs: ["build:x86:gcc-12"] dependencies: [] tags: - gcc - x86 - xds script: - source /opt/rh/gcc-toolset-12/enable - mkdir -p build - cd build - cmake -DCMAKE_BUILD_TYPE=Release .. - make -j8 jfjoch_hdf5_test - cd ../tests/xds_neggia - ../../build/tools/jfjoch_hdf5_test ../../tests/test_data/compression_benchmark.h5 25 - xds_par |grep -a1 ISa |tail -n1 test:x86:xia2.ssx: stage: test timeout: 90m variables: CTEST_OUTPUT_ON_FAILURE: 1 CC: gcc CXX: g++ needs: ["build:x86:gcc-12"] dependencies: [] tags: - gcc - x86 - xds script: - source /opt/rh/gcc-toolset-12/enable - mkdir -p build - mkdir -p dials_test - cd build - cmake -DCMAKE_BUILD_TYPE=Release .. - make -j8 jfjoch_hdf5_test - cd ../dials_test - ../build/tools/jfjoch_hdf5_test ../tests/test_data/compression_benchmark.h5 100 - source /usr/local/dials-v3-17-0/dials_env.sh - xia2.ssx image=writing_test_master.h5 space_group=P43212 unit_cell=78.551,78.551,36.914,90.000,90.000,90.000 synthesis:hls: stage: synthesis dependencies: [] variables: CC: gcc CXX: g++ rules: - if: $CI_COMMIT_MESSAGE =~ /^FPGA/ - if: $CI_COMMIT_MESSAGE =~ /^HLS/ tags: - vivado script: - source /opt/rh/gcc-toolset-12/enable - source /opt/Xilinx/Vivado/2022.2/settings64.sh - mkdir -p build - cd build - /usr/bin/cmake .. - make hls needs: ["build:x86:gcc-12", "test:x86:gcc"] synthesis:100g: stage: synthesis dependencies: [] retry: 2 variables: CC: gcc CXX: g++ allow_failure: true rules: - if: $CI_COMMIT_MESSAGE =~ /^FPGA/ - if: $CI_COMMIT_MESSAGE =~ /^100G/ tags: - vivado artifacts: paths: - "jfjoch_fpga_pcie_100g.mcs" expire_in: 1 week script: - source /opt/rh/gcc-toolset-12/enable - source /opt/Xilinx/Vivado/2022.2/settings64.sh - mkdir -p build - cd build - /usr/bin/cmake .. - make -j4 pcie_100g - mv fpga/jfjoch_fpga_pcie_100g.mcs .. needs: ["build:x86:gcc-12", "test:x86:gcc"] synthesis:8x10g: stage: synthesis dependencies: [] variables: CC: gcc CXX: g++ retry: 2 allow_failure: true rules: - if: $CI_COMMIT_MESSAGE =~ /^FPGA/ - if: $CI_COMMIT_MESSAGE =~ /^8x10G/ tags: - vivado artifacts: paths: - "jfjoch_fpga_pcie_8x10g.mcs" expire_in: 1 week script: - source /opt/rh/gcc-toolset-12/enable - source /opt/Xilinx/Vivado/2022.2/settings64.sh - mkdir -p build - cd build - /usr/bin/cmake .. - make -j4 pcie_8x10g - mv fpga/jfjoch_fpga_pcie_8x10g.mcs .. needs: [ "build:x86:gcc-12", "test:x86:gcc" ] release: stage: release rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH when: manual tags: - x86 - python dependencies: - build:x86:frontend - build:x86:rpm - build:x86:rpm_nocuda - build:x86:sls9:rpm - build:x86:python_client script: - bash gitlab_upload_release.sh