Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] _CoqProject

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] _CoqProject


Chronological Thread 
  • From: Jeremy Dawson <Jeremy.Dawson AT anu.edu.au>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] _CoqProject
  • Date: Tue, 28 Apr 2020 23:17:06 +1000
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=anu.edu.au; dmarc=pass action=none header.from=anu.edu.au; dkim=pass header.d=anu.edu.au; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4+BP0BYPfCBbrVI/XkPFHKjFZNshmsoziYHOXFYieXs=; b=SejOe5cMnOVAnSK3dDiMOqq4fWYH+w3UTEVrE1BAZ0MdhKr+BB3q7YqwQD263IVg4ybWwaOdEZL7bNq4sXbYv/FnaFSG8LMQToMXIeX6IwsRTaBMRCThDzVwpfIAmhC0PZW0JlNGZQvPNTXIiXxpLYPhkmhgYLZO08sRn9AXK0Ih0TIGO1XRN1kMDfYN2wUFdObQhQlbb8ptBy8W9lxHsS/xF3miZdVlUQcUytX1OYvJ5LZXfOfmDM5MlZ7koGMOD7vx/Rqe5JqoICO13hSd9C9G6SUR/O5d1BrKNse65HFrEvNlxnDGWD1U0t/ERWhn9CSCd2McruqXsXjPzOqHSg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HPQO2IoX5/ShFQcOGpV00rlSGNpamNE8upFrn5HduHXUdGaoRpEF7+oBOfzc00wXMppRNbH63EpTA7NB1TwYKbIAmzu98e+m8h4mGSRgqp+1NAgL/levl2DBkw8hTMBB46GJx2LMkivutEh3buA6HYi+Y42bk1nIQkX8dLxzDmD02kjRzyS8UUa2wAvTguVzihPULiXXxDSpDyWkJU4NL7oZRhPo59SSqkkavew3E+wPIuGubCtWSqiy9TLkWp2PsNw1BnTEOZov/kViT1b25VpLhcvyH3gtVdq9gIId8wHJwXK3ctTwh2b+syslI2FwRWHoc6q6coMm9+Bd9FZQWA==
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=Jeremy.Dawson AT anu.edu.au; spf=Pass smtp.mailfrom=Jeremy.Dawson AT anu.edu.au; spf=Pass smtp.helo=postmaster AT AUS01-ME1-obe.outbound.protection.outlook.com
  • Ironport-phdr: 9a23:9dXDRhe/k3+9NAsaSm21vO6VlGMj4u6mDksu8pMizoh2WeGdxcS6Zx7h7PlgxGXEQZ/co6odzbaP7ua+ACdeud6oizMrSNR0TRgLiMEbzUQLIfWuLgnFFsPsdDEwB89YVVVorDmROElRH9viNRWJ+iXhpTEdFQ/iOgVrO+/7BpDdj9it1+C15pbffxhEiCCybL9vLBi6twTcutQZjYZjNqo61wfErGZPd+lK321jOEidnwz75se+/Z5j9zpftvc8/MNeUqv0Yro1Q6VAADspL2466svrtQLeTQSU/XsTTn8WkhtTDAfb6hzxQ4r8vTH7tup53ymaINH2QLUpUjms86tnVBnlgzoBOjUk8m/Yl9ZwgbpGrhy/qRxxw43abo+bO/V8YqzTctwVRWtaU8ZNVCFMGJ+wY5cBAucDO+tTsonzp0EJrRu7HQSiAP3gyiVWiX/z3awxzuovHhvI3Qw7GNIOtmnfodLxOqgMS+C60qzIzDXZY/1Ywzj85pPIchcnofyXR71wd9fRxVMxGAzYk1Wcs5bqPy6M2+kLrmOV7PJgWPqghmI7sQ19vySjy8U2hoXUiI8Yy0rI+CF3zYotKtC1TFR3bcOnHZdMrS2XNYV7Ttk/T212pCo3zKANt4ShcygQ0psnwgbSa/yZfIiM5RLuTPqcLjllin55Zb6znhG8/0e9xuHlUcm7y0hFojBCktnRqnACzBvT6tWBSvRg5EuhwSyP1wfP6u5aPU80iavbK5knwrIqkZoTrFjDHivxmEXxj6+abFkr+u+t6+j/Y7XmoIGTN5NshwzxLqgigNGzDfg6PwQUQmSW9+Wx2Kfn8ED3WLlKi+c5kqjdsJDUP8Qboau5DhdR3Ik98RawETKm0dQCkXcJNl1EdgmHj4/vO1zVOv/4C+q/j06ynzh22vDKJKfuAojVInjZjLjhZap961JbyAcr0d9f4ItUBqgdL/L3R0/+r8fVDgQ5Mgyx2+boEs9x1oIYWWKVA6+WKrnesVGS5rFnH+7Zb4gM/T35NvIN5vj0jHZ/l0VOU7Ou2M41ZWq1G+UuD0yGen3qyoMjHH0Huxt4YOX1k1qEeTdVejC/U7967yxtW9HuNpvKWo342O/J5yy8BJADPjkaWGDJKm/hcsC/Y9lJcDibe5UzmzoZE7WtVskoyEP27V6o+/9cNuPRvxYgm9fm3dlx6ffUkEhopzVyEoKQ33zLRnwmxzpVFQ9z57h2pAlG8nnG0aV8hKAHR/Vu3KsQFyIXbNvbxeE8DM3uUAXceNvPUEyhXtitHTA2SJQ23sMKZEF+Xd6li0Ka0g==

Hi Christian,

Thanks - I'm not sure what you mean by "the setup you describe is fine" because nothing I've described so far has worked.

Anyhow, I've tried your suggestion: I assume "-R/-Q" means choose either "-R" or "-Q" (without assuming this, coq_makefile produces errors).

Then coq_makefile seems to work OK but then "make" produces the following

lots of warnings of which I show the last
*** Warning: in file modal/k4.v, library lntacsT is required and has not been found in the loadpath!
COQC lnt/tense-logic-in-Coq/cut_extraction_test.v

Error: Invalid character '-' at beginning of identifier "-Q".

make[1]: *** [Makefile:657: lnt/tense-logic-in-Coq/cut_extraction_test.vo] Error 1
make: *** [Makefile:318: all] Error 2

Cheers,

Jeremy



On 28/4/20 7:17 pm, Christian Doczkal wrote:
I think the use of "library" in the Coq context is slightly ambiguous.
It can refer to a single file (as with Locate Library) or to a
collection of (compiled) files sharing a common namespace. I say
compiled here, because the namespace is fixed during compilation.

Libraries that are set up to be used by others usually fix a namespace
identifier in their Makefile and the install target then installs the
library (i.e., all the compiled files) to ../coq-contrib/<namespace>.
From there they can be used via "From <namespace> Require Import <lib>.

In the context where you are touching files from several libraries
(folders in this context) and you're not installing anything globally,
the setup you describe is fine. (I actually used a setup similar to what
you describe, simply ignoring the warnings)

However, it may be cleaner to use a centralized build infrastructure
residing in the shared top-level directory. You could try starting with
a _CoqProject file containing someting along the lines of

INSTALLDEFAULTROOT = mylib #silence no common root warning
-R/-Q lnt/tense-logic-in-Coq
-R/-Q gen
-R/-Q modal

plus the output of

$ ls -1 lnt/tense-logic-in-Coq/*.v gen/*.v modal/*.v

One advantage is that this allows make to track dependencies across the
various folders and compile (in parallel) only what is necessary.

(coq_makefile -h also lists an "-install none" option, but the generated
Makefile in my tests still had an install target on coq-8.11.1 ...)

Best,
Christian


On 4/28/20 8:08 AM, Jeremy Dawson wrote:
Hi Pierre,

Thanks.  I'm not sure what "library" means in the Coq context (and it's
not in the documentation index).  Locate Library seems to work for a
single filename (without the v) but I'm guessing that's not what you mean.

Anyway, there are 3 directories containing Coq source files, called
lnt/tense-logic-in-Coq, gen and modal

The one I'm most commonly making changes in, and whose Coq files depend
on the other two, is modal.

Can the _CoqProject file mechanism can handle this situation?  It sounds
from what you say that it can't.

Where you say the Int directory I assume you mean lnt but going there
and typing make does nothing because it does not contain a makefile.

In lnt/tense-logic-in-Coq there is a Makefile but it was not produced by
coq_makefile.  It works nicely for compiling all the Coq files in that
directory.  It doesn't have a target "install"

Likewise the directory gen does not have a makefile (yet).

Cheers,

Jeremy


On 28/4/20 1:31 am, Pierre Courtieu wrote:
I suppose that Int, gen, and the current directory are actually 3
different coq libraries. If this is not the case you need to tell us a
bit more. If this is the case then they should not share the same
_CoqProject file.

1) Go inside Int directory and type make, if it went well, then do
"make install".
3) do the same in directory gen

now coq knows about Int and gen without any -Q option. Write your
_CoqProject by mentioning only your files. By default "make install"
copies .vo files into <coq_directory>/user-contrib/<libdirectoryname>,
which is searched by coq by default.

Hope this helps,
Pierre

Le lun. 27 avr. 2020 à 16:50, Jeremy Dawson
<Jeremy.Dawson AT anu.edu.au
<mailto:Jeremy.Dawson AT anu.edu.au>>
a écrit :

    Sorry, I don't understand what you are getting at.  What do you
mean by
    make *and make install* tense-logic-in-Coq
    ie what do I type and in what directory?
    What is "make install" meant to do?

    Thanks

    Jeremy


    On 4/28/20 12:01 AM, Pierre Courtieu wrote:
     > Hi
     >
     > These warnings mean that your current configuration does not
    allow to do
     > "make install" due to the lack of a main root directory.
    coq_makefile
     > does not support to install several libraries at once. However I
    think
     > you should be able to built your project without problems.
     >
     > That said if you make *and make install* tense-logic-in-Coq you
    could
     > just remove it completely from you _CoqProject file, use it in
your
     > development and have a working "make install".
     >
     > Hope this helps,
     > P
     >
     >
     > Le lun. 27 avr. 2020 à 13:39, Jeremy Dawson
   
<Jeremy.Dawson AT anu.edu.au

<mailto:Jeremy.Dawson AT anu.edu.au>
     >
<mailto:Jeremy.Dawson AT anu.edu.au
   
<mailto:Jeremy.Dawson AT anu.edu.au>>>
a écrit :
     >
     >     Hi,
     >
     >     Thanks - but this won't work because it would mean changing
    dd_fc.v
     >     and all the files in that directory, which is part of other
    people's
     >     work as well
     >
     >     So I tried some alternatives like
     >     -Q ../lnt/tense-logic-in-Coq/
     >     or
     >     -Q ../lnt/tense-logic-in-Coq/ .
     >
     >     All of these, including your suggested
     >     -Q ../lnt/tense-logic-in-Coq/ TL
     >
     >     gave a bunch or warnings, eg
     >
     >     -Q ../lnt/tense-logic-in-Coq/ TL
     >     gives
     >     Warning: ../lnt/tense-logic-in-Coq/ (used in -R or -Q) is
not a
     >     subdirectory of the current directory
     >
     >     Warning: no common logical root
     >     Warning: in such case INSTALLDEFAULTROOT must be defined
     >     Warning: the install-doc target is going to install files
     >     Warning: in orphan_TL_Top
     >
     >     I don't understand any of these, except the first (and I
    don't know
     >     what
     >     I should do about that), and I can't find any explanation of
    these in
     >     the documentation.
     >
     >     What do they all mean?
     >
     >     Thanks
     >
     >     Jeremy
     >
     >
     >     On 27/4/20 12:26 am, Gaëtan Gilbert wrote:
     >      > Indeed -I is for ocaml files (for plugins)
     >      >
     >      > Gaëtan Gilbert
     >      >
     >      > On 26/04/2020 16:23, Dan Frumin wrote:
     >      >> Hi Jeremy,
     >      >>
     >      >> I don't know why -I doesn't work, but I think using -Q
    does the
     >     trick
     >      >> (at least with my version of Coq): I replaced
     >      >>
     >      >>      -I ../lnt/tense-logic-in-Coq/
     >      >>
     >      >> with
     >      >>      -Q ../lnt/tense-logic-in-Coq/ TL
     >      >>
     >      >> and then in dd_fc.v used `Require Import TL.genT`
     >      >>
     >      >>
     >      >>
     >      >> Best,
     >      >> Dan
     >      >>
     >      >>
     >      >> On 26-04-2020 16:09, Jeremy Dawson wrote:
     >      >>>
     >      >>> Hi,
     >      >>>
     >      >>> I've constructed a _CoqProject file as follows
     >      >>>
     >      >>> -I ../lnt/tense-logic-in-Coq/
     >      >>> -I ../gen/
     >      >>> ../lnt/tense-logic-in-Coq/gen.v
     >      >>> ../lnt/tense-logic-in-Coq/genT.v
     >      >>> ../lnt/tense-logic-in-Coq/List_lemmasT.v
     >      >>> ../lnt/tense-logic-in-Coq/lntT.v
     >      >>> ../lnt/tense-logic-in-Coq/swappedT.v
     >      >>> ../lnt/tense-logic-in-Coq/ddT.v
     >      >>> ../lnt/tense-logic-in-Coq/dd_fc.v
     >      >>> ../lnt/tense-logic-in-Coq/lntacsT.v
     >      >>> ../gen/rtcT.v
     >      >>> ../gen/gstep.v
     >      >>> ../gen/gentree.v
     >      >>> gen_ext.v
     >      >>> k4.v
     >      >>> k4_exch.v
     >      >>> k4_inv.v
     >      >>> k4_ctr.v
     >      >>> k4_ca.v
     >      >>>
     >      >>> I then run
     >      >>>   make -f Makefile
     >      >>> and get the following messages
     >      >>> COQC ../lnt/tense-logic-in-Coq/dd_fc.v
     >      >>> File "../lnt/tense-logic-in-Coq/dd_fc.v", line 12,
    characters
     >     15-19:
     >      >>> Error: Unable to locate library genT.
     >      >>>
     >      >>> (in fact the file
     >      >>> ../lnt/tense-logic-in-Coq/genT.v
     >      >>> exists)
     >      >>>
     >      >>> What do I need to put in the _CoqProject file to make
    this work?
     >      >>>
     >      >>> Thanks
     >      >>>
     >      >>> Jeremy
     >




Archive powered by MHonArc 2.6.18.

Top of Page