Browse Source

apache2:
- update to 2.4.9
- remove suffix '2' from {htdigest,htpasswd,rotatelogs}2
- use /run instead of /var/run
- remove /etc/apache2/conf/ssl* , use /etc/pki now.
- move suexec from %%{_libdir}/apache2 to %%{_sbindir}
- split all LoadModules to conf.modules.d/*.conf
- split module configs to conf.d/*.conf
- cleanup docroot, move apache specific files to %%{_datadir}/apache2
- add BR: lua-devel, libxml2-devel
- add /etc/apache2/sites.d for virtual host settings.

git-svn-id: http://trac.vinelinux.org/repos/projects/specs@8599 ec354946-7b23-47d6-9f5a-488ba84defc7

daisuke 9 years ago
parent
commit
3c30524184
1 changed files with 240 additions and 196 deletions
  1. 240 196
      a/apache2/apache2-vl.spec

+ 240 - 196
a/apache2/apache2-vl.spec

@@ -1,13 +1,15 @@
 %define contentdir %{_datadir}/apache2
 %define docroot /var/www/apache2
-%define suexec_caller apache
+%define suexec_caller www-data
 %define mmn 20051115
+%define mmnisa %{mmn}%{__isa_name}%{__isa_bits}
 %define pkgname apache2
+%define vstring Vine
 
 Summary: Apache HTTP Server
 Name: %{pkgname}
-Version: 2.2.25
-Release: 2%{_dist_release}
+Version: 2.4.9
+Release: 1%{_dist_release}
 URL: http://httpd.apache.org/
 
 Vendor: Project Vine
@@ -15,48 +17,59 @@ Distribution: Vine Linux
 Packager: daisuke
 
 Source0: http://www.apache.org/dist/httpd/httpd-%{version}.tar.bz2
-Source1: index.html.ja
+Source2: index.html
 Source3: apache2.logrotate
 Source4: apache2.init
-Source5: README.confd
-Source6: vine.png
+Source6: poweredby-vine.png
+Source7: apache2.tmpfiles
 Source10: httpd.conf
-Source11: apache-ssl.conf
-Source12: migration.html
-Source13: migration.css
-Source14: mod_ssl-Makefile.crt
-Source15: mod_ssl-Makefile.crl
+Source11: 00-base.conf
+Source12: 00-mpm.conf
+Source13: 00-lua.conf
+Source14: 01-cgi.conf
+Source15: 00-dav.conf
+Source16: 00-proxy.conf
+Source17: 00-ssl.conf
+Source18: 01-ldap.conf
+Source19: 00-proxyhtml.conf
+Source20: userdir.conf
+Source21: ssl.conf
+Source22: welcome.conf
+Source23: manual.conf
+Source25: 01-session.conf
+# Documentation
+Source30: README.confd
+Source31: README.confmod
 # add vine entry to config.layout
 Source100: vine-config.layout
-# man files 
-Source101: apache2.8
-Source102: apache2ctl.8
-#Source103: config_vars.mk
+
 # build/scripts patches
-Patch1: httpd-2.1.10-apctl.patch
-Patch2: httpd-2.2.3-apxs.patch
-Patch3: httpd-2.0.45-deplibs.patch
-Patch4: httpd-2.1.10-disablemods.patch
-# features/functional changes
-Patch21: httpd-2.0.40-xfsz.patch
-# Patch22: httpd-2.1.10-pod.patch
-Patch22: httpd-2.2.23-pod.patch
-Patch23: httpd-2.0.45-export.patch
-Patch24: httpd-2.0.48-corelimit.patch
+Patch1: httpd-2.4.1-apctl.patch
+Patch2: httpd-2.4.1-apxs.patch
+Patch3: httpd-2.4.1-deplibs.patch
+# Features/functional changes
+Patch23: httpd-2.4.4-export.patch
+Patch24: httpd-2.4.1-corelimit.patch
+Patch26: httpd-2.4.4-r1337344+.patch
+Patch27: httpd-2.4.2-icons.patch
+Patch30: httpd-2.4.4-cachehardmax.patch
+Patch31: httpd-2.4.6-sslmultiproxy.patch
+Patch32: httpd-2.4.7-r1537535.patch
+Patch33: httpd-2.4.9-r1573626.patch
 # Bug fixes
-Patch54: httpd-2.2.0-authnoprov.patch
-Patch60: httpd-2.2.3-sslusername.patch
+Patch55: httpd-2.4.4-malformed-host.patch
+Patch56: httpd-2.4.4-mod_unique_id.patch
 
 # Security fixes
 
-
 License: Apache Software License
 Group: System Environment/Daemons
 BuildRoot: %{_tmppath}/%{name}-%{version}-root
-BuildRequires: db4-devel, expat-devel
+BuildRequires: db4-devel, expat-devel, xmlto
 BuildRequires: findutils, perl, openldap-devel, zlib-devel
 BuildRequires: apr-devel, apr-util-devel
 BuildRequires: pcre-devel, sqlite3-devel
+BuildRequires: lua-devel, libxml2-devel
 BuildRequires: www-common
 Requires: mailcap, gawk, file, findutils, apr, apr-util
 Requires(pre): www-common
@@ -67,6 +80,7 @@ Provides: webserver
 Provides: httpd = %{version}
 Provides: httpd-mmn = %{mmn}
 Obsoletes: apache2-apr, apache2-apr-devel
+Obsoletes: apache < 2.0, apache-devel < 2.0
 
 %description
 Apache is a powerful, full-featured, efficient, and freely-available
@@ -114,44 +128,41 @@ Security (TLS) protocols.
 
 %patch1 -p1 -b .apctl
 %patch2 -p1 -b .apxs
-#patch3 -p1 -b .deplibs
-%patch4 -p1 -b .disablemods
+%patch3 -p1 -b .deplibs
 
-%patch21 -p0 -b .xfsz
-%patch22 -p1 -b .pod
 %patch23 -p1 -b .export
 %patch24 -p1 -b .corelimit
+%patch26 -p1 -b .r1337344+
+%patch27 -p1 -b .icons
+%patch30 -p1 -b .cachehardmax
+%patch31 -p1 -b .sslmultiproxy
+%patch32 -p1 -b .r1537535
+%patch33 -p1 -b .r1573626
 
-%patch54 -p1 -b .authnoprov
-%patch60 -p1 -b .sslusername
+%patch55 -p1 -b .malformedhost
+%patch56 -p1 -b .uniqueid
 
-# copy across the migration guide and sed it's location into apachectl
-cp $RPM_SOURCE_DIR/migration.{html,css} .
-%{__perl} -pi -e "s:\@docdir\@:%{_docdir}/%{name}-%{version}:g" \
-	support/apachectl.in
+# Patch in the vendor string
+sed -i '/^#define PLATFORM/s/Unix/%{vstring}/' os/unix/os.h
 
+# Prevent use of setcap in "install-suexec-caps" target.
+sed -i '/suexec/s,setcap ,echo Skipping setcap for ,' Makefile.in
 
 # add Vine configure's option to config.layout
 sed -e "s|${prefix}/lib|${prefix}/%{_lib}|" \
   < $RPM_SOURCE_DIR/vine-config.layout >> config.layout
 
-# regenerate configure scripts
-./buildconf
-
 %build
 # remove bundled apr, apr-util, pcre
 rm -rf srclib/{apr,apr-util,pcre}
 
-#CFLAGS="$RPM_OPT_FLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-#AP_LIBS="-lssl -lcrypto"
-#export CFLAGS AP_LIBS
+# regenerate configure scripts
+autoheader && autoconf || exit 1
+
 CFLAGS="$RPM_OPT_FLAGS"
 SH_LDFLAGS="-Wl,-z,relro"
 export CFLAGS SH_LDFLAGS
 
-%define mpms worker prefork
-%define prefer_mpm prefork
-
 AP_CONFOPTS="\
 	--prefix=%{_sysconfdir}/apache2 \
 	--exec-prefix=%{_prefix} \
@@ -179,100 +190,129 @@ AP_CONFOPTS="\
 	--enable-authn-anon --enable-authn-alias \
 	--with-apr=%{_prefix} --with-apr-util=%{_prefix} \
 	--enable-suexec --with-suexec \
+        --enable-suexec-capabilities \
 	--with-suexec-caller=%{suexec_caller} \
 	--with-suexec-docroot=%{docroot} \
 	--with-suexec-logfile=%{_localstatedir}/log/apache2/suexec.log \
 	--with-suexec-bin=%{_libdir}/%{pkgname}/suexec \
 	--with-suexec-uidmin=500 --with-suexec-gidmin=500 \
 	--with-pcre \
+	--enable-pie \
 	--enable-ssl --with-ssl \
 	--enable-deflate \
 	--enable-proxy --enable-proxy-connect \
-	--enable-proxy-http --enable-proxy-ftp"
-#all  mpm build
-for mpm in %{mpms}; do
-   mkdir mpm-$mpm;
-   cd mpm-$mpm;
-   ../configure $AP_CONFOPTS --with-mpm=$mpm --srcdir=../ ;
-   make %{?_smp_mflags} ;
-#   mv apache2 apache2.$mpm ;
-   cd ../
-done
+	--enable-proxy-http --enable-proxy-ftp \
+	--enable-case-filter --enable-case-filter-in \
+	--enable-mpms-shared=all"
+./configure ${AP_CONFOPTS}
+make %{?_smp_mflags}
 
 %install
 rm -rf $RPM_BUILD_ROOT
 
-# install mpms binary 
-pushd mpm-prefork
-  make DESTDIR=$RPM_BUILD_ROOT install
-  rm -f $RPM_BUILD_ROOT/%{_sbindir}/apache2
-popd
+make DESTDIR=$RPM_BUILD_ROOT install
 
-for mpm in %{mpms}; do
-    install -m755 mpm-$mpm/apache2 $RPM_BUILD_ROOT/%{_sbindir}/apache2.$mpm
-done
+# create apache2ctl symlink
+ln -sf apachectl $RPM_BUILD_ROOT%{_sbindir}/apache2ctl
 
 # install conf file/directory
-mkdir $RPM_BUILD_ROOT%{_sysconfdir}/apache2/conf.d
+mkdir $RPM_BUILD_ROOT%{_sysconfdir}/apache2/conf.d \
+      $RPM_BUILD_ROOT%{_sysconfdir}/apache2/conf.modules.d \
+      $RPM_BUILD_ROOT%{_sysconfdir}/apache2/sites.d
 install -m 644 $RPM_SOURCE_DIR/README.confd \
    $RPM_BUILD_ROOT%{_sysconfdir}/apache2/conf.d/README
-install -m 644 $RPM_SOURCE_DIR/apache-ssl.conf \
-   $RPM_BUILD_ROOT%{_sysconfdir}/apache2/conf.d/ssl.conf
-
-rm $RPM_BUILD_ROOT%{_sysconfdir}/apache2/conf/*.conf
-install -m 644 $RPM_SOURCE_DIR/httpd.conf \
-   $RPM_BUILD_ROOT%{_sysconfdir}/apache2/conf/httpd.conf
-
-# mod_ssl bits
-for suffix in crl crt csr key prm; do
-   mkdir $RPM_BUILD_ROOT%{_sysconfdir}/apache2/conf/ssl.${suffix}
+install -m 644 $RPM_SOURCE_DIR/README.confmod \
+   $RPM_BUILD_ROOT%{_sysconfdir}/apache2/conf.modules.d/README
+
+for f in 00-base.conf 00-mpm.conf 00-lua.conf 01-cgi.conf 00-dav.conf \
+         00-proxy.conf 00-ssl.conf 01-ldap.conf 00-proxyhtml.conf \
+         01-ldap.conf 01-session.conf; do
+  install -m 644 -p $RPM_SOURCE_DIR/$f \
+                    $RPM_BUILD_ROOT%{_sysconfdir}/apache2/conf.modules.d/$f
 done
 
-# Makefiles for certificate management
-for ext in crt crl; do 
-  install -m 644 $RPM_SOURCE_DIR/mod_ssl-Makefile.${ext} \
-	$RPM_BUILD_ROOT%{_sysconfdir}/apache2/conf/ssl.${ext}/Makefile.${ext}
+for f in welcome.conf ssl.conf manual.conf userdir.conf; do
+  install -m 644 -p $RPM_SOURCE_DIR/$f \
+     $RPM_BUILD_ROOT%{_sysconfdir}/apache2/conf.d/$f
 done
-ln -s ../../../usr/share/ssl/certs/Makefile $RPM_BUILD_ROOT/etc/apache2/conf
-
-# for holding mod_dav lock database
-mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/dav
 
-# create a prototype session cache
-mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/cache/mod_ssl
-touch $RPM_BUILD_ROOT%{_localstatedir}/cache/mod_ssl/scache.{dir,pag,sem}
-
-# move utilities to /usr/bin
-mv $RPM_BUILD_ROOT%{_sbindir}/{ab,htdbm,logresolve,htpasswd,htdigest} \
-   $RPM_BUILD_ROOT%{_bindir}
+# Split-out extra config shipped as default in conf.d:
+for f in autoindex; do
+  mv docs/conf/extra/httpd-${f}.conf \
+     $RPM_BUILD_ROOT%{_sysconfdir}/apache2/conf.d/${f}.conf
+done
+	  
+# Extra config trimmed:
+rm -v docs/conf/extra/httpd-{ssl,userdir}.conf
 
-# Make the MMN accessible to module packages
-echo %{mmn} > $RPM_BUILD_ROOT%{_includedir}/apache2/.mmn
+rm $RPM_BUILD_ROOT%{_sysconfdir}/apache2/conf/*.conf
+install -m 644 -p $RPM_SOURCE_DIR/httpd.conf \
+   $RPM_BUILD_ROOT%{_sysconfdir}/apache2/conf/httpd.conf
+ln -sf httpd.conf $RPM_BUILD_ROOT%{_sysconfdir}/apache2/conf/apache2.conf
 
-# contentdir
-# mkdir $RPM_BUILD_ROOT%{contentdir}/html
-install -m 644 $RPM_SOURCE_DIR/index.html.ja \
-	$RPM_BUILD_ROOT%{contentdir}/error/noindex.html
-rm -r $RPM_BUILD_ROOT%{contentdir}/manual/style
+# tmpfiles.d configuration
+mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/tmpfiles.d 
+install -m 644 -p $RPM_SOURCE_DIR/apache2.tmpfiles \
+   $RPM_BUILD_ROOT%{_prefix}/lib/tmpfiles.d/apache2.conf
 
-install -m 644 $RPM_SOURCE_DIR/vine.png \
-	$RPM_BUILD_ROOT%{contentdir}/icons
+# Other directories
+mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/dav \
+         $RPM_BUILD_ROOT/run/apache2/htcacheclean
 
-# docroot
-mkdir -p $RPM_BUILD_ROOT%{docroot}/html
+# Create cache directory
+mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/cache/apache2 \
+         $RPM_BUILD_ROOT%{_localstatedir}/cache/apache2/proxy \
+         $RPM_BUILD_ROOT%{_localstatedir}/cache/apache2/ssl
 
-# logs
-# rmdir $RPM_BUILD_ROOT%{_sysconfdir}/apache2/logs
-mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log/apache2
+# Make the MMN accessible to module packages
+echo %{mmnisa} > $RPM_BUILD_ROOT%{_includedir}/apache2/.mmn
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/rpm
+cat > $RPM_BUILD_ROOT%{_sysconfdir}/rpm/macros.apache2 <<EOF
+%%_httpd_mmn %{mmnisa}
+%%_httpd_apxs %%{_bindir}/apxs
+%%_httpd_modconfdir %%{_sysconfdir}/apache2/conf.modules.d
+%%_httpd_confdir %%{_sysconfdir}/apache2/conf.d
+%%_httpd_contentdir %{contentdir}
+%%_httpd_moddir %%{_libdir}/apache2/modules
+%%_apache2_mmn %{mmnisa}
+%%_apache2_apxs %%{_bindir}/apxs
+%%_apache2_modconfdir %%{_sysconfdir}/apache2/conf.modules.d
+%%_apache2_confdir %%{_sysconfdir}/apache2/conf.d
+%%_apache2_contentdir %{contentdir}
+%%_apache2_moddir %%{_libdir}/apache2/modules
+EOF
 
-ln -sf %{_sysconfdir}/%{pkgname}/conf/httpd.conf $RPM_BUILD_ROOT/%{_sysconfdir}/%{pkgname}/conf/apache2.conf
+# Handle contentdir
+mkdir $RPM_BUILD_ROOT%{contentdir}/noindex
+install -m 644 -p $RPM_SOURCE_DIR/index.html \
+        $RPM_BUILD_ROOT%{contentdir}/noindex/index.html
+install -m 644 -p $RPM_SOURCE_DIR/poweredby-vine.png \
+        $RPM_BUILD_ROOT%{contentdir}/icons/
+rm -rf %{contentdir}/htdocs
+
+# remove manual sources
+find $RPM_BUILD_ROOT%{contentdir}/manual \( \
+    -name \*.xml -o -name \*.xml.* -o -name \*.ent -o -name \*.xsl -o -name \*.dtd \
+    \) -print0 | xargs -0 rm -f
+
+# Strip the manual down just to English and replace the typemaps with flat files:
+set +x
+for f in `find $RPM_BUILD_ROOT%{contentdir}/manual -name \*.html -type f`; do
+   if test -f ${f}.en; then
+      cp ${f}.en ${f}
+      rm ${f}.*
+   fi
+done
+set -x
 
+# Clean Document Root
+rm -v $RPM_BUILD_ROOT%{docroot}/html/*.html
+rm -v $RPM_BUILD_ROOT/var/www/cgi-bin/*
 
 # symlinks for /etc/apache2
 ln -s ../..%{_localstatedir}/log/apache2 $RPM_BUILD_ROOT/etc/apache2/logs
-ln -s ../..%{_localstatedir}/run $RPM_BUILD_ROOT/etc/apache2/run
+ln -s /run/apache2 $RPM_BUILD_ROOT/etc/apache2/run
 ln -s ../..%{_libdir}/apache2/modules $RPM_BUILD_ROOT/etc/apache2/modules
-ln -s ../..%{_libdir}/apache2/build $RPM_BUILD_ROOT/etc/apache2/build
 
 # install SYSV init stuff
 mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
@@ -281,85 +321,56 @@ install -m755 $RPM_SOURCE_DIR/apache2.init \
 %{__perl} -pi -e "s:\@docdir\@:%{_docdir}/%{name}-%{version}:g" \
 	$RPM_BUILD_ROOT/etc/rc.d/init.d/apache2	
 
-# install log rotation stuff
+# Install logrotate config
 mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d
-install -m644 $RPM_SOURCE_DIR/apache2.logrotate \
+install -m 644 -p $RPM_SOURCE_DIR/apache2.logrotate \
 	$RPM_BUILD_ROOT/etc/logrotate.d/apache2
 
-mv $RPM_BUILD_ROOT/%{_sbindir}/apachectl $RPM_BUILD_ROOT/%{_sbindir}/apache2ctl
-
 # fix man page paths
 sed -e "s|/usr/local/apache2/conf/httpd.conf|/etc/apache2/conf/httpd.conf|" \
     -e "s|/usr/local/apache2/conf/mime.types|/etc/mime.types|" \
     -e "s|/usr/local/apache2/conf/magic|/etc/apache2/conf/magic|" \
     -e "s|/usr/local/apache2/logs/error_log|/var/log/apache2/error_log|" \
     -e "s|/usr/local/apache2/logs/access_log|/var/log/apache2/access_log|" \
-    -e "s|/usr/local/apache2/logs/httpd.pid|/var/run/apache2.pid|" \
-    -e "s|/usr/local/apache2|/etc/httpd|" < $RPM_SOURCE_DIR/apache2.8 \
-  > $RPM_BUILD_ROOT%{_mandir}/man8/apache2.8
+    -e "s|/usr/local/apache2/logs/httpd.pid|/run/apache2/apache2.pid|" \
+    -e "s|/usr/local/apache2|/etc/httpd|" < docs/man/httpd.8 \
+  > $RPM_BUILD_ROOT%{_mandir}/man8/httpd.8
 
-install -m644 $RPM_SOURCE_DIR/apache2ctl.8 \
-	$RPM_BUILD_ROOT%{_mandir}/man8/apache2ctl.8
+# Make ap_config_layout.h libdir-agnostic
+sed -i '/.*DEFAULT_..._LIBEXECDIR/d;/DEFAULT_..._INSTALLBUILDDIR/d' \
+    $RPM_BUILD_ROOT%{_includedir}/apache2/ap_config_layout.h
 
-# change command name to avoid conflict with apache1 pacjage
-%define cflcmd /usr/bin/htdigest /usr/bin/htpasswd /usr/sbin/rotatelogs 
+# Fix path to instdso in special.mk
+sed -i '/instdso/s,top_srcdir,top_builddir,' \
+    $RPM_BUILD_ROOT%{_libdir}/apache2/build/special.mk
 
-for i in %{cflcmd}; do \
-  echo $i 
-  mv $RPM_BUILD_ROOT$i $RPM_BUILD_ROOT$i"2";
-done;
-
-mv $RPM_BUILD_ROOT/%{_sbindir}/apxs $RPM_BUILD_ROOT/%{_bindir}/apxs
-
-%define cflman usr/share/man/man1/dbmmanage.1 usr/share/man/man1/htdigest.1 usr/share/man/man1/htpasswd.1 usr/share/man/man8/rotatelogs.8 usr/share/man/man8/suexec.8 usr/share/man/man8/apxs.8 usr/share/man/man8/httpd.8
-
-(cd $RPM_BUILD_ROOT;
-for i in %{cflman}; do \
-    echo $i | sed -e "s|\.1|2\.1|" -e "s|\.8|2\.8|" |    xargs mv $i ;
-    
-done;
-)
-
-#cp $RPM_SOURCE_DIR/config_vars.mk $RPM_BUILD_ROOT/%{_sysconfdir}/%{pkgname}/build/.
-mv $RPM_BUILD_ROOT/%{_sbindir}/suexec $RPM_BUILD_ROOT/%{_libdir}/%{pkgname}/suexec
-
-
-rm -f $RPM_BUILD_ROOT%{_mandir}/man1/ab*
-rm -f $RPM_BUILD_ROOT%{_mandir}/man1/logresolve*
-# conflict with apache 1, so removed...
-rm -f $RPM_BUILD_ROOT%{_mandir}/man8/ab*
-rm -f $RPM_BUILD_ROOT%{_mandir}/man8/logresolve*
-
-# remove unpackaged files
-rm -f $RPM_BUILD_ROOT%{_sysconfdir}/apache2/conf/mime.types \
-      $RPM_BUILD_ROOT%{_libdir}/*.la \
+# Remove unpackaged files
+rm -vf \
       $RPM_BUILD_ROOT%{_libdir}/*.exp \
+      $RPM_BUILD_ROOT/etc/apache2/conf/mime.types \
       $RPM_BUILD_ROOT%{_libdir}/apache2/modules/*.exp \
       $RPM_BUILD_ROOT%{_libdir}/apache2/build/config.nice \
-      $RPM_BUILD_ROOT%{_sbindir}/{apache2,checkgid,dbmmanage,envvars*} \
-      $RPM_BUILD_ROOT%{docroot}/html/* \
-      $RPM_BUILD_ROOT%{contentdir}/html/* \
+      $RPM_BUILD_ROOT%{_bindir}/{ap?-config,dbmmanage} \
+      $RPM_BUILD_ROOT%{_sbindir}/{checkgid,envvars*} \
+      $RPM_BUILD_ROOT%{contentdir}/htdocs/* \
+      $RPM_BUILD_ROOT%{_mandir}/man1/dbmmanage.* \
       $RPM_BUILD_ROOT%{contentdir}/cgi-bin/*
 
+rm -rf $RPM_BUILD_ROOT/etc/apache2/conf/{original,extra}
+
+
+
 %triggerpostun -- apache < 2.0
 /sbin/chkconfig --add apache2
 
 
 %post
-# Register the httpd service
-for mpm in %{mpms}; do
-  /sbin/update-alternatives --install %{_sbindir}/apache2 apache2 %{_sbindir}/apache2.$mpm 20;
-done
-/sbin/update-alternatives --install %{_sbindir}/apache2 apache2 %{_sbindir}/apache2.%{prefer_mpm} 30
 /sbin/chkconfig --add apache2
 
 %preun
 if [ $1 = 0 ]; then
 	/sbin/service apache2 stop > /dev/null 2>&1
 	/sbin/chkconfig --del apache2
-	for mpm in %{mpms}; do
-	  /sbin/update-alternatives --remove apache2 %{_sbindir}/apache2.$mpm;
-	done  
 fi
 
 %postun
@@ -368,21 +379,28 @@ if [ "$1" -ge 1 ]; then
 fi
 /sbin/ldconfig
 
+%define sslcert %{_sysconfdir}/pki/tls/certs/localhost.crt
+%define sslkey %{_sysconfdir}/pki/tls/private/localhost.key
+
 %post -n mod_ssl-apache2
-/sbin/ldconfig ### is this needed?
 umask 077
 
-if [ ! -f %{_sysconfdir}/apache2/conf/ssl.key/server.key ] ; then
-%{_bindir}/openssl genrsa -rand /proc/apm:/proc/cpuinfo:/proc/dma:/proc/filesystems:/proc/interrupts:/proc/ioports:/proc/pci:/proc/rtc:/proc/uptime 1024 > %{_sysconfdir}/apache2/conf/ssl.key/server.key 2> /dev/null
+if [ -f %{sslkey} -o -f %{sslcert} ]; then
+  exit 0
 fi
 
-FQDN=`hostname`
+%{_bindir}/openssl genrsa \
+  -rand /proc/apm:/proc/cpuinfo:/proc/dma:/proc/filesystems:/proc/interrupts:/proc/ioports:/proc/pci:/proc/rtc:/proc/uptime \
+  2048 > %{sslkey} 2> /dev/null ||:
+
+FQDN=`hostname` ||:
 if [ "x${FQDN}" = "x" ]; then
    FQDN=localhost.localdomain
 fi
-
-if [ ! -f %{_sysconfdir}/apache2/conf/ssl.crt/server.crt ] ; then
-cat << EOF | %{_bindir}/openssl req -new -key %{_sysconfdir}/apache2/conf/ssl.key/server.key -x509 -days 365 -out %{_sysconfdir}/apache2/conf/ssl.crt/server.crt 2>/dev/null
+   
+cat << EOF | %{_bindir}/openssl req -new -key %{sslkey} \
+         -x509 -sha256 -days 3650 -set_serial $RANDOM -extensions v3_req \
+         -out %{sslcert} 2>/dev/null ||:
 --
 SomeState
 SomeCity
@@ -391,7 +409,6 @@ SomeOrganizationalUnit
 ${FQDN}
 root@${FQDN}
 EOF
-fi
 
 %clean
 rm -rf $RPM_BUILD_ROOT
@@ -401,91 +418,118 @@ rm -rf $RPM_BUILD_ROOT
 
 %doc ABOUT_APACHE README CHANGES LAYOUT LICENSE
 %doc migration.html migration.css
+%doc docs/conf/extra/*.conf
 
 %dir %{_sysconfdir}/apache2
 %{_sysconfdir}/apache2/modules
 %{_sysconfdir}/apache2/logs
 %{_sysconfdir}/apache2/run
 %dir %{_sysconfdir}/apache2/conf
-%config(noreplace) %{_sysconfdir}/apache2/conf/*.conf
+%config(noreplace) %{_sysconfdir}/apache2/conf/httpd.conf
+%config(noreplace) %{_sysconfdir}/apache2/conf/apache2.conf
 %config(noreplace) %{_sysconfdir}/apache2/conf/magic
 
-%config %{_sysconfdir}/logrotate.d/apache2
+%config(noreplace) %{_sysconfdir}/logrotate.d/apache2
+
 %config %{_sysconfdir}/rc.d/init.d/apache2
 
 %dir %{_sysconfdir}/apache2/conf.d
 %{_sysconfdir}/apache2/conf.d/README
+%config(noreplace) %{_sysconfdir}/apache2/conf.d/*.conf
+%exclude %{_sysconfdir}/apache2/conf.d/ssl.conf
+%exclude %{_sysconfdir}/apache2/conf.d/manual.conf
+
+%dir %{_sysconfdir}/apache2/conf.modules.d
+%{_sysconfdir}/apache2/conf.modules.d/README
+%config(noreplace) %{_sysconfdir}/apache2/conf.modules.d/*.conf
+%exclude %{_sysconfdir}/apache2/conf.modules.d/00-ssl.conf
 
-%dir %{_sysconfdir}/apache2/conf/extra
-%config %{_sysconfdir}/apache2/conf/extra/*
+%dir %{_sysconfdir}/apache2/sites.d
 
-%dir %{_sysconfdir}/apache2/conf/original
-%{_sysconfdir}/apache2/conf/original/*
+%{_prefix}/lib/tmpfiles.d/apache2.conf
 
 %{_bindir}/ab
 %{_bindir}/ht*
 %{_bindir}/logresolve
 %{_sbindir}/ht*
-%{_sbindir}/apache2.*
+%{_sbindir}/apache2
+%{_sbindir}/apachectl
 %{_sbindir}/apache2ctl
-%{_sbindir}/rotatelogs2
-%attr(4510,root,%{suexec_caller}) %{_libdir}/%{pkgname}/suexec
+%{_sbindir}/rotatelogs
+%{_sbindir}/fcgistarter
+%attr(4510,root,%{suexec_caller}) %{_sbindir}/suexec
 
 %dir %{_libdir}/apache2
 %dir %{_libdir}/apache2/modules
-# everything but mod_ssl.so:
-%{_libdir}/apache2/modules/mod_[a-r]*.so
-%{_libdir}/apache2/modules/mod_s[petu]*.so
-%{_libdir}/apache2/modules/mod_[t-z]*.so
+%{_libdir}/apache2/modules/mod_*.so
+%exclude %{_libdir}/apache2/modules/mod_ssl.so
 
 %dir %{contentdir}
-%dir %{contentdir}/cgi-bin
-%dir %{contentdir}/html
 %dir %{contentdir}/icons
 %dir %{contentdir}/error
 %dir %{contentdir}/error/include
+%dir %{contentdir}/noindex
 %{contentdir}/icons/*
 %{contentdir}/error/README
-%{contentdir}/error/noindex.html
-%config(noreplace) %{contentdir}/error/*.var
-%config(noreplace) %{contentdir}/error/include/*.html
+%{contentdir}/error/*.var
+%{contentdir}/error/include/*.html
+%{contentdir}/noindex/index.html
 
 %dir %{docroot}/html
+%dir /var/www/cgi-bin
 
-%attr(0700,root,root) %dir %{_localstatedir}/log/apache2
+%attr(0710,root,www-data) %dir /run/apache2
+%attr(0700,www-data,www-data) %dir /run/apache2/htcacheclean
 
+%attr(0700,root,root) %dir %{_localstatedir}/log/apache2
 %attr(0700,www-data,www-data) %dir %{_localstatedir}/lib/dav
+%attr(0700,www-data,www-data) %dir %{_localstatedir}/cache/apache2
+%attr(0700,www-data,www-data) %dir %{_localstatedir}/cache/apache2/proxy
 
 %{_mandir}/man1/*
+%exclude %{_mandir}/man1/apxs*
 
 %{_mandir}/man8/*
 
+
 %files manual
 %defattr(-,root,root)
 %{contentdir}/manual
+%config(noreplace) %{_sysconfdir}/apache2/conf.d/manual.conf
+
 
 %files -n mod_ssl-apache2
 %defattr(-,root,root)
 %{_libdir}/apache2/modules/mod_ssl.so
+%config(noreplace) %{_sysconfdir}/apache2/conf.modules.d/00-ssl.conf
 %config(noreplace) %{_sysconfdir}/apache2/conf.d/ssl.conf
-%attr(0700,root,root) %dir %{_sysconfdir}/apache2/conf/ssl.*
-%config %{_sysconfdir}/apache2/conf/Makefile
-%config %{_sysconfdir}/apache2/conf/ssl.*/*
-%attr(0700,www-data,root) %dir %{_localstatedir}/cache/mod_ssl
-%attr(0600,www-data,root) %ghost %{_localstatedir}/cache/mod_ssl/scache.dir
-%attr(0600,www-data,root) %ghost %{_localstatedir}/cache/mod_ssl/scache.pag
-%attr(0600,www-data,root) %ghost %{_localstatedir}/cache/mod_ssl/scache.sem
+%attr(0700,www-data,www-data) %dir %{_localstatedir}/cache/apache2/ssl
+
 
 %files devel
 %defattr(-,root,root)
 %{_includedir}/apache2
-%{_sysconfdir}/apache2/build
 %{_bindir}/apxs
-%{_mandir}/man?/apxs*
+%{_mandir}/man1/apxs*
+%dir %{_libdir}/apache2/build
 %{_libdir}/apache2/build/*.mk
 %{_libdir}/apache2/build/*.sh
+%{_sysconfdir}/rpm/macros.apache2
+
 
 %changelog
+* Wed Jun 25 2014 Daisuke SUZUKI <daisuke@vinelinux.org> 2.4.9-1
+- update to 2.4.9
+- remove suffix '2' from {htdigest,htpasswd,rotatelogs}2
+- use /run instead of /var/run
+- remove /etc/apache2/conf/ssl* , use /etc/pki now.
+- move suexec from %%{_libdir}/apache2 to %%{_sbindir}
+- split all LoadModules to conf.modules.d/*.conf
+- split module configs to conf.d/*.conf
+- cleanup docroot, move apache specific files to %%{_datadir}/apache2
+- add BR: lua-devel, libxml2-devel
+- add /etc/apache2/sites.d for virtual host settings.
+
 * Wed Dec 25 2013 Yoji TOYODA <bsyamato@sea.plala.or.jp> 2.2.25-2
 - merge VineSeed spec file
   * Wed Oct 24 2012 Daisuke SUZUKI <daisuke@linux.or.jp> 2.2.23-2