Skip to content

Commit

Permalink
* Be able to build spt, virtio, muen and xen targets on OpenBSD
Browse files Browse the repository at this point in the history
  (@adamsteen, Solo5/solo5#544). This change does not allow us to "run" these
  targets on OpenBSD
* Fix linker scripts with TLS (Thread Local Storage) sections
  (@palainp, @hannesm, @dinosaure, Solo5/solo5#542)
* Export TLS symbols (@palainp, @hannesm, @dinosaure, Solo5/solo5#546)
  **breaking change** due to Solo5/solo5#542 & Solo5/solo5#546, tenders must be
  **upgraded**. Indeed, solo5.0.7.* tenders will not be able to load correctly
  unikernels compiled with solo5.0.8.0. The internal ABI version for
  `solo5-hvt`/`solo5-spt` was upgraded accordingly.

  This version implements Thread Local Storage. The user can initialise a TLS
  block with `solo5_tls_init` on a pointer to `solo5_tls_size()` free bytes.
  Then, the user is able to set the `tp` (Thread Pointer) pointer via
  `solo5_set_tls_base(solo5_tls_tp_offset(tls_block))`. More details are
  available into `solo5.h`.

  Note: this change does not allow a Solo5 unikernel to use multiple cores! It
  only provides an API required by OCaml 5 / pthread to launch, at most, one
  thread.
* Fix tests reported by NixOS (@greydot, @ehmry, Solo5/solo5#547)
* Split out the `time.c` implementation between Muen and HVT
  (@dinosaure, @Kensan, Solo5/solo5#552)
* User hypercall instead of TSC-based clock when the user asks for the
  wall-clock (@dinosaure, @reynir, Solo5/solo5#549, Solo5/solo5#550)

  Note: only hvt & virtio are updated to avoid a clock drift on the wall-clock.
  Indeed, when the unikernel is suspended, the wall-clock is not updated. Muen
  & Xen still use a TSC-based wall-clock. The spt target was already in sync
  with the host's wall-clock.
* Improve the muen clock (@Kensan, Solo5/solo5#553)
* Fix the `.bss` section according to Solo5/solo5#542 & Solo5/solo5#546. The
  `.bss` section is tagged with `PT_LOAD`. Tenders are available to load this
  section properly. (@Kensan, @dinosaure, Solo5/solo5#551, Solo5/solo5#554)
* Fix the cross-compilation of Solo5 for `aarch64`
  (@dinosaure, @palainp, @hannes, Solo5/solo5#555)
  • Loading branch information
dinosaure committed Apr 25, 2023
1 parent 2677028 commit 8452a87
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 0 deletions.
45 changes: 45 additions & 0 deletions packages/solo5-cross-aarch64/solo5-cross-aarch64.0.8.0/opam
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
opam-version: "2.0"
maintainer: "[email protected]"
authors: [
"Dan Williams <[email protected]>"
"Martin Lucina <[email protected]>"
"Ricardo Koller <[email protected]>"
]
homepage: "https://github.com/solo5/solo5"
bug-reports: "https://github.com/solo5/solo5/issues"
license: "ISC"
dev-repo: "git+https://github.com/solo5/solo5.git"
build: [
["env" "TARGET_CC=aarch64-linux-gnu-gcc" "TARGET_LD=aarch64-linux-gnu-ld" "TARGET_OBJCOPY=aarch64-linux-gnu-objcopy" "./configure.sh" "--prefix=%{prefix}%"]
[make "V=1"]
]
install: [make "V=1" "install-toolchain"]
depends: [
"conf-pkg-config" {build & os = "linux"}
"conf-libseccomp" {build & os = "linux"}
"solo5" {= version}
]
depexts: [
["linux-headers"] {os-distribution = "alpine"}
["kernel-headers"] {os-distribution = "fedora"}
["kernel-headers"] {os-distribution = "rhel"}
["linux-libc-dev"] {os-family = "debian"}
["gcc-aarch64-linux-gnu"] {os-family = "debian"}
]
available: [
(arch != "arm64") &
(os = "linux" & os-family = "debian")
]
synopsis: "Solo5 sandboxed execution environment"
description: """
Solo5 is a sandboxed execution environment primarily intended
for, but not limited to, running applications built using various
unikernels (a.k.a. library operating systems).

This package provides the Solo5 components needed to cross-build
MirageOS unikernels for the aarch64 architecture.
"""
url {
src: "https://github.com/Solo5/solo5/releases/download/v0.8.0/solo5-v0.8.0.tar.gz"
checksum: "sha512=d0ac7a818e73581728ff3a712bb9150232053fe61e3cc50f40f791aa7ee33e2b365e6d512ad0e7780c43bafc9ed6b8953b371e45aebd9e5afbb693c76e17ff54"
}
53 changes: 53 additions & 0 deletions packages/solo5/solo5.0.8.0/opam
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
opam-version: "2.0"
maintainer: "[email protected]"
authors: [
"Dan Williams <[email protected]>"
"Martin Lucina <[email protected]>"
"Ricardo Koller <[email protected]>"
]
homepage: "https://github.com/solo5/solo5"
bug-reports: "https://github.com/solo5/solo5/issues"
license: "ISC"
dev-repo: "git+https://github.com/solo5/solo5.git"
build: [
["./configure.sh" "--prefix=%{prefix}%"]
[make "V=1"]
]
install: [make "V=1" "install"]
depends: [
"conf-pkg-config" {build & os = "linux"}
"conf-libseccomp" {build & os = "linux"}
]
depexts: [
["linux-headers"] {os-distribution = "alpine"}
["kernel-headers"] {os-distribution = "fedora"}
["kernel-headers"] {os-distribution = "rhel"}
["linux-libc-dev"] {os-family = "debian"}
]
conflicts: [
"ocaml-freestanding" {< "0.7.0"}
"solo5-bindings-hvt"
"solo5-bindings-spt"
"solo5-bindings-virtio"
"solo5-bindings-muen"
"solo5-bindings-genode"
"solo5-bindings-xen"
]
available: [
(arch = "x86_64" | arch = "arm64" | arch = "ppc64") &
(os = "linux" | os = "freebsd" | os = "openbsd")
]
x-ci-accept-failures: [ "centos-7" ]
synopsis: "Solo5 sandboxed execution environment"
description: """
Solo5 is a sandboxed execution environment primarily intended
for, but not limited to, running applications built using various
unikernels (a.k.a. library operating systems).

This package provides the Solo5 components needed to build and
run MirageOS unikernels on the host system.
"""
url {
src: "https://github.com/Solo5/solo5/releases/download/v0.8.0/solo5-v0.8.0.tar.gz"
checksum: "sha512=d0ac7a818e73581728ff3a712bb9150232053fe61e3cc50f40f791aa7ee33e2b365e6d512ad0e7780c43bafc9ed6b8953b371e45aebd9e5afbb693c76e17ff54"
}

0 comments on commit 8452a87

Please sign in to comment.