1 #%define libexecdir `apxs -q LIBEXECDIR`
2 %define libexecdir /usr/lib/apache
4 #%define httpdconf `apxs -q SYSCONFDIR`
5 %define httpdconf /etc/httpd/conf
7 %define jservconf %{httpdconf}/jserv
8 %define logdir /var/log/httpd
9 %define servletdir /home/httpd/servlets
10 %define classesdir /home/httpd/classes
11 %define jsdkversion 20000924
13 Summary: Servlet engine with support for the leading web server
17 Source0: http://java.apache.org/jserv/dist/%{name}-%{version}.tar.gz
18 Source1: http://www.euronet.nl/~pauls/java/servlet/download/classpathx_servlet-%{jsdkversion}.tar.gz
19 Patch0: %{name}-enable-secret.patch
20 Patch1: %{name}-DESTDIR.patch
21 URL: http://java.apache.org/
22 Copyright: Freely distributable & usable
23 Group: Networking/Daemons
24 Group(de): Netzwerkwesen/Server
25 Group(pl): Sieciowe/Serwery
26 Requires: apache >= 1.3.6
27 Provides: jserv jsdk20
28 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
30 #BuildRequires: any-java-compiler
32 BuildRequires: automake >= 1.4
33 BuildRequires: autoconf >= 2.13
34 BuildRequires: libtool >= 1.3.3
35 BuildRequires: apache-devel >= 1.3.9-8
38 Apache JServ is a servlet engine, developed by the Java Apache Project
39 <http://java.apache.org/>. The Apache JServ servlet engine is written
40 in 100pc Java application, and listens for servlet requests using the
41 Apache Java protocol (AJp). Typically, these requests will originate
42 from the mod_jserv Apache module (DSO included). This package contains
43 a LGPL'ed implementation of sun's java servlet api version 2.0 by Paul
44 Siegmann <http://www.euronet.nl/~pauls/java/servlet/>
47 Apache JServ jest silnikiem serwletowym, rozwijanym przez Java Apache
48 Project <http://java.apache.org/>. Silnik serwletowy Apache JServ
49 zosta³ napisany od pocz±tku do koñca w Javie; nas³uchuje wywo³añ
50 serwletu wykorzystuj±c protokó³ Apache Java (AJp). Zazwyczaj wywo³ania
51 te pochodz± z modu³u Apache mod_jservmodule (³±cznie z DSO). Pakiet
52 ten zawiera sunowsk± implementacjê api serletów w javie w wersji 2.0
53 (na licencji LGPL) napisana przez Paula Siegmanna
54 <http://www.euronet.nl/~pauls/java/servlet/>
62 # final position of GNU JSDK-Classes
63 sed 's|@JSDK_CLASSES@|%{classesdir}/servlet-2.0.jar|g' \
64 < conf/jserv.properties.in > conf/jserv.properties.in.new
65 mv conf/jserv.properties.in.new conf/jserv.properties.in
67 # do not load module in provided jserv.conf; we do this in httpd.conf
68 sed 's|@LOAD_OR_NOT@|#|g' \
69 < conf/jserv.conf.in > conf/jserv.conf.in.new
70 mv conf/jserv.conf.in.new conf/jserv.conf.in
78 %{__make} -C classpathx_servlet-%{jsdkversion} jar_2_0
79 %{__make} -C classpathx_servlet-%{jsdkversion}/apidoc
83 cp classpathx_servlet-%{jsdkversion}/README \
84 classpathx_servlet-%{jsdkversion}/AUTHORS \
85 classpathx_servlet-%{jsdkversion}/COPYING.LIB \
87 cp -r classpathx_servlet-%{jsdkversion}/apidoc jsdk-doc
91 APXS_CFLAGS=`$APXS_UTIL -q CFLAGS`
92 CFLAGS="$APXS_CFLAGS %{rpmcflags}" ./configure \
95 --with-apxs=/usr/sbin/apxs \
96 --with-logdir=%{logdir} \
97 --with-servlets=%{servletdir} \
98 --with-JSDK=`pwd`/classpathx_servlet-%{jsdkversion}/servlet-2.0.jar
102 rm -rf $RPM_BUILD_ROOT
104 %{__make} DESTDIR=$RPM_BUILD_ROOT install
106 echo "default - change on install `date`" > $RPM_BUILD_ROOT/%{jservconf}/jserv.secret.key
107 chmod 600 $RPM_BUILD_ROOT/%{jservconf}/jserv.secret.key
110 #install -d $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d
111 #install -d $RPM_BUILD_ROOT%{_sysconfdir}/profile.d
112 #install -d $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d
113 #install -m755 src/scripts/package/rpm/jserv.init $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/jserv
114 #install -m755 src/scripts/package/rpm/jserv.sh $RPM_BUILD_ROOT%{_sysconfdir}/profile.d
115 #install -m644 src/scripts/package/rpm/jserv.logrotate $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/jserv
118 install -d ${RPM_BUILD_ROOT}%{classesdir}
119 install classpathx_servlet-%{jsdkversion}/servlet-2.0.jar ${RPM_BUILD_ROOT}%{classesdir}
122 rm -rf $RPM_BUILD_ROOT
126 # use fortune + install-date + process-list to create pseudo-random, hardly
127 # guessable secret key. Use md5sum to create a hash from this, if available:
128 (%{_prefix}/games/fortune 2>/dev/null ; date ; ps -eal 2>/dev/null) \
129 | (md5sum 2>/dev/null || cat) \
130 > %{jservconf}/jserv.secret.key
131 chmod 600 %{jservconf}/jserv.secret.key
134 # determine apache-USER and chown the jserv.secrect.key - file
136 APACHEUSER=`grep "^User[ ]\+" %{httpdconf}/httpd.conf | awk '{print $2}'`
137 if test ! "x$APACHEUSER" = x ; then
138 USERCOMMENT="(which is '$APACHEUSER' ?)"
143 chown $APACHEUSER %{jservconf}/jserv.secret.key
146 # determine apache-GROUP and allow this group to write to %{logdir}
147 APACHEGROUP=`grep "^Group[ ]\+" %{httpdconf}/httpd.conf | awk '{print $2}'`
148 if test "x$APACHEGROUP" = x ; then
151 chgrp $APACHEGROUP %{logdir}
155 # Add 'jserv' as an independent service (manual mode)
156 #/sbin/chkconfig --add jserv
157 #/etc/rc.d/init.d/jserv start
160 # Find Include Statement or add it if necessary
162 cp %{httpdconf}/httpd.conf %{httpdconf}/httpd.conf.rpmorig
163 grep '#\?.*[iI]nclude.*/jserv.conf' %{httpdconf}/httpd.conf \
165 if test $? -eq 0 ; then
166 # found. Insert our include statement here
167 ## this depends on GNU-sed ('|') .. but we're on a RedHat system anyway
168 sed 's|^#\?\(.*Include\).*/jserv.conf.*$|\1 %{jservconf}/jserv.conf|g' \
169 < %{httpdconf}/httpd.conf.rpmorig \
170 > %{httpdconf}/httpd.conf
174 echo "<IfModule mod_jserv.c>"
175 echo " Include %{jservconf}/jserv.conf"
177 ) >> %{httpdconf}/httpd.conf
181 # LoadModule; uncomment or insert
183 grep '#\?.*LoadModule.*jserv_module.*mod_jserv.so' %{httpdconf}/httpd.conf \
185 if test $? -eq 0 ; then
186 # found. Remove any comment
187 sed 's|^#.*\(LoadModule.*mod_jserv.so\)|\1|g' \
188 < %{httpdconf}/httpd.conf \
189 > %{httpdconf}/httpd.conf.loadMod
190 mv %{httpdconf}/httpd.conf.loadMod %{httpdconf}/httpd.conf
192 # Insert LoadModule line before first valid LoadModule
193 ( echo "/^LoadModule"
195 echo "LoadModule jserv_module modules/mod_jserv.so"
198 ) | ed %{httpdconf}/httpd.conf > /dev/null 2>&1
202 # AddModule; uncomment or insert
204 grep '#\?.*AddModule.*mod_jserv.c' %{httpdconf}/httpd.conf >/dev/null
205 if test $? -eq 0 ; then
206 # found. Remove any comment
207 sed 's|^#.*\(AddModule.*mod_jserv.c\)|\1|g' \
208 < %{httpdconf}/httpd.conf \
209 > %{httpdconf}/httpd.conf.addMod
210 mv %{httpdconf}/httpd.conf.addMod %{httpdconf}/httpd.conf
214 echo "AddModule mod_jserv.c"
217 ) | ed %{httpdconf}/httpd.conf > /dev/null 2>&1
221 # Search vor JAVA at possible locations and edit wrapper.bin
224 for lookfor in java jre ; do
230 /usr/local/jdk117_v3 \
231 /usr/local/jdk117_v1a
233 if test -x "$loc/bin/$lookfor" ; then
234 JAVABIN="$loc/bin/$lookfor"
239 if test -z "$JAVABIN" ; then
240 for prefix in /usr/jdk /usr/jdk- /usr/local/jdk /usr/local/jdk- ; do
241 for jplatform in 2 1 ; do
242 for subvers in .9 .8 .7 .6 .5 .4 .3 .2 .1 "" ; do
243 if test -x "${prefix}1.$jplatform$subvers/bin/$lookfor" ; then
244 JAVABIN="${prefix}1.$jplatform$subvers/bin/$lookfor"
248 if test ! -z "$JAVABIN" ; then break ; fi
250 if test ! -z "$JAVABIN" ; then break ; fi
253 if test ! -z "$JAVABIN" ; then break ; fi
256 if test ! -z "$JAVABIN" ; then
257 sed "s|^wrapper.bin=.*$|wrapper.bin=$JAVABIN|" \
258 < %{jservconf}/jserv.properties \
259 > %{jservconf}/jserv.properties.new
260 mv %{jservconf}/jserv.properties.new %{jservconf}/jserv.properties
264 # Get Server Port to echo right URL below
266 SERVERPORT=`grep "^Port" %{httpdconf}/httpd.conf | \
267 head -1 | awk '{print ":" $2}'`
268 if test "$SERVERPORT" = ":80" ; then
272 #FIXME: make this i18n-aware
274 if test ! "x$JAVABIN" = x ; then
275 echo "using java VM $JAVABIN"
277 echo "## didn't find java or jre. Please install it and edit the"
278 echo "## wrapper.bin property in %{jservconf}/jserv.properties"
281 echo "In order to enable JServ, restart the webserver and try"
282 echo " http://localhost$SERVERPORT/servlets/IsItWorking"
284 echo " http://localhost$SERVERPORT/jserv/"
288 ## we hopefully may distribute SUN-jsdk.jar with jserv once ..
289 echo " | NOTE that this distribution contains a fully functional"
290 echo " | free jsdk replacement, see <http://www.euronet.nl/~pauls/java/servlet/>."
291 echo " | If you want to use the SUN-jsdk, replace the servlet-2.0.jar"
292 echo " | in the wrapper.classpath - line in the file"
293 echo " | %{jservconf}/jserv.properties"
294 echo " | with the SUN jsdk."
295 echo " | Get it from <http://java.sun.com/products/servlet/>."
296 echo " | Only JSDK 2.0 (Java Servlet Development Kit)"
297 echo " | is supported (_EXACTLY_ 2.0)."
300 echo "Please send comments/suggestions regarding"
301 echo "this RPM to <zeller@to.com>."
304 # do not remove the configured stuff if we upgrade.
305 # the $1 argument contains the number of packages _after_ installation.
306 if [ ! $1 -eq 0 ] ; then
310 # Remove 'jserv' service (manual mode)
311 #/etc/rc.d/init.d/jserv stop
312 #/sbin/chkconfig --del jserv
315 # Find jserv related configuration settings and comment
318 cp %{httpdconf}/httpd.conf %{httpdconf}/httpd.conf.rpmorig
319 sed 's|.*\(Include.*%{jservconf}/jserv.conf\)|#\1|g' \
320 < %{httpdconf}/httpd.conf.rpmorig \
321 | sed 's|^\(AddModule.*mod_jserv.c\)|#\1|g' \
322 | sed 's|^\(LoadModule.*mod_jserv.so\)|#\1|g' \
323 > %{httpdconf}/httpd.conf
325 /bin/rm -fr %{logdir}/mod_jserv.log
326 /bin/rm -fr %{logdir}/jserv.log
329 %defattr(644,root,root,755)
330 # mmh, we can't give %{_prefix}/docs to %doc ..
331 %doc index.html README docs jsdk-doc
334 %config %{jservconf}/jserv.properties
335 %config %{jservconf}/zone.properties
336 %config %{jservconf}/jserv.conf
338 # these are just for demonstration and thus,
339 # no %config-files per-se; do not install
340 # them for the RPM-packet
341 #%{jservconf}/jserv.properties.default
342 #%{jservconf}/zone.properties.default
343 #%{jservconf}/jserv.conf.default
345 %attr(-,nobody,nobody) %{jservconf}/jserv.secret.key
346 #%config %{_sysconfdir}/rc.d/init.d/jserv
347 #%config %{_sysconfdir}/logrotate.d/jserv
348 #%config %{_sysconfdir}/profile.d/jserv.sh
350 %{libexecdir}/mod_jserv.so
351 %{libexecdir}/ApacheJServ.jar
354 %{classesdir}/servlet-2.0.jar
357 %{servletdir}/IsItWorking.java
358 %{servletdir}/IsItWorking.class
360 # we need to have write access here
361 %attr(-,nobody,-) %dir %{logdir}