python312Packages.llama-index: 0.12.9 -> 0.12.9.post1 (#371957)
[NixPkgs.git] / pkgs / by-name / li / libvmi / package.nix
blob33ca483616d62f24995c423f7a0c6ba713c1f25d
2   lib,
3   stdenv,
4   fetchFromGitHub,
5   unstableGitUpdater,
6   autoreconfHook,
7   autoconf-archive,
8   bison,
9   flex,
10   glib,
11   pkg-config,
12   json_c,
13   libvirt,
15   withVMIFS ? true,
16   fuse,
18   legacyKVM ? false,
19   libkvmi,
21   xenSupport ? true,
22   xen,
25 let
26   pname = "libvmi";
27   version = "0.14.0-unstable-2024-11-06";
28   libVersion = "0.0.15";
30   src = fetchFromGitHub {
31     owner = "libvmi";
32     repo = "libvmi";
33     rev = "8f9b010b0261dbc11e2dda5e718b0e9507109232";
34     hash = "sha256-CqRv5HgGcCHu1N283NzlkRfFqJlkLUJAz3aMiSXR+0s=";
35   };
38 stdenv.mkDerivation {
39   inherit pname version src;
41   outputs = [
42     "out"
43     "lib"
44     "dev"
45   ];
47   nativeBuildInputs = [
48     autoreconfHook
49     autoconf-archive
50     bison
51     flex
52     pkg-config
53   ];
55   buildInputs =
56     [
57       glib
58       json_c
59       libvirt
60     ]
61     ++ lib.optionals xenSupport [ xen ]
62     ++ lib.optionals (!legacyKVM) [ libkvmi ]
63     ++ lib.optionals withVMIFS [ fuse ];
65   configureFlags =
66     lib.optionals (!xenSupport) [ "--disable-xen" ]
67     ++ lib.optionals legacyKVM [ "--enable-kvm-legacy" ]
68     ++ lib.optionals withVMIFS [ "--enable-vmifs" ];
70   # libvmi uses dlopen() for the xen libraries, however autoPatchelfHook doesn't work here
71   postFixup = lib.optionalString xenSupport ''
72     libvmi="$lib/lib/libvmi.so.${libVersion}"
73     oldrpath=$(patchelf --print-rpath "$libvmi")
74     patchelf --set-rpath "$oldrpath:${lib.makeLibraryPath [ xen ]}" "$libvmi"
75   '';
77   passthru = {
78     updateScript = unstableGitUpdater { tagPrefix = "v"; };
79     inherit libVersion;
80   };
82   meta = {
83     description = "C library for virtual machine introspection";
84     longDescription = ''
85       LibVMI is a C library with Python bindings that makes it easy to monitor the low-level
86       details of a running virtual machine by viewing its memory, trapping on hardware events,
87       and accessing the vCPU registers.
88     '';
89     homepage = "https://libvmi.com/";
90     license = with lib.licenses; [
91       gpl3Only
92       lgpl3Only
93     ];
94     platforms = [ "x86_64-linux" ];
95     maintainers = with lib.maintainers; [ sigmasquadron ];
96   };