caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Gabriel Scherer <gabriel.scherer@gmail.com>
To: Magnus Therning <magnus@therning.org>
Cc: Anil Madhavapeddy <anil@recoil.org>,
	OCaml List <caml-list@yquem.inria.fr>,
	 Sylvain Le Gall <sylvain@le-gall.net>
Subject: Re: [Caml-list] oasis building out-of-src and camlp4
Date: Wed, 23 Sep 2015 11:19:57 +0200	[thread overview]
Message-ID: <CAPFanBFY_k9Gz9pQe6o8EPYNxs9uR2wz+nM2eb+QWVJzDgr_vA@mail.gmail.com> (raw)
In-Reply-To: <20150923085405.GG22004@sobel.cipherstone.com>

> Indeed, the goal is to not contaminate the source directory *at all*.

You could, in the "external build" command passed to CMake, wrap the
build invocation with code to create the symlinks before the build,
and remove them after the build.

That said, If I understand oasis' philosophy correctly (but I'm far
from an expert), the file that are generated by the oasis setup are
not to be understood as "generated files never to be looked at", but
rather *source* files that you may want to modify and customize
yourself, and just contain some snippets produced by oasis. I would
understand this as a kind of "we created the basic boilerplate
structure of your project for you", rather than "those are hidden
files only used during the build". In particular, you may be expected
to include these files in your version-control repository (something I
have been a bit reluctant to do myself; I think that the newish
"dynamic" setup mode of oasis avoids versioning any cruft).

(That said, many users never have to touch the oasis-generated files.)

> Since the steps work on "simple"
> code, but doesn't on code using `camlp4` I'm leaning towards calling
> this a bug.

I'll let oasis developers triage this issue, but it is not as clear as
you describe. It's not that this oasis setup works in simple cases and
breaks in other, but rather than oasis does not support this setup at
all, yet sometimes ocamlbuild can do what it needs without any help
whatsoever.


One other option would be to enhance ocamlbuild to support the
scenario where the build-description files it needs (_tags and
myocamlbuild.ml) are located outside the source repository, which is a
reasonable assumption if we assume they have been generated rather
than user-written (your situation). We could add a (-config-dir $DIR)
option for that, or separate options (-plugin-source /path/to/foo.ml)
and (-tag-file /path/to/_tags). It strikes me as a bit odd to have a
_tags file in another directory, that contains glob patterns relative
to the source directory (in your case the _tags file will refer to
<src/...>). But I like the idea and created a feature request to track
it:
  http://caml.inria.fr/mantis/view.php?id=6997
But if you go this route, it means that you would have to wait for the
next ocamlbuild release, so an oasis-level solution or workaround
would currently be more helpful for you.

On Wed, Sep 23, 2015 at 10:54 AM, Magnus Therning <magnus@therning.org> wrote:
> On Wed, Sep 23, 2015 at 10:38:31AM +0200, Gabriel Scherer wrote:
>> Thanks for the reproducible information. I just tried and could
>> reproduce the issue.
>>
>> The problem comes from the fact that, with the command-line invocation
>> you use oasis generates the build description files (_tags,
>> myocamlbuild.ml, setup.data) in the build directory, not in the source
>> directory, but ocamlbuild when invoked (from the source directory)
>> will look for them in the source directory. In particular, I could
>> "fix" the build by doing
>
> Indeed, the goal is to not contaminate the source directory *at all*.
>
>>   ...
>>   ocaml setup.ml -C $PWD/../oasis-camlp4 -configure
>>   for f in {myocamlbuild.ml,_tags,setup.data}; do ln -s $PWD/$f
>> ../oasis-camlp4; done
>>   ocaml setup.ml -C $PWD/../oasis-camlp4 -build -build-dir $PWD/build
>>
>> It looks like oasis's behavior with "-C $DIR -configure" is
>> problematic: it should generate its files in $DIR -- except maybe
>> setup.ml, or then people would have to run (ocaml $DIR/setup.ml -C
>> $DIR ...).
>
> I've been playing around a bit with the various combinations of where I
> run `ocaml <path>/setup.ml` and `-C`. Since the steps work on "simple"
> code, but doesn't on code using `camlp4` I'm leaning towards calling
> this a bug.
>
>> TL;DR: this appear to be an oasis issue, rather than a issue with
>> CMake or ocamlbuild.
>
> Yes, I'm guessing it's an issue in the code generated by `oasis` and how
> it uses `ocamlbuild` and other build tools.
>
> /M
>
> --
> Magnus Therning                      OpenPGP: 0xAB4DFBA4
> email: magnus@therning.org   jabber: magnus@therning.org
> twitter: magthe               http://therning.org/magnus
>
> The man who is denied the opportunity of taking decisions of
> importance begins to regard as important the decisions he is allowed
> to take.
>      -- C Northcote Parkinson

  reply	other threads:[~2015-09-23  9:20 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-22 21:12 Magnus Therning
2015-09-23  7:48 ` Anil Madhavapeddy
2015-09-23  8:19   ` Magnus Therning
2015-09-23  8:38     ` Gabriel Scherer
2015-09-23  8:54       ` Magnus Therning
2015-09-23  9:19         ` Gabriel Scherer [this message]
2015-09-23  9:44           ` Magnus Therning
2015-09-29 22:59             ` Sylvain Le Gall
2015-09-30 11:49               ` Magnus Therning
2015-10-01  6:46                 ` Sylvain Le Gall
2015-10-01  7:23                   ` Magnus Therning
2015-10-02  9:32                     ` Sylvain Le Gall
2015-10-02  9:38                       ` Magnus Therning
2015-09-23  7:56 ` Anil Madhavapeddy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAPFanBFY_k9Gz9pQe6o8EPYNxs9uR2wz+nM2eb+QWVJzDgr_vA@mail.gmail.com \
    --to=gabriel.scherer@gmail.com \
    --cc=anil@recoil.org \
    --cc=caml-list@yquem.inria.fr \
    --cc=magnus@therning.org \
    --cc=sylvain@le-gall.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).