diff -ur --exclude=dist orig/opennms-1.1.0-1/source/build.properties opennms-1.1.0-1/source/build.properties
--- orig/opennms-1.1.0-1/source/build.properties	2002-11-19 14:23:28.000000000 -0500
+++ opennms-1.1.0-1/source/build.properties	2002-12-15 15:17:43.000000000 -0500
@@ -77,6 +77,10 @@
 rpm.sign		= false
 # rpm.buildtests:	whether to build the test classes
 rpm.buildtests		= false
+# rpm.tomcatdir:	where tomcat is installed
+rpm.tomcatdir		= /var/tomcat4
+# rpm.tomcatuser:	user that tomcat runs as
+rpm.tomcatuser		= root
 
 install.database.driver   = org.postgresql.Driver
 install.database.url      = jdbc:postgresql://localhost:5432/opennms?compatible=7.1
diff -ur --exclude=dist orig/opennms-1.1.0-1/source/build.xml opennms-1.1.0-1/source/build.xml
--- orig/opennms-1.1.0-1/source/build.xml	2002-11-19 14:23:29.000000000 -0500
+++ opennms-1.1.0-1/source/build.xml	2002-12-16 10:03:59.000000000 -0500
@@ -10,15 +10,7 @@
  
  <!-- top-level initialization -->
  
- <target name="init" depends="init.setup,init.bb-global,init.opennms-global"/>
-
- <target name="init.opennms-global" if="opennms-global.exists">
-  <filter filtersfile="${user.home}/.${ant.project.name}-global.properties"/>
- </target>
-
- <target name="init.bb-global" if="bb-global.exists">
-  <filter filtersfile="${user.home}/.bb-global.properties"/>
- </target>
+ <target name="init" depends="init.setup"/>
 
  <target name="init.setup" unless="init.done">
   <tstamp/>
@@ -26,10 +18,17 @@
   <taskdef name="sablecc" classname="org.sablecc.ant.taskdef.Sablecc"/>
 
   <!-- set properties -->
-  <property file="${user.home}/.bb-global.properties"/>
+  <property environment="env"/>
+
+  <if value="${env.PROPERTY_OVERRIDE}" regexp="^.">
+   <thenProperty name="bb-global.file" value="${env.PROPERTY_OVERRIDE}"/>
+   <elseProperty name="bb-global.file" value="${user.home}/.bb-global.properties"/>
+  </if>
+
+  <property file="${bb-global.file}"/>
   <property file="${user.home}/.${ant.project.name}-global.properties"/>
   <property file="${root.source}/build.properties"/>
-  <property environment="env"/>
+
   <property name="install" value="${root.installprefix}${root.install}"/>
   <property name="install.initdir" value="${root.installprefix}${root.install.initdir}"/>
   <property name="install.sbindir" value="${root.installprefix}${root.install.sbindir}"/>
@@ -37,6 +36,7 @@
   <property name="install.rrdtool" value="${root.installprefix}${root.install.rrdtool}"/>
   <property name="install.share" value="${root.installprefix}${root.install.share}"/>
   <property name="install.rrdtool" value="${root.installprefix}${root.install.rrdtool}"/>
+  <property name="install.rrdtool.bin" value="${root.installprefix}${install.rrdtool.bin}"/>
   <property name="install.servlets" value="${root.installprefix}${root.install.servlets}"/>
   <property name="install.logs" value="${root.installprefix}${root.install.logs}"/>
   <property name="install.pid" value="${root.installprefix}${root.install.pid}"/>
@@ -64,11 +64,12 @@
   </if>
 
   <!-- set filters -->
-  <filter filtersfile="${root.source}/build.properties" />
   <filter token="install.log.dir" value="${root.install.logs}"/>
+  <filter token="opennms.version" value="${opennms.version}"/>
+  <filter token="opennms.release" value="${opennms.release}"/>
   <filter token="opennms.version.string" value="${opennms.version.string}"/>
   <filter token="opennms.release.string" value="${opennms.release.string}"/>
-  <if isFile="${user.home}/.bb-global.properties">
+  <if isFile="${bb-global.file}">
    <thenProperty name="bb-global.exists" value="true"/>
   </if>
   <if isFile="${user.home}/.${ant.project.name}-global.properties">
@@ -105,6 +106,15 @@
   <filter token="ant.project.name" value="${ant.project.name}"/>
   <filter token="compile.soext" value="${compile.soext}"/>
   <filter token="compile.jniext" value="${compile.jniext}"/>
+
+  <filter token="rpm.install" value="${rpm.install}"/>
+  <filter token="rpm.database.user" value="${rpm.database.user}"/>
+  <filter token="rpm.database.password" value="${rpm.database.password}"/>
+  <filter token="rpm.database.name" value="${rpm.database.name}"/>
+  <filter token="rpm.tomcatdir" value="${rpm.tomcatdir}"/>
+  <filter token="rpm.tomcatuser" value="${rpm.tomcatuser}"/>
+  <filter token="rpm.buildtests" value="${rpm.buildtests}"/>
+  <filter token="rpm.platform" value="${rpm.platform}"/>
  
   <!-- init wrapup -->
   <antcall target="print.header"><param name="print.headertext" value="OpenNMS Main Build Initializing"/></antcall>
@@ -123,7 +133,7 @@
  <target name="print.debug" if="debug">
   <echo>
   === Java ===
-  JVM Version                  = ${java.fullversion}
+  JVM Version                  = ${java.vm.vendor} ${java.vm.name} ${java.vm.version}
   JAVA_HOME                    = ${env.JAVA_HOME}
   CLASSPATH                    = ${java.class.path}
   Ant Version                  = ${ant.version}
@@ -160,6 +170,12 @@
   Shared Files Directory       = ${relative.install.share}
   Servlet Directory            = ${relative.install.servlets}
   Release Tarball Directory    = ${relative.release}
+
+  === RPM ===
+  RPM Platform                 = ${rpm.platform}
+  RPM Install                  = ${rpm.install}
+  RPM Tomcat Directory         = ${rpm.tomcatdir}
+  RPM Tomcat User              = ${rpm.tomcatuser}
   </echo>
  </target>
  
diff -ur --exclude=dist orig/opennms-1.1.0-1/source/tools/packages/opennms/opennms.init opennms-1.1.0-1/source/tools/packages/opennms/opennms.init
--- orig/opennms-1.1.0-1/source/tools/packages/opennms/opennms.init	2002-11-19 14:23:29.000000000 -0500
+++ opennms-1.1.0-1/source/tools/packages/opennms/opennms.init	2002-12-15 01:02:24.000000000 -0500
@@ -9,18 +9,24 @@
 RETVAL=0
 LOGFILE=/var/log/opennms/output.log
 
-FUNCTIONS_LOADED=0
-# Source function library.
-for dir in @root.install.initdir@ /etc /etc/rc.d; do
-	if [ -f "$dir/init.d/functions" ] && [ "$FUNCTIONS_LOADED" = "0" ]; then
-		source "$dir/init.d/functions"
-		FUNCTIONS_LOADED=1
-	fi
-done
+if [ -f /etc/SuSE-release ]; then
+	. /etc/rc.status
+	rc_reset
+	. /usr/bin/setJava --version 1.4 --devel
+else
+	FUNCTIONS_LOADED=0
+	# Source function library.
+	for dir in @root.install.initdir@ /etc /etc/rc.d; do
+		if [ -f "$dir/init.d/functions" ] && [ "$FUNCTIONS_LOADED" = "0" ]; then
+			source "$dir/init.d/functions"
+			FUNCTIONS_LOADED=1
+		fi
+	done
 
-if [ "$FUNCTIONS_LOADED" = "0" ]; then
-	echo "$0: unable to find init.d functions!"
-	exit 1
+	if [ "$FUNCTIONS_LOADED" = "0" ]; then
+		echo "$0: unable to find init.d functions!"
+		exit 1
+	fi
 fi
 
 # Check for OPENNMS_HOME
@@ -47,22 +53,33 @@
 start(){
 	export REDIRECT=$LOGFILE
 	echo -n $"Starting OpenNMS: "
-	daemon /opt/OpenNMS/bin/opennms.sh start
-	RETVAL=$?
-	echo
-	touch /var/lock/subsys/opennms
-	return $RETVAL
+	if [ -f /etc/SuSE-release ]; then
+		$OPENNMS_HOME/bin/opennms.sh start || rc_failed
+		rc_status -v
+	else
+		daemon $OPENNMS_HOME/bin/opennms.sh start
+		RETVAL=$?
+		echo
+		touch /var/lock/subsys/opennms
+		return $RETVAL
+	fi
 }
 
 stop(){
 	echo -n $"Stopping OpenNMS: "
-	daemon /opt/OpenNMS/bin/opennms.sh stop
-	RETVAL=$?
-	echo
-	sleep 10
-	/opt/OpenNMS/bin/opennms.sh kill >/dev/null 2>&1
-	rm -f /var/lock/subsys/opennms
-	return $RETVAL
+	if [ -f /etc/SuSE-release ]; then
+		$OPENNMS_HOME/bin/opennms.sh stop || rc_failed
+		$OPENNMS_HOME/bin/opennms.sh kill
+		rc_status -v
+	else
+		daemon $OPENNMS_HOME/bin/opennms.sh stop
+		RETVAL=$?
+		echo
+		sleep 10
+		$OPENNMS_HOME/bin/opennms.sh kill >/dev/null 2>&1
+		rm -f /var/lock/subsys/opennms
+		return $RETVAL
+	fi
 }
 
 restart(){
@@ -71,7 +88,7 @@
 }
 
 status(){
-	/opt/OpenNMS/bin/opennms.sh status
+	$OPENNMS_HOME/bin/opennms.sh status
 	RETVAL=$?
 	echo
 	return $RETVAL
diff -ur --exclude=dist orig/opennms-1.1.0-1/source/tools/packages/opennms/opennms.spec.in opennms-1.1.0-1/source/tools/packages/opennms/opennms.spec.in
--- orig/opennms-1.1.0-1/source/tools/packages/opennms/opennms.spec.in	2002-11-19 14:23:29.000000000 -0500
+++ opennms-1.1.0-1/source/tools/packages/opennms/opennms.spec.in	2002-12-15 15:26:25.000000000 -0500
@@ -10,7 +10,8 @@
 %{!?rrdlibdir:%define rrdlibdir %instprefix/lib}
 %{!?logdir:%define logdir /var/log/opennms}
 %{!?pidfile:%define pidfile /var/run/opennms.pid}
-%{!?tomcatdir:%define tomcatdir /var/tomcat4}
+%{!?tomcatdir:%define tomcatdir @rpm.tomcatdir@}
+%{!?tomcatuser:%define tomcatuser @rpm.tomcatuser@}
 %{!?pglibdir:%define pglibdir %instprefix/lib}
 
 # build type modifiers
@@ -78,6 +79,13 @@
 Requires:		postgres >= 7.1
 %endif
 
+%if "%{platform}" == "linux-i386-suse-8.1"
+%define	initdir		/etc
+%define	psql		/usr/bin/psql
+%define psql_service	postgresql
+Requires:		postgresql >= 7.1, postgresql-server >= 7.1
+%endif
+
 %if "%{platform}" == "linux-i386-mandrake-7"
 %define	initdir		/etc
 %define	psql		/usr/bin/psql
@@ -125,7 +133,11 @@
 %package webapp
 Summary:	Web interface servlet for the OpenNMS network management platform
 Group:		Applications/System
+%if "%{platform}" == "linux-i386-suse-8.1"
+Requires:	jakarta-tomcat >= 4.0.3, rrdtool, %{name} = %{version}-%{release}
+%else
 Requires:	tomcat4 >= 4.0.3, rrdtool, %{name} = %{version}-%{release}
+%endif
 
 %description webapp
 The web UI for OpenNMS.
@@ -189,12 +201,18 @@
 END
 
 %if "%builddocs" == "1"
-### /usr/share/doc/%{name}-%{version}
+### /usr/share/doc/%{name}-%{version}	(no -%{version} on SuSE)
 
-mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
-cp -a work/docs/* $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/
+%if "%{platform}" == "linux-i386-suse-8.1"
+%define opennmsdocdir %{name}
+%else
+%define opennmsdocdir %{name}-%{version}
+%endif
+
+mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{opennmsdocdir}
+cp -a work/docs/* $RPM_BUILD_ROOT%{_docdir}/%{opennmsdocdir}/
 rm -rf $RPM_BUILD_ROOT%{instprefix}/docs
-ln -sf %{_docdir}/%{name}-%{version} $RPM_BUILD_ROOT%{instprefix}/docs
+ln -sf %{_docdir}/%{opennmsdocdir} $RPM_BUILD_ROOT%{instprefix}/docs
 cp CHANGELOG README* $RPM_BUILD_ROOT%{instprefix}/etc/
 rm -rf $RPM_BUILD_ROOT%{instprefix}/etc/README
 rm -rf $RPM_BUILD_ROOT%{instprefix}/etc/README.build
@@ -205,7 +223,7 @@
 ln -sf %{logdir} $RPM_BUILD_ROOT%{instprefix}/logs
 ln -sf %{sharedir} $RPM_BUILD_ROOT%{instprefix}/share
 
-### /var/tomcat4
+### ${tomcatdir}
 
 mkdir -p $RPM_BUILD_ROOT%{tomcatdir}/server/lib
 for jar in \
@@ -220,7 +238,7 @@
 done
 
 pushd $RPM_BUILD_ROOT;
-find $RPM_BUILD_ROOT%{instprefix}/etc ! -type d | sed -e "s,^$RPM_BUILD_ROOT,%config(noreplace) ," | sort > %{_tmppath}/files.etc;
+find $RPM_BUILD_ROOT%{instprefix}/etc ! -type d | sed -e "s!^$RPM_BUILD_ROOT!%config(noreplace) %attr(775,%{tomcatuser},root) !" | sort > %{_tmppath}/files.etc;
 find $RPM_BUILD_ROOT%{tomcatdir}/webapps/%{name} ! -type d | sed -e "s,^$RPM_BUILD_ROOT,," | grep -v '/WEB-INF/web.xml' | sort > %{_tmppath}/files.webapp;
 popd
 
@@ -237,21 +255,23 @@
 %attr(755,root,root)	%{profiledir}/%{name}.sh
 %attr(755,root,root)	%{_bindir}/*
 %attr(755,root,root)	%{instprefix}/bin
-%dir			%{instprefix}/etc
-			%{instprefix}/contrib
+%attr(775,%{tomcatuser},root)	%dir %{instprefix}/etc
+%dir 			%{instprefix}/contrib
 %if "%builddocs" == "1"
 %attr(755,root,root)	%{instprefix}/docs
 %endif
 %attr(755,root,root)	%{instprefix}/lib
 			%{instprefix}/logs
 			%{instprefix}/share
+%if "%{instprefix}/share" != "%{sharedir}"
 			%{sharedir}
+%endif
 			%{logdir}
 
 %if "%builddocs" == "1"
 %files docs
 %defattr(644 root root 755)
-%{_docdir}/%{name}-%{version}
+%{_docdir}/%{opennmsdocdir}
 %endif
 
 %files webapp -f %{_tmppath}/files.webapp
@@ -264,8 +284,25 @@
 . %{profiledir}/%{name}.sh
 
 "%{initdir}/init.d/%{psql_service}" stop
+attempts=10
+while [ $attempts -gt 0 ]; do
+	%{initdir}/init.d/%{psql_service} status | grep running || break
+	sleep 1
+	attempts=`expr $attempts - 1`
+done
 "%{initdir}/init.d/%{psql_service}" start
 
+# Make sure that the postgresql server is up
+attempts=10
+while [ $attempts -gt 0 ]; do
+	# should we add "-h localhost" below to test TCP/IP connectivity?
+	if echo '\q' | %{psql} -d template1 -U postgres > /dev/null 2>&1; then
+		break
+	fi
+	sleep 1
+	attempts=`expr $attempts - 1`
+done
+
 # run the post-install script
 
 echo -e "- running the post-install..."
diff -ur --exclude=dist orig/opennms-1.1.0-1/source/tools/run/install.pl opennms-1.1.0-1/source/tools/run/install.pl
--- orig/opennms-1.1.0-1/source/tools/run/install.pl	2002-11-19 14:23:29.000000000 -0500
+++ opennms-1.1.0-1/source/tools/run/install.pl	2002-12-15 11:32:00.000000000 -0500
@@ -47,8 +47,6 @@
   $template
   $psql
   $database
-
-  $serverxml
 );
 
 use File::Find;
@@ -83,7 +81,6 @@
 	'nov' => 11,
 	'dec' => 12,
 );
-$serverxml      = '/var/tomcat4/conf/server.xml';
 
 chomp($PWD = `pwd`);
 
@@ -743,10 +740,24 @@
 }
 
 ##############################################################################
-# update tomcat server.xml
+# update tomcat server.xml, and catalina.sh if we are running SuSE
 ##############################################################################
 
 unless ($NOTOMCAT) {
+  my	$serverxml;
+  my	$catalinash;
+
+  for my $dir ('/var/tomcat4', '/opt/jakarta/tomcat') {
+    if (-d "$dir") {
+      if (-f "$dir/conf/server.xml") {
+        $serverxml = "$dir/conf/server.xml";
+        if (-f "$dir/bin/catalina.sh") {
+          $catalinash = "$dir/bin/catalina.sh";
+	}
+        last;
+      }
+    }
+  }
 
   if (-f $serverxml) {
     my    $server_in;
@@ -810,8 +821,46 @@
       $ERRORS++;
       print "FAILED\n";
     }
+
+    if (-f $catalinash && -f "/etc/SuSE-release") {
+      my    $catalina_in;
+
+      print "- checking Tomcat uses Java 1.4 or later in catalina.sh... ";
+      if (open(FILEIN, $catalinash)) {
+        $catalina_in .= $_ while (<FILEIN>);
+        close (FILEIN);
+
+        if (grep(/^\. setJava/gm, $catalina_in)) {
+          if (not grep(/^\. setJava --devel --version 1\.4/gm, $catalina_in)) {
+            print "UPDATING:\n";
+            print "- changing catalina.sh to use a minimum of Java 1.4... ";
+            if (open(FILEOUT, ">$catalinash")) {
+              $catalina_in =~ s#^\. setJava.*#\. setJava --devel --version 1\.4#gm;
+              print FILEOUT $catalina_in;
+              if (close(FILEOUT)) {
+                print "DONE\n";
+              } else {
+                $ERRORS++;
+                print "FAILED\n";
+              }
+            } else {
+              $ERRORS++;
+              print "FAILED\n";
+            }
+          } else {
+            print "FOUND\n";
+          }
+        } else {
+          $ERRORS++;
+          print "NOT FOUND - SKIPPING\n";
+        }
+      } else {
+        $ERRORS++;
+        print "FAILED\n";
+      }
+    }
   } else {
-    print "*** $serverxml not found ***\n";
+    print "*** server.xml not found ***\n";
   }
 
 }
@@ -947,6 +996,9 @@
         if (-f "$dir/pgsql/plpgsql.$_") {
           $plpgsql_sofile = "$dir/pgsql/plpgsql.$_";
           last;
+        } elsif (-f "$dir/postgresql/plpgsql.$_") {
+          $plpgsql_sofile = "$dir/postgresql/plpgsql.$_";
+          last;
         } elsif (-f "$dir/plpgsql.$_") {
           $plpgsql_sofile = "$dir/plpgsql.$_";
           last;
