diff options
| author | sveith <simon@simonveith.de> | 2025-01-28 02:28:41 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-28 02:28:41 +0100 |
| commit | 7072056be606eaadee1d581a5fbde7a9357d1e8d (patch) | |
| tree | 1db316a904c440c3d9b1bbc04315904ccf89410a /pkgs/development/python-modules/rangehttpserver | |
| parent | 9c0340aea8f186e78bc28f8c64c48c1c1f96f621 (diff) | |
octoprint: use octoprint from final package set as plugin build input (#370953)
OctoPrint and its plugins are packaged in the form of multiple overlays,
each adding one or more packages built with `buildPythonPackage`. In
the NixOS module, the core `octoprint` package is then combined with
zero or more of the plugin packages into one `python.withPackages`
environment that is referenced by the systemd service unit.
Since plugins have to use the OctoPrint modules at runtime, they receive
the `octoprint` Python package as part of `propagatedBuildInputs`.
However, the current implementation of the plugins overlay takes this
dependency from the `super` package set, i.e., the stage preceding the
plugins overlay.
The use of `super` packages for dependencies is problematic here, as
there may be other subsequent overlays that modify the `octoprint`
package, and the `octoprint` that ends up in the final package set may
not be the same that the plugin was built against.
Things work out fine in the absence of any `octoprint` overrides, or if
no plugins are used. Combining the two in a NixOS configuration,
however, breaks the build with a collision of OctoPrint executables:
error: builder for '/nix/store/7sjbm51s4j5p02s76ncrb6arzb5nwph7-python3-3.12.8-env.drv' failed with exit code 255;
last 1 log lines:
> error: collision between `/nix/store/rg9mixyc0qpdgn3ynrlwlp2qk9l5gh6a-python3.12-OctoPrint-1.10.3/bin/octoprint' and `/nix/store/ws68951jy8gx7q9n09xgpykkwhia82mb-Overridden-OctoPrint-1.10.2/bin/octoprint'
For full logs, run 'nix-store -l /nix/store/7sjbm51s4j5p02s76ncrb6arzb5nwph7-python3-3.12.8-env.drv'.
error: 1 dependencies of derivation '/nix/store/sgmn253inypq9hi722a9817w1ji8lkb8-unit-octoprint.service.drv' failed to build
error: 1 dependencies of derivation '/nix/store/aydjfz8xf8s87hxc60vpnkzbclj5knj5-system-units.drv' failed to build
error: 1 dependencies of derivation '/nix/store/97a3pr2v2b5yjw9g3za5rbc6blb2q808-etc.drv' failed to build
The collision is between the overridden `octoprint` from the final
package set and the non-overridden version that the plugins depend on
(and end up propagating to their consumers).
They all should be using one and the same `octoprint` package, which is
the one from `self`, the final package set after applying all overrides.
Modify the `buildPlugin` helper function accordingly.
Fixes: https://github.com/NixOS/nixpkgs/issues/370946
Diffstat (limited to 'pkgs/development/python-modules/rangehttpserver')
0 files changed, 0 insertions, 0 deletions
