[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#31018] [PATCHv2] Improvements for our Emacs build system and fixes.
From: |
Arun Isaac |
Subject: |
[bug#31018] [PATCHv2] Improvements for our Emacs build system and fixes. |
Date: |
Fri, 20 Apr 2018 23:16:15 +0530 |
I've pushed all patches except those concerning strict byte compilation,
emacs-scel, emacs-org-contrib, emacs-howm and emacs-calfw.
Some comments follow.
> Done, although match-let appears to be undocumented :/.
Yes, match-let is currently undocumented. But, I have a pending patch to
guile regarding this. So, hopefully, this will be fixed soon.
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=30144
> In the past I played with attempting to define a
> search-path-specification for our Emacs package, which would
> generalize even more the way our Emacs packages are discovered in
> Guix. That ended up looking like the following:
>
> --8<---------------cut here---------------start------------->8---
> + (native-search-paths
> + (list (search-path-specification
> + (variable "EMACSLOADPATH")
> + (files '("share/emacs/site-lisp"))
> + (file-pattern ".*")
> + (append-separator? #t))))))
> --8<---------------cut here---------------end--------------->8---
>
> Where the new "append-separator?" argument was added by myself (this is
> a world rebuilding change and also changes the manifest file). I didn't
> pursue that for now given that it still suffers from 1. explained above.
>
> The nice properties of this however was that it was now possible to have
> the Emacs dependencies found in `guix environment' as well as in the
> build system (anywhere), by using the native mechanism that Guix comes
> with. If you have interest in going that way I could revive those two
> old patches.
For now, I've pushed with the set-emacs-load-path function you
provided. But, you could pursue this world rebuilding search-paths
approach as a separate bug report.
>>> Subject: [PATCH 15/27] gnu: Add emacs-scel.
>>>
>>> +(define-public emacs-scel
>>> + (let ((version "20170629")
>>> + (revision "1")
>>> + (commit "aeea3ad4be9306d14c3a734a4ff54fee10ac135b"))
>>> + (package
>>> + (name "emacs-scel")
>>> + (version (git-version version revision commit))
>>> + (source (origin
>>> + (method git-fetch)
>>> + (uri (git-reference
>>> + (url "https://github.com/supercollider/scel.git")
>>> + (commit commit)))
>>> + (file-name (string-append name "-" version "-checkout"))
>>> + (sha256
>>> + (base32
>>> +
>>> "0jvmzs1lsjyndqshhii2y4mnr3wghai26i3p75453zrpxpg0zvvw"))))
>>> + (build-system emacs-build-system)
>>
>> This package seems to use a cmake-build-system. Did you try that?
>
> I didn't, on purpose. I wanted the Elisp files to be processed the same
> as most of our other Emacs packages (with the patch-el-files phase
> patching binaries, for example) that we would miss otherwise).
I get your point. But, I think we can use phases from both the
emacs-build-system and the cmake-build-system, like I have done in the
attached patch. This keeps us more in line with the upstream repo,
rather than us reinventing too much. WDYT?
>From dd4d51654c04a44ed77692b0207763255c733c00 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <address@hidden>
Date: Sun, 18 Mar 2018 16:37:30 -0400
Subject: [PATCH 2/2] gnu: Add emacs-scel.
* gnu/packages/emacs.scm (emacs-scel): New variable.
Signed-off-by: Arun Isaac <address@hidden>
---
gnu/packages/emacs.scm | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 9f6965848..38ffcc472 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -65,6 +65,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages audio)
#:use-module (gnu packages bash)
+ #:use-module (gnu packages cmake)
#:use-module (gnu packages code)
#:use-module (gnu packages databases)
#:use-module (gnu packages guile)
@@ -2713,6 +2714,57 @@ implementation in Emacs. To use it just load this file
and bind that function
to a key in your preferred mode.")
(license license:public-domain))))
+(define-public emacs-scel
+ (let ((version "20170629")
+ (revision "1")
+ (commit "aeea3ad4be9306d14c3a734a4ff54fee10ac135b"))
+ (package
+ (name "emacs-scel")
+ (version (git-version version revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/supercollider/scel.git")
+ (commit commit)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "0jvmzs1lsjyndqshhii2y4mnr3wghai26i3p75453zrpxpg0zvvw"))))
+ (build-system emacs-build-system)
+ (arguments
+ `(#:modules ((guix build emacs-build-system)
+ ((guix build cmake-build-system) #:prefix cmake:)
+ (guix build utils))
+ #:imported-modules (,@%emacs-build-system-modules
+ (guix build cmake-build-system))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "el/CMakeLists.txt"
+ (("share/emacs/site-lisp/SuperCollider")
+ (string-append
+ "share/emacs/site-lisp/guix.d/scel-" ,version)))
+ ((assoc-ref cmake:%standard-phases 'configure)
+ #:outputs outputs
+ #:configure-flags '("-DSC_EL_BYTECOMPILE=OFF"))))
+ (add-after 'set-emacs-load-path 'add-el-dir-to-emacs-load-path
+ (lambda _
+ (setenv "EMACSLOADPATH"
+ (string-append (getcwd) "/el:" (getenv
"EMACSLOADPATH")))
+ #t))
+ (replace 'install (assoc-ref cmake:%standard-phases 'install)))))
+ (inputs
+ `(("supercollider" ,supercollider)))
+ (native-inputs
+ `(("cmake" ,cmake)))
+ (home-page "https://github.com/supercollider/scel")
+ (synopsis "SuperCollider Emacs interface")
+ (description "@code{emacs-scel} is an Emacs interface to SuperCollider.
+SuperCollider is a platform for audio synthesis and algorithmic composition.")
+ (license license:gpl2+))))
+
(define-public emacs-mit-scheme-doc
(package
(name "emacs-mit-scheme-doc")
--
2.15.1
>>> Subject: [PATCH 26/27] gnu: Add emacs-howm.
>>>
>> This package seems to use the gnu-build-system. Did you try that?
>
> No, for the same reasons explained above for the emacs-scel package.
Likewise. In this case, if we don't use the gnu-build-system, we'd miss
installing some of the files. Please look at my attached patch and see
if that is acceptable.
Also, all of howm's source files declare gpl1+ to be the license. But,
their COPYING file is of gpl2. Could you bring this contradiction to the
attention of upstream?
>From afc86b1916a27e3c82863bf69f89aad3a89ab3d7 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <address@hidden>
Date: Sat, 31 Mar 2018 00:22:24 -0400
Subject: [PATCH 1/2] gnu: Add emacs-howm.
* gnu/packages/emacs.scm (emacs-howm): New variable.
Signed-off-by: Arun Isaac <address@hidden>
---
gnu/packages/emacs.scm | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index b2fd069d3..9f6965848 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -1185,6 +1185,42 @@ or XEmacs.")
a set of simplified face specifications and a user-supplied color palette")
(license license:gpl3+)))
+(define-public emacs-howm
+ (package
+ (name "emacs-howm")
+ (version "1.4.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://howm.sourceforge.jp/a/howm-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0ddm91l6z58j7x59fa966j6q1rg4cinyza4r8ibg80hprn5h31qk"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("emacs" ,emacs-minimal)))
+ (arguments
+ `(#:configure-flags
+ (list (string-append "--with-howmdir=" %output
+ "/share/emacs/site-lisp/guix.d/howm-" ,version))
+ #:modules ((guix build gnu-build-system)
+ ((guix build emacs-build-system) #:prefix emacs:)
+ (guix build utils))
+ #:imported-modules (,@%gnu-build-system-modules
+ (guix build emacs-build-system)
+ (guix build emacs-utils))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'rename-lispdir 'make-autoloads
+ (assoc-ref emacs:%standard-phases 'make-autoloads)))))
+ (home-page "http://howm.osdn.jp/")
+ (synopsis "Note-taking tool for Emacs")
+ (description "Howm is a note-taking tool for Emacs. Like
address@hidden, it facilitates using hyperlinks and doing full-text
+searches. Unlike address@hidden, it can be combined with any format.")
+ (license license:gpl1+)))
+
(define-public emacs-calfw
(package
(name "emacs-calfw")
--
2.15.1
> Subject: [PATCH 22/30] gnu: emacs-org-contrib: Fix byte compilation.
>
> * gnu/packages/emacs.scm (emacs-org-contrib)[native-inputs]: Add emacs-scel.
> ---
> gnu/packages/emacs.scm | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
> index 7936e6bec..fc0ae5ffb 100644
> --- a/gnu/packages/emacs.scm
> +++ b/gnu/packages/emacs.scm
> @@ -4640,6 +4640,8 @@ reproducible research.")
> out "/share/emacs/site-lisp/guix.d/org-contrib-"
> ,version)
> (for-each delete-file duplicates))
> #t))))))
> + (native-inputs
> + `(("emacs-scel" ,emacs-scel))) ;for byte compilation
Should emacs-scel only be a native input, or should it be a propagated input?
> A big thank you for reviewing this lengthy set of patches :)
Thank you for your patience! :-)