uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead
https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
|
|
@ -0,0 +1,49 @@
|
|||
commit b273c9f7ab10475787db4d6e09bd4b71b374d0ec
|
||||
Author: sternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org>
|
||||
Date: Thu Mar 18 01:28:46 2021 +0100
|
||||
|
||||
Let user specify solo5-binding to use
|
||||
|
||||
This is a little feature for the configure script I wanted to have for
|
||||
the NixOS package: It allows the user to set PKG_CONFIG_DEPS before
|
||||
running configure.sh to disable the autodetection mechanism. This is
|
||||
useful for NixOS as we have all bindings bundled in the solo5 package,
|
||||
so the result would also be solo5-bindings-xen. Additionally, it allows
|
||||
us to do the binding selection declaratively and minimize the risk of
|
||||
accidentally switching backend.
|
||||
|
||||
PKG_CONFIG_DEPS seems like a bit of an unappropriate variable name for a
|
||||
user “interface”, let me know if you want a dedicated environment
|
||||
variable for this in case there will be more PKG_CONFIG_DEPS.
|
||||
|
||||
diff --git a/configure.sh b/configure.sh
|
||||
index c254f7b..c675a02 100755
|
||||
--- a/configure.sh
|
||||
+++ b/configure.sh
|
||||
@@ -11,13 +11,19 @@ if pkg_exists solo5-bindings-hvt solo5-bindings-spt solo5-bindings-virtio solo5-
|
||||
echo "ERROR: Only one of solo5-bindings-hvt, solo5-bindings-spt, solo5-bindings-virtio, solo5-bindings-muen, solo5-bindings-genode, solo5-bindings-xen can be installed." 1>&2
|
||||
exit 1
|
||||
fi
|
||||
-PKG_CONFIG_DEPS=
|
||||
-pkg_exists solo5-bindings-hvt && PKG_CONFIG_DEPS=solo5-bindings-hvt
|
||||
-pkg_exists solo5-bindings-spt && PKG_CONFIG_DEPS=solo5-bindings-spt
|
||||
-pkg_exists solo5-bindings-muen && PKG_CONFIG_DEPS=solo5-bindings-muen
|
||||
-pkg_exists solo5-bindings-virtio && PKG_CONFIG_DEPS=solo5-bindings-virtio
|
||||
-pkg_exists solo5-bindings-genode && PKG_CONFIG_DEPS=solo5-bindings-genode
|
||||
-pkg_exists solo5-bindings-xen && PKG_CONFIG_DEPS=solo5-bindings-xen
|
||||
+if [ -z "${PKG_CONFIG_DEPS}" ]; then
|
||||
+ PKG_CONFIG_DEPS=
|
||||
+ pkg_exists solo5-bindings-hvt && PKG_CONFIG_DEPS=solo5-bindings-hvt
|
||||
+ pkg_exists solo5-bindings-spt && PKG_CONFIG_DEPS=solo5-bindings-spt
|
||||
+ pkg_exists solo5-bindings-muen && PKG_CONFIG_DEPS=solo5-bindings-muen
|
||||
+ pkg_exists solo5-bindings-virtio && PKG_CONFIG_DEPS=solo5-bindings-virtio
|
||||
+ pkg_exists solo5-bindings-genode && PKG_CONFIG_DEPS=solo5-bindings-genode
|
||||
+ pkg_exists solo5-bindings-xen && PKG_CONFIG_DEPS=solo5-bindings-xen
|
||||
+else
|
||||
+ pkg_exists "${PKG_CONFIG_DEPS}" \
|
||||
+ || (echo "ERROR: ${PKG_CONFIG_DEPS} is not installed" 1>&2; exit 1) \
|
||||
+ || exit 1
|
||||
+fi
|
||||
if [ -z "${PKG_CONFIG_DEPS}" ]; then
|
||||
echo "ERROR: No supported Solo5 bindings package found." 1>&2
|
||||
echo "ERROR: solo5-bindings-hvt, solo5-bindings-spt, solo5-bindings-virtio, solo5-bindings-muen, solo5-bindings-genode or solo5-bindings-xen must be installed." 1>&2
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, ocaml
|
||||
, pkg-config
|
||||
, solo5
|
||||
, target ? "xen"
|
||||
}:
|
||||
|
||||
# note: this is not technically an ocaml-module,
|
||||
# but can be built with different compilers, so
|
||||
# the ocamlPackages set is very useful.
|
||||
|
||||
let
|
||||
pname = "ocaml-freestanding";
|
||||
in
|
||||
|
||||
if lib.versionOlder ocaml.version "4.08"
|
||||
then builtins.throw "${pname} is not available for OCaml ${ocaml.version}"
|
||||
else
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "ocaml${ocaml.version}-${pname}-${version}";
|
||||
inherit pname;
|
||||
version = "0.6.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mirage";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256:1mbyjzwcs64n7i3xkkyaxgl3r46drbl0gkqf3fqgm2kh3q03638l";
|
||||
};
|
||||
|
||||
postUnpack = ''
|
||||
# get ocaml-src from the ocaml drv instead of via ocamlfind
|
||||
mkdir -p "${src.name}/ocaml"
|
||||
tar --strip-components=1 -xf ${ocaml.src} -C "${src.name}/ocaml"
|
||||
'';
|
||||
|
||||
patches = [
|
||||
./no-opam.patch
|
||||
./configurable-binding.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
ocaml
|
||||
pkg-config
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [ solo5 ];
|
||||
|
||||
configurePhase = ''
|
||||
runHook preConfigure
|
||||
env PKG_CONFIG_DEPS=solo5-bindings-${target} sh configure.sh
|
||||
runHook postConfigure
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
./install.sh "$out"
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Freestanding OCaml runtime";
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.sternenseemann ];
|
||||
homepage = "https://github.com/mirage/ocaml-freestanding";
|
||||
platforms = builtins.map ({ arch, os }: "${arch}-${os}")
|
||||
(cartesianProductOfSets {
|
||||
arch = [ "aarch64" "x86_64" ];
|
||||
os = [ "linux" ];
|
||||
} ++ [
|
||||
{ arch = "x86_64"; os = "freebsd"; }
|
||||
{ arch = "x86_64"; os = "openbsd"; }
|
||||
]);
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
commit 637b7ce639d54e617170433aa9596176b167d085
|
||||
Author: sternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org>
|
||||
Date: Thu Mar 18 01:07:49 2021 +0100
|
||||
|
||||
Allow building without ocamlfind and opam
|
||||
|
||||
This change is the result of my first go at packaging ocaml-freestanding
|
||||
for NixOS. Our build infrastructure for ocaml there is completely
|
||||
independent of opam at the moment, so depending on opam for the build
|
||||
time is not an option, especially in this case where the information it
|
||||
would give us would be garbage.
|
||||
|
||||
Fortunately the build environment plays nicely with pkg-config which is
|
||||
already heavily used by ocaml-freestanding. This patch leaves pkg-config
|
||||
to its own devices if opam is not present (it can be assisted by a
|
||||
manually set PKG_CONFIG_PATH environment variable).
|
||||
|
||||
Additionally, in configure.sh we check if the target ocaml source
|
||||
directory already exists. This allows for building ocaml-freestanding
|
||||
without the ocaml-src package (which would be unnecessarily cumbersome
|
||||
to package for NixOS) and ocamlfind (one less dependency is always a
|
||||
nice bonus). The Makefile needs no fix since the target ocaml/Makefile
|
||||
won't be built if it's already present.
|
||||
|
||||
diff --git a/configure.sh b/configure.sh
|
||||
index 4d154ed..c254f7b 100755
|
||||
--- a/configure.sh
|
||||
+++ b/configure.sh
|
||||
@@ -1,6 +1,8 @@
|
||||
#!/bin/sh
|
||||
|
||||
-export PKG_CONFIG_PATH=$(opam config var prefix)/lib/pkgconfig
|
||||
+if command -v opam &> /dev/null; then
|
||||
+ export PKG_CONFIG_PATH=$(opam config var prefix)/lib/pkgconfig
|
||||
+fi
|
||||
pkg_exists() {
|
||||
pkg-config --exists "$@"
|
||||
}
|
||||
@@ -21,7 +23,7 @@ if [ -z "${PKG_CONFIG_DEPS}" ]; then
|
||||
echo "ERROR: solo5-bindings-hvt, solo5-bindings-spt, solo5-bindings-virtio, solo5-bindings-muen, solo5-bindings-genode or solo5-bindings-xen must be installed." 1>&2
|
||||
exit 1
|
||||
fi
|
||||
-ocamlfind query ocaml-src >/dev/null || exit 1
|
||||
+[ -e "$(dirname "$0")/ocaml" ] || ocamlfind query ocaml-src >/dev/null || exit 1
|
||||
|
||||
FREESTANDING_CFLAGS="$(pkg-config --cflags ${PKG_CONFIG_DEPS})"
|
||||
BUILD_ARCH="$(uname -m)"
|
||||
Loading…
Add table
Add a link
Reference in a new issue