Giter VIP home page Giter VIP logo

conan's Introduction

MirageOS logo
Build Unikernels in OCaml

OCaml-CI Build Status docs


MirageOS is a library operating system that constructs secure, performant and resource-efficient unikernels.

About

MirageOS is a library operating system that constructs unikernels for secure, high-performance network applications across various cloud computing and mobile platforms. Developers can write code on a traditional OS such as Linux or macOS. They can then compile their code into a fully-standalone, specialised unikernel that runs under the Xen or KVM hypervisors and lightweight hypervisors like FreeBSD's BHyve, OpenBSD's VMM. These unikernels can deploy on public clouds, like Amazon's Elastic Compute Cloud and Google Compute Engine, or private deployments.

The most up-to-date documentation can be found at the homepage. The site is a self-hosted unikernel. Simpler skeleton applications are also available online. MirageOS unikernels repositories are also available here or there.

This repository

This repository contains the mirage command-line tool to create and deploy applications with MirageOS. This tool wraps the specialised configuration and build steps required to build MirageOS on all the supported targets.

Local install

You will need the following:

  • a working OCaml compiler (4.08.0 or higher).
  • the Opam source package manager (2.1.0 or higher).
  • an x86_64 or armel Linux host to compile Xen kernels, or FreeBSD, OpenBSD or MacOS X for the solo5 and userlevel versions.

Then run:

$ opam install mirage
$ mirage --version

This should display at least version 4.0.0.

Using mirage

There are multiple stages to using mirage:

  • write config.ml to describe the components of your applications;
  • call mirage configure to generate the necessary code and metadata;
  • optionally call make depends to install external dependencies and download Opam packages in the current dune workspace.
  • call dune build to build a unikernel.

You can find documentation, walkthroughs and tutorials over on the MirageOS website. The install instructions are a good place to begin!

conan's People

Contributors

dinosaure avatar gridbugs avatar octachron avatar reynir avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

conan's Issues

Tests fail with `Invalid formatter u` on OCaml 5

While building the revdeps for Mirage, Conan fails on OCaml 5.0:

lint (assert false / exception): FAIL

When given the input:

    "CI\175\226j\154\237\132&\140\1974\004O\018\227\209\237ZGm\202\202D\127\020\180;\019\173Z\187\151%\149\223+\244n\156c\027\148"
    
the test threw an exception:

    Invalid_argument("Invalid formatter u")
    Raised at Stdlib.invalid_arg in file "stdlib.ml", line 30, characters 20-45
    Called from Conan__Fmt.go in file "src/fmt.ml", line 618, characters 24-44
    Called from Conan__Fmt.ty_of_string in file "src/fmt.ml", line 638, characters 18-30
    Called from Conan__Tree.key_of_ty in file "src/tree.ml", line 195, characters 21-50
    Called from Conan__Tree.format_of_ty in file "src/tree.ml", line 242, characters 18-38
    Called from Conan__Process.process_fmt in file "src/process.ml", line 16, characters 31-51
    Called from Conan__Process.process.(fun) in file "src/process.ml", line 53, characters 25-54
    Called from Conan__Process.descending_walk.iter in file "src/process.ml", line 131, characters 8-68
    Called from Conan__Process.descending_walk.iter.(fun) in file "src/process.ml", line 134, characters 12-69
    Called from Conan__Process.descending_walk.iter.(fun) in file "src/process.ml", line 134, characters 12-69
    Called from Conan_string.run in file "string/conan_string.ml", line 148, characters 25-79
    Called from Dune__exe__Fuzz.(fun) in file "fuzz/fuzz.ml", line 33, characters 8-38
    Called from Crowbar.gen_apply.go.(fun) in file "src/crowbar.ml", line 325, characters 16-19

I tried submitting a PR but I don't quite understand where the u is coming from.

Opam sandboxing issues

On a new opam switch in the master branch of conan I get the following error when installing conan:

Entering directory '/home/reynir/workspace/conan'
Copying to _destdir/home/reynir/workspace/conan/_opam/lib/conan/META
Error: mkdir(_destdir): Read-only file system

While in another opam switch installing conan from opam results in a different but related error:

Entering directory '/home/reynir/workspace/builder-web'
Error: Unknown package conan!
Fatal error: exception Sys_error("_build/.filesystem-clock: Read-only file system")
Raised by primitive operation at Stdlib.open_out_gen in file "stdlib.ml", line 331, characters 29-55
Called from Stdune__io.Make.with_file_out in file "otherlibs/stdune/io.ml", line 102, characters 17-43
Called from Dune_engine__cached_digest.get_current_filesystem_time in file "src/dune_engine/cached_digest.ml", line 80, characters 2-38
Called from Dune_engine__cached_digest.delete_very_recent_entries in file "src/dune_engine/cached_digest.ml", line 94, characters 12-42
Called from Dune_engine__cached_digest.dump.(fun) in file "src/dune_engine/cached_digest.ml", line 117, characters 8-37
Called from Stdune__exn.protectx in file "otherlibs/stdune/exn.ml", line 12, characters 8-11
Re-raised at Stdune__exn.protectx in file "otherlibs/stdune/exn.ml", line 18, characters 4-11
Called from Stdlib.at_exit.new_exit in file "stdlib.ml", line 560, characters 59-63
Called from Stdlib.do_at_exit in file "stdlib.ml" (inlined), line 566, characters 20-61
Called from Stdlib.exit in file "stdlib.ml", line 569, characters 2-15
Called from Main in file "bin/main.ml", line 100, characters 4-10

Make a release

I'm confident that we can make a beta release of this project even if the tool is not perfect but we need to bring some feedbacks at this stage to improve the tool. Currently, it works for unikernels as you can find here. By this way, we can replace smoothly our old good ocaml-magic-mime. WDYT @mirage/core?

Update the database

The last version of file added several things into the database. We must be in-sync with what they provides.

Generate a map between MIME types and extensions

We are able to introspect the database and produce from it the same things than what ocaml-magic-mime does. For some usecases, only a map between extensions and MIME types is relevant (the recognition is not). It will be nice to deliver a new package which does exactly what ocaml-magic-mime but with a up-to-date and more complete databse.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.