Mathieu Lirzin (2016-02-29 03:28 +0300) wrote:

[...]
> I have left the emacs interface untouched.

Hm, I wonder why?  You already had the required changes in your initial
patch.  Anyway, I'm attaching the patch with these changes.  The only
difference from your original patch is replacing 'package-full-name'
with 'make-package-specification' in "guix-main.scm".

Sorry if it was discussed but why 'package-full-name' from (guix
packages) wasn't changed?

Also I have a question regarding hydra.  Will hydra jobs still have
such names as "git-2.6.3" or will they also be changed to "git@2.6.3"?

If the former, then some additional changes should be done (the patch
for this is also attached).

>From 2dbfe087905cc08715bba0f4d4dd0093fd93372b Mon Sep 17 00:00:00 2001
From: Alex Kost <alez...@gmail.com>
Date: Thu, 3 Mar 2016 12:53:03 +0300
Subject: [PATCH 1/2] emacs: Use '@' to separate package names and version
 numbers.

This is a followup to commit 1b846da8c372bee78851439fd9e72b2499115e5a.

* emacs/guix-base.el (guix-package-name-specification): Use "@" instead
of "-".
* emacs/guix-main.scm (name+version->full-name): Likewise.
(package-inputs-names): Use 'make-package-specification' instead of
'package-full-name'.
(full-name->name+version): Update the docstring.
* emacs/guix-ui-package.el (guix-packages-by-name): Likewise.
---
 emacs/guix-base.el       | 2 +-
 emacs/guix-main.scm      | 7 ++++---
 emacs/guix-ui-package.el | 2 +-
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/emacs/guix-base.el b/emacs/guix-base.el
index 1248ecb..75d19cb 100644
--- a/emacs/guix-base.el
+++ b/emacs/guix-base.el
@@ -44,7 +44,7 @@
 
 (defun guix-package-name-specification (name version &optional output)
   "Return Guix package specification by its NAME, VERSION and OUTPUT."
-  (concat name "-" version
+  (concat name "@" version
           (when output (concat ":" output))))
 
 
diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm
index 11b9c77..34da6ac 100644
--- a/emacs/guix-main.scm
+++ b/emacs/guix-main.scm
@@ -86,13 +86,13 @@
 (define (full-name->name+version spec)
   "Given package specification SPEC with or without output,
 return two values: name and version.  For example, for SPEC
-\"foo-0.9.1b:lib\", return \"foo\" and \"0.9.1b\"."
+\"foo@0.9.1b:lib\", return \"foo\" and \"0.9.1b\"."
   (let-values (((name version output)
                 (package-specification->name+version+output spec)))
     (values name version)))
 
 (define (name+version->full-name name version)
-  (string-append name "-" version))
+  (string-append name "@" version))
 
 (define* (make-package-specification name #:optional version output)
   (let ((full-name (if version
@@ -263,7 +263,8 @@ Example:
   "Return a list of full names of the packages from package INPUTS."
   (filter-map (match-lambda
                ((_ (? package? package))
-                (package-full-name package))
+                (make-package-specification (package-name package)
+                                            (package-version package)))
                ((_ (? package? package) output)
                 (make-package-specification (package-name package)
                                             (package-version package)
diff --git a/emacs/guix-ui-package.el b/emacs/guix-ui-package.el
index d6d2633..56aa64f 100644
--- a/emacs/guix-ui-package.el
+++ b/emacs/guix-ui-package.el
@@ -945,7 +945,7 @@ See `guix-find-location' for the meaning of DIRECTORY."
 (defun guix-packages-by-name (name &optional profile)
   "Display Guix packages with NAME.
 NAME is a string with name specification.  It may optionally contain
-a version number.  Examples: \"guile\", \"guile-2.0.11\".
+a version number.  Examples: \"guile\", \"guile@2.0.11\".
 
 If PROFILE is nil, use `guix-current-profile'.
 Interactively with prefix, prompt for PROFILE."
-- 
2.6.3

>From c6825b189f7b5d908c5fbe36d933fbe187cbc4bd Mon Sep 17 00:00:00 2001
From: Alex Kost <alez...@gmail.com>
Date: Thu, 3 Mar 2016 12:55:21 +0300
Subject: [PATCH 2/2] emacs: hydra: Use '-' to separate job names and version
 numbers.

* emacs/guix-hydra.el (guix-hydra-job-name-specification): New procedure.
* emacs/guix-ui-package.el (guix-package-info-insert-systems)
(guix-package-list-latest-builds): Use it.
---
 emacs/guix-hydra.el      | 4 ++++
 emacs/guix-ui-package.el | 5 +++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/emacs/guix-hydra.el b/emacs/guix-hydra.el
index 4294839..9f876e7 100644
--- a/emacs/guix-hydra.el
+++ b/emacs/guix-hydra.el
@@ -36,6 +36,10 @@
   (concat ".*\\." (regexp-opt guix-help-system-types) "\\'")
   "Regexp matching a full name of Hydra job (including system).")
 
+(defun guix-hydra-job-name-specification (name version)
+  "Return Hydra's job name specification by NAME and VERSION."
+  (concat name "-" version))
+
 (defun guix-hydra-message (entries search-type &rest _)
   "Display a message after showing Hydra ENTRIES."
   ;; XXX Add more messages maybe.
diff --git a/emacs/guix-ui-package.el b/emacs/guix-ui-package.el
index 56aa64f..9d81c61 100644
--- a/emacs/guix-ui-package.el
+++ b/emacs/guix-ui-package.el
@@ -34,6 +34,7 @@
 (require 'guix-guile)
 (require 'guix-entry)
 (require 'guix-utils)
+(require 'guix-hydra)
 (require 'guix-hydra-build)
 (require 'guix-read)
 (require 'guix-license)
@@ -388,7 +389,7 @@ formatted with this string, an action button is inserted.")
                           :system (button-label btn))))
                (apply #'guix-hydra-build-get-display
                       'latest args)))
-   'job-name (guix-package-name-specification
+   'job-name (guix-hydra-job-name-specification
               (guix-entry-value entry 'name)
               (guix-entry-value entry 'version))))
 
@@ -776,7 +777,7 @@ for all ARGS."
   (interactive
    (let ((entry (guix-list-current-entry)))
      (guix-hydra-build-latest-prompt-args
-      :job (guix-package-name-specification
+      :job (guix-hydra-job-name-specification
             (guix-entry-value entry 'name)
             (guix-entry-value entry 'version)))))
   (apply #'guix-hydra-latest-builds number args))
-- 
2.6.3

Reply via email to