#!/bin/sh # # Verifies that Evolution and all its supporting components # are installed correctly. A tool to weed out common # build problems. # # (C)2000 Helix Code, Inc. # Author: Peter Williams # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public License # as published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # problem() { echo "I detected the following problem: $problem" if test x"$rpmsystem" = xyes ; then echo "Suggested solution via RPM: $rpmsolution" fi if test x"$debsystem" = xyes ; then echo "Suggested solution via DEB: $debsolution" fi echo "Suggested solution via sources: $srcsolution" if test x"$comment" != x ; then echo "" echo "$comment" fi exit 1 } check_config() { #bigname=$1 #cfgname=$2 #pkgname=$3 eval $1=\${$1-$2} eval val=\$$1 if type $val /dev/null 2>&1 ; then : else problem="Cannot find $2 or it ($val) is not executable" rpmsolution="Install or reinstall the '$3-devel' package" debsolution="Install or reinstall the $3 development libraries." #FIXME srcsolution="Get the latest release of $3 and install it." comment="If you know that $3 is installed, try setting the environment variable $1 to its location" problem fi } check_prefix() { #othercfg=$1 #othername=$2 #strict=$3 eval otherpfx=\`\$$1 --prefix\` if test x"$3" = xstrict ; then if test x"$otherpfx" != x"$gl_prefix" ; then problem="gnome-libs and $2 do not share the same prefix" rpmsolution="This problem shouldn't happen with RPM installations. Verify your installation of Helix Gnome." debsolution="This problem shouldn't happen with DEB installations. Verify your installation of Helix Gnome." srcsolution="Re-run 'configure' in $2's source directory with the flag '--prefix=$gl_prefix'." problem fi else IFSbak="$IFS" ok="$GNOME_PATH:$gl_prefix" IFS=":" passed=no for e in $ok; do if test x"$e" != x ; then if test $otherpfx = $e ; then passed=yes; fi fi done IFS="$IFSbak" if test x"$passed" = xno ; then problem="$2 is not in GNOME_PATH or the same prefix as gnome-libs" rpmsolution="This problem shouldn't happen with RPM installations. Verify your installation of Helix Gnome." debsolution="This problem shouldn't happen with DEB installations. Verify your installation of Helix Gnome." srcsolution="Re-run 'configure' in $2's source directory with the flag '--prefix=$gl_prefix'." comment="Try exporting an environment variable 'GNOME_PATH' with the prefix of $2." problem fi fi } check_sysconf() { #othercfg=$1 #othername=$2 eval othersysc=\`\$$1 --sysconfdir\` if test x"$othersysc" != x"$gl_sysconf" ; then problem="gnome-libs and $2 do not share the same sysconfdir" rpmsolution="This problem shouldn't happen with RPM installations. Verify your installation of Helix Gnome." debsolution="This problem shouldn't happen with DEB installations. Verify your installation of Helix Gnome." srcsolution="Re-run 'configure' in $2's source directory with the flag '--sysconfdir=$gl_sysconf'." problem fi } check_oafinfo() { #basename=$1 #othername=$2 base=$1.oafinfo search="${oaf_prefix}/share/oaf:$OAF_INFO_PATH" IFSback="$IFS" IFS=":" ok=no for ping in $search ; do if test x"$ping" != x ; then if test -f $ping/$base ; then file=$ping/$base ok=yes fi fi done IFS="$IFSback" if test x$ok = xno ; then problem="$1.oafinfo isn't installed into Gnome's prefix or in OAF_INFO_PATH" rpmsolution="This problem shouldn't happen with RPM installations. Verify your installation of Helix Gnome." debsolution="This problem shouldn't happen with DEB installations. Verify your installation of Helix Gnome." srcsolution="Re-run 'configure' in $2's source directory with the flag '--datadir=$gl_datadir'." comment="Another likely cause of this problem would be a failed installation of $2. You should check to see that the install succeeded. You may also add the location of $1.oafinfo to the environment variable OAF_INFO_PATH" problem fi iids=`cat $file |grep iid= |sed -e 's,.*iid="\([^"]*\)".*,\1,'` IFS=" " tempfile="temp-$$-verifier" for iid in $iids ; do #echo "Attempting to activate IID \"$iid\"..." $OAF_CLIENT -qs "iid == '$iid'" >$tempfile result=`cat $tempfile |grep exception` if test x"$result" != x ; then problem="The component $2 (in $file) couldn't be activated by OAF" rpmsolution="Verify that $file is valid and that oaf and $2 are correctly installed." debsolution="Verify that $file is valid and that oaf and $2 are correctly installed." srcsolution="Verify that $file is valid and that oaf and $2 are correctly installed." comment="$OAF_CLIENT reported this: `cat $tempfile`" rm -f $tempfile problem fi done rm -f $tempfile IFS="$IFSback" } check_bin() { #name=$1 #othername=$2 IFSbak="$IFS" search="$PATH" IFS=":" passed=no for ping in $search; do if test -x $ping/$1 ; then passed=yes; fi done IFS="$IFSbak" if test x"$passed" = xno ; then problem="The binary $1 isn't in your PATH" rpmsolution="This problem shouldn't happen with RPM installations. Verify your installation of Helix Gnome." debsolution="This problem shouldn't happen with DEB installations. Verify your installation of Helix Gnome." srcsolution="Re-run 'configure' in $2's source directory with the flag '--bindir=$gl_bindir'." comment="Another likely cause of this problem would be a failed installation of $2. You should check to see that the install succeeded." problem fi } check_no_gnorba() { #libs=$1 #othername=$2 ping=`echo $1 |grep 'gnorba'` if test x"$ping" != x ; then problem="$2 was built using Gnorba, not OAF" rpmsolution="This problem shouldn't happen with RPM installations. Verify your installation of Helix Gnome." debsolution="This problem shouldn't happen with DEB installations. Verify your installation of Helix Gnome." srcsolution="Update $2 and re-run 'configure' in its source directory with the flag '--enable-oaf=yes'." problem fi } ######################################## versionparse3() { #inst_version=$1 #reqd_version=$2 #package=$3 inst_version=`versiongrab3 "$1"` inst_major=`echo $inst_version |sed -e 's,\([0-9][0-9]*\)\..*\..*,\1,'` inst_minor=`echo $inst_version |sed -e 's,.*\.\([0-9][0-9]*\)\..*,\1,'` inst_micro=`echo $inst_version |sed -e 's,.*\..*\.\([0-9][0-9]*\),\1,'` reqd_version=`versiongrab3 "$2"` reqd_major=`echo $reqd_version |sed -e 's,\([0-9][0-9]*\)\..*\..*,\1,'` reqd_minor=`echo $reqd_version |sed -e 's,.*\.\([0-9][0-9]*\)\..*,\1,'` reqd_micro=`echo $reqd_version |sed -e 's,.*\..*\.\([0-9][0-9]*\),\1,'` ok=yes if test $inst_major -lt $reqd_major ; then ok=no elif test $inst_major -gt $reqd_major ; then ok=yes elif test $inst_minor -lt $reqd_minor; then ok=no elif test $inst_minor -gt $reqd_minor; then ok=yes elif test $inst_micro -lt $reqd_micro; then ok=no fi if test x$ok = xno ; then problem="Package $3 is not new enough ($1 detected, $2 required)" rpmsolution="Obtain a newer version and install it" depsolution="Obtain a newer version and install it" srcsolution="Obtain a newer version and install it" comment="If you think you have a newer installation, make sure that the package is not installed twice." problem fi } versiongrab3() { echo $1 |sed -e 's,.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*,\1,' } check_module3() { #$1=gnome-libs name #$2=package #$3=version $GNOME_CONFIG --modversion $1 1>/dev/null 2>/dev/null /dev/null 2>/dev/null /dev/null 2>/dev/null /dev/null 2>&1 ; then : else problem="oaf-client couldn't be found" rpmsolution="Install the 'oaf-devel' package" debsolution="Install the oaf development libraries" srcsolution="Make sure that oaf is installed correctly" comment="If you think you have oaf-client installed, try exporting an environment variable OAF_CLIENT pointing to it" problem fi oaf_prefix=`$OAF_CONFIG --prefix` check_oafinfo oafd oaf #gconf check_config GCONF_CONFIG gconf-config GConf check_prefix GCONF_CONFIG GConf versionparse2 "`$GCONF_CONFIG --version`" "0.5" GConf if type gconfd-1 /dev/null 2>/dev/null; then check_oafinfo gconfd-1 GConf check_bin gconfd-1 else check_oafinfo gconfd GConf check_bin gconfd fi check_no_gnorba "`$GCONF_CONFIG --libs`" GConf #gnome vfs check_module3 vfs gnome-vfs "0.2.0" check_no_gnorba "`$GNOME_CONFIG --libs vfs`" gnome-vfs #gnome print check_module2 print gnome-print "0.20" check_no_gnorba "`$GNOME_CONFIG --libs print`" gnome-print #bonobo check_module2 bonobo bonobo "0.15" check_prefix "GNOME_CONFIG bonobo" bonobo strict check_oafinfo audio-ulaw bonobo check_bin bonobo-audio-ulaw bonobo check_no_gnorba "`$GNOME_CONFIG --libs bonobo`" bonobo #gtkhtml check_module2 gtkhtml GtkHTML "0.5" check_oafinfo html-editor-control GtkHTML check_bin html-editor-control GtkHTML check_no_gnorba "`$GNOME_CONFIG --libs gtkhtml`" GtkHTML #evolution check_oafinfo addressbook evolution check_oafinfo calendar-control evolution check_oafinfo evolution-mail evolution check_oafinfo evolution-calendar evolution check_oafinfo evolution-addressbook-select-names evolution check_oafinfo wombat evolution check_bin evolution-mail evolution check_bin evolution-calendar evolution check_bin evolution-addressbook evolution check_bin wombat evolution check_bin evolution evolution #done echo "Your Gnome system appears to be properly set up. Enjoy Evolution!" exit 0