# TODO
# - separate package for jsdk?
#
# Conditional build:
%bcond_with gcj # use GCJ instead of javac
#
%define apxs /usr/sbin/apxs1
%define jsdkversion 20000924
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.34
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
Patch0: %{name}-enable-secret.patch
Patch1: %{name}-ac.patch
Patch2: %{name}-jre-env.patch
URL: http://java.apache.org/
BuildRequires: apache1-devel >= 1.3.9-8
BuildRequires: rpmbuild(macros) >= 1.228
BuildRequires: sed >= 4.0
%if %{with gcj}
BuildRequires: gcc-java
BuildRequires: fastjar
Requires: /usr/bin/gij
%else
BuildRequires: jdk
%endif
Provides: jserv
Provides: jsdk20
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%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 servletdir %{_datadir}/jserv/servlets
%define _noautocompressdoc package-list
%description
Apache JServ is a servlet engine, developed by the Java Apache Project
. The Apache JServ servlet engine is written
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 .
%description -l pl
Apache JServ jest silnikiem serwletowym, rozwijanym przez Java Apache
Project . 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 implementację Java Servlet API Suna w wersji 2.0 napisaną
przez Paula Siegmanna (na licencji LGPL)
.
%package -n apache1-mod_jserv
Summary: JServ module for Apache
Group: Networking/Daemons
Requires: %{name} = %{version}-%{release}
Requires: apache1 >= 1.3.33-2
%description -n apache1-mod_jserv
Apache JServ apache module.
%package init
Summary: ApacheJServ initscript
Summary(pl): Skrypt startowy ApacheJServ
Group: Development/Languages/Java
Requires: %{name} = %{version}-%{release}
Requires(pre): /bin/id
Requires(pre): /usr/bin/getgid
Requires(pre): /usr/sbin/useradd
Requires(pre): /usr/sbin/groupadd
Requires(post,preun): rc-scripts
%description init
JServ initscript for standalone mode.
%description init -l pl
Skrypt startowy JServ dla trybu samodzielnego.
%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
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
# we don't want gcj related deps
sed -i -e '/^SUBDIRS/s,java,,' src/Makefile.am
sed -i -e '/^SUBDIRS/s,example,,' Makefile.am
%build
if [ ! -f _autotools.done.1 ]; then
%{__gettextize}
%{__libtoolize}
%{__aclocal}
%{__autoconf}
%{__automake}
touch _autotools.done.1
fi
# prepare compilation
if [ ! -f classpathx_servlet-%{jsdkversion}/servlet-2.0.jar ]; then
%{__make} -C classpathx_servlet-%{jsdkversion} jar_2_0
fi
if [ ! -d jsdk-doc ]; then
%{__make} -C classpathx_servlet-%{jsdkversion}/apidoc
# copy API-doc
mkdir jsdk-doc
cp classpathx_servlet-%{jsdkversion}/{README,AUTHORS,COPYING.LIB} jsdk-doc
cp -r classpathx_servlet-%{jsdkversion}/apidoc jsdk-doc
fi
### JSERV
CFLAGS="$(%{apxs} -q CFLAGS) %{rpmcflags}"
%configure \
%{!?debug:--disable-debugging} \
--with-apxs=%{apxs} \
--with-logdir=%{logdir} \
--with-servlets=%{servletdir} \
%{!?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
%{__make} %{!?with_gcj:OBJEXT=class JAVAC_OPT='-source 1.4'} \
-C src/java
%{__make}
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{/etc/rc.d/init.d,%{httpdconf}/conf.d,%{_javadir}}
install %{SOURCE2} $RPM_BUILD_ROOT%{httpdconf}/conf.d/81_mod_jserv.conf
install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/jserv
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
# 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" > $RPM_BUILD_ROOT%{_sysconfdir}/jserv.secret.key
### GNU JSDK-classes
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
%clean
rm -rf $RPM_BUILD_ROOT
%post
if [ "$1" = 1 ]; then
dd if=/dev/urandom bs=1 count=42 2>/dev/null \
| (md5sum 2>/dev/null || cat) > %{_sysconfdir}/jserv.secret.key
fi
%post -n apache1-mod_jserv
%service apache restart
%postun -n apache1-mod_jserv
if [ "$1" = "0" ]; then
%service -q apache restart
fi
%pre init
%groupadd -P %{name}-init -g 154 jserv
%useradd -P %{name}-init -u 154 -g jserv -d /etc/jserv -c "JServ User" jserv
%post init
/sbin/chkconfig --add jserv
%preun init
if [ "$1" = 0 ]; then
if [ -f /var/lock/subsys/jserv ]; then
/etc/rc.d/init.d/jserv stop 1>&2
fi
/sbin/chkconfig --del jserv
fi
%postun init
if [ "$1" = "0" ]; then
%userremove jserv
%groupremove jserv
fi
%files
%defattr(644,root,root,755)
%doc LICENSE README
%dir %{_sysconfdir}
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/jserv.properties
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zone.properties
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/jserv.secret.key
%{_javadir}/ApacheJServ.jar
%{_javadir}/servlet-2.0.jar
%if 0
%dir %{servletdir}
%{servletdir}/Hello.java
%{servletdir}/Hello.class
%{servletdir}/IsItWorking.java
%{servletdir}/IsItWorking.class
%endif
%files -n apache1-mod_jserv
%defattr(644,root,root,755)
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{httpdconf}/conf.d/*_mod_jserv.conf
%attr(755,root,root) %{_pkglibdir}/mod_jserv.so
%attr(770,root,http) %dir %{logdir}
%files init
%defattr(644,root,root,755)
%attr(754,root,root) /etc/rc.d/init.d/jserv
%files doc
%defattr(644,root,root,755)
%doc index.html docs
%doc jsdk-doc