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
14 Summary(pl): Silnik serwletów ze wsparciem dla wiod±cego serwera WWW
18 Source0: http://java.apache.org/jserv/dist/%{name}-%{version}.tar.gz
19 Source1: http://www.euronet.nl/~pauls/java/servlet/download/classpathx_servlet-%{jsdkversion}.tar.gz
20 Patch0: %{name}-enable-secret.patch
21 Patch1: %{name}-DESTDIR.patch
22 URL: http://java.apache.org/
23 License: Freely distributable & usable
24 Group: Networking/Daemons
25 Group(de): Netzwerkwesen/Server
26 Group(pl): Sieciowe/Serwery
27 Requires: apache >= 1.3.6
28 Provides: jserv jsdk20
29 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
31 #BuildRequires: any-java-compiler
33 BuildRequires: automake >= 1.4
34 BuildRequires: autoconf >= 2.13
35 BuildRequires: libtool >= 1.3.3
36 BuildRequires: apache-devel >= 1.3.9-8
39 Apache JServ is a servlet engine, developed by the Java Apache Project
40 <http://java.apache.org/>. The Apache JServ servlet engine is written
41 in 100pc Java application, and listens for servlet requests using the
42 Apache Java protocol (AJp). Typically, these requests will originate
43 from the mod_jserv Apache module (DSO included). This package contains
44 a LGPL'ed implementation of sun's java servlet api version 2.0 by Paul
45 Siegmann <http://www.euronet.nl/~pauls/java/servlet/>
48 Apache JServ jest silnikiem serwletowym, rozwijanym przez Java Apache
49 Project <http://java.apache.org/>. Silnik serwletowy Apache JServ
50 zosta³ napisany od pocz±tku do koñca w Javie; nas³uchuje wywo³añ
51 serwletu wykorzystuj±c protokó³ Apache Java (AJp). Zazwyczaj wywo³ania
52 te pochodz± z modu³u Apache mod_jservmodule (³±cznie z DSO). Pakiet
53 ten zawiera sunowsk± implementacjê api serletów w javie w wersji 2.0
54 (na licencji LGPL) napisana przez Paula Siegmanna
55 <http://www.euronet.nl/~pauls/java/servlet/>
63 # final position of GNU JSDK-Classes
64 sed 's|@JSDK_CLASSES@|%{classesdir}/servlet-2.0.jar|g' \
65 < conf/jserv.properties.in > conf/jserv.properties.in.new
66 mv conf/jserv.properties.in.new conf/jserv.properties.in
68 # do not load module in provided jserv.conf; we do this in httpd.conf
69 sed 's|@LOAD_OR_NOT@|#|g' \
70 < conf/jserv.conf.in > conf/jserv.conf.in.new
71 mv conf/jserv.conf.in.new conf/jserv.conf.in
79 %{__make} -C classpathx_servlet-%{jsdkversion} jar_2_0
80 %{__make} -C classpathx_servlet-%{jsdkversion}/apidoc
84 cp classpathx_servlet-%{jsdkversion}/README \
85 classpathx_servlet-%{jsdkversion}/AUTHORS \
86 classpathx_servlet-%{jsdkversion}/COPYING.LIB \
88 cp -r classpathx_servlet-%{jsdkversion}/apidoc jsdk-doc
92 APXS_CFLAGS=`$APXS_UTIL -q CFLAGS`
93 CFLAGS="$APXS_CFLAGS %{rpmcflags}" ./configure \
96 --with-apxs=/usr/sbin/apxs \
97 --with-logdir=%{logdir} \
98 --with-servlets=%{servletdir} \
99 --with-JSDK=`pwd`/classpathx_servlet-%{jsdkversion}/servlet-2.0.jar
103 rm -rf $RPM_BUILD_ROOT
105 %{__make} DESTDIR=$RPM_BUILD_ROOT install
107 echo "default - change on install `date`" > $RPM_BUILD_ROOT/%{jservconf}/jserv.secret.key
108 chmod 600 $RPM_BUILD_ROOT/%{jservconf}/jserv.secret.key
111 #install -d $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d
112 #install -d $RPM_BUILD_ROOT%{_sysconfdir}/profile.d
113 #install -d $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d
114 #install -m755 src/scripts/package/rpm/jserv.init $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/jserv
115 #install -m755 src/scripts/package/rpm/jserv.sh $RPM_BUILD_ROOT%{_sysconfdir}/profile.d
116 #install -m644 src/scripts/package/rpm/jserv.logrotate $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/jserv
119 install -d ${RPM_BUILD_ROOT}%{classesdir}
120 install classpathx_servlet-%{jsdkversion}/servlet-2.0.jar ${RPM_BUILD_ROOT}%{classesdir}
123 rm -rf $RPM_BUILD_ROOT
127 # use fortune + install-date + process-list to create pseudo-random, hardly
128 # guessable secret key. Use md5sum to create a hash from this, if available:
129 (%{_prefix}/games/fortune 2>/dev/null ; date ; ps -eal 2>/dev/null) \
130 | (md5sum 2>/dev/null || cat) \
131 > %{jservconf}/jserv.secret.key
132 chmod 600 %{jservconf}/jserv.secret.key
135 # determine apache-USER and chown the jserv.secrect.key - file
137 APACHEUSER=`grep "^User[ ]\+" %{httpdconf}/httpd.conf | awk '{print $2}'`
138 if test ! "x$APACHEUSER" = x ; then
139 USERCOMMENT="(which is '$APACHEUSER' ?)"
144 chown $APACHEUSER %{jservconf}/jserv.secret.key
147 # determine apache-GROUP and allow this group to write to %{logdir}
148 APACHEGROUP=`grep "^Group[ ]\+" %{httpdconf}/httpd.conf | awk '{print $2}'`
149 if test "x$APACHEGROUP" = x ; then
152 chgrp $APACHEGROUP %{logdir}
156 # Add 'jserv' as an independent service (manual mode)
157 #/sbin/chkconfig --add jserv
158 #/etc/rc.d/init.d/jserv start
161 # Find Include Statement or add it if necessary
163 cp %{httpdconf}/httpd.conf %{httpdconf}/httpd.conf.rpmorig
164 grep '#\?.*[iI]nclude.*/jserv.conf' %{httpdconf}/httpd.conf \
166 if test $? -eq 0 ; then
167 # found. Insert our include statement here
168 ## this depends on GNU-sed ('|') .. but we're on a RedHat system anyway
169 sed 's|^#\?\(.*Include\).*/jserv.conf.*$|\1 %{jservconf}/jserv.conf|g' \
170 < %{httpdconf}/httpd.conf.rpmorig \
171 > %{httpdconf}/httpd.conf
175 echo "<IfModule mod_jserv.c>"
176 echo " Include %{jservconf}/jserv.conf"
178 ) >> %{httpdconf}/httpd.conf
182 # LoadModule; uncomment or insert
184 grep '#\?.*LoadModule.*jserv_module.*mod_jserv.so' %{httpdconf}/httpd.conf \
186 if test $? -eq 0 ; then
187 # found. Remove any comment
188 sed 's|^#.*\(LoadModule.*mod_jserv.so\)|\1|g' \
189 < %{httpdconf}/httpd.conf \
190 > %{httpdconf}/httpd.conf.loadMod
191 mv %{httpdconf}/httpd.conf.loadMod %{httpdconf}/httpd.conf
193 # Insert LoadModule line before first valid LoadModule
194 ( echo "/^LoadModule"
196 echo "LoadModule jserv_module modules/mod_jserv.so"
199 ) | ed %{httpdconf}/httpd.conf > /dev/null 2>&1
203 # AddModule; uncomment or insert
205 grep '#\?.*AddModule.*mod_jserv.c' %{httpdconf}/httpd.conf >/dev/null
206 if test $? -eq 0 ; then
207 # found. Remove any comment
208 sed 's|^#.*\(AddModule.*mod_jserv.c\)|\1|g' \
209 < %{httpdconf}/httpd.conf \
210 > %{httpdconf}/httpd.conf.addMod
211 mv %{httpdconf}/httpd.conf.addMod %{httpdconf}/httpd.conf
215 echo "AddModule mod_jserv.c"
218 ) | ed %{httpdconf}/httpd.conf > /dev/null 2>&1
222 # Search vor JAVA at possible locations and edit wrapper.bin
225 for lookfor in java jre ; do
231 /usr/local/jdk117_v3 \
232 /usr/local/jdk117_v1a
234 if test -x "$loc/bin/$lookfor" ; then
235 JAVABIN="$loc/bin/$lookfor"
240 if test -z "$JAVABIN" ; then
241 for prefix in /usr/jdk /usr/jdk- /usr/local/jdk /usr/local/jdk- ; do
242 for jplatform in 2 1 ; do
243 for subvers in .9 .8 .7 .6 .5 .4 .3 .2 .1 "" ; do
244 if test -x "${prefix}1.$jplatform$subvers/bin/$lookfor" ; then
245 JAVABIN="${prefix}1.$jplatform$subvers/bin/$lookfor"
249 if test ! -z "$JAVABIN" ; then break ; fi
251 if test ! -z "$JAVABIN" ; then break ; fi
254 if test ! -z "$JAVABIN" ; then break ; fi
257 if test ! -z "$JAVABIN" ; then
258 sed "s|^wrapper.bin=.*$|wrapper.bin=$JAVABIN|" \
259 < %{jservconf}/jserv.properties \
260 > %{jservconf}/jserv.properties.new
261 mv %{jservconf}/jserv.properties.new %{jservconf}/jserv.properties
265 # Get Server Port to echo right URL below
267 SERVERPORT=`grep "^Port" %{httpdconf}/httpd.conf | \
268 head -1 | awk '{print ":" $2}'`
269 if test "$SERVERPORT" = ":80" ; then
273 #FIXME: make this i18n-aware
275 if test ! "x$JAVABIN" = x ; then
276 echo "using java VM $JAVABIN"
278 echo "## didn't find java or jre. Please install it and edit the"
279 echo "## wrapper.bin property in %{jservconf}/jserv.properties"
282 echo "In order to enable JServ, restart the webserver and try"
283 echo " http://localhost$SERVERPORT/servlets/IsItWorking"
285 echo " http://localhost$SERVERPORT/jserv/"
289 ## we hopefully may distribute SUN-jsdk.jar with jserv once ..
290 echo " | NOTE that this distribution contains a fully functional"
291 echo " | free jsdk replacement, see <http://www.euronet.nl/~pauls/java/servlet/>."
292 echo " | If you want to use the SUN-jsdk, replace the servlet-2.0.jar"
293 echo " | in the wrapper.classpath - line in the file"
294 echo " | %{jservconf}/jserv.properties"
295 echo " | with the SUN jsdk."
296 echo " | Get it from <http://java.sun.com/products/servlet/>."
297 echo " | Only JSDK 2.0 (Java Servlet Development Kit)"
298 echo " | is supported (_EXACTLY_ 2.0)."
301 echo "Please send comments/suggestions regarding"
302 echo "this RPM to <zeller@to.com>."
305 # do not remove the configured stuff if we upgrade.
306 # the $1 argument contains the number of packages _after_ installation.
307 if [ ! $1 -eq 0 ] ; then
311 # Remove 'jserv' service (manual mode)
312 #/etc/rc.d/init.d/jserv stop
313 #/sbin/chkconfig --del jserv
316 # Find jserv related configuration settings and comment
319 cp %{httpdconf}/httpd.conf %{httpdconf}/httpd.conf.rpmorig
320 sed 's|.*\(Include.*%{jservconf}/jserv.conf\)|#\1|g' \
321 < %{httpdconf}/httpd.conf.rpmorig \
322 | sed 's|^\(AddModule.*mod_jserv.c\)|#\1|g' \
323 | sed 's|^\(LoadModule.*mod_jserv.so\)|#\1|g' \
324 > %{httpdconf}/httpd.conf
326 /bin/rm -fr %{logdir}/mod_jserv.log
327 /bin/rm -fr %{logdir}/jserv.log
330 %defattr(644,root,root,755)
331 # mmh, we can't give %{_prefix}/docs to %doc ..
332 %doc index.html README docs jsdk-doc
335 %config %{jservconf}/jserv.properties
336 %config %{jservconf}/zone.properties
337 %config %{jservconf}/jserv.conf
339 # these are just for demonstration and thus,
340 # no %config-files per-se; do not install
341 # them for the RPM-packet
342 #%{jservconf}/jserv.properties.default
343 #%{jservconf}/zone.properties.default
344 #%{jservconf}/jserv.conf.default
346 %attr(-,nobody,nobody) %{jservconf}/jserv.secret.key
347 #%config %{_sysconfdir}/rc.d/init.d/jserv
348 #%config %{_sysconfdir}/logrotate.d/jserv
349 #%config %{_sysconfdir}/profile.d/jserv.sh
351 %{libexecdir}/mod_jserv.so
352 %{libexecdir}/ApacheJServ.jar
355 %{classesdir}/servlet-2.0.jar
358 %{servletdir}/IsItWorking.java
359 %{servletdir}/IsItWorking.class
361 # we need to have write access here
362 %attr(-,nobody,-) %dir %{logdir}