Building sources twice

Joe Orton jorton at redhat.com
Tue Jan 19 14:47:54 UTC 2010


On Mon, Jan 18, 2010 at 11:10:34PM -0500, Toshio Kuratomi wrote:
> We have a few packages that need to build themselves from their sources
> twice.  For instance, vim builds three times (a minimal version for /bin/vi,
> and two versions with more dependencies for /usr/bin/vim and
> /usr/bin/gvim).  Working on the python3 Guidelines, it looks like we'll have
> some more with packages that build both python2 and python3 modules from
> source that undergoes an automated transformation as part of its build.
> 
> So there's approaches to doing this:
> 
> 1) Copy the source tree and build in both places
> 2) Build once with the python2 interpreter, copy the results away, and then
> build a second time with python3.
> 
> vim takes a C version of option #2 (build with one set of configure options,
> copy the results; make clean; and build with another set of options) but I'm
> not sure there's a reason for that.  It uses less disk space as we don't
> have to duplicate the source tree.  However, in software that might pollute
> its source tree when it builds (maybe substituting file paths directly into
> a source file, for instance), this could break.
> 
> Are there other reasons than I see for doing #2?

You should never be running "make clean" and rebuilding an existing 
source tree to produce a differently-configured binary, this will break 
debuginfo generation.

Most projects should allow use to use "VPATH" builds where 
srcdir!=builddir, if not it is generally pretty simple to fix up the 
Makefiles to support this.  Generally you'll do:

 mkdir build-one && cd build-one
 ../configure --some-options
 make
 cd ..
 mkdir build-two && cd build-two
 ../configure --other-options
etc

Regards, Joe


More information about the devel mailing list