From 33fa10e0c039c08fb0d948d2e780cbf26b138c1b Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Thu, 2 Apr 2020 17:03:41 +0530 Subject: [PATCH] solo5: 0.6.3 -> 0.6.4 --- flake.lock | 6 +- packages/solo5/default.nix | 29 ++- packages/solo5/elftool.patch | 38 ++++ packages/solo5/genode.patch | 360 ++++++----------------------------- 4 files changed, 110 insertions(+), 323 deletions(-) create mode 100644 packages/solo5/elftool.patch diff --git a/flake.lock b/flake.lock index d8fc24c..b285c0e 100644 --- a/flake.lock +++ b/flake.lock @@ -38,13 +38,13 @@ }, "nixpkgs_2": { "info": { - "lastModified": 1585225173, - "narHash": "sha256-wWMFs6+s7lv5u3eTuitrEna1vPx44tCxpllxmy+/SvE=" + "lastModified": 1585835256, + "narHash": "sha256-8+3D0tUeUEzGSBMTw0FNZBCMB0negok5VisXm9vkz1U=" }, "locked": { "owner": "NixOS", "repo": "nixpkgs", - "rev": "9ee46bfb230226118ea70c9ed364021834965d0b", + "rev": "09190b9c16c6021fa29733874986c46c00144ed1", "type": "github" }, "original": { diff --git a/packages/solo5/default.nix b/packages/solo5/default.nix index 50d3ac8..2a24a0e 100644 --- a/packages/solo5/default.nix +++ b/packages/solo5/default.nix @@ -1,52 +1,45 @@ # SPDX-License-Identifier: CC0-1.0 -{ stdenv, buildPackages, fetchurl, pkgconfig, genodeLibcCross }: +{ stdenv, buildPackages, fetchurl, solo5-tools }: # WARNING: recursive make ahead -let version = "0.6.3"; +let version = "0.6.4"; in stdenv.mkDerivation { pname = "solo5"; inherit version; + outputs = [ "out" "dev" "tests" ]; - outputs = [ "out" "tests" ]; - - nativeBuildInputs = [ pkgconfig ]; - - buildInputs = [ genodeLibcCross ]; + nativeBuildInputs = [ solo5-tools ]; src = fetchurl { url = "https://github.com/Solo5/solo5/releases/download/v${version}/solo5-v${version}.tar.gz"; - sha256 = "08z2gv0jlsq6r92vacapdj0hqhyfqfy3xdjn5k9c1pd23a2syq7w"; + sha256 = "sha256-7KyBXM0ZaG2WLoHpq6o/VoP8/qyclIEY9Hh/aLhcQlA="; }; enableParallelBuilding = true; - patches = [ ./genode.patch ]; + patches = [ ./genode.patch ./elftool.patch ]; configurePhase = '' runHook preConfigure + sh configure.sh rm -fr tests/test_tls - HOSTCC=${buildPackages.stdenv.cc}/bin/cc sh configure.sh runHook postConfigure ''; - makeFlags = "CXXFLAGS=-Wno-mismatched-tags"; - installPhase = '' runHook preInstall - mkdir -p $out/bin $tests/bin - make install-opam-genode PREFIX=$out - local wrong_path=`find $NIX_BUILD_TOP -name solo5.lib.so` + install -Dt $out/lib bindings/genode/solo5.lib.so + mkdir $dev + cp -r include/solo5 $dev/include for test in tests/*/*.genode; do - cp $test $tests/bin/solo5-`basename $test .genode` + install -D $test $tests/bin/solo5-$(basename $test .genode) done runHook postInstall ''; - preFixup = "$STRIP $out/lib/solo5-bindings-genode/solo5.lib.so"; - meta = with stdenv.lib; { description = "Sandboxed execution environment."; homepage = "https://github.com/solo5/solo5"; diff --git a/packages/solo5/elftool.patch b/packages/solo5/elftool.patch new file mode 100644 index 0000000..48df0b7 --- /dev/null +++ b/packages/solo5/elftool.patch @@ -0,0 +1,38 @@ +diff --git a/GNUmakefile b/GNUmakefile +index 2c6716a..9249c80 100644 +--- a/GNUmakefile ++++ b/GNUmakefile +@@ -21,9 +21,9 @@ $(TOPDIR)/Makeconf: + $(error Makeconf not found, please run ./configure.sh) + include Makefile.common + +-SUBDIRS := bindings tenders elftool tests ++SUBDIRS := bindings tenders tests + +-tests: bindings elftool ++tests: bindings + + .PHONY: $(SUBDIRS) + +diff --git a/tests/Makefile.tests b/tests/Makefile.tests +index d4e1191..45560a8 100644 +--- a/tests/Makefile.tests ++++ b/tests/Makefile.tests +@@ -34,15 +34,12 @@ BINDINGS.muen := $(TOPDIR)/bindings/muen/solo5_muen.o + LDS.genode := $(TOPDIR)/bindings/genode/genode_dyn.ld + BINDINGS.genode := $(TOPDIR)/bindings/genode/solo5.lib.so + +-ELFTOOL := $(TOPDIR)/elftool/solo5-elftool +- + # As a test is currently a single source file, we don't try to do any + # dependency auto-generation here, and just hard-code all expected dependencies + # as pre-requisites below. + +-manifest.c: manifest.json ../../include/solo5/mft_abi.h $(ELFTOOL) +- @echo "ELFTOOL $<" +- $(ELFTOOL) gen-manifest $< $@ ++manifest.c: manifest.json ../../include/solo5/mft_abi.h ++ solo5-elftool gen-manifest $< $@ + + %.o: %.c ../../include/solo5/solo5.h + @echo "CC $<" diff --git a/packages/solo5/genode.patch b/packages/solo5/genode.patch index a0ca41f..f42842a 100644 --- a/packages/solo5/genode.patch +++ b/packages/solo5/genode.patch @@ -1,8 +1,8 @@ diff --git a/GNUmakefile b/GNUmakefile -index e168853..02d81e1 100644 +index feca365..2c6716a 100644 --- a/GNUmakefile +++ b/GNUmakefile -@@ -98,9 +98,11 @@ install-opam-%: all opam/solo5-bindings-%.pc force-install +@@ -111,9 +111,11 @@ install-opam-%: all opam/solo5-bindings-%.pc force-install (echo "error: PREFIX not set or incorrect"; false) mkdir -p $(PREFIX)/lib/pkgconfig \ $(PREFIX)/lib/solo5-bindings-$* \ @@ -18,7 +18,7 @@ index e168853..02d81e1 100644 cp bindings/$*/solo5_$*.o bindings/$*/solo5_$*.lds \ $(PREFIX)/lib/solo5-bindings-$* diff --git a/Makefile.common b/Makefile.common -index 5ccc2ea..2653a8b 100644 +index 5ccc2ea..d64732c 100644 --- a/Makefile.common +++ b/Makefile.common @@ -30,8 +30,10 @@ include $(TOPDIR)/Makeconf @@ -28,7 +28,7 @@ index 5ccc2ea..2653a8b 100644 +CXX := $(MAKECONF_CXX) CFLAGS := -std=c11 -Wall -Wextra -Werror -O2 -g CFLAGS += -ffreestanding -fstack-protector-strong $(MAKECONF_CFLAGS) -+CXXFLAGS += -Wall -Wextra -Werror -O2 -g ++CXXFLAGS += -Wall -Wextra -Werror -O2 -g $(MAKECONF_CXXFLAGS) CPPFLAGS := -isystem $(TOPDIR)/include/crt -I$(TOPDIR)/include/solo5 LD := $(MAKECONF_LD) LDFLAGS := -nostdlib -z max-page-size=$(CONFIG_GUEST_PAGE_SIZE) -static \ @@ -45,15 +45,6 @@ index 5ccc2ea..2653a8b 100644 define COMPILE.S @echo "AS $<" $(CC) $(DEPFLAGS) $(CFLAGS) $(CPPFLAGS) -DASM_FILE -c $< -o $@ -@@ -63,7 +71,7 @@ endef - # The following variables and recpies apply to building tenders, i.e. - # artifacts built to run on the (Solo5 tender's) *host*. - # --HOSTCC := $(MAKECONF_CC) -+HOSTCC := $(MAKECONF_HOSTCC) - HOSTCFLAGS := -Wall -Werror -std=c11 -fstack-protector-strong -O2 -g - HOSTCPPFLAGS := -I$(TOPDIR)/include/solo5 - HOSTLDFLAGS := diff --git a/bindings/GNUmakefile b/bindings/GNUmakefile index 147c245..d3efb36 100644 --- a/bindings/GNUmakefile @@ -89,20 +80,10 @@ index 147c245..d3efb36 100644 GENODE_LDFLAGS := -nostdlib -z max-page-size=$(CONFIG_GUEST_PAGE_SIZE) -shared \ -gc-sections --eh-frame-hdr --entry=0x0 -T genode/genode_rel.ld diff --git a/bindings/genode/bindings.cc b/bindings/genode/bindings.cc -index eb55ffb..2b7db70 100644 +index 5785ae5..2b7db70 100644 --- a/bindings/genode/bindings.cc +++ b/bindings/genode/bindings.cc -@@ -35,15 +35,15 @@ - #include - #include - -+#define restrict __restrict__ -+ - /* Solo5 includes */ - extern "C" { - #include "../bindings.h" --extern struct mft_note __solo5_manifest_note; -+extern struct mft1_note __solo5_mft1_note; +@@ -44,8 +44,6 @@ extern struct mft1_note __solo5_mft1_note; } // Compile the MFT utilities as C++ @@ -111,7 +92,7 @@ index eb55ffb..2b7db70 100644 #include "../../tenders/common/mft.c" namespace Solo5 -@@ -109,32 +109,32 @@ struct Solo5::Device +@@ -111,32 +109,32 @@ struct Solo5::Device { virtual solo5_result_t @@ -150,80 +131,7 @@ index eb55ffb..2b7db70 100644 return SOLO5_R_EINVAL; } }; -@@ -162,7 +162,7 @@ struct Solo5::Net_device final : Device - Net_device(struct mft_entry &me, - Genode::Env &env, - Range_allocator &alloc, -- solo5_handle_set_t ready_set, -+ solo5_handle_set_t &ready_set, - solo5_handle_t handle) - : _nic(env, &alloc, NIC_BUFFER_SIZE, NIC_BUFFER_SIZE, me.name) - , _signal_handler(env.ep(), *this, &Net_device::_handle_signal) -@@ -330,7 +330,7 @@ struct Solo5::Platform - static Platform *instance; - static Device *devices[MFT_MAX_ENTRIES]; - -- struct mft &mft; -+ struct mft const &mft; - - /** - * Reference to the Genode base enviroment -@@ -376,7 +376,7 @@ struct Solo5::Platform - * - * TODO: periodic RTC synchronization - */ -- Genode::uint64_t _initial_epoch { rtc_epoch(env) }; -+ Genode::uint64_t _initial_epoch { 0 }; - - /** - * Commandline buffer -@@ -387,7 +387,8 @@ struct Solo5::Platform - /** - * Constructor - */ -- Platform(struct mft &mft, Genode::Env &env) : mft(mft), env(env) -+ Platform(struct mft const &mft, Genode::Env &env) -+ : mft(mft), env(env) - { - /** - * Acquire and attach a ROM dataspace (shared -@@ -400,7 +401,7 @@ struct Solo5::Platform - - // Copy-out the cmdline if configured. - try { cmdline = config.sub_node("cmdline").decoded_content(); } -- catch (...) { } -+ catch (Genode::Xml_node::Nonexistent_sub_node) { } - - for (solo5_handle_t i = 0U; i < MFT_MAX_ENTRIES; ++i) { - devices[i] = &invalid_device; -@@ -422,6 +423,15 @@ struct Solo5::Platform - ** Solo5 bindings ** - ********************/ - -+ solo5_time_t clock_wall() -+ { -+ if (_initial_epoch == 0) -+ _initial_epoch = rtc_epoch(env); -+ -+ return _initial_epoch * 1000000000ULL -+ + timer.curr_time().trunc_to_plain_us().value * 1000ULL; -+ } -+ - void - yield(solo5_time_t deadline_ns, solo5_handle_set_t *ready_set) - { -@@ -526,9 +536,7 @@ solo5_time_t solo5_clock_monotonic(void) - - solo5_time_t solo5_clock_wall(void) - { -- return Platform::instance->_initial_epoch * 1000000000ULL -- + Platform::instance->timer.curr_time() -- .trunc_to_plain_us().value * 1000ULL; -+ return Platform::instance->clock_wall(); - } - - -@@ -600,11 +608,44 @@ solo5_block_read(solo5_handle_t handle, solo5_off_t offset, +@@ -610,11 +608,44 @@ solo5_block_read(solo5_handle_t handle, solo5_off_t offset, solo5_result_t @@ -269,51 +177,15 @@ index eb55ffb..2b7db70 100644 } // extern "C" -@@ -616,16 +657,19 @@ solo5_set_tls_base(uintptr_t base) - void Component::construct(Genode::Env &env) - { - /* Validate the device manifest */ -- struct mft &mft = __solo5_manifest_note.m; -- size_t mft_size = __solo5_manifest_note.h.descsz; -- if (mft_validate(&mft, mft_size) != 0) { -- Genode::error("Solo5: Built-in manifest validation failed. Aborting"); -+ const struct mft *mft; -+ size_t mft_size; -+ -+ mft_get_builtin_mft1(&__solo5_mft1_note, &mft, &mft_size); -+ -+ if (mft_validate(mft, mft_size) != 0) { +@@ -632,7 +663,7 @@ void Component::construct(Genode::Env &env) + mft_get_builtin_mft1(&__solo5_mft1_note, &mft, &mft_size); + + if (mft_validate(mft, mft_size) != 0) { +- Genode::error("Solo5: ", res, " Built-in manifest validation failed. Aborting."); + Genode::error("Solo5: Built-in manifest validation failed. Aborting."); env.parent().exit(~0); return; } - - /* Construct a statically allocated platform object */ -- static Solo5::Platform inst(mft, env); -+ static Solo5::Platform inst(*mft, env); - Platform::instance = &inst; - - static struct solo5_start_info si { -@@ -641,12 +685,14 @@ void Component::construct(Genode::Env &env) - if (si.heap_size > 1<<20) - si.heap_size -= 1<<19; - -- /* allocate a contiguous memory region for the application */ -- Genode::Dataspace_capability heap_ds = -- env.pd().alloc(si.heap_size); -+ { -+ /* allocate a contiguous memory region for the application */ -+ Genode::Dataspace_capability heap_ds = -+ env.pd().alloc(si.heap_size); - -- /* attach into our address-space */ -- si.heap_start = env.rm().attach(heap_ds); -+ /* attach into our address-space */ -+ si.heap_start = env.rm().attach(heap_ds); -+ } - - /* block for application then exit */ - env.parent().exit(solo5_app_main(&si)); diff --git a/bindings/genode/stubs.c b/bindings/genode/stubs.c deleted file mode 100644 index 0f1ca5c..0000000 @@ -344,10 +216,34 @@ index 0f1ca5c..0000000 -uintptr_t SSP_GUARD; -void SSP_FAIL (void) { } diff --git a/configure.sh b/configure.sh -index be0f3a2..d5d0c14 100755 +index f762933..e75f41a 100755 --- a/configure.sh +++ b/configure.sh -@@ -89,6 +89,7 @@ ld_is_lld() +@@ -233,6 +233,23 @@ config_host_openbsd() + CONFIG_GENODE= + } + ++config_host_genode() ++{ ++ cc_is_clang || die "Only Clang is supported on Genode" ++ [ "${CONFIG_ARCH}" = "x86_64" ] || ++ die "Only 'x86_64' is supported on Genode" ++ ++ MAKECONF_CXXFLAGS="-mno-retpoline -Wno-mismatched-tags -Wno-undefined-bool-conversion -Wno-uninitialized -Wno-unknown-attributes -Wno-unused-variable -Wno-unused-parameter" ++ MAKECONF_LDFLAGS="-nopie" ++ ++ [ -n "${OPT_ONLY_TOOLS}" ] && return ++ CONFIG_GENODE=1 ++ CONFIG_HVT= ++ CONFIG_MUEN= ++ CONFIG_SPT= ++ CONFIG_VIRTIO= ++} ++ + # Check for a tools-only build. + OPT_ONLY_TOOLS= + if [ -n "$1" ]; then +@@ -245,6 +262,7 @@ fi # Allow external override of CC. CC=${CC:-cc} @@ -355,7 +251,7 @@ index be0f3a2..d5d0c14 100755 LD=${LD:-ld} CC_MACHINE=$(${CC} -dumpmachine) -@@ -116,6 +117,10 @@ case ${CC_MACHINE} in +@@ -272,6 +290,10 @@ case ${CC_MACHINE} in CONFIG_ARCH=x86_64 CONFIG_HOST=OpenBSD CONFIG_GUEST_PAGE_SIZE=0x1000 ;; @@ -366,77 +262,30 @@ index be0f3a2..d5d0c14 100755 *) die "Unsupported toolchain target: ${CC_MACHINE}" ;; -@@ -131,6 +136,7 @@ CONFIG_SPT= - CONFIG_VIRTIO= - CONFIG_MUEN= - CONFIG_GENODE= -+CONFIG_HOST_CRT= - MAKECONF_CFLAGS= - MAKECONF_LDFLAGS= - MAKECONF_SPT_CFLAGS= -@@ -143,6 +149,8 @@ case "${CONFIG_HOST}" in - cc_is_gcc || die "Only 'gcc' 4.x+ is supported on Linux" - CC_INCDIR=$(${CC} -print-file-name=include) - [ -d "${CC_INCDIR}" ] || die "Cannot determine gcc include directory" -+ -+ CONFIG_HOST_CRT=1 - mkdir -p ${HOST_INCDIR} - cp -R ${CC_INCDIR}/. ${HOST_INCDIR} - -@@ -202,8 +210,8 @@ case "${CONFIG_HOST}" in - fi - [ "${CONFIG_ARCH}" = "x86_64" ] && CONFIG_VIRTIO=1 - [ "${CONFIG_ARCH}" = "x86_64" ] && CONFIG_MUEN=1 -- [ "${CONFIG_ARCH}" = "x86_64" ] && CONFIG_GENODE=1 - [ "${CONFIG_ARCH}" = "ppc64le" ] && CONFIG_HVT= -+ CONFIG_GENODE= - ;; - FreeBSD) - # On FreeBSD/clang we use -nostdlibinc which gives us access to the -@@ -221,6 +229,7 @@ case "${CONFIG_HOST}" in - x86/_types.h x86/_limits.h" - SRCS="float.h osreldate.h stddef.h stdint.h stdbool.h stdarg.h" - -+ CONFIG_HOST_CRT=1 - mkdir -p ${HOST_INCDIR} - mkdir -p ${HOST_INCDIR}/machine ${HOST_INCDIR}/sys ${HOST_INCDIR}/x86 - for f in ${SRCS_MACH}; do cp -f ${INCDIR}/$f ${HOST_INCDIR}/machine; done -@@ -240,6 +249,21 @@ case "${CONFIG_HOST}" in - [ "${CONFIG_ARCH}" = "x86_64" ] && CONFIG_MUEN=1 - CONFIG_GENODE= +@@ -303,6 +325,9 @@ case "${CONFIG_HOST}" in + OpenBSD) + config_host_openbsd ;; + Genode) -+ cc_is_clang || die "Only 'clang' is supported on Genode" -+ [ "${CONFIG_ARCH}" = "x86_64" ] || -+ die "Only 'x86_64' is supported on Genode" -+ ld_is_lld || die "Using GNU 'ld' is not supported on Genode" -+ -+ MAKECONF_CFLAGS="-mno-retpoline -nostdlibinc" -+ MAKECONF_LDFLAGS="-nopie" -+ -+ CONFIG_HVT= -+ CONFIG_SPT= -+ CONFIG_VIRTIO= -+ CONFIG_MUEN= -+ CONFIG_GENODE=1 ++ config_host_genode + ;; - OpenBSD) - # On OpenBSD/clang we use -nostdlibinc which gives us access to the - # clang-provided headers for compiler instrinsics. We copy the rest -@@ -259,6 +283,7 @@ case "${CONFIG_HOST}" in - SRCS_AMD64="amd64/_float.h amd64/stdarg.h amd64/endian.h" - SRCS="float.h stddef.h stdint.h stdbool.h stdarg.h" - -+ CONFIG_HOST_CRT=1 - mkdir -p ${HOST_INCDIR} - mkdir -p ${HOST_INCDIR}/machine ${HOST_INCDIR}/sys ${HOST_INCDIR}/amd64 - for f in ${SRCS_MACH}; do cp -f ${INCDIR}/$f ${HOST_INCDIR}/machine; done -@@ -304,13 +329,16 @@ CONFIG_SPT=${CONFIG_SPT} - CONFIG_VIRTIO=${CONFIG_VIRTIO} + *) + die "Unsupported build OS: ${CONFIG_HOST}" + ;; +@@ -315,7 +340,7 @@ esac + # GNU make. Given the differences in quoting rules between the two + # (unable to sensibly use VAR="VALUE"), our convention is as follows: + # +-# 1. GNU make parses the entire file, i.e. all variables defined below are ++# 1. GNU make parses the entire file, i.e. all variables defined below are + # available to Makefiles. + # + # 2. Shell scripts parse the subset of *lines* starting with "CONFIG_". I.e. +@@ -333,11 +358,13 @@ CONFIG_VIRTIO=${CONFIG_VIRTIO} CONFIG_MUEN=${CONFIG_MUEN} CONFIG_GENODE=${CONFIG_GENODE} -+CONFIG_HOST_CRT=${CONFIG_HOST_CRT} MAKECONF_CFLAGS=${MAKECONF_CFLAGS} ++MAKECONF_CXXFLAGS=${MAKECONF_CXXFLAGS} MAKECONF_LDFLAGS=${MAKECONF_LDFLAGS} CONFIG_ARCH=${CONFIG_ARCH} CONFIG_HOST=${CONFIG_HOST} @@ -444,10 +293,8 @@ index be0f3a2..d5d0c14 100755 MAKECONF_CC=${CC} +MAKECONF_CXX=${CXX} MAKECONF_LD=${LD} -+MAKECONF_HOSTCC=${HOSTCC:-$CC} MAKECONF_SPT_CFLAGS=${MAKECONF_SPT_CFLAGS} MAKECONF_SPT_LDLIBS=${MAKECONF_SPT_LDLIBS} - CONFIG_SPT_NO_PIE=${CONFIG_SPT_NO_PIE} diff --git a/include/solo5/mft_abi.h b/include/solo5/mft_abi.h index 537c7bc..47927b0 100644 --- a/include/solo5/mft_abi.h @@ -462,97 +309,6 @@ index 537c7bc..47927b0 100644 _Static_assert((offsetof(struct mft1_note, m) & (MFT1_NOTE_ALIGN - 1)) == 0, "struct mft1_note.m is not aligned to a MFT1_NOTE_ALIGN boundary"); -diff --git a/opam/solo5-bindings-genode.opam b/opam/solo5-bindings-genode.opam -index eba9ac0..e8ea3ba 100644 ---- a/opam/solo5-bindings-genode.opam -+++ b/opam/solo5-bindings-genode.opam -@@ -16,7 +16,10 @@ remove: [ - ["touch" "./Makeconf"] - [make "V=1" "uninstall-opam-genode" "PREFIX=%{prefix}%"] - ] --depends: "conf-pkg-config" -+depends: [ -+ "conf-pkg-config" -+ "conf-libseccomp" {build & os = "linux"} -+] - conflicts: [ - "solo5-bindings-hvt" - "solo5-bindings-spt" -diff --git a/opam/solo5-bindings-hvt.opam b/opam/solo5-bindings-hvt.opam -index 81a2d70..04dd3f4 100644 ---- a/opam/solo5-bindings-hvt.opam -+++ b/opam/solo5-bindings-hvt.opam -@@ -18,7 +18,10 @@ remove: [ - ["touch" "./Makeconf"] - [make "V=1" "uninstall-opam-hvt" "PREFIX=%{prefix}%"] - ] --depends: "conf-pkg-config" -+depends: [ -+ "conf-pkg-config" -+ "conf-libseccomp" {build & os = "linux"} -+] - depexts: [ - ["linux-headers"] {os-distribution = "alpine"} - ["linux-libc-dev"] {os-distribution = "debian"} -diff --git a/opam/solo5-bindings-muen.opam b/opam/solo5-bindings-muen.opam -index c180646..60b0356 100644 ---- a/opam/solo5-bindings-muen.opam -+++ b/opam/solo5-bindings-muen.opam -@@ -18,7 +18,10 @@ remove: [ - ["touch" "./Makeconf"] - [make "V=1" "uninstall-opam-muen" "PREFIX=%{prefix}%"] - ] --depends: "conf-pkg-config" -+depends: [ -+ "conf-pkg-config" -+ "conf-libseccomp" {build & os = "linux"} -+] - conflicts: [ - "solo5-bindings-genode" - "solo5-bindings-hvt" -diff --git a/opam/solo5-bindings-spt.opam b/opam/solo5-bindings-spt.opam -index 416605c..74940f9 100644 ---- a/opam/solo5-bindings-spt.opam -+++ b/opam/solo5-bindings-spt.opam -@@ -18,18 +18,16 @@ remove: [ - ["touch" "./Makeconf"] - [make "V=1" "uninstall-opam-spt" "PREFIX=%{prefix}%"] - ] --depends: "conf-pkg-config" -+depends: [ -+ "conf-pkg-config" -+ "conf-libseccomp" {os = "linux"} -+] - depexts: [ - ["linux-headers"] {os-distribution = "alpine"} - ["linux-libc-dev"] {os-distribution = "debian"} - ["kernel-headers"] {os-distribution = "fedora"} - ["kernel-headers"] {os-distribution = "rhel"} - ["linux-libc-dev"] {os-distribution = "ubuntu"} -- ["libseccomp-dev"] {os-distribution = "alpine"} -- ["libseccomp-dev"] {os-distribution = "debian"} -- ["libseccomp-devel"] {os-distribution = "fedora"} -- ["libseccomp-devel"] {os-distribution = "rhel"} -- ["libseccomp-dev"] {os-distribution = "ubuntu"} - ] - conflicts: [ - "solo5-bindings-hvt" -diff --git a/opam/solo5-bindings-virtio.opam b/opam/solo5-bindings-virtio.opam -index 7171244..a10655f 100644 ---- a/opam/solo5-bindings-virtio.opam -+++ b/opam/solo5-bindings-virtio.opam -@@ -18,7 +18,10 @@ remove: [ - ["touch" "./Makeconf"] - [make "V=1" "uninstall-opam-virtio" "PREFIX=%{prefix}%"] - ] --depends: "conf-pkg-config" -+depends: [ -+ "conf-pkg-config" -+ "conf-libseccomp" {build & os = "linux"} -+] - conflicts: [ - "solo5-bindings-hvt" - "solo5-bindings-spt" diff --git a/tests/Makefile.tests b/tests/Makefile.tests index 2cd0dcd..d4e1191 100644 --- a/tests/Makefile.tests