mirror of
https://github.com/lopsided98/nix-ros-overlay.git
synced 2025-06-13 03:04:49 +03:00
Cleanup Python package overrides.
This commit is contained in:
parent
3fa6f9fb54
commit
b79845c4ed
5 changed files with 54 additions and 62 deletions
|
@ -1,15 +1,11 @@
|
|||
{ version, distro, python }:
|
||||
self: super:
|
||||
let
|
||||
pythonOverridesFor = with self.lib; superPython: fix (python: superPython.override ({
|
||||
packageOverrides ? _: _: {}, ...
|
||||
}: {
|
||||
self = python;
|
||||
packageOverrides = composeExtensions packageOverrides
|
||||
(pySelf: pySuper: optionalAttrs pySuper.isPy3k {
|
||||
wxPython = pySelf.wxPython_4_0;
|
||||
});
|
||||
}));
|
||||
pythonOverridesFor = with self.lib; prevPython: prevPython // {
|
||||
pkgs = prevPython.pkgs.overrideScope (pyFinal: pyPrev: optionalAttrs pyPrev.isPy3k {
|
||||
wxPython = pyFinal.wxPython_4_0;
|
||||
});
|
||||
};
|
||||
|
||||
base = rosSelf: rosSuper: {
|
||||
recurseForDerivations = true;
|
||||
|
|
|
@ -51,28 +51,28 @@ rosSelf: rosSuper: with rosSelf.lib; {
|
|||
nativeBuildInputs = nativeBuildInputs ++ [ self.pkg-config ];
|
||||
});
|
||||
|
||||
# rviz does not support shiboken/pyside2 and SIP4 is broken with the latest
|
||||
# pyqt5. This applies a patch to make pyqt5 compatible with SIP 4 and uses
|
||||
# SIP 4 with python-qt-binding for rviz only.
|
||||
rviz = rosSuper.rviz.override {
|
||||
python-qt-binding = (rosSuper.python-qt-binding.override {
|
||||
python3Packages = rosSelf.python3Packages.override {
|
||||
overrides = pySelf: pySuper: {
|
||||
pyqt5 = rosSelf.python3Packages.pyqt5.overrideAttrs ({
|
||||
patches ? [], ...
|
||||
}: {
|
||||
patches = patches ++ [ (self.fetchpatch {
|
||||
url = "https://aur.archlinux.org/cgit/aur.git/plain/restore-sip4-support.patch?h=python-pyqt5-sip4&id=6e712e6c588d550a1a6f83c1b37c2c9135aae6ba";
|
||||
sha256 = "sha256-NfMe/EK1Uj88S82xZSm+A6js3PK9mlgsaci/kinlsy8=";
|
||||
}) ];
|
||||
});
|
||||
};
|
||||
};
|
||||
python3Packages = rosSelf.python3Packages.overrideScope (pyFinal: pyPrev: {
|
||||
pyqt5 = pyPrev.pyqt5.overrideAttrs ({
|
||||
patches ? [], ...
|
||||
}: {
|
||||
patches = patches ++ [ (self.fetchpatch {
|
||||
url = "https://aur.archlinux.org/cgit/aur.git/plain/restore-sip4-support.patch?h=python-pyqt5-sip4&id=6e712e6c588d550a1a6f83c1b37c2c9135aae6ba";
|
||||
sha256 = "sha256-NfMe/EK1Uj88S82xZSm+A6js3PK9mlgsaci/kinlsy8=";
|
||||
}) ];
|
||||
});
|
||||
});
|
||||
}).overrideAttrs({
|
||||
propagatedNativeBuildInputs ? [],
|
||||
postPatch ? "", ...
|
||||
}: {
|
||||
# rviz1 does not support shiboken/pyside2
|
||||
propagatedNativeBuildInputs = (rosSelf.lib.subtractLists
|
||||
(with rosSelf.pythonPackages; [ shiboken2 pyside2 ])
|
||||
propagatedNativeBuildInputs) ++ [ rosSelf.pythonPackages.sip_4 ];
|
||||
propagatedNativeBuildInputs = with rosSelf.pythonPackages;
|
||||
(rosSelf.lib.subtractLists [ shiboken2 pyside2 ] propagatedNativeBuildInputs)
|
||||
++ [ sip_4 ];
|
||||
postPatch = ''
|
||||
sed -e "1 i\\import PyQt5" \
|
||||
-e "s#sipconfig\._pkg_config\['default_mod_dir'\], 'PyQt5'#PyQt5.__path__[0]#" \
|
||||
|
|
|
@ -77,9 +77,9 @@ in {
|
|||
# Implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
# FIXME: mkAfter is used to make sure the Python overlay is applied. That
|
||||
# means all other user configured Python overlays are ignored. This needs a
|
||||
# fix in nixpkgs: https://github.com/NixOS/nixpkgs/issues/44426
|
||||
# mkAfter is used to make sure the Python overlay (which uses overrideScope)
|
||||
# is applied after any user overlays that use packageOverrides, so that
|
||||
# composition works.
|
||||
nixpkgs.overlays = mkAfter (singleton (import ../../overlay.nix));
|
||||
|
||||
services.ros = {
|
||||
|
|
|
@ -69,9 +69,9 @@ in {
|
|||
# Implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
# FIXME: mkAfter is used to make sure the Python overlay is applied. That
|
||||
# means all other user configured Python overlays are ignored. This needs a
|
||||
# fix in nixpkgs: https://github.com/NixOS/nixpkgs/issues/44426
|
||||
# mkAfter is used to make sure the Python overlay (which uses overrideScope)
|
||||
# is applied after any user overlays that use packageOverrides, so that
|
||||
# composition works.
|
||||
nixpkgs.overlays = mkAfter (singleton (import ../../overlay.nix));
|
||||
|
||||
services.ros2.pkgs = mkDefault (pkgs.rosPackages."${cfg.distro}".overrideScope cfg.overlays);
|
||||
|
|
|
@ -1,60 +1,56 @@
|
|||
self: super: with self.lib; let
|
||||
|
||||
pythonOverridesFor = superPython: fix (python: superPython.override ({
|
||||
packageOverrides ? _: _: {}, ...
|
||||
}: {
|
||||
self = python;
|
||||
packageOverrides = composeExtensions packageOverrides (pySelf: pySuper: {
|
||||
bson = pySelf.callPackage ./bson { };
|
||||
pythonOverridesFor = prevPython: prevPython // {
|
||||
pkgs = prevPython.pkgs.overrideScope (pyFinal: pyPrev: {
|
||||
bson = pyFinal.callPackage ./bson { };
|
||||
|
||||
catkin-pkg = pySelf.callPackage ./catkin-pkg { };
|
||||
catkin-pkg = pyFinal.callPackage ./catkin-pkg { };
|
||||
|
||||
catkin-tools = pySelf.callPackage ./catkin-tools { };
|
||||
catkin-tools = pyFinal.callPackage ./catkin-tools { };
|
||||
|
||||
colcon-cargo = pySelf.callPackage ./colcon/cargo.nix { };
|
||||
colcon-cargo = pyFinal.callPackage ./colcon/cargo.nix { };
|
||||
|
||||
colcon-cmake = pySelf.callPackage ./colcon/cmake.nix { };
|
||||
colcon-cmake = pyFinal.callPackage ./colcon/cmake.nix { };
|
||||
|
||||
colcon-core = pySelf.callPackage ./colcon/core.nix { };
|
||||
colcon-core = pyFinal.callPackage ./colcon/core.nix { };
|
||||
|
||||
colcon-library-path = pySelf.callPackage ./colcon/library-path.nix { };
|
||||
colcon-library-path = pyFinal.callPackage ./colcon/library-path.nix { };
|
||||
|
||||
colcon-metadata = pySelf.callPackage ./colcon/metadata.nix { };
|
||||
colcon-metadata = pyFinal.callPackage ./colcon/metadata.nix { };
|
||||
|
||||
colcon-notification = pySelf.callPackage ./colcon/notification.nix { };
|
||||
colcon-notification = pyFinal.callPackage ./colcon/notification.nix { };
|
||||
|
||||
colcon-output = pySelf.callPackage ./colcon/output.nix { };
|
||||
colcon-output = pyFinal.callPackage ./colcon/output.nix { };
|
||||
|
||||
colcon-package-information = pySelf.callPackage ./colcon/package-information.nix { };
|
||||
colcon-package-information = pyFinal.callPackage ./colcon/package-information.nix { };
|
||||
|
||||
colcon-package-selection = pySelf.callPackage ./colcon/package-selection.nix { };
|
||||
colcon-package-selection = pyFinal.callPackage ./colcon/package-selection.nix { };
|
||||
|
||||
colcon-parallel-executor = pySelf.callPackage ./colcon/parallel-executor.nix { };
|
||||
colcon-parallel-executor = pyFinal.callPackage ./colcon/parallel-executor.nix { };
|
||||
|
||||
colcon-pkg-config = pySelf.callPackage ./colcon/pkg-config.nix { };
|
||||
colcon-pkg-config = pyFinal.callPackage ./colcon/pkg-config.nix { };
|
||||
|
||||
colcon-python-setup-py = pySelf.callPackage ./colcon/python-setup-py.nix { };
|
||||
colcon-python-setup-py = pyFinal.callPackage ./colcon/python-setup-py.nix { };
|
||||
|
||||
colcon-recursive-crawl = pySelf.callPackage ./colcon/recursive-crawl.nix { };
|
||||
colcon-recursive-crawl = pyFinal.callPackage ./colcon/recursive-crawl.nix { };
|
||||
|
||||
colcon-ros = pySelf.callPackage ./colcon/ros.nix { };
|
||||
colcon-ros = pyFinal.callPackage ./colcon/ros.nix { };
|
||||
|
||||
colcon-ros-cargo = pySelf.callPackage ./colcon/ros-cargo.nix { };
|
||||
colcon-ros-cargo = pyFinal.callPackage ./colcon/ros-cargo.nix { };
|
||||
|
||||
colcon-test-result = pySelf.callPackage ./colcon/test-result.nix { };
|
||||
colcon-test-result = pyFinal.callPackage ./colcon/test-result.nix { };
|
||||
|
||||
osrf-pycommon = pySelf.callPackage ./osrf-pycommon {};
|
||||
osrf-pycommon = pyFinal.callPackage ./osrf-pycommon {};
|
||||
|
||||
rosdep = pySelf.callPackage ./rosdep { };
|
||||
rosdep = pyFinal.callPackage ./rosdep { };
|
||||
|
||||
rosdistro = pySelf.callPackage ./rosdistro { };
|
||||
rosdistro = pyFinal.callPackage ./rosdistro { };
|
||||
|
||||
rosinstall-generator = pySelf.callPackage ./rosinstall-generator { };
|
||||
rosinstall-generator = pyFinal.callPackage ./rosinstall-generator { };
|
||||
|
||||
rospkg = pySelf.callPackage ./rospkg { };
|
||||
rospkg = pyFinal.callPackage ./rospkg { };
|
||||
});
|
||||
}));
|
||||
|
||||
};
|
||||
in {
|
||||
cargo-ament-build = self.callPackage ./cargo-ament-build { };
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue