As Ryan requested today (because I said on ApacheCon 2001 that I'm still not
very happy with Apache 2.0 ;), here is a quick list of things related to the
distribution source tree and build system which I recognized recently and
which should be fixed:
o distribution tarballs are named httpd-2_0_xx-yyyy.tar.gz
instead of the expected one: httpd-2.0.xx-yyyy.tar.gz
o distribution tarballs are named httpd-2_0_xx-yyyy.tar.gz
but unpack into httpd-2_0_xx instead of httpd-2_0_xx-yyyy. This is both
against the usual conventions for tarballs and complicates packaging (for
RPM you need a extra and ugly "-n httpd-2_0_xx" on the %setup line, etc.)
o the latest httpd-2_0_16-beta.tar.gz ships with a few "logit" files
which seem to be developer logfiles. These should not be distributed
to end-users.
o if a module wants to hook into the build system, it has to
provide its own config.m4. That's fine for modules which ship with Apache
2.0. For externally maintained modules this implies that the end-user has
GNU Autoconf installed. This is both against the principle (Autoconf is a
developer tool) and makes life of end-users more complicated. Not to mention
the problems which arise if the end-users has a different version of
Autoconf installed.
o there is --enable-modules=MODULE-LIST and --enable-mods-shared=MODULE-LIST
but neither of them do actually accept a list of multiple modules AFAIK.
They just accept a single module name and the "all" and "most" keywords.
o the old scripts build/install.sh, build/mkdir.sh and build/buildinfo.sh
should be replaced by a single build/shtool generated with "shtoolize
install mkdir echo" which is more robust and portable.
o the old config.guess and config.sub versions should be replaced
by the latest version from GNU.
o configure --help shows a few lines with wrong indentation (--with-ssl,
--with-mpm, etc.) This should be lined up correctly.
o Under FreeBSD 4.3-RC I get on the compile command line "-D_REENTRANT
-D_THREAD_SAFE -D_REENTRANT -D_THREAD_SAFE", i.e. the thread stuff twice.
Additionally on the linker command there should be a "-pthread"
to make sure under FreeBSD 4 -libc_r is used. And it seems that
the compile flags are not spreaded consistently in the source tree,
i.e., there are areas where the "-D_REENTRANT -D_THREAD_SAFE"
are not present at all. This can lead to problems earlier or later, too.
o On the httpd linker command line I get "-export-dynamic -export-dynamic
-export-dynamic -export-dynamic -export-dynamic -export-dynamic" under
FreeBSD.
o If I unpack httpd-2_0_16-beta.tar.gz twice and in one copy
perform "./configure --enable-modules=most; make; make distclean"
the result is different from a fresh unpack:
$ diff -ru3 httpd-2_0_16.orig httpd-2_0_16
Only in httpd-2_0_16.orig: .deps
Only in httpd-2_0_16: config.nice
Only in httpd-2_0_16.orig: configure
Only in httpd-2_0_16.orig/include: ap_config_auto.h.in
Only in httpd-2_0_16: libtool
Only in httpd-2_0_16/server: exports.c
Only in httpd-2_0_16/srclib/apr/build: rules.mk
Only in httpd-2_0_16/srclib/apr: config.nice
Only in httpd-2_0_16/srclib/apr: libtool
Only in httpd-2_0_16/srclib/apr-util/build: Makefile
Only in httpd-2_0_16/srclib/apr-util/build: rules.mk
Only in httpd-2_0_16/srclib/apr-util/include/private: apu_select_dbm.h
Only in httpd-2_0_16/srclib/apr-util: libtool
Only in httpd-2_0_16/srclib/apr-util/xml/expat: Makefile
Only in httpd-2_0_16/srclib/apr-util/xml/expat/lib: expat.h
Only in httpd-2_0_16/support: dbmmanage
Only in httpd-2_0_16/support: log_server_status
Only in httpd-2_0_16/support: logresolve.pl
Only in httpd-2_0_16/support: phf_abuse_log.cgi
Only in httpd-2_0_16/support: split-logfile
Most important: the "make distclean" also removed the top-level "configure"
script. That should only happen on a "make realclean" (if exists) but never
on a "make distclean".
o spmt_os2 as the name for an OS/2 specific MPM is inconsistent with
the use of just "win32" and "beos" for the other OS specific MPMs.
I think the whole naming of MPMs currently is confusing to end-users.
o In the installation tree there is a bin/httpd.exp which is the
list of exported symbols and definetely not an executable. This has to be
moved to a different location. Under GNU layout this should be placed under
"datadir" (share/) or "sysconfdir" (etc/).
Greetings,
Ralf S. Engelschall
[EMAIL PROTECTED]
www.engelschall.com