From bf76109804c1049a4eb26dd2217a226e2e4053f1 Mon Sep 17 00:00:00 2001 From: Jake Hillion Date: Thu, 24 Oct 2024 17:07:08 +0100 Subject: [PATCH 1/2] nix: split out devshells to allow adding extra packages --- flake.nix | 93 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 57 insertions(+), 36 deletions(-) diff --git a/flake.nix b/flake.nix index 0b749243..577a490c 100644 --- a/flake.nix +++ b/flake.nix @@ -21,6 +21,7 @@ flake-utils.lib.eachSystem [ flake-utils.lib.system.x86_64-linux ] ( system: let + defaultLlvmVersion = 16; pkgs = import nixpkgs { inherit system; }; drgnSrc = pkgs.fetchFromGitHub { @@ -32,14 +33,16 @@ }; mkOidPackage = - llvmPackages: - with pkgs; + llvmVersion: + let + llvmPackages = pkgs."llvmPackages_${toString llvmVersion}"; + in llvmPackages.stdenv.mkDerivation rec { name = "oid"; src = self; - nativeBuildInputs = [ + nativeBuildInputs = with pkgs; [ autoconf automake bison @@ -57,36 +60,38 @@ glibcLocales ]; - buildInputs = [ - llvmPackages.libclang - llvmPackages.llvm - llvmPackages.openmp - - boost - bzip2 - curl - double-conversion - elfutils - flex - folly - folly.fmt - gflags - glog - gtest - icu - jemalloc - libarchive - libmicrohttpd - liburing - libxml2 - lzma - msgpack - range-v3 - rocksdb_8_11 - sqlite - tomlplusplus - zstd - ]; + buildInputs = + (with llvmPackages; [ + llvmPackages.libclang + llvmPackages.llvm + llvmPackages.openmp + ]) + ++ (with pkgs; [ + boost + bzip2 + curl + double-conversion + elfutils + flex + folly + folly.fmt + gflags + glog + gtest + icu + jemalloc + libarchive + libmicrohttpd + liburing + libxml2 + lzma + msgpack + range-v3 + rocksdb_8_11 + sqlite + tomlplusplus + zstd + ]); cmakeFlags = [ "-Ddrgn_SOURCE_DIR=${drgnSrc}" @@ -95,13 +100,29 @@ outputs = [ "out" ]; }; + + mkOidDevShell = + llvmVersion: + let + llvmPackages = pkgs."llvmPackages_${toString llvmVersion}"; + in + pkgs.mkShell.override { stdenv = llvmPackages.stdenv; } { + inputsFrom = [ self.packages.${system}."oid-llvm${toString llvmVersion}" ]; + buildInputs = [ ]; + }; in { packages = rec { - default = oid-llvm16; + default = self.packages.${system}."oid-llvm${toString defaultLlvmVersion}"; + + oid-llvm15 = mkOidPackage 15; + oid-llvm16 = mkOidPackage 16; + }; + devShells = rec { + default = self.devShells.${system}."oid-llvm${toString defaultLlvmVersion}"; - oid-llvm15 = mkOidPackage pkgs.llvmPackages_15; - oid-llvm16 = mkOidPackage pkgs.llvmPackages_16; + oid-llvm15 = mkOidDevShell 15; + oid-llvm16 = mkOidDevShell 16; }; apps.default = { From f69369a5844ec21ddc4f428307d82ce6bacb2d48 Mon Sep 17 00:00:00 2001 From: Jake Hillion Date: Thu, 24 Oct 2024 17:07:08 +0100 Subject: [PATCH 2/2] ci: enable coverage in github actions --- .github/workflows/ci.yml | 25 ++++++++++++++++++++++++- flake.nix | 2 +- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 254b1a9d..80ba83af 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,7 +27,10 @@ jobs: - name: build (LLVM ${{ matrix.llvm_version }}) # Run the build manually in `nix develop` to keep non-outputs around run: | - nix develop .#oid-llvm${{ matrix.llvm_version }} --command cmake -B build -G Ninja -DWITH_FLAKY_TESTS=Off -DFORCE_BOOST_STATIC=Off + nix develop .#oid-llvm${{ matrix.llvm_version }} --command cmake -B build -G Ninja \ + -DWITH_FLAKY_TESTS=Off \ + -DFORCE_BOOST_STATIC=Off \ + -DCODE_COVERAGE=On nix develop .#oid-llvm${{ matrix.llvm_version }} --command ninja -C build - name: test (LLVM ${{ matrix.llvm_version }}) env: @@ -46,9 +49,29 @@ jobs: --repeat until-pass:3 \ --exclude-from-file ../../.github/workflows/tests_failing_under_nix.txt \ --output-junit results.xml + + - name: upload coverage + continue-on-error: true + uses: coverallsapp/github-action@v2 + with: + flag-name: run-${{ join(matrix.*, '-') }} + parallel: true + - name: upload results uses: actions/upload-artifact@v4 if: success() || failure() with: name: test-results-${{ matrix.llvm_version }} path: build/test/results.xml + + finalise-coverage: + needs: build-test + if: ${{ always() }} + runs-on: ubuntu-latest + steps: + - name: finalise coverage + uses: coverallsapp/github-action@v2 + with: + parallel-finished: true + carryforward: "run-15,run-16" + diff --git a/flake.nix b/flake.nix index 577a490c..6e031bab 100644 --- a/flake.nix +++ b/flake.nix @@ -108,7 +108,7 @@ in pkgs.mkShell.override { stdenv = llvmPackages.stdenv; } { inputsFrom = [ self.packages.${system}."oid-llvm${toString llvmVersion}" ]; - buildInputs = [ ]; + buildInputs = with pkgs; [ lcov ]; }; in {