Return-Path: Delivered-To: apmail-couchdb-dev-archive@www.apache.org Received: (qmail 14429 invoked from network); 4 Nov 2010 04:49:15 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 4 Nov 2010 04:49:15 -0000 Received: (qmail 5139 invoked by uid 500); 4 Nov 2010 04:49:46 -0000 Delivered-To: apmail-couchdb-dev-archive@couchdb.apache.org Received: (qmail 5040 invoked by uid 500); 4 Nov 2010 04:49:46 -0000 Mailing-List: contact dev-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list dev@couchdb.apache.org Received: (qmail 5025 invoked by uid 99); 4 Nov 2010 04:49:46 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 04 Nov 2010 04:49:45 +0000 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received: from [140.211.11.9] (HELO minotaur.apache.org) (140.211.11.9) by apache.org (qpsmtpd/0.29) with SMTP; Thu, 04 Nov 2010 04:49:43 +0000 Received: (qmail 14371 invoked by uid 99); 4 Nov 2010 04:48:50 -0000 Received: from localhost.apache.org (HELO [192.168.0.5]) (127.0.0.1) (smtp-auth username nslater, mechanism plain) by minotaur.apache.org (qpsmtpd/0.29) with ESMTP; Thu, 04 Nov 2010 04:48:50 +0000 Subject: Re: CouchDB OTP Mime-Version: 1.0 (Apple Message framework v1081) Content-Type: text/plain; charset=us-ascii From: Noah Slater In-Reply-To: X-Noah: Awesome Date: Thu, 4 Nov 2010 04:49:17 +0000 Content-Transfer-Encoding: quoted-printable Message-Id: References: <791E5E22-088B-424C-83BF-506FECA8D9F3@apache.org> <5653D2A8-0656-4D1B-87D7-D6185E6E2015@apache.org> To: dev@couchdb.apache.org X-Mailer: Apple Mail (2.1081) X-Virus-Checked: Checked by ClamAV on apache.org On 4 Nov 2010, at 04:41, Paul Davis wrote: > The issue with configure.ac is that it is a pre-distribution method > for configuring a build system. As in, if we claim some functionality > for Erlang builds via configure.ac, then we're tacitly making the > claim that we'll have multiple distributions, a "rebar distribution" > and a "erlc distribution". Its not unfathomable to me that we just say > "tarballs will use erlc" which is not out of the question, but it > still seems weird. Nu, uh... `./configure` is run during every local install. What I described is possible for every single individual user. > The other issue is that I do realize that we can leverage ./configure > to (for lack of alternate verb) configure the build. The issue with > rebar and VPATH builds is that reading the docs and source code, I > could not see any method to tell rebar "your source files are in this > place, place your output in this other place." As I read rebar's > source, its output paths are absolutely defined by the input file > name. I'm guessing that Noah is incredulous by this claim, but I will > remind him that rebar is awesome precisely because of this sort of > prejudice, its just not VPATH aware. So, it's output files are in predictable locations? Sounds like a good opportunity for post-hoc installation logic. :) Either way, I see it like this: - Before build time we can control what rebar sees. - After build time, we can modify and move files as we want. What more could you possibly ask for? Except for the problem to go away entirely, of course. :) > Also, writable source trees. I know Noah knows this, but people that > aren't familiar with VPATH often get tripped up on this. The key thing > that made this click for me was to imagine expanding a tarball, > writing the source code to a CD, and then building and installing from > that CD without copying source files. Good catch, I forget to mention a lot of this stuff. :) > I think that's the right sentiment, but slightly not quite right I > think. The analogy I would use would be more like, "Reconciling Erlang > builds with Autotools builds is like trying to translate poetry from > Turkish to Navajo." Actually, I think it should be perfectly surmountable. The key will be = in separating the Erlang build from the main build. Think of it like = compiling a C app. You wouldn't have the compiler try to move the files = into location, or handle the installation of the /etc/config/file. So, = just treat rebar, or whatever, as the compilation step for an OTP app = (even though the result is a directory tree, a bit like NeXT really) and = use Autotools to plop that into the right location on the filesystem.=