]> git.pld-linux.org Git - packages/ApacheJServ.git/blobdiff - ApacheJServ.spec
- added sysconfig
[packages/ApacheJServ.git] / ApacheJServ.spec
index c799092d0fda395988b7b68d8acee228efde55bd..bab27fceae3834d55450385349439660eba7c9e8 100644 (file)
@@ -1,51 +1,65 @@
+# TODO
+# - separate package for jsdk?
+#
 # Conditional build:
-%bcond_with    gcj     # use javac instead of GCJ
-
-%define                jsdkversion     20000924
+%bcond_with    gcj     # use GCJ instead of javac
+#
 %define                apxs            /usr/sbin/apxs1
+%define                jsdkversion     20000924
+%define                mod_name        jserv
 Summary:       Servlet engine with support for the leading web server
 Summary(pl):   Silnik serwletów ze wsparciem dla wiod±cego serwera WWW
 Name:          ApacheJServ
 Version:       1.1.2
-Release:       0.4
+Release:       0.82
 License:       freely distributable & usable (JServ), LGPL (JSDK)
 Group:         Networking/Daemons
 Source0:       http://java.apache.org/jserv/dist/%{name}-%{version}.tar.gz
 # Source0-md5: 6d48a1b9fcc5eea4dfebaae29ba5a485
 Source1:       http://www.euronet.nl/~pauls/java/servlet/download/classpathx_servlet-%{jsdkversion}.tar.gz
 # Source1-md5: a81feddb91b1358f9aaed94e83eddb54
+Source2:       %{name}.conf
+Source3:       %{name}.init
+Source4:       %{name}.sysconfig
 Patch0:                %{name}-enable-secret.patch
 Patch1:                %{name}-ac.patch
+Patch2:                %{name}-jre-env.patch
+Patch3:                %{name}-config.patch
 URL:           http://java.apache.org/
 BuildRequires: apache1-devel >= 1.3.9-8
+BuildRequires: autoconf
+BuildRequires: automake
+BuildRequires: gettext-devel
+BuildRequires: rpmbuild(macros) >= 1.268
+BuildRequires: sed >= 4.0
 %if %{with gcj}
-BuildRequires: gcc-java
 BuildRequires: fastjar
-#BuildRequires:        gcc-java-tools
+BuildRequires: gcc-java
+BuildRequires: jdkgcj
 Requires:      /usr/bin/gij
 %else
-#BuildRequires:        jar
-BuildRequires: jdk
-#Requires:     jre
+BuildRequires: java-sun
+Requires:      java-sun-jre
 %endif
-Requires(post):        awk
-Requires(post):        ed
-Requires(post):        grep
-Requires(post):        sh-utils
-Requires(post):        textutils
-Requires(post,preun):  fileutils
-Requires(post,preun):  sed
-Requires:      apache1 >= 1.3.6
-Provides:      jserv
+Requires(post,preun):  rc-scripts
+Requires(pre): /bin/id
+Requires(pre): /usr/bin/getgid
+Requires(pre): /usr/sbin/groupadd
+Requires(pre): /usr/sbin/useradd
+Requires:      %{name} = %{version}-%{release}
+Requires:      rc-scripts >= 0.4.0.19
+Provides:      group(jserv)
 Provides:      jsdk20
+Provides:      jserv
+Provides:      user(jserv)
+Obsoletes:     ApacheJServ-init
+Obsoletes:     jserv
 BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
-%define                libexecdir      %(%{apxs} -q LIBEXECDIR)
-%define                httpdconf       %(%{apxs} -q SYSCONFDIR)
-%define                jservconf       %{httpdconf}/jserv
-%define                logdir          /var/log/httpd
-%define                servletdir      %{_datadir}/jserv/servlets
-%define                classesdir      %{_datadir}/jserv/classes
+%define                _pkglibdir      %(%{apxs} -q LIBEXECDIR 2>/dev/null)
+%define                httpdconf       %(%{apxs} -q SYSCONFDIR 2>/dev/null)
+%define                _sysconfdir     /etc/jserv
+%define                logdir          /var/log/jserv
 %define                _noautocompressdoc  package-list
 
 %description
@@ -54,8 +68,8 @@ Apache JServ is a servlet engine, developed by the Java Apache Project
 in 100pc Java application, and listens for servlet requests using the
 Apache Java protocol (AJp). Typically, these requests will originate
 from the mod_jserv Apache module (DSO included). This package contains
-a LGPL'ed implementation of sun's java servlet api version 2.0 by Paul
-Siegmann <http://www.euronet.nl/~pauls/java/servlet/>
+a LGPL'ed implementation of Sun's Java Servlet API version 2.0 by Paul
+Siegmann <http://www.euronet.nl/~pauls/java/servlet/>.
 
 %description -l pl
 Apache JServ jest silnikiem serwletowym, rozwijanym przez Java Apache
@@ -63,24 +77,44 @@ Project <http://java.apache.org/>. Silnik serwletowy Apache JServ
 zosta³ napisany od pocz±tku do koñca w Javie; nas³uchuje wywo³añ
 serwletu wykorzystuj±c protokó³ Apache Java (AJp). Zazwyczaj wywo³ania
 te pochodz± z modu³u Apache mod_jservmodule (³±cznie z DSO). Pakiet
-ten zawiera sunowsk± implementacjê api serletów w javie w wersji 2.0
-(na licencji LGPL) napisana przez Paula Siegmanna
-<http://www.euronet.nl/~pauls/java/servlet/>
+ten zawiera implementacjê Java Servlet API Suna w wersji 2.0 napisan±
+przez Paula Siegmanna (na licencji LGPL)
+<http://www.euronet.nl/~pauls/java/servlet/>.
+
+%package -n apache1-mod_jserv
+Summary:       JServ module for Apache
+Summary(pl):   Modu³ JServ dla Apache'a
+Group:         Networking/Daemons
+Requires:      apache1 >= 1.3.33-2
+Obsoletes:     ApacheJServ-auto
+
+%description -n apache1-mod_jserv
+JServ module for Apache.
+
+%description -n apache1-mod_jserv -l pl
+Modu³ JServ dla Apache'a.
 
 %package doc
 Summary:       ApacheJServ documentation
+Summary(pl):   Dokumentacja do ApacheJServ
 Group:         Development/Languages/Java
 
 %description doc
 ApacheJserv documentation.
 
+%description doc -l pl
+Dokumentacja do ApacheJServ.
+
 %prep
 %setup -q -a1
 %patch0 -p0
 %patch1 -p0
+%patch2 -p1
+%patch3 -p1
 
-# final position of GNU JSDK-Classes
-sed -i -e 's|@JSDK_CLASSES@|%{classesdir}/servlet-2.0.jar|g' conf/jserv.properties.in 
+sed -i -e '
+       s|@JSDK_CLASSES@|%{_javadir}/servlet-2.0.jar|g
+' conf/jserv.properties.in
 
 # do not load module in provided jserv.conf; we do this in httpd.conf
 sed -i -e 's|@LOAD_OR_NOT@|#|g' conf/jserv.conf.in
@@ -113,20 +147,17 @@ if [ ! -d jsdk-doc ]; then
        cp -r classpathx_servlet-%{jsdkversion}/apidoc jsdk-doc
 fi
 
-#%{!?with_gcj:GCJ=javac GCJFLAGS= CLASSPATH=`pwd`  JAVAC_OPT="-source 1.4" ac_cv_objext=class} \
-
 ### JSERV
-APXS_CFLAGS=`%{apxs} -q CFLAGS`
-%{!?with_gcj:GCJ=javac GCJFLAGS= CLASSPATH=`pwd`  JAVAC_OPT="-source 1.4"} \
-CFLAGS="$APXS_CFLAGS %{rpmcflags}" ./configure \
-       --prefix=%{_prefix} \
-       --disable-debugging \
+CFLAGS="$(%{apxs} -q CFLAGS) %{rpmcflags}"
+%configure \
+       %{!?debug:--disable-debugging} \
        --with-apxs=%{apxs} \
        --with-logdir=%{logdir} \
-       --with-servlets=%{servletdir} \
-    %{!?with_gcj:--with-javac=%{_bindir}/javac --with-jdk-home=%{_libdir}/java} \
+       --with-servlets=%{_datadir}/jserv/servlets \
+       %{!?with_gcj:GCJ=javac GCJFLAGS= CLASSPATH=`pwd` JAVAC_OPT="-source 1.4"} \
+    %{!?with_gcj:--with-javac=%{_bindir}/javac --with-java=%{_bindir}/java --with-jdk-home=%{_libdir}/java} \
     %{?with_gcj:--with-javac=%{_bindir}/gcj --with-jar=%{_bindir}/fastjar} \
-       --with-JSDK=`pwd`/classpathx_servlet-%{jsdkversion}/servlet-2.0.jar \
+       --with-JSDK=`pwd`/classpathx_servlet-%{jsdkversion}/servlet-2.0.jar
 
 %{__make} %{!?with_gcj:OBJEXT=class JAVAC_OPT='-source 1.4'} \
        -C src/java
@@ -134,274 +165,112 @@ CFLAGS="$APXS_CFLAGS %{rpmcflags}" ./configure \
 
 %install
 rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT%{classesdir}
-#install -d $RPM_BUILD_ROOT/etc/{rc.d/init.d,profile.d,logrotate.d}
+install -d $RPM_BUILD_ROOT{/etc/{sysconfig,rc.d/init.d},%{httpdconf}/conf.d,%{_javadir}}
+
+install %{SOURCE2} $RPM_BUILD_ROOT%{httpdconf}/conf.d/80_mod_jserv.conf
+install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/jserv
+install %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/jserv
 
 %{__make} install \
        DESTDIR=$RPM_BUILD_ROOT
 
-# we removed java, so do it manually
+# we removed java from SUBDIRS, so do it manually
 %{__make} install \
        %{!?with_gcj:OBJEXT=class JAVAC_OPT='-source 1.4'} \
        -C src/java \
        DESTDIR=$RPM_BUILD_ROOT
 
-echo "default - change on install `date`" > $RPM_BUILD_ROOT%{jservconf}/jserv.secret.key
-chmod 600 $RPM_BUILD_ROOT%{jservconf}/jserv.secret.key
+> $RPM_BUILD_ROOT%{httpdconf}/jserv.secret.key
+> $RPM_BUILD_ROOT%{_sysconfdir}/jserv.secret.key
 
-# currently disabled
-#install -m755 src/scripts/package/rpm/jserv.init      $RPM_BUILD_ROOT/etc/rc.d/init.d/jserv
-#install -m755 src/scripts/package/rpm/jserv.sh        $RPM_BUILD_ROOT/etc/profile.d
-#install -m644 src/scripts/package/rpm/jserv.logrotate $RPM_BUILD_ROOT/etc/logrotate.d/jserv
+install -d $RPM_BUILD_ROOT%{_datadir}/jserv/servlets
 
 ### GNU JSDK-classes
-install classpathx_servlet-%{jsdkversion}/servlet-2.0.jar $RPM_BUILD_ROOT%{classesdir}
+install classpathx_servlet-%{jsdkversion}/servlet-2.0.jar $RPM_BUILD_ROOT%{_javadir}
 
 find jsdk-doc -name 'Makefile*' | xargs rm -f
 rm -rf jsdk-doc/{COPYING.LIB,CVS} jsdk-doc/apidoc/CVS
 
+# duplicate
+rm -f $RPM_BUILD_ROOT%{_sysconfdir}/jserv.conf
+rm -rf $RPM_BUILD_ROOT%{_prefix}/docs
+
 %clean
 rm -rf $RPM_BUILD_ROOT
 
-%post
-# use fortune + install-date + process-list to create pseudo-random, hardly
-# guessable secret key. Use md5sum to create a hash from this, if available:
-(fortune 2>/dev/null ; date ; ps -eal 2>/dev/null) \
-       | (md5sum 2>/dev/null || cat) > %{jservconf}/jserv.secret.key
-chmod 600 %{jservconf}/jserv.secret.key
-
-#
-# determine apache-USER and chown the jserv.secrect.key - file
-#
-APACHEUSER=`grep "^User[        ]\+" %{httpdconf}/httpd.conf | awk '{print $2}'`
-if test ! "x$APACHEUSER" = x ; then
-       USERCOMMENT="(which is '$APACHEUSER' ?)"
-else
-# assumption:
-       APACHEUSER=http
-fi
-chown $APACHEUSER %{jservconf}/jserv.secret.key
-
-#
-# determine apache-GROUP and allow this group to write to %{logdir}
-APACHEGROUP=`grep "^Group[      ]\+" %{httpdconf}/httpd.conf | awk '{print $2}'`
-if test "x$APACHEGROUP" = x ; then
-       APACHEGROUP=http
-fi
-chgrp $APACHEGROUP %{logdir}
-chmod g+w %{logdir}
+%pre
+%groupadd -g 154 jserv
+%useradd -u 154 -g jserv -d /etc/jserv -c "JServ User" jserv
 
-#
-# Add 'jserv' as an independent service (manual mode)
-#/sbin/chkconfig --add jserv
-#/etc/rc.d/init.d/jserv start
-
-#
-# Find Include Statement or add it if necessary
-#
-umask 027
-cp -f %{httpdconf}/httpd.conf %{httpdconf}/httpd.conf.rpmorig
-grep -q '#\?.*[iI]nclude.*/jserv.conf' %{httpdconf}/httpd.conf
-if test $? -eq 0 ; then
-       # found. Insert our include statement here
-       ## this depends on GNU-sed ('|')
-       sed 's|^#\?\(.*Include\).*/jserv.conf.*$|\1 %{jservconf}/jserv.conf|g' \
-               %{httpdconf}/httpd.conf.rpmorig > %{httpdconf}/httpd.conf
-else
-       # append it
-       (
-               echo "<IfModule mod_jserv.c>"
-               echo "          Include %{jservconf}/jserv.conf"
-               echo "</IfModule>"
-       ) >> %{httpdconf}/httpd.conf
+%post
+if [ ! -s %{_sysconfdir}/jserv.secret.key ]; then
+       if [ -s %{httpdconf}/jserv.secret.key ]; then
+               cat %{httpdconf}/jserv.secret.key > %{_sysconfdir}/jserv.secret.key
+       else
+               dd if=/dev/urandom bs=1 count=42 2>/dev/null \
+                       | (md5sum 2>/dev/null || cat) > %{_sysconfdir}/jserv.secret.key
+       fi
 fi
+/sbin/chkconfig --add jserv
+%service jserv restart "Apache JServ Daemon"
 
-#
-# LoadModule; uncomment or insert
-#
-grep -q '#\?.*LoadModule.*jserv_module.*mod_jserv.so' %{httpdconf}/httpd.conf
-if test $? -eq 0 ; then
-       # found. Remove any comment
-       sed 's|^#.*\(LoadModule.*mod_jserv.so\)|\1|g' \
-               %{httpdconf}/httpd.conf > %{httpdconf}/httpd.conf.loadMod
-       mv -f %{httpdconf}/httpd.conf.loadMod %{httpdconf}/httpd.conf
-else
-       # Insert LoadModule line before first valid LoadModule
-       (
-               echo "/^LoadModule"
-               echo "i"
-               echo "LoadModule jserv_module   modules/mod_jserv.so"
-               echo "."
-               echo "wq"
-       ) | ed %{httpdconf}/httpd.conf > /dev/null 2>&1
+%preun
+if [ "$1" = 0 ]; then
+       %service jserv stop
+       /sbin/chkconfig --del jserv
 fi
 
-#
-# AddModule; uncomment or insert
-#
-grep -q '#\?.*AddModule.*mod_jserv.c' %{httpdconf}/httpd.conf
-if test $? -eq 0 ; then
-       # found. Remove any comment
-       sed 's|^#.*\(AddModule.*mod_jserv.c\)|\1|g' \
-               %{httpdconf}/httpd.conf > %{httpdconf}/httpd.conf.addMod
-       mv -f %{httpdconf}/httpd.conf.addMod %{httpdconf}/httpd.conf
-else
-       (
-               echo "/^AddModule"
-               echo "i"
-               echo "AddModule mod_jserv.c"
-               echo "."
-               echo "wq"
-       ) | ed %{httpdconf}/httpd.conf > /dev/null 2>&1
+%postun
+if [ "$1" = "0" ]; then
+       %userremove jserv
+       %groupremove jserv
 fi
 
-#
-# Search for JAVA at possible locations and edit wrapper.bin
-#
-unset JAVABIN
-for lookfor in java jre ; do
-       for loc in \
-               $JAVA_HOME \
-               $JDK_HOME \
-               %{_libdir}/java \
-               /usr/local/java* \
-               /usr/local/jdk*
-       do
-               if test -x "$loc/bin/$lookfor" ; then
-                       JAVABIN="$loc/bin/$lookfor"
-                       break
-               fi
-       done
-
-       if test -z "$JAVABIN" ; then
-               for prefix in /usr/jdk /usr/jdk- /usr/local/jdk /usr/local/jdk- ; do
-                       for jplatform in 2 1 ; do
-                               for subvers in .9 .8 .7 .6 .5 .4 .3 .2 .1 "" ; do
-                                       if test -x "${prefix}1.$jplatform$subvers/bin/$lookfor" ; then
-                                               JAVABIN="${prefix}1.$jplatform$subvers/bin/$lookfor"
-                                               break
-                                       fi
-                               done
-                               if test ! -z "$JAVABIN" ; then break ; fi
-                       done
-                       if test ! -z "$JAVABIN" ; then break ; fi
-               done
+%post -n apache1-mod_jserv
+if [ ! -s %{httpdconf}/jserv.secret.key ]; then
+       if [ -s %{_sysconfdir}/jserv.secret.key ]; then
+               cat %{_sysconfdir}/jserv.secret.key > %{httpdconf}/jserv.secret.key
+       else
+               dd if=/dev/urandom bs=1 count=42 2>/dev/null \
+                       | (md5sum 2>/dev/null || cat) > %{httpdconf}/jserv.secret.key
        fi
-       if test ! -z "$JAVABIN" ; then break ; fi
-done
-
-umask 022
-if test ! -z "$JAVABIN" ; then
-       sed "s|^wrapper.bin=.*$|wrapper.bin=$JAVABIN|" \
-               %{jservconf}/jserv.properties > %{jservconf}/jserv.properties.new
-       mv -f %{jservconf}/jserv.properties.new %{jservconf}/jserv.properties
-fi
-
-#
-# Get Server Port to echo right URL below
-#
-SERVERPORT=`grep "^Port" %{httpdconf}/httpd.conf | \
-                       head -n 1 | awk '{print ":" $2}'`
-if test "$SERVERPORT" = ":80" ; then
-       SERVERPORT=""
-fi
-
-#FIXME:                make this i18n-aware
-
-if test ! "x$JAVABIN" = x ; then
-       echo "using java VM $JAVABIN"
-else
-       echo "## didn't find java or jre. Please install it and edit the"
-       echo "## wrapper.bin property in %{jservconf}/jserv.properties"
 fi
-echo ""
-echo "In order to enable JServ, restart the webserver and try"
-echo "          http://localhost$SERVERPORT/servlets/IsItWorking"
-echo "  and"
-echo "          http://localhost$SERVERPORT/jserv/"
-echo "-- ENJOY! --"
-echo ""
-
-## we hopefully may distribute SUN-jsdk.jar with jserv once ..
-echo " | NOTE that this distribution contains a fully functional"
-echo " | free jsdk replacement, see <http://www.euronet.nl/~pauls/java/servlet/>."
-echo " | If you want to use the SUN-jsdk, replace the servlet-2.0.jar"
-echo " | in the wrapper.classpath - line in the file"
-echo " |                %{jservconf}/jserv.properties"
-echo " | with the SUN jsdk."
-echo " | Get it from <http://java.sun.com/products/servlet/>."
-echo " | Only JSDK 2.0 (Java Servlet Development Kit)"
-echo " | is supported (_EXACTLY_ 2.0)."
-echo ""
-
-echo "Please send comments/suggestions regarding"
-echo "this RPM to <zeller@to.com>."
+%service -q apache restart
 
-%preun
-# do not remove the configured stuff if we upgrade.
-# the $1 argument contains the number of packages _after_ installation.
-if [ "$1" != "0" ] ; then
-       exit 0
+%postun -n apache1-mod_jserv
+if [ "$1" = "0" ]; then
+       %service -q apache restart
 fi
 
-# Remove 'jserv' service (manual mode)
-#/etc/rc.d/init.d/jserv stop
-#/sbin/chkconfig --del jserv
-
-#
-# Find jserv related configuration settings and comment
-# them out
-#
-umask 027
-cp -f %{httpdconf}/httpd.conf %{httpdconf}/httpd.conf.rpmorig
-sed 's|.*\(Include.*%{jservconf}/jserv.conf\)|#\1|g' \
-       %{httpdconf}/httpd.conf.rpmorig \
-       | sed 's|^\(AddModule.*mod_jserv.c\)|#\1|g' \
-       | sed 's|^\(LoadModule.*mod_jserv.so\)|#\1|g' \
-       > %{httpdconf}/httpd.conf
-# remove old logs
-/bin/rm -fr %{logdir}/mod_jserv.log
-/bin/rm -fr %{logdir}/jserv.log
-
 %files
 %defattr(644,root,root,755)
-# mmh, we can't give %{_prefix}/docs to %doc ..
 %doc LICENSE README
-
-%dir %{jservconf}
-%config(noreplace) %verify(not md5 mtime size) %{jservconf}/jserv.properties
-%config(noreplace) %verify(not md5 mtime size) %{jservconf}/zone.properties
-%config(noreplace) %verify(not md5 mtime size) %{jservconf}/jserv.conf
-
-# these are just for demonstration and thus,
-# no %config-files per-se; do not install
-# them for the RPM-packet
-#%%{jservconf}/jserv.properties.default
-#%%{jservconf}/zone.properties.default
-#%%{jservconf}/jserv.conf.default
-
-%attr(600,http,http) %{jservconf}/jserv.secret.key
-#%config /etc/rc.d/init.d/jserv
-#%attr(640,root,root) %config(noreplace) %verify(not size mtime md5) /etc/logrotate.d/jserv
-#%config /etc/profile.d/jserv.sh
-
-%attr(755,root,root) %{libexecdir}/mod_jserv.so
-%{libexecdir}/ApacheJServ.jar
-
-%dir %{classesdir}
-%{classesdir}/servlet-2.0.jar
+%dir %attr(750,root,jserv) %{_sysconfdir}
+%attr(640,root,jserv) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/jserv.secret.key
+%attr(640,root,jserv) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/jserv.properties
+%attr(640,root,jserv) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zone.properties
+%attr(754,root,root) /etc/rc.d/init.d/jserv
+%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/jserv
+%{_javadir}/ApacheJServ.jar
+%{_javadir}/servlet-2.0.jar
+%dir %{_datadir}/jserv
+%dir %attr(750,root,jserv) %{_datadir}/jserv/servlets
 
 %if 0
-%dir %{servletdir}
-%{servletdir}/Hello.java
-%{servletdir}/Hello.class
-%{servletdir}/IsItWorking.java
-%{servletdir}/IsItWorking.class
+%{_datadir}/jserv/servlets/Hello.java
+%{_datadir}/jserv/servlets/Hello.class
+%{_datadir}/jserv/servlets/IsItWorking.java
+%{_datadir}/jserv/servlets/IsItWorking.class
 %endif
+%attr(770,root,jserv) %dir %{logdir}
 
-# we need to have write access here
-%attr(770,root,http) %dir %{logdir}
+%files -n apache1-mod_jserv
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_pkglibdir}/mod_jserv.so
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{httpdconf}/conf.d/80_mod_jserv.conf
+%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{httpdconf}/jserv.secret.key
 
 %files doc
+%defattr(644,root,root,755)
 %doc index.html docs
 %doc jsdk-doc
This page took 0.112305 seconds and 4 git commands to generate.