%define contentdir 	%{_var}/www2
%define logdir     	%{_var}/log/%{pname}
%define confdir    	%{_sysconfdir}/%{pname}/conf
%define lport 	   	8092
%define ssllport 	8093
%define pname	 	httpd2
%define	aprelease	beta
%define	apreleasen	28
%define	apversion	2.0
%define ap2uid     	92

Summary: 		Latest Apache HTTP daemon
Name: 			apache2
Version: 		%{apversion}.%{aprelease}%{apreleasen}
Release: 		2
License:        Apache Software License
Vendor:         Apache Software Foundation
Group: 			System Environment/Daemons
Source0: 		httpd://dev.apache.org/dist/httpd-2_0_%{apreleasen}-%{aprelease}.tar.gz
Source1:        cert-stuff.tar.gz
Source2: 		%{pname}.init
Source3: 		%{pname}.log
Patch:			apache-2_0_%{apreleasen}-%{aprelease}.patch
BuildRoot: 		/var/tmp/%{name}-%{apreleasen}-%{aprelease}-root
Requires: 		initscripts >= 3.25
Requires: 		openssl >= 0.9.6
BuildRequires:	openssl-devel >= 0.9.6
Prereq: 		/sbin/chkconfig
URL:            http://httpd.apache.org/
Packager:       Henri Gomez <hgomez@slib.fr>
Obsoletes:      apr

%description
Apache is a powerful, full-featured, efficient and freely-available
Web server. Apache is also the most popular Web server on the
Internet. Apache 2.0 is the new generation of Apache HTTP server
using many advanced features.


%package devel
Group: 		Development/Libraries
Summary: 	Module development tools for apache2

%description devel
The apache2-devel package contains header files and the
apxs script needed to build Dynamic Shared Objects (DSOs) for Apache.

If you are installing apache2, and want to be able
to compile or develop additional modules, you'll have to
install this package.


%package manual
Group: Documentation
Summary: Documentation for the Apache Web server.

%description manual
The apache-manual package contains the complete manual and reference
guide for the Apache Web server.  If you need Apache documentation
installed on the local machine, install this package.  The information
can also be found on the Web at http://httpd.apache.org/


%prep 
%setup -n httpd-2_0_%{apreleasen}

# patch apachectl to make it follow sbindir for binaries
# patch apxs2 to make it follow sbindir for binaries and config.mk in /usr/lib/apache2
# patch httpd-conf to replace <IfModule mod_ssl.c> by <IfDefine HAVE_SSL>
# patch Makefile.in to respect manualdir
%patch

# set ssl port to 8093
perl -pi -e "s|443|%{ssllport}|g;" docs/conf/ssl-std.conf

# replace <IfDefine SSL> by <IfDefine HAVE_SSL> provided by init script
perl -pi -e "s|<IfDefine SSL>|<IfDefine HAVE_SSL>|g;" docs/conf/ssl-std.conf

# comment ServerName in ssl
perl -pi -e "s|ServerName|#ServerName|g;" docs/conf/ssl-std.conf

# change logs/http2.pid to /var/run/httpd2.pid
perl -pi -e "s|logs/httpd.pid|%{_var}/run/%{pname}.pid|g;" docs/conf/httpd-std.conf

# change logs/ to /var/log/httpd2/
perl -pi -e "s|logs/|%{logdir}/|g;" docs/conf/httpd-std.conf
perl -pi -e "s|logs/|%{logdir}/|g;" docs/conf/ssl-std.conf

# change conf in ssl conf
perl -pi -e "s|\@\@\ServerRoot\@\@/conf/|%{confdir}/|g;" docs/conf/ssl-std.conf

# change conf/ to /etc/httpd2/conf/
perl -pi -e "s|conf/|%{confdir}/|g;" docs/conf/httpd-std.conf

# set @@ServerRoot@@/htdocs to /var/www2/html
perl -pi -e "s|\@\@\ServerRoot\@\@/htdocs|%{contentdir}/html|g;" docs/conf/httpd-std.conf
perl -pi -e "s|\@\@\ServerRoot\@\@/htdocs|%{contentdir}/html|g;" docs/conf/ssl-std.conf

# set @@ServerRoot@@/ to /var/www2/
perl -pi -e "s|\@\@\ServerRoot\@\@/|%{contentdir}/|g;" docs/conf/httpd-std.conf
perl -pi -e "s|\@\@\ServerRoot\@\@/|%{contentdir}/|g;" docs/conf/ssl-std.conf

# set @@ServerRoot@@ to /usr
perl -pi -e "s|\@\@\ServerRoot\@\@|/usr|g;" docs/conf/httpd-std.conf

# change userid from nobody to apache2
perl -pi -e "s|nobody|%{name}|g;" docs/conf/httpd-std.conf

# set Group to apache2 instead of #-1 which failed under Redhat 6.x
perl -pi -e "s|Group #-1|Group %{name}|g;" docs/conf/httpd-std.conf

%build
cat >> config.layout <<EOF
#   RedHat 6.x layout
<Layout RedHat6>
	prefix:        %{_sysconfdir}/%{pname}
	exec_prefix:   %{_prefix}
	bindir:        %{_bindir}
	sbindir:       %{_sbindir}
	libexecdir:    %{_libdir}/%{name}
	mandir:        %{_mandir}
	sysconfdir:    %{_sysconfdir}/%{pname}/conf
	datadir:       %{contentdir}
	iconsdir:      %{contentdir}/icons
	errordir:      %{contentdir}/error
	manualdir:     %{contentdir}/manual
	htdocsdir:     %{contentdir}/html
	cgidir:        %{contentdir}/cgi-bin
	includedir:    %{_includedir}/%{name}
	localstatedir: %{_localstatedir}
    installbuilddir: %{_sysconfdir}/%{pname}/build
	runtimedir:    %{_var}/run
	logdir:        %{logdir}
	proxycachedir: %{_var}/cache/%{pname}
</Layout>
EOF

CFLAGS="$RPM_OPT_FLAGS" ./configure \
	--with-program-name=%{pname} \
	--with-port=8092 \
	--with-mpm=threaded \
    --prefix=%{_sysconfdir}/%{pname} \
    --exec-prefix=%{_prefix} \
    --bindir=%{_sbindir} \
    --sbindir=%{_sbindir} \
    --libexecdir=%{_libdir}/%{name} \
    --mandir=%{_mandir} \
    --localstatedir=%{_localstatedir} \
    --sysconfdir=%{_sysconfdir}/%{pname}/conf \
    --datadir=%{contentdir} \
    --includedir=%{_includedir}/%{name} \
	--enable-layout=RedHat6 \
    --enable-modules=all \
    --enable-mods-shared=all \
    --enable-ssl \
    --enable-so \
    --with-ssl=/usr/include/

# quick patches to fix httpd.conf and cgisock locations
#perl -pi -e 's|conf/%{pname}.conf|%{_sysconfdir}/%{pname}/conf/%{pname}.conf|g' include/ap_config_auto.h
#perl -pi -e 's|logs/cgisock|%{_var}/log/%{pname}/cgisock|g' ./modules/generators/mod_cgid.c

# didn't find a better way to define these :(

cat >> include/ap_config_auto.h <<EOF

#define SERVER_CONFIG_FILE	"%{confdir}/%{pname}.conf"
#define DOCUMENT_LOCATION	"%{contentdir}/html"
#define SUEXEC_BIN			"%{_sbindir}/suexec2"
#define DEFAULT_SCOREBOARD	"%{_var}/run/%{pname}.apache_runtime_status"
#define DEFAULT_PIDLOG		"%{_var}/run/%{pname}.pid"
#define DEFAULT_LOCKFILE	"%{_var}/run/%{pname}.accept.lock"
#define DEFAULT_ERRORLOG	"%{_var}/log/%{pname}/error_log"

EOF

make

%install
rm -rf $RPM_BUILD_ROOT

make install prefix=%{_sysconfdir}/%{pname} bindir=$RPM_BUILD_ROOT%{_sbindir} sbindir=$RPM_BUILD_ROOT%{_sbindir} installbuilddir=$RPM_BUILD_ROOT%{_sysconfdir}/%{pname}/build libexecdir=$RPM_BUILD_ROOT%{_libdir}/%{name} mandir=$RPM_BUILD_ROOT%{_mandir} sysconfdir=$RPM_BUILD_ROOT%{_sysconfdir}/%{pname}/conf datadir=$RPM_BUILD_ROOT%{contentdir} iconsdir=$RPM_BUILD_ROOT%{contentdir}/icons errordir=$RPM_BUILD_ROOT%{contentdir}/error htdocsdir=$RPM_BUILD_ROOT%{contentdir}/html manualdir=$RPM_BUILD_ROOT%{contentdir}/manual cgidir=$RPM_BUILD_ROOT%{contentdir}/cgi-bin includedir=$RPM_BUILD_ROOT%{_includedir}/%{name} localstatedir=$RPM_BUILD_ROOT%{_localstatedir} runtimedir=$RPM_BUILD_ROOT{_var}/run logdir=$RPM_BUILD_ROOT%{_var}/log/%{pname} proxycachedir=$RPM_BUILD_ROOT%{_var}/cache/%{pname}

# install apr & apr-utils

mkdir -p $RPM_BUILD_ROOT%{_libdir}
cp srclib/apr/.libs/libapr.so.0.0.0 $RPM_BUILD_ROOT%{_libdir}
cp srclib/apr-util/.libs/libaprutil.so.0.0.0 $RPM_BUILD_ROOT%{_libdir}
cp srclib/apr/.libs/libapr.a $RPM_BUILD_ROOT%{_libdir}
cp srclib/apr-util/.libs/libaprutil.a $RPM_BUILD_ROOT%{_libdir}

# copy ssl.conf
cp docs/conf/ssl-std.conf $RPM_BUILD_ROOT%{confdir}/ssl.conf
# install snakeoil stuff
(cd $RPM_BUILD_ROOT%{confdir} && tar xvzf %{SOURCE1})

# patch modules/ to lib/apache2/
# perl -pi -e "s|modules/|lib/%{name}/|g;" $RPM_BUILD_ROOT%{confdir}/%{pname}.conf

# httpd2 allready set
for i in ab apxs apachectl logresolve rotatelogs; do
	mv $RPM_BUILD_ROOT%{_sbindir}/${i} $RPM_BUILD_ROOT%{_sbindir}/${i}2
done

# make symlink modules -> /usr/lib/apache2 and logs -> /var/log/httpd2
# follow Redhat 7.x spec file
(cd  $RPM_BUILD_ROOT%{_sysconfdir}/%{pname} && ln -s ../..%{_libdir}/%{name} modules)
(cd  $RPM_BUILD_ROOT%{_sysconfdir}/%{pname} && ln -s ../..%{_var}/log/%{pname} logs)

# bindir is not created by install
mkdir -p $RPM_BUILD_ROOT%{_bindir}

for i in htdigest htpasswd; do
    mv $RPM_BUILD_ROOT%{_sbindir}/${i} $RPM_BUILD_ROOT%{_bindir}/${i}2
done

# ab.8  apachectl.8  apxs.8  dbmmanage.1  htdigest.1  htpasswd.1  httpd.8  logresolve.8  rotatelogs.8  suexec.8
# no suexec yet

# rename xxxx man pages to xxxx2 and install in rigth subdir 
for i in dbmmanage htdigest htpasswd; do
	mv $RPM_BUILD_ROOT%{_mandir}/man1/${i}.1 $RPM_BUILD_ROOT%{_mandir}/man1/${i}2.1
done

# no suexec yet
for i in ab apachectl apxs httpd logresolve rotatelogs; do
	mv $RPM_BUILD_ROOT%{_mandir}/man8/${i}.8 $RPM_BUILD_ROOT%{_mandir}/man8/${i}2.8
done

# the search script is not used
rm -rf $RPM_BUILD_ROOT/%{contentdir}/manual/search/

# sysv init and logging
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/{logrotate.d,rc.d/init.d}
install %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/%{pname}
install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/%{pname}

# misc not created by install
mkdir -p $RPM_BUILD_ROOT%{_var}/cache/%{pname}
mkdir -p $RPM_BUILD_ROOT%{_var}/log/%{pname}

# remove unnecessary .la (DSO)
rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/*.la

# cleanup config_var.mk
perl -pi -e "s|$RPM_BUILD_ROOT/|/|g" $RPM_BUILD_ROOT%{_sysconfdir}/%{pname}/build/config_vars.mk

%clean
rm -rf "$RPM_BUILD_ROOT"

%pre
# Add the "apache2" user
# we need a shell to be able to use su - later
/usr/sbin/useradd -c "Apache2" -u %{ap2uid} \
    -s /bin/bash -r -d %{contentdir} %{name} 2> /dev/null || :

%post
# apr & apr-utils
/sbin/ldconfig
#/sbin/chkconfig --add %{pname}
echo "For security purposes, %{name} is no more activated by"
echo "default so don't forget to use chkconfig under root : "
echo "/sbin/chkconfig --add %{pname}"
echo ""

%preun
if [ $1 = 0 ]; then
	if [ -f /var/lock/subsys/%{pname} ]; then
		%{_sysconfdir}/rc.d/init.d/%{pname} stop
	fi
	if [ -f %{_sysconfdir}/rc.d/init.d/%{pname} ]; then
		/sbin/chkconfig --del %{pname}
	fi
    /usr/sbin/userdel %{name}
fi


%files
%defattr(-,root,root)
%dir 				%{_sysconfdir}/%{pname}/conf
%dir 				%{_sysconfdir}/%{pname}/conf/ssl.crl
%dir 				%{_sysconfdir}/%{pname}/conf/ssl.crt
%dir 				%{_sysconfdir}/%{pname}/conf/ssl.csr
%dir 				%{_sysconfdir}/%{pname}/conf/ssl.key
%dir 				%{_sysconfdir}/%{pname}/conf/ssl.prm
%config(noreplace) 	%{_sysconfdir}/%{pname}/conf/%{pname}.conf
%config(noreplace) 	%{_sysconfdir}/%{pname}/conf/ssl.conf
%config 			%{_sysconfdir}/%{pname}/conf/magic
%config 			%{_sysconfdir}/%{pname}/conf/mime.types
%config             %{_sysconfdir}/%{pname}/conf/ssl.crl/*
%config             %{_sysconfdir}/%{pname}/conf/ssl.crt/*
%config             %{_sysconfdir}/%{pname}/conf/ssl.csr/*
%config             %{_sysconfdir}/%{pname}/conf/ssl.key/*
%config             %{_sysconfdir}/%{pname}/conf/ssl.prm/*

%{_sysconfdir}/%{pname}/modules
%{_sysconfdir}/%{pname}/logs

%{_sysconfdir}/%{pname}/conf/highperformance-std.conf
%{_sysconfdir}/%{pname}/conf/highperformance.conf
%{_sysconfdir}/%{pname}/conf/httpd-std.conf
%config 				%{_sysconfdir}/logrotate.d/%{pname}
%config 				%{_sysconfdir}/rc.d/init.d/%{pname}

%doc {ABOUT_APACHE,CHANGES,INSTALL,KEYS,LICENSE,README}

%dir %{contentdir}
%dir %{contentdir}/cgi-bin
%{contentdir}/html
%{contentdir}/icons
%{contentdir}/error

%{_libdir}/*.so*
%{_libdir}/%{name}/*.so
%{_mandir}/man1/*
%{_mandir}/man8/ab*
%{_mandir}/man8/apachectl*
%{_mandir}/man8/httpd*
%{_mandir}/man8/logresolve*
%{_mandir}/man8/rotatelogs*
#%{_mandir}/man8/suexec*

%{_bindir}/htdigest2
%{_bindir}/htpasswd2
%{_sbindir}/ab2
%{_sbindir}/apachectl2
%{_sbindir}/%{pname}
%{_sbindir}/logresolve2
%{_sbindir}/rotatelogs2
#%{_sbindir}/suexec2

%dir %{_var}/cache/%{pname}
%dir %{_var}/log/%{pname}

%files devel
%defattr(-,root,root)
%{_sysconfdir}/%{pname}/build
%attr( - ,root,root)  			%{_includedir}/apache2
%attr( - ,root,root)  			%{_sbindir}/apxs2
%attr( - ,root,root)  			%{_mandir}/man8/apxs*
%attr( - ,root,root)            %{_libdir}/*.a

%files manual
%defattr(-,root,root)
%{contentdir}/manual

%changelog
* Tue Nov 22 2001 Henri Gomez <hgomez@slib.fr>
- Apache 2.0 beta 28 RPM release 2
- fix apxs2 and config_vars.mk
- build stuff installed in %{_sysconfdir}/%{pname}/build

* Tue Nov 22 2001 Henri Gomez <hgomez@slib.fr>
- Apache 2.0 alpha 27 RPM release 2
- fix apxs2 and config_vars.mk
- build stuff installed in %{_sysconfdir}/%{pname}/build

* Mon Nov 21 2001 Henri Gomez <hgomez@slib.fr>
- Apache 2.0 beta 28 RPM

* Fri Nov 16 2001 Henri Gomez <hgomez@slib.fr>
- Apache 2.0 alpha 27
- Apache 2.0 will run under apache2 user (%{ap2uid}) instead of 
  nobody to follow Redhat 7.x
- Document root is now located in %{contentdir} to follow Redhat 7.x
  way which install stuff in /var/www
- manual is now installed in %{contentdir}/manual instead of html/manual
- apr and apr-utils are installed in %{_libdir}
- WARNING - dummy CERT installed into confdir (from Apache-mod_ssl)
- default HTTP port is 8092, and HTTPS port is 8093
- added man pages
- added error dir %{contentdir}/error

* Tue Jul 24 2001 Henri Gomez <hgomez@slib.fr>
- Apache 2.0 alpha 21 
- built under Redhat 6.2 + updates and rpm 3.0.5

* Mon May 21 2001 Henri Gomez <hgomez@slib.fr>
- Apache 2.0 alpha 18 RPM release 1
- built under Redhat 6.2 + updates and rpm 3.0.5
- DAV is built statically (can't built it in DSO)

* Mon Mar 26 2001 Henri Gomez <hgomez@slib.fr>
- Apache 2.0 alpha 15 RPM release 1

* Mon Mar 12 2001 Henri Gomez <hgomez@slib.fr>
- Apache 2.0 alpha 14 RPM release 2
- grabbed latest .tar.gz from dev.apache.org

* Fri Mar 08 2001 Henri Gomez <hgomez@slib.fr>
- Apache 2.0 alpha 14

* Mon Feb 26 2001 Henri Gomez <hgomez@slib.fr>
- Apache 2.0 alpha 12
- updates of module names (log_config_module, *auth*) 

* Thu Feb 15 2001 Henri Gomez <hgomez@slib.fr>
- Apache 2.0 alpha 11
- dexter renamed to perchild
- mod_proxy removed

* Tue Feb 13 2001 Henri Gomez <hgomez@slib.fr>
- mod_tls patch included ;-)

* Mon Feb 12 2001 Henri Gomez <hgomez@slib.fr>
- added mod_tls
- now include/ap_config_auto.h is used instead of include/ap_config_path.h 

* Fri Feb 09 2001 Henri Gomez <hgomez@slib.fr>
- CVS grab 2001/02/09 06:00 CET
- include apxs patch

* Thu Feb 08 2001 Henri Gomez <hgomez@slib.fr>
- CVS grab 2001/02/08 11:00 CET

* Mon Feb 05 2001 Henri Gomez <hgomez@slib.fr>
- CVS grab 2001/02/05 13:00 CET 

* Thu Feb 01 2001 Henri Gomez <hgomez@slib.fr>
- apache 2.0 from cvs 2001/02/01
- nearly all modules in shared mode (modified httpd2.conf)
- built under Redhat 6.2 + updates + rpm 3.0.5

* Sat Jan 27 2001 Henri Gomez <hgomez@slib.fr>
- Initial RPM for apache 2.0 from cvs 2001/01/27
- all command are postfixed with 2: 
  ab2, apachectl2, httpd2, logresolve2, rotatelogs2, apxs2 
- some modules are not here since compilation failed :
  charset_lite, cache, disk-cache, eneric-hook-export, generic-hook-import, rewrite
- some adaptation to help build on RH7.0
- listen port is 8092 instead of 80
