ocamlPackages.mirage-xen: init at 6.0.0
Unfortunately this requires a bit of trickery with pkg-config to get to work. The root issue is that the mirage-xen assumes that we use the default libdir of dune ($out/lib) whereas we install to an OCaml version-specific site-lib directory. Thus the manually created pkg-config file makes wrong assumptions (which warrants a patch) and the .pc file is installed to the wrong location (which is fixed with a mv invocation).
This commit is contained in:
parent
b5f7ed7cc8
commit
980a2bed3b
78
pkgs/development/ocaml-modules/mirage-xen/default.nix
Normal file
78
pkgs/development/ocaml-modules/mirage-xen/default.nix
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
{ lib
|
||||||
|
, buildDunePackage
|
||||||
|
, fetchurl
|
||||||
|
, pkg-config
|
||||||
|
, cstruct
|
||||||
|
, lwt
|
||||||
|
, shared-memory-ring-lwt
|
||||||
|
, xenstore
|
||||||
|
, lwt-dllist
|
||||||
|
, mirage-profile
|
||||||
|
, mirage-runtime
|
||||||
|
, logs
|
||||||
|
, fmt
|
||||||
|
, ocaml-freestanding
|
||||||
|
, bheap
|
||||||
|
, duration
|
||||||
|
, io-page
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildDunePackage rec {
|
||||||
|
pname = "mirage-xen";
|
||||||
|
version = "6.0.0";
|
||||||
|
|
||||||
|
useDune2 = true;
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://github.com/mirage/mirage-xen/releases/download/v${version}/mirage-xen-v${version}.tbz";
|
||||||
|
sha256 = "f991e972059b27993c287ad010d9281fee061efaa1dd475d0955179f93710fbd";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
./makefile-no-opam.patch
|
||||||
|
./pkg-config.patch
|
||||||
|
];
|
||||||
|
|
||||||
|
# can't handle OCAMLFIND_DESTDIR with substituteAll
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace lib/bindings/mirage-xen.pc \
|
||||||
|
--replace "@out@" "$out" \
|
||||||
|
--replace "@OCAMLFIND_DESTDIR@" "$OCAMLFIND_DESTDIR"
|
||||||
|
'';
|
||||||
|
|
||||||
|
minimumOCamlVersion = "4.08";
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkg-config
|
||||||
|
];
|
||||||
|
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
cstruct
|
||||||
|
lwt
|
||||||
|
shared-memory-ring-lwt
|
||||||
|
xenstore
|
||||||
|
lwt-dllist
|
||||||
|
mirage-profile
|
||||||
|
mirage-runtime
|
||||||
|
io-page
|
||||||
|
logs
|
||||||
|
fmt
|
||||||
|
bheap
|
||||||
|
duration
|
||||||
|
(ocaml-freestanding.override { target = "xen"; })
|
||||||
|
];
|
||||||
|
|
||||||
|
# Move pkg-config files into their well-known location.
|
||||||
|
# This saves us an extra setup hook and causes no issues
|
||||||
|
# since we patch all relative paths out of the .pc file.
|
||||||
|
postInstall = ''
|
||||||
|
mv $OCAMLFIND_DESTDIR/pkgconfig $out/lib/pkgconfig
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Xen core platform libraries for MirageOS";
|
||||||
|
license = licenses.isc;
|
||||||
|
maintainers = [ maintainers.sternenseemann ];
|
||||||
|
homepage = "https://github.com/mirage/mirage-xen";
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
diff --git a/lib/bindings/Makefile b/lib/bindings/Makefile
|
||||||
|
index 4e413c0..67c7bdc 100644
|
||||||
|
--- a/lib/bindings/Makefile
|
||||||
|
+++ b/lib/bindings/Makefile
|
||||||
|
@@ -1,4 +1,6 @@
|
||||||
|
-PKG_CONFIG_PATH := $(shell opam config var prefix)/lib/pkgconfig
|
||||||
|
+ifneq (, $(shell command -v opam))
|
||||||
|
+ PKG_CONFIG_PATH ?= $(shell opam config var prefix)/lib/pkgconfig
|
||||||
|
+endif
|
||||||
|
|
||||||
|
CC ?= cc
|
||||||
|
FREESTANDING_CFLAGS := $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config --cflags ocaml-freestanding)
|
13
pkgs/development/ocaml-modules/mirage-xen/pkg-config.patch
Normal file
13
pkgs/development/ocaml-modules/mirage-xen/pkg-config.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/lib/bindings/mirage-xen.pc b/lib/bindings/mirage-xen.pc
|
||||||
|
index a03a217..8499aa4 100644
|
||||||
|
--- a/lib/bindings/mirage-xen.pc
|
||||||
|
+++ b/lib/bindings/mirage-xen.pc
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
-prefix=${pcfiledir}/../..
|
||||||
|
+prefix=@out@
|
||||||
|
exec_prefix=${prefix}
|
||||||
|
-libdir=${exec_prefix}/lib
|
||||||
|
+libdir=@OCAMLFIND_DESTDIR@
|
||||||
|
|
||||||
|
Name: mirage-xen
|
||||||
|
Version: 6.0.0
|
|
@ -739,6 +739,8 @@ let
|
||||||
|
|
||||||
mirage-unix = callPackage ../development/ocaml-modules/mirage-unix { };
|
mirage-unix = callPackage ../development/ocaml-modules/mirage-unix { };
|
||||||
|
|
||||||
|
mirage-xen = callPackage ../development/ocaml-modules/mirage-xen { };
|
||||||
|
|
||||||
mirage-vnetif = callPackage ../development/ocaml-modules/mirage-vnetif { };
|
mirage-vnetif = callPackage ../development/ocaml-modules/mirage-vnetif { };
|
||||||
|
|
||||||
mlgmp = callPackage ../development/ocaml-modules/mlgmp { };
|
mlgmp = callPackage ../development/ocaml-modules/mlgmp { };
|
||||||
|
|
Loading…
Reference in a new issue