gnome-extra/evolution-data-server: bump to 3.24.7, fresh install fix, libical3 compat
authorMart Raudsepp <leio@gentoo.org>
Mon, 8 Jan 2018 11:13:40 +0000 (13:13 +0200)
committerMart Raudsepp <leio@gentoo.org>
Mon, 8 Jan 2018 12:57:00 +0000 (14:57 +0200)
Bump, patch to honor DESTDIR and not update caches when set (might cause sandbox
violation for us and be generally wrong), patches for libical:0/3 compatibility.

Bug: https://bugs.gentoo.org/628460
Package-Manager: Portage-2.3.19, Repoman-2.3.6

gnome-extra/evolution-data-server/Manifest
gnome-extra/evolution-data-server/evolution-data-server-3.24.7.ebuild [new file with mode: 0644]
gnome-extra/evolution-data-server/files/3.24.7-DESTDIR-honoring.patch [new file with mode: 0644]
gnome-extra/evolution-data-server/files/3.24.7-libical3-compat.patch [new file with mode: 0644]

index d481b5f9a47d71677c2d5db3695c008d5988db96..45eaf7d0e19305671d19b3fd4589a9580db69aab 100644 (file)
@@ -1,2 +1,3 @@
 DIST evolution-data-server-3.22.7.tar.xz 5564924 BLAKE2B 8107a13ef46a4457e122c5d719c0d29ccbf5ec61424fb6b4810b1e165bb68cb8c1c87ec9ab34446458321c0c56ba5a5408f45ae9fc95bcee965c21caaad6a230 SHA512 53648c0b893982b3577008aeae57e213e084aa5ba4663ca109f200b268635fd1544408c1ace065e91e5eaf48a20f59609c8e895a1907501ea5e64119d1590d44
 DIST evolution-data-server-3.24.6.tar.xz 4252940 BLAKE2B 42a0a39a8248628964cfd026e4b8bc3794e897f447aadb73e0e7870865314c47d6de11a1aa85d6e7fcb0a414a3552a74cb3012c8a6d4908b280ae7440e1154d7 SHA512 01eece83217e66ce7e08e333ceaf38bae226800dd8a015dda29583b0155b9f1fbef4f18d95a7127d08421cd27b3203d2b7cc6a3bc0b5adba1b06197c85be96e6
+DIST evolution-data-server-3.24.7.tar.xz 4253252 BLAKE2B ca435a4e6c3a003c5166bd06f0308766686cc9e02f1eb6a15a521c58805bafdfd39cbc7ee058339ba383329ab34a11ed2b0eeebd9b545219c4b3d8f51de8df60 SHA512 3e83cb0e87ec822ebf6c81963693e7c701d20266e0811bd261a78073c75724e2c24ac5d5561e997ed8567e9e519c175b3104fa6e2e28158854c8c3ec39a8e9df
diff --git a/gnome-extra/evolution-data-server/evolution-data-server-3.24.7.ebuild b/gnome-extra/evolution-data-server/evolution-data-server-3.24.7.ebuild
new file mode 100644 (file)
index 0000000..9c317eb
--- /dev/null
@@ -0,0 +1,152 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+GNOME2_LA_PUNT="yes"
+PYTHON_COMPAT=( python2_7 python3_{4,5,6} pypy )
+VALA_USE_DEPEND="vapigen"
+
+inherit cmake-utils db-use flag-o-matic gnome2 python-any-r1 systemd vala virtualx
+
+DESCRIPTION="Evolution groupware backend"
+HOMEPAGE="https://wiki.gnome.org/Apps/Evolution"
+
+# Note: explicitly "|| ( LGPL-2 LGPL-3 )", not "LGPL-2+".
+LICENSE="|| ( LGPL-2 LGPL-3 ) BSD Sleepycat"
+SLOT="0/60" # subslot = libcamel-1.2 soname version
+
+IUSE="api-doc-extras berkdb +gnome-online-accounts +gtk google +introspection ipv6 ldap kerberos vala +weather"
+REQUIRED_USE="vala? ( introspection )"
+
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~x86-solaris"
+
+# sys-libs/db is only required for migrating from <3.13 versions
+# gdata-0.17.7 soft required for new gdata_feed_get_next_page_token API to handle more than 100 google tasks
+# berkdb needed only for migrating old calendar data, bug #519512
+gdata_depend=">=dev-libs/libgdata-0.17.7:="
+RDEPEND="
+       >=app-crypt/gcr-3.4
+       >=app-crypt/libsecret-0.5[crypt]
+       >=dev-db/sqlite-3.7.17:=
+       >=dev-libs/glib-2.46:2
+       >=dev-libs/libical-0.43:=
+       >=dev-libs/libxml2-2
+       >=dev-libs/nspr-4.4:=
+       >=dev-libs/nss-3.9:=
+       >=net-libs/libsoup-2.42:2.4
+
+       dev-libs/icu:=
+       sys-libs/zlib:=
+       virtual/libiconv
+
+       berkdb? ( >=sys-libs/db-4:= )
+       gtk? (
+               >=app-crypt/gcr-3.4[gtk]
+               >=x11-libs/gtk+-3.10:3
+       )
+       google? (
+               >=dev-libs/json-glib-1.0.4
+               >=net-libs/webkit-gtk-2.11.91:4
+               ${gdata_depend}
+       )
+       gnome-online-accounts? (
+               >=net-libs/gnome-online-accounts-3.8:=
+               ${gdata_depend} )
+       introspection? ( >=dev-libs/gobject-introspection-0.9.12:= )
+       kerberos? ( virtual/krb5:= )
+       ldap? ( >=net-nds/openldap-2:= )
+       weather? ( >=dev-libs/libgweather-3.10:2= )
+"
+DEPEND="${RDEPEND}
+       ${PYTHON_DEPS}
+       dev-util/gdbus-codegen
+       dev-util/gperf
+       >=dev-util/gtk-doc-am-1.14
+       >=dev-util/intltool-0.35.5
+       >=sys-devel/gettext-0.18.3
+       virtual/pkgconfig
+       vala? ( $(vala_depend) )
+"
+
+# Some tests fail due to missings locales.
+# Also, dbus tests are flacky, bugs #397975 #501834
+# It looks like a nightmare to disable those for now.
+RESTRICT="test"
+
+PATCHES=(
+       "${FILESDIR}"/${PV}-DESTDIR-honoring.patch
+       "${FILESDIR}"/${PV}-libical3-compat.patch
+)
+
+pkg_setup() {
+       python-any-r1_pkg_setup
+}
+
+src_prepare() {
+       use vala && vala_src_prepare
+       gnome2_src_prepare
+
+       # Make CMakeLists versioned vala enabled
+       sed -e "s;\(find_program(VALAC\) valac);\1 ${VALAC});" \
+           -e "s;\(find_program(VAPIGEN\) vapigen);\1 ${VAPIGEN});" \
+               -i "${S}"/CMakeLists.txt || die
+}
+
+src_configure() {
+       # /usr/include/db.h is always db-1 on FreeBSD
+       # so include the right dir in CPPFLAGS
+       use berkdb && append-cppflags "-I$(db_includedir)"
+
+       local google_auth_enable
+       if use google || use gnome-online-accounts; then
+               google_auth_enable="ON"
+       else
+               google_auth_enable="OFF"
+       fi
+
+       # phonenumber does not exist in tree
+       local mycmakeargs=(
+               -DENABLE_GTK_DOC=$(usex api-doc-extras)
+               -DWITH_PRIVATE_DOCS=$(usex api-doc-extras)
+               -DENABLE_SCHEMAS_COMPILE=OFF
+               -DENABLE_INTROSPECTION=$(usex introspection)
+               -DWITH_KRB5=$(usex kerberos)
+               -DWITH_KRB5_INCLUDES=$(usex kerberos "${EPREFIX}"/usr "")
+               -DWITH_KRB5_LIBS=$(usex kerberos "${EPREFIX}"/usr/$(get_libdir) "")
+               -DWITH_OPENLDAP=$(usex ldap)
+               -DWITH_PHONENUMBER=OFF
+               -DENABLE_SMIME=ON
+               -DENABLE_GTK=$(usex gtk)
+               -DENABLE_GOOGLE_AUTH=${google_auth_enable}
+               -DENABLE_EXAMPLES=OFF
+               -DENABLE_GOA=$(usex gnome-online-accounts)
+               -DENABLE_UOA=OFF
+               -DWITH_LIBDB=$(usex berkdb "${EPREFIX}"/usr OFF)
+               # ENABLE_BACKTRACES requires libdwarf ?
+               -DENABLE_IPV6=$(usex ipv6)
+               -DENABLE_WEATHER=$(usex weather)
+               -DENABLE_GOOGLE=$(usex google)
+               -DENABLE_LARGEFILE=ON
+               -DENABLE_VALA_BINDINGS=$(usex vala)
+       )
+
+       cmake-utils_src_configure
+}
+
+src_compile() {
+       cmake-utils_src_compile
+}
+
+src_test() {
+       virtx cmake-utils_src_test
+}
+
+src_install() {
+       cmake-utils_src_install
+
+       if use ldap; then
+               insinto /etc/openldap/schema
+               doins "${FILESDIR}"/calentry.schema
+               dosym ../../../usr/share/${PN}/evolutionperson.schema /etc/openldap/schema/evolutionperson.schema
+       fi
+}
diff --git a/gnome-extra/evolution-data-server/files/3.24.7-DESTDIR-honoring.patch b/gnome-extra/evolution-data-server/files/3.24.7-DESTDIR-honoring.patch
new file mode 100644 (file)
index 0000000..a3a3d47
--- /dev/null
@@ -0,0 +1,31 @@
+From 5406fcda088be73f462e7d02d4a2ae56cc7329cc Mon Sep 17 00:00:00 2001
+From: Milan Crha <mcrha@redhat.com>
+Date: Mon, 2 Oct 2017 19:20:36 +0200
+Subject: Bug 781645 - Skip GSettings schema compile when DESTDIR is set
+
+---
+ cmake/modules/GLibTools.cmake | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/cmake/modules/GLibTools.cmake b/cmake/modules/GLibTools.cmake
+index fc8eb82..f0be558 100644
+--- a/cmake/modules/GLibTools.cmake
++++ b/cmake/modules/GLibTools.cmake
+@@ -238,9 +238,11 @@ macro(add_gsettings_schemas _target _schema0)
+       if(_install_code)
+               # Compile gsettings schemas and ensure that all of them are in the place.
+               install(CODE
+-                      "execute_process(${_install_code}
+-                              COMMAND ${CMAKE_COMMAND} -E chdir . \"${GLIB_COMPILE_SCHEMAS}\" \"${GSETTINGS_SCHEMAS_DIR}\"
+-                      )")
++                      "if(\"\$ENV{DESTDIR}\" STREQUAL \"\")
++                              execute_process(${_install_code}
++                                      COMMAND ${CMAKE_COMMAND} -E chdir . \"${GLIB_COMPILE_SCHEMAS}\" \"${GSETTINGS_SCHEMAS_DIR}\"
++                              )
++                      endif(\"\$ENV{DESTDIR}\" STREQUAL \"\")")
+       endif(_install_code)
+ endmacro(add_gsettings_schemas)
+ 
+-- 
+cgit v0.12
+
diff --git a/gnome-extra/evolution-data-server/files/3.24.7-libical3-compat.patch b/gnome-extra/evolution-data-server/files/3.24.7-libical3-compat.patch
new file mode 100644 (file)
index 0000000..8f574b0
--- /dev/null
@@ -0,0 +1,146 @@
+From dc5fc0e163421f5a01c3cdaab23ca2ea1eb3fae2 Mon Sep 17 00:00:00 2001
+From: Milan Crha <mcrha@redhat.com>
+Date: Wed, 4 Oct 2017 11:48:48 +0200
+Subject: [PATCH 1/2] Use icaltime_is_utc() instead of icaltimetype::is_utc
+
+The structure member is going to be removed from libical in the next release
+and the function is available for a long time, thus it's safe to replace
+the usage in the code.
+
+(cherry picked from commit f607f8628a28440374579531bc78848dfe0c782e)
+---
+ src/calendar/backends/contacts/e-cal-backend-contacts.c | 1 -
+ src/calendar/libecal/e-cal-component.c                  | 8 ++++----
+ src/calendar/libecal/e-cal-recur.c                      | 8 ++++----
+ src/calendar/libecal/e-cal-time-util.c                  | 3 +--
+ 4 files changed, 9 insertions(+), 11 deletions(-)
+
+diff --git a/src/calendar/backends/contacts/e-cal-backend-contacts.c b/src/calendar/backends/contacts/e-cal-backend-contacts.c
+index d2b570885..cf2c62062 100644
+--- a/src/calendar/backends/contacts/e-cal-backend-contacts.c
++++ b/src/calendar/backends/contacts/e-cal-backend-contacts.c
+@@ -699,7 +699,6 @@ cdate_to_icaltime (EContactDate *cdate)
+       ret.month = cdate->month;
+       ret.day = cdate->day;
+       ret.is_date = TRUE;
+-      ret.is_utc = FALSE;
+       ret.zone = NULL;
+       ret.is_daylight = FALSE;
+ 
+diff --git a/src/calendar/libecal/e-cal-component.c b/src/calendar/libecal/e-cal-component.c
+index 65b530d1e..6d8a9814d 100644
+--- a/src/calendar/libecal/e-cal-component.c
++++ b/src/calendar/libecal/e-cal-component.c
+@@ -2522,7 +2522,7 @@ get_datetime (struct datetime *datetime,
+        * This makes the timezone code simpler. */
+       if (datetime->tzid_param)
+               dt->tzid = g_strdup (icalparameter_get_tzid (datetime->tzid_param));
+-      else if (dt->value && dt->value->is_utc)
++      else if (dt->value && icaltime_is_utc (*dt->value))
+               dt->tzid = g_strdup ("UTC");
+       else
+               dt->tzid = NULL;
+@@ -2559,9 +2559,9 @@ set_datetime (ECalComponent *comp,
+ 
+       /* If the TZID is set to "UTC", we set the is_utc flag. */
+       if (dt->tzid && !strcmp (dt->tzid, "UTC"))
+-              dt->value->is_utc = 1;
+-      else
+-              dt->value->is_utc = 0;
++              dt->value->zone = icaltimezone_get_utc_timezone ();
++      else if (dt->value->zone == icaltimezone_get_utc_timezone ())
++              dt->value->zone = NULL;
+ 
+       if (datetime->prop) {
+               /* make sure no VALUE property is left if not needed */
+diff --git a/src/calendar/libecal/e-cal-recur.c b/src/calendar/libecal/e-cal-recur.c
+index 535d56c14..cad588c4d 100644
+--- a/src/calendar/libecal/e-cal-recur.c
++++ b/src/calendar/libecal/e-cal-recur.c
+@@ -195,7 +195,7 @@ ensure_timezone (icalcomponent *comp,
+          a different icalcomponent and cause use-after-free. */
+       tt->zone = NULL;
+ 
+-      if (tt->is_utc)
++      if (icaltime_is_utc (*tt))
+               return TRUE;
+ 
+       tt->zone = default_timezone;
+@@ -435,7 +435,7 @@ e_cal_recur_generate_instances_sync (icalcomponent *comp,
+                               rrule.until.minute = 0;
+                               rrule.until.second = 0;
+ 
+-                              if (!rrule.until.zone && !rrule.until.is_utc)
++                              if (!rrule.until.zone && !icaltime_is_utc (rrule.until))
+                                       rrule.until.zone = dtstart.zone;
+                       }
+ 
+@@ -542,7 +542,7 @@ e_cal_recur_generate_instances_sync (icalcomponent *comp,
+                               exrule.until.minute = 0;
+                               exrule.until.second = 0;
+ 
+-                              if (!exrule.until.zone && !exrule.until.is_utc)
++                              if (!exrule.until.zone && !icaltime_is_utc (exrule.until))
+                                       exrule.until.zone = dtstart.zone;
+                       }
+ 
+@@ -586,7 +586,7 @@ e_cal_recur_generate_instances_sync (icalcomponent *comp,
+                       if (!success)
+                               break;
+ 
+-                      if (!exdate.zone && !exdate.is_utc)
++                      if (!exdate.zone && !icaltime_is_utc (exdate))
+                               exdate.zone = dtstart.zone;
+ 
+                       if (intersects_interval (&exdate, NULL, duration_days, duration_seconds, &interval_start, &interval_end)) {
+diff --git a/src/calendar/libecal/e-cal-time-util.c b/src/calendar/libecal/e-cal-time-util.c
+index 7bcbc8ba1..914761cb0 100644
+--- a/src/calendar/libecal/e-cal-time-util.c
++++ b/src/calendar/libecal/e-cal-time-util.c
+@@ -763,9 +763,8 @@ tm_to_icaltimetype (struct tm *tm,
+ 
+       itt.day = tm->tm_mday;
+       itt.month = tm->tm_mon + 1;
+-      itt.year = tm->tm_year+ 1900;
++      itt.year = tm->tm_year + 1900;
+ 
+-      itt.is_utc = 0;
+       itt.is_date = is_date;
+ 
+       return itt;
+-- 
+2.15.1
+
+
+From fccd77cf4620ca76c4fd2bf7721e3fb7eaf55ec6 Mon Sep 17 00:00:00 2001
+From: Milan Crha <mcrha@redhat.com>
+Date: Thu, 5 Oct 2017 13:50:08 +0200
+Subject: [PATCH 2/2] e-cal-recur.c:ensure_timezone(): Unset icaltimetype::zone
+ only if not UTC
+
+With a removal of icaltimetype::is_utc the icaltimetype::zone is used
+to determine whether it's UTC or not. That means that the icaltimetype::zone
+can be unset only if it's not the built-in UTC time zone.
+
+(cherry picked from commit 1f39ade8db00091d6fa4c752ccb70361ef0e8abc)
+---
+ src/calendar/libecal/e-cal-recur.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/calendar/libecal/e-cal-recur.c b/src/calendar/libecal/e-cal-recur.c
+index cad588c4d..fc14fb15c 100644
+--- a/src/calendar/libecal/e-cal-recur.c
++++ b/src/calendar/libecal/e-cal-recur.c
+@@ -193,7 +193,8 @@ ensure_timezone (icalcomponent *comp,
+ 
+       /* Do not trust the 'zone' set on the structure, as it can come from
+          a different icalcomponent and cause use-after-free. */
+-      tt->zone = NULL;
++      if (tt->zone != icaltimezone_get_utc_timezone ())
++              tt->zone = NULL;
+ 
+       if (icaltime_is_utc (*tt))
+               return TRUE;
+-- 
+2.15.1
+