Zulip Chat Archive

Stream: general

Topic: keep going

Floris van Doorn (Aug 29 2020 at 22:34):

Back in ye olden days of Lean 2, there was an option to build Lean with the option -k N or --keep-going N. This would build Lean, and if there were N different files that raised at least one error, then the build would stop.

I think a feature like this would be really useful for the Github Actions. Currently my workflow is

  • Push a probably-broken commit to mathlib
  • Wait for Github actions to raise an error
  • Run leanproject get-cache and fix all errors in the file where the error was raised.
  • Go to step 1.

This workflow would speed-up quite a bit if Github actions showed the next 5-10 files with at least one error. The compilation after errors often still runs fine: usually it's a broken proof, and that raises 0 future errors (it might raise warnings of the form imported a file containing 'sorry'). If a definition/instance breaks, there will probably be many unrelated errors.

Would it be possible / desirable to do this?

Reid Barton (Aug 29 2020 at 22:35):

Maybe a more targeted version of this would be to only stop the build on an error in the main task?

Floris van Doorn (Aug 29 2020 at 22:35):

Here is a commit that mentions the original --keep-going: https://github.com/leanprover-community/lean/commit/cfa9cd116cdb02668135fbb890e9d8d1ad962137

Floris van Doorn (Aug 29 2020 at 22:36):

What do you mean by the main task?

Reid Barton (Aug 29 2020 at 22:37):

The one that processes definitions, statements (but not proofs) of lemmas, other user commands

Reid Barton (Aug 29 2020 at 22:37):

Another idea would be to try to not build a module that imports another module that had an error outside a proof

Reid Barton (Aug 29 2020 at 22:37):

but continue to build the other parts of the import graph

Reid Barton (Aug 29 2020 at 22:38):


Floris van Doorn (Aug 29 2020 at 22:40):

Oh yeah, something like that would be nice too

Reid Barton (Aug 29 2020 at 22:41):

here's make's --keep-going flag:

       -k, --keep-going
            Continue as much as possible after an error.  While the target that failed, and those that depend on it, cannot  be  re‐
            made, the other dependencies of these targets can be processed all the same.

Last updated: Dec 20 2023 at 11:08 UTC