From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 973EE7EE99 for ; Thu, 12 Dec 2013 22:47:30 +0100 (CET) Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of anthony.tavener@gmail.com) identity=pra; client-ip=74.125.83.49; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="anthony.tavener@gmail.com"; x-sender="anthony.tavener@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of anthony.tavener@gmail.com designates 74.125.83.49 as permitted sender) identity=mailfrom; client-ip=74.125.83.49; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="anthony.tavener@gmail.com"; x-sender="anthony.tavener@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-ee0-f49.google.com) identity=helo; client-ip=74.125.83.49; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="anthony.tavener@gmail.com"; x-sender="postmaster@mail-ee0-f49.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AhIEADUuqlJKfVMxlGdsb2JhbABZg0JVsAeJZggWDgEBAQEHCwsJEiqCbAEbEgwDEgkHXQERAQUBIogCAQMRo3mDBoxagwmEXAoZJw1khiYRAQUMk0QEiUOOUoEwiyyDSxgphHUc X-IPAS-Result: AhIEADUuqlJKfVMxlGdsb2JhbABZg0JVsAeJZggWDgEBAQEHCwsJEiqCbAEbEgwDEgkHXQERAQUBIogCAQMRo3mDBoxagwmEXAoZJw1khiYRAQUMk0QEiUOOUoEwiyyDSxgphHUc X-IronPort-AV: E=Sophos;i="4.95,474,1384297200"; d="scan'208";a="40781076" Received: from mail-ee0-f49.google.com ([74.125.83.49]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 12 Dec 2013 22:47:29 +0100 Received: by mail-ee0-f49.google.com with SMTP id c41so512292eek.8 for ; Thu, 12 Dec 2013 13:47:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=KA2nk/z2QAqu28yFfBVyu2hiYHLzADBnHCsj8xM/LPE=; b=C2TpEBxPd1afP7NSqRSnBBDDU+e1XSS9jnsurvr+APGpIK43303onIjv3vaC1HQNYk njVahH90zCsZNi8fYZsF4+ql46RBSk7vFDxAJnbyODJeEAh/5qCCwdOvRARmkIO4aduQ NnK4Ip1xi/92ryDnMheLxCT8I73Vp/LZgHb5189jo7mvf+qsgm35emU3sbdeH4FKNb/4 auaaTtfSKm467MaaIFiqO2ZeY5z+66TcOLaoZmaWQSWDkRzxFCnMB0NAX/UoFt1AkV6u m3WUqYAVQJ0BlsravJnElN6Wc53WsN+KuRvEz13OCRUIdmJxlZbyfDbCr7x15upPmpUj dTUw== MIME-Version: 1.0 X-Received: by 10.15.67.142 with SMTP id u14mr10121729eex.59.1386884849562; Thu, 12 Dec 2013 13:47:29 -0800 (PST) Received: by 10.15.90.202 with HTTP; Thu, 12 Dec 2013 13:47:29 -0800 (PST) Date: Thu, 12 Dec 2013 14:47:29 -0700 Message-ID: From: Anthony Tavener To: "caml-list@inria.fr" Content-Type: multipart/alternative; boundary=089e0160ce3acd795104ed5d4a8e Subject: [Caml-list] A way to avoid "WARNING: myocamlbuild.cmi occurs in several directories"? --089e0160ce3acd795104ed5d4a8e Content-Type: text/plain; charset=ISO-8859-1 (Or a better structure to my build process?) I've recently switched to OPAM and ocamlfind (from manual management and makefiles). I have some libraries which undergo frequent changes -- as frequent as application code. For these, I don't "install" after every change; instead I refer to the _build directory. ocaml_lib ~extern:true ~dir:"/home/anthony/src/gui/_build" "gui"; Now that I'm using ocamlfind (with ocamlbuild) these _build directories are included in a more general sense... causing multiple myocamlbuild.cmi's to be seen -- resulting in "findlib: [WARNING] Interface myocamlbuild.cmi occurs in several directories" Does someone know a way to avoid the inclusion of these spurious myocamlbuild.cmi's, or to suppress the warning, or have another suggestion? The obvious thing is adding an install step which dumps the interesting library files in a local lib dir. But then I'd have two kinds of install: a "package" install (using ocamlfind, and OPAM-friendly), and this immediate-use local install. Yuck, I say. Ultimately what I strive for is install-less build, and build dependency on local library changes. For example: (unit : dependencies) App1 : Lib2 Lib3 App2 : Lib1 Lib2 Lib1 : - Lib2 : - Lib3 : Lib1 <~/Lib1> touch lib1file.ml <~/App1> make Build Lib2 Build Lib1 Build Lib3 Build App1 No "install", as these are all in flux. The libraries are just like the app-code but shared. Like they used to be before the world of package management. ;) I'm sure others must still do this for internal development too? Or does everyone work with libraries as explicitly built and separately installed units? (Note: I do have some slowly-evolving libraries which I install as packages via OPAM.) To rephrase: Am I doing it all wrong? :D I haven't figured out how to get ocamlbuild to handle library dependency like this yet. The tools, or at least the examples of how to use them, seem very geared toward usage of infrequently-changed packages. So any tips on an example of using ocamlbuild in this manner would be great too! I'm always hesitant to pester the mailing list, but it generally follows days of frustration on my part, and I don't know any other OCaml people, so thank-you! -Tony --089e0160ce3acd795104ed5d4a8e Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
(Or a better structure to my build process?)

I've recently switched to OPAM and ocamlfind (from= manual management and makefiles).

I have some lib= raries which undergo frequent changes -- as frequent as application code. F= or these, I don't "install" after every change; instead I ref= er to the _build directory.

=A0 ocaml_lib ~extern:true ~dir:"/home/anthony/src= /gui/_build" "gui";

Now that I'= m using ocamlfind (with ocamlbuild) these _build directories are included i= n a more general sense... causing multiple myocamlbuild.cmi's to be see= n -- resulting in "findlib: [WARNING] Interface myocamlbuild.cmi occur= s in several directories"

Does someone know a way to avoid the inclusion of these= spurious myocamlbuild.cmi's, or to suppress the warning, or have anoth= er suggestion?

The obvious thing is adding an inst= all step which dumps the interesting library files in a local lib dir. But = then I'd have two kinds of install: a "package" install (usin= g ocamlfind, and OPAM-friendly), and this immediate-use local install. Yuck= , I say.


Ultimately what I strive for is install-= less build, and build dependency on local library changes. For example:

(unit : dependencies)
=A0App1 : Lib2 Lib3
=A0App2 : Lib1 Lib2
=A0Lib1 : -
=A0Lib2 : -
<= div>=A0Lib3 : Lib1

<~/Lib1> touch lib1file.ml
<~/App1> make
=A0 Build Lib2
=A0 Build Lib1
=A0 Build Lib3
=A0 Build App1
=

No "install", as these are all in flux. The l= ibraries are just like the app-code but shared. Like they used to be before= the world of package management. ;) I'm sure others must still do this= for internal development too? Or does everyone work with libraries as expl= icitly built and separately installed units? (Note: I do have some slowly-e= volving libraries which I install as packages via OPAM.)

To rephrase: Am I doing it all wrong? :D

I haven't figured out how to get ocamlbuild to h= andle library dependency like this yet. The tools, or at least the examples= of how to use them, seem very geared toward usage of infrequently-changed = packages. So any tips on an example of using ocamlbuild in this manner woul= d be great too!

I'm always hesitant to pester the mailing lis= t, but it generally follows days of frustration on my part, and I don't= know any other OCaml people, so thank-you!

=A0-Tony

--089e0160ce3acd795104ed5d4a8e--