diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index 4d939ee8b..3ce3d1a31 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -13,7 +13,8 @@ jobs: runs-on: "${{ matrix.os }}" strategy: matrix: - os: ["ubuntu-24.04", "ubuntu-24.04-arm", "macos-15-intel", "macos-14"] + os: ["ubuntu-24.04", "ubuntu-24.04-arm", "macos-15-intel", "macos-15"] + eigen: ["", "-eigen_5"] steps: - uses: actions/checkout@v6 - uses: cachix/install-nix-action@v31 @@ -21,21 +22,7 @@ jobs: with: name: gepetto authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - - run: nix build -L .#proxsuite - - nix-eigen5: - runs-on: "${{ matrix.os }}" - strategy: - matrix: - os: ["ubuntu-24.04", "macos-15"] - steps: - - uses: actions/checkout@v6 - - uses: cachix/install-nix-action@v31 - - uses: cachix/cachix-action@v16 - with: - name: gepetto - authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - - run: nix build -L .#proxsuite-eigen_5 + - run: nix build -L .#proxsuite${{ matrix.eigen }} check: if: always() @@ -43,7 +30,6 @@ jobs: needs: - nix - - nix-eigen5 runs-on: Ubuntu-latest diff --git a/flake.lock b/flake.lock index 0f5320e17..98cd8d948 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1760948891, - "narHash": "sha256-TmWcdiUUaWk8J4lpjzu4gCGxWY6/Ok7mOK4fIFfBuU4=", + "lastModified": 1769996383, + "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "864599284fc7c0ba6357ed89ed5e2cd5040f0c04", + "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", "type": "github" }, "original": { @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1761373498, - "narHash": "sha256-Q/uhWNvd7V7k1H1ZPMy/vkx3F8C13ZcdrKjO7Jv7v0c=", + "lastModified": 1770562336, + "narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6a08e6bb4e46ff7fcbb53d409b253f6bad8a28ce", + "rev": "d6c71932130818840fc8fe9509cf50be8c64634f", "type": "github" }, "original": { @@ -36,11 +36,11 @@ }, "nixpkgs-lib": { "locked": { - "lastModified": 1754788789, - "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", + "lastModified": 1769909678, + "narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", + "rev": "72716169fe93074c333e8d0173151350670b824c", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index c40004f35..920c5e304 100644 --- a/flake.nix +++ b/flake.nix @@ -30,30 +30,18 @@ ]; }; postPatch = ""; - nativeCheckInputs = [ - final.ctestCheckHook - ]; - # ref. https://github.com/Simple-Robotics/proxsuite/issues/426 - preCheck = '' - disabledTests+=( - "ProxQP::dense: test primal infeasibility solving" - "dense maros meszaros using the api" - "sparse maros meszaros using the API" - ) - ''; }; }; - eigen5 = final: prev: { - eigen = prev.eigen.overrideAttrs (super: rec { - version = "5.0.0"; - src = final.fetchFromGitLab { - inherit (super.src) owner repo; - tag = version; - hash = "sha256-L1KUFZsaibC/FD6abTXrT3pvaFhbYnw+GaWsxM2gaxM="; - }; - patches = [ ]; - postPatch = ""; - }); + eigen_5 = final: prev: { + eigen = final.eigen_5; + pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ + (python-final: python-prev: { + scipy = python-prev.scipy.overrideAttrs { + # broken on linux arm + doInstallCheck = false; + }; + }) + ]; }; }; perSystem = @@ -73,7 +61,7 @@ pkgs-eigen_5 = import inputs.nixpkgs { inherit system; overlays = [ - self.overlays.eigen5 + self.overlays.eigen_5 self.overlays.default ]; }; diff --git a/test/src/sparse_maros_meszaros.cpp b/test/src/sparse_maros_meszaros.cpp index 84dc5b2ed..01f701e79 100644 --- a/test/src/sparse_maros_meszaros.cpp +++ b/test/src/sparse_maros_meszaros.cpp @@ -161,7 +161,7 @@ TEST_CASE("sparse maros meszaros using the API") preprocessed, qp.results, primal_feasibility, dual_feasibility); CHECK(primal_feasibility < qp.settings.eps_abs); - CHECK(dual_feasibility < 2 * qp.settings.eps_abs); + CHECK(dual_feasibility < 3 * qp.settings.eps_abs); CHECK(qp.results.info.pri_res < eps_abs_with_duality_gap); CHECK(qp.results.info.dua_res < eps_abs_with_duality_gap); @@ -175,7 +175,7 @@ TEST_CASE("sparse maros meszaros using the API") CHECK(proxsuite::proxqp::dense::infty_norm( H.selfadjointView() * qp.results.x + g + AT * qp.results.y + CT * qp.results.z) <= - 2 * eps_abs_no_duality_gap); + 3 * eps_abs_no_duality_gap); CHECK(proxsuite::proxqp::dense::infty_norm( AT.transpose() * qp.results.x - b) <= eps_abs_no_duality_gap); if (n_in > 0) { @@ -208,7 +208,7 @@ TEST_CASE("sparse maros meszaros using the API") preprocessed, qp.results, primal_feasibility, dual_feasibility); CHECK(primal_feasibility < eps_abs_with_duality_gap); - CHECK(dual_feasibility < 2 * eps_abs_with_duality_gap); + CHECK(dual_feasibility < 3 * eps_abs_with_duality_gap); CHECK(qp.results.info.duality_gap < eps_abs_with_duality_gap); } }