This is how I currently build Apache httpd for development and testing.
Pre-requisites:
- The Apache Portable Runtime library. I use trunk from
http://svn.apache.org/repos/asf/apr/apr/trunk
- The Perl-Compatible Regular Expressions library, either your own build or through your operating system. If you’re on Linux, be sure to install the -dev package as well
Once these are in place, check out the Apache source code from http://svn.apache.org/repos/asf/httpd/httpd/trunk
, cd into the checkout and run ./buildconf --with-apr=/path/to/apr/source-code
. Then run configure:
./configure \
--prefix=/somewhere/convenient \
--enable-mods-shared=all \
--enable-maintainer-mode \
--with-apr=/where/you/put/it \
--enable-proxy=shared \
--enable-ssl=shared \
--enable-case-filter=shared \
--enable-case-filter-in=shared \
--enable-bucketeer=shared \
--enable-echo=shared \
--enable-mpms-shared=all
make
and make install
. This module complement is what will be exercised by the test harness. The build system will leave the last ./configure
invocation in config.nice
, and also install the latter under the build subdirectory when you make install. Isn’t that nice?
To run the test harness, check out http://svn.apache.org/repos/asf/httpd/test/framework/trunk
. Underneath the checkout, find in Apache-Test/lib/Bundle/ApacheTest.pm a list of the Perl modules you need. A number of these will already be on your system. Get what you don’t have from CPAN or your package manager. Also, install HTTP::DAV
and its dependencies which is not on the list but needed to exercise mod_dav. Then run:
perl Makefile.PL
t/TEST -httpd /somewhere/convenient/bin/httpd -apxs /somewhere/convenient/bin/apxs
Note your skips and failures. Add Apache modules and Perl modules if you find the list above out of date. Then make your changes to Apache, rebuild and run t/TEST
again. If your new build is in a different installation root, run make realclean
in the framework and set it up again. When your changes to Apache (no longer) cause any tests to fail, propose the change to dev@httpd.apache.org
. If you add new functionality, add new tests. That’s all. Easy.
Pingback: Useful links for Apache module development- My blog