pax_global_header 0000666 0000000 0000000 00000000064 15230417534 0014516 g ustar 00root root 0000000 0000000 52 comment=589c61680d8f2f336fa702fefc7ad46f3090d47e
LPCIC-coq-elpi-eb449d7/ 0000775 0000000 0000000 00000000000 15230417534 0014503 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/.gitattributes 0000664 0000000 0000000 00000000040 15230417534 0017370 0 ustar 00root root 0000000 0000000 *.elpi linguist-language=prolog
LPCIC-coq-elpi-eb449d7/.github/ 0000775 0000000 0000000 00000000000 15230417534 0016043 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/.github/workflows/ 0000775 0000000 0000000 00000000000 15230417534 0020100 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/.github/workflows/ci.yml 0000664 0000000 0000000 00000004301 15230417534 0021214 0 ustar 00root root 0000000 0000000 # This is a basic workflow to help you get started with Actions
name: CI
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches: [ master ]
tags: [ "v*.*.*" ]
pull_request:
branches: [ master ]
jobs:
docker:
runs-on: ubuntu-latest # container actions require GNU/Linux
strategy:
matrix:
image:
- 'rocq/rocq-prover:dev'
- 'rocq/rocq-prover:9.2'
- 'rocq/rocq-prover:9.1'
- 'rocq/rocq-prover:9.0'
profile:
- dev
include:
- image: 'rocq/rocq-prover:9.1'
profile: fatalwarnings
fail-fast: false # don't stop jobs if one fails
steps:
- uses: actions/checkout@v3
- uses: coq-community/docker-coq-action@v1
with:
opam_file: 'rocq-elpi.opam'
custom_image: ${{ matrix.image }}
install: |
sudo apt-get update -y -q
opam pin add -n -y -k path rocq-elpi $WORKDIR
opam pin add -n -y -k path rocq-elpi-json $WORKDIR
opam pin add -n -y -k path rocq-elpi-xml $WORKDIR
opam update -y
opam install --confirm-level=unsafe-yes -j 2 rocq-elpi --deps-only
opam install --confirm-level=unsafe-yes -j 2 rocq-elpi-json --deps-only
opam install --confirm-level=unsafe-yes -j 2 rocq-elpi-xml --deps-only
uninstall: |
opam remove -y rocq-elpi
opam remove -y rocq-elpi-json
opam remove -y rocq-elpi-xml
before_script: |
sudo chmod -R a+w .
if [ "${{ matrix.profile }}" = "fatalwarnings" ]; then sed -i 's/-A/+A/' dune; fi
script: |
opam install -y -v -j 2 rocq-elpi
opam install -y -v -j 2 rocq-elpi-json
opam install -y -v -j 2 rocq-elpi-xml
opam list
after_script: |
make all-examples
make all-tests
export: 'OPAMWITHTEST OPAMIGNORECONSTRAINTS OPAMVERBOSE' # space-separated list of variables
env:
OPAMWITHTEST: 'true'
#OPAMIGNORECONSTRAINTS: 'rocq-core'
OPAMVERBOSE: '1'
LPCIC-coq-elpi-eb449d7/.github/workflows/doc.yml 0000664 0000000 0000000 00000002520 15230417534 0021367 0 ustar 00root root 0000000 0000000 # This is a basic workflow to help you get started with Actions
name: DOC
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
name: Build doc
runs-on: ubuntu-latest
steps:
- name: workaround bug
run: sudo apt-get update
- name: checkout
uses: actions/checkout@v3
- name: setup ocaml
uses: ocaml/setup-ocaml@v3
with:
ocaml-compiler: 4.14.2
- name: install deps
run: |
export OPAMYES=true
opam repo add coq https://coq.inria.fr/opam/released
opam repo add coq-dev https://coq.inria.fr/opam/core-dev
opam repo add extra-dev https://coq.inria.fr/opam/extra-dev
opam update
opam install rocq-core.9.0.0 vsrocq-language-server coq-core
opam install ./rocq-elpi.opam
sudo apt-get update
sudo apt-get install python3-pip -y
- name: build doc
run: opam exec -- make doc
- name: Save artifact
uses: actions/upload-artifact@v4
with:
path: doc
- name: deploy
uses: JamesIves/github-pages-deploy-action@4.1.4
if: ${{ github.ref == 'refs/heads/master' }}
with:
branch: gh-pages
folder: doc
LPCIC-coq-elpi-eb449d7/.github/workflows/nix-action-rocq-9.0.yml 0000664 0000000 0000000 00000344535 15230417534 0024160 0 ustar 00root root 0000000 0000000 jobs:
bignums:
needs:
- rocq-core
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (bignums)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"bignums\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "bignums"
coq:
needs:
- rocq-core
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (coq)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"coq\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "coq"
coq-elpi:
needs:
- rocq-core
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (coq-elpi)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"coq-elpi\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "coq-elpi"
coqeal:
needs:
- coq
- mathcomp-ssreflect
- mathcomp-algebra
- bignums
- multinomials
- mathcomp-real-closed
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (coqeal)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"coqeal\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-ssreflect'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-ssreflect"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: bignums'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "bignums"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: multinomials'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "multinomials"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-real-closed'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-real-closed"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "coqeal"
hierarchy-builder:
needs:
- rocq-core
- coq-elpi
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (hierarchy-builder)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"hierarchy-builder\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq-elpi'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "coq-elpi"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "hierarchy-builder"
jasmin:
needs:
- coq
- mathcomp-word
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (jasmin)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"jasmin\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-word'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-word"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: ITree'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "ITree"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "jasmin"
mathcomp:
needs:
- rocq-core
- mathcomp-character
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-character'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-character"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp"
mathcomp-algebra:
needs:
- rocq-core
- mathcomp-order
- mathcomp-fingroup
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-algebra)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-algebra\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-order'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-order"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-fingroup'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-fingroup"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: micromega-plugin'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "micromega-plugin"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-algebra"
mathcomp-algebra-tactics:
needs:
- coq
- mathcomp-ssreflect
- mathcomp-algebra
- coq-elpi
- mathcomp-zify
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-algebra-tactics)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-algebra-tactics\" \\\n --dry-run 2>
err > out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"\
Error: getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-ssreflect'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-ssreflect"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq-elpi'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "coq-elpi"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-zify'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-zify"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-algebra-tactics"
mathcomp-analysis:
needs:
- rocq-core
- mathcomp-reals
- mathcomp-field
- mathcomp-bigenough
- mathcomp-real-closed
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-analysis)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-analysis\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-reals'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-reals"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-field'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-field"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-bigenough'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-bigenough"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-real-closed'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-real-closed"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-analysis"
mathcomp-analysis-stdlib:
needs:
- rocq-core
- mathcomp-analysis
- mathcomp-reals-stdlib
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-analysis-stdlib)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-analysis-stdlib\" \\\n --dry-run 2>
err > out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"\
Error: getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-analysis'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-analysis"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-reals-stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-reals-stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-analysis-stdlib"
mathcomp-bigenough:
needs:
- rocq-core
- mathcomp-boot
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-bigenough)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-bigenough\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-bigenough"
mathcomp-boot:
needs:
- rocq-core
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-boot)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-boot\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-boot"
mathcomp-character:
needs:
- rocq-core
- mathcomp-field
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-character)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-character\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-field'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-field"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-character"
mathcomp-classical:
needs:
- rocq-core
- mathcomp-algebra
- mathcomp-finmap
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-classical)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-classical\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-finmap'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-finmap"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-classical"
mathcomp-experimental-reals:
needs:
- rocq-core
- mathcomp-analysis
- mathcomp-bigenough
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-experimental-reals)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-experimental-reals\" \\\n --dry-run
2> err > out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo
\"Error: getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-analysis'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-analysis"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-bigenough'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-bigenough"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-experimental-reals"
mathcomp-field:
needs:
- rocq-core
- mathcomp-solvable
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-field)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-field\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-solvable'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-solvable"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-field"
mathcomp-fingroup:
needs:
- rocq-core
- mathcomp-boot
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-fingroup)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-fingroup\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-fingroup"
mathcomp-finmap:
needs:
- rocq-core
- mathcomp-boot
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-finmap)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-finmap\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-finmap"
mathcomp-order:
needs:
- rocq-core
- mathcomp-boot
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-order)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-order\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-order"
mathcomp-real-closed:
needs:
- rocq-core
- mathcomp-field
- mathcomp-bigenough
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-real-closed)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-real-closed\" \\\n --dry-run 2> err
> out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-field'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-field"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-bigenough'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-bigenough"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-real-closed"
mathcomp-reals:
needs:
- rocq-core
- mathcomp-classical
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-reals)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-reals\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-classical'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-classical"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-reals"
mathcomp-reals-stdlib:
needs:
- rocq-core
- mathcomp-reals
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-reals-stdlib)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-reals-stdlib\" \\\n --dry-run 2> err
> out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-reals'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-reals"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-reals-stdlib"
mathcomp-solvable:
needs:
- rocq-core
- mathcomp-algebra
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-solvable)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-solvable\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-solvable"
mathcomp-ssreflect:
needs:
- coq
- mathcomp-boot
- mathcomp-order
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-ssreflect)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-ssreflect\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-order'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-order"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-ssreflect"
mathcomp-word:
needs:
- coq
- mathcomp-algebra
- mathcomp-ssreflect
- mathcomp-fingroup
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-word)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-word\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-ssreflect'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-ssreflect"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-fingroup'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-fingroup"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-word"
mathcomp-zify:
needs:
- coq
- mathcomp-boot
- mathcomp-algebra
- mathcomp-fingroup
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-zify)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"mathcomp-zify\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-fingroup'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-fingroup"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-zify"
multinomials:
needs:
- coq
- mathcomp-boot
- mathcomp-algebra
- mathcomp-finmap
- mathcomp-fingroup
- mathcomp-bigenough
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (multinomials)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"multinomials\" \\\n --dry-run 2> err > out ||
(touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-finmap'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-finmap"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-fingroup'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-fingroup"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-bigenough'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "mathcomp-bigenough"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "multinomials"
rocq-core:
needs: []
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (rocq-core)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"rocq-core\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
rocq-elpi:
needs: []
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (rocq-elpi)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"rocq-elpi\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-elpi"
rocq-elpi-tests:
needs:
- rocq-core
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (rocq-elpi-tests)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"rocq-elpi-tests\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-elpi-tests"
rocq-elpi-tests-stdlib:
needs:
- rocq-core
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (rocq-elpi-tests-stdlib)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"rocq-elpi-tests-stdlib\" \\\n --dry-run 2> err
> out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-elpi-tests-stdlib"
stdlib:
needs:
- rocq-core
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (stdlib)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.0\" --argstr job \"stdlib\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.0" --argstr job "stdlib"
name: Nix CI for bundle rocq-9.0
on:
pull_request:
paths:
- .github/workflows/nix-action-rocq-9.0.yml
pull_request_target:
paths-ignore:
- .github/workflows/nix-action-rocq-9.0.yml
types:
- opened
- synchronize
- reopened
push:
branches:
- master
LPCIC-coq-elpi-eb449d7/.github/workflows/nix-action-rocq-9.1.yml 0000664 0000000 0000000 00000361675 15230417534 0024165 0 ustar 00root root 0000000 0000000 jobs:
bignums:
needs:
- rocq-core
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (bignums)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"bignums\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "bignums"
coq:
needs:
- rocq-core
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (coq)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"coq\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "coq"
coq-elpi:
needs:
- rocq-core
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (coq-elpi)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"coq-elpi\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "coq-elpi"
coqeal:
needs:
- coq
- mathcomp-ssreflect
- mathcomp-algebra
- bignums
- multinomials
- mathcomp-real-closed
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (coqeal)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"coqeal\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-ssreflect'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-ssreflect"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: bignums'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "bignums"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: multinomials'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "multinomials"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-real-closed'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-real-closed"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "coqeal"
hierarchy-builder:
needs:
- rocq-core
- coq-elpi
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (hierarchy-builder)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"hierarchy-builder\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq-elpi'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "coq-elpi"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "hierarchy-builder"
jasmin:
needs:
- coq
- mathcomp-word
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (jasmin)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"jasmin\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-word'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-word"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: ITree'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "ITree"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "jasmin"
mathcomp:
needs:
- rocq-core
- mathcomp-character
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-character'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-character"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp"
mathcomp-algebra:
needs:
- rocq-core
- mathcomp-order
- mathcomp-fingroup
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-algebra)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-algebra\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-order'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-order"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-fingroup'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-fingroup"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: micromega-plugin'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "micromega-plugin"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-algebra"
mathcomp-algebra-tactics:
needs:
- coq
- mathcomp-ssreflect
- mathcomp-algebra
- coq-elpi
- mathcomp-zify
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-algebra-tactics)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-algebra-tactics\" \\\n --dry-run 2>
err > out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"\
Error: getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-ssreflect'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-ssreflect"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq-elpi'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "coq-elpi"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-zify'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-zify"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-algebra-tactics"
mathcomp-analysis:
needs:
- rocq-core
- mathcomp-reals
- mathcomp-field
- mathcomp-bigenough
- mathcomp-real-closed
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-analysis)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-analysis\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-reals'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-reals"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-field'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-field"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-bigenough'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-bigenough"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-real-closed'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-real-closed"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-analysis"
mathcomp-analysis-stdlib:
needs:
- rocq-core
- mathcomp-analysis
- mathcomp-reals-stdlib
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-analysis-stdlib)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-analysis-stdlib\" \\\n --dry-run 2>
err > out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"\
Error: getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-analysis'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-analysis"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-reals-stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-reals-stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-analysis-stdlib"
mathcomp-bigenough:
needs:
- rocq-core
- mathcomp-boot
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-bigenough)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-bigenough\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-bigenough"
mathcomp-boot:
needs:
- rocq-core
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-boot)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-boot\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-boot"
mathcomp-character:
needs:
- rocq-core
- mathcomp-field
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-character)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-character\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-field'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-field"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-character"
mathcomp-classical:
needs:
- rocq-core
- mathcomp-algebra
- mathcomp-finmap
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-classical)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-classical\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-finmap'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-finmap"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-classical"
mathcomp-experimental-reals:
needs:
- rocq-core
- mathcomp-analysis
- mathcomp-bigenough
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-experimental-reals)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-experimental-reals\" \\\n --dry-run
2> err > out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo
\"Error: getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-analysis'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-analysis"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-bigenough'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-bigenough"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-experimental-reals"
mathcomp-field:
needs:
- rocq-core
- mathcomp-solvable
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-field)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-field\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-solvable'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-solvable"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-field"
mathcomp-fingroup:
needs:
- rocq-core
- mathcomp-boot
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-fingroup)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-fingroup\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-fingroup"
mathcomp-finmap:
needs:
- rocq-core
- mathcomp-boot
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-finmap)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-finmap\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-finmap"
mathcomp-order:
needs:
- rocq-core
- mathcomp-boot
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-order)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-order\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-order"
mathcomp-real-closed:
needs:
- rocq-core
- mathcomp-field
- mathcomp-bigenough
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-real-closed)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-real-closed\" \\\n --dry-run 2> err
> out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-field'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-field"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-bigenough'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-bigenough"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-real-closed"
mathcomp-reals:
needs:
- rocq-core
- mathcomp-classical
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-reals)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-reals\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-classical'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-classical"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-reals"
mathcomp-reals-stdlib:
needs:
- rocq-core
- mathcomp-reals
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-reals-stdlib)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-reals-stdlib\" \\\n --dry-run 2> err
> out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-reals'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-reals"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-reals-stdlib"
mathcomp-solvable:
needs:
- rocq-core
- mathcomp-algebra
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-solvable)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-solvable\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-solvable"
mathcomp-ssreflect:
needs:
- coq
- mathcomp-boot
- mathcomp-order
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-ssreflect)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-ssreflect\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-order'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-order"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-ssreflect"
mathcomp-word:
needs:
- coq
- mathcomp-algebra
- mathcomp-ssreflect
- mathcomp-fingroup
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-word)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-word\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-ssreflect'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-ssreflect"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-fingroup'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-fingroup"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-word"
mathcomp-zify:
needs:
- coq
- mathcomp-boot
- mathcomp-algebra
- mathcomp-fingroup
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-zify)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"mathcomp-zify\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-fingroup'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-fingroup"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-zify"
multinomials:
needs:
- coq
- mathcomp-boot
- mathcomp-algebra
- mathcomp-finmap
- mathcomp-fingroup
- mathcomp-bigenough
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (multinomials)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"multinomials\" \\\n --dry-run 2> err > out ||
(touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-finmap'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-finmap"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-fingroup'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-fingroup"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-bigenough'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-bigenough"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "multinomials"
odd-order:
needs:
- coq
- mathcomp-character
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (odd-order)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"odd-order\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-character'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "mathcomp-character"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "odd-order"
rocq-core:
needs: []
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (rocq-core)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"rocq-core\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
rocq-elpi:
needs: []
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (rocq-elpi)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"rocq-elpi\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-elpi"
rocq-elpi-tests:
needs:
- rocq-core
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (rocq-elpi-tests)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"rocq-elpi-tests\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-elpi-tests"
rocq-elpi-tests-stdlib:
needs:
- rocq-core
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (rocq-elpi-tests-stdlib)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"rocq-elpi-tests-stdlib\" \\\n --dry-run 2> err
> out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-elpi-tests-stdlib"
stdlib:
needs:
- rocq-core
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (stdlib)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"stdlib\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "stdlib"
trakt:
needs:
- coq
- coq-elpi
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (trakt)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.1\" --argstr job \"trakt\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq-elpi'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "coq-elpi"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.1" --argstr job "trakt"
name: Nix CI for bundle rocq-9.1
on:
pull_request:
paths:
- .github/workflows/nix-action-rocq-9.1.yml
pull_request_target:
paths-ignore:
- .github/workflows/nix-action-rocq-9.1.yml
types:
- opened
- synchronize
- reopened
push:
branches:
- master
LPCIC-coq-elpi-eb449d7/.github/workflows/nix-action-rocq-9.2.yml 0000664 0000000 0000000 00000304037 15230417534 0024153 0 ustar 00root root 0000000 0000000 jobs:
bignums:
needs:
- rocq-core
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (bignums)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"bignums\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "bignums"
coq:
needs:
- rocq-core
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (coq)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"coq\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "coq"
coq-elpi:
needs:
- rocq-core
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (coq-elpi)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"coq-elpi\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "coq-elpi"
hierarchy-builder:
needs:
- rocq-core
- coq-elpi
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (hierarchy-builder)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"hierarchy-builder\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq-elpi'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "coq-elpi"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "hierarchy-builder"
mathcomp:
needs:
- rocq-core
- mathcomp-character
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"mathcomp\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-character'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-character"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp"
mathcomp-algebra:
needs:
- rocq-core
- mathcomp-order
- mathcomp-fingroup
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-algebra)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"mathcomp-algebra\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-order'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-order"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-fingroup'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-fingroup"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: micromega-plugin'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "micromega-plugin"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-algebra"
mathcomp-analysis:
needs:
- rocq-core
- mathcomp-reals
- mathcomp-field
- mathcomp-bigenough
- mathcomp-real-closed
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-analysis)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"mathcomp-analysis\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-reals'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-reals"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-field'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-field"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-bigenough'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-bigenough"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-real-closed'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-real-closed"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-analysis"
mathcomp-bigenough:
needs:
- rocq-core
- mathcomp-boot
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-bigenough)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"mathcomp-bigenough\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-bigenough"
mathcomp-boot:
needs:
- rocq-core
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-boot)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"mathcomp-boot\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-boot"
mathcomp-character:
needs:
- rocq-core
- mathcomp-field
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-character)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"mathcomp-character\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-field'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-field"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-character"
mathcomp-classical:
needs:
- rocq-core
- mathcomp-algebra
- mathcomp-finmap
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-classical)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"mathcomp-classical\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-finmap'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-finmap"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-classical"
mathcomp-experimental-reals:
needs:
- rocq-core
- mathcomp-analysis
- mathcomp-bigenough
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-experimental-reals)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"mathcomp-experimental-reals\" \\\n --dry-run
2> err > out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo
\"Error: getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-analysis'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-analysis"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-bigenough'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-bigenough"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-experimental-reals"
mathcomp-field:
needs:
- rocq-core
- mathcomp-solvable
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-field)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"mathcomp-field\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-solvable'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-solvable"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-field"
mathcomp-fingroup:
needs:
- rocq-core
- mathcomp-boot
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-fingroup)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"mathcomp-fingroup\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-fingroup"
mathcomp-finmap:
needs:
- rocq-core
- mathcomp-boot
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-finmap)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"mathcomp-finmap\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-finmap"
mathcomp-order:
needs:
- rocq-core
- mathcomp-boot
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-order)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"mathcomp-order\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-order"
mathcomp-real-closed:
needs:
- rocq-core
- mathcomp-field
- mathcomp-bigenough
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-real-closed)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"mathcomp-real-closed\" \\\n --dry-run 2> err
> out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-field'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-field"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-bigenough'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-bigenough"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-real-closed"
mathcomp-reals:
needs:
- rocq-core
- mathcomp-classical
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-reals)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"mathcomp-reals\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-classical'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-classical"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-reals"
mathcomp-solvable:
needs:
- rocq-core
- mathcomp-algebra
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-solvable)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"mathcomp-solvable\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-solvable"
mathcomp-ssreflect:
needs:
- coq
- mathcomp-boot
- mathcomp-order
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-ssreflect)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"mathcomp-ssreflect\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-order'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-order"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-ssreflect"
mathcomp-word:
needs:
- coq
- mathcomp-algebra
- mathcomp-ssreflect
- mathcomp-fingroup
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-word)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"mathcomp-word\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-ssreflect'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-ssreflect"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-fingroup'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-fingroup"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-word"
multinomials:
needs:
- coq
- mathcomp-boot
- mathcomp-algebra
- mathcomp-finmap
- mathcomp-fingroup
- mathcomp-bigenough
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (multinomials)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"multinomials\" \\\n --dry-run 2> err > out ||
(touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-finmap'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-finmap"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-fingroup'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-fingroup"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-bigenough'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-bigenough"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "multinomials"
odd-order:
needs:
- coq
- mathcomp-character
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (odd-order)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"odd-order\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-character'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "mathcomp-character"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "odd-order"
rocq-core:
needs: []
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (rocq-core)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"rocq-core\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
rocq-elpi:
needs: []
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (rocq-elpi)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"rocq-elpi\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-elpi"
rocq-elpi-tests:
needs:
- rocq-core
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (rocq-elpi-tests)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"rocq-elpi-tests\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-elpi-tests"
rocq-elpi-tests-stdlib:
needs:
- rocq-core
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (rocq-elpi-tests-stdlib)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"rocq-elpi-tests-stdlib\" \\\n --dry-run 2> err
> out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-elpi-tests-stdlib"
stdlib:
needs:
- rocq-core
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (stdlib)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"stdlib\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "stdlib"
trakt:
needs:
- coq
- coq-elpi
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (trakt)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-9.2\" --argstr job \"trakt\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq-elpi'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "coq-elpi"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-9.2" --argstr job "trakt"
name: Nix CI for bundle rocq-9.2
on:
pull_request:
paths:
- .github/workflows/nix-action-rocq-9.2.yml
pull_request_target:
paths-ignore:
- .github/workflows/nix-action-rocq-9.2.yml
types:
- opened
- synchronize
- reopened
push:
branches:
- master
LPCIC-coq-elpi-eb449d7/.github/workflows/nix-action-rocq-master.yml 0000664 0000000 0000000 00000354041 15230417534 0025136 0 ustar 00root root 0000000 0000000 jobs:
bignums:
needs:
- rocq-core
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (bignums)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"bignums\" \\\n --dry-run 2> err > out ||
(touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "bignums"
coq:
needs:
- rocq-core
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (coq)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"coq\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "coq"
coq-elpi:
needs:
- rocq-core
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (coq-elpi)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"coq-elpi\" \\\n --dry-run 2> err > out ||
(touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "coq-elpi"
coqeal:
needs:
- coq
- mathcomp-ssreflect
- mathcomp-algebra
- bignums
- multinomials
- mathcomp-real-closed
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (coqeal)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"coqeal\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-ssreflect'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-ssreflect"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: bignums'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "bignums"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: multinomials'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "multinomials"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-real-closed'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-real-closed"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "coqeal"
hierarchy-builder:
needs:
- rocq-core
- coq-elpi
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (hierarchy-builder)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"hierarchy-builder\" \\\n --dry-run 2> err
> out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq-elpi'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "coq-elpi"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "hierarchy-builder"
mathcomp:
needs:
- rocq-core
- mathcomp-character
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp\" \\\n --dry-run 2> err > out ||
(touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-character'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-character"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp"
mathcomp-algebra:
needs:
- rocq-core
- mathcomp-order
- mathcomp-fingroup
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-algebra)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-algebra\" \\\n --dry-run 2> err
> out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-order'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-order"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-fingroup'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-fingroup"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: micromega-plugin'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "micromega-plugin"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-algebra"
mathcomp-algebra-tactics:
needs:
- coq
- mathcomp-ssreflect
- mathcomp-algebra
- coq-elpi
- mathcomp-zify
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-algebra-tactics)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-algebra-tactics\" \\\n --dry-run
2> err > out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo
\"Error: getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-ssreflect'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-ssreflect"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq-elpi'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "coq-elpi"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-zify'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-zify"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-algebra-tactics"
mathcomp-analysis:
needs:
- rocq-core
- mathcomp-reals
- mathcomp-field
- mathcomp-bigenough
- mathcomp-real-closed
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-analysis)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-analysis\" \\\n --dry-run 2> err
> out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-reals'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-reals"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-field'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-field"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-bigenough'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-bigenough"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-real-closed'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-real-closed"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-analysis"
mathcomp-analysis-stdlib:
needs:
- rocq-core
- mathcomp-analysis
- mathcomp-reals-stdlib
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-analysis-stdlib)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-analysis-stdlib\" \\\n --dry-run
2> err > out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo
\"Error: getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-analysis'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-analysis"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-reals-stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-reals-stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-analysis-stdlib"
mathcomp-bigenough:
needs:
- rocq-core
- mathcomp-boot
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-bigenough)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-bigenough\" \\\n --dry-run 2> err
> out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-bigenough"
mathcomp-boot:
needs:
- rocq-core
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-boot)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-boot\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-boot"
mathcomp-character:
needs:
- rocq-core
- mathcomp-field
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-character)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-character\" \\\n --dry-run 2> err
> out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-field'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-field"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-character"
mathcomp-classical:
needs:
- rocq-core
- mathcomp-algebra
- mathcomp-finmap
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-classical)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-classical\" \\\n --dry-run 2> err
> out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-finmap'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-finmap"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-classical"
mathcomp-experimental-reals:
needs:
- rocq-core
- mathcomp-analysis
- mathcomp-bigenough
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-experimental-reals)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-experimental-reals\" \\\n --dry-run
2> err > out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo
\"Error: getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-analysis'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-analysis"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-bigenough'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-bigenough"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-experimental-reals"
mathcomp-field:
needs:
- rocq-core
- mathcomp-solvable
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-field)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-field\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-solvable'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-solvable"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-field"
mathcomp-fingroup:
needs:
- rocq-core
- mathcomp-boot
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-fingroup)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-fingroup\" \\\n --dry-run 2> err
> out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-fingroup"
mathcomp-finmap:
needs:
- rocq-core
- mathcomp-boot
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-finmap)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-finmap\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-finmap"
mathcomp-order:
needs:
- rocq-core
- mathcomp-boot
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-order)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-order\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-order"
mathcomp-real-closed:
needs:
- rocq-core
- mathcomp-field
- mathcomp-bigenough
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-real-closed)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-real-closed\" \\\n --dry-run 2>
err > out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"\
Error: getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-field'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-field"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-bigenough'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-bigenough"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-real-closed"
mathcomp-reals:
needs:
- rocq-core
- mathcomp-classical
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-reals)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-reals\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-classical'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-classical"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-reals"
mathcomp-reals-stdlib:
needs:
- rocq-core
- mathcomp-reals
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-reals-stdlib)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-reals-stdlib\" \\\n --dry-run 2>
err > out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"\
Error: getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-reals'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-reals"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-reals-stdlib"
mathcomp-solvable:
needs:
- rocq-core
- mathcomp-algebra
- hierarchy-builder
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-solvable)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-solvable\" \\\n --dry-run 2> err
> out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: hierarchy-builder'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "hierarchy-builder"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-solvable"
mathcomp-ssreflect:
needs:
- coq
- mathcomp-boot
- mathcomp-order
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-ssreflect)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-ssreflect\" \\\n --dry-run 2> err
> out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-order'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-order"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-ssreflect"
mathcomp-word:
needs:
- coq
- mathcomp-algebra
- mathcomp-ssreflect
- mathcomp-fingroup
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-word)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-word\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-ssreflect'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-ssreflect"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-fingroup'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-fingroup"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-word"
mathcomp-zify:
needs:
- coq
- mathcomp-boot
- mathcomp-algebra
- mathcomp-fingroup
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (mathcomp-zify)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"mathcomp-zify\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-fingroup'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-fingroup"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-zify"
multinomials:
needs:
- coq
- mathcomp-boot
- mathcomp-algebra
- mathcomp-finmap
- mathcomp-fingroup
- mathcomp-bigenough
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (multinomials)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"multinomials\" \\\n --dry-run 2> err > out
|| (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-boot'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-boot"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-algebra'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-algebra"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-finmap'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-finmap"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-fingroup'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-fingroup"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-bigenough'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-bigenough"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "multinomials"
odd-order:
needs:
- coq
- mathcomp-character
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (odd-order)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"odd-order\" \\\n --dry-run 2> err > out ||
(touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: mathcomp-character'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "mathcomp-character"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "odd-order"
rocq-core:
needs: []
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (rocq-core)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"rocq-core\" \\\n --dry-run 2> err > out ||
(touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
rocq-elpi:
needs: []
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (rocq-elpi)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"rocq-elpi\" \\\n --dry-run 2> err > out ||
(touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting
derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-elpi"
rocq-elpi-tests:
needs:
- rocq-core
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (rocq-elpi-tests)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"rocq-elpi-tests\" \\\n --dry-run 2> err >
out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error:
getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-elpi-tests"
rocq-elpi-tests-stdlib:
needs:
- rocq-core
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (rocq-elpi-tests-stdlib)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"rocq-elpi-tests-stdlib\" \\\n --dry-run 2>
err > out || (touch fail; true)\ncat out err\nif [ -e fail ]; then echo \"\
Error: getting derivation failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-elpi-tests-stdlib"
stdlib:
needs:
- rocq-core
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (stdlib)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"stdlib\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: rocq-core'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "rocq-core"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "stdlib"
trakt:
needs:
- coq
- coq-elpi
- stdlib
runs-on: ubuntu-latest
steps:
- name: Determine which commit to initially checkout
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"target_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n echo \"target_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.target_commit }}
- name: Determine which commit to test
run: "if [ ${{ github.event_name }} = \"push\" ]; then\n echo \"tested_commit=${{
github.sha }}\" >> $GITHUB_ENV\nelse\n merge_commit=$(git ls-remote ${{ github.event.repository.html_url
}} refs/pull/${{ github.event.number }}/merge | cut -f1)\n mergeable=$(git
merge --no-commit --no-ff ${{ github.event.pull_request.base.sha }} > /dev/null
2>&1; echo $?; git merge --abort > /dev/null 2>&1 || true)\n if [ -z \"$merge_commit\"\
\ -o \"x$mergeable\" != \"x0\" ]; then\n echo \"tested_commit=${{ github.event.pull_request.head.sha
}}\" >> $GITHUB_ENV\n else\n echo \"tested_commit=$merge_commit\" >> $GITHUB_ENV\n\
\ fi\nfi\n"
- name: Git checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.tested_commit }}
- name: Cachix install
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: Cachix setup coq-elpi
uses: cachix/cachix-action@v16
with:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: coq, coq-community, math-comp
name: coq-elpi
- id: stepGetDerivation
name: Getting derivation for current job (trakt)
run: "NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link \\\n --argstr bundle
\"rocq-master\" --argstr job \"trakt\" \\\n --dry-run 2> err > out || (touch
fail; true)\ncat out err\nif [ -e fail ]; then echo \"Error: getting derivation
failed\"; exit 1; fi\n"
- id: stepCheck
name: Checking presence of CI target for current job
run: "if $(cat out err | grep -q \"built:\") ; then\n echo \"CI target needs
actual building\"\n if $(cat out err | grep -q \"derivations will be built:\"\
) ; then\n echo \"waiting a bit for derivations that should be in cache\"\
\n sleep 30\n fi\nelse\n echo \"CI target already built\"\n echo \"\
status=fetched\" >> $GITHUB_OUTPUT\nfi\n"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "coq"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: coq-elpi'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "coq-elpi"
- if: steps.stepCheck.outputs.status != 'fetched'
name: 'Building/fetching previous CI target: stdlib'
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "stdlib"
- if: steps.stepCheck.outputs.status != 'fetched'
name: Building/fetching current CI target
run: NIXPKGS_ALLOW_UNFREE=1 nix-build --no-out-link --argstr bundle
"rocq-master" --argstr job "trakt"
name: Nix CI for bundle rocq-master
on:
pull_request:
paths:
- .github/workflows/nix-action-rocq-master.yml
pull_request_target:
paths-ignore:
- .github/workflows/nix-action-rocq-master.yml
types:
- opened
- synchronize
- reopened
push:
branches:
- master
LPCIC-coq-elpi-eb449d7/.github/workflows/release.yml 0000664 0000000 0000000 00000005735 15230417534 0022255 0 ustar 00root root 0000000 0000000 # This is a basic workflow to help you get started with Actions
name: RELEASE
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
tags: [ "v*.*.*" ]
workflow_dispatch:
inputs:
opam:
description: "Force OPAM release"
required: true
default: false
type: boolean
suite:
description: "OPAM suite"
required: true
default: "released"
type: choice
options:
- released
- extra-dev
env:
OPAM_SUITE: ${{ inputs.suite }}
jobs:
release:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v4
- name: Create archive
run: |
VERSION="${GITHUB_REF_NAME_SLUG#v}"
git archive -o rocq-elpi-$VERSION.tar.gz --prefix=rocq-elpi-$VERSION/ $GITHUB_SHA .
- name: Release
uses: softprops/action-gh-release@v1
with:
files: rocq-elpi-*.tar.gz
fail_on_unmatched_files: true
prerelease: true
generate_release_notes: true
name: Rocq-Elpi ${{ github.ref }} for Rocq XXX
opam:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/') || inputs.opam
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Use OCaml 4.14.x
uses: ocaml/setup-ocaml@v3
with:
ocaml-compiler: 4.14.x
opam-local-packages: |
!coq-elpi.opam
!rocq-elpi.opam
!rocq-elpi-json.opam
- name: Write PAT
env:
OPAM_PUBLISH_TOKEN: ${{ secrets.OPAM_PUBLISH_TOKEN }}
run: |
mkdir -p ~/.opam/plugins/opam-publish
printf "$OPAM_PUBLISH_TOKEN" > ~/.opam/plugins/opam-publish/coqelpibot.token
- name: Setup SSH
uses: webfactory/ssh-agent@v0.8.0
with:
ssh-private-key: ${{ secrets.BOT_SSH_KEY }}
- name: Install opam-publish
run: opam install -y -j 2 opam-publish=2.5.0
- name: Publish
run: |
eval $(opam env)
git config --global user.name coqelpibot
git config --global user.email coqelpibot@inria.fr
echo known tags:
git tag
TAG=`git tag --sort=-v:refname|head -1`
echo selected tag: $TAG
# do not use the new name of the repo, or you get a 404 using GH APIs
GITHUB_DEBUG=1 opam-publish --no-confirmation --tag=$TAG \
--packages-directory=${OPAM_SUITE:-released}/packages \
--repo=rocq-prover/opam --no-browser -v ${TAG##v} \
rocq-elpi.opam rocq-elpi-json.opam rocq-elpi-xml.opam \
coq-elpi.opam \
https://github.com/LPCIC/coq-elpi/releases/download/$TAG/rocq-elpi-${TAG##v}.tar.gz
LPCIC-coq-elpi-eb449d7/.gitignore 0000664 0000000 0000000 00000001337 15230417534 0016477 0 ustar 00root root 0000000 0000000 *.o
*.cmx
*.cmo
*.cmi
*.a
*.cmxa
*.cmxs
*.cma
*.cmt
*.cmti
*.annot
.*~
.*.swp
*.vo
*.vos
*.vok
*.d
*.glob
.*.aux
*.html
*.txt
*.crashcoqide
\#*\#
etc/__pycache__/
/.deps.elpi
src/rocq_elpi_config.ml
src/rocq_elpi_vernacular_syntax.ml
src/rocq_elpi_arg_syntax.ml
src/rocq_elpi_builtins_HOAS.ml
doc/
Makefile.coq
Makefile.coq.conf
.merlin
Makefile.*.coq
Makefile.*.coq.conf
tests/test_glob/*.css
META
*.cache
apps/coercion/src/rocq_elpi_coercion_hook.ml
.filestoinstall
apps/tc/src/rocq_elpi_tc_hook.ml
apps/cs/src/rocq_elpi_cs_hook.ml
*.timing
_build
tmp.out
rocq-elpi-tests.opam
rocq-elpi-tests.install
rocq-elpi.install
coq-elpi.install
theories-stdlib/dune
apps/coercion/src/dune
apps/cs/src/dune
apps/tc/src/dune
src/dune LPCIC-coq-elpi-eb449d7/.nix/ 0000775 0000000 0000000 00000000000 15230417534 0015357 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/.nix/config.nix 0000664 0000000 0000000 00000010734 15230417534 0017351 0 ustar 00root root 0000000 0000000 with builtins; with (import {}).lib;
let
default-elpi-version = "3.7.1";
min-elpi-version = "3.7.1";
master = [
"hierarchy-builder"
"mathcomp"
"mathcomp-analysis"
"mathcomp-bigenough"
"mathcomp-finmap"
"mathcomp-real-closed"
];
coq-master = [
"coqeal"
"ITree"
"mathcomp-algebra-tactics"
"mathcomp-word"
"mathcomp-zify"
"multinomials"
"odd-order"
"trakt"
];
rocq-common-bundles = listToAttrs (forEach master (p:
{ name = p; value.override.version = "master"; }))
// {
rocq-elpi.override.elpi-version = default-elpi-version;
rocq-elpi-tests.job = true;
rocq-elpi-tests-stdlib.job = true;
mathcomp-boot.job = true;
mathcomp-fingroup.job = true;
mathcomp-order.job = true;
mathcomp-algebra.job = true;
mathcomp-solvable.job = true;
mathcomp-field.job = true;
mathcomp-character.job = true;
mathcomp-classical.job = true;
mathcomp-reals.job = true;
mathcomp-experimental-reals.job = true;
mathcomp-reals-stdlib.job = true;
mathcomp-analysis-stdlib.job = true;
};
coq-common-bundles = listToAttrs (forEach (master ++ coq-master) (p:
{ name = p; value.override.version = "master"; }))
// {
coq-elpi.override.elpi-version = default-elpi-version;
jasmin.override.version = "main";
bignums.job = true;
stdlib.job = true;
mathcomp-single-planB-src.job = false;
mathcomp-single-planB.job = false;
mathcomp-single.job = false;
deriving.job = false;
reglang.job = false;
coquelicot.job = false;
interval.job = false;
QuickChick.job = false;
vcfloat.job = false;
autosubst.job = false;
ConCert.job = false;
ITree.job = false; # only a dependency of jasmin
}; in
{
format = "1.0.0";
attribute = "rocq-elpi";
coq-attribute = "coq-elpi";
default-bundle = "rocq-9.1";
bundles = {
"rocq-9.0" = { rocqPackages = rocq-common-bundles // {
rocq-core.override.version = "9.0";
micromega-plugin.override.version = "master"; # to be removed at some point
micromega-plugin.job = false;
}; coqPackages = coq-common-bundles // {
coq.override.version = "9.0";
odd-order.job = false; # no longer supported since https://github.com/math-comp/odd-order/pull/74
trakt.job = false; # broken
}; };
"rocq-9.1" = { rocqPackages = rocq-common-bundles // {
rocq-core.override.version = "9.1";
micromega-plugin.override.version = "master"; # to be removed at some point
micromega-plugin.job = false;
}; coqPackages = coq-common-bundles // {
coq.override.version = "9.1";
}; };
"rocq-9.2" = { rocqPackages = rocq-common-bundles // {
rocq-core.override.version = "9.2";
micromega-plugin.override.version = "master"; # to be removed at some point
micromega-plugin.job = false;
coqeal.job = false; # MathComp not released yet
mathcomp-reals-stdlib.job = false; # MathComp not released yet
mathcomp-analysis-stdlib.job = false; # MathComp not released yet
mathcomp-zify.job = false; # MathComp not released yet
mathcomp-algebra-tactics.job = false; # MathComp not released yet
jasmin.job = false; # MathComp not released yet
}; coqPackages = coq-common-bundles // {
coq.override.version = "9.2";
}; };
"rocq-master" = { rocqPackages = rocq-common-bundles // {
rocq-core.override.version = "master";
micromega-plugin.override.version = "master";
micromega-plugin.job = false;
bignums.override.version = "master";
stdlib.override.version = "master";
}; coqPackages = coq-common-bundles // {
coq.override.version = "master";
bignums.override.version = "master";
stdlib.override.version = "master";
jasmin.job = false;
}; };
} // optionalAttrs (min-elpi-version != default-elpi-version) {
"rocq-master-min-elpi" = { rocqPackages = rocq-common-bundles // {
rocq-elpi.override.elpi-version = min-elpi-version;
rocq-core.override.version = "master";
bignums.override.version = "master";
stdlib.override.version = "master";
}; coqPackages = coq-common-bundles // {
coq-elpi.override.elpi-version = min-elpi-version;
coq.override.version = "master";
bignums.override.version = "master";
stdlib.override.version = "master";
jasmin.job = false;
}; };
};
cachix.coq = {};
cachix.math-comp = {};
cachix.coq-community = {};
cachix.coq-elpi.authToken = "CACHIX_AUTH_TOKEN";
}
LPCIC-coq-elpi-eb449d7/.nix/coq-nix-toolbox.nix 0000664 0000000 0000000 00000000053 15230417534 0021137 0 ustar 00root root 0000000 0000000 "9cd6ca08dba2a6557e46cbf3243a24f7f67ec5ff"
LPCIC-coq-elpi-eb449d7/.nix/rocq-overlays/ 0000775 0000000 0000000 00000000000 15230417534 0020165 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/.nix/rocq-overlays/rocq-elpi-tests-stdlib/ 0000775 0000000 0000000 00000000000 15230417534 0024477 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/.nix/rocq-overlays/rocq-elpi-tests-stdlib/default.nix 0000664 0000000 0000000 00000000612 15230417534 0026642 0 ustar 00root root 0000000 0000000 { rocq-elpi, rocqPackages }:
rocqPackages.lib.overrideRocqDerivation {
pname = "rocq-elpi-tests-stdlib";
propagatedBuildInputs = rocq-elpi.propagatedBuildInputs
++ [ rocqPackages.stdlib ];
buildPhase = ''
export COQPATH=$ROCQPATH
make test-stdlib
make examples-stdlib
make test-apps-stdlib
'';
installPhase = ''
echo "nothing to install"
'';
} rocq-elpi
LPCIC-coq-elpi-eb449d7/.nix/rocq-overlays/rocq-elpi-tests/ 0000775 0000000 0000000 00000000000 15230417534 0023220 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/.nix/rocq-overlays/rocq-elpi-tests/default.nix 0000664 0000000 0000000 00000000373 15230417534 0025367 0 ustar 00root root 0000000 0000000 { rocq-elpi, rocqPackages }:
rocqPackages.lib.overrideRocqDerivation {
pname = "rocq-elpi-tests";
buildPhase = ''
make test-core
make examples
make test-apps
'';
installPhase = ''
echo "nothing to install"
'';
} rocq-elpi
LPCIC-coq-elpi-eb449d7/.vscode/ 0000775 0000000 0000000 00000000000 15230417534 0016044 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/.vscode/settings.json 0000664 0000000 0000000 00000001732 15230417534 0020602 0 ustar 00root root 0000000 0000000 {
"files.exclude": {
"**/*.o": true,
"**/*.cmx": true,
"**/*.cmo": true,
"**/*.cmi": true,
"**/*.a": true,
"**/*.cmxa": true,
"**/*.cmxs": true,
"**/*.cma": true,
"**/*.cmt": true,
"**/*.cmti": true,
"**/*.annot": true,
"**/.*~": true,
"**/.*.swp": true,
"**/*.vo": true,
"**/*.vos": true,
"**/*.vok": true,
"**/*.d": true,
"**/*.glob": true,
"**/.*.aux": true,
"**/*.html": true,
"**/*.crashcoqide": true,
"**/\\#*\\#": true,
".deps.elpi": true,
"src/rocq_elpi_config.ml": true,
"src/rocq_elpi_vernacular_syntax.ml": true,
"**/Makefile.coq": true,
"**/Makefile.coq.conf": true,
"**/.merlin": true
},
"restructuredtext.confPath": "${workspaceFolder}/alectryon/recipes/sphinx",
"ocaml.server.args": [
"--fallback-read-dot-merlin"
],
}
LPCIC-coq-elpi-eb449d7/Changelog.md 0000664 0000000 0000000 00000156525 15230417534 0016732 0 ustar 00root root 0000000 0000000
# [3.5.0] 21/07/2026
Requires Elpi 3.7.1 and Rocq 9.0, 9.1, 9.2 and 9.3.
### HOAS:
- New `minductive` and `mblock` for mutual inductive types
- New the `name` data type carries a relevance (as in Rocq). Quotations
default to "relevant" as before, while omitted biner names are mapped to
Rocq relevance variables, that can be set by the typechecker.
Similarly `coq.id->name` leaves the relevance unset, and `coq.name-suffix`
preserves the orignal relevance.
### API:
- fix `coq.CS.canonical-projection?`, used to disregard `#[canonical=no]`
- fix `ltac_tactic:(t)`, use to ignore ltac variables in `t`
- New `coq.elpi.add-predicate?` to check if a predicate is declared in elpi
- New `coq.env.indt-block` to list the inductive types in the same
mutual block
- New `coq.name.relevant?` to test the relevance set by the typechecker
### LIB:
- Change `coq.build-indt-decl`, now taking a `coq.indt-spec` tuple
- New `coq.build-mindt-decl` taking a list of `coq.indt-spec`
### APPS:
- Fix many bugs in `derive` related to universe polymorphism
- Fix binary parametricity translation for primitive records
- Fix param1 and map on mutual inductives
### Vernac:
- Fix double accumulation bug when mixing Files and Dbs
# [3.4.0] 19/05/2026
Requires Elpi 3.7.1 and Rocq 9.0, 9.1 or 9.2.
### Elpi
- Change `accumulate` in Elpi code is now fully supported. There is
no difference between `Elpi Accumulate file.` and
`Elpi Accumulate lp:{{ accumulate "file". }}.` since Elpi 3.7
exposes accumulated files via the API. Applications with complex
file hierarchies can `Accumulate` root files and have each file
accumulate its dependencies, so that dependencies are written inside .elpi files, rather than inside the .v files that use them.
Example [commit](https://github.com/rocq-community/trocq/commit/df9af6e16ccd5e819b6f625321b2f909a39f20ac)
[commit](https://github.com/math-comp/hierarchy-builder/pull/590/changes/0156bcc1f524e1c8df7e3045f65d5de5846f6ea7)
### HOAS
- New `mfix` (with `mfix-ty` and `mfix-bo`) for mutual fixpoints
### Vernac
- New support for functors and module types: gref are substituted inside rules
### Plugins
- New `xml` plugin containing minimal bindings to `xml-light`, see
[apps/xml](apps/xml/) for the doc.
### API
- Change `main-interp-proof` and `main-interp-qed` changed type to better chain
with `coq.ltac.collect-goals`. It is now easy to take a term, extract from it
missing subterms and start a proof with goals for these holes, and finally
recover the full term at proof end time. Finally, one cannot close a proof
started in Elpi with a regular `Qed` anymore.
- New argument `const-decl` can now be introduces by the `Lemma` keyword,
and not just by `Definition`.
- New `coq.scheme` to query registered schemes
# [3.3.1] 12/03/2026
Requires Elpi 3.6.1 and Rocq 9.0, 9.1 or 9.2.
### Plugins
- New `json` plugin containing minimal bindings to `yojson`, see
[apps/json](apps/json/) for the doc.
# [3.3.0] 06/03/2026
Requires Elpi 3.6.1 and Rocq 9.0, 9.1 or 9.2.
### HOAS:
- Fix explicitly declared goals are considered reachable, even if they
do not occur in the proof term
- Fix avoid evar-map shelved goals to leak into the tactic shelve. Sometimes
a goal was both focused and shelved because of that
### API:
- Fix `coq.sort.*` to not rely on puring algebraic universes that will become
first class in Rocq 10
- Rename `coq.env.section`, use `coq.env.section-variables`
- New `coq.env.section-contents` listing the contents of sections.
- New `coq.ltac.call-mltac` to call code defined via `TACTIC EXTEND` directives
in OCaml.
- New `coq.ltac.call-simple-mltac` for tactics not changing the proof context
- New `coq.ltac.call-simple-ltac1` for tactics not changing the proof context
- Rename `coq.ltac.collect-goals` -> `coq.ltac.collect-sealed-goals`
- New `coq.ltac.collect-simple-goals` for goals in the current proof context
- Change `coq.ltac.call-ltac1` also gives a diagnostic
- Change `coq.ltac.call` also gives a diagnostic
### Vernacular:
- New `Elpi Accumulate Plugin` to load built-in defined in a plugin, see the
corresponding example
# [3.2.0] 19/09/2025
Requires Elpi 3.0.0 and Coq 8.20 or Rocq 9.0 or Rocq 9.1.
### Apps:
- Derive:
- Change `Set Uniform Inductive Parameters` is `#[export]` and not `#[global]`
### API
- Fix `.glob` generation for `coq.notation.*`
- Fix binder handling in `coq.ltac.collect-goals`
# [3.1.0] 01/09/2025
Requires Elpi 3.0.0 and Coq 8.20 or Rocq 9.0 or Rocq 9.1.
Port to Elpi 3.1
# [3.0.0] 18/7/2025
Requires Elpi 3.0.0 and Coq 8.20 or Rocq 9.0 or Rocq 9.1.
### Workflow
- Deprecate `Elpi Typecheck` since code is typechecked upfront when accumulated
### Documentation
- Update elpi_lang tutorial w.r.t. Elpi 3.0 new determinacy checker, in
particular the `func` declaration and the `=!=>` oeprator
### APPS:
- New experimental app `rbuild`: build any record with « ... »
### API
- `coq.ltac.collect-goals` now takes the parameters of primitive projections into account
# [2.6.0] 8/7/2025
Requires Elpi 2.0.7 and Coq 8.20 or Rocq 9.0 or Rocq 9.1.
### Vernacular
- New attributes `#[proof="begin"]`, `#[proof(begin_if="att")]`
and `#[proof="end"]` to `Elpi Export` to
declare commands starting/ending proofs
### API
- New `coq.redflags.proj` to control "unfolding" of primitive projections
- New `main-interp-proof` and `main-interp-qed` for commands starting/ending
proofs
# [2.5.2] 29/4/2025
Requires Elpi 2.0.7 and Coq 8.20 or Rocq 9.0.
### API
- New `coq.univ.alg-max` API that relates two universes to their algebraic
maximum.
# [2.5.1] 22/4/2025
Requires Elpi 2.0.7 and Coq 8.20 or Rocq 9.0.
### APPS:
- derive: support for primitive strings in `param1` and `param1_trivial`
- derive: support for `is_true` in `param1_trivial` (based on pre-existing
special support for `is_eq` and `is_bool`)
### API
- New `coq.univ.alg-super` that relates a univ `U` to its algebraic successor
`V`, that is `U+1` and not any `V` s.t. `U < V`
- New `coq.register` API
### HOAS
- New `@keep-alg-univs!` option for all APIs taking terms. By default algebraic
universes are replaced by named universes. See the `coq.univ.alg-super` API.
# [2.5.0] 18/2/2025
Requires Elpi 2.0.7 and Coq 8.20 or Rocq 9.0.
### Packaging
- rename to `rocq-elpi` (`coq-elpi` is a transitional package)
- remove cram tests
- separate tests bsed on `rocq-stdlib`, the main build targets
just depend on `rocq-core`
- CI based on docker images rather than ocaml setup
### APPS
- derive: fix missing universe constraints in `param2`
- derive: new `param2.register` command
- derive: improve generated names in `param2`
- derive: put eqb AST into a dedicated namespace
- derive: new (experimental) derive.eqbOK.register_axiom
- eltac: apply and rewrite examples
### API
- `coq.count-prods` now count products modulo reduction,
rather than purely syntactically
- `coq.arity->sort` now attempts reduction to find a sort or prod,
before failing
- `coq.arity->sort` now handles let-in
# [2.4.0] 15/1/2025
Requires Elpi 2.0.7 and Coq 8.20.
### API
- Change `coq.env.add-section-variable` now takes the implicit status of the
variable
# [2.3.0] - 6/12/2024
Requires Elpi 2.0.3 and Coq 8.20.
The major change is the port to Elpi 2.0 that reports type checking errors
to the location of the offending term and not its enclosing rule.
### Vernacular
- `Elpi Accumulate Db Header ` to accumulate just the `Db` declaration
but no code added after that
- `Elpi File ` to name a piece of code without
requiring an external file
- `Elpi Accumulate File Signature ` to accumulate only
the types declarations from a file.
- `Elpi Typecheck` is deprecated and is a no-op since `Elpi Accumulate`
performs type checking incrementally
### HOAS
- new `open-trm` argument for tactics with syntax ````(...)``` and
`ltac_open_term:(...)`. Open terms can mention free variables.
- new `{{:pat ...}}` quotations inside which `_` is interpreted as a
wildcard, not as a regular evar.
### API
- Support export locality in `coq.TC.declare-instance`
- `tc-instance` now just carries a priority, no matter if inferred or declared,
and works for instances added as `Hint Resolve` to the `typclass_instances`
database
### Build system
- Support dune workspace build with `elpi`
### Misc
- Resolve `.elpi` files based on Coq's resolver. Paths are now expected to be
of the form `/`, where `` part is a
logical Coq directory (as mapped with `-Q` or `-R`), and `` is a
relative path from the corresponding directory.
# [2.2.3] - 30/07/2024
Requires Elpi 1.19.2 and Coq 8.19 or Coq 8.20.
### API
- New `coq.arguments.reset-simplification`
- Change some speedup concerning universes
# [2.2.2] - 15/07/2024
Requires Elpi 1.19.2 and Coq 8.19 or Coq 8.20.
### Packaging
- Fix release script to just publish coq-elpi (and not coq-elpi-tests)
- Fix opam constraints by adding upper bound
# [2.2.1] - 12/07/2024
Requires Elpi 1.19.2 and Coq 8.19 or Coq 8.20.
### Error reporting
- Fix type checking errors on inline code are now reported on the correct line
in LSP based interfaces
### Build system
- Fix various missing dependencies
- Fix rebuild before installation
- Change CI no more use of docker images
- Change silence `default-output-directory` warning
### Apps/tc
- Change organize the code inside a `tc` namespace
### Apps/derive
- Change do not leak `positive_scope` open
# [2.2.0] - 28/06/2024
Requires Elpi 1.19.2 and Coq 8.19 or Coq 8.20.
### Build system
- Change switch to dune
- New ppx_optcomp to support multiple Coq version
- New no need for dot-merlin-reader, OCaml's language server understands dune
### Apps/tc
- Change supports higher order unification
- Change syntax to register, enable and disable solver
- Change solutions found in Elpi are eta-contracted
### API
- New `coq.debug`
- New `coq.pstring->string` and `coq.string->pstring`
- New `@warn!` attribute for `coq.notation.add-abbreviation`
- New `coq.*.set.min`, `coq.*.set.max`, `coq.*.set.choose`, `coq.*.set.fold`,
`coq.*.set.partition`
- New `coq.*.map.fold`
- New `coq.env.projection?` and `coq-env.primitive-projection?`
### HOAS
- New `primitive (pstring S)` in Coq 8.20
# Changelog
## [2.1.1] - 15/05/2024
Requires Elpi 1.18.2 and Coq 8.19.
### Commands
- Fix initial synterp state of commands with a synterp phase
## [2.1.0] - 29/03/2024
Requires Elpi 1.18.2 and Coq 8.19.
### Commands
- New `Elpi Accumulate dbname File filename` allows to accumulate a file int a db
- Change `Elpi Db` now only creates (and initialises) a database for the specified phase
### API
- New `coq.parse-attributes` support for the `attlabel` specification,
see `coq-lib-common.elpi` for its documentation.
- New `coq.goal->pp`
- Replace `coq.replay-all-missing-synterp-actions` by (nestable) groups of actions
- New `coq.begin-synterp-group` and `coq.end-synterp-group` primitives
- New `coq.replay-synterp-action-group` primitive (replaces `coq.replay-all-missing-synterp-actions` in conjunction with a group)
- New `coq.replay-next-synterp-actions` to replay all synterp actions until the next beginning/end of a synterp group
- New `coq.primitive.projection-unfolded` to fold/unfold a primitive projection.
Note that unfolded primitive projections are still compact terms, but they
are displayed as `match` expressions and some Ltac code can see that.
## [2.0.2] - 01/02/2024
Requires Elpi 1.18.2 and Coq 8.19.
### API
- Fix `coq.elaborate-*` does not erase the type annotation of `Let`s (regression
introduced in 2.0.1). This fix may introduce differences in generated names
- Fix `coq.elaborate-*` are not affected anymore by printing options
### Commands
- Fix install the right initial parsing state (the one before any synterp action
is re-played)
### HOAS
- Fix evar instantiation loss when crossing the elpi/ltac border
- Fix encoding of "definitional classes" (`Class` with no record)
- Fix order of implicit arguments of `Record`
### Misc
- Change requiring `elpi` does not load primitive integers nor primitive floats
### Apps
- TC: avoid declaring options twice (could make vscoq2 fail)
- CS: `cs` now takes a context, a term that is the projection of some structure applied to the parameters of the structure, a term to put a structure on and the solution to return
## [2.0.1] - 29/12/2023
Requires Elpi 1.18.1 and Coq 8.19.
This minor release adds compatibility with Coq 8.19.
## [2.0.0] - 23/12/2023
Requires Elpi 1.18.1 and Coq 8.18.
This major release accommodates for the separation of parsing from execution
of Coq 8.18 enabling Coq-Elpi programs to be run efficiently (and correctly)
under VSCoq 2.0.
### Documentation
- New section about parsing/execution separation in the [Writing commands in Elpi](https://lpcic.github.io/coq-elpi/tutorial_coq_elpi_command.html) tutorial
### Commands
- New `Elpi *` commands understand the `#[phase]` attribute, see the doc in
the [README](README.md#vernacular-commands) file, and the section
about the [separation of parsing from execution](README.md#separation-of-parsing-from-execution-of-vernacular-commands)
- New `Elpi Export` understands an `As` clause to rename or alias a program when exported
### API
- Change `coq.elpi.add-predicate` now locality can be changed
- Experimental `coq.toposort` returns a valid topological ordering of the nodes
of a graph
- Change `coq.TC.db-for`, now instances are returned sorted wrt their priority
- New `tc-priority`, contains the priority of an instance and if the priority
has been given by the user or computed by `coq`
- Change `tc-instance`, now the type is `gref -> tc-priority -> tc-instance` i.e. the priority is not an integer anymore
- New `coq.ltac.fresh-id` to generate fresh names in the proof context
- New `@no-tc!` attribute supported by `coq.ltac.call-ltac1`
- New `coq.TC.get-inst-prio` returns the `tc-priority` of an instance
- New `synterp-action` datatype
- New `coq.replay-all-missing-synterp-actions`
- New `coq.replay-synterp-action`
- New `coq.next-synterp-action`
- New `coq.synterp-actions` (parsing phase only)
### Apps
- New `tc` app providing an implementation of a type class solver written in elpi.
This app is experimental
## [1.19.3] - 12/10/2023
Requires Elpi 1.16.5 and Coq 8.18.
### Misc
- Fix `Elpi Export` broken when used from VsCoq2
### APIs
- New `ltac1-tactic` opaque data type
- New `tac` argument constructor
- Change `coq.ltac.call-ltac1` now accepts either a string (tactic name) or
a tactic expression (of type `ltac1-tactic`)
- New `ltac_tactic:(...)` syntax to pass tactic expressions to Elpi tactics
- New `coq.extra-dep` predicate
## [1.19.1] - 30/08/2023
Requires Elpi 1.16.5 and Coq 8.18.
### Misc
- Automate release process
## [1.19.0] - 04/08/2023
Requires Elpi 1.16.5 and Coq 8.18.
### APPS
- New `coercion` app providing `coercion` predicate
to program coercions (thanks @proux01).
This app is experimental.
### API
- Removed option `@nonuniform!` as it disappears from Coq 8.18.
(c.f. https://github.com/coq/coq/pull/17716 )
## [1.18.0] - 27/07/2023
Requires Elpi 1.16.5 and Coq 8.17.
### Doc
- Mention the trace browser for VSCode in the Elpi tutorial.
### API
- New `coq.elpi.accumulate-clauses` takes a list of clauses which share the
same DB and accumulation site
- New `coq.elpi.add-predicate` to declare the signature of a new predicate into
a Db
- New `coq.elpi.predicate` to build a term of type `prop` out of a predicate
name and arguments
- Change `coq.env.global` now relates a term with a gref, instead of working one
way only
- Change `coq.elpi.accumulate*` generalise clauses over global universe level,
and error if algebraic levels are present. It used to warn if levels were
present.
- New `coq.elaborate*skeleton` support the `@no-tc!` option to disable type
class resolution
- New `@global!` option for `coq.elpi.accumulate*`
- New `coq.env.current-section-path`
- New `coq.TC.db-tc` giving all type classes
- New `coq.reduction.eta-contract`
### HOAS
- Fix evar declarations were (rarely) generated at the wrong depth, possibly
resulting in variable captures in types containing binders
- Fix `assert false` in evar instantiation readback (eta contraction code was
incomplete)
- Fix resiliency in case a goal is closed by side effect (was raising fatal
errors such as "Not a goal" or "Not a variable after goal")
- Change assigning a hole linked to an evar *always* triggers type checking.
This is necessary even if the term being assigned is well typed since one
may still need to declare some universe constraints.
- Change propagate type constraints in `Prop` inward (Coq 8.17 only). Eg.
`Check (T -> _) : Prop` fails in 8.17 since `_` is assumed to be in `Type`.
We propagate the constraint ourselves across `->`, `/\`, `\/` and `~`.
- Quotations `{{ ... }}` are now parsed by Coq ensuring the end of input is
reached. Spurious text results in a parse error. For example `{{ f ) }}`
is no more accepted, as well as `{{ _.x }}`
### Vernacular
- New `Elpi Print` also print the program in `.txt` format
### Runtime
- Change compilation cache able to prevent most of lengthy compilations in
Hierarchy-Builder for MathComp 2.0. In some cases Coq-Elpi is more picky
about the order of accumulated files, in particular a file containing
the spilling of a predicate `{p}` needs to be accumulated after the
type or mode of `p` is declared
### APPS
- `derive Inductive i {A}` now sets `A` implicit status globally
- `lock Definition f {A}` now sets `A` implicit status globally
## [1.17.1] - 09/03/2023
Requires Elpi 1.16.5 and Coq 8.17.
### API:
- New `coq.int->uint63` and `coq.float->float64`
- Fix bug introduced in 1.17.0 affecting `coq.ltac.call-ltac1`
## [1.17.0] - 13/02/2023
Requires Elpi 1.16.5 and Coq 8.17.
### API
- New `coq.modpath->library`
- New `coq.modtypath->library`
- Fix `coq.env.*` APIs generating inductives, definitions and modules now
emit metadata in the `.glob` files so that `coqdoc` can generate hyperlinks
### APPS
- Add `NES.{List,Print}`.
- Support relative paths in `NES.{Open,List,Print}`
(path `_.P` references top-level namespace `P`, paths without a
leading `_.` are relative to the current namespace)
## [1.16.0] - 10/11/2022
Requires Elpi 1.16.5 and Coq 8.16.
The main change is the `derive` app which must now be loaded
by importing `derive.std` (just loading `derive` won't work).
See the [new derive documentation](apps/derive).
### API
- Change `coq.env.module` and `coq.env.module-type` do not fail if the
module (type) contains a mutual inductive. The resulting `gref` is going
to me unusable with most APIs, though.
- Change `coq.env.module` returns a ADT describing the module contents
- Change `coq.gref->path` and `coq.gref->id` do work on `gref` which point
to mutual inductives.
- New `coq.env.term-dependencies` computing all the `grefs` occurring in a term.
- New `coq.redflag` and `coq.redflags` types for `@redflags!` option understood
by `coq.reduction.lazy.*` `and coq.reduction.cbv.norm`
- New `coq.env.fresh-global-id`
### APPS
- Change `derive` usage.
One should now import `From elpi.apps Require Import derive.std`
- Change derivations `eq` and `eqOK` move to `derive.legacy`
- New derivations `eqb` and `eqbOK` subsuming the previous ones
## [1.15.6] - 27-08-2022
Requires Elpi 1.16.5 and Coq 8.16.
- Fix parse error location display for quotation code
- Fix HOAS of inductives with non-uniform parameters
## [1.15.5] - 30-07-2022
Requires Elpi 1.16.5 and Coq 8.16.
- Fix parse error location display for inline code
- Fix HOAS of evars: pruning was not propagated to the type of the evar
## [1.15.4] - 26-07-2022
Requires Elpi 1.16.5 and Coq 8.16.
- Fix lexical analysis inside quotations error location display
- Fix drop of universe constraints attached to automatically generates
universe levels (eg when `sort (typ X)` is passed to Coq)
- Fix nix CI
## [1.15.3] - 20-07-2022
Requires Elpi 1.16.5 and Coq 8.16.
- Fix parse error location display
## [1.15.2] - 19-07-2022
Requires Elpi 1.16.5 and Coq 8.16.
- API:
- Fix `coq.env.indt-decl` correctly handles universes in parameters of
universe polymorphic inductive
- Fix `coq.typecheck-indt-decl` ignores non uniform parameters to compute
the universe level of the inductive
- Fix `coq.elaborate-indt-decl-skeleton` ignores non uniform parameters to
compute the universe level of the inductive
## [1.15.1] - 16-07-2022
Requires Elpi 1.16.5 and Coq 8.16.
- API:
- Fix `coq.elaborate*skeleton` does refresh universes
- New `@keepunivs!` attribute to force skeleton APIs to not
refresh universes. This is useful to keep a link between
a universe declaration and the declaration itself but still
elaborate it
- Fix Coq-Elpi is reentrant when commands call tactics
## [1.15.0] - 13-07-2022
Requires Elpi 1.16.5 and Coq 8.16.
The main changes are:
- experimental support for universe polymorphism. One can read and write
universe polymorphic terms and manipulate their constraint declarations.
Terms now have a new `pglobal` term constructor, akin to `global` but for
global references to universe polymorphic terms, also carrying a universe
instance. The attribute `@uinstance!` can be used to pass or retrieve
a universe instance to/from APIs to access the Coq environment, as in
`@uinstance! I => coq.env.typeof GR Ty_at_I`.
The meaning of `@uinstance! I =>` depends if `I` is an unset variable or a
concrete universe instance. In the former case the API generate a fresh
universe instance (for `GR`) and assign it to `I`; in the latter case it uses
the provided universe instance.
See [coq-builtin](coq-builtin.elpi) for the full documentation
- command arguments are elaborated by Coq (unless told otherwise). As a
consequence arguments can use the full Coq syntax, including deep pattern
matching and tactics in terms. Raw arguments are (and will remain) available,
but don't support that yet
### APPS
- New experimental support for polymorphic definitions in `locker`
- New example of `clearbody` tactic taking a list of names in `eltac`
- Change `derive` sets, *globally*, `Uniform Inductive Parameters`. See
https://coq.inria.fr/refman/language/core/inductive.html#coq:flag.Uniform-Inductive-Parameters
for reference. The immediate effect is that inductive types uniform parameters
don't have to be repeated in the types of the constructors (they can't vary
anyway). Non-uniform parameters and indexes have to be passed, as usual.
If the flag is unset by the user `Coq-Elpi` will raise a warning since
inference of non-uniform parameters is not implemented
### HOAS
- Change arguments to commands are elaborated by Coq by default
- New attribute `#[arguments(raw)]` to get arguments in raw format (as in
version 1.14 or below)
- Change raw inductive declaration using `|` to mark non-uniform
parameters is expected to not pass uniform parameters to the inductive
type (the same behavior applies to elaborated arguments, making the two
consistent)
- Change `coercion` attribute for record fields now takes values `off`,
`regular` or `reversible`
- New `pglobal` term constructor carrying a `gref` and a `univ-instance` for
universe polymorphic terms
- New `upoly-indt-decl` argument type for polymorphic inductive types
declarations
- New `upoly-const-decl` argument type for polymorphic definitions
- New `upoly-decl` data type for universe parameters declarations, i.e.
the `@{u1 u2 | u1 < u2}` Coq syntax one can use for inductives or definitions
- New `upoly-decl-cumul` data type for universe parameters declarations, i.e.
the `@{u1 u2 | u1 < u2}` Coq syntax one can use for cumulative inductives
- Rename `univ` -> `sort` i.e. `(sort S)` is a `term` and `S` can be `prop` or
`(type U)` where `U` is a `univ`
- New `univ-instance` opaque type to represent how a polymorphic constant is
instantiated, i.e. `(pglobal GR I)` where `GR` is a `gref` and `I` a
`univ-instance`
- New `univ.variable` opaque type for `univ` which are not algebraic. This data
type is used in `upoly-decl` and `upoly-decl-cumul`
### API
- New `coq.env.indc->indt`
- New `coq.env.dependencies` to compute the dependencies of a `gref`
- New `coq.env.transitive-dependencies`
- New `@nonuniform!` and `@reversible!` for `coq.coercion.declare`
- New `@uinstance!` attribute supported by many `coq.env.*` APIs that can be
used to read/write the universe instance of polymorphic constants. E.g.
`@uinstance! UI => coq.env.typeof GR Ty` can instantiate `Ty` to `UI` if
provided or set `UI` to a fresh instance if not
- New `@udecl!` attribute to declare polymorphic constants or inductives,
like the `@{u1 u2 | u1 < u2}` Coq syntax
- New `@udecl-cumul!` attribute to declare polymorphic inductives,
like the `@{+u1 u2 | u1 < u2}` Coq syntax
- New `@univpoly!` shorter version of `@udecl!`,
like the `#[universes(polymorphic)]` Coq syntax (without giving any other
`@{u1 u2 | u1 < u2}` directive)
- New `@univpoly-cumul!` shorter version of `@udecl-cumul!`, like
the `#[universes(polymorphic,cumulative)]` Coq syntax
- New `coq.env.global` API to craft a `term` from a `gref`. When used with
spilling `{coq.env.global GR}` gives either `(global GR)` or `(pglobal GR I)`
depending on `GR` being universe polymorphic or not. It understands the
`@unistance!` attribute for both reading or setting `I`
- New `coq.env.univpoly?` to tell if a `gref` is universe polymorphic and how
many parameters it has
- Change `coq.univ.leq` -> `coq.sort.leq`
- Change `coq.univ.eq` -> `coq.sort.eq`
- Change `coq.univ.sup` -> `coq.sort.sup`
- New `coq.sort.pts-triple` computes the resulting `sort` of a product
- New `coq.univ.constraints` gives all the universe constraints in a first class
form
- Change `coq.univ.new` does not take a list anymore
- New `coq.univ` to find a global universe
- New `coq.univ.global?` tests if a universe is global
- New `coq.univ.variable` links a `univ` to a `univ.variable` (imposing an
equality constraint if needed)
- New `coq.univ.variable.constraints` finds all constraints talking about a
variable
- New `coq.univ.variable.of-term` finds all variables occurring in a term
- New `coq.univ-instance` links a `univ-instance` to a list of of
`univ.variable`
- New `coq.univ-instance.unify-eq` unifies two `univ-instance`
(for the same `gref`)
- New `coq.univ-instance.unify-leq` unifies two `univ-instance`
(for the same `gref`)
- New `coq.univ.set` OCaml's set for `univ`
- New `coq.univ.map` OCaml's map for `univ`
- New `coq.univ.variable.set` OCaml's set for `univ.variable`
- New `coq.univ.variable.map` OCaml's map for `univ.variable`
### Vernacular
- New `Accumulate File ` to be used in tandem with Coq 8.16
`From Extra Dependency as `
## [1.14.0] - 07-04-2022
Requires Elpi 1.15.0 and Coq 8.15.
### Vernacular
- All `Elpi Bla` commands accept (and ignore with a warning) unknown attributes,
to be forward compatible
## [1.13.0] - 08-02-2022
Requires Elpi 1.14.1 and Coq 8.15.
### Performance
- New 1 slot cache for context read back to improve the speed of FFI calls
needing to read back a large `coq_context`
- New `Conversion.t` for `gref` handwritten to minimize allocations
- New terms of the form `(global ...)` are now hashconsed
- New `extra_goals` postprocessing removing `declare-evar/rm-evar` pairs which
happen naturally writing code like `coq.unify-eq {{ f _ x }} {{ f y _ }}`
(the `_` are solved immediately, no need to declare them to elpi)
### API
- New `coq.hints.opaque`
- New `coq.hints.set-opaque`
- Change load `coq.ltac.*` also in commands (and not just tactics) so that
commands can easily turn holes into goals and inhabit them calling regular
tactics.
- New `coq.hints.add-resolve`
- Fix `coq.option.add` survives the end of a file
- New `coq.env.begin-module-functor`
- New `coq.env.begin-module-type-functor`
- New `coq.env.apply-module-functor`
- New `coq.env.apply-module-type-functor`
- New `coq.inline` with constructors `coq.inline.no`, `coq.inline.at` and
`coq.inline.default`
- New `@inline-at! N` and `@inline!` macros
- Change `coq.env.add-axiom` honors `@inline` macros
## [1.12.1] - 20-01-2022
Requires Elpi 1.13.6 and Coq 8.15.
### APPS
- `derive Inductive i {A}` now correctly sets `A` implicit status
- `lock Definition f {A}` now correctly sets `A` implicit status
### API
- New `coq.arity->implicits`
- New `coq.indt-decl->implicits`
- New `coq.any-implicit?`
## [1.12.0] - 15-01-2021
Requires Elpi 1.13.6 and Coq 8.15.
### HOAS
- Change `{{ p x }}` is no more interpreted as a primitive projection
even if `p` is the associated constant
- New `{{ x.(p) }}` is interpreted as a primitive projection if `p` is a
primitive projection
- New `{{ x.(@p params) }}` is interpreted as a regular projection even
if `p` is a primitive projection, since primitive projections don't have
parameters and the user wrote some
### API
- Fix globalization of `arity` inside a section
- New `coq.option` type to access Coq's GOption system (Set/Unset vernaculars)
- New `coq.option.add`
- New `coq.option.get`
- New `coq.option.set`
- New `coq.option.available?`
- New `coq.bind-ind-parameters`
### APPS
- New `locker` app providing `lock` and `mlock` commands
## [1.11.2] - 24-09-2021
Requires Elpi 1.13.6 and Coq 8.14.
### API
- Change `coq.bind-ind-arity` preserves `let`
- New `coq.bind-ind-arity-no-let` to reduce `let`, used in `coq.build-match`
- Fix `coq.build-match` putting `let` bindings in `match` return type
- Change `coq.map-under-fun` preserves `let`
## [1.11.1] - 24-09-2021
Requires Elpi 1.13.6 and Coq 8.13.
### API
- New `coq.env.informative?` to know if a type can be eliminated to build
a term of sort `Type`
- Fix `coq.warning` is synchronized with Coq's Undo machinery
- Retire the venerable "elpi fails" message, replaced with something more
precise inviting the user to report a bug: errors should be taken care
of and reported nicely by the programmer.
- New `coq.uint63->int`
- New `coq.float64->float`
- New `coq.ltac.id-free?` tells if a given ident is already used to denote a
goal hypothesis, or not.
### Derive
- Fix derivation of induction principles for "data types" in `Prop`
- Add derivation of `param1` for the equality test `eq` with name `t.param1_eq`
- Fix `invert` and `idx2inv` when dealing with containers
- New datatypes from the Coq's prelude are derived in advance, no need to
to `derive nat` anymore.
## [1.11.0] - 30-06-2021
Requires Elpi 1.13.6 and Coq 8.13.
### HOAS
- New node `proj` of type `projection -> int -> primitive-value` holding the
projection name (a Coq detail) and the number of the field it projects (0
based), eg: `primitive (proj _ N)` stands for the projection for the Nth
constructor field counting parameters.
- Change `cs-instance` carries a `gref`
### API
- New `coq.notation.add-abbreviation-for-tactic` to add a parsing rule
for a tactic-in-term, along the lines of
`Notation foo := ltac:(elpi mytactic arguments)`
but passing `mytactic` the correct `elpi.loc` of invocation.
- New `@pplevel!` attribute to control outermost parentheses in `coq.term->pp`
and similar
- New `coq.hints.add-mode` like the `Hint Mode` vernacular
- New `coq.hints.modes`
- New `coq.TC.declare-class`
- Deprecate `coq.env.const-opaque?` -> `coq.env.opaque?`
- Deprecate `coq.env.const-primitive?` -> `coq.env.primitive?`
- Deprecate `coq.CS.canonical-projections` -> `coq.env.projections`
- New `coq.env.primitive-projections`
- Change `coq.warning` emits the same warning only once
## [1.10.3] - 18-06-2021
Requires Elpi 1.13.6 and Coq 8.13.
### Lib
- Cleanup `elpi.loc` attribute, which now carries a real loc and not a string.
Thanks to elpi 1.13.6 we can project out the components without messing
with regular expressions. Moreover loc are printed in a consistent way on
Unix and Windows.
## [1.10.2] - 11-06-2021
Requires Elpi 1.13.5 and Coq 8.13.
### API
- Change `coq.gref->path` now (consistently) gives the path without the
final id, which can be retrieved by `coq.gref->id`.
## [1.10.1] - 24-05-2021
Requires Elpi 1.13.5 and Coq 8.13.
### HOAS
- Fix (reverse) the order of the context argument of `goal`. The head of
the list is the most recent hypothesis and in the last to be loaded (the
one with higher precedence) by implication when one writes `Ctx => ...`.
- New `msolve` entry point for (possibly multi goal) tactics
### API
- Fix argument interpretation for `coq.ltac.call-ltac1`, the context is now the
one of the goal alone (and not the one of the goal plus the current one)
- Rename `coq.ltac.then` to `coq.ltac.all`
## [1.10.0] - 21-05-2021
Requires Elpi 1.13.5 and Coq 8.13.
### Derive
- New `lens` and `lens_laws` for regular and primitive records with or without
parameters
- `derive` takes `#[only(this, that)]` to select the desired derivations
### API
- Fix `coq.elpi.accumulate` scope `current`, which was putting the closes in the
current module for the current file, but was making them global for the files
importing it
- New scope `library` for `coq.elpi.accumulate` which links the clauses to the
library, that is the module named after the file.
- Fix databases are always available, no need to import files in the right order
when databases have named clauses. The error "Error: unable to graft this
clause: no clause named ..." should no more be raised in response to a
`Require Import`.
- New `coq.strategy.*` to `set` and `get` the unfolding priority of constants
followed by the term comparison algorithm Coq uses at type checking time.
- New `coq.env.record?` to test if an inductive is a record and if it has
primitive projections
- New `coq.env.recursive?` to test if an inductive is recursive
- Change `coq.locate*` understands strings like `"lib:some.name"` which point
to global references registered via the Coq `Register` command
- New `coq.ltac.fail` like `coq.error` but catch by Ltac
- New `@ltacfail!` to be used like `@ltacfail! Level => std.assert! ...` in
tactic code to use `coq.ltac.fail` instead of `coq.error` in case of failure
- Change failure as is `elpi fails` (no more clauses to try) or
`elpi run out of steps` are not considered Ltac failures anymore, but rather
fatal errors. Add a clause `solve _ _ :- coq.ltac.fail _` to preserve the
old behavior.
- New `coq.ltac.collect-goals` to turn unresolved unification variables into
goals.
- Fix `coq.env.add-const` now accepts an opaque definition with no given type.
The body is assumed to be well typed and is quickly retypechecked.
### HOAS
- Fix handling of default case in `match`, now Coq's `if _ then _ else _`
works just fine.
- New quotation `{{:gref id }}` and `{{:gref lib:qualid }}` that unfolds to the
`gref` data type (`{{ id }}` and `{{ lib:qualid }}` unfold to terms)
- Change `solve` only takes 2 arguments (the arguments passed at tactic
invocation time are now part of the goal) and the first argument is a single
goal, not a list thereof. The second argument is now a `sealed-goal`.
- Change `refine` now generates a list of `sealed-goal`s
- Change `goal` now carries two unification variables standing for the
raw solution to goal and the elaborated, well typed, one. Assigning a term
to the raw variable triggers a call to `coq.elaborate-skeleton` which in turn
assigns the other one to the (partial) proof term.
Assigning the elaborated variable directly does not trigger a type check
of the term.
### Vernacular
- New `attributes` tactic argument (for `Tactic Notation`)
- New `elpi tac` can receive attributes via the usual `#[stuff] tac` syntax
- New syntax to pass Elpi tactics arguments coming from Ltac variables:
- `ltac_string:(v)` (for `v` of type `string` or `ident`)
- `ltac_int:(v)` (for `v` of type `int` or `integer`)
- `ltac_term:(v)` (for `v` of type `constr` or `open_constr` or `uconstr` or `hyp`)
- `ltac_(string|int|term)_list:(v)` (for `v` of type `list` of ...)
- `ltac_attributes:(v)` (for `v` of type `attributes`)
Example:
```coq
Tactic Notation "foo" string(X) ident(Y) int(Z) constr(T) constr_list(L) :=
elpi foo ltac_string:(X) ltac_string:(T) ltac_int:(Z) (T) ltac_term_list(L).
```
lets one write `foo "a" b 3 nat t1 t2 t3` in any Ltac context. For attributes
one has to place `ltac_attributes:(v)` in front of `elpi`, as in:
```coq
Tactic Notation "foo" "#[" attributes(A) "]" :=
ltac_attributes:(A) elpi foo.
```
Here the delimiters `#[` and `]` are chosen for consistency, you can use any
"delimited" syntax really.
The usual prefix notation is also possible with the following limitations
due to a parsing conflicts in the Coq grammar (at the time of writing):
```coq
Tactic Notation "#[" attributes(A) "]" "tac" :=
ltac_attributes:(A) elpi tac.
```
- `#[ att ] tac.` does not parse
- `(#[ att ] tac).` works
- `idtac; #[ att ] tac.` works
- Change `-qua.lid` is no more understood as the string `"-qua.lid"` but as
two strings (when passed to a command, syntax error when passed to a tactic)
## [1.9.7] - 15-04-2021
Requires Elpi 1.13.1 and Coq 8.13.
### Vernacular
- New attribute `#[skip="rex"]` and `#[only="rex"]` for the
`Elpi Acumulate` family of commands which let one accumulate
a piece of (compatibility) code only on some Coq versions.
## [1.9.6] - 13-04-2021
Requires Elpi 1.13.1 and Coq 8.13.
### API
- New `coq.reduction.lazy.norm`
- New `coq.reduction.native.norm`
- New `coq.reduction.native.available?`
- Rename `coq.reduction.cbv.whd_all` -> `coq.reduction.cbv.norm`
- Rename `coq.reduction.vm.whd_all` -> `coq.reduction.vm.norm`
## [1.9.5] - 26-03-2021
Requires Elpi 1.13 and Coq 8.13.
### Vernacular
- Commands, Tactics and Db cannot be declared inside sections or modules
(it never really worked, but now you get an error message).
- Clauses which are accumulated via `coq.elpi.accumulate` and are not `@local!`
survive section closing if they don't mention the section variables being
discharged.
### Typechecker
- Warnings can be turned into errors by passing Coq `-w +elpi.typecheck`.
### API
- New `coq.CS.db-for` to filter the CS db given a projection or a canonical
value, or both.
- New `coq.warning` like `coq.warn` but with a category and name, so that
the message can be silenced or turned into an error.
## [1.9.4] - 17-03-2021
Requires Elpi 1.13 and Coq 8.13.
### Elpi
- Calls to APIs that only read the global state are much faster (thousands of
times faster)
- Fix compilation with OCaml 4.12
### API
- Fix issue with `coq.env.add-abbreviation` when given a term with binders
having overlapping `name`s.
- New `copy-indt-decl`
- New `coq.coercion.declare` is able to infer the endpoints if omitted
## [1.9.3] - 18-02-2021
Requires Elpi 1.13 and Coq 8.13.
### Elpi
- Fix issue with async-mode (Elpi commands can change the parser)
### API
- New `attmap` attribute type to represent associative maps over strings, eg
`#[foo(x = "a", y = "b")]`
## [1.9.2] - 12-02-2021
Requires Elpi 1.13 and Coq 8.13.
### API
- Fix `elpi.loc` computation when run in interactive mode.
- New `@using! S` attribute for `coq.env.add-const` akin to Coq's `#[using=S]`.
## [1.9.1] - 11-02-2021
Requires Elpi 1.13 and Coq 8.13.
### API
- Fix `coq.env.add-section-variable` and `coq.env.add-axiom` were not handling
universes correctly.
### Build system
- New target `build` which only builds elpi and the apps
- New target `test` which runs all tests for elpi and the apps
- OPAM package only calls `test` only if requested, hence the package typically
installs faster
## [1.9.0] - 10-02-2021
Requires Elpi 1.13 and Coq 8.13.
### HOAS
- Fix `coq.env.indt-decl` to generate a `record-decl` for records.
### Elpi
- Fix issue with the compiler cache when used in async-mode (via CoqIDE or
vscoq).
### API
- New type `coq.pp` and `coq.pp.box` to describe Coq's pretty printer box model
- New `coq.pp->string` to turn formatting boxes into a string
- New `coq.term->pp` to turn formatting boxes into a string
- New `@ppall!` attribute to print terms in full details
- New `@ppmost!` attribute to print terms in a reparsable way
- New `@ppwidth! N` attribute to specify the maximal line length when turning
formatting boxes into strings
- New `fold-map` to map a term with an accumulator
- New `coq.env.add-section-variable`
- New `coq.env.add-axiom`
- Deprecate `coq.env.add-const` for declaring axioms or section variables. The
deprecation warning is called `elpi.add-const-for-axiom-or-sectionvar` and
can be turned into an error by passing to `coqc` the option
`-w +elpi.add-const-for-axiom-or-sectionvar`
### Tooling
- The `COQ_ELPI_ATTRIBUTES=text` parses `text` as Coq attributes `#[elpi(text)]`
and passes them to all commands. Attributes in the `elpi.` namespace are
silently ignored by commands not using them.
- Attribute `elpi.loc` carries the `loc` of the command being run (if exported
with `Elpi Export cmd`). This location does not comprise control flags
(eg `Fail`, `Time`) nor attributes. This limitation will be lifted in
Coq 8.14 (8.13 does not expose this parsing information to plugins).
## [1.8.1] - 11-12-2020
Requires Elpi 1.12 and Coq 8.13.
### HOAS
- Illformed terms like `global (const X)` (which have no
representation in Coq) are now reported with a proper error message.
Whe passed to `coq.term->string`, instead of a fatal error, we pick for
the illformed sub term the `unknown_gref` special constant.
## [1.8.0] - 29-11-2020
Requires Elpi 1.12 and Coq 8.12.
### API
- New `@primitive!` attribute for `coq.env.add-indt` allowing one to declare
primitive records. So far no term syntax for primitive projects is supported,
their "non primitive" version is always used instead.
### HOAS
- Best effort support for Coq's `let (x, y, .. ) := t in ` in quotations.
### API
- Fix `coq.term->gref` skips over casts
## [1.7.0] - 26-11-2020
Requires Elpi 1.12 and Coq 8.12.
### HOAS
- New `primitive (uint63 )` term constructor
- New `primitive (float64 )` term constructor
### API
- New `coq.reduction.lazy.whd_all`
- New `coq.reduction.cbv.whd_all`
- New `coq.reduction.vm.whd_all`
- New `coq.env.const-primitive?`
- Fix argument `const-decl` is accepted even if the name is "_", allowing one
to write `Elpi command Definition _ : type := body`
- Fix `coq.notation.abbreviation` gives an error if too few arguments are
provided
### Sources
Major reorganization of sources:
- src/ is for .ml files
- elpi/ for .elpi files
- theories/ for .v files meant to be installed
- tests/ for the test suite, not to be installed
- examples/ for tests (not to be installed)
Moreover the apps/ directory is for applications written in Coq-Elpi, their
structure follows the same convention
### NES (Namespace Emulation System)
- POC application emulating name spaces on top of modules
### Elpi integration
- Use Elpi 1.12 API to implement a compiler cache and avoid recompiling
over and over the same programs.
## [1.6.0] - 21-08-2020
Requires Elpi 1.11 and Coq 8.12.
### UIs
- Display failures generated by `std.assert!` as errors
### Derive
- Use the new `coq.elaborate-skeleton` API to insert coercions
### Fix
- Embedding for sorts was incorrectly mapping `Prop` to `sprop`
- `coq.env.add-const` made 8.12 friendly with a workaround for coq/coq#12759
### API
- New `coq.elaborate-skeleton` and `coq.elaborate-ty-skeleton` that run
Coq's elaborator on a term obtained by disregarding evars and universes
in the given input. Unfortunately Coq's elaborator does not take terms
as input, but glob terms, and the conversion function is not lossless.
See also `lib:elpi.hole`.
- New `coq.elaborate-indt-decl-skeleton` to elaborate an inductive type
declaration.
- New `coq.elaborate-arity-skeleton` to elaborate an arity.
- New `coq.env.current-path` to get the current module path.
- New `coq.modpath->path` and `coq.modpath->path` to get access to the
components of a module path.
- Change `coq.elpi.accumulate` understands the `@local!` attribute, which makes
the clauses `Local` to the module into which they live.
### HOAS
- New `lib:elpi.hole` constant that can be used in place of a unification
variable to denote an implicit argument when calling `coq.*-skeleton` APIs
## [1.5.1] - 29-07-2020
Requires Elpi 1.11 and Coq 8.12.
### API:
Locality is now supported by `coq.CS.declare-instance`
## [1.5.0] - 29-07-2020
Requires Elpi 1.11 and Coq 8.11.
### HOAS
- New option `@holes!` to be assumed (as in `@holes! => ...`) before
calling any Coq API. When this option is given unknown unification variables
are interpreted as "implicit arguments" (linear holes that see all the
variables in scope). If the unification variable is outside the pattern
fragment the following heuristic is applied: arguments that are not variables
are heuristically dropped; arguments which are variables but occur multiple
times are kept only once (the first occurrence is kept, the others are
dropped).
### API
- New `coq.arguments.set-default-implicit` that behaves like
`Arguments foo : default implicits`
- Change of arguments of type `@global?` attributes `@local!` or `@global!`.
In order to pass a locality directive one has to do something like
`@global! => coq.add-something`
Locality is understood by:
- `coq.TC.declare-instance`
- `coq.coercion.declare`
- `coq.arguments.set-implicit`
- `coq.arguments.set-default-implicit`
- `coq.arguments.set-name`
- `coq.arguments.set-scope`
- `coq.arguments.set-simplification`
- `coq.notation.add-abbreviation`
- `coq.env.add-const`
- Change of argument for deprecation to attribute `@deprecated! Since Message`.
In order to pass a deprecation directive one has to do something like
`@deprecated! "8.11.0" "use this instead" => coq.add-something`
Deprecation is understood by:
- `coq.notation.add-abbreviation`
- New macro `@transparent!` with value `ff` to be used with `coq.env.add-const`
### Elaborator
- `engine/elaborator.elpi` is now installed (but not used by default).
One can `Elpi Accumulate "engine/elaborator.elpi".` in order to load it.
It is too experimental to use it in production, but it is also hard to
experiment with it without having it installed.
### CI
- Switch to Github Actions and Coq Community's Docker workflow
### Bugfix
- anonymous record fields are not given a generated name anymore
- `coq.typecheck` and `coq.typecheck-ty` API now ensure that all unification
problems required by type checking are actually solved by Coq's unifier
- some debug printings used to raise errors in corner cases, now fixed
## [1.4.1] - 2020-06-10
Minor fixes
- Missing opaque data type declaration for `abbreviation` (could lead to
confusing type errors)
- Parse also "keywords" where `qualified_name` is expected. `Elpi Export x.`
turns `x` into a keyword, and that used to break commands
`Elpi Something x ...`. Parsing of all commands is now resilient to this.
## [1.4.0] - 2020-05-19
Requires Elpi 1.11 and Coq 8.11 or 8.12.
The main visible change is the `indt-decl` data type that now faithfully
represents an inductive type declaration (including the implicit status of
parameters). Also all the predicates implemented in `coq-lib` are now in
the `coq.` namespace.
### API
- New `coq.notation.abbreviation-body` to retrieve the number of arguments and
body of a syntactic definition.
- New `coq.id->name` to convert a relevant id into an irrelevant pretty printing
hint.
- New `coq.mk-n-holes ` to produce a list of flexible terms.
- New `coq.env.indt-decl` to read for the environment an inductive type
represented in HOAS form
- `coq.env.indt->decl` renamed `coq.build-indt-decl`
- New `coq.env.rename-indt-decl`
- Change `coq.env.add-indt` now sets the imlicit status of the inductive
type and its constructors (since the `parameter` constructor can carry it)
- New `coq.arity->nparams` to count the number of parameters
- Change `parse-attributes` made deterministic
- Change `coq.unify-leq` and `coq.unify-eq` now return a diagnostic
- Change `subst-prod` -> `coq.subst-prod`
- Change `subst-fun` -> `coq.subst-fun`
- Change `prod->fun` -> `coq.prod->fun`
- Change `count-prods` -> `coq.count-prods`
- Change `prod-R-fun` -> `coq.prod-R-fun`
- Change `safe-dest-app` -> `coq.safe-dest-app`
- Change `arity->sort` -> `coq.arity->sort`
- Change `term->gref` -> `coq.term->gref`
- Change `fresh-type` -> `coq.fresh-type`
- Change `build-match` -> `coq.build-match`
- Change `map-under-fun` -> `coq.map-under-fun`
- Change `iter-under-fun` -> `coq.iter-under-fun`
- Change `bind-ind-arity` -> `coq.bind-ind-arity`
- Change `with-TC` -> `coq.with-TC`
- Change `valid-attribute` -> `coq.valid-attribute`
- Change `is-one-of` -> `coq.is-one-of`
- Change `parse-attributes` -> `coq.parse-attributes`
- Change `mk-app` -> `coq.mk-app`
- Change `mk-app-uvar` -> `coq.mk-app-uvar`
- Change `mk-eta` -> `coq.mk-eta`
### Universes
- New support for `Type@{name}` in Coq `{{ quotations }}`.
- Fix more precise promotion of universe variables to universe global names
in builtins changing the Coq environment (eg `coq.env.add-const`).
- New user error when `coq.elpi.accumulate` is given a clause that mentions
universe variables: only global universes can be stored in a DB.
### HOAS
- Change `indt-decl`:
- the `parameter` constructor carries an `id`, `imlpicit_kind` and a type
- the `coinductive` constructor was removed, the `inductive` one carries
a `bool`, `tt` for inductive, `ff` for coinductive
- the `inductive` constructor no more carries the number of non uniform
parameters, and the inductive type arity (see below) is no more a simple term
but rather an `arity` (all its parameters are non uniform)
- the `constructor` constructor now carries an `arity` so that non uniform
parameters can be represented faitfully
- New `arity` data type, constructors are `parameter` (shared with `indt-decl`)
and `arity`.
- New `indt-decl` argument type introduced in version 1.3 now supports the
syntax of inductive types (not just records). Eg
`Elpi command Inductive P {A} t : I := | K1 .. | K2 ..`.
- Change `context-item` now carries an `id` and an `implicit-kind`
- Change `const-decl` now carries an arity to describe the parameters of
the definition in a faithful way
- New `@pi-parameter ID Ty p\ ...` to postulate a nominal `p` with type `Ty`
and a name built out of the id `ID`
### Derive
- New derivations `derive.invert` and `derive.idx2inv` now called by `derive`
- New global command `derive` taking in input the name of an inductive
or an inductive declaration. In the latter case all derivations are placed
in a module named after the inductive
## [1.3.1] - 2020-03-01
Port to Coq 8.11, two API changes:
- `field` constructor of `indt-decl` takes an argument of type
`field-attributes` rather than a simple `bool`. The macro `@coercion!` works
in both versions, as well as omitting the attribute using `_`. In 8.11 it is
possible to disable canonical inference for a field using the
`(canonical false)` attribute.
- `coq.env.add-abbreviation` takes an extra argument (deprecation info). Code
working on both versions can be obtained as follows:
```prolog
if (coq.version _ 8 10 _)
(std.unsafe-cast coq.notation.add-abbreviation F, F ... Abbrev)
(std.unsafe-cast coq.notation.add-abbreviation G, G ... Deprecation Abbrev).
```
## [1.3.0] - 2020-02-27
Requires Elpi 1.10 and Coq 8.10 or 8.11.
The main visible change is that opaque data types such as `@constructor`,
`@inductive` and `@constant` are now written without the `@`, since Elpi now
supports the `typeabbrev` directive.
The main invisible change is that code accumulated into commands and tactics is
"compiled" by Elpi once and forall in the context in which it is accumulated. As
a consequence Coq code inside `{{quotations}}` is processed in that, and only
that, context of notations, scopes, etc. Data bases are compiled every time it
is needed in the current Coq context, hence quotations should be used with care.
The file `coq-HOAS.elpi` is now distributed as part of `coq-builtin.elpi`.
### Vernacular
- New `Elpi Export command` to make `command` available without the `Elpi`
prefix.
- `Elpi command` (exported or not) can now access Coq's attributes (the
`#[option]` thing). See the HOAS section below.
- Coq keywords or symbols passed to command and tactics are interpreted as
strings even if not quoted. Eg `Elpi command =>` is the same of
`Elpi command "=>"`.
- The identifiers `Record`, `Definition`, `Axioms` and `Context` are now
reserved (see the HOAS section below). In order to pass them (as strings)
one has to quote them.
### APIs
- New `coq.typecheck-ty` to typecheck a type (outputs a universe)
- New `coq.env.import/export-module`.
- New `coq.env.begin/end-section`.
- New `coq.notation.abbreviation` to unfold an abbreviation.
- New `coq.locate-abbreviation` to locate abbreviations.
- New `coq.locate-any` that never fails and gives a list of possible
interpretations (term, abbreviation, module, module type).
- Rename `coq.env.typeof-gr` to `coq.env.typeof`.
- Rename `term->gr` to `germ->gref`.
- Rename `coq.gr->*` to `coq.gref->*string*`
- Change `coq.typecheck` and `coq.typecheck-indt-decl` so that they
never fail and have a 3rd argument of type `diagnostic` (from Elpi 1.9)
to signal success or errors (that can be printed).
- Change `coq.elpi.accumulate` so that one can put the clause either in
current module from which the program is started, or in the current
module while the program runs (which can be different if one uses the
`coq.env.begin-module` API).
- Remove `coq.elaborate` and `coq.elaborate-indt-decl`.
- Fix `coq.typecheck T TY` to uses Coq's unification to equate
the type inferred for `T` and `TY` (when it is provided by
the user).
- Fix `coq.CS.*` w.r.t. default instances of canonical structures.
- Fix all APIs changing the Coq global state to abort if they are used
from a tactic.
- Fix `coq.gr->string` to not duplicate the label part of the name
### HOAS
- Change context entry `def` to not carry a cache for the normal form
of the defined term (now cached by a specific `cache` context entry).
`def` now carries the exact same information of a `let`, as `decl`
carries the same information of a `fun`.
- New `indt-decl` argument type with a concrete syntax that mimics the
standard one for records. Eg `Elpi command Record x := K { f : T }`.
- New `const-decl` argument type with a concrete syntax that mimics the
standard one for definitions or axioms.
Eg `Elpi command Definition x := t.`.
- New `ctx-decl` argument type with a concrete syntax that mimics the
standard one for contexts. Eg `Elpi command Context T (x : T).`.
- Add to the context under which `main` is run the list of attributes
passed to the command invocation (Coq syntax is for example `#[myflag]`).
See the `attribute-value` data type in `coq-builtin.elpi` and
`parse-attributes` helper in `coq-lib.elpi`.
## [1.2.0] - 2019-10-30
### APIs
- New `coq.gr->path` to get the path components as a list of strings
- Failure of `coq.ltac.call` is now turned into logical failure, as any
other Elpi tactic
- Fix `coq.end.add-indt` in the case of record (was not flagging the inductive
as such)
- Fix `coq.version`, wrong parsing of beta versions
- Expose `set` and `map` from Elpi 1.8 (generic data structure for ground terms)
### Documentation
- Improve reflexive tactic demo
- Fix documentation of `coq.gr->*` APIs
- `coq-HOAS.elpi`, `coq-lib.elpi` and `coq-builtin.elpi` are now installed since
they provide useful doc (but are not needed by the runtime, since they are
embedded in `elpi.vo`)
## [1.1.0] - 2019-10-10
### derive.param2
- interface made consistent with other derivations: `derive.param2` takes in
input optional suffix, instead of the full name of the derived concept
- storage of previous derivations based on Elpi Db
- the derivation generates nicer types for relators over fixpoints (the new
types are convertible to the old ones, but the fixpoint is not expanded).
PR [#84](https://github.com/LPCIC/coq-elpi/pull/84/) by Cyril Cohen
### Documentation
- Improved documentation of `coq.typecheck`
## [1.0.0] - 2019-10-09
- First public release
LPCIC-coq-elpi-eb449d7/LICENSE 0000664 0000000 0000000 00000063535 15230417534 0015524 0 ustar 00root root 0000000 0000000 GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
(This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.)
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
{description}
Copyright (C) {year} {fullname}
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random
Hacker.
{signature of Ty Coon}, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!
LPCIC-coq-elpi-eb449d7/Makefile 0000664 0000000 0000000 00000005215 15230417534 0016146 0 ustar 00root root 0000000 0000000 dune_wrap = $(shell command -v coqc > /dev/null || echo "etc/with-rocq-wrap.sh")
dune = $(dune_wrap) dune $(1) $(DUNE_$(1)_FLAGS) --stop-on-first-error
# This makefile is mostly calling dune and dune doesn't like
# being called in parralel, so we enforce -j1
.NOTPARALLEL:
all:
$(call dune,build)
$(call dune,build) builtin-doc
.PHONY: all
build-core:
$(call dune,build) theories
$(call dune,build) builtin-doc
.PHONY: build-core
build-apps:
$(call dune,build) $$(find apps -type d -name theories)
.PHONY: build-apps
build:
$(call dune,build) -p rocq-elpi @install
$(call dune,build) builtin-doc
.PHONY: build
all-tests-no-plugins: test-core test-repro test-stdlib test-apps test-apps-stdlib
.PHONY: all-tests-no-plugins
all-tests: all-tests-no-plugins test-plugins
.PHONY: all-tests
test-core:
$(call dune,runtest) tests
$(call dune,build) tests
# Check for build reproducibility
test-repro: test-core
$(dune_wrap) dune coq top --toplevel coqc tests/accumulate1.v -- tests/accumulate1.v
md5sum tests/accumulate1.vo > md5sum_accumulate1vo_1
rm -f tests/accumulate1.vo tests/accumulate1.glob
$(dune_wrap) dune coq top --toplevel coqc tests/accumulate1.v -- tests/accumulate1.v
md5sum tests/accumulate1.vo > md5sum_accumulate1vo_2
rm -f tests/accumulate1.vo tests/accumulate1.glob
diff md5sum_accumulate1vo_1 md5sum_accumulate1vo_2
rm md5sum_accumulate1vo_1 md5sum_accumulate1vo_2
.PHONY: test-core test-repro
test-apps:
$(call dune,build) $$(find apps -type d -name tests)
.PHONY: test-apps
test-plugins:
$(call dune,build) $$(find apps -type d -name tests-plugin)
.PHONY: test-plugins
test-apps-stdlib:
$(call dune,build) $$(find apps -type d -name tests-stdlib)
.PHONY: test-apps-stdlib
test-stdlib:
$(call dune,build) tests-stdlib
.PHONY: test-stdlib
all-examples: examples examples-stdlib
.PHONY: all-examples
examples:
$(call dune,build) examples
.PHONY: examples
examples-stdlib:
$(call dune,build) examples-stdlib
.PHONY: examples-stdlib
doc:
@echo "########################## generating doc ##########################"
@python3 -m venv alectryon
@alectryon/bin/pip3 install git+https://github.com/gares/alectryon.git@4509235b1b83b256fd15d8dff92ac71666f419a1
@mkdir -p doc
@$(foreach tut,$(wildcard examples/tutorial*$(ONLY)*.v),\
echo ALECTRYON $(tut) && alectryon/bin/python3 etc/alectryon_elpi.py \
--frontend coq+rst \
--output-directory doc \
--pygments-style vs \
--coq-driver vsrocq \
$(tut) &&) true
@cp etc/tracer.png doc/
clean:
$(call dune,clean)
.PHONY: clean
install:
$(call dune,install) rocq-elpi
.PHONY: install
nix:
nix-shell --arg do-nothing true --run "updateNixToolBox && genNixActions"
.PHONY: nix
LPCIC-coq-elpi-eb449d7/README.md 0000664 0000000 0000000 00000073221 15230417534 0015767 0 ustar 00root root 0000000 0000000 [](https://github.com/LPCIC/coq-elpi/actions/workflows/ci.yml)
[](https://github.com/LPCIC/coq-elpi/actions/workflows/nix-action-rocq-9.0.yml)
[](https://github.com/LPCIC/coq-elpi/actions/workflows/nix-action-rocq-9.1.yml)
[](https://github.com/LPCIC/coq-elpi/actions/workflows/nix-action-rocq-9.2.yml)
[](https://github.com/LPCIC/coq-elpi/actions/workflows/nix-action-rocq-master.yml)
[](https://github.com/LPCIC/coq-elpi/actions/workflows/doc.yml)
[](https://coq.zulipchat.com/#narrow/stream/253928-Elpi-users.20.26.20devs)
### Rocq-Elpi
[Rocq](https://github.com/coq/coq) plugin embedding [Elpi](https://github.com/LPCIC/elpi).
[Elpi](https://github.com/LPCIC/elpi) provides an easy-to-embed implementation
of a dialect of λProlog, a programming language well suited to manipulate
abstract syntax trees containing binders and unification variables.
Rocq-Elpi provides a Rocq plugin that lets one define new commands and tactics in
Elpi. For that purpose it provides an embedding of Rocq's terms into λProlog
using the Higher-Order Abstract Syntax approach
([HOAS](https://en.wikipedia.org/wiki/Higher-order_abstract_syntax)).
Rocq-Elpi also exports to Elpi a comprehensive set of Rocq's primitives,
so that one can print a message, access the environment of theorems and data
types, define a new constant, declare implicit arguments, type classes
instances, and so on. For convenience it also provides quotations
and anti-quotations for Rocq's syntax, so that one can write `{{ nat -> lp:X }}`
in the middle of an Elpi program instead of the equivalent AST.
Finally Rocq-Elpi provides an FFI to bind OCaml libraries. For
example [apps/json](apps/json) provides access to external data
in json format via the Yojson library, and [apps/xml](apps/xml) does the same
for xml-light.
## What is the purpose of all that
In the short term, provide an extension language for Rocq well suited to
manipulate terms containing binders. One can already use Elpi to implement
commands and tactics.
As ongoing research we are looking forward to express algorithms like higher
order unification and type inference, and to provide an alternative
elaborator for Rocq.
## Installation
The simplest way is to use [OPAM](http://opam.ocaml.org/) and type
```
opam repo add rocq-released https://rocq-prover.org/opam/released
opam install rocq-elpi
opam install rocq-elpi-json # example of optional plugin
```
### Editor Setup
The recommended user interface is [VSRocq](https://github.com/rocq-prover/vsrocq/).
We provide an [extension for vscode](https://github.com/LPCIC/coq-elpi-lang) in the
market place, just look for Elpi. The extension provides syntax hilighting
for both languages even when they are nested via quotations and antiquotations.
Other editors (click to expand)
At the time of writing Proof General does not handle quotations correctly, see ProofGeneral/PG#437.
In particular `Elpi Accumulate lp:{{ .... }}.` is used in tutorials to mix Rocq and Elpi code
without escaping. Rocq-Elpi also accepts `Elpi Accumulate " .... ".` but strings part of the
Elpi code needs to be escaped. Finally, for non-tutorial material, one can always put
the code in an external file declared with `From some.load.path Extra Dependency "filename" as f.`
and use `Elpi Accumulate File f.`.
RocqIDE does handle quotations. The installation process puts
[coq-elpi.lang](etc/coq-elpi.lang)
in a place where RocqIDE can find it. Then you can select `coq-elpi`
from the menu `Edit -> Preferences -> Colors`.
For Vim users, [Coqtail](https://github.com/whonore/Coqtail) provides syntax
highlighting and handles quotations.
Development version (click to expand)
To install the development version one can type
```
opam pin add rocq-elpi https://github.com/LPCIC/coq-elpi.git
```
One can also clone this repository and type `make`, but check you have
all the dependencies installed first (see [rocq-elpi.opam](rocq-elpi.opam)).
We recommend to look at the [CI setup](.github/workflows) for
ocaml versions being tested. Also, we recommend to install `dot-merlin-reader`
and `ocaml-lsp-server` (version 1.15).
## Documentation
### Tutorials
- [The Elpi programming language](https://lpcic.github.io/coq-elpi/tutorial_elpi_lang.html) is an Elpi
tutorial, there is nothing Rocq specific in there even if the tutorial uses Rocq
to step trough the various examples. If you never heard of λProlog or HOAS
based languages (like Twelf or Beluga) then you are strongly encouraged to
read this tutorial and have a look at
[λProlog's home page](http://www.lix.polytechnique.fr/Labo/Dale.Miller/lProlog/)
for additional documentation. Even if you are familiar with λProlog or HOAS it
may be worth reading the last sections since they focus on Elpi specific
features. Last but not least it covers common pitfalls for people with a
background in functional programming and the tracing mechanisms (useful for
debugging).
- [HOAS of Rocq terms](https://lpcic.github.io/coq-elpi/tutorial_coq_elpi_HOAS.html) focuses on how
Rocq terms are represented in Elpi, how to inspect them and call Rocq APIs under
a context of binders, and finally how holes ("evars" in Rocq slang) are
represented. It assumes the reader is familiar with Elpi.
- [Writing commands in Elpi](https://lpcic.github.io/coq-elpi/tutorial_coq_elpi_command.html) focuses on how to
write commands, in particular how to store a state across calls via so called
DBs and how to handled command arguments. It assumes the reader is familiar
with Elpi and the HOAS of Rocq terms.
- [Writing tactics in Elpi](https://lpcic.github.io/coq-elpi/tutorial_coq_elpi_tactic.html) describes how goals
and tactics are represented, how to handle tactic arguments and finally how
to define tactic notations. It assumes the reader is familiar with Elpi and
the HOAS of Rocq terms.
- [Elpi: rule-based meta-language for Rocq](https://www.youtube.com/watch?v=XjkpA5rVxkM)
video recording of the keynote at RocqPL25 ([slides & demo files](https://www-sop.inria.fr/members/Enrico.Tassi/coqpl2025/)).
- [Rocq-Elpi in 20 minutes](https://youtu.be/m60rHnvCJ2o)
video recording of a talk given at the Rocq Users and Developers Workshop 2020.
### Small examples (proofs of concept)
- [reification](examples/example_reflexive_tactic.v) is the typical use
case for meta programs: reading the syntax of terms into an inductive
representing a sub language on which some decision procedure can be
implemented
- [data bases](examples/example_data_base.v) shows how Elpi programs
can store data and reuse it across multiple runs
- [record expansion](examples/example_record_expansion.v) sketches a
program to unpack records in a definition: it replaces an abstraction over a
records with abstractions over all of its components
- [record to sigma](examples/example_record_to_sigma.v) sketches a
program that de-sugars a record type to iterated sigma types
- [fuzzer](examples/example_fuzzer.v) sketches a
program to alter an inductive type while preserving its well typedness. It
makes nothing useful per se, but shows how to map a term and call the type
checker deep inside it.
- [tactics](examples/example_curry_howard_tactics.v) show how to create
simple tactics by using (proof) terms and the elaborator of Rocq
- [generalize](examples/example_generalize.v) show how to abstract
subterms out (one way to skin the cat, there are many)
- [abs_evars](examples/example_abs_evars.v) show how to close a term
containing holes (evars) with binders
- [record import](examples/example_import_projections.v) gives short names
to record projections applied to the given record instance.
- [reduction surgery](examples/example_reduction_surgery.v) implements
a tactic fine tuning cbv with a list of allowed unfoldings taken from a
module.
- [open terms](examples/example_open_terms.v) implements
a tactic like `replace` that receives terms containing free variables, i.e.
variables bound in the goal but not in the proof context.
- [builtins](examples/example_plugin/) adds builtin predicates
(hence implemented in OCaml) to Elpi via a Rocq plugin
### Applications written in Rocq-Elpi
- [Derive](apps/derive/examples/usage.v) shows how to
obtain proved equality tests and a few extra gadgets out of
inductive type declarations. See the [README](apps/derive/README.md)
for the list of derivations. It comes bundled with Rocq-Elpi.
- [Locker](apps/locker) lets one hide the computational contents of definitions
via modules or opaque locks. It comes bundled with Rocq-Elpi.
- [Hierarchy Builder](https://github.com/math-comp/hierarchy-builder) is a
Rocq extension to declare hierarchies of algebraic structures.
- [Algebra Tactics](https://github.com/math-comp/algebra-tactics/) is a
port of the `ring` and `field` tactics to the Mathematical Components
library.
- [Trakt](https://github.com/ecranceMERCE/trakt) is a generic goal
preprocessing tool for proof automation tactics in Rocq.
- [Namespace Emulation System](apps/NES/examples/usage_NES.v) implements
most of the features of namespaces (on top of Rocq's modules).
- [Dx](https://gitlab.univ-lille.fr/samuel.hym/dx) uses elpi to generate
an intermediate representation of Rocq terms, to be later tranformed into
C.
- [Coercion](apps/coercion) enable to program coercions in Elpi.
It comes bundled with Rocq-Elpi.
- [Record builder](apps/rbuild) implements fancy record build/update syntax.
It comes bundled with Rocq-Elpi.
### Quick Reference
In order to load Rocq-Elpi use `From elpi Require Import elpi`.
#### Vernacular commands
(click to expand)
- `Elpi Command ` creates command named `` containing the preamble
[elpi-command](elpi/elpi-command-template.elpi).
- `Elpi Tactic ` creates a tactic `` containing the preamble
[elpi-tactic](elpi/elpi-tactic-template.elpi).
- `Elpi Db ` creates a Db (a program that is accumulated into
other programs). `` is the initial contents of the Db, including the
type declaration of its constituting predicates.
It understands the `#[phase]` attribute, see [synterp-vs-interp](README.md#separation-of-parsing-from-execution-of-vernacular-commands).
- `Elpi Program ` lower level primitive letting one crate a
command/tactic with a custom preamble ``.
- `From some.load.path Extra Dependency as ` declares ``
as a piece of code that can be accumulated via `Elpi Accumulate File`.
The content is given in the external file `` to be found in
the Rocq load path `some.load.path`.
- `Elpi File .` declares ``
as a piece of code that can be accumulated via `Elpi Accumulate File`.
This time the code is given in the .v file.
It understands the `#[phase]` attribute, see [synterp-vs-interp](README.md#separation-of-parsing-from-execution-of-vernacular-commands).
- `Elpi Accumulate [|] [|File [Signature] |Db [Header] ]`
adds code to the current program (or `` or `` if specified).
The code can be verbatim, from a file or a Db.
File names `` must have been previously declared with
`Extra Dependency` or `Elpi File`.
Accumulating `File Signature ` only adds the signautre declarations
(kinds, types, modes, type abbreviations) from `` skipping the code
(clauses/rules).
Accumulating `Db Header `, instead of `Db `, accumulates
only the first chunk of code associated with Db, typically the type
declaration of the predicates that live in the Db. When defining a command
or tactic it can be useful to first accumulate the Db header, then some
code (possibly calling the predicate living in the Db), and finally
accumulating the (full) Db.
Note that when a command is executed it may need to be (partially)
recompiled, e.g. if the Db was updated. In this case all the code accumulated
after the Db (but not after its header) may need to be recompiled. Hence
we recommend to accumulate Dbs last.
It understands the `#[skip="rex"]` and `#[only="rex"]` which make the command
a no op if the Rocq version is matched (or not) by the given regular expression.
It understands the `#[phase]` attribute, see [synterp-vs-interp](README.md#separation-of-parsing-from-execution-of-vernacular-commands).
It understands the `#[local]`, `#[global]`, and `#[superglobal]` scope attributes,
although only when accumulating to a `` (all accumulations to a program
are `#[superglobal]`). Default accumulation to db is the equivalent of `#[export]`.
See the Rocq reference manual for the meaning of these scopes.
- `Elpi Typecheck []` typechecks the current program (or `` if
specified).
It understands the `#[phase]` attribute, see [synterp-vs-interp](README.md#separation-of-parsing-from-execution-of-vernacular-commands)
- `Elpi Debug ` sets the variable ``, relevant for conditional
clause compilation (the `:if VARIABLE` clause attribute).
It understands the `#[phase]` attribute, see [synterp-vs-interp](README.md#separation-of-parsing-from-execution-of-vernacular-commands)
- `Elpi Trace [[] *|Off]` enable/disable
tracing, eventually limiting it to a specific range of execution steps or
predicate names.
It understands the `#[phase]` attribute, see [synterp-vs-interp](README.md#separation-of-parsing-from-execution-of-vernacular-commands)
- `Elpi Trace Browser` enable/disable
tracing for Elpi's [trace browser]().
- `Elpi Bound Steps ` limits the number of steps an Elpi program can
make.
- `Elpi Print [*]` prints the program `` to
a text file called `.txt` (or `` if provided) filtering out
clauses whose file or clause-name matches ``.
It understands the `#[phase]` attribute, see [synterp-vs-interp](README.md#separation-of-parsing-from-execution-of-vernacular-commands)
where:
- `` is a qualified Rocq name, e.g. `derive.eq` or `my_program`.
- `` is like `` but lives in a different namespace. By convention
`` ends in `.db`, e.g. `derive.eq.db`.
- `` is verbatim Elpi code, either `lp:{{ ... }}` or `" ... "` (in the
latter case, strings delimiters need to be escaped following Rocq rules, e.g.
`lp:{{ coq.say "hello!" }}` becomes `" coq.say ""hello!"" "`).
- `` is a string containing the path of an external file, e.g.
`"this_file.elpi"`.
- `` is a qualified Rocq name, eg `foo.elpi` (note that `Extra Dependency`
only allows simple identifiers).
- `` and `` are numbers, e.g. `17 24`.
- `` is a regexp against which the predicate name is matched,
e.g. `"derive.*"`.
#### Separation of parsing from execution of vernacular commands
(click to expand)
Since version 8.18 Rocq has separate parsing and execution phases,
respectively called synterp and interp.
Since Rocq has an extensible grammar the parsing phase is not entirely
performed by the parser: after parsing one sentence Rocq evaluates its
synterp action. The synterp actions of a command like `Import A.` are
the subset of its effect which affect parsing, like enabling a notation.
Later, during the execution phase Rocq evaluates the its
interp action, which includes effects like putting lemma names in scope or
enables type class instances etc.
Being able to parse an entire document quickly,
without actually executing any sentence, is important for developing reactive
user interfaces, but requires some extra work when defining new commands,
in particular to separate their synterp actions from their interp ones.
Each command defined with Rocq-Elpi is split into two programs,
one running during the parsing phase and the other one during the execution
phase.
##### Declaration of synterp actions
Each `Elpi Command` internally declares two programs with the same name.
One to be run while the Rocq document is parsed, the synterp-command,
and the other one while it is executed, the interp command.
`Elpi Accumulate`, by default, adds code to the interp-command.
The `#[phase]` attribute can be used to accumulate code to the synterp-command
or to both commands. `Elpi Typecheck` checks both commands.
Each `Elpi Db` internally declares one db, by default for the interp phase.
The `#[phase]` attribute can be used crate a database for the synterp phase,
or for both phases. Note that databases for the two phases are distinct, no
data is shared among them. In particular the `coq.elpi.accumulate*` API exists
in both phases and only acts on data bases for the current phase.
##### The alignment of phases
All synterp actions, i.e. calls to APIs dealing with modules and sections
like begin/end-module or import/export, have to happen at *both* synterp and
interp time and *in the same order*.
In order to do so, the synterp-command may need to communicate data to the
corresponding interp-command. There are two ways for doing so.
The first one is to use, as the main entry points, the following ones:
```
pred main-synterp i:list argument, o:any.
pred main-interp i:list argument, i:any.
```
Unlike `main` the former outputs a datum while the latter receives it in input.
During the synterp phase the API `coq.synterp-actions` lists the actions
performed so far. An excerpt from the [coq-builtin-synterp](builtin-doc/coq-builtin-synterp.elpi) file:
```
% Action executed during the parsing phase (aka synterp)
kind synterp-action type.
type begin-module id -> synterp-action.
type end-module modpath -> synterp-action.
```
The synterp-command can output data of that type, but also any other data it
wishes.
The second way to communicate data is implicit, but limited to synterp actions.
Such synterp actions can be recorded into (nested) groups whose structure is
declared using well-bracketed calls to predicates `coq.begin-synterp-group`
and `coq.end-synterp-group` in the synterp phase. In the interp phase, one can
then use predicate `coq.replay-synterp-action-group` to replay all the synterp
actions of the group with the given name at once.
In the case where one wishes to interleave code between the actions of a given
group, it is also possible to match the synterp group structure at interp, via
`coq.begin-synterp-group` and `coq.end-synterp-group`. Individual actions that
are contained in the group then need to be replayed individually.
One can use `coq.replay-next-synterp-actions` to replay all synterp actions
until the next beginning/end of a synterp group. However, this is discouraged
in favour of using groups explicitly, as this is more modular. Code that used
to rely on the now-removed `coq.replay-all-missing-synterp-actions` predicate
can rely on `coq.replay-next-synterp-actions` instead, but this is discouraged
in favour of using groups explicitly)
##### Syntax of the `#[phase]` attribute
- `#[phase="ph"]` where `"ph"` can be `"parsing"`,
`"execution"` or `"both"`
- `#[synterp]` is a shorthand for `#[phase="parsing"]`
- `#[interp]` is a shorthand for `#[phase="execution]`
#### Invocation of Elpi code
(click to expand)
- `Elpi *.` invokes the `main` predicate of the ``
program passing a possible empty list of arguments. This is how you invoke a
command.
- `elpi *.` invokes the `solve` predicate of the ``
program passing a possible empty list of arguments and the current goal. This
is how you invoke a tactic.
- `Elpi Export [As ]` makes it possible to invoke
command `` (or `` if given) without
the `Elpi` prefix or invoke tactic `` in the middle of a term just
writing ` args` instead of `ltac:(elpi args)`. Note that in
the case of tactics, all arguments are considered to be terms.
Moreover, remember that one can use `Tactic Notation` to give the tactic a
better syntax and a shorter name when used in the middle of a proof script.
Commands can declare the behavior of starting/ending a proof by, respectively,
using `#[proof="begin"] Elpi Export ..` and `#[proof="end"] Elpi Export ..`.
Starting the proof can depend on the presence of an attribute, for example
`#[proof(begin_if="interactive")] Elpi Export foo` will make
`foo` not open a proof, while `#[interactive] foo` will open a proof.
See also the `main-interp-proof` and `main-interp-qed` entry points in
[coq-builtin](builtin-doc/coq-builtin.elpi).
where `` can be:
- a number, e.g. `3`, represented in Elpi as `(int 3)`
- a string, e.g. `"foo"` or `bar.baz`, represented in Elpi as `(str "foo")` and
`(str "bar.baz")`. Rocq keywords and symbols are recognized as strings,
eg `=>` requires no quotes. Quotes are necessary if the string contains
a space or a character that is not accepted for qualified identifiers or
if the string is `Definition`, `Axiom`, `Record`, `Structure`, `Inductive`,
`CoInductive`, `Variant` or `Context`.
- a term, e.g. `(3)` or `(f x)`, represented in Elpi as `(trm ...)`. Note that
terms always require parentheses, that is `3` is a number while `(3)` is a Rocq
term and depending on the context could be a natural number
(i.e. `S (S (S O))`) or a `Z` or ... See also the section Terms as arguments
down below, and the syntax for Ltac variables down below.
Commands also accept the following arguments (the syntax is as close as possible
to the Rocq one: [...] means optional, * means 0 or more). See the `argument`
data type in `coq-builtin.elpi` for their HOAS encoding. See also the section
Terms as arguments down below.
- `Definition` _name_ _binder_* [`:` _term_] `:=` _term_
- `Axiom` _name_ `:` _term_
- [ `Record` | `Structure` ] _name_ _binder_* [`:` _sort_] `:=` [_name_] `{` _name_ `:` _term_ `;` * `}`
- [ `Inductive` | `CoInductive` | `Variant` ] _name_ _binder_* [`|` _binder_*] [`:` _term_] `:=` `|` _name_ _binder_* `:` _term_ *
- `Context` _binder_*
##### Ltac Variables
Tactics also accept Ltac variables as follows:
- `ltac_string:(v)` (for `v` of type `string` or `ident`)
- `ltac_int:(v)` (for `v` of type `int` or `integer`)
- `ltac_term:(v)` (for `v` of type `constr` or `open_constr` or `uconstr` or `hyp`)
- `ltac_open_term:(v)` (for `v` of type `uconstr`)
- `ltac_(string|int|term|open_term)_list:(v)` (for `v` of type `list` of ...)
- `ltac_tactic:(t)` (for `t` of type `tactic`)
- `ltac_attributes:(v)` (for `v` of type `attributes`)
For example:
```coq
Tactic Notation "tac" string(X) ident(Y) int(Z) hyp(T) constr_list(L) simple_intropattern_list(P) uconstr(U) tactic(TA) :=
elpi tac ltac_string:(X) ltac_string:(Y) ltac_int:(Z) ltac_term:(T) ltac_term_list:(L) ltac_tactic:(intros P) ltac_open_term:(U) ltac_tactic:(TA).
```
lets one write `tac "a" b 3 H t1 t2 t3 [|m] u ta` in any Ltac context.
Arguments are first interpreted by Ltac according to the types declared
in the tactic notation and then injected in the corresponding Elpi argument.
For example `H` must be an existing hypothesis, since it is typed with
the `hyp` Ltac type, but in Elpi it will appear as a term, eg `trm c0`.
Similarly `t1`, `t2` and `t3` are checked to be well typed and to contain no
unresolved implicit arguments, since this is what the `constr` Ltac type means
If they were typed as `open_constr` or `uconstr`, the last or both checks would
be respectively skipped. In any case they are passed to the Elpi code as `trm ...`.
Both `"a"` and `b` are passed to Elpi as `str ...`.
Argument `U` flagged as `ltac_open_term` can mention free variables. The Elpi
tactic receives `open-trm N F` where `N` is the number of free variables in `U`
and `F` is `fun x1 => ... fun xN => U`.
Argument `TA` is received as `tac T` where `T` is an (opaque) tactic that can
be called via the `coq.ltac.*` APIs.
Finally, `ltac_term:(T)` and `(T)` are *not* synonyms: but the former must be used
when defining tactic notations, the latter when invoking elpi tactics directly.
``` `(T)``` can be used to pass an open term to `elpi tactic ...`.
##### Attributes
Attributes are supported in both commands and tactics. Examples:
- `#[ att ] Elpi cmd`
- `#[ att ] cmd` for a command `cmd` exported via `Elpi Export cmd`
- `#[ att ] elpi tac`
- `Tactic Notation ... attributes(A) ... := ltac_attributes:(A) elpi tac`.
Due to a parsing conflict in Rocq grammar, at the time of writing this code:
```coq
Tactic Notation "#[" attributes(A) "]" "tac" :=
ltac_attributes:(A) elpi tac.
```
has the following limitation:
- `#[ att ] tac.` does not parse
- `(#[ att ] tac).` works
- `idtac; #[ att ] tac.` works
##### Terms as arguments
Since version 1.15, terms passed to Elpi commands code via `(term)` or via a
declaration (like `Record`, `Inductive` ...) are in elaborated format by
default. This means that all Rocq notational facilities are available, like
deep pattern matching, or tactics in terms.
One can use the attribute `#[arguments(raw)]` to declare a command which instead
takes arguments in raw format. In that case, notations are unfolded,
implicit arguments are expanded (holes `_` are added) and lexical analysis is
performed (global names and bound names are identified, holes are applied
to bound names in scope), but deep pattern matching or tactics in terms are not
supported, and in particular type checking/inference is not performed.
Once can use the `coq.typecheck` or `coq.elaborate-skeleton` APIs
to fill in implicit arguments and insert coercions on raw terms.
Terms passed to Elpi tactics via tactic notations can be forced to be elaborated
beforehand by declaring the parameters to be of type `constr` or `open_constr`.
Arguments of type `uconstr` are passed raw.
##### Testing/debugging:
- `Elpi Query [] ` runs `` in the current program (or in
`` if specified).
- `Elpi Query [] ` runs
`` in the current (synterp) program (or in
`` if specified) and `` in the current program (or ``).
- `elpi query [] *` runs the `` predicate
(that must have the same signature of the default predicate `solve`).
#### Supported features of Gallina (core calculus of Rocq)
(click to expand)
- [x] functional core (fun, forall, match, application, let-in, sorts)
- [x] evars (unification variables)
- [x] single Inductive and CoInductive types (including parameters, non-uniform
parameters, indexes)
- [ ] mutual Inductive and CoInductive types
- [x] fixpoints
- [ ] mutual fixpoints
- [ ] cofixpoints
- [x] primitive records
- [x] primitive projections
- [x] primitive integers
- [x] primitive floats
- [ ] primitive arrays
- [x] universe polymorphism
- [x] modules
- [x] module types
- [x] functor application
- [x] functor definition
#### Supported features of Gallina's extensions (extra logical features, APIs)
(click to expand)
Checked boxes are available, unchecked boxes are planned, missing items are not
planned. This is a high level list, for the details
see [coq-builtin](builtin-doc/coq-builtin.elpi).
- [x] i/o: messages, warnings, errors, Rocq version
- [x] logical environment: read, write, locate
+ [x] dependencies between objects
- [x] type classes database: read, write
+ [ ] take over resolution
- [x] canonical structures database: read, write
+ [ ] take over resolution
- [x] coercions database: read, write
- [x] sections: open, close
- [x] scope management: import, export
- [x] hints: mode, opaque, resolve, strategy
- [x] arguments: implicit, name, scope, simpl
- [x] abbreviations: read, write, locate
- [x] typing and elaboration
- [x] unification
- [x] reduction: `lazy`, `cbv`, `vm`, `native`
- [x] flags for `lazy` and `cbv`
- [x] ltac1: bridge to call ltac1 code, mono and multi-goal tactics
- [x] option system: get, set, add
- [x] pretty printer: boxes, printing width
- [x] attributes: read
#### Relevant files
- [coq-builtin](builtin-doc/coq-builtin.elpi) documents the HOAS encoding of Rocq terms
and the API to access Rocq
- [coq-builtin-synterp](builtin-doc/coq-builtin-synterp.elpi) documents APIs to interact with Rocq at parsing time
- [elpi-buitin](builtin-doc/elpi-builtin.elpi) documents Elpi's standard library, you may
look here for list processing code
- [coq-lib](elpi/coq-lib.elpi) provides some utilities to manipulate Rocq terms;
it is an addendum to coq-builtin
- [elpi-command-template](elpi/elpi-command-template.elpi) provides the pre-loaded code for `Elpi Command` (execution phase) and `Elpi Tactic`
- [elpi-command-template-synterp](elpi/elpi-command-template-synterp.elpi) provides the pre-loaded code for `Elpi Command` (parsing phase)
- [elpi-tactic-template](elpi/elpi-tactic-template.elpi) provides the pre-loaded code for `Elpi Tactic` (note tactics also load [elpi-command-template](elpi/elpi-command-template.elpi))
#### Organization of the repository
The code of the Rocq plugin is at the root of the repository in the [src](src/),
[elpi](elpi/) and [theories](theories/) directories.
The [apps](apps/) directory contains client applications written in Rocq-Elpi.
#### License
Rocq-Elpi is free software under the LGPL v2.1 license or any later version.
LPCIC-coq-elpi-eb449d7/_CoqProject 0000664 0000000 0000000 00000006616 15230417534 0016647 0 ustar 00root root 0000000 0000000 -arg -w -arg +elpi.deprecated
-arg -w -arg -ambiguous-extra-dep
-arg -w -arg -future-coercion-class-field
# Plugins.
-I _build/install/default/lib
# Theories
-R theories elpi
-R _build/default/theories elpi
-Q elpi elpi_elpi
-Q _build/default/elpi elpi_elpi
-Q examples elpi.examples
-Q _build/default/examples elpi.examples
-Q examples-stdlib elpi_examples_stdlib
-Q _build/default/examples-stdlib elpi_examples_stdlib
-Q apps/coercion/tests elpi.apps.coercion.tests
-Q _build/default/apps/coercion/tests elpi.apps.coercion.tests
-Q apps/coercion/theories elpi.apps.coercion
-Q _build/default/apps/coercion/theories elpi.apps.coercion
-Q apps/cs/tests elpi.apps.cs.tests
-Q _build/default/apps/cs/tests elpi.apps.cs.tests
-Q apps/cs/theories elpi.apps.cs
-Q _build/default/apps/cs/theories elpi.apps.cs
-Q apps/derive/elpi elpi.apps.derive.elpi
-Q _build/default/apps/derive/elpi elpi.apps.derive.elpi
-Q apps/derive/examples elpi.apps.derive.examples
-Q _build/default/apps/derive/examples elpi.apps.derive.examples
-Q apps/derive/theories elpi.apps.derive
-Q _build/default/apps/derive/theories elpi.apps.derive
-Q apps/derive/theories/derive elpi.apps.derive.derive
-Q _build/default/apps/derive/theories/derive elpi.apps.derive.derive
-Q _build/default/apps/derive/tests elpi.apps.derive.tests
-Q apps/derive/tests-stdlib elpi_apps_derive_tests_stdlib
-Q _build/default/apps/derive/tests-stdlib elpi_apps_derive_tests_stdlib
-Q apps/eltac/examples elpi.apps.eltac.examples
-Q _build/default/apps/eltac/examples elpi.apps.eltac.examples
-Q apps/eltac/theories elpi.apps.eltac
-Q _build/default/apps/eltac/theories elpi.apps.eltac
-Q apps/eltac/tests elpi.apps.eltac.tests
-Q _build/default/apps/eltac/tests elpi.apps.eltac.tests
-Q apps/eltac/tests-stdlib elpi_apps_eltac_tests_stdlib
-Q _build/default/apps/eltac/tests-stdlib elpi_apps_eltac_tests_stdlib
-Q apps/locker/elpi elpi.apps.locker.elpi
-Q _build/default/apps/locker/elpi elpi.apps.locker.elpi
-Q apps/locker/tests elpi.apps.locker.tests
-Q _build/default/apps/locker/tests elpi.apps.locker.tests
-Q apps/locker/theories elpi.apps.locker
-Q _build/default/apps/locker/theories elpi.apps.locker
-Q apps/NES/elpi elpi.apps.NES.elpi
-Q _build/default/apps/NES/elpi elpi.apps.NES.elpi
-Q apps/NES/examples elpi.apps.NES.examples
-Q _build/default/apps/NES/examples elpi.apps.NES.examples
-Q apps/NES/tests elpi.apps.NES.tests
-Q _build/default/apps/NES/tests elpi.apps.NES.tests
-Q apps/NES/theories elpi.apps.NES
-Q _build/default/apps/NES/theories elpi.apps.NES
-Q apps/tc/elpi elpi.apps.tc.elpi
-Q _build/default/apps/tc/elpi elpi.apps.tc.elpi
-Q apps/tc/examples elpi.apps.tc.examples
-Q _build/default/apps/tc/examples elpi.apps.tc.examples
-Q apps/tc/theories elpi.apps.tc
-Q _build/default/apps/tc/theories elpi.apps.tc
-Q _build/default/apps/tc/tests elpi.apps.tc.tests
-Q apps/tc/tests elpi.apps.tc.tests
-Q _build/default/apps/tc/tests-stdlib elpi_apps_tc_tests_stdlib
-Q apps/tc/tests-stdlib elpi_apps_tc_tests_stdlib
-Q apps/rbuild/elpi elpi.apps.rbuild.elpi
-Q _build/default/apps/rbuild/elpi elpi.apps.rbuild.elpi
-Q apps/rbuild/examples elpi.apps.rbuild.examples
-Q _build/default/apps/rbuild/examples elpi.apps.rbuild.examples
-Q apps/rbuild/theories elpi.apps.rbuild
-Q _build/default/apps/rbuild/theories elpi.apps.rbuild
# Cram tests.
-Q tests elpi.tests
-Q _build/default/tests elpi.tests
-Q tests-stdlib elpi_tests_stdlib
-Q _build/default/tests-stdlib elpi_tests_stdlib
LPCIC-coq-elpi-eb449d7/apps/ 0000775 0000000 0000000 00000000000 15230417534 0015446 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/apps/NES/ 0000775 0000000 0000000 00000000000 15230417534 0016073 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/apps/NES/elpi/ 0000775 0000000 0000000 00000000000 15230417534 0017024 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/apps/NES/elpi/dune 0000664 0000000 0000000 00000000543 15230417534 0017704 0 ustar 00root root 0000000 0000000 (coq.theory
(name elpi.apps.NES.elpi)
(package rocq-elpi)
(theories elpi))
(rule
(target dummy.v)
(deps
(glob_files *.elpi))
(action
(with-stdout-to %{target}
(progn
(run rocq_elpi_shafile %{deps})))))
(install
(files
(glob_files (*.elpi with_prefix coq/user-contrib/elpi/apps/NES/elpi/)))
(section lib_root)
(package rocq-elpi))
LPCIC-coq-elpi-eb449d7/apps/NES/elpi/nes_interp.elpi 0000664 0000000 0000000 00000005564 15230417534 0022057 0 ustar 00root root 0000000 0000000 namespace nes {
% Print a namespace
func print-path list string, (pred i:gref, o:coq.pp).
print-path Path PP :- std.do! [
std.map {std.findall (ns Path _)} (p\ mp\ p = ns _ mp) MPs,
print.pp-list MPs (print.pp-module Path PP) Out,
coq.say {coq.pp->string Out},
].
func begin-path.
begin-path :- coq.replay-synterp-action-group "nes.begin-path".
func end-path.
end-path :- coq.replay-synterp-action-group "nes.end-path".
func open-path.
open-path :- coq.replay-synterp-action-group "nes.open-path".
namespace print {
func pp-list list A, (pred i:A, o:coq.pp) -> coq.pp.
pp-list L F Out :- std.do! [
std.map-filter L F PPs,
Out = coq.pp.box (coq.pp.v 0) {std.intersperse (coq.pp.brk 0 0) PPs},
].
kind context type.
type context
list string -> % readable path
int -> % length of full path
(pred i:gref, o:coq.pp) ->
context.
% Hides `aux` modules
func readable-path context, list string -> list string.
readable-path (context Prefix N _) FullPath Path :- std.do! [
std.drop N FullPath RelPath,
std.append Prefix RelPath Path,
].
func module-context list string, modpath, (pred i:gref, o:coq.pp) -> context.
module-context Prefix MP PP Ctx :- std.do! [
coq.modpath->path MP FullPath,
Ctx = context Prefix {std.length FullPath} PP,
].
func submodule-context context, modpath -> context.
submodule-context (context _ _ PP as Ctx) MP Ctx' :- std.do! [
coq.modpath->path MP FullPath,
readable-path Ctx FullPath Path,
Ctx' = context Path {std.length FullPath} PP,
].
func pp-module list string, (pred i:gref, o:coq.pp), modpath -> coq.pp.
pp-module Prefix PP MP Out :- std.do! [
pp-module-items {module-context Prefix MP PP} {coq.env.module MP} Out,
].
func pp-module-items context, list module-item -> coq.pp.
pp-module-items Ctx Items Out :-
pp-list Items (pp-module-item Ctx) Out.
func pp-module-item context, module-item -> coq.pp.
pp-module-item (context _ _ PP) (gref GR) Out :- PP GR Out, !.
pp-module-item Ctx (submodule MP Items) Out :- std.do! [
pp-module-items {submodule-context Ctx MP} Items Out,
].
pp-module-item Ctx (module-type MTP) Out :- pp-modtypath Ctx MTP Out.
pp-module-item Ctx (module-type-functor MTP _) Out :- pp-modtypath Ctx MTP Out.
pp-module-item Ctx (module-functor MP _) Out :- pp-modpath Ctx MP Out.
func pp-path context, string, list string -> coq.pp.
pp-path Ctx What FullPath Out :- std.do! [
readable-path Ctx FullPath Path,
Out = coq.pp.box coq.pp.h [
coq.pp.str What, coq.pp.spc,
coq.pp.str {std.string.concat "." Path},
],
].
func pp-modtypath context, modtypath -> coq.pp.
pp-modtypath Ctx MTP Out :- std.do! [
pp-path Ctx "Module Type" {coq.modtypath->path MTP} Out,
].
func pp-modpath context, modpath -> coq.pp.
pp-modpath Ctx MP Out :- std.do! [
pp-path Ctx "Module" {coq.modpath->path MP} Out,
].
}
}
LPCIC-coq-elpi-eb449d7/apps/NES/elpi/nes_synterp.elpi 0000664 0000000 0000000 00000013455 15230417534 0022260 0 ustar 00root root 0000000 0000000 namespace nes {
func ns->modpath prop -> modpath.
ns->modpath (ns _ M) M.
func open-ns->string prop -> string.
open-ns->string (open-ns S _) S.
func begin-ns string, list string, list prop -> list prop.
begin-ns NS Path In Out :-
if (Path = [])
(Fresh is NS ^ "_aux_" ^ {std.any->string {new_int} }, coq.env.begin-module Fresh none)
true,
coq.env.begin-module NS none,
coq.env.current-path CP,
Clause = open-ns NS CP,
Out = [Clause | In],
@local! =>
coq.elpi.accumulate current "NES.db"
(clause _ (after "open-ns:begin") Clause).
func subpath list string, prop ->.
subpath Path (ns Sub _) :- std.appendR _Prefix Path Sub, !.
func submod modpath, prop ->.
submod Mod (ns _ SubMod) :-
coq.modpath->path SubMod SubPath,
coq.modpath->path Mod ModPath,
std.appendR ModPath _Suffix SubPath, !.
func undup list A, list A -> list A.
undup [] _ [].
undup [X|XS] Seen YS :- std.mem! Seen X, !, undup XS Seen YS.
undup [X|XS] Seen [X|YS] :- undup XS [X|Seen] YS.
% end-ns ID Stack ClauseIn ClauseOut
func end-ns string, list string, list prop -> list prop.
end-ns NS Stack In Out :- In => std.do! [
std.rev Stack Path,
std.append Path [NS|END_] PathNoEnd,
std.findall (ns PathNoEnd M_) AllNS,
coq.env.end-module M,
% stuff inside M
std.filter AllNS (submod M) SubmodNS,
% since the current program still sees the clauses that will be dropped
% after closing M
undup SubmodNS [] SubmodNSNodup,
coq.locate-module NS M,
if (Path = [])
(std.do! [coq.env.end-module M_aux, coq.env.export-module M_aux, Local = @global!])
(Local = @local!),
% NES.Open can put clauses in scope
std.append Path [NS] NewPath,
New = [ns NewPath M | SubmodNSNodup],
std.append In New Out,
std.forall New (c\ Local => coq.elpi.accumulate current "NES.db" (clause _ _ c)),
].
:index (_ 1)
func iter-> list A, list A, (func A, list A, list prop -> list prop), list prop -> list prop.
iter-> _ [] _ O O :- coq.error "No elements".
iter-> INIT [X] F In Out :- !, F X INIT In Out.
iter-> INIT [X|XS] F In Out :- F X {std.append XS INIT} In Mid, iter-> INIT XS F Mid Out.
:index (_ 1)
func iter<- list A, list A, (func A, list A, list prop -> list prop), list prop -> list prop.
iter<- _ [] _ _ _ :- coq.error "No elements".
iter<- INIT [X] F In Out :- !, F X INIT In Out.
iter<- INIT [X|XS] F In Out :- iter<- INIT XS F In Mid, F X {std.append XS INIT} Mid Out.
% Panics unless [S] well-formed.
func string->non-empty-ns string -> list string.
string->non-empty-ns S L :- std.do! [
Ident = "[a-zA-Z_][a-zA-Z_0-9']*", % non-unicode Coq identifiers
Path is "^\\(" ^ Ident ^ "\\.\\)*" ^ Ident ^ "$",
if (rex.match Path S) true (string->ns.err S),
rex.split "\\." S L,
if (std.mem L "_") (string->ns.err S) true,
].
func string->ns.err string ->.
string->ns.err S :-
coq.error {calc ("NES: Bad : \"" ^ S ^ "\"")}.
% Panics unless [S] empty, or well-formed.
func string->ns string -> list string.
string->ns "" [] :- !.
string->ns S L :- string->non-empty-ns S L.
func ns->string list string -> string.
ns->string NS S :- std.string.concat "." NS S.
func begin-path list string -> list prop.
begin-path [] [] :- std.do! [
coq.begin-synterp-group "nes.begin-path" Group,
coq.end-synterp-group Group,
].
begin-path ([_|_] as Path) Out :- std.do! [
coq.begin-synterp-group "nes.begin-path" Group,
coq.env.current-path CP,
if (open-ns _ NSCP) (std.assert! (NSCP = CP) "NS: cannot begin a namespace inside a module that is inside a namespace") true,
std.map {std.findall (open-ns Y_ P_)} open-ns->string Stack,
if (Stack = []) true (std.do! [
coq.locate-all {std.string.concat "." Path} L,
if (std.do! [
std.mem L (loc-modpath M),
coq.modpath->path M MP,
MP = {std.append CP Path}
])
(iter-> [] Stack end-ns [] _, iter<- [] Stack begin-ns [] _)
true,
]),
iter<- Stack {std.rev Path} begin-ns [] Out,
open-super-path Path [],
coq.end-synterp-group Group,
].
func std.time-do! list prop ->.
std.time-do! [].
std.time-do! [P|PS] :-
std.time P T, coq.say P "\ntakes" T "\n",
!,
std.time-do! PS.
func end-path list string -> list prop.
end-path [] [] :- std.do! [
coq.begin-synterp-group "nes.end-path" Group,
coq.end-synterp-group Group,
].
end-path ([_|_] as Path) Out :- std.do! [
coq.begin-synterp-group "nes.end-path" Group,
std.map {std.findall (open-ns X_ P_)} nes.open-ns->string Stack,
std.assert! (std.appendR {std.rev Path} Bottom Stack) "NES: Ending a namespace that is not begun",
nes.iter-> Bottom {std.rev Path} nes.end-ns [] Out,
coq.end-synterp-group Group,
].
func open-path list string ->.
open-path Path :- std.do! [
coq.begin-synterp-group "nes.open-path" Group,
std.map {std.findall (ns Path M_)} nes.ns->modpath Mods,
std.forall Mods coq.env.import-module,
coq.end-synterp-group Group,
].
:index (1)
func open-super-path list string, list string ->.
open-super-path [] _.
open-super-path [P|PS] ACC :-
std.append ACC [P] Cur,
open-path Cur,
open-super-path PS Cur.
% Currently open namespace, or [].
func current-path -> list string.
current-path NS :- std.do! [
std.map {std.findall (open-ns X_ P_)} nes.open-ns->string Stack,
std.rev Stack NS,
].
% Find an existing namespace, or panic.
func resolve string -> list string.
resolve S Path :- std.do! [
if (Top = "^_\\.", rex.match Top S) (std.do! [
rex.replace Top "" S S',
string->non-empty-ns S' NS,
if (ns NS _) (Path = NS) (resolve.err S'),
])(
resolve.walk S {current-path} {string->non-empty-ns S} Path
),
].
func resolve.walk string, list string, list string -> list string.
resolve.walk S Ctx SP Path :- std.do! [
std.append Ctx SP Candidate,
( ns Candidate _, Path = Candidate
; Ctx = [], resolve.err S
; resolve.walk S {std.drop-last 1 Ctx} SP Path ),
].
func resolve.err string ->.
resolve.err S :- coq.error "NES: Namespace not found:" S.
}
LPCIC-coq-elpi-eb449d7/apps/NES/examples/ 0000775 0000000 0000000 00000000000 15230417534 0017711 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/apps/NES/examples/dune 0000664 0000000 0000000 00000000150 15230417534 0020563 0 ustar 00root root 0000000 0000000 (coq.theory
(name elpi.apps.NES.examples)
(theories elpi elpi.apps.NES))
(include_subdirs qualified)
LPCIC-coq-elpi-eb449d7/apps/NES/examples/usage_NES.v 0000664 0000000 0000000 00000003720 15230417534 0021713 0 ustar 00root root 0000000 0000000 From elpi.apps Require Import NES.
(* Namespaces are like modules, since they let you organize your notions
and avoid name collisions.
Namespaces are unlinke modules, since you can always add a notion to
a namespace, even if the namespace was ended before. *)
NES.Begin This.Is.A.Long.Namespace.
Definition stuff := 1.
NES.End This.Is.A.Long.Namespace.
NES.Begin This.Is.A.Long.Namespace.
Definition more_stuff := stuff. (* stuff in the namespace is visible *)
NES.End This.Is.A.Long.Namespace.
Print This.Is.A.Long.Namespace.stuff. (* = 1 *)
Eval compute in This.Is.A.Long.Namespace.more_stuff. (* = 1 *)
(* Unlike a module, a namespace can contain two notions with the same name.
The latter shadows the former. *)
NES.Begin This.Is.A.Long.Namespace.
Definition stuff := 2.
NES.End This.Is.A.Long.Namespace.
(* Binding is static, eg more_stuff still values 1 *)
Print This.Is.A.Long.Namespace.stuff. (* = 2 *)
Eval compute in This.Is.A.Long.Namespace.more_stuff. (* = 1 *)
(* Listing and printing namespaces *)
NES.List This.
(*
This_aux_1.This.Is.A.Long.Namespace.stuff (* <-- shadowed *)
This.Is.A.Long.Namespace.more_stuff
This.Is.A.Long.Namespace.stuff
*)
NES.Print This.
(*
This_aux_1.This.Is.A.Long.Namespace.stuff : nat
This.Is.A.Long.Namespace.more_stuff : nat
This.Is.A.Long.Namespace.stuff : nat
*)
(* For convenience one can open a namespace to write short names *)
NES.Open This.Is.A.Long.Namespace.
Print stuff.
(* Not quite a name space yet *)
Structure Default := { sort : Type; default : sort }.
NES.Begin CS.
Global Canonical Structure nat_def := {| sort := nat; default := 46 |}.
Check @default _ : nat.
NES.End CS.
Fail Check nat_def.
(* we want nat_def to live in the CS namespace, BUT
we want the canonical structure declaration to live outside the namespace *)
Fail Check @default _ : nat.
(* This behavior requires Libobject to be aware of the role played by
a module: if it is a namespace some "actions" have to be propagated upward *)
LPCIC-coq-elpi-eb449d7/apps/NES/tests/ 0000775 0000000 0000000 00000000000 15230417534 0017235 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/apps/NES/tests/dune 0000664 0000000 0000000 00000000201 15230417534 0020104 0 ustar 00root root 0000000 0000000 (coq.theory
(name elpi.apps.NES.tests)
(package rocq-elpi-tests)
(theories elpi elpi.apps.NES))
(include_subdirs qualified)
LPCIC-coq-elpi-eb449d7/apps/NES/tests/test_NES.v 0000664 0000000 0000000 00000002302 15230417534 0021105 0 ustar 00root root 0000000 0000000 From elpi.apps Require Import NES.
(* Some invalid namespaces *)
Fail NES.Begin.
Fail NES.Begin "".
Fail NES.Begin ".".
Fail NES.Begin ".A".
Fail NES.Begin "A.".
Fail NES.Begin "A..B".
Fail NES.Begin "A._.B".
(* name space creation *)
NES.Begin Foo.
Definition x := 3.
NES.End Foo.
Print Foo.x.
(* adding one name inside an existing name space *)
NES.Begin Foo.
Definition x2 := 4.
NES.End Foo.
Print Foo.x.
Print Foo.x2.
(* shadowing: adding the same name twice *)
NES.Begin Foo.
Definition x := 5.
NES.End Foo.
Check (refl_equal _ : Foo.x = 5). (* shadowing *)
(* nesting *)
NES.Begin A.
NES.Begin B.
Definition c := 1.
NES.End B.
NES.End A.
About A.B.c.
(* adding one name inside an existing, nested, name space *)
NES.Begin A1.
NES.Begin B1.
Definition c := 1.
NES.End B1.
NES.Begin B1.
Definition d := 1.
NES.End B1.
NES.End A1.
About A1.B1.d.
About A1.B1.c.
(* all names in the Foo namespace must be visible *)
NES.Open Foo.
Print x.
Print x2.
NES.Open A1.
Print B1.c.
Print B1.d.
NES.Open A1.B1.
Print d.
(* boh *)
NES.Begin A2.B2.
Definition e := 1.
NES.End B2.
NES.End A2.
NES.Begin A2.B2.
Definition f := 2.
NES.End A2.B2.
Print A2.B2.f.
NES.Begin X.
Module Y.
Fail NES.Begin Z.
End Y.
NES.End X.
LPCIC-coq-elpi-eb449d7/apps/NES/tests/test_NES_lib.v 0000664 0000000 0000000 00000001416 15230417534 0021740 0 ustar 00root root 0000000 0000000 From elpi.apps.NES.elpi Extra Dependency "nes_synterp.elpi" as nes_synterp.
From elpi.apps.NES.elpi Extra Dependency "nes_interp.elpi" as nes_interp.
From elpi.apps Require Import NES.
Elpi Command Make.
#[phase="both"] Elpi Accumulate Db NES.db.
#[synterp] Elpi Accumulate File nes_synterp.
#[interp] Elpi Accumulate File nes_interp.
#[synterp] Elpi Accumulate lp:{{
main [str Path] :- std.do! [
nes.string->ns Path NS,
nes.begin-path NS OpenNS,
OpenNS => nes.end-path NS _NewNS,
].
main _ :- coq.error "usage: Make ".
}}.
#[interp] Elpi Accumulate lp:{{
main _ :- std.do! [
nes.begin-path,
coq.env.add-const "x" {{ 42 }} _ @transparent! _C,
nes.end-path,
].
}}.
Elpi Export Make.
Make Cats.And.Dogs.
Print Cats.And.Dogs.x.
LPCIC-coq-elpi-eb449d7/apps/NES/tests/test_NES_perf.v 0000664 0000000 0000000 00000062332 15230417534 0022132 0 ustar 00root root 0000000 0000000 From elpi.apps Require Import NES.
NES.Begin NS1.
Definition x := 0.
NES.End NS1.
NES.Begin NS2.
Definition x := 0.
NES.End NS2.
NES.Begin NS3.
Definition x := 0.
NES.End NS3.
NES.Begin NS4.
Definition x := 0.
NES.End NS4.
NES.Begin NS5.
Definition x := 0.
NES.End NS5.
NES.Begin NS6.
Definition x := 0.
NES.End NS6.
NES.Begin NS7.
Definition x := 0.
NES.End NS7.
NES.Begin NS8.
Definition x := 0.
NES.End NS8.
NES.Begin NS9.
Definition x := 0.
NES.End NS9.
NES.Begin NS10.
Definition x := 0.
NES.End NS10.
NES.Begin NS11.
Definition x := 0.
NES.End NS11.
NES.Begin NS12.
Definition x := 0.
NES.End NS12.
NES.Begin NS13.
Definition x := 0.
NES.End NS13.
NES.Begin NS14.
Definition x := 0.
NES.End NS14.
NES.Begin NS15.
Definition x := 0.
NES.End NS15.
NES.Begin NS16.
Definition x := 0.
NES.End NS16.
NES.Begin NS17.
Definition x := 0.
NES.End NS17.
NES.Begin NS18.
Definition x := 0.
NES.End NS18.
NES.Begin NS19.
Definition x := 0.
NES.End NS19.
NES.Begin NS20.
Definition x := 0.
NES.End NS20.
NES.Begin NS21.
Definition x := 0.
NES.End NS21.
NES.Begin NS22.
Definition x := 0.
NES.End NS22.
NES.Begin NS23.
Definition x := 0.
NES.End NS23.
NES.Begin NS24.
Definition x := 0.
NES.End NS24.
NES.Begin NS25.
Definition x := 0.
NES.End NS25.
NES.Begin NS26.
Definition x := 0.
NES.End NS26.
NES.Begin NS27.
Definition x := 0.
NES.End NS27.
NES.Begin NS28.
Definition x := 0.
NES.End NS28.
NES.Begin NS29.
Definition x := 0.
NES.End NS29.
NES.Begin NS30.
Definition x := 0.
NES.End NS30.
NES.Begin NS31.
Definition x := 0.
NES.End NS31.
NES.Begin NS32.
Definition x := 0.
NES.End NS32.
NES.Begin NS33.
Definition x := 0.
NES.End NS33.
NES.Begin NS34.
Definition x := 0.
NES.End NS34.
NES.Begin NS35.
Definition x := 0.
NES.End NS35.
NES.Begin NS36.
Definition x := 0.
NES.End NS36.
NES.Begin NS37.
Definition x := 0.
NES.End NS37.
NES.Begin NS38.
Definition x := 0.
NES.End NS38.
NES.Begin NS39.
Definition x := 0.
NES.End NS39.
NES.Begin NS40.
Definition x := 0.
NES.End NS40.
NES.Begin NS41.
Definition x := 0.
NES.End NS41.
NES.Begin NS42.
Definition x := 0.
NES.End NS42.
NES.Begin NS43.
Definition x := 0.
NES.End NS43.
NES.Begin NS44.
Definition x := 0.
NES.End NS44.
NES.Begin NS45.
Definition x := 0.
NES.End NS45.
NES.Begin NS46.
Definition x := 0.
NES.End NS46.
NES.Begin NS47.
Definition x := 0.
NES.End NS47.
NES.Begin NS48.
Definition x := 0.
NES.End NS48.
NES.Begin NS49.
Definition x := 0.
NES.End NS49.
NES.Begin NS50.
Definition x := 0.
NES.End NS50.
NES.Begin NS51.
Definition x := 0.
NES.End NS51.
NES.Begin NS52.
Definition x := 0.
NES.End NS52.
NES.Begin NS53.
Definition x := 0.
NES.End NS53.
NES.Begin NS54.
Definition x := 0.
NES.End NS54.
NES.Begin NS55.
Definition x := 0.
NES.End NS55.
NES.Begin NS56.
Definition x := 0.
NES.End NS56.
NES.Begin NS57.
Definition x := 0.
NES.End NS57.
NES.Begin NS58.
Definition x := 0.
NES.End NS58.
NES.Begin NS59.
Definition x := 0.
NES.End NS59.
NES.Begin NS60.
Definition x := 0.
NES.End NS60.
NES.Begin NS61.
Definition x := 0.
NES.End NS61.
NES.Begin NS62.
Definition x := 0.
NES.End NS62.
NES.Begin NS63.
Definition x := 0.
NES.End NS63.
NES.Begin NS64.
Definition x := 0.
NES.End NS64.
NES.Begin NS65.
Definition x := 0.
NES.End NS65.
NES.Begin NS66.
Definition x := 0.
NES.End NS66.
NES.Begin NS67.
Definition x := 0.
NES.End NS67.
NES.Begin NS68.
Definition x := 0.
NES.End NS68.
NES.Begin NS69.
Definition x := 0.
NES.End NS69.
NES.Begin NS70.
Definition x := 0.
NES.End NS70.
NES.Begin NS71.
Definition x := 0.
NES.End NS71.
NES.Begin NS72.
Definition x := 0.
NES.End NS72.
NES.Begin NS73.
Definition x := 0.
NES.End NS73.
NES.Begin NS74.
Definition x := 0.
NES.End NS74.
NES.Begin NS75.
Definition x := 0.
NES.End NS75.
NES.Begin NS76.
Definition x := 0.
NES.End NS76.
NES.Begin NS77.
Definition x := 0.
NES.End NS77.
NES.Begin NS78.
Definition x := 0.
NES.End NS78.
NES.Begin NS79.
Definition x := 0.
NES.End NS79.
NES.Begin NS80.
Definition x := 0.
NES.End NS80.
NES.Begin NS81.
Definition x := 0.
NES.End NS81.
NES.Begin NS82.
Definition x := 0.
NES.End NS82.
NES.Begin NS83.
Definition x := 0.
NES.End NS83.
NES.Begin NS84.
Definition x := 0.
NES.End NS84.
NES.Begin NS85.
Definition x := 0.
NES.End NS85.
NES.Begin NS86.
Definition x := 0.
NES.End NS86.
NES.Begin NS87.
Definition x := 0.
NES.End NS87.
NES.Begin NS88.
Definition x := 0.
NES.End NS88.
NES.Begin NS89.
Definition x := 0.
NES.End NS89.
NES.Begin NS90.
Definition x := 0.
NES.End NS90.
NES.Begin NS91.
Definition x := 0.
NES.End NS91.
NES.Begin NS92.
Definition x := 0.
NES.End NS92.
NES.Begin NS93.
Definition x := 0.
NES.End NS93.
NES.Begin NS94.
Definition x := 0.
NES.End NS94.
NES.Begin NS95.
Definition x := 0.
NES.End NS95.
NES.Begin NS96.
Definition x := 0.
NES.End NS96.
NES.Begin NS97.
Definition x := 0.
NES.End NS97.
NES.Begin NS98.
Definition x := 0.
NES.End NS98.
NES.Begin NS99.
Definition x := 0.
NES.End NS99.
NES.Begin NS100.
Definition x := 0.
NES.End NS100.
NES.Begin NS101.
Definition x := 0.
NES.End NS101.
NES.Begin NS102.
Definition x := 0.
NES.End NS102.
NES.Begin NS103.
Definition x := 0.
NES.End NS103.
NES.Begin NS104.
Definition x := 0.
NES.End NS104.
NES.Begin NS105.
Definition x := 0.
NES.End NS105.
NES.Begin NS106.
Definition x := 0.
NES.End NS106.
NES.Begin NS107.
Definition x := 0.
NES.End NS107.
NES.Begin NS108.
Definition x := 0.
NES.End NS108.
NES.Begin NS109.
Definition x := 0.
NES.End NS109.
NES.Begin NS110.
Definition x := 0.
NES.End NS110.
NES.Begin NS111.
Definition x := 0.
NES.End NS111.
NES.Begin NS112.
Definition x := 0.
NES.End NS112.
NES.Begin NS113.
Definition x := 0.
NES.End NS113.
NES.Begin NS114.
Definition x := 0.
NES.End NS114.
NES.Begin NS115.
Definition x := 0.
NES.End NS115.
NES.Begin NS116.
Definition x := 0.
NES.End NS116.
NES.Begin NS117.
Definition x := 0.
NES.End NS117.
NES.Begin NS118.
Definition x := 0.
NES.End NS118.
NES.Begin NS119.
Definition x := 0.
NES.End NS119.
NES.Begin NS120.
Definition x := 0.
NES.End NS120.
NES.Begin NS121.
Definition x := 0.
NES.End NS121.
NES.Begin NS122.
Definition x := 0.
NES.End NS122.
NES.Begin NS123.
Definition x := 0.
NES.End NS123.
NES.Begin NS124.
Definition x := 0.
NES.End NS124.
NES.Begin NS125.
Definition x := 0.
NES.End NS125.
NES.Begin NS126.
Definition x := 0.
NES.End NS126.
NES.Begin NS127.
Definition x := 0.
NES.End NS127.
NES.Begin NS128.
Definition x := 0.
NES.End NS128.
NES.Begin NS129.
Definition x := 0.
NES.End NS129.
NES.Begin NS130.
Definition x := 0.
NES.End NS130.
NES.Begin NS131.
Definition x := 0.
NES.End NS131.
NES.Begin NS132.
Definition x := 0.
NES.End NS132.
NES.Begin NS133.
Definition x := 0.
NES.End NS133.
NES.Begin NS134.
Definition x := 0.
NES.End NS134.
NES.Begin NS135.
Definition x := 0.
NES.End NS135.
NES.Begin NS136.
Definition x := 0.
NES.End NS136.
NES.Begin NS137.
Definition x := 0.
NES.End NS137.
NES.Begin NS138.
Definition x := 0.
NES.End NS138.
NES.Begin NS139.
Definition x := 0.
NES.End NS139.
NES.Begin NS140.
Definition x := 0.
NES.End NS140.
NES.Begin NS141.
Definition x := 0.
NES.End NS141.
NES.Begin NS142.
Definition x := 0.
NES.End NS142.
NES.Begin NS143.
Definition x := 0.
NES.End NS143.
NES.Begin NS144.
Definition x := 0.
NES.End NS144.
NES.Begin NS145.
Definition x := 0.
NES.End NS145.
NES.Begin NS146.
Definition x := 0.
NES.End NS146.
NES.Begin NS147.
Definition x := 0.
NES.End NS147.
NES.Begin NS148.
Definition x := 0.
NES.End NS148.
NES.Begin NS149.
Definition x := 0.
NES.End NS149.
NES.Begin NS150.
Definition x := 0.
NES.End NS150.
NES.Begin NS151.
Definition x := 0.
NES.End NS151.
NES.Begin NS152.
Definition x := 0.
NES.End NS152.
NES.Begin NS153.
Definition x := 0.
NES.End NS153.
NES.Begin NS154.
Definition x := 0.
NES.End NS154.
NES.Begin NS155.
Definition x := 0.
NES.End NS155.
NES.Begin NS156.
Definition x := 0.
NES.End NS156.
NES.Begin NS157.
Definition x := 0.
NES.End NS157.
NES.Begin NS158.
Definition x := 0.
NES.End NS158.
NES.Begin NS159.
Definition x := 0.
NES.End NS159.
NES.Begin NS160.
Definition x := 0.
NES.End NS160.
NES.Begin NS161.
Definition x := 0.
NES.End NS161.
NES.Begin NS162.
Definition x := 0.
NES.End NS162.
NES.Begin NS163.
Definition x := 0.
NES.End NS163.
NES.Begin NS164.
Definition x := 0.
NES.End NS164.
NES.Begin NS165.
Definition x := 0.
NES.End NS165.
NES.Begin NS166.
Definition x := 0.
NES.End NS166.
NES.Begin NS167.
Definition x := 0.
NES.End NS167.
NES.Begin NS168.
Definition x := 0.
NES.End NS168.
NES.Begin NS169.
Definition x := 0.
NES.End NS169.
NES.Begin NS170.
Definition x := 0.
NES.End NS170.
NES.Begin NS171.
Definition x := 0.
NES.End NS171.
NES.Begin NS172.
Definition x := 0.
NES.End NS172.
NES.Begin NS173.
Definition x := 0.
NES.End NS173.
NES.Begin NS174.
Definition x := 0.
NES.End NS174.
NES.Begin NS175.
Definition x := 0.
NES.End NS175.
NES.Begin NS176.
Definition x := 0.
NES.End NS176.
NES.Begin NS177.
Definition x := 0.
NES.End NS177.
NES.Begin NS178.
Definition x := 0.
NES.End NS178.
NES.Begin NS179.
Definition x := 0.
NES.End NS179.
NES.Begin NS180.
Definition x := 0.
NES.End NS180.
NES.Begin NS181.
Definition x := 0.
NES.End NS181.
NES.Begin NS182.
Definition x := 0.
NES.End NS182.
NES.Begin NS183.
Definition x := 0.
NES.End NS183.
NES.Begin NS184.
Definition x := 0.
NES.End NS184.
NES.Begin NS185.
Definition x := 0.
NES.End NS185.
NES.Begin NS186.
Definition x := 0.
NES.End NS186.
NES.Begin NS187.
Definition x := 0.
NES.End NS187.
NES.Begin NS188.
Definition x := 0.
NES.End NS188.
NES.Begin NS189.
Definition x := 0.
NES.End NS189.
NES.Begin NS190.
Definition x := 0.
NES.End NS190.
NES.Begin NS191.
Definition x := 0.
NES.End NS191.
NES.Begin NS192.
Definition x := 0.
NES.End NS192.
NES.Begin NS193.
Definition x := 0.
NES.End NS193.
NES.Begin NS194.
Definition x := 0.
NES.End NS194.
NES.Begin NS195.
Definition x := 0.
NES.End NS195.
NES.Begin NS196.
Definition x := 0.
NES.End NS196.
NES.Begin NS197.
Definition x := 0.
NES.End NS197.
NES.Begin NS198.
Definition x := 0.
NES.End NS198.
NES.Begin NS199.
Definition x := 0.
NES.End NS199.
NES.Begin NS200.
Definition x := 0.
NES.End NS200.
NES.Begin NS201.
Definition x := 0.
NES.End NS201.
NES.Begin NS202.
Definition x := 0.
NES.End NS202.
NES.Begin NS203.
Definition x := 0.
NES.End NS203.
NES.Begin NS204.
Definition x := 0.
NES.End NS204.
NES.Begin NS205.
Definition x := 0.
NES.End NS205.
NES.Begin NS206.
Definition x := 0.
NES.End NS206.
NES.Begin NS207.
Definition x := 0.
NES.End NS207.
NES.Begin NS208.
Definition x := 0.
NES.End NS208.
NES.Begin NS209.
Definition x := 0.
NES.End NS209.
NES.Begin NS210.
Definition x := 0.
NES.End NS210.
NES.Begin NS211.
Definition x := 0.
NES.End NS211.
NES.Begin NS212.
Definition x := 0.
NES.End NS212.
NES.Begin NS213.
Definition x := 0.
NES.End NS213.
NES.Begin NS214.
Definition x := 0.
NES.End NS214.
NES.Begin NS215.
Definition x := 0.
NES.End NS215.
NES.Begin NS216.
Definition x := 0.
NES.End NS216.
NES.Begin NS217.
Definition x := 0.
NES.End NS217.
NES.Begin NS218.
Definition x := 0.
NES.End NS218.
NES.Begin NS219.
Definition x := 0.
NES.End NS219.
NES.Begin NS220.
Definition x := 0.
NES.End NS220.
NES.Begin NS221.
Definition x := 0.
NES.End NS221.
NES.Begin NS222.
Definition x := 0.
NES.End NS222.
NES.Begin NS223.
Definition x := 0.
NES.End NS223.
NES.Begin NS224.
Definition x := 0.
NES.End NS224.
NES.Begin NS225.
Definition x := 0.
NES.End NS225.
NES.Begin NS226.
Definition x := 0.
NES.End NS226.
NES.Begin NS227.
Definition x := 0.
NES.End NS227.
NES.Begin NS228.
Definition x := 0.
NES.End NS228.
NES.Begin NS229.
Definition x := 0.
NES.End NS229.
NES.Begin NS230.
Definition x := 0.
NES.End NS230.
NES.Begin NS231.
Definition x := 0.
NES.End NS231.
NES.Begin NS232.
Definition x := 0.
NES.End NS232.
NES.Begin NS233.
Definition x := 0.
NES.End NS233.
NES.Begin NS234.
Definition x := 0.
NES.End NS234.
NES.Begin NS235.
Definition x := 0.
NES.End NS235.
NES.Begin NS236.
Definition x := 0.
NES.End NS236.
NES.Begin NS237.
Definition x := 0.
NES.End NS237.
NES.Begin NS238.
Definition x := 0.
NES.End NS238.
NES.Begin NS239.
Definition x := 0.
NES.End NS239.
NES.Begin NS240.
Definition x := 0.
NES.End NS240.
NES.Begin NS241.
Definition x := 0.
NES.End NS241.
NES.Begin NS242.
Definition x := 0.
NES.End NS242.
NES.Begin NS243.
Definition x := 0.
NES.End NS243.
NES.Begin NS244.
Definition x := 0.
NES.End NS244.
NES.Begin NS245.
Definition x := 0.
NES.End NS245.
NES.Begin NS246.
Definition x := 0.
NES.End NS246.
NES.Begin NS247.
Definition x := 0.
NES.End NS247.
NES.Begin NS248.
Definition x := 0.
NES.End NS248.
NES.Begin NS249.
Definition x := 0.
NES.End NS249.
NES.Begin NS250.
Definition x := 0.
NES.End NS250.
NES.Begin NS251.
Definition x := 0.
NES.End NS251.
NES.Begin NS252.
Definition x := 0.
NES.End NS252.
NES.Begin NS253.
Definition x := 0.
NES.End NS253.
NES.Begin NS254.
Definition x := 0.
NES.End NS254.
NES.Begin NS255.
Definition x := 0.
NES.End NS255.
NES.Begin NS256.
Definition x := 0.
NES.End NS256.
NES.Begin NS257.
Definition x := 0.
NES.End NS257.
NES.Begin NS258.
Definition x := 0.
NES.End NS258.
NES.Begin NS259.
Definition x := 0.
NES.End NS259.
NES.Begin NS260.
Definition x := 0.
NES.End NS260.
NES.Begin NS261.
Definition x := 0.
NES.End NS261.
NES.Begin NS262.
Definition x := 0.
NES.End NS262.
NES.Begin NS263.
Definition x := 0.
NES.End NS263.
NES.Begin NS264.
Definition x := 0.
NES.End NS264.
NES.Begin NS265.
Definition x := 0.
NES.End NS265.
NES.Begin NS266.
Definition x := 0.
NES.End NS266.
NES.Begin NS267.
Definition x := 0.
NES.End NS267.
NES.Begin NS268.
Definition x := 0.
NES.End NS268.
NES.Begin NS269.
Definition x := 0.
NES.End NS269.
NES.Begin NS270.
Definition x := 0.
NES.End NS270.
NES.Begin NS271.
Definition x := 0.
NES.End NS271.
NES.Begin NS272.
Definition x := 0.
NES.End NS272.
NES.Begin NS273.
Definition x := 0.
NES.End NS273.
NES.Begin NS274.
Definition x := 0.
NES.End NS274.
NES.Begin NS275.
Definition x := 0.
NES.End NS275.
NES.Begin NS276.
Definition x := 0.
NES.End NS276.
NES.Begin NS277.
Definition x := 0.
NES.End NS277.
NES.Begin NS278.
Definition x := 0.
NES.End NS278.
NES.Begin NS279.
Definition x := 0.
NES.End NS279.
NES.Begin NS280.
Definition x := 0.
NES.End NS280.
NES.Begin NS281.
Definition x := 0.
NES.End NS281.
NES.Begin NS282.
Definition x := 0.
NES.End NS282.
NES.Begin NS283.
Definition x := 0.
NES.End NS283.
NES.Begin NS284.
Definition x := 0.
NES.End NS284.
NES.Begin NS285.
Definition x := 0.
NES.End NS285.
NES.Begin NS286.
Definition x := 0.
NES.End NS286.
NES.Begin NS287.
Definition x := 0.
NES.End NS287.
NES.Begin NS288.
Definition x := 0.
NES.End NS288.
NES.Begin NS289.
Definition x := 0.
NES.End NS289.
NES.Begin NS290.
Definition x := 0.
NES.End NS290.
NES.Begin NS291.
Definition x := 0.
NES.End NS291.
NES.Begin NS292.
Definition x := 0.
NES.End NS292.
NES.Begin NS293.
Definition x := 0.
NES.End NS293.
NES.Begin NS294.
Definition x := 0.
NES.End NS294.
NES.Begin NS295.
Definition x := 0.
NES.End NS295.
NES.Begin NS296.
Definition x := 0.
NES.End NS296.
NES.Begin NS297.
Definition x := 0.
NES.End NS297.
NES.Begin NS298.
Definition x := 0.
NES.End NS298.
NES.Begin NS299.
Definition x := 0.
NES.End NS299.
NES.Begin NS300.
Definition x := 0.
NES.End NS300.
NES.Begin NS301.
Definition x := 0.
NES.End NS301.
NES.Begin NS302.
Definition x := 0.
NES.End NS302.
NES.Begin NS303.
Definition x := 0.
NES.End NS303.
NES.Begin NS304.
Definition x := 0.
NES.End NS304.
NES.Begin NS305.
Definition x := 0.
NES.End NS305.
NES.Begin NS306.
Definition x := 0.
NES.End NS306.
NES.Begin NS307.
Definition x := 0.
NES.End NS307.
NES.Begin NS308.
Definition x := 0.
NES.End NS308.
NES.Begin NS309.
Definition x := 0.
NES.End NS309.
NES.Begin NS310.
Definition x := 0.
NES.End NS310.
NES.Begin NS311.
Definition x := 0.
NES.End NS311.
NES.Begin NS312.
Definition x := 0.
NES.End NS312.
NES.Begin NS313.
Definition x := 0.
NES.End NS313.
NES.Begin NS314.
Definition x := 0.
NES.End NS314.
NES.Begin NS315.
Definition x := 0.
NES.End NS315.
NES.Begin NS316.
Definition x := 0.
NES.End NS316.
NES.Begin NS317.
Definition x := 0.
NES.End NS317.
NES.Begin NS318.
Definition x := 0.
NES.End NS318.
NES.Begin NS319.
Definition x := 0.
NES.End NS319.
NES.Begin NS320.
Definition x := 0.
NES.End NS320.
NES.Begin NS321.
Definition x := 0.
NES.End NS321.
NES.Begin NS322.
Definition x := 0.
NES.End NS322.
NES.Begin NS323.
Definition x := 0.
NES.End NS323.
NES.Begin NS324.
Definition x := 0.
NES.End NS324.
NES.Begin NS325.
Definition x := 0.
NES.End NS325.
NES.Begin NS326.
Definition x := 0.
NES.End NS326.
NES.Begin NS327.
Definition x := 0.
NES.End NS327.
NES.Begin NS328.
Definition x := 0.
NES.End NS328.
NES.Begin NS329.
Definition x := 0.
NES.End NS329.
NES.Begin NS330.
Definition x := 0.
NES.End NS330.
NES.Begin NS331.
Definition x := 0.
NES.End NS331.
NES.Begin NS332.
Definition x := 0.
NES.End NS332.
NES.Begin NS333.
Definition x := 0.
NES.End NS333.
NES.Begin NS334.
Definition x := 0.
NES.End NS334.
NES.Begin NS335.
Definition x := 0.
NES.End NS335.
NES.Begin NS336.
Definition x := 0.
NES.End NS336.
NES.Begin NS337.
Definition x := 0.
NES.End NS337.
NES.Begin NS338.
Definition x := 0.
NES.End NS338.
NES.Begin NS339.
Definition x := 0.
NES.End NS339.
NES.Begin NS340.
Definition x := 0.
NES.End NS340.
NES.Begin NS341.
Definition x := 0.
NES.End NS341.
NES.Begin NS342.
Definition x := 0.
NES.End NS342.
NES.Begin NS343.
Definition x := 0.
NES.End NS343.
NES.Begin NS344.
Definition x := 0.
NES.End NS344.
NES.Begin NS345.
Definition x := 0.
NES.End NS345.
NES.Begin NS346.
Definition x := 0.
NES.End NS346.
NES.Begin NS347.
Definition x := 0.
NES.End NS347.
NES.Begin NS348.
Definition x := 0.
NES.End NS348.
NES.Begin NS349.
Definition x := 0.
NES.End NS349.
NES.Begin NS350.
Definition x := 0.
NES.End NS350.
NES.Begin NS351.
Definition x := 0.
NES.End NS351.
NES.Begin NS352.
Definition x := 0.
NES.End NS352.
NES.Begin NS353.
Definition x := 0.
NES.End NS353.
NES.Begin NS354.
Definition x := 0.
NES.End NS354.
NES.Begin NS355.
Definition x := 0.
NES.End NS355.
NES.Begin NS356.
Definition x := 0.
NES.End NS356.
NES.Begin NS357.
Definition x := 0.
NES.End NS357.
NES.Begin NS358.
Definition x := 0.
NES.End NS358.
NES.Begin NS359.
Definition x := 0.
NES.End NS359.
NES.Begin NS360.
Definition x := 0.
NES.End NS360.
NES.Begin NS361.
Definition x := 0.
NES.End NS361.
NES.Begin NS362.
Definition x := 0.
NES.End NS362.
NES.Begin NS363.
Definition x := 0.
NES.End NS363.
NES.Begin NS364.
Definition x := 0.
NES.End NS364.
NES.Begin NS365.
Definition x := 0.
NES.End NS365.
NES.Begin NS366.
Definition x := 0.
NES.End NS366.
NES.Begin NS367.
Definition x := 0.
NES.End NS367.
NES.Begin NS368.
Definition x := 0.
NES.End NS368.
NES.Begin NS369.
Definition x := 0.
NES.End NS369.
NES.Begin NS370.
Definition x := 0.
NES.End NS370.
NES.Begin NS371.
Definition x := 0.
NES.End NS371.
NES.Begin NS372.
Definition x := 0.
NES.End NS372.
NES.Begin NS373.
Definition x := 0.
NES.End NS373.
NES.Begin NS374.
Definition x := 0.
NES.End NS374.
NES.Begin NS375.
Definition x := 0.
NES.End NS375.
NES.Begin NS376.
Definition x := 0.
NES.End NS376.
NES.Begin NS377.
Definition x := 0.
NES.End NS377.
NES.Begin NS378.
Definition x := 0.
NES.End NS378.
NES.Begin NS379.
Definition x := 0.
NES.End NS379.
NES.Begin NS380.
Definition x := 0.
NES.End NS380.
NES.Begin NS381.
Definition x := 0.
NES.End NS381.
NES.Begin NS382.
Definition x := 0.
NES.End NS382.
NES.Begin NS383.
Definition x := 0.
NES.End NS383.
NES.Begin NS384.
Definition x := 0.
NES.End NS384.
NES.Begin NS385.
Definition x := 0.
NES.End NS385.
NES.Begin NS386.
Definition x := 0.
NES.End NS386.
NES.Begin NS387.
Definition x := 0.
NES.End NS387.
NES.Begin NS388.
Definition x := 0.
NES.End NS388.
NES.Begin NS389.
Definition x := 0.
NES.End NS389.
NES.Begin NS390.
Definition x := 0.
NES.End NS390.
NES.Begin NS391.
Definition x := 0.
NES.End NS391.
NES.Begin NS392.
Definition x := 0.
NES.End NS392.
NES.Begin NS393.
Definition x := 0.
NES.End NS393.
NES.Begin NS394.
Definition x := 0.
NES.End NS394.
NES.Begin NS395.
Definition x := 0.
NES.End NS395.
NES.Begin NS396.
Definition x := 0.
NES.End NS396.
NES.Begin NS397.
Definition x := 0.
NES.End NS397.
NES.Begin NS398.
Definition x := 0.
NES.End NS398.
NES.Begin NS399.
Definition x := 0.
NES.End NS399.
NES.Begin NS400.
Definition x := 0.
NES.End NS400.
NES.Begin NS401.
Definition x := 0.
NES.End NS401.
NES.Begin NS402.
Definition x := 0.
NES.End NS402.
NES.Begin NS403.
Definition x := 0.
NES.End NS403.
NES.Begin NS404.
Definition x := 0.
NES.End NS404.
NES.Begin NS405.
Definition x := 0.
NES.End NS405.
NES.Begin NS406.
Definition x := 0.
NES.End NS406.
NES.Begin NS407.
Definition x := 0.
NES.End NS407.
NES.Begin NS408.
Definition x := 0.
NES.End NS408.
NES.Begin NS409.
Definition x := 0.
NES.End NS409.
NES.Begin NS410.
Definition x := 0.
NES.End NS410.
NES.Begin NS411.
Definition x := 0.
NES.End NS411.
NES.Begin NS412.
Definition x := 0.
NES.End NS412.
NES.Begin NS413.
Definition x := 0.
NES.End NS413.
NES.Begin NS414.
Definition x := 0.
NES.End NS414.
NES.Begin NS415.
Definition x := 0.
NES.End NS415.
NES.Begin NS416.
Definition x := 0.
NES.End NS416.
NES.Begin NS417.
Definition x := 0.
NES.End NS417.
NES.Begin NS418.
Definition x := 0.
NES.End NS418.
NES.Begin NS419.
Definition x := 0.
NES.End NS419.
NES.Begin NS420.
Definition x := 0.
NES.End NS420.
NES.Begin NS421.
Definition x := 0.
NES.End NS421.
NES.Begin NS422.
Definition x := 0.
NES.End NS422.
NES.Begin NS423.
Definition x := 0.
NES.End NS423.
NES.Begin NS424.
Definition x := 0.
NES.End NS424.
NES.Begin NS425.
Definition x := 0.
NES.End NS425.
NES.Begin NS426.
Definition x := 0.
NES.End NS426.
NES.Begin NS427.
Definition x := 0.
NES.End NS427.
NES.Begin NS428.
Definition x := 0.
NES.End NS428.
NES.Begin NS429.
Definition x := 0.
NES.End NS429.
NES.Begin NS430.
Definition x := 0.
NES.End NS430.
NES.Begin NS431.
Definition x := 0.
NES.End NS431.
NES.Begin NS432.
Definition x := 0.
NES.End NS432.
NES.Begin NS433.
Definition x := 0.
NES.End NS433.
NES.Begin NS434.
Definition x := 0.
NES.End NS434.
NES.Begin NS435.
Definition x := 0.
NES.End NS435.
NES.Begin NS436.
Definition x := 0.
NES.End NS436.
NES.Begin NS437.
Definition x := 0.
NES.End NS437.
NES.Begin NS438.
Definition x := 0.
NES.End NS438.
NES.Begin NS439.
Definition x := 0.
NES.End NS439.
NES.Begin NS440.
Definition x := 0.
NES.End NS440.
NES.Begin NS441.
Definition x := 0.
NES.End NS441.
NES.Begin NS442.
Definition x := 0.
NES.End NS442.
NES.Begin NS443.
Definition x := 0.
NES.End NS443.
NES.Begin NS444.
Definition x := 0.
NES.End NS444.
NES.Begin NS445.
Definition x := 0.
NES.End NS445.
NES.Begin NS446.
Definition x := 0.
NES.End NS446.
NES.Begin NS447.
Definition x := 0.
NES.End NS447.
NES.Begin NS448.
Definition x := 0.
NES.End NS448.
NES.Begin NS449.
Definition x := 0.
NES.End NS449.
NES.Begin NS450.
Definition x := 0.
NES.End NS450.
NES.Begin NS451.
Definition x := 0.
NES.End NS451.
NES.Begin NS452.
Definition x := 0.
NES.End NS452.
NES.Begin NS453.
Definition x := 0.
NES.End NS453.
NES.Begin NS454.
Definition x := 0.
NES.End NS454.
NES.Begin NS455.
Definition x := 0.
NES.End NS455.
NES.Begin NS456.
Definition x := 0.
NES.End NS456.
NES.Begin NS457.
Definition x := 0.
NES.End NS457.
NES.Begin NS458.
Definition x := 0.
NES.End NS458.
NES.Begin NS459.
Definition x := 0.
NES.End NS459.
NES.Begin NS460.
Definition x := 0.
NES.End NS460.
NES.Begin NS461.
Definition x := 0.
NES.End NS461.
NES.Begin NS462.
Definition x := 0.
NES.End NS462.
NES.Begin NS463.
Definition x := 0.
NES.End NS463.
NES.Begin NS464.
Definition x := 0.
NES.End NS464.
NES.Begin NS465.
Definition x := 0.
NES.End NS465.
NES.Begin NS466.
Definition x := 0.
NES.End NS466.
NES.Begin NS467.
Definition x := 0.
NES.End NS467.
NES.Begin NS468.
Definition x := 0.
NES.End NS468.
NES.Begin NS469.
Definition x := 0.
NES.End NS469.
NES.Begin NS470.
Definition x := 0.
NES.End NS470.
NES.Begin NS471.
Definition x := 0.
NES.End NS471.
NES.Begin NS472.
Definition x := 0.
NES.End NS472.
NES.Begin NS473.
Definition x := 0.
NES.End NS473.
NES.Begin NS474.
Definition x := 0.
NES.End NS474.
NES.Begin NS475.
Definition x := 0.
NES.End NS475.
NES.Begin NS476.
Definition x := 0.
NES.End NS476.
NES.Begin NS477.
Definition x := 0.
NES.End NS477.
NES.Begin NS478.
Definition x := 0.
NES.End NS478.
NES.Begin NS479.
Definition x := 0.
NES.End NS479.
NES.Begin NS480.
Definition x := 0.
NES.End NS480.
NES.Begin NS481.
Definition x := 0.
NES.End NS481.
NES.Begin NS482.
Definition x := 0.
NES.End NS482.
NES.Begin NS483.
Definition x := 0.
NES.End NS483.
NES.Begin NS484.
Definition x := 0.
NES.End NS484.
NES.Begin NS485.
Definition x := 0.
NES.End NS485.
NES.Begin NS486.
Definition x := 0.
NES.End NS486.
NES.Begin NS487.
Definition x := 0.
NES.End NS487.
NES.Begin NS488.
Definition x := 0.
NES.End NS488.
NES.Begin NS489.
Definition x := 0.
NES.End NS489.
NES.Begin NS490.
Definition x := 0.
NES.End NS490.
NES.Begin NS491.
Definition x := 0.
NES.End NS491.
NES.Begin NS492.
Definition x := 0.
NES.End NS492.
NES.Begin NS493.
Definition x := 0.
NES.End NS493.
NES.Begin NS494.
Definition x := 0.
NES.End NS494.
NES.Begin NS495.
Definition x := 0.
NES.End NS495.
NES.Begin NS496.
Definition x := 0.
NES.End NS496.
NES.Begin NS497.
Definition x := 0.
NES.End NS497.
NES.Begin NS498.
Definition x := 0.
NES.End NS498.
NES.Begin NS499.
Definition x := 0.
NES.End NS499.
NES.Begin NS500.
Definition x := 0.
NES.End NS500. LPCIC-coq-elpi-eb449d7/apps/NES/tests/test_NES_perf_optimal.v 0000664 0000000 0000000 00000121026 15230417534 0023653 0 ustar 00root root 0000000 0000000 From elpi.apps Require Import NES.
Module NS1. Module NS1.
Definition x := 0.
End NS1. End NS1. Export NS1.
Module NS2. Module NS2.
Definition x := 0.
End NS2. End NS2. Export NS2.
Module NS3. Module NS3.
Definition x := 0.
End NS3. End NS3. Export NS3.
Module NS4. Module NS4.
Definition x := 0.
End NS4. End NS4. Export NS4.
Module NS5. Module NS5.
Definition x := 0.
End NS5. End NS5. Export NS5.
Module NS6. Module NS6.
Definition x := 0.
End NS6. End NS6. Export NS6.
Module NS7. Module NS7.
Definition x := 0.
End NS7. End NS7. Export NS7.
Module NS8. Module NS8.
Definition x := 0.
End NS8. End NS8. Export NS8.
Module NS9. Module NS9.
Definition x := 0.
End NS9. End NS9. Export NS9.
Module NS10. Module NS10.
Definition x := 0.
End NS10. End NS10. Export NS10.
Module NS11. Module NS11.
Definition x := 0.
End NS11. End NS11. Export NS11.
Module NS12. Module NS12.
Definition x := 0.
End NS12. End NS12. Export NS12.
Module NS13. Module NS13.
Definition x := 0.
End NS13. End NS13. Export NS13.
Module NS14. Module NS14.
Definition x := 0.
End NS14. End NS14. Export NS14.
Module NS15. Module NS15.
Definition x := 0.
End NS15. End NS15. Export NS15.
Module NS16. Module NS16.
Definition x := 0.
End NS16. End NS16. Export NS16.
Module NS17. Module NS17.
Definition x := 0.
End NS17. End NS17. Export NS17.
Module NS18. Module NS18.
Definition x := 0.
End NS18. End NS18. Export NS18.
Module NS19. Module NS19.
Definition x := 0.
End NS19. End NS19. Export NS19.
Module NS20. Module NS20.
Definition x := 0.
End NS20. End NS20. Export NS20.
Module NS21. Module NS21.
Definition x := 0.
End NS21. End NS21. Export NS21.
Module NS22. Module NS22.
Definition x := 0.
End NS22. End NS22. Export NS22.
Module NS23. Module NS23.
Definition x := 0.
End NS23. End NS23. Export NS23.
Module NS24. Module NS24.
Definition x := 0.
End NS24. End NS24. Export NS24.
Module NS25. Module NS25.
Definition x := 0.
End NS25. End NS25. Export NS25.
Module NS26. Module NS26.
Definition x := 0.
End NS26. End NS26. Export NS26.
Module NS27. Module NS27.
Definition x := 0.
End NS27. End NS27. Export NS27.
Module NS28. Module NS28.
Definition x := 0.
End NS28. End NS28. Export NS28.
Module NS29. Module NS29.
Definition x := 0.
End NS29. End NS29. Export NS29.
Module NS30. Module NS30.
Definition x := 0.
End NS30. End NS30. Export NS30.
Module NS31. Module NS31.
Definition x := 0.
End NS31. End NS31. Export NS31.
Module NS32. Module NS32.
Definition x := 0.
End NS32. End NS32. Export NS32.
Module NS33. Module NS33.
Definition x := 0.
End NS33. End NS33. Export NS33.
Module NS34. Module NS34.
Definition x := 0.
End NS34. End NS34. Export NS34.
Module NS35. Module NS35.
Definition x := 0.
End NS35. End NS35. Export NS35.
Module NS36. Module NS36.
Definition x := 0.
End NS36. End NS36. Export NS36.
Module NS37. Module NS37.
Definition x := 0.
End NS37. End NS37. Export NS37.
Module NS38. Module NS38.
Definition x := 0.
End NS38. End NS38. Export NS38.
Module NS39. Module NS39.
Definition x := 0.
End NS39. End NS39. Export NS39.
Module NS40. Module NS40.
Definition x := 0.
End NS40. End NS40. Export NS40.
Module NS41. Module NS41.
Definition x := 0.
End NS41. End NS41. Export NS41.
Module NS42. Module NS42.
Definition x := 0.
End NS42. End NS42. Export NS42.
Module NS43. Module NS43.
Definition x := 0.
End NS43. End NS43. Export NS43.
Module NS44. Module NS44.
Definition x := 0.
End NS44. End NS44. Export NS44.
Module NS45. Module NS45.
Definition x := 0.
End NS45. End NS45. Export NS45.
Module NS46. Module NS46.
Definition x := 0.
End NS46. End NS46. Export NS46.
Module NS47. Module NS47.
Definition x := 0.
End NS47. End NS47. Export NS47.
Module NS48. Module NS48.
Definition x := 0.
End NS48. End NS48. Export NS48.
Module NS49. Module NS49.
Definition x := 0.
End NS49. End NS49. Export NS49.
Module NS50. Module NS50.
Definition x := 0.
End NS50. End NS50. Export NS50.
Module NS51. Module NS51.
Definition x := 0.
End NS51. End NS51. Export NS51.
Module NS52. Module NS52.
Definition x := 0.
End NS52. End NS52. Export NS52.
Module NS53. Module NS53.
Definition x := 0.
End NS53. End NS53. Export NS53.
Module NS54. Module NS54.
Definition x := 0.
End NS54. End NS54. Export NS54.
Module NS55. Module NS55.
Definition x := 0.
End NS55. End NS55. Export NS55.
Module NS56. Module NS56.
Definition x := 0.
End NS56. End NS56. Export NS56.
Module NS57. Module NS57.
Definition x := 0.
End NS57. End NS57. Export NS57.
Module NS58. Module NS58.
Definition x := 0.
End NS58. End NS58. Export NS58.
Module NS59. Module NS59.
Definition x := 0.
End NS59. End NS59. Export NS59.
Module NS60. Module NS60.
Definition x := 0.
End NS60. End NS60. Export NS60.
Module NS61. Module NS61.
Definition x := 0.
End NS61. End NS61. Export NS61.
Module NS62. Module NS62.
Definition x := 0.
End NS62. End NS62. Export NS62.
Module NS63. Module NS63.
Definition x := 0.
End NS63. End NS63. Export NS63.
Module NS64. Module NS64.
Definition x := 0.
End NS64. End NS64. Export NS64.
Module NS65. Module NS65.
Definition x := 0.
End NS65. End NS65. Export NS65.
Module NS66. Module NS66.
Definition x := 0.
End NS66. End NS66. Export NS66.
Module NS67. Module NS67.
Definition x := 0.
End NS67. End NS67. Export NS67.
Module NS68. Module NS68.
Definition x := 0.
End NS68. End NS68. Export NS68.
Module NS69. Module NS69.
Definition x := 0.
End NS69. End NS69. Export NS69.
Module NS70. Module NS70.
Definition x := 0.
End NS70. End NS70. Export NS70.
Module NS71. Module NS71.
Definition x := 0.
End NS71. End NS71. Export NS71.
Module NS72. Module NS72.
Definition x := 0.
End NS72. End NS72. Export NS72.
Module NS73. Module NS73.
Definition x := 0.
End NS73. End NS73. Export NS73.
Module NS74. Module NS74.
Definition x := 0.
End NS74. End NS74. Export NS74.
Module NS75. Module NS75.
Definition x := 0.
End NS75. End NS75. Export NS75.
Module NS76. Module NS76.
Definition x := 0.
End NS76. End NS76. Export NS76.
Module NS77. Module NS77.
Definition x := 0.
End NS77. End NS77. Export NS77.
Module NS78. Module NS78.
Definition x := 0.
End NS78. End NS78. Export NS78.
Module NS79. Module NS79.
Definition x := 0.
End NS79. End NS79. Export NS79.
Module NS80. Module NS80.
Definition x := 0.
End NS80. End NS80. Export NS80.
Module NS81. Module NS81.
Definition x := 0.
End NS81. End NS81. Export NS81.
Module NS82. Module NS82.
Definition x := 0.
End NS82. End NS82. Export NS82.
Module NS83. Module NS83.
Definition x := 0.
End NS83. End NS83. Export NS83.
Module NS84. Module NS84.
Definition x := 0.
End NS84. End NS84. Export NS84.
Module NS85. Module NS85.
Definition x := 0.
End NS85. End NS85. Export NS85.
Module NS86. Module NS86.
Definition x := 0.
End NS86. End NS86. Export NS86.
Module NS87. Module NS87.
Definition x := 0.
End NS87. End NS87. Export NS87.
Module NS88. Module NS88.
Definition x := 0.
End NS88. End NS88. Export NS88.
Module NS89. Module NS89.
Definition x := 0.
End NS89. End NS89. Export NS89.
Module NS90. Module NS90.
Definition x := 0.
End NS90. End NS90. Export NS90.
Module NS91. Module NS91.
Definition x := 0.
End NS91. End NS91. Export NS91.
Module NS92. Module NS92.
Definition x := 0.
End NS92. End NS92. Export NS92.
Module NS93. Module NS93.
Definition x := 0.
End NS93. End NS93. Export NS93.
Module NS94. Module NS94.
Definition x := 0.
End NS94. End NS94. Export NS94.
Module NS95. Module NS95.
Definition x := 0.
End NS95. End NS95. Export NS95.
Module NS96. Module NS96.
Definition x := 0.
End NS96. End NS96. Export NS96.
Module NS97. Module NS97.
Definition x := 0.
End NS97. End NS97. Export NS97.
Module NS98. Module NS98.
Definition x := 0.
End NS98. End NS98. Export NS98.
Module NS99. Module NS99.
Definition x := 0.
End NS99. End NS99. Export NS99.
Module NS100. Module NS100.
Definition x := 0.
End NS100. End NS100. Export NS100.
Module NS101. Module NS101.
Definition x := 0.
End NS101. End NS101. Export NS101.
Module NS102. Module NS102.
Definition x := 0.
End NS102. End NS102. Export NS102.
Module NS103. Module NS103.
Definition x := 0.
End NS103. End NS103. Export NS103.
Module NS104. Module NS104.
Definition x := 0.
End NS104. End NS104. Export NS104.
Module NS105. Module NS105.
Definition x := 0.
End NS105. End NS105. Export NS105.
Module NS106. Module NS106.
Definition x := 0.
End NS106. End NS106. Export NS106.
Module NS107. Module NS107.
Definition x := 0.
End NS107. End NS107. Export NS107.
Module NS108. Module NS108.
Definition x := 0.
End NS108. End NS108. Export NS108.
Module NS109. Module NS109.
Definition x := 0.
End NS109. End NS109. Export NS109.
Module NS110. Module NS110.
Definition x := 0.
End NS110. End NS110. Export NS110.
Module NS111. Module NS111.
Definition x := 0.
End NS111. End NS111. Export NS111.
Module NS112. Module NS112.
Definition x := 0.
End NS112. End NS112. Export NS112.
Module NS113. Module NS113.
Definition x := 0.
End NS113. End NS113. Export NS113.
Module NS114. Module NS114.
Definition x := 0.
End NS114. End NS114. Export NS114.
Module NS115. Module NS115.
Definition x := 0.
End NS115. End NS115. Export NS115.
Module NS116. Module NS116.
Definition x := 0.
End NS116. End NS116. Export NS116.
Module NS117. Module NS117.
Definition x := 0.
End NS117. End NS117. Export NS117.
Module NS118. Module NS118.
Definition x := 0.
End NS118. End NS118. Export NS118.
Module NS119. Module NS119.
Definition x := 0.
End NS119. End NS119. Export NS119.
Module NS120. Module NS120.
Definition x := 0.
End NS120. End NS120. Export NS120.
Module NS121. Module NS121.
Definition x := 0.
End NS121. End NS121. Export NS121.
Module NS122. Module NS122.
Definition x := 0.
End NS122. End NS122. Export NS122.
Module NS123. Module NS123.
Definition x := 0.
End NS123. End NS123. Export NS123.
Module NS124. Module NS124.
Definition x := 0.
End NS124. End NS124. Export NS124.
Module NS125. Module NS125.
Definition x := 0.
End NS125. End NS125. Export NS125.
Module NS126. Module NS126.
Definition x := 0.
End NS126. End NS126. Export NS126.
Module NS127. Module NS127.
Definition x := 0.
End NS127. End NS127. Export NS127.
Module NS128. Module NS128.
Definition x := 0.
End NS128. End NS128. Export NS128.
Module NS129. Module NS129.
Definition x := 0.
End NS129. End NS129. Export NS129.
Module NS130. Module NS130.
Definition x := 0.
End NS130. End NS130. Export NS130.
Module NS131. Module NS131.
Definition x := 0.
End NS131. End NS131. Export NS131.
Module NS132. Module NS132.
Definition x := 0.
End NS132. End NS132. Export NS132.
Module NS133. Module NS133.
Definition x := 0.
End NS133. End NS133. Export NS133.
Module NS134. Module NS134.
Definition x := 0.
End NS134. End NS134. Export NS134.
Module NS135. Module NS135.
Definition x := 0.
End NS135. End NS135. Export NS135.
Module NS136. Module NS136.
Definition x := 0.
End NS136. End NS136. Export NS136.
Module NS137. Module NS137.
Definition x := 0.
End NS137. End NS137. Export NS137.
Module NS138. Module NS138.
Definition x := 0.
End NS138. End NS138. Export NS138.
Module NS139. Module NS139.
Definition x := 0.
End NS139. End NS139. Export NS139.
Module NS140. Module NS140.
Definition x := 0.
End NS140. End NS140. Export NS140.
Module NS141. Module NS141.
Definition x := 0.
End NS141. End NS141. Export NS141.
Module NS142. Module NS142.
Definition x := 0.
End NS142. End NS142. Export NS142.
Module NS143. Module NS143.
Definition x := 0.
End NS143. End NS143. Export NS143.
Module NS144. Module NS144.
Definition x := 0.
End NS144. End NS144. Export NS144.
Module NS145. Module NS145.
Definition x := 0.
End NS145. End NS145. Export NS145.
Module NS146. Module NS146.
Definition x := 0.
End NS146. End NS146. Export NS146.
Module NS147. Module NS147.
Definition x := 0.
End NS147. End NS147. Export NS147.
Module NS148. Module NS148.
Definition x := 0.
End NS148. End NS148. Export NS148.
Module NS149. Module NS149.
Definition x := 0.
End NS149. End NS149. Export NS149.
Module NS150. Module NS150.
Definition x := 0.
End NS150. End NS150. Export NS150.
Module NS151. Module NS151.
Definition x := 0.
End NS151. End NS151. Export NS151.
Module NS152. Module NS152.
Definition x := 0.
End NS152. End NS152. Export NS152.
Module NS153. Module NS153.
Definition x := 0.
End NS153. End NS153. Export NS153.
Module NS154. Module NS154.
Definition x := 0.
End NS154. End NS154. Export NS154.
Module NS155. Module NS155.
Definition x := 0.
End NS155. End NS155. Export NS155.
Module NS156. Module NS156.
Definition x := 0.
End NS156. End NS156. Export NS156.
Module NS157. Module NS157.
Definition x := 0.
End NS157. End NS157. Export NS157.
Module NS158. Module NS158.
Definition x := 0.
End NS158. End NS158. Export NS158.
Module NS159. Module NS159.
Definition x := 0.
End NS159. End NS159. Export NS159.
Module NS160. Module NS160.
Definition x := 0.
End NS160. End NS160. Export NS160.
Module NS161. Module NS161.
Definition x := 0.
End NS161. End NS161. Export NS161.
Module NS162. Module NS162.
Definition x := 0.
End NS162. End NS162. Export NS162.
Module NS163. Module NS163.
Definition x := 0.
End NS163. End NS163. Export NS163.
Module NS164. Module NS164.
Definition x := 0.
End NS164. End NS164. Export NS164.
Module NS165. Module NS165.
Definition x := 0.
End NS165. End NS165. Export NS165.
Module NS166. Module NS166.
Definition x := 0.
End NS166. End NS166. Export NS166.
Module NS167. Module NS167.
Definition x := 0.
End NS167. End NS167. Export NS167.
Module NS168. Module NS168.
Definition x := 0.
End NS168. End NS168. Export NS168.
Module NS169. Module NS169.
Definition x := 0.
End NS169. End NS169. Export NS169.
Module NS170. Module NS170.
Definition x := 0.
End NS170. End NS170. Export NS170.
Module NS171. Module NS171.
Definition x := 0.
End NS171. End NS171. Export NS171.
Module NS172. Module NS172.
Definition x := 0.
End NS172. End NS172. Export NS172.
Module NS173. Module NS173.
Definition x := 0.
End NS173. End NS173. Export NS173.
Module NS174. Module NS174.
Definition x := 0.
End NS174. End NS174. Export NS174.
Module NS175. Module NS175.
Definition x := 0.
End NS175. End NS175. Export NS175.
Module NS176. Module NS176.
Definition x := 0.
End NS176. End NS176. Export NS176.
Module NS177. Module NS177.
Definition x := 0.
End NS177. End NS177. Export NS177.
Module NS178. Module NS178.
Definition x := 0.
End NS178. End NS178. Export NS178.
Module NS179. Module NS179.
Definition x := 0.
End NS179. End NS179. Export NS179.
Module NS180. Module NS180.
Definition x := 0.
End NS180. End NS180. Export NS180.
Module NS181. Module NS181.
Definition x := 0.
End NS181. End NS181. Export NS181.
Module NS182. Module NS182.
Definition x := 0.
End NS182. End NS182. Export NS182.
Module NS183. Module NS183.
Definition x := 0.
End NS183. End NS183. Export NS183.
Module NS184. Module NS184.
Definition x := 0.
End NS184. End NS184. Export NS184.
Module NS185. Module NS185.
Definition x := 0.
End NS185. End NS185. Export NS185.
Module NS186. Module NS186.
Definition x := 0.
End NS186. End NS186. Export NS186.
Module NS187. Module NS187.
Definition x := 0.
End NS187. End NS187. Export NS187.
Module NS188. Module NS188.
Definition x := 0.
End NS188. End NS188. Export NS188.
Module NS189. Module NS189.
Definition x := 0.
End NS189. End NS189. Export NS189.
Module NS190. Module NS190.
Definition x := 0.
End NS190. End NS190. Export NS190.
Module NS191. Module NS191.
Definition x := 0.
End NS191. End NS191. Export NS191.
Module NS192. Module NS192.
Definition x := 0.
End NS192. End NS192. Export NS192.
Module NS193. Module NS193.
Definition x := 0.
End NS193. End NS193. Export NS193.
Module NS194. Module NS194.
Definition x := 0.
End NS194. End NS194. Export NS194.
Module NS195. Module NS195.
Definition x := 0.
End NS195. End NS195. Export NS195.
Module NS196. Module NS196.
Definition x := 0.
End NS196. End NS196. Export NS196.
Module NS197. Module NS197.
Definition x := 0.
End NS197. End NS197. Export NS197.
Module NS198. Module NS198.
Definition x := 0.
End NS198. End NS198. Export NS198.
Module NS199. Module NS199.
Definition x := 0.
End NS199. End NS199. Export NS199.
Module NS200. Module NS200.
Definition x := 0.
End NS200. End NS200. Export NS200.
Module NS201. Module NS201.
Definition x := 0.
End NS201. End NS201. Export NS201.
Module NS202. Module NS202.
Definition x := 0.
End NS202. End NS202. Export NS202.
Module NS203. Module NS203.
Definition x := 0.
End NS203. End NS203. Export NS203.
Module NS204. Module NS204.
Definition x := 0.
End NS204. End NS204. Export NS204.
Module NS205. Module NS205.
Definition x := 0.
End NS205. End NS205. Export NS205.
Module NS206. Module NS206.
Definition x := 0.
End NS206. End NS206. Export NS206.
Module NS207. Module NS207.
Definition x := 0.
End NS207. End NS207. Export NS207.
Module NS208. Module NS208.
Definition x := 0.
End NS208. End NS208. Export NS208.
Module NS209. Module NS209.
Definition x := 0.
End NS209. End NS209. Export NS209.
Module NS210. Module NS210.
Definition x := 0.
End NS210. End NS210. Export NS210.
Module NS211. Module NS211.
Definition x := 0.
End NS211. End NS211. Export NS211.
Module NS212. Module NS212.
Definition x := 0.
End NS212. End NS212. Export NS212.
Module NS213. Module NS213.
Definition x := 0.
End NS213. End NS213. Export NS213.
Module NS214. Module NS214.
Definition x := 0.
End NS214. End NS214. Export NS214.
Module NS215. Module NS215.
Definition x := 0.
End NS215. End NS215. Export NS215.
Module NS216. Module NS216.
Definition x := 0.
End NS216. End NS216. Export NS216.
Module NS217. Module NS217.
Definition x := 0.
End NS217. End NS217. Export NS217.
Module NS218. Module NS218.
Definition x := 0.
End NS218. End NS218. Export NS218.
Module NS219. Module NS219.
Definition x := 0.
End NS219. End NS219. Export NS219.
Module NS220. Module NS220.
Definition x := 0.
End NS220. End NS220. Export NS220.
Module NS221. Module NS221.
Definition x := 0.
End NS221. End NS221. Export NS221.
Module NS222. Module NS222.
Definition x := 0.
End NS222. End NS222. Export NS222.
Module NS223. Module NS223.
Definition x := 0.
End NS223. End NS223. Export NS223.
Module NS224. Module NS224.
Definition x := 0.
End NS224. End NS224. Export NS224.
Module NS225. Module NS225.
Definition x := 0.
End NS225. End NS225. Export NS225.
Module NS226. Module NS226.
Definition x := 0.
End NS226. End NS226. Export NS226.
Module NS227. Module NS227.
Definition x := 0.
End NS227. End NS227. Export NS227.
Module NS228. Module NS228.
Definition x := 0.
End NS228. End NS228. Export NS228.
Module NS229. Module NS229.
Definition x := 0.
End NS229. End NS229. Export NS229.
Module NS230. Module NS230.
Definition x := 0.
End NS230. End NS230. Export NS230.
Module NS231. Module NS231.
Definition x := 0.
End NS231. End NS231. Export NS231.
Module NS232. Module NS232.
Definition x := 0.
End NS232. End NS232. Export NS232.
Module NS233. Module NS233.
Definition x := 0.
End NS233. End NS233. Export NS233.
Module NS234. Module NS234.
Definition x := 0.
End NS234. End NS234. Export NS234.
Module NS235. Module NS235.
Definition x := 0.
End NS235. End NS235. Export NS235.
Module NS236. Module NS236.
Definition x := 0.
End NS236. End NS236. Export NS236.
Module NS237. Module NS237.
Definition x := 0.
End NS237. End NS237. Export NS237.
Module NS238. Module NS238.
Definition x := 0.
End NS238. End NS238. Export NS238.
Module NS239. Module NS239.
Definition x := 0.
End NS239. End NS239. Export NS239.
Module NS240. Module NS240.
Definition x := 0.
End NS240. End NS240. Export NS240.
Module NS241. Module NS241.
Definition x := 0.
End NS241. End NS241. Export NS241.
Module NS242. Module NS242.
Definition x := 0.
End NS242. End NS242. Export NS242.
Module NS243. Module NS243.
Definition x := 0.
End NS243. End NS243. Export NS243.
Module NS244. Module NS244.
Definition x := 0.
End NS244. End NS244. Export NS244.
Module NS245. Module NS245.
Definition x := 0.
End NS245. End NS245. Export NS245.
Module NS246. Module NS246.
Definition x := 0.
End NS246. End NS246. Export NS246.
Module NS247. Module NS247.
Definition x := 0.
End NS247. End NS247. Export NS247.
Module NS248. Module NS248.
Definition x := 0.
End NS248. End NS248. Export NS248.
Module NS249. Module NS249.
Definition x := 0.
End NS249. End NS249. Export NS249.
Module NS250. Module NS250.
Definition x := 0.
End NS250. End NS250. Export NS250.
Module NS251. Module NS251.
Definition x := 0.
End NS251. End NS251. Export NS251.
Module NS252. Module NS252.
Definition x := 0.
End NS252. End NS252. Export NS252.
Module NS253. Module NS253.
Definition x := 0.
End NS253. End NS253. Export NS253.
Module NS254. Module NS254.
Definition x := 0.
End NS254. End NS254. Export NS254.
Module NS255. Module NS255.
Definition x := 0.
End NS255. End NS255. Export NS255.
Module NS256. Module NS256.
Definition x := 0.
End NS256. End NS256. Export NS256.
Module NS257. Module NS257.
Definition x := 0.
End NS257. End NS257. Export NS257.
Module NS258. Module NS258.
Definition x := 0.
End NS258. End NS258. Export NS258.
Module NS259. Module NS259.
Definition x := 0.
End NS259. End NS259. Export NS259.
Module NS260. Module NS260.
Definition x := 0.
End NS260. End NS260. Export NS260.
Module NS261. Module NS261.
Definition x := 0.
End NS261. End NS261. Export NS261.
Module NS262. Module NS262.
Definition x := 0.
End NS262. End NS262. Export NS262.
Module NS263. Module NS263.
Definition x := 0.
End NS263. End NS263. Export NS263.
Module NS264. Module NS264.
Definition x := 0.
End NS264. End NS264. Export NS264.
Module NS265. Module NS265.
Definition x := 0.
End NS265. End NS265. Export NS265.
Module NS266. Module NS266.
Definition x := 0.
End NS266. End NS266. Export NS266.
Module NS267. Module NS267.
Definition x := 0.
End NS267. End NS267. Export NS267.
Module NS268. Module NS268.
Definition x := 0.
End NS268. End NS268. Export NS268.
Module NS269. Module NS269.
Definition x := 0.
End NS269. End NS269. Export NS269.
Module NS270. Module NS270.
Definition x := 0.
End NS270. End NS270. Export NS270.
Module NS271. Module NS271.
Definition x := 0.
End NS271. End NS271. Export NS271.
Module NS272. Module NS272.
Definition x := 0.
End NS272. End NS272. Export NS272.
Module NS273. Module NS273.
Definition x := 0.
End NS273. End NS273. Export NS273.
Module NS274. Module NS274.
Definition x := 0.
End NS274. End NS274. Export NS274.
Module NS275. Module NS275.
Definition x := 0.
End NS275. End NS275. Export NS275.
Module NS276. Module NS276.
Definition x := 0.
End NS276. End NS276. Export NS276.
Module NS277. Module NS277.
Definition x := 0.
End NS277. End NS277. Export NS277.
Module NS278. Module NS278.
Definition x := 0.
End NS278. End NS278. Export NS278.
Module NS279. Module NS279.
Definition x := 0.
End NS279. End NS279. Export NS279.
Module NS280. Module NS280.
Definition x := 0.
End NS280. End NS280. Export NS280.
Module NS281. Module NS281.
Definition x := 0.
End NS281. End NS281. Export NS281.
Module NS282. Module NS282.
Definition x := 0.
End NS282. End NS282. Export NS282.
Module NS283. Module NS283.
Definition x := 0.
End NS283. End NS283. Export NS283.
Module NS284. Module NS284.
Definition x := 0.
End NS284. End NS284. Export NS284.
Module NS285. Module NS285.
Definition x := 0.
End NS285. End NS285. Export NS285.
Module NS286. Module NS286.
Definition x := 0.
End NS286. End NS286. Export NS286.
Module NS287. Module NS287.
Definition x := 0.
End NS287. End NS287. Export NS287.
Module NS288. Module NS288.
Definition x := 0.
End NS288. End NS288. Export NS288.
Module NS289. Module NS289.
Definition x := 0.
End NS289. End NS289. Export NS289.
Module NS290. Module NS290.
Definition x := 0.
End NS290. End NS290. Export NS290.
Module NS291. Module NS291.
Definition x := 0.
End NS291. End NS291. Export NS291.
Module NS292. Module NS292.
Definition x := 0.
End NS292. End NS292. Export NS292.
Module NS293. Module NS293.
Definition x := 0.
End NS293. End NS293. Export NS293.
Module NS294. Module NS294.
Definition x := 0.
End NS294. End NS294. Export NS294.
Module NS295. Module NS295.
Definition x := 0.
End NS295. End NS295. Export NS295.
Module NS296. Module NS296.
Definition x := 0.
End NS296. End NS296. Export NS296.
Module NS297. Module NS297.
Definition x := 0.
End NS297. End NS297. Export NS297.
Module NS298. Module NS298.
Definition x := 0.
End NS298. End NS298. Export NS298.
Module NS299. Module NS299.
Definition x := 0.
End NS299. End NS299. Export NS299.
Module NS300. Module NS300.
Definition x := 0.
End NS300. End NS300. Export NS300.
Module NS301. Module NS301.
Definition x := 0.
End NS301. End NS301. Export NS301.
Module NS302. Module NS302.
Definition x := 0.
End NS302. End NS302. Export NS302.
Module NS303. Module NS303.
Definition x := 0.
End NS303. End NS303. Export NS303.
Module NS304. Module NS304.
Definition x := 0.
End NS304. End NS304. Export NS304.
Module NS305. Module NS305.
Definition x := 0.
End NS305. End NS305. Export NS305.
Module NS306. Module NS306.
Definition x := 0.
End NS306. End NS306. Export NS306.
Module NS307. Module NS307.
Definition x := 0.
End NS307. End NS307. Export NS307.
Module NS308. Module NS308.
Definition x := 0.
End NS308. End NS308. Export NS308.
Module NS309. Module NS309.
Definition x := 0.
End NS309. End NS309. Export NS309.
Module NS310. Module NS310.
Definition x := 0.
End NS310. End NS310. Export NS310.
Module NS311. Module NS311.
Definition x := 0.
End NS311. End NS311. Export NS311.
Module NS312. Module NS312.
Definition x := 0.
End NS312. End NS312. Export NS312.
Module NS313. Module NS313.
Definition x := 0.
End NS313. End NS313. Export NS313.
Module NS314. Module NS314.
Definition x := 0.
End NS314. End NS314. Export NS314.
Module NS315. Module NS315.
Definition x := 0.
End NS315. End NS315. Export NS315.
Module NS316. Module NS316.
Definition x := 0.
End NS316. End NS316. Export NS316.
Module NS317. Module NS317.
Definition x := 0.
End NS317. End NS317. Export NS317.
Module NS318. Module NS318.
Definition x := 0.
End NS318. End NS318. Export NS318.
Module NS319. Module NS319.
Definition x := 0.
End NS319. End NS319. Export NS319.
Module NS320. Module NS320.
Definition x := 0.
End NS320. End NS320. Export NS320.
Module NS321. Module NS321.
Definition x := 0.
End NS321. End NS321. Export NS321.
Module NS322. Module NS322.
Definition x := 0.
End NS322. End NS322. Export NS322.
Module NS323. Module NS323.
Definition x := 0.
End NS323. End NS323. Export NS323.
Module NS324. Module NS324.
Definition x := 0.
End NS324. End NS324. Export NS324.
Module NS325. Module NS325.
Definition x := 0.
End NS325. End NS325. Export NS325.
Module NS326. Module NS326.
Definition x := 0.
End NS326. End NS326. Export NS326.
Module NS327. Module NS327.
Definition x := 0.
End NS327. End NS327. Export NS327.
Module NS328. Module NS328.
Definition x := 0.
End NS328. End NS328. Export NS328.
Module NS329. Module NS329.
Definition x := 0.
End NS329. End NS329. Export NS329.
Module NS330. Module NS330.
Definition x := 0.
End NS330. End NS330. Export NS330.
Module NS331. Module NS331.
Definition x := 0.
End NS331. End NS331. Export NS331.
Module NS332. Module NS332.
Definition x := 0.
End NS332. End NS332. Export NS332.
Module NS333. Module NS333.
Definition x := 0.
End NS333. End NS333. Export NS333.
Module NS334. Module NS334.
Definition x := 0.
End NS334. End NS334. Export NS334.
Module NS335. Module NS335.
Definition x := 0.
End NS335. End NS335. Export NS335.
Module NS336. Module NS336.
Definition x := 0.
End NS336. End NS336. Export NS336.
Module NS337. Module NS337.
Definition x := 0.
End NS337. End NS337. Export NS337.
Module NS338. Module NS338.
Definition x := 0.
End NS338. End NS338. Export NS338.
Module NS339. Module NS339.
Definition x := 0.
End NS339. End NS339. Export NS339.
Module NS340. Module NS340.
Definition x := 0.
End NS340. End NS340. Export NS340.
Module NS341. Module NS341.
Definition x := 0.
End NS341. End NS341. Export NS341.
Module NS342. Module NS342.
Definition x := 0.
End NS342. End NS342. Export NS342.
Module NS343. Module NS343.
Definition x := 0.
End NS343. End NS343. Export NS343.
Module NS344. Module NS344.
Definition x := 0.
End NS344. End NS344. Export NS344.
Module NS345. Module NS345.
Definition x := 0.
End NS345. End NS345. Export NS345.
Module NS346. Module NS346.
Definition x := 0.
End NS346. End NS346. Export NS346.
Module NS347. Module NS347.
Definition x := 0.
End NS347. End NS347. Export NS347.
Module NS348. Module NS348.
Definition x := 0.
End NS348. End NS348. Export NS348.
Module NS349. Module NS349.
Definition x := 0.
End NS349. End NS349. Export NS349.
Module NS350. Module NS350.
Definition x := 0.
End NS350. End NS350. Export NS350.
Module NS351. Module NS351.
Definition x := 0.
End NS351. End NS351. Export NS351.
Module NS352. Module NS352.
Definition x := 0.
End NS352. End NS352. Export NS352.
Module NS353. Module NS353.
Definition x := 0.
End NS353. End NS353. Export NS353.
Module NS354. Module NS354.
Definition x := 0.
End NS354. End NS354. Export NS354.
Module NS355. Module NS355.
Definition x := 0.
End NS355. End NS355. Export NS355.
Module NS356. Module NS356.
Definition x := 0.
End NS356. End NS356. Export NS356.
Module NS357. Module NS357.
Definition x := 0.
End NS357. End NS357. Export NS357.
Module NS358. Module NS358.
Definition x := 0.
End NS358. End NS358. Export NS358.
Module NS359. Module NS359.
Definition x := 0.
End NS359. End NS359. Export NS359.
Module NS360. Module NS360.
Definition x := 0.
End NS360. End NS360. Export NS360.
Module NS361. Module NS361.
Definition x := 0.
End NS361. End NS361. Export NS361.
Module NS362. Module NS362.
Definition x := 0.
End NS362. End NS362. Export NS362.
Module NS363. Module NS363.
Definition x := 0.
End NS363. End NS363. Export NS363.
Module NS364. Module NS364.
Definition x := 0.
End NS364. End NS364. Export NS364.
Module NS365. Module NS365.
Definition x := 0.
End NS365. End NS365. Export NS365.
Module NS366. Module NS366.
Definition x := 0.
End NS366. End NS366. Export NS366.
Module NS367. Module NS367.
Definition x := 0.
End NS367. End NS367. Export NS367.
Module NS368. Module NS368.
Definition x := 0.
End NS368. End NS368. Export NS368.
Module NS369. Module NS369.
Definition x := 0.
End NS369. End NS369. Export NS369.
Module NS370. Module NS370.
Definition x := 0.
End NS370. End NS370. Export NS370.
Module NS371. Module NS371.
Definition x := 0.
End NS371. End NS371. Export NS371.
Module NS372. Module NS372.
Definition x := 0.
End NS372. End NS372. Export NS372.
Module NS373. Module NS373.
Definition x := 0.
End NS373. End NS373. Export NS373.
Module NS374. Module NS374.
Definition x := 0.
End NS374. End NS374. Export NS374.
Module NS375. Module NS375.
Definition x := 0.
End NS375. End NS375. Export NS375.
Module NS376. Module NS376.
Definition x := 0.
End NS376. End NS376. Export NS376.
Module NS377. Module NS377.
Definition x := 0.
End NS377. End NS377. Export NS377.
Module NS378. Module NS378.
Definition x := 0.
End NS378. End NS378. Export NS378.
Module NS379. Module NS379.
Definition x := 0.
End NS379. End NS379. Export NS379.
Module NS380. Module NS380.
Definition x := 0.
End NS380. End NS380. Export NS380.
Module NS381. Module NS381.
Definition x := 0.
End NS381. End NS381. Export NS381.
Module NS382. Module NS382.
Definition x := 0.
End NS382. End NS382. Export NS382.
Module NS383. Module NS383.
Definition x := 0.
End NS383. End NS383. Export NS383.
Module NS384. Module NS384.
Definition x := 0.
End NS384. End NS384. Export NS384.
Module NS385. Module NS385.
Definition x := 0.
End NS385. End NS385. Export NS385.
Module NS386. Module NS386.
Definition x := 0.
End NS386. End NS386. Export NS386.
Module NS387. Module NS387.
Definition x := 0.
End NS387. End NS387. Export NS387.
Module NS388. Module NS388.
Definition x := 0.
End NS388. End NS388. Export NS388.
Module NS389. Module NS389.
Definition x := 0.
End NS389. End NS389. Export NS389.
Module NS390. Module NS390.
Definition x := 0.
End NS390. End NS390. Export NS390.
Module NS391. Module NS391.
Definition x := 0.
End NS391. End NS391. Export NS391.
Module NS392. Module NS392.
Definition x := 0.
End NS392. End NS392. Export NS392.
Module NS393. Module NS393.
Definition x := 0.
End NS393. End NS393. Export NS393.
Module NS394. Module NS394.
Definition x := 0.
End NS394. End NS394. Export NS394.
Module NS395. Module NS395.
Definition x := 0.
End NS395. End NS395. Export NS395.
Module NS396. Module NS396.
Definition x := 0.
End NS396. End NS396. Export NS396.
Module NS397. Module NS397.
Definition x := 0.
End NS397. End NS397. Export NS397.
Module NS398. Module NS398.
Definition x := 0.
End NS398. End NS398. Export NS398.
Module NS399. Module NS399.
Definition x := 0.
End NS399. End NS399. Export NS399.
Module NS400. Module NS400.
Definition x := 0.
End NS400. End NS400. Export NS400.
Module NS401. Module NS401.
Definition x := 0.
End NS401. End NS401. Export NS401.
Module NS402. Module NS402.
Definition x := 0.
End NS402. End NS402. Export NS402.
Module NS403. Module NS403.
Definition x := 0.
End NS403. End NS403. Export NS403.
Module NS404. Module NS404.
Definition x := 0.
End NS404. End NS404. Export NS404.
Module NS405. Module NS405.
Definition x := 0.
End NS405. End NS405. Export NS405.
Module NS406. Module NS406.
Definition x := 0.
End NS406. End NS406. Export NS406.
Module NS407. Module NS407.
Definition x := 0.
End NS407. End NS407. Export NS407.
Module NS408. Module NS408.
Definition x := 0.
End NS408. End NS408. Export NS408.
Module NS409. Module NS409.
Definition x := 0.
End NS409. End NS409. Export NS409.
Module NS410. Module NS410.
Definition x := 0.
End NS410. End NS410. Export NS410.
Module NS411. Module NS411.
Definition x := 0.
End NS411. End NS411. Export NS411.
Module NS412. Module NS412.
Definition x := 0.
End NS412. End NS412. Export NS412.
Module NS413. Module NS413.
Definition x := 0.
End NS413. End NS413. Export NS413.
Module NS414. Module NS414.
Definition x := 0.
End NS414. End NS414. Export NS414.
Module NS415. Module NS415.
Definition x := 0.
End NS415. End NS415. Export NS415.
Module NS416. Module NS416.
Definition x := 0.
End NS416. End NS416. Export NS416.
Module NS417. Module NS417.
Definition x := 0.
End NS417. End NS417. Export NS417.
Module NS418. Module NS418.
Definition x := 0.
End NS418. End NS418. Export NS418.
Module NS419. Module NS419.
Definition x := 0.
End NS419. End NS419. Export NS419.
Module NS420. Module NS420.
Definition x := 0.
End NS420. End NS420. Export NS420.
Module NS421. Module NS421.
Definition x := 0.
End NS421. End NS421. Export NS421.
Module NS422. Module NS422.
Definition x := 0.
End NS422. End NS422. Export NS422.
Module NS423. Module NS423.
Definition x := 0.
End NS423. End NS423. Export NS423.
Module NS424. Module NS424.
Definition x := 0.
End NS424. End NS424. Export NS424.
Module NS425. Module NS425.
Definition x := 0.
End NS425. End NS425. Export NS425.
Module NS426. Module NS426.
Definition x := 0.
End NS426. End NS426. Export NS426.
Module NS427. Module NS427.
Definition x := 0.
End NS427. End NS427. Export NS427.
Module NS428. Module NS428.
Definition x := 0.
End NS428. End NS428. Export NS428.
Module NS429. Module NS429.
Definition x := 0.
End NS429. End NS429. Export NS429.
Module NS430. Module NS430.
Definition x := 0.
End NS430. End NS430. Export NS430.
Module NS431. Module NS431.
Definition x := 0.
End NS431. End NS431. Export NS431.
Module NS432. Module NS432.
Definition x := 0.
End NS432. End NS432. Export NS432.
Module NS433. Module NS433.
Definition x := 0.
End NS433. End NS433. Export NS433.
Module NS434. Module NS434.
Definition x := 0.
End NS434. End NS434. Export NS434.
Module NS435. Module NS435.
Definition x := 0.
End NS435. End NS435. Export NS435.
Module NS436. Module NS436.
Definition x := 0.
End NS436. End NS436. Export NS436.
Module NS437. Module NS437.
Definition x := 0.
End NS437. End NS437. Export NS437.
Module NS438. Module NS438.
Definition x := 0.
End NS438. End NS438. Export NS438.
Module NS439. Module NS439.
Definition x := 0.
End NS439. End NS439. Export NS439.
Module NS440. Module NS440.
Definition x := 0.
End NS440. End NS440. Export NS440.
Module NS441. Module NS441.
Definition x := 0.
End NS441. End NS441. Export NS441.
Module NS442. Module NS442.
Definition x := 0.
End NS442. End NS442. Export NS442.
Module NS443. Module NS443.
Definition x := 0.
End NS443. End NS443. Export NS443.
Module NS444. Module NS444.
Definition x := 0.
End NS444. End NS444. Export NS444.
Module NS445. Module NS445.
Definition x := 0.
End NS445. End NS445. Export NS445.
Module NS446. Module NS446.
Definition x := 0.
End NS446. End NS446. Export NS446.
Module NS447. Module NS447.
Definition x := 0.
End NS447. End NS447. Export NS447.
Module NS448. Module NS448.
Definition x := 0.
End NS448. End NS448. Export NS448.
Module NS449. Module NS449.
Definition x := 0.
End NS449. End NS449. Export NS449.
Module NS450. Module NS450.
Definition x := 0.
End NS450. End NS450. Export NS450.
Module NS451. Module NS451.
Definition x := 0.
End NS451. End NS451. Export NS451.
Module NS452. Module NS452.
Definition x := 0.
End NS452. End NS452. Export NS452.
Module NS453. Module NS453.
Definition x := 0.
End NS453. End NS453. Export NS453.
Module NS454. Module NS454.
Definition x := 0.
End NS454. End NS454. Export NS454.
Module NS455. Module NS455.
Definition x := 0.
End NS455. End NS455. Export NS455.
Module NS456. Module NS456.
Definition x := 0.
End NS456. End NS456. Export NS456.
Module NS457. Module NS457.
Definition x := 0.
End NS457. End NS457. Export NS457.
Module NS458. Module NS458.
Definition x := 0.
End NS458. End NS458. Export NS458.
Module NS459. Module NS459.
Definition x := 0.
End NS459. End NS459. Export NS459.
Module NS460. Module NS460.
Definition x := 0.
End NS460. End NS460. Export NS460.
Module NS461. Module NS461.
Definition x := 0.
End NS461. End NS461. Export NS461.
Module NS462. Module NS462.
Definition x := 0.
End NS462. End NS462. Export NS462.
Module NS463. Module NS463.
Definition x := 0.
End NS463. End NS463. Export NS463.
Module NS464. Module NS464.
Definition x := 0.
End NS464. End NS464. Export NS464.
Module NS465. Module NS465.
Definition x := 0.
End NS465. End NS465. Export NS465.
Module NS466. Module NS466.
Definition x := 0.
End NS466. End NS466. Export NS466.
Module NS467. Module NS467.
Definition x := 0.
End NS467. End NS467. Export NS467.
Module NS468. Module NS468.
Definition x := 0.
End NS468. End NS468. Export NS468.
Module NS469. Module NS469.
Definition x := 0.
End NS469. End NS469. Export NS469.
Module NS470. Module NS470.
Definition x := 0.
End NS470. End NS470. Export NS470.
Module NS471. Module NS471.
Definition x := 0.
End NS471. End NS471. Export NS471.
Module NS472. Module NS472.
Definition x := 0.
End NS472. End NS472. Export NS472.
Module NS473. Module NS473.
Definition x := 0.
End NS473. End NS473. Export NS473.
Module NS474. Module NS474.
Definition x := 0.
End NS474. End NS474. Export NS474.
Module NS475. Module NS475.
Definition x := 0.
End NS475. End NS475. Export NS475.
Module NS476. Module NS476.
Definition x := 0.
End NS476. End NS476. Export NS476.
Module NS477. Module NS477.
Definition x := 0.
End NS477. End NS477. Export NS477.
Module NS478. Module NS478.
Definition x := 0.
End NS478. End NS478. Export NS478.
Module NS479. Module NS479.
Definition x := 0.
End NS479. End NS479. Export NS479.
Module NS480. Module NS480.
Definition x := 0.
End NS480. End NS480. Export NS480.
Module NS481. Module NS481.
Definition x := 0.
End NS481. End NS481. Export NS481.
Module NS482. Module NS482.
Definition x := 0.
End NS482. End NS482. Export NS482.
Module NS483. Module NS483.
Definition x := 0.
End NS483. End NS483. Export NS483.
Module NS484. Module NS484.
Definition x := 0.
End NS484. End NS484. Export NS484.
Module NS485. Module NS485.
Definition x := 0.
End NS485. End NS485. Export NS485.
Module NS486. Module NS486.
Definition x := 0.
End NS486. End NS486. Export NS486.
Module NS487. Module NS487.
Definition x := 0.
End NS487. End NS487. Export NS487.
Module NS488. Module NS488.
Definition x := 0.
End NS488. End NS488. Export NS488.
Module NS489. Module NS489.
Definition x := 0.
End NS489. End NS489. Export NS489.
Module NS490. Module NS490.
Definition x := 0.
End NS490. End NS490. Export NS490.
Module NS491. Module NS491.
Definition x := 0.
End NS491. End NS491. Export NS491.
Module NS492. Module NS492.
Definition x := 0.
End NS492. End NS492. Export NS492.
Module NS493. Module NS493.
Definition x := 0.
End NS493. End NS493. Export NS493.
Module NS494. Module NS494.
Definition x := 0.
End NS494. End NS494. Export NS494.
Module NS495. Module NS495.
Definition x := 0.
End NS495. End NS495. Export NS495.
Module NS496. Module NS496.
Definition x := 0.
End NS496. End NS496. Export NS496.
Module NS497. Module NS497.
Definition x := 0.
End NS497. End NS497. Export NS497.
Module NS498. Module NS498.
Definition x := 0.
End NS498. End NS498. Export NS498.
Module NS499. Module NS499.
Definition x := 0.
End NS499. End NS499. Export NS499.
Module NS500. Module NS500.
Definition x := 0.
End NS500. End NS500. Export NS500. LPCIC-coq-elpi-eb449d7/apps/NES/tests/test_NES_resolve.v 0000664 0000000 0000000 00000001135 15230417534 0022647 0 ustar 00root root 0000000 0000000 From elpi.apps Require Import NES.
NES.Begin A.
Definition cats := 3.
NES.End A.
NES.Begin B.
Definition dogs := 4.
NES.End B.
NES.Begin C.
NES.Begin A.
Definition bunnies := 42.
NES.End A.
Section more_bunnies.
NES.Open A.
Definition more_bunnies := bunnies.
End more_bunnies.
Section more_cats.
NES.Open _.A.
Definition more_cats := cats.
End more_cats.
Section more_dogs.
NES.Open B.
Definition more_dogs := dogs.
End more_dogs.
Section even_more_dogs.
NES.Open _.B.
Definition even_more_dogs := dogs.
End even_more_dogs.
NES.End C.
LPCIC-coq-elpi-eb449d7/apps/NES/tests/test_module_namespace.v 0000664 0000000 0000000 00000000137 15230417534 0023765 0 ustar 00root root 0000000 0000000 From elpi.apps Require Import NES.
Module MyModule. End MyModule.
Succeed NES.Begin MyModule.
LPCIC-coq-elpi-eb449d7/apps/NES/theories/ 0000775 0000000 0000000 00000000000 15230417534 0017715 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/apps/NES/theories/NES.v 0000664 0000000 0000000 00000006263 15230417534 0020540 0 ustar 00root root 0000000 0000000 From elpi.apps.NES.elpi Extra Dependency "nes_synterp.elpi" as nes_synterp.
From elpi.apps.NES.elpi Extra Dependency "nes_interp.elpi" as nes_interp.
From elpi Require Import elpi.
#[phase="both"] Elpi Db NES.db lp:{{
typeabbrev path (list string).
:index (2)
pred ns o:list string, o:modpath.
}}.
#[synterp] Elpi Accumulate NES.db lp:{{
pred open-ns o:string, o:list string.
:name "open-ns:begin"
open-ns _ _ :- fail.
}}.
Elpi Command NES.Status.
#[synterp] Elpi Accumulate Db NES.db.
#[synterp] Elpi Accumulate File nes_synterp.
#[synterp] Elpi Accumulate lp:{{
main _ :-
coq.say "NES: current namespace" {nes.current-path},
std.findall (ns Y_ Z_) NS,
coq.say "NES: registered namespaces" NS.
}}.
Elpi Export NES.Status.
Elpi Command NES.Begin.
#[phase="both"] Elpi Accumulate Db NES.db.
#[synterp] Elpi Accumulate File nes_synterp.
#[interp] Elpi Accumulate File nes_interp.
#[synterp] Elpi Accumulate lp:{{
main [str NS] :- !, nes.begin-path {nes.string->non-empty-ns NS} _.
main _ :- coq.error "usage: NES.Begin ".
}}.
#[interp] Elpi Accumulate lp:{{ main _ :- nes.begin-path. }}.
Elpi Export NES.Begin.
Elpi Command NES.End.
#[phase="both"] Elpi Accumulate Db NES.db.
#[synterp] Elpi Accumulate File nes_synterp.
#[interp] Elpi Accumulate File nes_interp.
#[synterp] Elpi Accumulate lp:{{
main [str NS] :- nes.end-path {nes.string->non-empty-ns NS} _.
main _ :- coq.error "usage: NES.End ".
}}.
#[interp] Elpi Accumulate lp:{{ main _ :- nes.end-path. }}.
Elpi Export NES.End.
Elpi Command NES.Open.
#[phase="both"] Elpi Accumulate Db NES.db.
#[synterp] Elpi Accumulate File nes_synterp.
#[interp] Elpi Accumulate File nes_interp.
#[synterp] Elpi Accumulate lp:{{
main [str NS] :- nes.open-path {nes.resolve NS}.
main _ :- coq.error "usage: NES.Open ".
}}.
#[interp] Elpi Accumulate lp:{{ main _ :- nes.open-path. }}.
Elpi Export NES.Open.
(* List the contents a namespace *)
Elpi Command NES.List.
#[phase="both"] Elpi Accumulate Db NES.db.
#[synterp] Elpi Accumulate File nes_synterp.
#[interp] Elpi Accumulate File nes_interp.
#[synterp] Elpi Accumulate lp:{{
main-synterp [str NS] (pr DB Path) :- nes.resolve NS Path, std.findall (ns O_ P_) DB.
}}.
#[interp] Elpi Accumulate lp:{{
pred pp-gref i:gref, o:coq.pp.
pp-gref GR PP :- coq.term->pp (global GR) PP.
main-interp [str _] (pr DB Path) :- DB => nes.print-path Path pp-gref.
main _ :- coq.error "usage: NES.List ".
}}.
Elpi Export NES.List.
(* NES.List with types *)
Elpi Command NES.Print.
#[phase="both"] Elpi Accumulate Db NES.db.
#[synterp] Elpi Accumulate File nes_synterp.
#[interp] Elpi Accumulate File nes_interp.
#[synterp] Elpi Accumulate lp:{{
main-synterp [str NS] (pr DB Path) :- nes.resolve NS Path, std.findall (ns O_ P_) DB.
}}.
Elpi Accumulate lp:{{
pred pp-gref i:gref, o:coq.pp.
pp-gref GR PP :- std.do! [
coq.env.typeof GR Ty,
PP = coq.pp.box (coq.pp.hov 2) [
{coq.term->pp (global GR)}, coq.pp.str " :", coq.pp.spc,
{coq.term->pp Ty},
],
].
main-interp [str _] (pr DB Path) :- DB => nes.print-path Path pp-gref.
main _ :- coq.error "usage: NES.Print ".
}}.
Elpi Export NES.Print.
LPCIC-coq-elpi-eb449d7/apps/NES/theories/dune 0000664 0000000 0000000 00000000171 15230417534 0020572 0 ustar 00root root 0000000 0000000 (coq.theory
(name elpi.apps.NES)
(package rocq-elpi)
(theories elpi elpi.apps.NES.elpi))
(include_subdirs qualified)
LPCIC-coq-elpi-eb449d7/apps/README.md 0000664 0000000 0000000 00000001053 15230417534 0016724 0 ustar 00root root 0000000 0000000 ## Applications written in Rocq-Elpi
### Derive
Given an inductive type declaration it synthesizes a bunch of useful stuff
such as proved equality tests, projections, parametricity relations.
### Eltac
A toy set of tactics implemented in Elpi.
### NES
A Namespace Emulation System.
### Locker
A kit to lock definitions hard.
### Coercion
A hook to insert coercions using Elpi.
### RBuild
A handy syntax to build records.
### CS
A hook to solve Canonical Structure problems in Elpi.
### TC
An alternative Type Class solver written in Elpi.
LPCIC-coq-elpi-eb449d7/apps/coercion/ 0000775 0000000 0000000 00000000000 15230417534 0017247 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/apps/coercion/README.md 0000664 0000000 0000000 00000003711 15230417534 0020530 0 ustar 00root root 0000000 0000000 # Coercion
The `coercion` app enables to program Coq coercions in Elpi.
This app is experimental.
## The coercion predicate
The `coercion` predicate lives in the database `coercion.db`
```elpi
% [coercion Ctx V Inferred Expected Res] is queried to cast V to Res
% - [Ctx] is the context
% - [V] is the value to be coerced
% - [Inferred] is the type of [V]
% - [Expected] is the type [V] should be coerced to
% - [Res] is the result (of type [Expected])
pred coercion i:goal-ctx, i:term, i:term, i:term, o:term.
```
By addings rules for this predicate one can recover from a type error, that is
when `Inferred` and `Expected` are not unifiable.
## Simple example of coercion
This example maps `True : Prop` to `true : bool`, which is a function you
cannot express in type theory, hence in the standard Coercion system.
```coq
From elpi.apps Require Import coercion.
From Coq Require Import Bool.
Elpi Accumulate coercion.db lp:{{
coercion _ {{ True }} {{ Prop }} {{ bool }} {{ true }}.
coercion _ {{ False }} {{ Prop }} {{ bool }} {{ false }}.
}}.
Check True && False.
```
## Example of coercion with proof automation
This coercion enriches `x : T` to a `{x : T | P x}` by using
`my_solver` to prove `P x`.
```coq
From elpi.apps Require Import coercion.
From Coq Require Import Arith ssreflect.
Ltac my_solver := trivial with arith.
Elpi Accumulate coercion.db lp:{{
coercion _ X Ty {{ @sig lp:Ty lp:P }} Solution :- std.do! [
% we unfold letins since the solver is dumb and the `as` in the second
% example introduces a letin
(pi a b b1\ copy a b :- def a _ _ b, copy b b1) => copy X X1,
% we build the solution
Solution = {{ @exist lp:Ty lp:P lp:X1 _ }},
% we call the solver
coq.ltac.collect-goals Solution [G] [],
coq.ltac.open (x\y\coq.ltac.call-ltac1 "my_solver" x y ok) G [],
].
}}.
Elpi Typecheck coercion.
Goal {x : nat | x > 0}.
apply: 3.
Qed.
Definition ensure_pos n : {x : nat | x > 0} :=
match n with
| O => 1
| S x as y => y
end.
```
LPCIC-coq-elpi-eb449d7/apps/coercion/src/ 0000775 0000000 0000000 00000000000 15230417534 0020036 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/apps/coercion/src/dune 0000664 0000000 0000000 00000000530 15230417534 0020712 0 ustar 00root root 0000000 0000000 (library
(name elpi_coercion_plugin)
(public_name rocq-elpi.coercion)
(flags :standard -w -27)
(preprocess (pps ppx_optcomp -- -cookie "ppx_optcomp.env=env ~coq:(Defined \"%{coq:version.major}.%{coq:version.minor}\")"))
(libraries rocq-runtime.plugins.ltac rocq-runtime.vernac rocq-elpi.elpi))
(coq.pp
(modules rocq_elpi_coercion_hook))
LPCIC-coq-elpi-eb449d7/apps/coercion/src/elpi_coercion_plugin.mlpack 0000664 0000000 0000000 00000000030 15230417534 0025410 0 ustar 00root root 0000000 0000000 Rocq_elpi_coercion_hook
LPCIC-coq-elpi-eb449d7/apps/coercion/src/rocq_elpi_coercion_hook.mlg 0000664 0000000 0000000 00000006613 15230417534 0025423 0 ustar 00root root 0000000 0000000 DECLARE PLUGIN "rocq-elpi.coercion"
{
open Elpi
open Elpi_plugin
open Rocq_elpi_arg_syntax
open Rocq_elpi_vernacular
let relevant = EConstr.ERelevance.relevant
let anonR = Context.make_annot Names.Name.Anonymous EConstr.ERelevance.irrelevant
let nameR x = Context.make_annot (Names.Name.Name x) EConstr.ERelevance.irrelevant
let annotR x = Context.make_annot x EConstr.ERelevance.irrelevant
let build_expected_type env sigma expected =
match expected with
| Coercion.Type t -> sigma, t, false
| Coercion.Product ->
let (sigma, (source, _)) = Evarutil.new_type_evar env sigma Evd.univ_flexible in
let (sigma, (target, _)) =
let env = EConstr.push_rel (Context.Rel.Declaration.LocalAssum (EConstr.annotR (Names.Name (Namegen.default_dependent_ident)) , source)) env in
Evarutil.new_type_evar env sigma Evd.univ_flexible in
sigma, EConstr.mkProd (annotR (Names.Name (Namegen.default_type_ident)), source, target), true
| Coercion.Sort -> let (sigma, t) = Evarutil.new_Type sigma in sigma, t, true
let return s g t = Some (s,g,t)
let elpi_coercion_hook program env sigma ~flags v ~inferred ~expected =
let atts = [] in
let sigma, expected, retype = build_expected_type env sigma expected in
let sigma, goal = Evarutil.new_evar ~typeclass_candidate:false env sigma expected in
let goal_evar, _ = EConstr.destEvar sigma goal in
let query state =
let loc = Elpi.API.State.get Rocq_elpi_builtins_synterp.invocation_site_loc state in
let depth = 0 in
let state, q, gls =
Rocq_elpi_HOAS.solvegoals2query sigma [goal_evar] loc ~main:[v; inferred]
~in_elpi_tac_arg:Rocq_elpi_arg_HOAS.in_elpi_tac_econstr ~depth ~base:() state in
let state, qatts = atts2impl loc Summary.Stage.Interp ~depth state atts q in
let state = API.State.set Rocq_elpi_builtins.tactic_mode state true in
state, qatts, gls
in
let loc = Loc.initial Loc.ToplevelInput in
match Interp.get_and_compile ~loc program with
| None -> None
| Some (cprogram, _) ->
match Interp.run ~loc cprogram (Fun (query)) with
| API.Execute.Success solution ->
let gls = Evar.Set.singleton goal_evar in
let sigma, _, _ = Rocq_elpi_HOAS.solution2evd ~eta_contract_solution:false sigma solution gls in
if Evd.is_defined sigma goal_evar then
let t = if retype then Retyping.get_type_of env sigma goal else expected in
return sigma goal t
else
None
| API.Execute.NoMoreSteps
| API.Execute.Failure -> None
| exception (Rocq_elpi_utils.LtacFail (level, msg)) -> None
let add_coercion_hook =
let coercion_hook_program = Summary.ref ~name:"elpi-coercion" None in
let coercion_hook env sigma ~flags v ~inferred ~expected =
match !coercion_hook_program with
| None -> None
| Some h -> elpi_coercion_hook h env sigma ~flags v ~inferred ~expected in
let name = "elpi-coercion" in
Coercion.register_hook ~name coercion_hook;
let inCoercion =
let cache program =
coercion_hook_program := Some program;
Coercion.activate_hook ~name in
let open Libobject in
declare_object
@@ superglobal_object_nodischarge "ELPI-COERCION" ~cache ~subst:None in
fun program -> Lib.add_leaf (inCoercion program)
}
VERNAC COMMAND EXTEND ElpiCoercion CLASSIFIED AS SIDEFF
| #[ atts = any_attribute ] [ "Elpi" "CoercionFallbackTactic" qualified_name(p) ] -> {
let () = ignore_unknown_attributes atts in
add_coercion_hook (snd p) }
END
LPCIC-coq-elpi-eb449d7/apps/coercion/tests/ 0000775 0000000 0000000 00000000000 15230417534 0020411 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/apps/coercion/tests/dune 0000664 0000000 0000000 00000000212 15230417534 0021262 0 ustar 00root root 0000000 0000000 (coq.theory
(name elpi.apps.coercion.tests)
(package rocq-elpi-tests)
(theories elpi elpi.apps.coercion))
(include_subdirs qualified)
LPCIC-coq-elpi-eb449d7/apps/coercion/tests/test.v 0000664 0000000 0000000 00000001620 15230417534 0021556 0 ustar 00root root 0000000 0000000 From elpi.apps Require Import coercion.
#[warning="-deprecated-from-Coq"]
Elpi Accumulate coercion.db lp:{{
coercion _ {{ True }} {{ Prop }} {{ bool }} {{ true }}.
coercion _ {{ False }} {{ Prop }} {{ bool }} {{ false }}.
}}.
Check andb True False.
Parameter ringType : Type.
Parameter ringType_sort : ringType -> Type.
Parameter natmul : forall (R : ringType) (n : nat), (ringType_sort R).
Elpi Accumulate coercion.db lp:{{
coercion _ N {{ nat }} {{ ringType_sort lp:R }} {{ natmul lp:R lp:N }} :-
coq.typecheck R {{ ringType }} ok.
}}.
Section TestNatMul.
Variable R : ringType.
Variable n : nat.
Check natmul R n : ringType_sort R.
Check n : ringType_sort R.
End TestNatMul.
Axiom ord : nat -> Type.
Axiom bump : forall n, ord n -> ord (S n).
Elpi Accumulate coercion.db lp:{{
coercion _ X {{ ord lp:N }} {{ ord (S lp:N) }} {{ bump lp:N lp:X }}.
}}.
Check fun i : ord 1 => (i : ord 2).
LPCIC-coq-elpi-eb449d7/apps/coercion/tests/test2.v 0000664 0000000 0000000 00000000051 15230417534 0021635 0 ustar 00root root 0000000 0000000 Require Import test.
Check True : bool.
LPCIC-coq-elpi-eb449d7/apps/coercion/tests/test_open.v 0000664 0000000 0000000 00000001277 15230417534 0022607 0 ustar 00root root 0000000 0000000 From elpi.apps Require Import coercion.
From Corelib Require Import ssreflect.
Ltac my_solver := try ((repeat apply: le_n_S); apply: le_0_n).
Elpi Accumulate coercion lp:{{
coercion _ X Ty {{ @sig lp:Ty lp:P }} Solution :- std.do! [
% we unfold letins since the solve is dumb
(pi a b b1\ copy a b :- def a _ _ b, !, copy b b1) => copy X X1,
% we build the solution
Solution = {{ @exist lp:Ty lp:P lp:X1 _ }},
% we call the solver
coq.ltac.collect-goals Solution [G] [],
coq.ltac.open (x\y\coq.ltac.call-ltac1 "my_solver" x y ok) G [],
].
}}.
Goal {x : nat | x > 0}.
apply: 3.
Qed.
Definition add1 n : {x : nat | x > 0} :=
match n with
| O => 1
| S x as y => y
end.
Check 1.
LPCIC-coq-elpi-eb449d7/apps/coercion/theories/ 0000775 0000000 0000000 00000000000 15230417534 0021071 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/apps/coercion/theories/coercion.v 0000664 0000000 0000000 00000001350 15230417534 0023060 0 ustar 00root root 0000000 0000000 Declare ML Module "rocq-elpi.coercion".
From elpi Require Import elpi.
Elpi Db coercion.db lp:{{
% predicate [coercion Ctx V Inferred Expected Res] used to add new coercion, with
% - [Ctx] is the context
% - [V] is the value to be coerced
% - [Inferred] is the type of [V]
% - [Expected] is the type [V] should be coerced to
% - [Res] is the result (of type [Expected])
% Be careful not to trigger coercion as this may loop.
:index(_ _ 10 10)
pred coercion i:goal-ctx, i:term, i:term, i:term, o:term.
}}.
Elpi Tactic coercion.
Elpi Accumulate Db Header coercion.db.
Elpi Accumulate lp:{{
solve (goal Ctx _ Ty Sol [trm V, trm VTy]) _ :- coercion Ctx V VTy Ty Sol.
}}.
Elpi Accumulate Db coercion.db.
Elpi CoercionFallbackTactic coercion.
LPCIC-coq-elpi-eb449d7/apps/coercion/theories/dune 0000664 0000000 0000000 00000000211 15230417534 0021741 0 ustar 00root root 0000000 0000000 (coq.theory
(name elpi.apps.coercion)
(package rocq-elpi)
(theories elpi)
(plugins rocq-elpi.coercion))
(include_subdirs qualified)
LPCIC-coq-elpi-eb449d7/apps/cs/ 0000775 0000000 0000000 00000000000 15230417534 0016053 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/apps/cs/README.md 0000664 0000000 0000000 00000001726 15230417534 0017340 0 ustar 00root root 0000000 0000000 # Canonical solution
The `canonical_solution` app enables to program Coq canonical structure solutions in Elpi.
This app is experimental.
## The cs predicate
The `cs` predicate lives in the database `cs.db`
```elpi
% predicate [cs Ctx Lhs Rhs] used to unify Lhs with Rhs, with
% - [Ctx] is the context
% - [Lhs] and [Rhs] are the terms to unify
:index (0 6 6)
pred cs i:goal-ctx, o:term, o:term.
```
By addings rules for this predicate one can recover from a CS instance search failure
error, that is when `Lhs` and `Rhs` are not unifiable using a canonical structure registered
by Coq.
## Simple example of canonical solution
This example declares a structure `S` with a projection `sort` and declares
a canonical solution for `nat` in `S`.
```coq
From elpi.apps Require Import cs.
From Coq Require Import Bool.
Structure S : Type := mkS { sort :> Type }.
Elpi Accumulate cs.db lp:{{
cs _ {{ sort }} {{ nat }} {{ mkS nat }}.
}}.
Check eq_refl _ : (sort _) = nat.
```
LPCIC-coq-elpi-eb449d7/apps/cs/src/ 0000775 0000000 0000000 00000000000 15230417534 0016642 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/apps/cs/src/dune 0000664 0000000 0000000 00000000506 15230417534 0017521 0 ustar 00root root 0000000 0000000 (library
(name elpi_cs_plugin)
(public_name rocq-elpi.cs)
(flags :standard -w -27)
(preprocess (pps ppx_optcomp -- -cookie "ppx_optcomp.env=env ~coq:(Defined \"%{coq:version.major}.%{coq:version.minor}\")"))
(libraries rocq-runtime.plugins.ltac rocq-runtime.vernac rocq-elpi.elpi))
(coq.pp
(modules rocq_elpi_cs_hook))
LPCIC-coq-elpi-eb449d7/apps/cs/src/elpi_cs_plugin.mlpack 0000664 0000000 0000000 00000000022 15230417534 0023021 0 ustar 00root root 0000000 0000000 Rocq_elpi_cs_hook
LPCIC-coq-elpi-eb449d7/apps/cs/src/rocq_elpi_cs_hook.mlg 0000664 0000000 0000000 00000007112 15230417534 0023026 0 ustar 00root root 0000000 0000000 DECLARE PLUGIN "rocq-elpi.cs"
{
open Elpi
open Elpi_plugin
open Rocq_elpi_arg_syntax
open Rocq_elpi_vernacular
[%%if coq = "9.0" || coq = "9.1"]
let structure_projection_nparams env ind = Structures.Structure.projection_nparams ind
[%%else]
let structure_projection_nparams env ind = Structures.Structure.projection_nparams env ind
[%%endif]
let elpi_cs_hook program env sigma ((proji, u), params1, c1) (t2, args2) =
let atts = [] in
let rhs = Reductionops.Stack.zip sigma (t2, Reductionops.Stack.append_app_list args2 Reductionops.Stack.empty) in
let sigma, (goal_ty, _) = Evarutil.new_type_evar env sigma Evd.UnivRigid in
let sigma, goal = Evarutil.new_evar ~typeclass_candidate:false env sigma goal_ty in
let goal_evar, _ = EConstr.destEvar sigma goal in
let nparams = structure_projection_nparams env proji in
let query state =
let loc = Elpi.API.State.get Rocq_elpi_builtins_synterp.invocation_site_loc state in
let state, q, gls =
let lhs = match params1 with
| Some params1 -> EConstr.mkApp (EConstr.mkConstU (proji, u), Array.of_list params1)
| None -> EConstr.mkConstU (proji, u) in
Rocq_elpi_HOAS.solvegoals2query sigma [goal_evar] loc ~main:[lhs; rhs]
~in_elpi_tac_arg:Rocq_elpi_arg_HOAS.in_elpi_tac_econstr ~depth:0 ~base:() state in
let state, qatts = atts2impl loc Summary.Stage.Interp ~depth:0 state atts q in
let state = API.State.set Rocq_elpi_builtins.tactic_mode state true in
state, qatts, gls
in
let loc = Loc.initial Loc.ToplevelInput in
match Interp.get_and_compile ~loc program with
| None -> None
| Some (cprogram, _) ->
begin match Interp.run ~loc cprogram (Fun query) with
| API.Execute.Success solution ->
let gls = Evar.Set.singleton goal_evar in
let sigma, _, _ = Rocq_elpi_HOAS.solution2evd ~eta_contract_solution:false sigma solution gls in
if Evd.is_defined sigma goal_evar then
let constant = EConstr.to_constr sigma goal in
let args_goal, t = Reduction.whd_decompose_lambda env constant in
let args_type = List.rev_map Context.Rel.Declaration.get_type args_goal in
let args_type = List.map EConstr.of_constr args_type in
let args = snd (Constr.decompose_app_list t) in
let params, projs = CList.chop nparams args in
let i = Structures.Structure.projection_number env proji in
let lhs = List.nth projs i in
let lhs = EConstr.of_constr lhs in
let _, sk1 = EConstr.decompose_app sigma lhs in
let open Structures.CanonicalSolution in
Some (sigma, {
constant = EConstr.of_constr constant;
abstractions_ty = args_type;
body = lhs;
nparams;
params = List.map EConstr.of_constr params;
cvalue_abstraction = None;
cvalue_arguments = Array.to_list sk1})
else None
| API.Execute.NoMoreSteps
| API.Execute.Failure -> None
end
let add_cs_hook =
let cs_hook_program = Summary.ref ~name:"elpi-cs" None in
let cs_hook env sigma proj pat =
match !cs_hook_program with
| None -> None
| Some h -> elpi_cs_hook h env sigma proj pat in
let name = "elpi-cs" in
Evarconv.register_hook ~name cs_hook;
let inCs =
let cache program =
cs_hook_program := Some program;
Evarconv.activate_hook ~name in
let open Libobject in
declare_object
@@ superglobal_object_nodischarge "ELPI-CS" ~cache ~subst:None in
fun program -> Lib.add_leaf (inCs program)
}
VERNAC COMMAND EXTEND ElpiCS CLASSIFIED AS SIDEFF
| #[ atts = any_attribute ] [ "Elpi" "CS" qualified_name(p) ] -> {
let () = ignore_unknown_attributes atts in
add_cs_hook (snd p) }
END
LPCIC-coq-elpi-eb449d7/apps/cs/tests/ 0000775 0000000 0000000 00000000000 15230417534 0017215 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/apps/cs/tests/cs.t.disabled_broken_8.19/ 0000775 0000000 0000000 00000000000 15230417534 0023651 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/apps/cs/tests/cs.t.disabled_broken_8.19/run.t.disabled_broken_8.19 0000664 0000000 0000000 00000001253 15230417534 0030430 0 ustar 00root root 0000000 0000000 $ DEPS="elpi elpi.apps.cs"
$ . ../setup-project.sh
$ dune build test.vo
1
: nat
eq_refl : {| sort := id (A:=nat) |} = id (A:=nat)
: {| sort := id (A:=nat) |} = id (A:=nat)
11
: nat
eq_refl : {| sort := id (A:=nat) |} 1 = id 1
: {| sort := id (A:=nat) |} 1 = id 1
2
: nat
eq_refl : {| sort := id (A:=nat) |} = id1 nat
: {| sort := id (A:=nat) |} = id1 nat
3
: nat
eq_refl : sort1 nat {| sort := id (A:=nat) |} = id (A:=nat)
: sort1 nat {| sort := id (A:=nat) |} = id (A:=nat)
4
: nat
eq_refl : sort1 nat {| sort := id (A:=nat) |} = id1 nat
: sort1 nat {| sort := id (A:=nat) |} = id1 nat
LPCIC-coq-elpi-eb449d7/apps/cs/tests/cs.t.disabled_broken_8.19/test.v 0000664 0000000 0000000 00000001046 15230417534 0025020 0 ustar 00root root 0000000 0000000 From elpi.apps Require Import cs.
From Coq Require Import Bool.
Structure S (T : Type) : Type :=
{ sort :> T -> T }.
Elpi Accumulate canonical_solution lp:{{
cs _ {{ sort lp:T }} {{ @id lp:T }} {{ Build_S lp:T (@id lp:T) }}.
}}.
Check 1.
Check eq_refl _ : (sort nat _) = @id nat.
Check 11.
Check eq_refl _ : (sort nat _) 1 = @id nat 1.
Definition id1 := id.
Check 2.
Check eq_refl _ : (sort nat _) = @id1 nat.
Definition sort1 := sort.
Check 3.
Check eq_refl _ : (sort1 nat _) = @id nat.
Check 4.
Check eq_refl _ : (sort1 nat _) = @id1 nat.
LPCIC-coq-elpi-eb449d7/apps/cs/tests/dune 0000664 0000000 0000000 00000000163 15230417534 0020073 0 ustar 00root root 0000000 0000000 (cram
(applies_to :whole_subtree)
(deps
%{bin:coqc}
%{bin:coqdep}
(package rocq-elpi)
setup-project.sh))
LPCIC-coq-elpi-eb449d7/apps/cs/theories/ 0000775 0000000 0000000 00000000000 15230417534 0017675 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/apps/cs/theories/cs.v 0000664 0000000 0000000 00000001246 15230417534 0020474 0 ustar 00root root 0000000 0000000 Declare ML Module "rocq-elpi.cs".
From elpi Require Import elpi.
Elpi Db cs.db lp:{{
% predicate [cs Ctx Proj Rhs Sol] used to find Sol such that Proj Sol = Rhs, where
% - [Ctx] is the context
% - [Proj] is the projector of some structure, applied to the structure's parameters if any
% - [Rhs] the term to find a structure on.
:index (0 6 6)
pred cs i:goal-ctx, i:term, i:term, o:term.
}}.
Elpi Tactic canonical_solution.
Elpi Accumulate Db cs.db.
Elpi Accumulate canonical_solution lp:{{
solve (goal Ctx _ _Ty Sol [trm Proj, trm Rhs]) _ :-
cs Ctx Proj Rhs Sol,
% std.assert! (P = {{ eq_refl lp:Lhs }}) "cs: wrong solution".
true.
}}.
Elpi CS canonical_solution.
LPCIC-coq-elpi-eb449d7/apps/cs/theories/dune 0000664 0000000 0000000 00000000175 15230417534 0020556 0 ustar 00root root 0000000 0000000 (coq.theory
(name elpi.apps.cs)
(package rocq-elpi)
(theories elpi)
(plugins rocq-elpi.cs))
(include_subdirs qualified)
LPCIC-coq-elpi-eb449d7/apps/derive/ 0000775 0000000 0000000 00000000000 15230417534 0016724 5 ustar 00root root 0000000 0000000 LPCIC-coq-elpi-eb449d7/apps/derive/README.md 0000664 0000000 0000000 00000052260 15230417534 0020210 0 ustar 00root root 0000000 0000000 # Derive
The `derive` command automatically synthesizes a bunch of useful lemmas
given an inductive type declaration.
## In a nutshell
```coq
From elpi.apps Require Import derive.std.
#[module] derive Inductive peano := Zero | Succ (p : peano).
Print peano.peano.
(* Inductive peano : Set := Zero : peano | Succ : peano -> peano. *)
Eval compute in peano.eqb Zero (Succ Zero).
(* = false : bool *)
About peano.eqb_OK.
(*
peano.eqb_OK : forall x1 x2 : peano, reflect (x1 = x2) (peano.eqb x1 x2)
peano.eqb_OK is not universe polymorphic
Arguments peano.eqb_OK x1 x2
peano.eqb_OK is opaque
Expands to: Constant elpi.apps.derive.examples.readme.peano.eqb_OK
*)
```
See also [examples/usage.v](examples/usage.v) and [tests/test_readme.v](tests/test_readme.v).
:warning: The line `From elpi.apps Require Import derive.std.` sets globally
`Uniform Inductive Parameters`.
See the [documentation of that option in the Coq reference manual](https://coq.inria.fr/refman/language/core/inductive.html#coq:flag.Uniform-Inductive-Parameters).
## Usage and attributes
Using `derive Inductive ty := ...` produces the inductive `ty`, together with
derivations, all in the current scope. The `#[module=]` attribute can
be used to specify that the inductive and the derivations should be wrapped
in a module of the given name (the name of the inductive is used if no name
is specified).
When a wrapper module is generated, an alias (i.e., a notation) is generated
for the inductive to be accessible with its name, outside of the module scope.
This behaviour can be disabled by using the `#[no_alias]` boolean attribute.
The `#[prefix=]` attribute can be used to specify a prefix for all the
derived definitions/lemmas.
## Documentation
Elpi's `derive` app is a little framework to register derivations.
Currently there are 3 groups:
- `derive.std` contains well tested derivations including:
+ `eqb` and `eqbOK` generate sound boolean equality test in linear time/space, see
[Practical and sound equality tests, automatically](https://hal.inria.fr/hal-03800154)
+ `eqbOK` generates its soundness proof in linear time/space
+ `induction` generates deep induction principles, see
[Stronger Induction Principles for Containers](http://drops.dagstuhl.de/opus/volltexte/2019/11084/)
+ `param1` and `param2` generate the unary and binary parametricity translations
+ `map` map over a container
+ `param1_functor` functoriality lemmas (map over the param1 translation)
+ `lens` and `lens_laws` generate lenses focusing on record fields and some
equations governing setter/setters (aka record update syntax)
- `derive.legacy` contains derivations superseded by `std`:
+ `eq` and `eqOK` generate sound equality tests in quadratic time/space, see
[Deriving proved equality tests in Coq-elpi](http://drops.dagstuhl.de/opus/volltexte/2019/11084/)
- `derive.experimental` contains derivations not suitable for mainstream use:
+ `idx2inv` generates an inductive type where indexes are replaced by
non uniform parameters and equations
The `elpi/` directory contains the elpi files implementing various automatic
derivation of terms. The corresponding .v files, defining the Coq commands,
are in `theories/derive/`.
Single steps of the derivation are available as separate commands.
Only the main entry point `derive` comes with an handy syntax; the other
commands have to be invoked mentioning `Elpi` and only accept an already
declared inductive as input.
## Derivations
std (click to expand)
### `map`
Map a container over its parameters.
```coq
Elpi derive.map list.
Check list_map : forall A B, (A -> B) -> list A -> list B.
```
### `lens`
See also [theories/derive/lens.v](theories/derive/lens.v) for the `Lens` definition and the support constants `view`, `set` and `over`.
```coq
Record pa_record A := { f3 : peano; f4 : A; }.
Elpi derive.lens pa_record.
Check _f3 : forall A, Lens (pa_record A) (pa_record A) peano peano.
```
### `lens_laws`
See also [theories/derive/lens_laws.v](theories/derive/lens_laws.v) for the statements of the 4 laws (set_set, view_set, set_view, exchange).
```coq
Elpi derive.lens_laws pa_record.
Check _f3_view_set : forall A (r : pa_record A) x, view _f3 (set _f3 x r) = x.
```
### `param1`
Unary parametricity translation.
```coq
Elpi derive.param1 nat.
Print is_nat. (*
Inductive is_nat : nat -> Type :=
| is_O : is_nat 0
| is_S : forall n : nat, is_nat n -> is_nat (S n) *)
```
### `param2`
Binary parametricity translation.
Main command is `derive.param2`
```coq
Elpi derive.param2 nat.
Print nat_R. (*
Inductive nat_R : nat -> nat -> Set :=
| O_R : nat_R 0 0
| S_R : forall H H0 : nat, nat_R H H0 -> nat_R (S H) (S H0).
```
The command `derive.param2.register` can be used to register
handcrafted parametricity rules, so that they can be used by further
`derive.param2` commands.
```coq
Definition fa := 0.
Definition fb := fa.
Fail Elpi derive.param2 fb.
(* derive.param2: No binary parametricity translation for fa *)
Definition fa_R := O_R.
Elpi derive.param2.register fa fa_R.
Elpi derive.param2 fb.
```
### `param1_functor`
```coq
Elpi derive.param1.functor is_list.
Check is_list_functor : forall A PA QA,
(forall x, PA x -> QA x) -> forall l, is_list A PA l -> list A QA l.
```
### `param1_trivial`
```coq
Elpi derive.param1.trivial is_nat.
Check is_nat_trivial : forall x : nat, { p : is_nat x & forall q, p = q }.
Check is_nat_inhab : forall x : nat, is_nat x.
```
### `induction`
Induction principle for `T` based on `is_T`
```coq
Elpi derive.induction list.
Check list_induction :
forall (A : Type) (PA : A -> Type) P,
P (nil A) ->
(forall x : A, PA x -> forall xs, P xs -> P (cons A x xs)) ->
forall l, is_list A PA l -> P l.
```
### `tag`
The "name" of the constructor
```coq
Elpi derive.tag peano.
Check peano_tag : peano -> positive.
```
### `fields`
The types of the fields and the fields of each constructor
```coq
Elpi derive.fields peano.
Check peano_fields_t : positive -> Type.
Check peano_fields : forall (n:peano), peano_fields_t (peano_tag n).
Check peano_construct : forall (p: positive), peano_fields_t p -> Datatypes.option peano.
Check peano_constructP : forall (n:peano), peano_construct (peano_tag n) (peano_fields n) = Datatypes.Some n.
```
### `eqb`
Equality test
```coq
Elpi derive.eqb peano.
Check peano_eqb : peano -> peano -> bool.
```
### `eqbcorrect`
Two directions of the soundness proof
```coq
Elpi derive.eqbcorrect peano.
Check peano_eqb_correct : forall n m, peano_eqb n m = true -> n = m.
Check peano_eqb_refl : forall n, peano_eqb n n = true.
```
### `eqbOK`
The soundness proof
```coq
Elpi derive.eqbOK peano.
Check peano_eqb_OK : forall n m, reflect (n = m) (peano_eqb n m).
```
### `param1_congr`
Used by `param1_trivial`, not interesting.
```coq
Elpi derive.param1.congr is_nat.
Check is_Succ congr : forall x (px qx : is_nat x),
px = qx ->
is_Succ x px = is_Succ x qx.
```
legacy (click to expand)
See [Deriving proved equality tests in Coq-elpi: Stronger Induction Principles for
Containers](http://drops.dagstuhl.de/opus/volltexte/2019/11084/) for a
description of most of these components.
### `isK`
Given an inductive type it generates for each constructor a function that
tests if a term is a specific constructor.
Example:
```coq
Elpi derive.isK list.
Print list_is_nil. (*
list_is_nil =
fun (A : Type) (i : list A) =>
match i with
| nil => true
| _ => false
end
*)
```
### `projK`
Given an inductive type it generates for each constructor `K` and argument
`i` of this constructor a function extracting that argument (provided enough
default values).
```coq
Elpi derive.projK Vector.t.
Check projcons1. (*
projcons1
: forall (A : Type) (H : nat),
A -> forall n : nat, Vector.t A n ->
Vector.t A H -> A
```
The intended use is to perform injection, i.e. one already has a term of the
shape `K args` and can just use these args to provide the default values.
If the projected argument's type depends on the value of other arguments, then it
is boxed using `existT`.
```coq
Check projcons3. (*
projcons3
: forall (A : Type) (H : nat),
A -> forall n : nat, Vector.t A n ->
Vector.t A H -> {i1 : nat & Vector.t A i1}
*)
```
### injection
`injection H EqAB PL` given an equation `H` of type `EqAB` returns a list
of equations `PL`. `EqAB` is expected to be of the form `K .. = K ..` for
a constructor `K`.
coverage: does not do the smart thing when the obtained equations are like `{ i : nat & Vector.t A i } = ...` in which case, given that `nat` is `eqType` one could obtain systematically the two equalities.
Note: this is not a real derivation, since it generates no constant, but it a piece of
code used by derivations.
### discriminate
`discriminate H EqAB G PG` given an equation `H` of type `EqAB` and
a goal `G` it provides a proof `PG`. It asserts that `EqAB` is of
the form `K1 .. = K2 ..` when `K1` is a constructor different from `K2`.
Note: this is not a real derivation, since it generates no constant, but it a piece of
code used by derivations.
### `bcongr`
We call a boolean congruence lemma an instance of the `reflect` predicate
on a proposition `K x1..xn = K y1..yn` and a boolean expression `b1 && .. bn`.
```coq
Elpi derive.bcongr list.
Check nil_congr : forall A, reflect (@nil A = @nil A) true.
Check cons_congr :
forall A,
forall (x y : A) b1, reflect (x = y) b1 ->
forall (xs ys : list A) b2, reflect (xs = ys) b2 ->
reflect (cons x xs = cons y ys) (b1 && b2).
```
### `eq`
Generates a boolean comparison function.
```coq
Elpi derive.eq list.
Check list_eq. (*
list_eq
: forall A : Type,
(A -> A -> bool) -> list A -> list A -> bool
*)
```
### `eqK`
Generates, for each constructor, the correctness lemma for the comparison
function.
```coq
Elpi derive.eqK list.
Check eq_axiom_nil : forall A fa, axiom (list A) (list_eq A fa) (@nil A).
Check eq_axiom_cons : forall A fa,
forall x, axiom A fa x ->
forall xs, axiom (list A) (list_eq A fa) xs ->
axiom (list A) (list_eq A fa) (cons x xs).
```
### `eqcorrect`
Correctness of equality test using reified type information.
```coq
Elpi derive.eqcorrect list.
Check list_eq_correct :
forall A f l, is_list A (eq_axiom A f) l -> eq_axiom (list A) (list_eq A f) l.
```
### `eqOK`
Correctness of equality test.
```coq
Elpi derive.eqOK list.
Check list_eq_OK :
forall A f, (forall a, axiom A f a) -> (forall l, eq_axiom (list A) (list_eq A f) l).
```
## Coverage
This is the list of inductive types we use for testing, and the table with the result of each derivation (:sunny: = OK, :bug: = does not work but might, :cloud: = looks like this can't possible work)
```coq
Inductive empty := .
Inductive unit := tt.
Inductive peano := Zero | Succ (n : peano).
Inductive option A := None | Some (_ : A).
Inductive pair A B := Comma (a : A) (b : B).
Inductive seq A := Nil | Cons (x : A) (xs : seq A).
Inductive rose (A : Type) := Leaf | Node (sib : seq (rose A)).
Inductive nest A := NilN | ConsN (x : A) (xs : nest (pair A A)).
Fail Inductive bush A := BNil | BCons (x : A) (xs : bush (bush A)).
Inductive w A := via (f : A -> w A).
Inductive vect A : peano -> Type := VNil : vect A Zero | VCons (x : A) n (xs : vect A n) : vect A (Succ n).
Inductive dyn := box (T : Type) (t : T).
Inductive zeta Sender (Receiver := Sender) := Envelope (a : Sender) (ReplyTo := a) (c : Receiver).
Inductive beta (A : (fun x : Type => x) Type) := Redex (a : (fun x : Type => x) A).
Inductive iota := Why n (a : match n in peano return Type with Zero => peano | Succ _ => unit end).
Inductive large := K1 (_ : unit) | K2 (_ : unit) (_ : unit) | ...
Inductive prim_int := PI (i : Int63.int).
Inductive prim_float := PF (f : PrimFloat.float).
Record fo_record := { f1 : peano; f2 : unit; }.
Record pa_record A := { f3 : peano; f4 : A; }.
Record pr_record A := { pf3 : peano; pf4 : A; }. (* with primitive projections *)
Record dep_record := { f5 : peano; f6 : vect unit f5; }.
Variant enum := E1 | E2 | E3.
```
test | eq | param1 | map | induction | isK | projK | bcongr | eqK | eqcorrect | eqOK | lens_laws
-----------|---------|---------|---------|-----------|---------|---------|---------|---------|-----------|---------|----------
empty | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :cloud:
unit | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :cloud:
peano | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :cloud:
option | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :cloud:
pair | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :cloud:
seq | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :cloud:
rose | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :cloud:
nest | :cloud: | :sunny: | :cloud: | :sunny: | :sunny: | :sunny: | :sunny: | :bug: | :bug: | :bug: | :cloud:
w | :cloud: | :sunny: | :bug: | :sunny: | :sunny: | :sunny: | :sunny: | :bug: | :bug: | :bug: | :cloud:
vect | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :bug: | :bug: | :bug: | :bug: | :cloud:
dyn | :cloud: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :bug: | :bug: | :bug: | :bug: | :cloud:
zeta | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :cloud:
beta | :sunny: | :sunny: | :bug: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :bug: | :sunny: | :cloud:
iota | :cloud: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :cloud: | :bug: | :cloud: | :cloud: | :cloud:
large | :sunny: | :sunny: | :bug: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :cloud:
prim_int | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :cloud:
prim_float | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :cloud: | :cloud: | :cloud:
fo_record | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny:
pa_record | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny:
pr_record | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny:
dep_record | :bug: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :bug: | :bug: | :bug: | :bug: | :cloud:
enum | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :sunny: | :cloud:
test | functor | inhab | congr | trivial |
----------|---------|---------|-----------|---------|
is_empty | :sunny: | :sunny: | :sunny: | :sunny: |
is_unit | :sunny: | :sunny: | :sunny: | :sunny: |
is_peano | :sunny: | :sunny: | :sunny: | :sunny: |
is_option | :sunny: | :sunny: | :sunny: | :sunny: |
is_pair | :sunny: | :sunny: | :sunny: | :sunny: |
is_seq | :sunny: | :sunny: | :sunny: | :sunny: |
is_rose | :sunny: | :sunny: | :sunny: | :sunny: |
is_nest | :bug: | :bug: | :cloud: | :cloud: |
is_w | :bug: | :sunny: | :sunny: | :bug: |
is_vect | :sunny: | :bug: | :cloud: | :bug: |
is_dyn | :sunny: | :cloud: | :cloud: | :bug: |
is_zeta | :sunny: | :sunny: | :sunny: | :sunny: |
is_beta | :sunny: | :sunny: | :sunny: | :sunny: |
is_iota | :sunny: | :bug: | :cloud: | :bug: |
is_large | :sunny: | :sunny: | :bug: | :bug: |
is_prim_int | :sunny: | :sunny: | :sunny: | :sunny: |
is_is_prim_float| :sunny: | :sunny: | :sunny: | :sunny: |
is_fo_record | :sunny: | :sunny: | :sunny: | :sunny: |
is_pa_record | :sunny: | :sunny: | :sunny: | :sunny: |
is_pr_record | :sunny: | :sunny: | :sunny: | :sunny: |
is_dep_record| :sunny: | :bug: | :sunny: | :bug: |
is_enum | :sunny: | :sunny: | :sunny: | :sunny: |
experimental (click to expand)
### `invert`
```coq
Inductive is_list A PA : list A -> Type :=
| nilR : is_list (@nil A)
| consR : forall a : A, PA a ->
forall xs : list A, is_list xs -> is_list (cons a xs).
Elpi derive.invert is_list.
Print is_list_inv. (*
Inductive is_list_inv (A : Type) (PA : A -> Type) (idx0 : list A) : Type :=
| nilR_inv : idx0 = nil -> is_list_inv A PA idx0
| consR_inv : forall a : A, PA a ->
forall xs : list A, is_list_inv A PA xs ->
idx0 = (cons a xs) ->
is_list_inv A PA idx0.
*)
```
## `idx2inv`
```coq
Elpi derive.idx2inv is_list.
Check is_list_to_is_list_inv :
forall A PA l, is_list A PA l -> is_list_inv A PA l.
```
## Writing a new derivation
A derivation is made of:
- a file implementing the derivation
- a data base to carry some state
- a stand alone command
- a hook in the main derive procedure
At the light of that, here a typical derivation file `myder.v`.
The first section
loads the standard derive code and declares the dependency the external file
`myder.elpi`. The file `derive_hook.elpi` contains a few data types needed
in order to register the derivation in the main derive loop.
```coq
From elpi.apps.derive Extra Dependency "derive_hook.elpi" as derive_hook.
From mypkg Extra Dependency "myder.elpi" as myder.
From elpi Require Import elpi.
From elpi.apps Require Import derive.
```
The database is typically a predicate `myder` linking a type name to some
concept previously derived. We also need to know if we did already derive a
type, hence we declare a second predicate `myder-done` (we could reuse the
former, but sometimes this is not easy, so here we are pedantic).
We like to prefix these data bases name with `derive.`.
```coq
Elpi Db derive.mydb.db lp:{{
% [myder T D] links a type T to a derived concept D
pred myder o:gref, o:gref.
% [myder-done T] mean T was already derived
pred myder-done o:gref.
}}.
```
Then we build a standalone derivation accessible via the name `derive.myder`
which accumulates the external files declared before, the data base and
an entry point
```coq
Elpi Command derive.myder.
Elpi Accumulate File derive_hook.
Elpi Accumulate File myder.
Elpi Accumulate Db derive.mydb.db.
Elpi Accumulate lp:{{
main [str I] :- !, coq.locate I GR,
coq.gref->id GR Tname,
Prefix is Tname ^ "_",
derive.myder.main GR Prefix _.
main _ :- usage.
pred usage.
usage :- coq.error "Usage: derive.myder