nixpkgs/pkgs/by-name/gu/guestfs-tools/package.nix

142 lines
2.8 KiB
Nix

{
lib,
stdenv,
fetchurl,
bash-completion,
bison,
cdrkit,
cpio,
curl,
flex,
getopt,
glib,
gnupg,
hivex,
jansson,
libguestfs-with-appliance,
libosinfo,
libvirt,
libxml2,
makeWrapper,
ncurses,
ocamlPackages,
openssl,
pcre2,
perlPackages,
pkg-config,
qemu,
xz,
gitUpdater,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "guestfs-tools";
version = "1.52.2";
src = fetchurl {
url = "https://download.libguestfs.org/guestfs-tools/${lib.versions.majorMinor finalAttrs.version}-stable/guestfs-tools-${finalAttrs.version}.tar.gz";
hash = "sha256-02khDS2NLG1QOSqswtDoqBX2Mg6sE/OiUoP9JFs4vTU=";
};
nativeBuildInputs =
[
bison
cdrkit
cpio
flex
getopt
makeWrapper
pkg-config
qemu
]
++ (with perlPackages; [
GetoptLong
libintl-perl
ModuleBuild
perl
Po4a
])
++ (with ocamlPackages; [
findlib
ocaml
ounit2
]);
buildInputs = [
bash-completion
glib
hivex
jansson
libguestfs-with-appliance
libosinfo
libvirt
libxml2
ncurses
openssl
pcre2
xz
];
postPatch = ''
# If it uses the executable name, then there's nothing we can do
# when wrapping to stop it looking in
# $out/etc/.virt-builder-wrapped, which won't exist.
substituteInPlace common/mlstdutils/std_utils.ml \
--replace Sys.executable_name '(Array.get Sys.argv 0)'
'';
preConfigure = ''
patchShebangs ocaml-dep.sh.in ocaml-link.sh.in run.in
'';
makeFlags = [
"LIBGUESTFS_PATH=${libguestfs-with-appliance}/lib/guestfs"
];
installFlags = [
"BASH_COMPLETIONS_DIR=${placeholder "out"}/share/bash-completion/completions"
];
enableParallelBuilding = true;
postInstall = ''
wrapProgram $out/bin/virt-builder \
--argv0 virt-builder \
--prefix PATH : ${
lib.makeBinPath [
curl
gnupg
]
}:$out/bin \
--suffix VIRT_BUILDER_DIRS : /etc:$out/etc
wrapProgram $out/bin/virt-win-reg \
--prefix PERL5LIB : ${
with perlPackages;
makeFullPerlPath [
hivex
libintl-perl
libguestfs-with-appliance
]
}
'';
passthru.updateScript = gitUpdater {
url = "https://github.com/libguestfs/guestfs-tools";
rev-prefix = "v";
odd-unstable = true;
};
meta = {
description = "Extra tools for accessing and modifying virtual machine disk images";
license = with lib.licenses; [
gpl2Plus
lgpl21Plus
];
homepage = "https://libguestfs.org/";
changelog = "https://www.libguestfs.org/guestfs-tools-release-notes-${lib.versions.majorMinor finalAttrs.version}.1.html";
maintainers = [ ];
platforms = lib.platforms.linux;
hydraPlatforms = [ ];
};
})