1
0
Fork 0
mirror of https://github.com/lopsided98/nix-ros-overlay.git synced 2025-07-13 13:40:32 +03:00
nix-ros-overlay/lib/default.nix
2021-11-24 20:17:55 -05:00

49 lines
1.2 KiB
Nix

{ lib ? rosSelf.lib or self.lib
, self ? null
, rosSelf ? null }:
with lib;
{
mergeOverlays = foldr composeExtensions (_: _: {});
mkOverlay = overlays: let
s = mergeOverlays overlays s {};
in s;
patchVendorUrl = pkg: {
url, sha256,
originalUrl ? url,
file ? "CMakeLists.txt"
}: pkg.overrideAttrs ({
postPatch ? "", ...
}: {
postPatch = ''
substituteInPlace '${file}' \
--replace '${originalUrl}' '${self.fetchurl { inherit url sha256; }}'
'' + postPatch;
});
patchVendorGit = pkg: {
url,
file ? "CMakeLists.txt",
fetchgitArgs ? {}
}: pkg.overrideAttrs ({
postPatch ? "", ...
}: {
postPatch = ''
sed -i '\|GIT_REPOSITORY\s.*${escapeShellArg url}|c\
URL "${self.fetchgit ({ inherit url; } // fetchgitArgs)}"' \
'${file}'
'' + postPatch;
});
# Many ROS packages claim to have a dependency on Boost signals when they
# really don't or they actually depend on signals2. Boost 1.69 removed
# signals causing these packages to fail to build.
patchBoostSignals = pkg: pkg.overrideAttrs ({
postPatch ? "", ...
}: {
postPatch = ''
sed -i '/find_package(Boost [^)]*/s/signals//g' CMakeLists.txt
'' + postPatch;
});
}