aboutsummaryrefslogtreecommitdiff
path: root/dev/ci
AgeCommit message (Collapse)Author
2018-09-25overlay to test elpi 1.1Enrico Tassi
2018-09-25elpi 1.1.0Enrico Tassi
2018-09-24Merge PR #8520: [ci] [docker] Move to OPAM 2.0Gaëtan Gilbert
2018-09-24[ci] [docker] Move to OPAM 2.0Emilio Jesus Gallego Arias
The OPAM 1.2 repository has been frozen, thus we must use OPAM 2.0 if we want to get newer versions of packages / compilers. For now we must perform a manual install of OPAM as no packages for Ubuntu 18.04 exist. Note that this means nothing about the installability of Coq itself, whose OPAM repository should remain in 1.2 format for quite a long period.
2018-09-24Merge PR #8519: Issue #8514 windows ci failuresThéo Zimmermann
2018-09-21Use unique names in windows CI for cygwin and coq install folderMichael Soegtrop
Don't zip artifacts but create an artifact folder structure
2018-09-21Merge commit 6a8c37c02504463afaa677641d75d9977020edf6 Windows buildfile ↵Michael Soegtrop
cleanup and stability and logging enhancements from v8.8
2018-09-21[dune] [configure] Allow to set prefix using environment variable.Emilio Jesus Gallego Arias
This is a hack to enable correct OPAM building, the medium-term plan is to avoid having to set a prefix at configure time but instead using a set of rules to locate the Coq library. We use `(env_var ...)` in a dependency rule, which a feature of Dune 1.2
2018-09-20Update minimum required dependency versions of Sphinx doc.Théo Zimmermann
The minimum required versions of the Sphinx-related (and ANTLR) Python packages for Coq 8.10 were chosen as the lower bound between what is currently in Debian Buster and in NixOS 18.09 Jellyfish (in practice the lower bound was always met by NixOS 18.09 Jellyfish). These minimum required versions were documented. In the docker image used by GitLab CI, we install these Python packages through pip as this allows us to pin them to these specific versions. In Travis, we let them unspecified to always test the latest versions. Finally, we also add the new dependencies of the Sphinx PDF manual.
2018-09-19Merge PR #7257: Fixing yet a source of dependency on alphabetic order in ↵Pierre-Marie Pédrot
unification.
2018-09-17Merge PR #8053: [dune] Add apidoc target using `odoc`Gaëtan Gilbert
2018-09-15Overlay for cross-crypto.Hugo Herbelin
2018-09-10[dune] Add apidoc target using `odoc`Emilio Jesus Gallego Arias
We build the `@doc` target in the `dune` job: - The documentation can be found in `_build/default/_doc/` - We had to fix a couple of quoting problems.
2018-09-10[ci] [docker] Add more dependencies for Dune-aware jobs.Emilio Jesus Gallego Arias
- odoc: used to generate the ML API documentation by Dune's `@doc` target. - dune-release: Automatic OPAM package generation and release. Both packages require OCaml >= 4.02 thus installing on edge switches only.
2018-09-10Ltac2 overlay.Hugo Herbelin
2018-09-05[build] Preliminary support for building Coq with `dune`.Emilio Jesus Gallego Arias
[Dune](https://github.com/ocaml/dune) is a compositional declarative build system for OCaml. It provides automatic generation of `version.ml`, `.merlin`, `META`, `opam`, API documentation; install management; easy integration with external libraries, test runners, and modular builds. In particular, Dune uniformly handles components regardless whether they live in, or out-of-tree. This greatly simplifies cases where a plugin [or CoqIde] is checked out in the current working copy but then distributed separately [and vice-versa]. Dune can thus be used as a more flexible `coq_makefile` replacement. For now we provide experimental support for a Dune build. In order to build Coq + the standard library with Dune type: ``` $ make -f Makefile.dune world ``` This PR includes a preliminary, developer-only preview of Dune for Coq. There is still ongoing work, see https://github.com/coq/coq/issues/8052 for tracking status towards full support. ## Technical description. Dune works out of the box with Coq, once we have fixed some modularity issues. The main remaining challenge was to support `.vo` files. As Dune doesn't support custom build rules yet, to properly build `.vo` files we provide a small helper script `tools/coq_dune.ml`. The script will scan the Coq library directories and generate the corresponding rules for `.v -> .vo` and `.ml4 -> .ml` builds. The script uses `coqdep` as to correctly output the dependencies of `.v` files. `coq_dune` is akin to `coq_makefile` and should be able to be used to build Coq projects in the future. Due to this pitfall, the build process has to proceed in three stages: 1) build `coqdep` and `coq_dune`; 2) generate `dune` files for `theories` and `plugins`; 3) perform a regular build with all targets are in scope. ## FAQ ### Why Dune? Coq has a moderately complex build system and it is not a secret that many developer-hours have been spent fighting with `make`. In particular, the current `make`-based system does offer poor support to verify that the current build rules and variables are coherent, and requires significant manual, error-prone. Many variables must be passed by hand, duplicated, etc... Additionally, our make system offers poor integration with now standard OCaml ecosystem tools such as `opam`, `ocamlfind` or `odoc`. Another critical point is build compositionality. Coq is rich in 3rd party contributions, and a big shortcoming of the current make system is that it cannot be used to build these projects; requiring us to maintain a custom tool, `coq_makefile`, with the corresponding cost. In the past, there has been some efforts to migrate Coq to more specialized build systems, however these stalled due to a variety of reasons. Dune, is a declarative, OCaml-specific build tool that is on the path to become the standard build system for the OCaml ecosystem. Dune seems to be a good fit for Coq well: it is well-supported, fast, compositional, and designed for large projects. ### Does Dune replace the make-based build system? The current, make-based build system is unmodified by this PR and kept as the default option. However, Dune has the potential ### Is this PR complete? What does it provide? This PR is ready for developer preview and feedback. The build system is functional, however, more work is necessary in order to make Dune the default for Coq. The main TODOs are tracked at https://github.com/coq/coq/issues/8052 This PR allows developers to use most of the features of Dune today: - Modular organization of the codebase; each component is built only against declared dependencies so components are checked for containment more strictly. - Hygienic builds; Dune places all artifacts under `_build`. - Automatic generation of `.install` files, simplified OPAM workflow. - `utop` support, `-opaque` in developer mode, etc... - `ml4` files are handled using `coqp5`, a native-code customized camlp5 executable which brings much faster `ml4 -> ml` processing. ### What dependencies does Dune require? Dune doesn't depend on any 3rd party package other than the OCaml compiler. ### Some Benchs: ``` $ /usr/bin/time make DUNEOPT="-j 1000" -f Makefile.dune states 59.50user 18.81system 0:29.83elapsed 262%CPU (0avgtext+0avgdata 302996maxresident)k 0inputs+646632outputs (0major+4893811minor)pagefaults 0swaps $ /usr/bin/time sh -c "./configure -local -native-compiler no && make -j states" 88.21user 23.65system 0:32.96elapsed 339%CPU (0avgtext+0avgdata 304992maxresident)k 0inputs+1051680outputs (0major+5300680minor)pagefaults 0swaps ```
2018-09-04Merge PR #7684: [doc] Build ML API documentation artifact.Gaëtan Gilbert
2018-09-03Merge PR #8064: Numeral notation (revisited again)Hugo Herbelin
2018-09-03[doc] Build ML API documentation artifact.Emilio Jesus Gallego Arias
This is not optimal for we have to rebuild the `.cmi` as `ocamldoc` cannot yet use the `_install_ci/` directory. Overall the `mli` documentation is in a sorry state, however, I think this is a first step in order to improve it. Note that the `ml-doc` target seems broken in OCaml 4.07.0, needs investigation. cc: #7155
2018-09-03Merge PR #8376: Source basic overlay after user overlays to fix #8375 ↵Gaëtan Gilbert
following #8348.
2018-09-03Merge PR #7085: Turn the kernel reduction sharing flag into an argument ↵Maxime Dénès
passed in the cache
2018-09-01Source basic overlay after user overlays to fix #8375 following #8348.Théo Zimmermann
2018-09-01Add overlay for HoTTJason Gross
The overlay for HoTT should be merged right after this PR.
2018-09-01Merge PR #8348: Download tarball instead of cloning external projects.Emilio Jesus Gallego Arias
2018-08-31Merge PR #8346: Clean-up Travis folds.Gaëtan Gilbert
2018-08-31Merge PR #8351: [ci] [docker] Update base Dune version.Gaëtan Gilbert
2018-08-31Download tarball instead of cloning external projects (when $CI is set).Théo Zimmermann
This allows to use fixed commits and not just branches or tags. We keep using git clone when $FORCE_GIT is set (for projects on gforge.inria.fr and projects pulling dependencies through git submodules). fiat-parsers also calls git submodule, but inside its own Makefile.
2018-08-31[ci] Fix QuickChick by adding new simple-io dependency.Théo Zimmermann
2018-08-30[ci] [docker] Update Dune and Elpi versions.Emilio Jesus Gallego Arias
We'd like to use `(lang 1.1)` features. Elpi needs update as recent `ppx_tools_versioned` changes broke it.
2018-08-28[ci-fiat-crypto] Build c-filesJason Gross
This tests the outputs of extraction, to some extent.
2018-08-28Clean-up Travis folds.Théo Zimmermann
This has become mostly garbage since GitLab CI became our main CI platform.
2018-08-24Split up fiat-crypto CI into two targetsJason Gross
There is the new pipeline, and the old pipeline. Most of what they share in common is the (very large) library of lemmas about `Z`. As per the discussion in https://github.com/coq/coq/pull/8064#issuecomment-413474176 through https://github.com/coq/coq/pull/8064#issuecomment-413793143
2018-08-01Update documentation on GitLab CI to reflect recent changes.Théo Zimmermann
2018-07-27[ci] Remove CircleCI setup.Emilio Jesus Gallego Arias
GitLab setup is quite stable these days thanks to the work of many people and `coqbot`. We decided to keep CircleCI support for a while as a safeguard in case something happened in the migration to GitLab, but these days we are just wasting resources to them and to us. As I'm afraid CircleCI won't scale for us, the time to remove it has arrived. Still, CircleCI had some awesome functionality that GitLab's CI doesn't offer yet, see the links at: https://github.com/coq/coq/issues/6919#issuecomment-395885573 - https://gitlab.com/gitlab-org/gitlab-ce/issues/29347 - https://gitlab.com/gitlab-org/gitlab-ce/issues/35222 - https://gitlab.com/gitlab-org/gitlab-ce/issues/41947 - https://gitlab.com/gitlab-org/gitlab-ce/issues/47063
2018-07-26Adding an overlay for Mtac2.Pierre-Marie Pédrot
2018-07-25Merge PR #7859: Remove himsg.pr_puniverses, use @{} for universe printing in ↵Pierre-Marie Pédrot
errors
2018-07-25Merge PR #734: [travis] Also run coqchk on HoTTEmilio Jesus Gallego Arias
2018-07-25Add overlay for EquationsGaëtan Gilbert
2018-07-25Merge PR #8063: Direct implementation of Ascii.eqb and String.eqb (take 2)Hugo Herbelin
2018-07-24[travis] Also run coqchk on HoTTJason Gross
2018-07-24Add overlay for Equations.Gaëtan Gilbert
2018-07-17Add overlay for Coq-Equations for QuestionMark.Siddharth Bhat
The changed QuestionMark structure breaks Coq-Equations. Add an overlay to fix this.
2018-07-16Add overlay for QuickChickJason Gross
2018-07-12Merge PR #8051: Clean-up user-overlays folder.Emilio Jesus Gallego Arias
2018-07-12Clean-up user-overlays folder.Théo Zimmermann
2018-07-11[ci] Upgrade edge OCaml to 4.07.0 and Dune to 1.0.0Emilio Jesus Gallego Arias
- We update the OCaml version used in the base CI image. - Windows / OSX image building is also updated to use newer OCaml. - We also update Dune to 1.0.0.
2018-07-07Add an overlay.Pierre-Marie Pédrot
2018-07-05Merge PR #7746: Many small cleanups removing unused arguments and functionsPierre-Marie Pédrot
2018-07-04[ci] Avoid annoying detached head warning.Emilio Jesus Gallego Arias
2018-07-03Merge PR #7978: [ci] [docker] Make sure we don't install optional packages ↵Gaëtan Gilbert
with apt.