diff --git a/.github/workflows/ci-linux-ros.yml b/.github/workflows/ci-linux-ros.yml index ffb3f94..852d14d 100644 --- a/.github/workflows/ci-linux-ros.yml +++ b/.github/workflows/ci-linux-ros.yml @@ -1,21 +1,20 @@ name: CI - Linux - ROS - on: push: branches: - - master - - devel + - devel + - master + - main pull_request: branches: - - master - - devel - + - devel + - master + - main jobs: ROS: strategy: matrix: env: - - {ROS_DISTRO: noetic, BUILDER: catkin_tools} - {ROS_DISTRO: rolling} - {ROS_DISTRO: jazzy} - {ROS_DISTRO: iron} @@ -24,12 +23,22 @@ jobs: CCACHE_DIR: /github/home/.ccache runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: submodules: recursive - uses: actions/cache@v4 with: path: ${{ env.CCACHE_DIR }} key: ccache-${{ matrix.env.ROS_DISTRO }} - - uses: 'ros-industrial/industrial_ci@d23b9ad2c63bfad638a2b1fe3df34b8df9a2f17b' + - uses: 'ros-industrial/industrial_ci@eb3ea328ff056aa2435d5b3493e7e2929c310f8e' env: ${{ matrix.env }} + check: + if: always() + name: check-linux-ros + runs-on: ubuntu-latest + needs: + - ROS + steps: + - uses: re-actors/alls-green@release/v1 + with: + jobs: ${{ toJSON(needs) }} diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index 52b45d9..011cd04 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -1,8 +1,15 @@ name: "CI - Nix" - on: push: - + branches: + - devel + - master + - main + pull_request: + branches: + - devel + - master + - main jobs: nix: runs-on: "${{ matrix.os }}-latest" @@ -10,10 +17,20 @@ jobs: matrix: os: [ubuntu, macos] steps: - - uses: actions/checkout@v4 - - uses: cachix/install-nix-action@v27 - - uses: cachix/cachix-action@v15 + - uses: actions/checkout@v5 + - uses: cachix/install-nix-action@v31 + - uses: cachix/cachix-action@v16 with: name: gepetto authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - - run: nix build -L + - run: nix flake check -L + check: + if: always() + name: check-macos-linux-nix + runs-on: ubuntu-latest + needs: + - nix + steps: + - uses: re-actors/alls-green@release/v1 + with: + jobs: ${{ toJSON(needs) }} diff --git a/.mergify.yml b/.mergify.yml index b096908..1886914 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -1,16 +1,13 @@ pull_request_rules: - - name: merge automatically when CI passes and PR is approved + - name: merge [bot] PRs when CI pass conditions: - - check-success = "ROS (humble)" - - check-success = "ROS (iron)" - - check-success = "ROS (jazzy)" - - check-success = "ROS (rolling)" - - check-success = "nix (macos)" - - check-success = "nix (ubuntu)" - - check-success = "gitlab-ci" + - check-success = "check-macos-linux-nix" + - check-success = "check-linux-ros" - check-success = "pre-commit.ci - pr" - or: - - author = pre-commit-ci[bot] - - author = dependabot[bot] + - author = dependabot[bot] + - author = github-actions[bot] + - author = hrp2-14 + - author = pre-commit-ci[bot] actions: merge: diff --git a/flake.lock b/flake.lock index 67827ee..ad89807 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1730504689, - "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=", + "lastModified": 1756770412, + "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "506278e768c2a08bec68eb62932193e341f55c90", + "rev": "4524271976b625a4a605beefd893f270620fd751", "type": "github" }, "original": { @@ -18,38 +18,365 @@ "type": "github" } }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gepetto": { + "inputs": { + "flake-parts": "flake-parts", + "nix-ros-overlay": "nix-ros-overlay", + "nix-system-graphics": "nix-system-graphics", + "nixpkgs": [ + "gepetto", + "nix-ros-overlay", + "nixpkgs" + ], + "src-agimus-controller": "src-agimus-controller", + "src-agimus-msgs": "src-agimus-msgs", + "src-colmpc": "src-colmpc", + "src-example-parallel-robots": "src-example-parallel-robots", + "src-franka-description": "src-franka-description", + "src-gepetto-viewer": "src-gepetto-viewer", + "src-odri-control-interface": "src-odri-control-interface", + "src-odri-masterboard-sdk": "src-odri-masterboard-sdk", + "src-toolbox-parallel-robots": "src-toolbox-parallel-robots", + "system-manager": "system-manager", + "systems": [ + "gepetto", + "nix-ros-overlay", + "flake-utils", + "systems" + ], + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1757443001, + "narHash": "sha256-v6sMN0QcnVFkj/p7491CMcVEQfW0KSh+pIC6algkTj4=", + "owner": "gepetto", + "repo": "nix", + "rev": "d4b224cc368d8cdb449addb6de3cd896d8c0e2a3", + "type": "github" + }, + "original": { + "owner": "gepetto", + "repo": "nix", + "type": "github" + } + }, + "nix-ros-overlay": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1748720382, + "narHash": "sha256-8CC1XSJMO+6LU9LOm58u4dqjHTb6dpRFXv+YoA2EO98=", + "owner": "lopsided98", + "repo": "nix-ros-overlay", + "rev": "2435baa8acbd4bf244551dff13a42978f8075319", + "type": "github" + }, + "original": { + "owner": "lopsided98", + "ref": "develop", + "repo": "nix-ros-overlay", + "type": "github" + } + }, + "nix-system-graphics": { + "inputs": { + "nixpkgs": [ + "gepetto", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737457219, + "narHash": "sha256-nX9dxoATDCSQgWw/iv6BngXDJEyHVYYEvHEVQ7Ig3fI=", + "owner": "soupglasses", + "repo": "nix-system-graphics", + "rev": "9c875e0c56cf2eb272b9102a4f3e24e4e31629fd", + "type": "github" + }, + "original": { + "owner": "soupglasses", + "repo": "nix-system-graphics", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1733015953, - "narHash": "sha256-t4BBVpwG9B4hLgc6GUBuj3cjU7lP/PJfpTHuSqE+crk=", - "owner": "NixOS", + "lastModified": 1744849697, + "narHash": "sha256-S9hqvanPSeRu6R4cw0OhvH1rJ+4/s9xIban9C4ocM/0=", + "owner": "lopsided98", "repo": "nixpkgs", - "rev": "ac35b104800bff9028425fec3b6e8a41de2bbfff", + "rev": "6318f538166fef9f5118d8d78b9b43a04bb049e4", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", + "owner": "lopsided98", + "ref": "nix-ros", "repo": "nixpkgs", "type": "github" } }, "nixpkgs-lib": { "locked": { - "lastModified": 1730504152, - "narHash": "sha256-lXvH/vOfb4aGYyvFmZK/HlsNsr/0CVWlwYvo2rxJk3s=", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz" + "lastModified": 1754788789, + "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz" + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" } }, "root": { "inputs": { - "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs" + "flake-parts": [ + "gepetto", + "flake-parts" + ], + "gepetto": "gepetto", + "nix-ros-overlay": [ + "gepetto", + "nix-ros-overlay" + ], + "nixpkgs": [ + "gepetto", + "nixpkgs" + ], + "systems": [ + "gepetto", + "systems" + ], + "treefmt-nix": [ + "gepetto", + "treefmt-nix" + ] + } + }, + "src-agimus-controller": { + "flake": false, + "locked": { + "lastModified": 1755879788, + "narHash": "sha256-n85EVzt5yXnbTdAupDlpTuF1a29iQDTnhnfLcNvLn2k=", + "owner": "agimus-project", + "repo": "agimus_controller", + "rev": "46ccad677928fd5699eed2d76dc7918bb662c38c", + "type": "github" + }, + "original": { + "owner": "agimus-project", + "repo": "agimus_controller", + "type": "github" + } + }, + "src-agimus-msgs": { + "flake": false, + "locked": { + "lastModified": 1757182262, + "narHash": "sha256-46YqDeoydG07pcl2vtUZX1T9SFmyhGtwp5dSK39zWTk=", + "owner": "agimus-project", + "repo": "agimus_msgs", + "rev": "03908941f86262b8c453624e73d048a37c0ed7ad", + "type": "github" + }, + "original": { + "owner": "agimus-project", + "repo": "agimus_msgs", + "type": "github" + } + }, + "src-colmpc": { + "flake": false, + "locked": { + "lastModified": 1756750841, + "narHash": "sha256-cty6UfwcDW9FI1l5IMch6qNbUUdRJy5W6/E45jzoTGs=", + "owner": "agimus-project", + "repo": "colmpc", + "rev": "469911f60748c1c3a7e0e240cf902e38bcd3f978", + "type": "github" + }, + "original": { + "owner": "agimus-project", + "repo": "colmpc", + "type": "github" + } + }, + "src-example-parallel-robots": { + "flake": false, + "locked": { + "lastModified": 1747686798, + "narHash": "sha256-UXtJkwoKXYTw90moFr5E1sHHhc1czdHuq2r3wxDIBAE=", + "owner": "gepetto", + "repo": "example-parallel-robots", + "rev": "56fefa6437a4554c81c3b5db7efdc91bea292fdc", + "type": "github" + }, + "original": { + "owner": "gepetto", + "repo": "example-parallel-robots", + "type": "github" + } + }, + "src-franka-description": { + "flake": false, + "locked": { + "lastModified": 1750931117, + "narHash": "sha256-gzCwwjBcCj/TlF5kdn48ffaDsEocXcNohPddTy1GZL0=", + "owner": "agimus-project", + "repo": "franka_description", + "rev": "e9870ab14bb0d0b2ef6dd71c1c29bad1fe8fa076", + "type": "github" + }, + "original": { + "owner": "agimus-project", + "repo": "franka_description", + "type": "github" + } + }, + "src-gepetto-viewer": { + "flake": false, + "locked": { + "lastModified": 1755551708, + "narHash": "sha256-BloQIKh1tPL6Je6/70SuFQVF//ZZeXFba60Zyvs/9As=", + "owner": "Gepetto", + "repo": "gepetto-viewer", + "rev": "ce2329a9dc66c72a1e85efdb64776dea4d5bac40", + "type": "github" + }, + "original": { + "owner": "Gepetto", + "ref": "devel", + "repo": "gepetto-viewer", + "type": "github" + } + }, + "src-odri-control-interface": { + "flake": false, + "locked": { + "lastModified": 1749138911, + "narHash": "sha256-+x+1NxiTwyg5Pwd1oBUMG3Z+eIj+VtVIRFvdPpXStU8=", + "owner": "gwennlbh", + "repo": "odri_control_interface", + "rev": "1137873714fd326fd3ab86cc5632bae72f965866", + "type": "github" + }, + "original": { + "owner": "gwennlbh", + "ref": "nix", + "repo": "odri_control_interface", + "type": "github" + } + }, + "src-odri-masterboard-sdk": { + "flake": false, + "locked": { + "lastModified": 1749026399, + "narHash": "sha256-0VhxOdC2cQwAJfAdHfeHovXrj9jrWb56F35rPN/u+eA=", + "owner": "gwennlbh", + "repo": "master-board", + "rev": "facc7f954294523a0f4b8389ac89fabad4c536db", + "type": "github" + }, + "original": { + "owner": "gwennlbh", + "ref": "nix", + "repo": "master-board", + "type": "github" + } + }, + "src-toolbox-parallel-robots": { + "flake": false, + "locked": { + "lastModified": 1755590729, + "narHash": "sha256-NCpzhD12kXrxAwsufxZbtjw1Vrs1Usfpo/iXeQoTT94=", + "owner": "gepetto", + "repo": "toolbox-parallel-robots", + "rev": "280a9868a346ed1631272512dac02c96f9f24c2d", + "type": "github" + }, + "original": { + "owner": "gepetto", + "repo": "toolbox-parallel-robots", + "type": "github" + } + }, + "system-manager": { + "inputs": { + "nixpkgs": [ + "gepetto", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1756281415, + "narHash": "sha256-CjpoVwpJJ+DOZilPrDpZ5S3V+B1Y0calaHxTp2xMvGs=", + "owner": "numtide", + "repo": "system-manager", + "rev": "e271eedac9a24678ca6cfc61677837422bf474e0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "system-manager", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "gepetto", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1756662192, + "narHash": "sha256-F1oFfV51AE259I85av+MAia221XwMHCOtZCMcZLK2Jk=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "1aabc6c05ccbcbf4a635fb7a90400e44282f61c4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" } } }, diff --git a/flake.nix b/flake.nix index 9445a20..1282fe0 100644 --- a/flake.nix +++ b/flake.nix @@ -2,18 +2,27 @@ description = "C++ reimplementation of eiquadprog"; inputs = { - flake-parts.url = "github:hercules-ci/flake-parts"; - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + gepetto.url = "github:gepetto/nix"; + flake-parts.follows = "gepetto/flake-parts"; + nixpkgs.follows = "gepetto/nixpkgs"; + nix-ros-overlay.follows = "gepetto/nix-ros-overlay"; + systems.follows = "gepetto/systems"; + treefmt-nix.follows = "gepetto/treefmt-nix"; }; outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } { - systems = inputs.nixpkgs.lib.systems.flakeExposed; + systems = import inputs.systems; + imports = [ inputs.gepetto.flakeModule ]; perSystem = - { pkgs, self', ... }: { - devShells.default = pkgs.mkShell { inputsFrom = [ self'.packages.default ]; }; + lib, + pkgs, + self', + ... + }: + { packages = { default = self'.packages.eiquadprog; eiquadprog = pkgs.eiquadprog.overrideAttrs (_: {