Subject: Re: bug#27275: [PATCH 1/2] pull: Add a dependency to guile-git.

From: [email-masked] (Ludovic Courtès)
Date: Wed, 07 Jun 2017 14:21:07 +0200

Hi Mathieu!

Mathieu Othacehe <[email-masked]> skribis:

> * build-aux/build-self.scm (guile-git, guile-bytestructures): New
>   variables.
>   (build): Add guile-git and guile-bytestructures to %load-path and
>   %load-compiled-path.
> * gnu/packages/guile.scm (guile2.2-bytestructures, guile2.2-git): New
>   variables.
> * gnu/packages/package-management.scm (guix)[propagated-inputs]: Add
>   guile-git.
>   [wrap-program]: Add guile-git to path.

[...]

> +(define guile-git
> +  ;; TODO: Add guile2.0-git.
> +  (package-for-current-guile "guile-git"
> +                             "guile2.2-git"))
> +
> +(define guile-bytestructures
> +  ;; TODO: Add guile2.0-bytestructures.
> +  (package-for-current-guile "guile-bytestructures"
> +                             "guile2.2-bytestructures"))

You can add the “guile2.0-” names too in the arguments to
‘package-for-current-guile’.  It doesn’t hurt, and if/when we add them,
they’ll automatically be picked up.

You can also remove the TODOs.

>            (set! %load-path
>              (cons* json
> +                   (string-append #$guile-git "/share/guile/site/"
> +                                  #$(effective-version))
> +                   (string-append #$guile-bytestructures "/share/guile/site/"
> +                                  #$(effective-version))
>                     (string-append #$guile-ssh "/share/guile/site/"
>                                    #$(effective-version))
>                     %load-path))
>            (set! %load-compiled-path
>              (cons* json
> +                   (string-append #$guile-git "/lib/guile/"
> +                                  #$(effective-version)-
> +                                  "/site-ccache")

‘guile-git’ can be #f so you have to account for that.

> --- a/gnu/packages/guile.scm
> +++ b/gnu/packages/guile.scm
> @@ -1593,6 +1593,10 @@ an abstraction over raw memory.  It's also more powerful than the C
>  type system, elevating types to first-class status.")
>      (license license:gpl3+)))
>  
> +;; TODO: Add guile2.0-bytestructures.
> +(define-public guile2.2-bytestructures
> +  (deprecated-package "guile2.2-bytestructures" guile-bytestructures))
> +
>  (define-public guile-aspell
>    (package
>      (name "guile-aspell")
> @@ -1803,6 +1807,10 @@ is not available for Guile 2.0.")
>  manipulate repositories of the Git version control system.")
>        (license license:gpl3+))))
>  
> +;; TODO: Add guile2.0-git.
> +(define-public guile2.2-git
> +  (deprecated-package "guile2.2-git" guile-git))

These aliases are unneeded: we’ll just use the names without “2.2” by
default, no problem.

> --- a/gnu/packages/package-management.scm
> +++ b/gnu/packages/package-management.scm
> @@ -185,6 +185,7 @@
>                          (let* ((out    (assoc-ref outputs "out"))
>                                 (guile  (assoc-ref inputs "guile"))
>                                 (json   (assoc-ref inputs "guile-json"))
> +                               (git    (assoc-ref inputs "guile-git"))
>                                 (ssh    (assoc-ref inputs "guile-ssh"))
>                                 (gnutls (assoc-ref inputs "gnutls"))
>                                 (effective
> @@ -195,6 +196,7 @@
>                                 (path   (string-append
>                                          json "/share/guile/site/" effective ":"
>                                          ssh "/share/guile/site/" effective ":"
> +                                        git "/share/guile/site/" effective ":"
>                                          gnutls "/share/guile/site/" effective)))
>  
>                            (wrap-program (string-append out "/bin/guix")
> @@ -250,6 +252,7 @@
>        (propagated-inputs
>         `(("gnutls" ,gnutls/guile-2.2)             ;for 'guix download' & co.
>           ("guile-json" ,guile-json)
> +         ("guile-git" ,guile-git)

I think this breaks the ‘guile2.0-guix’ package.  I hope to remove it
soonish (when the guile-ssh bug is fixed), but for now, we have to live
with it.

So I would suggest simply leaving this file unchanged.  We can always
add the ‘guile-git’ dependency there later on.

WDYT?

With these changes it looks good to me!

Thanks,
Ludo’.