nixpkgs/pkgs/by-name/pr/proxsuite-nlp/package.nix
2024-09-19 01:14:44 +02:00

90 lines
2.3 KiB
Nix

{
cmake,
doxygen,
eigenrand,
example-robot-data,
fetchFromGitHub,
fetchpatch,
fmt,
fontconfig,
graphviz,
lib,
stdenv,
pinocchio,
pkg-config,
proxsuite,
python3Packages,
pythonSupport ? false,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "proxsuite-nlp";
version = "0.8.0";
src = fetchFromGitHub {
owner = "Simple-Robotics";
repo = "proxsuite-nlp";
rev = "v${finalAttrs.version}";
hash = "sha256-Dy8+pPTv/B6vVdpGndVOV16WSLiENJfaIrn1+FYwcI0=";
};
outputs = [
"out"
"doc"
];
patches = [
# Fix use of system jrl-cmakemodules
# This patch was merged upstream and can be removed on next release
(fetchpatch {
url = "https://github.com/Simple-Robotics/proxsuite-nlp/pull/109/commits/9bf741ce6010052a773071472891f42adc6cbbea.patch";
hash = "sha256-sluMVrTw7EXLFa0dqkoZTkpGjKe7zODqIqbJxCdfSwY=";
})
];
nativeBuildInputs = [
cmake
doxygen
graphviz
pkg-config
] ++ lib.optional pythonSupport python3Packages.pythonImportsCheckHook;
checkInputs = [ eigenrand ] ++ lib.optional pythonSupport python3Packages.pytest;
propagatedBuildInputs =
[
example-robot-data
fmt
]
++ lib.optionals pythonSupport [
python3Packages.pinocchio
python3Packages.proxsuite
]
++ lib.optionals (!pythonSupport) [
pinocchio
proxsuite
];
cmakeFlags = [
(lib.cmakeBool "BUILD_PYTHON_INTERFACE" pythonSupport)
(lib.cmakeBool "BUILD_WITH_PINOCCHIO_SUPPORT" true)
(lib.cmakeBool "BUILD_WITH_PROXSUITE_SUPPORT" true)
];
# Fontconfig error: Cannot load default config file: No such file: (null)
env.FONTCONFIG_FILE = "${fontconfig.out}/etc/fonts/fonts.conf";
# Fontconfig error: No writable cache directories
preBuild = "export XDG_CACHE_HOME=$(mktemp -d)";
doCheck = true;
pythonImportsCheck = [ "proxsuite_nlp" ];
meta = {
description = "Primal-dual augmented Lagrangian solver for nonlinear programming on manifolds";
homepage = "https://github.com/Simple-Robotics/proxsuite-nlp";
changelog = "https://github.com/Simple-Robotics/proxsuite-nlp/blob/v${finalAttrs.version}/CHANGELOG.md";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [ nim65s ];
platforms = lib.platforms.unix;
};
})