1
0
mirror of https://git.savannah.gnu.org/git/guix.git synced 2026-04-06 21:20:33 +02:00

gnu: guix: Improve style and fix tests on hurd.

This is a follow-up to f1a3bf940c, and
fixes guix/guix#1221.

* gnu/packages/package-management.scm (guix):
[arguments]: Improve style, rewrite using gexps.
<#:modules>: Add (srfi srfi-1) and (ice-9 match).
<#:phases>: Rename test/pypi.scm to test/import/pypi.scm in phase
'disable-tests/hurd.  In phase 'use-host-compressors, use
search-input-file. In phase 'wrap-program, use search-input-directory
to inject dependency paths.
[native-inputs, propagated-inputs]: Improve style, remove labels.
(guix-daemon)[arguments]: Improve style, use gexps.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Nicolas Graves
2025-10-01 23:30:39 +02:00
committed by Ludovic Courtès
parent 34ac15e813
commit 1758aca454

View File

@@ -201,330 +201,294 @@
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://git.guix.gnu.org/guix.git") (url "https://git.guix.gnu.org/guix.git")
(commit commit))) (commit commit)))
(sha256 (sha256
(base32 (base32
"14rch8ycl3zy0da4xkrnbyjsxlwnfcm30dfrvjqcgz5s2v71jiaq")) "14rch8ycl3zy0da4xkrnbyjsxlwnfcm30dfrvjqcgz5s2v71jiaq"))
(file-name (string-append "guix-" version "-checkout")))) (file-name (string-append "guix-" version "-checkout"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(;; For reproducibility, see <https://issues.guix.gnu.org/74204>. (list
#:parallel-build? #false ;; For reproducibility, see <https://issues.guix.gnu.org/74204>.
#:configure-flags (list #:parallel-build? #f
#:configure-flags
#~(list
;; Provide channel metadata for 'guix describe'. Don't pass
;; '--with-channel-url' and '--with-channel-introduction' and
;; instead use the defaults.
#$(string-append "--with-channel-commit=" commit)
;; Provide channel metadata for 'guix describe'. "--localstatedir=/var"
;; Don't pass '--with-channel-url' and "--sysconfdir=/etc"
;; '--with-channel-introduction' and instead use (string-append "--with-bash-completion-dir="
;; the defaults. #$output "/etc/bash_completion.d")
,(string-append "--with-channel-commit=" commit) (string-append "--with-apparmor-profile-dir="
#$output "/etc/apparmor.d")
"--localstatedir=/var" ;; Set 'DOT_USER_PROGRAM' to the empty string so we don't keep a
"--sysconfdir=/etc" ;; reference to Graphviz, whose closure is pretty big (too big for
(string-append "--with-bash-completion-dir=" ;; the Guix system installation image.)
(assoc-ref %outputs "out") "ac_cv_path_DOT_USER_PROGRAM=dot"
"/etc/bash_completion.d")
(string-append "--with-apparmor-profile-dir="
(assoc-ref %outputs "out")
"/etc/apparmor.d")
;; Set 'DOT_USER_PROGRAM' to the empty string so ;; When cross-compiling, 'git' is not in $PATH (because it's not a
;; we don't keep a reference to Graphviz, whose ;; native input). Thus, always explicitly pass its file name.
;; closure is pretty big (too big for the Guix (string-append "ac_cv_path_GIT="
;; system installation image.) (search-input-file %build-inputs "/bin/git"))
"ac_cv_path_DOT_USER_PROGRAM=dot"
;; When cross-compiling, 'git' is not in $PATH ;; To avoid problems with the length of shebangs, choose a
;; (because it's not a native input). Thus, ;; fixed-width and short directory name for tests.
;; always explicitly pass its file name. "ac_cv_guix_test_root=/tmp/guix-tests")
(string-append "ac_cv_path_GIT=" #:parallel-tests? #f ;work around <http://bugs.gnu.org/21097>
(search-input-file %build-inputs
"/bin/git"))
;; To avoid problems with the length of shebangs, #:modules `((guix build gnu-build-system)
;; choose a fixed-width and short directory name
;; for tests.
"ac_cv_guix_test_root=/tmp/guix-tests")
#:parallel-tests? #f ;work around <http://bugs.gnu.org/21097>
#:modules ((guix build gnu-build-system)
(guix build utils) (guix build utils)
(srfi srfi-26) (srfi srfi-1)
(ice-9 match)
(ice-9 popen) (ice-9 popen)
(ice-9 rdelim)) (ice-9 rdelim))
#:phases (modify-phases %standard-phases #:phases
(replace 'bootstrap #~(modify-phases %standard-phases
(lambda _ (replace 'bootstrap
;; Make sure 'msgmerge' can modify the PO files. (lambda _
(for-each (lambda (po) ;; Make sure 'msgmerge' can modify the PO files.
(chmod po #o666)) (for-each (lambda (po)
(find-files "." "\\.po$")) (chmod po #o666))
(find-files "." "\\.po$"))
(patch-shebang "build-aux/git-version-gen") (patch-shebang "build-aux/git-version-gen")
(call-with-output-file ".tarball-version" (call-with-output-file ".tarball-version"
(lambda (port) (lambda (port)
(display ,version port))) (display #$version port)))
;; Install SysV init files to $(prefix)/etc rather ;; Install SysV init files to $(prefix)/etc rather than /etc.
;; than to /etc. (substitute* "nix/local.mk"
(substitute* "nix/local.mk" (("^sysvinitservicedir = .*$")
(("^sysvinitservicedir = .*$") (string-append "sysvinitservicedir = \
(string-append "sysvinitservicedir = \
$(prefix)/etc/init.d\n"))) $(prefix)/etc/init.d\n")))
;; Install OpenRC init files to $(prefix)/etc rather ;; Install OpenRC init files to $(prefix)/etc rather than /etc.
;; than to /etc. (substitute* "nix/local.mk"
(substitute* "nix/local.mk" (("^openrcservicedir = .*$")
(("^openrcservicedir = .*$") (string-append "openrcservicedir = \
(string-append "openrcservicedir = \
$(prefix)/etc/openrc\n"))) $(prefix)/etc/openrc\n")))
(invoke "sh" "bootstrap"))) (invoke "sh" "bootstrap")))
,@(if (target-riscv64?) #$@(if (target-riscv64?)
`((add-after 'unpack 'use-correct-guile-version-for-tests `((add-after 'unpack 'use-correct-guile-version-for-tests
(lambda _ (lambda _
(substitute* "tests/gexp.scm" (substitute* "tests/gexp.scm"
(("2\\.0") "3.0"))))) (("2\\.0") "3.0")))))
'()) '())
,@(if (system-hurd?) #$@(if (system-hurd?)
`((add-after 'unpack 'disable-tests/hurd `((add-after 'unpack 'disable-tests/hurd
(lambda _ (lambda _
(substitute* "Makefile.am" (substitute* "Makefile.am"
(("tests/derivations.scm") "") (("tests/derivations.scm") "")
(("tests/grafts.scm") "") (("tests/grafts.scm") "")
(("tests/graph.scm") "") (("tests/graph.scm") "")
(("tests/lint.scm") "") (("tests/lint.scm") "")
(("tests/nar.scm") "") (("tests/nar.scm") "")
(("tests/offload.scm") "") (("tests/offload.scm") "")
(("tests/pack.scm") "") (("tests/pack.scm") "")
(("tests/packages.scm") "") (("tests/packages.scm") "")
(("tests/processes.scm") "") (("tests/processes.scm") "")
(("tests/publish.scm") "") (("tests/publish.scm") "")
(("tests/pypi.scm") "") (("tests/import/pypi.scm") "")
(("tests/size.scm") "") (("tests/size.scm") "")
(("tests/store.scm") "") (("tests/store.scm") "")
(("tests/substitute.scm") "") (("tests/substitute.scm") "")
(("tests/syscalls.scm") "") (("tests/syscalls.scm") "")
(("tests/union.scm") "") (("tests/union.scm") "")
(("tests/guix-build.sh") "") (("tests/guix-build.sh") "")
(("tests/guix-build-branch.sh") "") (("tests/guix-build-branch.sh") "")
(("tests/guix-hash.sh") "") (("tests/guix-hash.sh") "")
(("tests/guix-locate.sh") "") (("tests/guix-locate.sh") "")
(("tests/guix-pack.sh") "") (("tests/guix-pack.sh") "")
(("tests/guix-pack-relocatable.sh") "") (("tests/guix-pack-relocatable.sh") "")
(("tests/guix-package-aliases.sh") "") (("tests/guix-package-aliases.sh") "")
(("tests/guix-package-net.sh") "") (("tests/guix-package-net.sh") "")
(("tests/guix-home.sh") "") (("tests/guix-home.sh") "")
(("tests/guix-archive.sh") "") (("tests/guix-archive.sh") "")
(("tests/guix-environment.sh") "") (("tests/guix-environment.sh") "")
(("tests/guix-package.sh") "") (("tests/guix-package.sh") "")
(("tests/guix-refresh.sh") "") (("tests/guix-refresh.sh") "")
(("tests/guix-shell.sh") "") (("tests/guix-shell.sh") "")
(("tests/guix-shell-export-manifest.sh") "") (("tests/guix-shell-export-manifest.sh") "")
(("tests/guix-system.sh") "") (("tests/guix-system.sh") "")
(("tests/guix-graph.sh") "") (("tests/guix-graph.sh") "")
(("tests/guix-gc.sh") "") (("tests/guix-gc.sh") "")
(("tests/guix-daemon.sh") ""))))) (("tests/guix-daemon.sh") "")))))
'()) '())
(add-before 'build 'use-host-compressors #$@(if (%current-target-system)
(lambda* (#:key inputs target #:allow-other-keys) #~((add-before 'build 'use-host-compressors
(when target (lambda* (#:key inputs #:allow-other-keys)
;; Use host compressors. (substitute* "guix/config.scm"
(let ((bzip2 (assoc-ref inputs "bzip2")) (("[^\"]*/(bin/(bzip2|gzip|xz))" _ bin)
(gzip (assoc-ref inputs "gzip")) (search-input-file inputs bin))))))
(xz (assoc-ref inputs "xz"))) #~())
(substitute* "guix/config.scm" (add-before 'build 'set-font-path
(("\"[^\"]*/bin/bzip2") (lambda* (#:key native-inputs inputs #:allow-other-keys)
(string-append "\"" bzip2 "/bin/bzip2")) ;; Tell 'dot' where to look for fonts.
(("\"[^\"]*/bin/gzip") gzip (setenv "XDG_DATA_DIRS"
(string-append "\"" gzip "/bin/gzip")) (dirname
(("\"[^\"]*/bin//xz") (search-input-directory (or native-inputs inputs)
(string-append "\"" xz "/bin/xz"))))))) "share/fonts")))))
(add-before 'build 'set-font-path (add-before 'check 'copy-bootstrap-guile
(lambda* (#:key native-inputs inputs #:allow-other-keys) (lambda* (#:key system target inputs #:allow-other-keys)
;; Tell 'dot' where to look for fonts. ;; Copy the bootstrap guile tarball in the store
(setenv "XDG_DATA_DIRS" ;; used by the test suite.
(dirname (define (intern file recursive?)
(search-input-directory (or native-inputs inputs) ;; Note: don't use 'guix download' here because we
"share/fonts"))))) ;; need to set the 'recursive?' argument.
(add-before 'check 'copy-bootstrap-guile (define base
(lambda* (#:key system target inputs #:allow-other-keys) (strip-store-file-name file))
;; Copy the bootstrap guile tarball in the store
;; used by the test suite.
(define (intern file recursive?)
;; Note: don't use 'guix download' here because we
;; need to set the 'recursive?' argument.
(define base
(strip-store-file-name file))
(define code (define code
`(begin `(begin
(use-modules (guix)) (use-modules (guix))
(with-store store (with-store store
(let* ((item (add-to-store store ,base (let* ((item (add-to-store store ,base
,recursive? ,recursive?
"sha256" ,file)) "sha256" ,file))
(root (string-append "/tmp/gc-root-" (root (string-append "/tmp/gc-root-"
(basename item)))) (basename item))))
;; Register a root so that the GC tests ;; Register a root so that the GC tests
;; don't delete those. ;; don't delete those.
(symlink item root) (symlink item root)
(add-indirect-root store root))))) (add-indirect-root store root)))))
(invoke "./test-env" "guile" "-c" (invoke "./test-env" "guile" "-c"
(object->string code))) (object->string code)))
(unless target (unless target
(intern (assoc-ref inputs "boot-guile") #f) (intern (assoc-ref inputs "boot-guile") #f)
;; On x86_64 some tests need the i686 Guile. ;; On x86_64 some tests need the i686 Guile.
(when (and (not target) (when (and (not target)
(string=? system "x86_64-linux")) (string=? system "x86_64-linux"))
(intern (assoc-ref inputs "boot-guile/i686") #f)) (intern (assoc-ref inputs "boot-guile/i686") #f))
;; Copy the bootstrap executables. ;; Copy the bootstrap executables.
(for-each (lambda (input) (for-each (lambda (input)
(intern (assoc-ref inputs input) #t)) (intern (assoc-ref inputs input) #t))
'("bootstrap/bash" "bootstrap/mkdir" '("bootstrap/bash" "bootstrap/mkdir"
"bootstrap/tar" "bootstrap/xz"))))) "bootstrap/tar" "bootstrap/xz")))))
(add-after 'unpack 'disable-failing-tests (add-after 'unpack 'disable-failing-tests
;; XXX FIXME: These tests fail within the build container. ;; XXX FIXME: These tests fail within the build container.
(lambda _ (lambda _
(substitute* "tests/syscalls.scm" (substitute* "tests/syscalls.scm"
(("^\\(test-(assert|equal) \"(clone|setns|pivot-root)\"" all) (("^\\(test-(assert|equal) \"(clone|setns|pivot-root)\"" all)
(string-append "(test-skip 1)\n" all))) (string-append "(test-skip 1)\n" all)))
(substitute* "tests/containers.scm" (substitute* "tests/containers.scm"
(("^\\(test-(assert|equal)" all) (("^\\(test-(assert|equal)" all)
(string-append "(test-skip 1)\n" all))) (string-append "(test-skip 1)\n" all)))
(when (file-exists? "tests/guix-environment-container.sh") (when (file-exists? "tests/guix-environment-container.sh")
(substitute* "tests/guix-environment-container.sh" (substitute* "tests/guix-environment-container.sh"
(("guix environment --version") (("guix environment --version")
"exit 77\n"))))) "exit 77\n")))))
,@(if (target-arm32?) #$@(if (target-arm32?)
`((add-after #~((add-after
'disable-failing-tests 'disable-failing-tests
'disable-failing-tests-on-arm32 'disable-failing-tests-on-arm32
;; XXX FIXME: These tests fail on armhf architecture, ;; XXX FIXME: These tests fail on armhf architecture,
;; see <https://codeberg.org/guix/guix/issues/5078>. ;; see <https://codeberg.org/guix/guix/issues/5078>.
(lambda _ (lambda _
(substitute* "tests/syscalls.scm" (substitute* "tests/syscalls.scm"
(("^\\(test-equal \"safe-clone and unshare succeeds\"" all) (("^\\(test-equal \"safe-clone and unshare succeeds\"" all)
(string-append "(test-skip 1)\n" all)) (string-append "(test-skip 1)\n" all))
(("^\\(test-equal \"clone and unshare triggers EINVAL\"" all) (("^\\(test-equal \"clone and unshare triggers EINVAL\"" all)
(string-append "(test-skip 1)\n" all)))))) (string-append "(test-skip 1)\n" all))))))
'()) #~())
(add-before 'check 'set-SHELL (add-before 'check 'set-SHELL
(lambda _ (lambda _
;; 'guix environment' tests rely on 'SHELL' having a ;; 'guix environment' tests rely on 'SHELL' having a
;; correct value, so set it. ;; correct value, so set it.
(setenv "SHELL" (which "sh")))) (setenv "SHELL" (which "sh"))))
(add-after 'install 'wrap-program (add-after 'install 'wrap-program
(lambda* (#:key inputs native-inputs outputs target (lambda* (#:key inputs native-inputs target #:allow-other-keys)
#:allow-other-keys) (define (search-input-directories dir)
;; Make sure the 'guix' command finds GnuTLS, (filter directory-exists?
;; Guile-JSON, and Guile-Git automatically. (map (match-lambda
(let* ((out (assoc-ref outputs "out")) ((name . directory)
(guile (assoc-ref (or native-inputs inputs) (string-append directory "/" dir)))
"guile")) inputs)))
(avahi (assoc-ref inputs "guile-avahi")) ;; Make sure the 'guix' command finds GnuTLS,
(gcrypt (assoc-ref inputs "guile-gcrypt")) ;; Guile-JSON, and Guile-Git automatically.
(guile-lib (assoc-ref inputs "guile-lib")) (let* ((effective
(json (assoc-ref inputs "guile-json")) (read-line
(sqlite (assoc-ref inputs "guile-sqlite3")) (open-pipe*
(zlib (assoc-ref inputs "guile-zlib")) OPEN_READ
(lzlib (assoc-ref inputs "guile-lzlib")) (search-input-file (or native-inputs inputs)
(zstd (assoc-ref inputs "guile-zstd")) "bin/guile")
(git (assoc-ref inputs "guile-git")) "-c" "(display (effective-version))")))
(bs (assoc-ref inputs (path (search-input-directories
"guile-bytestructures")) (string-append "share/guile/site/" effective)))
(ssh (assoc-ref inputs "guile-ssh")) (gopath (search-input-directories
(gnutls (assoc-ref inputs "guile-gnutls")) (string-append "lib/guile/" effective
(disarchive (assoc-ref inputs "disarchive")) "/site-ccache")))
(bzip2 (assoc-ref inputs "guile-bzip2")) (locpath (search-input-directory inputs "lib/locale")))
(lzma (assoc-ref inputs "guile-lzma"))
(locales (assoc-ref inputs "glibc-utf8-locales"))
(deps (list gcrypt json sqlite gnutls git
bs ssh zlib lzlib zstd guile-lib
disarchive bzip2 lzma))
(deps* (if avahi (cons avahi deps) deps))
(effective
(read-line
(open-pipe* OPEN_READ
(string-append guile "/bin/guile")
"-c" "(display (effective-version))")))
(path (map (cut string-append <>
"/share/guile/site/"
effective)
(delete #f deps*)))
(gopath (map (cut string-append <>
"/lib/guile/" effective
"/site-ccache")
(delete #f deps*)))
(locpath (string-append locales "/lib/locale")))
;; Modify 'guix' directly instead of using ;; Modify 'guix' directly instead of using
;; 'wrap-program'. This avoids the indirection ;; 'wrap-program'. This avoids the indirection
;; through Bash, which in turn avoids getting Bash's ;; through Bash, which in turn avoids getting Bash's
;; own locale warnings. ;; own locale warnings.
(substitute* (string-append out "/bin/guix") (substitute* (string-append #$output "/bin/guix")
(("!#") (("!#")
(string-append (string-append
"!#\n\n" "!#\n\n"
(object->string (object->string
`(set! %load-path (append ',path %load-path))) `(set! %load-path (append ',path %load-path)))
"\n" "\n"
(object->string (object->string
`(set! %load-compiled-path `(set! %load-compiled-path
(append ',gopath %load-compiled-path))) (append ',gopath %load-compiled-path)))
"\n" "\n"
(object->string (object->string
`(let ((path (getenv "GUIX_LOCPATH"))) `(let ((path (getenv "GUIX_LOCPATH")))
(setenv "GUIX_LOCPATH" (setenv "GUIX_LOCPATH"
(if path (if path
(string-append path ":" ,locpath) (string-append path ":" ,locpath)
,locpath)))) ,locpath))))
"\n\n")))))) "\n\n"))))))
;; The 'guix' executable has 'OUT/libexec/guix/guile' as ;; The 'guix' executable has 'OUT/libexec/guix/guile' as
;; its shebang; that should remain unchanged, thus remove ;; its shebang; that should remain unchanged, thus remove
;; the 'patch-shebangs' phase, which would otherwise ;; the 'patch-shebangs' phase, which would otherwise
;; change it to 'GUILE/bin/guile'. ;; change it to 'GUILE/bin/guile'.
(delete 'patch-shebangs)))) (delete 'patch-shebangs))))
(native-inputs `(("locales" ,(libc-utf8-locales-for-target (native-inputs
(%current-system))) (append (if (target-hurd?)
("pkg-config" ,pkg-config) '()
(list guile-avahi))
;; Guile libraries are needed here for (list (libc-utf8-locales-for-target (%current-system))
;; cross-compilation. pkg-config
("guile" ,guile-3.0-latest) ;for faster builds ;; Guile libraries are needed here for cross-compilation.
("guile-gnutls" ,guile-gnutls) guile-3.0-latest ;for faster builds
,@(if (target-hurd?) guile-gnutls
'() guile-gcrypt
`(("guile-avahi" ,guile-avahi))) guile-json-4
("guile-gcrypt" ,guile-gcrypt) guile-lib
("guile-json" ,guile-json-4) guile-sqlite3
("guile-lib" ,guile-lib) guile-zlib
("guile-sqlite3" ,guile-sqlite3) guile-lzlib
("guile-zlib" ,guile-zlib) guile-zstd
("guile-lzlib" ,guile-lzlib) guile-ssh
("guile-zstd" ,guile-zstd) guile-git
("guile-ssh" ,guile-ssh) guile-semver
("guile-git" ,guile-git) ;; XXX: Keep the development inputs here even though
("guile-semver" ,guile-semver) ;; they're unnecessary, just so that 'guix environment
;; guix' always contains them.
;; XXX: Keep the development inputs here even though autoconf
;; they're unnecessary, just so that 'guix environment automake
;; guix' always contains them. gettext-minimal
("autoconf" ,autoconf) texinfo
("automake" ,automake) graphviz-minimal
("gettext" ,gettext-minimal) font-ghostscript ;fonts for 'dot'
("texinfo" ,texinfo) help2man
("graphviz" ,graphviz-minimal) po4a-minimal)))
("font-ghostscript" ,font-ghostscript) ;fonts for 'dot'
("help2man" ,help2man)
("po4a" ,po4a-minimal)))
(inputs (inputs
`(("bash-minimal" ,bash-minimal) `(("bash-minimal" ,bash-minimal)
("bzip2" ,bzip2) ("bzip2" ,bzip2)
@@ -566,25 +530,25 @@ $(prefix)/etc/openrc\n")))
("glibc-utf8-locales" ,(libc-utf8-locales-for-target)))) ("glibc-utf8-locales" ,(libc-utf8-locales-for-target))))
(propagated-inputs (propagated-inputs
`(("guile-gnutls" ,guile-gnutls) (append (if (target-hurd?)
;; Avahi requires "glib" which doesn't cross-compile yet. '()
,@(if (target-hurd?) ;; Avahi requires "glib" which doesn't cross-compile yet.
'() (list guile-avahi))
`(("guile-avahi" ,guile-avahi))) (list guile-gnutls
("guile-gcrypt" ,guile-gcrypt) guile-gcrypt
("guile-json" ,guile-json-4) guile-json-4
("guile-lib" ,guile-lib) guile-lib
("guile-semver" ,guile-semver) guile-semver
("guile-sqlite3" ,guile-sqlite3) guile-sqlite3
("guile-ssh" ,guile-ssh) guile-ssh
("guile-git" ,guile-git) guile-git
("guile-zlib" ,guile-zlib) guile-zlib
("guile-lzlib" ,guile-lzlib) guile-lzlib
("guile-zstd" ,guile-zstd))) guile-zstd)))
(native-search-paths (native-search-paths
(list (search-path-specification (list (search-path-specification
(variable "GUIX_EXTENSIONS_PATH") (variable "GUIX_EXTENSIONS_PATH")
(files '("share/guix/extensions"))) (files '("share/guix/extensions")))
;; (guix git) and (guix build download) honor this variable whose ;; (guix git) and (guix build download) honor this variable whose
;; name comes from OpenSSL. ;; name comes from OpenSSL.
$SSL_CERT_DIR)) $SSL_CERT_DIR))
@@ -637,13 +601,13 @@ the Nix package manager.")
(substitute-keyword-arguments (package-arguments guix) (substitute-keyword-arguments (package-arguments guix)
((#:configure-flags flags '()) ((#:configure-flags flags '())
;; Pretend we have those libraries; we don't actually need them. ;; Pretend we have those libraries; we don't actually need them.
`(append ,flags #~(append #$flags
'("guix_cv_have_recent_guile_sqlite3=yes" '("guix_cv_have_recent_guile_sqlite3=yes"
"guix_cv_have_recent_guile_ssh=yes"))) "guix_cv_have_recent_guile_ssh=yes")))
((#:tests? #f #f) ((#:tests? #f #f)
#f) #f)
((#:phases phases '%standard-phases) ((#:phases phases '%standard-phases)
`(modify-phases ,phases #~(modify-phases #$phases
(delete 'set-font-path) (delete 'set-font-path)
(replace 'build (replace 'build
(lambda _ (lambda _