X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=ApacheJServ.spec;h=efaa4b6a676230c5904c6baa5528361ff9a51d8b;hb=HEAD;hp=aea1855eb998a02e2952132c9901ab4594b5b863;hpb=1a6f0606aaa1966b1c4b45c31adf507d4f734361;p=packages%2FApacheJServ.git diff --git a/ApacheJServ.spec b/ApacheJServ.spec index aea1855..efaa4b6 100644 --- a/ApacheJServ.spec +++ b/ApacheJServ.spec @@ -1,360 +1,224 @@ -#%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 apxs /usr/sbin/apxs1 +%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 +Summary(pl.UTF-8): Silnik serwletów ze wsparciem dla wiodącego serwera WWW Name: ApacheJServ -Version: 1.1 -Release: 3 +Version: 1.1.2 +Release: 11 +License: freely distributable & usable +Group: Networking/Daemons Source0: http://java.apache.org/jserv/dist/%{name}-%{version}.tar.gz -Source1: http://www.euronet.nl/~pauls/java/servlet/download/classpathx_servlet-%{jsdkversion}.tar.gz +# Source0-md5: 6d48a1b9fcc5eea4dfebaae29ba5a485 +Source2: %{name}.conf +Source3: %{name}.init +Source4: %{name}.sysconfig +Source5: runjserv Patch0: %{name}-enable-secret.patch -Patch1: %{name}-DESTDIR.patch -URL: http://java.apache.org/ -License: Freely distributable & usable -Group: Networking/Daemons -Requires: apache >= 1.3.6 -Provides: jserv jsdk20 +Patch1: %{name}-ac.patch +Patch2: %{name}-jre-env.patch +Patch3: %{name}-config.patch +Patch4: doc-overwrite.patch +URL: http://archive.apache.org/dist/java/jserv/ +BuildRequires: apache1-devel >= 1.3.9-8 +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: gettext-tools +BuildRequires: jdk +BuildRequires: jpackage-utils +BuildRequires: rpm-javaprov +BuildRequires: rpmbuild(macros) >= 1.300 +BuildRequires: sed >= 4.0 +BuildRequires: servlet = 2.0 +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: jpackage-utils +Requires: jre +Requires: rc-scripts >= 0.4.0.19 +Requires: servlet = 2.0 +Provides: group(jserv) +Provides: user(jserv) +Obsoletes: ApacheJServ-doc +Obsoletes: ApacheJServ-init +Obsoletes: jserv 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 _pkglibdir %(%{apxs} -q LIBEXECDIR 2>/dev/null) +%define httpdconf %(%{apxs} -q SYSCONFDIR 2>/dev/null) +%define _sysconfdir /etc/jserv %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 +from the mod_jserv Apache module (DSO included). -%description -l pl +%description -l pl.UTF-8 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 sunowsk± implementacjê api serletów w javie w wersji 2.0 -(na licencji LGPL) napisana przez Paula Siegmanna - +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). -%prep -%setup -q -a 1 +%package -n apache1-mod_jserv +Summary: JServ module for Apache +Summary(pl.UTF-8): Moduł JServ dla Apache'a +Group: Networking/Daemons +Requires: apache1-base >= 1.3.33-2 +Obsoletes: ApacheJServ-auto -%patch0 -%patch1 -p1 +%description -n apache1-mod_jserv +JServ module for Apache. -# 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 +%description -n apache1-mod_jserv -l pl.UTF-8 +Moduł JServ dla Apache'a. -# 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 +%prep +%setup -q +%patch0 -p0 +%patch1 -p0 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 + +# servlet-2.0 is the highest version the jserv code compiles with +servlet_jar=$(find-jar servlet-2.0) +%{__sed} -i -e " + s|@JSDK_CLASSES@|$servlet_jar|g + s|@JAVA@|%java|g +" conf/jserv.properties.in -%build -# prepare compilation -aclocal -autoconf -automake -a -c +# 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 -%{__make} -C classpathx_servlet-%{jsdkversion} jar_2_0 -%{__make} -C classpathx_servlet-%{jsdkversion}/apidoc +# we don't want gcj related deps +%{__sed} -i -e '/^SUBDIRS/s,java,,' src/Makefile.am +%{__sed} -i -e '/^SUBDIRS/s,example,,' Makefile.am -# copy API-doc -mkdir jsdk-doc -cp classpathx_servlet-%{jsdkversion}/README \ - classpathx_servlet-%{jsdkversion}/AUTHORS \ - classpathx_servlet-%{jsdkversion}/COPYING.LIB \ - jsdk-doc -cp -r classpathx_servlet-%{jsdkversion}/apidoc jsdk-doc +%build +export JAVA_HOME="%{java_home}" +if [ ! -f _autotools.stamp ]; then + %{__gettextize} + %{__libtoolize} + %{__aclocal} + %{__autoconf} + %{__automake} + touch _autotools.stamp +fi ### JSERV - -APXS_CFLAGS=`$APXS_UTIL -q CFLAGS` -CFLAGS="$APXS_CFLAGS %{rpmcflags}" ./configure \ - --prefix=%{_prefix} \ - --disable-debugging \ - --with-apxs=/usr/sbin/apxs \ - --with-logdir=%{logdir} \ - --with-servlets=%{servletdir} \ - --with-JSDK=`pwd`/classpathx_servlet-%{jsdkversion}/servlet-2.0.jar +CFLAGS="$(%{apxs} -q CFLAGS) %{rpmcflags}" +dir=$(pwd) +%configure \ + %{!?debug:--disable-debugging} \ + --with-apxs=%{apxs} \ + --with-logdir=/var/log/jserv \ + --with-servlets=%{_datadir}/jserv/servlets \ + --with-java-platform=1.4 \ + --with-JSDK=$(find-jar servlet-2.0) \ + %{!?with_gcj:GCJ=javac GCJFLAGS= CLASSPATH=$dir JAVAC_OPT="-source 1.4"} \ + %{!?with_gcj:--with-javac=%{javac} --with-java=%{java} --with-jdk-home=$JAVA_HOME} \ + %{?with_gcj:--with-javac=%{_bindir}/gcj --with-jar=%{_bindir}/fastjar} \ + +%{__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/{sysconfig,rc.d/init.d},%{httpdconf}/conf.d,%{_javadir},%{_sbindir}} -%{__make} DESTDIR=$RPM_BUILD_ROOT install +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 +install %{SOURCE5} $RPM_BUILD_ROOT%{_sbindir} -echo "default - change on install `date`" > $RPM_BUILD_ROOT/%{jservconf}/jserv.secret.key -chmod 600 $RPM_BUILD_ROOT/%{jservconf}/jserv.secret.key +%{__make} install \ + DESTDIR=$RPM_BUILD_ROOT -# currently disabled -#install -d $RPM_BUILD_ROOT%{_sysconfdir}/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%{_sysconfdir}/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 +# 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 -### GNU JSDK-classes -install -d ${RPM_BUILD_ROOT}%{classesdir} -install classpathx_servlet-%{jsdkversion}/servlet-2.0.jar ${RPM_BUILD_ROOT}%{classesdir} - -%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 -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=nobody -fi -chown $APACHEUSER %{jservconf}/jserv.secret.key +> $RPM_BUILD_ROOT%{httpdconf}/jserv.secret.key +> $RPM_BUILD_ROOT%{_sysconfdir}/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 -fi -chgrp $APACHEGROUP %{logdir} -chmod g+w %{logdir} +install -d $RPM_BUILD_ROOT%{_datadir}/jserv/servlets -# -# Add 'jserv' as an independent service (manual mode) -#/sbin/chkconfig --add jserv -#/etc/rc.d/init.d/jserv start +# duplicate +rm -f $RPM_BUILD_ROOT%{_sysconfdir}/jserv.conf +rm -rf $RPM_BUILD_ROOT%{_prefix}/docs -# -# 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 -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 -else - # append it - ( - echo "" - echo " Include %{jservconf}/jserv.conf" - echo "" - ) >> %{httpdconf}/httpd.conf -fi +%clean +rm -rf $RPM_BUILD_ROOT -# -# LoadModule; uncomment or insert -# -grep '#\?.*LoadModule.*jserv_module.*mod_jserv.so' %{httpdconf}/httpd.conf \ - >/dev/null -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 -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 -fi +%pre +%groupadd -g 154 jserv +%useradd -u 154 -g jserv -d /etc/jserv -c "JServ User" jserv -# -# AddModule; uncomment or insert -# -grep '#\?.*AddModule.*mod_jserv.c' %{httpdconf}/httpd.conf >/dev/null -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 -else - ( echo "/^AddModule" - echo "i" - echo "AddModule mod_jserv.c" - echo "." - echo "wq" - ) | ed %{httpdconf}/httpd.conf > /dev/null 2>&1 +%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" -# -# Search vor 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 - done - fi - if test ! -z "$JAVABIN" ; then break ; fi -done - -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 +%preun +if [ "$1" = 0 ]; then + %service jserv stop + /sbin/chkconfig --del jserv fi -# -# Get Server Port to echo right URL below -# -SERVERPORT=`grep "^Port" %{httpdconf}/httpd.conf | \ - head -1 | awk '{print ":" $2}'` -if test "$SERVERPORT" = ":80" ; then - SERVERPORT="" +%postun +if [ "$1" = "0" ]; then + %userremove jserv + %groupremove jserv 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" +%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 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 ." -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 ." -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 ." +%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 -eq 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 -# -cp %{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 index.html README docs jsdk-doc - -%dir %{jservconf} -%config %{jservconf}/jserv.properties -%config %{jservconf}/zone.properties -%config %{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(-,nobody,nobody) %{jservconf}/jserv.secret.key -#%config %{_sysconfdir}/rc.d/init.d/jserv -#%config %{_sysconfdir}/logrotate.d/jserv -#%config %{_sysconfdir}/profile.d/jserv.sh - -%{libexecdir}/mod_jserv.so -%{libexecdir}/ApacheJServ.jar - -%dir %{classesdir} -%{classesdir}/servlet-2.0.jar - -%dir %{servletdir} -%{servletdir}/IsItWorking.java -%{servletdir}/IsItWorking.class - -# we need to have write access here -%attr(-,nobody,-) %dir %{logdir} +%doc LICENSE README +%doc index.html docs +%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 +%attr(755,root,root) %{_sbindir}/runjserv +%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/jserv +%{_javadir}/ApacheJServ.jar +%dir %{_datadir}/jserv +%dir %attr(750,root,jserv) %{_datadir}/jserv/servlets +%attr(770,root,jserv) %dir /var/log/jserv + +%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