Permalink
Browse files

Merge configure.ac, distcc/configure.ac, and

include_server/configure.ac into a single, top-level configure.ac
script.  Likewise with the three Makefile.in scripts.  Now one config
file at the top level controls everything.

I had to rewrite quite a bit of code to account for the new level-up.
In particular, I had to add "distcc/" in front of many things in order
to refer to the same files I used to refer to when the
configure.ac/Makefile.in text lived in the distcc/ directory rather
than the top-level directory.  Likewise (though to a lesser extent)
for include_server.

I also had to do a bit of merge work.  Typically I'd leave the
originally-distcc-directory content as close to the original as
possible, and then try to put in the include_server directory stuff.

Most of the top-level configure.ac and Makefile.in could go away,
since they were glue before.  I also could get rid of other top-level
helper scripts that were used for the glue, such as version.sh.

I also fixed a number of typos and other bugs:

Makefile.in:
1) Removed obsolete CVS comment (we're 3 source-control systems past
   that now!)

2) distcc/Makefile.in was using top_builddir without importing it from
   the configure script.

3) Add zeroconf.h to HEADERS, which is needed for 'make dist'.  I also
   added all the include_server files to 'make dist'.

4) "make dist" was passing 'h' ("no symlinks") to tar.  This does not
   work with the include_server test-suite, which includes symlinks.
   I verified no other part of the distribution uses symlinks.
   Removed the h.

5) "make dist" was missing a lot of stuff (including almost all the
   include-server files).  Updated it to get it all now.  Likewise,
   updated "make clean" and its cousins to be more precise.  Also made
   "make distcheck" more careful in checking that kind of thing.

6) Declared more phony targets .PHONY.

7) The include-server build commands do a lot of 'cd'-ing (since
   setup.py requires it), and then using make variables that might
   store relative directory paths.  I now go through some hoops to
   make those directory paths absolute before the cd.

8) "make pump-check" was not setting the path, so it was using the
   installed distcc instead of the local one in the client.  Fixed
   that, and added a new target, "make pump-installcheck", to use the
   installed distcc instead (parallel to the maintainer-check and
   maintainer-installcheck targets).

configure.ac:
1) popt test was using $srcdir rather than required ${srcdir}, and
   thus was always getting the empty string.  (Luckily, srcdir is
   usually ".", and the empty string is usually equivalent.)
   Likewise when setting CPPFLAGS, which again didn't matter because
   it turns out the relevant code was redundant with what autoconf
   already does automatically.

2) A merge error: apparently the avahi check was added twice.  Get rid
   of the second one.

3) Was using obsolete AC_OUTPUT format.  Use AC_CONFIG_FILES instead.

4) Added pkg.m4 to the m4/ directory.  Before it only lived in
   autoconf.m4.  But my system, at least, doesn't have it.

5) include-server requires python2.4, so remove checks for earlier
   pythons.

autogen.sh:
1) Added aclocal call.  I think it was a bug that it was left out
   before.

pump.in:
1) Fixed it to notice when it can't find the .so file it needs.

I also modified INSTALL to point to the new file locations, and the
new instructions to run them (eg no more run_all_autoconf.sh).

Despite all these bugfixes, I made the minimal changes possible to get
things to work.  I marked with "TODO" further improvements I'd like to
make later.

One particular TODO is that I had to rename the "distcc" target -- the
main executable -- because it conflicts with the existing distcc
directory.  This is a temporary breakage which will be fixed in the
next submit after this one, where I move the subdirs under distcc to
the top level, getting rid of the artificial extra directory
introduced.

Tested by running 'make maintainer-check', 'make distcheck', and 'make
pump-check' on my local machine, which passed.  I've not tested all
the various configurations and options (including using avahi, using
the library popt library, building without python, etc).  I've also
not tried 'make benchmark'.

Reviewed by klarlund@google.com and fergus@google.com
  • Loading branch information...
1 parent 6dcf5b5 commit 0a38eace37b20a663b235fb20107829e22fbeb43 @csilvers csilvers committed Apr 11, 2008
View
@@ -11,34 +11,29 @@ Please report any problems to distcc@googlegroups.com.
To build: the simple way is to just do
- ./run_all_autoconf.sh # invokes autoconf and autoheader using
- # version info in the file version.sh
- ./configure # creates distcc/config.h and makefiles
- make # build
+ ./configure && make
but the recommended way is to build in a different directory tree
than the source tree:
- ./run_all_autoconf.sh
mkdir obj
cd obj
- ../configure
- make
+ ../configure && make
Either of these methods will:
- compile distcc
- compile Python C extensions
-To test:
+To test (must have python >=2.4 installed):
make check
To test installation using your own machine as a distcc compilation server:
- start daemon (in one window):
- distcc/distccd --wizard --allow 127.0.0.1
+ ./distccd --wizard --allow 127.0.0.1
- compile (in another):
Oops, something went wrong.

0 comments on commit 0a38eac

Please sign in to comment.