1%define contentdir /var/www
2%define suexec_caller apache
3%define mmn 20120211
4
5Summary: Apache HTTP Server
6Name: httpd
7Version: 2.4.9
8Release: 1
9URL: http://httpd.apache.org/
10Vendor: Apache Software Foundation
11Source0: http://www.apache.org/dist/httpd/httpd-%{version}.tar.bz2
12License: Apache License, Version 2.0
13Group: System Environment/Daemons
14BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
15BuildRequires: autoconf, perl, pkgconfig, findutils
16BuildRequires: zlib-devel, libselinux-devel, libuuid-devel
17BuildRequires: apr-devel >= 1.4.0, apr-util-devel >= 1.4.0, pcre-devel >= 5.0
18Requires: initscripts >= 8.36, /etc/mime.types
19Obsoletes: httpd-suexec
20Requires(pre): /usr/sbin/useradd
21Requires(post): chkconfig
22Provides: webserver
23Provides: mod_dav = %{version}-%{release}, httpd-suexec = %{version}-%{release}
24Provides: httpd-mmn = %{mmn}
25
26%description
27Apache is a powerful, full-featured, efficient, and freely-available
28Web server. Apache is also the most popular Web server on the
29Internet.
30
31%package devel
32Group: Development/Libraries
33Summary: Development tools for the Apache HTTP server.
34Obsoletes: secureweb-devel, apache-devel
35Requires: apr-devel, apr-util-devel, pkgconfig, libtool
36Requires: httpd = %{version}-%{release}
37
38%description devel
39The httpd-devel package contains the APXS binary and other files
40that you need to build Dynamic Shared Objects (DSOs) for the
41Apache HTTP Server.
42
43If you are installing the Apache HTTP server and you want to be
44able to compile or develop additional modules for Apache, you need
45to install this package.
46
47%package manual
48Group: Documentation
49Summary: Documentation for the Apache HTTP server.
50Requires: httpd = :%{version}-%{release}
51Obsoletes: secureweb-manual, apache-manual
52
53%description manual
54The httpd-manual package contains the complete manual and
55reference guide for the Apache HTTP server. The information can
56also be found at http://httpd.apache.org/docs/.
57
58%package tools
59Group: System Environment/Daemons
60Summary: Tools for use with the Apache HTTP Server
61
62%description tools
63The httpd-tools package contains tools which can be used with 
64the Apache HTTP Server.
65
66%package -n mod_authnz_ldap
67Group: System Environment/Daemons
68Summary: LDAP modules for the Apache HTTP server
69BuildRequires: openldap-devel
70Requires: httpd = %{version}-%{release}, httpd-mmn = %{mmn}, apr-util-ldap
71
72%description -n mod_authnz_ldap
73The mod_authnz_ldap module for the Apache HTTP server provides
74authentication and authorization against an LDAP server, while
75mod_ldap provides an LDAP cache.
76
77%package -n mod_lua
78Group: System Environment/Daemons
79Summary: Lua language module for the Apache HTTP server
80BuildRequires: lua-devel
81Requires: httpd = %{version}-%{release}, httpd-mmn = %{mmn}
82
83%description -n mod_lua
84The mod_lua module for the Apache HTTP server allows the server to be
85extended with scripts written in the Lua programming language.
86
87%package -n mod_proxy_html
88Group: System Environment/Daemons
89Summary: Proxy HTML filter modules for the Apache HTTP server
90Epoch: 1
91BuildRequires: libxml2-devel
92Requires: httpd = 0:%{version}-%{release}, httpd-mmn = %{mmn}
93
94%description -n mod_proxy_html
95The mod_proxy_html module for the Apache HTTP server provides
96a filter to rewrite HTML links within web content when used within
97a reverse proxy environment. The mod_xml2enc module provides
98enhanced charset/internationalisation support for mod_proxy_html.
99
100%package -n mod_socache_dc
101Group: System Environment/Daemons
102Summary: Distcache shared object cache module for the Apache HTTP server
103BuildRequires: distcache-devel
104Requires: httpd = %{version}-%{release}, httpd-mmn = %{mmn}
105
106%description -n mod_socache_dc
107The mod_socache_dc module for the Apache HTTP server allows the shared
108object cache to use the distcache shared caching mechanism.
109
110%package -n mod_ssl
111Group: System Environment/Daemons
112Summary: SSL/TLS module for the Apache HTTP server
113Epoch: 1
114BuildRequires: openssl-devel
115Requires(post): openssl, /bin/cat
116Requires(pre): httpd
117Requires: httpd = 0:%{version}-%{release}, httpd-mmn = %{mmn}
118
119%description -n mod_ssl
120The mod_ssl module provides strong cryptography for the Apache Web
121server via the Secure Sockets Layer (SSL) and Transport Layer
122Security (TLS) protocols.
123
124%prep
125%setup -q
126
127# Safety check: prevent build if defined MMN does not equal upstream MMN.
128vmmn=`echo MODULE_MAGIC_NUMBER_MAJOR | cpp -include include/ap_mmn.h | sed -n '
129/^2/p'`
130if test "x${vmmn}" != "x%{mmn}"; then
131   : Error: Upstream MMN is now ${vmmn}, packaged MMN is %{mmn}.
132   : Update the mmn macro and rebuild.
133   exit 1
134fi
135
136%build
137# forcibly prevent use of bundled apr, apr-util, pcre
138rm -rf srclib/{apr,apr-util,pcre}
139
140%configure \
141	--enable-layout=RPM \
142	--libdir=%{_libdir} \
143	--sysconfdir=%{_sysconfdir}/httpd/conf \
144	--includedir=%{_includedir}/httpd \
145	--libexecdir=%{_libdir}/httpd/modules \
146	--datadir=%{contentdir} \
147        --with-installbuilddir=%{_libdir}/httpd/build \
148        --enable-mpms-shared=all \
149        --with-apr=%{_prefix} --with-apr-util=%{_prefix} \
150	--enable-suexec --with-suexec \
151	--with-suexec-caller=%{suexec_caller} \
152	--with-suexec-docroot=%{contentdir} \
153	--with-suexec-logfile=%{_localstatedir}/log/httpd/suexec.log \
154	--with-suexec-bin=%{_sbindir}/suexec \
155	--with-suexec-uidmin=500 --with-suexec-gidmin=100 \
156        --enable-pie \
157        --with-pcre \
158        --enable-mods-shared=all \
159        --enable-ssl --with-ssl --enable-socache-dc --enable-bucketeer \
160        --enable-case-filter --enable-case-filter-in \
161        --disable-imagemap
162
163make %{?_smp_mflags}
164
165%install
166rm -rf $RPM_BUILD_ROOT
167make DESTDIR=$RPM_BUILD_ROOT install
168
169# for holding mod_dav lock database
170mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/dav
171
172# create a prototype session cache
173mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/cache/mod_ssl
174touch $RPM_BUILD_ROOT%{_localstatedir}/cache/mod_ssl/scache.{dir,pag,sem}
175
176# Make the MMN accessible to module packages
177echo %{mmn} > $RPM_BUILD_ROOT%{_includedir}/httpd/.mmn
178
179# Set up /var directories
180mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log/httpd
181mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/cache/httpd/cache-root
182
183# symlinks for /etc/httpd
184ln -s ../..%{_localstatedir}/log/httpd $RPM_BUILD_ROOT/etc/httpd/logs
185ln -s ../..%{_localstatedir}/run $RPM_BUILD_ROOT/etc/httpd/run
186ln -s ../..%{_libdir}/httpd/modules $RPM_BUILD_ROOT/etc/httpd/modules
187mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d
188
189# install SYSV init stuff
190mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
191install -m755 ./build/rpm/httpd.init \
192	$RPM_BUILD_ROOT/etc/rc.d/init.d/httpd
193install -m755 ./build/rpm/htcacheclean.init \
194        $RPM_BUILD_ROOT/etc/rc.d/init.d/htcacheclean
195
196# install log rotation stuff
197mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d
198install -m644 ./build/rpm/httpd.logrotate \
199	$RPM_BUILD_ROOT/etc/logrotate.d/httpd
200
201# Remove unpackaged files
202rm -rf $RPM_BUILD_ROOT%{_libdir}/httpd/modules/*.exp \
203       $RPM_BUILD_ROOT%{contentdir}/cgi-bin/* 
204
205# Make suexec a+rw so it can be stripped.  %%files lists real permissions
206chmod 755 $RPM_BUILD_ROOT%{_sbindir}/suexec
207
208%pre
209# Add the "apache" user
210/usr/sbin/useradd -c "Apache" -u 48 \
211	-s /sbin/nologin -r -d %{contentdir} apache 2> /dev/null || :
212
213%post
214# Register the httpd service
215/sbin/chkconfig --add httpd
216/sbin/chkconfig --add htcacheclean
217
218%preun
219if [ $1 = 0 ]; then
220	/sbin/service httpd stop > /dev/null 2>&1
221        /sbin/service htcacheclean stop > /dev/null 2>&1
222	/sbin/chkconfig --del httpd
223        /sbin/chkconfig --del htcacheclean
224fi
225
226%post -n mod_ssl
227umask 077
228
229if [ ! -f %{_sysconfdir}/httpd/conf/server.key ] ; then
230%{_bindir}/openssl genrsa -rand /proc/apm:/proc/cpuinfo:/proc/dma:/proc/filesystems:/proc/interrupts:/proc/ioports:/proc/pci:/proc/rtc:/proc/uptime 1024 > %{_sysconfdir}/httpd/conf/server.key 2> /dev/null
231fi
232
233FQDN=`hostname`
234if [ "x${FQDN}" = "x" ]; then
235   FQDN=localhost.localdomain
236fi
237
238if [ ! -f %{_sysconfdir}/httpd/conf/server.crt ] ; then
239cat << EOF | %{_bindir}/openssl req -new -key %{_sysconfdir}/httpd/conf/server.key -x509 -days 365 -out %{_sysconfdir}/httpd/conf/server.crt 2>/dev/null
240--
241SomeState
242SomeCity
243SomeOrganization
244SomeOrganizationalUnit
245${FQDN}
246root@${FQDN}
247EOF
248fi
249
250%check
251# Check the built modules are all PIC
252if readelf -d $RPM_BUILD_ROOT%{_libdir}/httpd/modules/*.so | grep TEXTREL; then
253   : modules contain non-relocatable code
254   exit 1
255fi
256
257%clean
258rm -rf $RPM_BUILD_ROOT
259
260%files
261%defattr(-,root,root)
262
263%doc ABOUT_APACHE README CHANGES LICENSE NOTICE
264
265%dir %{_sysconfdir}/httpd
266%{_sysconfdir}/httpd/modules
267%{_sysconfdir}/httpd/logs
268%{_sysconfdir}/httpd/run
269%dir %{_sysconfdir}/httpd/conf
270%dir %{_sysconfdir}/httpd/conf.d
271%config(noreplace) %{_sysconfdir}/httpd/conf/httpd.conf
272%config(noreplace) %{_sysconfdir}/httpd/conf/magic
273%config(noreplace) %{_sysconfdir}/httpd/conf/mime.types
274%config(noreplace) %{_sysconfdir}/httpd/conf/extra/httpd-autoindex.conf
275%config(noreplace) %{_sysconfdir}/httpd/conf/extra/httpd-dav.conf
276%config(noreplace) %{_sysconfdir}/httpd/conf/extra/httpd-default.conf
277%config(noreplace) %{_sysconfdir}/httpd/conf/extra/httpd-info.conf
278%config(noreplace) %{_sysconfdir}/httpd/conf/extra/httpd-languages.conf
279%config(noreplace) %{_sysconfdir}/httpd/conf/extra/httpd-manual.conf
280%config(noreplace) %{_sysconfdir}/httpd/conf/extra/httpd-mpm.conf
281%config(noreplace) %{_sysconfdir}/httpd/conf/extra/httpd-multilang-errordoc.conf
282%config(noreplace) %{_sysconfdir}/httpd/conf/extra/httpd-userdir.conf
283%config(noreplace) %{_sysconfdir}/httpd/conf/extra/httpd-vhosts.conf
284%config(noreplace) %{_sysconfdir}/httpd/conf/extra/proxy-html.conf
285%config(noreplace) %{_sysconfdir}/httpd/conf/original/extra/httpd-autoindex.conf
286%config(noreplace) %{_sysconfdir}/httpd/conf/original/extra/httpd-dav.conf
287%config(noreplace) %{_sysconfdir}/httpd/conf/original/extra/httpd-default.conf
288%config(noreplace) %{_sysconfdir}/httpd/conf/original/extra/httpd-info.conf
289%config(noreplace) %{_sysconfdir}/httpd/conf/original/extra/httpd-languages.conf
290%config(noreplace) %{_sysconfdir}/httpd/conf/original/extra/httpd-manual.conf
291%config(noreplace) %{_sysconfdir}/httpd/conf/original/extra/httpd-mpm.conf
292%config(noreplace) %{_sysconfdir}/httpd/conf/original/extra/httpd-multilang-errordoc.conf
293%config(noreplace) %{_sysconfdir}/httpd/conf/original/extra/httpd-userdir.conf
294%config(noreplace) %{_sysconfdir}/httpd/conf/original/extra/httpd-vhosts.conf
295%config(noreplace) %{_sysconfdir}/httpd/conf/original/extra/proxy-html.conf
296%config(noreplace) %{_sysconfdir}/httpd/conf/original/httpd.conf
297
298%config %{_sysconfdir}/logrotate.d/httpd
299%config %{_sysconfdir}/rc.d/init.d/httpd
300%config %{_sysconfdir}/rc.d/init.d/htcacheclean
301
302%{_sbindir}/fcgistarter
303%{_sbindir}/htcacheclean
304%{_sbindir}/httpd
305%{_sbindir}/apachectl
306%attr(4510,root,%{suexec_caller}) %{_sbindir}/suexec
307
308%dir %{_libdir}/httpd
309%dir %{_libdir}/httpd/modules
310%{_libdir}/httpd/modules/mod_access_compat.so
311%{_libdir}/httpd/modules/mod_actions.so
312%{_libdir}/httpd/modules/mod_alias.so
313%{_libdir}/httpd/modules/mod_allowmethods.so
314%{_libdir}/httpd/modules/mod_asis.so
315%{_libdir}/httpd/modules/mod_auth_basic.so
316%{_libdir}/httpd/modules/mod_auth_digest.so
317%{_libdir}/httpd/modules/mod_auth_form.so
318%{_libdir}/httpd/modules/mod_authn_anon.so
319%{_libdir}/httpd/modules/mod_authn_core.so
320%{_libdir}/httpd/modules/mod_authn_dbd.so
321%{_libdir}/httpd/modules/mod_authn_dbm.so
322%{_libdir}/httpd/modules/mod_authn_file.so
323%{_libdir}/httpd/modules/mod_authn_socache.so
324%{_libdir}/httpd/modules/mod_authz_core.so
325%{_libdir}/httpd/modules/mod_authz_dbd.so
326%{_libdir}/httpd/modules/mod_authz_dbm.so
327%{_libdir}/httpd/modules/mod_authz_groupfile.so
328%{_libdir}/httpd/modules/mod_authz_host.so
329%{_libdir}/httpd/modules/mod_authz_owner.so
330%{_libdir}/httpd/modules/mod_authz_user.so
331%{_libdir}/httpd/modules/mod_autoindex.so
332%{_libdir}/httpd/modules/mod_bucketeer.so
333%{_libdir}/httpd/modules/mod_buffer.so
334%{_libdir}/httpd/modules/mod_cache_disk.so
335%{_libdir}/httpd/modules/mod_cache_socache.so
336%{_libdir}/httpd/modules/mod_cache.so
337%{_libdir}/httpd/modules/mod_case_filter.so
338%{_libdir}/httpd/modules/mod_case_filter_in.so
339%{_libdir}/httpd/modules/mod_cgid.so
340%{_libdir}/httpd/modules/mod_charset_lite.so
341%{_libdir}/httpd/modules/mod_data.so
342%{_libdir}/httpd/modules/mod_dav_fs.so
343%{_libdir}/httpd/modules/mod_dav_lock.so
344%{_libdir}/httpd/modules/mod_dav.so
345%{_libdir}/httpd/modules/mod_dbd.so
346%{_libdir}/httpd/modules/mod_deflate.so
347%{_libdir}/httpd/modules/mod_dialup.so
348%{_libdir}/httpd/modules/mod_dir.so
349%{_libdir}/httpd/modules/mod_dumpio.so
350%{_libdir}/httpd/modules/mod_echo.so
351%{_libdir}/httpd/modules/mod_env.so
352%{_libdir}/httpd/modules/mod_expires.so
353%{_libdir}/httpd/modules/mod_ext_filter.so
354%{_libdir}/httpd/modules/mod_file_cache.so
355%{_libdir}/httpd/modules/mod_filter.so
356%{_libdir}/httpd/modules/mod_headers.so
357%{_libdir}/httpd/modules/mod_heartbeat.so
358%{_libdir}/httpd/modules/mod_heartmonitor.so
359%{_libdir}/httpd/modules/mod_include.so
360%{_libdir}/httpd/modules/mod_info.so
361%{_libdir}/httpd/modules/mod_lbmethod_bybusyness.so
362%{_libdir}/httpd/modules/mod_lbmethod_byrequests.so
363%{_libdir}/httpd/modules/mod_lbmethod_bytraffic.so
364%{_libdir}/httpd/modules/mod_lbmethod_heartbeat.so
365%{_libdir}/httpd/modules/mod_log_config.so
366%{_libdir}/httpd/modules/mod_log_debug.so
367%{_libdir}/httpd/modules/mod_log_forensic.so
368%{_libdir}/httpd/modules/mod_logio.so
369%{_libdir}/httpd/modules/mod_macro.so
370%{_libdir}/httpd/modules/mod_mime_magic.so
371%{_libdir}/httpd/modules/mod_mime.so
372%{_libdir}/httpd/modules/mod_mpm_event.so
373%{_libdir}/httpd/modules/mod_mpm_prefork.so
374%{_libdir}/httpd/modules/mod_mpm_worker.so
375%{_libdir}/httpd/modules/mod_negotiation.so
376%{_libdir}/httpd/modules/mod_proxy_ajp.so
377%{_libdir}/httpd/modules/mod_proxy_balancer.so
378%{_libdir}/httpd/modules/mod_proxy_connect.so
379%{_libdir}/httpd/modules/mod_proxy_express.so
380%{_libdir}/httpd/modules/mod_proxy_fcgi.so
381%{_libdir}/httpd/modules/mod_proxy_fdpass.so
382%{_libdir}/httpd/modules/mod_proxy_ftp.so
383%{_libdir}/httpd/modules/mod_proxy_http.so
384%{_libdir}/httpd/modules/mod_proxy_scgi.so
385%{_libdir}/httpd/modules/mod_proxy_wstunnel.so
386%{_libdir}/httpd/modules/mod_proxy.so
387%{_libdir}/httpd/modules/mod_ratelimit.so
388%{_libdir}/httpd/modules/mod_reflector.so
389%{_libdir}/httpd/modules/mod_remoteip.so
390%{_libdir}/httpd/modules/mod_reqtimeout.so
391%{_libdir}/httpd/modules/mod_request.so
392%{_libdir}/httpd/modules/mod_rewrite.so
393%{_libdir}/httpd/modules/mod_sed.so
394%{_libdir}/httpd/modules/mod_session_cookie.so
395%{_libdir}/httpd/modules/mod_session_crypto.so
396%{_libdir}/httpd/modules/mod_session_dbd.so
397%{_libdir}/httpd/modules/mod_session.so
398%{_libdir}/httpd/modules/mod_setenvif.so
399%{_libdir}/httpd/modules/mod_slotmem_plain.so
400%{_libdir}/httpd/modules/mod_slotmem_shm.so
401%{_libdir}/httpd/modules/mod_socache_dbm.so
402%{_libdir}/httpd/modules/mod_socache_memcache.so
403%{_libdir}/httpd/modules/mod_socache_shmcb.so
404%{_libdir}/httpd/modules/mod_speling.so
405%{_libdir}/httpd/modules/mod_status.so
406%{_libdir}/httpd/modules/mod_substitute.so
407%{_libdir}/httpd/modules/mod_suexec.so
408%{_libdir}/httpd/modules/mod_unique_id.so
409%{_libdir}/httpd/modules/mod_unixd.so
410%{_libdir}/httpd/modules/mod_userdir.so
411%{_libdir}/httpd/modules/mod_usertrack.so
412%{_libdir}/httpd/modules/mod_version.so
413%{_libdir}/httpd/modules/mod_vhost_alias.so
414%{_libdir}/httpd/modules/mod_watchdog.so
415
416%dir %{contentdir}
417%dir %{contentdir}/cgi-bin
418%dir %{contentdir}/html
419%dir %{contentdir}/icons
420%dir %{contentdir}/error
421%dir %{contentdir}/error/include
422%{contentdir}/icons/*
423%{contentdir}/error/README
424%{contentdir}/html/index.html
425%config(noreplace) %{contentdir}/error/*.var
426%config(noreplace) %{contentdir}/error/include/*.html
427
428%attr(0700,root,root) %dir %{_localstatedir}/log/httpd
429
430%attr(0700,apache,apache) %dir %{_localstatedir}/lib/dav
431%attr(0700,apache,apache) %dir %{_localstatedir}/cache/httpd/cache-root
432
433%{_mandir}/man1/*
434%{_mandir}/man8/suexec*
435%{_mandir}/man8/apachectl.8*
436%{_mandir}/man8/httpd.8*
437%{_mandir}/man8/htcacheclean.8*
438%{_mandir}/man8/fcgistarter.8*
439
440%files manual
441%defattr(-,root,root)
442%{contentdir}/manual
443%{contentdir}/error/README
444
445%files tools
446%defattr(-,root,root)
447%{_bindir}/ab
448%{_bindir}/htdbm
449%{_bindir}/htdigest
450%{_bindir}/htpasswd
451%{_bindir}/logresolve
452%{_bindir}/httxt2dbm
453%{_sbindir}/rotatelogs
454%{_mandir}/man1/htdbm.1*
455%{_mandir}/man1/htdigest.1*
456%{_mandir}/man1/htpasswd.1*
457%{_mandir}/man1/httxt2dbm.1*
458%{_mandir}/man1/ab.1*
459%{_mandir}/man1/logresolve.1*
460%{_mandir}/man8/rotatelogs.8*
461%doc LICENSE NOTICE
462
463%files -n mod_authnz_ldap
464%defattr(-,root,root)
465%{_libdir}/httpd/modules/mod_ldap.so
466%{_libdir}/httpd/modules/mod_authnz_ldap.so
467
468%files -n mod_lua
469%defattr(-,root,root)
470%{_libdir}/httpd/modules/mod_lua.so
471
472%files -n mod_proxy_html
473%defattr(-,root,root)
474%{_libdir}/httpd/modules/mod_proxy_html.so
475%{_libdir}/httpd/modules/mod_xml2enc.so
476
477%files -n mod_socache_dc
478%defattr(-,root,root)
479%{_libdir}/httpd/modules/mod_socache_dc.so
480
481%files -n mod_ssl
482%defattr(-,root,root)
483%{_libdir}/httpd/modules/mod_ssl.so
484%config(noreplace) %{_sysconfdir}/httpd/conf/original/extra/httpd-ssl.conf
485%config(noreplace) %{_sysconfdir}/httpd/conf/extra/httpd-ssl.conf
486%attr(0700,apache,root) %dir %{_localstatedir}/cache/mod_ssl
487%attr(0600,apache,root) %ghost %{_localstatedir}/cache/mod_ssl/scache.dir
488%attr(0600,apache,root) %ghost %{_localstatedir}/cache/mod_ssl/scache.pag
489%attr(0600,apache,root) %ghost %{_localstatedir}/cache/mod_ssl/scache.sem
490
491%files devel
492%defattr(-,root,root)
493%{_includedir}/httpd
494%{_bindir}/apxs
495%{_sbindir}/checkgid
496%{_bindir}/dbmmanage
497%{_sbindir}/envvars*
498%{_mandir}/man1/dbmmanage.1*
499%{_mandir}/man1/apxs.1*
500%dir %{_libdir}/httpd/build
501%{_libdir}/httpd/build/*.mk
502%{_libdir}/httpd/build/instdso.sh
503%{_libdir}/httpd/build/config.nice
504%{_libdir}/httpd/build/mkdir.sh
505
506