[notmuch] New upstream release
Karel Klíč
kklic at fedoraproject.org
Thu Jul 28 16:14:46 UTC 2011
commit 77312fda3855f47385138f3a75085138f7eec398
Author: Karel Klic <kklic at redhat.com>
Date: Thu Jul 28 18:14:29 2011 +0200
New upstream release
.gitignore | 1 +
notmuch-0.6.1-gmime.patch | 233 +++++++++++++++++++++++++++++++++++++++++++++
notmuch.spec | 17 ++--
sources | 2 +-
4 files changed, 244 insertions(+), 9 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 54c2668..7432a07 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/notmuch-0.5.tar.gz
+/notmuch-0.6.1.tar.gz
diff --git a/notmuch-0.6.1-gmime.patch b/notmuch-0.6.1-gmime.patch
new file mode 100644
index 0000000..d054d67
--- /dev/null
+++ b/notmuch-0.6.1-gmime.patch
@@ -0,0 +1,233 @@
+diff -up notmuch-0.6.1/notmuch-client.h.gmime notmuch-0.6.1/notmuch-client.h
+--- notmuch-0.6.1/notmuch-client.h.gmime 2011-07-17 16:20:51.000000000 +0200
++++ notmuch-0.6.1/notmuch-client.h 2011-07-28 17:24:16.904949635 +0200
+@@ -68,7 +68,7 @@ typedef struct notmuch_show_format {
+ void (*part_start) (GMimeObject *part,
+ int *part_count);
+ void (*part_encstatus) (int status);
+- void (*part_sigstatus) (const GMimeSignatureValidity* validity);
++ void (*part_sigstatus) (GMimeSignatureList *siglist);
+ void (*part_content) (GMimeObject *part);
+ void (*part_end) (GMimeObject *part);
+ const char *part_sep;
+@@ -82,7 +82,7 @@ typedef struct notmuch_show_params {
+ int entire_thread;
+ int raw;
+ int part;
+- GMimeCipherContext* cryptoctx;
++ GMimeCryptoContext* cryptoctx;
+ int decrypt;
+ } notmuch_show_params_t;
+
+diff -up notmuch-0.6.1/notmuch-reply.c.gmime notmuch-0.6.1/notmuch-reply.c
+--- notmuch-0.6.1/notmuch-reply.c.gmime 2011-07-17 16:20:51.000000000 +0200
++++ notmuch-0.6.1/notmuch-reply.c 2011-07-28 17:24:16.904949635 +0200
+@@ -610,13 +610,10 @@ notmuch_reply_command (void *ctx, int ar
+ }
+ } else if ((STRNCMP_LITERAL (argv[i], "--decrypt") == 0)) {
+ if (params.cryptoctx == NULL) {
+- GMimeSession* session = g_object_new(g_mime_session_get_type(), NULL);
+- if (NULL == (params.cryptoctx = g_mime_gpg_context_new(session, "gpg")))
++ if (NULL == (params.cryptoctx = g_mime_gpg_context_new(NULL, "gpg")))
+ fprintf (stderr, "Failed to construct gpg context.\n");
+ else
+ g_mime_gpg_context_set_always_trust((GMimeGpgContext*)params.cryptoctx, FALSE);
+- g_object_unref (session);
+- session = NULL;
+ }
+ } else {
+ fprintf (stderr, "Unrecognized option: %s\n", argv[i]);
+diff -up notmuch-0.6.1/notmuch-show.c.gmime notmuch-0.6.1/notmuch-show.c
+--- notmuch-0.6.1/notmuch-show.c.gmime 2011-07-17 16:20:51.000000000 +0200
++++ notmuch-0.6.1/notmuch-show.c 2011-07-28 17:24:16.905949620 +0200
+@@ -70,7 +70,7 @@ static void
+ format_part_encstatus_json (int status);
+
+ static void
+-format_part_sigstatus_json (const GMimeSignatureValidity* validity);
++format_part_sigstatus_json (GMimeSignatureList *siglist);
+
+ static void
+ format_part_content_json (GMimeObject *part);
+@@ -420,16 +420,14 @@ show_text_part_content (GMimeObject *par
+ }
+
+ static const char*
+-signer_status_to_string (GMimeSignerStatus x)
++signature_status_to_string (GMimeSignatureStatus x)
+ {
+ switch (x) {
+- case GMIME_SIGNER_STATUS_NONE:
+- return "none";
+- case GMIME_SIGNER_STATUS_GOOD:
++ case GMIME_SIGNATURE_STATUS_GOOD:
+ return "good";
+- case GMIME_SIGNER_STATUS_BAD:
++ case GMIME_SIGNATURE_STATUS_BAD:
+ return "bad";
+- case GMIME_SIGNER_STATUS_ERROR:
++ case GMIME_SIGNATURE_STATUS_ERROR:
+ return "error";
+ }
+ return "unknown";
+@@ -524,59 +522,65 @@ format_part_encstatus_json (int status)
+ }
+
+ static void
+-format_part_sigstatus_json (const GMimeSignatureValidity* validity)
++format_part_sigstatus_json (GMimeSignatureList *siglist)
+ {
+ printf (", \"sigstatus\": [");
+
+- if (!validity) {
++ if (!siglist) {
+ printf ("]");
+ return;
+ }
+
+- const GMimeSigner *signer = g_mime_signature_validity_get_signers (validity);
+- int first = 1;
+ void *ctx_quote = talloc_new (NULL);
++ int i;
++ for (i = 0; i < g_mime_signature_list_length (siglist); ++i) {
++ GMimeSignature *signature = g_mime_signature_list_get_signature (siglist, i);
+
+- while (signer) {
+- if (first)
+- first = 0;
+- else
++ if (i > 0)
+ printf (", ");
+-
+ printf ("{");
+
+ /* status */
++ GMimeSignatureStatus status = g_mime_signature_get_status (signature);
+ printf ("\"status\": %s",
+ json_quote_str (ctx_quote,
+- signer_status_to_string (signer->status)));
++ signature_status_to_string (status)));
+
+- if (signer->status == GMIME_SIGNER_STATUS_GOOD)
++ GMimeCertificate *certificate = g_mime_signature_get_certificate (signature);
++ if (status == GMIME_SIGNATURE_STATUS_GOOD)
+ {
+- if (signer->fingerprint)
+- printf (", \"fingerprint\": %s", json_quote_str (ctx_quote, signer->fingerprint));
++ if (certificate)
++ printf (", \"fingerprint\": %s", json_quote_str (ctx_quote, g_mime_certificate_get_fingerprint (certificate)));
+ /* these dates are seconds since the epoch; should we
+ * provide a more human-readable format string? */
+- if (signer->created)
+- printf (", \"created\": %d", (int) signer->created);
+- if (signer->expires)
+- printf (", \"expires\": %d", (int) signer->expires);
++ time_t created = g_mime_signature_get_created (signature);
++ if (created != -1)
++ printf (", \"created\": %d", (int) created);
++ time_t expires = g_mime_signature_get_expires (signature);
++ if (expires != -1)
++ printf (", \"expires\": %d", (int) expires);
+ /* output user id only if validity is FULL or ULTIMATE. */
+ /* note that gmime is using the term "trust" here, which
+ * is WRONG. It's actually user id "validity". */
+- if ((signer->name) && (signer->trust)) {
+- if ((signer->trust == GMIME_SIGNER_TRUST_FULLY) || (signer->trust == GMIME_SIGNER_TRUST_ULTIMATE))
+- printf (", \"userid\": %s", json_quote_str (ctx_quote, signer->name));
++ if (certificate)
++ {
++ const char *name = g_mime_certificate_get_issuer_name (certificate);
++ GMimeCertificateTrust trust = g_mime_certificate_get_trust (certificate);
++ if (name && (trust == GMIME_CERTIFICATE_TRUST_FULLY || trust == GMIME_CERTIFICATE_TRUST_ULTIMATE))
++ printf (", \"userid\": %s", json_quote_str (ctx_quote, name));
+ }
+- } else {
+- if (signer->keyid)
+- printf (", \"keyid\": %s", json_quote_str (ctx_quote, signer->keyid));
+- }
+- if (signer->errors != GMIME_SIGNER_ERROR_NONE) {
+- printf (", \"errors\": %x", signer->errors);
+- }
++ } else if (certificate) {
++ const char *key_id = g_mime_certificate_get_key_id (certificate);
++ if (key_id)
++ printf (", \"keyid\": %s", json_quote_str (ctx_quote, key_id));
++ }
++
++ GMimeSignatureError errors = g_mime_signature_get_errors (signature);
++ if (errors != GMIME_SIGNATURE_ERROR_NONE) {
++ printf (", \"errors\": %x", errors);
++ }
+
+- printf ("}");
+- signer = signer->next;
++ printf ("}");
+ }
+
+ printf ("]");
+@@ -899,13 +903,10 @@ notmuch_show_command (void *ctx, unused
+ } else if ((STRNCMP_LITERAL (argv[i], "--verify") == 0) ||
+ (STRNCMP_LITERAL (argv[i], "--decrypt") == 0)) {
+ if (params.cryptoctx == NULL) {
+- GMimeSession* session = g_object_new(g_mime_session_get_type(), NULL);
+- if (NULL == (params.cryptoctx = g_mime_gpg_context_new(session, "gpg")))
++ if (NULL == (params.cryptoctx = g_mime_gpg_context_new(NULL, "gpg")))
+ fprintf (stderr, "Failed to construct gpg context.\n");
+ else
+ g_mime_gpg_context_set_always_trust((GMimeGpgContext*)params.cryptoctx, FALSE);
+- g_object_unref (session);
+- session = NULL;
+ }
+ if (STRNCMP_LITERAL (argv[i], "--decrypt") == 0)
+ params.decrypt = 1;
+diff -up notmuch-0.6.1/show-message.c.gmime notmuch-0.6.1/show-message.c
+--- notmuch-0.6.1/show-message.c.gmime 2011-07-17 16:20:51.000000000 +0200
++++ notmuch-0.6.1/show-message.c 2011-07-28 17:27:12.295304742 +0200
+@@ -68,15 +68,16 @@ show_message_part (GMimeObject *part,
+ g_mime_multipart_get_count (multipart));
+ } else {
+ GMimeMultipartEncrypted *encrypteddata = GMIME_MULTIPART_ENCRYPTED (part);
+- decryptedpart = g_mime_multipart_encrypted_decrypt (encrypteddata, params->cryptoctx, &err);
++ GMimeDecryptResult *decrypt_result = g_mime_decrypt_result_new ();
++ decryptedpart = g_mime_multipart_encrypted_decrypt (encrypteddata, params->cryptoctx, &decrypt_result, &err);
+ if (decryptedpart) {
+ if ((selected || state->in_zone) && format->part_encstatus)
+ format->part_encstatus (1);
+- const GMimeSignatureValidity *sigvalidity = g_mime_multipart_encrypted_get_signature_validity (encrypteddata);
+- if (!sigvalidity)
+- fprintf (stderr, "Failed to verify signed part: %s\n", (err ? err->message : "no error explanation given"));
++ GMimeSignatureList *siglist = g_mime_decrypt_result_get_signatures (decrypt_result);
++ if (!siglist)
++ fprintf (stderr, "Failed to get signatures: %s\n", (err ? err->message : "no error explanation given"));
+ if ((selected || state->in_zone) && format->part_sigstatus)
+- format->part_sigstatus (sigvalidity);
++ format->part_sigstatus (siglist);
+ } else {
+ fprintf (stderr, "Failed to decrypt part: %s\n", (err ? err->message : "no error explanation given"));
+ if ((selected || state->in_zone) && format->part_encstatus)
+@@ -92,20 +93,14 @@ show_message_part (GMimeObject *part,
+ "Error: %d part(s) for a multipart/signed message (should be exactly 2)\n",
+ g_mime_multipart_get_count (multipart));
+ } else {
+- /* For some reason the GMimeSignatureValidity returned
+- * here is not a const (inconsistent with that
+- * returned by
+- * g_mime_multipart_encrypted_get_signature_validity,
+- * and therefore needs to be properly disposed of.
+- * Hopefully the API will become more consistent. */
+- GMimeSignatureValidity *sigvalidity = g_mime_multipart_signed_verify (GMIME_MULTIPART_SIGNED (part), params->cryptoctx, &err);
+- if (!sigvalidity) {
++ GMimeSignatureList *siglist = g_mime_multipart_signed_verify (GMIME_MULTIPART_SIGNED (part), params->cryptoctx, &err);
++ if (!siglist) {
+ fprintf (stderr, "Failed to verify signed part: %s\n", (err ? err->message : "no error explanation given"));
+ }
+ if ((selected || state->in_zone) && format->part_sigstatus)
+- format->part_sigstatus (sigvalidity);
+- if (sigvalidity)
+- g_mime_signature_validity_free (sigvalidity);
++ format->part_sigstatus (siglist);
++ if (siglist)
++ g_object_unref (siglist);
+ }
+ }
+
diff --git a/notmuch.spec b/notmuch.spec
index 58e8bbe..cd46d7a 100644
--- a/notmuch.spec
+++ b/notmuch.spec
@@ -1,11 +1,12 @@
Name: notmuch
-Version: 0.5
-Release: 4%{?dist}
+Version: 0.6.1
+Release: 1%{?dist}
Summary: System for indexing, searching, and tagging email
Group: Applications/Internet
License: GPLv3+
URL: http://notmuchmail.org/
Source0: http://notmuchmail.org/releases/notmuch-%{version}.tar.gz
+Patch0: notmuch-0.6.1-gmime.patch
BuildRequires: xapian-core-devel
BuildRequires: gmime-devel
BuildRequires: libtalloc-devel
@@ -59,6 +60,7 @@ Requires: emacs-notmuch = %{version}-%{release}
%prep
%setup -q
+%patch0 -p1 -b .gmime
%build
# The %%configure macro cannot be used because notmuch doesn't support
@@ -69,7 +71,6 @@ Requires: emacs-notmuch = %{version}-%{release}
make %{?_smp_mflags} CFLAGS="%{optflags}"
%install
-rm -rf %{buildroot}
make install DESTDIR=%{buildroot}
# Enable dynamic library stripping.
@@ -80,29 +81,29 @@ find %{buildroot}%{_libdir} -name *.so* -exec chmod 755 {} \;
%postun -p /sbin/ldconfig
%files
-%defattr(-,root,root,-)
%doc AUTHORS COPYING COPYING-GPL-3 INSTALL README TODO
%{_sysconfdir}/bash_completion.d/notmuch
-%{_datadir}/zsh/functions/Completion/Unix/notmuch
+%{_datadir}/zsh/functions/Completion/Unix/_notmuch
%{_bindir}/notmuch
%{_mandir}/man1/notmuch.1*
%{_libdir}/libnotmuch.so.1*
%files devel
-%defattr(-,root,root,-)
%{_libdir}/libnotmuch.so
%{_includedir}/*
%files -n emacs-notmuch
-%defattr(-,root,root,-)
%{_emacs_sitelispdir}/*.elc
%{_emacs_sitelispdir}/notmuch-logo.png
%files -n emacs-notmuch-el
-%defattr(-,root,root,-)
%{_emacs_sitelispdir}/*.el
%changelog
+* Thu Jul 28 2011 Karel Klíč <kklic at redhat.com> - 0.6.1-1
+- Latest upstream release
+- Added -gmime patch to compile with GMime 2.5.x (upstream uses GMime 2.4.x)
+
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.5-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
diff --git a/sources b/sources
index 3147029..02f5220 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-983cd907a7bf5ee0d12ebfb54cff784f notmuch-0.5.tar.gz
+a2d5123d68a0f770e5afe3c2af9f35a3 notmuch-0.6.1.tar.gz
More information about the scm-commits
mailing list