diff --git a/.github/linux-simple.yml b/.github/linux-simple.yml new file mode 100644 index 00000000..d0e7f9d6 --- /dev/null +++ b/.github/linux-simple.yml @@ -0,0 +1,82 @@ +name: Linux builds (basic) + +on: [push, pull_request] + +jobs: + build: + name: ${{matrix.compiler.cxx}}, C++${{matrix.std}}, ${{matrix.build_type}} + runs-on: ubuntu-20.04 + strategy: + fail-fast: false + matrix: + compiler: + - {cxx: g++-5, other_pkgs: g++-5} + - {cxx: g++-6, other_pkgs: g++-6} + - {cxx: g++-7, other_pkgs: g++-7} + - {cxx: g++-8, other_pkgs: g++-8} + - {cxx: g++-9, other_pkgs: g++-9} + - {cxx: g++-10, other_pkgs: g++-10} + - {cxx: clang++-6.0, other_pkgs: clang-6.0} + - {cxx: clang++-7, other_pkgs: clang-7} + - {cxx: clang++-8, other_pkgs: clang-8} + - {cxx: clang++-9, other_pkgs: clang-9} + - {cxx: clang++-10, other_pkgs: clang-10} + build_type: [Debug, Release] + std: [11, 14, 17, 20] + #std: [11, 14, 17, 20] + #exclude: + # - compiler.cxx: "g++-{5,6,7,8,9,10}" + # std: 17 + # - compiler.cxx: "g++-{5,6,7,8,9,10}" + # std: 20 + # - compiler.cxx: "clang++-{6.0,7,8,9,10}" + # std: 17 + # - compiler.cxx: "clang++-{6.0,7,8,9,10}" + # std: 20 + + steps: + - uses: actions/checkout@v4 + + - name: Add repositories for older GCC + run: | + sudo apt-add-repository 'deb http://azure.archive.ubuntu.com/ubuntu/ bionic main' + sudo apt-add-repository 'deb http://azure.archive.ubuntu.com/ubuntu/ bionic universe' + if: ${{ matrix.compiler.cxx == 'g++-5' || matrix.compiler.cxx == 'g++-6' }} + + - name: Prepare environment + run: | + sudo apt-get update + sudo apt-get install -y ninja-build ${{matrix.compiler.other_pkgs}} + + - name: Configure CMake + env: + CXX: ${{matrix.compiler.cxx}} + run: | + cmake -B build \ + -DCMAKE_BUILD_TYPE=${{matrix.built_type}} \ + -DCMAKE_CXX_STANDARD=${{matrix.std}} \ + -DCMAKE_CXX_STANDARD_REQUIRED=ON \ + -DCMAKE_CXX_EXTENSIONS=OFF \ + -DRAPIDFUZZ_BUILD_TESTING=1 \ + -DRAPIDFUZZ_ENABLE_LINTERS=1 \ + -DRAPIDFUZZ_BUILD_FUZZERS=1 \ + -G Ninja + + - name: Build + working-directory: build + run: ninja + + - name: Test + working-directory: build + run: ctest -C ${{matrix.BUILD_TYPE}} --rerun-failed --output-on-failure -j `nproc` + + - name: Fuzz Test + working-directory: build + run: | + fuzzing/fuzz_lcs_similarity -max_total_time=30 + fuzzing/fuzz_levenshtein_distance -max_total_time=30 + fuzzing/fuzz_levenshtein_editops -max_total_time=30 + fuzzing/fuzz_indel_distance -max_total_time=30 + fuzzing/fuzz_indel_editops -max_total_time=30 + fuzzing/fuzz_osa_distance -max_total_time=30 + fuzzing/fuzz_damerau_levenshtein_distance -max_total_time=30 diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake copy.yml.d similarity index 100% rename from .github/workflows/cmake.yml rename to .github/workflows/cmake copy.yml.d diff --git a/.github/workflows/cmake.yml.d b/.github/workflows/cmake.yml.d new file mode 100644 index 00000000..8d2392cc --- /dev/null +++ b/.github/workflows/cmake.yml.d @@ -0,0 +1,202 @@ +name: CMake + +on: [push, pull_request] + +env: + BUILD_TYPE: Release + +jobs: + build_linux_clang: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + BUILD_TYPE: [Release, Debug] + + steps: + - uses: actions/checkout@v2 + + - name: Configure CMake + run: cmake -B build -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} -DRAPIDFUZZ_BUILD_TESTING=1 -DRAPIDFUZZ_ENABLE_LINTERS=1 -DRAPIDFUZZ_BUILD_FUZZERS=1 -DCMAKE_CXX_COMPILER=clang++ + + - name: Build + run: cmake --build build --config ${{matrix.BUILD_TYPE}} + + - name: Test + working-directory: build + run: ctest -C ${{matrix.BUILD_TYPE}} --rerun-failed --output-on-failure + + - name: Fuzz Test + working-directory: build + run: | + fuzzing/fuzz_lcs_similarity -max_total_time=30 + fuzzing/fuzz_levenshtein_distance -max_total_time=30 + fuzzing/fuzz_levenshtein_editops -max_total_time=30 + fuzzing/fuzz_indel_distance -max_total_time=30 + fuzzing/fuzz_indel_editops -max_total_time=30 + fuzzing/fuzz_osa_distance -max_total_time=30 + fuzzing/fuzz_damerau_levenshtein_distance -max_total_time=30 + + build_linux_clang_32: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + BUILD_TYPE: [Release, Debug] + env: + CXXFLAGS: -m32 + CFLAGS: -m32 + + steps: + - uses: actions/checkout@v2 + + - name: Install Dependencies + run: | + sudo apt update + sudo apt install -y libc6-dev-i386 g++-multilib + + - name: Configure CMake + run: cmake -B build -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} -DRAPIDFUZZ_BUILD_TESTING=1 -DRAPIDFUZZ_ENABLE_LINTERS=1 -DRAPIDFUZZ_BUILD_FUZZERS=1 -DCMAKE_CXX_COMPILER=clang++ + + - name: Build + run: cmake --build build --config ${{matrix.BUILD_TYPE}} + + - name: Test + working-directory: build + run: ctest -C ${{matrix.BUILD_TYPE}} --rerun-failed --output-on-failure + + - name: Fuzz Test + working-directory: build + run: | + fuzzing/fuzz_lcs_similarity -max_total_time=30 + fuzzing/fuzz_levenshtein_distance -max_total_time=30 + fuzzing/fuzz_levenshtein_editops -max_total_time=30 + fuzzing/fuzz_indel_distance -max_total_time=30 + fuzzing/fuzz_indel_editops -max_total_time=30 + fuzzing/fuzz_osa_distance -max_total_time=30 + fuzzing/fuzz_damerau_levenshtein_distance -max_total_time=30 + + build_linux_gcc: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + BUILD_TYPE: [Release, Debug] + + steps: + - uses: actions/checkout@v2 + + - name: Configure CMake + run: cmake -B build -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} -DRAPIDFUZZ_BUILD_TESTING=1 -DRAPIDFUZZ_ENABLE_LINTERS=1 -DCMAKE_CXX_COMPILER=g++ + + - name: Build + run: cmake --build build --config ${{matrix.BUILD_TYPE}} + + - name: Test + working-directory: build + run: ctest -C ${{matrix.BUILD_TYPE}} --rerun-failed --output-on-failure + + build_windows: + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + BUILD_TYPE: [Release, Debug] + + steps: + - uses: actions/checkout@v2 + + - name: Configure CMake + run: cmake -B build -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} -DRAPIDFUZZ_BUILD_TESTING=1 -DRAPIDFUZZ_ENABLE_LINTERS=1 + + - name: Build + run: cmake --build build --config ${{matrix.BUILD_TYPE}} + + - name: Test + working-directory: build + run: ctest -C ${{matrix.BUILD_TYPE}} --rerun-failed --output-on-failure + + build_cmake_installed: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Configure CMake + run: cmake -B build -DCMAKE_BUILD_TYPE=Release + + - name: Install RapidFuzz + run: sudo cmake --build build --target install + + - name: Configure example project + working-directory: examples/cmake_installed + run: cmake -B build -DCMAKE_BUILD_TYPE=Release + + - name: Build example project + working-directory: examples/cmake_installed + run: cmake --build build --config ${{env.BUILD_TYPE}} + + - name: Run example project + working-directory: examples/cmake_installed/build + run: ./foo + + build_cmake_subdir: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + BUILD_TYPE: [Release, Debug] + + steps: + - uses: actions/checkout@v2 + + - name: Configure the library dependent on RapidFuzz + working-directory: examples/cmake_export + run: cmake -B build -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} + + - name: Build the library dependent on RapidFuzz + working-directory: examples/cmake_export + run: cmake --build build --config ${{matrix.BUILD_TYPE}} + + - name: Install the library dependent on RapidFuzz + working-directory: examples/cmake_export + run: sudo cmake --build build --target install + + - name: Configure the app indirectly dependent on RapidFuzz + working-directory: examples/cmake_export/indirect_app + run: cmake -B build -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} + + - name: Build the app indirectly dependent on RapidFuzz + working-directory: examples/cmake_export/indirect_app + run: cmake --build build --config ${{matrix.BUILD_TYPE}} + + - name: Run the app indirectly dependent on RapidFuzz + working-directory: examples/cmake_export/indirect_app/build + run: ./fooapp + + build_cpack_installed: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Configure CMake + run: cmake -B build -DCMAKE_BUILD_TYPE=Release + + - name: Install RapidFuzz + working-directory: build + run: | + cpack -G DEB + sudo dpkg -i *.deb + + - name: Configure example project + working-directory: examples/cmake_installed + run: cmake -B build -DCMAKE_BUILD_TYPE=Release + + - name: Build example project + working-directory: examples/cmake_installed + run: cmake --build build --config ${{env.BUILD_TYPE}} + + - name: Run example project + working-directory: examples/cmake_installed/build + run: ./foo diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml.d similarity index 100% rename from .github/workflows/documentation.yml rename to .github/workflows/documentation.yml.d diff --git a/.github/workflows/linux-simple.yml.d b/.github/workflows/linux-simple.yml.d new file mode 100644 index 00000000..d0e7f9d6 --- /dev/null +++ b/.github/workflows/linux-simple.yml.d @@ -0,0 +1,82 @@ +name: Linux builds (basic) + +on: [push, pull_request] + +jobs: + build: + name: ${{matrix.compiler.cxx}}, C++${{matrix.std}}, ${{matrix.build_type}} + runs-on: ubuntu-20.04 + strategy: + fail-fast: false + matrix: + compiler: + - {cxx: g++-5, other_pkgs: g++-5} + - {cxx: g++-6, other_pkgs: g++-6} + - {cxx: g++-7, other_pkgs: g++-7} + - {cxx: g++-8, other_pkgs: g++-8} + - {cxx: g++-9, other_pkgs: g++-9} + - {cxx: g++-10, other_pkgs: g++-10} + - {cxx: clang++-6.0, other_pkgs: clang-6.0} + - {cxx: clang++-7, other_pkgs: clang-7} + - {cxx: clang++-8, other_pkgs: clang-8} + - {cxx: clang++-9, other_pkgs: clang-9} + - {cxx: clang++-10, other_pkgs: clang-10} + build_type: [Debug, Release] + std: [11, 14, 17, 20] + #std: [11, 14, 17, 20] + #exclude: + # - compiler.cxx: "g++-{5,6,7,8,9,10}" + # std: 17 + # - compiler.cxx: "g++-{5,6,7,8,9,10}" + # std: 20 + # - compiler.cxx: "clang++-{6.0,7,8,9,10}" + # std: 17 + # - compiler.cxx: "clang++-{6.0,7,8,9,10}" + # std: 20 + + steps: + - uses: actions/checkout@v4 + + - name: Add repositories for older GCC + run: | + sudo apt-add-repository 'deb http://azure.archive.ubuntu.com/ubuntu/ bionic main' + sudo apt-add-repository 'deb http://azure.archive.ubuntu.com/ubuntu/ bionic universe' + if: ${{ matrix.compiler.cxx == 'g++-5' || matrix.compiler.cxx == 'g++-6' }} + + - name: Prepare environment + run: | + sudo apt-get update + sudo apt-get install -y ninja-build ${{matrix.compiler.other_pkgs}} + + - name: Configure CMake + env: + CXX: ${{matrix.compiler.cxx}} + run: | + cmake -B build \ + -DCMAKE_BUILD_TYPE=${{matrix.built_type}} \ + -DCMAKE_CXX_STANDARD=${{matrix.std}} \ + -DCMAKE_CXX_STANDARD_REQUIRED=ON \ + -DCMAKE_CXX_EXTENSIONS=OFF \ + -DRAPIDFUZZ_BUILD_TESTING=1 \ + -DRAPIDFUZZ_ENABLE_LINTERS=1 \ + -DRAPIDFUZZ_BUILD_FUZZERS=1 \ + -G Ninja + + - name: Build + working-directory: build + run: ninja + + - name: Test + working-directory: build + run: ctest -C ${{matrix.BUILD_TYPE}} --rerun-failed --output-on-failure -j `nproc` + + - name: Fuzz Test + working-directory: build + run: | + fuzzing/fuzz_lcs_similarity -max_total_time=30 + fuzzing/fuzz_levenshtein_distance -max_total_time=30 + fuzzing/fuzz_levenshtein_editops -max_total_time=30 + fuzzing/fuzz_indel_distance -max_total_time=30 + fuzzing/fuzz_indel_editops -max_total_time=30 + fuzzing/fuzz_osa_distance -max_total_time=30 + fuzzing/fuzz_damerau_levenshtein_distance -max_total_time=30 diff --git a/.github/workflows/linux-simple2 copy.yml.d b/.github/workflows/linux-simple2 copy.yml.d new file mode 100644 index 00000000..0eff774c --- /dev/null +++ b/.github/workflows/linux-simple2 copy.yml.d @@ -0,0 +1,78 @@ +name: Linux builds (basic) + +on: [push, pull_request] + +jobs: + build: + name: ${{matrix.compiler.cxx}}, C++${{matrix.std}}, ${{matrix.build_type}} + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + compiler: + - {cxx: g++-10, other_pkgs: g++-10} + - {cxx: g++-11, other_pkgs: g++-11} + - {cxx: clang++-11, other_pkgs: clang-11} + - {cxx: clang++-12, other_pkgs: clang-12} + - {cxx: clang++-13, other_pkgs: clang-13} + - {cxx: clang++-14, other_pkgs: clang-14} + build_type: [Debug, Release] + std: [11, 14, 17, 20] + #std: [11, 14, 17, 20] + #exclude: + # - compiler.cxx: "g++-{5,6,7,8,9,10}" + # std: 17 + # - compiler.cxx: "g++-{5,6,7,8,9,10}" + # std: 20 + # - compiler.cxx: "clang++-{6.0,7,8,9,10}" + # std: 17 + # - compiler.cxx: "clang++-{6.0,7,8,9,10}" + # std: 20 + + steps: + - uses: actions/checkout@v4 + + - name: Add repositories for older GCC + run: | + sudo apt-add-repository 'deb http://azure.archive.ubuntu.com/ubuntu/ bionic main' + sudo apt-add-repository 'deb http://azure.archive.ubuntu.com/ubuntu/ bionic universe' + if: ${{ matrix.compiler.cxx == 'g++-5' || matrix.compiler.cxx == 'g++-6' }} + + - name: Prepare environment + run: | + sudo apt-get update + sudo apt-get install -y ninja-build ${{matrix.compiler.other_pkgs}} + + - name: Configure CMake + env: + CXX: ${{matrix.compiler.cxx}} + run: | + cmake -B build \ + -DCMAKE_BUILD_TYPE=${{matrix.built_type}} \ + -DCMAKE_CXX_STANDARD=${{matrix.std}} \ + -DCMAKE_CXX_STANDARD_REQUIRED=ON \ + -DCMAKE_CXX_EXTENSIONS=OFF \ + -DRAPIDFUZZ_BUILD_TESTING=1 \ + -DRAPIDFUZZ_ENABLE_LINTERS=1 \ + -DRAPIDFUZZ_BUILD_FUZZERS=1 \ + -G Ninja + + - name: Build + working-directory: build + run: ninja + + - name: Test + working-directory: build + run: ctest -C ${{matrix.BUILD_TYPE}} --rerun-failed --output-on-failure -j `nproc` + + - name: Fuzz Test + working-directory: build + run: | + fuzzing/fuzz_lcs_similarity -max_total_time=30 + fuzzing/fuzz_levenshtein_distance -max_total_time=30 + fuzzing/fuzz_levenshtein_editops -max_total_time=30 + fuzzing/fuzz_indel_distance -max_total_time=30 + fuzzing/fuzz_indel_editops -max_total_time=30 + fuzzing/fuzz_osa_distance -max_total_time=30 + fuzzing/fuzz_damerau_levenshtein_distance -max_total_time=30""" + diff --git a/.github/workflows/linux-simple2.yml b/.github/workflows/linux-simple2.yml new file mode 100644 index 00000000..c8bf9b43 --- /dev/null +++ b/.github/workflows/linux-simple2.yml @@ -0,0 +1,80 @@ +name: Linux builds (basic2) + +on: [push, pull_request] + +jobs: + build: + name: ${{matrix.compiler.cxx}}, C++${{matrix.std}}, ${{matrix.build_type}} + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + compiler: + - {cxx: clang++, other_pkgs: clang} + build_type: [Debug, Release] + std: [11, 14, 17, 20] + #std: [11, 14, 17, 20] + #exclude: + # - compiler.cxx: "g++-{5,6,7,8,9,10}" + # std: 17 + # - compiler.cxx: "g++-{5,6,7,8,9,10}" + # std: 20 + # - compiler.cxx: "clang++-{6.0,7,8,9,10}" + # std: 17 + # - compiler.cxx: "clang++-{6.0,7,8,9,10}" + # std: 20 + + steps: + - uses: actions/checkout@v4 + + - name: Prepare environment + run: | + sudo apt-get update + sudo apt-get install -y ninja-build ${{matrix.compiler.other_pkgs}} + + #- name: Configure CMake + # env: + # CXX: ${{matrix.compiler.cxx}} + # run: | + # cmake -B build \ + # -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \ + # -DCMAKE_CXX_STANDARD=${{matrix.std}} \ + # -DCMAKE_CXX_STANDARD_REQUIRED=ON \ + # -DCMAKE_CXX_EXTENSIONS=OFF \ + # -DRAPIDFUZZ_BUILD_TESTING=1 \ + # -DRAPIDFUZZ_ENABLE_LINTERS=1 \ + # -DRAPIDFUZZ_BUILD_FUZZERS=1 \ + # -G Ninja + + - name: Configure CMake + env: + CXX: ${{matrix.compiler.cxx}} + run: | + cmake -B build \ + -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \ + -DRAPIDFUZZ_BUILD_TESTING=1 \ + -DRAPIDFUZZ_ENABLE_LINTERS=1 \ + -DRAPIDFUZZ_BUILD_FUZZERS=1 + + #- name: Build + # working-directory: build + # run: ninja + + - name: Build + run: cmake --build build --config ${{matrix.build_type}} + + - name: Test + working-directory: build + run: ctest -C ${{matrix.build_type}} --rerun-failed --output-on-failure + + - name: Fuzz Test + working-directory: build + run: | + fuzzing/fuzz_lcs_similarity -max_total_time=30 + fuzzing/fuzz_levenshtein_distance -max_total_time=30 + fuzzing/fuzz_levenshtein_editops -max_total_time=30 + fuzzing/fuzz_indel_distance -max_total_time=30 + fuzzing/fuzz_indel_editops -max_total_time=30 + fuzzing/fuzz_osa_distance -max_total_time=30 + fuzzing/fuzz_damerau_levenshtein_distance -max_total_time=30""" +