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