From 7642b5064eeddcf21562733bfde7002f1eedb0aa Mon Sep 17 00:00:00 2001 From: Jiajie Chen Date: Wed, 17 Aug 2022 00:46:05 +0800 Subject: [PATCH] libkrun: add support for darwin --- .../development/libraries/libkrun/default.nix | 22 ++++++++++++++++--- pkgs/top-level/all-packages.nix | 4 +++- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/libkrun/default.nix b/pkgs/development/libraries/libkrun/default.nix index 21be0c8437ae..779f6790c558 100644 --- a/pkgs/development/libraries/libkrun/default.nix +++ b/pkgs/development/libraries/libkrun/default.nix @@ -1,11 +1,15 @@ { lib , stdenv , fetchFromGitHub +, fetchurl , rustPlatform , pkg-config +, dtc , glibc , openssl +, libiconv , libkrunfw +, Hypervisor , sevVariant ? false }: @@ -13,11 +17,14 @@ stdenv.mkDerivation rec { pname = "libkrun"; version = "1.3.0"; - src = fetchFromGitHub { + src = if stdenv.isLinux then fetchFromGitHub { owner = "containers"; repo = pname; rev = "v${version}"; hash = "sha256-qVyEqiqaQ8wfZhL5u+Bsaa1yXlgHUitSj5bo7FJ5Y8c="; + } else fetchurl { + url = "https://github.com/containers/libkrun/releases/download/v${version}/v${version}-with_macos_prebuilts.tar.gz"; + hash = "sha256-RBqeGUhB6Sdt+JujyQBW/76mZwnT0LNs9AMYr8+OCVU="; }; cargoDeps = rustPlatform.fetchCargoTarball { @@ -25,21 +32,30 @@ stdenv.mkDerivation rec { hash = "sha256-jxSzhj1iU8qY+sZEVCYTaUqpaA4egjJi9qxrapASQF0="; }; - nativeBuildInputs = with rustPlatform;[ + nativeBuildInputs = with rustPlatform; [ cargoSetupHook rust.cargo rust.rustc ] ++ lib.optional sevVariant pkg-config; buildInputs = [ + (libkrunfw.override { inherit sevVariant; }) + ] ++ lib.optionals stdenv.isLinux [ glibc glibc.static - (libkrunfw.override { inherit sevVariant; }) + ] ++ lib.optionals stdenv.isDarwin [ + libiconv + Hypervisor + dtc ] ++ lib.optional sevVariant openssl; makeFlags = [ "PREFIX=${placeholder "out"}" ] ++ lib.optional sevVariant "SEV=1"; + postFixup = lib.optionalString stdenv.isDarwin '' + install_name_tool -id $out/lib/libkrun.dylib $out/lib/libkrun.${version}.dylib + ''; + meta = with lib; { description = "A dynamic library providing Virtualization-based process isolation capabilities"; homepage = "https://github.com/containers/libkrun"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bc770ddbc03d..8f375b5f1454 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -23933,7 +23933,9 @@ with pkgs; libcgroup = callPackage ../os-specific/linux/libcgroup { }; - libkrun = callPackage ../development/libraries/libkrun { }; + libkrun = callPackage ../development/libraries/libkrun { + inherit (darwin.apple_sdk.frameworks) Hypervisor; + }; libkrun-sev = callPackage ../development/libraries/libkrun { sevVariant = true; };