Merge pull request #118066 from sternenseemann/mirage-xen
ocamlPackages: init a bunch of libraries for the MirageOS xen target
This commit is contained in:
commit
a86418ac62
@ -0,0 +1,34 @@
|
||||
{ lib
|
||||
, buildDunePackage
|
||||
, fetchurl
|
||||
, mirage-xen
|
||||
, parse-argv
|
||||
, lwt
|
||||
}:
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "mirage-bootvar-xen";
|
||||
version = "0.8.0";
|
||||
|
||||
minimumOCamlVersion = "4.08";
|
||||
|
||||
useDune2 = true;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/mirage/mirage-bootvar-xen/releases/download/v${version}/mirage-bootvar-xen-v${version}.tbz";
|
||||
sha256 = "0nk80giq9ng3svbnm68fjby2f1dnarddm3lk7mw7w59av71q0rcv";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
mirage-xen
|
||||
lwt
|
||||
parse-argv
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Handle boot-time arguments for Xen platform";
|
||||
license = licenses.isc;
|
||||
maintainers = [ maintainers.sternenseemann ];
|
||||
homepage = "https://github.com/mirage/mirage-bootvar-xen";
|
||||
};
|
||||
}
|
39
pkgs/development/ocaml-modules/mirage-net-xen/default.nix
Normal file
39
pkgs/development/ocaml-modules/mirage-net-xen/default.nix
Normal file
@ -0,0 +1,39 @@
|
||||
{ lib
|
||||
, buildDunePackage
|
||||
, netchannel
|
||||
, ppx_sexp_conv
|
||||
, lwt
|
||||
, cstruct
|
||||
, mirage-net
|
||||
, mirage-xen
|
||||
, io-page
|
||||
, lwt-dllist
|
||||
, logs
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "mirage-net-xen";
|
||||
|
||||
inherit (netchannel)
|
||||
src
|
||||
version
|
||||
useDune2
|
||||
minimumOCamlVersion
|
||||
meta
|
||||
;
|
||||
|
||||
nativeBuildInputs = [
|
||||
ppx_sexp_conv
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
lwt
|
||||
cstruct
|
||||
netchannel
|
||||
mirage-net
|
||||
mirage-xen
|
||||
io-page
|
||||
lwt-dllist
|
||||
logs
|
||||
];
|
||||
}
|
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
|
55
pkgs/development/ocaml-modules/netchannel/default.nix
Normal file
55
pkgs/development/ocaml-modules/netchannel/default.nix
Normal file
@ -0,0 +1,55 @@
|
||||
{ lib
|
||||
, buildDunePackage
|
||||
, fetchurl
|
||||
, ppx_sexp_conv
|
||||
, ppx_cstruct
|
||||
, lwt
|
||||
, mirage-net
|
||||
, io-page
|
||||
, mirage-xen
|
||||
, ipaddr
|
||||
, mirage-profile
|
||||
, shared-memory-ring
|
||||
, sexplib
|
||||
, logs
|
||||
, rresult
|
||||
}:
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "netchannel";
|
||||
version = "2.0.0";
|
||||
|
||||
useDune2 = true;
|
||||
|
||||
minimumOCamlVersion = "4.08";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/mirage/mirage-net-xen/releases/download/v${version}/mirage-net-xen-v${version}.tbz";
|
||||
sha256 = "ec3906ef1804ef6a9e36b91f4ae73ce4849e9e0d1d36a80fe66b5f905fab93ad";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
ppx_cstruct
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
ppx_sexp_conv
|
||||
lwt
|
||||
mirage-net
|
||||
io-page
|
||||
mirage-xen
|
||||
ipaddr
|
||||
mirage-profile
|
||||
shared-memory-ring
|
||||
sexplib
|
||||
logs
|
||||
rresult
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Network device for reading and writing Ethernet frames via then Xen netfront/netback protocol";
|
||||
license = licenses.isc;
|
||||
maintainers = [ maintainers.sternenseemann ];
|
||||
homepage = "https://github.com/mirage/mirage-net-xen";
|
||||
};
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
{ lib
|
||||
, buildDunePackage
|
||||
, fetchurl
|
||||
, ppx_cstruct
|
||||
, mirage-profile
|
||||
, cstruct
|
||||
, ounit
|
||||
}:
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "shared-memory-ring";
|
||||
version = "3.1.0";
|
||||
|
||||
useDune2 = true;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/mirage/shared-memory-ring/releases/download/v${version}/shared-memory-ring-v${version}.tbz";
|
||||
sha256 = "06350ph3rdfvybi0cgs3h3rdkmjspk3c4375rxvbdg0kza1w22x1";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
ppx_cstruct
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
mirage-profile
|
||||
cstruct
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
checkInputs = [
|
||||
ounit
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Shared memory rings for RPC and bytestream communications";
|
||||
license = licenses.isc;
|
||||
homepage = "https://github.com/mirage/shared-memory-ring";
|
||||
maintainers = [ maintainers.sternenseemann ];
|
||||
};
|
||||
}
|
37
pkgs/development/ocaml-modules/shared-memory-ring/lwt.nix
Normal file
37
pkgs/development/ocaml-modules/shared-memory-ring/lwt.nix
Normal file
@ -0,0 +1,37 @@
|
||||
{ lib
|
||||
, buildDunePackage
|
||||
, shared-memory-ring
|
||||
, ppx_cstruct
|
||||
, cstruct
|
||||
, lwt
|
||||
, lwt-dllist
|
||||
, mirage-profile
|
||||
, ounit
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "shared-memory-ring-lwt";
|
||||
|
||||
inherit (shared-memory-ring) version src useDune2;
|
||||
|
||||
buildInputs = [
|
||||
ppx_cstruct
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
shared-memory-ring
|
||||
cstruct
|
||||
lwt
|
||||
lwt-dllist
|
||||
mirage-profile
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
checkInputs = [
|
||||
ounit
|
||||
];
|
||||
|
||||
meta = shared-memory-ring.meta // {
|
||||
description = "Shared memory rings for RPC and bytestream communications using Lwt";
|
||||
};
|
||||
}
|
@ -675,6 +675,8 @@ let
|
||||
|
||||
mirage-bootvar-unix = callPackage ../development/ocaml-modules/mirage-bootvar-unix { };
|
||||
|
||||
mirage-bootvar-xen = callPackage ../development/ocaml-modules/mirage-bootvar-xen { };
|
||||
|
||||
mirage-channel = callPackage ../development/ocaml-modules/mirage-channel { };
|
||||
|
||||
mirage-clock = callPackage ../development/ocaml-modules/mirage-clock { };
|
||||
@ -717,6 +719,8 @@ let
|
||||
|
||||
mirage-net = callPackage ../development/ocaml-modules/mirage-net { };
|
||||
|
||||
mirage-net-xen = callPackage ../development/ocaml-modules/mirage-net-xen { };
|
||||
|
||||
mirage-profile = callPackage ../development/ocaml-modules/mirage-profile { };
|
||||
|
||||
mirage-protocols = callPackage ../development/ocaml-modules/mirage-protocols { };
|
||||
@ -739,6 +743,8 @@ let
|
||||
|
||||
mirage-unix = callPackage ../development/ocaml-modules/mirage-unix { };
|
||||
|
||||
mirage-xen = callPackage ../development/ocaml-modules/mirage-xen { };
|
||||
|
||||
mirage-vnetif = callPackage ../development/ocaml-modules/mirage-vnetif { };
|
||||
|
||||
mlgmp = callPackage ../development/ocaml-modules/mlgmp { };
|
||||
@ -753,6 +759,8 @@ let
|
||||
|
||||
mustache = callPackage ../development/ocaml-modules/mustache { };
|
||||
|
||||
netchannel = callPackage ../development/ocaml-modules/netchannel { };
|
||||
|
||||
nocrypto = callPackage ../development/ocaml-modules/nocrypto { };
|
||||
|
||||
nonstd = callPackage ../development/ocaml-modules/nonstd { };
|
||||
@ -1138,6 +1146,10 @@ let
|
||||
|
||||
sha = callPackage ../development/ocaml-modules/sha { };
|
||||
|
||||
shared-memory-ring = callPackage ../development/ocaml-modules/shared-memory-ring { };
|
||||
|
||||
shared-memory-ring-lwt = callPackage ../development/ocaml-modules/shared-memory-ring/lwt.nix { };
|
||||
|
||||
sodium = callPackage ../development/ocaml-modules/sodium { };
|
||||
|
||||
spelll = callPackage ../development/ocaml-modules/spelll { };
|
||||
|
Loading…
Reference in New Issue
Block a user