public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Nirbheek Chauhan" <nirbheek@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gnome:master commit in: gnome-extra/evolution-mapi/, gnome-extra/evolution-data-server/files/, ...
Date: Thu,  2 Jun 2011 15:48:32 +0000 (UTC)	[thread overview]
Message-ID: <94bb515df1bc8f94de6e02909ec210997fc7d264.nirbheek@gentoo> (raw)

commit:     94bb515df1bc8f94de6e02909ec210997fc7d264
Author:     Alexandre Rostovtsev <tetromino <AT> gmail <DOT> com>
AuthorDate: Sun May 29 04:40:28 2011 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Thu Jun  2 15:03:02 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=94bb515d

evolution & friends: 3.0.1 → 3.0.2 + out-of-tree linking fix for eds

* mail-client/evolution: 3.0.1 → 3.0.2, add a few patches from git
gnome-3-0 branch, update the default browser message for GNOME3
(both in 3.0.2 and 9999).

* gnome-extra/evolution-exchange: 3.0.1 → 3.0.2, remove obsolete patch.

* gnome-extra/evolution-mapi: 3.0.1 → 3.0.2, drop all keywords until
libmapi-0.9 can be compiled on Gentoo without the use of black magick
(e.g. see bug 355935, and that's just the tip of the iceberg).

* gnome-extra/evolution-data-server: 3.0.1 → 3.0.2.1, plus fix the
out-of-tree linking issue. A long explanation follows.

evolution-data-server tries to link to system libraries rather than to
in-tree ones on make install (see https://bugzilla.gnome.org/show_bug.cgi?id=641239)
making it impossible to e.g. cleanly upgrade from gnome2 to gnome3. After
spending hours banging my head against the abomination known as libtool,
I see no clean and simple way of fixing this: no matter what I tried,
the chain of.la dependencies resolved into an -L/usr/lib64 somewhere in
front of -lcamel-1.2 or -lsome-other-in-tree-lib.

Therefore, as an alternative to rewriting eds's build system, I propose
adding a perl script (fix_relink_command.pl) that runs before
gnome2_src_install and fixes up all the relink_command lines in the .la files
in the build tree to make libtool preferentially relink to in-tree libraries.

I have tested it, and works well, allowing a clean upgrade from
evolution-data-server-2.32.2-r1 to 3.0.2.1.

Why perl? Because the kind of text mangling that needs to be performed is
really not a good fit for tools like sed, so a shell script with equivalent
functionality would be longer, less readable, and probably not portable
to non-GNU systems.

Signed-off-by: Nirbheek Chauhan <nirbheek <AT> gentoo.org>

---
 ...ebuild => evolution-data-server-3.0.2.1.ebuild} |   10 ++-
 .../files/fix_relink_command.pl                    |  108 ++++++++++++++++++++
 ....0.1.ebuild => evolution-exchange-3.0.2.ebuild} |    0
 ...evolution-exchange-2.91.6-xntlm-as-needed.patch |   11 --
 ...pi-3.0.1.ebuild => evolution-mapi-3.0.2.ebuild} |    3 +-
 ...olution-3.0.1.ebuild => evolution-3.0.2.ebuild} |   25 +++--
 mail-client/evolution/evolution-9999.ebuild        |   18 ++--
 ...Always-update-signature-in-composer-on-ac.patch |   25 +++++
 ...refresh_folders_exec-reports-progress-inc.patch |   41 ++++++++
 ...Crash-using-saved-search-with-an-empty-ex.patch |   37 +++++++
 10 files changed, 249 insertions(+), 29 deletions(-)

diff --git a/gnome-extra/evolution-data-server/evolution-data-server-3.0.1.ebuild b/gnome-extra/evolution-data-server/evolution-data-server-3.0.2.1.ebuild
similarity index 88%
rename from gnome-extra/evolution-data-server/evolution-data-server-3.0.1.ebuild
rename to gnome-extra/evolution-data-server/evolution-data-server-3.0.2.1.ebuild
index 0266646..a0f7224 100644
--- a/gnome-extra/evolution-data-server/evolution-data-server-3.0.1.ebuild
+++ b/gnome-extra/evolution-data-server/evolution-data-server-3.0.2.1.ebuild
@@ -46,6 +46,7 @@ RDEPEND=">=dev-libs/glib-2.28:2
 	weather? ( >=dev-libs/libgweather-2.90.0:2 )
 "
 DEPEND="${RDEPEND}
+	dev-lang/perl
 	dev-util/gperf
 	>=dev-util/pkgconfig-0.9
 	>=dev-util/intltool-0.35.5
@@ -78,8 +79,6 @@ pkg_setup() {
 }
 
 src_prepare() {
-	# WTF: libebook-1.2 links against system libcamel-1.2
-	#      libedata-book-1.2 links against system libebackend-1.2
 	gnome2_src_prepare
 
 	# Adjust to gentoo's /etc/service
@@ -107,6 +106,13 @@ src_prepare() {
 }
 
 src_install() {
+	# Prevent this evolution-data-server from linking to libs in the installed
+	# evolution-data-server libraries by adding -L arguments for build dirs to
+	# every .la file's relink_command field, forcing libtool to look there
+	# first during relinking. This will mangle the .la files installed by
+	# make install, but we don't care because we will be punting them anyway.
+	perl "${FILESDIR}/fix_relink_command.pl" . ||
+		die "fix_relink_command.pl failed"
 	gnome2_src_install
 
 	if use ldap; then

diff --git a/gnome-extra/evolution-data-server/files/fix_relink_command.pl b/gnome-extra/evolution-data-server/files/fix_relink_command.pl
new file mode 100755
index 0000000..12106c3
--- /dev/null
+++ b/gnome-extra/evolution-data-server/files/fix_relink_command.pl
@@ -0,0 +1,108 @@
+#!/usr/bin/perl
+# Fix the relink_command field of .la files in the specified directory tree
+# to add "-L$dir/.libs" for every .la file that is specified in a relative
+# $dir; place these new -L directives before the first relative .la file.
+#
+# E.g. :
+# relink_command="(cd /tmp/foo/libfoo; /bin/sh /tmp/foo/libtool --silent --tag CC --mode=relink gcc -O2 foo.lo bar/libbar.la ../baz/libbaz.la /usr/lib/libfrob.la -lm)"
+# will become
+# relink_command="(cd /tmp/foo/libfoo; /bin/sh /tmp/foo/libtool --silent --tag CC --mode=relink gcc -O2 foo.lo -Lbar/.libs -L../baz/.libs bar/libbar.la ../baz/libbaz.la /usr/lib/libfrob.la -lm)"
+#
+# Such a procedure should ensure that during relinking, libraries in the
+# local build tree will be looked at before libraries installed systemwide.
+#
+# Limitations: it is assumed that relink_command is one line. It is assumed
+# that any spaces in paths are escaped using '\'.
+#
+# Copyright (c) 2011 Alexandre Rostovtsev <tetromino@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify it 
+# under the same terms as Perl itself.
+use strict;
+use warnings;
+
+use Cwd qw(realpath);
+use File::Basename;
+use File::Find;
+
+my %processed = ();
+sub process_la_file {
+    my $filename = $_; # relative to cwd
+    my $pretty_filename = $File::Find::name; # relative to initial cwd
+    if (-d $filename) { return; }
+
+    # don't process a single .la file multiple times (e.g. if symlinked)
+    my $realpath = realpath($filename);
+    if ($processed{$realpath}) {
+        print "$pretty_filename ($realpath) was already processed\n";
+	return;
+    } else {
+        $processed{$realpath}++;
+    }
+
+    # preserve the .la file's mtime in order to avoid triggering make rules
+    my $mtime = (stat $filename)[9];
+    open(my $fh, '<', $filename) or die $!;
+    my $text;
+    my $changes; # whether the file has been changed
+    while (<$fh>) {
+        if (/relink_command=/) {
+            my ($start, $added, $end);
+	    my $ignore = 0; # number of words to not check for similariy to
+	                    # an .la filename, following and including the
+                            # current word
+	    # split by unescaped spaces
+	    for my $word (split /(?<!\\) /) {
+	        if ($word =~ /^-/) {
+                    # ignore command-line options; ignore filename after -o
+                    $ignore++;
+                    $ignore++ if $word eq '-o' ;
+                }
+	    	if ($word =~ m:^[^/].*\.la\W*$: and not $ignore) {
+                    $added .= "-L" . dirname($word) . "/.libs ";
+                    $end .= "$word ";
+                    $changes++;
+                } else {
+                    if ($end) {
+                        $end .= "$word ";
+                    } else {
+                        $start .= "$word ";
+                    }
+                }
+                $ignore-- if $ignore > 0;
+	    }
+	    $_ = "$start$added$end";
+            print "Added '$added' to relink_command in $pretty_filename\n" if $changes;
+	}
+	$text .= $_;
+    }
+    close $fh;
+    if ($changes) {
+        open($fh, '>', $filename) or die $!;
+        print $fh $text;
+        close $fh;
+        # Perl's utime does not support sub-second time :/
+        # And Time::HiRes doesn't help. As a workaround, round up the number of
+        # seconds in order to avoid triggering make rules.
+        utime $mtime + 1, $mtime + 1, $filename;
+    }
+}
+
+if (not @ARGV or $ARGV[0] eq '-h' or $ARGV[0] eq '--help') {
+    warn <<endhelp;
+Usage: fix_relink_command.pl [LAFILENAMES or DIRECTORIES]
+
+Adds extra -L\$dir/.libs arguments to the relink_command field of .la files
+in order to ensure that during relinking, libraries in the local build tree
+will be looked at before ones installed systemwide.
+
+If a filename is given, will process that .la file. If a directory is given,
+will recursively process all .la files in it (but will not recurse into
+symlinked or hidden directories).
+endhelp
+    exit;
+}
+
+find({ wanted => \&process_la_file,
+       preprocess => sub {grep { if (-d $_) { /^[^.]/ } else { /\.la$/ } } sort @_}
+     }, @ARGV);

diff --git a/gnome-extra/evolution-exchange/evolution-exchange-3.0.1.ebuild b/gnome-extra/evolution-exchange/evolution-exchange-3.0.2.ebuild
similarity index 100%
rename from gnome-extra/evolution-exchange/evolution-exchange-3.0.1.ebuild
rename to gnome-extra/evolution-exchange/evolution-exchange-3.0.2.ebuild

diff --git a/gnome-extra/evolution-exchange/files/evolution-exchange-2.91.6-xntlm-as-needed.patch b/gnome-extra/evolution-exchange/files/evolution-exchange-2.91.6-xntlm-as-needed.patch
deleted file mode 100644
index 511c4d3..0000000
--- a/gnome-extra/evolution-exchange/files/evolution-exchange-2.91.6-xntlm-as-needed.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- server/lib/Makefile.am
-+++ server/lib/Makefile.am
-@@ -71,6 +71,8 @@
- 	$(EVOLUTION_DATA_SERVER_CFLAGS)
- 
- libexchange_la_LIBADD = \
-+	-L$(top_srcdir)/server/xntlm \
-+	-lxntlm \
- 	$(EVOLUTION_DATA_SERVER_LIBS) \
- 	$(GNOME_PLATFORM_LIBS) \
- 	$(SOUP_LIBS) \

diff --git a/gnome-extra/evolution-mapi/evolution-mapi-3.0.1.ebuild b/gnome-extra/evolution-mapi/evolution-mapi-3.0.2.ebuild
similarity index 89%
rename from gnome-extra/evolution-mapi/evolution-mapi-3.0.1.ebuild
rename to gnome-extra/evolution-mapi/evolution-mapi-3.0.2.ebuild
index 20a3771..5398e9d 100644
--- a/gnome-extra/evolution-mapi/evolution-mapi-3.0.1.ebuild
+++ b/gnome-extra/evolution-mapi/evolution-mapi-3.0.2.ebuild
@@ -20,7 +20,8 @@ IUSE="doc"
 if [[ ${PV} = 9999 ]]; then
 	KEYWORDS=""
 else
-	KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+	# XXX: re-enable keywords when libmapi can be emerged without black magick
+	KEYWORDS="" #"~alpha ~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86"
 fi
 
 RDEPEND="

diff --git a/mail-client/evolution/evolution-3.0.1.ebuild b/mail-client/evolution/evolution-3.0.2.ebuild
similarity index 85%
rename from mail-client/evolution/evolution-3.0.1.ebuild
rename to mail-client/evolution/evolution-3.0.2.ebuild
index be50867..7fa7af0 100644
--- a/mail-client/evolution/evolution-3.0.1.ebuild
+++ b/mail-client/evolution/evolution-3.0.2.ebuild
@@ -7,7 +7,7 @@ GCONF_DEBUG="no"
 GNOME2_LA_PUNT="yes"
 PYTHON_DEPEND="python? 2:2.4"
 
-inherit autotools flag-o-matic gnome2 python
+inherit autotools eutils flag-o-matic gnome2 python
 if [[ ${PV} = 9999 ]]; then
 	inherit gnome2-live
 fi
@@ -144,6 +144,11 @@ pkg_setup() {
 }
 
 src_prepare() {
+	# XXX: useful upstream fixes, will be included in next release
+	epatch "${FILESDIR}/0001-Bug-651039-Always-update-signature-in-composer-on-ac.patch"
+	epatch "${FILESDIR}/0002-Bug-651062-refresh_folders_exec-reports-progress-inc.patch"
+	epatch "${FILESDIR}/0003-Bug-651135-Crash-using-saved-search-with-an-empty-ex.patch"
+
 	# Use NSS/NSPR only if 'ssl' is enabled.
 	if use ssl ; then
 		sed -e 's|mozilla-nss|nss|' \
@@ -166,13 +171,17 @@ src_prepare() {
 pkg_postinst() {
 	gnome2_pkg_postinst
 
-	# FIXME: This has changed with GNOME 3, revisit
-	#elog "To change the default browser if you are not using GNOME, do:"
-	#elog "gconftool-2 --set /desktop/gnome/url-handlers/http/command -t string 'firefox %s'"
-	#elog "gconftool-2 --set /desktop/gnome/url-handlers/https/command -t string 'firefox %s'"
-	#elog ""
-	#elog "Replace 'firefox %s' with which ever browser you use."
-	#elog ""
+	elog "To change the default browser if you are not using GNOME, edit"
+	elog "~/.local/share/applications/mimeapps.list so it includes the"
+	elog "following content:"
+	elog ""
+	elog "[Default Applications]"
+	elog "x-scheme-handler/http=firefox.desktop"
+	elog "x-scheme-handler/https=firefox.desktop"
+	elog ""
+	elog "(replace firefox.desktop with the name of the appropriate .desktop"
+	elog "file from /usr/share/applications if you use a different browser)."
+	elog ""
 	elog "Junk filters are now a run-time choice. You will get a choice of"
 	elog "bogofilter or spamassassin based on which you have installed"
 	elog ""

diff --git a/mail-client/evolution/evolution-9999.ebuild b/mail-client/evolution/evolution-9999.ebuild
index be50867..04f6f5e 100644
--- a/mail-client/evolution/evolution-9999.ebuild
+++ b/mail-client/evolution/evolution-9999.ebuild
@@ -166,13 +166,17 @@ src_prepare() {
 pkg_postinst() {
 	gnome2_pkg_postinst
 
-	# FIXME: This has changed with GNOME 3, revisit
-	#elog "To change the default browser if you are not using GNOME, do:"
-	#elog "gconftool-2 --set /desktop/gnome/url-handlers/http/command -t string 'firefox %s'"
-	#elog "gconftool-2 --set /desktop/gnome/url-handlers/https/command -t string 'firefox %s'"
-	#elog ""
-	#elog "Replace 'firefox %s' with which ever browser you use."
-	#elog ""
+	elog "To change the default browser if you are not using GNOME, edit"
+	elog "~/.local/share/applications/mimeapps.list so it includes the"
+	elog "following content:"
+	elog ""
+	elog "[Default Applications]"
+	elog "x-scheme-handler/http=firefox.desktop"
+	elog "x-scheme-handler/https=firefox.desktop"
+	elog ""
+	elog "(replace firefox.desktop with the name of the appropriate .desktop"
+	elog "file from /usr/share/applications if you use a different browser)."
+	elog ""
 	elog "Junk filters are now a run-time choice. You will get a choice of"
 	elog "bogofilter or spamassassin based on which you have installed"
 	elog ""

diff --git a/mail-client/evolution/files/0001-Bug-651039-Always-update-signature-in-composer-on-ac.patch b/mail-client/evolution/files/0001-Bug-651039-Always-update-signature-in-composer-on-ac.patch
new file mode 100644
index 0000000..7f80812
--- /dev/null
+++ b/mail-client/evolution/files/0001-Bug-651039-Always-update-signature-in-composer-on-ac.patch
@@ -0,0 +1,25 @@
+From 843e35c48ada910eb1fefb202bcb849d1047c359 Mon Sep 17 00:00:00 2001
+From: Milan Crha <mcrha@redhat.com>
+Date: Wed, 25 May 2011 11:20:26 +0200
+Subject: [PATCH 1/3] Bug #651039 - Always update signature in composer on
+ account change
+
+---
+ composer/e-msg-composer.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
+index 0bc9ca9..c8f1993 100644
+--- a/composer/e-msg-composer.c
++++ b/composer/e-msg-composer.c
+@@ -1714,6 +1714,7 @@ msg_composer_account_changed_cb (EMsgComposer *composer)
+ 	uid = account->id->sig_uid;
+ 	signature = uid ? e_get_signature_by_uid (uid) : NULL;
+ 	e_composer_header_table_set_signature (table, signature);
++	e_msg_composer_show_sig_file (composer);
+ }
+ 
+ static void
+-- 
+1.7.5.rc3
+

diff --git a/mail-client/evolution/files/0002-Bug-651062-refresh_folders_exec-reports-progress-inc.patch b/mail-client/evolution/files/0002-Bug-651062-refresh_folders_exec-reports-progress-inc.patch
new file mode 100644
index 0000000..4579cda
--- /dev/null
+++ b/mail-client/evolution/files/0002-Bug-651062-refresh_folders_exec-reports-progress-inc.patch
@@ -0,0 +1,41 @@
+From fbd3aca29cc12c8a58d15237e3e44f83fe1b8229 Mon Sep 17 00:00:00 2001
+From: Matthew Barnes <mbarnes@redhat.com>
+Date: Thu, 26 May 2011 07:03:15 -0400
+Subject: [PATCH 2/3] Bug 651062 - refresh_folders_exec() reports progress
+ incorrectly.
+
+(cherry picked from commit 6ddc2340d03b6fe3745e97ca10336408833c7294)
+---
+ mail/mail-send-recv.c |    7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+diff --git a/mail/mail-send-recv.c b/mail/mail-send-recv.c
+index a4e2e2e..79018f3 100644
+--- a/mail/mail-send-recv.c
++++ b/mail/mail-send-recv.c
+@@ -924,6 +924,8 @@ refresh_folders_exec (struct _refresh_folders_msg *m,
+ 
+ 	get_folders (m->store, m->folders, m->finfo);
+ 
++	camel_operation_push_message (cancellable, _("Updating..."));
++
+ 	for (i=0;i<m->folders->len;i++) {
+ 		folder = e_mail_session_uri_to_folder_sync (
+ 			m->info->session,
+@@ -944,9 +946,12 @@ refresh_folders_exec (struct _refresh_folders_msg *m,
+ 			break;
+ 
+ 		if (m->info->state != SEND_CANCELLED)
+-			g_signal_emit_by_name (m->info->cancellable, "status", _("Updating..."), 100 * i / m->folders->len);
++			camel_operation_progress (
++				cancellable, 100 * i / m->folders->len);
+ 	}
+ 
++	camel_operation_pop_message (cancellable);
++
+ 	if (cancellable)
+ 		g_signal_handler_disconnect (m->info->cancellable, handler_id);
+ }
+-- 
+1.7.5.rc3
+

diff --git a/mail-client/evolution/files/0003-Bug-651135-Crash-using-saved-search-with-an-empty-ex.patch b/mail-client/evolution/files/0003-Bug-651135-Crash-using-saved-search-with-an-empty-ex.patch
new file mode 100644
index 0000000..bcec4dd
--- /dev/null
+++ b/mail-client/evolution/files/0003-Bug-651135-Crash-using-saved-search-with-an-empty-ex.patch
@@ -0,0 +1,37 @@
+From af08ff1bebc895b4de15d1822d96c64d092f2bb5 Mon Sep 17 00:00:00 2001
+From: Milan Crha <mcrha@redhat.com>
+Date: Thu, 26 May 2011 13:48:22 +0200
+Subject: [PATCH 3/3] Bug #651135 - Crash using saved search with an empty
+ expression
+
+---
+ addressbook/gui/widgets/e-addressbook-model.c |    6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c
+index 8e62e40..17eb2d3 100644
+--- a/addressbook/gui/widgets/e-addressbook-model.c
++++ b/addressbook/gui/widgets/e-addressbook-model.c
+@@ -904,6 +904,9 @@ e_addressbook_model_get_query (EAddressbookModel *model)
+ {
+ 	g_return_val_if_fail (E_IS_ADDRESSBOOK_MODEL (model), NULL);
+ 
++	if (!model->priv->query)
++		return NULL;
++
+ 	return e_book_query_to_string (model->priv->query);
+ }
+ 
+@@ -920,6 +923,9 @@ e_addressbook_model_set_query (EAddressbookModel *model,
+ 	else
+ 		book_query = e_book_query_from_string (query);
+ 
++	if (!book_query)
++		return;
++
+ 	if (model->priv->query != NULL) {
+ 		gchar *old_query, *new_query;
+ 
+-- 
+1.7.5.rc3
+



                 reply	other threads:[~2011-06-02 15:49 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=94bb515df1bc8f94de6e02909ec210997fc7d264.nirbheek@gentoo \
    --to=nirbheek@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox