mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-21 22:43:01 +00:00
hyperv-daemons: fix fcopy build and nixfmt-rfc-style
After82b0945ce2
andec314f61e4
, the hv_fcopy dameon was renamed to hv_uio_fcopy, breaking hyperv-daemons. I added a check to change the binary name based on the kernel version and to only run the service if the FCOPY_UIO path exists. The path doesn't exist on my machine (not sure why), so I'm not actually able to test the daemon but I think this is better than hyperv being broken for now.
This commit is contained in:
parent
d049530865
commit
64e18ca9ff
@ -1,9 +1,20 @@
|
||||
{ stdenv, lib, python2, python3, kernel, makeWrapper, writeText
|
||||
, gawk, iproute2 }:
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
python2,
|
||||
python3,
|
||||
kernel,
|
||||
makeWrapper,
|
||||
writeText,
|
||||
gawk,
|
||||
iproute2,
|
||||
}:
|
||||
|
||||
let
|
||||
libexec = "libexec/hypervkvpd";
|
||||
|
||||
fcopy_name = (if lib.versionOlder kernel.version "6.10" then "fcopy" else "fcopy_uio");
|
||||
|
||||
daemons = stdenv.mkDerivation rec {
|
||||
pname = "hyperv-daemons-bin";
|
||||
inherit (kernel) src version;
|
||||
@ -26,7 +37,7 @@ let
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
for f in fcopy kvp vss ; do
|
||||
for f in ${fcopy_name} kvp vss ; do
|
||||
install -Dm755 hv_''${f}_daemon -t $out/bin
|
||||
done
|
||||
|
||||
@ -39,11 +50,17 @@ let
|
||||
|
||||
postFixup = ''
|
||||
wrapProgram $out/bin/hv_kvp_daemon \
|
||||
--prefix PATH : $out/bin:${lib.makeBinPath [ gawk iproute2 ]}
|
||||
--prefix PATH : $out/bin:${
|
||||
lib.makeBinPath [
|
||||
gawk
|
||||
iproute2
|
||||
]
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
service = bin: title: check:
|
||||
service =
|
||||
bin: title: check:
|
||||
writeText "hv-${bin}.service" ''
|
||||
[Unit]
|
||||
Description=Hyper-V ${title} daemon
|
||||
@ -61,21 +78,30 @@ let
|
||||
WantedBy=hyperv-daemons.target
|
||||
'';
|
||||
|
||||
in stdenv.mkDerivation {
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "hyperv-daemons";
|
||||
inherit (kernel) version;
|
||||
|
||||
# we just stick the bins into out as well as it requires "out"
|
||||
outputs = [ "bin" "lib" "out" ];
|
||||
outputs = [
|
||||
"bin"
|
||||
"lib"
|
||||
"out"
|
||||
];
|
||||
|
||||
buildInputs = [ daemons ];
|
||||
|
||||
buildCommand = ''
|
||||
system=$lib/lib/systemd/system
|
||||
|
||||
install -Dm444 ${service "fcopy" "file copy (FCOPY)" "hv_fcopy" } $system/hv-fcopy.service
|
||||
install -Dm444 ${service "kvp" "key-value pair (KVP)" "hv_kvp" } $system/hv-kvp.service
|
||||
install -Dm444 ${service "vss" "volume shadow copy (VSS)" "hv_vss" } $system/hv-vss.service
|
||||
install -Dm444 ${
|
||||
service "${
|
||||
fcopy_name
|
||||
}" "file copy (FCOPY)" "/sys/bus/vmbus/devices/eb765408-105f-49b6-b4aa-c123b64d17d4/uio"
|
||||
} $system/hv-fcopy.service
|
||||
install -Dm444 ${service "kvp" "key-value pair (KVP)" "hv_kvp"} $system/hv-kvp.service
|
||||
install -Dm444 ${service "vss" "volume shadow copy (VSS)" "hv_vss"} $system/hv-vss.service
|
||||
|
||||
cat > $system/hyperv-daemons.target <<EOF
|
||||
[Unit]
|
||||
|
Loading…
Reference in New Issue
Block a user