diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2009-09-18 23:55:12 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2009-09-18 23:58:19 +0800 |
commit | 461f022eb7fae7147845797c0544304ae35c7e8b (patch) | |
tree | a734d25c483a14a36973f9d62f44654782b1be7a | |
parent | 12d1810be39661750956ec1e041f7f572ea86698 (diff) | |
download | gsoc2013-evolution-461f022eb7fae7147845797c0544304ae35c7e8b.tar gsoc2013-evolution-461f022eb7fae7147845797c0544304ae35c7e8b.tar.gz gsoc2013-evolution-461f022eb7fae7147845797c0544304ae35c7e8b.tar.bz2 gsoc2013-evolution-461f022eb7fae7147845797c0544304ae35c7e8b.tar.lz gsoc2013-evolution-461f022eb7fae7147845797c0544304ae35c7e8b.tar.xz gsoc2013-evolution-461f022eb7fae7147845797c0544304ae35c7e8b.tar.zst gsoc2013-evolution-461f022eb7fae7147845797c0544304ae35c7e8b.zip |
Kill the killev program, and the whole tools directory.
The --force-shutdown option now simply runs "pkill evolution".
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | shell/Makefile.am | 3 | ||||
-rw-r--r-- | shell/main.c | 39 | ||||
-rw-r--r-- | tools/Makefile.am | 33 | ||||
-rw-r--r-- | tools/killev.c | 213 | ||||
-rwxr-xr-x | tools/verify-evolution-install.sh | 640 |
7 files changed, 31 insertions, 899 deletions
diff --git a/Makefile.am b/Makefile.am index 53b463b10c..d88ad131e1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -63,7 +63,6 @@ SUBDIRS = \ doc \ ui \ views \ - tools \ po \ sounds \ $(HELP_SUBDIR) diff --git a/configure.ac b/configure.ac index 2853155513..cd149a4f7d 100644 --- a/configure.ac +++ b/configure.ac @@ -2073,7 +2073,6 @@ smime/Makefile smime/lib/Makefile smime/gui/Makefile sounds/Makefile -tools/Makefile evolution-zip evolution-shell.pc evolution-plugin.pc diff --git a/shell/Makefile.am b/shell/Makefile.am index 7358a1466b..edc143ee31 100644 --- a/shell/Makefile.am +++ b/shell/Makefile.am @@ -8,7 +8,7 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/widgets/misc \ -I$(top_srcdir) \ -I$(top_srcdir)/shell \ - -I$(top_builddir)/shell \ + -DEVOLUTION_BINDIR=\""$(bindir)"\" \ -DEVOLUTION_IMAGESDIR=\""$(imagesdir)"\" \ -DEVOLUTION_LOCALEDIR=\""$(localedir)"\" \ -DEVOLUTION_DATADIR=\""$(datadir)"\" \ @@ -18,7 +18,6 @@ AM_CPPFLAGS = \ -DEVOLUTION_MODULEDIR=\""$(moduledir)"\" \ -DEVOLUTION_RULEDIR=\""$(privdatadir)"\" \ -DEVOLUTION_UIDIR=\""$(evolutionuidir)"\" \ - -DEVOLUTION_TOOLSDIR=\""$(privlibexecdir)"\" \ -DPREFIX=\""$(prefix)"\" \ -DSYSCONFDIR=\""$(sysconfdir)"\" \ -DDATADIR=\""$(datadir)"\" \ diff --git a/shell/main.c b/shell/main.c index a74e28ace5..7ce930f6c2 100644 --- a/shell/main.c +++ b/shell/main.c @@ -329,7 +329,7 @@ static GOptionEntry entries[] = { N_("Start in online mode"), NULL }, #ifdef KILL_PROCESS_CMD { "force-shutdown", '\0', 0, G_OPTION_ARG_NONE, &force_shutdown, - N_("Forcibly shut down all Evolution components"), NULL }, + N_("Forcibly shut down Evolution"), NULL }, #endif #ifdef DEVELOPMENT { "force-migrate", '\0', 0, G_OPTION_ARG_NONE, &force_migrate, @@ -392,6 +392,33 @@ set_paths (void) } #endif +static void G_GNUC_NORETURN +shell_force_shutdown (void) +{ + gchar *program; + + /* This is not as destructive as it was in the Bonobo era. + * The Evolution-Data-Server D-Bus services should not be killed + * because other programs may be using them. The alarm daemon is + * an autostart program now and Evolution no longer spawns it, so + * that should not be killed either. The only thing left to do + * really is shoot ourselves. */ + + /* XXX Maybe --force-shutdown should be deprecated. */ + + program = g_find_program_in_path ("pkill"); + + if (program == NULL) { + g_printerr ("Could not find `pkill' program in path.\n"); + exit (1); + } + + /* This does not return. */ + execl (program, "pkill", "evolution", NULL); + + g_assert_not_reached (); +} + static void shell_window_destroyed_cb (EShell *shell) { @@ -475,7 +502,6 @@ main (gint argc, gchar **argv) #ifdef DEVELOPMENT gboolean skip_warning_dialog; #endif - gchar *filename; GError *error = NULL; /* Make ElectricFence work. */ @@ -520,13 +546,8 @@ main (gint argc, gchar **argv) exit (1); } - if (force_shutdown) { - filename = g_build_filename ( - EVOLUTION_TOOLSDIR, "killev", NULL); - execl (filename, "killev", NULL); - /* Not reached */ - exit (0); - } + if (force_shutdown) + shell_force_shutdown (); client = gconf_client_get_default (); diff --git a/tools/Makefile.am b/tools/Makefile.am deleted file mode 100644 index d16cd7a4a2..0000000000 --- a/tools/Makefile.am +++ /dev/null @@ -1,33 +0,0 @@ -if OS_WIN32 -else -PLATFORM_DEP_TOOLS = \ - killev -endif - -privlibexec_PROGRAMS = \ - $(PLATFORM_DEP_TOOLS) - -AM_CPPFLAGS = \ - -DG_LOG_DOMAIN=\"evolution-tools\" \ - -I$(top_srcdir) \ - -I$(top_builddir) \ - -DEVOLUTION_LOCALEDIR=\""$(localedir)"\" \ - -DPREFIX=\""$(prefix)"\" \ - -DSYSCONFDIR=\""$(sysconfdir)"\" \ - -DDATADIR=\""$(datadir)"\" \ - -DLIBDIR=\""$(libdir)"\" \ - $(GNOME_PLATFORM_CFLAGS) - -EXTRA_DIST = verify-evolution-install.sh - -killev_SOURCES = \ - killev.c - -killev_LDADD = \ - $(top_builddir)/widgets/misc/libemiscwidgets.la \ - $(top_builddir)/e-util/libeutil.la \ - $(E_UTIL_LIBS) - -CLEANFILES = evolution-addressbook-clean $(BUILT_SOURCES) - --include $(top_srcdir)/git.mk diff --git a/tools/killev.c b/tools/killev.c deleted file mode 100644 index f272602ac2..0000000000 --- a/tools/killev.c +++ /dev/null @@ -1,213 +0,0 @@ -/* - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) version 3. - * - * 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the program; if not, see <http://www.gnu.org/licenses/> - * - * - * Authors: - * - * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) - * - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <errno.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/wait.h> - -#include <bonobo/bonobo-exception.h> -#include <bonobo-activation/bonobo-activation.h> -#include <glib/gi18n.h> -#include <libgnome/gnome-util.h> - -typedef struct { - gchar *location; - GPtrArray *names; -} KillevComponent; - -static GSList *languages = NULL; -static GHashTable *components; - -static gboolean -kill_process (const gchar *proc_name, KillevComponent *comp) -{ - gint status, i; - gchar *command; - GString *desc; - - command = g_strdup_printf (KILL_PROCESS_CMD " -0 %s 2> /dev/null", - proc_name); - status = system (command); - g_free (command); - - if (status == -1 || !WIFEXITED (status)) { - /* This most likely means that KILL_PROCESS_CMD wasn't - * found, so just bail completely. - */ - fprintf (stderr, _("Could not execute '%s': %s\n"), - KILL_PROCESS_CMD, g_strerror (errno)); - exit (1); - } - - if (WEXITSTATUS (status) != 0) - return FALSE; - - desc = g_string_new (NULL); - for (i = 0; i < comp->names->len; i++) { - if (i > 0) - g_string_append (desc, " / "); - g_string_append (desc, comp->names->pdata[i]); - } - - printf (_("Shutting down %s (%s)\n"), proc_name, desc->str); - g_string_free (desc, TRUE); - command = g_strdup_printf (KILL_PROCESS_CMD " -9 %s 2> /dev/null", - proc_name); - system (command); - g_free (command); - return TRUE; -} - -static const gchar *patterns[] = { - "%s", "%.16s", "lt-%s", "lt-%.13s", "%s.bin" -}; -static const gint n_patterns = G_N_ELEMENTS (patterns); - -static void -kill_component (KillevComponent *comp) -{ - gchar *base_name, *exe_name, *dash; - gint i; - - base_name = g_strdup (comp->location); - try_again: - for (i = 0; i < n_patterns; i++) { - exe_name = g_strdup_printf (patterns[i], base_name); - if (kill_process (exe_name, comp)) { - g_free (exe_name); - g_free (base_name); - return; - } - g_free (exe_name); - } - - dash = strrchr (base_name, '-'); - if (dash && !strcmp (dash + 1, BASE_VERSION)) { - *dash = '\0'; - goto try_again; - } - - g_free (base_name); -} - -static void -add_matching_query (const gchar *query) -{ - Bonobo_ServerInfoList *info_list; - Bonobo_ServerInfo *info; - CORBA_Environment ev; - const gchar *location, *name; - KillevComponent *comp; - gint i; - - CORBA_exception_init (&ev); - - info_list = bonobo_activation_query (query, NULL, &ev); - if (ev._major != CORBA_NO_EXCEPTION) { - printf ("Bonobo activation failure: %s\n", - bonobo_exception_get_text (&ev)); - CORBA_exception_free (&ev); - return; - } - - for (i = 0; i < info_list->_length; i++) { - info = &info_list->_buffer[i]; - - if (strcmp (info->server_type, "exe") != 0) - continue; - - location = info->location_info; - if (strchr (location, '/')) - location = strrchr (location, '/') + 1; - - comp = g_hash_table_lookup (components, location); - if (!comp) { - comp = g_new (KillevComponent, 1); - comp->location = g_strdup (location); - comp->names = g_ptr_array_new (); - g_hash_table_insert (components, comp->location, comp); - } - - name = bonobo_server_info_prop_lookup (info, "name", languages); - if (name) - g_ptr_array_add (comp->names, g_strdup (name)); - } - - CORBA_free (info_list); - CORBA_exception_free (&ev); -} - -static void -add_matching_repo_id (const gchar *repo_id) -{ - gchar *query; - - query = g_strdup_printf ("repo_ids.has ('%s')", repo_id); - add_matching_query (query); - g_free (query); -} - -static void -add_matching_iid (const gchar *iid) -{ - gchar *query; - - query = g_strdup_printf ("iid == '%s'", iid); - add_matching_query (query); - g_free (query); -} - -gint -main (gint argc, gchar **argv) -{ - const gchar * const *language_names; - - bindtextdomain (GETTEXT_PACKAGE, EVOLUTION_LOCALEDIR); - bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); - textdomain (GETTEXT_PACKAGE); - - gnome_program_init (PACKAGE, VERSION, LIBGNOME_MODULE, argc, argv, - GNOME_PROGRAM_STANDARD_PROPERTIES, - NULL); - - language_names = g_get_language_names (); - while (*language_names != NULL) - languages = g_slist_append ( - languages, (gpointer) *language_names++); - - components = g_hash_table_new_full ( - g_str_hash, g_str_equal, - (GDestroyNotify) NULL, - (GDestroyNotify) kill_component); - - add_matching_iid ("OAFIID:GNOME_Evolution_Calendar_AlarmNotify_Factory:" BASE_VERSION); - g_hash_table_remove_all (components); - - g_hash_table_destroy (components); - - return 0; -} diff --git a/tools/verify-evolution-install.sh b/tools/verify-evolution-install.sh deleted file mode 100755 index 32a911009d..0000000000 --- a/tools/verify-evolution-install.sh +++ /dev/null @@ -1,640 +0,0 @@ -#!/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 <peterw@helixcode.com> -# -# 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 1>/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" - IFS=":" - passed=no - exepath= - - for ping in $PATH; do - if test x"$ping" != x -a -x $ping/$1 ; then - if test x"$passed" = xyes ; then - problem="The binary $1 is installed in more than one location" - rpmsolution="Make sure that you only have one copy of the package installed" - debsolution="Make sure that you only have one copy of the package installed" - srcsolution="Make sure that you only have one copy of the package installed" - comment="You probably have a package that was installed in two different prefixes, -either from source twice or from source and from RPM/deb. Remove the older copy. -(Note: \"make uninstall\" works on tarballs but may damage your gettext installation)" - problem - fi - passed=yes; - exepath="$ping/$1" - 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 - - lddfile=temp-$$-verify-ldd - $LDD $exepath </dev/null >$lddfile 2>/dev/null - - if test x$? != x0 ; then - problem="The binary $1 isn't linked correctly" - rpmsolution="Make sure that all its dependencies are installed correctly" - debsolution="Make sure that all its dependencies are installed correctly" - srcsolution="Recompile $2 and make sure that it links correctly." - comment="LDD reported the following: -`cat $lddfile` -" - problem - fi - - IFS=" -" - - use_bonobox=no - use_bonobo=no - - for ping in `cat $libfile` ; do - libname=`echo "$ping" |sed -e 's,^@@\([^@][^@]*\)@@[^@][^@]*@@,\1,'` - libpfx=`echo "$ping" |sed -e 's,^@@[^@][^@]*@@\([^@][^@]*\)@@,\1,'` - - match="`cat $lddfile |grep \"${libname}\.\"`" - - if test x"$match" != x ; then - theirlib="`echo $match |sed -e 's,.*=> \([^ ]*\).*$,\1,'`" - theirdir="`dirname $theirlib`" - - if test x"$theirdir" != x"$libpfx" ; then - problem="The binary $1 is linked against the wrong copy of $libname" - rpmsolution="The package owning $libname is probably installed twice. Make sure that it's installed correctly." - debsolution="The package owning $libname is probably installed twice. Make sure that it's installed correctly." - srcsolution="The package owning $libname is probably installed twice. Make sure that it's installed correctly." - comment="The version of $libname in $libpfx was expected" - problem - elif test x"$libname" = xlibbonobox ; then - use_bonobox=yes - elif test x"$libname" = xlibbonobo ; then - use_bonobo=yes - fi - fi - done - - rm -f $lddfile - IFS="$IFSback" - - if test x"$need_bonobox" = xyes -a x"$use_bonobo" = xyes -a x"$use_bonobox" != xyes ; then - problem="The binary $1 is linked against Bonobo but not Bonobo-X" - rpmsolution="Get the newest possible version of $2, or install it from source if that fails" - debsolution="Get the newest possible version of $2, or install it from source if that fails" - srcsolution="Run './config.status --recheck' in $2's source directory and reinstall it" - 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 -} - -add_lib_to_check() { - #lib = $1 - #path = $2 - - echo "@@${1}@@${2}@@" >>$libfile -} - -######################################## - -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 - if test x$? != x0 ; then - problem="Package $2 doesn't seem to be installed." - rpmsolution="Get and install the packages '$2' and '$2-devel'" - debsolution="Get and install the package $2 and its development libraries" #FIXME - srcsolution="Download the source and install the package $2" - comment="If you think the package is installed, check that its prefix is $gl_prefix -- -${1}Conf.sh should be installed into `$GNOME_CONFIG --libdir`" - problem - fi - - instversion=`$GNOME_CONFIG --modversion $1` - - #eew eew hacky - # gnome-vfs used to be versioned gnome-vfs-0.1, - # and gnome-vfs-0.2, but then they moved to three figs-- - # now it's gnome-vfs-0.2.0 - - if test $2 = gnome-vfs ; then - case "$instversion" in - gnome-vfs-0.1) - problem="Package gnome-vfs is not new enough (0.1 detected, $3 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 - ;; - gnome-vfs-0.2) - instversion="gnome-vfs-0.2.0" - ;; - *) - #nothing, version is ok - ;; - esac - fi - - versionparse3 "$instversion" "$3" "$2" -} - -######################################## - -versionparse2() { - #inst_version=$1 - #reqd_version=$2 - #package=$3 - - inst_version=`versiongrab2 "$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,'` - - reqd_version=`versiongrab2 "$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,'` - - 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 - 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 -} - -versiongrab2() { - echo $1 |sed -e 's,.*\([0-9][0-9]*\.[0-9][0-9]*\).*,\1,' -} - -check_module2() { - #$1=gnome-libs name - #$2=package - #$3=version - $GNOME_CONFIG --modversion $1 1>/dev/null 2>/dev/null </dev/null - if test x$? != x0 ; then - problem="Package $2 doesn't seem to be installed." - rpmsolution="Get and install the packages '$2' and '$2-devel'" - debsolution="Get and install the package $2 and its development libraries" #FIXME - srcsolution="Download the source and install the package $2" - comment="If you think the package is installed, check that its prefix is $gl_prefix -- -${1}Conf.sh should be installed into `$GNOME_CONFIG --libdir`" - problem - fi - - instversion=`$GNOME_CONFIG --modversion $1` - versionparse2 "$instversion" "$3" "$2" -} - -######################################## - -#prep -libfile=temp-$$-libs-verifier - -if test -d /var/lib/rpm ; then - rpmsystem=yes - RPM=${RPM_PROG-rpm} - - $RPM --version 1>/dev/null 2>/dev/null </dev/null - if test x$? != x0 ; then - problem="The rpm executable ($RPM) does not seem to work." - rpmsolution="none, if rpm doesn't work." - debsolution="not applicable." - srcsolution="download and install rpm manually." - comment="If rpm really won't work then there is something wrong with your system." - problem - fi -else - rpmsystem=no -fi - -if test -d /var/lib/dpkg ; then - debsystem=yes - #FIXME: check if deb works -else - debsystem=no -fi - -if test x"$GNOME_PATH" != x ; then - PATH="$GNOME_PATH:$PATH" -fi - -if test x"$LDD" = x ; then - if ldd -r /lib/libc.so </dev/null 1>/dev/null 2>&1 ; then - LDD="ldd -r" - elif type ldd </dev/null 1>/dev/null 2>&1; then - LDD="ldd" - else - problem="Cannot find ldd" - rpmsolution="Make sure that glibc is correctly installed!?!?!?" - debsolution="Make sure that glibc is correctly installed!?!?!?" - srcsolution="See above" - comment="If you think that you have ldd, export an environment -vairable LDD that points to it." - problem - fi -fi - -#gnome-libs -check_config GNOME_CONFIG gnome-config gnome-libs - -gl_version=`$GNOME_CONFIG --version` # |sed -e 's,.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*,\1,'` -gl_sysconf=`$GNOME_CONFIG --sysconfdir` -gl_prefix=`$GNOME_CONFIG --prefix` -gl_datadir=`$GNOME_CONFIG --datadir` -gl_bindir=`$GNOME_CONFIG --bindir` - -versionparse3 "$gl_version" "1.0.59" "gnome-libs" -add_lib_to_check libgnome `$GNOME_CONFIG --libdir` -add_lib_to_check libgnomeui `$GNOME_CONFIG --libdir` - -#libunicode -check_config UNICODE_CONFIG unicode-config libunicode -check_prefix UNICODE_CONFIG libunicode -versionparse2 "`$UNICODE_CONFIG --version`" "0.4" libunicode -add_lib_to_check libunicode "`$UNICODE_CONFIG --prefix`/lib" - -#ORBit -check_config ORBIT_CONFIG orbit-config ORBit -check_prefix ORBIT_CONFIG ORBit -add_lib_to_check libORBit "`$ORBIT_CONFIG --prefix`/lib" - -#oaf -check_config OAF_CONFIG oaf-config oaf -check_prefix OAF_CONFIG oaf -versionparse3 "`$OAF_CONFIG --version`" "0.4.0" "oaf" -add_lib_to_check liboaf "`$OAF_CONFIG --prefix`/lib" -check_bin oafd - -OAF_CLIENT=${OAF_CLIENT-oaf-client} -if type $OAF_CLIENT </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 >/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 -add_lib_to_check libgnomevfs "`$GNOME_CONFIG --libdir vfs`" - -#gnome print -check_module2 print gnome-print "0.20" -check_no_gnorba "`$GNOME_CONFIG --libs print`" gnome-print -add_lib_to_check libgnomeprint "`$GNOME_CONFIG --libdir print`" - -#bonobo -check_module2 bonobo bonobo "0.15" -check_prefix "GNOME_CONFIG bonobo" bonobo strict -add_lib_to_check libbonobo "`$GNOME_CONFIG --libdir bonobo`" - -if gnome-config --modversion bonobox </dev/null 1>/dev/null 2>&1 ; then - need_bonobox=yes - check_module2 bonobox bonobo "0.16" - check_prefix "GNOME_CONFIG bonobox" bonobo strict - add_lib_to_check libbonobox "`$GNOME_CONFIG --libdir bonobox`" -fi - -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" -add_lib_to_check libgtkhtml "`$GNOME_CONFIG --libdir html`" -check_oafinfo html-editor-control GtkHTML -check_bin html-editor-control GtkHTML -check_no_gnorba "`$GNOME_CONFIG --libs gtkhtml`" GtkHTML - -#evolution - -if test x"$EVOLUTION_PREFIX" = x ; then - IFSback="$IFS" - IFS=":" - passed=no - - for ping in $PATH ; do - if test x"$ping" != x -a -x $ping/evolution ; then - if test x"$passed" = xyes ; then - problem="Evolution is installed in more than one prefix" - rpmsolution="Make sure that you only have one copy of Evolution installed" - debsolution="Make sure that you only have one copy of Evolution installed" - srcsolution="Make sure that you only have one copy of Evolution installed" - comment="Evolution was probably installed in two different prefixes, -either from source twice or from source and from RPM/deb. Remove the older copy. -(Note: \"make uninstall\" works on tarballs but may damage your gettext installation)" - problem - else - passed=yes - e_prefix=$ping - fi - fi - done - - IFS="$IFSbak" - - if test x"$passed" != xyes ; then - problem="Evolution does not appear to have been installed" - rpmsolution="Make sure that Evolution was installed properly (rpm -V evolution)" - debsolution="Make sure that Evolution was installed properly" - srcsolution="Run 'make install' in the evolution source directory" - comment="I couldn't find evolution in this path: $PATH" - problem - fi - - e_prefix="`echo $e_prefix |sed -e 's,\(.*\)/[^/][^/]*,\1,'`" - echo "Guessed that evolution is installed in prefix $e_prefix" -else - e_prefix="$EVOLUTION_PREFIX" -fi - -add_lib_to_check libcal-client "$e_prefix/lib" -add_lib_to_check libcamel "$e_prefix/lib" -add_lib_to_check libcamelvee "$e_prefix/lib/evolution/camel-providers/0.5" -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 -rm -f $libfile -echo "Your Gnome system appears to be properly set up. Enjoy Evolution!" -exit 0 |