unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Alex Kost <alezost@gmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: guix-devel@gnu.org
Subject: Re: [PATCH] Emacs interface for Guix
Date: Fri, 15 Aug 2014 09:51:21 +0400	[thread overview]
Message-ID: <878umqe1wm.fsf@gmail.com> (raw)
In-Reply-To: <87ha1gds3w.fsf@gmail.com> (Alex Kost's message of "Thu, 14 Aug 2014 00:58:27 +0400")

[-- Attachment #1: Type: text/plain, Size: 1405 bytes --]

Alex Kost (2014-08-14 00:58 +0400) wrote:

> Ludovic Courtès (2014-08-13 20:03 +0400) wrote:
>
> [...]
>
>> Could you turn the above thing into a patch with a commit log?  Bonus
>> points for ‘manifest-perform-transaction’ unit tests.  Make sure to add
>> a copyright line for yourself in profiles.scm.
>>
>> And then a second patch to actually use it in (guix scripts package)
>> would be wonderful.  :-)
>
> Ok, I'm attaching these patches.  But there are several issues there:
>
> - I fixed a typo in "tests/profiles.scm" (“profile” -> “profiles”) – Is
>   it ok to do this in that commit or should there be a separate commit?
>
> - I added a copyright line to the test file as well.  Is it ok?
>
> - The main thing: look at ‘manifest-show-transaction’ – unlike
>   ‘show-what-to-remove/install’ it doesn't display an output path of a
>   package item, because a store should be used for that.  So is it
>   acceptable or should something be changed there?
>
>> In the next iteration, ‘show-what-to-remove/install’ should report
>> packages that are going to be upgraded (by checking among ‘install’
>> those are already in the manifest.)
>
> I'll try to do this.

Hello and pardon for replying to my own letter.

If the displaying an ouput path is not an issue, what about the
following variant of ‘manifest-show-transaction’:


[-- Attachment #2: manifest-show-transaction.scm --]
[-- Type: text/plain, Size: 1613 bytes --]

(define* (manifest-show-transaction manifest transaction #:key dry-run?)
  "Display what will/would be installed/removed from MANIFEST by TRANSACTION."
  (define (display-entries entries action-string)
    (match entries
      ((($ <manifest-entry> name version output item _) ..1)
       (let ((len (length name))
             (package-strings
              (map (lambda (name version output item)
                     (if (package? item)
                         (format #f "   ~a-~a\t~a" name version output)
                         (format #f "   ~a-~a\t~a\t~a" name version output item)))
                   name version output item)))
         (format (current-error-port)
                 (N_ "The following package ~:[will~;would~] be ~a:~%~{~a~%~}~%"
                     "The following packages ~:[will~;would~] be ~a:~%~{~a~%~}~%"
                     len)
                 dry-run? action-string package-strings)))
      (_ #f)))

  (let* ((remove  (manifest-matching-entries
                   manifest (manifest-transaction-remove transaction)))
         (install (manifest-transaction-install transaction))
         (upgrade (append-map
                   (lambda (entry)
                     (manifest-matching-entries
                      manifest
                      (list (manifest-pattern
                             (name (manifest-entry-name entry))
                             (output (manifest-entry-output entry))))))
                   install)))
    (display-entries upgrade "upgraded (removed)")
    (display-entries install "installed")
    (display-entries remove "removed")))

[-- Attachment #3: Type: text/plain, Size: 588 bytes --]


I tried to avoid the code duplicating, so it became more compact and
perhaps less readable.  Also I added reporting about the packages to
upgrade: I thought as they are going to be replaced by the packages to
install, it is ok to add “(removed)” there.  So an output should look
like this (assuming "file-5.17" and "guile-2.0.9" are installed and are
being upgraded):

The following packages will be upgraded (removed):
   file-5.17	out	/gnu/store/...
   guile-2.0.9	out	/gnu/store/...

The following packages will be installed:
   file-5.18	out
   guile-2.0.11	out


  reply	other threads:[~2014-08-15  5:51 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-25 17:58 Emacs interface for Guix Alex Kost
2014-07-25 20:36 ` Ludovic Courtès
2014-07-26 17:44   ` Alex Kost
2014-07-28 10:15     ` Alex Kost
2014-08-11 20:54       ` Ludovic Courtès
2014-08-12 10:19         ` [PATCH] " Alex Kost
2014-08-12 14:19           ` Ludovic Courtès
2014-08-12 16:20             ` Alex Kost
2014-08-12 19:50               ` Ludovic Courtès
2014-08-13  6:57                 ` Alex Kost
2014-08-13 16:03                   ` Ludovic Courtès
2014-08-13 20:58                     ` Alex Kost
2014-08-15  5:51                       ` Alex Kost [this message]
2014-08-16  9:27                         ` Ludovic Courtès
2014-08-16 10:52                           ` [PATCH] manifest-transaction Alex Kost
2014-08-20 12:10                           ` [PATCH] profiles: Report about upgrades Alex Kost
2014-08-23 11:58                             ` Ludovic Courtès
2014-08-30 19:56                             ` Ludovic Courtès
2014-08-31  6:04                               ` Alex Kost
2014-08-31 19:57                                 ` Ludovic Courtès
2014-08-31 22:54                                   ` Jason Self
2014-09-01  7:13                                   ` Alex Kost
2014-09-02 19:45                                     ` Ludovic Courtès
     [not found]                                       ` <87egvrke1z.fsf@gmail.com>
2014-09-04 19:37                                         ` Ludovic Courtès
2014-08-16 12:24                       ` [PATCH] Emacs interface for Guix Ludovic Courtès
2014-08-16 13:07                         ` Alex Kost
2014-08-19 21:00                           ` Ludovic Courtès
2014-08-20 10:54                             ` Alex Kost
2014-08-22  8:56                               ` Ludovic Courtès
2014-08-22 12:44                                 ` Alex Kost
2014-08-27  8:34                                   ` Ludovic Courtès
2014-10-04 17:59                                 ` [PATCH] guix package: Export generation procedures Alex Kost
2014-10-04 20:23                                   ` Ludovic Courtès
2014-10-05  8:54                                     ` [PATCH] emacs: Add support for deleting generations Alex Kost
2014-10-05 13:14                                       ` Ludovic Courtès
2014-10-05 18:23                                         ` Alex Kost
2014-10-05 19:20                                           ` Ludovic Courtès
2014-10-05 20:04                                             ` Alex Kost
2014-10-06  7:36                                               ` Ludovic Courtès
2014-10-06 14:14                                     ` [PATCH] guix package: Add '--switch-generation' option Alex Kost
2014-10-06 19:27                                       ` Ludovic Courtès
2014-10-07 10:04                                         ` Alex Kost
2014-10-07 16:00                                           ` Ludovic Courtès
2014-10-07 21:32                                             ` Alex Kost
2014-10-08  9:44                                               ` Ludovic Courtès
2014-10-05 14:44                                   ` [PATCH] guix package: Export generation procedures Andreas Enge
2014-10-05 19:21                                     ` Ludovic Courtès
2014-07-26 20:58 ` Emacs interface for Guix Ludovic Courtès

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=878umqe1wm.fsf@gmail.com \
    --to=alezost@gmail.com \
    --cc=guix-devel@gnu.org \
    --cc=ludo@gnu.org \
    /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).