* bug#27275: [PATCH 0/2] Add (guix git) module. @ 2017-06-07 12:04 Mathieu Othacehe 2017-06-07 12:05 ` bug#27275: [PATCH 1/2] pull: Add a dependency to guile-git Mathieu Othacehe 0 siblings, 1 reply; 10+ messages in thread From: Mathieu Othacehe @ 2017-06-07 12:04 UTC (permalink / raw) To: 27275 Hi, This serie un-reverts the (guix git) module. A new patch is included to add guile-git as a dependency of guix pull. Thanks, Mathieu Mathieu Othacehe (2): pull: Add a dependency to guile-git. guix: git: Add new module. Makefile.am | 7 ++ build-aux/build-self.scm | 19 ++++++ configure.ac | 4 ++ gnu/packages/guile.scm | 8 +++ gnu/packages/package-management.scm | 3 + guix/git.scm | 123 ++++++++++++++++++++++++++++++++++++ 6 files changed, 164 insertions(+) create mode 100644 guix/git.scm -- 2.13.0 ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#27275: [PATCH 1/2] pull: Add a dependency to guile-git. 2017-06-07 12:04 bug#27275: [PATCH 0/2] Add (guix git) module Mathieu Othacehe @ 2017-06-07 12:05 ` Mathieu Othacehe 2017-06-07 12:05 ` bug#27275: [PATCH 2/2] guix: git: Add new module Mathieu Othacehe 2017-06-07 12:21 ` bug#27275: [PATCH 1/2] pull: Add a dependency to guile-git Ludovic Courtès 0 siblings, 2 replies; 10+ messages in thread From: Mathieu Othacehe @ 2017-06-07 12:05 UTC (permalink / raw) To: 27275 * 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. --- build-aux/build-self.scm | 19 +++++++++++++++++++ gnu/packages/guile.scm | 8 ++++++++ gnu/packages/package-management.scm | 3 +++ 3 files changed, 30 insertions(+) diff --git a/build-aux/build-self.scm b/build-aux/build-self.scm index a1335fea1..b1c8afcb2 100644 --- a/build-aux/build-self.scm +++ b/build-aux/build-self.scm @@ -97,6 +97,15 @@ Guile major version (2.0 or 2.2), or #f if none of the packages matches." "guile2.2-ssh" "guile2.0-ssh")) +(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")) \f ;; The actual build procedure. @@ -152,11 +161,21 @@ files." #$(effective-version)))) (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") + (string-append #$guile-bytestructures "/lib/guile/" + #$(effective-version) + "/site-ccache") (string-append #$guile-ssh "/lib/guile/" #$(effective-version) "/site-ccache") diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 5b85a61c1..b12ba1cad 100644 --- 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)) + (define-public guile-syntax-highlight (let ((commit "a047675e66861b647426372aa2ba7820f749616d") (revision "0")) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 12e1f9e6c..f47e78459 100644 --- 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) ("guile-ssh" ,guile-ssh))) (home-page "https://www.gnu.org/software/guix/") -- 2.13.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* bug#27275: [PATCH 2/2] guix: git: Add new module. 2017-06-07 12:05 ` bug#27275: [PATCH 1/2] pull: Add a dependency to guile-git Mathieu Othacehe @ 2017-06-07 12:05 ` Mathieu Othacehe 2017-06-07 12:21 ` Ludovic Courtès 2017-06-07 12:21 ` bug#27275: [PATCH 1/2] pull: Add a dependency to guile-git Ludovic Courtès 1 sibling, 1 reply; 10+ messages in thread From: Mathieu Othacehe @ 2017-06-07 12:05 UTC (permalink / raw) To: 27275 * guix/git.scm: New file. * configure.ac: Check for (guile git). * Makefile.am: Build guix/git.scm if (guile git) is available. --- Makefile.am | 7 ++++ configure.ac | 4 ++ guix/git.scm | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 134 insertions(+) create mode 100644 guix/git.scm diff --git a/Makefile.am b/Makefile.am index 3925f3e2d..1be09d763 100644 --- a/Makefile.am +++ b/Makefile.am @@ -201,6 +201,13 @@ MODULES += \ endif HAVE_GUILE_SSH +if HAVE_GUILE_GIT + +MODULES += \ + guix/git.scm + +endif HAVE_GUILE_GIT + if BUILD_DAEMON_OFFLOAD MODULES += \ diff --git a/configure.ac b/configure.ac index dc3d8f377..c937e948d 100644 --- a/configure.ac +++ b/configure.ac @@ -104,6 +104,10 @@ dnl Guile-JSON is used in various places. GUILE_MODULE_AVAILABLE([have_guile_json], [(json)]) AM_CONDITIONAL([HAVE_GUILE_JSON], [test "x$have_guile_json" = "xyes"]) +dnl Check for Guile-Git. +GUILE_MODULE_AVAILABLE([have_guile_git], [(git)]) +AM_CONDITIONAL([HAVE_GUILE_GIT], [test "x$have_guile_git" = "xyes"]) + dnl Make sure we have a full-fledged Guile. GUIX_ASSERT_GUILE_FEATURES([regex posix socket net-db threads]) diff --git a/guix/git.scm b/guix/git.scm new file mode 100644 index 000000000..17a6784ae --- /dev/null +++ b/guix/git.scm @@ -0,0 +1,123 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> +;;; +;;; 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 git) + #:use-module (git) + #:use-module (git object) + #:use-module (guix base32) + #:use-module (guix hash) + #:use-module (guix build utils) + #:use-module (guix store) + #:use-module (guix utils) + #:use-module (rnrs bytevectors) + #:use-module (ice-9 match) + #:use-module (srfi srfi-1) + #:export (%repository-cache-directory + latest-repository-commit)) + +(define %repository-cache-directory + (make-parameter "/var/cache/guix/checkouts")) + +(define-syntax-rule (with-libgit2 thunk ...) + (dynamic-wind + (lambda () + (libgit2-init!)) + (lambda () + thunk ...) + (lambda () + (libgit2-shutdown)))) + +(define* (url-cache-directory url + #:optional (cache-directory + (%repository-cache-directory))) + "Return the directory associated to URL in %repository-cache-directory." + (string-append + cache-directory "/" + (bytevector->base32-string (sha256 (string->utf8 url))))) + +(define (clone* url directory) + "Clone git repository at URL into DIRECTORY. Upon failure, +make sure no empty directory is left behind." + (with-throw-handler #t + (lambda () + (mkdir-p directory) + (clone url directory)) + (lambda _ + (false-if-exception (rmdir directory))))) + +(define (repository->head-sha1 repo) + "Return the sha1 of the HEAD commit in REPOSITORY as a string." + (let ((oid (reference-target (repository-head repo)))) + (oid->string (commit-id (commit-lookup repo oid))))) + +(define (url+commit->name url sha1) + "Return the string \"<REPO-NAME>-<SHA1:7>\" where REPO-NAME is the name of +the git repository, extracted from URL and SHA1:7 the seven first digits +of SHA1 string." + (string-append + (string-replace-substring + (last (string-split url #\/)) ".git" "") + "-" (string-take sha1 7))) + +(define* (copy-to-store store cache-directory #:key url repository) + "Copy items in cache-directory to store. URL and REPOSITORY are used +to forge store directory name." + (let* ((commit (repository->head-sha1 repository)) + (name (url+commit->name url commit))) + (values (add-to-store store name #t "sha256" cache-directory) commit))) + +(define (switch-to-ref repository ref) + "Switch to REPOSITORY's branch, commit or tag specified by REF." + (let* ((oid (match ref + (('branch . branch) + (reference-target + (branch-lookup repository branch BRANCH-REMOTE))) + (('commit . commit) + (string->oid commit)) + (('tag . tag) + (reference-name->oid repository + (string-append "refs/tags/" tag))))) + (obj (object-lookup repository oid))) + (reset repository obj RESET_HARD))) + +(define* (latest-repository-commit store url + #:key + (cache-directory + (%repository-cache-directory)) + (ref '(branch . "origin/master"))) + "Return two values: the content of the git repository at URL copied into a +store directory and the sha1 of the top level commit in this directory. The +reference to be checkout, once the repository is fetched, is specified by REF. +REF is pair whose key is [branch | commit | tag] and value the associated +data, respectively [<branch name> | <sha1> | <tag name>]. + +Git repositories are kept in the cache directory specified by +%repository-cache-directory parameter." + (with-libgit2 + (let* ((cache-dir (url-cache-directory url cache-directory)) + (cache-exists? (openable-repository? cache-dir)) + (repository (if cache-exists? + (repository-open cache-dir) + (clone* url cache-dir)))) + ;; Only fetch remote if it has not been cloned just before. + (when cache-exists? + (remote-fetch (remote-lookup repository "origin"))) + (switch-to-ref repository ref) + (copy-to-store store cache-dir + #:url url + #:repository repository)))) -- 2.13.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* bug#27275: [PATCH 2/2] guix: git: Add new module. 2017-06-07 12:05 ` bug#27275: [PATCH 2/2] guix: git: Add new module Mathieu Othacehe @ 2017-06-07 12:21 ` Ludovic Courtès 0 siblings, 0 replies; 10+ messages in thread From: Ludovic Courtès @ 2017-06-07 12:21 UTC (permalink / raw) To: Mathieu Othacehe; +Cc: 27275 Mathieu Othacehe <m.othacehe@gmail.com> skribis: > * guix/git.scm: New file. > * configure.ac: Check for (guile git). > * Makefile.am: Build guix/git.scm if (guile git) is available. Perfect, nothing to add here. :-) Ludo’. ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#27275: [PATCH 1/2] pull: Add a dependency to guile-git. 2017-06-07 12:05 ` bug#27275: [PATCH 1/2] pull: Add a dependency to guile-git Mathieu Othacehe 2017-06-07 12:05 ` bug#27275: [PATCH 2/2] guix: git: Add new module Mathieu Othacehe @ 2017-06-07 12:21 ` Ludovic Courtès 2017-06-07 13:58 ` Mathieu Othacehe 1 sibling, 1 reply; 10+ messages in thread From: Ludovic Courtès @ 2017-06-07 12:21 UTC (permalink / raw) To: Mathieu Othacehe; +Cc: 27275 Hi Mathieu! Mathieu Othacehe <m.othacehe@gmail.com> 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’. ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#27275: [PATCH 1/2] pull: Add a dependency to guile-git. 2017-06-07 12:21 ` bug#27275: [PATCH 1/2] pull: Add a dependency to guile-git Ludovic Courtès @ 2017-06-07 13:58 ` Mathieu Othacehe 2017-06-08 12:06 ` Ludovic Courtès 0 siblings, 1 reply; 10+ messages in thread From: Mathieu Othacehe @ 2017-06-07 13:58 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 27275 Hi Ludo, Thanks for the fast review :) >> (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. Just on question about that. The easier I come up with is something like : --8<---------------cut here---------------start------------->8--- (set! %load-path (append `(,@(if (and #$guile-git #$guile-bytestructures) (list (string-append #$guile-git "/share/guile/site/" #$(effective-version)) (string-append #$guile-bytestructures "/share/guile/site/" #$(effective-version))) '())) (cons* json (string-append #$guile-ssh "/share/guile/site/" #$(effective-version)) %load-path))) --8<---------------cut here---------------end--------------->8--- Any idea on how to write that smoothly ? Thanks, Mathieu ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#27275: [PATCH 1/2] pull: Add a dependency to guile-git. 2017-06-07 13:58 ` Mathieu Othacehe @ 2017-06-08 12:06 ` Ludovic Courtès 2017-06-08 14:49 ` Mathieu Othacehe 0 siblings, 1 reply; 10+ messages in thread From: Ludovic Courtès @ 2017-06-08 12:06 UTC (permalink / raw) To: Mathieu Othacehe; +Cc: 27275 Hello! Mathieu Othacehe <m.othacehe@gmail.com> skribis: >>> (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. > > Just on question about that. The easier I come up with is something like > : > > > (set! %load-path > (append > `(,@(if > (and #$guile-git #$guile-bytestructures) > (list > (string-append #$guile-git "/share/guile/site/" > #$(effective-version)) > (string-append #$guile-bytestructures "/share/guile/site/" > #$(effective-version))) > '())) > (cons* json > (string-append #$guile-ssh "/share/guile/site/" > #$(effective-version)) > %load-path))) > > Any idea on how to write that smoothly ? Maybe with a macro along these lines: --8<---------------cut here---------------start------------->8--- (letrec-syntax ((maybe-load-path (syntax-rules () ((_ item rest ...) (let ((tail (maybe-load-path rest ...))) (if (string? item) (cons (string-append item "/share/guile/site/" (effective-version)) tail) tail))) ((_) '())))) (set! %load-path (maybe-load-path json guile-git guile-bytestructures))) --8<---------------cut here---------------end--------------->8--- HTH, Ludo’. ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#27275: [PATCH 1/2] pull: Add a dependency to guile-git. 2017-06-08 12:06 ` Ludovic Courtès @ 2017-06-08 14:49 ` Mathieu Othacehe 2017-06-08 20:52 ` Ludovic Courtès 0 siblings, 1 reply; 10+ messages in thread From: Mathieu Othacehe @ 2017-06-08 14:49 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 27275 [-- Attachment #1: Type: text/plain, Size: 1778 bytes --] Hi Ludo ! > Maybe with a macro along these lines: Nice, thanks ! I attached the patch I come up with. It's working ok :) I have a shorter version using match : --8<---------------cut here---------------start------------->8--- (letrec-syntax ((maybe-load-paths (syntax-rules () ((_ item rest ...) (let ((tail (maybe-load-paths rest ...))) (if (string? item) (match tail ((load-path load-compiled-path) (list (cons (string-append item "/share/guile/site/" #$(effective-version)) load-path) (cons (string-append item "/lib/guile/" #$(effective-version) "/site-ccache") load-compiled-path)))) tail))) ((_) '(() ()))))) (match (maybe-load-paths #$guile-json #$guile-ssh #$guile-git #$guile-bytestructures) ((module-load-path module-load-compiled-path) (set! %load-path (append module-load-path %load-path) (set! %load-compiled-path (append module-load-compiled-path %load-compiled-path)))))) --8<---------------cut here---------------end--------------->8--- It might seems preferable but I can't get guix-latest derivation to include (ice-9 match), maybe because of #:module-path in "(gexp->derivation "guix-latest" ...". Mathieu [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: 0002-pull-Add-a-dependency-to-guile-git.patch --] [-- Type: text/x-diff, Size: 3764 bytes --] From 1130f8eafdb27216fc542bff253a940528bedc6a Mon Sep 17 00:00:00 2001 From: Mathieu Othacehe <m.othacehe@gmail.com> Date: Wed, 7 Jun 2017 13:44:47 +0200 Subject: [PATCH 2/2] pull: Add a dependency to guile-git. * 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. --- build-aux/build-self.scm | 52 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/build-aux/build-self.scm b/build-aux/build-self.scm index a1335fea1..8fb9af23c 100644 --- a/build-aux/build-self.scm +++ b/build-aux/build-self.scm @@ -97,6 +97,13 @@ Guile major version (2.0 or 2.2), or #f if none of the packages matches." "guile2.2-ssh" "guile2.0-ssh")) +(define guile-git + (package-for-current-guile "guile-git" + "guile2.0-git")) + +(define guile-bytestructures + (package-for-current-guile "guile-bytestructures" + "guile2.0-bytestructures")) \f ;; The actual build procedure. @@ -148,19 +155,42 @@ files." #~(begin (use-modules (guix build pull)) - (let ((json (string-append #$guile-json "/share/guile/site/" - #$(effective-version)))) + (letrec-syntax ((maybe-load-path + (syntax-rules () + ((_ item rest ...) + (let ((tail (maybe-load-path rest ...))) + (if (string? item) + (cons (string-append item + "/share/guile/site/" + #$(effective-version)) + tail) + tail))) + ((_) + '())))) (set! %load-path - (cons* json - (string-append #$guile-ssh "/share/guile/site/" - #$(effective-version)) - %load-path)) + (append + (maybe-load-path #$guile-json #$guile-ssh + #$guile-git #$guile-bytestructures) + %load-path))) + + (letrec-syntax ((maybe-load-compiled-path + (syntax-rules () + ((_ item rest ...) + (let ((tail (maybe-load-compiled-path rest ...))) + (if (string? item) + (cons (string-append item + "/lib/guile/" + #$(effective-version) + "/site-ccache") + tail) + tail))) + ((_) + '())))) (set! %load-compiled-path - (cons* json - (string-append #$guile-ssh "/lib/guile/" - #$(effective-version) - "/site-ccache") - %load-compiled-path))) + (append + (maybe-load-compiled-path #$guile-json #$guile-ssh + #$guile-git #$guile-bytestructures) + %load-compiled-path))) ;; XXX: The 'guile-ssh' package prior to Guix commit 92b7258 was ;; broken: libguile-ssh could not be found. Work around that. -- 2.13.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* bug#27275: [PATCH 1/2] pull: Add a dependency to guile-git. 2017-06-08 14:49 ` Mathieu Othacehe @ 2017-06-08 20:52 ` Ludovic Courtès 2017-06-09 7:51 ` Mathieu Othacehe 0 siblings, 1 reply; 10+ messages in thread From: Ludovic Courtès @ 2017-06-08 20:52 UTC (permalink / raw) To: Mathieu Othacehe; +Cc: 27275 Hello! Mathieu Othacehe <m.othacehe@gmail.com> skribis: > I attached the patch I come up with. It's working ok :) > I have a shorter version using match : > > (letrec-syntax ((maybe-load-paths > (syntax-rules () > ((_ item rest ...) > (let ((tail (maybe-load-paths rest ...))) > (if (string? item) > (match tail > ((load-path load-compiled-path) > (list > (cons (string-append item > "/share/guile/site/" > #$(effective-version)) > load-path) > (cons (string-append item > "/lib/guile/" > #$(effective-version) > "/site-ccache") > load-compiled-path)))) > tail))) > ((_) > '(() ()))))) > (match (maybe-load-paths #$guile-json #$guile-ssh > #$guile-git #$guile-bytestructures) > ((module-load-path module-load-compiled-path) > (set! %load-path (append module-load-path %load-path) > (set! %load-compiled-path (append module-load-compiled-path %load-compiled-path)))))) > > It might seems preferable but I can't get guix-latest derivation to > include (ice-9 match), maybe because of #:module-path in > "(gexp->derivation "guix-latest" ...". Hmm (ice-9 match) should always be found, but don’t add it to the #:modules argument of ‘gexp->derivation’. > From 1130f8eafdb27216fc542bff253a940528bedc6a Mon Sep 17 00:00:00 2001 > From: Mathieu Othacehe <m.othacehe@gmail.com> > Date: Wed, 7 Jun 2017 13:44:47 +0200 > Subject: [PATCH 2/2] pull: Add a dependency to guile-git. > > * 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. OK for this or the variant that uses ‘match’. Thanks! Ludo’. ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#27275: [PATCH 1/2] pull: Add a dependency to guile-git. 2017-06-08 20:52 ` Ludovic Courtès @ 2017-06-09 7:51 ` Mathieu Othacehe 0 siblings, 0 replies; 10+ messages in thread From: Mathieu Othacehe @ 2017-06-09 7:51 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 27275-done Hi, > OK for this or the variant that uses ‘match’. Just pushed the two patches as 6b7b3ca98 and 19c90e5f6. Thanks, Mathieu ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2017-06-09 7:52 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-06-07 12:04 bug#27275: [PATCH 0/2] Add (guix git) module Mathieu Othacehe 2017-06-07 12:05 ` bug#27275: [PATCH 1/2] pull: Add a dependency to guile-git Mathieu Othacehe 2017-06-07 12:05 ` bug#27275: [PATCH 2/2] guix: git: Add new module Mathieu Othacehe 2017-06-07 12:21 ` Ludovic Courtès 2017-06-07 12:21 ` bug#27275: [PATCH 1/2] pull: Add a dependency to guile-git Ludovic Courtès 2017-06-07 13:58 ` Mathieu Othacehe 2017-06-08 12:06 ` Ludovic Courtès 2017-06-08 14:49 ` Mathieu Othacehe 2017-06-08 20:52 ` Ludovic Courtès 2017-06-09 7:51 ` Mathieu Othacehe
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).