Git Product home page Git Product logo

ocaml-docker-scripts's Introduction

OCaml and OPAM Docker scripts

This repository uses the OCaml Dockerfile library to generate a series of Dockerfiles for various combinations of OCaml and the OPAM package manager. There are a set of small scripts that output all the combinations and are easy to modify, extend or duplicate for your own use.

opam install docker-scripts

The script will then be installed in:

`opam config var bin`/ocaml-docker-scripts

They are all executed directly as a shell script by using the OCamlScript engine. The installed scripts are:

  • dockerfile-ocaml: installs base OCaml packages
  • dockerfile-opam: installs OPAM and OCaml switches
  • dockerfile-archive: builds an OPAM source package archive and HTTP server
  • dockerfile-core: builds the Jane Street Core library suite
  • dockerfile-coq: builds the Coq compiler and adds its OPAM remote
  • dockerfile-bulk: constructs the OPAM bulk build scripts

Docker Repostories

The generated Dockerfiles are split into a sequence of containers that build on each other, making it easy to pick the ones you need for your own purposes. The default behaviour is to output the files into independent Git repositories:

  • docker-ocaml-build is the base OCaml compiler and Camlp4 added on top of various Linux distributions.
  • docker-opam-build layers the OPAM package manager over this image, and initialises it. The opam-installext OPAM plugin is also globally installed, so external library dependencies can also be automatically installed in all of the OS variants with a single command (opam installext ssl).
  • docker-opam-core-build then installs all the libraries needed by Real World OCaml using the docker-opam-build base, such as Core, Async, Menhir and Cohttp.

The separate Git trees are tracked as Git submodules from this repository, and the Makefile has utility targets to run operations across all of them. There are automated builds triggered from pushes to this repository from the Docker Hub:

  • docker pull avsm/docker-ocaml-build (link)
  • docker pull avsm/docker-opam-build (link)
  • docker pull avsm/docker-opam-core-build (link)

Automated Builds

These images can also be used as the basis of regular automated health checks across the OPAM repository by doing bulk builds.

OPAM Package builds

The bulk-build/ directory contains the scripts that trigger a bulk build of the OPAM database across a cluster. They work by generating a large Makefile which runs and logs an individual package across different OCaml versions and distributions (primarily Ubuntu, Debian, and CentOS).

Mirage OS builds

The is-mirage-broken repository is an example of an external use of these images. It builds and runs the MirageOS regularly across all the variations provided here, and pushes the results upstream to a logging repository.

You can (and are encouraged) to get in touch if you make use of these Docker images for similar regular testing of your own projects. If you are willing to triage the results, get in touch with Anil Madhavapeddy to add your library to the regular testing done via Rackspace virtual machines (kindly provided by them as part of their Open Source outreach program).

ocaml-docker-scripts's People

Contributors

avsm avatar

Watchers

James Cloos avatar Takuma Ishikawa avatar

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.