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 3CBE17FE36 for ; Mon, 11 Jul 2016 08:15:41 +0200 (CEST) IronPort-PHdr: 9a23:qajHehbMl42O5kllJEWaEE3/LSx+4OfEezUN459isYplN5qZpcmzbnLW6fgltlLVR4KTs6sC0LuO9fu8EjZeu96oizMrSNR0TRgLiMEbzUQLIfWuLgnFFsPsdDEwB89YVVVorDmROElRH9viNRWJ+iXhpQAbFhi3DwdpPOO9QteU1JXvkbvusMeNOU1hv3mUWftKNhK4rAHc5IE9oLBJDeIP8CbPuWZCYO9MxGlldhq5lhf44dqsrtY4q3wD86Fpy8kVfqjgc+wDUbtcFDEvNWZ9sMztux7rQgaV6j4HTmISih9BBQ6D4BysDbnrtS6vk+NnxCicdeH7aL0wXTPqu6JiUgPpjisKMjM99Gb/hcl5jaYdqxWk8U8si7XIaZ2YYaItNpjWeskXEDJM Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=martindemello@gmail.com; spf=Pass smtp.mailfrom=martindemello@gmail.com; spf=None smtp.helo=postmaster@mail-oi0-f50.google.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of martindemello@gmail.com) identity=pra; client-ip=209.85.218.50; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="martindemello@gmail.com"; x-sender="martindemello@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of martindemello@gmail.com designates 209.85.218.50 as permitted sender) identity=mailfrom; client-ip=209.85.218.50; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="martindemello@gmail.com"; x-sender="martindemello@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-oi0-f50.google.com) identity=helo; client-ip=209.85.218.50; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="martindemello@gmail.com"; x-sender="postmaster@mail-oi0-f50.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0DnAAC/OINXfzLaVdFchBR8BoVEqBSGNIUEgXoahCOBWwKBHgc6EgEBAQEBAQEBEQEBCQsLCR8xgjIVghYBBAESER0BGx0BAwELBgUEBwM0AgIiAREBBQEcBhMbB4dzAQMPCKIxgTE+MYs7gWqCWgWFHAoZJw1Sg0IBAQEBAQUBAQEBAQEBGAIGEIYXhE2HQoJaBY56ih6MP4ITjyyOUBIegQ8lAoI2HIFsHDKIcAEBAQ X-IPAS-Result: A0DnAAC/OINXfzLaVdFchBR8BoVEqBSGNIUEgXoahCOBWwKBHgc6EgEBAQEBAQEBEQEBCQsLCR8xgjIVghYBBAESER0BGx0BAwELBgUEBwM0AgIiAREBBQEcBhMbB4dzAQMPCKIxgTE+MYs7gWqCWgWFHAoZJw1Sg0IBAQEBAQUBAQEBAQEBGAIGEIYXhE2HQoJaBY56ih6MP4ITjyyOUBIegQ8lAoI2HIFsHDKIcAEBAQ X-IronPort-AV: E=Sophos;i="5.28,345,1464645600"; d="scan'208,217";a="184455127" Received: from mail-oi0-f50.google.com ([209.85.218.50]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 11 Jul 2016 08:15:39 +0200 Received: by mail-oi0-f50.google.com with SMTP id r2so134222542oih.2 for ; Sun, 10 Jul 2016 23:15:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=vPq0TRLzOK2xPiPmb386Pmf02qAyaf+/0qrbwbm8/bA=; b=pzBQMXr+/MK2p0HOblaztQ90Uj+LD/Qn0ol6qgCgHigjLcjff4Bk85dsd5jemD2QU6 c7kMYXblrd+/T3SP29aJ4Wk4k0XCz/aW+c12SuMOh+jP3uvKTCgPcA/nvHLCOc+LQsX4 mtncMyaSI07jhQXz2XmpMMRyvrHjMSTL0/31eGHi9I59bn6ljfYVIbopFnNMx0AtTWl9 iZ2oMSheoZiM2Nto8u2naQGPCgMSgHaFtvWoxYK7JxYltZmt1Kid0kc+Xmeus/hW/zve 82ZCxJQWvxvia5c3y3zawoFCnKR+CM0ZnETTRjXZtznRE29cfMDq8/88JcIoIDQEA4j8 XYOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=vPq0TRLzOK2xPiPmb386Pmf02qAyaf+/0qrbwbm8/bA=; b=gljPH2Jj2UjRtNdeJvK+riSQGn4sKlfTcE+C8S4YQ/oOZNPYrga38D4hEZM+swYlFW JvaP0wR+PX0nOshKeZ39dADEhaNp+NmjjYNgJwfQ5wlUFe2TyalpiFHCc8ca584m+1J5 TUZWOaBmIBglmbq2vEH1Z4zwntwdkFpRfc14wCS+EspwxdOgRewprWy+yERCcZKBRkWS wnsdJ7/X3RtwGINlgHYwXtcwvbQubrHBXiO8vZ+POuAA4EzYrTtUMZxS8j87InqK10CV 6fZAz39YXr7pNoAh4YBAMsZaV+F1Hz8U8raCwE5xbLp5X2Jz2fsz2GFPUdFSpMGyg2gZ VKHw== X-Gm-Message-State: ALyK8tJaGANvF9kn1wipryd3MZtD/sIFyDthM7X15ic616O+sXswnJ5Qsu7bh1F2HnFT4h8HpVr5JN9+H37C+g== X-Received: by 10.202.80.76 with SMTP id e73mr9158852oib.170.1468217738417; Sun, 10 Jul 2016 23:15:38 -0700 (PDT) MIME-Version: 1.0 Received: by 10.202.214.88 with HTTP; Sun, 10 Jul 2016 23:15:37 -0700 (PDT) In-Reply-To: <1468148606.25014.58.camel@e130.lan.sumadev.de> References: <1468148606.25014.58.camel@e130.lan.sumadev.de> From: Martin DeMello Date: Sun, 10 Jul 2016 23:15:37 -0700 Message-ID: To: Gerd Stolpmann Cc: "caml-list@inria.fr" Content-Type: multipart/alternative; boundary=001a113d6a0ac05e5705375614eb Subject: Re: [Caml-list] why is building ocaml hard? --001a113d6a0ac05e5705375614eb Content-Type: text/plain; charset=UTF-8 On Sun, Jul 10, 2016 at 4:03 AM, Gerd Stolpmann wrote: > So how to fix this? In my opinion there are two solutions. You can > either have a more intelligent ocamldep (e.g. one that reads in > non-local cmi files and uses that information and also tries to > interpret all project ml files at once and not file by file - btw, did > anybody check whether there is an algorithm that precisely solves the > problem?). The other solution path is to mark toplevel modules in the > syntax of OCaml (e.g. you'd have to do "open ^M2" is M2 is a toplevel > module). > Would an acceptable third option be to simply record the dag explicitly in your build file? Working with google's build system [opensourced as bazel: http://www.bazel.io/] has given me a great appreciation for simply writing out build dependencies manually; sure, it is relatively tedious to have to write out the graph yourself rather than have ocamldep figure it out, but the time and effort to do so is a small fraction of the overall development time of your project, and the reward is a 100% reliable "detection" of the build topology. martin --001a113d6a0ac05e5705375614eb Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On S= un, Jul 10, 2016 at 4:03 AM, Gerd Stolpmann <info@gerd-stolpmann.de= > wrote:
So how to fix this? In my opinio= n there are two solutions. You can
either have a more intelligent ocamldep (e.g. one that reads in
non-local cmi files and uses that information and also tries to
interpret all project ml files at once and not file by file - btw, did
anybody check whether there is an algorithm that precisely solves the
problem?). The other solution path is to mark toplevel modules in the
syntax of OCaml (e.g. you'd have to do "open ^M2" is M2 is a = toplevel
module).

Would an acceptable third opti= on be to simply record the dag explicitly in your build file? Working with = google's build system [opensourced as bazel:=C2=A0http://www.bazel.io/] has given me a great appreciation for= simply writing out build dependencies manually; sure, it is relatively ted= ious to have to write out the graph yourself rather than have ocamldep figu= re it out, but the time and effort to do so is a small fraction of the over= all development time of your project, and the reward is a 100% reliable &qu= ot;detection" of the build topology.

martin= =C2=A0
--001a113d6a0ac05e5705375614eb--