diff options
author | Mark H Weaver <mhw@netris.org> | 2015-03-01 19:05:29 -0500 |
---|---|---|
committer | Mark H Weaver <mhw@netris.org> | 2015-03-01 19:05:29 -0500 |
commit | 3820d3973982048e5b93ad08d619c893bc50de14 (patch) | |
tree | 159a3ea785647fb8bb5e4b754f5c0f98d86e29d5 | |
parent | 751be9a056114d353bac12510bea33e8d5577f49 (diff) | |
parent | afff9058a0a9a3f3d633f563bb8a1a7d9e503165 (diff) | |
download | guix-3820d3973982048e5b93ad08d619c893bc50de14.tar.gz |
Merge branch 'master' into core-updates
Conflicts: gnu/packages/gnupg.scm
-rw-r--r-- | gnu/packages/audio.scm | 172 | ||||
-rw-r--r-- | gnu/packages/fonts.scm | 56 | ||||
-rw-r--r-- | gnu/packages/glib.scm | 6 | ||||
-rw-r--r-- | gnu/packages/gnupg.scm | 10 | ||||
-rw-r--r-- | gnu/packages/gtk.scm | 8 | ||||
-rw-r--r-- | gnu/packages/linux.scm | 4 | ||||
-rw-r--r-- | gnu/packages/lisp.scm | 49 | ||||
-rw-r--r-- | gnu/packages/mail.scm | 31 | ||||
-rw-r--r-- | gnu/packages/man.scm | 27 | ||||
-rw-r--r-- | gnu/packages/mpd.scm | 62 | ||||
-rw-r--r-- | gnu/packages/python.scm | 51 | ||||
-rw-r--r-- | gnu/packages/web.scm | 7 | ||||
-rw-r--r-- | gnu/packages/wget.scm | 10 | ||||
-rw-r--r-- | gnu/packages/xdisorg.scm | 33 | ||||
-rw-r--r-- | gnu/packages/xfce.scm | 72 | ||||
-rw-r--r-- | gnu/services/xorg.scm | 12 |
16 files changed, 483 insertions, 127 deletions
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 42449e89c9..91d78b81a5 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -53,6 +53,40 @@ #:use-module (gnu packages xml) #:use-module (srfi srfi-1)) +(define-public alsa-modular-synth + (package + (name "alsa-modular-synth") + (version "2.1.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/alsamodular/ams-" + version ".tar.bz2")) + (sha256 + (base32 + "1nb7qzzqlqa2x8h797jbwi18ihnfkxqg9lyi0c4nvf8ybwzxkzd2")))) + (build-system gnu-build-system) + (inputs + `(("alsa-lib" ,alsa-lib) + ;; We cannot use zita-alsa-pcmi (the successor of clalsadrv) due to + ;; license incompatibility. + ("clalsadrv" ,clalsadrv) + ("fftw" ,fftw) + ("jack" ,jack-1) + ("ladspa" ,ladspa) + ("liblo" ,liblo) + ("qt" ,qt-4))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://alsamodular.sourceforge.net/") + (synopsis "Realtime modular synthesizer and effect processor") + (description + "AlsaModularSynth is a digital implementation of a classical analog +modular synthesizer system. It uses virtual control voltages to control the +parameters of the modules. The control voltages which control the frequency +e.g. of the VCO (Voltage Controlled Oscillator) and VCF (Voltage Controlled +Filter) modules follow the convention of 1V / Octave.") + (license license:gpl2))) + (define-public aubio (package (name "aubio") @@ -199,6 +233,51 @@ bass section with five drawbars. A standalone JACK application and LV2 plugins are provided.") (license license:gpl2))) +(define-public clalsadrv + (package + (name "clalsadrv") + (version "2.0.0") + (source (origin + (method url-fetch) + (uri (string-append + "http://kokkinizita.linuxaudio.org" + "/linuxaudio/downloads/clalsadrv-" + version ".tar.bz2")) + (sha256 + (base32 + "0bsacx3l9065gk8g4137qmz2ij7s9x06aldvacinzlcslw7bd1kq")) + (modules '((guix build utils))) + (snippet + '(substitute* "libs/Makefile" + (("/sbin/ldconfig") "true"))))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no "check" target + #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:phases + (alist-cons-after + 'unpack + 'enter-directory + (lambda _ (chdir "libs")) + (alist-cons-after + 'install + 'install-symlink + (lambda _ + (symlink "libclalsadrv.so" + (string-append (assoc-ref %outputs "out") + "/lib/libclalsadrv.so.2"))) + ;; no configure script + (alist-delete 'configure %standard-phases))))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("fftw" ,fftw))) + (home-page "http://kokkinizita.linuxaudio.org") + (synopsis "C++ wrapper around the ALSA API") + (description + "clalsadrv is a C++ wrapper around the ALSA API simplifying access to +ALSA PCM devices.") + (license license:gpl2+))) + (define-public freepats (package (name "freepats") @@ -499,6 +578,52 @@ add functionality to support the needs of increasingly powerful audio software.") (license license:isc))) +(define-public lv2-mda-piano + (package + (name "lv2-mda-piano") + (version "0.0.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitorious.org/lv2-synths/lv2-mdametapiano.git") + (commit version))) + (sha256 + (base32 + "07lywf6lpfpndg3i9w752mmlg2hgn1bwp23h8b0mdj6awh67abqd")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags (list + "TYPE=mdaPiano" + (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:tests? #f ; no check target + #:phases (alist-delete 'configure %standard-phases))) + (inputs + `(("lv2" ,lv2) + ("lvtk" ,lvtk))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (native-search-paths + (list (search-path-specification + (variable "LV2_PATH") + (files '("lib/lv2"))))) + (home-page "http://elephly.net/lv2/mdapiano.html") + (synopsis "LV2 port of the mda Piano plugin") + (description "An LV2 port of the mda Piano VSTi.") + (license license:gpl3+))) + +(define-public lv2-mda-epiano + (package (inherit lv2-mda-piano) + (name "lv2-mda-epiano") + (arguments + `(#:make-flags (list + "TYPE=mdaEPiano" + (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:tests? #f ; no check target + #:phases (alist-delete 'configure %standard-phases))) + (home-page "http://elephly.net/lv2/mdaepiano.html") + (synopsis "LV2 port of the mda EPiano plugin") + (description "An LV2 port of the mda EPiano VSTi."))) + (define-public lvtk (package (name "lvtk") @@ -895,3 +1020,50 @@ portions of LAME.") to record and/or play sound using a callback function or a blocking read/write interface.") (license license:expat))) + +(define-public zita-alsa-pcmi + (package + (name "zita-alsa-pcmi") + (version "0.2.0") + (source (origin + (method url-fetch) + (uri (string-append + "http://kokkinizita.linuxaudio.org" + "/linuxaudio/downloads/zita-alsa-pcmi-" + version ".tar.bz2")) + (sha256 + (base32 + "1rgv332g82rrrlm4vdam6p2pyrisxbi7b3izfaa0pcjglafsy7j9")) + (modules '((guix build utils))) + (snippet + '(substitute* "libs/Makefile" + (("ldconfig") "true"))))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no "check" target + #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:phases + (alist-cons-after + 'unpack + 'enter-directory + (lambda _ (chdir "libs")) + (alist-cons-after + 'install + 'install-symlink + (lambda _ + (symlink "libzita-alsa-pcmi.so" + (string-append (assoc-ref %outputs "out") + "/lib/libzita-alsa-pcmi.so.0"))) + ;; no configure script + (alist-delete 'configure %standard-phases))))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("fftw" ,fftw))) + (home-page "http://kokkinizita.linuxaudio.org") + (synopsis "C++ wrapper around the ALSA API") + (description + "Zita-alsa-pcmi is a C++ wrapper around the ALSA API. It provides easy +access to ALSA PCM devices, taking care of the many functions required to +open, initialise and use a hw: device in mmap mode, and providing floating +point audio data.") + (license license:gpl3+))) diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index 94993f0d08..77abc2b700 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014 Joshua Grant <tadni@riseup.net> ;;; Copyright © 2014 Alex Kost <alezost@gmail.com> +;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -303,3 +304,58 @@ The Liberation Fonts are sponsored by Red Hat.") (description "Terminus Font is a clean, fixed width bitmap font, designed for long (8 and more hours per day) work with computers.") (license license:silofl1.1))) + +(define-public font-adobe-source-han-sans + (package + (name "font-adobe-source-han-sans") + (version "1.001R") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/adobe-fonts/source-han-sans/archive/" + version ".tar.gz")) + (file-name (string-append "source-han-sans-" version ".tar.gz")) + (sha256 + (base32 + "0cwz3d8jancl0a7vbjxhnh1vgwsjba62lahfjya9yrjkp1ndxlap")))) + (outputs '("out" ; OpenType/CFF Collection (OTC), 119 MiB. + "cn" "jp" "kr" "tw")) ; Region-specific Subset OpenType/CFF. + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((tar (string-append (assoc-ref %build-inputs + "tar") + "/bin/tar")) + (PATH (string-append (assoc-ref %build-inputs + "gzip") + "/bin")) + (install-opentype-fonts + (lambda (fonts-dir out) + (copy-recursively fonts-dir + (string-append (assoc-ref %outputs out) + "/share/fonts/opentype"))))) + (setenv "PATH" PATH) + (system* tar "xvf" (assoc-ref %build-inputs "source")) + (chdir (string-append "source-han-sans-" ,version)) + (install-opentype-fonts "OTC" "out") + (install-opentype-fonts "SubsetOTF/CN" "cn") + (install-opentype-fonts "SubsetOTF/JP" "jp") + (install-opentype-fonts "SubsetOTF/KR" "kr") + (install-opentype-fonts "SubsetOTF/TW" "tw"))))) + (native-inputs + `(("gzip" ,gzip) + ("tar" ,tar))) + (home-page "https://github.com/adobe-fonts/source-han-sans") + (synopsis "Pan-CJK fonts") + (description + "Source Han Sans is a sans serif Pan-CJK font family that is offered in +seven weights: ExtraLight, Light, Normal, Regular, Medium, Bold, and Heavy. +And in several OpenType/CFF-based deployment configurations to accommodate +various system requirements or limitations. As the name suggests, Pan-CJK +fonts are intended to support the characters necessary to render or display +text in Simplified Chinese, Traditional Chinese, Japanese, and Korean. +") + (license license:asl2.0))) diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index 66ee4fae97..a2c01e6440 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -212,11 +212,11 @@ dynamic loading, and an object system.") "/gobject-introspection-" version ".tar.xz")) (sha256 (base32 "1xwm7wmr9r9wp6xljb3bckx3a4siybavaq39w46ly7gpskxfv8iv")) - (patches (list + (patches (list (search-patch "gobject-introspection-cc.patch") (search-patch "gobject-introspection-girepository.patch") - (search-patch + (search-patch "gobject-introspection-absolute-shlib-path.patch"))))) (build-system gnu-build-system) (inputs @@ -466,7 +466,7 @@ useful for C++.") (inputs `(("python" ,python-2) ("glib" ,glib) - ("python2-py2cairo" ,python2-py2cairo) + ("python2-pycairo" ,python2-pycairo) ("gobject-introspection" ,gobject-introspection))) (propagated-inputs `(("libffi" ,libffi))) ;mentioned in pygobject-2.0.pc diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 63756a7925..b920f83c93 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> @@ -231,14 +231,14 @@ libskba (working with X.509 certificates and CMS data).") (define-public gnupg-2.0 (package (inherit gnupg) - (version "2.0.26") + (version "2.0.27") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/gnupg/gnupg-" version ".tar.bz2")) (sha256 (base32 - "1q5qcl5panrvcvpwvz6nl9gayl5a6vwvfhgdcxqpmbl2qc6y6n3p")))) + "1wihx7dphacg9fy5wfj93h236lr1w5gwzh7ir3js37wi9cz6sr2p")))) (inputs `(("bzip2" ,guix:bzip2) ("curl" ,curl) @@ -261,14 +261,14 @@ libskba (working with X.509 certificates and CMS data).") (define-public gnupg-1 (package (inherit gnupg) - (version "1.4.18") + (version "1.4.19") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/gnupg/gnupg-" version ".tar.bz2")) (sha256 (base32 - "1233bppjvdpbbl425ii6l7xvgy0879ghhnmwrph5b6c4g3dgvddp")))) + "11pxx26sfilh0vswylh9mhiifw5yffw7nn733zknw3sb0jfk22bz")))) (inputs `(("zlib" ,guix:zlib) ("bzip2" ,guix:bzip2) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 424b6e0f87..e33bcd5a27 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -533,7 +533,7 @@ graphics library with all of the benefits of Scheme: memory management, exceptions, macros, and a dynamic programming environment.") (license license:lgpl3+))) - + ;;; ;;; C++ bindings. ;;; @@ -706,9 +706,9 @@ extensive documentation, including API reference and a tutorial.") "Pycairo is a set of Python bindings for the Cairo graphics library.") (license license:lgpl3+))) -(define-public python2-py2cairo +(define-public python2-pycairo (package (inherit python-pycairo) - (name "python2-py2cairo") + (name "python2-pycairo") (version "1.10.0") (source (origin @@ -744,7 +744,7 @@ extensive documentation, including API reference and a tutorial.") `(("python" ,python-2) ("glib" ,glib))) (propagated-inputs - `(("python-pycairo" ,python2-py2cairo) ;loaded at runtime + `(("python-pycairo" ,python2-pycairo) ;loaded at runtime ("python-pygobject" ,python2-pygobject-2) ;referenced in pc file ("gtk+" ,gtk+-2))) (arguments diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 4bd3592672..6af90426a7 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -198,7 +198,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." #f))) (define-public linux-libre - (let* ((version "3.18.7") + (let* ((version "3.18.8") (build-phase '(lambda* (#:key system inputs #:allow-other-keys #:rest args) ;; Apply the neat patch. @@ -271,7 +271,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." (uri (linux-libre-urls version)) (sha256 (base32 - "113r2dzmiwlchp5b3hyjyx91jysx5j4hhxjw45gaky5nj9pax2rh")))) + "1ai2krm0svq52z4nm0qyw3q3ybfia83zvpv1f38q1wkllwq0gi6j")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) ("bc" ,bc) diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 5db3fa98f9..c592fbd83f 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -97,7 +97,7 @@ interface to the Tk widget system.") (define-public ecl (package (name "ecl") - (version "13.5.1") + (version "15.2.21") (source (origin (method url-fetch) @@ -105,33 +105,40 @@ interface to the Tk widget system.") (version-major+minor version) "/ecl-" version ".tgz")) (sha256 - (base32 "18ic8w9sdl0dh3kmyc9lsrafikrd9cg1jkhhr25p9saz0v75f77r")))) + (base32 "05di23v977byf67rq5bdshw8lqbby1ycbscdcl1vca0z6r1s204j")))) (build-system gnu-build-system) + ;; src/configure uses 'which' to confirm the existence of 'gzip'. (native-inputs `(("which" ,which))) (inputs `(("gmp" ,gmp) ("libatomic-ops" ,libatomic-ops) ("libgc" ,libgc) ("libffi" ,libffi))) (arguments - '(#:phases - ;; The test-suite seems to assume that ECL is installed. So re-order - ;; the phases, then reference the installed executable. - (let* ((check-phase (assq-ref %standard-phases 'check)) - (rearranged-phases - (alist-cons-after 'install 'check check-phase - (alist-delete 'check %standard-phases)))) - (alist-cons-before - 'check 'pre-check - (lambda* (#:key outputs #:allow-other-keys) - (substitute* '("build/tests/Makefile") - (("ECL=ecl") - (string-append - "ECL=" (assoc-ref outputs "out") "/bin/ecl")))) - rearranged-phases)) - ;; Parallel builds explicitly not supported: - ;; http://sourceforge.net/p/ecls/bugs/98/ - #:parallel-build? #f - #:parallel-tests? #f)) + '(#:tests? #f + ;; During 'make check', ECL fails to initialize with "protocol not + ;; supported", presumably because /etc/protocols is missing in the + ;; build environment. See <http://sourceforge.net/p/ecls/bugs/300/>. + ;; + ;; Should the test suite be re-enabled, it might be necessary to add + ;; '#:parallel-tests #f'. See the same bug report as above. + ;; + ;; The following might also be necessary, due to 'make check' assuming + ;; ECL is installed. See <http://sourceforge.net/p/ecls/bugs/299/>. + ;; + ;; #:phases + ;; (let* ((check-phase (assq-ref %standard-phases 'check)) + ;; (rearranged-phases + ;; (alist-cons-after 'install 'check check-phase + ;; (alist-delete 'check %standard-phases)))) + ;; (alist-cons-before + ;; 'check 'pre-check + ;; (lambda* (#:key outputs #:allow-other-keys) + ;; (substitute* '("build/tests/Makefile") + ;; (("ECL=ecl") + ;; (string-append + ;; "ECL=" (assoc-ref outputs "out") "/bin/ecl")))) + ;; rearranged-phases)) + )) (home-page "http://ecls.sourceforge.net/") (synopsis "Embeddable Common Lisp") (description "ECL is an implementation of the Common Lisp language as diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 0dfc282ea8..33076c1a60 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2014 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2014 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> +;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -305,18 +306,22 @@ repository and Maildir/IMAP as LOCAL repository.") (define-public mu (package (name "mu") - (version "0.9.9.5") + (version "0.9.11") (source (origin (method url-fetch) - (uri (string-append "https://mu0.googlecode.com/files/mu-" + (uri (string-append "https://github.com/djcb/mu/archive/v" version ".tar.gz")) + (file-name (string-append "mu-" version ".tar.gz")) (sha256 (base32 - "1hwkliyb8fjrz5sw9fcisssig0jkdxzhccw0ld0l9a10q1l9mqhp")))) + "01n1lzq4pfsm5pn932p948d1z55yqc7kkm1ifjxjchb3k8lr66fh")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) ("glib" ,glib "bin") ; for gtester + ("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) ("texinfo" ,texinfo))) ;; TODO: Add webkit and gtk to build the mug GUI. (inputs @@ -327,14 +332,18 @@ repository and Maildir/IMAP as LOCAL repository.") ("gmime" ,gmime) ("tzdata" ,tzdata))) ;for mu/test/test-mu-query.c (arguments - '(#:phases (alist-cons-before - 'check 'check-tz-setup - (lambda* (#:key inputs #:allow-other-keys) - ;; For mu/test/test-mu-query.c - (setenv "TZDIR" - (string-append (assoc-ref inputs "tzdata") - "/share/zoneinfo"))) - %standard-phases))) + '(#:phases (alist-cons-after + 'unpack 'autoreconf + (lambda _ + (zero? (system* "autoreconf" "-vi"))) + (alist-cons-before + 'check 'check-tz-setup + (lambda* (#:key inputs #:allow-other-keys) + ;; For mu/test/test-mu-query.c + (setenv "TZDIR" + (string-append (assoc-ref inputs "tzdata") + "/share/zoneinfo"))) + %standard-phases)))) (home-page "http://www.djcbsoftware.nl/code/mu/") (synopsis "Quickly find emails") (description diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm index 712622aee8..3507c0c1fb 100644 --- a/gnu/packages/man.scm +++ b/gnu/packages/man.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2014 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014 David Thompson <dthompson2@worcester.edu> +;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,6 +24,7 @@ #:use-module (guix packages) #:use-module (guix build-system gnu) #:use-module (gnu packages flex) + #:use-module (gnu packages gawk) #:use-module (gnu packages gdbm) #:use-module (gnu packages groff) #:use-module (gnu packages less) @@ -176,3 +178,28 @@ Linux kernel and C library interfaces employed by user-space programs.") \"--help\" and \"--version\" command-line arguments into a manual page automatically.") (license gpl3+))) + +(define-public txt2man + (package + (name "txt2man") + (version "1.5.6") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mvertes/txt2man/archive/txt2man-" + version ".tar.gz")) + (sha256 + (base32 + "0sjq687jknq65wbnjh2siq8hc09ydpnlmrkrnwl66mrhd4n9g7fz")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no "check" target + #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out"))) + #:phases (alist-delete 'configure %standard-phases))) + (inputs + `(("gawk" ,gawk))) + (home-page "https://github.com/mvertes/txt2man") + (synopsis "Convert text to man page") + (description "Txt2man converts flat ASCII text to man page format.") + (license gpl2+))) diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm index a1b427271d..2d7ca6ef37 100644 --- a/gnu/packages/mpd.scm +++ b/gnu/packages/mpd.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com> ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> +;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,6 +28,8 @@ #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (gnu packages avahi) + #:use-module (gnu packages boost) + #:use-module (gnu packages readline) #:use-module (gnu packages compression) #:use-module (gnu packages curl) #:use-module (gnu packages doxygen) @@ -35,16 +38,13 @@ #:use-module (gnu packages mp3) #:use-module (gnu packages ncurses) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages autotools) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages databases) #:use-module (gnu packages video) - #:use-module (gnu packages xiph) - #:export (libmpdclient - mpd - ncmpc - ncmpcpp)) + #:use-module (gnu packages xiph)) -(define libmpdclient +(define-public libmpdclient (package (name "libmpdclient") (version "2.9") @@ -65,7 +65,7 @@ interfacing MPD in the C, C++ & Objective C languages.") (home-page "http://www.musicpd.org/libs/libmpdclient/") (license license:bsd-3))) -(define mpd +(define-public mpd (package (name "mpd") (version "0.18.8") @@ -126,7 +126,29 @@ protocol.") (home-page "http://www.musicpd.org/") (license license:gpl2))) -(define ncmpc +(define-public mpd-mpc + (package + (name "mpd-mpc") + (version "0.26") + (source (origin + (method url-fetch) + (uri + (string-append "http://www.musicpd.org/download/mpc/" + (car (string-split version #\.)) + "/mpc-" version ".tar.xz")) + (sha256 + (base32 + "0hp2qv6w2v902dhrmck5hg32s1ai6xiv9n61a3n6prfcfdqmywr0")))) + (build-system gnu-build-system) + (inputs `(("libmpdclient" ,libmpdclient))) + (native-inputs `(("pkg-config" ,pkg-config))) + (synopsis "Music Player Daemon client") + (description "MPC is a minimalist command line interface to MPD, the music +player daemon.") + (home-page "http://www.musicpd.org/clients/mpc/") + (license license:gpl2))) + +(define-public ncmpc (package (name "ncmpc") (version "0.21") @@ -150,10 +172,10 @@ terminal using ncurses.") (home-page "http://www.musicpd.org/clients/ncmpc/") (license license:gpl2))) -(define ncmpcpp +(define-public ncmpcpp (package (name "ncmpcpp") - (version "0.5.10") + (version "0.6.2") (source (origin (method url-fetch) (uri @@ -161,11 +183,27 @@ terminal using ncurses.") version ".tar.bz2")) (sha256 (base32 - "1a54g6dary1rirrny9fd0hpxpyyffypni3mpbdpvmjnrl9v56vgz")))) + "1mrd6m6ph0fscxp9x96ipxh6ai7w0n1miapcfqrqfy058qx5zbck")))) (build-system gnu-build-system) (inputs `(("libmpdclient" ,libmpdclient) + ("boost" ,boost) + ("readline" ,readline) ("ncurses" ,ncurses))) - (native-inputs `(("pkg-config" ,pkg-config))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("automake" ,automake) + ("autoconf" ,autoconf) + ("libtool" ,libtool))) + (arguments + '(#:configure-flags + '("BOOST_LIB_SUFFIX=") + #:phases + (alist-cons-after + 'unpack 'autogen + (lambda _ + (setenv "NOCONFIGURE" "true") + (zero? (system* "sh" "autogen.sh"))) + %standard-phases))) (synopsis "Featureful ncurses based MPD client inspired by ncmpc") (description "Ncmpcpp is an mpd client with a UI very similar to ncmpc, but it provides new useful features such as support for regular expressions diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index e044e1955b..3cf2c545ed 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -2078,14 +2078,11 @@ capabilities.") (define-public python2-numpy (let ((numpy (package-with-python2 python-numpy))) (package (inherit numpy) - ;; Make sure we use exactly PYTHON2-NUMPYDOC, which is customized for - ;; Python 2. Since it is also an input to PYTHON2-MATPLOTLIB, we need to - ;; import the right version of 'matplotlib' as well. - (inputs `(("python2-numpydoc" ,python2-numpydoc) - ("python2-matplotlib" ,python2-matplotlib) - ,@(alist-delete "python-numpydoc" - (alist-delete "python-matplotlib" - (package-inputs numpy)))))))) + ;; Make sure we use exactly PYTHON2-MATPLOTLIB, which is customized for + ;; Python 2. + (inputs `(("python2-matplotlib" ,python2-matplotlib) + ,@(alist-delete "python-matplotlib" + (package-inputs numpy))))))) (define-public python-pyparsing (package @@ -2147,7 +2144,15 @@ that client code uses to construct the grammar directly in Python code.") version ".tar.gz")) (sha256 (base32 - "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k")))) + "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Drop a test requiring matplotlib, which we cannot add as an + ;; input since it would create a circular dependency: Extend the + ;; test for Python 3, where it is already dropped, to Python 2. + (substitute* "numpydoc/tests/test_plot_directive.py" + (("3") "2")))))) (build-system python-build-system) (inputs `(("python-setuptools" ,python-setuptools) @@ -2162,13 +2167,7 @@ that client code uses to construct the grammar directly in Python code.") (license bsd-2))) (define-public python2-numpydoc - (package - (inherit (package-with-python2 python-numpydoc)) - ;; With python-2 1 test (out of 30) fails because it doesn't find - ;; matplotlib. With python-3 it seems to detect at run-time the absence - ;; of matplotlib. - (arguments `(#:tests? #f - #:python ,python-2)))) + (package-with-python2 python-numpydoc)) (define-public python-matplotlib (package @@ -2281,19 +2280,15 @@ toolkits.") (define-public python2-matplotlib (let ((matplotlib (package-with-python2 python-matplotlib))) (package (inherit matplotlib) - ;; Make sure we use exactly PYTHON2-NUMPYDOC, which is - ;; customized for Python 2. + ;; Make sure to use special packages for Python 2 instead + ;; of those automatically rewritten by package-with-python2. (propagated-inputs - `(("python2-py2cairo" ,python2-py2cairo) + `(("python2-pycairo" ,python2-pycairo) ("python2-pygobject-2" ,python2-pygobject-2) ,@(alist-delete "python-pycairo" (alist-delete "python-pygobject" (package-propagated-inputs - matplotlib))))) - (inputs - `(("python2-numpydoc" ,python2-numpydoc) - ,@(alist-delete "python-numpydoc" - (package-inputs matplotlib))))))) + matplotlib)))))))) (define-public python-scipy (package @@ -2806,11 +2801,9 @@ computing.") (package (inherit ipython) ;; Make sure we use custom python2-NAME packages. (inputs - `(("python2-numpydoc" ,python2-numpydoc) - ("python2-matplotlib" ,python2-matplotlib) - ,@(alist-delete "python-numpydoc" - (alist-delete "python-matplotlib" - (package-inputs ipython)))))))) + `(("python2-matplotlib" ,python2-matplotlib) + ,@(alist-delete "python-matplotlib" + (package-inputs ipython))))))) (define-public python-isodate (package diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index f0f974661b..5f917511f9 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -248,7 +248,12 @@ for efficient socket-like bidirectional reliable communication channels.") (sha256 (base32 "10s7xxxx6pp4ydp3san69sa6q379ih3pv92fyi565ggmlw8igv7a")) - (file-name (string-append name "-" version ".tar.gz")))) + (file-name (string-append name "-" version ".tar.gz")) + (modules '((guix build utils))) + (snippet + ;; Believe it or not, the .pc is invalid. Fix it. + '(substitute* "libpsl.pc.in" + (("-llibpsl") "-lpsl"))))) (build-system gnu-build-system) (inputs `(("icu4c" ,icu4c))) ;; The release tarball lacks the generated files. diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm index 8debe4baea..3ca297d90c 100644 --- a/gnu/packages/wget.scm +++ b/gnu/packages/wget.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> -;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,6 +24,7 @@ #:use-module (gnu packages python) #:use-module (gnu packages perl) #:use-module (gnu packages web) + #:use-module (gnu packages pkg-config) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu)) @@ -31,7 +32,7 @@ (define-public wget (package (name "wget") - (version "1.16.1") + (version "1.16.2") (source (origin (method url-fetch) @@ -39,14 +40,15 @@ version ".tar.xz")) (sha256 (base32 - "0csdw41hixa4kd0m19r7p41sip1hlnkp5y62bdzq9zhmxq3wg5ib")))) + "1mfpvhgzvpvw36wmkwyyds3ilz74s2gn8yjqvynkbc8frcdxxpx7")))) (build-system gnu-build-system) (inputs `(("gnutls" ,gnutls) ("libidn" ,libidn) ("libpsl" ,libpsl))) (native-inputs - `(("perl" ,perl) + `(("pkg-config" ,pkg-config) + ("perl" ,perl) ("python" ,python) ;for testenv suite ("perl-http-daemon" ,perl-http-daemon) ("perl-io-socket-ssl" ,perl-io-socket-ssl))) diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index d0c983dc78..67aa34a84b 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com> ;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -32,6 +33,7 @@ #:use-module (gnu packages glib) #:use-module (gnu packages perl) #:use-module (gnu packages linux) + #:use-module (gnu packages guile) #:use-module (gnu packages xorg)) ;; packages outside the x.org system proper @@ -420,3 +422,34 @@ X Window System.") "XOSD provides a C library and a simple utility (osd_cat) for displaying transparent text on your screen.") (license license:gpl2+))) + +(define-public xbindkeys + (package + (name "xbindkeys") + (version "1.8.6") + (source (origin + (method url-fetch) + ;; Download from the savannah mirror list fails + (uri (string-append + "http://www.nongnu.org/xbindkeys/xbindkeys-" + version + ".tar.gz")) + (sha256 + (base32 + "060df6d8y727jp1inp7blp44cs8a7jig7vcm8ndsn6gw36z1h3bc")))) + (build-system gnu-build-system) + (inputs + `(("libx11" ,libx11) + ("guile" ,guile-2.0))) + (home-page "http://www.nongnu.org/xbindkeys/") + (synopsis "Associate a combination of keys with a shell command") + (description + "XBindKeys is a program that allows you to launch shell commands with +your keyboard or your mouse under the X Window System. It links commands to +keys or mouse buttons, using a configuration file. It's independent of the +window manager and can capture all keyboard keys (ex: Power, Wake...). It +optionally supports a Guile-based configuration file layout, which enables you +to access all XBindKeys internals, so you can have key combinations, double +clicks or timed double clicks take actions. Also all functions that work in +Guile will work for XBindKeys.") + (license license:gpl2+))) diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index fb5427c94d..3ec081133a 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -65,7 +65,7 @@ (define-public libxfce4util (package (name "libxfce4util") - (version "4.10.0") + (version "4.12.1") (source (origin (method url-fetch) (uri (string-append "http://archive.xfce.org/xfce/" @@ -73,7 +73,7 @@ "/src/" name "-" version ".tar.bz2")) (sha256 (base32 - "13k0wwbbqvdmbj4xmk4nxdlgvrdgr5y6r3dk380mzfw053hzwy89")))) + "07c8r3xwx5is298zk77m3r784gmr5y4mh8bbca5zdjqk5vxdwsw7")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -120,7 +120,7 @@ storage system.") (define-public libxfce4ui (package (name "libxfce4ui") - (version "4.10.0") + (version "4.12.0") (source (origin (method url-fetch) (uri (string-append "http://archive.xfce.org/xfce/" @@ -128,7 +128,7 @@ storage system.") "/src/" name "-" version ".tar.bz2")) (sha256 (base32 - "1qm31s6568cz4c8rl9fsfq0xmf7pldxm0ki62gx1cpybihlgmfd2")))) + "11rrhqxnfwx5jls3nlg9s2x8saag9f2zqk9cdm6hr3bs6cr9a781")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -151,14 +151,14 @@ to share commonly used Xfce widgets amoung the Xfce applications.") (define-public exo (package (name "exo") - (version "0.8.0") + (version "0.10.3") (source (origin (method url-fetch) - (uri (string-append "http://archive.xfce.org/xfce/4.10/src/" + (uri (string-append "http://archive.xfce.org/xfce/4.12/src/" name "-" version ".tar.bz2")) (sha256 (base32 - "1c05pbagw14djv5zmqg34qfj40jav8sd10w2zi2wpzrad4qal8bf")))) + "1g9651ra395v2fmzb943l68b9pg0rfxc19x97a62crchxwa4nw4m")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -182,21 +182,21 @@ development.") (define-public garcon (package (name "garcon") - (version "0.2.0") + (version "0.4.0") (source (origin (method url-fetch) - (uri (string-append "http://archive.xfce.org/xfce/4.10/src/" + (uri (string-append "http://archive.xfce.org/xfce/4.12/src/" name "-" version ".tar.bz2")) (sha256 (base32 - "0v7pkvxcayi86z4f173z5l7w270f3g369sa88z59w0y0p7ns7ph2")))) + "0wm9pjbwq53s3n3nwvsyf0q8lbmhiy2ln3bn5ncihr9vf5cwhzbq")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) ("intltool" ,intltool) ("glib:bin" ,glib "bin"))) - (propagated-inputs `(("glib" ,glib))) ; required by garcon-1.pc - (inputs `(("libxfce4util" ,libxfce4util))) + (propagated-inputs + `(("libxfce4ui" ,libxfce4ui))) ; required by garcon-gtk2-1.pc (home-page "http://www.xfce.org/") (synopsis "Implementation of the freedesktop.org menu specification") (description @@ -209,14 +209,14 @@ merging features essential for loading menus modified with menu editors.") (define-public tumbler (package (name "tumbler") - (version "0.1.30") + (version "0.1.31") (source (origin (method url-fetch) (uri (string-append "http://archive.xfce.org/src/xfce/tumbler/0.1/" name "-" version ".tar.bz2")) (sha256 (base32 - "013kacqyy1vya7kp6jgc1almp3cbbvq96a3r7f5myiihr1whvhp7")))) + "0wvip28gm2w061hn84zp2q4dv947ihylrppahn4cjspzff935zfh")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -244,7 +244,7 @@ management D-Bus specification.") (define-public xfce4-panel (package (name "xfce4-panel") - (version "4.10.0") + (version "4.12.0") (source (origin (method url-fetch) (uri (string-append "http://archive.xfce.org/xfce/" @@ -252,7 +252,7 @@ management D-Bus specification.") "/src/" name "-" version ".tar.bz2")) (sha256 (base32 - "1f8903nx6ivzircl8d8s9zna4vjgfy0qhjk5d2x19g9bmycgj89k")) + "1c4p3ckghvsad1sj5v8wmar5mh9cbhail9mmhad2f9pwwb10z4ih")) (patches (list (search-patch "xfce4-panel-plugins.patch"))))) (build-system gnu-build-system) (native-inputs @@ -309,7 +309,7 @@ applications menu, workspace switcher and more.") (define-public xfce4-appfinder (package (name "xfce4-appfinder") - (version "4.10.0") + (version "4.12.0") (source (origin (method url-fetch) (uri (string-append "http://archive.xfce.org/xfce/" @@ -317,7 +317,7 @@ applications menu, workspace switcher and more.") "/src/" name "-" version ".tar.bz2")) (sha256 (base32 - "0falckrziw8m1a72nxd7fqq84r3xfbrb6lv35flsca346rzawah4")))) + "0ry5hin8xhgnkmm9vs7jq8blk1cnbyr0s18nm1j6nsm7360abm1a")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -335,7 +335,7 @@ your system in categories, so you can quickly find and launch them.") (define-public xfce4-session (package (name "xfce4-session") - (version "4.10.0") + (version "4.12.0") (source (origin (method url-fetch) (uri (string-append "http://archive.xfce.org/xfce/" @@ -343,7 +343,7 @@ your system in categories, so you can quickly find and launch them.") "/src/" name "-" version ".tar.bz2")) (sha256 (base32 - "1kj65jkjhd0ysf0yxsf88wzpyv6n8i8qgd3gb502hf1x9jksk2mv")))) + "01kvbd09c06j20n155hracsgrq06rlmfgdywffjsvlwpn19m9j38")))) (build-system gnu-build-system) (arguments '(#:configure-flags @@ -366,7 +366,7 @@ allows you to shutdown the computer from Xfce.") (define-public xfce4-settings (package (name "xfce4-settings") - (version "4.10.0") + (version "4.12.0") (source (origin (method url-fetch) (uri (string-append "http://archive.xfce.org/xfce/" @@ -374,7 +374,7 @@ allows you to shutdown the computer from Xfce.") "/src/" name "-" version ".tar.bz2")) (sha256 (base32 - "0zppq747z9lrxyv5zrrvpalq7hb3gfhy9p7qbldisgv7m6dz0hq8")))) + "108za1cmjslwzkdl76x9kwxkq8z734kg9nz8rxk057f10pqwxgh4")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -397,14 +397,14 @@ like appearance, display, keyboard and mouse settings.") (define-public thunar (package (name "thunar") - (version "1.4.0") + (version "1.6.6") (source (origin (method url-fetch) - (uri (string-append "http://archive.xfce.org/xfce/4.10/src/" + (uri (string-append "http://archive.xfce.org/xfce/4.12/src/" "Thunar-" version ".tar.bz2")) (sha256 (base32 - "1fn8wjzkfvnx2giv3rrg2cyrr2c96f9mskgvcji0ixyfcjga249c")))) + "1cl9v3rdzipyyxml3pyrzspxfmmssz5h5snpj18irq4an42539dr")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -428,14 +428,14 @@ fast.") (define-public thunar-volman (package (name "thunar-volman") - (version "0.8.0") + (version "0.8.1") (source (origin (method url-fetch) - (uri (string-append "http://archive.xfce.org/xfce/4.10/src/" + (uri (string-append "http://archive.xfce.org/xfce/4.12/src/" name "-" version ".tar.bz2")) (sha256 (base32 - "1sxw09fwyn5sr6ipxk7r8gqjyf41c2v7vkgl0l6mhy5mcb48f27z")))) + "1gf259n1v3y23n1zlkhyr6r0i8j59rnl1cmxvxj6la9cwdfbn22s")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -458,7 +458,7 @@ and import the new pictures from your camera.") (define-public xfwm4 (package (name "xfwm4") - (version "4.10.0") + (version "4.12.0") (source (origin (method url-fetch) (uri (string-append "http://archive.xfce.org/xfce/" @@ -466,16 +466,18 @@ and import the new pictures from your camera.") "/src/" name "-" version ".tar.bz2")) (sha256 (base32 - "170zzs7adj47srsi2cl723w9pl8k8awd7w1bpzxby7hj92zmf8s9")))) + "0fnc2ps4k733n9qfpxrz047h1myyqjzxczl7fmkjmqwshvicpx19")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) ("intltool" ,intltool))) (inputs - `(("libwnck", libwnck-1) + `(("libdrm" ,libdrm) + ("libwnck" ,libwnck-1) + ("libxcomposite" ,libxcomposite) + ("libxdamage" ,libxdamage) ("libxfce4ui" ,libxfce4ui) - ("libxrandr" ,libxrandr) - ("libxcomposite" ,libxcomposite))) + ("libxrandr" ,libxrandr))) (home-page "http://www.xfce.org/") (synopsis "Xfce window manager") (description @@ -486,7 +488,7 @@ on the screen.") (define-public xfdesktop (package (name "xfdesktop") - (version "4.10.0") + (version "4.12.0") (source (origin (method url-fetch) (uri (string-append "http://archive.xfce.org/xfce/" @@ -494,7 +496,7 @@ on the screen.") "/src/" name "-" version ".tar.bz2")) (sha256 (base32 - "0yrddj1lgk3xn4w340y89z7x2isks72ia36pka08kk2x8gpfcyl9")))) + "1ivzgg4792nid6wcgd1nq5vc3z0y5ip6ymq7ci5j2qkp663qnykf")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 69a89584e0..bc1774840b 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -155,6 +155,13 @@ which should be passed to this script as the first argument. If not, the #~(begin (use-modules (ice-9 match)) + (define (close-all-fdes) + ;; Close all the open file descriptors. + (let loop ((fd 0)) + (when (< fd 4096) ;FIXME: use sysconf + _SC_OPEN_MAX + (false-if-exception (close-fdes fd)) + (loop (+ 1 fd))))) + (define (exec-from-login-shell command . args) ;; Run COMMAND from a login shell so that it gets to see the same ;; environment variables that one gets when logging in on a tty, for @@ -163,6 +170,11 @@ which should be passed to this script as the first argument. If not, the (shell (passwd:shell pw)) (st (stat command #f))) (when (and st (not (zero? (logand (stat:mode st) #o100)))) + ;; Close any open file descriptors. This is all the more + ;; important that SLiM itself exec's us directly without closing + ;; its own file descriptors! + (close-all-fdes) + ;; The '--login' option is supported at least by Bash and zsh. (execl shell shell "--login" "-c" (string-join (cons command args)))))) |