diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 76e6bef16..c22d2a6cf 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -1,11 +1,11 @@ -# Various non-standard tests, requiring e.g. longer run name: Nightly # This job is run at 04:00 UTC every day or on demand. on: - workflow_dispatch: - schedule: - - cron: '0 4 * * *' + push: + branches-ignore: + - 'dependabot/**' + pull_request: permissions: contents: read @@ -15,190 +15,205 @@ env: INSTALL_DIR: "${{github.workspace}}/build/install" jobs: - fuzz-test: - name: Fuzz test - strategy: - fail-fast: false - matrix: - build_type: [Debug, Release] - compiler: [{c: clang, cxx: clang++}] +# fuzz-test: +# name: Fuzz test +# strategy: +# fail-fast: false +# matrix: +# build_type: [Debug, Release] +# compiler: [{c: clang, cxx: clang++}] - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - with: - fetch-depth: 0 - - - name: Install apt packages - run: | - sudo apt-get update - sudo apt-get install -y cmake hwloc libhwloc-dev libnuma-dev libtbb-dev - - - name: Find Clang fuzzer lib - run: | - CLANG_LIBS_DIR=$(find /usr/lib -name "libclang_rt.fuzzer_no_main-x86_64.a" -exec dirname {} \; | head -n 1) - echo "CLANG_LIBS_DIR=${CLANG_LIBS_DIR}" >> $GITHUB_ENV - - - name: Configure CMake - run: > - cmake - -B ${{github.workspace}}/build - -DCMAKE_PREFIX_PATH=${{env.CLANG_LIBS_DIR}} - -DCMAKE_BUILD_TYPE=${{matrix.build_type}} - -DCMAKE_C_COMPILER=${{matrix.compiler.c}} - -DCMAKE_CXX_COMPILER=${{matrix.compiler.cxx}} - -DUMF_BUILD_SHARED_LIBRARY=ON - -DUMF_TESTS_FAIL_ON_SKIP=ON - -DUMF_DEVELOPER_MODE=ON - -DUMF_BUILD_FUZZTESTS=ON - - - name: Build - run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} --verbose -j$(nproc) - - - name: Run regular tests - working-directory: ${{github.workspace}}/build - run: ctest -C ${{matrix.build_type}} --output-on-failure -E "fuzz|test_init_teardown" - - - name: Run regular tests with proxy library - working-directory: ${{env.BUILD_DIR}} - run: LD_PRELOAD=./lib/libumf_proxy.so ctest -C ${{matrix.build_type}} --output-on-failure -E "fuzz|test_init_teardown" - - - name: Fuzz long test - working-directory: ${{github.workspace}}/build - run: ctest -C ${{matrix.build_type}} --output-on-failure --verbose -L "fuzz-long" - - valgrind: - name: Valgrind - strategy: - fail-fast: false - matrix: - tool: ['memcheck', 'drd', 'helgrind'] - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - with: - fetch-depth: 0 - - - name: Install apt packages - run: | - sudo apt-get update - sudo apt-get install -y cmake hwloc libhwloc-dev libnuma-dev libtbb-dev valgrind - - - name: Configure CMake - run: > - cmake - -B ${{github.workspace}}/build - -DCMAKE_BUILD_TYPE=Debug - -DUMF_FORMAT_CODE_STYLE=OFF - -DUMF_DEVELOPER_MODE=ON - -DUMF_BUILD_LIBUMF_POOL_JEMALLOC=ON - -DUMF_BUILD_LEVEL_ZERO_PROVIDER=OFF - -DUMF_BUILD_CUDA_PROVIDER=OFF - -DUMF_USE_VALGRIND=1 - -DUMF_TESTS_FAIL_ON_SKIP=ON - - - name: Build - run: cmake --build ${{github.workspace}}/build --config Debug -j$(nproc) - - - name: Run tests under valgrind - run: ${{github.workspace}}/test/test_valgrind.sh ${{github.workspace}} ${{github.workspace}}/build ${{matrix.tool}} - - Windows-generators: - name: Windows ${{matrix.generator}} generator - strategy: - matrix: - build_type: [Debug, Release] - compiler: [{c: cl, cxx: cl}] - shared_library: ['ON', 'OFF'] - static_hwloc: ['ON', 'OFF'] - generator: ['Ninja', 'NMake Makefiles'] - umfd_lib: ['ON', 'OFF'] - - runs-on: windows-latest - - steps: - - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - with: - fetch-depth: 0 - - - name: Set VCPKG_PATH with hwloc - if: matrix.static_hwloc == 'OFF' - run: echo "VCPKG_PATH=${{github.workspace}}/build/vcpkg/packages/hwloc_x64-windows;${{github.workspace}}/build/vcpkg/packages/tbb_x64-windows;${{github.workspace}}/build/vcpkg/packages/jemalloc_x64-windows" >> $env:GITHUB_ENV - - - name: Set VCPKG_PATH without hwloc - if: matrix.static_hwloc == 'ON' - run: echo "VCPKG_PATH=${{github.workspace}}/build/vcpkg/packages/tbb_x64-windows;${{github.workspace}}/build/vcpkg/packages/jemalloc_x64-windows" >> $env:GITHUB_ENV - - - name: Initialize vcpkg - uses: lukka/run-vcpkg@5e0cab206a5ea620130caf672fce3e4a6b5666a1 # v11.5 - env: - VCPKG_PATH: ${{env.VCPKG_PATH}} - with: - vcpkgGitCommitId: ea2a964f9303270322cf3f2d51c265ba146c422d # 1.04.2025 - vcpkgDirectory: ${{env.BUILD_DIR}}/vcpkg - vcpkgJsonGlob: '**/vcpkg.json' - - - name: Install dependencies - run: vcpkg install --triplet x64-windows - - - name: Install Ninja - if: matrix.generator == 'Ninja' - uses: seanmiddleditch/gha-setup-ninja@3b1f8f94a2f8254bd26914c4ab9474d4f0015f67 # v6 - - - name: Configure MSVC environment - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0 - - - name: Configure build - run: > - cmake - -B ${{env.BUILD_DIR}} - -DCMAKE_BUILD_TYPE=${{matrix.build_type}} - -DCMAKE_PREFIX_PATH="${{env.VCPKG_PATH}}" - -DCMAKE_C_COMPILER=${{matrix.compiler.c}} - -DCMAKE_CXX_COMPILER=${{matrix.compiler.cxx}} - -G "${{matrix.generator}}" - -DUMF_BUILD_SHARED_LIBRARY=${{matrix.shared_library}} - -DUMF_LINK_HWLOC_STATICALLY=${{matrix.static_hwloc}} - -DUMF_FORMAT_CODE_STYLE=OFF - -DUMF_DEVELOPER_MODE=ON - -DUMF_BUILD_LIBUMF_POOL_JEMALLOC=ON - -DUMF_BUILD_LEVEL_ZERO_PROVIDER=ON - -DUMF_BUILD_CUDA_PROVIDER=ON - -DUMF_TESTS_FAIL_ON_SKIP=ON - ${{ matrix.umfd_lib == 'ON' && '-DUMF_USE_DEBUG_POSTFIX=ON' || '' }} - - - name: Build UMF - shell: cmd - run: cmake --build ${{env.BUILD_DIR}} --config ${{matrix.build_type}} -j %NUMBER_OF_PROCESSORS% - - - name: Run tests - shell: cmd - working-directory: ${{env.BUILD_DIR}} - run: ctest -C ${{matrix.build_type}} --output-on-failure --test-dir test - - - name: Get UMF version - run: | - $version = (git describe --tags --abbrev=0 | Select-String -Pattern '\d+\.\d+\.\d+').Matches.Value - echo "UMF_VERSION=$version" >> $env:GITHUB_ENV - shell: pwsh - - - name: Test UMF installation and uninstallation - # The '--shared-library' parameter is added to the installation test when the UMF is built as a shared library - # The '--umfd-lib' parameter is added when the UMF is built with the umfd library - run: > - python3 ${{github.workspace}}/test/test_installation.py - --build-dir ${{env.BUILD_DIR}} - --install-dir ${{env.INSTALL_DIR}} - --build-type ${{matrix.build_type}} - --umf-version ${{env.UMF_VERSION}} - ${{ matrix.shared_library == 'ON' && '--proxy --shared-library' || '' }} - ${{ matrix.umfd_lib == 'ON' && '--umfd-lib' || ''}} - ${{ matrix.static_hwloc == 'ON' && '--hwloc' || '' }} +# runs-on: ubuntu-latest + +# steps: +# - name: Checkout repository +# uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 +# with: +# fetch-depth: 0 + +# - name: Install apt packages +# run: | +# sudo apt-get update +# sudo apt-get install -y cmake hwloc libhwloc-dev libnuma-dev libtbb-dev + +# - name: Find Clang fuzzer lib +# run: | +# CLANG_LIBS_DIR=$(find /usr/lib -name "libclang_rt.fuzzer_no_main-x86_64.a" -exec dirname {} \; | head -n 1) +# echo "CLANG_LIBS_DIR=${CLANG_LIBS_DIR}" >> $GITHUB_ENV + +# - name: Configure CMake +# run: > +# cmake +# -B ${{github.workspace}}/build +# -DCMAKE_PREFIX_PATH=${{env.CLANG_LIBS_DIR}} +# -DCMAKE_BUILD_TYPE=${{matrix.build_type}} +# -DCMAKE_C_COMPILER=${{matrix.compiler.c}} +# -DCMAKE_CXX_COMPILER=${{matrix.compiler.cxx}} +# -DUMF_BUILD_SHARED_LIBRARY=ON +# -DUMF_TESTS_FAIL_ON_SKIP=ON +# -DUMF_DEVELOPER_MODE=ON +# -DUMF_BUILD_FUZZTESTS=ON + +# - name: Build +# run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} --verbose -j$(nproc) + +# - name: Run regular tests +# working-directory: ${{github.workspace}}/build +# run: ctest -C ${{matrix.build_type}} --output-on-failure -E "fuzz|test_init_teardown" + +# - name: Run regular tests with proxy library +# working-directory: ${{env.BUILD_DIR}} +# run: LD_PRELOAD=./lib/libumf_proxy.so ctest -C ${{matrix.build_type}} --output-on-failure -E "fuzz|test_init_teardown" + +# - name: Fuzz long test +# working-directory: ${{github.workspace}}/build +# run: ctest -C ${{matrix.build_type}} --output-on-failure --verbose -L "fuzz-long" + + # valgrind: + # name: Valgrind + # strategy: + # fail-fast: false + # matrix: + # tool: ['memcheck', 'drd', 'helgrind'] + # runs-on: ubuntu-latest + + # steps: + # - name: Checkout repository + # uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + # with: + # fetch-depth: 0 + + # - name: Install apt packages + # run: | + # sudo apt-get update + # sudo apt-get install -y cmake hwloc libhwloc-dev libnuma-dev libtbb-dev valgrind + + # - name: Configure CMake + # run: > + # cmake + # -B ${{github.workspace}}/build + # -DCMAKE_BUILD_TYPE=Debug + # -DUMF_FORMAT_CODE_STYLE=OFF + # -DUMF_DEVELOPER_MODE=ON + # -DUMF_BUILD_LIBUMF_POOL_JEMALLOC=ON + # -DUMF_BUILD_LEVEL_ZERO_PROVIDER=OFF + # -DUMF_BUILD_CUDA_PROVIDER=OFF + # -DUMF_USE_VALGRIND=1 + # -DUMF_TESTS_FAIL_ON_SKIP=ON + + # - name: Build + # run: cmake --build ${{github.workspace}}/build --config Debug -j$(nproc) + + # - name: Run tests under valgrind + # run: ${{github.workspace}}/test/test_valgrind.sh ${{github.workspace}} ${{github.workspace}}/build ${{matrix.tool}} + + # Windows-generators: + # name: Windows ${{matrix.generator}} generator + # strategy: + # matrix: + # build_type: [Debug, Release] + # compiler: [{c: cl, cxx: cl}] + # shared_library: ['ON', 'OFF'] + # static_hwloc: ['ON', 'OFF'] + # generator: ['Unix Makefiles'] + # umfd_lib: ['ON', 'OFF'] + + # runs-on: windows-latest + + # steps: + # - name: Checkout + # uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + # with: + # fetch-depth: 0 + + # - name: Set VCPKG_PATH with hwloc + # if: matrix.static_hwloc == 'OFF' + # run: echo "VCPKG_PATH=${{github.workspace}}/build/vcpkg/packages/hwloc_x64-windows;${{github.workspace}}/build/vcpkg/packages/tbb_x64-windows;${{github.workspace}}/build/vcpkg/packages/jemalloc_x64-windows" >> $env:GITHUB_ENV + + # - name: Set VCPKG_PATH without hwloc + # if: matrix.static_hwloc == 'ON' + # run: echo "VCPKG_PATH=${{github.workspace}}/build/vcpkg/packages/tbb_x64-windows;${{github.workspace}}/build/vcpkg/packages/jemalloc_x64-windows" >> $env:GITHUB_ENV + + # - name: Initialize vcpkg + # uses: lukka/run-vcpkg@5e0cab206a5ea620130caf672fce3e4a6b5666a1 # v11.5 + # env: + # VCPKG_PATH: ${{env.VCPKG_PATH}} + # with: + # vcpkgGitCommitId: ea2a964f9303270322cf3f2d51c265ba146c422d # 1.04.2025 + # vcpkgDirectory: ${{env.BUILD_DIR}}/vcpkg + # vcpkgJsonGlob: '**/vcpkg.json' + + # - name: Install dependencies + # run: vcpkg install --triplet x64-windows + + # - name: Install Ninja + # if: matrix.generator == 'Ninja' + # uses: seanmiddleditch/gha-setup-ninja@3b1f8f94a2f8254bd26914c4ab9474d4f0015f67 # v6 + + # - name: Configure MSVC environment + # uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0 + + # - name: Install llvm-mingw + # run: | + # curl -LO https://github.com/mstorsjo/llvm-mingw/releases/download/20250430/llvm-mingw-20250430-ucrt-x86_64.zip + # - name: Install llvm-mingw (extract) + # run: | + # powershell Expand-Archive llvm-mingw*.zip -DestinationPath . + # del llvm-mingw*.zip + # mv llvm-mingw* c:\llvm-mingw + # echo "c:\llvm-mingw\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append + # dir "c:\llvm-mingw\bin" + # - name: cmake version + # run: | + # cmake --version + # make --version + # gcc --version + + # - name: Configure build + # run: > + # cmake + # -B ${{env.BUILD_DIR}} + # -DCMAKE_BUILD_TYPE=${{matrix.build_type}} + # -DCMAKE_PREFIX_PATH="c:\llvm-mingw\bin:${{env.VCPKG_PATH}}" + # -DCMAKE_C_COMPILER=${{matrix.compiler.c}} + # -DCMAKE_CXX_COMPILER=${{matrix.compiler.cxx}} + # -G "${{matrix.generator}}" + # -DUMF_BUILD_SHARED_LIBRARY=${{matrix.shared_library}} + # -DUMF_LINK_HWLOC_STATICALLY=${{matrix.static_hwloc}} + # -DUMF_FORMAT_CODE_STYLE=OFF + # -DUMF_DEVELOPER_MODE=ON + # -DUMF_BUILD_LIBUMF_POOL_JEMALLOC=ON + # -DUMF_BUILD_LEVEL_ZERO_PROVIDER=ON + # -DUMF_BUILD_CUDA_PROVIDER=ON + # -DUMF_TESTS_FAIL_ON_SKIP=ON + # ${{ matrix.umfd_lib == 'ON' && '-DUMF_USE_DEBUG_POSTFIX=ON' || '' }} + # - name: Build UMF + # shell: cmd + # run: cmake --build ${{env.BUILD_DIR}} --config ${{matrix.build_type}} -j %NUMBER_OF_PROCESSORS% + + # - name: Run tests + # shell: cmd + # working-directory: ${{env.BUILD_DIR}} + # run: ctest -C ${{matrix.build_type}} --output-on-failure --test-dir test + + # - name: Get UMF version + # run: | + # $version = (git describe --tags --abbrev=0 | Select-String -Pattern '\d+\.\d+\.\d+').Matches.Value + # echo "UMF_VERSION=$version" >> $env:GITHUB_ENV + # shell: pwsh + + # - name: Test UMF installation and uninstallation + # # The '--shared-library' parameter is added to the installation test when the UMF is built as a shared library + # # The '--umfd-lib' parameter is added when the UMF is built with the umfd library + # run: > + # python3 ${{github.workspace}}/test/test_installation.py + # --build-dir ${{env.BUILD_DIR}} + # --install-dir ${{env.INSTALL_DIR}} + # --build-type ${{matrix.build_type}} + # --umf-version ${{env.UMF_VERSION}} + # ${{ matrix.shared_library == 'ON' && '--proxy --shared-library' || '' }} + # ${{ matrix.umfd_lib == 'ON' && '--umfd-lib' || ''}} + # ${{ matrix.static_hwloc == 'ON' && '--hwloc' || '' }} icx: name: ICX @@ -250,18 +265,43 @@ jobs: start /b /wait .\compiler_install.exe -s -x -f extracted --log extract.log extracted\bootstrapper.exe -s --action install --eula=accept -p=NEED_VS2017_INTEGRATION=0 ^ -p=NEED_VS2019_INTEGRATION=0 -p=NEED_VS2022_INTEGRATION=0 --log-dir=. - + + - name: test msys2 + shell: msys2 {0} + run: | + dir /s /b /o:gn + + # - name: Install llvm-mingw + # run: | + # curl -LO https://github.com/mstorsjo/llvm-mingw/releases/download/20250430/llvm-mingw-20250430-ucrt-x86_64.zip + # - name: Install llvm-mingw (extract) + # run: | + # powershell Expand-Archive llvm-mingw*.zip -DestinationPath . + # del llvm-mingw*.zip + # mv llvm-mingw* c:\llvm-mingw + # echo "c:\llvm-mingw\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append + # dir "c:\llvm-mingw\bin" + # - name: cmake version + # run: | + # cmake --version + # make --version + # gcc --version + + - name: Install MSYS2 + uses: msys2/setup-msys2@v2 + with: + update: true + install: "make cmake" + - name: Configure build - shell: cmd + shell: msys2 {0} run: | - call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat" - call "C:\Program Files (x86)\Intel\oneAPI\setvars-vcvarsall.bat" cmake ^ -B ${{env.BUILD_DIR}} ^ - -DCMAKE_PREFIX_PATH="${{env.VCPKG_PATH}}" ^ + -DCMAKE_PREFIX_PATH="${{github.workspace}}\build\vcpkg\packages\hwloc_x64-windows;${{github.workspace}}\build\vcpkg\packages\tbb_x64-windows;${{github.workspace}}\build\vcpkg\packages\jemalloc_x64-windows" ^ -DCMAKE_C_COMPILER=${{matrix.compiler.c}} ^ -DCMAKE_CXX_COMPILER=${{matrix.compiler.cxx}} ^ - -G Ninja ^ + -G "Unix Makefiles" ^ -DUMF_BUILD_SHARED_LIBRARY=${{matrix.shared_library}} ^ -DUMF_FORMAT_CODE_STYLE=OFF ^ -DUMF_DEVELOPER_MODE=ON ^