From: Alex Kost <alezost@gmail.com>
To: Thomas Danckaert <post@thomasdanckaert.be>
Cc: guix-devel@gnu.org
Subject: Re: [PATCH] gnu: Add emacs-mew.
Date: Fri, 03 Feb 2017 12:39:05 +0300 [thread overview]
Message-ID: <871svfk406.fsf@gmail.com> (raw)
In-Reply-To: <20170202.194107.439776871711114152.post@thomasdanckaert.be> (Thomas Danckaert's message of "Thu, 02 Feb 2017 19:41:07 +0100 (CET)")
Thomas Danckaert (2017-02-02 19:41 +0100) wrote:
> From: Alex Kost <alezost@gmail.com>
> Subject: Re: [PATCH] gnu: Add emacs-mew.
> Date: Thu, 02 Feb 2017 11:56:22 +0300
>
>> OK, I see. We can just patch "mew-key.el" file by putting the
>> following
>> line there:
>>
>> (add-to-list 'image-load-path 'mew-icon-directory)
>>
>> WDYT?
>
> Yes, that would be fine!
Great, but you did a different thing :-) (see my comment below)
> I added a patch file, don't know if there's a
> more elegant way to achieve the same result?
Hm, we can modify 'image-load-path' during initializing
'mew-icon-directory' variable like this:
(add-after 'configure 'patch-mew-icon-directory
(lambda* (#:key outputs #:allow-other-keys)
(emacs-substitute-sexps "mew-key.el"
("(def.* mew-icon-directory"
`(progn
(add-to-list 'image-load-path 'mew-icon-directory)
,(string-append (assoc-ref outputs "out") ,icon-dir))))
#t))
This is probably not very clean, but at least it allows us to avoid
additional patch, WDYT?
Also we have to use 'emacs' input (it should be native-input btw, since
it is used only to byte-compile elisp code) instead of 'emacs-minimal':
emacs-minimal is compiled without X support, so it will fail to compile
"mew-key.el" (and all files that require it) as it uses image-load-path.
Oh, I just realized that's probably why you used 'load-path' instead of
'image-load-path', right?
>> [...]
>>
>> Also you seem to overlook my comment about autoloads. My version of
>> your patch (attached in my previous message) contains a phase to
>> generate "mew-autoloads.el". This file is really needed to have "M-x
>> mew" command available by default. Otherwise, a user has to put:
>>
>> (autoload 'mew "mew" nil t)
>>
>> in his/her emacs config.
>
> Yes, sorry, I just agreed and then forgot to comment on that part. I
> didn't know about 'emacs-generate-autoloads and think it's great :)
>
> Thanks for your help!
No problem, thanks for packaging it! I hope we are close to finish,
could you test it with 'emacs' input and 'patch-mew-icon-directory'
phase I wrote above?
> From 3179514335f61e29f93994f4dc0f59c30b59e876 Mon Sep 17 00:00:00 2001
> From: Thomas Danckaert <thomas.danckaert@gmail.com>
> Date: Tue, 24 Jan 2017 09:41:42 +0100
> Subject: [PATCH] gnu: Add emacs-mew.
>
> * gnu/packages/mail.scm (emacs-mew): New variable.
> * gnu/packages/patches/mew-add-icons-to-load-path.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Add it.
>
> Co-authored-by: Alex Kost <alezost@gmail.com>
> ---
> gnu/local.mk | 1 +
> gnu/packages/mail.scm | 52 ++++++++++++++++++++++
> .../patches/mew-add-icons-to-load-path.patch | 14 ++++++
> 3 files changed, 67 insertions(+)
> create mode 100644 gnu/packages/patches/mew-add-icons-to-load-path.patch
>
> diff --git a/gnu/local.mk b/gnu/local.mk
> index 59fc1a8..c9a5a3a 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -744,6 +744,7 @@ dist_patch_DATA = \
> %D%/packages/patches/mcrypt-CVE-2012-4527.patch \
> %D%/packages/patches/mesa-wayland-egl-symbols-check-mips.patch \
> %D%/packages/patches/metabat-remove-compilation-date.patch \
> + %D%/packages/patches/mew-add-icons-to-load-path.patch \
> %D%/packages/patches/mhash-keygen-test-segfault.patch \
> %D%/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch \
> %D%/packages/patches/mpc123-initialize-ao.patch \
> diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
> index 2318ae9..c6aa820 100644
> --- a/gnu/packages/mail.scm
> +++ b/gnu/packages/mail.scm
> @@ -20,6 +20,7 @@
> ;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
> ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
> ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
> +;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
> ;;;
> ;;; This file is part of GNU Guix.
> ;;;
> @@ -79,6 +80,7 @@
> #:use-module (gnu packages flex)
> #:use-module (gnu packages gdb)
> #:use-module (gnu packages man)
> + #:use-module (gnu packages ruby)
> #:use-module (gnu packages samba)
> #:use-module (gnu packages screen)
> #:use-module (gnu packages tls)
> @@ -377,6 +379,56 @@ can read the same mailbox from multiple computers. It supports IMAP as REMOTE
> repository and Maildir/IMAP as LOCAL repository.")
> (license gpl2+)))
>
> +(define-public emacs-mew
> + (package
> + (name "emacs-mew")
> + (version "6.7")
> + (source (origin
> + (method url-fetch)
> + (uri (string-append "http://mew.org/Release/mew-"
> + version ".tar.gz"))
> + (patches (search-patches "mew-add-icons-to-load-path.patch"))
> + (sha256
> + (base32
> + "03fzky2kz73vgx4cbps2psbbnrgqgkk5q7jwfldisymkzr9iz03y"))))
> + (inputs
> + `(("emacs" ,emacs-minimal)))
> + (propagated-inputs
> + `(("ruby-sqlite3" ,ruby-sqlite3) ; optional for the database of messages
> + ("ruby" ,ruby))) ; to set GEM_PATH so ruby-sqlite3 is found at runtime
> + (build-system gnu-build-system)
> + (arguments
> + (let ((elisp-dir "/share/emacs/site-lisp/guix.d/mew")
> + (icon-dir "/share/mew"))
> + `(#:modules ((guix build gnu-build-system)
> + (guix build utils)
> + (guix build emacs-utils))
> + #:imported-modules (,@%gnu-build-system-modules
> + (guix build emacs-utils))
> + #:configure-flags
> + (list (string-append "--with-elispdir=" %output ,elisp-dir)
> + (string-append "--with-etcdir=" %output ,icon-dir))
> + #:phases
> + (modify-phases %standard-phases
> + (add-after 'configure 'patch-mew-icon-directory
> + (lambda* (#:key outputs #:allow-other-keys)
> + (emacs-substitute-variables "mew-key.el"
> + ("mew-icon-directory"
> + (string-append (assoc-ref outputs "out") ,icon-dir)))
> + #t))
> + (add-after 'install 'generate-autoloads
> + (lambda* (#:key outputs #:allow-other-keys)
> + (emacs-generate-autoloads
> + "mew" (string-append (assoc-ref outputs "out") ,elisp-dir))
> + #t)))
> + #:tests? #f)))
> + (home-page "http://www.mew.org")
> + (synopsis "Emacs e-mail client")
> + (description "Mew (Messaging in the Emacs World) is a user interface
> +for text messages, multimedia messages (MIME), news articles and
> +security functionality including PGP, S/MIME, SSH, and SSL.")
> + (license bsd-3)))
> +
> (define-public mu
> (package
> (name "mu")
> diff --git a/gnu/packages/patches/mew-add-icons-to-load-path.patch b/gnu/packages/patches/mew-add-icons-to-load-path.patch
> new file mode 100644
> index 0000000..ba722ff
> --- /dev/null
> +++ b/gnu/packages/patches/mew-add-icons-to-load-path.patch
> @@ -0,0 +1,14 @@
> +Make sure the tool-bar icons are found on the load-path.
> +
> +diff --git a/mew-key.el b/mew-key.el
> +index 4b753f6..6a27090 100644
> +--- a/mew-key.el
> ++++ b/mew-key.el
> +@@ -627,6 +627,7 @@
> + (throw 'loop (expand-file-name "etc" path)))))))
> +
> + (defvar mew-icon-directory (mew-which-mew-etc))
> ++(add-to-list 'load-path mew-icon-directory)
This is not what I suggested: at first it should be 'image-load-path'
(not 'load-path'). Second, I think adding “'mew-icon-directory” symbol
(with a quote) is better than its value, since it allows users to change
'mew-icon-directory' value or to remove it from 'image-load-path' if
they want it for some reason, so my variant is:
(add-to-list 'image-load-path 'mew-icon-directory)
> +
> + (defvar mew-icon-separate nil)
> + (defvar mew-icon-blank nil)
--
Alex
next prev parent reply other threads:[~2017-02-03 9:39 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-24 17:01 [PATCH] gnu: Add emacs-mew Thomas Danckaert
2017-01-24 20:08 ` Thomas Danckaert
2017-01-25 9:29 ` Alex Kost
2017-02-01 7:18 ` Thomas Danckaert
2017-02-01 9:34 ` Alex Kost
2017-02-01 10:56 ` Thomas Danckaert
2017-02-02 8:56 ` Alex Kost
2017-02-02 18:41 ` Thomas Danckaert
2017-02-03 9:39 ` Alex Kost [this message]
2017-02-03 12:22 ` Thomas Danckaert
2017-02-03 19:54 ` Alex Kost
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
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=871svfk406.fsf@gmail.com \
--to=alezost@gmail.com \
--cc=guix-devel@gnu.org \
--cc=post@thomasdanckaert.be \
/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.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).