Skip to Content.
Sympa Menu

coq-club - [Coq-Club] incremental vio2vo

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

[Coq-Club] incremental vio2vo


Chronological Thread 
  • From: Ralf Jung <jung AT mpi-sws.org>
  • To: coq-club AT inria.fr
  • Subject: [Coq-Club] incremental vio2vo
  • Date: Fri, 6 Jan 2017 21:19:10 +0100
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=jung AT mpi-sws.org; spf=Pass smtp.mailfrom=jung AT mpi-sws.org; spf=None smtp.helo=postmaster AT hera.mpi-klsb.mpg.de
  • Ironport-phdr: 9a23:d/9X+xPTV36WhDBwczAl6mtUPXoX/o7sNwtQ0KIMzox0Lf7yrarrMEGX3/hxlliBBdydsKMYzbCP+Pm7AiQp2tWoiDg6aptCVhsI2409vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7Ovr6GpLIj8Swyuu+54Dfbx9GiTe5br5+Ngu6oRjeusULj4ZvJLs6xwfUrHdPZ+lY335jK0iJnxb76Mew/Zpj/DpVtvk86cNOUrj0crohQ7BAAzsoL2465MvwtRneVgSP/WcTUn8XkhVTHQfI6gzxU4rrvSv7sup93zSaPdHzQLspVzmu87tnRRn1gygAKzM0/mPah8JpgK5Hrx+quhhzzo7IbI2QMvd1Y6HTcs4ARWdZQMhfVzFPDICyYYQBAOUOIelWopLhp1YMtxayGRWgCe3txzJOm3T43bc60+MkEQzewAIvBdYOsHrJp9vxKacSV++1x7TPwDXBcvNW3zj95ZPNchA5oPGARKlwcMTKyUU1EAPFlFqQpJXjMjiI2OoNtG2b4PBhVeKpk2Mnrhlxojm2ysc3hIjJnZgZylfe9SV2xos+ON62SFZjbNK5HpZdszuWO5ZyT884Xm1koik3x7kAtJWmZiYF0o4nyATaa/Gfc4iH/BbjVOGJLDd4mn1lYqiwiwy38Ui4y+3wT8q00FJRriVeiNXMs2gN1xPJ5seaVPRx5kah2TCR2ADP8uxIPE45mK7BJ5I8xrM8jIcfvV7MEyLygEn2ibWZdkQg+uim8eTnZbDmq4eeN49pjAH+Pb8jmsmnAeQ5KwQORGaa+f+m2L3k5035T61GjucqnanBrJDaOcMbq7alDA9Sy4Yv8gqwDzO70NsDhnQHN1JEeBefj4fzIV3OIfb4De2+g1u2ijtryerGbfXdBcDGKWGGm7P8d5587VRdwUw914Nx/ZVRX4sIJPy7eFL3u5SMDAI/PCSx2+eiE8pmkIQEVjTcUeeiLKrOvArQtaoUKO6WadpI4Ds=

Hi all,

Would it make any sense to have "incremental" vio2vo? What I mean by
this is that it should only check and generate those vo files that
actually need updating. Currently, if I want to check that my entire
development compiles by doing "make quick -j4 ; make vio2vo J=4", it
will always re-check all the proofs. That's rather silly, and a
significant drawback compared to plain "make -j4".

To demonstrate what I mean, I implemented incremental vio2vo via
Makefile hackery, see
<https://gitlab.mpi-sws.org/FP/iris-coq/blob/master/Makefile#L27> and
<https://gitlab.mpi-sws.org/FP/iris-coq/blob/master/awk.Makefile>. When
patched, the vio2vo target in the Makefile.coq looks as follows:

> vio2vo:
> @make -j $(J) quick
> @VIOFILES=$$(for file in $(VOFILES:%.vo=%.vio); do if [ "$$(echo
> "$$file" | sed "s/\.vio/.vo/")" -ot "$$file" ]; then echo -n "$$file "; fi;
> done); \
> echo "VIO2VO: $$VIOFILES"; \
> if [ -n "$$VIOFILES" ]; then $(COQC) $(COQDEBUG) $(COQFLAGS)
> -schedule-vio2vo $(J) $$VIOFILES; fi

Instead of passing all the vio files to schedue-vio2vo, this first
filters the list to only keep files where the vo file is older than the
vio file. (It also turns out Coq doesn't like an empty list of vio
files, so this needs a special case.) Furthermore, I was tired of typing
"make quick && make vio2vo", so I made vio2vo also call quick with the
appropriate number of parallel jobs. (Currently this will misbehave if J
is not set, but oh well.)

Now I just do "make vio2vo J=4", and the entire development is checked
incrementally. If PG already checked and compiled some files (with the
"make quick + vio2vo in background" mode), those will also be used
instead of being overwritten.

However, I don't know very much about the internals of the vio2vo
machinery, so I'm not entirely sure if this approach even makes sense.
Can this cause trouble by mixing vo files from different "runs" of
vio2vo? Is there any good reason "make vio2vo" is *not* incremental?

Kind regards,
Ralf



Archive powered by MHonArc 2.6.18.

Top of Page