From f28182d44a7f9e42f9691221a2df0747b2df7ec5 Mon Sep 17 00:00:00 2001 From: Fernando Rodrigues Date: Sun, 21 Jul 2024 09:36:24 +0000 Subject: [PATCH 1/4] libkvmi: init at 1.1.0-unstable-2023-12-13 Required dependency for recent versions of libvmi. Signed-off-by: Fernando Rodrigues --- pkgs/by-name/li/libkvmi/package.nix | 52 +++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 pkgs/by-name/li/libkvmi/package.nix diff --git a/pkgs/by-name/li/libkvmi/package.nix b/pkgs/by-name/li/libkvmi/package.nix new file mode 100644 index 000000000000..cc1a4efe93d6 --- /dev/null +++ b/pkgs/by-name/li/libkvmi/package.nix @@ -0,0 +1,52 @@ +{ + lib, + stdenv, + fetchFromGitHub, + unstableGitUpdater, + autoreconfHook, + autoconf-archive, + pkg-config, + glib, + libuuid, +}: + +stdenv.mkDerivation { + pname = "libkvmi"; + version = "1.1.0-unstable-2023-12-13"; + + outputs = [ + "out" + "lib" + "dev" + ]; + + src = fetchFromGitHub { + owner = "bitdefender"; + repo = "libkvmi"; + rev = "bc80de986bda1b891a1106badf87587bb92dbbb3"; + hash = "sha256-evYRIwguaKgJ8pMhhKKkSc/65GDYnG6DoYRMSkLjowI="; + }; + + nativeBuildInputs = [ + autoreconfHook + autoconf-archive + pkg-config + ]; + + buildInputs = [ + glib + libuuid + ]; + + passthru.updateScript = unstableGitUpdater { tagPrefix = "v"; }; + + meta = { + description = "KVM virtual machine introspection library"; + homepage = "https://github.com/bitdefender/libkvmi"; + license = lib.licenses.lgpl3Only; + platforms = [ "x86_64-linux" ]; + maintainers = with lib.maintainers; [ sigmasquadron ]; + mainProgram = "hookguest-libkvmi"; + outputsToInstall = [ "lib" ]; + }; +} From 39fd9bbb58e4026995405a4f022bac8964a5118c Mon Sep 17 00:00:00 2001 From: Fernando Rodrigues Date: Thu, 1 Aug 2024 19:00:42 +0000 Subject: [PATCH 2/4] libvmi: move to pkgs/by-name Signed-off-by: Fernando Rodrigues --- .../libvmi/default.nix => by-name/li/libvmi/package.nix} | 0 pkgs/top-level/all-packages.nix | 2 -- 2 files changed, 2 deletions(-) rename pkgs/{development/libraries/libvmi/default.nix => by-name/li/libvmi/package.nix} (100%) diff --git a/pkgs/development/libraries/libvmi/default.nix b/pkgs/by-name/li/libvmi/package.nix similarity index 100% rename from pkgs/development/libraries/libvmi/default.nix rename to pkgs/by-name/li/libvmi/package.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 80a71f731b9d..1ff207045f95 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -31596,8 +31596,6 @@ with pkgs; inherit (darwin.apple_sdk.frameworks) AppKit Cocoa Foundation; }; - libvmi = callPackage ../development/libraries/libvmi { }; - libutp = callPackage ../applications/networking/p2p/libutp { }; libutp_3_4 = callPackage ../applications/networking/p2p/libutp/3.4.nix { }; From 0fae3ce9627e3281b56f18415a26229cbbce3aa1 Mon Sep 17 00:00:00 2001 From: Fernando Rodrigues Date: Thu, 1 Aug 2024 19:01:12 +0000 Subject: [PATCH 3/4] libvmi: format with nixfmt-rfc-style Signed-off-by: Fernando Rodrigues --- pkgs/by-name/li/libvmi/package.nix | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/pkgs/by-name/li/libvmi/package.nix b/pkgs/by-name/li/libvmi/package.nix index b350592147bc..cd8398f1889a 100644 --- a/pkgs/by-name/li/libvmi/package.nix +++ b/pkgs/by-name/li/libvmi/package.nix @@ -1,4 +1,6 @@ -{ lib, stdenv, +{ + lib, + stdenv, fetchFromGitHub, autoreconfHook, bison, @@ -8,7 +10,8 @@ json_c, xen, libvirt, - xenSupport ? true }: + xenSupport ? true, +}: stdenv.mkDerivation rec { pname = "libvmi"; @@ -22,8 +25,17 @@ stdenv.mkDerivation rec { sha256 = "0wbi2nasb1gbci6cq23g6kq7i10rwi1y7r44rl03icr5prqjpdyv"; }; - buildInputs = [ glib libvirt json_c ] ++ (lib.optional xenSupport xen); - nativeBuildInputs = [ autoreconfHook bison flex pkg-config ]; + buildInputs = [ + glib + libvirt + json_c + ] ++ (lib.optional xenSupport xen); + nativeBuildInputs = [ + autoreconfHook + bison + flex + pkg-config + ]; configureFlags = lib.optional (!xenSupport) "--disable-xen"; @@ -42,7 +54,10 @@ stdenv.mkDerivation rec { details of a running virtual machine by viewing its memory, trapping on hardware events, and accessing the vCPU registers. ''; - license = with licenses; [ gpl3 lgpl3 ]; + license = with licenses; [ + gpl3 + lgpl3 + ]; platforms = platforms.linux; maintainers = [ ]; broken = true; From 6c437afe2cee38903b1f74d4991c99a9b1dde850 Mon Sep 17 00:00:00 2001 From: Fernando Rodrigues Date: Thu, 1 Aug 2024 19:02:19 +0000 Subject: [PATCH 4/4] libvmi: 0.12.0 -> 0.14.0-unstable-2024-08-06 Also splits the package output and adds more configuration options. Signed-off-by: Fernando Rodrigues --- pkgs/by-name/li/libvmi/package.nix | 76 +++++++++++++++++++++--------- 1 file changed, 54 insertions(+), 22 deletions(-) diff --git a/pkgs/by-name/li/libvmi/package.nix b/pkgs/by-name/li/libvmi/package.nix index cd8398f1889a..4dc844bd802f 100644 --- a/pkgs/by-name/li/libvmi/package.nix +++ b/pkgs/by-name/li/libvmi/package.nix @@ -2,64 +2,96 @@ lib, stdenv, fetchFromGitHub, + unstableGitUpdater, autoreconfHook, + autoconf-archive, bison, flex, glib, pkg-config, json_c, - xen, libvirt, + + withVMIFS ? true, + fuse, + + legacyKVM ? false, + libkvmi, + xenSupport ? true, + xen-slim, }: -stdenv.mkDerivation rec { +let pname = "libvmi"; - version = "0.12.0"; - libVersion = "0.0.12"; + version = "0.14.0-unstable-2024-08-06"; + libVersion = "0.0.15"; src = fetchFromGitHub { owner = "libvmi"; repo = "libvmi"; - rev = "v${version}"; - sha256 = "0wbi2nasb1gbci6cq23g6kq7i10rwi1y7r44rl03icr5prqjpdyv"; + rev = "bdb9ffb8f1f70b425454bc41da2be353cc6cbf5c"; + hash = "sha256-5K+9Qq5vGeYYy8kqWIeO25iNJoD/HvtyircH6odr/qA="; }; +in + +stdenv.mkDerivation { + inherit pname version src; + + outputs = [ + "out" + "lib" + "dev" + ]; - buildInputs = [ - glib - libvirt - json_c - ] ++ (lib.optional xenSupport xen); nativeBuildInputs = [ autoreconfHook + autoconf-archive bison flex pkg-config ]; - configureFlags = lib.optional (!xenSupport) "--disable-xen"; + buildInputs = + [ + glib + json_c + libvirt + ] + ++ lib.optionals xenSupport [ xen-slim ] + ++ lib.optionals (!legacyKVM) [ libkvmi ] + ++ lib.optionals withVMIFS [ fuse ]; + + configureFlags = + lib.optionals (!xenSupport) [ "--disable-xen" ] + ++ lib.optionals legacyKVM [ "--enable-kvm-legacy" ] + ++ lib.optionals withVMIFS [ "--enable-vmifs" ]; # libvmi uses dlopen() for the xen libraries, however autoPatchelfHook doesn't work here postFixup = lib.optionalString xenSupport '' - libvmi="$out/lib/libvmi.so.${libVersion}" + libvmi="$lib/lib/libvmi.so.${libVersion}" oldrpath=$(patchelf --print-rpath "$libvmi") - patchelf --set-rpath "$oldrpath:${lib.makeLibraryPath [ xen ]}" "$libvmi" + patchelf --set-rpath "$oldrpath:${lib.makeLibraryPath [ xen-slim ]}" "$libvmi" ''; - meta = with lib; { - homepage = "https://libvmi.com/"; + passthru = { + updateScript = unstableGitUpdater { tagPrefix = "v"; }; + inherit libVersion; + }; + + meta = { description = "C library for virtual machine introspection"; longDescription = '' LibVMI is a C library with Python bindings that makes it easy to monitor the low-level details of a running virtual machine by viewing its memory, trapping on hardware events, and accessing the vCPU registers. ''; - license = with licenses; [ - gpl3 - lgpl3 + homepage = "https://libvmi.com/"; + license = with lib.licenses; [ + gpl3Only + lgpl3Only ]; - platforms = platforms.linux; - maintainers = [ ]; - broken = true; + platforms = [ "x86_64-linux" ]; + maintainers = with lib.maintainers; [ sigmasquadron ]; }; }