Tobias Geerinckx-Rice <m...@tobias.gr> writes:
The source origin is built as a completely separate derivation, before Guix even starts to build your package, and long before your package's phases are called.

Snippets are (vaguely) like phases for your source derivation.

Thank you for making me aware of snippets! Using snippets I was finally able to get the build working, and submitted the patch as bug #39093. The submitted patch is also attached here for reference.

--
Joseph LaFreniere
>From 06223ab2ed07b3fbfb2dfd95aa0a5fce1c44baf9 Mon Sep 17 00:00:00 2001
From: Joseph LaFreniere <jos...@lafreniere.xyz>
Date: Mon, 6 Jan 2020 20:56:35 -0600
Subject: [PATCH] gnu: Add emacs-vterm.

* gnu/packages/emacs-xyz.scm (emacs-vterm): New variable.
---
 gnu/packages/emacs-xyz.scm | 67 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 66 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 0559f0c7cc..9a0f08e16a 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -46,7 +46,7 @@
 ;;; Copyright © 2019 Brian Leung <bkleun...@gmail.com>
 ;;; Copyright © 2019 mikadoZero <mikadoz...@yandex.com>
 ;;; Copyright © 2019 Gabriel Hondet <gabrielhon...@gmail.com>
-;;; Copyright © 2019 LaFreniere, Joseph <jos...@lafreniere.xyz>
+;;; Copyright © 2019, 2020 Joseph LaFreniere <jos...@lafreniere.xyz>
 ;;; Copyright © 2019 Amar Singh <n...@disroot.org>
 ;;; Copyright © 2019 Baptiste Strazzulla <bstrazz...@hotmail.fr>
 ;;; Copyright © 2019 Giacomo Leidi <goodoldp...@autistici.org>
@@ -105,6 +105,7 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages telephony)
+  #:use-module (gnu packages terminals)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages tcl)
@@ -17401,6 +17402,70 @@ next, volume) and display and control the current playlist as well as your
 stored playlists.")
     (license license:gpl3+)))
 
+(define-public emacs-vterm
+  (let ((version "0")
+        (revision "1")
+        (commit "7d7381fa8104b55b70148cf147523d9ab7f01fcd"))
+    (package
+      (name "emacs-vterm")
+      (version (git-version version revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/akermu/emacs-libvterm.git";)
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "04a2jlhmr20ipgzpnba3yryw3ly7qdxjgaw10dwn9wxy1yqmapz1"))
+                (modules '((guix build utils)))
+                (snippet
+                 '(begin
+                    (delete-file "vterm-module-make.el")
+                    (substitute* "vterm.el"
+                      (((string-append "\\(or \\(require 'vterm-module nil t\\)\n"
+                                       "^.*\\(and \\(require 'vterm-module-make\\)\n"
+                                       "^.*\\(require 'vterm-module\\)\\)\\)"))
+                       "(module-load \"vterm-module.so)"))
+                    (make-file-writable "vterm.el")
+                    #t))))
+      (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-before 'add-source-to-load-path 'configure
+                      (lambda* (#:key outputs #:allow-other-keys)
+                        ((assoc-ref cmake:%standard-phases 'configure)
+                         #:outputs outputs
+                         #:out-of-source? #f
+                         #:configure-flags '("-DUSE_SYSTEM_LIBVTERM=ON"))))
+                    (add-before 'install 'make
+                      (lambda* (#:key (make-flags '()) #:allow-other-keys)
+                        (apply invoke "make" "all" make-flags)
+                        #t))
+                    (add-before 'make-autoloads 'move-el
+                      (lambda* (#:key outputs #:allow-other-keys)
+                        (let* ((out (assoc-ref outputs "out"))
+                               (site-lisp (string-append out "/share/emacs/site-lisp")))
+                          (mkdir-p site-lisp)
+                          (copy-file "vterm.el" (string-append site-lisp "/vterm.el"))
+                          (copy-file "vterm-module.so" (string-append site-lisp "/vterm-module.so"))
+                          #t))))
+         #:tests? #f))
+      (native-inputs
+       `(("cmake" ,cmake-minimal)
+         ("libtool" ,libtool)
+         ("libvterm" ,libvterm)))
+      (home-page "https://github.com/akermu/emacs-libvterm";)
+      (synopsis "Emacs libvterm integration")
+      (description "This package implements a bridge to @code{libvterm} to
+display a terminal in an Emacs buffer.")
+      (license license:gpl3+))))
+
 (define-public emacs-simple-mpc
   ;; There have been no releases.
   (let ((commit "bee8520e81292b4c7353e45b193f9a13b482f5b2")
-- 
2.24.1

Reply via email to