xen: minor refactoring

Changes some (long overdue) TODO comments and uses `lib.getExe` instead
of hardcoding /bin paths.

Signed-off-by: Fernando Rodrigues <alpha@sigmasquadron.net>
This commit is contained in:
Fernando Rodrigues
2025-07-05 00:57:55 -03:00
parent cb70f67e5b
commit ed5f417ca1
+14 -12
View File
@@ -23,7 +23,7 @@
perl,
pkg-config,
python3Packages,
systemdMinimal,
systemd,
xz,
yajl,
zlib,
@@ -62,6 +62,7 @@
let
inherit (lib)
enableFeature
getExe
getExe'
licenses
makeSearchPathOutput
@@ -84,7 +85,6 @@ let
# Mark versions older than minSupportedVersion as EOL.
minSupportedVersion = "4.17";
#TODO: fix paths instead.
scriptEnvPath = makeSearchPathOutput "out" "bin" [
bridge-utils
coreutils
@@ -145,6 +145,8 @@ stdenv.mkDerivation (finalAttrs: {
url = "https://xenbits.xenproject.org/xsa/xsa469/xsa469-4.20-07.patch";
hash = "sha256-+BsCJa01R2lrbu7tEluGrYSAqu2jJcrpFNUoLMY466c=";
})
# XSA #470
(fetchpatch {
url = "https://xenbits.xenproject.org/xsa/xsa470.patch";
hash = "sha256-zhMZ6pCZtt0ocgsMFVqthMaof46lMMTaYmlepMXVJqM=";
@@ -203,7 +205,7 @@ stdenv.mkDerivation (finalAttrs: {
zstd
]
++ optionals withFlask [ checkpolicy ]
++ optionals (versionOlder finalAttrs.version "4.19") [ systemdMinimal ];
++ optionals (versionOlder finalAttrs.version "4.19") [ systemd ];
configureFlags = [
"--enable-systemd"
@@ -225,8 +227,8 @@ stdenv.mkDerivation (finalAttrs: {
"XEN_WHOAMI=${finalAttrs.pname}"
"XEN_DOMAIN=${finalAttrs.vendor}"
"GIT=${coreutils}/bin/false"
"WGET=${coreutils}/bin/false"
"GIT=${getExe' coreutils "false"}"
"WGET=${getExe' coreutils "false"}"
"EFI_VENDOR=${finalAttrs.vendor}"
"INSTALL_EFI_STRIP=1"
"LD=${getExe' binutils-unwrapped-all-targets "ld"}"
@@ -255,7 +257,7 @@ stdenv.mkDerivation (finalAttrs: {
dontUseCmakeConfigure = true;
# Remove in-tree QEMU sources, we don't need them in any circumstance.
prePatch = "rm --recursive --force tools/qemu-xen tools/qemu-xen-traditional";
prePatch = "rm -rf tools/qemu-xen tools/qemu-xen-traditional";
postPatch =
# The following patch forces Xen to install xen.efi on $out/boot
@@ -273,7 +275,7 @@ stdenv.mkDerivation (finalAttrs: {
# launch_xenstore.sh helper script.
+ ''
substituteInPlace tools/hotplug/Linux/launch-xenstore.in \
--replace-fail "/bin/mkdir" "${coreutils}/bin/mkdir"
--replace-fail "/bin/mkdir" "${getExe' coreutils "mkdir"}"
''
# The following expression fixes the paths called by Xen's systemd
@@ -281,16 +283,16 @@ stdenv.mkDerivation (finalAttrs: {
+ ''
substituteInPlace \
tools/hotplug/Linux/systemd/{xen-init-dom0,xen-qemu-dom0-disk-backend,xenconsoled,xendomains,xenstored}.service.in \
--replace-fail /bin/grep ${gnugrep}/bin/grep
--replace-fail /bin/grep ${getExe gnugrep}
substituteInPlace \
tools/hotplug/Linux/systemd/{xen-qemu-dom0-disk-backend,xenconsoled}.service.in \
--replace-fail "/bin/mkdir" "${coreutils}/bin/mkdir"
--replace-fail "/bin/mkdir" "${getExe' coreutils "mkdir"}"
'';
installPhase = ''
runHook preInstall
mkdir --parents $out $out/share $boot
mkdir -p $out $out/share $boot
cp -prvd dist/install/nix/store/*/* $out/
cp -prvd dist/install/etc $out
cp -prvd dist/install/boot $boot
@@ -310,11 +312,11 @@ stdenv.mkDerivation (finalAttrs: {
''
# Fix shebangs in Xen's various scripts.
#TODO: Remove any and all usage of `sed` and replace these complicated magic runes with readable code.
# TODO: Patch the individual calls instead.
+ ''
shopt -s extglob
for i in $out/etc/xen/scripts/!(*.sh); do
sed --in-place "2s@^@export PATH=$out/bin:${scriptEnvPath}\n@" $i
sed -i "2s@^@export PATH=$out/bin:${scriptEnvPath}\n@" $i
done
'';