nix-ros-overlay/distros/ros2-overlay.nix
2024-07-24 19:00:34 -04:00

184 lines
6 KiB
Nix

self:
rosSelf: rosSuper: with rosSelf.lib; {
ament-cmake-core = rosSuper.ament-cmake-core.overrideAttrs ({
propagatedBuildInputs ? [],
nativeBuildInputs ? [], ...
}: let
setupHook = rosSelf.callPackage ./ament-cmake-core-setup-hook { };
in {
propagatedBuildInputs = [ setupHook ] ++ propagatedBuildInputs;
nativeBuildInputs = [ setupHook ] ++ nativeBuildInputs;
outputs = [ "out" "dev" ];
});
cyclonedds = rosSuper.cyclonedds.overrideAttrs ({
cmakeFlags ? [], ...
}: {
cmakeFlags = cmakeFlags ++ [
# Tries to download something with maven
"-DBUILD_IDLC=OFF"
# src/tools/ddsperf/CMakeFiles/ddsperf_types_generate.dir/build.make:74: *** target pattern contains no '%'. Stop.
"-DBUILD_DDSPERF=OFF"
];
});
fastrtps = rosSuper.fastrtps.overrideAttrs ({
cmakeFlags ? [], ...
}: {
cmakeFlags = cmakeFlags ++ optionals (!self.stdenv.buildPlatform.canExecute self.stdenv.hostPlatform) (
[ "-DSM_RUN_RESULT=0" ] ++
optional (self.stdenv.isLinux || self.stdenv.isDarwin)
"-DSM_RUN_RESULT__TRYRUN_OUTPUT=PTHREAD_RWLOCK_PREFER_READER_NP"
);
});
fmilibrary-vendor = patchExternalProjectGit rosSuper.fmilibrary-vendor {
url = "https://github.com/modelon-community/fmi-library.git";
# Uses ${fmilibrary_version}, so can't match
originalRev = "";
rev = "2.2.3";
fetchgitArgs.hash = "sha256-i8EtjPMg39S/3RyoUaXm5A8Nu/NbgAwjxRCdyh2elyU=";
};
gmock-vendor = rosSuper.gmock-vendor.overrideAttrs ({
nativeBuildInputs ? [], ...
}: {
buildInputs = [];
nativeBuildInputs = nativeBuildInputs ++ [ self.buildPackages.cmake ];
});
gtest-vendor = rosSuper.gtest-vendor.overrideAttrs ({
nativeBuildInputs ? [], ...
}: {
buildInputs = [];
nativeBuildInputs = nativeBuildInputs ++ [ self.buildPackages.cmake ];
});
iceoryx-posh = rosSuper.iceoryx-posh.overrideAttrs ({
patches ? [],
buildInputs ? [],
cmakeFlags ? [], ...
}: {
patches = patches ++ [
(self.fetchpatch {
url = "https://github.com/eclipse-iceoryx/iceoryx/commit/d4519632964794553791ef3f951ed47ca52ebbb6.patch";
hash = "sha256-f4kITUql8uFSptFmu7LZGChlfDG63b0gmsRyHp1NsWw=";
stripLen = 1;
})
];
buildInputs = buildInputs ++ [ self.cpptoml ];
cmakeFlags = cmakeFlags ++ [ "-DDOWNLOAD_TOML_LIB=OFF" ];
});
popf = rosSuper.popf.overrideAttrs ({
nativeBuildInputs ? [], postPatch ? "", ...
}: {
nativeBuildInputs = nativeBuildInputs ++ [ self.perl ];
postPatch = postPatch + ''
patchShebangs --build src/VALfiles/parsing/fixyywrap
'';
});
python-cmake-module = rosSuper.python-cmake-module.overrideAttrs ({ ... }: let
python = rosSelf.python;
libExt = self.stdenv.hostPlatform.extensions.sharedLibrary;
in {
pythonExecutable = python.pythonOnBuildForHost.interpreter;
pythonLibrary = "${python}/lib/lib${python.libPrefix}${libExt}";
pythonIncludeDir = "${python}/include/${python.libPrefix}";
setupHook = ./python-cmake-module-setup-hook.sh;
outputs = [ "out" "dev" ];
});
rcutils = rosSuper.rcutils.overrideAttrs ({
patches ? [], ...
}: {
patches = patches ++ [
# Fix linking to libatomic
# https://github.com/ros2/rcutils/pull/384
(self.fetchpatch {
url = "https://github.com/ros2/rcutils/commit/05e7336b2160739915be0e2c4a81710806fd2f9c.patch";
hash = "sha256-EiO1AJnhvOk81TzFMP4E8NhB+9ymef2oA7l26FZFb1M=";
})
];
});
rig-reconfigure = patchExternalProjectGit rosSuper.rig-reconfigure {
url = "https://github.com/ocornut/imgui.git";
rev = "v1.89.8-docking";
fetchgitArgs.hash = "sha256-eY8lRsonPfDRTMCPhInT9rQ6lSaJPsXpkh428OKpTnA=";
};
rmw-implementation = rosSuper.rmw-implementation.overrideAttrs ({
propagatedBuildInputs ? [], buildInputs ? [], ...
}: {
# The default implementation must be available to all dependent packages
# at build time.
propagatedBuildInputs = with rosSelf; [
rmw-fastrtps-cpp
] ++ propagatedBuildInputs;
# rmw-cyclonedds-cpp fails to build on MacOS.
buildInputs = if self.stdenv.isDarwin then
builtins.filter (p: p.pname != "ros-${p.rosDistro}-rmw-cyclonedds-cpp") buildInputs
else
buildInputs;
});
rosidl-generator-py = rosSuper.rosidl-generator-py.overrideAttrs ({ ... }: {
setupHook = ./rosidl-generator-py-setup-hook.sh;
});
rosidl-default-generators = rosSuper.rosidl-default-generators.overrideAttrs ({
propagatedBuildInputs ? [], ...
}: {
# Add Rust support to all packages
# FIXME: seems to break nav2-msgs
# propagatedBuildInputs = propagatedBuildInputs ++ [ rosSelf.rosidl-generator-rs ];
});
rosidl-generator-rs = rosSelf.callPackage ../pkgs/rosidl-generator-rs { };
rqt-robot-monitor = rosSuper.rqt-robot-monitor.overrideAttrs ({
postFixup ? "", ...
}: {
postFixup = postFixup + ''
wrapQtApp "$out/lib/rqt_robot_monitor/rqt_robot_monitor"
'';
});
rviz-ogre-vendor = rosSuper.rviz-ogre-vendor.overrideAttrs ({ ... }: {
# Prevent replacing $out/opt/.. with $out/var/empty/..
dontFixCmake = true;
});
rviz2 = rosSuper.rviz2.overrideAttrs ({
nativeBuildInputs ? [], qtWrapperArgs ? [], postFixup ? "", meta ? {}, ...
}: {
dontWrapQtApps = false;
nativeBuildInputs = nativeBuildInputs ++ [ self.qt5.wrapQtAppsHook ];
qtWrapperArgs = qtWrapperArgs ++ [
# Use X11 by default in RViz2.
# https://github.com/ros-visualization/rviz/issues/1442
"--set-default QT_QPA_PLATFORM xcb"
];
postFixup = postFixup + ''
wrapQtApp "$out/lib/rviz2/rviz2"
'';
meta = meta // {
mainProgram = "rviz2";
};
});
# The build gets stuck in an infinite loop with absolute CMAKE_INSTALL_LIBDIR:
# https://github.com/lagadic/visp/blob/9f1997ad17688c2d104cf2b29b57382c5d0af960/cmake/VISPGenerateConfig.cmake#L46
# Also has the standard bad assumptions that CMAKE_INSTALL_*DIR is relative.
visp = rosSuper.visp.overrideAttrs ({
meta ? {}, ...
}: {
meta = meta // {
broken = true;
};
});
}