[llvm] r230812 - Discourage in-source autoconf builds (as we already do for the cmake build)
Eric Christopher
echristo at gmail.com
Wed Mar 25 13:11:41 PDT 2015
On Tue, Mar 24, 2015 at 11:31 PM Nick Lewycky <nicholas at mxc.ca> wrote:
> Eric Christopher wrote:
> >
> >
> > On Tue, Mar 10, 2015 at 9:39 AM Jonathan Roelofs
> > <jonathan at codesourcery.com <mailto:jonathan at codesourcery.com>> wrote:
> >
> >
> >
> > On 2/28/15 11:01 PM, Nick Lewycky wrote:
> > > Eric Christopher wrote:
> > >>
> > >>
> > >> On Sat, Feb 28, 2015 at 11:45 AM Nick Lewycky <nicholas at mxc.ca
> > <mailto:nicholas at mxc.ca>
> > >> <mailto:nicholas at mxc.ca <mailto:nicholas at mxc.ca>>> wrote:
> > >>
> > >> Jonathan Roelofs wrote:
> > >> > Author: jroelofs
> > >> > Date: Fri Feb 27 17:35:47 2015
> > >> > New Revision: 230812
> > >> >
> > >> > URL: http://llvm.org/viewvc/llvm- project?rev=230812&view=rev
> > >> <http://llvm.org/viewvc/llvm- project?rev=230812&view=rev
> > <http://llvm.org/viewvc/llvm-project?rev=230812&view=rev>>
> > >> > Log:
> > >> > Discourage in-source autoconf builds (as we already do for the
> > >> cmake build)
> > >>
> > >> I have reverted this patch. Please explain yourselves.
> > >>
> > >>
> > >> Pretty rude way of putting it but sure.
> > >
> > > Hey, sorry. I was upset, and neither of you deserved that sort of
> > tone.
> > > I'm truly sorry, and thank you for taking the time to write an
> > > explanation in spite of my poor attitude!
> > Sorry about my end of this too. I had assumed there was consensus on
> > this from discussing it on #llvm. I probably should have mailed the
> list
> > first explaining what I had intended to do.
> > >
> > >> Best practices.
> > >>
> > >> https://www.sourceware.org/ autobook/autobook/autobook_14.
> > html#SEC14
> > <https://www.sourceware.org/autobook/autobook/autobook_14.html#SEC14
> >
> > >>
> > >> In general you want to keep your source directory pristine
> > (readonly)
> > >> and configuring inside the source directory is fraught with
> > problems.
> > +1
> >
> > This is a small step toward allowing the source dir to be kept
> readonly
> > during builds.
> > >
> > > Got it.
> > >
> > > If it matters, I've been using this configuration for a long
> > time, and I
> > > haven't seen any glitch for years, though I do remember a time
> > when that
> > > wasn't true. I understand why it risks continuing problems.
> > >
> > > The two main things I get from in-tree builds are that I can grep
> > > through the source including the generated source,
> > This one you can work around (somewhat) by doing a
> > subdirectory-of-source build, i.e.:
> >
> > $ svn co http://llvm.org/svn/llvm- project/llvm/trunk
> > <http://llvm.org/svn/llvm-project/llvm/trunk> llvm
> > $ mkdir -p llvm/build && cd llvm/build
> > $ ../configure [options]
> >
> > > and that I can rename
> > > the directory trees. Out of tree builds bake in a directory name.
> > Doesn't this just mean that renames have to happen in two steps (i.e.
> > rename the src version of the dir, then rename the build version of
> the
> > dir)? Or is there something fundamentally different here that I'm
> > missing?
> > > I can
> > > try this again and see whether it's still a problem, or if there's
> > > something we can fix here.
> > >
> > >> This also ensures that the occasional report I get of someone
> > not being
> > >> able to do a make distclean in the source directory will go
> > away. I will
> > >> also take a working make distclean if you'd like to do that
> instead
> > >> (though, obviously, I'd prefer the current patch).
> > >
> > > Reducing support burden is a perfectly reasonable reason. As
> > someone who
> > > uses this configuration, I find that I very rarely run make clean
> and
> > > don't think I've tried make distclean. I would not be surprised
> > to learn
> > > that I've accidentally learned to avoid the things that don't
> work.
> > >
> > > As you've probably already surmised, I'm not super interested in
> > writing
> > > a patch that fixes "make distclean". :) Which I guess means that
> > you can
> > :) Especially with the whole "autotools is going away once we have
> > feature parity with the cmake build" push.
> > > ignore me and un-revert? I do have one review comment though,
> please
> > > change the error message from "discouraged" to "are no longer
> > > supported". In part, I was confused by the combination of the term
> > > discouragement (in the error message and in the commit log) with
> > a hard
> > > error.
> > Sorry about that... how about "In-source builds are not allowed.
> Please
> > configure from a separate build directory."? This would better match
> the
> > message printed by the cmake build in this situation.
> >
> >
> > This works for me. Nick?
>
> That text is fine with me. I was thinking, there's three things we
> should do for this deprecation.
>
> We should make sure the documentation never shows an objdir==srcdir
> build. I just spent a while looking at this, and it looks like this is
> essentially done already. A couple places show "./configure".
> -
> http://llvm.org/docs/FAQ.html#the-configure-script-finds-
> the-right-c-compiler-but-it-uses-the-llvm-tools-from-a-
> previous-build-what-do-i-do
> - http://llvm.org/docs/HowToBuildOnARM.html (the second time)
> Special mention to http://llvm.org/docs/GoldPlugin.html which does show
> "./configure" but for building your autotooled project not for building
> llvm. (I also found http://llvm.org/docs/TestSuiteMakefileGuide.html
> which doesn't seem to have any links pointing to it, and still describes
> building and installing llvm-gcc ... yet it shows an objdir != srcdir
> build!)
>
> Second, if possible, it'd be nice to have some instructions for how to
> migrate from an in-tree build to an out of tree build. Realistically the
> answer may turn out to be "svn diff > tmp.patch", but I thought I'd ask
> in case you think this is doable.
>
> $ mv llvm-commit llvm-commit-src
> $ mkdir llvm-commit
> $ cd llvm-commit
> $ mv ../llvm-commit-src/ src
> $ mkdir build
> $ cd build
> $ ../src/configure
> configure: error: Already configured in ../src
>
> $ cd ../src/
> $ make distclean
> Makefile:151: /home/nicholas/llvm-commit/Makefile.rules: No such file or
> directory
> make: *** No rule to make target
> '/home/nicholas/llvm-commit/Makefile.rules'. Stop.
>
> Though honestly I think if I'm going to go through the effort to switch
> to out of tree builds, I'm going to switch to CMake while I'm at it.
>
> Finally, it'd be nice to let people know in advance on that this is
> going to be actively broken, just in case I'm not actually the last
> person using this configuration. I don't think it needs anything as
> large as the C++11 transition, just a post to llvm-dev and wait for
> feedback (screams) no longer than a week?
>
>
SGTM. Jonathan?
-eric
> Nick
>
> >
> > -eric
> >
> >
> > Cheers,
> >
> > Jon
> > >
> > > Nick
> > >
> > >>
> > >> -eric
> > >>
> > >>
> > >> >
> > >> > http://reviews.llvm.org/D7961
> > >> >
> > >> > Modified:
> > >> > llvm/trunk/autoconf/configure. ac <http://configure.ac>
> > >> > llvm/trunk/configure
> > >> >
> > >> > Modified: llvm/trunk/autoconf/configure. ac <
> http://configure.ac>
> > >> > URL: http://llvm.org/viewvc/llvm- project/llvm/trunk/autoconf/
> > >> configure.ac?rev=230812&r1= <http://configure.ac?rev=230812&r1=>
> > 230811&r2=230812&view=diff
> > >>
> > >> <http://llvm.org/viewvc/llvm- project/llvm/trunk/autoconf/
> > configure.ac?rev=230812&r1= 230811&r2=230812&view=diff
> > <http://llvm.org/viewvc/llvm-project/llvm/trunk/autoconf/
> configure.ac?rev=230812&r1=230811&r2=230812&view=diff>>
> > >>
> > >> > ============================== ==============================
> > >> ==================
> > >> > --- llvm/trunk/autoconf/configure. ac <http://configure.ac>
> > >> (original)
> > >> > +++ llvm/trunk/autoconf/configure. ac <http://configure.ac>
> Fri
> > >> Feb 27 17:35:47 2015
> > >> > @@ -73,6 +73,11 @@ if test ${srcdir} != "." ; then
> > >> > fi
> > >> > fi
> > >> >
> > >> > +dnl Quit if it is an in-source build
> > >> > +if test ${srcdir} == "." ; then
> > >> > + AC_MSG_ERROR([In-source builds are discouraged. Configure
> from
> > >> a separate build directory.])
> > >> > +fi
> > >> > +
> > >> > dnl Default to empty (i.e. assigning the null string to)
> CFLAGS
> > >> and CXXFLAGS,
> > >> > dnl instead of the autoconf default (for example, '-g -O2'
> for
> > >> CC=gcc).
> > >> > : ${CFLAGS=}
> > >> >
> > >> > Modified: llvm/trunk/configure
> > >> > URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/configure?
> > >> rev=230812&r1=230811&r2= 230812&view=diff
> > >>
> > >> <http://llvm.org/viewvc/llvm- project/llvm/trunk/configure?
> > rev=230812&r1=230811&r2= 230812&view=diff
> > <http://llvm.org/viewvc/llvm-project/llvm/trunk/configure?
> rev=230812&r1=230811&r2=230812&view=diff>>
> > >>
> > >> > ============================== ==============================
> > >> ==================
> > >> > --- llvm/trunk/configure (original)
> > >> > +++ llvm/trunk/configure Fri Feb 27 17:35:47 2015
> > >> > @@ -1999,6 +1999,12 @@ echo "$as_me: error: Already configured
> > >> > fi
> > >> > fi
> > >> >
> > >> > +if test ${srcdir} == "." ; then
> > >> > + { { echo "$as_me:$LINENO: error: In-source builds are
> > >> discouraged. Configure from a separate build directory.">&5
> > >> > +echo "$as_me: error: In-source builds are discouraged.
> Configure
> > >> from a separate build directory.">&2;}
> > >> > + { (exit 1); exit 1; }; }
> > >> > +fi
> > >> > +
> > >> > : ${CFLAGS=}
> > >> > : ${CXXFLAGS=}
> > >> >
> > >> >
> > >> >
> > >> > ______________________________ _________________
> > >> > llvm-commits mailing list
> > >> > llvm-commits at cs.uiuc.edu <mailto:llvm-commits at cs.uiuc.edu>
> > <mailto:llvm-commits at cs.uiuc. edu <mailto:llvm-commits at cs.uiuc.edu>>
> > >> > http://lists.cs.uiuc.edu/ mailman/listinfo/llvm-commits
> > >> <http://lists.cs.uiuc.edu/ mailman/listinfo/llvm-commits
> > <http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits>>
> > >> >
> > >>
> > >
> >
> > --
> > Jon Roelofs
> > jonathan at codesourcery.com <mailto:jonathan at codesourcery.com>
> > CodeSourcery / Mentor Embedded
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150325/0943c82d/attachment.html>
More information about the llvm-commits
mailing list