Project = apache
UserType = Administration
ToolType = Services
GnuAfterInstall = install-local
include $(MAKEFILEPATH)/CoreOS/ReleaseControl/GNUSource.make
Extra_CC_Flags = -DHARD_SERVER_LIMIT=2048
Environment =
Documentation = $(NSDOCUMENTATIONDIR)/$(ToolType)/apache
Install_Flags = root="$(DSTROOT)" \
sysconfdir=$(ETCDIR)/httpd \
Localstatedir=$(VARDIR) \
runtimedir=$(VARDIR)/run \
logfiledir=$(VARDIR)/log/httpd \
proxycachedir=$(VARDIR)/run/proxy
Install_Target = install
Configure_Flags = --enable-shared=max \
--enable-module=most
ifeq ($(wildcard mod_ssl),)
Configure = cd $(shell pwd)/apache && CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" $(Sources)/configure
Configure_Flags += --shadow="$(BuildDirectory)"
else
Configure = CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" "$(BuildDirectory)/configure"
Extra_CC_Flags += -DEAPI
lazy_install_source:: install-patched-source
install-patched-source:
$(_v) if [ ! -f "$(BuildDirectory)/configure" ]; then \
echo "Copying source for $(Project)..."; \
$(MKDIR) "$(BuildDirectory)"; \
(cd $(Sources) && $(PAX) -rw . "$(BuildDirectory)"); \
$(PAX) -rw mod_ssl "$(BuildDirectory)"; \
echo "Patching source (add EAPI) for $(Project)..."; \
(cd "$(BuildDirectory)/mod_ssl" && \
./configure --with-apache="$(BuildDirectory)" --with-eapi-only); \
fi
endif
Disabled_Modules = \
vhost_alias:mod_vhost_alias \
env:mod_env \
-config_log:mod_log_config \
mime_magic:mod_mime_magic \
-mime:mod_mime \
-negotiation:mod_negotiation \
status:mod_status \
info:mod_info \
-includes:mod_include \
-autoindex:mod_autoindex \
-dir:mod_dir \
-cgi:mod_cgi \
-asis:mod_asis \
-imap:mod_imap \
-action:mod_actions \
speling:mod_speling \
-userdir:mod_userdir \
-alias:mod_alias \
-rewrite:mod_rewrite \
-access:mod_access \
-auth:mod_auth \
anon_auth:mod_auth_anon \
dbm_auth:mod_auth_dbm \
digest:mod_digest \
proxy:mod_proxy \
cern_meta:mod_cern_meta \
expires:mod_expires \
headers:mod_headers \
usertrack:mod_usertrack \
unique_id:mod_unique_id \
-setenvif:mod_setenvif
External_Modules = dav:libdav \
ssl:libssl \
perl:libperl \
php4:libphp4
APXS_DST = $(DSTROOT)$(USRSBINDIR)/apxs
LocalWebServer = $(NSLOCALDIR)$(NSLIBRARYSUBDIR)/WebServer
ConfigDir = /private/etc/httpd
ProxyDir = /private/var/run/proxy
ConfigFile = $(ConfigDir)/httpd.conf
DocRoot = $(LocalWebServer)/Documents
CGIDir = $(LocalWebServer)/CGI-Executables
APXS = $(APXS_DST) -e \
-S SBINDIR="$(DSTROOT)$(USRSBINDIR)" \
-S SYSCONFDIR="$(DSTROOT)$(ConfigDir)"
install-local:
@echo "Fixing up documents"
$(_v) $(INSTALL_FILE) -c -m 664 "$(SRCROOT)/DocumentRoot/"*.gif "$(DSTROOT)$(DocRoot)"
$(_v) $(INSTALL_FILE) -c -m 664 printenv "$(DSTROOT)$(CGIDir)"
$(_v) $(MKDIR) `dirname "$(DSTROOT)$(Documentation)"`
$(_v) $(RMDIR) "$(DSTROOT)$(Documentation)"
$(_v) $(MV) "$(DSTROOT)$(DocRoot)/manual" "$(DSTROOT)$(Documentation)"
$(_v) $(LN) -fs "$(Documentation)" "$(DSTROOT)$(DocRoot)/manual"
$(_v) $(CHMOD) -R g+w "$(DSTROOT)$(DocRoot)"
$(_v) $(CHMOD) -R g+w "$(DSTROOT)$(CGIDir)"
$(_v) $(CHOWN) -R www.www "$(DSTROOT)$(ProxyDir)"
@echo "Fixing up configuration"
$(_v) perl -i -pe 's|-arch\s+\S+\s*||g' $(DSTROOT)$(USRSBINDIR)/apxs
$(_v) $(CP) $(DSTROOT)$(ConfigFile).default $(DSTROOT)$(ConfigFile)
$(_v) for mod in $(Disabled_Modules); do \
if ! (echo $${mod} | grep -e '^-' > /dev/null); then \
module=$${mod%:*}; \
file=$${mod#*:}; \
perl -i -pe 's|^(LoadModule\s+'$${module}'_module\s+)| perl -i -pe 's|^(AddModule\s+'$${file}'\.c)$$| fi; \
done
$(_v) for mod in $(External_Modules); do \
module=$${mod%:*}; \
file=$${mod#*:}; \
$(APXS) -A -n $${module} $${file}.so; \
done
$(APXS) -a -n hfs_apple mod_hfs_apple.so
$(APXS) -a -n rendezvous_apple mod_rendezvous_apple.so
$(_v) perl -i -pe 's|^(User\s+).*$$|$${1}www|' $(DSTROOT)$(ConfigFile)
$(_v) perl -i -pe 's|^(Group\s+).*$$|$${1}www|' $(DSTROOT)$(ConfigFile)
$(_v) perl -i -pe 's|^(MinSpareServers\s+)\d+$$|$${1}1|' $(DSTROOT)$(ConfigFile)
$(_v) perl -i -pe 's|^(MaxSpareServers\s+)\d+$$|$${1}5|' $(DSTROOT)$(ConfigFile)
$(_v) perl -i -pe 's|^(StartServers\s+)\d+$$|$${1}1|' $(DSTROOT)$(ConfigFile)
$(_v) perl -i -pe 's|^(MaxRequestsPerChild\s+)\d+$$|$${1}100000|' $(DSTROOT)$(ConfigFile)
$(_v) perl -i -pe 's|^(UserDir\s+).+$$|$${1}\"Sites\"|' $(DSTROOT)$(ConfigFile)
$(_v) perl -i -pe 's|^(ServerAdmin\s+).*$$| $(_v) perl -i -pe 's|^(ServerName\s+).*$$| $(_v) perl -i -pe 's|Log "(/var/log/httpd/.+)"|Log "\|/usr/sbin/rotatelogs $${1} 86400"|' $(DSTROOT)$(ConfigFile)
$(_v) perl -i -pe 's|/home|/Users|' $(DSTROOT)$(ConfigFile)
$(_v) perl -i -pe 's|public_html|Sites|' $(DSTROOT)$(ConfigFile)
$(_v) echo "" >> $(DSTROOT)$(ConfigFile)
$(_v) echo "<IfModule mod_php4.c>" >> $(DSTROOT)$(ConfigFile)
$(_v) echo " # If php is turned on, we repsect .php and .phps files." >> $(DSTROOT)$(ConfigFile)
$(_v) echo " AddType application/x-httpd-php .php" >> $(DSTROOT)$(ConfigFile)
$(_v) echo " AddType application/x-httpd-php-source .phps" >> $(DSTROOT)$(ConfigFile)
$(_v) echo "" >> $(DSTROOT)$(ConfigFile)
$(_v) echo " # Since most users will want index.php to work we" >> $(DSTROOT)$(ConfigFile)
$(_v) echo " # also automatically enable index.php" >> $(DSTROOT)$(ConfigFile)
$(_v) echo " <IfModule mod_dir.c>" >> $(DSTROOT)$(ConfigFile)
$(_v) echo " DirectoryIndex index.html index.php" >> $(DSTROOT)$(ConfigFile)
$(_v) echo " </IfModule>" >> $(DSTROOT)$(ConfigFile)
$(_v) echo "</IfModule>" >> $(DSTROOT)$(ConfigFile)
$(_v) echo "" >> $(DSTROOT)$(ConfigFile)
$(_v) echo "<IfModule mod_rewrite.c>" >> $(DSTROOT)$(ConfigFile)
$(_v) echo " RewriteEngine On" >> $(DSTROOT)$(ConfigFile)
$(_v) echo " RewriteCond %{REQUEST_METHOD} ^TRACE" >> $(DSTROOT)$(ConfigFile)
$(_v) echo " RewriteRule .* - [F]" >> $(DSTROOT)$(ConfigFile)
$(_v) echo "</IfModule>" >> $(DSTROOT)$(ConfigFile)
$(_v) echo "" >> $(DSTROOT)$(ConfigFile)
$(_v) echo "<IfModule mod_rendezvous_apple.c>" >> $(DSTROOT)$(ConfigFile)
$(_v) echo " # Only the pages of users who have edited their" >> $(DSTROOT)$(ConfigFile)
$(_v) echo " # default home pages will be advertised on Rendezvous." >> $(DSTROOT)$(ConfigFile)
$(_v) echo " RegisterUserSite customized-users" >> $(DSTROOT)$(ConfigFile)
$(_v) echo " #RegisterUserSite all-users" >> $(DSTROOT)$(ConfigFile)
$(_v) echo "" >> $(DSTROOT)$(ConfigFile)
$(_v) echo " # Rendezvous advertising for the primary site is off by default." >> $(DSTROOT)$(ConfigFile)
$(_v) echo " #RegisterDefaultSite" >> $(DSTROOT)$(ConfigFile)
$(_v) echo "</IfModule>" >> $(DSTROOT)$(ConfigFile)
$(_v) echo "" >> $(DSTROOT)$(ConfigFile)
$(_v) echo "Include $(ConfigDir)/users/*.conf" >> $(DSTROOT)$(ConfigFile)
$(_v) $(CP) $(DSTROOT)$(ConfigFile) $(DSTROOT)$(ConfigFile).default
$(_v) $(RM) $(DSTROOT)$(ConfigDir)/access.conf*
$(_v) $(RM) $(DSTROOT)$(ConfigDir)/srm.conf*
$(_v) $(MKDIR) $(DSTROOT)$(ConfigDir)/users
$(_v) perl -i -pe 's|/usr/local/apache/conf|/etc/httpd|' $(DSTROOT)/usr/share/man/man8/httpd.8
$(_v) perl -i -pe 's|/usr/local/apache/logs|/var/log/httpd|' $(DSTROOT)/usr/share/man/man8/httpd.8
$(_v) perl -i -pe 's|/var/log/httpd/httpd.pid|/var/run/httpd.pid|' $(DSTROOT)/usr/share/man/man8/httpd.8
$(_v) rm $(DSTROOT)/Library/WebServer/CGI-Executables/printenv
$(_v) rm $(DSTROOT)/Library/WebServer/CGI-Executables/test-cgi