3 %bcond_with binary # build from binary source
4 %bcond_without javadoc # skip building javadocs
6 Summary: Apache Servlet/JSP Engine, RI for Servlet 2.4/JSP 2.0 API
7 Summary(pl.UTF-8): Silnik Servlet/JSP Apache będący wzorcową implementacją API Servlet 2.4/JSP 2.0
12 Group: Development/Languages/Java
13 #Source0: http://www.apache.org/dist/tomcat/tomcat-5/v5.0.30/src/%{name}-%{version}-src.tar.gz
14 Source0: http://www.apache.org/dist/tomcat/tomcat-5/v%{version}/src/%{name}-%{version}-src.tar.gz
15 # Source0-md5: 362d1d8b15dc09882440dcab8c592dd7
16 #Source0: http://apache.zone-h.org/
17 Source1: jakarta-tomcat.init
18 Patch0: %{name}-skip-servletapi.patch
19 Patch1: %{name}-nsis.patch
20 Patch2: %{name}-native.patch
21 Patch3: %{name}-skip-jdt.patch
22 Patch4: %{name}-no-connectors.patch
23 URL: http://tomcat.apache.org/
25 BuildRequires: ant >= 1.5.3
27 BuildRequires: jakarta-commons-beanutils
28 BuildRequires: jakarta-commons-collections
29 BuildRequires: jakarta-commons-collections-source
30 BuildRequires: jakarta-commons-daemon
31 BuildRequires: jakarta-commons-dbcp
32 BuildRequires: jakarta-commons-dbcp-source
33 BuildRequires: jakarta-commons-digester
34 BuildRequires: jakarta-commons-fileupload
35 BuildRequires: jakarta-commons-httpclient
36 BuildRequires: jakarta-commons-launcher
37 BuildRequires: eclipse-jdt
38 BuildRequires: jakarta-commons-logging
39 BuildRequires: jakarta-commons-modeler >= 2.0
40 BuildRequires: jakarta-commons-pool
41 BuildRequires: jakarta-commons-pool-source
42 BuildRequires: jakarta-regexp
43 BuildRequires: jakarta-servletapi5
44 BuildRequires: jakarta-struts >= 1.0.2
45 BuildRequires: jaxp_parser_impl
46 BuildRequires: jdk >= 1.5
47 BuildRequires: jpackage-utils
48 BuildRequires: mx4j >= 1.1.1
49 BuildRequires: puretls
50 BuildRequires: rpmbuild(macros) >= 1.300
51 BuildRequires: xerces-j
53 BuildRequires: jakarta-commons-el
56 BuildRequires: jaf >= 1.0.1
57 BuildRequires: jakarta-commons-dbcp
58 BuildRequires: jakarta-commons-pool
59 BuildRequires: javamail >= 1.2
60 BuildRequires: jdbc-stdext >= 2.0
61 BuildRequires: jndi >= 1.2.1
62 BuildRequires: jsse >= 1.0.2
63 BuildRequires: jta >= 1.0.1
64 BuildRequires: junit >= 3.7
65 BuildRequires: rpmbuild(macros) >= 1.268
66 BuildRequires: tyrex >= 1.0
67 BuildRequires: xml-commons
68 Requires(post,postun): /sbin/ldconfig
69 Requires(post,preun): /sbin/chkconfig
70 Requires(postun): /usr/sbin/groupdel
71 Requires(postun): /usr/sbin/userdel
72 Requires(pre): /bin/id
73 Requires(pre): /usr/bin/getgid
74 Requires(pre): /usr/sbin/groupadd
75 Requires(pre): /usr/sbin/useradd
77 Requires: jaf >= 1.0.1
78 Requires: jakarta-commons-beanutils
79 Requires: jakarta-commons-collections
80 Requires: jakarta-commons-digester
81 Requires: jakarta-commons-fileupload
82 Requires: jakarta-commons-logging
83 Requires: jakarta-regexp
84 Requires: jakarta-servletapi >= 4
85 Requires: javamail >= 1.2
86 Requires: jaxp_parser_impl
87 Requires: jdbc-stdext >= 2.0
88 Requires: jndi >= 1.2.1
90 Requires: jsse >= 1.0.2
91 Requires: jta >= 1.0.1
92 Requires: mx4j >= 1.1.1
94 Requires: tyrex >= 1.0
98 Obsoletes: jakarta-tomcat
100 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
102 %define _tomcatdir %{_libdir}/tomcat
103 %define _logdir %{_var}/log
104 %define _vardir %{_var}/lib/tomcat
107 Tomcat is the servlet container that is used in the official Reference
108 Implementation for the Java Servlet and JavaServer Pages technologies.
109 The Java Servlet and JavaServer Pages specifications are developed by
110 Sun under the Java Community Process.
112 Tomcat is developed in an open and participatory environment and
113 released under the Apache Software License. Tomcat is intended to be a
114 collaboration of the best-of-breed developers from around the world.
115 We invite you to participate in this open development project.
117 %description -l pl.UTF-8
118 Tomcat to kontener serwletowy używany przez oficjalną implementację
119 wzorcową technologii Java Servlet i JavaServer Pages. Specyfikacje
120 Java Servlet i JavaServer Pages są rozwijane przez Suna zgodnie z Java
124 Summary: The Apache Tomcat Servlet/JSP Container documentation
125 Summary(pl.UTF-8): Dokumentacja do Tomcata - kontekera Servlet/JSP
126 Group: Development/Languages/Java
127 Obsoletes: jakarta-tomcat-doc
130 The Tomcat Servlet/JSP Container documentation.
132 %description doc -l pl.UTF-8
133 Dokumentacja do Tomcata - kontekera Servlet/JSP.
136 %setup -q -n %{name}-%{version}-src
143 # servletapi built from jakarta-servletapi5.spec
146 # Remove pre-built jars
147 find -name '*.jar' | xargs rm -fv
151 #xerces.jar=$(build-classpath xerces)
152 #jasper-compiler-jdt.jar=$(build-classpath jdtcore)
155 > tomcat-deps/tomcat-dbcp.jar
158 # build jasper javadocs
160 CLASSPATH=$(build-classpath xml-commons-apis)
161 cat > build.properties <<EOF
162 ant.jar=$(build-classpath ant)
163 servlet-api.jar=$(build-classpath servlet-api)
164 jsp-api.jar=$(build-classpath jsp-api)
165 tools.jar=%{java_home}/lib/tools.jar
166 xercesImpl.jar=$(build-classpath jaxp_parser_impl)
167 xmlParserAPIs.jar=$(build-classpath xml-commons-apis)
168 commons-collections.jar=$(build-classpath commons-collections)
169 commons-logging.jar=$(build-classpath commons-logging)
170 commons-daemon.jar=$(build-classpath commons-daemon)
171 junit.jar=$(build-classpath junit)
172 commons-el.jar=$(build-classpath commons-el)
174 # building jasper needs eclipse classes
179 -Dcompile.source=1.4 \
180 -Dbuild.compiler=modern \
188 cat > build.properties <<EOF
189 commons-beanutils.jar=$(build-classpath commons-beanutils)
190 commons-launcher.jar=$(build-classpath commons-launcher)
191 commons-daemon.jar=$(build-classpath commons-daemon)
192 commons-digester.jar=$(build-classpath commons-digester)
193 commons-el.jar=$(build-classpath commons-el)
194 commons-logging-api.jar=$(build-classpath commons-logging-api)
195 commons-logging.jar=$(build-classpath commons-logging)
196 commons-modeler.jar=$(build-classpath commons-modeler)
197 xercesImpl.jar=$(build-classpath jaxp_parser_impl)
198 xml-apis.jar=$(build-classpath xml-commons-apis)
199 jdt.jar=$(build-classpath org.eclipse.jdt.core)
200 jasper-compiler-jdt.home=$TOPDIR/tomcat-deps
202 log4j.jar=${log4j.lib}/dist/lib/log4j-1.2.12.jar
204 commons-httpclient.jar=$(build-classpath commons-httpclient)
205 commons-collections.jar=$(build-classpath commons-collections)
206 commons-fileupload.jar=$(build-classpath commons-fileupload)
210 jmx.jar=${jmx.lib}/mx4j.jar
212 jmx.jar=$(build-classpath jre/jmx)
214 jmx-tools.jar=${jmx.lib}/mx4j-tools.jar
216 jmx-tools.jar=$(build-classpath jre/jmx)
218 jmx-remote.jar=${jmx.lib}/mx4j-remote.jar
220 junit.jar=$(build-classpath junit)
222 rhino.jar=${rhino.home}/js.jar
224 struts.jar=$(build-classpath struts)
225 activation.jar=$(build-classpath jaf)
226 jcert.jar=$(build-classpath java/jcert)
227 jnet.jar=$(build-classpath java/jnet)
228 jsse.jar=$(build-classpath java/jsse)
229 jta.jar=$(build-classpath jta)
230 mail.jar=$(build-classpath javamail/mailapi)
231 puretls.jar=$(build-classpath puretls)
233 servlet-api.jar=$(build-classpath servlet-api)
234 # how the fck those bools work
235 # build.xml:103: servletapi/jsr154/src not found.
236 servletapi.build.notrequired=true
238 jsp-api.jar=$(build-classpath jsp-api)
239 jspapi.build.notrequired=true
241 log4j.jar=$(build-classpath logging-log4j)
242 #log4j.loc=%{_javadir}
244 # source is needed because source is copied modified and recompiled as tomcat jar
245 # see <target name="-build-tomcat-dbcp"> in build/build.xml
247 commons-collections.home=%{_prefix}/src/jakarta-commons-collections-3.1
248 commons-pool.home=%{_prefix}/src/jakarta-commons-pool-1.3
249 commons-dbcp.home=%{_prefix}/src/jakarta-commons-dbcp-1.2.1
250 tomcat-dbcp.home=$TOPDIR/tomcat-deps
251 # err, it compiles three above and then appends to the jar, so the file should exist
252 tomcat-dbcp.jar=$TOPDIR/tomcat-deps/tomcat-dbcp.jar
255 ant.jar=%{_javadir}/ant.jar
256 ant-launcher.jar=%{_javadir}/ant-launcher.jar
257 jtc.home=$TOPDIR/jakarta-tomcat-connectors/
258 jasper.home=$TOPDIR/jakarta-tomcat-jasper/jasper2
259 commons-dbcp.jar=$(build-classpath commons-dbcp)
260 commons-pool.jar=$(build-classpath commons-pool)
261 jmxri.jar=$(build-classpath jre/jmx)
262 regexp.jar=$(build-classpath regexp)
263 jsp-api.jar=$TOPDIR/jakarta-servletapi-5/jsr152/dist/lib/jsp-api.jar
264 servlet.doc=$TOPDIR/jakarta-servletapi-5/jsr154/dist/docs/api
265 struts.lib=%{_datadir}/struts
266 servletapi.build.notrequired=true
267 tyrex.jar=$(build-classpath tyrex)
268 jaas.jar=$(build-classpath jre/jaas)
269 jndi.jar=$(build-classpath jre/jndi)
270 jdbc20ext.jar=$(build-classpath jdbc-stdext)
271 jspapi.build.notrequired=true
272 taglibs-core.jar=$(build-classpath taglibs-core)
273 taglibs-standard.jar=$(build-classpath taglibs-standard)
283 # build the connectors
288 # this is just plain and simply evil but something changed in a major way between 5.0.16 and 5.0.18
289 oldclasspath=$CLASSPATH
290 export CLASSPATH=$TOPDIR/jakarta-servletapi-5/jsr154/dist/lib/servlet-api.jar:\
291 $TOPDIR/jakarta-tomcat-5/build/server/lib/catalina.jar
295 cat > build.properties <<EOF
297 activation.jar=$(build-classpath jaf)
298 ant.jar=%{_javadir}/ant.jar
299 junit.jar=$(build-classpath junit)
300 commons-beanutils.jar=$(build-classpath commons-beanutils)
301 commons-collections.jar=$(build-classpath commons-collections)
302 commons-digester.jar=$(build-classpath commons-digester)
303 commons-fileupload.jar=$(build-classpath commons-fileupload)
304 commons-logging.jar=$(build-classpath commons-logging)
305 commons-logging-api.jar=$(build-classpath commons-logging-api)
306 commons-modeler.jar=$(build-classpath commons-modeler)
307 commons-pool.jar=$(build-classpath commons-pool)
308 regexp.jar=$(build-classpath regexp)
309 jmx.jar=$(build-classpath mx4j/mx4j)
310 puretls=$(build-classpath puretls)
311 activation.jar=$(build-classpath jaf)
312 mail.jar=$(build-classpath javamail/mailapi)
313 jta.jar=$(build-classpath jta)
314 tyrex.jar=$(build-classpath tyrex)
315 jaas.jar=$(build-classpath jaas)
316 jndi.jar=$(build-classpath jndi)
317 jdbc20ext.jar=$(build-classpath java/jdbc-stdext)
318 puretls.jar=$(build-classpath puretls)
319 jcert.jar=$(build-classpath jsse/jcert)
320 jnet.jar=$(build-classpath jsse/jnet)
321 jsse.jar=$(build-classpath jsse/jsse)
326 commons-beanutils.jar=${commons-beanutils.lib}/commons-beanutils.jar
327 commons-collections.jar=${commons-collections.lib}/commons-collections.jar
328 commons-digester.jar=${commons-digester.lib}/commons-digester.jar
329 commons-fileupload.jar=${commons-fileupload.lib}/commons-fileupload-1.0-beta-1.jar
330 commons-logging-api.jar=${commons-logging.lib}/commons-logging-api.jar
331 commons-logging.jar=${commons-logging.lib}/commons-logging.jar
332 jndi.jar=${jndi.lib}/jndi.jar
333 ldap.jar=${jndi.lib}/ldap.jar
334 jaas.jar=${jndi.lib}/jaas.jar
335 regexp.jar=${regexp.lib}/jakarta-regexp-1.4.jar
336 servlet.jar=${servlet.lib}/servlet.jar
337 #xerces.jar=${xerces.lib}/xerces.jar
338 xercesImpl.jar=${xerces.lib}/xercesImpl.jar
339 xml-apis.jar=${xerces.lib}/xml-apis.jar
340 activation.jar=${activation.lib}/activation.jar
341 commons-daemon.jar=${commons-daemon.lib}/commons-daemon.jar
342 commons-dbcp.jar=${commons-dbcp.lib}/commons-dbcp.jar
343 commons-modeler.jar=${commons-modeler.lib}/commons-modeler.jar
344 commons-pool.jar=${commons-pool.lib}/commons-pool.jar
345 jdbc20ext.jar=${jdbc20ext.lib}/jdbc2_0-stdext.jar
346 jmx.jar=${jmx.lib}/mx4j-jmx.jar
347 jcert.jar=${jsse.lib}/jcert.jar
348 jnet.jar=${jsse.lib}/jnet.jar
349 jsse.jar=${jsse.lib}/jsse.jar
350 jta.jar=${jta.lib}/jta.jar
351 junit.jar=${junit.lib}/junit.jar
352 mail.jar=${mail.lib}/mail.jar
353 puretls.jar=${puretls.lib}/puretls.jar
354 struts.jar=${struts.lib}/struts.jar
355 tyrex.jar=${tyrex.lib}/tyrex-1.0.jar
356 tomcat5.jar=${tomcat5.home}/server/lib/catalina.jar
357 servlet-api.jar=${tomcat5.home}/common/lib/servlet-api.jar
358 tomcat41.jar=${tomcat41.home}/server/lib/catalina.jar
359 servlet-api.jar=${tomcat41.home}/common/lib/servlet.jar
360 tomcat33.jar=${tomcat33.home}/lib/common/tomcat_core.jar
367 -Dbuild.compiler=modern \
368 -Djava.home=%{java_home}
371 export CLASSPATH=$oldclasspath
373 # build the webapps and make the tree ready to install
374 cd ../jakarta-tomcat-5
375 %ant -Dbuild.compiler=modern -Djava.home=%{java_home} dist
379 rm -rf $RPM_BUILD_ROOT
381 DEST=$RPM_BUILD_ROOT%{_tomcatdir}
383 install -d $DEST/bin \
384 $DEST/common/{lib,classes,endorsed} \
385 $DEST/server/{lib,classes} \
387 $RPM_BUILD_ROOT%{_sysconfdir}/tomcat \
388 $RPM_BUILD_ROOT%{_logdir}/tomcat \
389 $RPM_BUILD_ROOT%{_vardir}/work \
390 $RPM_BUILD_ROOT/etc/rc.d/init.d
392 install build/bin/*.sh $DEST/bin
393 install build/bin/bootstrap*.jar $DEST/bin
394 install build/bin/tomcat*.jar $DEST/bin
395 install build/common/lib/naming-*.jar $DEST/common/lib
396 install build/common/lib/jasper-*.jar $DEST/common/lib
397 install build/conf/* $RPM_BUILD_ROOT%{_sysconfdir}/tomcat
398 install build/server/lib/catalina*.jar $DEST/server/lib
399 install build/server/lib/servlets*.jar $DEST/server/lib
400 install build/server/lib/tomcat*.jar $DEST/server/lib
401 install build/server/lib/servlets-cgi.renametojar $DEST/server/lib/servlets-cgi.jar
402 install build/server/lib/servlets-ssi.renametojar $DEST/server/lib/servlets-ssi.jar
403 cp -rf build/server/webapps $DEST/server
404 cp -rf build/webapps $DEST
405 cp -rf build/shared $DEST
406 cp -rf build/temp $DEST
408 ln -sf %{_logdir}/tomcat $DEST/logs
409 ln -sf %{_vardir}/work $DEST/work
410 ln -sf %{_sysconfdir}/tomcat $DEST/conf
412 # symlinks instead of copies
413 ln -sf %{_javadir}/commons-daemon.jar $DEST/bin
415 ln -sf %{_javadir}/activation.jar $DEST/common/lib
416 ln -sf %{_javadir}/ant.jar $DEST/common/lib
417 ln -sf %{_javadir}/commons-collections.jar $DEST/common/lib
418 ln -sf %{_javadir}/commons-dbcp.jar $DEST/common/lib
419 ln -sf %{_javadir}/commons-logging-api.jar $DEST/common/lib
420 ln -sf %{_javadir}/commons-pool.jar $DEST/common/lib
421 ln -sf %{_javadir}/servlet.jar $DEST/common/lib
422 ln -sf %{_javadir}/servlet.jar $DEST/common/lib/servletapi4.jar
423 ln -sf %{_javadir}/jdbc-stdext.jar $DEST/common/lib/jdbc2_0-stdext.jar
424 ln -sf %{_javadir}/jdbc-stdext.jar $DEST/common/lib/jdbc-stdext-2.0.jar
425 ln -sf %{_javadir}/jmxri.jar $DEST/common/lib
426 ln -sf %{_javadir}/jndi.jar $DEST/common/lib
427 ln -sf %{_javadir}/jta.jar $DEST/common/lib
428 ln -sf %{_javadir}/mail.jar $DEST/common/lib
429 ln -sf %{_javadir}/jsse.jar $DEST/common/lib
430 ln -sf %{_javadir}/tyrex.jar $DEST/common/lib
431 ln -sf %{_javadir}/junit.jar $DEST/common/lib
433 ln -sf %{_javadir}/mailapi.jar $DEST/common/lib
434 ln -sf %{_javadir}/pop3.jar $DEST/common/lib
435 ln -sf %{_javadir}/pop3.jar $DEST/common/lib/pop.jar
436 ln -sf %{_javadir}/smtp.jar $DEST/common/lib
437 ln -sf %{_javadir}/imap.jar $DEST/common/lib
439 ln -sf %{_javadir}/commons-beanutils.jar $DEST/server/lib
440 ln -sf %{_javadir}/commons-digester.jar $DEST/server/lib
441 ln -sf %{_javadir}/commons-fileupload.jar $DEST/server/lib
442 ln -sf %{_javadir}/commons-logging.jar $DEST/server/lib
443 ln -sf %{_javadir}/commons-modeler.jar $DEST/server/lib
444 ln -sf %{_javadir}/jaas.jar $DEST/server/lib/jaas.jar
445 ln -sf %{_javadir}/mx4j-jmx.jar $DEST/server/lib
446 ln -sf %{_javadir}/regexp.jar $DEST/server/lib
447 ln -sf %{_javadir}/regexp.jar $DEST/server/lib/jakarta-regexp-1.2.jar
448 ln -sf %{_javadir}/regexp.jar $DEST/server/lib/regexp-1.2.jar
450 ln -sf %{_javadir}/jaxp_parser_impl.jar $DEST/common/endorsed
451 ln -sf %{_javadir}/xml-commons-apis.jar $DEST/common/endorsed
453 ln -sf %{_javadir}/struts.jar $DEST/server/webapps/admin/WEB-INF/lib
455 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/tomcat
458 rm -rf $RPM_BUILD_ROOT
461 %groupadd -g 51 -r -f http
462 %useradd -u 51 -r -d /home/services/httpd -s /bin/false -c "HTTP User" -g http http
465 /sbin/chkconfig --add tomcat
466 %service tomcat restart
469 if [ "$1" = "0" ]; then
471 /sbin/chkconfig --del tomcat
475 if [ "$1" = "0" ]; then
481 %defattr(644,root,root,755)
484 %dir %{_tomcatdir}/bin
485 %attr(755,root,root) %{_tomcatdir}/bin/*.sh
486 %{_tomcatdir}/bin/*.jar
487 %dir %{_tomcatdir}/common
488 %dir %{_tomcatdir}/common/classes
489 %dir %{_tomcatdir}/common/endorsed
490 %{_tomcatdir}/common/endorsed/*.jar
491 %{_tomcatdir}/common/lib
494 %dir %{_tomcatdir}/server
495 %dir %{_tomcatdir}/server/classes
496 %{_tomcatdir}/server/lib
497 %{_tomcatdir}/server/webapps
498 %{_tomcatdir}/webapps
502 # tomcat wants to regenerate tomcat-users.xml
503 %attr(775,root,http) %dir %{_sysconfdir}/tomcat
504 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/tomcat/*
505 %attr(754,root,root) /etc/rc.d/init.d/tomcat
507 %attr(1730,root,http) %dir %{_vardir}/work
508 %attr(1730,root,http) %dir %{_logdir}/tomcat
511 %defattr(644,root,root,755)