* [gentoo-commits] proj/gnome:master commit in: gnome-extra/evolution-mapi/, gnome-extra/evolution-data-server/files/, ...
@ 2011-06-02 15:48 Nirbheek Chauhan
0 siblings, 0 replies; only message in thread
From: Nirbheek Chauhan @ 2011-06-02 15:48 UTC (permalink / raw
To: gentoo-commits
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
+
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2011-06-02 15:49 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-02 15:48 [gentoo-commits] proj/gnome:master commit in: gnome-extra/evolution-mapi/, gnome-extra/evolution-data-server/files/, Nirbheek Chauhan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox