httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From r..@engelschall.com (Ralf S. Engelschall)
Subject [CONTRIB] Autoconf Interface Emulation
Date Sun, 01 Mar 1998 16:15:42 GMT

Autoconf Interface Emulation (ACE)
----------------------------------

While we are all the opinion that GNU AutoConf is a point of discussion for
Apache 2.0 and that we never want to use GNU AutoConf checks for 1.3, there is
a subtle difference here: the system-checks of AutoConf have nothing to do
with the popular Cygnus/GNU options used to control the build process of a
AutoConf-based source tree. Mostly everyone loves packages which can be build
like this:

   $ gunzip <foo-0.8.15.tar.gz
   $ cd foo-0.8.15
   $ ./configure --prefix=/somewhere --enable-xxx --disable-yyy ...
   $ make
   $ make install
   $ make distclean

At least I prefer this way of building because it is widely known, it is
simple and stupid to use, it is pure batch without interactive stuff, a
FreeBSD port can be done easily, RPM packages can be done more easily, etc.
pp.

So, I've started yesterday from scratch (to avoid copyright problems!) to
create a GNU AutoConf-style configuration emulation interface for our
"Configuration+Configure" scheme. The idea came to me because we already have
a top-level Makefile (even if it currently is a totally bogus one in my
opinion). So, why not enhance this to a full-featured AutoConf-style
interface? I now created four files:

    apache-1.3/configure
    apache-1.3/Makefile.tmpl
    apache-1.3/aux/mkdir.sh
    apache-1.3/aux/install.sh

This is all we need - no changes at other places are needed! How it works?
As an example I present you how one can build a Reverse Proxy:

    $ cd apache-1.3
    $ ./configure --prefix=/tmp/apache-rproxy \
                  --disable-module=all \
                  --enable-module=rewrite \
                  --enable-module=proxy \
                  --enable-module=mime
                  --enable-rule=WANTHSREGEX \
                  --enable-rule=HIDE
    Configuring for Apache, Version 1.3b6-dev
    Creating Makefile
    Creating Configuration.gen in src
    Creating Makefile in src
     + configured for FreeBSD 2.1.5 platform
     + setting C compiler to gcc
     + adding selected modules
     + doing sanity check on compiler and options
    Creating Makefile in src/support
    Creating Makefile in src/main
    Creating Makefile in src/ap
    Creating Makefile in src/regex
    Creating Makefile in src/os/unix
    Creating Makefile in src/modules/standard
    $ make
    ...
    $ make install
    ...

After this Apache is installed in the GNU-conforming way (with all paths
correctly set in the binaries and the *.conf files, etc.) under
/tmp/apache-rproxy as following:

    drwxr-xr-x  2 rse  wheel  512 Mar  1 17:03 bin
    drwxr-xr-x  2 rse  wheel  512 Mar  1 17:03 etc
    drwxr-xr-x  2 rse  wheel  512 Mar  1 17:03 libexec
    drwxr-xr-x  4 rse  wheel  512 Mar  1 17:03 man
    drwxr-xr-x  2 rse  wheel  512 Mar  1 17:03 sbin
    drwxr-xr-x  5 rse  wheel  512 Mar  1 17:03 share
    drwxr-xr-x  5 rse  wheel  512 Mar  1 17:03 var

In detail:

    /tmp/apache-rproxy
    /tmp/apache-rproxy/bin
    /tmp/apache-rproxy/bin/htpasswd
    /tmp/apache-rproxy/bin/htdigest
    /tmp/apache-rproxy/sbin
    /tmp/apache-rproxy/sbin/apachectl
    /tmp/apache-rproxy/sbin/dbmmanage
    /tmp/apache-rproxy/sbin/logresolve
    /tmp/apache-rproxy/sbin/rotatelogs
    /tmp/apache-rproxy/libexec
    /tmp/apache-rproxy/libexec/httpd
    /tmp/apache-rproxy/man
    /tmp/apache-rproxy/man/man1
    /tmp/apache-rproxy/man/man1/apachectl.1
    /tmp/apache-rproxy/man/man1/htpasswd.1
    /tmp/apache-rproxy/man/man8
    /tmp/apache-rproxy/man/man8/httpd.8
    /tmp/apache-rproxy/etc
    /tmp/apache-rproxy/etc/httpd.conf
    /tmp/apache-rproxy/etc/access.conf
    /tmp/apache-rproxy/etc/srm.conf
    /tmp/apache-rproxy/share
    /tmp/apache-rproxy/share/htdocs
    /tmp/apache-rproxy/share/htdocs/manual
    /tmp/apache-rproxy/share/htdocs/manual/images
    /tmp/apache-rproxy/share/htdocs/manual/images/custom_errordocs.gif
    /tmp/apache-rproxy/share/htdocs/manual/images/home.gif
    /tmp/apache-rproxy/share/htdocs/manual/images/index.gif
    /tmp/apache-rproxy/share/htdocs/manual/images/sub.gif
    /tmp/apache-rproxy/share/htdocs/manual/mod
    /tmp/apache-rproxy/share/htdocs/manual/mod/core.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/directive-dict.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/directives.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/footer.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/header.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/index.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_access.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_actions.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_alias.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_asis.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_auth.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_auth_anon.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_auth_db.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_auth_dbm.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_autoindex.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_browser.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_cern_meta.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_cgi.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_cookies.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_digest.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_dir.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_dld.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_dll.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_env.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_example.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_expires.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_headers.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_imap.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_include.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_info.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_isapi.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_log_agent.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_log_common.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_log_config.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_log_referer.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_mime.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_mime_magic.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_negotiation.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_proxy.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_rewrite.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_setenvif.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_so.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_speling.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_status.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_unique_id.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_userdir.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_usertrack.html
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_rewrite_fig1.fig
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_rewrite_fig1.gif
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_rewrite_fig2.fig
    /tmp/apache-rproxy/share/htdocs/manual/mod/mod_rewrite_fig2.gif
    /tmp/apache-rproxy/share/htdocs/manual/misc
    /tmp/apache-rproxy/share/htdocs/manual/misc/API.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/FAQ.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/client_block_api.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/compat_notes.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/custom_errordocs.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/descriptors.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/fin_wait_2.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/footer.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/header.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/howto.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/index.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/known_bugs.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/known_client_problems.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/nopgp.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/perf-bsd44.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/perf-dec.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/perf-hp.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/perf-tuning.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/perf.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/security_tips.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/vif-info.html
    /tmp/apache-rproxy/share/htdocs/manual/misc/windoz_keepalive.html
    /tmp/apache-rproxy/share/htdocs/manual/vhosts
    /tmp/apache-rproxy/share/htdocs/manual/vhosts/details.html
    /tmp/apache-rproxy/share/htdocs/manual/vhosts/details_1_2.html
    /tmp/apache-rproxy/share/htdocs/manual/vhosts/examples.html
    /tmp/apache-rproxy/share/htdocs/manual/vhosts/fd-limits.html
    /tmp/apache-rproxy/share/htdocs/manual/vhosts/footer.html
    /tmp/apache-rproxy/share/htdocs/manual/vhosts/header.html
    /tmp/apache-rproxy/share/htdocs/manual/vhosts/host.html
    /tmp/apache-rproxy/share/htdocs/manual/vhosts/index.html
    /tmp/apache-rproxy/share/htdocs/manual/vhosts/ip-based.html
    /tmp/apache-rproxy/share/htdocs/manual/vhosts/name-based.html
    /tmp/apache-rproxy/share/htdocs/manual/vhosts/vhosts-in-depth.html
    /tmp/apache-rproxy/share/htdocs/manual/vhosts/virtual-host.html
    /tmp/apache-rproxy/share/htdocs/manual/LICENSE
    /tmp/apache-rproxy/share/htdocs/manual/custom-error.html
    /tmp/apache-rproxy/share/htdocs/manual/dns-caveats.html
    /tmp/apache-rproxy/share/htdocs/manual/env.html
    /tmp/apache-rproxy/share/htdocs/manual/expand.pl
    /tmp/apache-rproxy/share/htdocs/manual/footer.html
    /tmp/apache-rproxy/share/htdocs/manual/handler.html
    /tmp/apache-rproxy/share/htdocs/manual/header.html
    /tmp/apache-rproxy/share/htdocs/manual/index.html
    /tmp/apache-rproxy/share/htdocs/manual/install.html
    /tmp/apache-rproxy/share/htdocs/manual/invoking.html
    /tmp/apache-rproxy/share/htdocs/manual/keepalive.html
    /tmp/apache-rproxy/share/htdocs/manual/location.html
    /tmp/apache-rproxy/share/htdocs/manual/man-template.html
    /tmp/apache-rproxy/share/htdocs/manual/multilogs.html
    /tmp/apache-rproxy/share/htdocs/manual/new_features_1_0.html
    /tmp/apache-rproxy/share/htdocs/manual/new_features_1_1.html
    /tmp/apache-rproxy/share/htdocs/manual/new_features_1_2.html
    /tmp/apache-rproxy/share/htdocs/manual/new_features_1_3.html
    /tmp/apache-rproxy/share/htdocs/manual/process-model.html
    /tmp/apache-rproxy/share/htdocs/manual/sections.html
    /tmp/apache-rproxy/share/htdocs/manual/sourcereorg.html
    /tmp/apache-rproxy/share/htdocs/manual/stopping.html
    /tmp/apache-rproxy/share/htdocs/manual/suexec.html
    /tmp/apache-rproxy/share/htdocs/manual/unixware.html
    /tmp/apache-rproxy/share/htdocs/manual/upgrading_to_1_3.html
    /tmp/apache-rproxy/share/htdocs/manual/windows.html
    /tmp/apache-rproxy/share/htdocs/manual/cgi_path.html
    /tmp/apache-rproxy/share/htdocs/manual/bind.html
    /tmp/apache-rproxy/share/htdocs/manual/TODO
    /tmp/apache-rproxy/share/htdocs/manual/content-negotiation.html
    /tmp/apache-rproxy/share/htdocs/foo
    /tmp/apache-rproxy/share/htdocs/foo/testerli.html
    /tmp/apache-rproxy/share/htdocs/index.html
    /tmp/apache-rproxy/share/htdocs/apache_pb.gif
    /tmp/apache-rproxy/share/icons
    /tmp/apache-rproxy/share/icons/world1.gif
    /tmp/apache-rproxy/share/icons/uuencoded.gif
    /tmp/apache-rproxy/share/icons/uu.gif
    /tmp/apache-rproxy/share/icons/up.gif
    /tmp/apache-rproxy/share/icons/unknown.gif
    /tmp/apache-rproxy/share/icons/transfer.gif
    /tmp/apache-rproxy/share/icons/text.gif
    /tmp/apache-rproxy/share/icons/tex.gif
    /tmp/apache-rproxy/share/icons/tar.gif
    /tmp/apache-rproxy/share/icons/sphere2.gif
    /tmp/apache-rproxy/share/icons/sphere1.gif
    /tmp/apache-rproxy/share/icons/sound2.gif
    /tmp/apache-rproxy/share/icons/sound1.gif
    /tmp/apache-rproxy/share/icons/script.gif
    /tmp/apache-rproxy/share/icons/screw2.gif
    /tmp/apache-rproxy/share/icons/screw1.gif
    /tmp/apache-rproxy/share/icons/right.gif
    /tmp/apache-rproxy/share/icons/quill.gif
    /tmp/apache-rproxy/share/icons/ps.gif
    /tmp/apache-rproxy/share/icons/portal.gif
    /tmp/apache-rproxy/share/icons/pie8.gif
    /tmp/apache-rproxy/share/icons/pie7.gif
    /tmp/apache-rproxy/share/icons/pie6.gif
    /tmp/apache-rproxy/share/icons/pie5.gif
    /tmp/apache-rproxy/share/icons/pie4.gif
    /tmp/apache-rproxy/share/icons/pie3.gif
    /tmp/apache-rproxy/share/icons/pie2.gif
    /tmp/apache-rproxy/share/icons/pie1.gif
    /tmp/apache-rproxy/share/icons/pie0.gif
    /tmp/apache-rproxy/share/icons/pdf.gif
    /tmp/apache-rproxy/share/icons/patch.gif
    /tmp/apache-rproxy/share/icons/p.gif
    /tmp/apache-rproxy/share/icons/movie.gif
    /tmp/apache-rproxy/share/icons/link.gif
    /tmp/apache-rproxy/share/icons/left.gif
    /tmp/apache-rproxy/share/icons/layout.gif
    /tmp/apache-rproxy/share/icons/index.gif
    /tmp/apache-rproxy/share/icons/image3.gif
    /tmp/apache-rproxy/share/icons/image2.gif
    /tmp/apache-rproxy/share/icons/image1.gif
    /tmp/apache-rproxy/share/icons/icon.sheet.gif
    /tmp/apache-rproxy/share/icons/hand.up.gif
    /tmp/apache-rproxy/share/icons/hand.right.gif
    /tmp/apache-rproxy/share/icons/generic.sec.gif
    /tmp/apache-rproxy/share/icons/generic.red.gif
    /tmp/apache-rproxy/share/icons/generic.gif
    /tmp/apache-rproxy/share/icons/forward.gif
    /tmp/apache-rproxy/share/icons/folder.sec.gif
    /tmp/apache-rproxy/share/icons/folder.gif
    /tmp/apache-rproxy/share/icons/folder.open.gif
    /tmp/apache-rproxy/share/icons/f.gif
    /tmp/apache-rproxy/share/icons/dvi.gif
    /tmp/apache-rproxy/share/icons/down.gif
    /tmp/apache-rproxy/share/icons/dir.gif
    /tmp/apache-rproxy/share/icons/continued.gif
    /tmp/apache-rproxy/share/icons/compressed.gif
    /tmp/apache-rproxy/share/icons/comp.gray.gif
    /tmp/apache-rproxy/share/icons/comp.blue.gif
    /tmp/apache-rproxy/share/icons/c.gif
    /tmp/apache-rproxy/share/icons/burst.gif
    /tmp/apache-rproxy/share/icons/broken.gif
    /tmp/apache-rproxy/share/icons/box2.gif
    /tmp/apache-rproxy/share/icons/box1.gif
    /tmp/apache-rproxy/share/icons/bomb.gif
    /tmp/apache-rproxy/share/icons/blank.gif
    /tmp/apache-rproxy/share/icons/binhex.gif
    /tmp/apache-rproxy/share/icons/world2.gif
    /tmp/apache-rproxy/share/icons/ball.red.gif
    /tmp/apache-rproxy/share/icons/ball.gray.gif
    /tmp/apache-rproxy/share/icons/back.gif
    /tmp/apache-rproxy/share/icons/apache_pb.gif
    /tmp/apache-rproxy/share/icons/alert.red.gif
    /tmp/apache-rproxy/share/icons/alert.black.gif
    /tmp/apache-rproxy/share/icons/a.gif
    /tmp/apache-rproxy/share/icons/README
    /tmp/apache-rproxy/share/icons/binary.gif
    /tmp/apache-rproxy/share/cgi-bin
    /tmp/apache-rproxy/share/cgi-bin/test-cgi
    /tmp/apache-rproxy/share/cgi-bin/printenv
    /tmp/apache-rproxy/var
    /tmp/apache-rproxy/var/logs
    /tmp/apache-rproxy/var/run
    /tmp/apache-rproxy/var/proxy

And then you can directly run 

    $ /tmp/apache-rproxy/sbin/apachectl start

out-of-the-box. Ok, how powerful is the configure script: Enough to provide
all comon GNU-AutoConf options and to automatically determine all information
from the src-tree (including the default enabled rules and modules). One can
see the options and the determined defaults as following:

$ ./configure --help
Usage: configure [options]
Options: [defaults in brackets after descriptions]

 --help                print this message
 --quiet, --silent     do not print messages

 --prefix=PREFIX       install architecture-independent files in PREFIX
                       [/usr/local]
 --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
                       [same as prefix]
 --bindir=DIR          install user     executables in DIR  [EPREFIX/bin]
 --sbindir=DIR         install sysadmin executables in DIR  [EPREFIX/sbin]
 --libexecdir=DIR      install program  executables in DIR  [EPREFIX/libexec]
 --mandir=DIR          install manual pages in DIR          [PREFIX/man]
 --sysconfdir=DIR      install configuration files in DIR   [PREFIX/etc]
 --datadir=DIR         install read-only  data files in DIR [PREFIX/share]
 --localstatedir=DIR   install modifiable data files in DIR [PREFIX/var]

 --enable-rule=NAME    enable  a particular Rule named 'NAME'
 --disable-rule=NAME   disable a particular Rule named 'NAME'
                       [HIDE=no IRIXN32=yes IRIXNIS=no PARANOID=no SOCKS4=no]
                       [STATUS=yes WANTHSREGEX=default]

 --enable-module=NAME  enable  a particular Module named 'NAME'
 --disable-module=NAME disable a particular Module named 'NAME'
                       [access=yes actions=yes alias=yes asis=yes auth=yes]
                       [auth_anon=no auth_db=no auth_dbm=no autoindex=yes]
                       [cern_meta=no cgi=yes digest=no dir=yes env=yes]
                       [example=no expires=no headers=no imap=yes include=yes]
                       [info=no log_agent=no log_config=yes log_referer=no]
                       [mime=yes mime_magic=no negotiation=yes proxy=no]
                       [rewrite=no setenvif=yes so=no speling=no status=no]
                       [unique_id=no userdir=yes usertrack=no]

Because it is easier for you to test it, I bundled the four files into a
tarball which I append uuencoded at this message.  Ok, perhaps we have to
change or adjust some stuff to finally add this to apache-1.3 but I think it
would be a great step further for the users...

Greetings,
                                       Ralf S. Engelschall
                                       rse@engelschall.com
                                       www.engelschall.com

begin 644 ace.tar.gz
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
"````
`
end

Mime
View raw message