]> git.pld-linux.org Git - packages/ApacheJServ.git/blame - ApacheJServ.spec
- spec adapterized.
[packages/ApacheJServ.git] / ApacheJServ.spec
CommitLineData
0464d88f 1#%define libexecdir `apxs -q LIBEXECDIR`
2%define libexecdir /usr/lib/apache
3
4#%define httpdconf `apxs -q SYSCONFDIR`
5%define httpdconf /etc/httpd/conf
6
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 19991120
12
0464d88f 13Summary: Servlet engine with support for the leading web server
14Name: ApacheJServ
15Version: 1.1
16Release: 3
20a63901 17Source0: http://java.apache.org/jserv/dist/%{name}-%{version}.tar.gz
18Source1: http://www.euronet.nl/~pauls/java/servlet/download/%{version}%{name}classpathx_servlet-%{jsdkversion}.tar.gz
19Patch0: ApacheJServ-enable-secret.patch
20Patch1: ApacheJServ-DESTDIR.patch
0464d88f 21URL: http://java.apache.org/
22Copyright: Freely distributable & usable
23Group: Networking/Daemons
20a63901 24Group(pl): Sieciowe/Serwery
0464d88f 25Requires: apache >= 1.3.6
26Provides: jserv jsdk20
450b5f3c 27BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
0464d88f 28
20a63901 29#BuildRequires: any-java-compiler
0464d88f 30
31BuildRequires: automake >= 1.4
32BuildRequires: autoconf >= 2.13
33BuildRequires: libtool >= 1.3.3
0464d88f 34BuildRequires: apache-devel >= 1.3.9-8
35
36%description
20a63901 37Apache JServ is a servlet engine, developed by the Java Apache Project
aad54880 38<http://java.apache.org/>. The Apache JServ servlet engine is written
39in 100pc Java application, and listens for servlet requests using the
40Apache Java protocol (AJp). Typically, these requests will originate
41from the mod_jserv Apache module (DSO included). This package contains
42a LGPL'ed implementation of sun's java servlet api version 2.0 by Paul
43Siegmann <http://www.euronet.nl/~pauls/java/servlet/>
0464d88f 44
45%prep
46rm -rf $RPM_BUILD_ROOT
20a63901 47%setup -q -a 1
0464d88f 48
0464d88f 49%patch0
50%patch1 -p1
51
52# final position of GNU JSDK-Classes
53sed 's|@JSDK_CLASSES@|%{classesdir}/servlet-2.0.jar|g' \
54 < conf/jserv.properties.in > conf/jserv.properties.in.new
55mv conf/jserv.properties.in.new conf/jserv.properties.in
56
57# do not load module in provided jserv.conf; we do this in httpd.conf
58sed 's|@LOAD_OR_NOT@|#|g' \
59 < conf/jserv.conf.in > conf/jserv.conf.in.new
60mv conf/jserv.conf.in.new conf/jserv.conf.in
61
62# prepare compilation
63aclocal
64autoconf
65automake
66
67%build
0464d88f 68make -C classpathx_servlet-%{jsdkversion} jar_2_0
69make -C classpathx_servlet-%{jsdkversion}/apidoc
70
71# copy API-doc
72mkdir jsdk-doc
73cp classpathx_servlet-%{jsdkversion}/README \
74 classpathx_servlet-%{jsdkversion}/AUTHORS \
75 classpathx_servlet-%{jsdkversion}/COPYING.LIB \
76 jsdk-doc
77cp -r classpathx_servlet-%{jsdkversion}/apidoc jsdk-doc
78
0464d88f 79### JSERV
80
81# find apxs utility ..
82# .. in PATH
83APXS_UTIL=`type -p apxs || true`
84
85# .. from RPM
86if test "x$APXS_UTIL" = x ; then
87 # mmh, is it possible to query just for
88 # the executeables (like -qd and -qc) ?
89 APXSMATCH=`rpm -ql apache-devel apache | grep apxs`
90 for f in $APXSMATCH ; do
91 if test -x "$f" ; then
92 APXS_UTIL=$f
93 break
94 fi
95 done
96fi
97
98# .. at usual places
99if test "x$APXS_UTIL" = x ; then
100 for loc in \
20a63901 101 %{_bindir} \
102 %{_sbindir} \
103 %{_prefix}/local/apache/bin \
104 %{_prefix}/local/apache/sbin \
105 %{_prefix}/local/httpd/bin \
106 %{_prefix}/local/httpd/sbin
0464d88f 107 do
108 if test -x "$loc/apxs" ; then
109 APXS_UTIL="$loc/apxs"
110 break
111 fi
112 done
113fi
114
115if test "x$APXS_UTIL" = x ; then
116 echo "Didn't find apxs .. exiting"
117 exit -1
118fi
119
120APXS_CFLAGS=`$APXS_UTIL -q CFLAGS`
121CFLAGS="$APXS_CFLAGS $RPM_OPT_FLAGS" ./configure \
20a63901 122 --prefix=%{_prefix} \
0464d88f 123 --disable-debugging \
124 --with-apxs=$APXS_UTIL \
125 --with-logdir=%{logdir} \
126 --with-servlets=%{servletdir} \
127 --with-JSDK=`pwd`/classpathx_servlet-%{jsdkversion}/servlet-2.0.jar
128make
129
130%install
20a63901 131rm -rf $RPM_BUILD_ROOT
132
0464d88f 133make DESTDIR=$RPM_BUILD_ROOT install
134
135echo "default - change on install `date`" > $RPM_BUILD_ROOT/%{jservconf}/jserv.secret.key
136chmod 600 $RPM_BUILD_ROOT/%{jservconf}/jserv.secret.key
137
138# currently disabled
20a63901 139#install -d $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d
140#install -d $RPM_BUILD_ROOT%{_sysconfdir}/profile.d
141#install -d $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d
142#install -m755 src/scripts/package/rpm/jserv.init $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/jserv
143#install -m755 src/scripts/package/rpm/jserv.sh $RPM_BUILD_ROOT%{_sysconfdir}/profile.d
144#install -m644 src/scripts/package/rpm/jserv.logrotate $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/jserv
0464d88f 145
146### GNU JSDK-classes
147install -d ${RPM_BUILD_ROOT}%{classesdir}
148install classpathx_servlet-%{jsdkversion}/servlet-2.0.jar ${RPM_BUILD_ROOT}%{classesdir}
149
150%clean
151rm -rf $RPM_BUILD_ROOT
152
153%post
154
155# use fortune + install-date + process-list to create pseudo-random, hardly
156# guessable secret key. Use md5sum to create a hash from this, if available:
20a63901 157(%{_prefix}/games/fortune 2>/dev/null ; date ; ps -eal 2>/dev/null) \
0464d88f 158 | (md5sum 2>/dev/null || cat) \
159 > %{jservconf}/jserv.secret.key
160chmod 600 %{jservconf}/jserv.secret.key
161
162#
163# determine apache-USER and chown the jserv.secrect.key - file
164#
165APACHEUSER=`grep "^User[ ]\+" %{httpdconf}/httpd.conf | awk '{print $2}'`
166if test ! "x$APACHEUSER" = x ; then
167 USERCOMMENT="(which is '$APACHEUSER' ?)"
168else
20a63901 169 # assumption:
0464d88f 170 APACHEUSER=nobody
171fi
172chown $APACHEUSER %{jservconf}/jserv.secret.key
173
174#
175# determine apache-GROUP and allow this group to write to %{logdir}
176APACHEGROUP=`grep "^Group[ ]\+" %{httpdconf}/httpd.conf | awk '{print $2}'`
177if test "x$APACHEGROUP" = x ; then
178 APACHEGROUP=nobody
179fi
180chgrp $APACHEGROUP %{logdir}
181chmod g+w %{logdir}
182
183#
184# Add 'jserv' as an independent service (manual mode)
185#/sbin/chkconfig --add jserv
186#/etc/rc.d/init.d/jserv start
187
188#
189# Find Include Statement or add it if necessary
190#
191cp %{httpdconf}/httpd.conf %{httpdconf}/httpd.conf.rpmorig
192grep '#\?.*[iI]nclude.*/jserv.conf' %{httpdconf}/httpd.conf \
193 >/dev/null
194if test $? -eq 0 ; then
195 # found. Insert our include statement here
196 ## this depends on GNU-sed ('|') .. but we're on a RedHat system anyway
197 sed 's|^#\?\(.*Include\).*/jserv.conf.*$|\1 %{jservconf}/jserv.conf|g' \
198 < %{httpdconf}/httpd.conf.rpmorig \
199 > %{httpdconf}/httpd.conf
200else
201 # append it
202 (
203 echo "<IfModule mod_jserv.c>"
204 echo " Include %{jservconf}/jserv.conf"
205 echo "</IfModule>"
206 ) >> %{httpdconf}/httpd.conf
207fi
208
209#
210# LoadModule; uncomment or insert
211#
212grep '#\?.*LoadModule.*jserv_module.*mod_jserv.so' %{httpdconf}/httpd.conf \
213 >/dev/null
214if test $? -eq 0 ; then
215 # found. Remove any comment
216 sed 's|^#.*\(LoadModule.*mod_jserv.so\)|\1|g' \
217 < %{httpdconf}/httpd.conf \
218 > %{httpdconf}/httpd.conf.loadMod
219 mv %{httpdconf}/httpd.conf.loadMod %{httpdconf}/httpd.conf
220else
221 # Insert LoadModule line before first valid LoadModule
222 ( echo "/^LoadModule"
223 echo "i"
224 echo "LoadModule jserv_module modules/mod_jserv.so"
225 echo "."
226 echo "wq"
227 ) | ed %{httpdconf}/httpd.conf > /dev/null 2>&1
228fi
229
230#
231# AddModule; uncomment or insert
232#
233grep '#\?.*AddModule.*mod_jserv.c' %{httpdconf}/httpd.conf >/dev/null
234if test $? -eq 0 ; then
235 # found. Remove any comment
236 sed 's|^#.*\(AddModule.*mod_jserv.c\)|\1|g' \
237 < %{httpdconf}/httpd.conf \
238 > %{httpdconf}/httpd.conf.addMod
239 mv %{httpdconf}/httpd.conf.addMod %{httpdconf}/httpd.conf
240else
241 ( echo "/^AddModule"
242 echo "i"
243 echo "AddModule mod_jserv.c"
244 echo "."
245 echo "wq"
246 ) | ed %{httpdconf}/httpd.conf > /dev/null 2>&1
247fi
248
249#
250# Search vor JAVA at possible locations and edit wrapper.bin
251#
252unset JAVABIN
253for lookfor in java jre ; do
254 for loc in \
255 $JAVA_HOME \
256 $JDK_HOME \
257 /usr/local/java \
258 /usr/local/jdk \
259 /usr/local/jdk117_v3 \
260 /usr/local/jdk117_v1a
261 do
262 if test -x "$loc/bin/$lookfor" ; then
263 JAVABIN="$loc/bin/$lookfor"
264 break
265 fi
266 done
267
268 if test -z "$JAVABIN" ; then
269 for prefix in /usr/jdk /usr/jdk- /usr/local/jdk /usr/local/jdk- ; do
270 for jplatform in 2 1 ; do
271 for subvers in .9 .8 .7 .6 .5 .4 .3 .2 .1 "" ; do
272 if test -x "${prefix}1.$jplatform$subvers/bin/$lookfor" ; then
273 JAVABIN="${prefix}1.$jplatform$subvers/bin/$lookfor"
274 break
275 fi
276 done
277 if test ! -z "$JAVABIN" ; then break ; fi
278 done
279 if test ! -z "$JAVABIN" ; then break ; fi
280 done
281 fi
282 if test ! -z "$JAVABIN" ; then break ; fi
283done
284
285if test ! -z "$JAVABIN" ; then
286 sed "s|^wrapper.bin=.*$|wrapper.bin=$JAVABIN|" \
287 < %{jservconf}/jserv.properties \
288 > %{jservconf}/jserv.properties.new
289 mv %{jservconf}/jserv.properties.new %{jservconf}/jserv.properties
290fi
291
292#
293# Get Server Port to echo right URL below
294#
295SERVERPORT=`grep "^Port" %{httpdconf}/httpd.conf | \
296 head -1 | awk '{print ":" $2}'`
297if test "$SERVERPORT" = ":80" ; then
298 SERVERPORT=""
299fi
300
20a63901 301#FIXME: make this i18n-aware
0464d88f 302
303if test ! "x$JAVABIN" = x ; then
304 echo "using java VM $JAVABIN"
305else
306 echo "## didn't find java or jre. Please install it and edit the"
307 echo "## wrapper.bin property in %{jservconf}/jserv.properties"
308fi
309echo ""
310echo "In order to enable JServ, restart the webserver and try"
311echo " http://localhost$SERVERPORT/servlets/IsItWorking"
312echo " and"
313echo " http://localhost$SERVERPORT/jserv/"
314echo "-- ENJOY! --"
315echo ""
316
317## we hopefully may distribute SUN-jsdk.jar with jserv once ..
318echo " | NOTE that this distribution contains a fully functional"
319echo " | free jsdk replacement, see <http://www.euronet.nl/~pauls/java/servlet/>."
320echo " | If you want to use the SUN-jsdk, replace the servlet-2.0.jar"
321echo " | in the wrapper.classpath - line in the file"
322echo " | %{jservconf}/jserv.properties"
323echo " | with the SUN jsdk."
324echo " | Get it from <http://java.sun.com/products/servlet/>."
325echo " | Only JSDK 2.0 (Java Servlet Development Kit)"
326echo " | is supported (_EXACTLY_ 2.0)."
327echo ""
328
329echo "Please send comments/suggestions regarding"
330echo "this RPM to <zeller@to.com>."
331
0464d88f 332%preun
333# do not remove the configured stuff if we upgrade.
334# the $1 argument contains the number of packages _after_ installation.
335if [ ! $1 -eq 0 ] ; then
336 exit 0
337fi
338
339# Remove 'jserv' service (manual mode)
340#/etc/rc.d/init.d/jserv stop
341#/sbin/chkconfig --del jserv
342
343#
344# Find jserv related configuration settings and comment
345# them out
346#
347cp %{httpdconf}/httpd.conf %{httpdconf}/httpd.conf.rpmorig
348sed 's|.*\(Include.*%{jservconf}/jserv.conf\)|#\1|g' \
349 < %{httpdconf}/httpd.conf.rpmorig \
350 | sed 's|^\(AddModule.*mod_jserv.c\)|#\1|g' \
351 | sed 's|^\(LoadModule.*mod_jserv.so\)|#\1|g' \
352 > %{httpdconf}/httpd.conf
353# remove old logs
354/bin/rm -fr %{logdir}/mod_jserv.log
355/bin/rm -fr %{logdir}/jserv.log
356
357%files
20a63901 358%defattr(644,root,root,755)
359# mmh, we can't give %{_prefix}/docs to %doc ..
0464d88f 360%doc index.html README docs jsdk-doc
361
362%dir %{jservconf}
363%config %{jservconf}/jserv.properties
364%config %{jservconf}/zone.properties
365%config %{jservconf}/jserv.conf
366
367# these are just for demonstration and thus,
368# no %config-files per-se; do not install
369# them for the RPM-packet
370#%{jservconf}/jserv.properties.default
371#%{jservconf}/zone.properties.default
372#%{jservconf}/jserv.conf.default
373
374%attr(-,nobody,nobody) %{jservconf}/jserv.secret.key
20a63901 375#%config %{_sysconfdir}/rc.d/init.d/jserv
376#%config %{_sysconfdir}/logrotate.d/jserv
377#%config %{_sysconfdir}/profile.d/jserv.sh
0464d88f 378
379%{libexecdir}/mod_jserv.so
380%{libexecdir}/ApacheJServ.jar
381
382%dir %{classesdir}
383%{classesdir}/servlet-2.0.jar
384
385%dir %{servletdir}
386%{servletdir}/IsItWorking.java
387%{servletdir}/IsItWorking.class
388
389# we need to have write access here
390%attr(-,nobody,-) %dir %{logdir}
This page took 0.06772 seconds and 4 git commands to generate.