aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml9
-rw-r--r--dev/ci/docker/bionic_coq/Dockerfile34
-rw-r--r--doc/sphinx/README.rst33
-rw-r--r--doc/tools/coqrst/coqdomain.py20
4 files changed, 52 insertions, 44 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 67ee6a70b4..15fcdf371a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -9,7 +9,7 @@ stages:
variables:
# Format: $IMAGE-V$DATE [Cache is not used as of today but kept here
# for reference]
- CACHEKEY: "bionic_coq-V2018-09-21-V2"
+ CACHEKEY: "bionic_coq-V2018-09-23-V01"
IMAGE: "$CI_REGISTRY_IMAGE:$CACHEKEY"
# By default, jobs run in the base switch; override to select another switch
OPAM_SWITCH: "base"
@@ -40,8 +40,8 @@ before_script:
- printenv -0 | sort -z | tr '\0' '\n'
- declare -A switch_table
- switch_table=( ["base"]="$COMPILER" ["edge"]="$COMPILER_EDGE" )
- - opam switch -y "${switch_table[$OPAM_SWITCH]}$OPAM_VARIANT"
- - eval $(opam config env)
+ - opam switch set -y "${switch_table[$OPAM_SWITCH]}$OPAM_VARIANT"
+ - eval $(opam env)
- opam list
- opam config list
@@ -288,13 +288,12 @@ doc:ml-api:ocamldoc:
- dev/ocamldoc
doc:ml-api:odoc:
- <<: *dune-template
stage: test
dependencies:
- build:egde:dune:dev
+ script: make -f Makefile.dune apidoc
variables:
OPAM_SWITCH: edge
- DUNE_TARGET: apidoc
artifacts:
name: "$CI_JOB_NAME"
paths:
diff --git a/dev/ci/docker/bionic_coq/Dockerfile b/dev/ci/docker/bionic_coq/Dockerfile
index d943795258..b04161918e 100644
--- a/dev/ci/docker/bionic_coq/Dockerfile
+++ b/dev/ci/docker/bionic_coq/Dockerfile
@@ -1,4 +1,4 @@
-# CACHEKEY: "bionic_coq-V2018-09-21-V2"
+# CACHEKEY: "bionic_coq-V2018-09-23-V01"
# ^^ Update when modifying this file.
FROM ubuntu:bionic
@@ -8,7 +8,7 @@ ENV DEBIAN_FRONTEND="noninteractive"
RUN apt-get update -qq && apt-get install --no-install-recommends -y -qq \
# Dependencies of the image, the test-suite and external projects
- m4 automake autoconf time wget rsync git gcc-multilib opam \
+ m4 automake autoconf time wget rsync git gcc-multilib build-essential unzip \
# Dependencies of lablgtk (for CoqIDE)
libgtk2.0-dev libgtksourceview2.0-dev \
# Dependencies of stdlib and sphinx doc
@@ -21,16 +21,19 @@ RUN apt-get update -qq && apt-get install --no-install-recommends -y -qq \
RUN pip3 install sphinx==1.7.8 sphinx_rtd_theme==0.2.5b2 \
antlr4-python3-runtime==4.7.1 sphinxcontrib-bibtex==0.4.0
+# We need to install OPAM 2.0 manually for now.
+RUN wget https://github.com/ocaml/opam/releases/download/2.0.0/opam-2.0.0-x86_64-linux -O /usr/bin/opam && chmod 755 /usr/bin/opam
+
# Basic OPAM setup
ENV NJOBS="2" \
+ OPAMJOBS="2" \
OPAMROOT=/root/.opamcache \
- OPAMROOTISOK="true"
+ OPAMROOTISOK="true" \
+ OPAMYES="true"
# Base opam is the set of base packages required by Coq
ENV COMPILER="4.02.3"
-RUN opam init -a -y -j $NJOBS --compiler="$COMPILER" default https://opam.ocaml.org && eval $(opam config env) && opam update
-
# Common OPAM packages.
# `num` does not have a version number as the right version to install varies
# with the compiler version.
@@ -41,12 +44,15 @@ ENV BASE_OPAM="num ocamlfind.1.8.0 dune.1.2.1 ounit.2.0.8" \
ENV CAMLP5_VER="6.14" \
COQIDE_OPAM="lablgtk.2.18.5 conf-gtksourceview.2"
-RUN opam switch -y -j $NJOBS "$COMPILER" && eval $(opam config env) && \
- opam install -j $NJOBS $BASE_OPAM camlp5.$CAMLP5_VER $COQIDE_OPAM $CI_OPAM
+# The separate `opam install ocamlfind` workarounds an OPAM repository bug in 4.02.3
+RUN opam init -a --disable-sandboxing --compiler="$COMPILER" default https://opam.ocaml.org && eval $(opam env) && opam update && \
+ opam install ocamlfind.1.8.0 && \
+ opam install $BASE_OPAM camlp5.$CAMLP5_VER $COQIDE_OPAM $CI_OPAM
# base+32bit switch
-RUN opam switch -y -j $NJOBS "${COMPILER}+32bit" && eval $(opam config env) && \
- opam install -j $NJOBS $BASE_OPAM camlp5.$CAMLP5_VER
+RUN opam switch create "${COMPILER}+32bit" && eval $(opam env) && \
+ opam install ocamlfind.1.8.0 && \
+ opam install $BASE_OPAM camlp5.$CAMLP5_VER
# EDGE switch
ENV COMPILER_EDGE="4.07.0" \
@@ -54,10 +60,12 @@ ENV COMPILER_EDGE="4.07.0" \
COQIDE_OPAM_EDGE="lablgtk.2.18.6 conf-gtksourceview.2" \
BASE_OPAM_EDGE="odoc.1.2.0 dune-release.0.3.0"
-RUN opam switch -y -j $NJOBS $COMPILER_EDGE && eval $(opam config env) && \
- opam install -j $NJOBS $BASE_OPAM $BASE_OPAM_EDGE camlp5.$CAMLP5_VER_EDGE $COQIDE_OPAM_EDGE
+RUN opam switch create $COMPILER_EDGE && eval $(opam env) && \
+ opam install $BASE_OPAM $BASE_OPAM_EDGE camlp5.$CAMLP5_VER_EDGE $COQIDE_OPAM_EDGE
# EDGE+flambda switch, we install CI_OPAM as to be able to use
# `ci-template-flambda` with everything.
-RUN opam switch -y -j $NJOBS "${COMPILER_EDGE}+flambda" && eval $(opam config env) && \
- opam install -j $NJOBS $BASE_OPAM $BASE_OPAM_EDGE camlp5.$CAMLP5_VER_EDGE $COQIDE_OPAM_EDGE $CI_OPAM
+RUN opam switch create "${COMPILER_EDGE}+flambda" && eval $(opam env) && \
+ opam install $BASE_OPAM $BASE_OPAM_EDGE camlp5.$CAMLP5_VER_EDGE $COQIDE_OPAM_EDGE $CI_OPAM
+
+RUN opam clean -a -c
diff --git a/doc/sphinx/README.rst b/doc/sphinx/README.rst
index c1f3f7b4d0..904945a58d 100644
--- a/doc/sphinx/README.rst
+++ b/doc/sphinx/README.rst
@@ -114,32 +114,23 @@ Here is the list of all objects of the Coq domain (The symbol :black_nib: indica
Raised if :n:`@tactic` does not fully solve the goal.
-``.. flag::`` :black_nib: A Coq flag (i.e a binary-valued setting).
+``.. flag::`` :black_nib: A Coq flag (i.e. a boolean setting).
Example::
.. flag:: Nonrecursive Elimination Schemes
- This option controls whether types declared with the keywords
- :cmd:`Variant` and :cmd:`Record` get an automatic declaration of the
+ Controls whether types declared with the keywords
+ :cmd:`Variant` and :cmd:`Record` get an automatic declaration of
induction principles.
-``.. opt::`` :black_nib: A Coq option (with a string or numeric value; use "flag" for binary options)
+``.. opt::`` :black_nib: A Coq option (a setting with non-boolean value, e.g. a string or numeric value).
Example::
- .. opt:: Printing Width @num
- :name: Printing Width
+ .. opt:: Hyps Limit @num
+ :name Hyps Limit
- This command sets which left-aligned part of the width of the screen is used
- for display. At the time of writing this documentation, the default value
- is 78.
-
-``.. table::`` :black_nib: A Coq table (i.e a setting whose value is a set).
- Example::
-
- .. table:: Search Blacklist @string
- :name: Search Blacklist
-
- This table controls ...
+ Controls the maximum number of hypotheses displayed in goals after
+ application of a tactic.
``.. prodn::`` A grammar production.
This is useful if you intend to document individual grammar productions.
@@ -159,6 +150,14 @@ Here is the list of all objects of the Coq domain (The symbol :black_nib: indica
.. prodn:: term += let: @pattern := @term in @term
.. prodn:: occ_switch ::= { {? + %| - } {* @num } }
+``.. table::`` :black_nib: A Coq table, i.e. a setting that is a set of values.
+ Example::
+
+ .. table:: Search Blacklist @string
+ :name: Search Blacklist
+
+ Controls ...
+
``.. tacn::`` :black_nib: A tactic, or a tactic notation.
Example::
diff --git a/doc/tools/coqrst/coqdomain.py b/doc/tools/coqrst/coqdomain.py
index 7992c10abb..97dabbf815 100644
--- a/doc/tools/coqrst/coqdomain.py
+++ b/doc/tools/coqrst/coqdomain.py
@@ -333,14 +333,15 @@ class TacticNotationVariantObject(TacticNotationObject):
annotation = "Variant"
class OptionObject(NotationObject):
- """A Coq option.
+ """A Coq option (a setting with non-boolean value, e.g. a string or numeric value).
Example::
.. opt:: Hyps Limit @num
+ :name Hyps Limit
- This option controls the maximum number of hypotheses displayed in goals after
- the application of a tactic.
+ Controls the maximum number of hypotheses displayed in goals after
+ application of a tactic.
"""
subdomain = "opt"
index_suffix = "(opt)"
@@ -351,14 +352,14 @@ class OptionObject(NotationObject):
class FlagObject(NotationObject):
- """A Coq flag, i.e. a boolean Option.
+ """A Coq flag (i.e. a boolean setting).
Example::
.. flag:: Nonrecursive Elimination Schemes
- This flag controls whether types declared with the keywords
- :cmd:`Variant` and :cmd:`Record` get an automatic declaration of the
+ Controls whether types declared with the keywords
+ :cmd:`Variant` and :cmd:`Record` get an automatic declaration of
induction principles.
"""
subdomain = "flag"
@@ -374,9 +375,10 @@ class TableObject(NotationObject):
Example::
- .. table:: Search Blacklist
+ .. table:: Search Blacklist @string
+ :name: Search Blacklist
- This table controls ...
+ Controls ...
"""
subdomain = "table"
index_suffix = "(table)"
@@ -1192,6 +1194,6 @@ def setup(app):
# contents of ``env.domaindata['coq']`` change. See
# `https://github.com/sphinx-doc/sphinx/issues/4460`.
meta = { "version": "0.1",
- "env_version": 1,
+ "env_version": 2,
"parallel_read_safe": True }
return meta