-#%define libexecdir `apxs -q LIBEXECDIR`
-%define libexecdir /usr/lib/apache
-
-#%define httpdconf `apxs -q SYSCONFDIR`
-%define httpdconf /etc/httpd/conf
-
-%define jservconf %{httpdconf}/jserv
-%define logdir /var/log/httpd
-%define servletdir /home/httpd/servlets
-%define classesdir /home/httpd/classes
-%define jsdkversion 20000924
+%define jsdkversion 20000924
+%define apxs /usr/sbin/apxs
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
-Release: 3
+Version: 1.1.2
+Release: 1
+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
Patch0: %{name}-enable-secret.patch
-Patch1: %{name}-DESTDIR.patch
URL: http://java.apache.org/
-License: freely distributable & usable
-Group: Networking/Daemons
+BuildRequires: apache-devel >= 1.3.9-8
+BuildRequires: jdk
+Requires(post): awk
+Requires(post): ed
+Requires(post,preun): fileutils
+Requires(post): grep
+Requires(post,preun): sed
+Requires(post): sh-utils
+Requires(post): textutils
Requires: apache >= 1.3.6
Provides: jserv jsdk20
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-#BuildRequires: any-java-compiler
-
-BuildRequires: automake >= 1.4
-BuildRequires: autoconf >= 2.13
-BuildRequires: libtool >= 1.3.3
-BuildRequires: apache-devel >= 1.3.9-8
+%define libexecdir %(%{apxs} -q LIBEXECDIR)
+%define httpdconf %(%{apxs} -q SYSCONFDIR)
+%define jservconf %{httpdconf}/jserv
+%define logdir /var/log/httpd
+%define servletdir /home/services/httpd/servlets
+%define classesdir /home/services/httpd/classes
%description
Apache JServ is a servlet engine, developed by the Java Apache Project
<http://www.euronet.nl/~pauls/java/servlet/>
%prep
-%setup -q -a 1
-
-%patch0
-%patch1 -p1
+%setup -q -a1
+%patch0 -p0
# final position of GNU JSDK-Classes
sed 's|@JSDK_CLASSES@|%{classesdir}/servlet-2.0.jar|g' \
- < conf/jserv.properties.in > conf/jserv.properties.in.new
-mv conf/jserv.properties.in.new conf/jserv.properties.in
+ conf/jserv.properties.in > conf/jserv.properties.in.new
+mv -f conf/jserv.properties.in.new conf/jserv.properties.in
# do not load module in provided jserv.conf; we do this in httpd.conf
-sed 's|@LOAD_OR_NOT@|#|g' \
- < conf/jserv.conf.in > conf/jserv.conf.in.new
-mv conf/jserv.conf.in.new conf/jserv.conf.in
+sed 's|@LOAD_OR_NOT@|#|g' conf/jserv.conf.in \
+ > conf/jserv.conf.in.new
+mv -f conf/jserv.conf.in.new conf/jserv.conf.in
%build
# prepare compilation
-rm -f missing
-%{__aclocal}
-%{__autoconf}
-%{__automake}
-
%{__make} -C classpathx_servlet-%{jsdkversion} jar_2_0
%{__make} -C classpathx_servlet-%{jsdkversion}/apidoc
### JSERV
-APXS_CFLAGS=`$APXS_UTIL -q CFLAGS`
+APXS_CFLAGS=`%{apxs} -q CFLAGS`
CFLAGS="$APXS_CFLAGS %{rpmcflags}" ./configure \
--prefix=%{_prefix} \
--disable-debugging \
- --with-apxs=/usr/sbin/apxs \
+ --with-apxs=%{apxs} \
--with-logdir=%{logdir} \
--with-servlets=%{servletdir} \
- --with-JSDK=`pwd`/classpathx_servlet-%{jsdkversion}/servlet-2.0.jar
+ --with-JSDK=`pwd`/classpathx_servlet-%{jsdkversion}/servlet-2.0.jar \
+ --with-jdk-home=/usr/lib/java
%{__make}
%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}
-%{__make} DESTDIR=$RPM_BUILD_ROOT install
+%{__make} install \
+ 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
+echo "default - change on install `date`" > $RPM_BUILD_ROOT%{jservconf}/jserv.secret.key
+chmod 600 $RPM_BUILD_ROOT%{jservconf}/jserv.secret.key
# currently disabled
-#install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
-#install -d $RPM_BUILD_ROOT%{_sysconfdir}/profile.d
-#install -d $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d
#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%{_sysconfdir}/profile.d
-#install -m644 src/scripts/package/rpm/jserv.logrotate $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.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
### GNU JSDK-classes
-install -d ${RPM_BUILD_ROOT}%{classesdir}
-install classpathx_servlet-%{jsdkversion}/servlet-2.0.jar ${RPM_BUILD_ROOT}%{classesdir}
+install classpathx_servlet-%{jsdkversion}/servlet-2.0.jar $RPM_BUILD_ROOT%{classesdir}
+
+find docs jsdk-doc -name 'Makefile*' | xargs rm -f
+rm -rf jsdk-doc/{COPYING.LIB,CVS}
%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:
-(%{_prefix}/games/fortune 2>/dev/null ; date ; ps -eal 2>/dev/null) \
- | (md5sum 2>/dev/null || cat) \
- > %{jservconf}/jserv.secret.key
+(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
#
#
APACHEUSER=`grep "^User[ ]\+" %{httpdconf}/httpd.conf | awk '{print $2}'`
if test ! "x$APACHEUSER" = x ; then
- USERCOMMENT="(which is '$APACHEUSER' ?)"
+ USERCOMMENT="(which is '$APACHEUSER' ?)"
else
- # assumption:
- APACHEUSER=nobody
+# 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=nobody
+ APACHEGROUP=http
fi
chgrp $APACHEGROUP %{logdir}
chmod g+w %{logdir}
#
# Find Include Statement or add it if necessary
#
-cp %{httpdconf}/httpd.conf %{httpdconf}/httpd.conf.rpmorig
-grep '#\?.*[iI]nclude.*/jserv.conf' %{httpdconf}/httpd.conf \
- >/dev/null
+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 ('|') .. but we're on a RedHat system anyway
- sed 's|^#\?\(.*Include\).*/jserv.conf.*$|\1 %{jservconf}/jserv.conf|g' \
- < %{httpdconf}/httpd.conf.rpmorig \
- > %{httpdconf}/httpd.conf
+ # 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
+ # append it
+ (
+ echo "<IfModule mod_jserv.c>"
+ echo " Include %{jservconf}/jserv.conf"
+ echo "</IfModule>"
+ ) >> %{httpdconf}/httpd.conf
fi
#
# LoadModule; uncomment or insert
#
-grep '#\?.*LoadModule.*jserv_module.*mod_jserv.so' %{httpdconf}/httpd.conf \
- >/dev/null
+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 %{httpdconf}/httpd.conf.loadMod %{httpdconf}/httpd.conf
+ # 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
+ # 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
fi
#
# AddModule; uncomment or insert
#
-grep '#\?.*AddModule.*mod_jserv.c' %{httpdconf}/httpd.conf >/dev/null
+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 %{httpdconf}/httpd.conf.addMod %{httpdconf}/httpd.conf
+ # 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
+ (
+ echo "/^AddModule"
+ echo "i"
+ echo "AddModule mod_jserv.c"
+ echo "."
+ echo "wq"
+ ) | ed %{httpdconf}/httpd.conf > /dev/null 2>&1
fi
#
-# Search vor JAVA at possible locations and edit wrapper.bin
+# 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 \
- /usr/local/java \
- /usr/local/jdk \
- /usr/local/jdk117_v3 \
- /usr/local/jdk117_v1a
- 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
+ for loc in \
+ $JAVA_HOME \
+ $JDK_HOME \
+ /usr/lib/java \
+ /usr/local/java* \
+ /usr/local/jdk*
+ do
+ if test -x "$loc/bin/$lookfor" ; then
+ JAVABIN="$loc/bin/$lookfor"
+ break
+ fi
done
- fi
- if test ! -z "$JAVABIN" ; then break ; fi
+
+ 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
+ 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 %{jservconf}/jserv.properties.new %{jservconf}/jserv.properties
+ sed "s|^wrapper.bin=.*$|wrapper.bin=$JAVABIN|" \
+ %{jservconf}/jserv.properties > %{jservconf}/jserv.properties.new
+ mv -f %{jservconf}/jserv.properties.new %{jservconf}/jserv.properties
fi
#
#FIXME: make this i18n-aware
if test ! "x$JAVABIN" = x ; then
- echo "using java VM $JAVABIN"
+ 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"
+ 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"
%preun
# do not remove the configured stuff if we upgrade.
# the $1 argument contains the number of packages _after_ installation.
-if [ ! $1 -eq 0 ] ; then
- exit 0
+if [ "$1" != "0" ] ; then
+ exit 0
fi
# Remove 'jserv' service (manual mode)
# Find jserv related configuration settings and comment
# them out
#
-cp %{httpdconf}/httpd.conf %{httpdconf}/httpd.conf.rpmorig
+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.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
%files
%defattr(644,root,root,755)
# mmh, we can't give %{_prefix}/docs to %doc ..
-%doc index.html README docs jsdk-doc
+%doc index.html LICENSE README docs jsdk-doc
%dir %{jservconf}
-%config %{jservconf}/jserv.properties
-%config %{jservconf}/zone.properties
-%config %{jservconf}/jserv.conf
+%config(noreplace) %verify(not size mtime md5) %{jservconf}/jserv.properties
+%config(noreplace) %verify(not size mtime md5) %{jservconf}/zone.properties
+%config(noreplace) %verify(not size mtime md5) %{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
+#%%{jservconf}/jserv.properties.default
+#%%{jservconf}/zone.properties.default
+#%%{jservconf}/jserv.conf.default
-%attr(-,nobody,nobody) %{jservconf}/jserv.secret.key
+%attr(600,http,http) %{jservconf}/jserv.secret.key
#%config /etc/rc.d/init.d/jserv
-#%config %{_sysconfdir}/logrotate.d/jserv
-#%config %{_sysconfdir}/profile.d/jserv.sh
+#%config /etc/logrotate.d/jserv
+#%config /etc/profile.d/jserv.sh
-%{libexecdir}/mod_jserv.so
+%attr(755,root,root) %{libexecdir}/mod_jserv.so
%{libexecdir}/ApacheJServ.jar
%dir %{classesdir}
%{classesdir}/servlet-2.0.jar
%dir %{servletdir}
+%{servletdir}/Hello.java
+%{servletdir}/Hello.class
%{servletdir}/IsItWorking.java
%{servletdir}/IsItWorking.class
# we need to have write access here
-%attr(-,nobody,-) %dir %{logdir}
+%attr(770,root,http) %dir %{logdir}