diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..ba535aa --- /dev/null +++ b/.envrc @@ -0,0 +1,5 @@ +if command -v nix >/dev/null; then + use flake +fi + +export PYTHONPATH="$PWD/build/binding/python/Python/sva:$PYTHONPATH" diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..8ac6b8c --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "monthly" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index de7840a..abc9638 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -75,3 +75,13 @@ jobs: slack-channel: '#ci' slack-text: > [SpaceVecAlg] Build *${{ matrix.os }}/${{ matrix.build-type }}* failed on ${{ github.ref }} + check: + if: always() + name: check-build + runs-on: ubuntu-latest + needs: + - build + steps: + - uses: re-actors/alls-green@release/v1 + with: + jobs: ${{ toJSON(needs) }} diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 3b9e2b8..e450bcd 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -35,3 +35,13 @@ jobs: secrets: CLOUDSMITH_API_KEY: ${{ secrets.CLOUDSMITH_API_KEY }} GH_TOKEN: ${{ secrets.GH_PAGES_TOKEN }} + check: + if: always() + name: check-package + runs-on: ubuntu-latest + needs: + - package + steps: + - uses: re-actors/alls-green@release/v1 + with: + jobs: ${{ toJSON(needs) }} diff --git a/.github/workflows/update-flake-lock.yml b/.github/workflows/update-flake-lock.yml new file mode 100644 index 0000000..5d76fd5 --- /dev/null +++ b/.github/workflows/update-flake-lock.yml @@ -0,0 +1,32 @@ +name: update-flake-lock +on: + workflow_dispatch: + schedule: + # runs at 2:00 AM on the 25th day of every month + - cron: '0 2 25 * *' +jobs: + update-flake-inputs: + runs-on: ubuntu-slim + permissions: + contents: write + pull-requests: write + steps: + - name: Generate GitHub App Token + id: app-token + uses: actions/create-github-app-token@v3 + with: + app-id: ${{ secrets.MC_RTC_NIX_APP_ID }} + private-key: ${{ secrets.MC_RTC_NIX_APP_PRIVATE_KEY }} + - name: Checkout repository + uses: actions/checkout@v6 + with: + token: ${{ steps.app-token.outputs.token }} + - name: Setup Nix + uses: cachix/install-nix-action@v31 + - name: Update flake inputs + uses: mic92/update-flake-inputs@v1 + with: + github-token: ${{ steps.app-token.outputs.token }} + pr-labels: 'no-changelog' + git-author-name: 'arntanguy[bot]' + git-author-email: '67139+arntanguy@users.noreply.github.com' diff --git a/.mergify.yml b/.mergify.yml new file mode 100644 index 0000000..fed9338 --- /dev/null +++ b/.mergify.yml @@ -0,0 +1,27 @@ +pull_request_rules: + # automatically queues when a bot pr succeeds (see queue_rules) + - name: merge [bot] PRs when CI pass + conditions: + - or: + - author = dependabot[bot] + - author = gepetto-flake-updater[bot] + - author = mc-rtc-nixpkgs-flake-updater[bot] + - author = github-actions[bot] + - author = pre-commit-ci[bot] + actions: + queue: + + # runs when commenting @mergifyio queue + - name: queue PRs with "queue" label when all CI checks pass + conditions: + - label = queued + actions: + queue: + +# ensure that required CI jobs suceed +queue_rules: + - name: default + merge_conditions: + - check-success = "check-macos-linux-nix" + - check-success = "check-build" + - check-success = "check-package" diff --git a/README.md b/README.md index 51f1f12..12358f0 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,39 @@ All this implementation is based on appendix A of [Roy Featherstone Rigid Body D Installing ------ -## Ubuntu LTS (16.04, 18.04, 20.04, 22.04, 24.04) +## Nix + +### Run + +To get a python shell with SpaceVecAlg installed + +```sh +nix run github:jrl-umi3218/SpaceVecAlg +``` + +Then +```python +import eigen +``` + +### Develop + +To develop, use + +``` +gh repo clone jrl-umi3218/SpaceVecAlg +direnv allow # activates a nix develop environment and set the python path +cmake -B build $cmakeFlags +cmake --build build +``` + +Then +```python +import eigen +# latest bindings built from source +``` + +## Ubuntu LTS (22.04, 24.04, 26.04) You must first setup our package mirror: diff --git a/flake.lock b/flake.lock index c7fbba6..f42fca5 100644 --- a/flake.lock +++ b/flake.lock @@ -231,11 +231,11 @@ ] }, "locked": { - "lastModified": 1776169759, - "narHash": "sha256-+Y3hgzrqhNdtowq/IA6EOUxnOemVRWAgfmnWSD0eYx8=", + "lastModified": 1776333572, + "narHash": "sha256-c6HTsPfnJO50dxc2IYm3QhXiq+m/84a+DXP1iSG2wbI=", "owner": "gepetto", "repo": "nix", - "rev": "6f91e7137bd26dd218518ff609ca3633b6735043", + "rev": "4b50161bbf3ba4091e83ef097a8c4f9a1421b8ba", "type": "github" }, "original": { @@ -333,11 +333,11 @@ ] }, "locked": { - "lastModified": 1776264718, - "narHash": "sha256-3NSXyoIavX9ytZyCO1CwaYRBIVAKPCNn6SwiWtoTUlc=", + "lastModified": 1780416476, + "narHash": "sha256-RUnk+VLZ1+R9vHBKyut5fcRvNBhJvwfOzgxTAEr3LW8=", "owner": "mc-rtc", "repo": "nixpkgs", - "rev": "b4cefc0ad03a48a6fcf87f46017d46c780944543", + "rev": "08d2fe8899824cd3d6e1ab456c2bb29cd2d42be0", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index ffeb072..c238852 100644 --- a/flake.nix +++ b/flake.nix @@ -3,8 +3,6 @@ inputs = { mc-rtc-nix.url = "github:mc-rtc/nixpkgs"; - # mc-rtc-nix.url = "path:/home/arnaud/devel/mc-rtc-nix/nixpkgs"; - # mc-rtc-nix.url = "github:arntanguy/nixpkgs-1?ref=topic/flakoboros"; }; outputs = @@ -13,14 +11,9 @@ { lib, ... }: { extraPackages = [ "ninja" ]; - overrideAttrs.spacevecalg = - { drv-prev, ... }: - { - src = lib.cleanSource ./.; - cmakeFlags = drv-prev.cmakeFlags ++ [ - "-DPYTHON_BINDINGS=OFF" - ]; - }; + pyOverrideAttrs.spacevecalg = { + src = lib.cleanSource ./.; + }; } ); }