GNU bug report logs - #30884
[PATCH 0/6] gnu: Add emacs-epkg.

Previous Next

Package: guix-patches;

Reported by: Oleg Pykhalov <go.wigust <at> gmail.com>

Date: Tue, 20 Mar 2018 16:31:01 UTC

Severity: normal

Tags: patch

Done: Oleg Pykhalov <go.wigust <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 30884 in the body.
You can then email your comments to 30884 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Tue, 20 Mar 2018 16:31:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Oleg Pykhalov <go.wigust <at> gmail.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Tue, 20 Mar 2018 16:31:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Oleg Pykhalov <go.wigust <at> gmail.com>
To: guix-patches <at> gnu.org
Cc: Oleg Pykhalov <go.wigust <at> gmail.com>
Subject: [PATCH 0/6] gnu: Add emacs-epkg.
Date: Tue, 20 Mar 2018 19:29:56 +0300
Hello Guix,

This patch provides an https://emacsmirror.net/ Emacs package viewer.

Oleg Pykhalov (6):
  gnu: Add emacs-pg.
  gnu: Add emacs-cl-generic.
  gnu: Add emacs-finalize.
  gnu: Add emacs-emacsql.
  gnu: Add emacs-closql.
  gnu: Add emacs-epkg.

 gnu/packages/emacs.scm | 235 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 235 insertions(+)

-- 
2.16.2





Information forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Tue, 20 Mar 2018 16:34:01 GMT) Full text and rfc822 format available.

Message #8 received at 30884 <at> debbugs.gnu.org (full text, mbox):

From: Oleg Pykhalov <go.wigust <at> gmail.com>
To: 30884 <at> debbugs.gnu.org
Cc: Oleg Pykhalov <go.wigust <at> gmail.com>
Subject: [PATCH 1/6] gnu: Add emacs-pg.
Date: Tue, 20 Mar 2018 19:33:05 +0300
* gnu/packages/emacs.scm (emacs-pg): New public variable.
---
 gnu/packages/emacs.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index da366441b..77796b03f 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -7406,3 +7406,31 @@ the same values you get in a terminal.")
      "Deft is an Emacs mode for quickly browsing, filtering, and editing
 directories of plain text notes, inspired by Notational Velocity.")
     (license license:bsd-3)))
+
+(define-public emacs-pg
+  (let ((commit "4f6516ec3946d95dcef49abb6703cc89ecb5183d"))
+    (package
+      (name "emacs-pg")
+      (version (git-version "0.1" "1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/cbbrowne/pg.el.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1zh7v4nnpzvbi8yj1ynlqlawk5bmlxi6s80b5f2y7hkdqb5q26k0"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/cbbrowne/pg.el.git")
+      (synopsis "Emacs Lisp interface for PostgreSQL")
+      (description
+       "This package provides an Emacs Lisp interface for PostgreSQL.
+
+This module lets you access the PostgreSQL object-relational DBMS from Emacs,
+using its socket-level frontend/backend protocol.  The module is capable of
+automatic type coercions from a range of SQL types to the equivalent Emacs
+Lisp type.  This is a low level API, and won't be useful to end users.  Should
+work with GNU Emacs 19.34 and up, and XEmacs 20 and up.  Performance is very
+poor when not byte-compiled.")
+      (license license:gpl3+))))
-- 
2.16.2





Information forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Tue, 20 Mar 2018 16:34:02 GMT) Full text and rfc822 format available.

Message #11 received at 30884 <at> debbugs.gnu.org (full text, mbox):

From: Oleg Pykhalov <go.wigust <at> gmail.com>
To: 30884 <at> debbugs.gnu.org
Cc: Oleg Pykhalov <go.wigust <at> gmail.com>
Subject: [PATCH 2/6] gnu: Add emacs-cl-generic.
Date: Tue, 20 Mar 2018 19:33:06 +0300
* gnu/packages/emacs.scm (emacs-cl-generic): New public variable.
---
 gnu/packages/emacs.scm | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 77796b03f..0553d683d 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -7434,3 +7434,23 @@ Lisp type.  This is a low level API, and won't be useful to end users.  Should
 work with GNU Emacs 19.34 and up, and XEmacs 20 and up.  Performance is very
 poor when not byte-compiled.")
       (license license:gpl3+))))
+
+(define-public emacs-cl-generic
+  (package
+    (name "emacs-cl-generic")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://elpa.gnu.org/packages/cl-generic-"
+                           version ".el"))
+       (sha256
+        (base32
+         "0vb338bhjpsnrf60qgxny4z5rjrnifahnrv9axd4shay89d894zq"))))
+    (build-system emacs-build-system)
+    (home-page "https://elpa.gnu.org/packages/seq.html")
+    (synopsis "Forward cl-generic compatibility for Emacs before version 25")
+    (description "This package provides a subset of the features of the
+@code{cl-generic} package introduced in Emacs-25, for use on previous
+@code{emacsen}.")
+    (license license:gpl3+)))
-- 
2.16.2





Information forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Tue, 20 Mar 2018 16:34:02 GMT) Full text and rfc822 format available.

Message #14 received at 30884 <at> debbugs.gnu.org (full text, mbox):

From: Oleg Pykhalov <go.wigust <at> gmail.com>
To: 30884 <at> debbugs.gnu.org
Cc: Oleg Pykhalov <go.wigust <at> gmail.com>
Subject: [PATCH 3/6] gnu: Add emacs-finalize.
Date: Tue, 20 Mar 2018 19:33:07 +0300
* gnu/packages/emacs.scm (emacs-finalize): New public variable.
---
 gnu/packages/emacs.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 0553d683d..41bb69914 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -7454,3 +7454,27 @@ poor when not byte-compiled.")
 @code{cl-generic} package introduced in Emacs-25, for use on previous
 @code{emacsen}.")
     (license license:gpl3+)))
+
+(define-public emacs-finalize
+  (package
+  (name "emacs-finalize")
+  (version "2.0.0")
+  (source
+    (origin
+      (method url-fetch)
+      (uri (string-append "https://github.com/skeeto/elisp-finalize/archive/"
+                          version ".tar.gz"))
+      (sha256
+        (base32
+         "077fycy3i5f0kjw5z3rhf4kld5lbk2idz690nkwhkz04vppk4q4x"))))
+  (build-system emacs-build-system)
+  (propagated-inputs
+    `(("emacs-cl-generic" ,emacs-cl-generic)))
+  (home-page "https://github.com/skeeto/elisp-finalize")
+  (synopsis "Finalizers for Emacs Lisp")
+  (description
+    "This package will allows to immediately run a callback (a finalizer)
+after its registered lisp object has been garbage collected.  This allows for
+extra resources, such as buffers and processes, to be cleaned up after the
+object has been freed.")
+  (license license:unlicense)))
-- 
2.16.2





Information forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Tue, 20 Mar 2018 16:34:03 GMT) Full text and rfc822 format available.

Message #17 received at 30884 <at> debbugs.gnu.org (full text, mbox):

From: Oleg Pykhalov <go.wigust <at> gmail.com>
To: 30884 <at> debbugs.gnu.org
Cc: Oleg Pykhalov <go.wigust <at> gmail.com>
Subject: [PATCH 4/6] gnu: Add emacs-emacsql.
Date: Tue, 20 Mar 2018 19:33:08 +0300
* gnu/packages/emacs.scm (emacs-emacsql): New public variable.
---
 gnu/packages/emacs.scm | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 94 insertions(+)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 41bb69914..83deb256f 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -64,6 +64,7 @@
   #:use-module (gnu packages audio)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages code)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages gnome)
@@ -7478,3 +7479,96 @@ after its registered lisp object has been garbage collected.  This allows for
 extra resources, such as buffers and processes, to be cleaned up after the
 object has been freed.")
   (license license:unlicense)))
+
+(define-public emacs-emacsql
+  (package
+    (name "emacs-emacsql")
+    (version "2.0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/skeeto/emacsql/archive/"
+                           version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "04hfjdgl1zc7jysgjc7d7d3xqpr7q1q9gsmzffjd91ii3hpqjgx6"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:modules ((ice-9 match)
+                  (srfi srfi-26)
+                  ,@%gnu-build-system-modules
+                  (guix build emacs-utils))
+       #:imported-modules (,@%gnu-build-system-modules
+                           (guix build emacs-utils))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'patch-elisp-shell-shebangs
+           (lambda _
+             (substitute* (find-files "." "\\.el")
+               (("/bin/sh") (which "sh")))
+             #t))
+         (add-after 'patch-elisp-shell-shebangs 'setenv-emacsloadpath
+           (lambda* (#:key inputs #:allow-other-keys)
+             (define (el-dir store-dir)
+               (match (find-files store-dir "\\.el$")
+                 ((f1 f2 ...) (dirname f1))
+                 (_ "")))
+             (define emacs-prefix? (cut string-prefix? "emacs-" <>))
+             (let* ((emacs-load-paths
+                     (map (match-lambda
+                            (((? emacs-prefix? name) . dir)
+                             (string-append (el-dir dir) ":"))
+                            (_ ""))
+                          inputs))
+                    (emacs-load-path-value
+                     (string-concatenate emacs-load-paths)))
+               (format #t "environment variable `EMACSLOADPATH' set to ~a\n"
+                       emacs-load-path-value)
+               (setenv "EMACSLOADPATH" emacs-load-path-value))
+             #t))
+         (add-after 'setenv-emacsloadpath 'setenv-shell
+           (lambda _
+             (setenv "SHELL" "sh")))
+         (add-after 'setenv-shell 'build-emacsql-sqlite
+           (lambda _
+             (invoke "make" "binary" "CC=gcc")))
+         (add-after 'build-emacsql-sqlite 'install-emacsql-sqlite
+           (lambda* (#:key outputs #:allow-other-keys)
+             (install-file "sqlite/emacsql-sqlite"
+                           (string-append (assoc-ref outputs "out")
+                                          "/bin"))
+             #t))
+         (add-after 'install-emacsql-sqlite 'patch-emacsql-sqlite.el
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((file "emacsql-sqlite.el"))
+               (chmod file #o644)
+               (emacs-substitute-sexps file
+                 ("(defvar emacsql-sqlite-user-prompted" 't)
+                 ("(executable-find" (which "gcc"))
+                 ("(defvar emacsql-sqlite-executable"
+                  (string-append (assoc-ref outputs "out")
+                                 "/bin/emacsql-sqlite"))))))
+         (delete 'check) ; No ‘check’ target in ‘./Makefile’.
+         (replace 'install ; No ‘install’ target in ‘./Makefile’.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (install-file "sqlite/emacsql-sqlite"
+                             (string-append out "/bin"))
+               (for-each (cut install-file <>
+                              (string-append out "/share/emacs/site-lisp"))
+                         (find-files "." "\\.elc*$")))
+             #t)))))
+    (inputs
+     `(("emacs-minimal" ,emacs-minimal)
+       ("mysql" ,mysql)
+       ("postgresql" ,postgresql)))
+    (propagated-inputs
+     `(("emacs-finalize" ,emacs-finalize)
+       ("emacs-pg" ,emacs-pg)))
+    (home-page "https://github.com/skeeto/emacsql")
+    (synopsis "Emacs high-level SQL database front-end")
+    (description "EmacSQL provides a high-level Emacs Lisp front-end for
+SQLite (primarily), PostgreSQL, MySQL, and potentially other SQL databases.")
+  (license license:gpl3+)))
-- 
2.16.2





Information forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Tue, 20 Mar 2018 16:34:03 GMT) Full text and rfc822 format available.

Message #20 received at 30884 <at> debbugs.gnu.org (full text, mbox):

From: Oleg Pykhalov <go.wigust <at> gmail.com>
To: 30884 <at> debbugs.gnu.org
Cc: Oleg Pykhalov <go.wigust <at> gmail.com>
Subject: [PATCH 5/6] gnu: Add emacs-closql.
Date: Tue, 20 Mar 2018 19:33:09 +0300
* gnu/packages/emacs.scm (emacs-closql): New public variable.
---
 gnu/packages/emacs.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 83deb256f..0ade89d9f 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -7572,3 +7572,28 @@ object has been freed.")
     (description "EmacSQL provides a high-level Emacs Lisp front-end for
 SQLite (primarily), PostgreSQL, MySQL, and potentially other SQL databases.")
   (license license:gpl3+)))
+
+(define-public emacs-closql
+  (package
+    (name "emacs-closql")
+    (version "0.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/emacscollective/closql/archive/"
+                           "v" version ".tar.gz"))
+       (sha256
+        (base32
+         "0wa6r0kgbb7f19039p5f3di4dvrvxfgpd8bkam94fca7jvzj536c"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-emacsql" ,emacs-emacsql)))
+    (home-page "https://github.com/emacscollective/closql")
+    (synopsis "store EIEIO objects using EmacSQL")
+    (description
+     "This package allows to store uniform EIEIO objects in an EmacSQL
+database.  SQLite is used as backend.  This library imposes some restrictions
+on what kind of objects can be stored; it isn't intended to store arbitrary
+objects.  All objects have to share a common superclass and subclasses cannot
+add any additional instance slots.")
+    (license license:gpl3)))
-- 
2.16.2





Information forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Tue, 20 Mar 2018 16:34:04 GMT) Full text and rfc822 format available.

Message #23 received at 30884 <at> debbugs.gnu.org (full text, mbox):

From: Oleg Pykhalov <go.wigust <at> gmail.com>
To: 30884 <at> debbugs.gnu.org
Cc: Oleg Pykhalov <go.wigust <at> gmail.com>
Subject: [PATCH 6/6] gnu: Add emacs-epkg.
Date: Tue, 20 Mar 2018 19:33:10 +0300
* gnu/packages/emacs.scm (emacs-epkg): New public variable.
---
 gnu/packages/emacs.scm | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 0ade89d9f..bcbbd012b 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -7597,3 +7597,47 @@ on what kind of objects can be stored; it isn't intended to store arbitrary
 objects.  All objects have to share a common superclass and subclasses cannot
 add any additional instance slots.")
     (license license:gpl3)))
+
+(define-public emacs-epkg
+  ;; The release version is to old for the current database scheme.
+  (let ((commit "432312b9583ed7b88ad9644fd1bf2183765a892e"))
+    (package
+      (name "emacs-epkg")
+      (version (git-version "3.0.0" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/emacscollective/epkg.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0d882kahn7a0vri7a9r15lvmfx1zn2hsga6jfcc6jv0hqbswlb2k"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-closql" ,emacs-closql)
+         ("emacs-dash" ,emacs-dash)))
+      (home-page "https://emacsmirror.net")
+      (synopsis "Browse the Emacsmirror package database")
+      (description "This package provides access to a local copy of the
+Emacsmirror package database.  It provides low-level functions for querying
+the database and a @file{package.el} user interface for browsing the database.
+Epkg itself is not a package manager.
+
+Getting a local copy:
+
+@example
+git clone https://github.com/emacsmirror/epkgs.git ~/.emacs.d/epkgs
+cd ~/.emacs.d/epkgs
+git submodule init
+git config --global url.https://github.com/.insteadOf git@@github.com:
+git submodule update
+@end example
+
+Some submodule may be missing.  In this case Git will prompt for a GitHub user
+name and password.  To skip it press a @key{Return} key.
+
+You could get a Epkg package list by invoking @code{epkg-list-packages} in
+Emacs.")
+      (license license:gpl3+))))
-- 
2.16.2





Information forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Tue, 20 Mar 2018 16:44:02 GMT) Full text and rfc822 format available.

Message #26 received at 30884 <at> debbugs.gnu.org (full text, mbox):

From: Oleg Pykhalov <go.wigust <at> gmail.com>
To: 30884 <at> debbugs.gnu.org
Subject: guix lint produces warnings
Date: Tue, 20 Mar 2018 19:43:24 +0300
Apologies,  I forgot to invoke a ‘guix lint’.  I'll fix those warnings:

--8<---------------cut here---------------start------------->8---
gnu/packages/emacs.scm:7413:4: emacs-pg <at> 0.1-1.4f6516e: permanent redirect from https://github.com/cbbrowne/pg.el.git to https://github.com/cbbrowne/pg.el
gnu/packages/emacs.scm:7464:4: emacs-finalize <at> 2.0.0: the source file name should contain the package name
gnu/packages/emacs.scm:7581:5: emacs-closql <at> 0.5.1: the source file name should contain the package name
gnu/packages/emacs.scm:7592:14: emacs-closql <at> 0.5.1: synopsis should start with an upper-case letter or digit
--8<---------------cut here---------------end--------------->8---

Oleg.




Information forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Wed, 04 Apr 2018 12:33:01 GMT) Full text and rfc822 format available.

Message #29 received at 30884 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Oleg Pykhalov <go.wigust <at> gmail.com>
Cc: 30884 <at> debbugs.gnu.org
Subject: Re: [bug#30884] [PATCH 1/6] gnu: Add emacs-pg.
Date: Wed, 04 Apr 2018 14:32:19 +0200
Oleg Pykhalov <go.wigust <at> gmail.com> skribis:

> * gnu/packages/emacs.scm (emacs-pg): New public variable.

LGTM!

> +This module lets you access the PostgreSQL object-relational DBMS from Emacs,
> +using its socket-level frontend/backend protocol.  The module is capable of
> +automatic type coercions from a range of SQL types to the equivalent Emacs
> +Lisp type.  This is a low level API, and won't be useful to end users.  Should
> +work with GNU Emacs 19.34 and up, and XEmacs 20 and up.  Performance is very
> +poor when not byte-compiled.")

I’d remove the last two sentences, which are unhelpful to Guix users.

Thanks,
Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Wed, 04 Apr 2018 12:33:02 GMT) Full text and rfc822 format available.

Message #32 received at 30884 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Oleg Pykhalov <go.wigust <at> gmail.com>
Cc: 30884 <at> debbugs.gnu.org
Subject: Re: [bug#30884] [PATCH 2/6] gnu: Add emacs-cl-generic.
Date: Wed, 04 Apr 2018 14:32:50 +0200
Oleg Pykhalov <go.wigust <at> gmail.com> skribis:

> * gnu/packages/emacs.scm (emacs-cl-generic): New public variable.

[...]

> +    (synopsis "Forward cl-generic compatibility for Emacs before version 25")

@code{cl-generic}

Otherwise LGTM, thanks!




Information forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Wed, 04 Apr 2018 12:34:01 GMT) Full text and rfc822 format available.

Message #35 received at 30884 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Oleg Pykhalov <go.wigust <at> gmail.com>
Cc: 30884 <at> debbugs.gnu.org
Subject: Re: [bug#30884] [PATCH 3/6] gnu: Add emacs-finalize.
Date: Wed, 04 Apr 2018 14:33:07 +0200
Oleg Pykhalov <go.wigust <at> gmail.com> skribis:

> * gnu/packages/emacs.scm (emacs-finalize): New public variable.

LGTM!




Information forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Wed, 04 Apr 2018 12:38:02 GMT) Full text and rfc822 format available.

Message #38 received at 30884 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Oleg Pykhalov <go.wigust <at> gmail.com>
Cc: 30884 <at> debbugs.gnu.org, Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: Re: [bug#30884] [PATCH 4/6] gnu: Add emacs-emacsql.
Date: Wed, 04 Apr 2018 14:37:24 +0200
Oleg Pykhalov <go.wigust <at> gmail.com> skribis:

> * gnu/packages/emacs.scm (emacs-emacsql): New public variable.

[...]

> +         (add-after 'patch-elisp-shell-shebangs 'setenv-emacsloadpath
> +           (lambda* (#:key inputs #:allow-other-keys)
> +             (define (el-dir store-dir)
> +               (match (find-files store-dir "\\.el$")
> +                 ((f1 f2 ...) (dirname f1))
> +                 (_ "")))
> +             (define emacs-prefix? (cut string-prefix? "emacs-" <>))
> +             (let* ((emacs-load-paths
> +                     (map (match-lambda
> +                            (((? emacs-prefix? name) . dir)
> +                             (string-append (el-dir dir) ":"))
> +                            (_ ""))
> +                          inputs))
> +                    (emacs-load-path-value
> +                     (string-concatenate emacs-load-paths)))
> +               (format #t "environment variable `EMACSLOADPATH' set to ~a\n"
> +                       emacs-load-path-value)
> +               (setenv "EMACSLOADPATH" emacs-load-path-value))

Now that there’s a new ‘set-emacs-load-path’, I suspect this phase can
be removed.  Can you confirm, Maxim?

> +         (add-after 'build-emacsql-sqlite 'install-emacsql-sqlite
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (install-file "sqlite/emacsql-sqlite"
> +                           (string-append (assoc-ref outputs "out")
> +                                          "/bin"))
> +             #t))
> +         (add-after 'install-emacsql-sqlite 'patch-emacsql-sqlite.el
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (let ((file "emacsql-sqlite.el"))
> +               (chmod file #o644)
> +               (emacs-substitute-sexps file
> +                 ("(defvar emacsql-sqlite-user-prompted" 't)
> +                 ("(executable-find" (which "gcc"))
> +                 ("(defvar emacsql-sqlite-executable"
> +                  (string-append (assoc-ref outputs "out")
> +                                 "/bin/emacsql-sqlite"))))))

Please add short comments explaining what’s going on in these phases.

> +    (home-page "https://github.com/skeeto/emacsql")
> +    (synopsis "Emacs high-level SQL database front-end")
> +    (description "EmacSQL provides a high-level Emacs Lisp front-end for
> +SQLite (primarily), PostgreSQL, MySQL, and potentially other SQL databases.")

I would add this, taken from their README:

  Any readable Lisp value can be stored as a value in EmacSQL, including
  numbers, strings, symbols, lists, vectors, and closures.  EmacSQL has
  no concept of @code{TEXT} values; it's all just Lisp objects.  The Lisp
  object @code{nil} corresponds 1:1 with @code{NULL} in the database.

Otherwise LGTM, thanks!

Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Wed, 04 Apr 2018 12:39:02 GMT) Full text and rfc822 format available.

Message #41 received at 30884 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Oleg Pykhalov <go.wigust <at> gmail.com>
Cc: 30884 <at> debbugs.gnu.org
Subject: Re: [bug#30884] [PATCH 5/6] gnu: Add emacs-closql.
Date: Wed, 04 Apr 2018 14:38:27 +0200
Oleg Pykhalov <go.wigust <at> gmail.com> skribis:

> * gnu/packages/emacs.scm (emacs-closql): New public variable.

[...]

> +    (license license:gpl3)))

‘gpl3+’

Otherwise LGTM, modulo ‘guix lint’ warnings.




Information forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Wed, 04 Apr 2018 12:40:01 GMT) Full text and rfc822 format available.

Message #44 received at 30884 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Oleg Pykhalov <go.wigust <at> gmail.com>
Cc: 30884 <at> debbugs.gnu.org
Subject: Re: [bug#30884] [PATCH 6/6] gnu: Add emacs-epkg.
Date: Wed, 04 Apr 2018 14:39:19 +0200
Oleg Pykhalov <go.wigust <at> gmail.com> skribis:

> * gnu/packages/emacs.scm (emacs-epkg): New public variable.

LGTM, thanks!

Ludo'.




Information forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Sat, 14 Apr 2018 17:52:02 GMT) Full text and rfc822 format available.

Message #47 received at 30884 <at> debbugs.gnu.org (full text, mbox):

From: Oleg Pykhalov <go.wigust <at> gmail.com>
To: ludo <at> gnu.org (Ludovic Courtès)
Cc: bug#30884 <30884 <at> debbugs.gnu.org>
Subject: Re: Status: [PATCH 0/6] gnu: Add emacs-epkg.
Date: Sat, 14 Apr 2018 20:50:47 +0300
[Message part 1 (text/plain, inline)]
Hello Ludovic,

Thank you for review!

I've applied all your suggestions except ‘set-emacs-load-path’.  First
of all this procedure is not exported.  Another pitfall is ‘Invalid
keyword’ error.

[Message part 2 (text/x-patch, inline)]
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 6258dbaed..d290a61b4 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -7733,7 +7733,8 @@ object has been freed.")
                   ,@%gnu-build-system-modules
                   (guix build emacs-utils))
        #:imported-modules (,@%gnu-build-system-modules
-                           (guix build emacs-utils))
+                           (guix build emacs-utils)
+                           (guix build emacs-build-system))
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
@@ -7744,22 +7745,8 @@ object has been freed.")
              #t))
          (add-after 'patch-elisp-shell-shebangs 'setenv-emacsloadpath
            (lambda* (#:key inputs #:allow-other-keys)
-             (define (el-dir store-dir)
-               (match (find-files store-dir "\\.el$")
-                 ((f1 f2 ...) (dirname f1))
-                 (_ "")))
-             (define emacs-prefix? (cut string-prefix? "emacs-" <>))
-             (let* ((emacs-load-paths
-                     (map (match-lambda
-                            (((? emacs-prefix? name) . dir)
-                             (string-append (el-dir dir) ":"))
-                            (_ ""))
-                          inputs))
-                    (emacs-load-path-value
-                     (string-concatenate emacs-load-paths)))
-               (format #t "environment variable `EMACSLOADPATH' set to ~a\n"
-                       emacs-load-path-value)
-               (setenv "EMACSLOADPATH" emacs-load-path-value))
+             ((@@ (guix build emacs-build-system) set-emacs-load-path)
+               inputs)
              #t))
          (add-after 'setenv-emacsloadpath 'setenv-shell
            (lambda _
[Message part 3 (text/plain, inline)]
--8<---------------cut here---------------start------------->8---
./pre-inst-env env GUIX_PACKAGE_PATH= guix build --no-grafts emacs-emacsql
;;; note: source file /home/natsu/src/guix/gnu/packages/emacs.scm
;;;       newer than compiled /home/natsu/src/guix/gnu/packages/emacs.go
;;; note: source file /home/natsu/src/guix/gnu/packages/emacs.scm
;;;       newer than compiled /home/natsu/.guix-profile/lib/guile/2.2/site-ccache/gnu/packages/emacs.go
;;; note: source file /home/natsu/src/guix/gnu/packages/emacs.scm
;;;       newer than compiled /run/current-system/profile/lib/guile/2.2/site-ccache/gnu/packages/emacs.go
substitute: updating list of substitutes from 'https://berlin.guixsd.org'... 100.0%
substitute: updating list of substitutes from 'https://mirror.hydra.gnu.org'... 100.0%
substitute: updating list of substitutes from 'https://hydra.gnu.org'... 100.0%
The following derivation will be built:
   /gnu/store/zjfh5lf4gaxrliwsihj9i80x9n15smkn-emacs-emacsql-2.0.3.drv
@ build-started /gnu/store/zjfh5lf4gaxrliwsihj9i80x9n15smkn-emacs-emacsql-2.0.3.drv - x86_64-linux /var/log/guix/drvs/zj//fh5lf4gaxrliwsihj9i80x9n15smkn-emacs-emacsql-2.0.3.drv.bz2
starting phase `set-SOURCE-DATE-EPOCH'
phase `set-SOURCE-DATE-EPOCH' succeeded after 0.0 seconds
starting phase `set-paths'
environment variable `PATH' set to `/gnu/store/k9slb2ysqp2n82pl6knb2isapav81dvx-tar-1.29/bin:/gnu/store/4r1g01m0isdfd4ahd8qigfp04276biv3-gzip-1.8/bin:/gnu/store/77l8sxh9py133cy1p9kypshji4q9wv0w-bzip2-1.0.6/bin:/gnu/store/kgaf671a9a76k0ql1pwwjxjbj80x22mj-xz-5.2.3/bin:/gnu/store/p7vdir85501lq7qsgrx5z2yrr0py26h1-file-5.32/bin:/gnu/store/rp61rxvajx4w1k0ci2nqi10y8xgds53b-diffutils-3.6/bin:/gnu/store/5gq1gn722zpz1crsnfmxij21zdxqj37x-patch-2.7.5/bin:/gnu/store/z24b9d81w7bfcyk3j73xixygwx2ymlhv-sed-4.4/bin:/gnu/store/0qxdnkyh0cqwflxhqa4v4vsjwff08j9p-findutils-4.6.0/bin:/gnu/store/1ymg8yf9imgw8ac4n3i611nsv1mb4643-gawk-4.1.4/bin:/gnu/store/5jhfm3r3h7cjl8qqc86rx70nw7bzizpf-grep-3.1/bin:/gnu/store/6i33ik7haav0hd5a797l3llkq04ghx6g-coreutils-8.28/bin:/gnu/store/vj24ah9a4kqsyhim2s4n6gvc4hsxhnli-make-4.2.1/bin:/gnu/store/icz3hd36aqpjz5slyp4hhr8wsfbgiml1-bash-minimal-4.4.12/bin:/gnu/store/37h89zknsp0p6nsszc1n4lyxc9s393ak-ld-wrapper-0/bin:/gnu/store/j7gsbkgq72qjas7plzvak40ymf0ybamq-binutils-2.28.1/bin:/gnu/store/cfdn69spjc44x4sd0acrwhxq6yay3rbc-gcc-5.5.0/bin:/gnu/store/n6acaivs0jwiwpidjr551dhdni5kgpcr-glibc-2.26.105-g0890d5379c/bin:/gnu/store/n6acaivs0jwiwpidjr551dhdni5kgpcr-glibc-2.26.105-g0890d5379c/sbin:/gnu/store/10sdmjxi2qv1z4v3pzsvhj7ycv62bi0n-emacs-minimal-25.3/bin:/gnu/store/vhdmylfq7vdfrpj0xqyf9kp833v6akbs-mysql-5.7.21/bin:/gnu/store/z0pyjzkv6c8mr3i9z6hmvnskf7471lbf-postgresql-10.3/bin'
environment variable `BASH_LOADABLES_PATH' unset
environment variable `C_INCLUDE_PATH' set to `/gnu/store/77l8sxh9py133cy1p9kypshji4q9wv0w-bzip2-1.0.6/include:/gnu/store/kgaf671a9a76k0ql1pwwjxjbj80x22mj-xz-5.2.3/include:/gnu/store/p7vdir85501lq7qsgrx5z2yrr0py26h1-file-5.32/include:/gnu/store/1ymg8yf9imgw8ac4n3i611nsv1mb4643-gawk-4.1.4/include:/gnu/store/vj24ah9a4kqsyhim2s4n6gvc4hsxhnli-make-4.2.1/include:/gnu/store/j7gsbkgq72qjas7plzvak40ymf0ybamq-binutils-2.28.1/include:/gnu/store/cfdn69spjc44x4sd0acrwhxq6yay3rbc-gcc-5.5.0/include:/gnu/store/n6acaivs0jwiwpidjr551dhdni5kgpcr-glibc-2.26.105-g0890d5379c/include:/gnu/store/vhdmylfq7vdfrpj0xqyf9kp833v6akbs-mysql-5.7.21/include:/gnu/store/z0pyjzkv6c8mr3i9z6hmvnskf7471lbf-postgresql-10.3/include:/gnu/store/yqahwgll57j88bq275m4xvifg9x3alsb-linux-libre-headers-4.9.59/include'
environment variable `CPLUS_INCLUDE_PATH' set to `/gnu/store/77l8sxh9py133cy1p9kypshji4q9wv0w-bzip2-1.0.6/include:/gnu/store/kgaf671a9a76k0ql1pwwjxjbj80x22mj-xz-5.2.3/include:/gnu/store/p7vdir85501lq7qsgrx5z2yrr0py26h1-file-5.32/include:/gnu/store/1ymg8yf9imgw8ac4n3i611nsv1mb4643-gawk-4.1.4/include:/gnu/store/vj24ah9a4kqsyhim2s4n6gvc4hsxhnli-make-4.2.1/include:/gnu/store/j7gsbkgq72qjas7plzvak40ymf0ybamq-binutils-2.28.1/include:/gnu/store/cfdn69spjc44x4sd0acrwhxq6yay3rbc-gcc-5.5.0/include:/gnu/store/n6acaivs0jwiwpidjr551dhdni5kgpcr-glibc-2.26.105-g0890d5379c/include:/gnu/store/vhdmylfq7vdfrpj0xqyf9kp833v6akbs-mysql-5.7.21/include:/gnu/store/z0pyjzkv6c8mr3i9z6hmvnskf7471lbf-postgresql-10.3/include:/gnu/store/yqahwgll57j88bq275m4xvifg9x3alsb-linux-libre-headers-4.9.59/include'
environment variable `LIBRARY_PATH' set to `/gnu/store/77l8sxh9py133cy1p9kypshji4q9wv0w-bzip2-1.0.6/lib:/gnu/store/kgaf671a9a76k0ql1pwwjxjbj80x22mj-xz-5.2.3/lib:/gnu/store/p7vdir85501lq7qsgrx5z2yrr0py26h1-file-5.32/lib:/gnu/store/1ymg8yf9imgw8ac4n3i611nsv1mb4643-gawk-4.1.4/lib:/gnu/store/j7gsbkgq72qjas7plzvak40ymf0ybamq-binutils-2.28.1/lib:/gnu/store/n6acaivs0jwiwpidjr551dhdni5kgpcr-glibc-2.26.105-g0890d5379c/lib:/gnu/store/hrhxx37z97j7pniyr437illc0b5qq9pa-glibc-2.26.105-g0890d5379c-static/lib:/gnu/store/q7jz2as54ycdvjg7zggxxjkxjrp6d5mr-glibc-utf8-locales-2.26.105-g0890d5379c/lib:/gnu/store/vhdmylfq7vdfrpj0xqyf9kp833v6akbs-mysql-5.7.21/lib:/gnu/store/z0pyjzkv6c8mr3i9z6hmvnskf7471lbf-postgresql-10.3/lib'
environment variable `GUIX_LOCPATH' set to `/gnu/store/q7jz2as54ycdvjg7zggxxjkxjrp6d5mr-glibc-utf8-locales-2.26.105-g0890d5379c/lib/locale'
environment variable `INFOPATH' set to `/gnu/store/k9slb2ysqp2n82pl6knb2isapav81dvx-tar-1.29/share/info:/gnu/store/4r1g01m0isdfd4ahd8qigfp04276biv3-gzip-1.8/share/info:/gnu/store/rp61rxvajx4w1k0ci2nqi10y8xgds53b-diffutils-3.6/share/info:/gnu/store/z24b9d81w7bfcyk3j73xixygwx2ymlhv-sed-4.4/share/info:/gnu/store/0qxdnkyh0cqwflxhqa4v4vsjwff08j9p-findutils-4.6.0/share/info:/gnu/store/1ymg8yf9imgw8ac4n3i611nsv1mb4643-gawk-4.1.4/share/info:/gnu/store/5jhfm3r3h7cjl8qqc86rx70nw7bzizpf-grep-3.1/share/info:/gnu/store/6i33ik7haav0hd5a797l3llkq04ghx6g-coreutils-8.28/share/info:/gnu/store/vj24ah9a4kqsyhim2s4n6gvc4hsxhnli-make-4.2.1/share/info:/gnu/store/icz3hd36aqpjz5slyp4hhr8wsfbgiml1-bash-minimal-4.4.12/share/info:/gnu/store/j7gsbkgq72qjas7plzvak40ymf0ybamq-binutils-2.28.1/share/info:/gnu/store/cfdn69spjc44x4sd0acrwhxq6yay3rbc-gcc-5.5.0/share/info:/gnu/store/n6acaivs0jwiwpidjr551dhdni5kgpcr-glibc-2.26.105-g0890d5379c/share/info:/gnu/store/10sdmjxi2qv1z4v3pzsvhj7ycv62bi0n-emacs-minimal-25.3/share/info'
phase `set-paths' succeeded after 0.0 seconds
starting phase `install-locale'
using 'en_US.utf8' locale for category "LC_ALL"
phase `install-locale' succeeded after 0.0 seconds
starting phase `unpack'
emacsql-2.0.3/
emacsql-2.0.3/.dir-locals.el
emacsql-2.0.3/.gitignore
emacsql-2.0.3/Makefile
emacsql-2.0.3/README.md
emacsql-2.0.3/UNLICENSE
emacsql-2.0.3/emacsql-compiler.el
emacsql-2.0.3/emacsql-mysql.el
emacsql-2.0.3/emacsql-pg.el
emacsql-2.0.3/emacsql-psql.el
emacsql-2.0.3/emacsql-sqlite.el
emacsql-2.0.3/emacsql-system.el
emacsql-2.0.3/emacsql.el
emacsql-2.0.3/sqlite/
emacsql-2.0.3/sqlite/.gitignore
emacsql-2.0.3/sqlite/Makefile
emacsql-2.0.3/sqlite/emacsql.c
emacsql-2.0.3/sqlite/sqlite3.c
emacsql-2.0.3/sqlite/sqlite3.h
emacsql-2.0.3/tests/
emacsql-2.0.3/tests/.nosearch
emacsql-2.0.3/tests/emacsql-compiler-tests.el
emacsql-2.0.3/tests/emacsql-external-tests.el
emacsql-2.0.3/tests/emacsql-tests.el
phase `unpack' succeeded after 0.0 seconds
starting phase `patch-usr-bin-file'
phase `patch-usr-bin-file' succeeded after 0.0 seconds
starting phase `patch-source-shebangs'
phase `patch-source-shebangs' succeeded after 0.0 seconds
starting phase `patch-generated-file-shebangs'
phase `patch-generated-file-shebangs' succeeded after 0.0 seconds
starting phase `patch-elisp-shell-shebangs'
phase `patch-elisp-shell-shebangs' succeeded after 0.0 seconds
starting phase `setenv-emacsloadpath'
Backtrace:
           5 (primitive-load "/gnu/store/qr6bdp56ccgnj02znamwngjvlpp…")
In ice-9/eval.scm:
   191:35  4 (_ #f)
In srfi/srfi-1.scm:
   863:16  3 (every1 #<procedure 92c860 at /gnu/store/dniwjwywb9lkd…> …)
In /gnu/store/dniwjwywb9lkdxwa6sn3hcpm4bbm6r32-module-import/guix/build/gnu-build-system.scm:
   711:27  2 (_ _)
In ice-9/eval.scm:
    619:8  1 (_ #(#(#<directory (guile-user) 7ce140>) (("s…" . #) …)))
In /gnu/store/dniwjwywb9lkdxwa6sn3hcpm4bbm6r32-module-import/guix/build/emacs-build-system.scm:
     77:0  0 (set-emacs-load-path #:inputs _)

/gnu/store/dniwjwywb9lkdxwa6sn3hcpm4bbm6r32-module-import/guix/build/emacs-build-system.scm:77:0: In procedure set-emacs-load-path:
Invalid keyword: (("source" . "/gnu/store/304az1rlv6nbmfq661yfv4r89y6z4dpb-emacs-emacsql-2.0.3.tar.gz") ("tar" . "/gnu/store/k9slb2ysqp2n82pl6knb2isapav81dvx-tar-1.29") ("gzip" . "/gnu/store/4r1g01m0isdfd4ahd8qigfp04276biv3-gzip-1.8") ("bzip2" . "/gnu/store/77l8sxh9py133cy1p9kypshji4q9wv0w-bzip2-1.0.6") ("xz" . "/gnu/store/kgaf671a9a76k0ql1pwwjxjbj80x22mj-xz-5.2.3") ("file" . "/gnu/store/p7vdir85501lq7qsgrx5z2yrr0py26h1-file-5.32") ("diffutils" . "/gnu/store/rp61rxvajx4w1k0ci2nqi10y8xgds53b-diffutils-3.6") ("patch" . "/gnu/store/5gq1gn722zpz1crsnfmxij21zdxqj37x-patch-2.7.5") ("sed" . "/gnu/store/z24b9d81w7bfcyk3j73xixygwx2ymlhv-sed-4.4") ("findutils" . "/gnu/store/0qxdnkyh0cqwflxhqa4v4vsjwff08j9p-findutils-4.6.0") ("gawk" . "/gnu/store/1ymg8yf9imgw8ac4n3i611nsv1mb4643-gawk-4.1.4") ("grep" . "/gnu/store/5jhfm3r3h7cjl8qqc86rx70nw7bzizpf-grep-3.1") ("coreutils" . "/gnu/store/6i33ik7haav0hd5a797l3llkq04ghx6g-coreutils-8.28") ("make" . "/gnu/store/vj24ah9a4kqsyhim2s4n6gvc4hsxhnli-make-4.2.1") ("bash" . "/gnu/store/icz3hd36aqpjz5slyp4hhr8wsfbgiml1-bash-minimal-4.4.12") ("ld-wrapper" . "/gnu/store/37h89zknsp0p6nsszc1n4lyxc9s393ak-ld-wrapper-0") ("binutils" . "/gnu/store/j7gsbkgq72qjas7plzvak40ymf0ybamq-binutils-2.28.1") ("gcc" . "/gnu/store/cfdn69spjc44x4sd0acrwhxq6yay3rbc-gcc-5.5.0") ("libc" . "/gnu/store/n6acaivs0jwiwpidjr551dhdni5kgpcr-glibc-2.26.105-g0890d5379c") ("libc:static" . "/gnu/store/hrhxx37z97j7pniyr437illc0b5qq9pa-glibc-2.26.105-g0890d5379c-static") ("locales" . "/gnu/store/q7jz2as54ycdvjg7zggxxjkxjrp6d5mr-glibc-utf8-locales-2.26.105-g0890d5379c") ("emacs-minimal" . "/gnu/store/10sdmjxi2qv1z4v3pzsvhj7ycv62bi0n-emacs-minimal-25.3") ("mysql" . "/gnu/store/vhdmylfq7vdfrpj0xqyf9kp833v6akbs-mysql-5.7.21") ("postgresql" . "/gnu/store/z0pyjzkv6c8mr3i9z6hmvnskf7471lbf-postgresql-10.3") ("emacs-finalize" . "/gnu/store/dz0glc49z7nlx37fcjdf3w9gd736cbib-emacs-finalize-2.0.0") ("emacs-pg" . "/gnu/store/jhqq4v9i6d9zl248z10nmdvk7l8m3h6g-emacs-pg-0.1-1.4f6516e") ("kernel-headers" . "/gnu/store/yqahwgll57j88bq275m4xvifg9x3alsb-linux-libre-headers-4.9.59") ("emacs-cl-generic" . "/gnu/store/d5lnalnrxa2ia2hjzbs2bqw4srlr9777-emacs-cl-generic-0.3"))
builder for `/gnu/store/zjfh5lf4gaxrliwsihj9i80x9n15smkn-emacs-emacsql-2.0.3.drv' failed with exit code 1
@ build-failed /gnu/store/zjfh5lf4gaxrliwsihj9i80x9n15smkn-emacs-emacsql-2.0.3.drv - 1 builder for `/gnu/store/zjfh5lf4gaxrliwsihj9i80x9n15smkn-emacs-emacsql-2.0.3.drv' failed with exit code 1
guix build: error: build failed: build of `/gnu/store/zjfh5lf4gaxrliwsihj9i80x9n15smkn-emacs-emacsql-2.0.3.drv' failed
--8<---------------cut here---------------end--------------->8---

I've fixed all linter warnings reported by this command:
--8<---------------cut here---------------start------------->8---
./pre-inst-env env GUIX_PACKAGE_PATH= guix lint $(PAGER= git log --oneline | head -n 6 | cut -d ' ' -f 4 | sed 's/\.//' | tr '\n' ' ')
--8<---------------cut here---------------end--------------->8---

Also I've tested an Emacs ‘epkg-list-packages’ procedure inside:
--8<---------------cut here---------------start------------->8---
./pre-inst-env env GUIX_PACKAGE_PATH= guix environment --no-grafts --ad-hoc emacs-epkg emacs
--8<---------------cut here---------------end--------------->8---


I could push a set of patches without ‘set-emacs-load-path’.  WDYT?

Oleg.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Mon, 16 Apr 2018 14:09:02 GMT) Full text and rfc822 format available.

Message #50 received at 30884 <at> debbugs.gnu.org (full text, mbox):

From: Oleg Pykhalov <go.wigust <at> gmail.com>
To: ludo <at> gnu.org (Ludovic Courtès)
Cc: 30884 <at> debbugs.gnu.org, 30884-done <at> debbugs.gnu.org
Subject: Re: [bug#30884] Status: [PATCH 0/6] gnu: Add emacs-epkg.
Date: Mon, 16 Apr 2018 17:08:07 +0300
[Message part 1 (text/plain, inline)]
Oleg Pykhalov <go.wigust <at> gmail.com> writes:

> Hello Ludovic,
>
> Thank you for review!
>
> I've applied all your suggestions except ‘set-emacs-load-path’.

Replacing ‘gnu-build-system’ with ‘emacs-build-system’ does the job.

Pushed as:

452454e30 gnu: Add emacs-epkg.
93aba854d gnu: Add emacs-closql.
4d089b5e5 gnu: Add emacs-emacsql.
6c92b4406 gnu: Add emacs-finalize.
5b6d67476 gnu: Add emacs-cl-generic.
086bfb37a gnu: Add emacs-pg.

[…]

I'll close the bug report.

Oleg.
[signature.asc (application/pgp-signature, inline)]

Reply sent to Oleg Pykhalov <go.wigust <at> gmail.com>:
You have taken responsibility. (Mon, 16 Apr 2018 14:09:02 GMT) Full text and rfc822 format available.

Notification sent to Oleg Pykhalov <go.wigust <at> gmail.com>:
bug acknowledged by developer. (Mon, 16 Apr 2018 14:09:02 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Thu, 19 Apr 2018 01:10:01 GMT) Full text and rfc822 format available.

Message #58 received at 30884 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Oleg Pykhalov <go.wigust <at> gmail.com>
Cc: bug#30884 <30884 <at> debbugs.gnu.org>,
 Ludovic Courtès <ludo <at> gnu.org>
Subject: Re: [bug#30884] Status: [PATCH 0/6] gnu: Add emacs-epkg.
Date: Wed, 18 Apr 2018 21:09:06 -0400
Hi Oleg,

Oleg Pykhalov <go.wigust <at> gmail.com> writes:

> Hello Ludovic,
>
> Thank you for review!
>
> I've applied all your suggestions except ‘set-emacs-load-path’.  First
> of all this procedure is not exported.

Phases are typically not exported individually, but as an alist of all
the phases of the build system, as `%standard-phases'.

> Another pitfall is ‘Invalid
> keyword’ error.
>
> diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
> index 6258dbaed..d290a61b4 100644
> --- a/gnu/packages/emacs.scm
> +++ b/gnu/packages/emacs.scm
> @@ -7733,7 +7733,8 @@ object has been freed.")
>                    ,@%gnu-build-system-modules
>                    (guix build emacs-utils))
>         #:imported-modules (,@%gnu-build-system-modules
> -                           (guix build emacs-utils))
> +                           (guix build emacs-utils)
> +                           (guix build emacs-build-system))
>         #:phases
>         (modify-phases %standard-phases
>           (delete 'configure)
> @@ -7744,22 +7745,8 @@ object has been freed.")
>               #t))
>           (add-after 'patch-elisp-shell-shebangs 'setenv-emacsloadpath
>             (lambda* (#:key inputs #:allow-other-keys)
> -             (define (el-dir store-dir)
> -               (match (find-files store-dir "\\.el$")
> -                 ((f1 f2 ...) (dirname f1))
> -                 (_ "")))
> -             (define emacs-prefix? (cut string-prefix? "emacs-" <>))
> -             (let* ((emacs-load-paths
> -                     (map (match-lambda
> -                            (((? emacs-prefix? name) . dir)
> -                             (string-append (el-dir dir) ":"))
> -                            (_ ""))
> -                          inputs))
> -                    (emacs-load-path-value
> -                     (string-concatenate emacs-load-paths)))
> -               (format #t "environment variable `EMACSLOADPATH' set to ~a\n"
> -                       emacs-load-path-value)
> -               (setenv "EMACSLOADPATH" emacs-load-path-value))
> +             ((@@ (guix build emacs-build-system) set-emacs-load-path)
> +               inputs)

As `set-emacs-load-path' is a phase itself, it expects to be called as
such, with keyworded arguments. It would be simpler to just insert the
phase as in:

--8<---------------cut here---------------start------------->8---
;; Add this to the define-module top level definition:
;; (define-module (gnu packages emacs)
;; ...
;; #:use-module ((guix build emacs-build-system) #:prefix emacs:)
;; ...

(add-after 'patch-elisp-shell-shebangs
           (assoc-ref emacs:%standard-phases 'set-emacs-load-path))
--8<---------------cut here---------------start------------->8---

HTH,

Maxim




Information forwarded to guix-patches <at> gnu.org:
bug#30884; Package guix-patches. (Thu, 19 Apr 2018 02:09:01 GMT) Full text and rfc822 format available.

Message #61 received at 30884 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Oleg Pykhalov <go.wigust <at> gmail.com>
Cc: bug#30884 <30884 <at> debbugs.gnu.org>,
 Ludovic Courtès <ludo <at> gnu.org>
Subject: Re: [bug#30884] Status: [PATCH 0/6] gnu: Add emacs-epkg.
Date: Wed, 18 Apr 2018 22:07:56 -0400
Hello again,

Maxim Cournoyer <maxim.cournoyer <at> gmail.com> writes:

> Hi Oleg,
>
> Oleg Pykhalov <go.wigust <at> gmail.com> writes:
>
>> Hello Ludovic,
>>
>> Thank you for review!
>>
>> I've applied all your suggestions except ‘set-emacs-load-path’.  First
>> of all this procedure is not exported.
>
> Phases are typically not exported individually, but as an alist of all
> the phases of the build system, as `%standard-phases'.

[...]

> As `set-emacs-load-path' is a phase itself, it expects to be called as
> such, with keyworded arguments. It would be simpler to just insert the
> phase as in:

> ;; Add this to the define-module top level definition:
> ;; (define-module (gnu packages emacs)
> ;; ...
> ;; #:use-module ((guix build emacs-build-system) #:prefix emacs:)
> ;; ...

Actually, you don't want to import this at the top-level of the
emacs.scm module but rather specify the import using the #:modules
argument passed to the build system. Here's a complete example (not yet
merged in master, currently under review):

--8<---------------cut here---------------start------------->8---
(define-public emacs-pdf-tools
  (package
    (name "emacs-pdf-tools")
    (version "0.80")
    (source (origin
              (method url-fetch)
              (uri (string-append
                    "https://github.com/politza/pdf-tools/archive/v"
                    version ".tar.gz"))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "06imydn3a92vr57azpn1zhqc14kxyyslmyi9ldsyphan9b724gb6"))))
    (build-system gnu-build-system)
    (arguments
     `(#:tests? #f ; there are no tests
       #:modules ((guix build gnu-build-system)
                  ((guix build emacs-build-system) #:prefix emacs:)
                  (guix build utils)
                  (guix build emacs-utils))
       #:imported-modules (,@%gnu-build-system-modules
                           (guix build emacs-build-system)
                           (guix build emacs-utils))
       #:phases
       (modify-phases %standard-phases
         ;; Build server side using 'gnu-build-system'.
         (add-after 'unpack 'enter-server-dir
           (lambda _ (chdir "server") #t))
         (add-after 'enter-server-dir 'autogen
           (lambda _
             (zero? (system* "bash" "autogen.sh"))))

         ;; Build emacs side using 'emacs-build-system'.
         (add-after 'compress-documentation 'enter-lisp-dir
           (lambda _ (chdir "../lisp") #t))
         (add-after 'enter-lisp-dir 'emacs-patch-variables
           (lambda* (#:key outputs #:allow-other-keys)
             ;; Set path to epdfinfo program.
             (emacs-substitute-variables "pdf-info.el"
               ("pdf-info-epdfinfo-program"
                (string-append (assoc-ref outputs "out")
                               "/bin/epdfinfo")))
             ;; Set 'pdf-tools-handle-upgrades' to nil to avoid "auto
             ;; upgrading" that pdf-tools tries to perform.
             (emacs-substitute-variables "pdf-tools.el"
               ("pdf-tools-handle-upgrades" '()))))
         (add-after 'emacs-patch-variables 'set-emacs-load-path
           (assoc-ref emacs:%standard-phases 'set-emacs-load-path))
         (add-after 'set-emacs-load-path 'emacs-install
           (assoc-ref emacs:%standard-phases 'install))
         (add-after 'emacs-install 'emacs-build
           (assoc-ref emacs:%standard-phases 'build))
         (add-after 'emacs-install 'emacs-make-autoloads
           (assoc-ref emacs:%standard-phases 'make-autoloads)))))
    (native-inputs `(("autoconf" ,autoconf)
                     ("automake" ,automake)
                     ("pkg-config" ,pkg-config)
                     ("emacs" ,emacs-minimal)))
    (inputs `(("poppler" ,poppler)
              ("cairo" ,cairo)
              ("glib" ,glib)
              ("libpng" ,libpng)
              ("zlib" ,zlib)))
    (propagated-inputs `(("tablist" ,emacs-tablist)))
    (synopsis "Emacs support library for PDF files")
    (description
     "PDF Tools is, among other things, a replacement of DocView for PDF
files.  The key difference is that pages are not pre-rendered by
e.g. ghostscript and stored in the file-system, but rather created on-demand
and stored in memory.")
    (home-page "https://github.com/politza/pdf-tools")
    (license license:gpl3+)))
--8<---------------cut here---------------end--------------->8---

HTH,

Maxim




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 17 May 2018 11:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 7 years and 36 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.