diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 4ad7bd5..8ac6b8c 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,6 +1,6 @@ version: 2 updates: -- package-ecosystem: "github-actions" - directory: "/" - schedule: + - package-ecosystem: "github-actions" + directory: "/" + schedule: interval: "monthly" diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index b4a3fc4..4fd6a01 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -15,7 +15,7 @@ jobs: runs-on: "${{ matrix.os }}-latest" strategy: matrix: - os: [ubuntu] # TODO + os: [ubuntu] steps: - uses: actions/checkout@v6 - uses: cachix/install-nix-action@v31 diff --git a/.github/workflows/update-flake-lock.yml b/.github/workflows/update-flake-lock.yml index 5fd83ab..970eeca 100644 --- a/.github/workflows/update-flake-lock.yml +++ b/.github/workflows/update-flake-lock.yml @@ -1,10 +1,8 @@ name: update-flake-lock - on: workflow_dispatch: schedule: - cron: '0 16 13 * *' - jobs: update-flake-inputs: runs-on: ubuntu-slim diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7c9180b..2a95010 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,43 +1,40 @@ ci: autoupdate_schedule: quarterly repos: -- repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.15.5 - hooks: - - id: ruff - args: - - --fix - - --exit-non-zero-on-fix - - id: ruff-format -- repo: https://github.com/cheshirekow/cmake-format-precommit - rev: v0.6.13 - hooks: - - id: cmake-format -- repo: https://github.com/pappasam/toml-sort - rev: v0.24.3 - hooks: - - id: toml-sort-fix -- repo: https://github.com/pre-commit/mirrors-clang-format - rev: v22.1.0 - hooks: - - id: clang-format - args: - - --style=Google -- repo: https://github.com/pre-commit/pre-commit-hooks - rev: v6.0.0 - hooks: - - id: check-added-large-files - - id: check-ast - - id: check-executables-have-shebangs - - id: check-json - - id: check-merge-conflict - - id: check-symlinks - - id: check-toml - - id: check-yaml - - id: debug-statements - - id: destroyed-symlinks - - id: detect-private-key - - id: end-of-file-fixer - - id: fix-byte-order-marker - - id: mixed-line-ending - - id: trailing-whitespace + - repo: https://github.com/BlankSpruce/gersemi + rev: 0.26.1 + hooks: + - id: gersemi + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.15.9 + hooks: + - id: ruff-check + - id: ruff-format + - repo: https://github.com/pappasam/toml-sort + rev: v0.24.4 + hooks: + - id: toml-sort-fix + - repo: https://github.com/pre-commit/mirrors-clang-format + rev: v22.1.2 + hooks: + - id: clang-format + args: + - --style=Google + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v6.0.0 + hooks: + - id: check-added-large-files + - id: check-ast + - id: check-executables-have-shebangs + - id: check-json + - id: check-merge-conflict + - id: check-symlinks + - id: check-toml + - id: check-yaml + - id: debug-statements + - id: destroyed-symlinks + - id: detect-private-key + - id: end-of-file-fixer + - id: fix-byte-order-marker + - id: mixed-line-ending + - id: trailing-whitespace diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d730a7..43cc56a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,24 +24,32 @@ set(PROJECT_USE_CMAKE_EXPORT TRUE) # Check if the submodule cmake have been initialized set(JRL_CMAKE_MODULES "${CMAKE_CURRENT_LIST_DIR}/cmake") if(EXISTS "${JRL_CMAKE_MODULES}/base.cmake") - message(STATUS "JRL cmakemodules found in 'cmake/' git submodule") + message(STATUS "JRL cmakemodules found in 'cmake/' git submodule") else() - find_package(jrl-cmakemodules QUIET CONFIG) - if(jrl-cmakemodules_FOUND) - get_property( - JRL_CMAKE_MODULES - TARGET jrl-cmakemodules::jrl-cmakemodules - PROPERTY INTERFACE_INCLUDE_DIRECTORIES) - message(STATUS "JRL cmakemodules found on system at ${JRL_CMAKE_MODULES}") - else() - message(STATUS "JRL cmakemodules not found. Let's fetch it.") - include(FetchContent) - FetchContent_Declare( - "jrl-cmakemodules" - GIT_REPOSITORY "https://github.com/jrl-umi3218/jrl-cmakemodules.git") - FetchContent_MakeAvailable("jrl-cmakemodules") - FetchContent_GetProperties("jrl-cmakemodules" SOURCE_DIR JRL_CMAKE_MODULES) - endif() + find_package(jrl-cmakemodules QUIET CONFIG) + if(jrl-cmakemodules_FOUND) + get_property( + JRL_CMAKE_MODULES + TARGET jrl-cmakemodules::jrl-cmakemodules + PROPERTY INTERFACE_INCLUDE_DIRECTORIES + ) + message( + STATUS + "JRL cmakemodules found on system at ${JRL_CMAKE_MODULES}" + ) + else() + message(STATUS "JRL cmakemodules not found. Let's fetch it.") + include(FetchContent) + FetchContent_Declare( + "jrl-cmakemodules" + GIT_REPOSITORY "https://github.com/jrl-umi3218/jrl-cmakemodules.git" + ) + FetchContent_MakeAvailable("jrl-cmakemodules") + FetchContent_GetProperties( + "jrl-cmakemodules" + SOURCE_DIR JRL_CMAKE_MODULES + ) + endif() endif() include("${JRL_CMAKE_MODULES}/hpp.cmake") @@ -56,27 +64,25 @@ check_minimal_cxx_standard(11 REQUIRED) # Handle APPLE Cmake policy if(APPLE) - apply_default_apple_configuration() + apply_default_apple_configuration() endif(APPLE) # Activate hpp-util logging if requested -set(HPP_DEBUG - FALSE - CACHE BOOL "trigger hpp-util debug output") +set(HPP_DEBUG FALSE CACHE BOOL "trigger hpp-util debug output") if(HPP_DEBUG) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHPP_DEBUG") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHPP_DEBUG") endif() # Activate hpp-util logging if requested -set(HPP_BENCHMARK - FALSE - CACHE BOOL "trigger hpp-util benchmark output") +set(HPP_BENCHMARK FALSE CACHE BOOL "trigger hpp-util benchmark output") if(HPP_BENCHMARK) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHPP_ENABLE_BENCHMARK") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHPP_ENABLE_BENCHMARK") endif() # Ask Doxygen to create a tree view in html documentation set(DOXYGEN_TREEVIEW "NO" - CACHE STRING "Set to YES to generate a tree view in the html documentation") + CACHE STRING + "Set to YES to generate a tree view in the html documentation" +) # Declare Headers set(${PROJECT_NAME}_HEADERS @@ -94,7 +100,8 @@ set(${PROJECT_NAME}_HEADERS include/pyhpp/ref.hh include/pyhpp/stl-pair.hh include/pyhpp/util.hh - include/pyhpp/vector-indexing-suite.hh) + include/pyhpp/vector-indexing-suite.hh +) set(PYTHON_COMPONENTS Interpreter Development NumPy) @@ -110,18 +117,15 @@ findpython() search_for_boost_python() if(BUILD_TESTING) - find_package(example-robot-data REQUIRED) - find_package(hpp-environments REQUIRED) - # find_package(hpp_tutorial REQUIRED) TODO: dependency loop ? + find_package(example-robot-data REQUIRED) + find_package(hpp-environments REQUIRED) + # find_package(hpp_tutorial REQUIRED) TODO: dependency loop ? endif() add_library(${PROJECT_NAME} INTERFACE) -install( - TARGETS ${PROJECT_NAME} - EXPORT ${TARGETS_EXPORT_NAME} - DESTINATION lib) +install(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib) add_subdirectory(src) if(BUILD_TESTING) - add_subdirectory(tests) + add_subdirectory(tests) endif() diff --git a/flake.lock b/flake.lock index cd4e0d6..7ef4df1 100644 --- a/flake.lock +++ b/flake.lock @@ -1,15 +1,54 @@ { "nodes": { + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1772408722, - "narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=", + "lastModified": 1775087534, + "narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "gepetto", + "system-manager", + "userborn", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1768135262, + "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3", + "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", "type": "github" }, "original": { @@ -58,11 +97,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1774365635, - "narHash": "sha256-QjJ/CURzUwkO54xMKmGS1U4q+dog3KNQotxUtJ+JFz8=", + "lastModified": 1775253014, + "narHash": "sha256-FkBoiFcTxu4I4QYBV731G30zfEpowFHaQla95mpgBqY=", "owner": "gepetto", "repo": "flakoboros", - "rev": "a42bc6287c3f47a7f2aea0699a344df22426e581", + "rev": "f01c99b0c3e2e75de484bd350353d4f7383385c2", "type": "github" }, "original": { @@ -109,11 +148,11 @@ "uv2nix": "uv2nix" }, "locked": { - "lastModified": 1774365734, - "narHash": "sha256-ZgPXr7KvYJBxD2t8DgT2u1dQ96JMvbrX0jXo27SxtsA=", + "lastModified": 1775341473, + "narHash": "sha256-RiWQZm+fm+GyWREPrcbzBc17z9MdllzhxI6WvIYu6cY=", "owner": "gepetto", "repo": "gazebros2nix", - "rev": "e96f1edcccb79b73658ffbddc60ad61d6a30a75c", + "rev": "873b616afa62f305911880c0b39ebd9df1a86947", "type": "github" }, "original": { @@ -147,8 +186,6 @@ "gazebros2nix", "nixpkgs" ], - "src-odri-control-interface": "src-odri-control-interface", - "src-odri-masterboard-sdk": "src-odri-masterboard-sdk", "system-manager": "system-manager", "systems": [ "gepetto", @@ -162,11 +199,11 @@ ] }, "locked": { - "lastModified": 1774371946, - "narHash": "sha256-foMnMtcuEkBEp2gYL/AOzr1xhjldbw0CExsokwq1Mzk=", + "lastModified": 1775485998, + "narHash": "sha256-Ugr5APRRS5QCkZ2cMjo245twxkvEETSpGRzU2yOJuDw=", "owner": "gepetto", "repo": "nix", - "rev": "049aec0d7dadc234bd6cc4e1b6731ce25e66e337", + "rev": "6066d58fde101284223efb1fb83057ac0e4e8b5c", "type": "github" }, "original": { @@ -175,6 +212,30 @@ "type": "github" } }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "gepetto", + "system-manager", + "userborn", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -183,11 +244,11 @@ ] }, "locked": { - "lastModified": 1774274588, - "narHash": "sha256-dnHvv5EMUgTzGZmA+3diYjQU2O6BEpGLEOgJ1Qe9LaY=", + "lastModified": 1775077333, + "narHash": "sha256-OXcxobt7lBkh1B8AjwreU+24myhtKpqeLfAeIyNLFY8=", "owner": "nix-community", "repo": "home-manager", - "rev": "cf9686ba26f5ef788226843bc31fda4cf72e373b", + "rev": "49ca96b2714c5931e17401eff87f3edd42d2b0f2", "type": "github" }, "original": { @@ -197,53 +258,58 @@ "type": "github" } }, - "hpp-manipulation": { + "hpp-core": { "inputs": { "flake-parts": [ - "hpp-manipulation", + "hpp-core", "gepetto", "flake-parts" ], - "flakoboros": [ - "hpp-manipulation", - "gepetto", - "flakoboros" - ], - "gazebros2nix": [ - "hpp-manipulation", - "gepetto", - "gazebros2nix" - ], "gepetto": [ "gepetto" ], - "nix-ros-overlay": [ - "hpp-manipulation", + "systems": [ + "hpp-core", "gepetto", - "nix-ros-overlay" - ], - "nixpkgs": [ + "systems" + ] + }, + "locked": { + "lastModified": 1775490126, + "narHash": "sha256-avBPV0xiJD6p8K/TwnJNxvFjo1wkFjzI9by1PCVt/DI=", + "owner": "humanoid-path-planner", + "repo": "hpp-core", + "rev": "62de907f7185febfa11dd955c62a0f679bf3f65f", + "type": "github" + }, + "original": { + "owner": "humanoid-path-planner", + "repo": "hpp-core", + "type": "github" + } + }, + "hpp-manipulation": { + "inputs": { + "flake-parts": [ "hpp-manipulation", "gepetto", - "nixpkgs" + "flake-parts" + ], + "gepetto": [ + "gepetto" ], "systems": [ "hpp-manipulation", "gepetto", "systems" - ], - "treefmt-nix": [ - "hpp-manipulation", - "gepetto", - "treefmt-nix" ] }, "locked": { - "lastModified": 1774373131, - "narHash": "sha256-3DoRbwCcCeMeMDiBzhK6enZiFDKt5Er5Wh8ec60vClI=", + "lastModified": 1775490082, + "narHash": "sha256-IWljq9pui80xEducZurIR9Ju3f5zA9d4NCSIhamsmgE=", "owner": "humanoid-path-planner", "repo": "hpp-manipulation", - "rev": "e314dbc9ebe3993270c2a9933f12ee19bbeed9f4", + "rev": "daec3ee4820036b36c08ca439578edd10c2060b2", "type": "github" }, "original": { @@ -258,11 +324,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1774047596, - "narHash": "sha256-UNT8fGmAm2ZlaktMmiVYPeHgok2IJoCfLg698rO3Kq8=", + "lastModified": 1775242455, + "narHash": "sha256-6k6GChuNuVU70rq5Stp7PHsH1haAX7q4uRv6hBwGMoc=", "owner": "lopsided98", "repo": "nix-ros-overlay", - "rev": "c0659dc45d4c1736d71d5578b17f12e3b1afe190", + "rev": "909dbfd8cbe571a6cb63ac7a526e71c8d3f85a26", "type": "github" }, "original": { @@ -295,27 +361,27 @@ }, "nixpkgs": { "locked": { - "lastModified": 1759381078, - "narHash": "sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs=", + "lastModified": 1771369470, + "narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7df7ff7d8e00218376575f0acdcc5d66741351ee", + "rev": "0182a361324364ae3f436a63005877674cf45efb", "type": "github" }, "original": { - "owner": "lopsided98", - "ref": "nix-ros", + "owner": "NixOS", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs-lib": { "locked": { - "lastModified": 1772328832, - "narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=", + "lastModified": 1774748309, + "narHash": "sha256-+U7gF3qxzwD5TZuANzZPeJTZRHS29OFQgkQ2kiTJBIQ=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742", + "rev": "333c4e0545a6da976206c74db8773a1645b5870a", "type": "github" }, "original": { @@ -324,6 +390,36 @@ "type": "github" } }, + "pre-commit-hooks-nix": { + "inputs": { + "flake-compat": [ + "gepetto", + "system-manager", + "userborn", + "flake-compat" + ], + "gitignore": "gitignore", + "nixpkgs": [ + "gepetto", + "system-manager", + "userborn", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1769069492, + "narHash": "sha256-Efs3VUPelRduf3PpfPP2ovEB4CXT7vHf8W+xc49RL/U=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "a1ef738813b15cf8ec759bdff5761b027e3e1d23", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, "pyproject-build-systems": { "inputs": { "nixpkgs": [ @@ -365,11 +461,11 @@ ] }, "locked": { - "lastModified": 1773909723, - "narHash": "sha256-HmcZQ/hMPHR22Ri/6Sl7Z0B5J8nZa9bRnZJtDFInM7I=", + "lastModified": 1775197701, + "narHash": "sha256-W9dcvnvbpZZexKVnDp/8NiNXqy2gnq1FWCD142/Skp8=", "owner": "pyproject-nix", "repo": "pyproject.nix", - "rev": "d37dcf34ac7194eac4b0d10520d01298c434267d", + "rev": "946e5fb82c3443940c45e5a61686d173e2e21155", "type": "github" }, "original": { @@ -384,24 +480,9 @@ "gepetto", "flake-parts" ], - "flakoboros": [ - "gepetto", - "flakoboros" - ], - "gazebros2nix": [ - "gepetto", - "gazebros2nix" - ], "gepetto": "gepetto", + "hpp-core": "hpp-core", "hpp-manipulation": "hpp-manipulation", - "nix-ros-overlay": [ - "gepetto", - "nix-ros-overlay" - ], - "nixpkgs": [ - "gepetto", - "nixpkgs" - ], "systems": [ "gepetto", "systems" @@ -412,53 +493,21 @@ ] } }, - "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" - } - }, "system-manager": { "inputs": { + "flake-compat": "flake-compat", "nixpkgs": [ "gepetto", "nixpkgs" - ] + ], + "userborn": "userborn" }, "locked": { - "lastModified": 1770135975, - "narHash": "sha256-J3qmZ4rTfmgyjrsQRrQWT7ZIYVtYqtLomMNDUibuw2k=", + "lastModified": 1775069719, + "narHash": "sha256-NO8/XIfx/MVpWPL4KzdezhmdwDLT6B699cS/RkhoVb0=", "owner": "numtide", "repo": "system-manager", - "rev": "413f296fb1fd210c44e38744e270b3afc4c733d7", + "rev": "7dced4829576f6e540e2b985b9e47859ac5b8421", "type": "github" }, "original": { @@ -482,6 +531,21 @@ "type": "github" } }, + "systems_2": { + "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": [ @@ -492,11 +556,11 @@ ] }, "locked": { - "lastModified": 1773297127, - "narHash": "sha256-6E/yhXP7Oy/NbXtf1ktzmU8SdVqJQ09HC/48ebEGBpk=", + "lastModified": 1775125835, + "narHash": "sha256-2qYcPgzFhnQWchHo0SlqLHrXpux5i6ay6UHA+v2iH4U=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "71b125cd05fbfd78cab3e070b73544abe24c5016", + "rev": "75925962939880974e3ab417879daffcba36c4a3", "type": "github" }, "original": { @@ -505,6 +569,37 @@ "type": "github" } }, + "userborn": { + "inputs": { + "flake-compat": [ + "gepetto", + "system-manager", + "flake-compat" + ], + "flake-parts": "flake-parts_2", + "nixpkgs": [ + "gepetto", + "system-manager", + "nixpkgs" + ], + "pre-commit-hooks-nix": "pre-commit-hooks-nix", + "systems": "systems_2" + }, + "locked": { + "lastModified": 1770377964, + "narHash": "sha256-q2pnlX2IW0kg80GLFnwWd/GigIpkuZnyKPLhrgJql3E=", + "owner": "jfroche", + "repo": "userborn", + "rev": "55c2cd7952c207a62736a5bbd9499ea73da18d24", + "type": "github" + }, + "original": { + "owner": "jfroche", + "ref": "system-manager", + "repo": "userborn", + "type": "github" + } + }, "uv2nix": { "inputs": { "nixpkgs": [ @@ -519,11 +614,11 @@ ] }, "locked": { - "lastModified": 1774315256, - "narHash": "sha256-jhlzSXk0Rv4cSHoRgEecEcv+veN0q3sD3PIAgqgpwcI=", + "lastModified": 1775195476, + "narHash": "sha256-uaPmLBiYfd6dpTJD8SI6+8Cg0ciUpHc5uN5EbFmd6SE=", "owner": "pyproject-nix", "repo": "uv2nix", - "rev": "0623db9a65da877e4f6f67ed946ffd65401720f0", + "rev": "7fac30f496a7d9853e8c301a8edbfc35af50d418", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 2baa83f..30309c5 100644 --- a/flake.nix +++ b/flake.nix @@ -3,17 +3,17 @@ inputs = { gepetto.url = "github:gepetto/nix"; - flakoboros.follows = "gepetto/flakoboros"; - gazebros2nix.follows = "gepetto/gazebros2nix"; 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"; # https://github.com/humanoid-path-planner/hpp-manipulation/pull/262 hpp-manipulation.url = "github:humanoid-path-planner/hpp-manipulation"; hpp-manipulation.inputs.gepetto.follows = "gepetto"; + + # https://github.com/humanoid-path-planner/hpp-core/pull/429 + hpp-core.url = "github:humanoid-path-planner/hpp-core"; + hpp-core.inputs.gepetto.follows = "gepetto"; }; outputs = @@ -26,10 +26,14 @@ inputs.gepetto.flakeModule { flakoboros = { - overlays = [ inputs.hpp-manipulation.overlays.default ]; + overlays = [ + inputs.hpp-core.overlays.flakoboros + inputs.hpp-manipulation.overlays.flakoboros + ]; pyOverrideAttrs.hpp-python = - _final: python-final: + _: python-final: (super: { + buildInputs = [ python-final.boost ] ++ super.buildInputs; propagatedBuildInputs = super.propagatedBuildInputs ++ [ python-final.lxml ]; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 679bdc1..747cd7c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -25,45 +25,61 @@ # ADD_PYTHON_LIBRARY ( module FILES file1.cc file2.cc ... LINK_LIBRARIES # hpp-core::hpp-core ...) macro(ADD_PYTHON_LIBRARY MODULE) - set(options) - set(oneValueArgs) - set(multiValueArgs FILES PY_FILES LINK_LIBRARIES) - cmake_parse_arguments(ADD_PYTHON_LIBRARY "${options}" "${oneValueArgs}" - "${multiValueArgs}" ${ARGN}) - - file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${MODULE}) - - set(GENERATED_FILES) - foreach(F ${ADD_PYTHON_LIBRARY_FILES}) - add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${F} - COMMAND ${CMAKE_SOURCE_DIR}/doc/configure.py - ${CMAKE_CURRENT_SOURCE_DIR}/${F} ${CMAKE_CURRENT_BINARY_DIR}/${F} - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${F} - COMMENT "Generate with documentation for ${F}") - list(APPEND GENERATED_FILES ${CMAKE_CURRENT_BINARY_DIR}/${F}) - endforeach() - - string(REGEX REPLACE "[/-]" "_" TARGET_NAME "${MODULE}") - set(LIBNAME "bindings") - add_library(${TARGET_NAME} SHARED ${GENERATED_FILES}) - set_target_properties( - ${TARGET_NAME} - PROPERTIES PREFIX "" - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${MODULE} - LIBRARY_OUTPUT_NAME ${LIBNAME}) - - target_link_boost_python(${TARGET_NAME} PUBLIC) - target_link_libraries( - ${TARGET_NAME} PUBLIC eigenpy::eigenpy ${ADD_PYTHON_LIBRARY_LINK_LIBRARIES}) - - install(TARGETS ${TARGET_NAME} DESTINATION ${PYTHON_SITELIB}/${MODULE}) - - # Write __init__.py file - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${MODULE}/__init__.py - "from .${LIBNAME} import *") - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${MODULE}/__init__.py - DESTINATION ${PYTHON_SITELIB}/${MODULE}) + set(options) + set(oneValueArgs) + set(multiValueArgs FILES PY_FILES LINK_LIBRARIES) + cmake_parse_arguments( + ADD_PYTHON_LIBRARY + "${options}" + "${oneValueArgs}" + "${multiValueArgs}" + ${ARGN} + ) + + file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${MODULE}) + + set(GENERATED_FILES) + foreach(F ${ADD_PYTHON_LIBRARY_FILES}) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${F} + COMMAND + ${CMAKE_SOURCE_DIR}/doc/configure.py + ${CMAKE_CURRENT_SOURCE_DIR}/${F} + ${CMAKE_CURRENT_BINARY_DIR}/${F} + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${F} + COMMENT "Generate with documentation for ${F}" + ) + list(APPEND GENERATED_FILES ${CMAKE_CURRENT_BINARY_DIR}/${F}) + endforeach() + + string(REGEX REPLACE "[/-]" "_" TARGET_NAME "${MODULE}") + set(LIBNAME "bindings") + add_library(${TARGET_NAME} SHARED ${GENERATED_FILES}) + set_target_properties( + ${TARGET_NAME} + PROPERTIES + PREFIX "" + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${MODULE} + LIBRARY_OUTPUT_NAME ${LIBNAME} + ) + + target_link_boost_python(${TARGET_NAME} PUBLIC) + target_link_libraries( + ${TARGET_NAME} + PUBLIC eigenpy::eigenpy ${ADD_PYTHON_LIBRARY_LINK_LIBRARIES} + ) + + install(TARGETS ${TARGET_NAME} DESTINATION ${PYTHON_SITELIB}/${MODULE}) + + # Write __init__.py file + file( + WRITE ${CMAKE_CURRENT_BINARY_DIR}/${MODULE}/__init__.py + "from .${LIBNAME} import *" + ) + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/${MODULE}/__init__.py + DESTINATION ${PYTHON_SITELIB}/${MODULE} + ) endmacro() python_install_on_site(pyhpp __init__.py) @@ -79,11 +95,13 @@ add_python_library( pyhpp/pinocchio/liegroup.cc pyhpp/pinocchio/bindings.cc LINK_LIBRARIES - hpp-manipulation::hpp-manipulation) + hpp-manipulation::hpp-manipulation +) add_python_library( pyhpp/pinocchio/urdf FILES pyhpp/pinocchio/urdf/util.cc - pyhpp/pinocchio/urdf/bindings.cc LINK_LIBRARIES hpp-pinocchio::hpp-pinocchio) + pyhpp/pinocchio/urdf/bindings.cc LINK_LIBRARIES hpp-pinocchio::hpp-pinocchio +) add_python_library( pyhpp/constraints @@ -99,7 +117,8 @@ add_python_library( pyhpp/constraints/relative-com.cc pyhpp/constraints/bindings.cc LINK_LIBRARIES - hpp-constraints::hpp-constraints) + hpp-constraints::hpp-constraints +) add_python_library( pyhpp/core @@ -123,12 +142,14 @@ add_python_library( pyhpp/core/problem.cc pyhpp/core/bindings.cc LINK_LIBRARIES - hpp-manipulation::hpp-manipulation) + hpp-manipulation::hpp-manipulation +) add_python_library( pyhpp/core/problem_target FILES pyhpp/core/problem_target/goal-configurations.cc - pyhpp/core/problem_target/bindings.cc LINK_LIBRARIES hpp-core::hpp-core) + pyhpp/core/problem_target/bindings.cc LINK_LIBRARIES hpp-core::hpp-core +) add_python_library( pyhpp/core/path @@ -137,12 +158,14 @@ add_python_library( pyhpp/core/path/vector.cc pyhpp/core/path/bindings.cc LINK_LIBRARIES - hpp-core::hpp-core) + hpp-core::hpp-core +) add_python_library( pyhpp/core/path_optimization FILES pyhpp/core/path_optimization/spline-gradient-based-abstract.cc - pyhpp/core/path_optimization/bindings.cc LINK_LIBRARIES hpp-core::hpp-core) + pyhpp/core/path_optimization/bindings.cc LINK_LIBRARIES hpp-core::hpp-core +) add_python_library( pyhpp/manipulation @@ -157,7 +180,8 @@ add_python_library( pyhpp/manipulation/steering-method.cc pyhpp/manipulation/path-optimizer.cc LINK_LIBRARIES - hpp-manipulation::hpp-manipulation) + hpp-manipulation::hpp-manipulation +) add_python_library( pyhpp/manipulation/steering_method @@ -165,12 +189,14 @@ add_python_library( pyhpp/manipulation/steering_method/cartesian.cc pyhpp/manipulation/steering_method/bindings.cc LINK_LIBRARIES - hpp-manipulation::hpp-manipulation) + hpp-manipulation::hpp-manipulation +) add_python_library( pyhpp/manipulation/urdf FILES pyhpp/manipulation/urdf/util.cc pyhpp/manipulation/urdf/bindings.cc LINK_LIBRARIES - hpp-manipulation-urdf::hpp-manipulation-urdf) + hpp-manipulation-urdf::hpp-manipulation-urdf +) # Install tool submodule python_install_on_site(pyhpp/tools __init__.py) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index eb6e472..aa6d35b 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -22,19 +22,20 @@ compute_pythonpath(UNITTEST_ENV_VARIABLES src) # Discover and add individual test files file(GLOB UNITTEST_TEST_FILES "${CMAKE_CURRENT_SOURCE_DIR}/unit/test_*.py") foreach(TEST_FILE ${UNITTEST_TEST_FILES}) - get_filename_component(TEST_NAME ${TEST_FILE} NAME_WE) - add_test( - NAME unittest_${TEST_NAME} - COMMAND ${PYTHON_EXECUTABLE} -m unittest discover -s + get_filename_component(TEST_NAME ${TEST_FILE} NAME_WE) + add_test( + NAME unittest_${TEST_NAME} + COMMAND + ${PYTHON_EXECUTABLE} -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR} -p "${TEST_NAME}.py" -v - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) - set_tests_properties( - unittest_${TEST_NAME} - PROPERTIES - ENVIRONMENT - "${UNITTEST_ENV_VARIABLES}" - ENVIRONMENT_MODIFICATION - "ROS_PACKAGE_PATH=path_list_prepend:${example-robot-data_INCLUDE_DIRS}/../share;ROS_PACKAGE_PATH=path_list_prepend:${hpp-environments_INCLUDE_DIRS}/../share;" - LABELS - "python;unit") + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + ) + set_tests_properties( + unittest_${TEST_NAME} + PROPERTIES + ENVIRONMENT "${UNITTEST_ENV_VARIABLES}" + ENVIRONMENT_MODIFICATION + "ROS_PACKAGE_PATH=path_list_prepend:${example-robot-data_INCLUDE_DIRS}/../share;ROS_PACKAGE_PATH=path_list_prepend:${hpp-environments_INCLUDE_DIRS}/../share;" + LABELS "python;unit" + ) endforeach()