ITADN

Cannot compare distros due to `hpp-fcl`

#812Closedsolonovamax 创建于 2026-03-06
S
solonovamaxcommented
I'm unable to compare distros due to the `hpp-fcl` package defined here: https://github.com/lopsided98/nix-ros-overlay/blob/f891b118c8f4ddb2b6f38d6ce1bfe2f8079552ba/distros/distro-overlay.nix#L88 when trying to do so, I get the following error: ``` error: … while calling the 'derivationStrict' builtin at «nix-internal»/derivation-internal.nix:37:12: 36| 37| strict = derivationStrict drvAttrs; | ^ 38| … while evaluating derivation 'Jazzy-ROS-environment' whose name attribute is located at «github:NixOS/nixpkgs/7df7ff7d8e00218376575f0acdcc5d66741351ee?narHash=sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs%3D»/pkgs/stdenv/generic/make-derivation.nix:544:13 … while evaluating attribute 'nativeBuildInputs' of derivation 'Jazzy-ROS-environment' at «github:NixOS/nixpkgs/7df7ff7d8e00218376575f0acdcc5d66741351ee?narHash=sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs%3D»/pkgs/stdenv/generic/make-derivation.nix:593:13: 592| depsBuildBuild = elemAt (elemAt dependencies 0) 0; 593| nativeBuildInputs = elemAt (elemAt dependencies 0) 1; | ^ 594| depsBuildTarget = elemAt (elemAt dependencies 0) 2; (stack trace truncated; use '--show-trace' to show the full, detailed trace) error: attribute 'hpp-fcl' missing at «github:lopsided98/nix-ros-overlay/2d52dc94f1eeb1465195d1f909b5a10006c8fafd?narHash=sha256-vYTYv1PoGG/Q6afrKnj7fdT%2Bh2f4b1auOdXmQZTaldU%3D»/distros/distro-overlay.nix:88:49: 87| # but have a better packaging in nixpkgs, so use it instead 88| inherit (self.python3Packages) coal eigenpy hpp-fcl pinocchio crocoddyl ; | ^ 89| ``` my usecase for this is a flake where I'm maintaining environments for multiple ROS distros, where some packages exist only in one distro and not the other, so I have some things which look like this: ```nix { inputs = { nix-ros-overlay.url = "github:lopsided98/nix-ros-overlay/master"; nixpkgs.follows = "nix-ros-overlay/nixpkgs"; # IMPORTANT!!! }; outputs = { self, nix-ros-overlay, nixpkgs }: nix-ros-overlay.inputs.flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; overlays = [ nix-ros-overlay.overlays.default ]; }; jazzy = pkgs.rosPackages.jazzy; humble = pkgs.rosPackages.humble; in { devShells = let let visualization-packages = distro: [ (with distro; buildEnv { paths = [ # ... # battery-state-rviz-overlay only exists on jazzy (if distro == jazzy then battery-state-rviz-overlay else null) # ... ]; }) ]; in { humble = pkgs.mkShell { name = "Humble environment"; packages = with pkgs; [ (with humble; buildEnv { paths = [ # ... ]; }) ] # ... ++ (visualization-packages humble) # .. ; }; default = pkgs.mkShell { name = "Jazzy environment"; packages = with pkgs; [ (with jazzy; buildEnv { paths = [ # ... ]; }) ] # ... ++ (visualization-packages jazzy) # .. ; }; }; }); nixConfig = { extra-substituters = [ "https://cache.nixos.org" "https://ros.cachix.org" ]; extra-trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "ros.cachix.org-1:dSyZxI8geDCJrwgvCOHDoAfOm5sV1wCPjBkKL+38Rvo=" ]; }; } ``` so I'd like to be able to compare the distros. ideally, I could also compare them in a less "expensive" way, for example if every distro had like a `name` attribute with the distro's codename. however since I don't have access to that, this is what I'm doing.
关闭于 2026-03-07 8 条评论