diff options
author | Guilhem Saurel | 2024-09-17 15:52:06 +0200 |
---|---|---|
committer | Guilhem Saurel | 2024-09-18 22:41:00 +0200 |
commit | 49518d287b1f3221e6481e88192258f0a93cb690 (patch) | |
tree | ae9920a6c226b845d199d84a30187c3b9372b22e /pkgs/by-name/pi/pinocchio/package.nix | |
parent | 4b7ee3013e569488a9b587b9dde7f437e301fcd3 (diff) |
pinocchio: move to pkgs/by-name
Diffstat (limited to 'pkgs/by-name/pi/pinocchio/package.nix')
-rw-r--r-- | pkgs/by-name/pi/pinocchio/package.nix | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/pkgs/by-name/pi/pinocchio/package.nix b/pkgs/by-name/pi/pinocchio/package.nix new file mode 100644 index 000000000000..238ae8d46337 --- /dev/null +++ b/pkgs/by-name/pi/pinocchio/package.nix @@ -0,0 +1,104 @@ +{ lib +, stdenv +, fetchFromGitHub +, casadi +, cmake +, boost +, eigen +, example-robot-data +, casadiSupport ? true +, collisionSupport ? true +, console-bridge +, jrl-cmakemodules +, hpp-fcl +, urdfdom +, pythonSupport ? false +, python3Packages +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "pinocchio"; + version = "3.2.0"; + + src = fetchFromGitHub { + owner = "stack-of-tasks"; + repo = "pinocchio"; + rev = "v${finalAttrs.version}"; + hash = "sha256-8V+n1TwFojXKOVkGG8k9aXVadt2NBFlZKba93L+NRNU="; + }; + + # test failure, ref https://github.com/stack-of-tasks/pinocchio/issues/2277 + prePatch = lib.optionalString (stdenv.isLinux && stdenv.isAarch64) '' + substituteInPlace unittest/algorithm/utils/CMakeLists.txt \ + --replace-fail "add_pinocchio_unit_test(force)" "" + ''; + + postPatch = '' + # example-robot-data models are used in checks. + # Upstream provide them as git submodule, but we can use our own version instead. + test -d models/example-robot-data && rmdir models/example-robot-data + ln -s ${example-robot-data.src} models/example-robot-data + + # allow package:// uri use in examples + export ROS_PACKAGE_PATH=${example-robot-data}/share + + # silence matplotlib warning + export MPLCONFIGDIR=$(mktemp -d) + ''; + + # CMAKE_BUILD_TYPE defaults to Release in this package, + # which enable -O3, which break some tests + # ref. https://github.com/stack-of-tasks/pinocchio/issues/2304#issuecomment-2231018300 + postConfigure = '' + substituteInPlace CMakeCache.txt --replace-fail '-O3' '-O2' + ''; + + strictDeps = true; + + nativeBuildInputs = [ + cmake + ] ++ lib.optionals pythonSupport [ + python3Packages.python + python3Packages.pythonImportsCheckHook + ]; + + propagatedBuildInputs = [ + console-bridge + jrl-cmakemodules + urdfdom + ] ++ lib.optionals (!pythonSupport) [ + boost + eigen + ] ++ lib.optionals (!pythonSupport && collisionSupport) [ + hpp-fcl + ] ++ lib.optionals pythonSupport [ + python3Packages.boost + python3Packages.eigenpy + ] ++ lib.optionals (pythonSupport && collisionSupport) [ + python3Packages.hpp-fcl + ] ++ lib.optionals (!pythonSupport && casadiSupport) [ + casadi + ] ++ lib.optionals (pythonSupport && casadiSupport) [ + python3Packages.casadi + ]; + + checkInputs = lib.optionals (pythonSupport && casadiSupport) [ python3Packages.matplotlib ]; + + cmakeFlags = [ + (lib.cmakeBool "BUILD_PYTHON_INTERFACE" pythonSupport) + (lib.cmakeBool "BUILD_WITH_LIBPYTHON" pythonSupport) + (lib.cmakeBool "BUILD_WITH_CASADI_SUPPORT" casadiSupport) + (lib.cmakeBool "BUILD_WITH_COLLISION_SUPPORT" collisionSupport) + ]; + + doCheck = true; + pythonImportsCheck = [ "pinocchio" ]; + + meta = { + description = "Fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives"; + homepage = "https://github.com/stack-of-tasks/pinocchio"; + license = lib.licenses.bsd2; + maintainers = with lib.maintainers; [ nim65s wegank ]; + platforms = lib.platforms.unix; + }; +}) |