gnu: Use invoke and return #t from all builders.

* gnu/packages/admin.scm, gnu/packages/android.scm, gnu/packages/audio.scm,
gnu/packages/avr.scm, gnu/packages/base.scm, gnu/packages/bioinformatics.scm,
gnu/packages/certs.scm, gnu/packages/check.scm, gnu/packages/code.scm,
gnu/packages/commencement.scm, gnu/packages/dictionaries.scm,
gnu/packages/docbook.scm, gnu/packages/emacs.scm, gnu/packages/embedded.scm,
gnu/packages/fonts.scm, gnu/packages/games.scm, gnu/packages/gnome.scm,
gnu/packages/gnu-doc.scm, gnu/packages/guile.scm, gnu/packages/hurd.scm,
gnu/packages/javascript.scm, gnu/packages/libreoffice.scm,
gnu/packages/linux.scm, gnu/packages/lisp.scm, gnu/packages/lxde.scm,
gnu/packages/mail.scm, gnu/packages/markup.scm, gnu/packages/mate.scm,
gnu/packages/pkg-config.scm, gnu/packages/qt.scm, gnu/packages/rust.scm,
gnu/packages/scheme.scm, gnu/packages/sdl.scm, gnu/packages/statistics.scm,
gnu/packages/syncthing.scm, gnu/packages/tex.scm, gnu/packages/web.scm,
gnu/packages/wine.scm, gnu/packages/xfce.scm: In the builders of packages
using 'trivial-build-system', use invoke where appropriate, raise exceptions
on errors, and otherwise return #t.
This commit is contained in:
Mark H Weaver 2018-03-27 20:14:05 -04:00
parent 6715e1c24f
commit e3cfef22c4
No known key found for this signature in database
GPG Key ID: 7CEF29847562C516
39 changed files with 168 additions and 119 deletions

View File

@ -483,7 +483,7 @@ allow automatic login and starting any app.")
(output (assoc-ref %outputs "out")) (output (assoc-ref %outputs "out"))
(etc (string-append output "/etc"))) (etc (string-append output "/etc")))
(setenv "PATH" (string-append xz "/bin")) (setenv "PATH" (string-append xz "/bin"))
(system* (string-append tar "/bin/tar") "xvf" (invoke (string-append tar "/bin/tar") "xvf"
source) source)
(chdir ,(string-append "netbase-" version)) (chdir ,(string-append "netbase-" version))
(mkdir-p etc) (mkdir-p etc)

View File

@ -360,7 +360,8 @@ Images.")
(use-modules (guix build utils)) (use-modules (guix build utils))
(let ((source (assoc-ref %build-inputs "source"))) (let ((source (assoc-ref %build-inputs "source")))
(install-file (string-append source "/51-android.rules") (install-file (string-append source "/51-android.rules")
(string-append %output "/lib/udev/rules.d")))))) (string-append %output "/lib/udev/rules.d"))
#t))))
(home-page "https://github.com/M0Rf30/android-udev-rules") (home-page "https://github.com/M0Rf30/android-udev-rules")
(synopsis "udev rules for Android devices") (synopsis "udev rules for Android devices")
(description "Provides a set of udev rules to allow using Android devices (description "Provides a set of udev rules to allow using Android devices

View File

@ -1201,14 +1201,15 @@ PS, and DAB+.")
(setenv "PATH" (string-append (setenv "PATH" (string-append
(assoc-ref %build-inputs "bzip2") "/bin:" (assoc-ref %build-inputs "bzip2") "/bin:"
(assoc-ref %build-inputs "tar") "/bin")) (assoc-ref %build-inputs "tar") "/bin"))
(system* "tar" "xvf" (assoc-ref %build-inputs "source")) (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
(chdir "freepats") (chdir "freepats")
;; Use absolute pattern references ;; Use absolute pattern references
(substitute* "freepats.cfg" (substitute* "freepats.cfg"
(("Tone_000") (string-append out "/Tone_000")) (("Tone_000") (string-append out "/Tone_000"))
(("Drum_000") (string-append out "/Drum_000"))) (("Drum_000") (string-append out "/Drum_000")))
(mkdir-p out) (mkdir-p out)
(copy-recursively "." out))))) (copy-recursively "." out)
#t))))
(native-inputs (native-inputs
`(("tar" ,tar) `(("tar" ,tar)
("bzip2" ,bzip2))) ("bzip2" ,bzip2)))
@ -3369,7 +3370,8 @@ using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
(let ((file (assoc-ref %build-inputs "source")) (let ((file (assoc-ref %build-inputs "source"))
(out (string-append %output "/share/soundfonts"))) (out (string-append %output "/share/soundfonts")))
(mkdir-p out) (mkdir-p out)
(copy-file file (string-append out "/FluidR3Mono_GM.sf3")))))) (copy-file file (string-append out "/FluidR3Mono_GM.sf3"))
#t))))
(home-page "https://github.com/musescore/MuseScore/tree/master/share/sound") (home-page "https://github.com/musescore/MuseScore/tree/master/share/sound")
(synopsis "Pro-quality GM soundfont") (synopsis "Pro-quality GM soundfont")
(description "Fluid-3 is Frank Wen's pro-quality GM soundfont.") (description "Fluid-3 is Frank Wen's pro-quality GM soundfont.")

View File

@ -117,7 +117,7 @@ for use with GCC on Atmel AVR microcontrollers.")
(version (package-version avr-gcc)) (version (package-version avr-gcc))
(source #f) (source #f)
(build-system trivial-build-system) (build-system trivial-build-system)
(arguments '(#:builder (mkdir %output))) (arguments '(#:builder (begin (mkdir %output) #t)))
(propagated-inputs (propagated-inputs
`(("avrdude" ,avrdude) `(("avrdude" ,avrdude)
("binutils" ,avr-binutils) ("binutils" ,avr-binutils)

View File

@ -530,7 +530,8 @@ wrapper for the cross-linker for that target, called 'TARGET-ld'."
target "-ld") target "-ld")
"/bin/ld")))) "/bin/ld"))))
(chmod ld #o555) (chmod ld #o555)
(compile-file ld #:output-file go)))))) (compile-file ld #:output-file go)
#t)))))
(synopsis "The linker wrapper") (synopsis "The linker wrapper")
(description (description
"The linker wrapper (or 'ld-wrapper') wraps the linker to add any "The linker wrapper (or 'ld-wrapper') wraps the linker to add any

View File

@ -5555,10 +5555,11 @@ writing files into the .sra format.")
(out (assoc-ref %outputs "out")) (out (assoc-ref %outputs "out"))
(doc (assoc-ref %outputs "doc"))) (doc (assoc-ref %outputs "doc")))
(setenv "PATH" (string-append tar "/bin:" bzip "/bin")) (setenv "PATH" (string-append tar "/bin:" bzip "/bin"))
(system* "tar" "xvf" (assoc-ref %build-inputs "source")) (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
(chdir (string-append "seqan-library-" ,version)) (chdir (string-append "seqan-library-" ,version))
(copy-recursively "include" (string-append out "/include")) (copy-recursively "include" (string-append out "/include"))
(copy-recursively "share" (string-append doc "/share")))))) (copy-recursively "share" (string-append doc "/share"))
#t))))
(native-inputs (native-inputs
`(("source" ,source) `(("source" ,source)
("tar" ,tar) ("tar" ,tar)

View File

@ -63,7 +63,8 @@
(("crt") "pem")) (("crt") "pem"))
(mkdir-p bin) (mkdir-p bin)
(copy-file "certdata2pem.py" (copy-file "certdata2pem.py"
(string-append bin "/certdata2pem.py")))))) (string-append bin "/certdata2pem.py"))
#t))))
(synopsis "Python script to extract .pem data from certificate collection") (synopsis "Python script to extract .pem data from certificate collection")
(description (description
"certdata2pem.py is a Python script to transform X.509 certificate "certdata2pem.py is a Python script to transform X.509 certificate

View File

@ -187,13 +187,13 @@ supervised tests.")
(incdir (string-append output "/include")) (incdir (string-append output "/include"))
(docdir (string-append output "/share/doc/catch-" (docdir (string-append output "/share/doc/catch-"
,version))) ,version)))
(begin
(for-each mkdir-p (list incdir docdir)) (for-each mkdir-p (list incdir docdir))
(install-file (string-append source (install-file (string-append source
"/single_include/catch.hpp") "/single_include/catch.hpp")
incdir) incdir)
(copy-recursively (string-append source "/docs") (copy-recursively (string-append source "/docs")
docdir)))))) docdir)
#t))))
(home-page "http://catch-lib.net/") (home-page "http://catch-lib.net/")
(synopsis "Automated test framework for C++ and Objective-C") (synopsis "Automated test framework for C++ and Objective-C")
(description (description

View File

@ -493,7 +493,8 @@ importantly we give you proper follow-symbol and find-references support.")
(install-files '("AUTHORS" "BUGS" "ChangeLog" "README") doc) (install-files '("AUTHORS" "BUGS" "ChangeLog" "README") doc)
(install-files '("colormake" "colormake-short" "clmake" (install-files '("colormake" "colormake-short" "clmake"
"clmake-short" "colormake.pl") "clmake-short" "colormake.pl")
bin))))) bin)
#t))))
(home-page "http://bre.klaki.net/programs/colormake/") (home-page "http://bre.klaki.net/programs/colormake/")
(synopsis "Wrapper around @command{make} to produce colored output") (synopsis "Wrapper around @command{make} to produce colored output")
(description "This package provides a wrapper around @command{make} to (description "This package provides a wrapper around @command{make} to

View File

@ -586,7 +586,9 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
triplet "-" tool) triplet "-" tool)
tool)) tool))
'("ar" "ranlib")) '("ar" "ranlib"))
(for-each wrap-program '("gcc" "g++"))))))) (for-each wrap-program '("gcc" "g++")))
#t))))
(native-inputs (native-inputs
`(("binutils" ,binutils) `(("binutils" ,binutils)
("gcc" ,gcc) ("gcc" ,gcc)
@ -1014,7 +1016,8 @@ COREUTILS-FINAL vs. COREUTILS, etc."
(union-build (assoc-ref %outputs "debug") (union-build (assoc-ref %outputs "debug")
(list (assoc-ref %build-inputs (list (assoc-ref %build-inputs
"libc-debug"))))))) "libc-debug")))
#t))))
(native-search-paths (package-native-search-paths gcc)) (native-search-paths (package-native-search-paths gcc))
(search-paths (package-search-paths gcc)) (search-paths (package-search-paths gcc))

View File

@ -110,9 +110,9 @@ acronyms distributed as an info document.")
(set-path-environment-variable "PATH" '("bin") (set-path-environment-variable "PATH" '("bin")
(list tar xz)) (list tar xz))
(mkdir-p datadir) (mkdir-p datadir)
(zero? (system* "tar" "-C" datadir (invoke "tar" "-C" datadir
"--strip-components=1" "--strip-components=1"
"-xvf" src)))) "-xvf" src)))
#:modules ((guix build utils)))) #:modules ((guix build utils))))
(native-inputs (native-inputs
`(("tar" ,tar) `(("tar" ,tar)

View File

@ -58,11 +58,12 @@
(dtd (string-append out "/xml/dtd/docbook"))) (dtd (string-append out "/xml/dtd/docbook")))
(mkdir-p dtd) (mkdir-p dtd)
(with-directory-excursion dtd (with-directory-excursion dtd
(system* unzip source)) (invoke unzip source))
(substitute* (string-append out "/xml/dtd/docbook/catalog.xml") (substitute* (string-append out "/xml/dtd/docbook/catalog.xml")
(("uri=\"") (("uri=\"")
(string-append (string-append
"uri=\"file://" dtd "/"))))) "uri=\"file://" dtd "/")))
#t))
#:modules ((guix build utils)))) #:modules ((guix build utils))))
(native-inputs `(("unzip" ,unzip))) (native-inputs `(("unzip" ,unzip)))
(home-page "http://docbook.org") (home-page "http://docbook.org")
@ -127,7 +128,7 @@ by no means limited to these applications.) This package provides XML DTDs.")
(dtd (string-append (assoc-ref %outputs "out") (dtd (string-append (assoc-ref %outputs "out")
"/xml/dtd/docbook"))) "/xml/dtd/docbook")))
(mkdir-p dtd) (mkdir-p dtd)
(zero? (system* unzip source "-d" dtd)))))))) (invoke unzip source "-d" dtd)))))))
(define-public docbook-xsl (define-public docbook-xsl
(package (package
@ -154,7 +155,7 @@ by no means limited to these applications.) This package provides XML DTDs.")
(out (assoc-ref %outputs "out")) (out (assoc-ref %outputs "out"))
(xsl (string-append out "/xml/xsl"))) (xsl (string-append out "/xml/xsl")))
(setenv "PATH" (string-append bzip2 "/bin" ":" xz "/bin")) (setenv "PATH" (string-append bzip2 "/bin" ":" xz "/bin"))
(system* (string-append tar "/bin/tar") "xvf" source) (invoke (string-append tar "/bin/tar") "xvf" source)
(mkdir-p xsl) (mkdir-p xsl)
(copy-recursively name-version (copy-recursively name-version
@ -163,7 +164,8 @@ by no means limited to these applications.) This package provides XML DTDs.")
(substitute* (string-append xsl "/" name-version "/catalog.xml") (substitute* (string-append xsl "/" name-version "/catalog.xml")
(("rewritePrefix=\"./") (("rewritePrefix=\"./")
(string-append "rewritePrefix=\"file://" xsl "/" (string-append "rewritePrefix=\"file://" xsl "/"
name-version "/"))))) name-version "/")))
#t))
#:modules ((guix build utils)))) #:modules ((guix build utils))))
(native-inputs `(("bzip2" ,bzip2) (native-inputs `(("bzip2" ,bzip2)
("xz" ,xz) ("xz" ,xz)

View File

@ -530,7 +530,7 @@ operations.")
(source (assoc-ref %build-inputs "source")) (source (assoc-ref %build-inputs "source"))
(lisp-dir (string-append %output "/share/emacs/site-lisp"))) (lisp-dir (string-append %output "/share/emacs/site-lisp")))
(setenv "PATH" PATH) (setenv "PATH" PATH)
(system* tar "xvf" source) (invoke tar "xvf" source)
(install-file (string-append ,name "-" ,version "/magit-svn.el") (install-file (string-append ,name "-" ,version "/magit-svn.el")
lisp-dir) lisp-dir)
@ -540,7 +540,9 @@ operations.")
(emacs-generate-autoloads ,name lisp-dir) (emacs-generate-autoloads ,name lisp-dir)
(setenv "EMACSLOADPATH" (setenv "EMACSLOADPATH"
(string-append ":" magit ":" dash)) (string-append ":" magit ":" dash))
(emacs-batch-eval '(byte-compile-file "magit-svn.el")))))))) (emacs-batch-eval '(byte-compile-file "magit-svn.el"))))
#t))))
(home-page "https://github.com/magit/magit-svn") (home-page "https://github.com/magit/magit-svn")
(synopsis "Git-SVN extension to Magit") (synopsis "Git-SVN extension to Magit")
(description (description
@ -5038,7 +5040,8 @@ abbreviation and automatically expand it into function templates.")
dir))) dir)))
(scandir "." (lambda (fname) (scandir "." (lambda (fname)
(and (string-match "-mode$" fname) (and (string-match "-mode$" fname)
(directory-exists? fname))))))))) (directory-exists? fname))))))
#t)))
(home-page "https://github.com/AndreaCrotti/yasnippet-snippets") (home-page "https://github.com/AndreaCrotti/yasnippet-snippets")
(synopsis "Collection of YASnippet snippets for many languages") (synopsis "Collection of YASnippet snippets for many languages")
(description (description
@ -6980,7 +6983,7 @@ for external literate programming tools for exporting, weaving and tangling.")
(setenv "PATH" (string-append (setenv "PATH" (string-append
(assoc-ref %build-inputs "tar") "/bin" ":" (assoc-ref %build-inputs "tar") "/bin" ":"
(assoc-ref %build-inputs "gzip") "/bin")) (assoc-ref %build-inputs "gzip") "/bin"))
(system* "tar" "xvf" (assoc-ref %build-inputs "source")) (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
(chdir (string-append "eless" "-" ,version)) (chdir (string-append "eless" "-" ,version))
(substitute* "eless" (("/usr/bin/env bash") (substitute* "eless" (("/usr/bin/env bash")
(string-append (assoc-ref %build-inputs "bash") (string-append (assoc-ref %build-inputs "bash")
@ -7303,7 +7306,7 @@ Features:
(setenv "PATH" (string-append (setenv "PATH" (string-append
(assoc-ref %build-inputs "tar") "/bin" ":" (assoc-ref %build-inputs "tar") "/bin" ":"
(assoc-ref %build-inputs "gzip") "/bin")) (assoc-ref %build-inputs "gzip") "/bin"))
(system* "tar" "xvf" (assoc-ref %build-inputs "source")) (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
(chdir (string-append ,name "-" ,version)) (chdir (string-append ,name "-" ,version))
;; Patch shebangs ;; Patch shebangs
(substitute* "epipe" (substitute* "epipe"

View File

@ -251,7 +251,8 @@ library variant NEWLIB."
(match %build-inputs (match %build-inputs
(((names . directories) ...) (((names . directories) ...)
(union-build (assoc-ref %outputs "out") (union-build (assoc-ref %outputs "out")
directories)))))) directories)
#t)))))
(propagated-inputs (propagated-inputs
`(("binutils" ,(cross-binutils "arm-none-eabi")) `(("binutils" ,(cross-binutils "arm-none-eabi"))
("libstdc++" ,(make-libstdc++-arm-none-eabi xgcc newlib-with-xgcc)) ("libstdc++" ,(make-libstdc++-arm-none-eabi xgcc newlib-with-xgcc))
@ -610,7 +611,7 @@ micro-controller.")
(version (package-version propeller-gcc)) (version (package-version propeller-gcc))
(source #f) (source #f)
(build-system trivial-build-system) (build-system trivial-build-system)
(arguments '(#:builder (mkdir %output))) (arguments '(#:builder (begin (mkdir %output) #t)))
(propagated-inputs (propagated-inputs
`(("binutils" ,propeller-binutils) `(("binutils" ,propeller-binutils)
("libc" ,proplib) ("libc" ,proplib)
@ -785,7 +786,7 @@ two-thirds of the opcodes in the P2 instruction set.")
(version (package-version propeller-gcc)) (version (package-version propeller-gcc))
(source #f) (source #f)
(build-system trivial-build-system) (build-system trivial-build-system)
(arguments '(#:builder (mkdir %output))) (arguments '(#:builder (begin (mkdir %output) #t)))
(propagated-inputs (propagated-inputs
`(("toolchain" ,propeller-toolchain) `(("toolchain" ,propeller-toolchain)
("openspin" ,openspin) ("openspin" ,openspin)

View File

@ -216,12 +216,13 @@ sans-serif designed for on-screen reading. It is used by GNOME@tie{}3.")
(font-dir (string-append %output (font-dir (string-append %output
"/share/fonts/truetype"))) "/share/fonts/truetype")))
(setenv "PATH" PATH) (setenv "PATH" PATH)
(system* "unzip" (assoc-ref %build-inputs "source")) (invoke "unzip" (assoc-ref %build-inputs "source"))
(mkdir-p font-dir) (mkdir-p font-dir)
(for-each (lambda (ttf) (for-each (lambda (ttf)
(install-file ttf font-dir)) (install-file ttf font-dir))
(find-files "." "\\.ttf$")))))) (find-files "." "\\.ttf$"))
#t))))
(native-inputs `(("unzip" ,unzip))) (native-inputs `(("unzip" ,unzip)))
(home-page "http://www.latofonts.com/lato-free-fonts/") (home-page "http://www.latofonts.com/lato-free-fonts/")
@ -440,14 +441,15 @@ for long periods of working with computers (8 or more hours per day).")
(string-append (assoc-ref %outputs out) (string-append (assoc-ref %outputs out)
"/share/fonts/opentype"))))) "/share/fonts/opentype")))))
(setenv "PATH" PATH) (setenv "PATH" PATH)
(system* tar "xvf" (assoc-ref %build-inputs "source")) (invoke tar "xvf" (assoc-ref %build-inputs "source"))
(chdir (string-append "source-han-sans-" ,version "R")) (chdir (string-append "source-han-sans-" ,version "R"))
(install-opentype-fonts "OTC" "out") (install-opentype-fonts "OTC" "out")
(install-opentype-fonts "SubsetOTF/CN" "cn") (install-opentype-fonts "SubsetOTF/CN" "cn")
(install-opentype-fonts "SubsetOTF/JP" "jp") (install-opentype-fonts "SubsetOTF/JP" "jp")
(install-opentype-fonts "SubsetOTF/KR" "kr") (install-opentype-fonts "SubsetOTF/KR" "kr")
(install-opentype-fonts "SubsetOTF/TW" "tw") (install-opentype-fonts "SubsetOTF/TW" "tw")
(for-each delete-file (find-files %output "\\.zip$")))))) (for-each delete-file (find-files %output "\\.zip$"))
#t))))
(native-inputs (native-inputs
`(("gzip" ,gzip) `(("gzip" ,gzip)
("tar" ,tar))) ("tar" ,tar)))
@ -982,7 +984,7 @@ vector graphics.")
(src-pcf-dir (string-append "tamzen-font-Tamzen-" (src-pcf-dir (string-append "tamzen-font-Tamzen-"
,version "/pcf"))) ,version "/pcf")))
(setenv "PATH" PATH) (setenv "PATH" PATH)
(system* tar "xvf" (assoc-ref %build-inputs "source")) (invoke tar "xvf" (assoc-ref %build-inputs "source"))
(mkdir-p font-dir) (mkdir-p font-dir)
(mkdir-p psf-dir) (mkdir-p psf-dir)
(chdir src-pcf-dir) (chdir src-pcf-dir)
@ -1201,7 +1203,7 @@ itself."))))
(otf-dir (string-append %output (otf-dir (string-append %output
"/share/fonts/opentype"))) "/share/fonts/opentype")))
(setenv "PATH" PATH) (setenv "PATH" PATH)
(system* "unzip" (assoc-ref %build-inputs "source")) (invoke "unzip" (assoc-ref %build-inputs "source"))
(mkdir-p ttf-dir) (mkdir-p ttf-dir)
(mkdir-p otf-dir) (mkdir-p otf-dir)
@ -1210,7 +1212,8 @@ itself."))))
(find-files "." "\\.ttf$")) (find-files "." "\\.ttf$"))
(for-each (lambda (otf) (for-each (lambda (otf)
(install-file otf otf-dir)) (install-file otf otf-dir))
(find-files "." "\\.otf$")))))) (find-files "." "\\.otf$"))
#t))))
(native-inputs `(("unzip" ,unzip))) (native-inputs `(("unzip" ,unzip)))
(home-page "http://www.impallari.com/dosis") (home-page "http://www.impallari.com/dosis")
(synopsis "Very simple, rounded, sans serif family") (synopsis "Very simple, rounded, sans serif family")

View File

@ -1181,7 +1181,8 @@ exec ~a/bin/freedink -refdir ~a/share/dink\n"
(assoc-ref %build-inputs "bash") (assoc-ref %build-inputs "bash")
(assoc-ref %build-inputs "engine") (assoc-ref %build-inputs "engine")
(assoc-ref %build-inputs "data")) (assoc-ref %build-inputs "data"))
(chmod port #o777))))) (chmod port #o777)))
#t))
#:modules ((guix build utils)))) #:modules ((guix build utils))))
(inputs `(("engine" ,freedink-engine) (inputs `(("engine" ,freedink-engine)
("data" ,freedink-data) ("data" ,freedink-data)
@ -1440,10 +1441,11 @@ match, cannon keep, and grave-itation pit.")
"gzip") "gzip")
"/bin"))) "/bin")))
(setenv "PATH" path) (setenv "PATH" path)
(system* tar "xvf" (assoc-ref %build-inputs "source")) (invoke tar "xvf" (assoc-ref %build-inputs "source"))
(chdir (string-append "minetest_game-" ,version)) (chdir (string-append "minetest_game-" ,version))
(mkdir-p install-dir) (mkdir-p install-dir)
(copy-recursively "." install-dir))))) (copy-recursively "." install-dir)
#t))))
(synopsis "Main game data for the Minetest game engine") (synopsis "Main game data for the Minetest game engine")
(description (description
"Game data for the Minetest infinite-world block sandox game.") "Game data for the Minetest infinite-world block sandox game.")
@ -2612,10 +2614,9 @@ Red Eclipse provides fast paced and accessible gameplay.")
(bin (string-append out "/bin")) (bin (string-append out "/bin"))
(doc (string-append out (doc (string-append out
"/share/doc/grue-hunter"))) "/share/doc/grue-hunter")))
(begin
(copy-file tarball "grue-hunter.tar.gz") (copy-file tarball "grue-hunter.tar.gz")
(zero? (system* gzip "-d" "grue-hunter.tar.gz")) (invoke gzip "-d" "grue-hunter.tar.gz")
(zero? (system* tar "xvf" "grue-hunter.tar")) (invoke tar "xvf" "grue-hunter.tar")
(mkdir-p bin) (mkdir-p bin)
(copy-file "grue-hunter/gh.pl" (copy-file "grue-hunter/gh.pl"
@ -2623,7 +2624,9 @@ Red Eclipse provides fast paced and accessible gameplay.")
(patch-shebang (string-append bin "/grue-hunter") (patch-shebang (string-append bin "/grue-hunter")
(list perl)) (list perl))
(install-file "grue-hunter/AGPLv3.txt" doc)))))) (install-file "grue-hunter/AGPLv3.txt" doc)
#t))))
(inputs `(("perl" ,perl) (inputs `(("perl" ,perl)
("tar" ,tar) ("tar" ,tar)
("gzip" ,gzip) ("gzip" ,gzip)
@ -2930,11 +2933,12 @@ your child be creative.")
(string-append (string-append
(assoc-ref %build-inputs "tar") "/bin" ":" (assoc-ref %build-inputs "tar") "/bin" ":"
(assoc-ref %build-inputs "gzip") "/bin")) (assoc-ref %build-inputs "gzip") "/bin"))
(system* "tar" "xvf" (assoc-ref %build-inputs "source")) (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
(chdir (string-append ,name "-" ,version)) (chdir (string-append ,name "-" ,version))
(let ((dir (string-append %output "/share/tuxpaint/stamps"))) (let ((dir (string-append %output "/share/tuxpaint/stamps")))
(mkdir-p dir) (mkdir-p dir)
(copy-recursively "stamps" dir))))) (copy-recursively "stamps" dir))
#t)))
(home-page (package-home-page tuxpaint)) (home-page (package-home-page tuxpaint))
(synopsis "Stamp images for Tux Paint") (synopsis "Stamp images for Tux Paint")
(description (description
@ -4087,7 +4091,7 @@ fight against their plot and save his fellow rabbits from slavery.")
(xz-path (string-append (assoc-ref %build-inputs "xz") "/bin"))) (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
(setenv "PATH" xz-path) (setenv "PATH" xz-path)
(mkdir out) (mkdir out)
(zero? (system* tar "xvf" source "-C" out "--strip=3")))))) (invoke tar "xvf" source "-C" out "--strip=3")))))
(synopsis "Data files for 0ad") (synopsis "Data files for 0ad")
(description "0ad-data provides the data files required by the game 0ad.") (description "0ad-data provides the data files required by the game 0ad.")
(home-page "https://play0ad.com") (home-page "https://play0ad.com")

View File

@ -5965,7 +5965,7 @@ associations for GNOME.")
(version (package-version gnome-shell)) (version (package-version gnome-shell))
(source #f) (source #f)
(build-system trivial-build-system) (build-system trivial-build-system)
(arguments '(#:builder (mkdir %output))) (arguments '(#:builder (begin (mkdir %output) #t)))
(propagated-inputs (propagated-inputs
;; TODO: Add more packages according to: ;; TODO: Add more packages according to:
;; <https://packages.debian.org/jessie/gnome-core>. ;; <https://packages.debian.org/jessie/gnome-core>.

View File

@ -85,12 +85,12 @@ list.")
(setenv "PATH" (string-append gzip "/bin" (setenv "PATH" (string-append gzip "/bin"
":" texinfo "/bin")) ":" texinfo "/bin"))
(mkdir-p info-dir) (mkdir-p info-dir)
(system* "makeinfo" "--output" info-dir (invoke "makeinfo" "--output" info-dir
(string-append source "/maintain.texi")) (string-append source "/maintain.texi"))
(system* "makeinfo" "--output" info-dir (invoke "makeinfo" "--output" info-dir
(string-append source "/standards.texi")) (string-append source "/standards.texi"))
(system* "gzip" (string-append info-dir "/maintain.info")) (invoke "gzip" (string-append info-dir "/maintain.info"))
(system* "gzip" (string-append info-dir "/standards.info")))))) (invoke "gzip" (string-append info-dir "/standards.info"))))))
(home-page "https://www.gnu.org/prep/standards/") (home-page "https://www.gnu.org/prep/standards/")
(synopsis "GNU coding standards and maintainer information") (synopsis "GNU coding standards and maintainer information")
(description "The GNU Coding Standards were written by Richard Stallman (description "The GNU Coding Standards were written by Richard Stallman

View File

@ -911,16 +911,15 @@ specification. These are the main features:
;; Install source module. ;; Install source module.
(copy-file file dest-file) (copy-file file dest-file)
;; Install compiled module. ;; Install compiled module.
(unless (zero? (system* guild "compile" (invoke guild "compile"
"-L" source "-L" source
"-o" go-file "-o" go-file
file)) file)))
(error (format #f "Failed to compile ~s to ~s!"
file go-file)))))
scm-files) scm-files)
;; Also copy over the README. ;; Also copy over the README.
(install-file "README.org" doc) (install-file "README.org" doc)
#t)))) #t))))
(inputs (inputs
`(("guile" ,guile-2.0))) `(("guile" ,guile-2.0)))
@ -1181,7 +1180,9 @@ inspired by the SCSH regular expression system.")
(invoke patch-command "--force" "--input" patch-file))) (invoke patch-command "--force" "--input" patch-file)))
;; compile to the destination ;; compile to the destination
(compile-file gdbm.scm-dest gdbm.go-dest))))) (compile-file gdbm.scm-dest gdbm.go-dest)
#t))))
(home-page "https://github.com/ijp/guile-gdbm") (home-page "https://github.com/ijp/guile-gdbm")
(synopsis "Guile bindings to the GDBM library via Guile's FFI") (synopsis "Guile bindings to the GDBM library via Guile's FFI")
(description (description

View File

@ -200,7 +200,8 @@ Library for GNU/Hurd.")
(match %build-inputs (match %build-inputs
(((names . directories) ...) (((names . directories) ...)
(union-build (assoc-ref %outputs "out") (union-build (assoc-ref %outputs "out")
directories)))))) directories)
#t)))))
(inputs `(("gnumach-headers" ,gnumach-headers) (inputs `(("gnumach-headers" ,gnumach-headers)
("hurd-headers" ,hurd-headers) ("hurd-headers" ,hurd-headers)
("hurd-minimal" ,hurd-minimal))) ("hurd-minimal" ,hurd-minimal)))

View File

@ -60,10 +60,10 @@
%build-inputs)) %build-inputs))
(let ((install-directory (string-append %output "/share/fonts/mathjax"))) (let ((install-directory (string-append %output "/share/fonts/mathjax")))
(mkdir-p install-directory) (mkdir-p install-directory)
(zero? (system* "tar" "-C" install-directory "-xvf" (invoke "tar" "-C" install-directory "-xvf"
(assoc-ref %build-inputs "source") (assoc-ref %build-inputs "source")
,(string-append "MathJax-" version "/fonts") ,(string-append "MathJax-" version "/fonts")
"--strip" "2")))))) "--strip" "2")))))
(native-inputs (native-inputs
`(("gzip" ,gzip) `(("gzip" ,gzip)
("tar" ,tar))) ("tar" ,tar)))
@ -94,7 +94,7 @@
(list (assoc-ref %build-inputs "glibc-utf8-locales"))) (list (assoc-ref %build-inputs "glibc-utf8-locales")))
(setenv "LANG" "en_US.UTF-8") (setenv "LANG" "en_US.UTF-8")
(let ((install-directory (string-append %output "/share/javascript/mathjax"))) (let ((install-directory (string-append %output "/share/javascript/mathjax")))
(system* "tar" "xvf" (assoc-ref %build-inputs "source") (invoke "tar" "xvf" (assoc-ref %build-inputs "source")
,(string-append "MathJax-" (package-version font-mathjax) ,(string-append "MathJax-" (package-version font-mathjax)
"/unpacked") "/unpacked")
"--strip" "2") "--strip" "2")
@ -118,7 +118,9 @@
(dump-port minified port))))) (dump-port minified port)))))
(else (else
(install-file file (dirname installed)))))) (install-file file (dirname installed))))))
(find-files ".")))))) (find-files "."))
#t))))
(native-inputs (native-inputs
`(("font-mathjax" ,font-mathjax) `(("font-mathjax" ,font-mathjax)
("glibc-utf8-locales" ,glibc-utf8-locales) ("glibc-utf8-locales" ,glibc-utf8-locales)
@ -159,7 +161,7 @@ be able to view it naturally and easily.")))
%build-inputs)) %build-inputs))
(let ((install-directory (string-append %output (let ((install-directory (string-append %output
"/share/javascript/respond/"))) "/share/javascript/respond/")))
(system* "tar" "xvf" (invoke "tar" "xvf"
(assoc-ref %build-inputs "source") (assoc-ref %build-inputs "source")
"--strip" "1") "--strip" "1")
(mkdir-p install-directory) (mkdir-p install-directory)

View File

@ -746,7 +746,7 @@ word compounding or character encoding.")
(doc (string-append out "/share/doc/" (doc (string-append out "/share/doc/"
,name)) ,name))
(unzip (assoc-ref %build-inputs "unzip"))) (unzip (assoc-ref %build-inputs "unzip")))
(system* (string-append unzip "/bin/unzip") (invoke (string-append unzip "/bin/unzip")
(assoc-ref %build-inputs "source")) (assoc-ref %build-inputs "source"))
(for-each (cut install-file <> hunspell) (for-each (cut install-file <> hunspell)
(find-files "." (find-files "."

View File

@ -844,7 +844,8 @@ slabtop, and skill.")
(with-directory-excursion bin (with-directory-excursion bin
(copy-file e2fsck "e2fsck") (copy-file e2fsck "e2fsck")
(remove-store-references "e2fsck") (remove-store-references "e2fsck")
(chmod "e2fsck" #o555)))))) (chmod "e2fsck" #o555))
#t))))
(home-page (package-home-page e2fsprogs)) (home-page (package-home-page e2fsprogs))
(synopsis "Statically-linked e2fsck command from e2fsprogs") (synopsis "Statically-linked e2fsck command from e2fsprogs")
(description "This package provides statically-linked e2fsck command taken (description "This package provides statically-linked e2fsck command taken
@ -3235,7 +3236,8 @@ repair and easy administration.")
(mkdir-p (dirname target)) (mkdir-p (dirname target))
(copy-file source target) (copy-file source target)
(remove-store-references target) (remove-store-references target)
(chmod target #o555))))) (chmod target #o555)
#t))))
(home-page (package-home-page btrfs-progs)) (home-page (package-home-page btrfs-progs))
(synopsis "Statically-linked btrfs command from btrfs-progs") (synopsis "Statically-linked btrfs command from btrfs-progs")
(description "This package provides the statically-linked @command{btrfs} (description "This package provides the statically-linked @command{btrfs}

View File

@ -1231,7 +1231,8 @@ multiple inspectors with independent history.")
(assoc-ref %outputs "image") (assoc-ref %outputs "image")
"/bin/slynk") "/bin/slynk")
%outputs %outputs
#:dependencies ',slynk-systems))))))) #:dependencies ',slynk-systems))
#t)))))
(define-public ecl-slynk (define-public ecl-slynk
(package (package
@ -1253,7 +1254,8 @@ multiple inspectors with independent history.")
(match %build-inputs (match %build-inputs
(((names . paths) ...) (((names . paths) ...)
(union-build (assoc-ref %outputs "out") (union-build (assoc-ref %outputs "out")
paths)))))))) paths)
#t)))))))
(define-public sbcl-stumpwm+slynk (define-public sbcl-stumpwm+slynk
(package (package

View File

@ -449,7 +449,7 @@ in LXDE.")
(version (package-version lxde-common)) (version (package-version lxde-common))
(source #f) (source #f)
(build-system trivial-build-system) (build-system trivial-build-system)
(arguments '(#:builder (mkdir %output))) (arguments '(#:builder (begin (mkdir %output) #t)))
(propagated-inputs (propagated-inputs
;; TODO: ;; TODO:
;; lxshortcut, lxsession-edit ;; lxshortcut, lxsession-edit

View File

@ -1808,7 +1808,7 @@ in Perl.")
(mkdir-p bin) (mkdir-p bin)
(with-directory-excursion bin (with-directory-excursion bin
(copy-file source "mb2md.gz") (copy-file source "mb2md.gz")
(system* (string-append gzip "/bin/gzip") "-d" "mb2md.gz") (invoke (string-append gzip "/bin/gzip") "-d" "mb2md.gz")
(substitute* "mb2md" (substitute* "mb2md"
(("#!/usr/bin/perl") (("#!/usr/bin/perl")
(string-append "#!/usr/bin/perl -I " perl5lib))) (string-append "#!/usr/bin/perl -I " perl5lib)))

View File

@ -86,14 +86,15 @@ processing library written in C.")
"/bin/unzip"))) "/bin/unzip")))
(mkdir-p out) (mkdir-p out)
(with-directory-excursion out (with-directory-excursion out
(system* unzip source) (invoke unzip source)
(mkdir "bin") (mkdir "bin")
(mkdir-p "share/doc") (mkdir-p "share/doc")
(rename-file "Markdown_1.0.1/Markdown.pl" "bin/markdown") (rename-file "Markdown_1.0.1/Markdown.pl" "bin/markdown")
(rename-file "Markdown_1.0.1/Markdown Readme.text" (rename-file "Markdown_1.0.1/Markdown Readme.text"
"share/doc/README") "share/doc/README")
(patch-shebang "bin/markdown" (list perlbd)) (patch-shebang "bin/markdown" (list perlbd))
(delete-file-recursively "Markdown_1.0.1")))))) (delete-file-recursively "Markdown_1.0.1"))
#t))))
(native-inputs `(("unzip" ,unzip))) (native-inputs `(("unzip" ,unzip)))
(inputs `(("perl" ,perl))) (inputs `(("perl" ,perl)))
(home-page "http://daringfireball.net/projects/markdown") (home-page "http://daringfireball.net/projects/markdown")

View File

@ -1523,7 +1523,8 @@ used to bring up authentication dialogs.")
(match %build-inputs (match %build-inputs
(((names . directories) ...) (((names . directories) ...)
(union-build (assoc-ref %outputs "out") (union-build (assoc-ref %outputs "out")
directories)))))) directories)
#t)))))
(inputs (inputs
;; TODO: Add more packages ;; TODO: Add more packages
`(("at-spi2-core" ,at-spi2-core) `(("at-spi2-core" ,at-spi2-core)

View File

@ -96,7 +96,8 @@ instance.")))
;; expect it. ;; expect it.
(mkdir-p (string-append out "/share")) (mkdir-p (string-append out "/share"))
(symlink (string-append in "/share/aclocal") (symlink (string-append in "/share/aclocal")
(string-append out "/share/aclocal")))))) (string-append out "/share/aclocal"))
#t))))
(native-inputs `(("pkg-config" ,%pkg-config))) (native-inputs `(("pkg-config" ,%pkg-config)))
;; Ignore native inputs, and set `PKG_CONFIG_PATH' for target inputs. ;; Ignore native inputs, and set `PKG_CONFIG_PATH' for target inputs.

View File

@ -1805,7 +1805,8 @@ This package provides the Python bindings.")))
(match %build-inputs (match %build-inputs
(((names . directories) ...) (((names . directories) ...)
(union-build (assoc-ref %outputs "out") (union-build (assoc-ref %outputs "out")
directories)))))) directories)
#t)))))
(inputs (inputs
`(("python-pyqt" ,python-pyqt) `(("python-pyqt" ,python-pyqt)
("python-qscintilla" ,python-qscintilla))) ("python-qscintilla" ,python-qscintilla)))

View File

@ -206,7 +206,8 @@ manager, which is required to build itself.")
;; binaries expect a compiler called cc. Thus symlink gcc ;; binaries expect a compiler called cc. Thus symlink gcc
;; to cc. ;; to cc.
(symlink (string-append gcc "/bin/gcc") (symlink (string-append gcc "/bin/gcc")
(string-append out "/bin/cc")))))) (string-append out "/bin/cc"))
#t))))
(home-page "https://www.rust-lang.org") (home-page "https://www.rust-lang.org")
(synopsis "Rust bootstrapping meta package") (synopsis "Rust bootstrapping meta package")
(description "Meta package for a rust environment. Provides pre-compiled (description "Meta package for a rust environment. Provides pre-compiled

View File

@ -846,7 +846,8 @@ metalinguistic abstraction, recursion, interpreters, and modular programming.")
"/rx"))) "/rx")))
(chdir (assoc-ref %build-inputs "source")) (chdir (assoc-ref %build-inputs "source"))
(mkdir-p share) (mkdir-p share)
(copy-recursively "." share))))) (copy-recursively "." share)
#t))))
(native-inputs (native-inputs
`(("source" ,source) `(("source" ,source)
("scheme48" ,scheme48))) ("scheme48" ,scheme48)))

View File

@ -324,7 +324,8 @@ If PACKAGES are not specified, all SDL packages are used."
(match %build-inputs (match %build-inputs
(((names . directories) ...) (((names . directories) ...)
(union-build (assoc-ref %outputs "out") (union-build (assoc-ref %outputs "out")
directories)))))) directories)
#t)))))
(inputs (map (lambda (package) (inputs (map (lambda (package)
(list (package-name package) package)) (list (package-name package) package))
packages)) packages))

View File

@ -617,7 +617,7 @@ curves, Cox models, and parametric accelerated failure time models.")
(name "r") (name "r")
(source #f) (source #f)
(build-system trivial-build-system) (build-system trivial-build-system)
(arguments '(#:builder (mkdir %output))) (arguments '(#:builder (begin (mkdir %output) #t)))
(propagated-inputs (propagated-inputs
`(("r-minimal" ,r-minimal) `(("r-minimal" ,r-minimal)
("r-boot" ,r-boot) ("r-boot" ,r-boot)

View File

@ -335,7 +335,8 @@ structs in the Go programming language.")
(match %build-inputs (match %build-inputs
(((names . directories) ...) (((names . directories) ...)
(union-build (assoc-ref %outputs "out") (union-build (assoc-ref %outputs "out")
directories)))))) directories)
#t)))))
(inputs (map (lambda (package) (inputs (map (lambda (package)
(list (package-name package) package)) (list (package-name package) package))
packages)) packages))
@ -771,7 +772,8 @@ environment")
(match %build-inputs (match %build-inputs
(((names . directories) ...) (((names . directories) ...)
(union-build (assoc-ref %outputs "out") (union-build (assoc-ref %outputs "out")
directories)))))) directories)
#t)))))
(inputs (map (lambda (package) (inputs (map (lambda (package)
(list (package-name package) package)) (list (package-name package) package))
packages)) packages))
@ -894,7 +896,8 @@ generation.")
(match %build-inputs (match %build-inputs
(((names . directories) ...) (((names . directories) ...)
(union-build (assoc-ref %outputs "out") (union-build (assoc-ref %outputs "out")
directories)))))) directories)
#t)))))
(inputs (map (lambda (package) (inputs (map (lambda (package)
(list (package-name package) package)) (list (package-name package) package))
packages)) packages))
@ -1221,7 +1224,8 @@ Tiny Encryption Algorithm (XTEA) block cipher.")
(match %build-inputs (match %build-inputs
(((names . directories) ...) (((names . directories) ...)
(union-build (assoc-ref %outputs "out") (union-build (assoc-ref %outputs "out")
directories)))))) directories)
#t)))))
(inputs (map (lambda (package) (inputs (map (lambda (package)
(list (package-name package) package)) (list (package-name package) package))
packages)) packages))
@ -1435,7 +1439,8 @@ for low-level interaction with the operating system.")
(match %build-inputs (match %build-inputs
(((names . directories) ...) (((names . directories) ...)
(union-build (assoc-ref %outputs "out") (union-build (assoc-ref %outputs "out")
directories)))))) directories)
#t)))))
(inputs (map (lambda (package) (inputs (map (lambda (package)
(list (package-name package) package)) (list (package-name package) package))
packages)) packages))
@ -1968,7 +1973,8 @@ Prometheus HTTP API.")
(match %build-inputs (match %build-inputs
(((names . directories) ...) (((names . directories) ...)
(union-build (assoc-ref %outputs "out") (union-build (assoc-ref %outputs "out")
directories)))))) directories)
#t)))))
(inputs (map (lambda (package) (inputs (map (lambda (package)
(list (package-name package) package)) (list (package-name package) package))
packages)) packages))

View File

@ -3519,9 +3519,10 @@ TeX metrics (VF and TFM files) and macros for use with LaTeX.")
"/share/texmf-dist/")) "/share/texmf-dist/"))
(unzip (string-append (assoc-ref %build-inputs "unzip") (unzip (string-append (assoc-ref %build-inputs "unzip")
"/bin/unzip"))) "/bin/unzip")))
(system* unzip (assoc-ref %build-inputs "source")) (invoke unzip (assoc-ref %build-inputs "source"))
(mkdir-p target) (mkdir-p target)
(copy-recursively "iwona" target))))) (copy-recursively "iwona" target)
#t))))
(native-inputs (native-inputs
`(("unzip" ,unzip))) `(("unzip" ,unzip)))
(home-page "http://jmn.pl/en/kurier-i-iwona/") (home-page "http://jmn.pl/en/kurier-i-iwona/")
@ -4021,7 +4022,8 @@ This package contains the complete tree of texmf-dist data.")
(for-each (for-each
(lambda (name) (lambda (name)
(symlink (string-append texmf "/share/" name) name)) (symlink (string-append texmf "/share/" name) name))
'("texmf-dist" "texmf-var")))))))) '("texmf-dist" "texmf-var"))))
#t))))
(synopsis "TeX Live, a package of the TeX typesetting system") (synopsis "TeX Live, a package of the TeX typesetting system")
(description (description
"TeX Live provides a comprehensive TeX document production system. "TeX Live provides a comprehensive TeX document production system.

View File

@ -5549,7 +5549,7 @@ named elements: the @code{status}, the @code{headers}, and the @code{body}.")
"PATH" '("bin") (map (match-lambda ((_ . input) input)) "PATH" '("bin") (map (match-lambda ((_ . input) input))
%build-inputs)) %build-inputs))
(mkdir-p share-rss-bridge) (mkdir-p share-rss-bridge)
(system* "tar" "xvf" (assoc-ref %build-inputs "source") (invoke "tar" "xvf" (assoc-ref %build-inputs "source")
"--strip-components" "1" "-C" share-rss-bridge) "--strip-components" "1" "-C" share-rss-bridge)
#t)))) #t))))
(home-page "https://github.com/RSS-Bridge/rss-bridge") (home-page "https://github.com/RSS-Bridge/rss-bridge")
@ -6340,7 +6340,8 @@ features include:
"if(isset($_SERVER['CACHE_DIR'])) "if(isset($_SERVER['CACHE_DIR']))
$cachepath = $_SERVER['CACHE_DIR']; $cachepath = $_SERVER['CACHE_DIR'];
else else
die('You need to set the CACHE_DIR variable first.');")))))) die('You need to set the CACHE_DIR variable first.');"))
#t))))
(home-page "https://framagit.org/Deevad/cat-avatar-generator") (home-page "https://framagit.org/Deevad/cat-avatar-generator")
(synopsis "Random avatar generator") (synopsis "Random avatar generator")
(description "Cat avatar generator is a generator of cat pictures optimised (description "Cat avatar generator is a generator of cat pictures optimised

View File

@ -255,7 +255,8 @@ integrate Windows applications into your desktop.")
"/patches/gitapply.sh") (("/usr/bin/env") env)) "/patches/gitapply.sh") (("/usr/bin/env") env))
(mkdir-p wine-staging) (mkdir-p wine-staging)
(copy-recursively (string-append "wine-staging-" ,version) (copy-recursively (string-append "wine-staging-" ,version)
wine-staging))))) wine-staging)
#t))))
(home-page "https://github.com/wine-staging") (home-page "https://github.com/wine-staging")
(synopsis "Patchset for Wine") (synopsis "Patchset for Wine")
(description (description

View File

@ -718,7 +718,8 @@ on your desktop.")
(match %build-inputs (match %build-inputs
(((names . directories) ...) (((names . directories) ...)
(union-build (assoc-ref %outputs "out") (union-build (assoc-ref %outputs "out")
directories)))))) directories)
#t)))))
(inputs (inputs
`(("exo" ,exo) `(("exo" ,exo)
("garcon" ,garcon) ("garcon" ,garcon)