all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* guix edit
@ 2015-06-16 20:26 Ludovic Courtès
  2015-06-16 20:47 ` Thompson, David
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Ludovic Courtès @ 2015-06-16 20:26 UTC (permalink / raw)
  To: guix-devel

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

While looking at another package manager for ideas to steal, I found
this one to be a good candidate:

  guix edit gcc-4.8

will open $EDITOR (aka. “emacsclient”) on the definition of that
package.  This is pretty handy for developers (even when otherwise using
Geiser, I think.)

For “regular users,” it’s less useful because most of the time it will
open an immutable file.  However, I envision a --clone option that would
create a file with a module declaration and a template like:

  (define my-gcc
    (package (inherit gcc)
      ;; Complete here...
      )

(This part is left as an exercise to the reader.)

WDYT?

If there are no objections, I’ll commit the attached version with
appropriate documentation.

Thanks,
Ludo’.


[-- Attachment #2: guix edit --]
[-- Type: text/x-scheme, Size: 2721 bytes --]

;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (guix scripts edit)
  #:use-module (guix ui)
  #:use-module (guix utils)
  #:use-module (guix packages)
  #:use-module (gnu packages)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-37)
  #:export (%editor
            guix-edit))

(define %options
  (list (option '(#\h "help") #f #f
                (lambda args
                  (show-help)
                  (exit 0)))
        (option '(#\V "version") #f #f
                (lambda args
                  (show-version-and-exit "guix edit")))))

(define (show-help)
  (display (_ "Usage: guix edit PACKAGE...
Start $EDITOR to edit the definitions of PACKAGE...\n"))
  (newline)
  (display (_ "
  -h, --help             display this help and exit"))
  (display (_ "
  -V, --version          display version information and exit"))
  (newline)
  (show-bug-report-information))

(define %editor
  (make-parameter (or (getenv "EDITOR") "emacsclient")))

\f
(define (guix-edit . args)
  (with-error-handling
    (let* ((specs    (parse-command-line args %options '(())
                                         #:argument-handler cons))
           (packages (map specification->package specs)))
      (for-each (lambda (package)
                  (unless (package-location package)
                    (leave (_ "source location of package '~a' is unknown~%")
                           (package-full-name package))))
                packages)
      (apply execlp (%editor) (%editor)
             (append-map (lambda (package)
                           (let ((loc (package-location package)))
                             (list (string-append "+"
                                                  (number->string
                                                   (location-line loc)))
                                   (location-file loc))))
                         packages)))))

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: guix edit
  2015-06-16 20:26 guix edit Ludovic Courtès
@ 2015-06-16 20:47 ` Thompson, David
  2015-06-16 21:28 ` Amirouche Boubekki
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Thompson, David @ 2015-06-16 20:47 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

On Tue, Jun 16, 2015 at 4:26 PM, Ludovic Courtès <ludo@gnu.org> wrote:
> While looking at another package manager for ideas to steal, I found
> this one to be a good candidate:
>
>   guix edit gcc-4.8
>
> will open $EDITOR (aka. “emacsclient”) on the definition of that
> package.  This is pretty handy for developers (even when otherwise using
> Geiser, I think.)

Looks good to me!

- Dave

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: guix edit
  2015-06-16 20:26 guix edit Ludovic Courtès
  2015-06-16 20:47 ` Thompson, David
@ 2015-06-16 21:28 ` Amirouche Boubekki
  2015-06-17 19:15   ` Ludovic Courtès
  2015-06-16 23:29 ` Claes Wallin (韋嘉誠)
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 10+ messages in thread
From: Amirouche Boubekki @ 2015-06-16 21:28 UTC (permalink / raw)
  To: ludo; +Cc: guix-devel, guix-devel-bounces+amirouche=hypermove.net

On 2015-06-16 22:26, ludo@gnu.org wrote:
> While looking at another package manager for ideas to steal, I found
> this one to be a good candidate:
> 
>   guix edit gcc-4.8
> 
> will open $EDITOR (aka. “emacsclient”) on the definition of that
> package.  This is pretty handy for developers (even when otherwise 
> using
> Geiser, I think.)
> 
> For “regular users,” it’s less useful because most of the time it will
> open an immutable file.

It's nice, even in read-only mode, to explore how guix is made.

> However, I envision a --clone option that would
> create a file with a module declaration and a template like:
> 
>   (define my-gcc
>     (package (inherit gcc)
>       ;; Complete here...
>       )
> 
> (This part is left as an exercise to the reader.)
> 
> WDYT?

A usecase, I have in mind from experience, is being in vm/container and 
having to edit the recipe for that specific vm *but* that recipe is in 
the main normal repository. Like for instance, gcc for a specific 
target. `guix edit gcc:4.5' should open or clone the correct recipe.


> 
> Thanks,
> Ludo’.

-- 
Amirouche ~ amz3 ~ http://www.hyperdev.fr

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: guix edit
  2015-06-16 20:26 guix edit Ludovic Courtès
  2015-06-16 20:47 ` Thompson, David
  2015-06-16 21:28 ` Amirouche Boubekki
@ 2015-06-16 23:29 ` Claes Wallin (韋嘉誠)
  2015-06-17 19:16   ` Ludovic Courtès
  2015-06-17  0:55 ` Eric Bavier
  2015-06-18  7:09 ` Ludovic Courtès
  4 siblings, 1 reply; 10+ messages in thread
From: Claes Wallin (韋嘉誠) @ 2015-06-16 23:29 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

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

On Jun 16, 2015 10:27 PM, "Ludovic Courtès" <ludo@gnu.org> wrote:
>
> While looking at another package manager for ideas to steal, I found
> this one to be a good candidate:
>
>   guix edit gcc-4.8

Looks familiar. OSX Homebrew? Anyway, it's an awesome idea and deserves
being stolen.

> For “regular users,” it’s less useful because most of the time it will
> open an immutable file.  However, I envision a --clone option that would
> create a file with a module declaration and a template like:
>
>   (define my-gcc
>     (package (inherit gcc)
>       ;; Complete here...
>       )
>
> (This part is left as an exercise to the reader.)

Coupled with some user-specific default path for guix definitions?

[-- Attachment #2: Type: text/html, Size: 973 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: guix edit
  2015-06-16 20:26 guix edit Ludovic Courtès
                   ` (2 preceding siblings ...)
  2015-06-16 23:29 ` Claes Wallin (韋嘉誠)
@ 2015-06-17  0:55 ` Eric Bavier
  2015-06-17 19:20   ` Ludovic Courtès
  2015-06-18  7:09 ` Ludovic Courtès
  4 siblings, 1 reply; 10+ messages in thread
From: Eric Bavier @ 2015-06-17  0:55 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

On Tue, 16 Jun 2015 22:26:49 +0200
ludo@gnu.org (Ludovic Courtès) wrote:

> While looking at another package manager for ideas to steal, I found
> this one to be a good candidate:
> 
>   guix edit gcc-4.8
> 
> will open $EDITOR (aka. “emacsclient”) on the definition of that
> package.  This is pretty handy for developers (even when otherwise
> using Geiser, I think.)

I like it.  I was looking for this command just the other day.

> For “regular users,” it’s less useful because most of the time it will
> open an immutable file.  However, I envision a --clone option that
> would create a file with a module declaration and a template like:
> 
>   (define my-gcc
>     (package (inherit gcc)
>       ;; Complete here...
>       )
> 
> (This part is left as an exercise to the reader.)

;)

For immediate use, would we expect the user to save the file to a
directory in $GUIX_PACKAGE_PATH?  Perhaps we could initially open the
file in ~/.config/guix somewhere.

Somewhat related, I'm wondering if others might think it useful for the
recutils output from 'guix package --search' and 'guix package --show'
to print the full name of the file the package is in?

`~Eric

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: guix edit
  2015-06-16 21:28 ` Amirouche Boubekki
@ 2015-06-17 19:15   ` Ludovic Courtès
  2015-06-18 10:55     ` Amirouche Boubekki
  0 siblings, 1 reply; 10+ messages in thread
From: Ludovic Courtès @ 2015-06-17 19:15 UTC (permalink / raw)
  To: Amirouche Boubekki; +Cc: guix-devel, guix-devel-bounces+amirouche=hypermove.net

Amirouche Boubekki <amirouche@hypermove.net> skribis:

> A usecase, I have in mind from experience, is being in vm/container
> and having to edit the recipe for that specific vm *but* that recipe
> is in the main normal repository. Like for instance, gcc for a
> specific target. `guix edit gcc:4.5' should open or clone the correct
> recipe.

Yes, ‘guix edit gcc-4.7’ edits the recipe for GCC 4.7.4.

Ludo’.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: guix edit
  2015-06-16 23:29 ` Claes Wallin (韋嘉誠)
@ 2015-06-17 19:16   ` Ludovic Courtès
  0 siblings, 0 replies; 10+ messages in thread
From: Ludovic Courtès @ 2015-06-17 19:16 UTC (permalink / raw)
  To: Claes Wallin (韋嘉誠); +Cc: guix-devel

"Claes Wallin (韋嘉誠)" <clacke+gmail@lysator.liu.se> skribis:

> On Jun 16, 2015 10:27 PM, "Ludovic Courtès" <ludo@gnu.org> wrote:
>>
>> While looking at another package manager for ideas to steal, I found
>> this one to be a good candidate:
>>
>>   guix edit gcc-4.8
>
> Looks familiar. OSX Homebrew? Anyway, it's an awesome idea and deserves
> being stolen.

Ah you found it!  ;-)

Ludo’.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: guix edit
  2015-06-17  0:55 ` Eric Bavier
@ 2015-06-17 19:20   ` Ludovic Courtès
  0 siblings, 0 replies; 10+ messages in thread
From: Ludovic Courtès @ 2015-06-17 19:20 UTC (permalink / raw)
  To: Eric Bavier; +Cc: guix-devel

Eric Bavier <ericbavier@openmailbox.org> skribis:

> For immediate use, would we expect the user to save the file to a
> directory in $GUIX_PACKAGE_PATH?  Perhaps we could initially open the
> file in ~/.config/guix somewhere.

We could do that, but should we copy the whole file that contains the
recipe?  If so should we change the module name?  Or should we copy just
the recipe, but then how do we find out what the right import list is?

All this is tricky because we have limited introspection capabilities,
and a little object-to-source mapping info.

> Somewhat related, I'm wondering if others might think it useful for the
> recutils output from 'guix package --search' and 'guix package --show'
> to print the full name of the file the package is in?

It may indeed be more useful than just the truncated file name.

Ludo’.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: guix edit
  2015-06-16 20:26 guix edit Ludovic Courtès
                   ` (3 preceding siblings ...)
  2015-06-17  0:55 ` Eric Bavier
@ 2015-06-18  7:09 ` Ludovic Courtès
  4 siblings, 0 replies; 10+ messages in thread
From: Ludovic Courtès @ 2015-06-18  7:09 UTC (permalink / raw)
  To: guix-devel

Pushed in 39bee8a!

Ludo’.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: guix edit
  2015-06-17 19:15   ` Ludovic Courtès
@ 2015-06-18 10:55     ` Amirouche Boubekki
  0 siblings, 0 replies; 10+ messages in thread
From: Amirouche Boubekki @ 2015-06-18 10:55 UTC (permalink / raw)
  To: ludo; +Cc: guix-devel, guix-devel-bounces+amirouche=hypermove.net

On 2015-06-17 21:15, ludo@gnu.org wrote:
> Amirouche Boubekki <amirouche@hypermove.net> skribis:
> 
>> A usecase, I have in mind from experience, is being in vm/container
>> and having to edit the recipe for that specific vm *but* that recipe
>> is in the main normal repository. Like for instance, gcc for a
>> specific target. `guix edit gcc:4.5' should open or clone the correct
>> recipe.
> 
> Yes, ‘guix edit gcc-4.7’ edits the recipe for GCC 4.7.4.

I'm not sure this is real usecase for guix or maybe it's not required at 
all and was specific to the way we were working in my company. I think 
it's not supported right now in guix, but in Gentoo it does. You can 
have serveral repositories and some repositories specific to one target. 
GCC 4.7 can be overriden in the target specific repository. The reason 
this is helpful, is that when we put a software version in stable - 
ready to be built, we are sure it has no impact on other targets.

Right now it can of work with the env variable that guix package use to 
look for packages.



Regards

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-06-18 10:55 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-06-16 20:26 guix edit Ludovic Courtès
2015-06-16 20:47 ` Thompson, David
2015-06-16 21:28 ` Amirouche Boubekki
2015-06-17 19:15   ` Ludovic Courtès
2015-06-18 10:55     ` Amirouche Boubekki
2015-06-16 23:29 ` Claes Wallin (韋嘉誠)
2015-06-17 19:16   ` Ludovic Courtès
2015-06-17  0:55 ` Eric Bavier
2015-06-17 19:20   ` Ludovic Courtès
2015-06-18  7:09 ` Ludovic Courtès

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.