Thanks to visit codestin.com
Credit goes to github.com

Skip to content

feat: add support for BLAKE3-256 hash #1872

feat: add support for BLAKE3-256 hash

feat: add support for BLAKE3-256 hash #1872

Workflow file for this run

name: 'DwarFS CI Build'
on:
workflow_dispatch:
push:
branches:
- main
- 'mhx/**'
tags:
- v*
paths-ignore:
- '.benchmark/**'
- '.clang-format'
- '.clang-tidy'
- '.gitignore'
- '.maintainer-scripts/**'
- 'CHANGES.md'
- 'CITATION.cff'
- 'README.md'
- 'TODO'
- 'data/**'
- 'doc/completions/**'
- 'doc/perf/**'
- 'doc/*.gif'
- 'doc/*.png'
- 'doc/*.puml'
- 'doc/*.svg'
- 'scripts/**'
permissions:
contents: read
jobs:
windows:
runs-on:
- self-hosted
- Windows
strategy:
matrix:
arch:
- X64
build_mode:
- Release
- Debug
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: 'true'
fetch-depth: '0'
ref: ${{ github.ref }}
- name: Set MSVC Dev Environment
uses: ilammy/msvc-dev-cmd@v1
- name: Configure Build
shell: cmd
run: |
cmake -B${{ runner.temp }}\build -S${{ runner.workspace }}\dwarfs -GNinja -DCMAKE_MAKE_PROGRAM=C:\bin\ninja.exe -DCMAKE_BUILD_TYPE=${{ matrix.build_mode }} -DWITH_UNIVERSAL_BINARY=ON -DWITH_TESTS=ON -DWITH_BENCHMARKS=ON -DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DVCPKG_INSTALLED_DIR=${{ runner.workspace }}\vcpkg-install-dwarfs -DDWARFS_ARTIFACTS_DIR=Z:\artifacts\dwarfs -DWITH_PXATTR=ON -DENABLE_STACKTRACE=${{ matrix.build_mode == 'Debug' && 'ON' || 'OFF' }}
- name: Run Build
shell: cmd
run: |
cmake --build ${{ runner.temp }}\build
- name: Run Test
shell: cmd
run: |
copy "C:\Program Files (x86)\WinFsp\bin\winfsp-x64.dll" ${{ runner.temp }}\build
ctest --test-dir ${{ runner.temp }}\build --output-on-failure -j
- name: Build Package
shell: cmd
run: |
cmake --build ${{ runner.temp }}\build --target package
- name: Compress Universal Binary
shell: cmd
run: |
cmake --build ${{ runner.temp }}\build --target universal_upx
- name: Copy Artifacts
shell: cmd
run: |
cmake --build ${{ runner.temp }}\build --target copy_artifacts
# - name: Prepare Artifact Upload
# shell: cmd
# run: cat ${{ runner.temp }}\build\artifacts.env >> %GITHUB_ENV%
# - name: Upload Binary Tarball
# uses: actions/upload-artifact@v4
# with:
# name: ${{ env.binary_tarball }}
# path: ${{ runner.temp }}\build\${{ env.binary_tarball }}
# if-no-files-found: error
# compression-level: 0
# env:
# ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY: 5
# - name: Upload Universal Binary
# uses: actions/upload-artifact@v4
# with:
# name: ${{ env.universal_binary }}
# path: ${{ runner.temp }}\build\${{ env.universal_binary }}
# if-no-files-found: error
# compression-level: 0
# env:
# ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY: 5
################################################################################
package-source:
uses: ./.github/workflows/docker-run-build.yml
with:
build_type: clang-release-ninja-source-notest
build_arch: amd64
build_dist: arch
################################################################################
linux:
needs: package-source
strategy:
fail-fast: false
matrix:
include:
#####################################################################
# x86_64 builds #
#####################################################################
- build_arch: amd64
build_dist: ubuntu
build_type: gcc-release-shared-ninja-split
- build_arch: amd64
build_dist: ubuntu
build_type: gcc-debug-shared-noperfmon-ninja-split
- build_arch: amd64
build_dist: ubuntu
build_type: clang-reldbg-shared-asan-ninja
- build_arch: amd64
build_dist: ubuntu
build_type: clang-reldbg-shared-ubsan-ninja
- build_arch: amd64
build_dist: ubuntu
build_type: clang-debug-shared-tsan-ninja
- build_arch: amd64
build_dist: ubuntu
build_type: clang-debug-coverage-ninja
- build_arch: amd64
build_dist: fedora
build_type: gcc-release-ninja-split
- build_arch: amd64
build_dist: fedora
build_type: clang-release-shared-ninja-full
- build_arch: amd64
build_dist: arch
build_type: gcc-release-noman-ninja-split
- build_arch: amd64
build_dist: arch
build_type: gcc-release-shared-ninja-split
- build_arch: amd64
build_dist: arch
build_type: gcc-debug-shared-ninja-full
- build_arch: amd64
build_dist: arch
build_type: clang-release-shared-ninja-full
- build_arch: amd64
build_dist: alpine
build_type: gcc-release-ninja-static
- build_arch: amd64
build_dist: alpine
build_type: gcc-release-lto-ninja-static
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: clang-release-ninja-static
- build_arch: amd64
build_dist: alpine
build_type: clang-release-lto-ninja-static
- build_arch: amd64
build_dist: alpine
build_type: clang-relsize-lto-ninja-static
- build_arch: amd64
build_dist: alpine
build_type: clang-relsize-libressl-lto-ninja-static
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: clang-relsize-minimal-lto-ninja-static
- build_arch: amd64
build_dist: alpine
build_type: clang-relsize-minimal-libressl-lto-ninja-static
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: clang-relsize-minimal-libressl-mimalloc-lto-ninja-static
- build_arch: amd64
build_dist: alpine
build_type: clang-reldbg-stacktrace-ninja-static
#####################################################################
# aarch64 builds #
#####################################################################
- build_arch: arm64v8
build_dist: debian
build_type: gcc-release-dev-make-full
- build_arch: arm64v8
build_dist: debian
build_type: clang-debug-shared-ninja-split
- build_arch: arm64v8
build_dist: suse
build_type: gcc-release-ninja-split
- build_arch: arm64v8
build_dist: suse
build_type: clang-debug-dev-shared-make-full
- build_arch: arm64v8
build_dist: ubuntu-2204
build_type: gcc-release-shared-ninja-split
- build_arch: arm64v8
build_dist: ubuntu-2204
build_type: gcc-debug-shared-ninja-full
- build_arch: arm64v8
build_dist: ubuntu-2204
build_type: clang-release-ninja-split
- build_arch: arm64v8
build_dist: ubuntu
build_type: gcc-debug-shared-ninja-full
- build_arch: arm64v8
build_dist: ubuntu
build_type: clang-release-shared-ninja-full
- build_arch: arm64v8
build_dist: ubuntu
build_type: oldgcc-debug-shared-make-split
- build_arch: arm64v8
build_dist: ubuntu
build_type: oldclang-debug-shared-make-split
- build_arch: arm64v8
build_dist: fedora
build_type: gcc-release-shared-make-full
- build_arch: arm64v8
build_dist: fedora
build_type: gcc-debug-shared-ninja-split
- build_arch: arm64v8
build_dist: fedora
build_type: clang-release-shared-ninja-full
- build_arch: arm64v8
build_dist: alpine
build_type: gcc-release-ninja-static
#skip# - build_arch: arm64v8
#skip# build_dist: alpine
#skip# build_type: gcc-release-lto-ninja-static
- build_arch: arm64v8
build_dist: alpine
build_type: clang-release-ninja-static
#skip# - build_arch: arm64v8
#skip# build_dist: alpine
#skip# build_type: clang-release-lto-ninja-static
- build_arch: arm64v8
build_dist: alpine
build_type: clang-relsize-lto-ninja-static
- build_arch: arm64v8
build_dist: alpine
build_type: clang-relsize-libressl-lto-ninja-static
#skip# - build_arch: arm64v8
#skip# build_dist: alpine
#skip# build_type: clang-relsize-minimal-lto-ninja-static
- build_arch: arm64v8
build_dist: alpine
build_type: clang-relsize-minimal-libressl-lto-ninja-static
#skip# - build_arch: arm64v8
#skip# build_dist: alpine
#skip# build_type: clang-relsize-minimal-libressl-mimalloc-lto-ninja-static
- build_arch: arm64v8
build_dist: alpine
build_type: clang-reldbg-stacktrace-ninja-static
#####################################################################
# riscv64 builds #
#####################################################################
- build_arch: riscv64
build_dist: debian
build_type: gcc-release-ninja-full
#skip# - build_arch: riscv64
#skip# build_dist: ubuntu
#skip# build_type: clang-debug-shared-ninja-split
#####################################################################
# aarch64 builds (cross) #
#####################################################################
- build_arch: amd64
build_dist: alpine
build_type: clang-relsize-libressl-lto-ninja-static
cross_arch: aarch64
#####################################################################
# riscv64 builds (cross) #
#####################################################################
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: clang-release-lto-ninja-static
#skip# cross_arch: riscv64
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: clang-relsize-lto-ninja-static
#skip# cross_arch: riscv64
- build_arch: amd64
build_dist: alpine
build_type: clang-relsize-libressl-lto-ninja-static
cross_arch: riscv64
- build_arch: amd64
build_dist: alpine
build_type: clang-relsize-minimal-libressl-lto-ninja-static
cross_arch: riscv64
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: clang-relsize-lto-ninja-static
#skip# cross_arch: riscv64
#skip# skip_slow_tests: true
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: clang-release-ninja-static
#skip# cross_arch: riscv64
#skip# skip_slow_tests: true
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: gcc-release-lto-ninja-static
#skip# cross_arch: riscv64
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: gcc-release-ninja-static
#skip# cross_arch: riscv64
#skip# skip_slow_tests: true
#####################################################################
# i386 builds (cross) #
#####################################################################
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: clang-release-lto-ninja-static
#skip# cross_arch: i386
- build_arch: amd64
build_dist: alpine
build_type: clang-relsize-lto-ninja-static
cross_arch: i386
- build_arch: amd64
build_dist: alpine
build_type: clang-relsize-libressl-lto-ninja-static
cross_arch: i386
- build_arch: amd64
build_dist: alpine
build_type: clang-relsize-minimal-libressl-lto-ninja-static
cross_arch: i386
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: clang-relsize-lto-ninja-static
#skip# cross_arch: i386
#skip# skip_slow_tests: true
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: clang-release-ninja-static
#skip# cross_arch: i386
#skip# skip_slow_tests: true
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: gcc-release-lto-ninja-static
#skip# cross_arch: i386
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: gcc-release-ninja-static
#skip# cross_arch: i386
#skip# skip_slow_tests: true
#####################################################################
# arm builds (cross) #
#####################################################################
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: clang-release-lto-ninja-static
#skip# cross_arch: arm
- build_arch: amd64
build_dist: alpine
build_type: clang-relsize-lto-ninja-static
cross_arch: arm
- build_arch: amd64
build_dist: alpine
build_type: clang-relsize-libressl-lto-ninja-static
cross_arch: arm
- build_arch: amd64
build_dist: alpine
build_type: clang-relsize-minimal-libressl-lto-ninja-static
cross_arch: arm
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: clang-relsize-lto-ninja-static
#skip# cross_arch: arm
#skip# skip_slow_tests: true
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: clang-release-ninja-static
#skip# cross_arch: arm
#skip# skip_slow_tests: true
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: gcc-release-lto-ninja-static
#skip# cross_arch: arm
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: gcc-release-ninja-static
#skip# cross_arch: arm
#####################################################################
# ppc64le builds (cross) #
#####################################################################
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: gcc-release-ninja-static
#skip# cross_arch: ppc64le
#skip# skip_slow_tests: true
- build_arch: amd64
build_dist: alpine
build_type: gcc-release-lto-ninja-static
cross_arch: ppc64le
- build_arch: amd64
build_dist: alpine
build_type: gcc-release-libressl-lto-ninja-static
cross_arch: ppc64le
- build_arch: amd64
build_dist: alpine
build_type: gcc-release-minimal-libressl-lto-ninja-static
cross_arch: ppc64le
######## blocked by https://github.com/llvm/llvm-project/issues/150913
# - build_arch: amd64
# build_dist: alpine
# build_type: clang-relsize-lto-ninja-static
# cross_arch: ppc64le
#####################################################################
# ppc64 builds (cross) #
#####################################################################
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: gcc-release-ninja-static
#skip# cross_arch: ppc64
#skip# skip_fuse_tests: true # big-endian FUSE driver won't work on little-endian
- build_arch: amd64
build_dist: alpine
build_type: gcc-release-libressl-ninja-static
cross_arch: ppc64
skip_fuse_tests: true # big-endian FUSE driver won't work on little-endian
- build_arch: amd64
build_dist: alpine
build_type: gcc-release-minimal-libressl-ninja-static
cross_arch: ppc64
skip_fuse_tests: true # big-endian FUSE driver won't work on little-endian
######## blocked by https://github.com/rui314/mold/issues/1498
# - build_arch: amd64
# build_dist: alpine
# build_type: gcc-release-lto-ninja-static
# cross_arch: ppc64
# skip_fuse_tests: true # big-endian FUSE driver won't work on little-endian
#####################################################################
# loongarch64 builds (cross) #
#####################################################################
######## no libressl support
# - build_arch: amd64
# build_dist: alpine
# build_type: clang-relsize-libressl-lto-ninja-static
# cross_arch: loongarch64
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: clang-release-lto-ninja-static
#skip# cross_arch: loongarch64
- build_arch: amd64
build_dist: alpine
build_type: clang-relsize-lto-ninja-static
cross_arch: loongarch64
- build_arch: amd64
build_dist: alpine
build_type: clang-relsize-minimal-lto-ninja-static
cross_arch: loongarch64
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: clang-release-ninja-static
#skip# cross_arch: loongarch64
#skip# skip_slow_tests: true
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: gcc-release-lto-ninja-static
#skip# cross_arch: loongarch64
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: gcc-release-ninja-static
#skip# cross_arch: loongarch64
#skip# skip_slow_tests: true
#####################################################################
# s390x builds (cross) #
#####################################################################
######## no libressl support
# - build_arch: amd64
# build_dist: alpine
# build_type: clang-relsize-libressl-lto-ninja-static
# cross_arch: s390x
######## misaligned symbol typeinfo name for std::_Sp_make_shared_tag for relocation R_390_PC32DBL
######## https://sourceware.org/bugzilla/show_bug.cgi?id=32969
# - build_arch: amd64
# build_dist: alpine
# build_type: clang-relsize-lto-ninja-static
# cross_arch: s390x
######## misaligned symbol typeinfo name for std::_Sp_make_shared_tag for relocation R_390_PC32DBL
######## https://sourceware.org/bugzilla/show_bug.cgi?id=32969
# - build_arch: amd64
# build_dist: alpine
# build_type: clang-release-ninja-static
# cross_arch: s390x
- build_arch: amd64
build_dist: alpine
build_type: gcc-release-lto-ninja-static
cross_arch: s390x
skip_fuse_tests: true # big-endian FUSE driver won't work on little-endian
- build_arch: amd64
build_dist: alpine
build_type: gcc-release-minimal-lto-ninja-static
cross_arch: s390x
skip_fuse_tests: true # big-endian FUSE driver won't work on little-endian
#skip# - build_arch: amd64
#skip# build_dist: alpine
#skip# build_type: gcc-release-ninja-static
#skip# cross_arch: s390x
#skip# skip_fuse_tests: true # big-endian FUSE driver won't work on little-endian
uses: ./.github/workflows/docker-run-build.yml
with:
build_type: ${{ matrix.build_type }}
build_arch: ${{ matrix.build_arch }}
build_dist: ${{ matrix.build_dist }}
cross_arch: ${{ matrix.cross_arch }}
skip_slow_tests: ${{ matrix.skip_slow_tests || false }}
skip_fuse_tests: ${{ matrix.skip_fuse_tests || false }}
build_from_tarball: true
upload_coverage: ${{ matrix.build_type == 'clang-debug-coverage-ninja' }}
upload_artifacts: ${{ endsWith(matrix.build_type, '-static') }}
################################################################################
macos:
needs: package-source
runs-on:
- self-hosted
- macOS
- ${{ matrix.arch }}
strategy:
matrix:
arch:
- ARM64
build_mode:
- Release
- Debug
config:
- name: Normal
cmake_args:
- name: Benchmark
cmake_args: -DWITH_BENCHMARKS=ON
include:
- arch: X64
build_mode: Release
config:
- name: Normal
cmake_args:
- arch: X64
build_mode: Debug
config:
- name: Benchmark
cmake_args: -DWITH_BENCHMARKS=ON
steps:
- name: Unpack Source Tarball
run: |
rm -rf dwarfs-*/
rm -f dwarfs-source-*.tar.zst
rm -f dwarfs
tar xf /Volumes/opensource/artifacts/dwarfs/cache/dwarfs-source-${{ github.run_number }}.tar.zst
ln -s dwarfs-* dwarfs
- name: Configure Full Build
run: |
rm -rf ${{ runner.temp }}/build
cmake --fresh -B${{ runner.temp }}/build -S${{ runner.workspace }}/dwarfs/dwarfs -GNinja -DCMAKE_BUILD_TYPE=${{ matrix.build_mode }} -DWITH_TESTS=ON -DWITH_PXATTR=ON ${{ matrix.config.cmake_args }}
- name: Run Full Build
run: |
cmake --build ${{ runner.temp }}/build
- name: Run Full Test
run: |
ctest --test-dir ${{ runner.temp }}/build --output-on-failure -j
- name: Cleanup
run: |
cmake --build ${{ runner.temp }}/build --target realclean
- name: Configure Library Build
run: |
cmake --fresh -B${{ runner.temp }}/build -S${{ runner.workspace }}/dwarfs/dwarfs -GNinja -DCMAKE_BUILD_TYPE=${{ matrix.build_mode }} -DWITH_TESTS=ON -DWITH_LIBDWARFS=ON -DWITH_TOOLS=OFF -DWITH_FUSE_DRIVER=OFF ${{ matrix.config.cmake_args }}
- name: Run Library Build
run: |
cmake --build ${{ runner.temp }}/build
- name: Run Library Test
run: |
ctest --test-dir ${{ runner.temp }}/build --output-on-failure -j
- name: Install Library
run: |
cmake --install ${{ runner.temp }}/build --prefix ${{ runner.temp }}/install
- name: Cleanup
run: |
cmake --build ${{ runner.temp }}/build --target realclean
- name: Configure Tools Build
run: |
cmake --fresh -B${{ runner.temp }}/build -S${{ runner.workspace }}/dwarfs/dwarfs -GNinja -DCMAKE_BUILD_TYPE=${{ matrix.build_mode }} -DWITH_TESTS=ON -DWITH_LIBDWARFS=OFF -DWITH_TOOLS=ON -DWITH_FUSE_DRIVER=OFF ${{ matrix.config.cmake_args }} -DCMAKE_PREFIX_PATH=${{ runner.temp }}/install
- name: Run Tools Build
run: |
cmake --build ${{ runner.temp }}/build
- name: Run Tools Test
run: |
ctest --test-dir ${{ runner.temp }}/build --output-on-failure -j
- name: Install Tools
run: |
cmake --install ${{ runner.temp }}/build --prefix ${{ runner.temp }}/install
- name: Cleanup
run: |
cmake --build ${{ runner.temp }}/build --target realclean
- name: Configure FUSE Driver Build
run: |
cmake --fresh -B${{ runner.temp }}/build -S${{ runner.workspace }}/dwarfs/dwarfs -GNinja -DCMAKE_BUILD_TYPE=${{ matrix.build_mode }} -DWITH_TESTS=ON -DWITH_LIBDWARFS=OFF -DWITH_TOOLS=OFF -DWITH_FUSE_DRIVER=ON ${{ matrix.config.cmake_args }} -DCMAKE_PREFIX_PATH=${{ runner.temp }}/install
- name: Run FUSE Driver Build
run: |
cmake --build ${{ runner.temp }}/build
- name: Run FUSE Driver Test
run: |
ctest --test-dir ${{ runner.temp }}/build --output-on-failure -j
- name: Install FUSE Driver
run: |
cmake --install ${{ runner.temp }}/build --prefix ${{ runner.temp }}/install
- name: Cleanup
run: |
cmake --build ${{ runner.temp }}/build --target realclean
rm -rf dwarfs-*/
rm -f dwarfs-source-*.tar.zst
rm -f dwarfs
################################################################################
freebsd:
needs: package-source
runs-on:
- self-hosted
- freebsd
- ${{ matrix.arch }}
strategy:
matrix:
arch:
- amd64
build_mode:
- Release
- Debug
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: 'false'
fetch-depth: '0'
ref: ${{ github.ref }}
- name: Run Build
run: |
BUILD_MODE=${{ matrix.build_mode }} \
sh .github/scripts/freebsd_jail_build.sh