From c3b97bd902cbcf9a59f24997ebfb6fcf4186c6f6 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 29 Aug 2015 14:48:26 +0800 Subject: gnu: Add yelp-xsl. * gnu/packages/gnome.scm (yelp-xsl): New variable. --- gnu/packages/gnome.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index e4ab166700..febb11b68b 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -3371,3 +3371,27 @@ (define-public d-feet "D-Feet is a D-Bus debugger, which can be used to inspect D-Bus interfaces of running programs and invoke methods on those interfaces.") (license license:gpl2+))) + +(define-public yelp-xsl + (package + (name "yelp-xsl") + (version "3.16.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0jhpni4mmfvj3xf57rjm61nc8d0x66hz9gd1ywws5lh39g6fx59j")))) + (build-system gnu-build-system) + (native-inputs + `(("intltool" ,intltool) + ("itstool" ,itstool) + ("xmllint" ,libxml2))) + (home-page "https://wiki.gnome.org/Apps/Yelp") + (synopsis "XSL stylesheets for Yelp") + (description + "Yelp-xsl contains XSL stylesheets that are used by the yelp help browser +to format Docbook and Mallard documents.") + (license license:gpl2+))) -- cgit v1.2.3 From de3d612a525223d3bec2ad182cdfd97cb5d4624d Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 29 Aug 2015 14:48:57 +0800 Subject: gnu: Add yelp. * gnu/packages/gnome.scm (yelp): New variable. --- gnu/packages/gnome.scm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index febb11b68b..8d66ed35fc 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -3395,3 +3395,38 @@ (define-public yelp-xsl "Yelp-xsl contains XSL stylesheets that are used by the yelp help browser to format Docbook and Mallard documents.") (license license:gpl2+))) + +(define-public yelp + (package + (name "yelp") + (version "3.16.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1jk7aad1srykhgc3x0hd3q3dnlshmy1ak00alwjzaasxvy6hp0b0")))) + (build-system glib-or-gtk-build-system) + (native-inputs + `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc. + ("intltool" ,intltool) + ("itstool" ,itstool) + ("pkg-config" ,pkg-config))) + (propagated-inputs + `(("dconf" ,dconf))) + (inputs + `(("libxslt" ,libxslt) + ("sqlite" ,sqlite) + ("webkitgtk" ,webkitgtk-2.4) + ("yelp-xsl" ,yelp-xsl) + ;; XXX: need by libwebkitgtk-3.0.la. + ("icu4c" ,(@ (gnu packages icu4c) icu4c)))) + (home-page "https://wiki.gnome.org/Apps/Yelp") + (synopsis "GNOME help browser") + (description + "Yelp is the help viewer in Gnome. It natively views Mallard, DocBook, +man, info, and HTML documents. It can locate documents according to the +freedesktop.org help system specification.") + (license license:gpl2+))) -- cgit v1.2.3 From 122d0d10c63acbfe5c32b8424691868427a767b5 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 29 Aug 2015 14:51:51 +0800 Subject: gnu: Add yelp-tools. * gnu/packages/gnome.scm (yelp-tools): New variable. --- gnu/packages/gnome.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 8d66ed35fc..f874414582 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -3430,3 +3430,34 @@ (define-public yelp man, info, and HTML documents. It can locate documents according to the freedesktop.org help system specification.") (license license:gpl2+))) + +(define-public yelp-tools + (package + (name "yelp-tools") + (version "3.16.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "177qzvj5w019isdp41qxqcys2kc4sq2x6dqhqn6l9ipib8a6rxml")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (propagated-inputs + ;; Needed by `yelp-build', `yelp-check' or 'yelp.m4'. + `(("itstool" ,itstool) + ("xmllint" ,libxml2) + ("xsltproc" ,libxslt))) + (inputs + `(("yelp-xsl" ,yelp-xsl))) + (home-page "https://wiki.gnome.org/Apps/Yelp/Tools") + (synopsis "Yelp documentation tools") + (description + "Yelp-tools is a collection of scripts and build utilities to help create, +manage, and publish documentation for Yelp and the web. Most of the heavy +lifting is done by packages like yelp-xsl and itstool. This package just +wraps things up in a developer-friendly way.") + (license license:gpl2+))) -- cgit v1.2.3 From 276f49df73150e113098e8a216a824125edd590d Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 27 Aug 2015 10:07:40 +0200 Subject: gnu: rsound: Replace "jack-2" with "jack-1". * gnu/packages/audio.scm (rsound)[inputs]: Replace "jack-2" with "jack-1". --- gnu/packages/audio.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 1537f3335d..b2db496fa5 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -1694,7 +1694,7 @@ (define-public rsound (build-system gnu-build-system) (inputs `(("alsa-lib" ,alsa-lib) - ("jack" ,jack-2) + ("jack" ,jack-1) ("ao" ,ao) ("libsamplerate" ,libsamplerate) ("openal" ,openal) -- cgit v1.2.3 From 01e327b5568fd2740e098cd191ab5e746236abeb Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 27 Aug 2015 10:08:34 +0200 Subject: gnu: rsound: Add file-name field to source origin. * gnu/packages/audio.scm (rsound)[source]: Add 'file-name' field. --- gnu/packages/audio.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index b2db496fa5..f7a1b26af1 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -1689,6 +1689,7 @@ (define-public rsound (method url-fetch) (uri (string-append "https://github.com/Themaister/RSound/archive/v" version ".tar.gz")) + (file-name (string-append name "-" version)) (sha256 (base32 "1wzs40c0k5zpkmm5ffl6c17xmr399sxli7ys0fbb9ib0fd334knx")))) (build-system gnu-build-system) -- cgit v1.2.3 From 6a5894a823f908092aa6ec605d55dd5a97ed8eaa Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 27 Aug 2015 10:10:06 +0200 Subject: gnu: audacity: Replace "jack-2" with "jack-1". * gnu/packages/audacity.scm (audacity)[inputs]: Replace "jack-2" with "jack-1". --- gnu/packages/audacity.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/audacity.scm b/gnu/packages/audacity.scm index 4f7bc686e3..53cc2a497e 100644 --- a/gnu/packages/audacity.scm +++ b/gnu/packages/audacity.scm @@ -55,7 +55,7 @@ (define-public audacity `(("wxwidgets" ,wxwidgets-2) ("gtk" ,gtk+-2) ("alsa-lib" ,alsa-lib) - ("jack" ,jack-2) + ("jack" ,jack-1) ("expat" ,expat) ("ffmpeg" ,ffmpeg) ("lame" ,lame) -- cgit v1.2.3 From 0dc2e348dce0984ade89b04c1ada43598d6f0ca6 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 27 Aug 2015 10:11:15 +0200 Subject: gnu: gst-plugins-good: Replace "jack-2" with "jack-1". * gnu/packages/gstreamer.scm (gst-plugins-good)[inputs]: Replace "jack-2" with "jack-1". --- gnu/packages/gstreamer.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index 717388ba00..920da6c864 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -203,7 +203,7 @@ (define-public gst-plugins-good ("flac" ,flac) ("gdk-pixbuf" ,gdk-pixbuf) ("gst-plugins-base" ,gst-plugins-base) - ("jack" ,jack-2) + ("jack" ,jack-1) ("libavc1394" ,libavc1394) ("libcaca" ,libcaca) ("libdv" ,libdv) -- cgit v1.2.3 From 2d8781a491853de038f3086a01ef6c1a8fd4aa61 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 27 Aug 2015 10:13:54 +0200 Subject: gnu: mpv: Replace "jack-2" with "jack-1". * gnu/packages/video.scm (mpv)[inputs]: Replace "jack-2" with "jack-1". --- gnu/packages/video.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 79119ef43a..c1101cb8bd 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -692,7 +692,7 @@ (define-public mpv `(("alsa-lib" ,alsa-lib) ("enca" ,enca) ("ffmpeg" ,ffmpeg) - ("jack" ,jack-2) + ("jack" ,jack-1) ("ladspa" ,ladspa) ("lcms" ,lcms) ("libass" ,libass) -- cgit v1.2.3 From 0bfdfd377ec2ea6ba589eea5db20d0de6f5349d5 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 29 Aug 2015 17:29:03 -0400 Subject: gnu: ruby-i18n: Update to 0.7.0. * gnu/packages/ruby.scm (ruby-i18n): Update to 0.7.0. --- gnu/packages/ruby.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 9a702dd454..0e45e06305 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -192,16 +192,16 @@ (define-public ruby-rake-compiler (define-public ruby-i18n (package (name "ruby-i18n") - (version "0.6.11") + (version "0.7.0") (source (origin (method url-fetch) (uri (rubygems-uri "i18n" version)) (sha256 (base32 - "0fwjlgmgry2blf8zlxn9c555cf4a16p287l599kz5104ncjxlzdk")))) + "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758")))) (build-system ruby-build-system) (arguments - '(#:tests? #f)) ; requires bundler + '(#:tests? #f)) ; no tests (synopsis "Internationalization library for Ruby") (description "Ruby i18n is an internationalization and localization solution for Ruby programs. It features translation and localization, -- cgit v1.2.3 From 3d20ebd6cb09c328c06ea197489aa84802bed5a8 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 29 Aug 2015 23:33:53 +0200 Subject: refresh: Add missing newline in warning message. Reported by karhunkynsi on #guix. * guix/scripts/refresh.scm (update-package): Add missing newline in string literal passed to 'warning'. --- guix/scripts/refresh.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm index 28519d78e2..e7980a97b0 100644 --- a/guix/scripts/refresh.scm +++ b/guix/scripts/refresh.scm @@ -149,7 +149,7 @@ (define* (update-package store package #:key (key-download 'interactive)) port-sha256))) (update-package-source package version hash))) (warning (_ "~a: version ~a could not be \ -downloaded and authenticated; not updating") +downloaded and authenticated; not updating~%") (package-name package) version))))) -- cgit v1.2.3 From b26365186045530eadb5027087a37ca1a440aee9 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 29 Aug 2015 23:37:33 +0200 Subject: doc: Mention the "normalized codeset" used in locale names. * doc/guix.texi (Locales): Introduce "codeset". <%default-locale-definitions>: Mention the "normalized codeset", with an xref to libc's manual. * gnu/system/locale.scm (%default-locale-definitions)[utf8-locale]: Mention the "normalized codeset" in a comment. --- doc/guix.texi | 14 +++++++++++--- gnu/system/locale.scm | 2 ++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index f69440c325..5a9ebc93f8 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -5477,7 +5477,7 @@ special-case and is automatically added whether or not it is specified. A @dfn{locale} defines cultural conventions for a particular language and region of the world (@pxref{Locales,,, libc, The GNU C Library Reference Manual}). Each locale has a name that typically has the form -@code{@var{language}_@var{territory}.@var{charset}}---e.g., +@code{@var{language}_@var{territory}.@var{codeset}}---e.g., @code{fr_LU.utf8} designates the locale for the French language, with cultural conventions from Luxembourg, and using the UTF-8 encoding. @@ -5538,9 +5538,17 @@ IANA}. @end deftp @defvr {Scheme Variable} %default-locale-definitions -An arbitrary list of commonly used locales, used as the default value of -the @code{locale-definitions} field of @code{operating-system} +An arbitrary list of commonly used UTF-8 locales, used as the default +value of the @code{locale-definitions} field of @code{operating-system} declarations. + +@cindex locale name +@cindex normalized codeset in locale names +These locale definitions use the @dfn{normalized codeset} for the part +that follows the dot in the name (@pxref{Using gettextized software, +normalized codeset,, libc, The GNU C Library Reference Manual}). So for +instance it has @code{uk_UA.utf8} but @emph{not}, say, +@code{uk_UA.UTF-8}. @end defvr @node Services diff --git a/gnu/system/locale.scm b/gnu/system/locale.scm index be9abcb81d..393dd42354 100644 --- a/gnu/system/locale.scm +++ b/gnu/system/locale.scm @@ -83,6 +83,8 @@ (define %default-locale-definitions (letrec-syntax ((utf8-locale (syntax-rules () ((_ name*) (locale-definition + ;; Note: We choose "utf8", which is the + ;; "normalized codeset". (name (string-append name* ".utf8")) (source name*) (charset "UTF-8"))))) -- cgit v1.2.3 From 532164194a96bb3a0e957bf2fe5e7487cf53488d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 29 Aug 2015 23:47:53 +0200 Subject: download: Keep a single copy of the mirror file. This saves ~10% on 'guix build inkscape -Sd'. * guix/download.scm (%mirror-file): New variable. (url-fetch): Remove #:mirrors parameter. Remove 'mirror-file'; refer to '%mirror-file' instead. --- guix/download.scm | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/guix/download.scm b/guix/download.scm index 6e91607196..079d1b0b8d 100644 --- a/guix/download.scm +++ b/guix/download.scm @@ -202,6 +202,12 @@ (define %mirrors "http://ftp.fr.debian.org/debian/" "http://ftp.debian.org/debian/")))) +(define %mirror-file + ;; Copy of the list of mirrors to a file. This allows us to keep a single + ;; copy in the store, and computing it here avoids repeated calls to + ;; 'object->string'. + (plain-file "mirrors" (object->string %mirrors))) + (define (gnutls-package) "Return the default GnuTLS package." (let ((module (resolve-interface '(gnu packages tls)))) @@ -210,16 +216,14 @@ (define (gnutls-package) (define* (url-fetch url hash-algo hash #:optional name #:key (system (%current-system)) - (guile (default-guile)) - (mirrors %mirrors)) + (guile (default-guile))) "Return a fixed-output derivation that fetches URL (a string, or a list of strings denoting alternate URLs), which is expected to have hash HASH of type HASH-ALGO (a symbol). By default, the file name is the base name of URL; optionally, NAME can specify a different file name. When one of the URL starts with mirror://, then its host part is -interpreted as the name of a mirror scheme, taken from MIRRORS; MIRRORS -must be a list of symbol/URL-list pairs. +interpreted as the name of a mirror scheme, taken from %MIRROR-FILE. Alternately, when URL starts with file://, return the corresponding file name in the store." @@ -239,10 +243,6 @@ (define need-gnutls? ((url ...) (any https? url))))) - (define mirror-file - ;; Copy the list of mirrors to a file to keep a single copy in the store. - (plain-file "mirrors" (object->string mirrors))) - (define builder #~(begin #+(if need-gnutls? @@ -261,7 +261,7 @@ (define builder (url-fetch (call-with-input-string (getenv "guix download url") read) #$output - #:mirrors (call-with-input-file #$mirror-file read)))) + #:mirrors (call-with-input-file #$%mirror-file read)))) (let ((uri (and (string? url) (string->uri url)))) (if (or (and (string? url) (not uri)) -- cgit v1.2.3 From 20c05ea94af8f55821ffe203d9f0d97ab0e0748f Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 29 Aug 2015 22:08:20 -0400 Subject: gnu: Make ruby-diff-lcs a public package. * gnu/packages/ruby.scm (ruby-diff-lcs-for-rspec): Rename this... (ruby-diff-lcs): ... to this, and export it. (ruby-rspec-expectation, ruby-rspec-mocks): Use new varaible. --- gnu/packages/ruby.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 0e45e06305..561fe4d986 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -254,7 +254,7 @@ (define-public ruby-rspec-core (home-page "https://github.com/rspec/rspec-core") (license license:expat))) -(define ruby-diff-lcs-for-rspec +(define-public ruby-diff-lcs (package (name "ruby-diff-lcs") (version "1.2.5") @@ -290,7 +290,7 @@ (define-public ruby-rspec-expectations '(#:tests? #f)) ; avoid dependency cycles (propagated-inputs `(("ruby-rspec-support" ,ruby-rspec-support) - ("ruby-diff-lcs" ,ruby-diff-lcs-for-rspec))) + ("ruby-diff-lcs" ,ruby-diff-lcs))) (synopsis "RSpec expectations library") (description "Rspec-expectations provides a simple API to express expected outcomes of a code example.") @@ -312,7 +312,7 @@ (define-public ruby-rspec-mocks '(#:tests? #f)) ; avoid dependency cycles (propagated-inputs `(("ruby-rspec-support" ,ruby-rspec-support) - ("ruby-diff-lcs" ,ruby-diff-lcs-for-rspec))) + ("ruby-diff-lcs" ,ruby-diff-lcs))) (synopsis "RSpec stubbing and mocking library") (description "Rspec-mocks provides RSpec's \"test double\" framework, with support for stubbing and mocking.") -- cgit v1.2.3 From 30dc88d975c60c6b7ca886d131d3fed1dacbad9f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 30 Aug 2015 11:25:29 +0200 Subject: gnu: Add libchamplain. * gnu/packages/gnome.scm (libchamplain): New variable. --- gnu/packages/gnome.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index f874414582..3fd2e53e23 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2720,6 +2720,38 @@ (define-public clutter-gst GL based interactive canvas library.") (license license:lgpl2.0+))) +(define-public libchamplain + (package + (name "libchamplain") + (version "0.12.10") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://gnome/sources/libchamplain/0.12/libchamplain-" + version ".tar.xz")) + (sha256 + (base32 + "019b8scnx7d3wdylmpk9ihzh06w25b63x9cn8nhj6kjx82rcwlxz")))) + (build-system gnu-build-system) + (native-inputs `(("pkg-config" ,pkg-config))) + (propagated-inputs + `(("libsoup" ,libsoup) + ("sqlite" ,sqlite) + ("clutter" ,clutter) + ("clutter-gtk" ,clutter-gtk) + ("glib:bin" ,glib "bin") ;glib-mkenums, etc. + ("cairo" ,cairo) + ("gtk+3" ,gtk+) + ("glib" ,glib))) + (home-page "http://projects.gnome.org/libchamplain/") + (synopsis "C library providing a ClutterActor to display maps") + (description + "libchamplain is a C library providing a ClutterActor to display maps. +It also provides a Gtk+ widget to display maps in Gtk+ applications. Python +and Perl bindings are also available. It supports numerous free map sources +such as OpenStreetMap, OpenCycleMap, OpenAerialMap, and Maps for free.") + (license license:lgpl2.1+))) + (define-public gom (package (name "gom") -- cgit v1.2.3 From 600233bdd2d52d8d8e2d7afc5628e5ac42d52c95 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 30 Aug 2015 11:31:05 +0200 Subject: gnu: clutter: Add "doc" output. * gnu/packages/gnome.scm (clutter)[outputs]: New field. [arguments]: Pass --with-html-dir. --- gnu/packages/gnome.scm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 3fd2e53e23..790ec763b4 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2629,6 +2629,8 @@ (define-public clutter (base32 "1b0ikh9q3c3qnny3kbvhqih35449q8ajcbh7zkm8k3kykwfx4scf")))) (build-system gnu-build-system) + (outputs '("out" + "doc")) ;9 MiB of gtk-doc HTML pages (native-inputs `(("glib:bin" ,glib "bin") ; for glib-genmarshal ("gobject-introspection" ,gobject-introspection) @@ -2649,7 +2651,12 @@ (define-public clutter `(("libxkbcommon" ,libxkbcommon) ("udev" ,eudev))) (arguments - `(#:configure-flags '("--enable-x11-backend=yes") + `(#:configure-flags (list "--enable-x11-backend=yes" + + ;; This produces share/doc/{clutter,cally}. + (string-append "--with-html-dir=" + (assoc-ref %outputs "doc") + "/share/doc")) ;; XXX FIXME: Get test suite working. It would probably fail in the ;; same way the cogl tests fail, since clutter is based on cogl. #:tests? #f)) -- cgit v1.2.3 From cc77415053796b4bdfc67f9c35f1c674673ba90e Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Thu, 27 Aug 2015 22:24:17 +0300 Subject: emacs: Remove leftover internal variable. This is a followup to commit 74cc67372ec3771b157c015da4ba7ed5d921799f. * emacs/guix-base.el (guix-define-buffer-type): Remove 'mode-map' variable. --- emacs/guix-base.el | 1 - 1 file changed, 1 deletion(-) diff --git a/emacs/guix-base.el b/emacs/guix-base.el index fe89584f18..2212dd746f 100644 --- a/emacs/guix-base.el +++ b/emacs/guix-base.el @@ -392,7 +392,6 @@ following keywords are available: (prefix (concat "guix-" entry-type-str "-" buf-type-str)) (group (intern prefix)) (mode-map-str (concat prefix "-mode-map")) - (mode-map (intern mode-map-str)) (parent-mode (intern (concat "guix-" buf-type-str "-mode"))) (mode (intern (concat prefix "-mode"))) (mode-init-fun (intern (concat prefix "-mode-initialize"))) -- cgit v1.2.3 From 935d079bb75c1144946ac9e9915a2278896a458d Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Fri, 28 Aug 2015 15:36:57 +0300 Subject: emacs: Add 'guix-prettify' to 'guix' custom group. * emacs/guix-prettify.el (guix-prettify): Add 'guix' group. --- emacs/guix-prettify.el | 1 + 1 file changed, 1 insertion(+) diff --git a/emacs/guix-prettify.el b/emacs/guix-prettify.el index b01495c86b..c74a393adf 100644 --- a/emacs/guix-prettify.el +++ b/emacs/guix-prettify.el @@ -50,6 +50,7 @@ (defgroup guix-prettify nil "Prettify Guix store file names." :prefix "guix-prettify-" + :group 'guix :group 'font-lock :group 'convenience) -- cgit v1.2.3 From c10521e97679c35a40926084e049445cc5053254 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Wed, 12 Aug 2015 15:28:55 +0300 Subject: emacs: Add and use 'guix-while-search'. * emacs/guix-utils.el (guix-while-search): New macro. * emacs/guix-pcomplete.el (guix-pcomplete-run-guix-and-search): Use it. * emacs/guix-prettify.el (guix-prettify-decompose-buffer): Likewise. --- emacs/guix-pcomplete.el | 3 +-- emacs/guix-prettify.el | 16 ++++++++-------- emacs/guix-utils.el | 8 ++++++++ 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/emacs/guix-pcomplete.el b/emacs/guix-pcomplete.el index 9ec563cf52..0049c94d38 100644 --- a/emacs/guix-pcomplete.el +++ b/emacs/guix-pcomplete.el @@ -105,9 +105,8 @@ Return a list of strings matching REGEXP. GROUP specifies a parenthesized expression used in REGEXP." (with-temp-buffer (apply #'guix-pcomplete-run-guix args) - (goto-char (point-min)) (let (result) - (while (re-search-forward regexp nil t) + (guix-while-search regexp (push (match-string-no-properties group) result)) (nreverse result)))) diff --git a/emacs/guix-prettify.el b/emacs/guix-prettify.el index c74a393adf..24dfbb33e2 100644 --- a/emacs/guix-prettify.el +++ b/emacs/guix-prettify.el @@ -1,6 +1,6 @@ ;;; guix-prettify.el --- Prettify Guix store file names -;; Copyright © 2014 Alex Kost +;; Copyright © 2014, 2015 Alex Kost ;; This file is part of GNU Guix. @@ -47,6 +47,8 @@ ;;; Code: +(require 'guix-utils) + (defgroup guix-prettify nil "Prettify Guix store file names." :prefix "guix-prettify-" @@ -137,13 +139,11 @@ enabling/disabling `guix-prettify-mode'. If nil, do nothing.") (remove-text-properties (point-min) (point-max) '(composition nil)) - (save-excursion - (goto-char (point-min)) - (while (re-search-forward guix-prettify-regexp nil t) - (remove-text-properties - (match-beginning guix-prettify-regexp-group) - (match-end guix-prettify-regexp-group) - '(composition nil)))))))) + (guix-while-search guix-prettify-regexp + (remove-text-properties + (match-beginning guix-prettify-regexp-group) + (match-end guix-prettify-regexp-group) + '(composition nil))))))) ;;;###autoload (define-minor-mode guix-prettify-mode diff --git a/emacs/guix-utils.el b/emacs/guix-utils.el index dc0c58a114..8a0673a3a0 100644 --- a/emacs/guix-utils.el +++ b/emacs/guix-utils.el @@ -160,6 +160,14 @@ accessed with KEYS." (find-file file) (message "File '%s' does not exist." file))) +(defmacro guix-while-search (regexp &rest body) + "Evaluate BODY after each search for REGEXP in the current buffer." + (declare (indent 1) (debug t)) + `(save-excursion + (goto-char (point-min)) + (while (re-search-forward ,regexp nil t) + ,@body))) + ;;; Diff -- cgit v1.2.3 From 1ce96dd9271445133b920cff81bbb44085a5fe7c Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Wed, 12 Aug 2015 15:44:22 +0300 Subject: emacs: Add and use 'guix-concat-strings'. * emacs/guix-utils.el (guix-concat-strings): New function. * emacs/guix-pcomplete.el (guix-pcomplete-short-options): Use it. * emacs/guix-base.el (guix-get-package-strings): Likewise. --- emacs/guix-base.el | 2 +- emacs/guix-pcomplete.el | 2 +- emacs/guix-utils.el | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/emacs/guix-base.el b/emacs/guix-base.el index 2212dd746f..76974e12ab 100644 --- a/emacs/guix-base.el +++ b/emacs/guix-base.el @@ -913,7 +913,7 @@ ENTRIES is a list of package entries to get info about packages." (concat (guix-get-full-name entry) (when outputs (concat ":" - (mapconcat #'identity outputs ","))) + (guix-concat-strings outputs ","))) (when location (concat "\t(" location ")"))))))) specs))) diff --git a/emacs/guix-pcomplete.el b/emacs/guix-pcomplete.el index 0049c94d38..2b9249554b 100644 --- a/emacs/guix-pcomplete.el +++ b/emacs/guix-pcomplete.el @@ -147,7 +147,7 @@ subcommands, actions, etc. for this guix COMMAND." "Return a string with available short options for guix COMMAND." guix-pcomplete-parse-short-option-regexp (lambda (list) - (mapconcat #'identity list ""))) + (guix-concat-strings list ""))) (guix-memoized-defun guix-pcomplete-all-packages () "Return a list of all available Guix packages." diff --git a/emacs/guix-utils.el b/emacs/guix-utils.el index 8a0673a3a0..df6636c139 100644 --- a/emacs/guix-utils.el +++ b/emacs/guix-utils.el @@ -128,6 +128,22 @@ split it into several short lines." (fill-region (point-min) (point-max))) (buffer-string))) +(defun guix-concat-strings (strings separator &optional location) + "Return new string by concatenating STRINGS with SEPARATOR. +If LOCATION is a symbol `head', add another SEPARATOR to the +beginning of the returned string; if `tail' - add SEPARATOR to +the end of the string; if nil, do not add SEPARATOR; otherwise +add both to the end and to the beginning." + (let ((str (mapconcat #'identity strings separator))) + (cond ((null location) + str) + ((eq location 'head) + (concat separator str)) + ((eq location 'tail) + (concat str separator)) + (t + (concat separator str separator))))) + (defun guix-completing-read-multiple (prompt table &optional predicate require-match initial-input hist def inherit-input-method) -- cgit v1.2.3 From 009d6388e6ba83d903c9e3756daa71251ca1b8e6 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sun, 16 Aug 2015 11:09:39 +0300 Subject: emacs: Add utils to make symbol and string for guix command. * emacs/guix-utils.el (guix-shell-quote-argument, guix-command-symbol, guix-command-string): New functions. --- emacs/guix-utils.el | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/emacs/guix-utils.el b/emacs/guix-utils.el index df6636c139..68cad8878d 100644 --- a/emacs/guix-utils.el +++ b/emacs/guix-utils.el @@ -144,6 +144,25 @@ add both to the end and to the beginning." (t (concat separator str separator))))) +(defun guix-shell-quote-argument (argument) + "Quote shell command ARGUMENT. +This function is similar to `shell-quote-argument', but less strict." + (if (equal argument "") + "''" + (replace-regexp-in-string + "\n" "'\n'" + (replace-regexp-in-string + (rx (not (any alnum "-=,./\n"))) "\\\\\\&" argument)))) + +(defun guix-command-symbol (&optional args) + "Return symbol by concatenating 'guix' and ARGS (strings)." + (intern (guix-concat-strings (cons "guix" args) "-"))) + +(defun guix-command-string (&optional args) + "Return 'guix ARGS ...' string with quoted shell arguments." + (let ((args (mapcar #'guix-shell-quote-argument args))) + (guix-concat-strings (cons "guix" args) " "))) + (defun guix-completing-read-multiple (prompt table &optional predicate require-match initial-input hist def inherit-input-method) -- cgit v1.2.3 From ad0f31f6a514d29b2f734069d5c3b2a7a6cd2a82 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sun, 16 Aug 2015 11:11:37 +0300 Subject: emacs: Add utils to copy guix command. * emacs/guix-utils.el (guix-copy-as-kill, guix-copy-command-as-kill): New functions. --- emacs/guix-utils.el | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/emacs/guix-utils.el b/emacs/guix-utils.el index 68cad8878d..3157f6359b 100644 --- a/emacs/guix-utils.el +++ b/emacs/guix-utils.el @@ -163,6 +163,18 @@ This function is similar to `shell-quote-argument', but less strict." (let ((args (mapcar #'guix-shell-quote-argument args))) (guix-concat-strings (cons "guix" args) " "))) +(defun guix-copy-as-kill (string &optional no-message?) + "Put STRING into `kill-ring'. +If NO-MESSAGE? is non-nil, do not display a message about it." + (kill-new string) + (unless no-message? + (message "'%s' has been added to kill ring." string))) + +(defun guix-copy-command-as-kill (args &optional no-message?) + "Put 'guix ARGS ...' string into `kill-ring'. +See also `guix-copy-as-kill'." + (guix-copy-as-kill (guix-command-string args) no-message?)) + (defun guix-completing-read-multiple (prompt table &optional predicate require-match initial-input hist def inherit-input-method) -- cgit v1.2.3 From e767752c79975d30341f71d7f9de88edeb192d59 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Wed, 12 Aug 2015 15:37:20 +0300 Subject: emacs: Add 'guix-any'. * emacs/guix-utils.el (guix-any): New function. --- emacs/guix-utils.el | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/emacs/guix-utils.el b/emacs/guix-utils.el index 3157f6359b..fb1ca60654 100644 --- a/emacs/guix-utils.el +++ b/emacs/guix-utils.el @@ -215,6 +215,14 @@ accessed with KEYS." (while (re-search-forward ,regexp nil t) ,@body))) +(defun guix-any (pred lst) + "Test whether any element from LST satisfies PRED. +If so, return the return value from the successful PRED call. +Return nil otherwise." + (when lst + (or (funcall pred (car lst)) + (guix-any pred (cdr lst))))) + ;;; Diff -- cgit v1.2.3 From 6543601fa05b629b387d1da0b5fc5fe81ecaf24c Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sun, 16 Aug 2015 06:46:52 +0300 Subject: emacs: Add 'guix-memoized-defalias' macro. * emacs/guix-utils.el (guix-memoized-defalias): New macro. (guix-memoized-font-lock-keywords): New variable. --- emacs/guix-utils.el | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/emacs/guix-utils.el b/emacs/guix-utils.el index fb1ca60654..0b8a760af8 100644 --- a/emacs/guix-utils.el +++ b/emacs/guix-utils.el @@ -262,6 +262,27 @@ See `defun' for the meaning of arguments." (mapconcat #'symbol-name arglist " ") docstring))) +(defmacro guix-memoized-defalias (symbol definition &optional docstring) + "Set SYMBOL's function definition to memoized version of DEFINITION." + (declare (doc-string 3) (indent 1)) + `(defalias ',symbol + (guix-memoize #',definition) + ,(or docstring + (format "Memoized version of `%S'." definition)))) + +(defvar guix-memoized-font-lock-keywords + (eval-when-compile + `((,(rx "(" + (group "guix-memoized-" (or "defun" "defalias")) + symbol-end + (zero-or-more blank) + (zero-or-one + (group (one-or-more (or (syntax word) (syntax symbol)))))) + (1 font-lock-keyword-face) + (2 font-lock-function-name-face nil t))))) + +(font-lock-add-keywords 'emacs-lisp-mode guix-memoized-font-lock-keywords) + (provide 'guix-utils) ;;; guix-utils.el ends here -- cgit v1.2.3 From 521a11e0a68b54bbacbb4912d622a29cfc86c153 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Wed, 12 Aug 2015 14:17:44 +0300 Subject: guix lint: Export checkers and accessors. * guix/scripts/lint.scm (%checkers, lint-checker, lint-checker?, lint-checker-name, lint-checker-description, lint-checker-check): Export. --- guix/scripts/lint.scm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index 14ac8cba81..41249b2d15 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm @@ -56,7 +56,14 @@ (define-module (guix scripts lint) check-derivation check-home-page check-source - check-formatting)) + check-formatting + + %checkers + lint-checker + lint-checker? + lint-checker-name + lint-checker-description + lint-checker-check)) ;;; -- cgit v1.2.3 From 056b5ceffce3d20b603567a8ce641ae8975f8d62 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Wed, 12 Aug 2015 14:36:41 +0300 Subject: emacs: Add 'guix-lint-checker-names'. * emacs/guix-main.scm: Use (guix scripts lint) module. (lint-checker-names): New procedure. * emacs/guix-base.el (guix-lint-checker-names): New function. --- emacs/guix-base.el | 9 ++++++++- emacs/guix-main.scm | 12 +++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/emacs/guix-base.el b/emacs/guix-base.el index 76974e12ab..daf15bf45b 100644 --- a/emacs/guix-base.el +++ b/emacs/guix-base.el @@ -1,6 +1,6 @@ ;;; guix-base.el --- Common definitions -*- lexical-binding: t -*- -;; Copyright © 2014 Alex Kost +;; Copyright © 2014, 2015 Alex Kost ;; This file is part of GNU Guix. @@ -180,6 +180,13 @@ If PATH is relative, it is considered to be relative to (guix-find-location loc) (message "Couldn't find package location.")))) + +;;; Receivable lists of packages, lint checkers, etc. + +(guix-memoized-defun guix-lint-checker-names () + "Return a list of names of available lint checkers." + (guix-eval-read (guix-make-guile-expression 'lint-checker-names))) + ;;; Buffers and auto updating. diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm index e0dc683d88..2c5b0baa65 100644 --- a/emacs/guix-main.scm +++ b/emacs/guix-main.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Alex Kost +;;; Copyright © 2014, 2015 Alex Kost ;;; ;;; This file is part of GNU Guix. ;;; @@ -57,6 +57,7 @@ (guix licenses) (guix utils) (guix ui) + (guix scripts lint) (guix scripts package) (guix scripts pull) (gnu packages)) @@ -927,3 +928,12 @@ (define* (package-source-build-derivation package-id #:key dry-run? (build-derivations store derivations)) (format #t "The source store path: ~a~%" (package-source-derivation->store-path derivation)))))) + + +;;; Lists of packages, lint checkers, etc. + +(define (lint-checker-names) + "Return a list of names of available lint checkers." + (map (lambda (checker) + (symbol->string (lint-checker-name checker))) + %checkers)) -- cgit v1.2.3 From c1a8c5ab1caf53dad66ff25cb9eeaa1b6b8ed3f3 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Thu, 27 Aug 2015 22:32:23 +0300 Subject: guix graph: Export node types and accessors. * guix/scripts/graph.scm (%node-types, node-type, node-type?, node-type-identifier, node-type-label, node-type-edges, node-type-convert, node-type-name, node-type-description): Export. --- guix/scripts/graph.scm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/guix/scripts/graph.scm b/guix/scripts/graph.scm index 475f054571..1719ffce68 100644 --- a/guix/scripts/graph.scm +++ b/guix/scripts/graph.scm @@ -39,6 +39,16 @@ (define-module (guix scripts graph) %bag-emerged-node-type %derivation-node-type %reference-node-type + %node-types + + node-type + node-type? + node-type-identifier + node-type-label + node-type-edges + node-type-convert + node-type-name + node-type-description %graphviz-backend graph-backend? -- cgit v1.2.3 From 43b40c4b152a5d7113e3ee591f9f91a342c8fbac Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Thu, 27 Aug 2015 22:47:26 +0300 Subject: emacs: Add 'guix-graph-type-names'. * emacs/guix-main.scm: Use (guix scripts graph) module. (graph-type-names): New procedure. * emacs/guix-base.el (guix-graph-type-names): New function. --- emacs/guix-base.el | 4 ++++ emacs/guix-main.scm | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/emacs/guix-base.el b/emacs/guix-base.el index daf15bf45b..1f4a00ce59 100644 --- a/emacs/guix-base.el +++ b/emacs/guix-base.el @@ -183,6 +183,10 @@ If PATH is relative, it is considered to be relative to ;;; Receivable lists of packages, lint checkers, etc. +(guix-memoized-defun guix-graph-type-names () + "Return a list of names of available graph node types." + (guix-eval-read (guix-make-guile-expression 'graph-type-names))) + (guix-memoized-defun guix-lint-checker-names () "Return a list of names of available lint checkers." (guix-eval-read (guix-make-guile-expression 'lint-checker-names))) diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm index 2c5b0baa65..191aa8d5cf 100644 --- a/emacs/guix-main.scm +++ b/emacs/guix-main.scm @@ -57,6 +57,7 @@ (guix licenses) (guix utils) (guix ui) + (guix scripts graph) (guix scripts lint) (guix scripts package) (guix scripts pull) @@ -932,6 +933,10 @@ (define* (package-source-build-derivation package-id #:key dry-run? ;;; Lists of packages, lint checkers, etc. +(define (graph-type-names) + "Return a list of names of available graph node types." + (map node-type-name %node-types)) + (define (lint-checker-names) "Return a list of names of available lint checkers." (map (lambda (checker) -- cgit v1.2.3 From 25a2839c9dfb72fc4eddf0621b80023f87fc2e2e Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Wed, 12 Aug 2015 14:40:47 +0300 Subject: emacs: Add 'guix-package-names'. * emacs/guix-main.scm (package-names, package-names-lists): New procedures. * emacs/guix-base.el (guix-package-names): New function. --- emacs/guix-base.el | 14 ++++++++++++++ emacs/guix-main.scm | 11 +++++++++++ 2 files changed, 25 insertions(+) diff --git a/emacs/guix-base.el b/emacs/guix-base.el index 1f4a00ce59..9cec510406 100644 --- a/emacs/guix-base.el +++ b/emacs/guix-base.el @@ -191,6 +191,20 @@ If PATH is relative, it is considered to be relative to "Return a list of names of available lint checkers." (guix-eval-read (guix-make-guile-expression 'lint-checker-names))) +(guix-memoized-defun guix-package-names () + "Return a list of names of available packages." + (sort + ;; Work around : + ;; list of strings is parsed much slower than list of lists, + ;; so we use 'package-names-lists' instead of 'package-names'. + + ;; (guix-eval-read (guix-make-guile-expression 'package-names)) + + (mapcar #'car + (guix-eval-read (guix-make-guile-expression + 'package-names-lists))) + #'string<)) + ;;; Buffers and auto updating. diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm index 191aa8d5cf..341657d931 100644 --- a/emacs/guix-main.scm +++ b/emacs/guix-main.scm @@ -942,3 +942,14 @@ (define (lint-checker-names) (map (lambda (checker) (symbol->string (lint-checker-name checker))) %checkers)) + +(define (package-names) + "Return a list of names of available packages." + (delete-duplicates + (fold-packages (lambda (pkg res) + (cons (package-name pkg) res)) + '()))) + +;; See the comment to 'guix-package-names' function in "guix-popup.el". +(define (package-names-lists) + (map list (package-names))) -- cgit v1.2.3 From 26476d5852f31097994113b88d9c51f1f4378c99 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Wed, 12 Aug 2015 20:32:45 +0300 Subject: emacs: Add help variables. * emacs/guix-pcomplete.el (guix-pcomplete-parse-package-regexp, guix-pcomplete-parse-command-regexp, guix-pcomplete-parse-long-option-regexp, guix-pcomplete-parse-short-option-regexp, guix-pcomplete-parse-list-regexp, guix-pcomplete-parse-regexp-group, guix-pcomplete-systems, guix-pcomplete-hash-formats, guix-pcomplete-refresh-subsets, guix-pcomplete-key-policies): Move and rename to ... * emacs/guix-help-vars.el (guix-help-parse-package-regexp, guix-help-parse-command-regexp, guix-help-parse-long-option-regexp, guix-help-parse-short-option-regexp, guix-help-parse-list-regexp, guix-help-parse-regexp-group, guix-help-system-types, guix-help-hash-formats, guix-help-refresh-subsets, guix-help-key-policies): ...here. New file. (guix-help-parse-option-regexp, guix-help-source-types, guix-help-verify-options, guix-help-elpa-archives): New variables. * emacs.am (ELFILES): Add "guix-help-vars.el". --- emacs.am | 3 +- emacs/guix-help-vars.el | 108 ++++++++++++++++++++++++++++++++++++++++++++++++ emacs/guix-pcomplete.el | 86 ++++++++------------------------------ 3 files changed, 127 insertions(+), 70 deletions(-) create mode 100644 emacs/guix-help-vars.el diff --git a/emacs.am b/emacs.am index 372b33e822..e4266536ce 100644 --- a/emacs.am +++ b/emacs.am @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright © 2014 Alex Kost +# Copyright © 2014, 2015 Alex Kost # # This file is part of GNU Guix. # @@ -22,6 +22,7 @@ ELFILES = \ emacs/guix-backend.el \ emacs/guix-base.el \ emacs/guix-emacs.el \ + emacs/guix-help-vars.el \ emacs/guix-history.el \ emacs/guix-info.el \ emacs/guix-list.el \ diff --git a/emacs/guix-help-vars.el b/emacs/guix-help-vars.el new file mode 100644 index 0000000000..8117d28f3e --- /dev/null +++ b/emacs/guix-help-vars.el @@ -0,0 +1,108 @@ +;;; guix-help-vars.el --- Variables related to --help output + +;; Copyright © 2015 Alex Kost + +;; This file is part of GNU Guix. + +;; GNU Guix is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Guix is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;; This file provides regular expressions to parse various "guix +;; ... --help" outputs and lists of non-receivable items (system types, +;; hash formats, etc.). + +;;; Code: + + +;;; Regexps for parsing "guix ..." outputs + +(defvar guix-help-parse-option-regexp + (rx bol " " + (zero-or-one (group "-" (not (any "- "))) + ",") + (one-or-more " ") + (group "--" (one-or-more (or wordchar "-"))) + (group (zero-or-one "[") + (zero-or-one "=")) + (zero-or-more (not space)) + (one-or-more space) + (group (one-or-more any))) + "Common regexp used to find command options.") + +(defvar guix-help-parse-command-regexp + (rx bol " " + (group wordchar (one-or-more (or wordchar "-")))) + "Regexp used to find guix commands. +'Command' means any option not prefixed with '-'. For example, +guix subcommand, system action, importer, etc.") + +(defvar guix-help-parse-long-option-regexp + (rx (or " " ", ") + (group "--" (one-or-more (or wordchar "-")) + (zero-or-one "="))) + "Regexp used to find long options.") + +(defvar guix-help-parse-short-option-regexp + (rx bol (one-or-more blank) + "-" (group (not (any "- ")))) + "Regexp used to find short options.") + +(defvar guix-help-parse-package-regexp + (rx bol (group (one-or-more (not blank)))) + "Regexp used to find names of the packages.") + +(defvar guix-help-parse-list-regexp + (rx bol (zero-or-more blank) "- " + (group (one-or-more (or wordchar "-")))) + "Regexp used to find various lists (lint checkers, graph types).") + +(defvar guix-help-parse-regexp-group 1 + "Parenthesized expression of regexps used to find commands and +options.") + + +;;; Non-receivable lists of system types, hash formats, etc. + +(defvar guix-help-system-types + '("x86_64-linux" "i686-linux" "armhf-linux" "mips64el-linux") + "List of supported systems.") + +(defvar guix-help-source-types + '("package" "all" "transitive") + "List of supported sources types.") + +(defvar guix-help-hash-formats + '("nix-base32" "base32" "base16" "hex" "hexadecimal") + "List of supported hash formats.") + +(defvar guix-help-refresh-subsets + '("core" "non-core") + "List of supported 'refresh' subsets.") + +(defvar guix-help-key-policies + '("interactive" "always" "never") + "List of supported key download policies.") + +(defvar guix-help-verify-options + '("repair" "contents") + "List of supported 'verify' options") + +(defvar guix-help-elpa-archives + '("gnu" "melpa" "melpa-stable") + "List of supported ELPA archives.") + +(provide 'guix-help-vars) + +;;; guix-help-vars.el ends here diff --git a/emacs/guix-pcomplete.el b/emacs/guix-pcomplete.el index 2b9249554b..4743be59bd 100644 --- a/emacs/guix-pcomplete.el +++ b/emacs/guix-pcomplete.el @@ -28,59 +28,7 @@ (require 'pcmpl-unix) (require 'cl-lib) (require 'guix-utils) - - -;;; Regexps for parsing various "guix ..." outputs - -(defvar guix-pcomplete-parse-package-regexp - (rx bol (group (one-or-more (not blank)))) - "Regexp used to find names of the packages.") - -(defvar guix-pcomplete-parse-command-regexp - (rx bol " " - (group wordchar (one-or-more (or wordchar "-")))) - "Regexp used to find guix commands. -'Command' means any option not prefixed with '-'. For example, -guix subcommand, system action, importer, etc.") - -(defvar guix-pcomplete-parse-long-option-regexp - (rx (or " " ", ") - (group "--" (one-or-more (or wordchar "-")) - (zero-or-one "="))) - "Regexp used to find long options.") - -(defvar guix-pcomplete-parse-short-option-regexp - (rx bol (one-or-more blank) - "-" (group (not (any "- ")))) - "Regexp used to find short options.") - -(defvar guix-pcomplete-parse-list-regexp - (rx bol (zero-or-more blank) "- " - (group (one-or-more (or wordchar "-")))) - "Regexp used to find various lists (lint checkers, graph types).") - -(defvar guix-pcomplete-parse-regexp-group 1 - "Parenthesized expression of regexps used to find commands and -options.") - - -;;; Non-receivable completions - -(defvar guix-pcomplete-systems - '("x86_64-linux" "i686-linux" "armhf-linux" "mips64el-linux") - "List of supported systems.") - -(defvar guix-pcomplete-hash-formats - '("nix-base32" "base32" "base16" "hex" "hexadecimal") - "List of supported hash formats.") - -(defvar guix-pcomplete-refresh-subsets - '("core" "non-core") - "List of supported 'refresh' subsets.") - -(defvar guix-pcomplete-key-policies - '("interactive" "always" "never") - "List of supported key download policies.") +(require 'guix-help-vars) ;;; Interacting with guix @@ -128,7 +76,7 @@ function call is returned." (let* ((args '("--help")) (args (if command (cons command args) args)) (res (apply #'guix-pcomplete-run-guix-and-search - ,regexp guix-pcomplete-parse-regexp-group args))) + ,regexp guix-help-parse-regexp-group args))) ,(if filter `(funcall ,filter res) 'res)))) @@ -137,23 +85,23 @@ function call is returned." "If COMMAND is nil, return a list of available guix commands. If COMMAND is non-nil (it should be a string), return available subcommands, actions, etc. for this guix COMMAND." - guix-pcomplete-parse-command-regexp) + guix-help-parse-command-regexp) (guix-pcomplete-define-options-finder guix-pcomplete-long-options "Return a list of available long options for guix COMMAND." - guix-pcomplete-parse-long-option-regexp) + guix-help-parse-long-option-regexp) (guix-pcomplete-define-options-finder guix-pcomplete-short-options "Return a string with available short options for guix COMMAND." - guix-pcomplete-parse-short-option-regexp + guix-help-parse-short-option-regexp (lambda (list) (guix-concat-strings list ""))) (guix-memoized-defun guix-pcomplete-all-packages () "Return a list of all available Guix packages." (guix-pcomplete-run-guix-and-search - guix-pcomplete-parse-package-regexp - guix-pcomplete-parse-regexp-group + guix-help-parse-package-regexp + guix-help-parse-regexp-group "package" "--list-available")) (guix-memoized-defun guix-pcomplete-installed-packages (&optional profile) @@ -162,22 +110,22 @@ subcommands, actions, etc. for this guix COMMAND." (list (concat "--profile=" profile)))) (args (append '("package" "--list-installed") args))) (apply #'guix-pcomplete-run-guix-and-search - guix-pcomplete-parse-package-regexp - guix-pcomplete-parse-regexp-group + guix-help-parse-package-regexp + guix-help-parse-regexp-group args))) (guix-memoized-defun guix-pcomplete-lint-checkers () "Return a list of all available lint checkers." (guix-pcomplete-run-guix-and-search - guix-pcomplete-parse-list-regexp - guix-pcomplete-parse-regexp-group + guix-help-parse-list-regexp + guix-help-parse-regexp-group "lint" "--list-checkers")) (guix-memoized-defun guix-pcomplete-graph-types () "Return a list of all available graph types." (guix-pcomplete-run-guix-and-search - guix-pcomplete-parse-list-regexp - guix-pcomplete-parse-regexp-group + guix-help-parse-list-regexp + guix-help-parse-regexp-group "graph" "--list-types")) @@ -283,7 +231,7 @@ INPUT is the current partially completed string." ((option? "-L" "--load-path") (complete* (pcomplete-dirs))) ((string= "--key-download" option) - (complete* guix-pcomplete-key-policies)) + (complete* guix-help-key-policies)) ((command? "package") (cond @@ -312,7 +260,7 @@ INPUT is the current partially completed string." ((and (command? "archive" "build" "size") (option? "-s" "--system")) - (complete* guix-pcomplete-systems)) + (complete* guix-help-system-types)) ((and (command? "build") (option? "-r" "--root")) @@ -328,7 +276,7 @@ INPUT is the current partially completed string." ((and (command? "hash" "download") (option? "-f" "--format")) - (complete* guix-pcomplete-hash-formats)) + (complete* guix-help-hash-formats)) ((and (command? "lint") (option? "-c" "--checkers")) @@ -341,7 +289,7 @@ INPUT is the current partially completed string." ((and (command? "refresh") (option? "-s" "--select")) - (complete* guix-pcomplete-refresh-subsets)) + (complete* guix-help-refresh-subsets)) ((and (command? "size") (option? "-m" "--map-file")) -- cgit v1.2.3 From d007d8a10cbc3100fe71b61add8eb7723a1c93e8 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Wed, 12 Aug 2015 21:01:41 +0300 Subject: emacs: Add minibuffer readers. * emacs/guix-read.el: New file. * emacs.am (ELFILES): Add it. --- emacs.am | 1 + emacs/guix-read.el | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 177 insertions(+) create mode 100644 emacs/guix-read.el diff --git a/emacs.am b/emacs.am index e4266536ce..18ff091c7a 100644 --- a/emacs.am +++ b/emacs.am @@ -29,6 +29,7 @@ ELFILES = \ emacs/guix-messages.el \ emacs/guix-pcomplete.el \ emacs/guix-prettify.el \ + emacs/guix-read.el \ emacs/guix-utils.el \ emacs/guix.el diff --git a/emacs/guix-read.el b/emacs/guix-read.el new file mode 100644 index 0000000000..5a7201c3aa --- /dev/null +++ b/emacs/guix-read.el @@ -0,0 +1,176 @@ +;;; guix-read.el --- Minibuffer readers + +;; Copyright © 2015 Alex Kost + +;; This file is part of GNU Guix. + +;; GNU Guix is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Guix is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;; This file provides functions to prompt a user for packages, system +;; types, hash formats and other guix related stuff. + +;;; Code: + +(require 'guix-help-vars) +(require 'guix-utils) +(require 'guix-base) + +(defun guix-read-file-name (prompt &optional dir default-filename + mustmatch initial predicate) + "Read file name. +This function is similar to `read-file-name' except it also +expands the file name." + (expand-file-name (read-file-name prompt dir default-filename + mustmatch initial predicate))) + +(defmacro guix-define-reader (name read-fun completions prompt) + "Define NAME function to read from minibuffer. +READ-FUN may be `completing-read', `completing-read-multiple' or +another function with the same arguments." + `(defun ,name (&optional prompt initial-contents) + (,read-fun ,(if prompt + `(or prompt ,prompt) + 'prompt) + ,completions nil nil initial-contents))) + +(defmacro guix-define-readers (&rest args) + "Define reader functions. + +ARGS should have a form [KEYWORD VALUE] ... The following +keywords are available: + + - `completions-var' - variable used to get completions. + + - `completions-getter' - function used to get completions. + + - `single-reader', `single-prompt' - name of a function to read + a single value, and a prompt for it. + + - `multiple-reader', `multiple-prompt' - name of a function to + read multiple values, and a prompt for it. + + - `multiple-separator' - if specified, another + `-string' function returning a string + of multiple values separated the specified separator will be + defined." + (let (completions-var + completions-getter + single-reader + single-prompt + multiple-reader + multiple-prompt + multiple-separator) + + ;; Process the keyword args. + (while (keywordp (car args)) + (pcase (pop args) + (`:completions-var (setq completions-var (pop args))) + (`:completions-getter (setq completions-getter (pop args))) + (`:single-reader (setq single-reader (pop args))) + (`:single-prompt (setq single-prompt (pop args))) + (`:multiple-reader (setq multiple-reader (pop args))) + (`:multiple-prompt (setq multiple-prompt (pop args))) + (`:multiple-separator (setq multiple-separator (pop args))) + (_ (pop args)))) + + (let ((completions + (cond ((and completions-var completions-getter) + `(or ,completions-var + (setq ,completions-var + (funcall ',completions-getter)))) + (completions-var + completions-var) + (completions-getter + `(funcall ',completions-getter))))) + `(progn + ,(when (and completions-var + (not (boundp completions-var))) + `(defvar ,completions-var nil)) + + ,(when single-reader + `(guix-define-reader ,single-reader completing-read + ,completions ,single-prompt)) + + ,(when multiple-reader + `(guix-define-reader ,multiple-reader completing-read-multiple + ,completions ,multiple-prompt)) + + ,(when (and multiple-reader multiple-separator) + (let ((name (intern (concat (symbol-name multiple-reader) + "-string")))) + `(defun ,name (&optional prompt initial-contents) + (guix-concat-strings + (,multiple-reader prompt initial-contents) + ,multiple-separator)))))))) + +(guix-define-readers + :completions-var guix-help-system-types + :single-reader guix-read-system-type + :single-prompt "System type: ") + +(guix-define-readers + :completions-var guix-help-source-types + :single-reader guix-read-source-type + :single-prompt "Source type: ") + +(guix-define-readers + :completions-var guix-help-hash-formats + :single-reader guix-read-hash-format + :single-prompt "Hash format: ") + +(guix-define-readers + :completions-var guix-help-refresh-subsets + :single-reader guix-read-refresh-subset + :single-prompt "Refresh subset: ") + +(guix-define-readers + :completions-var guix-help-key-policies + :single-reader guix-read-key-policy + :single-prompt "Key policy: ") + +(guix-define-readers + :completions-var guix-help-elpa-archives + :single-reader guix-read-elpa-archive + :single-prompt "ELPA archive: ") + +(guix-define-readers + :completions-var guix-help-verify-options + :multiple-reader guix-read-verify-options + :multiple-prompt "Verify option,s: " + :multiple-separator ",") + +(guix-define-readers + :completions-getter guix-graph-type-names + :single-reader guix-read-graph-type + :single-prompt "Graph node type: ") + +(guix-define-readers + :completions-getter guix-lint-checker-names + :multiple-reader guix-read-lint-checker-names + :multiple-prompt "Linter,s: " + :multiple-separator ",") + +(guix-define-readers + :completions-getter guix-package-names + :single-reader guix-read-package-name + :single-prompt "Package: " + :multiple-reader guix-read-package-names + :multiple-prompt "Package,s: " + :multiple-separator " ") + +(provide 'guix-read) + +;;; guix-read.el ends here -- cgit v1.2.3 From 51dac383392a723aa77b0496cf12c593b013cb2b Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sun, 16 Aug 2015 07:11:57 +0300 Subject: emacs: Add and use alist accessors. * emacs/guix-utils.el (guix-define-alist-accessor): New macro. (guix-assq-value, guix-assoc-value): New functions. (guix-get-key-val): Remove. * emacs/guix-base.el: Replace 'guix-get-key-val' with 'guix-assq-value' everywhere. * emacs/guix-info.el: Likewise. * emacs/guix-list.el: Likewise. * emacs/guix-messages.el: Likewise. --- emacs/guix-base.el | 22 +++++++++++----------- emacs/guix-info.el | 48 ++++++++++++++++++++++++------------------------ emacs/guix-list.el | 50 +++++++++++++++++++++++++------------------------- emacs/guix-messages.el | 8 ++++---- emacs/guix-utils.el | 27 +++++++++++++++++++-------- 5 files changed, 83 insertions(+), 72 deletions(-) diff --git a/emacs/guix-base.el b/emacs/guix-base.el index 9cec510406..4c7782dd53 100644 --- a/emacs/guix-base.el +++ b/emacs/guix-base.el @@ -89,8 +89,8 @@ Each element of the list has a form: (defun guix-get-param-title (entry-type param) "Return title of an ENTRY-TYPE entry parameter PARAM." - (or (guix-get-key-val guix-param-titles - entry-type param) + (or (guix-assq-value guix-param-titles + entry-type param) (prog1 (symbol-name param) (message "Couldn't find title for '%S %S'." entry-type param)))) @@ -102,15 +102,15 @@ Each element of the list has a form: (defun guix-get-full-name (entry &optional output) "Return name specification of the package ENTRY and OUTPUT." - (guix-get-name-spec (guix-get-key-val entry 'name) - (guix-get-key-val entry 'version) + (guix-get-name-spec (guix-assq-value entry 'name) + (guix-assq-value entry 'version) output)) (defun guix-entry-to-specification (entry) "Return name specification by the package or output ENTRY." - (guix-get-name-spec (guix-get-key-val entry 'name) - (guix-get-key-val entry 'version) - (guix-get-key-val entry 'output))) + (guix-get-name-spec (guix-assq-value entry 'name) + (guix-assq-value entry 'version) + (guix-assq-value entry 'output))) (defun guix-entries-to-specifications (entries) "Return name specifications by the package or output ENTRIES." @@ -120,13 +120,13 @@ Each element of the list has a form: (defun guix-get-installed-outputs (entry) "Return list of installed outputs for the package ENTRY." (mapcar (lambda (installed-entry) - (guix-get-key-val installed-entry 'output)) - (guix-get-key-val entry 'installed))) + (guix-assq-value installed-entry 'output)) + (guix-assq-value entry 'installed))) (defun guix-get-entry-by-id (id entries) "Return entry from ENTRIES by entry ID." (cl-find-if (lambda (entry) - (equal id (guix-get-key-val entry 'id))) + (equal id (guix-assq-value entry 'id))) entries)) (defun guix-get-package-id-and-output-by-output-id (oid) @@ -934,7 +934,7 @@ ENTRIES is a list of package entries to get info about packages." (outputs (cdr spec)) (entry (guix-get-entry-by-id id entries))) (when entry - (let ((location (guix-get-key-val entry 'location))) + (let ((location (guix-assq-value entry 'location))) (concat (guix-get-full-name entry) (when outputs (concat ":" diff --git a/emacs/guix-info.el b/emacs/guix-info.el index f17ce01ab6..4bdd62a6a5 100644 --- a/emacs/guix-info.el +++ b/emacs/guix-info.el @@ -178,13 +178,13 @@ The order of displayed parameters is the same as in this list.") (defun guix-info-get-insert-methods (entry-type param) "Return list of insert methods for parameter PARAM of ENTRY-TYPE. See `guix-info-insert-methods' for details." - (guix-get-key-val guix-info-insert-methods - entry-type param)) + (guix-assq-value guix-info-insert-methods + entry-type param)) (defun guix-info-get-displayed-params (entry-type) "Return parameters of ENTRY-TYPE that should be displayed." - (guix-get-key-val guix-info-displayed-params - entry-type)) + (guix-assq-value guix-info-displayed-params + entry-type)) (defun guix-info-get-indent (&optional level) "Return `guix-info-indent' \"multiplied\" by LEVEL spaces. @@ -232,7 +232,7 @@ Use `guix-info-insert-ENTRY-TYPE-function' or "Insert title and value of a PARAM at point. ENTRY is alist with parameters and their values. ENTRY-TYPE is a type of ENTRY." - (let ((val (guix-get-key-val entry param))) + (let ((val (guix-assq-value entry param))) (unless (and guix-info-ignore-empty-vals (null val)) (let* ((title (guix-get-param-title entry-type param)) (insert-methods (guix-info-get-insert-methods entry-type param)) @@ -492,12 +492,12 @@ filling them to fit the window." (defun guix-package-info-insert-heading (entry) "Insert the heading for package ENTRY. Show package name, version, and `guix-package-info-heading-params'." - (guix-format-insert (concat (guix-get-key-val entry 'name) " " - (guix-get-key-val entry 'version)) + (guix-format-insert (concat (guix-assq-value entry 'name) " " + (guix-assq-value entry 'version)) 'guix-package-info-heading) (insert "\n\n") (mapc (lambda (param) - (let ((val (guix-get-key-val entry param)) + (let ((val (guix-assq-value entry param)) (face (guix-get-symbol (symbol-name param) 'info 'package))) (when val @@ -587,10 +587,10 @@ If nil, insert installed info in a default way.") (defun guix-package-info-insert-outputs (outputs entry) "Insert OUTPUTS from package ENTRY at point." - (and (guix-get-key-val entry 'obsolete) + (and (guix-assq-value entry 'obsolete) (guix-package-info-insert-obsolete-text)) - (and (guix-get-key-val entry 'non-unique) - (guix-get-key-val entry 'installed) + (and (guix-assq-value entry 'non-unique) + (guix-assq-value entry 'installed) (guix-package-info-insert-non-unique-text (guix-get-full-name entry))) (insert "\n") @@ -617,11 +617,11 @@ If nil, insert installed info in a default way.") Make some fancy text with buttons and additional stuff if the current OUTPUT is installed (if there is such output in `installed' parameter of a package ENTRY)." - (let* ((installed (guix-get-key-val entry 'installed)) - (obsolete (guix-get-key-val entry 'obsolete)) + (let* ((installed (guix-assq-value entry 'installed)) + (obsolete (guix-assq-value entry 'obsolete)) (installed-entry (cl-find-if (lambda (entry) - (string= (guix-get-key-val entry 'output) + (string= (guix-assq-value entry 'output) output)) installed)) (action-type (if installed-entry 'delete 'install))) @@ -655,8 +655,8 @@ ENTRY is an alist with package info." (current-buffer))) (concat type-str " '" full-name "'") 'action-type type - 'id (or (guix-get-key-val entry 'package-id) - (guix-get-key-val entry 'id)) + 'id (or (guix-assq-value entry 'package-id) + (guix-assq-value entry 'id)) 'output output))) (defun guix-package-info-insert-output-path (path &optional _) @@ -720,7 +720,7 @@ PACKAGE-ID is an ID of the package which source to show." (entries (cl-substitute-if new-entry (lambda (entry) - (equal (guix-get-key-val entry 'id) + (equal (guix-assq-value entry 'id) entry-id)) guix-entries :count 1))) @@ -746,9 +746,9 @@ SOURCE is a list of URLs." (guix-info-insert-indent) (if (null source) (guix-format-insert nil) - (let* ((source-file (guix-get-key-val entry 'source-file)) - (entry-id (guix-get-key-val entry 'id)) - (package-id (or (guix-get-key-val entry 'package-id) + (let* ((source-file (guix-assq-value entry 'source-file)) + (entry-id (guix-assq-value entry 'id)) + (package-id (or (guix-assq-value entry 'package-id) entry-id))) (if (null source-file) (guix-info-insert-action-button @@ -798,13 +798,13 @@ If nil, insert output in a default way.") "Insert output VERSION and obsolete text if needed at point." (guix-info-insert-val-default version 'guix-package-info-version) - (and (guix-get-key-val entry 'obsolete) + (and (guix-assq-value entry 'obsolete) (guix-package-info-insert-obsolete-text))) (defun guix-output-info-insert-output (output entry) "Insert OUTPUT and action buttons at point." - (let* ((installed (guix-get-key-val entry 'installed)) - (obsolete (guix-get-key-val entry 'obsolete)) + (let* ((installed (guix-assq-value entry 'installed)) + (obsolete (guix-assq-value entry 'obsolete)) (action-type (if installed 'delete 'install))) (guix-info-insert-val-default output @@ -874,7 +874,7 @@ If nil, insert generation in a default way.") (guix-switch-to-generation guix-profile (button-get btn 'number) (current-buffer))) "Switch to this generation (make it the current one)" - 'number (guix-get-key-val entry 'number)))) + 'number (guix-assq-value entry 'number)))) (provide 'guix-info) diff --git a/emacs/guix-list.el b/emacs/guix-list.el index e84d60a0aa..abb02326af 100644 --- a/emacs/guix-list.el +++ b/emacs/guix-list.el @@ -1,6 +1,6 @@ ;;; guix-list.el --- List buffers for displaying entries -*- lexical-binding: t -*- -;; Copyright © 2014 Alex Kost +;; Copyright © 2014, 2015 Alex Kost ;; This file is part of GNU Guix. @@ -110,13 +110,13 @@ parameters and their values).") (defun guix-list-get-param-title (entry-type param) "Return title of an ENTRY-TYPE entry parameter PARAM." - (or (guix-get-key-val guix-list-column-titles - entry-type param) + (or (guix-assq-value guix-list-column-titles + entry-type param) (guix-get-param-title entry-type param))) (defun guix-list-get-column-format (entry-type) "Return column format for ENTRY-TYPE." - (guix-get-key-val guix-list-column-format entry-type)) + (guix-assq-value guix-list-column-format entry-type)) (defun guix-list-get-displayed-params (entry-type) "Return list of parameters of ENTRY-TYPE that should be displayed." @@ -170,7 +170,7 @@ ENTRIES should have a form of `guix-entries'." Values are taken from ENTRIES which should have the form of `guix-entries'." (mapcar (lambda (entry) - (list (guix-get-key-val entry 'id) + (list (guix-assq-value entry 'id) (guix-list-get-tabulated-entry entry entry-type))) entries)) @@ -180,9 +180,9 @@ Parameters are taken from ENTRY of ENTRY-TYPE." (guix-list-make-tabulated-vector entry-type (lambda (param _) - (let ((val (guix-get-key-val entry param)) - (fun (guix-get-key-val guix-list-column-value-methods - entry-type param))) + (let ((val (guix-assq-value entry param)) + (fun (guix-assq-value guix-list-column-value-methods + entry-type param))) (if fun (funcall fun val entry) (guix-get-string val)))))) @@ -221,7 +221,7 @@ VAL may be nil." (guix-package-list-mode (guix-list-current-id)) (guix-output-list-mode - (guix-get-key-val (guix-list-current-entry) 'package-id)))) + (guix-assq-value (guix-list-current-entry) 'package-id)))) (defun guix-list-for-each-line (fun &rest args) "Call FUN with ARGS for each entry line." @@ -262,7 +262,7 @@ ARGS is a list of additional values.") (defsubst guix-list-get-mark (name) "Return mark character by its NAME." - (or (guix-get-key-val guix-list-mark-alist name) + (or (guix-assq-value guix-list-mark-alist name) (error "Mark '%S' not found" name))) (defsubst guix-list-get-mark-string (name) @@ -355,8 +355,8 @@ With ARG, unmark all lines." "Put marks according to `guix-list-mark-alist'." (guix-list-for-each-line (lambda () - (let ((mark-name (car (guix-get-key-val guix-list-marked - (guix-list-current-id))))) + (let ((mark-name (car (guix-assq-value guix-list-marked + (guix-list-current-id))))) (tabulated-list-put-tag (guix-list-get-mark-string (or mark-name 'empty))))))) @@ -524,16 +524,16 @@ likely)." Colorize it with `guix-package-list-installed' or `guix-package-list-obsolete' if needed." (guix-get-string name - (cond ((guix-get-key-val entry 'obsolete) + (cond ((guix-assq-value entry 'obsolete) 'guix-package-list-obsolete) - ((guix-get-key-val entry 'installed) + ((guix-assq-value entry 'installed) 'guix-package-list-installed)))) (defun guix-package-list-get-installed-outputs (installed &optional _) "Return string with outputs from INSTALLED entries." (guix-get-string (mapcar (lambda (entry) - (guix-get-key-val entry 'output)) + (guix-assq-value entry 'output)) installed))) (defun guix-package-list-marking-check () @@ -562,7 +562,7 @@ be separated with \",\")." (interactive "P") (guix-package-list-marking-check) (let* ((entry (guix-list-current-entry)) - (all (guix-get-key-val entry 'outputs)) + (all (guix-assq-value entry 'outputs)) (installed (guix-get-installed-outputs entry)) (available (cl-set-difference all installed :test #'string=))) (or available @@ -597,7 +597,7 @@ be separated with \",\")." (installed (guix-get-installed-outputs entry))) (or installed (user-error "This package is not installed")) - (when (or (guix-get-key-val entry 'obsolete) + (when (or (guix-assq-value entry 'obsolete) (y-or-n-p "This package is not obsolete. Try to upgrade it anyway? ")) (guix-package-list-mark-outputs 'upgrade installed @@ -611,14 +611,14 @@ accept an entry as argument." (guix-package-list-marking-check) (let ((obsolete (cl-remove-if-not (lambda (entry) - (guix-get-key-val entry 'obsolete)) + (guix-assq-value entry 'obsolete)) guix-entries))) (guix-list-for-each-line (lambda () (let* ((id (guix-list-current-id)) (entry (cl-find-if (lambda (entry) - (equal id (guix-get-key-val entry 'id))) + (equal id (guix-assq-value entry 'id))) obsolete))) (when entry (funcall fun entry))))))) @@ -682,7 +682,7 @@ The specification is suitable for `guix-process-package-actions'." (interactive) (guix-package-list-marking-check) (let* ((entry (guix-list-current-entry)) - (installed (guix-get-key-val entry 'installed))) + (installed (guix-assq-value entry 'installed))) (if installed (user-error "This output is already installed") (guix-list--mark 'install t)))) @@ -692,7 +692,7 @@ The specification is suitable for `guix-process-package-actions'." (interactive) (guix-package-list-marking-check) (let* ((entry (guix-list-current-entry)) - (installed (guix-get-key-val entry 'installed))) + (installed (guix-assq-value entry 'installed))) (if installed (guix-list--mark 'delete t) (user-error "This output is not installed")))) @@ -702,10 +702,10 @@ The specification is suitable for `guix-process-package-actions'." (interactive) (guix-package-list-marking-check) (let* ((entry (guix-list-current-entry)) - (installed (guix-get-key-val entry 'installed))) + (installed (guix-assq-value entry 'installed))) (or installed (user-error "This output is not installed")) - (when (or (guix-get-key-val entry 'obsolete) + (when (or (guix-assq-value entry 'obsolete) (y-or-n-p "This output is not obsolete. Try to upgrade it anyway? ")) (guix-list--mark 'upgrade t)))) @@ -777,8 +777,8 @@ VAL is a boolean value." "Switch current profile to the generation at point." (interactive) (let* ((entry (guix-list-current-entry)) - (current (guix-get-key-val entry 'current)) - (number (guix-get-key-val entry 'number))) + (current (guix-assq-value entry 'current)) + (number (guix-assq-value entry 'number))) (if current (user-error "This generation is already the current one") (guix-switch-to-generation guix-profile number (current-buffer))))) diff --git a/emacs/guix-messages.el b/emacs/guix-messages.el index bd985a0670..2bf99de6fa 100644 --- a/emacs/guix-messages.el +++ b/emacs/guix-messages.el @@ -1,6 +1,6 @@ ;;; guix-messages.el --- Minibuffer messages -;; Copyright © 2014 Alex Kost +;; Copyright © 2014, 2015 Alex Kost ;; This file is part of GNU Guix. @@ -186,14 +186,14 @@ (defun guix-result-message (profile entries entry-type search-type search-vals) "Display an appropriate message after displaying ENTRIES." - (let* ((type-spec (guix-get-key-val guix-messages - entry-type search-type)) + (let* ((type-spec (guix-assq-value guix-messages + entry-type search-type)) (fun-or-count-spec (car type-spec))) (if (functionp fun-or-count-spec) (funcall fun-or-count-spec profile entries search-vals) (let* ((count (length entries)) (count-key (if (> count 1) 'many count)) - (msg-spec (guix-get-key-val type-spec count-key)) + (msg-spec (guix-assq-value type-spec count-key)) (msg (car msg-spec)) (args (cdr msg-spec))) (mapc (lambda (subst) diff --git a/emacs/guix-utils.el b/emacs/guix-utils.el index 0b8a760af8..78ea3545c6 100644 --- a/emacs/guix-utils.el +++ b/emacs/guix-utils.el @@ -193,14 +193,6 @@ Return time value." (require 'org) (org-read-date nil t nil prompt)) -(defun guix-get-key-val (alist &rest keys) - "Return value from ALIST by KEYS. -ALIST is alist of alists of alists ... which can be consecutively -accessed with KEYS." - (let ((val alist)) - (dolist (key keys val) - (setq val (cdr (assq key val)))))) - (defun guix-find-file (file) "Find FILE if it exists." (if (file-exists-p file) @@ -223,6 +215,25 @@ Return nil otherwise." (or (funcall pred (car lst)) (guix-any pred (cdr lst))))) + +;;; Alist accessors + +(defmacro guix-define-alist-accessor (name assoc-fun) + "Define NAME function to access alist values using ASSOC-FUN." + `(defun ,name (alist &rest keys) + ,(format "Return value from ALIST by KEYS using `%s'. +ALIST is alist of alists of alists ... which can be consecutively +accessed with KEYS." + assoc-fun) + (if (or (null alist) (null keys)) + alist + (apply #',name + (cdr (,assoc-fun (car keys) alist)) + (cdr keys))))) + +(guix-define-alist-accessor guix-assq-value assq) +(guix-define-alist-accessor guix-assoc-value assoc) + ;;; Diff -- cgit v1.2.3 From caa6732e967ef4e397533d1cff9ba5626b2b4131 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sun, 16 Aug 2015 10:28:04 +0300 Subject: ui: Add 'run-guix'. * guix/ui.scm (guix-main): Move the code to run guix command line to ... (run-guix): ...here. New procedure. Export it. --- guix/ui.scm | 51 +++++++++++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/guix/ui.scm b/guix/ui.scm index a6d4fd10cf..8de8e3c863 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2013 Mark H Weaver ;;; Copyright © 2013 Nikita Karetnikov -;;; Copyright © 2014 Alex Kost +;;; Copyright © 2014, 2015 Alex Kost ;;; Copyright © 2014 Deck Pickard ;;; ;;; This file is part of GNU Guix. @@ -77,6 +77,7 @@ (define-module (guix ui) args-fold* parse-command-line run-guix-command + run-guix program-name guix-warning-port warning @@ -1032,31 +1033,37 @@ (define module (parameterize ((program-name command)) (apply command-main args)))) +(define (run-guix . args) + "Run the 'guix' command defined by command line ARGS. +Unlike 'guix-main', this procedure assumes that locale, i18n support, +and signal handling has already been set up." + (define option? (cut string-prefix? "-" <>)) + + (match args + (() + (format (current-error-port) + (_ "guix: missing command name~%")) + (show-guix-usage)) + ((or ("-h") ("--help")) + (show-guix-help)) + (("--version") + (show-version-and-exit "guix")) + (((? option? o) args ...) + (format (current-error-port) + (_ "guix: unrecognized option '~a'~%") o) + (show-guix-usage)) + (("help" args ...) + (show-guix-help)) + ((command args ...) + (apply run-guix-command + (string->symbol command) + args)))) + (define guix-warning-port (make-parameter (current-warning-port))) (define (guix-main arg0 . args) (initialize-guix) - (let () - (define (option? str) (string-prefix? "-" str)) - (match args - (() - (format (current-error-port) - (_ "guix: missing command name~%")) - (show-guix-usage)) - ((or ("-h") ("--help")) - (show-guix-help)) - (("--version") - (show-version-and-exit "guix")) - (((? option? o) args ...) - (format (current-error-port) - (_ "guix: unrecognized option '~a'~%") o) - (show-guix-usage)) - (("help" args ...) - (show-guix-help)) - ((command args ...) - (apply run-guix-command - (string->symbol command) - args))))) + (apply run-guix args)) ;;; ui.scm ends here -- cgit v1.2.3 From 5e53b0c5a9e1c693d46bdaf24e6b5ce498410da6 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Thu, 13 Aug 2015 10:51:31 +0300 Subject: emacs: Add code to run guix command in REPL. * emacs/guix-base.el (guix-run-command-in-repl, guix-command-output, guix-help-string): New functions. * emacs/guix-main.scm (guix-command, guix-command-output, help-string): New procedures. --- emacs/guix-base.el | 21 +++++++++++++++++++++ emacs/guix-main.scm | 18 ++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/emacs/guix-base.el b/emacs/guix-base.el index 4c7782dd53..d1593e285d 100644 --- a/emacs/guix-base.el +++ b/emacs/guix-base.el @@ -1084,6 +1084,27 @@ FILE. With a prefix argument, also prompt for PROFILE." (concat "--manifest=" file)) operation-buffer))) + +;;; Executing guix commands + +(defun guix-run-command-in-repl (args) + "Execute 'guix ARGS ...' command in Guix REPL." + (guix-eval-in-repl + (apply #'guix-make-guile-expression + 'guix-command args))) + +(defun guix-command-output (args) + "Return string with 'guix ARGS ...' output." + (guix-eval-read + (apply #'guix-make-guile-expression + 'guix-command-output args))) + +(defun guix-help-string (&optional commands) + "Return string with 'guix COMMANDS ... --help' output." + (guix-eval-read + (apply #'guix-make-guile-expression + 'help-string commands))) + ;;; Pull diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm index 341657d931..bd42f8fc21 100644 --- a/emacs/guix-main.scm +++ b/emacs/guix-main.scm @@ -930,6 +930,24 @@ (define* (package-source-build-derivation package-id #:key dry-run? (format #t "The source store path: ~a~%" (package-source-derivation->store-path derivation)))))) + +;;; Executing guix commands + +(define (guix-command . args) + "Run 'guix ARGS ...' command." + (catch 'quit + (lambda () (apply run-guix args)) + (const #t))) + +(define (guix-command-output . args) + "Return string with 'guix ARGS ...' output." + (with-output-to-string + (lambda () (apply guix-command args)))) + +(define (help-string . commands) + "Return string with 'guix COMMANDS ... --help' output." + (apply guix-command-output `(,@commands "--help"))) + ;;; Lists of packages, lint checkers, etc. -- cgit v1.2.3 From 7008dffff52b59bb37361e72f4319977a91db2f1 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sun, 16 Aug 2015 13:55:25 +0300 Subject: emacs: Add code to run guix command in shell. * emacs/guix-base.el (guix-run-in-shell, guix-run-in-eshell, guix-run-command-in-shell): New functions. (guix-run-in-shell-function, guix-shell-buffer-name): New variables. --- emacs/guix-base.el | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/emacs/guix-base.el b/emacs/guix-base.el index d1593e285d..4dff0d6170 100644 --- a/emacs/guix-base.el +++ b/emacs/guix-base.el @@ -1087,6 +1087,42 @@ FILE. With a prefix argument, also prompt for PROFILE." ;;; Executing guix commands +(defcustom guix-run-in-shell-function #'guix-run-in-shell + "Function used to run guix command. +The function is called with a single argument - a command line string." + :type '(choice (function-item guix-run-in-shell) + (function-item guix-run-in-eshell) + (function :tag "Other function")) + :group 'guix) + +(defcustom guix-shell-buffer-name "*shell*" + "Default name of a shell buffer used for running guix commands." + :type 'string + :group 'guix) + +(declare-function comint-send-input "comint" t) + +(defun guix-run-in-shell (string) + "Run command line STRING in `guix-shell-buffer-name' buffer." + (shell guix-shell-buffer-name) + (goto-char (point-max)) + (insert string) + (comint-send-input)) + +(declare-function eshell-send-input "esh-mode" t) + +(defun guix-run-in-eshell (string) + "Run command line STRING in eshell buffer." + (eshell) + (goto-char (point-max)) + (insert string) + (eshell-send-input)) + +(defun guix-run-command-in-shell (args) + "Execute 'guix ARGS ...' command in a shell buffer." + (funcall guix-run-in-shell-function + (guix-command-string args))) + (defun guix-run-command-in-repl (args) "Execute 'guix ARGS ...' command in Guix REPL." (guix-eval-in-repl -- cgit v1.2.3 From c554de892901e1375d55fa953855a01c32154189 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Thu, 13 Aug 2015 20:16:29 +0300 Subject: doc: Reorganize "Emacs Interface" node. * doc/guix.texi (Package Management): Move "Emacs Interface" node to ... (Top): ...here, since it is not just about package management. * doc/emacs.texi: Shift all nodes one level up (@section -> @chapter, etc.). Rename "Emacs Usage" node into "Emacs Package Management". Move "Emacs Configuration" node here. --- doc/emacs.texi | 58 ++++++++++++++++++++++++++++++---------------------------- doc/guix.texi | 20 +++++++++++++------- 2 files changed, 43 insertions(+), 35 deletions(-) diff --git a/doc/emacs.texi b/doc/emacs.texi index 180037a88f..5fa15d7783 100644 --- a/doc/emacs.texi +++ b/doc/emacs.texi @@ -1,29 +1,21 @@ @node Emacs Interface -@section Emacs Interface +@chapter Emacs Interface @cindex Emacs -GNU Guix comes with a visual user interface for GNU@tie{}Emacs, known -as ``guix.el''. It can be used for routine package management tasks, -pretty much like the @command{guix package} command (@pxref{Invoking -guix package}). Specifically, ``guix.el'' makes it easy to: - -@itemize -@item browse and display packages and generations; -@item search, install, upgrade and remove packages; -@item display packages from previous generations; -@item do some other useful things. -@end itemize +GNU Guix comes with several useful modules (known as ``guix.el'') for +GNU@tie{}Emacs which are intended to make an Emacs user interaction with +Guix convenient and fun. @menu * Initial Setup: Emacs Initial Setup. Preparing @file{~/.emacs}. -* Usage: Emacs Usage. Using the interface. -* Configuration: Emacs Configuration. Configuring the interface. +* Package Management: Emacs Package Management. Managing packages and generations. * Prettify Mode: Emacs Prettify. Abbreviating @file{/gnu/store/@dots{}} file names. * Completions: Emacs Completions. Completing @command{guix} shell command. @end menu + @node Emacs Initial Setup -@subsection Initial Setup +@section Initial Setup On the Guix System Distribution (@pxref{GNU Distribution}), ``guix.el'' is ready to use, provided Guix is installed system-wide, which is the @@ -105,22 +97,32 @@ emacs, The GNU Emacs Manual}). You can activate Emacs packages installed in your profile whenever you want using @kbd{M-x@tie{}guix-emacs-load-autoloads}. -@node Emacs Usage -@subsection Usage + +@node Emacs Package Management +@section Package Management Once ``guix.el'' has been successfully configured, you should be able to -use commands for displaying packages and generations. This information -can be displayed in a ``list'' or ``info'' buffer. +use a visual interface for routine package management tasks, pretty much +like the @command{guix package} command (@pxref{Invoking guix package}). +Specifically, it makes it easy to: + +@itemize +@item browse and display packages and generations; +@item search, install, upgrade and remove packages; +@item display packages from previous generations; +@item do some other useful things. +@end itemize @menu * Commands: Emacs Commands. @kbd{M-x guix-@dots{}} * General information: Emacs General info. Common for both interfaces. * ``List'' buffer: Emacs List buffer. List-like interface. * ``Info'' buffer: Emacs Info buffer. Help-like interface. +* Configuration: Emacs Configuration. Configuring the interface. @end menu @node Emacs Commands -@subsubsection Commands +@subsection Commands All commands for displaying packages and generations use the current profile, which can be changed with @@ -191,7 +193,7 @@ Once @command{guix pull} has succeeded, the Guix REPL is restared. This allows you to keep using the Emacs interface with the updated Guix. @node Emacs General info -@subsubsection General information +@subsection General information The following keys are available for both ``list'' and ``info'' types of buffers: @@ -235,7 +237,7 @@ was restarted, you may want to revert ``list'' buffer (by pressing @kbd{g}). @node Emacs List buffer -@subsubsection ``List'' buffer +@subsection ``List'' buffer An interface of a ``list'' buffer is similar to the interface provided by ``package.el'' (@pxref{Package Menu,,, emacs, The GNU Emacs Manual}). @@ -310,7 +312,7 @@ with another marked generation. @end table @node Emacs Info buffer -@subsubsection ``Info'' buffer +@subsection ``Info'' buffer The interface of an ``info'' buffer is similar to the interface of @code{help-mode} (@pxref{Help Mode,,, emacs, The GNU Emacs Manual}). @@ -485,11 +487,11 @@ Various settings for ``info'' buffers. @node Emacs Prettify -@subsection Guix Prettify Mode +@section Guix Prettify Mode -Along with ``guix.el'', GNU@tie{}Guix comes with ``guix-prettify.el''. -It provides a minor mode for abbreviating store file names by replacing -hash sequences of symbols with ``@dots{}'': +GNU@tie{}Guix also comes with ``guix-prettify.el''. It provides a minor +mode for abbreviating store file names by replacing hash sequences of +symbols with ``@dots{}'': @example /gnu/store/72f54nfp6g1hz873w8z3gfcah0h4nl9p-foo-0.1 @@ -526,7 +528,7 @@ mode hooks (@pxref{Hooks,,, emacs, The GNU Emacs Manual}), for example: @node Emacs Completions -@subsection Shell Completions +@section Shell Completions Another feature that becomes available after configuring Emacs interface (@pxref{Emacs Initial Setup}) is completing of @command{guix} diff --git a/doc/guix.texi b/doc/guix.texi index 5a9ebc93f8..cb5bbab2a0 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -70,6 +70,7 @@ package management tool written for the GNU system. * Introduction:: What is Guix about? * Installation:: Installing Guix. * Package Management:: Package installation, upgrade, etc. +* Emacs Interface:: Using Guix from Emacs. * Programming Interface:: Using Guix in Scheme. * Utilities:: Package management commands. * GNU Distribution:: Software for your friendly GNU system. @@ -101,13 +102,19 @@ Package Management * Features:: How Guix will make your life brighter. * Invoking guix package:: Package installation, removal, etc. -* Emacs Interface:: Package management from Emacs. * Substitutes:: Downloading pre-built binaries. * Packages with Multiple Outputs:: Single source package, multiple outputs. * Invoking guix gc:: Running the garbage collector. * Invoking guix pull:: Fetching the latest Guix and distribution. * Invoking guix archive:: Exporting and importing store files. +Emacs Interface + +* Initial Setup: Emacs Initial Setup. Preparing @file{~/.emacs}. +* Package Management: Emacs Package Management. Managing packages and generations. +* Prettify Mode: Emacs Prettify. Abbreviating @file{/gnu/store/@dots{}} file names. +* Completions: Emacs Completions. Completing @command{guix} shell command. + Programming Interface * Defining Packages:: Defining new packages. @@ -964,14 +971,13 @@ features. This chapter describes the main features of Guix, as well as the package management tools it provides. Two user interfaces are provided for -routine package management tasks: a command-line interface -(@pxref{Invoking guix package, @code{guix package}}), and a visual user -interface in Emacs (@pxref{Emacs Interface}). +routine package management tasks: A command-line interface described below +(@pxref{Invoking guix package, @code{guix package}}), as well as a visual user +interface in Emacs described in a subsequent chapter (@pxref{Emacs Interface}). @menu * Features:: How Guix will make your life brighter. * Invoking guix package:: Package installation, removal, etc. -* Emacs Interface:: Package management from Emacs. * Substitutes:: Downloading pre-built binaries. * Packages with Multiple Outputs:: Single source package, multiple outputs. * Invoking guix gc:: Running the garbage collector. @@ -1455,8 +1461,6 @@ Finally, since @command{guix package} may actually start build processes, it supports all the common build options that @command{guix build} supports (@pxref{Invoking guix build, common build options}). -@include emacs.texi - @node Substitutes @section Substitutes @@ -1898,6 +1902,8 @@ automatically builds them. The build process may be controlled with the same options that can be passed to the @command{guix build} command (@pxref{Invoking guix build, common build options}). +@c ********************************************************************* +@include emacs.texi @c ********************************************************************* @node Programming Interface -- cgit v1.2.3 From 1f13861b579aadf6818f4388a9e9654c9637ae5c Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Thu, 13 Aug 2015 11:06:45 +0300 Subject: emacs: Add "guix-popup.el". * emacs/guix-popup.el: New file. * emacs.am (ELFILES): Add it. --- emacs.am | 1 + emacs/guix-popup.el | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 emacs/guix-popup.el diff --git a/emacs.am b/emacs.am index 18ff091c7a..e3f2001e8f 100644 --- a/emacs.am +++ b/emacs.am @@ -28,6 +28,7 @@ ELFILES = \ emacs/guix-list.el \ emacs/guix-messages.el \ emacs/guix-pcomplete.el \ + emacs/guix-popup.el \ emacs/guix-prettify.el \ emacs/guix-read.el \ emacs/guix-utils.el \ diff --git a/emacs/guix-popup.el b/emacs/guix-popup.el new file mode 100644 index 0000000000..59e98a352e --- /dev/null +++ b/emacs/guix-popup.el @@ -0,0 +1,48 @@ +;;; guix-popup.el --- Popup windows library + +;; Copyright © 2015 Alex Kost + +;; This file is part of GNU Guix. + +;; GNU Guix is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Guix is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;; This file provides `guix-define-popup' macro which is just an alias +;; to `magit-define-popup'. According to the manual (info +;; "(magit-popup) Defining prefix and suffix commands") `magit-popup' +;; library will eventually be superseded by a more general library. + +;;; Code: + +(require 'magit-popup) + +(defalias 'guix-define-popup 'magit-define-popup) + +(defvar guix-popup-font-lock-keywords + (eval-when-compile + `((,(rx "(" + (group "guix-define-popup") + symbol-end + (zero-or-more blank) + (zero-or-one + (group (one-or-more (or (syntax word) (syntax symbol)))))) + (1 font-lock-keyword-face) + (2 font-lock-function-name-face nil t))))) + +(font-lock-add-keywords 'emacs-lisp-mode guix-popup-font-lock-keywords) + +(provide 'guix-popup) + +;;; guix-popup.el ends here -- cgit v1.2.3 From 9b0afb0d289c58233bbc1764097b88e7fab3724f Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Fri, 14 Aug 2015 10:47:10 +0300 Subject: emacs: Add popup interface for guix commands. * emacs/guix-command.el: New file. * emacs.am (ELFILES): Add it. * doc/emacs.texi (Emacs Initial Setup): Mention 'magit-popup' library. (Emacs Popup Interface): New node. (Emacs Interface): Add it. * doc/guix.texi (Top): Likewise. --- doc/emacs.texi | 44 ++++ doc/guix.texi | 1 + emacs.am | 1 + emacs/guix-command.el | 649 ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 695 insertions(+) create mode 100644 emacs/guix-command.el diff --git a/doc/emacs.texi b/doc/emacs.texi index 5fa15d7783..db2e657d27 100644 --- a/doc/emacs.texi +++ b/doc/emacs.texi @@ -9,6 +9,7 @@ Guix convenient and fun. @menu * Initial Setup: Emacs Initial Setup. Preparing @file{~/.emacs}. * Package Management: Emacs Package Management. Managing packages and generations. +* Popup Interface: Emacs Popup Interface. Magit-like interface for guix commands. * Prettify Mode: Emacs Prettify. Abbreviating @file{/gnu/store/@dots{}} file names. * Completions: Emacs Completions. Completing @command{guix} shell command. @end menu @@ -35,6 +36,12 @@ later; @uref{http://nongnu.org/geiser/, Geiser}, version 0.3 or later: it is used for interacting with the Guile process. +@item +@uref{https://github.com/magit/magit/, magit-popup library}. You +already have this library if you use Magit 2.1.0 or later. This library +is an optional dependency---it is required only for @kbd{M-x@tie{}guix} +command (@pxref{Emacs Popup Interface}). + @end itemize When it is done ``guix.el'' may be configured by requiring a special @@ -486,6 +493,43 @@ Various settings for ``info'' buffers. @end table +@node Emacs Popup Interface +@section Popup Interface + +If you ever used Magit, you know what ``popup interface'' is +(@pxref{Top,,, magit-popup, Magit-Popup User Manual}). Even if you are +not acquainted with Magit, there should be no worries as it is very +intuitive. + +So @kbd{M-x@tie{}guix} command provides a top-level popup interface for +all available guix commands. When you select an option, you'll be +prompted for a value in the minibuffer. Many values have completions, +so don't hesitate to press @key{TAB} key. Multiple values (for example, +packages or lint checkers) should be separated by commas. + +After specifying all options and switches for a command, you may choose +one of the available actions. The following default actions are +available for all commands: + +@itemize + +@item +Run the command in the Guix REPL. It is faster than running +@code{guix@tie{}@dots{}} command directly in shell, as there is no +need to run another guile process and to load required modules there. + +@item +Run the command in a shell buffer. You can set +@code{guix-run-in-shell-function} variable to fine tune the shell buffer +you want to use. + +@item +Add the command line to the kill ring (@pxref{Kill Ring,,, emacs, The +GNU Emacs Manual}). + +@end itemize + + @node Emacs Prettify @section Guix Prettify Mode diff --git a/doc/guix.texi b/doc/guix.texi index cb5bbab2a0..89291273c4 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -112,6 +112,7 @@ Emacs Interface * Initial Setup: Emacs Initial Setup. Preparing @file{~/.emacs}. * Package Management: Emacs Package Management. Managing packages and generations. +* Popup Interface: Emacs Popup Interface. Magit-like interface for guix commands. * Prettify Mode: Emacs Prettify. Abbreviating @file{/gnu/store/@dots{}} file names. * Completions: Emacs Completions. Completing @command{guix} shell command. diff --git a/emacs.am b/emacs.am index e3f2001e8f..bf91cca0bb 100644 --- a/emacs.am +++ b/emacs.am @@ -21,6 +21,7 @@ AUTOLOADS = emacs/guix-autoloads.el ELFILES = \ emacs/guix-backend.el \ emacs/guix-base.el \ + emacs/guix-command.el \ emacs/guix-emacs.el \ emacs/guix-help-vars.el \ emacs/guix-history.el \ diff --git a/emacs/guix-command.el b/emacs/guix-command.el new file mode 100644 index 0000000000..97a88726df --- /dev/null +++ b/emacs/guix-command.el @@ -0,0 +1,649 @@ +;;; guix-command.el --- Popup interface for guix commands -*- lexical-binding: t -*- + +;; Copyright © 2015 Alex Kost + +;; This file is part of GNU Guix. + +;; GNU Guix is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Guix is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;; This file provides a magit-like popup interface for running guix +;; commands in Guix REPL. The entry point is "M-x guix". When it is +;; called the first time, "guix --help" output is parsed and +;; `guix-COMMAND-action' functions are generated for each available guix +;; COMMAND. Then a window with these commands is popped up. When a +;; particular COMMAND is called, "guix COMMAND --help" output is parsed, +;; and a user get a new popup window with available options for this +;; command and so on. + +;; To avoid hard-coding all guix options, actions, etc., as much data is +;; taken from "guix ... --help" outputs as possible. But this data is +;; still incomplete: not all long options have short analogs, also +;; special readers should be used for some options (for example, to +;; complete package names while prompting for a package). So after +;; parsing --help output, the arguments are "improved". All arguments +;; (switches, options and actions) are `guix-command-argument' +;; structures. + +;; Only "M-x guix" command is available after this file is loaded. The +;; rest commands/actions/popups are generated on the fly only when they +;; are needed (that's why there is a couple of `eval'-s in this file). + +;; COMMANDS argument is used by many functions in this file. It means a +;; list of guix commands without "guix" itself, e.g.: ("build"), +;; ("import" "gnu"). The empty list stands for the plain "guix" without +;; subcommands. + +;; All actions in popup windows are divided into 2 groups: +;; +;; - 'Popup' actions - used to pop up another window. For example, every +;; action in the 'guix' or 'guix import' window is a popup action. They +;; are defined by `guix-command-define-popup-action' macro. +;; +;; - 'Execute' actions - used to do something with the command line (to +;; run a command in Guix REPL or to copy it into kill-ring) constructed +;; with the current popup. They are defined by +;; `guix-command-define-execute-action' macro. + +;;; Code: + +(require 'cl-lib) +(require 'guix-popup) +(require 'guix-utils) +(require 'guix-help-vars) +(require 'guix-read) +(require 'guix-base) + +(defgroup guix-commands nil + "Settings for guix popup windows." + :group 'guix) + +(defvar guix-command-complex-with-shared-arguments + '("system") + "List of guix commands which have subcommands with shared options. +I.e., 'guix foo --help' is the same as 'guix foo bar --help'.") + +(defun guix-command-action-name (&optional commands &rest name-parts) + "Return name of action function for guix COMMANDS." + (guix-command-symbol (append commands name-parts (list "action")))) + + +;;; Command arguments + +(cl-defstruct (guix-command-argument + (:constructor guix-command-make-argument) + (:copier guix-command-copy-argument)) + name char doc fun switch? option? action?) + +(cl-defun guix-command-modify-argument + (argument &key + (name nil name-bound?) + (char nil char-bound?) + (doc nil doc-bound?) + (fun nil fun-bound?) + (switch? nil switch?-bound?) + (option? nil option?-bound?) + (action? nil action?-bound?)) + "Return a modified version of ARGUMENT." + (declare (indent 1)) + (let ((copy (guix-command-copy-argument argument))) + (and name-bound? (setf (guix-command-argument-name copy) name)) + (and char-bound? (setf (guix-command-argument-char copy) char)) + (and doc-bound? (setf (guix-command-argument-doc copy) doc)) + (and fun-bound? (setf (guix-command-argument-fun copy) fun)) + (and switch?-bound? (setf (guix-command-argument-switch? copy) switch?)) + (and option?-bound? (setf (guix-command-argument-option? copy) option?)) + (and action?-bound? (setf (guix-command-argument-action? copy) action?)) + copy)) + +(defun guix-command-modify-argument-from-alist (argument alist) + "Return a modified version of ARGUMENT or nil if it wasn't modified. +Each assoc from ALIST have a form (NAME . PLIST). NAME is an +argument name. PLIST is a property list of argument parameters +to be modified." + (let* ((name (guix-command-argument-name argument)) + (plist (guix-assoc-value alist name))) + (when plist + (apply #'guix-command-modify-argument + argument plist)))) + +(defmacro guix-command-define-argument-improver (name alist) + "Define NAME variable and function to modify an argument from ALIST." + (declare (indent 1)) + `(progn + (defvar ,name ,alist) + (defun ,name (argument) + (guix-command-modify-argument-from-alist argument ,name)))) + +(guix-command-define-argument-improver + guix-command-improve-action-argument + '(("graph" :char ?G) + ("environment" :char ?E) + ("publish" :char ?u) + ("pull" :char ?P) + ("size" :char ?z))) + +(guix-command-define-argument-improver + guix-command-improve-common-argument + '(("--help" :switch? nil) + ("--version" :switch? nil))) + +(guix-command-define-argument-improver + guix-command-improve-target-argument + '(("--target" :char ?T))) + +(guix-command-define-argument-improver + guix-command-improve-system-type-argument + '(("--system" :fun guix-read-system-type))) + +(guix-command-define-argument-improver + guix-command-improve-load-path-argument + '(("--load-path" :fun read-directory-name))) + +(guix-command-define-argument-improver + guix-command-improve-search-paths-argument + '(("--search-paths" :char ?P))) + +(guix-command-define-argument-improver + guix-command-improve-substitute-urls-argument + '(("--substitute-urls" :char ?U))) + +(guix-command-define-argument-improver + guix-command-improve-hash-argument + '(("--format" :fun guix-read-hash-format))) + +(guix-command-define-argument-improver + guix-command-improve-key-policy-argument + '(("--key-download" :fun guix-read-key-policy))) + +(defvar guix-command-improve-common-build-argument + '(("--no-substitutes" :char ?s) + ("--no-build-hook" :char ?h) + ("--max-silent-time" :char ?x))) + +(defun guix-command-improve-common-build-argument (argument) + (guix-command-modify-argument-from-alist + argument + (append guix-command-improve-load-path-argument + guix-command-improve-substitute-urls-argument + guix-command-improve-common-build-argument))) + +(guix-command-define-argument-improver + guix-command-improve-archive-argument + '(("--generate-key" :char ?k))) + +(guix-command-define-argument-improver + guix-command-improve-build-argument + '(("--no-grafts" :char ?g) + ("--root" :fun guix-read-file-name) + ("--sources" :char ?S :fun guix-read-source-type :switch? nil) + ("--with-source" :fun guix-read-file-name))) + +(guix-command-define-argument-improver + guix-command-improve-environment-argument + '(("--exec" :fun read-shell-command) + ("--load" :fun guix-read-file-name))) + +(guix-command-define-argument-improver + guix-command-improve-gc-argument + '(("--list-dead" :char ?D) + ("--list-live" :char ?L) + ("--referrers" :char ?f) + ("--verify" :fun guix-read-verify-options-string))) + +(guix-command-define-argument-improver + guix-command-improve-graph-argument + '(("--type" :fun guix-read-graph-type))) + +(guix-command-define-argument-improver + guix-command-improve-import-elpa-argument + '(("--archive" :fun guix-read-elpa-archive))) + +(guix-command-define-argument-improver + guix-command-improve-lint-argument + '(("--checkers" :fun guix-read-lint-checker-names-string))) + +(guix-command-define-argument-improver + guix-command-improve-package-argument + ;; Unlike all other options, --install/--remove do not have a form + ;; '--install=foo,bar' but '--install foo bar' instead, so we need + ;; some tweaks. + '(("--install" + :name "--install " :fun guix-read-package-names-string + :switch? nil :option? t) + ("--remove" + :name "--remove " :fun guix-read-package-names-string + :switch? nil :option? t) + ("--install-from-file" :fun guix-read-file-name) + ("--manifest" :fun guix-read-file-name) + ("--do-not-upgrade" :char ?U) + ("--roll-back" :char ?R) + ("--show" :char ?w :fun guix-read-package-name))) + +(guix-command-define-argument-improver + guix-command-improve-refresh-argument + '(("--select" :fun guix-read-refresh-subset) + ("--key-server" :char ?S))) + +(guix-command-define-argument-improver + guix-command-improve-size-argument + '(("--map-file" :fun guix-read-file-name))) + +(guix-command-define-argument-improver + guix-command-improve-system-argument + '(("vm-image" :char ?V) + ("--on-error" :char ?E) + ("--no-grub" :char ?g) + ("--full-boot" :char ?b))) + +(defvar guix-command-argument-improvers + '((() + guix-command-improve-action-argument) + (("archive") + guix-command-improve-common-build-argument + guix-command-improve-target-argument + guix-command-improve-system-type-argument + guix-command-improve-archive-argument) + (("build") + guix-command-improve-common-build-argument + guix-command-improve-target-argument + guix-command-improve-system-type-argument + guix-command-improve-build-argument) + (("download") + guix-command-improve-hash-argument) + (("hash") + guix-command-improve-hash-argument) + (("environment") + guix-command-improve-common-build-argument + guix-command-improve-search-paths-argument + guix-command-improve-system-type-argument + guix-command-improve-environment-argument) + (("gc") + guix-command-improve-gc-argument) + (("graph") + guix-command-improve-graph-argument) + (("import" "gnu") + guix-command-improve-key-policy-argument) + (("import" "elpa") + guix-command-improve-import-elpa-argument) + (("lint") + guix-command-improve-lint-argument) + (("package") + guix-command-improve-common-build-argument + guix-command-improve-search-paths-argument + guix-command-improve-package-argument) + (("refresh") + guix-command-improve-key-policy-argument + guix-command-improve-refresh-argument) + (("size") + guix-command-improve-system-type-argument + guix-command-improve-substitute-urls-argument + guix-command-improve-size-argument) + (("system") + guix-command-improve-common-build-argument + guix-command-improve-system-argument)) + "Alist of guix commands and argument improvers for them.") + +(defun guix-command-improve-argument (argument improvers) + "Return ARGUMENT modified with IMPROVERS." + (or (guix-any (lambda (improver) + (funcall improver argument)) + improvers) + argument)) + +(defun guix-command-improve-arguments (arguments commands) + "Return ARGUMENTS for 'guix COMMANDS ...' modified for popup interface." + (let ((improvers (cons 'guix-command-improve-common-argument + (guix-assoc-value guix-command-argument-improvers + commands)))) + (mapcar (lambda (argument) + (guix-command-improve-argument argument improvers)) + arguments))) + +(defun guix-command-parse-arguments (&optional commands) + "Return a list of parsed 'guix COMMANDS ...' arguments." + (with-temp-buffer + (insert (guix-help-string commands)) + (let (args) + (guix-while-search guix-help-parse-option-regexp + (let* ((short (match-string-no-properties 1)) + (name (match-string-no-properties 2)) + (arg (match-string-no-properties 3)) + (doc (match-string-no-properties 4)) + (char (if short + (elt short 1) ; short option letter + (elt name 2))) ; first letter of the long option + ;; If "--foo=bar" or "--foo[=bar]" then it is 'option'. + (option? (not (string= "" arg))) + ;; If "--foo" or "--foo[=bar]" then it is 'switch'. + (switch? (or (string= "" arg) + (eq ?\[ (elt arg 0))))) + (push (guix-command-make-argument + :name name + :char char + :doc doc + :switch? switch? + :option? option?) + args))) + (guix-while-search guix-help-parse-command-regexp + (let* ((name (match-string-no-properties 1)) + (char (elt name 0))) + (push (guix-command-make-argument + :name name + :char char + :fun (guix-command-action-name commands name) + :action? t) + args))) + args))) + +(defun guix-command-rest-argument (&optional commands) + "Return '--' argument for COMMANDS." + (cl-flet ((argument (&rest args) + (apply #'guix-command-make-argument + :name "-- " :char ?= :option? t args))) + (let ((command (car commands))) + (cond + ((member command '("archive" "build" "graph" "edit" + "environment" "lint" "refresh")) + (argument :doc "Packages" :fun 'guix-read-package-names-string)) + ((string= command "download") + (argument :doc "URL")) + ((string= command "gc") + (argument :doc "Paths" :fun 'guix-read-file-name)) + ((member command '("hash" "system")) + (argument :doc "File" :fun 'guix-read-file-name)) + ((string= command "size") + (argument :doc "Package" :fun 'guix-read-package-name)) + ((equal commands '("import" "nix")) + (argument :doc "Nixpkgs Attribute")) + ;; Other 'guix import' subcommands, but not 'import' itself. + ((and (cdr commands) + (string= command "import")) + (argument :doc "Package name")))))) + +(defun guix-command-additional-arguments (&optional commands) + "Return additional arguments for COMMANDS." + (let ((rest-arg (guix-command-rest-argument commands))) + (and rest-arg (list rest-arg)))) + +;; Ideally only `guix-command-arguments' function should exist with the +;; contents of `guix-command-all-arguments', but we need to make a +;; special case for `guix-command-complex-with-shared-arguments' commands. + +(defun guix-command-all-arguments (&optional commands) + "Return list of all arguments for 'guix COMMANDS ...'." + (let ((parsed (guix-command-parse-arguments commands))) + (append (guix-command-improve-arguments parsed commands) + (guix-command-additional-arguments commands)))) + +(guix-memoized-defalias guix-command-all-arguments-memoize + guix-command-all-arguments) + +(defun guix-command-arguments (&optional commands) + "Return list of arguments for 'guix COMMANDS ...'." + (let ((command (car commands))) + (if (member command + guix-command-complex-with-shared-arguments) + ;; Take actions only for 'guix system', and switches+options for + ;; 'guix system foo'. + (funcall (if (null (cdr commands)) + #'cl-remove-if-not + #'cl-remove-if) + #'guix-command-argument-action? + (guix-command-all-arguments-memoize (list command))) + (guix-command-all-arguments commands)))) + +(defun guix-command-switch->popup-switch (switch) + "Return popup switch from command SWITCH argument." + (list (guix-command-argument-char switch) + (or (guix-command-argument-doc switch) + "Unknown") + (guix-command-argument-name switch))) + +(defun guix-command-option->popup-option (option) + "Return popup option from command OPTION argument." + (list (guix-command-argument-char option) + (or (guix-command-argument-doc option) + "Unknown") + (let ((name (guix-command-argument-name option))) + (if (string-match-p " \\'" name) ; ends with space + name + (concat name "="))) + (or (guix-command-argument-fun option) + 'read-from-minibuffer))) + +(defun guix-command-action->popup-action (action) + "Return popup action from command ACTION argument." + (list (guix-command-argument-char action) + (or (guix-command-argument-doc action) + (guix-command-argument-name action) + "Unknown") + (guix-command-argument-fun action))) + +(defun guix-command-sort-arguments (arguments) + "Sort ARGUMENTS by name in alphabetical order." + (sort arguments + (lambda (a1 a2) + (let ((name1 (guix-command-argument-name a1)) + (name2 (guix-command-argument-name a2))) + (cond ((null name1) nil) + ((null name2) t) + (t (string< name1 name2))))))) + +(defun guix-command-switches (arguments) + "Return switches from ARGUMENTS." + (cl-remove-if-not #'guix-command-argument-switch? arguments)) + +(defun guix-command-options (arguments) + "Return options from ARGUMENTS." + (cl-remove-if-not #'guix-command-argument-option? arguments)) + +(defun guix-command-actions (arguments) + "Return actions from ARGUMENTS." + (cl-remove-if-not #'guix-command-argument-action? arguments)) + +(defun guix-command-post-process-args (args) + "Adjust appropriately command line ARGS returned from popup command." + ;; XXX We need to split "--install foo bar" and similar strings into + ;; lists of strings. But some commands (e.g., 'guix hash') accept a + ;; file name as the 'rest' argument, and as file names may contain + ;; spaces, splitting by spaces will break such names. For example, the + ;; following argument: "-- /tmp/file with spaces" will be transformed + ;; into the following list: ("--" "/tmp/file" "with" "spaces") instead + ;; of the wished ("--" "/tmp/file with spaces"). + (let* (rest + (rx (rx string-start + (or "-- " "--install " "--remove "))) + (args (mapcar (lambda (arg) + (if (string-match-p rx arg) + (progn (push (split-string arg) rest) + nil) + arg)) + args))) + (if rest + (apply #'append (delq nil args) rest) + args))) + + +;;; 'Execute' actions + +(defvar guix-command-default-execute-arguments + (list + (guix-command-make-argument + :name "repl" :char ?r :doc "Run in Guix REPL") + (guix-command-make-argument + :name "shell" :char ?s :doc "Run in shell") + (guix-command-make-argument + :name "copy" :char ?c :doc "Copy command line")) + "List of default 'execute' action arguments.") + +(defvar guix-command-additional-execute-arguments + nil + "Alist of guix commands and additional 'execute' action arguments.") + +(defun guix-command-execute-arguments (commands) + "Return a list of 'execute' action arguments for COMMANDS." + (mapcar (lambda (arg) + (guix-command-modify-argument arg + :action? t + :fun (guix-command-action-name + commands (guix-command-argument-name arg)))) + (append guix-command-default-execute-arguments + (guix-assoc-value + guix-command-additional-execute-arguments commands)))) + +(defvar guix-command-special-executors + '((("environment") + ("repl" . guix-run-environment-command-in-repl)) + (("pull") + ("repl" . guix-run-pull-command-in-repl))) + "Alist of guix commands and alists of special executers for them. +See also `guix-command-default-executors'.") + +(defvar guix-command-default-executors + '(("repl" . guix-run-command-in-repl) + ("shell" . guix-run-command-in-shell) + ("copy" . guix-copy-command-as-kill)) + "Alist of default executers for action names.") + +(defun guix-command-executor (commands name) + "Return function to run command line arguments for guix COMMANDS." + (or (guix-assoc-value guix-command-special-executors commands name) + (guix-assoc-value guix-command-default-executors name))) + +(defun guix-run-environment-command-in-repl (args) + "Run 'guix ARGS ...' environment command in Guix REPL." + ;; As 'guix environment' usually tries to run another process, it may + ;; be fun but not wise to run this command in Geiser REPL. + (when (or (member "--dry-run" args) + (member "--search-paths" args) + (when (y-or-n-p + (format "'%s' command will spawn an external process. +Do you really want to execute this command in Geiser REPL? " + (guix-command-string args))) + (message "May \"M-x shell-mode\" be with you!") + t)) + (guix-run-command-in-repl args))) + +(defun guix-run-pull-command-in-repl (args) + "Run 'guix ARGS ...' pull command in Guix REPL. +Perform pull-specific actions after operation, see +`guix-after-pull-hook' and `guix-update-after-pull'." + (guix-eval-in-repl + (apply #'guix-make-guile-expression 'guix-command args) + nil 'pull)) + + +;;; Generating popups, actions, etc. + +(defmacro guix-command-define-popup-action (name &optional commands) + "Define NAME function to generate (if needed) and run popup for COMMANDS." + (declare (indent 1) (debug t)) + (let* ((popup-fun (guix-command-symbol `(,@commands "popup"))) + (doc (format "Call `%s' (generate it if needed)." + popup-fun))) + `(defun ,name (&optional arg) + ,doc + (interactive "P") + (unless (fboundp ',popup-fun) + (guix-command-generate-popup ',popup-fun ',commands)) + (,popup-fun arg)))) + +(defmacro guix-command-define-execute-action (name executor + &optional commands) + "Define NAME function to execute the current action for guix COMMANDS. +EXECUTOR function is called with the current command line arguments." + (declare (indent 1) (debug t)) + (let* ((arguments-fun (guix-command-symbol `(,@commands "arguments"))) + (doc (format "Call `%s' with the current popup arguments." + executor))) + `(defun ,name (&rest args) + ,doc + (interactive (,arguments-fun)) + (,executor (append ',commands + (guix-command-post-process-args args)))))) + +(defun guix-command-generate-popup-actions (actions &optional commands) + "Generate 'popup' commands from ACTIONS arguments for guix COMMANDS." + (dolist (action actions) + (let ((fun (guix-command-argument-fun action))) + (unless (fboundp fun) + (eval `(guix-command-define-popup-action ,fun + ,(append commands + (list (guix-command-argument-name action))))))))) + +(defun guix-command-generate-execute-actions (actions &optional commands) + "Generate 'execute' commands from ACTIONS arguments for guix COMMANDS." + (dolist (action actions) + (let ((fun (guix-command-argument-fun action))) + (unless (fboundp fun) + (eval `(guix-command-define-execute-action ,fun + ,(guix-command-executor + commands (guix-command-argument-name action)) + ,commands)))))) + +(defun guix-command-generate-popup (name &optional commands) + "Define NAME popup with 'guix COMMANDS ...' interface." + (let* ((command (car commands)) + (man-page (concat "guix" (and command (concat "-" command)))) + (doc (format "Popup window for '%s' command." + (guix-concat-strings (cons "guix" commands) + " "))) + (args (guix-command-arguments commands)) + (switches (guix-command-sort-arguments + (guix-command-switches args))) + (options (guix-command-sort-arguments + (guix-command-options args))) + (popup-actions (guix-command-sort-arguments + (guix-command-actions args))) + (execute-actions (unless popup-actions + (guix-command-execute-arguments commands))) + (actions (or popup-actions execute-actions))) + (if popup-actions + (guix-command-generate-popup-actions popup-actions commands) + (guix-command-generate-execute-actions execute-actions commands)) + (eval + `(guix-define-popup ,name + ,doc + 'guix-commands + :man-page ,man-page + :switches ',(mapcar #'guix-command-switch->popup-switch switches) + :options ',(mapcar #'guix-command-option->popup-option options) + :actions ',(mapcar #'guix-command-action->popup-action actions) + :max-action-columns 4)))) + +;;;###autoload (autoload 'guix "guix-command" "Popup window for 'guix'." t) +(guix-command-define-popup-action guix) + + +(defvar guix-command-font-lock-keywords + (eval-when-compile + `((,(rx "(" + (group "guix-command-define-" + (or "popup-action" + "execute-action" + "argument-improver")) + symbol-end + (zero-or-more blank) + (zero-or-one + (group (one-or-more (or (syntax word) (syntax symbol)))))) + (1 font-lock-keyword-face) + (2 font-lock-function-name-face nil t))))) + +(font-lock-add-keywords 'emacs-lisp-mode guix-command-font-lock-keywords) + +(provide 'guix-command) + +;;; guix-command.el ends here -- cgit v1.2.3 From eb097f36b1c3e7a25f1ce212670e8a19788fd195 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Mon, 17 Aug 2015 12:05:05 +0300 Subject: emacs: Use prompt for packages instead popup for edit action. * emacs/guix-base.el (guix-package-location): New function. (guix-edit-package): Rename and move to ... * emacs/guix.el (guix-edit): ...here. Make it interactive. * emacs/guix-command.el (guix-edit-action): New function (alias to 'guix-edit') to override the popup for edit command in "M-x guix". * emacs/guix-list.el (guix-list-edit-package): Adjust for 'guix-edit' renaming. * emacs/guix-main.scm (package-location-string): Allow to accept package id or package name as argument. --- emacs/guix-base.el | 12 +++++------- emacs/guix-command.el | 2 ++ emacs/guix-list.el | 2 +- emacs/guix-main.scm | 7 ++++--- emacs/guix.el | 12 +++++++++++- 5 files changed, 23 insertions(+), 12 deletions(-) diff --git a/emacs/guix-base.el b/emacs/guix-base.el index 4dff0d6170..3bee910b05 100644 --- a/emacs/guix-base.el +++ b/emacs/guix-base.el @@ -172,13 +172,11 @@ If PATH is relative, it is considered to be relative to (move-to-column col) (recenter 1)))) -(defun guix-edit-package (id) - "Edit (go to location of) package with ID." - (let ((loc (guix-eval-read (guix-make-guile-expression - 'package-location-string id)))) - (if loc - (guix-find-location loc) - (message "Couldn't find package location.")))) +(defun guix-package-location (id-or-name) + "Return location of a package with ID-OR-NAME. +For the meaning of location, see `guix-find-location'." + (guix-eval-read (guix-make-guile-expression + 'package-location-string id-or-name))) ;;; Receivable lists of packages, lint checkers, etc. diff --git a/emacs/guix-command.el b/emacs/guix-command.el index 97a88726df..139724d3d5 100644 --- a/emacs/guix-command.el +++ b/emacs/guix-command.el @@ -627,6 +627,8 @@ EXECUTOR function is called with the current command line arguments." ;;;###autoload (autoload 'guix "guix-command" "Popup window for 'guix'." t) (guix-command-define-popup-action guix) +(defalias 'guix-edit-action #'guix-edit) + (defvar guix-command-font-lock-keywords (eval-when-compile diff --git a/emacs/guix-list.el b/emacs/guix-list.el index abb02326af..9796464dbf 100644 --- a/emacs/guix-list.el +++ b/emacs/guix-list.el @@ -472,7 +472,7 @@ With prefix (if ARG is non-nil), describe entries marked with any mark." (defun guix-list-edit-package () "Go to the location of the current package." (interactive) - (guix-edit-package (guix-list-current-package-id))) + (guix-edit (guix-list-current-package-id))) ;;; Displaying packages diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm index bd42f8fc21..fe224fb582 100644 --- a/emacs/guix-main.scm +++ b/emacs/guix-main.scm @@ -889,9 +889,10 @@ (define (delete-generations* profile generations) (with-store store (delete-generations store profile generations))) -(define (package-location-string package-id) - "Return a location string of a package PACKAGE-ID." - (and-let* ((package (package-by-id package-id)) +(define (package-location-string id-or-name) + "Return a location string of a package with ID-OR-NAME." + (and-let* ((package (or (package-by-id id-or-name) + (first (packages-by-name id-or-name)))) (location (package-location package))) (location->string location))) diff --git a/emacs/guix.el b/emacs/guix.el index afe7285696..244696a184 100644 --- a/emacs/guix.el +++ b/emacs/guix.el @@ -1,6 +1,6 @@ ;;; guix.el --- Interface for GNU Guix package manager -;; Copyright © 2014 Alex Kost +;; Copyright © 2014, 2015 Alex Kost ;; Package-Requires: ((geiser "0.3")) ;; Keywords: tools @@ -32,6 +32,7 @@ (require 'guix-list) (require 'guix-info) (require 'guix-utils) +(require 'guix-read) (defgroup guix nil "Interface for Guix package manager." @@ -193,6 +194,15 @@ Interactively with prefix, prompt for PROFILE." (float-time from) (float-time to))) +;;;###autoload +(defun guix-edit (id-or-name) + "Edit (go to location of) package with ID-OR-NAME." + (interactive (list (guix-read-package-name))) + (let ((loc (guix-package-location id-or-name))) + (if loc + (guix-find-location loc) + (message "Couldn't find package location.")))) + (provide 'guix) ;;; guix.el ends here -- cgit v1.2.3 From bd6163d13f6445b9a1ec0f85e4a19b9f73ab74ea Mon Sep 17 00:00:00 2001 From: Mathieu Lirzin Date: Thu, 6 Aug 2015 11:36:53 +0200 Subject: build: Produce 'guix-config' instead of using compile-time tricks. * emacs/guix-{init,profiles}.el.in: Rename to ... * emacs/guix-{init,profiles}.el: ... these. New files. Use 'guix-config'. * emacs/guix-config.el.in: New file. * emacs.am (nodist_lisp_DATA): Add it. Move them to ... (ELFILES): ... here. * .gitignore, configure.ac: Adjust accordingly. --- .gitignore | 3 +-- configure.ac | 3 +-- emacs.am | 6 ++--- emacs/guix-config.el.in | 31 +++++++++++++++++++++++ emacs/guix-init.el | 19 ++++++++++++++ emacs/guix-init.el.in | 19 -------------- emacs/guix-profiles.el | 64 +++++++++++++++++++++++++++++++++++++++++++++++ emacs/guix-profiles.el.in | 62 --------------------------------------------- 8 files changed, 119 insertions(+), 88 deletions(-) create mode 100644 emacs/guix-config.el.in create mode 100644 emacs/guix-init.el delete mode 100644 emacs/guix-init.el.in create mode 100644 emacs/guix-profiles.el delete mode 100644 emacs/guix-profiles.el.in diff --git a/.gitignore b/.gitignore index 4547557631..a363c074ca 100644 --- a/.gitignore +++ b/.gitignore @@ -120,8 +120,7 @@ GTAGS /emacs/Makefile /emacs/guix-autoloads.el /emacs/guix-helper.scm -/emacs/guix-init.el -/emacs/guix-profiles.el +/emacs/guix-config.el /doc/os-config-bare-bones.texi /doc/os-config-desktop.texi /doc/*.1 diff --git a/configure.ac b/configure.ac index 247a9d5068..cbe5dfb67e 100644 --- a/configure.ac +++ b/configure.ac @@ -205,8 +205,7 @@ AM_CONDITIONAL([HAVE_EMACS], [test "x$EMACS" != "xno"]) emacsuidir="${guilemoduledir}/guix/emacs" AC_SUBST([emacsuidir]) -AC_CONFIG_FILES([emacs/guix-init.el - emacs/guix-profiles.el +AC_CONFIG_FILES([emacs/guix-config.el emacs/guix-helper.scm]) AC_OUTPUT diff --git a/emacs.am b/emacs.am index bf91cca0bb..0f1ac946de 100644 --- a/emacs.am +++ b/emacs.am @@ -26,11 +26,13 @@ ELFILES = \ emacs/guix-help-vars.el \ emacs/guix-history.el \ emacs/guix-info.el \ + emacs/guix-init.el \ emacs/guix-list.el \ emacs/guix-messages.el \ emacs/guix-pcomplete.el \ emacs/guix-popup.el \ emacs/guix-prettify.el \ + emacs/guix-profiles.el \ emacs/guix-read.el \ emacs/guix-utils.el \ emacs/guix.el @@ -41,9 +43,7 @@ dist_lisp_DATA = \ $(ELFILES) \ $(AUTOLOADS) -nodist_lisp_DATA = \ - emacs/guix-init.el \ - emacs/guix-profiles.el +nodist_lisp_DATA = emacs/guix-config.el $(AUTOLOADS): $(ELFILES) $(EMACS) --batch --eval \ diff --git a/emacs/guix-config.el.in b/emacs/guix-config.el.in new file mode 100644 index 0000000000..8804f72357 --- /dev/null +++ b/emacs/guix-config.el.in @@ -0,0 +1,31 @@ +;;; guix-config.el --- Compile-time configuration of Guix. + +;; Copyright © 2015 Mathieu Lirzin + +;; This file is part of GNU Guix. + +;; GNU Guix is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Guix is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Code: + +(defconst guix-emacs-interface-directory + (replace-regexp-in-string "${prefix}" "@prefix@" "@emacsuidir@")) + +(defconst guix-state-directory + ;; This must match `NIX_STATE_DIR' as defined in `daemon.am'. + (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix")) + +(provide 'guix-config) + +;;; guix-config.el ends here diff --git a/emacs/guix-init.el b/emacs/guix-init.el new file mode 100644 index 0000000000..6ea6fcd0b0 --- /dev/null +++ b/emacs/guix-init.el @@ -0,0 +1,19 @@ +(require 'guix-config) +(require 'guix-autoloads) + +(defvar guix-load-path guix-emacs-interface-directory + "Directory with scheme files for \"guix.el\" package.") + +(defcustom guix-package-enable-at-startup t + "If non-nil, activate Emacs packages installed in a user profile. +Set this variable to nil before requiring `guix-init' file to +avoid loading autoloads of Emacs packages installed in +`guix-user-profile'." + :type 'boolean + :group 'guix) + +(when guix-package-enable-at-startup + (require 'guix-emacs) + (guix-emacs-load-autoloads 'all)) + +(provide 'guix-init) diff --git a/emacs/guix-init.el.in b/emacs/guix-init.el.in deleted file mode 100644 index 728bc375c2..0000000000 --- a/emacs/guix-init.el.in +++ /dev/null @@ -1,19 +0,0 @@ -(require 'guix-autoloads) - -(defvar guix-load-path - (replace-regexp-in-string "${prefix}" "@prefix@" "@emacsuidir@") - "Directory with scheme files for \"guix.el\" package.") - -(defcustom guix-package-enable-at-startup t - "If non-nil, activate Emacs packages installed in a user profile. -Set this variable to nil before requiring `guix-init' file to -avoid loading autoloads of Emacs packages installed in -`guix-user-profile'." - :type 'boolean - :group 'guix) - -(when guix-package-enable-at-startup - (require 'guix-emacs) - (guix-emacs-load-autoloads 'all)) - -(provide 'guix-init) diff --git a/emacs/guix-profiles.el b/emacs/guix-profiles.el new file mode 100644 index 0000000000..1a41745512 --- /dev/null +++ b/emacs/guix-profiles.el @@ -0,0 +1,64 @@ +;;; guix-profiles.el --- Guix profiles + +;; Copyright © 2014 Alex Kost + +;; This file is part of GNU Guix. + +;; GNU Guix is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Guix is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Code: + +(require 'guix-config) + +(defvar guix-user-profile + (expand-file-name "~/.guix-profile") + "User profile.") + +(defvar guix-default-profile + (concat guix-state-directory + "/profiles/per-user/" + (getenv "USER") + "/guix-profile") + "Default Guix profile.") + +(defvar guix-current-profile guix-default-profile + "Current profile.") + +(defun guix-profile-prompt (&optional default) + "Prompt for profile and return it. +Use DEFAULT as a start directory. If it is nil, use +`guix-current-profile'." + (let* ((path (read-file-name "Profile: " + (file-name-directory + (or default guix-current-profile)))) + (path (directory-file-name (expand-file-name path)))) + (if (string= path guix-user-profile) + guix-default-profile + path))) + +(defun guix-set-current-profile (path) + "Set `guix-current-profile' to PATH. +Interactively, prompt for PATH. With prefix, use +`guix-default-profile'." + (interactive + (list (if current-prefix-arg + guix-default-profile + (guix-profile-prompt)))) + (setq guix-current-profile path) + (message "Current profile has been set to '%s'." + guix-current-profile)) + +(provide 'guix-profiles) + +;;; guix-profiles.el ends here diff --git a/emacs/guix-profiles.el.in b/emacs/guix-profiles.el.in deleted file mode 100644 index 1e43707b68..0000000000 --- a/emacs/guix-profiles.el.in +++ /dev/null @@ -1,62 +0,0 @@ -;;; guix-profiles.el --- Guix profiles - -;; Copyright © 2014 Alex Kost - -;; This file is part of GNU Guix. - -;; GNU Guix is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Guix is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Code: - -(defvar guix-user-profile - (expand-file-name "~/.guix-profile") - "User profile.") - -(defvar guix-default-profile - (concat (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix") - "/profiles/per-user/" - (getenv "USER") - "/guix-profile") - "Default Guix profile.") - -(defvar guix-current-profile guix-default-profile - "Current profile.") - -(defun guix-profile-prompt (&optional default) - "Prompt for profile and return it. -Use DEFAULT as a start directory. If it is nil, use -`guix-current-profile'." - (let* ((path (read-file-name "Profile: " - (file-name-directory - (or default guix-current-profile)))) - (path (directory-file-name (expand-file-name path)))) - (if (string= path guix-user-profile) - guix-default-profile - path))) - -(defun guix-set-current-profile (path) - "Set `guix-current-profile' to PATH. -Interactively, prompt for PATH. With prefix, use -`guix-default-profile'." - (interactive - (list (if current-prefix-arg - guix-default-profile - (guix-profile-prompt)))) - (setq guix-current-profile path) - (message "Current profile has been set to '%s'." - guix-current-profile)) - -(provide 'guix-profiles) - -;;; guix-profiles.el ends here -- cgit v1.2.3 From 7061938fdb7524555a8903af59992ae0645c0480 Mon Sep 17 00:00:00 2001 From: Mathieu Lirzin Date: Mon, 27 Jul 2015 22:55:28 +0200 Subject: emacs: Fix guix-guile-program default value. Fixes . * emacs/guix-backend.el: Use guix-config. (guix-guile-program): Move to ... * emacs/guix-config.el.in (guix-guile-program): ... here. Use Guile program file name from compile-time instead of depending on PATH. --- emacs/guix-backend.el | 10 +--------- emacs/guix-config.el.in | 9 +++++++++ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/emacs/guix-backend.el b/emacs/guix-backend.el index 73a429b9ee..3fafae4c24 100644 --- a/emacs/guix-backend.el +++ b/emacs/guix-backend.el @@ -52,6 +52,7 @@ ;;; Code: (require 'geiser-mode) +(require 'guix-config) (require 'guix-emacs) (defvar guix-load-path @@ -63,15 +64,6 @@ (expand-file-name "guix-helper.scm" guix-load-path) "Auxiliary scheme file for loading.") -(defvar guix-guile-program (or geiser-guile-binary "guile") - "Name of the guile executable used for Guix REPL. -May be either a string (the name of the executable) or a list of -strings of the form: - - (NAME . ARGS) - -Where ARGS is a list of arguments to the guile program.") - ;;; REPL diff --git a/emacs/guix-config.el.in b/emacs/guix-config.el.in index 8804f72357..16434cecea 100644 --- a/emacs/guix-config.el.in +++ b/emacs/guix-config.el.in @@ -26,6 +26,15 @@ ;; This must match `NIX_STATE_DIR' as defined in `daemon.am'. (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix")) +(defvar guix-guile-program "@GUILE@" + "Name of the guile executable used for Guix REPL. +May be either a string (the name of the executable) or a list of +strings of the form: + + (NAME . ARGS) + +Where ARGS is a list of arguments to the guile program.") + (provide 'guix-config) ;;; guix-config.el ends here -- cgit v1.2.3 From 9a479bc383b8de26a1660923de4e73019ba795c2 Mon Sep 17 00:00:00 2001 From: Mathieu Lirzin Date: Mon, 27 Jul 2015 23:20:09 +0200 Subject: emacs: Use only one guix-load-path variable. emacs/guix-init.el (guix-load-path): Move to ... emacs/guix-backend.el (guix-load-path): ... Here. Redefine it. --- emacs/guix-backend.el | 4 +--- emacs/guix-init.el | 4 ---- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/emacs/guix-backend.el b/emacs/guix-backend.el index 3fafae4c24..7db1daacf0 100644 --- a/emacs/guix-backend.el +++ b/emacs/guix-backend.el @@ -55,9 +55,7 @@ (require 'guix-config) (require 'guix-emacs) -(defvar guix-load-path - (file-name-directory (or load-file-name - (locate-library "guix"))) +(defvar guix-load-path guix-emacs-interface-directory "Directory with scheme files for \"guix.el\" package.") (defvar guix-helper-file diff --git a/emacs/guix-init.el b/emacs/guix-init.el index 6ea6fcd0b0..3a727c7eb6 100644 --- a/emacs/guix-init.el +++ b/emacs/guix-init.el @@ -1,9 +1,5 @@ -(require 'guix-config) (require 'guix-autoloads) -(defvar guix-load-path guix-emacs-interface-directory - "Directory with scheme files for \"guix.el\" package.") - (defcustom guix-package-enable-at-startup t "If non-nil, activate Emacs packages installed in a user profile. Set this variable to nil before requiring `guix-init' file to -- cgit v1.2.3 From e1248602f92c45a731e47e74d3612bee03eaa0da Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 24 Jul 2015 16:49:57 +0200 Subject: import: Add 'cran' importer. * guix/import/cran.scm: New file. * guix/scripts/import.scm: Add "cran" to 'importers'. * guix/scripts/import/cran.scm: New file. * tests/cran.scm: New file. * Makefile.am (MODULES): Add 'guix/import/cran.scm' and 'guix/scripts/import/cran.scm'. (SCM_TESTS): Add 'tests/cran.scm'. * doc/guix.texi (Invoking guix import): Document it. * po/guix/POTFILES.in: Add 'guix/scripts/import/cran.scm'. --- Makefile.am | 3 + doc/guix.texi | 15 ++++ guix/import/cran.scm | 188 +++++++++++++++++++++++++++++++++++++++++++ guix/scripts/import.scm | 2 +- guix/scripts/import/cran.scm | 92 +++++++++++++++++++++ tests/cran.scm | 178 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 477 insertions(+), 1 deletion(-) create mode 100644 guix/import/cran.scm create mode 100644 guix/scripts/import/cran.scm create mode 100644 tests/cran.scm diff --git a/Makefile.am b/Makefile.am index 85cc7bd50f..af41ea57c8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -97,6 +97,7 @@ MODULES = \ guix/import/gnu.scm \ guix/import/snix.scm \ guix/import/cabal.scm \ + guix/import/cran.scm \ guix/import/hackage.scm \ guix/import/elpa.scm \ guix/scripts/download.scm \ @@ -112,6 +113,7 @@ MODULES = \ guix/scripts/refresh.scm \ guix/scripts/system.scm \ guix/scripts/lint.scm \ + guix/scripts/import/cran.scm \ guix/scripts/import/gnu.scm \ guix/scripts/import/nix.scm \ guix/scripts/import/hackage.scm \ @@ -198,6 +200,7 @@ SCM_TESTS = \ tests/packages.scm \ tests/snix.scm \ tests/hackage.scm \ + tests/cran.scm \ tests/elpa.scm \ tests/store.scm \ tests/monads.scm \ diff --git a/doc/guix.texi b/doc/guix.texi index 89291273c4..4dbedb15ec 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3939,6 +3939,21 @@ Perl module: guix import cpan Acme::Boolean @end example +@item cran +@cindex CRAN +Import meta-data from @uref{http://cran.r-project.org/, CRAN}, the +central repository for the @uref{http://r-project.org, GNU@tie{}R +statistical and graphical environment}. + +Information is extracted from the HTML package description. + +The command command below imports meta-data for the @code{Cairo} +R package: + +@example +guix import cran Cairo +@end example + @item nix Import meta-data from a local copy of the source of the @uref{http://nixos.org/nixpkgs/, Nixpkgs distribution}@footnote{This diff --git a/guix/import/cran.scm b/guix/import/cran.scm new file mode 100644 index 0000000000..8ed5e5407f --- /dev/null +++ b/guix/import/cran.scm @@ -0,0 +1,188 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ricardo Wurmus +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (guix import cran) + #:use-module (ice-9 match) + #:use-module (ice-9 regex) + #:use-module (srfi srfi-1) + #:use-module (sxml simple) + #:use-module (sxml match) + #:use-module (sxml xpath) + #:use-module (guix http-client) + #:use-module (guix hash) + #:use-module (guix store) + #:use-module (guix base32) + #:use-module ((guix download) #:select (download-to-store)) + #:use-module (guix import utils) + #:export (cran->guix-package)) + +;;; Commentary: +;;; +;;; Generate a package declaration template for the latest version of an R +;;; package on CRAN, using the HTML description downloaded from +;;; cran.r-project.org. +;;; +;;; Code: + +(define string->license + (match-lambda + ("AGPL-3" 'agpl3+) + ("Artistic-2.0" 'artistic2.0) + ("Apache License 2.0" 'asl2.0) + ("BSD_2_clause" 'bsd-2) + ("BSD_3_clause" 'bsd-3) + ("GPL-2" 'gpl2+) + ("GPL-3" 'gpl3+) + ("LGPL-2" 'lgpl2.0+) + ("LGPL-2.1" 'lgpl2.1+) + ("LGPL-3" 'lgpl3+) + ("MIT" 'x11) + ((x) (string->license x)) + ((lst ...) `(list ,@(map string->license lst))) + (_ #f))) + +(define (format-inputs names) + "Generate a sorted list of package inputs from a list of package NAMES." + (map (lambda (name) + (list name (list 'unquote (string->symbol name)))) + (sort names string-cisxml (http-fetch cran-url) + #:trim-whitespace? #t + #:namespaces '((xhtml . "http://www.w3.org/1999/xhtml")) + #:default-entity-handler + (lambda (port name) + (case name + ((nbsp) " ") + ((ge) ">=") + ((gt) ">") + ((lt) "<") + (else + (format (current-warning-port) + "~a:~a:~a: undefined entitity: ~a\n" + cran-url (port-line port) (port-column port) + name) + (symbol->string name)))))))) + +(define (cran-sxml->sexp sxml) + "Return the `package' s-expression for a CRAN package from the SXML +representation of the package page." + (define (nodes->text nodeset) + (string-join ((sxpath '(// *text*)) nodeset) " ")) + + (define (guix-name name) + (if (string-prefix? "r-" name) + (string-downcase name) + (string-append "r-" (string-downcase name)))) + + (sxml-match-let* + (((*TOP* (xhtml:html + ,head + (xhtml:body + (xhtml:h2 ,name-and-synopsis) + (xhtml:p ,description) + ,summary + (xhtml:h4 "Downloads:") ,downloads + . ,rest))) + sxml)) + (let* ((name (match:prefix (string-match ": " name-and-synopsis))) + (synopsis (match:suffix (string-match ": " name-and-synopsis))) + (version (nodes->text (table-datum summary "Version:"))) + (license ((compose string->license nodes->text) + (table-datum summary "License:"))) + (home-page (nodes->text ((sxpath '((xhtml:a 1))) + (table-datum summary "URL:")))) + (source-url (string-append "mirror://cran/" + ;; Remove double dots, because we want an + ;; absolute path. + (regexp-substitute/global + #f "\\.\\./" + (string-join + ((sxpath '((xhtml:a 1) @ href *text*)) + (table-datum downloads + " Package source: "))) + 'pre 'post))) + (tarball (with-store store (download-to-store store source-url))) + (sysdepends (map match:substring + (list-matches + "[^ ]+" + ;; Strip off comma and parenthetical + ;; expressions. + (regexp-substitute/global + #f "(,|\\([^\\)]+\\))" + (nodes->text (table-datum summary + "SystemRequirements:")) + 'pre 'post)))) + (imports (map guix-name + ((sxpath '(// xhtml:a *text*)) + (table-datum summary "Imports:"))))) + `(package + (name ,(guix-name name)) + (version ,version) + (source (origin + (method url-fetch) + (uri (string-append ,@(factorize-uri source-url version))) + (sha256 + (base32 + ,(bytevector->nix-base32-string (file-sha256 tarball)))))) + (build-system r-build-system) + ,@(maybe-inputs sysdepends) + ,@(maybe-inputs imports 'propagated-inputs) + (home-page ,(if (string-null? home-page) + (string-append %cran-url name) + home-page)) + (synopsis ,synopsis) + ;; Use double spacing + (description ,(regexp-substitute/global #f "\\. \\b" description + 'pre ". " 'post)) + (license ,license))))) + +(define (cran->guix-package package-name) + "Fetch the metadata for PACKAGE-NAME from cran.r-project.org, and return the +`package' s-expression corresponding to that package, or #f on failure." + (let ((module-meta (cran-fetch package-name))) + (and=> module-meta cran-sxml->sexp))) diff --git a/guix/scripts/import.scm b/guix/scripts/import.scm index 6cd762a537..7b29794e8f 100644 --- a/guix/scripts/import.scm +++ b/guix/scripts/import.scm @@ -73,7 +73,7 @@ (define %standard-import-options '()) ;;; Entry point. ;;; -(define importers '("gnu" "nix" "pypi" "cpan" "hackage" "elpa" "gem")) +(define importers '("gnu" "nix" "pypi" "cpan" "hackage" "elpa" "gem" "cran")) (define (resolve-importer name) (let ((module (resolve-interface diff --git a/guix/scripts/import/cran.scm b/guix/scripts/import/cran.scm new file mode 100644 index 0000000000..f11fa1004f --- /dev/null +++ b/guix/scripts/import/cran.scm @@ -0,0 +1,92 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Eric Bavier +;;; Copyright © 2015 Ricardo Wurmus +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (guix scripts import cran) + #:use-module (guix ui) + #:use-module (guix utils) + #:use-module (guix import cran) + #:use-module (guix scripts import) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-11) + #:use-module (srfi srfi-37) + #:use-module (ice-9 match) + #:use-module (ice-9 format) + #:export (guix-import-cran)) + + +;;; +;;; Command-line options. +;;; + +(define %default-options + '()) + +(define (show-help) + (display (_ "Usage: guix import cran PACKAGE-NAME +Import and convert the CRAN package for PACKAGE-NAME.\n")) + (display (_ " + -h, --help display this help and exit")) + (display (_ " + -V, --version display version information and exit")) + (newline) + (show-bug-report-information)) + +(define %options + ;; Specification of the command-line options. + (cons* (option '(#\h "help") #f #f + (lambda args + (show-help) + (exit 0))) + (option '(#\V "version") #f #f + (lambda args + (show-version-and-exit "guix import cran"))) + %standard-import-options)) + + +;;; +;;; Entry point. +;;; + +(define (guix-import-cran . args) + (define (parse-options) + ;; Return the alist of option values. + (args-fold* args %options + (lambda (opt name arg result) + (leave (_ "~A: unrecognized option~%") name)) + (lambda (arg result) + (alist-cons 'argument arg result)) + %default-options)) + + (let* ((opts (parse-options)) + (args (filter-map (match-lambda + (('argument . value) + value) + (_ #f)) + (reverse opts)))) + (match args + ((package-name) + (let ((sexp (cran->guix-package package-name))) + (unless sexp + (leave (_ "failed to download description for package '~a'~%") + package-name)) + sexp)) + (() + (leave (_ "too few arguments~%"))) + ((many ...) + (leave (_ "too many arguments~%")))))) diff --git a/tests/cran.scm b/tests/cran.scm new file mode 100644 index 0000000000..c9cb5f69d0 --- /dev/null +++ b/tests/cran.scm @@ -0,0 +1,178 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ricardo Wurmus +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (test-cran) + #:use-module (guix import cran) + #:use-module (guix tests) + #:use-module (srfi srfi-64) + #:use-module (ice-9 match)) + +(define sxml + '(*TOP* (xhtml:html + (xhtml:head + (xhtml:title "CRAN - Package my-example-sxml")) + (xhtml:body + (xhtml:h2 "my-example-sxml: Short description") + (xhtml:p "Long description") + (xhtml:table + (@ (summary "Package my-example-sxml summary")) + (xhtml:tr + (xhtml:td "Version:") + (xhtml:td "1.2.3")) + (xhtml:tr + (xhtml:td "Depends:") + (xhtml:td "R (>= 3.1.0)")) + (xhtml:tr + (xhtml:td "SystemRequirements:") + (xhtml:td "cairo (>= 1.2 http://www.cairographics.org/)")) + (xhtml:tr + (xhtml:td "Imports:") + (xhtml:td + (xhtml:a (@ (href "../scales/index.html")) + "scales") + " (>= 0.2.3), " + (xhtml:a (@ (href "../proto/index.html")) + "proto") + ", " + (xhtml:a (@ (href "../Rcpp/index.html")) "Rcpp") + " (>= 0.11.0)")) + (xhtml:tr + (xhtml:td "Suggests:") + (xhtml:td + (xhtml:a (@ (href "../some/index.html")) + "some") + ", " + (xhtml:a (@ (href "../suggestions/index.html")) + "suggestions"))) + (xhtml:tr + (xhtml:td "License:") + (xhtml:td + (xhtml:a (@ (href "../../licenses/MIT")) "MIT"))) + (xhtml:tr + (xhtml:td "URL:") + (xhtml:td + (xhtml:a (@ (href "http://gnu.org/s/my-example-sxml")) + "http://gnu.org/s/my-example-sxml") + ", " + (xhtml:a (@ (href "http://alternative/home/page")) + "http://alternative/home/page")))) + (xhtml:h4 "Downloads:") + (xhtml:table + (@ (summary "Package my-example-sxml downloads")) + (xhtml:tr + (xhtml:td " Reference manual: ") + (xhtml:td + (xhtml:a (@ (href "my-example-sxml.pdf")) + " my-example-sxml.pdf "))) + (xhtml:tr + (xhtml:td " Package source: ") + (xhtml:td + (xhtml:a + (@ (href "../../../src/contrib/my-example-sxml_1.2.3.tar.gz")) + " my-example-sxml_1.2.3.tar.gz ")))) + (xhtml:h4 "Reverse dependencies:") + (xhtml:table + (@ (summary "Package my-example-sxml reverse dependencies")) + (xhtml:tr + (xhtml:td "Reverse depends:") + (xhtml:td "Too many.")) + (xhtml:tr + (xhtml:td "Reverse imports:") + (xhtml:td "Likewise.")) + (xhtml:tr + (xhtml:td "Reverse suggests:") + (xhtml:td "Uncountable."))))))) + +(define simple-table + '(xhtml:table + (xhtml:tr + (xhtml:td "Numbers") + (xhtml:td "123")) + (xhtml:tr + (@ (class "whatever")) + (xhtml:td (@ (class "unimportant")) "Letters") + (xhtml:td "abc")) + (xhtml:tr + (xhtml:td "Letters") + (xhtml:td "xyz")) + (xhtml:tr + (xhtml:td "Single")) + (xhtml:tr + (xhtml:td "not a value") + (xhtml:td "not a label") + (xhtml:td "also not a label")))) + +(test-begin "cran") + +(test-equal "table-datum: return list of first table cell matching label" + '((xhtml:td "abc")) + ((@@ (guix import cran) table-datum) simple-table "Letters")) + +(test-equal "table-datum: return empty list if no match" + '() + ((@@ (guix import cran) table-datum) simple-table "Astronauts")) + +(test-equal "table-datum: only consider the first cell as a label cell" + '() + ((@@ (guix import cran) table-datum) simple-table "not a label")) + + +(test-assert "cran-sxml->sexp" + ;; Replace network resources with sample data. + (mock ((guix build download) url-fetch + (lambda* (url file-name #:key (mirrors '())) + (with-output-to-file file-name + (lambda () + (display + (match url + ("mirror://cran/src/contrib/my-example-sxml_1.2.3.tar.gz" + "source") + (_ (error "Unexpected URL: " url)))))))) + (match ((@@ (guix import cran) cran-sxml->sexp) sxml) + (('package + ('name "r-my-example-sxml") + ('version "1.2.3") + ('source ('origin + ('method 'url-fetch) + ('uri ('string-append "mirror://cran/src/contrib/my-example-sxml_" + 'version ".tar.gz")) + ('sha256 + ('base32 + (? string? hash))))) + ('build-system 'r-build-system) + ('inputs + ('quasiquote + (("cairo" ('unquote 'cairo))))) + ('propagated-inputs + ('quasiquote + (("r-proto" ('unquote 'r-proto)) + ("r-rcpp" ('unquote 'r-rcpp)) + ("r-scales" ('unquote 'r-scales))))) + ('home-page "http://gnu.org/s/my-example-sxml") + ('synopsis "Short description") + ('description "Long description") + ('license 'x11))) + (x + (begin + (format #t "~s\n" x) + (pk 'fail x #f)))))) + +(test-end "cran") + + +(exit (= (test-runner-fail-count (test-runner-current)) 0)) -- cgit v1.2.3 From f8f3bef6aac4ed96bfd236567536c4b039b7bd31 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 31 Jul 2015 14:47:34 +0200 Subject: build: Add R build system. * guix/build-system/r.scm: New file. * guix/build/r-build-system: New file. * Makefile.am (MODULES): Add new files. * doc/guix.texi (Build Systems): Document r-build-system. --- Makefile.am | 2 + doc/guix.texi | 10 ++++ guix/build-system/r.scm | 134 ++++++++++++++++++++++++++++++++++++++++++ guix/build/r-build-system.scm | 112 +++++++++++++++++++++++++++++++++++ 4 files changed, 258 insertions(+) create mode 100644 guix/build-system/r.scm create mode 100644 guix/build/r-build-system.scm diff --git a/Makefile.am b/Makefile.am index af41ea57c8..711181b7cf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -58,6 +58,7 @@ MODULES = \ guix/build-system/perl.scm \ guix/build-system/python.scm \ guix/build-system/waf.scm \ + guix/build-system/r.scm \ guix/build-system/ruby.scm \ guix/build-system/trivial.scm \ guix/ftp-client.scm \ @@ -77,6 +78,7 @@ MODULES = \ guix/build/gnu-dist.scm \ guix/build/perl-build-system.scm \ guix/build/python-build-system.scm \ + guix/build/r-build-system.scm \ guix/build/ruby-build-system.scm \ guix/build/waf-build-system.scm \ guix/build/haskell-build-system.scm \ diff --git a/doc/guix.texi b/doc/guix.texi index 4dbedb15ec..c42aedbbb0 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2491,6 +2491,16 @@ passes flags specified by the @code{#:make-maker-flags} or Which Perl package is used can be specified with @code{#:perl}. @end defvr +@defvr {Scheme Variable} r-build-system +This variable is exported by @code{(guix build-system r)}. It +implements the build procedure used by @uref{http://r-project.org, R} +packages, which essentially is little more than running @code{R CMD +INSTALL --library=/gnu/store/@dots{}} in an environment where +@code{R_LIBS_SITE} contains the paths to all R package inputs. Tests +are run after installation using the R function +@code{tools::testInstalledPackage}. +@end defvr + @defvr {Scheme Variable} ruby-build-system This variable is exported by @code{(guix build-system ruby)}. It implements the RubyGems build procedure used by Ruby packages, which diff --git a/guix/build-system/r.scm b/guix/build-system/r.scm new file mode 100644 index 0000000000..4daec5eb66 --- /dev/null +++ b/guix/build-system/r.scm @@ -0,0 +1,134 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ricardo Wurmus +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (guix build-system r) + #:use-module (guix store) + #:use-module (guix utils) + #:use-module (guix packages) + #:use-module (guix derivations) + #:use-module (guix search-paths) + #:use-module (guix build-system) + #:use-module (guix build-system gnu) + #:use-module (ice-9 match) + #:use-module (srfi srfi-26) + #:export (%r-build-system-modules + r-build + r-build-system)) + +;; Commentary: +;; +;; Standard build procedure for R packages. +;; +;; Code: + +(define %r-build-system-modules + ;; Build-side modules imported by default. + `((guix build r-build-system) + ,@%gnu-build-system-modules)) + +(define (default-r) + "Return the default R package." + ;; Lazily resolve the binding to avoid a circular dependency. + (let ((r-mod (resolve-interface '(gnu packages statistics)))) + (module-ref r-mod 'r))) + +(define* (lower name + #:key source inputs native-inputs outputs system target + (r (default-r)) + #:allow-other-keys + #:rest arguments) + "Return a bag for NAME." + (define private-keywords + '(#:source #:target #:inputs #:native-inputs)) + + (and (not target) ;XXX: no cross-compilation + (bag + (name name) + (system system) + (host-inputs `(,@(if source + `(("source" ,source)) + '()) + ,@inputs + + ;; Keep the standard inputs of 'gnu-build-system'. + ,@(standard-packages))) + (build-inputs `(("r" ,r) + ,@native-inputs)) + (outputs outputs) + (build r-build) + (arguments (strip-keyword-arguments private-keywords arguments))))) + +(define* (r-build store name inputs + #:key + (tests? #t) + (test-target "tests") + (configure-flags ''()) + (phases '(@ (guix build r-build-system) + %standard-phases)) + (outputs '("out")) + (search-paths '()) + (system (%current-system)) + (guile #f) + (imported-modules %r-build-system-modules) + (modules '((guix build r-build-system) + (guix build utils)))) + "Build SOURCE with INPUTS." + (define builder + `(begin + (use-modules ,@modules) + (r-build #:name ,name + #:source ,(match (assoc-ref inputs "source") + (((? derivation? source)) + (derivation->output-path source)) + ((source) + source) + (source + source)) + #:configure-flags ,configure-flags + #:system ,system + #:tests? ,tests? + #:test-target ,test-target + #:phases ,phases + #:outputs %outputs + #:search-paths ',(map search-path-specification->sexp + search-paths) + #:inputs %build-inputs))) + + (define guile-for-build + (match guile + ((? package?) + (package-derivation store guile system #:graft? #f)) + (#f ; the default + (let* ((distro (resolve-interface '(gnu packages commencement))) + (guile (module-ref distro 'guile-final))) + (package-derivation store guile system #:graft? #f))))) + + (build-expression->derivation store name builder + #:inputs inputs + #:system system + #:modules imported-modules + #:outputs outputs + #:guile-for-build guile-for-build)) + +(define r-build-system + (build-system + (name 'r) + (description "The standard R build system") + (lower lower))) + +;;; r.scm ends here diff --git a/guix/build/r-build-system.scm b/guix/build/r-build-system.scm new file mode 100644 index 0000000000..3fc13eb835 --- /dev/null +++ b/guix/build/r-build-system.scm @@ -0,0 +1,112 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ricardo Wurmus +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (guix build r-build-system) + #:use-module ((guix build gnu-build-system) #:prefix gnu:) + #:use-module (guix build utils) + #:use-module (ice-9 match) + #:use-module (ice-9 ftw) + #:use-module (ice-9 popen) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:export (%standard-phases + r-build)) + +;; Commentary: +;; +;; Builder-side code of the standard build procedure for R packages. +;; +;; Code: + +(define (invoke-r command params) + (zero? (apply system* "R" "CMD" command params))) + +(define (pipe-to-r command params) + (let ((port (apply open-pipe* OPEN_WRITE "R" params))) + (display command port) + (zero? (status:exit-val (close-pipe port))))) + +(define (generate-site-path inputs) + (string-join (map (match-lambda + ((_ . path) + (string-append path "/site-library"))) + ;; Restrict to inputs beginning with "r-". + (filter (match-lambda + ((name . _) + (string-prefix? "r-" name))) + inputs)) + ":")) + +(define* (check #:key test-target inputs outputs tests? #:allow-other-keys) + "Run the test suite of a given R package." + (let* ((libdir (string-append (assoc-ref outputs "out") "/site-library/")) + + ;; R package names are case-sensitive and cannot be derived from the + ;; Guix package name. The exact package name is required as an + ;; argument to ‘tools::testInstalledPackage’, which runs the tests + ;; for a package given its name and the path to the “library” (a + ;; location for a collection of R packages) containing it. + + ;; Since there can only be one R package in any collection (= + ;; “library”), the name of the only directory in the collection path + ;; is the original name of the R package. + (pkg-name (car (scandir libdir (negate (cut member <> '("." "..")))))) + (testdir (string-append libdir pkg-name "/" test-target)) + (site-path (string-append libdir ":" (generate-site-path inputs)))) + (if (and tests? (file-exists? testdir)) + (begin + (setenv "R_LIBS_SITE" site-path) + (pipe-to-r (string-append "tools::testInstalledPackage(\"" pkg-name "\", " + "lib.loc = \"" libdir "\")") + '("--no-save" "--slave"))) + #t))) + +(define* (install #:key outputs inputs (configure-flags '()) + #:allow-other-keys) + "Install a given R package." + (let* ((out (assoc-ref outputs "out")) + (site-library (string-append out "/site-library/")) + (params (append configure-flags + (list "--install-tests" + (string-append "--library=" site-library) + "."))) + (site-path (string-append site-library ":" + (generate-site-path inputs)))) + ;; If dependencies cannot be found at install time, R will refuse to + ;; install the package. + (setenv "R_LIBS_SITE" site-path) + ;; Some R packages contain a configure script for which the CONFIG_SHELL + ;; variable should be set. + (setenv "CONFIG_SHELL" (which "bash")) + (mkdir-p site-library) + (invoke-r "INSTALL" params))) + +(define %standard-phases + (modify-phases gnu:%standard-phases + (delete 'configure) + (delete 'build) + (delete 'check) ; tests must be run after installation + (replace 'install install) + (add-after 'install 'check check))) + +(define* (r-build #:key inputs (phases %standard-phases) + #:allow-other-keys #:rest args) + "Build the given R package, applying all of PHASES in order." + (apply gnu:gnu-build #:inputs inputs #:phases phases args)) + +;;; r-build-system.scm ends here -- cgit v1.2.3 From 0fd53ed6348fb82a9436216732dc7d1bba1385d5 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 24 Aug 2015 14:19:53 +0200 Subject: gnu: libedit: Update to 20150325-3.1. * gnu/packages/libedit.scm (libedit): Update to 20150325-3.1. --- gnu/packages/libedit.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/libedit.scm b/gnu/packages/libedit.scm index 1d7b5b6a5f..1feef80838 100644 --- a/gnu/packages/libedit.scm +++ b/gnu/packages/libedit.scm @@ -26,7 +26,7 @@ (define-module (gnu packages libedit) (define-public libedit (package (name "libedit") - (version "20141030-3.1") + (version "20150325-3.1") (source (origin (method url-fetch) @@ -34,7 +34,7 @@ (define-public libedit "/" name "-" version ".tar.gz")) (sha256 (base32 - "0h2svwfcdldpbg0fy7fnkld706r2a9k9h1mm0yj7z3zvf1jy20cp")))) + "1if8zi9h52m80ck796an28rrqfljk2n8cn25m3fl0prwz155x2n8")))) (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses))) -- cgit v1.2.3 From ab952dc37500759767fd7f4dedd7c1b800e44cde Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 24 Aug 2015 14:21:26 +0200 Subject: gnu: libedit: Enable wide character support. * gnu/packages/libedit.scm (libedit)[arguments]: Add "--enable-widec" to configure flags. --- gnu/packages/libedit.scm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gnu/packages/libedit.scm b/gnu/packages/libedit.scm index 1feef80838..a1a1ac6bb5 100644 --- a/gnu/packages/libedit.scm +++ b/gnu/packages/libedit.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Federico Beffa +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,6 +37,7 @@ (define-public libedit (base32 "1if8zi9h52m80ck796an28rrqfljk2n8cn25m3fl0prwz155x2n8")))) (build-system gnu-build-system) + (arguments `(#:configure-flags (list "--enable-widec"))) (inputs `(("ncurses" ,ncurses))) (home-page "http://thrysoee.dk/editline/") -- cgit v1.2.3 From cf36174ffbcbc2039d1415f800672c2f69c9a7fe Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 28 Aug 2015 17:24:45 +0200 Subject: gnu: Add ruby-builder. * gnu/packages/ruby.scm (ruby-builder): New variable. --- gnu/packages/ruby.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 561fe4d986..d020cd5bfc 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2014 Ludovic Courtès ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2014 David Thompson +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -364,6 +365,32 @@ (define-public bundler (home-page "http://bundler.io/") (license license:expat))) +(define-public ruby-builder + (package + (name "ruby-builder") + (version "3.2.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "builder" version)) + (sha256 + (base32 + "14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'do-not-use-rvm + (lambda _ + (substitute* "rakelib/tags.rake" + (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n")) + #t))))) + (synopsis "Ruby library to create structured data") + (description "Builder provides a number of builder objects that make it +easy to create structured data. Currently the following builder objects are +supported: XML Markup and XML Events.") + (home-page "https://github.com/jimweirich/builder") + (license license:expat))) + (define-public ruby-useragent (package (name "ruby-useragent") -- cgit v1.2.3 From ad79eb554d626e5546605d3ad0bccc25d65320f8 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 28 Aug 2015 17:25:42 +0200 Subject: gnu: Add ruby-rjb. * gnu/packages/ruby.scm (ruby-rjb): New variable. --- gnu/packages/ruby.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index d020cd5bfc..84bfb82e76 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -26,6 +26,7 @@ (define-module (gnu packages ruby) #:use-module (gnu packages compression) #:use-module (gnu packages readline) #:use-module (gnu packages autotools) + #:use-module (gnu packages java) #:use-module (gnu packages libffi) #:use-module (gnu packages gdbm) #:use-module (gnu packages tls) @@ -391,6 +392,33 @@ (define-public ruby-builder (home-page "https://github.com/jimweirich/builder") (license license:expat))) +(define-public ruby-rjb + (package + (name "ruby-rjb") + (version "1.5.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rjb" version)) + (sha256 + (base32 + "0gzs92dagk981s4vrymnqg0vll783b9k564j0cdgp167nc5a2zg4")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f ; no rakefile + #:phases + (modify-phases %standard-phases + (add-before 'build 'set-java-home + (lambda* (#:key inputs #:allow-other-keys) + (setenv "JAVA_HOME" (assoc-ref inputs "jdk")) + #t))))) + (native-inputs + `(("jdk" ,icedtea7 "jdk"))) + (synopsis "Ruby-to-Java bridge using the Java Native Interface") + (description "RJB is a bridge program that connects Ruby and Java via the +Java Native Interface.") + (home-page "http://www.artonx.org/collabo/backyard/?RubyJavaBridge") + (license license:lgpl2.1+))) + (define-public ruby-useragent (package (name "ruby-useragent") -- cgit v1.2.3 From 71a03c29bf2c4913b5591f3affdde65a75f54537 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 28 Aug 2015 17:26:07 +0200 Subject: gnu: Add ruby-atoulme-antwrap. * gnu/packages/ruby.scm (ruby-atoulme-antwrap): New variable. --- gnu/packages/ruby.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 84bfb82e76..aaea81516e 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -419,6 +419,30 @@ (define-public ruby-rjb (home-page "http://www.artonx.org/collabo/backyard/?RubyJavaBridge") (license license:lgpl2.1+))) +(define-public ruby-atoulme-antwrap + (package + (name "ruby-atoulme-antwrap") + (version "0.7.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "atoulme-Antwrap" version)) + (sha256 + (base32 + "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz")))) + (build-system ruby-build-system) + ;; Test data required for most of the tests are not included. + (arguments `(#:tests? #f)) + (native-inputs + `(("ruby-hoe" ,ruby-hoe))) + (inputs + `(("ruby-rjb" ,ruby-rjb))) + (synopsis "Ruby wrapper for the Ant build tool") + (description "Antwrap is a Ruby module that wraps the Apache Ant build +tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby +script.") + (home-page "http://rubyforge.org/projects/antwrap/") + (license license:expat))) + (define-public ruby-useragent (package (name "ruby-useragent") -- cgit v1.2.3 From cc53e63052f8bb4fd6ac92020fbe7e5af52939c5 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 28 Aug 2015 17:26:35 +0200 Subject: gnu: Add ruby-orderedhash. * gnu/packages/ruby.scm (ruby-orderedhash): New variable. --- gnu/packages/ruby.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index aaea81516e..2daf794b52 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -443,6 +443,26 @@ (define-public ruby-atoulme-antwrap (home-page "http://rubyforge.org/projects/antwrap/") (license license:expat))) +(define-public ruby-orderedhash + (package + (name "ruby-orderedhash") + (version "0.0.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "orderedhash" version)) + (sha256 + (base32 + "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no test suite + (synopsis "Ruby library providing an order-preserving hash") + (description "Orderedhash is a Ruby library providing a hash +implementation that preserves the order of items and features some array-like +extensions.") + (home-page "http://codeforpeople.com/lib/ruby/orderedhash/") + (license license:public-domain))) + (define-public ruby-useragent (package (name "ruby-useragent") -- cgit v1.2.3 From 8b9bde077ad57b1ba8b4a09870d61f5642748b8a Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 28 Aug 2015 17:21:48 +0200 Subject: gnu: Add ruby-xml-simple. * gnu/packages/ruby.scm (ruby-xml-simple): New variable. --- gnu/packages/ruby.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 2daf794b52..8170169bed 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -463,6 +463,25 @@ (define-public ruby-orderedhash (home-page "http://codeforpeople.com/lib/ruby/orderedhash/") (license license:public-domain))) +(define-public ruby-xml-simple + (package + (name "ruby-xml-simple") + (version "1.1.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "xml-simple" version)) + (sha256 + (base32 + "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no test suite + (synopsis "Simple Ruby library for XML processing") + (description "This library provides a simple API for XML processing in +Ruby.") + (home-page "https://github.com/maik/xml-simple") + (license license:ruby))) + (define-public ruby-useragent (package (name "ruby-useragent") -- cgit v1.2.3 From 2cb3ab482793e9b0dffd30b59d68a99aa169e0e2 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 28 Aug 2015 17:22:28 +0200 Subject: gnu: Add ruby-thor. * gnu/packages/ruby.scm (ruby-thor): New variable. --- gnu/packages/ruby.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 8170169bed..4d1061e5a9 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -482,6 +482,27 @@ (define-public ruby-xml-simple (home-page "https://github.com/maik/xml-simple") (license license:ruby))) +(define-public ruby-thor + (package + (name "ruby-thor") + (version "0.19.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "thor" version)) + (sha256 + (base32 + "08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no test suite + (native-inputs + `(("bundler" ,bundler))) + (synopsis "Ruby toolkit for building command-line interfaces") + (description "Thor is a toolkit for building powerful command-line +interfaces.") + (home-page "http://whatisthor.com/") + (license license:expat))) + (define-public ruby-useragent (package (name "ruby-useragent") -- cgit v1.2.3 From 8410cb62516d1dfb979685a41791c09aeb1e19c5 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 26 Aug 2015 23:22:29 +0200 Subject: gnu: Add poppler-qt4. * gnu/packages/pdf.scm (poppler-qt4): New variable. --- gnu/packages/pdf.scm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index bbd1f66bf3..f8f05cd3b8 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -36,6 +36,7 @@ (define-module (gnu packages pdf) #:use-module (gnu packages lesstif) #:use-module (gnu packages image) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages qt) #:use-module (gnu packages xorg) #:use-module (gnu packages gnome) #:use-module (gnu packages glib) @@ -103,6 +104,13 @@ (define-public poppler (license license:gpl2+) (home-page "http://poppler.freedesktop.org/"))) +(define-public poppler-qt4 + (package (inherit poppler) + (name "poppler-qt4") + (inputs `(("qt-4" ,qt-4) + ,@(package-inputs poppler))) + (synopsis "Qt4 frontend for the Poppler PDF rendering library"))) + (define-public xpdf (package (name "xpdf") -- cgit v1.2.3 From 3efb57eaf45b47607aba777b993d9a839bb9d1de Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 26 Aug 2015 23:23:31 +0200 Subject: gnu: Add python-poppler-qt4. * gnu/packages/pdf.scm (python-poppler-qt4): New variable. --- gnu/packages/pdf.scm | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index f8f05cd3b8..5897974e78 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -25,6 +25,7 @@ (define-module (gnu packages pdf) #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) + #:use-module (guix build-system python) #:use-module (gnu packages) #:use-module (gnu packages compression) #:use-module (gnu packages fontutils) @@ -111,6 +112,43 @@ (define-public poppler-qt4 ,@(package-inputs poppler))) (synopsis "Qt4 frontend for the Poppler PDF rendering library"))) +(define-public python-poppler-qt4 + (package + (name "python-poppler-qt4") + (version "0.24.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/p" + "/python-poppler-qt4/python-poppler-qt4-" + version ".tar.gz")) + (sha256 + (base32 + "0x63niylkk4q3h3ay8zrk3m1xiik0x3hlr4gvj7kswx48qi1vb99")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after + 'unpack 'patch-poppler-include-paths + (lambda _ + (substitute* (find-files "." "poppler-.*\\.sip") + (("qt4/poppler-.*\\.h" header) + (string-append "poppler/" header))) + #t))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("python-sip" ,python-sip) + ("python-pyqt-4" ,python-pyqt-4) + ("poppler-qt4" ,poppler-qt4))) + (home-page "https://pypi.python.org/pypi/python-poppler-qt4") + (synopsis "Python bindings for Poppler-Qt4") + (description + "This package provides Python bindings for the Qt4 interface of the +Poppler PDF rendering library.") + (license license:lgpl2.1+))) + (define-public xpdf (package (name "xpdf") -- cgit v1.2.3 From 5faa5ce4ef10ac5deefe325b6243fcd252f6478a Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 26 Aug 2015 23:24:16 +0200 Subject: gnu: Add python-ly. * gnu/packages/python.scm (python-ly): New variable. --- gnu/packages/python.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 940efeca64..75f285fbed 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -4629,3 +4629,26 @@ (define-public python2-terminado ,python2-backport-ssl-match-hostname) ,@(alist-delete "python-tornado" (package-propagated-inputs terminado))))))) + +(define-public python-ly + (package + (name "python-ly") + (version "0.9.2") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/p/python-ly/python-ly-" + version ".tar.gz")) + (sha256 + (base32 + "1bsjg4q9ihr8bfdclrcmb8yjcg8xm9dznh58f3zsyrkrjzwbhcd2")))) + (build-system python-build-system) + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (synopsis "Tool and library for manipulating LilyPond files") + (description "This package provides a Python library to parse, manipulate +or create documents in LilyPond format. A command line program ly is also +provided that can be used to do various manipulations with LilyPond files.") + (home-page "https://pypi.python.org/pypi/python-ly") + (license gpl2+))) -- cgit v1.2.3 From 821664f115ca736b527851e39edbef2a04115644 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 26 Aug 2015 23:25:31 +0200 Subject: gnu: Add frescobaldi. * gnu/packages/music.scm (frescobaldi): New variable. --- gnu/packages/music.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index fa8cccbb35..0950831d8c 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -24,6 +24,7 @@ (define-module (gnu packages music) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) + #:use-module (guix build-system python) #:use-module (guix build-system waf) #:use-module (gnu packages) #:use-module (gnu packages audio) @@ -54,6 +55,7 @@ (define-module (gnu packages music) #:use-module (gnu packages man) #:use-module (gnu packages mp3) #:use-module (gnu packages netpbm) + #:use-module (gnu packages pdf) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) ;libsndfile @@ -647,3 +649,33 @@ (define-public pd programming methods as well as for realizing complex systems for large-scale projects.") (license license:bsd-3))) + +(define-public frescobaldi + (package + (name "frescobaldi") + (version "2.18.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/wbsoft/frescobaldi/releases/download/v" + version "/frescobaldi-" version ".tar.gz")) + (sha256 + (base32 + "1hflc6gck6dn17czc2ldai5j0ynfg3df8lqcggdry06qxsdbnns7")))) + (build-system python-build-system) + (inputs + `(("lilypond" ,lilypond) + ("python-pyqt-4" ,python-pyqt-4) + ("python-ly" ,python-ly) + ("poppler" ,poppler) + ("python-poppler-qt4" ,python-poppler-qt4) + ("python-sip" ,python-sip))) + (home-page "http://www.frescobaldi.org/") + (synopsis "LilyPond sheet music text editor") + (description + "Frescobaldi is a LilyPond sheet music text editor with syntax +highlighting and automatic completion. Among other things, it can render +scores next to the source, can capture input from MIDI or read MusicXML and +ABC files, has a MIDI player for proof-listening, and includes a documentation +browser.") + (license license:gpl2+))) -- cgit v1.2.3 From 1a51fe2768e7be1fd5eace4ef1b6d6f0b51e2e50 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 31 Aug 2015 22:46:32 +0200 Subject: gnu: Add Guile-RSVG. * gnu/packages/gtk.scm (guile-rsvg): New variable. * gnu/packages/patches/guile-rsvg-pkgconfig.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + gnu/packages/gtk.scm | 40 +++++++++++++++++++++++++ gnu/packages/patches/guile-rsvg-pkgconfig.patch | 16 ++++++++++ 3 files changed, 57 insertions(+) create mode 100644 gnu/packages/patches/guile-rsvg-pkgconfig.patch diff --git a/gnu-system.am b/gnu-system.am index ab4308139d..3e6ee158f0 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -487,6 +487,7 @@ dist_patch_DATA = \ gnu/packages/patches/guile-default-utf8.patch \ gnu/packages/patches/guile-linux-syscalls.patch \ gnu/packages/patches/guile-relocatable.patch \ + gnu/packages/patches/guile-rsvg-pkgconfig.patch \ gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \ gnu/packages/patches/hop-bigloo-4.0b.patch \ gnu/packages/patches/hop-linker-flags.patch \ diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index e826609bca..d500fc0e38 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -33,6 +33,8 @@ (define-module (gnu packages gtk) #:use-module (guix build-system waf) #:use-module (gnu packages) #:use-module (gnu packages algebra) + #:use-module (gnu packages autotools) + #:use-module (gnu packages texinfo) #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages docbook) @@ -632,6 +634,44 @@ (define-public guile-cairo exceptions, macros, and a dynamic programming environment.") (license license:lgpl3+))) +(define-public guile-rsvg + (package + (name "guile-rsvg") + (version "2.18.1") + (source (origin + (method url-fetch) + (uri (string-append "http://wingolog.org/pub/guile-rsvg/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "136f236iw3yrrz6pkkp1ma9c5mrs5icqha6pnawinqpk892r3jh7")) + (patches (list (search-patch "guile-rsvg-pkgconfig.patch"))) + (modules '((guix build utils))) + (snippet + '(substitute* (find-files "." "Makefile\\.am") + (("/share/guile/site") + "/share/guile/site/2.0"))))) + (build-system gnu-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-before 'configure 'bootstrap + (lambda _ + (zero? (system* "autoreconf" "-vfi"))))))) + (native-inputs `(("pkg-config" ,pkg-config) + ("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("texinfo" ,texinfo))) + (inputs `(("guile" ,guile-2.0) + ("librsvg" ,librsvg) + ("guile-lib" ,guile-lib))) ;for (unit-test) + (propagated-inputs `(("guile-cairo" ,guile-cairo))) + (synopsis "Render SVG images using Cairo from Guile") + (description + "Guile-RSVG wraps the RSVG library for Guile, allowing you to render SVG +images onto Cairo surfaces.") + (home-page "http://wingolog.org/projects/guile-rsvg/") + (license license:lgpl2.1+))) ;;; ;;; C++ bindings. diff --git a/gnu/packages/patches/guile-rsvg-pkgconfig.patch b/gnu/packages/patches/guile-rsvg-pkgconfig.patch new file mode 100644 index 0000000000..2272b4e1cd --- /dev/null +++ b/gnu/packages/patches/guile-rsvg-pkgconfig.patch @@ -0,0 +1,16 @@ +This patch fixes a bug in guile-rsvg's build system, whereby the CFLAGS +and LDFLAGS for Guile would not be captured. + +--- guile-rsvg-2.18.1/configure.ac 2015-08-31 22:30:30.578909480 +0200 ++++ guile-rsvg-2.18.1/configure.ac 2015-08-31 22:32:15.071516084 +0200 +@@ -39,6 +39,10 @@ AC_SUBST(WARN_CFLAGS) + + GUILE_PKG([2.2 2.0 1.8]) + ++dnl The above macro fails to set the 'GUILE_CFLAGS' and 'GUILE_LIBS' ++dnl substitution variables, hence this line. ++PKG_CHECK_MODULES(GUILE, guile-2.0) ++ + PKG_CHECK_MODULES(GUILE_CAIRO, guile-cairo >= 1.4.0) + AC_SUBST(GUILE_CAIRO_LIBS) + AC_SUBST(GUILE_CAIRO_CFLAGS) -- cgit v1.2.3 From cdd383e9f31a37046c388054e0ac7b59cad3dd6a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 31 Aug 2015 23:00:18 +0200 Subject: gnu: Add Guile-Present. * gnu/packages/gtk.scm (guile-present): New variable. --- gnu/packages/gtk.scm | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index d500fc0e38..45cd1e30f6 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -673,6 +673,54 @@ (define-public guile-rsvg (home-page "http://wingolog.org/projects/guile-rsvg/") (license license:lgpl2.1+))) +(define-public guile-present + (package + (name "guile-present") + (version "0.3.0") + (source (origin + (method url-fetch) + (uri (string-append "http://wingolog.org/pub/guile-present/" + "guile-present-" version ".tar.gz")) + (sha256 + (base32 + "1qam447m05sxxv6x8dlzg7qnyfc4dh8apjw1idpfhpns671gfr6m")) + (patches (list (search-patch "guile-present-coding.patch"))) + (modules '((guix build utils))) + (snippet + '(substitute* "Makefile.in" + (("godir = .*$") + "godir = $(moddir)\n"))))) + (build-system gnu-build-system) + (arguments + '(#:phases (alist-cons-after + 'install 'post-install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (guile (assoc-ref inputs "guile"))) + (substitute* (find-files bin ".*") + (("guile") + (string-append guile "/bin/guile -L " + out "/share/guile/site/2.0 -C " + out "/share/guile/site/2.0 "))))) + %standard-phases))) + (native-inputs `(("pkg-config" ,pkg-config))) + (inputs `(("guile" ,guile-2.0))) + (propagated-inputs + ;; These are used by the (present …) modules. + `(("guile-lib" ,guile-lib) + ("guile-cairo" ,guile-cairo) + ("guile-rsvg" ,guile-rsvg))) + (home-page "http://wingolog.org/software/guile-present/") + (synopsis "Create SVG or PDF presentations in Guile") + (description + "Guile-Present defines a declarative vocabulary for presentations, +together with tools to render presentation documents as SVG or PDF. +Guile-Present can be used to make presentations programmatically, but also +includes a tools to generate PDF presentations out of Org mode and Texinfo +documents.") + (license license:lgpl3+))) + ;;; ;;; C++ bindings. ;;; -- cgit v1.2.3 From 8b9ceb8d03ab7b67cab9ce96b66f197c331ccc04 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sun, 30 Aug 2015 18:44:39 +0300 Subject: emacs: Add code to pipe guix output to external program. * emacs/guix-main.scm: Use (ice-9 popen) module. (pipe-guix-output): New procedure. --- emacs/guix-main.scm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm index fe224fb582..8d3a88152d 100644 --- a/emacs/guix-main.scm +++ b/emacs/guix-main.scm @@ -45,6 +45,7 @@ (use-modules (ice-9 vlist) (ice-9 match) + (ice-9 popen) (srfi srfi-1) (srfi srfi-2) (srfi srfi-11) @@ -949,6 +950,15 @@ (define (help-string . commands) "Return string with 'guix COMMANDS ... --help' output." (apply guix-command-output `(,@commands "--help"))) +(define (pipe-guix-output guix-args command-args) + "Run 'guix GUIX-ARGS ...' command and pipe its output to a shell command +defined by COMMAND-ARGS. +Return #t if the shell command was executed successfully." + (let ((pipe (apply open-pipe* OPEN_WRITE command-args))) + (with-output-to-port pipe + (lambda () (apply guix-command guix-args))) + (zero? (status:exit-val (close-pipe pipe))))) + ;;; Lists of packages, lint checkers, etc. -- cgit v1.2.3 From 70fabd498c275d0d5cb43f2c13f8293b878c8e4e Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sun, 30 Aug 2015 18:47:01 +0300 Subject: emacs: Add code to run 'dot' program. * emacs/guix-external.el: New file. * emacs.am (ELFILES): Add it. --- emacs.am | 1 + emacs/guix-external.el | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 emacs/guix-external.el diff --git a/emacs.am b/emacs.am index 0f1ac946de..5d3cb81257 100644 --- a/emacs.am +++ b/emacs.am @@ -23,6 +23,7 @@ ELFILES = \ emacs/guix-base.el \ emacs/guix-command.el \ emacs/guix-emacs.el \ + emacs/guix-external.el \ emacs/guix-help-vars.el \ emacs/guix-history.el \ emacs/guix-info.el \ diff --git a/emacs/guix-external.el b/emacs/guix-external.el new file mode 100644 index 0000000000..d233473abe --- /dev/null +++ b/emacs/guix-external.el @@ -0,0 +1,72 @@ +;;; guix-external.el --- External programs -*- lexical-binding: t -*- + +;; Copyright © 2015 Alex Kost + +;; This file is part of GNU Guix. + +;; GNU Guix is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Guix is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;; This file provides auxiliary code for running external programs. + +;;; Code: + +(defgroup guix-external nil + "Settings for external programs." + :group 'guix) + +(defcustom guix-dot-program (executable-find "dot") + "Name of the 'dot' executable." + :type 'string + :group 'guix-external) + +(defcustom guix-dot-default-arguments + '("-Tpng") + "Default arguments for 'dot' program." + :type '(repeat string) + :group 'guix-external) + +(defcustom guix-dot-file-name-function #'guix-png-file-name + "Function used to define a file name of a temporary 'dot' file. +The function is called without arguments." + :type '(choice (function-item guix-png-file-name) + (function :tag "Other function")) + :group 'guix-external) + +(defun guix-dot-arguments (output-file &rest args) + "Return a list of dot arguments for writing a graph into OUTPUT-FILE. +If ARGS is nil, use `guix-dot-default-arguments'." + (or guix-dot-program + (error (concat "Couldn't find 'dot'.\n" + "Set guix-dot-program to a proper value"))) + (apply #'list + guix-dot-program + (concat "-o" output-file) + (or args guix-dot-default-arguments))) + +(defun guix-dot-file-name () + "Call `guix-dot-file-name-function'." + (funcall guix-dot-file-name-function)) + +(defun guix-png-file-name () + "Return '.png' file name in the `temporary-file-directory'." + (concat (make-temp-name + (concat (file-name-as-directory temporary-file-directory) + "graph-")) + ".png")) + +(provide 'guix-external) + +;;; guix-external.el ends here -- cgit v1.2.3 From 32c0b6d78ce815350acf2f6879579d5b628c437f Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sun, 30 Aug 2015 18:51:09 +0300 Subject: emacs: Allow users to choose a 'find-file' function. * emacs/guix-utils.el (guix-find-file-function): New variable. (guix-find-file): Use it. --- emacs/guix-utils.el | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/emacs/guix-utils.el b/emacs/guix-utils.el index 78ea3545c6..c1ce954f8f 100644 --- a/emacs/guix-utils.el +++ b/emacs/guix-utils.el @@ -193,10 +193,19 @@ Return time value." (require 'org) (org-read-date nil t nil prompt)) +(defcustom guix-find-file-function #'find-file + "Function used to find a file. +The function is called by `guix-find-file' with a file name as a +single argument." + :type '(choice (function-item find-file) + (function-item org-open-file) + (function :tag "Other function")) + :group 'guix) + (defun guix-find-file (file) "Find FILE if it exists." (if (file-exists-p file) - (find-file file) + (funcall guix-find-file-function file) (message "File '%s' does not exist." file))) (defmacro guix-while-search (regexp &rest body) -- cgit v1.2.3 From 761d6fd9c16801a13d1abe0a6951e793144ae791 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sun, 30 Aug 2015 18:52:30 +0300 Subject: emacs: Add "View graph" action to graph popup. * emacs/guix-command.el: Require 'guix-external'. (guix-run-view-graph): New function. (guix-command-additional-execute-arguments, guix-command-special-executors): Add entries for "View graph" action. --- emacs/guix-command.el | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/emacs/guix-command.el b/emacs/guix-command.el index 139724d3d5..3513300576 100644 --- a/emacs/guix-command.el +++ b/emacs/guix-command.el @@ -65,6 +65,7 @@ (require 'guix-help-vars) (require 'guix-read) (require 'guix-base) +(require 'guix-external) (defgroup guix-commands nil "Settings for guix popup windows." @@ -490,7 +491,9 @@ to be modified." "List of default 'execute' action arguments.") (defvar guix-command-additional-execute-arguments - nil + `((("graph") + ,(guix-command-make-argument + :name "view" :char ?v :doc "View graph"))) "Alist of guix commands and additional 'execute' action arguments.") (defun guix-command-execute-arguments (commands) @@ -508,7 +511,9 @@ to be modified." '((("environment") ("repl" . guix-run-environment-command-in-repl)) (("pull") - ("repl" . guix-run-pull-command-in-repl))) + ("repl" . guix-run-pull-command-in-repl)) + (("graph") + ("view" . guix-run-view-graph))) "Alist of guix commands and alists of special executers for them. See also `guix-command-default-executors'.") @@ -545,6 +550,15 @@ Perform pull-specific actions after operation, see (apply #'guix-make-guile-expression 'guix-command args) nil 'pull)) +(defun guix-run-view-graph (args) + "Run 'guix ARGS ...' graph command, make the image and open it." + (let* ((graph-file (guix-dot-file-name)) + (dot-args (guix-dot-arguments graph-file))) + (if (guix-eval-read (guix-make-guile-expression + 'pipe-guix-output args dot-args)) + (guix-find-file graph-file) + (error "Couldn't create a graph")))) + ;;; Generating popups, actions, etc. -- cgit v1.2.3 From 1defd8cd2e4efe3fa2c5532d6e560dfc37e44820 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 1 Sep 2015 10:10:36 +0200 Subject: gnu: Add emacs-let-alist. * gnu/packages/emacs.scm (let-alist): New variable. --- gnu/packages/emacs.scm | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index b0a8b08dbe..7bb302c49f 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -487,6 +487,53 @@ (define (copy-to-dir dir files) programs.") (license license:gpl3+))) +(define-public let-alist + (package + (name "emacs-let-alist") + (version "1.0.4") + (source (origin + (method url-fetch) + (uri (string-append "http://elpa.gnu.org/packages/let-alist-" + version ".el")) + (sha256 + (base32 + "07312bvvyz86lf64vdkxg2l1wgfjl25ljdjwlf1bdzj01c4hm88x")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils) + (guix build emacs-utils)) + + #:builder (begin + (use-modules (guix build emacs-utils) + (guix build utils)) + + (let* ((out (assoc-ref %outputs "out")) + (lispdir (string-append out + "/share/emacs/site-lisp/" + "guix.d/let-alist-" + ,version)) + (emacs (assoc-ref %build-inputs "emacs"))) + + (mkdir-p lispdir) + (copy-file (assoc-ref %build-inputs "source") + (string-append lispdir "/let-alist.el")) + + (setenv "PATH" (string-append emacs "/bin")) + (emacs-byte-compile-directory lispdir) + #t)))) + (native-inputs `(("emacs" ,emacs-no-x))) + (home-page "http://elpa.gnu.org/packages/let-alist.html") + (synopsis "Easily let-bind values of an assoc-list by their names") + (description + "This package offers a single Emacs Lisp macro, @code{let-alist}. This +macro takes a first argument, whose value must be an alist (association list), +and a body. + +The macro expands to a let form containing the body, where each dotted symbol +inside body is let-bound to their cdrs in the alist. Only those present in +the body are let-bound and this search is done at compile time.") + (license license:gpl3+))) + ;;; ;;; Web browsing. -- cgit v1.2.3 From 6e3fdbbe264b2a233f32f521e2547e4b6175578b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 1 Sep 2015 10:16:32 +0200 Subject: gnu: Add emacs-flycheck. * gnu/packages/emacs.scm (flycheck): New variable. --- gnu/packages/emacs.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 7bb302c49f..57d45c22b3 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -534,6 +534,34 @@ (define-public let-alist the body are let-bound and this search is done at compile time.") (license license:gpl3+))) +(define-public flycheck + (package + (name "emacs-flycheck") + (version "20150831.1343") + (source (origin + (method url-fetch) + (uri (string-append "http://melpa.org/packages/flycheck-" + version ".tar")) + (sha256 + (base32 + "0a0iyvki62rqi24dbrcdq3i1wdygdi350gcjsfrfr6fz8fasz42l")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-let-alist" ,let-alist))) + (home-page "https://www.flycheck.org") + (synopsis "On-the-fly syntax checking") + (description + "This package provides on-the-fly syntax checking for GNU Emacs. It is a +replacement for the older Flymake extension which is part of GNU Emacs, with +many improvements and additional features. + +Flycheck provides fully-automatic, fail-safe, on-the-fly background syntax +checking for over 30 programming and markup languages with more than 70 +different tools. It highlights errors and warnings inline in the buffer, and +provides an optional IDE-like error list.") + (license license:gpl3+))) ;+GFDLv1.3+ for the manual + ;;; ;;; Web browsing. -- cgit v1.2.3 From 87390c155eb6ab0c6ed037104eeae3ba7925316a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 1 Sep 2015 13:45:38 +0200 Subject: gnu: libssh: Update to 0.6.5. * gnu/packages/ssh.scm (libssh): Update to 0.6.5. [source]: Remove 'patches'. [inputs]: Use LIBGCRYPT instead of LIBGCRYPT-1.5. --- gnu/packages/ssh.scm | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index f9a3a42e14..2e74fbda43 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -43,24 +43,15 @@ (define-module (gnu packages ssh) (define-public libssh (package (name "libssh") - (version "0.6.3") + (version "0.6.5") (source (origin (method url-fetch) - (uri (string-append "https://red.libssh.org/attachments/download/87/libssh-" - version ".tar.xz")) + (uri (string-append + "https://red.libssh.org/attachments/download/121/libssh-" + version ".tar.xz")) (sha256 (base32 - "1jyaj9h1iglvn02hrvcchbx8ycjpj8b91h8mi459k7q5jp2xgd9b")) - (patches - ;; Apply the patch as discussed at - ;; . - (list (origin - (uri - "http://git.libssh.org/projects/libssh.git/patch/?id=a033b93c616f4a81afc3fc6a017396d507d96c19") - (method url-fetch) - (sha256 - (base32 - "16fdkjcnhc6j7qxz9575fzr9044927ws5259yh0xb9yv1q14j0vh"))))))) + "0b6wyx6bwbb8jpn8x4rhlrdiqwqrwrs0mxjmrnqykm9kw1ijgm8g")))) (build-system cmake-build-system) (arguments '(#:configure-flags '("-DWITH_GCRYPT=ON") @@ -68,10 +59,7 @@ (define-public libssh ;; TODO: Add 'CMockery' and '-DWITH_TESTING=ON' for the test suite. #:tests? #f)) (inputs `(("zlib" ,zlib) - ;; Link against an older gcrypt, because libssh tries to access - ;; fields of 'gcry_thread_cbs' that are now private: - ;; src/threads.c:72:26: error: 'struct gcry_thread_cbs' has no member named 'mutex_init' - ("libgcrypt", libgcrypt-1.5))) + ("libgcrypt", libgcrypt))) (synopsis "SSH client library") (description "libssh is a C library implementing the SSHv2 and SSHv1 protocol for -- cgit v1.2.3 From 44fd0994a0eb06a2f2b639f529ca8f64969c8736 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 1 Sep 2015 13:46:35 +0200 Subject: gnu: guile-ssh: Update to 0.8.0. * gnu/packages/ssh.scm (guile-ssh): Update to 0.8.0. [inputs]: Use LIBGCRYPT instead of LIBGCRYPT-1.5. --- gnu/packages/ssh.scm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index 2e74fbda43..61ab96adee 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -176,15 +176,17 @@ (define-public openssh (define-public guile-ssh (package (name "guile-ssh") - (version "0.7.2") + (version "0.8.0") (source (origin + ;; ftp://memory-heap.org/software/guile-ssh/guile-ssh-VERSION.tar.gz + ;; exists, but the server appears to be too slow and unreliable. (method git-fetch) (uri (git-reference (url "https://github.com/artyom-poptsov/libguile-ssh.git") (commit (string-append "v" version)))) (sha256 (base32 - "1wcv10xv7ayrhrg77zyng6flknnlkzhni24nf8x9nic00zha8znk")))) + "1ld2khzylaylhqfsfcvbxs95frvm8pkr7dq40ia1wwn9c349fcdv")))) (build-system gnu-build-system) (arguments '(#:phases (alist-cons-after @@ -223,7 +225,7 @@ (define-public guile-ssh ("which" ,which))) (inputs `(("guile" ,guile-2.0) ("libssh" ,libssh) - ("libgcrypt" ,libgcrypt-1.5))) + ("libgcrypt" ,libgcrypt))) (synopsis "Guile bindings to libssh") (description "Guile-SSH is a library that provides access to the SSH protocol for -- cgit v1.2.3 From 7e7b27d9060420a5dad8e082d71f46c0fea4a7d9 Mon Sep 17 00:00:00 2001 From: Cyril Roelandt Date: Sun, 16 Aug 2015 16:18:09 +0200 Subject: gnu: add python-appdirs. * gnu/packages/python.scm (python-appdirs, python2-appdirs): New variables. --- gnu/packages/python.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 75f285fbed..19dcf5af79 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -4652,3 +4652,31 @@ (define-public python-ly provided that can be used to do various manipulations with LilyPond files.") (home-page "https://pypi.python.org/pypi/python-ly") (license gpl2+))) + +(define-public python-appdirs + (package + (name "python-appdirs") + (version "1.4.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/a/appdirs/appdirs-" + version + ".tar.gz")) + (sha256 + (base32 + "1iddva7v3fq0aqzsahkazxr7vpw28mqcrsy818z4wyiqnkplbhlg")))) + (build-system python-build-system) + (inputs + `(("python-setuptools" ,python-setuptools))) + (home-page "http://github.com/ActiveState/appdirs") + (synopsis + "Determine platform-specific dirs, e.g. a \"user data dir\"") + (description + "This module provides a portable way of finding out where user data +should be stored on various operating systems.") + (license license:expat))) + +(define-public python2-appdirs + (package-with-python2 python-appdirs)) -- cgit v1.2.3 From 7c4810a1e543a66bc7aa53f971e70bf1f9d41b08 Mon Sep 17 00:00:00 2001 From: Cyril Roelandt Date: Sun, 16 Aug 2015 16:31:24 +0200 Subject: gnu: Add python-pbr. * gnu/packages/openstack.scm: New file. * gnu-system.am: Add it. --- gnu-system.am | 1 + gnu/packages/openstack.scm | 68 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 gnu/packages/openstack.scm diff --git a/gnu-system.am b/gnu-system.am index 3e6ee158f0..56dc0849f1 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -239,6 +239,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/onc-rpc.scm \ gnu/packages/openbox.scm \ gnu/packages/openldap.scm \ + gnu/packages/openstack.scm \ gnu/packages/orpheus.scm \ gnu/packages/ots.scm \ gnu/packages/package-management.scm \ diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm new file mode 100644 index 0000000000..98619b12f2 --- /dev/null +++ b/gnu/packages/openstack.scm @@ -0,0 +1,68 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Cyril Roelandt +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages openstack) + #:use-module (gnu packages python) + #:use-module (gnu packages version-control) + #:use-module (guix build-system python) + #:use-module (guix download) + #:use-module ((guix licenses) + #:select (asl2.0)) + #:use-module (guix packages)) + +(define-public python-pbr + (package + (name "python-pbr") + (version "1.2.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/p/pbr/pbr-" + version + ".tar.gz")) + (sha256 + (base32 + "1l2mls8wnwpkqj6hxsphq7xibbbsf40gg37wc30nj4r600zgqhqm")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ;; Most tests seem to use the Internet. + (propagated-inputs + `(("python-testrepository" ,python-testrepository) + ("git" ,git))) ;; pbr actually uses the "git" binary. + (inputs + `(("python-fixtures" ,python-fixtures) + ("python-mimeparse" ,python-mimeparse) + ("python-mock" ,python-mock) + ("python-setuptools" ,python-setuptools) + ("python-six" ,python-six) + ("python-sphinx" ,python-sphinx) + ("python-testrepository" ,python-testrepository) + ("python-testresources" ,python-testresources) + ("python-testscenarios" ,python-testscenarios) + ("python-testtools" ,python-testtools) + ("python-virtualenv" ,python-virtualenv))) + (home-page "https://launchpad.net/pbr") + (synopsis "Change the default behavior of Python’s setuptools") + (description + "Python Build Reasonableness (PBR) is a library that injects some useful +and sensible default behaviors into your setuptools run.") + (license asl2.0))) + +(define-public python2-pbr + (package-with-python2 python-pbr)) -- cgit v1.2.3 From 35f1ebeb2acb06dd920baffc7b3a184b7c45cd15 Mon Sep 17 00:00:00 2001 From: Cyril Roelandt Date: Sun, 16 Aug 2015 16:35:36 +0200 Subject: gnu: Add python-mox3. * gnu/packages/openstack.scm (python-mox3, python2-mox3): New variables. --- gnu/packages/openstack.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm index 98619b12f2..48bc716bc5 100644 --- a/gnu/packages/openstack.scm +++ b/gnu/packages/openstack.scm @@ -25,6 +25,39 @@ (define-module (gnu packages openstack) #:select (asl2.0)) #:use-module (guix packages)) +(define-public python-mox3 + (package + (name "python-mox3") + (version "0.8.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/m/mox3/mox3-" + version + ".tar.gz")) + (sha256 + (base32 + "1dwj9lkifdqvrcympqa47bj55l0n0j9jhzv2gj03h0dpzg6mgfkj")))) + (build-system python-build-system) + (inputs + `(("python-fixtures" ,python-fixtures) + ("python-pbr" ,python-pbr) + ("python-setuptools" ,python-setuptools) + ("python-six" ,python-six) + ("python-testtools" ,python-testtools))) + (home-page "http://www.openstack.org/") + (synopsis "Mock object framework for Python") + (description + "Mox3 is an unofficial port of the Google mox framework +(http://code.google.com/p/pymox/) to Python 3. It was meant to be as compatible +with mox as possible, but small enhancements have been made. The library was +tested on Python version 3.2, 2.7 and 2.6.") + (license asl2.0))) + +(define-public python2-mox3 + (package-with-python2 python-mox3)) + (define-public python-pbr (package (name "python-pbr") -- cgit v1.2.3 From 1edd421ba51e89cbcfa536c65437da24d52ce237 Mon Sep 17 00:00:00 2001 From: Cyril Roelandt Date: Sun, 16 Aug 2015 16:38:06 +0200 Subject: gnu: Add python-os-client-config * gnu/packages/openstack.scm (python-os-client-config, python2-os-client-config): New variables. --- gnu/packages/openstack.scm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm index 48bc716bc5..f3b47ae08c 100644 --- a/gnu/packages/openstack.scm +++ b/gnu/packages/openstack.scm @@ -55,6 +55,45 @@ (define-public python-mox3 tested on Python version 3.2, 2.7 and 2.6.") (license asl2.0))) +(define-public python-os-client-config + (package + (name "python-os-client-config") + (version "1.4.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/o/os-client-config/os-client-config-" + version + ".tar.gz")) + (sha256 + (base32 + "14png6ml3zbbilh8bihav24f8vig9lyijwynnjcvazdxxrzvwq9j")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ;; Circular dependency with python-oslotest + (inputs + `(("python-appdirs" ,python-appdirs) + ("python-fixtures" ,python-fixtures) + ("python-mimeparse" ,python-mimeparse) + ("python-pbr" ,python-pbr) + ("python-pyyaml" ,python-pyyaml) + ("python-testrepository" ,python-testrepository) + ("python-setuptools" ,python-setuptools) + ("python-testscenarios" ,python-testscenarios) + ("python-testtools" ,python-testtools))) + (home-page "http://www.openstack.org/") + (synopsis + "OpenStack Client Configuration Library") + (description + "The OpenStack Client Configuration Library is a library for collecting + client configuration for using an OpenStack cloud in a consistent and + comprehensive manner.") + (license asl2.0))) + +(define-public python2-os-client-config + (package-with-python2 python-os-client-config)) + (define-public python2-mox3 (package-with-python2 python-mox3)) -- cgit v1.2.3 From 2053949a9e7c508ba40ea9000827306cbc912a56 Mon Sep 17 00:00:00 2001 From: Cyril Roelandt Date: Sun, 16 Aug 2015 16:39:57 +0200 Subject: gnu: Add python-oslotest * gnu/packages/openstack.scm (python-oslotest, python2-olsotest): New variables. --- gnu/packages/openstack.scm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm index f3b47ae08c..ddd2f507ac 100644 --- a/gnu/packages/openstack.scm +++ b/gnu/packages/openstack.scm @@ -138,3 +138,42 @@ (define-public python-pbr (define-public python2-pbr (package-with-python2 python-pbr)) + +;; Packages from the Oslo library +(define-public python-oslotest + (package + (name "python-oslotest") + (version "1.8.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/o/oslotest/oslotest-" + version + ".tar.gz")) + (sha256 + (base32 + "175dln2zxjvvh4b23f2hln6zwfy2v5f1blg7mxbwl4r3130zvs2k")))) + (build-system python-build-system) + (propagated-inputs + `(("python-fixtures" ,python-fixtures) + ("python-mock" ,python-mock) + ("python-six" ,python-six))) + (inputs + `(("python-pbr" ,python-pbr) + ("python-mox3" ,python-mox3) + ("python-os-client-config" ,python-os-client-config) + ("python-setuptools" ,python-setuptools) + ("python-subunit" ,python-subunit) + ("python-testrepository" ,python-testrepository) + ("python-testscenarios" ,python-testscenarios) + ("python-testtools" ,python-testtools))) + (home-page "http://launchpad.net/oslo") + (synopsis "Oslo test framework") + (description + "The Oslo Test framework provides common fixtures, support for debugging, +and better support for mocking results.") + (license asl2.0))) + +(define-public python2-oslotest + (package-with-python2 python-oslotest)) -- cgit v1.2.3 From 385a44bebb4a33517165efa2f75ab376c2263db6 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Wed, 19 Aug 2015 21:54:57 -0400 Subject: gnu: Add sassc. * gnu/packages/web.scm (sassc): New variable. --- gnu/packages/web.scm | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 0a68d23da0..94637df2b6 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -663,6 +663,59 @@ (define-public serf ;; bundled CuTest framework uses a different non-copyleft license. (license (list l:asl2.0 (l:non-copyleft "file://test/CuTest-README.txt"))))) +(define-public sassc + ;; libsass must be statically linked and it isn't included in the sassc + ;; release tarballs, hence this odd package recipe. + (let* ((version "3.2.5") + (libsass + (origin + (method url-fetch) + (uri (string-append + "https://github.com/sass/libsass/archive/" + version ".tar.gz")) + (file-name (string-append "libsass-" version ".tar.gz")) + (sha256 + (base32 + "1x25k6p1s1yzsdpzb7bzh8japilmi1mk3z96q66pycbinj9z9is4"))))) + (package + (name "sassc") + (version version) + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/sass/sassc/archive/" + version ".tar.gz")) + (file-name (string-append "sassc-" version ".tar.gz")) + (sha256 + (base32 + "1xf3w75w840rj0nx375rxi7mcv1ngqqq8p3zrzjlyx8jfpnldmv5")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags '("CC=gcc") + #:test-target "test" + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'unpack-libsass-and-set-path + (lambda* (#:key inputs #:allow-other-keys) + (and (zero? (system* "tar" "xvf" (assoc-ref inputs "libsass"))) + (begin + (setenv "SASS_LIBSASS_PATH" + (string-append (getcwd) "/libsass-" ,version)) + #t)))) + (replace 'install ; no install target + (lambda* (#:key outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) + (mkdir-p bin) + (copy-file "bin/sassc" (string-append bin "/sassc")) + #t)))))) + (inputs + `(("libsass" ,libsass))) + (synopsis "CSS pre-processor") + (description "SassC is a compiler written in C for the CSS pre-processor +language known as SASS.") + (home-page "http://sass-lang.com/libsass") + (license l:expat)))) + (define-public perl-apache-logformat-compiler (package -- cgit v1.2.3 From a96524cc7d302ad6a8f2cd2e970a148b360f629a Mon Sep 17 00:00:00 2001 From: David Thompson Date: Tue, 1 Sep 2015 19:57:44 -0400 Subject: import: gem: Fix minor bug and add unit test. * guix/import/gem.scm (make-gem-sexp): Properly handle an empty list of licenses. When rendering a list of licenses, cons 'list onto the front of the expression. * tests/gem.scm: New file. * Makefile.am (SCM_TESTS): Add it. --- Makefile.am | 3 +- guix/import/gem.scm | 3 +- tests/gem.scm | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 tests/gem.scm diff --git a/Makefile.am b/Makefile.am index 711181b7cf..9a810e4ebd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -231,7 +231,8 @@ MODULES += \ SCM_TESTS += \ tests/pypi.scm \ - tests/cpan.scm + tests/cpan.scm \ + tests/gem.scm endif diff --git a/guix/import/gem.scm b/guix/import/gem.scm index 3c28d1d9fd..c64c4e9374 100644 --- a/guix/import/gem.scm +++ b/guix/import/gem.scm @@ -105,8 +105,9 @@ (define (make-gem-sexp name version hash home-page description (description ,description) (home-page ,home-page) (license ,(match licenses + (() #f) ((license) (license->symbol license)) - (_ (map license->symbol licenses)))))) + (_ `(list ,@(map license->symbol licenses))))))) (define* (gem->guix-package package-name #:optional version) "Fetch the metadata for PACKAGE-NAME from rubygems.org, and return the diff --git a/tests/gem.scm b/tests/gem.scm new file mode 100644 index 0000000000..9efbda31fe --- /dev/null +++ b/tests/gem.scm @@ -0,0 +1,82 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 David Thompson +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (test-gem) + #:use-module (guix import gem) + #:use-module (guix base32) + #:use-module (guix hash) + #:use-module (guix tests) + #:use-module ((guix build utils) #:select (delete-file-recursively)) + #:use-module (srfi srfi-64) + #:use-module (ice-9 match)) + +(define test-json + "{ + \"name\": \"foo\", + \"version\": \"1.0.0\", + \"sha\": \"f3676eafca9987cb5fe263df1edf2538bf6dafc712b30e17be3543a9680547a8\", + \"info\": \"A cool gem\", + \"homepage_uri\": \"https://example.com\", + \"dependencies\": { + \"runtime\": [ + { \"name\": \"bundler\" }, + { \"name\": \"bar\" } + ] + }, + \"licenses\": [\"MIT\", \"Apache 2.0\"] +}") + +(test-begin "gem") + +(test-assert "gem->guix-package" + ;; Replace network resources with sample data. + (mock ((guix import utils) url-fetch + (lambda (url file-name) + (match url + ("https://rubygems.org/api/v1/gems/foo.json" + (with-output-to-file file-name + (lambda () + (display test-json)))) + (_ (error "Unexpected URL: " url))))) + (match (gem->guix-package "foo") + (('package + ('name "ruby-foo") + ('version "1.0.0") + ('source ('origin + ('method 'url-fetch) + ('uri ('rubygems-uri "foo" 'version)) + ('sha256 + ('base32 + "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk")))) + ('build-system 'ruby-build-system) + ('propagated-inputs + ('quasiquote + (("bundler" ('unquote 'bundler)) + ("ruby-bar" ('unquote 'ruby-bar))))) + ('synopsis "A cool gem") + ('description "A cool gem") + ('home-page "https://example.com") + ('license ('list 'expat 'asl2.0))) + #t) + (x + (pk 'fail x #f))))) + +(test-end "gem") + + +(exit (= (test-runner-fail-count (test-runner-current)) 0)) -- cgit v1.2.3 From dee38b7b41a7415ac3e43757635f0964508db250 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sun, 30 Aug 2015 19:40:17 +0200 Subject: guix: Add GUST font license 1.0. * guix/licenses.scm (gfl1.0): New variable. --- guix/licenses.scm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/guix/licenses.scm b/guix/licenses.scm index dae0e3d386..024f0c294c 100644 --- a/guix/licenses.scm +++ b/guix/licenses.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2013, 2015 Andreas Enge ;;; Copyright © 2012, 2013 Nikita Karetnikov ;;; Copyright © 2015 Mark H Weaver +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -38,6 +39,7 @@ (define-module (guix licenses) expat freetype gpl1 gpl1+ gpl2 gpl2+ gpl3 gpl3+ + gfl1.0 fdl1.3+ opl1.0+ isc @@ -211,6 +213,13 @@ (define gpl3+ "https://www.gnu.org/licenses/gpl.html" "https://www.gnu.org/licenses/license-list#GNUGPLv3")) +;; The “GUST font license” is legally equivalent to LPPL v1.3c as it only +;; extends the LPPL with an optional request. +(define gfl1.0 + (license "GUST font license 1.0" + "http://www.gust.org.pl/projects/e-foundry/licenses/GUST-FONT-LICENSE.txt" + "https://www.gnu.org/licenses/license-list#LPPL-1.3a")) + (define fdl1.3+ (license "FDL 1.3+" "https://www.gnu.org/licenses/fdl.html" -- cgit v1.2.3 From 3f88152d253cd5c232d46ba2eb73aa3096cfe5d9 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sun, 30 Aug 2015 19:52:55 +0200 Subject: gnu: Add TeX Gyre fonts. * gnu/packages/fonts.scm (font-tex-gyre): New variable. --- gnu/packages/fonts.scm | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index 62d44ec26b..a78995c804 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2014 Alex Kost ;;; Copyright © 2015 Sou Bunnbu ;;; Copyright © 2015 Eric Dvorsak +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -486,3 +487,40 @@ (define-public font-wqy-zenhei ko (Korean) locales for fontconfig.") ;; GPLv2 with font embedding exception (license license:gpl2))) + +(define-public font-tex-gyre + (package + (name "font-tex-gyre") + (version "2.005") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.gust.org.pl/projects/e-foundry/" + "tex-gyre/whole/tg-" version "otf.zip")) + (sha256 + (base32 + "0kph9l3g7jb2bpmxdbdg5zl56wacmnvdvsdn7is1gc750sqvsn31")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + + (let ((unzip (string-append (assoc-ref %build-inputs "unzip") + "/bin/unzip")) + (font-dir (string-append %output "/share/fonts/opentype"))) + (mkdir-p font-dir) + (system* unzip + (assoc-ref %build-inputs "source") + "-d" font-dir))))) + (native-inputs + `(("unzip" ,unzip))) + (home-page "http://www.gust.org.pl/projects/e-foundry/tex-gyre/") + (synopsis "Remake of Ghostscript fonts") + (description "The TeX Gyre collection of fonts is the result of an +extensive remake and extension of the freely available base PostScript fonts +distributed with Ghostscript version 4.00. The collection contains the +following fonts in the OpenType format: Adventor, Bonum, Chorus, Cursor, +Heros, Pagella, Schola, Termes.") + (license license:gfl1.0))) -- cgit v1.2.3 From 97f70018b04d5e91133fd88577612397b5f8e350 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 08:46:12 +0200 Subject: gnu: Add po4a. * gnu/packages/gettext.scm (po4a): New variable. --- gnu/packages/gettext.scm | 63 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm index 6be3093bd6..f1b0221629 100644 --- a/gnu/packages/gettext.scm +++ b/gnu/packages/gettext.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012 Nikita Karetnikov ;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,11 +19,15 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages gettext) - #:use-module ((guix licenses) #:select (gpl3+)) + #:use-module ((guix licenses) #:select (gpl2+ gpl3+)) #:use-module (gnu packages) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) + #:use-module (guix build-system perl) + #:use-module (gnu packages docbook) + #:use-module (gnu packages perl) + #:use-module (gnu packages texlive) #:use-module (gnu packages xml)) ;; Use that name to avoid clashes with Guile's 'gettext' procedure. @@ -91,3 +96,59 @@ (define-public gnu-gettext with them, and a runtime library to load translated messages from the catalogs. Nearly all GNU packages use Gettext.") (license gpl3+))) ;some files are under GPLv2+ + +(define-public po4a + (package + (name "po4a") + (version "0.47") + (source (origin + (method url-fetch) + (uri (string-append "https://alioth.debian.org/frs/download.php" + "/file/4142/po4a-" version ".tar.gz")) + (sha256 + (base32 + "01vm0750aq0h2lphrflv3wq9gz7y0py8frglfpacn58ivyvy242h")))) + (build-system perl-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; FIXME: One test fails as we don't have SGMLS.pm + (add-before 'check 'disable-sgml-test + (lambda _ + (delete-file "t/20-sgml.t") + #t)) + (add-after 'unpack 'fix-builder + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "Po4aBuilder.pm" + ;; By default it tries to install into perl's manpath. + (("my \\$mandir = .*$") + (string-append "my $mandir = \"" (assoc-ref outputs "out") + "/share/man\";\n"))) + #t)) + (add-after 'install 'wrap-programs + (lambda* (#:key outputs #:allow-other-keys) + ;; Make sure all executables in "bin" find the Perl modules + ;; provided by this package at runtime. + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin/")) + (path (string-append out "/lib/perl5/site_perl"))) + (for-each (lambda (file) + (wrap-program file + `("PERL5LIB" ":" prefix (,path)))) + (find-files bin "\\.*$")) + #t)))))) + (native-inputs + `(("gettext" ,gnu-gettext) + ("perl-module-build" ,perl-module-build) + ("docbook-xsl" ,docbook-xsl) + ("docbook-xml" ,docbook-xml) ;for tests + ("texlive-bin" ,texlive-bin) ;for tests + ("libxml2" ,libxml2) + ("xsltproc" ,libxslt))) + (home-page "http://po4a.alioth.debian.org/") + (synopsis "Scripts to ease maintenance of translations") + (description + "The po4a (PO for anything) project goal is to ease translations (and +more interestingly, the maintenance of translations) using gettext tools on +areas where they were not expected like documentation.") + (license gpl2+))) -- cgit v1.2.3 From 95283f3feedfade69d04fca92aff31ca0bfdc7a5 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 08:47:09 +0200 Subject: gnu: Add gerbv. * gnu/packages/engineering.scm (gerbv): New variable. --- gnu/packages/engineering.scm | 48 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index 7faf61e3c8..1e245a8b5e 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -28,6 +28,7 @@ (define-module (gnu packages engineering) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system gnu) #:use-module (gnu packages) + #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages bison) #:use-module (gnu packages boost) @@ -35,6 +36,7 @@ (define-module (gnu packages engineering) #:use-module (gnu packages flex) #:use-module (gnu packages fontutils) #:use-module (gnu packages gd) + #:use-module (gnu packages gettext) #:use-module (gnu packages ghostscript) #:use-module (gnu packages gl) #:use-module (gnu packages glib) @@ -364,3 +366,49 @@ (define-public fasthenry "Fasthenry is an inductance extraction program based on a multipole-accelerated algorithm.") (license (license:non-copyleft #f "See induct.c.")))) + +(define-public gerbv + (package + (name "gerbv") + (version "2.6.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/gerbv/gerbv/gerbv-" + version "/gerbv-" version ".tar.gz")) + (sha256 + (base32 + "0v6ry0mxi5qym4z0y0lpblxsw9dfjpgxs4c4v2ngg7yw4b3a59ks")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'configure 'autoconf + (lambda _ + ;; Build rules contain references to Russian translation, but the + ;; needed files are missing; see + ;; http://sourceforge.net/p/gerbv/bugs/174/ + (delete-file "po/LINGUAS") + (substitute* "man/Makefile.am" + (("PO_FILES= gerbv.ru.1.in.po") "") + (("man_MANS = gerbv.1 gerbv.ru.1") "man_MANS = gerbv.1")) + (zero? (system* "autoreconf" "-vfi"))))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("gettext" ,gnu-gettext) + ("po4a" ,po4a) + ("pkg-config" ,pkg-config))) + (inputs + `(("cairo" ,cairo) + ("gtk" ,gtk+-2) + ("desktop-file-utils" ,desktop-file-utils))) + (home-page "http://gerbv.geda-project.org/") + (synopsis "Gerber file viewer") + (description + "Gerbv is a viewer for files in the Gerber format (RS-274X only), which +is commonly used to represent printed circuit board (PCB) layouts. Gerbv lets +you load several files on top of each other, do measurements on the displayed +image, etc. Besides viewing Gerbers, you may also view Excellon drill files +as well as pick-place files.") + (license license:gpl2+))) -- cgit v1.2.3 From 96f8d991ecd21a5449289286157e0850c8aac081 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 17:33:56 +0200 Subject: gnu: Add minixml. * gnu/packages/xml.scm (minixml): New variable. --- gnu/packages/xml.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index 2bce636f1c..ddb73143a1 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -467,3 +467,25 @@ (define-public xmlsec Libxml2).") (license (license:x11-style "file://COPYING" "See 'COPYING' in the distribution.")))) + +(define-public minixml + (package + (name "minixml") + (version "2.9") + (source (origin + (method url-fetch) + (uri (string-append "http://www.msweet.org/files/project3/mxml-" + version ".tar.gz")) + (sha256 + (base32 + "14pzhlfidj5v1qbxy7a59yn4jz9pnjrs2zwalz228jsq7ijm9vfd")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f)) ;no "check" target + (home-page "http://www.minixml.org/") + (synopsis "Small XML parsing library") + (description + "Mini-XML is a small C library to read and write XML files and strings in +UTF-8 and UTF-16 encoding.") + ;; LGPL 2.0+ with additional exceptions for static linking + (license license:lgpl2.0+))) -- cgit v1.2.3 From ddfddb0c45c1bf937663e15af641e6501b49d33f Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 17:34:28 +0200 Subject: gnu: Add ZynAddSubFX. * gnu/packages/music.scm (zynaddsubfx): New variable. --- gnu/packages/music.scm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 0950831d8c..05a490574b 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -27,6 +27,7 @@ (define-module (gnu packages music) #:use-module (guix build-system python) #:use-module (guix build-system waf) #:use-module (gnu packages) + #:use-module (gnu packages algebra) #:use-module (gnu packages audio) #:use-module (gnu packages autotools) #:use-module (gnu packages base) ;libbdf @@ -68,6 +69,7 @@ (define-module (gnu packages music) #:use-module (gnu packages texlive) #:use-module (gnu packages web) #:use-module (gnu packages xml) + #:use-module (gnu packages xorg) #:use-module (gnu packages xiph) #:use-module (gnu packages zip) #:use-module ((srfi srfi-1) #:select (last))) @@ -679,3 +681,35 @@ (define-public frescobaldi ABC files, has a MIDI player for proof-listening, and includes a documentation browser.") (license license:gpl2+))) + +(define-public zynaddsubfx + (package + (name "zynaddsubfx") + (version "2.5.1") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/zynaddsubfx/zynaddsubfx/" + version "/zynaddsubfx-" version ".tar.gz")) + (sha256 + (base32 + "01c4v5lbzard6y00cjq3b6a50cafqwfwibzng9gdsajczhnbkqz2")))) + (build-system cmake-build-system) + (inputs + `(("liblo" ,liblo) + ("ntk" ,ntk) + ("alsa-lib" ,alsa-lib) + ("jack" ,jack-1) + ("fftw" ,fftw) + ("minixml" ,minixml) + ("libxpm" ,libxpm) + ("zlib" ,zlib))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://zynaddsubfx.sf.net/") + (synopsis "Software synthesizer") + (description + "ZynAddSubFX is a feature heavy realtime software synthesizer. It offers +three synthesizer engines, multitimbral and polyphonic synths, microtonal +capabilities, custom envelopes, effects, etc.") + (license license:gpl2))) -- cgit v1.2.3 From 26ecc2a780e3129aa3ebd7b130f1f8f17c57b4a4 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 2 Sep 2015 09:48:37 +0200 Subject: gnu: Add missing patch for Guile-Present. This patch should have been added in cdd383e. * gnu/packages/patches/guile-present-coding.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + gnu/packages/patches/guile-present-coding.patch | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 gnu/packages/patches/guile-present-coding.patch diff --git a/gnu-system.am b/gnu-system.am index 56dc0849f1..4acbb51aad 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -487,6 +487,7 @@ dist_patch_DATA = \ gnu/packages/patches/guile-arm-fixes.patch \ gnu/packages/patches/guile-default-utf8.patch \ gnu/packages/patches/guile-linux-syscalls.patch \ + gnu/packages/patches/guile-present-coding.patch \ gnu/packages/patches/guile-relocatable.patch \ gnu/packages/patches/guile-rsvg-pkgconfig.patch \ gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \ diff --git a/gnu/packages/patches/guile-present-coding.patch b/gnu/packages/patches/guile-present-coding.patch new file mode 100644 index 0000000000..0655726158 --- /dev/null +++ b/gnu/packages/patches/guile-present-coding.patch @@ -0,0 +1,16 @@ +The tests/org-mode.scm tests expects 'jpl-outline-es' to be read as UTF-8. + +--- guile-present-0.3.0/tests/org-mode.scm 2014-09-23 22:29:51.426705753 +0200 ++++ guile-present-0.3.0/tests/org-mode.scm 2014-09-23 22:30:09.634705548 +0200 +@@ -194,9 +194,10 @@ + "(Just another hacker)" + "wingo@fluendo.com") + (p "Julien Moutte, CEO" "julien@fluendo.com"))) ++ (with-fluids ((%default-port-encoding "UTF-8")) + (call-with-input-file + (in-vicinity *top-srcdir* "tests/jpl-outline-es") +- org->presentation))) ++ org->presentation)))) + + (setlocale LC_ALL "") + (exit-with-summary (run-all-defined-test-cases)) -- cgit v1.2.3 From f85ccf88efbe1250e472e95cce7130c8403d4f3c Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 27 Aug 2015 14:05:10 +0200 Subject: gnu: Add perl-czplib. * gnu/packages/perl.scm (perl-czplib): New variable. --- gnu/packages/perl.scm | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index f784798bd3..c528516c15 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1051,6 +1051,46 @@ (define-public perl-crypt-randpasswd Password Generator\".") (license (package-license perl)))) +(define-public perl-czplib + (package + (name "perl-czplib") + (version "1.0.5") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/czplib/czplib.v" + version ".tgz")) + (sha256 + (base32 + "12kln8l5h406r1ss6zbazgcshmys9nvabkrhvk2zwrrgl1saq1kf")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Remove .git directory + (delete-file-recursively ".git") + #t)))) + (build-system perl-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (replace + 'install + (lambda* (#:key outputs #:allow-other-keys) + (copy-recursively "." + (string-append (assoc-ref outputs "out") + "/plib/perl5/site_perl/" + ,(package-version perl) + "/czplib/")) + #t))))) + (home-page "http://sourceforge.net/projects/czplib/") + (synopsis "Library for genomic analysis") + (description "Chaolin Zhang's Perl Library (czplib) contains assorted +functions and data structures for processing and analysing genomic and +bioinformatics data.") + (license gpl3+))) + (define-public perl-data-dump (package (name "perl-data-dump") -- cgit v1.2.3 From 1921b1de0733eeb20c6255b04ac0c05325073ec8 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 17:22:19 +0200 Subject: gnu: Add deeptools. * gnu/packages/bioinformatics.scm (deeptools): New variable. --- gnu/packages/bioinformatics.scm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index d7e4da6fe8..03eb2dfe30 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -875,6 +875,45 @@ (define-public cutadapt other types of unwanted sequence from high-throughput sequencing reads.") (license license:expat))) +(define-public deeptools + (package + (name "deeptools") + (version "1.5.11") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/fidelram/deepTools/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1kaagygcbvjs9sxd9cqmskd02wcfp9imvb735r087w7hwqpvz6fs")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2)) + (propagated-inputs + `(("python-scipy" ,python2-scipy) + ("python-numpy" ,python2-numpy) + ("python-matplotlib" ,python2-matplotlib) + ("python-bx-python" ,python2-bx-python) + ("python-pysam" ,python2-pysam))) + (native-inputs + `(("python-mock" ,python2-mock) ;for tests + ("python-pytz" ,python2-pytz) ;for tests + ("python-setuptools" ,python2-setuptools))) + (home-page "https://github.com/fidelram/deepTools") + (synopsis "Tools for normalizing and visualizing deep-sequencing data") + (description + "DeepTools addresses the challenge of handling the large amounts of data +that are now routinely generated from DNA sequencing centers. To do so, +deepTools contains useful modules to process the mapped reads data to create +coverage files in standard bedGraph and bigWig file formats. By doing so, +deepTools allows the creation of normalized coverage files or the comparison +between two files (for example, treatment and control). Finally, using such +normalized and standardized files, multiple visualizations can be created to +identify enrichments with functional annotations of the genome.") + (license license:gpl3+))) + (define-public diamond (package (name "diamond") -- cgit v1.2.3 From 75beb7e178a008156d9a478c0c9531852c789b31 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sun, 30 Aug 2015 21:07:51 +0800 Subject: gnu: libxfce4ui: Build with GTK+ 3 support. * gnu/packages/xfce.scm (libxfce4ui)[propagated-inputs]: Add gtk+. --- gnu/packages/xfce.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index 2cbdeef794..992ffeae79 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -146,8 +146,9 @@ (define-public libxfce4ui `(("pkg-config" ,pkg-config) ("intltool" ,intltool))) (propagated-inputs - ;; libxfce4kbd-private-2.pc refers to all these. - `(("gtk+" ,gtk+-2) + `(("gtk+-2" ,gtk+-2) ; required by libxfce4ui-1.pc + ("gtk+-3" ,gtk+) ; required by libxfce4ui-2.pc + ;; libxfce4kbd-private-2.pc refers to all these. ("libxfce4util" ,libxfce4util) ("xfconf" ,xfconf))) (inputs `(("libsm" ,libsm) -- cgit v1.2.3 From 7ee2005ede4ca38b8dcc40f4b11ad716a965aec5 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sun, 30 Aug 2015 21:11:31 +0800 Subject: gnu: xfce4-panel: Build with GTK+ 3 support. * gnu/packages/xfce.scm (xfce4-panel)[arguments]: New field. --- gnu/packages/xfce.scm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index 992ffeae79..bc6d47a92a 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -268,6 +268,8 @@ (define-public xfce4-panel "1c4p3ckghvsad1sj5v8wmar5mh9cbhail9mmhad2f9pwwb10z4ih")) (patches (list (search-patch "xfce4-panel-plugins.patch"))))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--enable-gtk3"))) (native-inputs `(("pkg-config" ,pkg-config) ("intltool" ,intltool))) -- cgit v1.2.3 From 0f0c586a076208be53eff3c70f8ce42bca17a614 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sun, 30 Aug 2015 21:17:43 +0800 Subject: gnu: Add xfce4-pulseaudio-plugin. * gnu/packages/xfce.scm (xfce4-pulseaudio-plugin): New variable. --- gnu/packages/xfce.scm | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index bc6d47a92a..bdb5235880 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -38,7 +38,8 @@ (define-module (gnu packages xfce) #:use-module (gnu packages gstreamer) #:use-module (gnu packages linux) #:use-module (gnu packages photo) - #:use-module (gnu packages pcre)) + #:use-module (gnu packages pcre) + #:use-module (gnu packages pulseaudio)) (define-public gtk-xfce-engine (package @@ -352,6 +353,37 @@ (define-public xfce4-clipman-plugin matching them against regular expressions.") (license (list gpl2+)))) +(define-public xfce4-pulseaudio-plugin + (package + (name "xfce4-pulseaudio-plugin") + (version "0.2.3") + (source (origin + (method url-fetch) + (uri (string-append "http://archive.xfce.org/src/panel-plugins/" + name "/" (version-major+minor version) "/" + name "-" version ".tar.bz2")) + (sha256 + (base32 + "0crvb2gyxbnlf46712arg3m2vqx81dixqhqdwss0bngpijy3ca78")))) + (build-system gnu-build-system) + (native-inputs + `(("intltool" ,intltool) + ("pkg-config" ,pkg-config))) + (inputs + `(("exo" ,exo) + ("libnotify" ,libnotify) + ("libxfce4ui" ,libxfce4ui) + ("pulseaudio" ,pulseaudio) + ("xfce4-panel" ,xfce4-panel))) + (home-page "http://git.xfce.org/panel-plugins/xfce4-pulseaudio-plugin/") + (synopsis "PulseAudio panel plugin for Xfce") + (description + "Xfce PulseAudio plugin is a plugin for the Xfce panel which provides a +convenient way to adjust the audio volume of the PulseAudio sound system and +to an auto mixer tool like pavucontrol. It can optionally handle multimedia +keys for controlling the audio volume.") + (license gpl2+))) + (define-public xfce4-appfinder (package (name "xfce4-appfinder") -- cgit v1.2.3 From 35557712679ceb2c5187795b6c1108adfe45fa5c Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sun, 30 Aug 2015 21:53:29 +0800 Subject: gnu: xfce: Add xfce4-pulseaudio-plugin. * gnu/packages/xfce.scm (xfce)[propagated-inputs]: Add xfce4-pulseaudio-plugin. --- gnu/packages/xfce.scm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index bdb5235880..a9ceb5bdd8 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -666,15 +666,17 @@ (define-public xfce ("thunar-volman" ,thunar-volman) ("tumlber" ,tumbler) ("xfce4-appfinder" ,xfce4-appfinder) - ("xfce4-battery-plugin" ,xfce4-battery-plugin) - ("xfce4-clipman-plugin" ,xfce4-clipman-plugin) ("xfce4-panel" ,xfce4-panel) ("xfce4-session" ,xfce4-session) ("xfce4-settings" ,xfce4-settings) ("xfce4-terminal" ,xfce4-terminal) ("xfconf" ,xfconf) ("xfdesktop" ,xfdesktop) - ("xfwm4" ,xfwm4))) + ("xfwm4" ,xfwm4) + ;; Panel plugins. + ("xfce4-battery-plugin" ,xfce4-battery-plugin) + ("xfce4-clipman-plugin" ,xfce4-clipman-plugin) + ("xfce4-pulseaudio-plugin" ,xfce4-pulseaudio-plugin))) (home-page "http://www.xfce.org/") (synopsis "Desktop environment (meta-package)") (description -- cgit v1.2.3 From d1f80aa401a331072f5c4b837d81c659fe6b5fd1 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Tue, 1 Sep 2015 13:10:41 +0300 Subject: emacs: Use "r" key for 'cran' action in 'import' popup. * emacs/guix-command.el (guix-command-improve-import-argument): New variable and function. (guix-command-argument-improvers): Add it. --- emacs/guix-command.el | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/emacs/guix-command.el b/emacs/guix-command.el index 3513300576..81f619f434 100644 --- a/emacs/guix-command.el +++ b/emacs/guix-command.el @@ -208,6 +208,10 @@ to be modified." guix-command-improve-graph-argument '(("--type" :fun guix-read-graph-type))) +(guix-command-define-argument-improver + guix-command-improve-import-argument + '(("cran" :char ?r))) + (guix-command-define-argument-improver guix-command-improve-import-elpa-argument '(("--archive" :fun guix-read-elpa-archive))) @@ -275,6 +279,8 @@ to be modified." guix-command-improve-gc-argument) (("graph") guix-command-improve-graph-argument) + (("import") + guix-command-improve-import-argument) (("import" "gnu") guix-command-improve-key-policy-argument) (("import" "elpa") -- cgit v1.2.3 From 0b928076c748789f62e0761e8f01f5090c34a8af Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Tue, 1 Sep 2015 21:18:44 +0300 Subject: gnu: emacs-flycheck: Use the upstream release instead of MELPA. * gnu/packages/emacs.scm (flycheck): Change version to 0.23. Replace MELPA tarball with the upstream release. --- gnu/packages/emacs.scm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 57d45c22b3..594e842008 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -537,14 +537,15 @@ (define-public let-alist (define-public flycheck (package (name "emacs-flycheck") - (version "20150831.1343") + (version "0.23") (source (origin (method url-fetch) - (uri (string-append "http://melpa.org/packages/flycheck-" - version ".tar")) + (uri (string-append + "https://github.com/flycheck/flycheck/releases/download/" + version "/flycheck-" version ".tar")) (sha256 (base32 - "0a0iyvki62rqi24dbrcdq3i1wdygdi350gcjsfrfr6fz8fasz42l")))) + "1n2cifzsl5dbv42l82bi3y1vk6q33msi8dd4bj7b9nvnl9jfjj5b")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-dash" ,emacs-dash) -- cgit v1.2.3 From 89b2e0b0b846d985d76553a3759a0bd7f77a583f Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Tue, 1 Sep 2015 17:33:51 -0400 Subject: gnu: Add python-llfuse. * gnu/packages/python.scm (python-llfuse, python2-llfuse): New variables. Signed-off-by: Alex Kost --- gnu/packages/python.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 19dcf5af79..68bcbf5c34 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -10,6 +10,7 @@ ;;; Copyright © 2015 Ricardo Wurmus ;;; Copyright © 2015 Christopher Allan Webber ;;; Copyright © 2015 Eric Dvorsak +;;; Copyright © 2015 Leo Famulari ;;; ;;; This file is part of GNU Guix. ;;; @@ -33,6 +34,7 @@ (define-module (gnu packages python) isc psfl public-domain x11-style)) #:use-module ((guix licenses) #:select (expat zlib) #:prefix license:) #:use-module (gnu packages) + #:use-module (gnu packages attr) #:use-module (gnu packages compression) #:use-module (gnu packages databases) #:use-module (gnu packages fontutils) @@ -45,6 +47,7 @@ (define-module (gnu packages python) #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) #:use-module (gnu packages libffi) + #:use-module (gnu packages linux) #:use-module (gnu packages maths) #:use-module (gnu packages multiprecision) #:use-module (gnu packages networking) @@ -4680,3 +4683,33 @@ (define-public python-appdirs (define-public python2-appdirs (package-with-python2 python-appdirs)) + +(define-public python-llfuse + (package + (name "python-llfuse") + (version "0.41") + (source (origin + (method url-fetch) + (uri (string-append + "https://bitbucket.org/nikratio/python-llfuse/downloads/" + "llfuse-" version ".tar.bz2")) + (sha256 + (base32 + "0yzy8ixpmxk00kdq6lx5vvwbs0n6s59qnja5q0js2ahbqyxiz2hb")))) + (build-system python-build-system) + (inputs + `(("fuse" ,fuse) + ("attr" ,attr))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("python-setuptools" ,python-setuptools))) + (synopsis "Python bindings for FUSE") + (description + "Python-LLFUSE is a set of Python bindings for the low level FUSE API.") + (home-page "https://bitbucket.org/nikratio/python-llfuse/") + ;; Python-LLFUSE includes underscore.js, which is MIT (expat) licensed. + ;; The rest of the package is licensed under LGPL2.0 or later. + (license (list license:expat lgpl2.0+)))) + +(define-public python2-llfuse + (package-with-python2 python-llfuse)) -- cgit v1.2.3 From 641c9871a5b903ea4cf3fbfa127a5bf2c8372542 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Tue, 1 Sep 2015 17:33:52 -0400 Subject: gnu: Add python-msgpack. * gnu/packages/python.scm (python-msgpack, python2-msgpack): New variables. Signed-off-by: Alex Kost --- gnu/packages/python.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 68bcbf5c34..313c6251c6 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -4713,3 +4713,28 @@ (define-public python-llfuse (define-public python2-llfuse (package-with-python2 python-llfuse)) + +(define-public python-msgpack + (package + (name "python-msgpack") + (version "0.4.6") + (source (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/m/" + "msgpack-python/msgpack-python-" version ".tar.gz")) + (sha256 + (base32 + "1527c76b6fn4zzkgfq5xvhh7x9a9686g7fjiz717rw5vklf5ik5z")))) + (build-system python-build-system) + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (synopsis "MessagePack (de)serializer") + (description "MessagePack is a fast, compact binary serialization format, +suitable for similar data to JSON. This package provides CPython bindings for +reading and writing MessagePack data.") + (home-page "https://pypi.python.org/pypi/msgpack-python/") + (license asl2.0))) + +(define-public python2-msgpack + (package-with-python2 python-msgpack)) -- cgit v1.2.3 From 0c14675075943dd1cb659954eb87292d8786873d Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Tue, 1 Sep 2015 17:33:53 -0400 Subject: gnu: Add attic. * gnu/packages/backup.scm (attic): New variable. Signed-off-by: Alex Kost --- gnu/packages/backup.scm | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index 3c703ecb76..84d27c08a6 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015 Eric Bavier ;;; Copyright © 2014 Ian Denhardt +;;; Copyright © 2015 Leo Famulari ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,6 +27,7 @@ (define-module (gnu packages backup) #:use-module (guix build-system gnu) #:use-module (guix build-system python) #:use-module (gnu packages) + #:use-module (gnu packages acl) #:use-module (gnu packages base) #:use-module (gnu packages compression) #:use-module (gnu packages dejagnu) @@ -35,11 +37,11 @@ (define-module (gnu packages backup) #:use-module (gnu packages mcrypt) #:use-module (gnu packages nettle) #:use-module (gnu packages pcre) - #:use-module (gnu packages python) - #:use-module (gnu packages linux) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) #:use-module (gnu packages rsync) #:use-module (gnu packages ssh) + #:use-module (gnu packages tls) #:use-module (gnu packages xml)) (define-public duplicity @@ -316,3 +318,37 @@ (define-public rdiff-backup to a remote location, and only the differences will be transmitted. Finally, rdiff-backup is easy to use and settings have sensible defaults.") (license license:gpl2+))) + +(define-public attic + (package + (name "attic") + (version "0.16") + (source (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/A/Attic/Attic-" + version ".tar.gz")) + (sha256 + (base32 + "0b5skd36r4c0915lwpkqg5hxm49gls9pprs1b7hc40910wlcsl36")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before + 'build 'set-openssl-prefix + (lambda* (#:key inputs #:allow-other-keys) + (setenv "ATTIC_OPENSSL_PREFIX" (assoc-ref inputs "openssl")) + #t))))) + (inputs + `(("acl" ,acl) + ("openssl" ,openssl) + ("python-llfuse" ,python-llfuse) + ("python-msgpack" ,python-msgpack))) + (synopsis "Deduplicating backup program") + (description "Attic is a deduplicating backup program. The main goal of +Attic is to provide an efficient and secure way to backup data. The data +deduplication technique used makes Attic suitable for daily backups since only +changes are stored.") + (home-page "https://attic-backup.org/") + (license license:bsd-3))) -- cgit v1.2.3 From 5c91962afe1bc765571d6a6c924eab4f60ddcea9 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Tue, 18 Aug 2015 10:05:24 +0200 Subject: gnu: elogind: Update to version 219.12. * gnu/packages/freedesktop.scm (elogind): Update to 219.12. Use a tarball instead of a git checkout. --- gnu/packages/freedesktop.scm | 104 ++++++++++++++++++++----------------------- 1 file changed, 48 insertions(+), 56 deletions(-) diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index d47766835f..c085fe5770 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -41,6 +41,7 @@ (define-module (gnu packages freedesktop) #:use-module (gnu packages xdisorg) #:use-module (gnu packages xorg) #:use-module (gnu packages boost) + #:use-module (gnu packages m4) #:use-module (gnu packages compression) #:use-module (gnu packages doxygen) #:use-module (gnu packages libffi) @@ -130,65 +131,56 @@ (define-public libxdg-basedir (license license:expat))) (define-public elogind - (let ((commit "14405a9")) - (package - (name "elogind") - (version (string-append "219." commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "http://git.elephly.net/software/elogind.git") - (commit commit))) - (sha256 - (base32 - "1wz5lxj95qg64x2q5hf4zcb35hpxlw3wfswx6sb2srvsg50y3y72")) - (file-name (string-append name "-checkout-" commit)) - (modules '((guix build utils))) - (snippet - '(begin - (use-modules (guix build utils)) - (substitute* "Makefile.am" - ;; Avoid validation against DTD because the DTDs for - ;; both doctype 4.2 and 4.5 are needed. - (("XSLTPROC_FLAGS = ") "XSLTPROC_FLAGS = --novalid")))))) - (build-system gnu-build-system) - (arguments - `(#:configure-flags - (list - ;; pam_elogind fails because of bus-error.c hackery - "--disable-pam" - (string-append "--with-rootprefix=" (assoc-ref %outputs "out"))) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'autogen - (lambda _ - (and (zero? (system* "intltoolize" "--force" "--automake")) - (zero? (system* "autoreconf" "-vif")))))))) - (native-inputs - `(("intltool" ,intltool) - ("gettext" ,gnu-gettext) - ("docbook-xsl" ,docbook-xsl) - ("docbook-xml" ,docbook-xml) - ("xsltproc" ,libxslt) - ("libxml2" ,libxml2) ;for XML_CATALOG_FILES - ("pkg-config", pkg-config) - ("autoconf" ,autoconf) - ("automake" ,automake) - ("libtool" ,libtool) - ("gperf" ,gperf))) - (inputs - `(("linux-pam" ,linux-pam) - ("linux-libre-headers" ,linux-libre-headers) - ("libcap" ,libcap) - ("dbus" ,dbus) - ("eudev" ,eudev))) - (home-page "https://github.com/andywingo/elogind") - (synopsis "User, seat, and session management service") - (description "Elogind is the systemd project's \"logind\" service, + (package + (name "elogind") + (version "219.12") + (source (origin + (method url-fetch) + (uri (string-append "https://wingolog.org/pub/" name "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "13qc4f0dl7ynnfp1y565z2k0jjizly5w3dqhiqkdk7v6jr4pksb7")) + (modules '((guix build utils))) + (snippet + '(begin + (use-modules (guix build utils)) + (substitute* "Makefile.am" + ;; Avoid validation against DTD because the DTDs for + ;; both doctype 4.2 and 4.5 are needed. + (("XSLTPROC_FLAGS = ") "XSLTPROC_FLAGS = --novalid")))))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list (string-append "--with-libcap=" + (assoc-ref %build-inputs "libcap")) + (string-append "--with-udevrulesdir=" + (assoc-ref %outputs "out") + "/lib/udev/rules.d")) + #:make-flags '("PKTTYAGENT=/run/current-system/profile/bin/pkttyagent"))) + (native-inputs + `(("intltool" ,intltool) + ("gettext" ,gnu-gettext) + ("docbook-xsl" ,docbook-xsl) + ("docbook-xml" ,docbook-xml) + ("xsltproc" ,libxslt) + ("m4" ,m4) + ("libxml2" ,libxml2) ;for XML_CATALOG_FILES + ("pkg-config", pkg-config) + ("gperf" ,gperf))) + (inputs + `(("linux-pam" ,linux-pam) + ("linux-libre-headers" ,linux-libre-headers) + ("libcap" ,libcap) + ("dbus" ,dbus) + ("eudev" ,eudev))) + (home-page "https://github.com/andywingo/elogind") + (synopsis "User, seat, and session management service") + (description "Elogind is the systemd project's \"logind\" service, extracted out as a separate project. Elogind integrates with PAM to provide the org.freedesktop.login1 interface over the system bus, allowing other parts of a the system to know what users are logged in, and where.") - (license license:lgpl2.1+)))) + (license license:lgpl2.1+))) (define-public python-pyxdg (package -- cgit v1.2.3 From 04463bb05ebcead21114b45b7c7bac7c2e4d7e07 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Tue, 18 Aug 2015 11:56:17 +0200 Subject: gnu: Add elogind service. * gnu/services/desktop.scm (): New record type. (elogind-configuration-file, elogind-service): New functions. (%desktop-services): Add elogind-service. --- gnu/services/desktop.scm | 160 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 159 insertions(+), 1 deletion(-) diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index 4e4b49df3e..3447039655 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -26,10 +26,12 @@ (define-module (gnu services desktop) #:use-module (gnu system shadow) #:use-module (gnu packages glib) #:use-module (gnu packages admin) + #:use-module (gnu packages freedesktop) #:use-module (gnu packages gnome) #:use-module (gnu packages avahi) #:use-module (gnu packages wicd) #:use-module (guix monads) + #:use-module (guix records) #:use-module (guix store) #:use-module (guix gexp) #:use-module (ice-9 match) @@ -39,6 +41,8 @@ (define-module (gnu services desktop) geoclue-application %standard-geoclue-applications geoclue-service + elogind-configuration + elogind-service %desktop-services)) ;;; Commentary: @@ -372,6 +376,159 @@ (define* (geoclue-service #:key (geoclue geoclue) (shell "/run/current-system/profile/sbin/nologin")))))))) + +;;; +;;; Elogind login and seat management service. +;;; + +(define-record-type* elogind-configuration + make-elogind-configuration + elogind-configuration + (kill-user-processes? elogind-kill-user-processes? + (default #f)) + (kill-only-users elogind-kill-only-users + (default '())) + (kill-exclude-users elogind-kill-exclude-users + (default '("root"))) + (inhibit-delay-max-seconds elogind-inhibit-delay-max-seconds + (default 5)) + (handle-power-key elogind-handle-power-key + (default 'poweroff)) + (handle-suspend-key elogind-handle-suspend-key + (default 'suspend)) + (handle-hibernate-key elogind-handle-hibernate-key + (default 'hibernate)) + (handle-lid-switch elogind-handle-lid-switch + (default 'suspend)) + (handle-lid-switch-docked elogind-handle-lid-switch-docked + (default 'ignore)) + (power-key-ignore-inhibited? elogind-power-key-ignore-inhibited? + (default #f)) + (suspend-key-ignore-inhibited? elogind-suspend-key-ignore-inhibited? + (default #f)) + (hibernate-key-ignore-inhibited? elogind-hibernate-key-ignore-inhibited? + (default #f)) + (lid-switch-ignore-inhibited? elogind-lid-switch-ignore-inhibited? + (default #t)) + (holdoff-timeout-seconds elogind-holdoff-timeout-seconds + (default 30)) + (idle-action elogind-idle-action + (default 'ignore)) + (idle-action-seconds elogind-idle-action-seconds + (default (* 30 60))) + (runtime-directory-size-percent elogind-runtime-directory-size-percent + (default 10)) + (runtime-directory-size elogind-runtime-directory-size + (default #f)) + (remove-ipc? elogind-remove-ipc? + (default #t)) + + (suspend-state elogind-suspend-state + (default '("mem" "standby" "freeze"))) + (suspend-mode elogind-suspend-mode + (default '())) + (hibernate-state elogind-hibernate-state + (default '("disk"))) + (hibernate-mode elogind-hibernate-mode + (default '("platform" "shutdown"))) + (hybrid-sleep-state elogind-hybrid-sleep-state + (default '("disk"))) + (hybrid-sleep-mode elogind-hybrid-sleep-mode + (default + '("suspend" "platform" "shutdown")))) + +(define (elogind-configuration-file config) + (define (yesno x) + (match x + (#t "yes") + (#f "no") + (_ (error "expected #t or #f, instead got:" x)))) + (define char-set:user-name + (string->char-set "abcdefghijklmnopqrstuvwxyz0123456789_-")) + (define (valid-list? l pred) + (and-map (lambda (x) (string-every pred x)) l)) + (define (user-name-list users) + (unless (valid-list? users char-set:user-name) + (error "invalid user list" users)) + (string-join users " ")) + (define (enum val allowed) + (unless (memq val allowed) + (error "invalid value" val allowed)) + (symbol->string val)) + (define (non-negative-integer x) + (unless (exact-integer? x) (error "not an integer" x)) + (when (negative? x) (error "negative number not allowed" x)) + (number->string x)) + (define handle-actions + '(ignore poweroff reboot halt kexec suspend hibernate hybrid-sleep lock)) + (define (handle-action x) + (enum x handle-actions)) + (define (sleep-list tokens) + (unless (valid-list? tokens char-set:user-name) + (error "invalid sleep list" tokens)) + (string-join tokens " ")) + (define-syntax ini-file-clause + (syntax-rules () + ((_ config (prop (parser getter))) + (string-append prop "=" (parser (getter config)) "\n")) + ((_ config str) + (string-append str "\n")))) + (define-syntax-rule (ini-file config file clause ...) + (text-file file (string-append (ini-file-clause config clause) ...))) + (ini-file + config "logind.conf" + "[Login]" + ("KillUserProcesses" (yesno elogind-kill-user-processes?)) + ("KillOnlyUsers" (user-name-list elogind-kill-only-users)) + ("KillExcludeUsers" (user-name-list elogind-kill-exclude-users)) + ("InhibitDelayMaxSecs" (non-negative-integer elogind-inhibit-delay-max-seconds)) + ("HandlePowerKey" (handle-action elogind-handle-power-key)) + ("HandleSuspendKey" (handle-action elogind-handle-suspend-key)) + ("HandleHibernateKey" (handle-action elogind-handle-hibernate-key)) + ("HandleLidSwitch" (handle-action elogind-handle-lid-switch)) + ("HandleLidSwitchDocked" (handle-action elogind-handle-lid-switch-docked)) + ("PowerKeyIgnoreInhibited" (yesno elogind-power-key-ignore-inhibited?)) + ("SuspendKeyIgnoreInhibited" (yesno elogind-suspend-key-ignore-inhibited?)) + ("HibernateKeyIgnoreInhibited" (yesno elogind-hibernate-key-ignore-inhibited?)) + ("LidSwitchIgnoreInhibited" (yesno elogind-lid-switch-ignore-inhibited?)) + ("HoldoffTimeoutSecs" (non-negative-integer elogind-holdoff-timeout-seconds)) + ("IdleAction" (handle-action elogind-idle-action)) + ("IdleActionSeconds" (non-negative-integer elogind-idle-action-seconds)) + ("RuntimeDirectorySize" + (identity + (lambda (config) + (match (elogind-runtime-directory-size-percent config) + (#f (non-negative-integer (elogind-runtime-directory-size config))) + (percent (string-append (non-negative-integer percent) "%")))))) + ("RemoveIpc" (yesno elogind-remove-ipc?)) + "[Sleep]" + ("SuspendState" (sleep-list elogind-suspend-state)) + ("SuspendMode" (sleep-list elogind-suspend-mode)) + ("HibernateState" (sleep-list elogind-hibernate-state)) + ("HibernateMode" (sleep-list elogind-hibernate-mode)) + ("HybridSleepState" (sleep-list elogind-hybrid-sleep-state)) + ("HybridSleepMode" (sleep-list elogind-hybrid-sleep-mode)))) + +(define* (elogind-service #:key (elogind elogind) + (config (elogind-configuration))) + "Return a service that runs the @command{elogind} login and seat management +service. The @command{elogind} service integrates with PAM to allow other +system components to know the set of logged-in users as well as their session +types (graphical, console, remote, etc.). It can also clean up after users +when they log out." + (mlet %store-monad ((config-file (elogind-configuration-file config))) + (return + (service + (documentation "Run the elogind login and seat management service.") + (provision '(elogind)) + (requirement '(dbus-system)) + + (start #~(make-forkexec-constructor + (list (string-append #$elogind "/libexec/elogind/elogind")) + #:environment-variables + (list (string-append "ELOGIND_CONF_FILE=" #$config-file)))) + (stop #~(make-kill-destructor)))))) + ;;; ;;; The default set of desktop services. @@ -389,7 +546,8 @@ (define %desktop-services ;; time, so we currently add them to the set of default services. (colord-service) (geoclue-service) - (dbus-service (list avahi wicd upower colord geoclue)) + (elogind-service) + (dbus-service (list avahi wicd upower colord geoclue elogind)) (ntp-service) -- cgit v1.2.3 From 7b6c5c5d74fcb69b04929e7f5b2988adbeebcf2f Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Tue, 18 Aug 2015 11:39:22 +0200 Subject: gnu: polkit: Use elogind for seat management. * gnu/packages/polkit.scm (polkit): Depend on elogind. --- gnu/packages/polkit.scm | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm index 172b0e128d..06afdf1330 100644 --- a/gnu/packages/polkit.scm +++ b/gnu/packages/polkit.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Andreas Enge +;;; Copyright © 2015 Andy Wingo ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,6 +24,7 @@ (define-module (gnu packages polkit) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (gnu packages) + #:use-module (gnu packages freedesktop) #:use-module (gnu packages glib) #:use-module (gnu packages gnuzilla) #:use-module (gnu packages linux) @@ -44,11 +46,28 @@ (define-public polkit (sha256 (base32 "109w86kfqrgz83g9ivggplmgc77rz8kx8646izvm2jb57h4rbh71")) - (patches (list (search-patch "polkit-drop-test.patch"))))) + (patches (list (search-patch "polkit-drop-test.patch"))) + (modules '((guix build utils))) + (snippet + '(begin + (use-modules (guix build utils)) + (substitute* "configure" + ;; Replace libsystemd-login with libelogind. + (("libsystemd-login") "libelogind") + ;; Skip the sanity check that the current system runs + ;; systemd. + (("test ! -d /sys/fs/cgroup/systemd/") "false")) + (substitute* "src/polkit/polkitunixsession-systemd.c" + (("systemd") "elogind")) + (substitute* "src/polkitbackend/polkitbackendsessionmonitor-systemd.c" + (("systemd") "elogind")) + (substitute* "src/polkitbackend/polkitbackendjsauthority.c" + (("systemd") "elogind")))))) (build-system gnu-build-system) (inputs `(("expat" ,expat) ("glib:bin" ,glib "bin") ; for glib-mkenums + ("elogind" ,elogind) ("intltool" ,intltool) ("linux-pam" ,linux-pam) ("mozjs" ,mozjs) -- cgit v1.2.3 From 3f130e42e0237451503a19293fe60daa27853af0 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Tue, 1 Sep 2015 13:30:31 +0200 Subject: gnu: polkit: Look for rules in /run/current-system/profile. * gnu/packages/polkit.scm (polkit): Configure to look for actions and rules in the system profile. Arrange to look for the setuid helper in /run/setuid-programs. Fix introspection installation. Based on a patch by Mark H Weaver . --- gnu/packages/polkit.scm | 62 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 52 insertions(+), 10 deletions(-) diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm index 06afdf1330..13db7b6e65 100644 --- a/gnu/packages/polkit.scm +++ b/gnu/packages/polkit.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Andreas Enge ;;; Copyright © 2015 Andy Wingo +;;; Copyright © 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -62,20 +63,61 @@ (define-public polkit (substitute* "src/polkitbackend/polkitbackendsessionmonitor-systemd.c" (("systemd") "elogind")) (substitute* "src/polkitbackend/polkitbackendjsauthority.c" - (("systemd") "elogind")))))) + (("systemd") "elogind")) + + (substitute* "src/polkitagent/polkitagentsession.c" + (("PACKAGE_PREFIX \"/lib/polkit-1/polkit-agent-helper-1\"") + "\"/run/setuid-programs/polkit-agent-helper-1\"")) + (substitute* "src/polkitbackend/polkitbackendinteractiveauthority.c" + (("PACKAGE_DATA_DIR \"/polkit-1/actions\"") + "\"/run/current-system/profile/share/polkit-1/actions\"")) + (substitute* "src/polkitbackend/polkitbackendjsauthority.c" + (("PACKAGE_SYSCONF_DIR \"/polkit-1/rules.d\"") + "\"/run/current-system/profile/etc/polkit-1/rules.d\"")) + (substitute* "src/polkitbackend/polkitbackendjsauthority.c" + (("PACKAGE_DATA_DIR \"/polkit-1/rules.d\"") + "\"/run/current-system/profile/share/polkit-1/rules.d\"")))))) (build-system gnu-build-system) (inputs - `(("expat" ,expat) - ("glib:bin" ,glib "bin") ; for glib-mkenums - ("elogind" ,elogind) - ("intltool" ,intltool) - ("linux-pam" ,linux-pam) - ("mozjs" ,mozjs) - ("nspr" ,nspr))) + `(("expat" ,expat) + ("linux-pam" ,linux-pam) + ("elogind" ,elogind) + ("mozjs" ,mozjs) + ("nspr" ,nspr))) (propagated-inputs - `(("glib" ,glib))) ; required by polkit-gobject-1.pc + `(("glib" ,glib))) ; required by polkit-gobject-1.pc (native-inputs - `(("pkg-config", pkg-config))) + `(("pkg-config" ,pkg-config) + ("glib:bin" ,glib "bin") ; for glib-mkenums + ("intltool" ,intltool) + ("gobject-introspection" ,gobject-introspection))) + (arguments + `(#:configure-flags '("--sysconfdir=/etc" + "--enable-man-pages") + #:phases + (modify-phases %standard-phases + (add-after + 'unpack 'fix-introspection-install-dir + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* (find-files "." "Makefile.in") + (("@INTROSPECTION_GIRDIR@") + (string-append out "/share/gir-1.0/")) + (("@INTROSPECTION_TYPELIBDIR@") + (string-append out "/lib/girepository-1.0/")))))) + (replace + 'install + (lambda* (#:key outputs (make-flags '()) #:allow-other-keys) + ;; Override sysconfdir during "make install", to avoid attempting + ;; to install in /etc, and to instead install the skeletons in the + ;; output directory. + (let ((out (assoc-ref outputs "out"))) + (zero? (apply system* + "make" "install" + (string-append "sysconfdir=" out "/etc") + (string-append "polkit_actiondir=" + out "/share/polkit-1/actions") + make-flags)))))))) (home-page "http://www.freedesktop.org/wiki/Software/polkit/") (synopsis "Authorization API for privilege management") (description "Polkit is an application-level toolkit for defining and -- cgit v1.2.3 From 0071c7894e77ad95b9bac8871e0653931180d929 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Tue, 18 Aug 2015 11:57:15 +0200 Subject: gnu: Add polkit service. * gnu/services/desktop.scm (polkit-service): New function. (%desktop-services): Add polkit service. --- gnu/services/desktop.scm | 51 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 5 deletions(-) diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index 3447039655..1bf3db053b 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -24,12 +24,14 @@ (define-module (gnu services desktop) #:use-module (gnu services xorg) #:use-module (gnu services networking) #:use-module (gnu system shadow) + #:use-module (gnu system linux) ; unix-pam-service #:use-module (gnu packages glib) #:use-module (gnu packages admin) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gnome) #:use-module (gnu packages avahi) #:use-module (gnu packages wicd) + #:use-module (gnu packages polkit) #:use-module (guix monads) #:use-module (guix records) #:use-module (guix store) @@ -41,6 +43,7 @@ (define-module (gnu services desktop) geoclue-application %standard-geoclue-applications geoclue-service + polkit-service elogind-configuration elogind-service %desktop-services)) @@ -376,6 +379,42 @@ (define* (geoclue-service #:key (geoclue geoclue) (shell "/run/current-system/profile/sbin/nologin")))))))) + +;;; +;;; Polkit privilege management service. +;;; + +(define* (polkit-service #:key (polkit polkit)) + "Return a service that runs the @command{polkit} privilege management +service. By querying the @command{polkit} service, a privileged system +component can know when it should grant additional capabilities to ordinary +users. For example, an ordinary user can be granted the capability to suspend +the system if the user is logged in locally." + (with-monad %store-monad + (return + (service + (documentation "Run the polkit privilege management service.") + (provision '(polkit-daemon)) + (requirement '(dbus-system)) + + (start #~(make-forkexec-constructor + (list (string-append #$polkit "/lib/polkit-1/polkitd")))) + (stop #~(make-kill-destructor)) + + (user-groups (list (user-group + (name "polkitd") + (system? #t)))) + (user-accounts (list (user-account + (name "polkitd") + (group "polkitd") + (system? #t) + (comment "Polkit daemon user") + (home-directory "/var/empty") + (shell + "/run/current-system/profile/sbin/nologin")))) + + (pam-services (list (unix-pam-service "polkit-1"))))))) + ;;; ;;; Elogind login and seat management service. @@ -540,14 +579,16 @@ (define %desktop-services (avahi-service) (wicd-service) (upower-service) - ;; FIXME: The colord and geoclue services could all be bus-activated - ;; by default, so they don't run at program startup. However, user - ;; creation and /var/lib.colord creation happen at service activation - ;; time, so we currently add them to the set of default services. + ;; FIXME: The colord, geoclue, and polkit services could all be + ;; bus-activated by default, so they don't run at program startup. + ;; However, user creation and /var/lib/colord creation happen at + ;; service activation time, so we currently add them to the set of + ;; default services. (colord-service) (geoclue-service) + (polkit-service) (elogind-service) - (dbus-service (list avahi wicd upower colord geoclue elogind)) + (dbus-service (list avahi wicd upower colord geoclue polkit elogind)) (ntp-service) -- cgit v1.2.3 From 4650a77ea8b3ada17f94a4a3b2004f172d0a1498 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Wed, 2 Sep 2015 22:53:09 +0200 Subject: doc: Document polkit and elogind services. * doc/guix.texi (Desktop Services): Add polkit-service and elogind-service documentation. --- doc/guix.texi | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/doc/guix.texi b/doc/guix.texi index c42aedbbb0..6defb0bda7 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -6049,6 +6049,7 @@ adds or adjust services for a typical ``desktop'' setup. In particular, it adds a graphical login manager (@pxref{X Window, @code{slim-service}}), a network management tool (@pxref{Networking Services, @code{wicd-service}}), energy and color management services, +the @code{elogind} login and seat manager, the Polkit privilege service, the GeoClue location service, an NTP client (@pxref{Networking Services}), the Avahi daemon, and has the name service switch service configured to be able to use @code{nss-mdns} (@pxref{Name Service @@ -6077,6 +6078,87 @@ and policy files. For example, to allow avahi-daemon to use the system bus, @var{services} must be equal to @code{(list avahi)}. @end deffn +@deffn {Monadic Procedure} elogind-service @ + [#:elogind @var{elogind}] [#:config @var{config}] +Return a service that runs the @code{elogind} login and +seat management daemon. @uref{https://github.com/andywingo/elogind, +Elogind} exposes a D-Bus interface that can be used to know which users +are logged in, know what kind of sessions they have open, suspend the +system, inhibit system suspend, reboot the system, and other tasks. + +Elogind handles most system-level power events for a computer, for +example suspending the system when a lid is closed, or shutting it down +when the power button is pressed. + +The @var{config} keyword argument specifies the configuration for +elogind, and should be the result of a @code{(elogind-configuration +(@var{parameter} @var{value})...)} invocation. Available parameters and +their default values are: + +@table @code +@item kill-user-processes? +@code{#f} +@item kill-only-users +@code{()} +@item kill-exclude-users +@code{("root")} +@item inhibit-delay-max-seconds +@code{5} +@item handle-power-key +@code{poweroff} +@item handle-suspend-key +@code{suspend} +@item handle-hibernate-key +@code{hibernate} +@item handle-lid-switch +@code{suspend} +@item handle-lid-switch-docked +@code{ignore} +@item power-key-ignore-inhibited? +@code{#f} +@item suspend-key-ignore-inhibited? +@code{#f} +@item hibernate-key-ignore-inhibited? +@code{#f} +@item lid-switch-ignore-inhibited? +@code{#t} +@item holdoff-timeout-seconds +@code{30} +@item idle-action +@code{ignore} +@item idle-action-seconds +@code{(* 30 60)} +@item runtime-directory-size-percent +@code{10} +@item runtime-directory-size +@code{#f} +@item remove-ipc? +@code{#t} +@item suspend-state +@code{("mem" "standby" "freeze")} +@item suspend-mode +@code{()} +@item hibernate-state +@code{("disk")} +@item hibernate-mode +@code{("platform" "shutdown")} +@item hybrid-sleep-state +@code{("disk")} +@item hybrid-sleep-mode +@code{("suspend" "platform" "shutdown")} +@end table +@end deffn + +@deffn {Monadic Procedure} polkit-service @ + [#:polkit @var{polkit}] +Return a service that runs the Polkit privilege manager. +@uref{http://www.freedesktop.org/wiki/Software/polkit/, Polkit} allows +system administrators to grant access to privileged operations in a +structured way. For example, polkit rules can allow a logged-in user +whose session is active to shut down the machine, if there are no other +users active. +@end deffn + @deffn {Monadic Procedure} upower-service [#:upower @var{upower}] @ [#:watts-up-pro? #f] @ [#:poll-batteries? #t] @ -- cgit v1.2.3 From 4c8f997a7d6f4c9d7eae73804e9784b4562eb213 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 2 Sep 2015 15:23:52 +0200 Subject: graph: Add '--expression'. * guix/scripts/graph.scm (%options, show-help): Add '--expression'. (guix-graph): Call 'read/eval-package-expression' for 'expression' pairs in OPTS. * tests/guix-graph.sh: Add tests. * doc/guix.texi (Invoking guix graph): Document it. --- doc/guix.texi | 10 ++++++++++ guix/scripts/graph.scm | 17 ++++++++++++----- tests/guix-graph.sh | 5 +++++ 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 6defb0bda7..f943540ac8 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4417,6 +4417,16 @@ the values listed above. @item --list-types List the supported graph types. + +@item --expression=@var{expr} +@itemx -e @var{expr} +Consider the package @var{expr} evaluates to. + +This is useful to precisely refer to a package, as in this example: + +@example +guix graph -e '(@@@@ (gnu packages commencement) gnu-make-final)' +@end example @end table diff --git a/guix/scripts/graph.scm b/guix/scripts/graph.scm index 1719ffce68..2b671be131 100644 --- a/guix/scripts/graph.scm +++ b/guix/scripts/graph.scm @@ -380,6 +380,9 @@ (define %options (lambda (opt name arg result) (list-node-types) (exit 0))) + (option '(#\e "expression") #t #f + (lambda (opt name arg result) + (alist-cons 'expression arg result))) (option '(#\h "help") #f #f (lambda args (show-help) @@ -397,6 +400,8 @@ (define (show-help) -t, --type=TYPE represent nodes of the given TYPE")) (display (_ " --list-types list the available graph types")) + (display (_ " + -e, --expression=EXPR consider the package EXPR evaluates to")) (newline) (display (_ " -h, --help display this help and exit")) @@ -417,12 +422,14 @@ (define (guix-graph . args) (with-error-handling (let* ((opts (parse-command-line args %options (list %default-options))) - (specs (filter-map (match-lambda - (('argument . spec) spec) - (_ #f)) - opts)) (type (assoc-ref opts 'node-type)) - (packages (map specification->package specs))) + (packages (filter-map (match-lambda + (('argument . spec) + (specification->package spec)) + (('expression . exp) + (read/eval-package-expression exp)) + (_ #f)) + opts))) (with-store store (run-with-store store (mlet %store-monad ((nodes (mapm %store-monad diff --git a/tests/guix-graph.sh b/tests/guix-graph.sh index 199258a9b8..e0cbebb753 100644 --- a/tests/guix-graph.sh +++ b/tests/guix-graph.sh @@ -32,3 +32,8 @@ done guix build guile-bootstrap guix graph -t references guile-bootstrap | grep guile-bootstrap + +guix graph -e '(@ (gnu packages bootstrap) %bootstrap-guile)' \ + | grep guile-bootstrap + +if guix graph -e +; then false; else true; fi -- cgit v1.2.3 From c4044399a92c9bd03d90b7fd9823110a2bac8261 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 2 Sep 2015 22:54:40 -0400 Subject: gnu: linux-libre: Update to 4.2. * gnu/packages/linux.scm (linux-libre): Update to 4.2. * gnu/packages/linux-libre-x86_64.conf, gnu/packages/linux-libre-i686.conf: Update, based largely on https://jxself.org/git/kernel-configs.git --- gnu/packages/linux-libre-i686.conf | 220 ++++++++++++++++++++++++-------- gnu/packages/linux-libre-x86_64.conf | 239 ++++++++++++++++++++++++++--------- gnu/packages/linux.scm | 4 +- 3 files changed, 345 insertions(+), 118 deletions(-) diff --git a/gnu/packages/linux-libre-i686.conf b/gnu/packages/linux-libre-i686.conf index a37225541e..7b17f7b7c3 100644 --- a/gnu/packages/linux-libre-i686.conf +++ b/gnu/packages/linux-libre-i686.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 4.1.0-gnu Kernel Configuration +# Linux/x86 4.2.0-gnu Kernel Configuration # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -34,7 +34,6 @@ CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_HAVE_INTEL_TXT=y CONFIG_X86_32_SMP=y -CONFIG_X86_HT=y CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx" CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_FIX_EARLYCON_MEM=y @@ -83,11 +82,12 @@ CONFIG_AUDIT_TREE=y # CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_IRQ_SHOW=y -CONFIG_GENERIC_IRQ_LEGACY_ALLOC_HWIRQ=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_GENERIC_IRQ_CHIP=y CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_MSI_IRQ_DOMAIN=y # CONFIG_IRQ_DOMAIN_DEBUG is not set CONFIG_IRQ_FORCED_THREADING=y CONFIG_SPARSE_IRQ=y @@ -126,15 +126,11 @@ CONFIG_TASK_IO_ACCOUNTING=y # RCU Subsystem # CONFIG_TREE_RCU=y +# CONFIG_RCU_EXPERT is not set CONFIG_SRCU=y # CONFIG_TASKS_RCU is not set CONFIG_RCU_STALL_COMMON=y -CONFIG_RCU_FANOUT=32 -CONFIG_RCU_FANOUT_LEAF=16 -# CONFIG_RCU_FANOUT_EXACT is not set -CONFIG_RCU_FAST_NO_HZ=y # CONFIG_TREE_RCU_TRACE is not set -CONFIG_RCU_KTHREAD_PRIO=0 # CONFIG_RCU_NOCB_CPU is not set # CONFIG_RCU_EXPEDITE_BOOT is not set CONFIG_BUILD_BIN2C=y @@ -162,6 +158,7 @@ CONFIG_CFS_BANDWIDTH=y # CONFIG_RT_GROUP_SCHED is not set CONFIG_BLK_CGROUP=y # CONFIG_DEBUG_BLK_CGROUP is not set +CONFIG_CGROUP_WRITEBACK=y CONFIG_CHECKPOINT_RESTORE=y CONFIG_NAMESPACES=y CONFIG_UTS_NS=y @@ -251,6 +248,7 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y CONFIG_HAVE_DMA_ATTRS=y CONFIG_HAVE_DMA_CONTIGUOUS=y CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y CONFIG_HAVE_CLK=y CONFIG_HAVE_DMA_API_DEBUG=y @@ -278,6 +276,7 @@ CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y CONFIG_HAVE_ARCH_HUGE_VMAP=y CONFIG_MODULES_USE_ELF_REL=y CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_COPY_THREAD_TLS=y CONFIG_CLONE_BACKWARDS=y CONFIG_OLD_SIGSUSPEND3=y CONFIG_OLD_SIGACTION=y @@ -299,6 +298,7 @@ CONFIG_MODVERSIONS=y CONFIG_MODULE_SRCVERSION_ALL=y # CONFIG_MODULE_SIG is not set # CONFIG_MODULE_COMPRESS is not set +CONFIG_MODULES_TREE_LOOKUP=y CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y CONFIG_LBDAF=y @@ -312,13 +312,7 @@ CONFIG_BLK_CMDLINE_PARSER=y # Partition Types # CONFIG_PARTITION_ADVANCED=y -CONFIG_ACORN_PARTITION=y -CONFIG_ACORN_PARTITION_CUMANA=y -CONFIG_ACORN_PARTITION_EESOX=y -CONFIG_ACORN_PARTITION_ICS=y -CONFIG_ACORN_PARTITION_ADFS=y -CONFIG_ACORN_PARTITION_POWERTEC=y -CONFIG_ACORN_PARTITION_RISCIX=y +# CONFIG_ACORN_PARTITION is not set CONFIG_AIX_PARTITION=y CONFIG_OSF_PARTITION=y CONFIG_AMIGA_PARTITION=y @@ -353,7 +347,6 @@ CONFIG_DEFAULT_IOSCHED="deadline" CONFIG_PREEMPT_NOTIFIERS=y CONFIG_PADATA=y CONFIG_ASN1=y -CONFIG_UNINLINE_SPIN_UNLOCK=y CONFIG_INLINE_SPIN_UNLOCK_IRQ=y CONFIG_INLINE_READ_UNLOCK=y CONFIG_INLINE_READ_UNLOCK_IRQ=y @@ -363,8 +356,10 @@ CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y CONFIG_MUTEX_SPIN_ON_OWNER=y CONFIG_RWSEM_SPIN_ON_OWNER=y CONFIG_LOCK_SPIN_ON_OWNER=y -CONFIG_ARCH_USE_QUEUE_RWLOCK=y -CONFIG_QUEUE_RWLOCK=y +CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +CONFIG_QUEUED_RWLOCKS=y CONFIG_FREEZER=y # @@ -541,7 +536,9 @@ CONFIG_ZSMALLOC=y CONFIG_PGTABLE_MAPPING=y # CONFIG_ZSMALLOC_STAT is not set CONFIG_GENERIC_EARLY_IOREMAP=y -# CONFIG_X86_PMEM_LEGACY is not set +CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y +# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set +CONFIG_X86_PMEM_LEGACY=y CONFIG_HIGHPTE=y CONFIG_X86_CHECK_BIOS_CORRUPTION=y CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y @@ -612,6 +609,7 @@ CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y CONFIG_ACPI_SLEEP=y # CONFIG_ACPI_PROCFS_POWER is not set +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y CONFIG_ACPI_EC_DEBUGFS=m CONFIG_ACPI_AC=y CONFIG_ACPI_BATTERY=y @@ -638,6 +636,8 @@ CONFIG_ACPI_HED=y # CONFIG_ACPI_CUSTOM_METHOD is not set CONFIG_ACPI_BGRT=y # CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set +CONFIG_ACPI_NFIT=m +# CONFIG_ACPI_NFIT_DEBUG is not set CONFIG_HAVE_ACPI_APEI=y CONFIG_HAVE_ACPI_APEI_NMI=y CONFIG_ACPI_APEI=y @@ -738,7 +738,9 @@ CONFIG_PCIEASPM_DEFAULT=y # CONFIG_PCIEASPM_POWERSAVE is not set # CONFIG_PCIEASPM_PERFORMANCE is not set CONFIG_PCIE_PME=y +CONFIG_PCI_BUS_ADDR_T_64BIT=y CONFIG_PCI_MSI=y +CONFIG_PCI_MSI_IRQ_DOMAIN=y # CONFIG_PCI_DEBUG is not set CONFIG_PCI_REALLOC_ENABLE_AUTO=y CONFIG_PCI_STUB=m @@ -826,6 +828,7 @@ CONFIG_COREDUMP=y CONFIG_HAVE_ATOMIC_IOMAP=y CONFIG_PMC_ATOM=y CONFIG_NET=y +CONFIG_NET_INGRESS=y # # Networking options @@ -869,7 +872,7 @@ CONFIG_NET_IPVTI=m CONFIG_NET_UDP_TUNNEL=m CONFIG_NET_FOU=m CONFIG_NET_FOU_IP_TUNNELS=y -CONFIG_GENEVE=m +CONFIG_GENEVE_CORE=m CONFIG_INET_AH=m CONFIG_INET_ESP=m CONFIG_INET_IPCOMP=m @@ -896,6 +899,7 @@ CONFIG_TCP_CONG_VENO=m CONFIG_TCP_CONG_YEAH=m CONFIG_TCP_CONG_ILLINOIS=m CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m CONFIG_DEFAULT_CUBIC=y # CONFIG_DEFAULT_RENO is not set CONFIG_DEFAULT_TCP_CONG="cubic" @@ -937,6 +941,7 @@ CONFIG_BRIDGE_NETFILTER=m # # Core Netfilter Configuration # +CONFIG_NETFILTER_INGRESS=y CONFIG_NETFILTER_NETLINK=m CONFIG_NETFILTER_NETLINK_ACCT=m CONFIG_NETFILTER_NETLINK_QUEUE=m @@ -984,6 +989,7 @@ CONFIG_NF_NAT_REDIRECT=m CONFIG_NETFILTER_SYNPROXY=m CONFIG_NF_TABLES=m CONFIG_NF_TABLES_INET=m +CONFIG_NF_TABLES_NETDEV=m CONFIG_NFT_EXTHDR=m CONFIG_NFT_META=m CONFIG_NFT_CT=m @@ -1382,6 +1388,7 @@ CONFIG_NET_CLS_RSVP6=m CONFIG_NET_CLS_FLOW=m CONFIG_NET_CLS_CGROUP=m CONFIG_NET_CLS_BPF=m +CONFIG_NET_CLS_FLOWER=m CONFIG_NET_EMATCH=y CONFIG_NET_EMATCH_STACK=32 CONFIG_NET_EMATCH_CMP=m @@ -1594,8 +1601,10 @@ CONFIG_BT_DEBUGFS=y # CONFIG_BT_INTEL=m CONFIG_BT_BCM=m +CONFIG_BT_RTL=m CONFIG_BT_HCIBTUSB=m CONFIG_BT_HCIBTUSB_BCM=y +CONFIG_BT_HCIBTUSB_RTL=y CONFIG_BT_HCIBTSDIO=m CONFIG_BT_HCIUART=m CONFIG_BT_HCIUART_H4=y @@ -1654,6 +1663,7 @@ CONFIG_MAC80211_LEDS=y CONFIG_MAC80211_DEBUGFS=y CONFIG_MAC80211_MESSAGE_TRACING=y # CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 CONFIG_WIMAX=m CONFIG_WIMAX_DEBUG_LEVEL=8 CONFIG_RFKILL=y @@ -1676,6 +1686,7 @@ CONFIG_NFC=m CONFIG_NFC_DIGITAL=m CONFIG_NFC_NCI=m CONFIG_NFC_NCI_SPI=y +CONFIG_NFC_NCI_UART=m CONFIG_NFC_HCI=m CONFIG_NFC_SHDLC=y @@ -1696,10 +1707,11 @@ CONFIG_NFC_MICROREAD_I2C=m CONFIG_NFC_MICROREAD_MEI=m CONFIG_NFC_MRVL=m CONFIG_NFC_MRVL_USB=m +CONFIG_NFC_MRVL_UART=m CONFIG_NFC_ST21NFCA=m CONFIG_NFC_ST21NFCA_I2C=m -CONFIG_NFC_ST21NFCB=m -CONFIG_NFC_ST21NFCB_I2C=m +CONFIG_NFC_ST_NCI=m +CONFIG_NFC_ST_NCI_I2C=m CONFIG_NFC_NXP_NCI=m CONFIG_NFC_NXP_NCI_I2C=m @@ -1885,6 +1897,7 @@ CONFIG_MTD_UBI_BEB_LIMIT=20 CONFIG_MTD_UBI_FASTMAP=y CONFIG_MTD_UBI_GLUEBI=m CONFIG_MTD_UBI_BLOCK=y +# CONFIG_OF is not set CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y CONFIG_PARPORT=m CONFIG_PARPORT_PC=m @@ -1942,7 +1955,6 @@ CONFIG_PARIDE_ON26=m CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m CONFIG_ZRAM=m CONFIG_ZRAM_LZ4_COMPRESS=y -# CONFIG_ZRAM_DEBUG is not set CONFIG_BLK_CPQ_CISS_DA=m CONFIG_CISS_SCSI_TAPE=y CONFIG_BLK_DEV_DAC960=m @@ -1961,7 +1973,6 @@ CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=65536 CONFIG_BLK_DEV_RAM_DAX=y -CONFIG_BLK_DEV_PMEM=m CONFIG_CDROM_PKTCDVD=m CONFIG_CDROM_PKTCDVD_BUFFERS=8 # CONFIG_CDROM_PKTCDVD_WCACHE is not set @@ -2044,6 +2055,10 @@ CONFIG_VMWARE_VMCI=m # Intel MIC Bus Driver # +# +# SCIF Bus Driver +# + # # Intel MIC Host Driver # @@ -2051,8 +2066,13 @@ CONFIG_VMWARE_VMCI=m # # Intel MIC Card Driver # + +# +# SCIF Driver +# CONFIG_ECHO=m # CONFIG_CXL_BASE is not set +# CONFIG_CXL_KERNEL_API is not set CONFIG_HAVE_IDE=y # CONFIG_IDE is not set @@ -2158,6 +2178,8 @@ CONFIG_LIBFC=m CONFIG_LIBFCOE=m CONFIG_FCOE=m CONFIG_FCOE_FNIC=m +CONFIG_SCSI_SNIC=m +# CONFIG_SCSI_SNIC_DEBUG_FS is not set CONFIG_SCSI_DMX3191D=m CONFIG_SCSI_DTC3280=m CONFIG_SCSI_EATA=m @@ -2356,6 +2378,7 @@ CONFIG_DM_SNAPSHOT=m CONFIG_DM_THIN_PROVISIONING=m CONFIG_DM_CACHE=m CONFIG_DM_CACHE_MQ=m +CONFIG_DM_CACHE_SMQ=m CONFIG_DM_CACHE_CLEANER=m CONFIG_DM_ERA=m CONFIG_DM_MIRROR=m @@ -2417,6 +2440,7 @@ CONFIG_MACVLAN=m CONFIG_MACVTAP=m CONFIG_IPVLAN=m CONFIG_VXLAN=m +CONFIG_GENEVE=m CONFIG_NETCONSOLE=m CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETPOLL=y @@ -2426,6 +2450,7 @@ CONFIG_RIONET=m CONFIG_RIONET_TX_SIZE=128 CONFIG_RIONET_RX_SIZE=128 CONFIG_TUN=y +# CONFIG_TUN_VNET_CROSS_LE is not set CONFIG_VETH=m CONFIG_VIRTIO_NET=y CONFIG_NLMON=m @@ -2485,6 +2510,7 @@ CONFIG_VHOST_NET=m CONFIG_VHOST_SCSI=m CONFIG_VHOST_RING=m CONFIG_VHOST=m +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set # # Distributed Switch Architecture drivers @@ -2536,6 +2562,7 @@ CONFIG_BNX2X=m CONFIG_BNX2X_SRIOV=y CONFIG_NET_VENDOR_BROCADE=y CONFIG_BNA=m +CONFIG_NET_VENDOR_CAVIUM=m CONFIG_NET_VENDOR_CHELSIO=y CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T1_1G=y @@ -2570,7 +2597,9 @@ CONFIG_SUNDANCE=m # CONFIG_SUNDANCE_MMIO is not set CONFIG_NET_VENDOR_EMULEX=y CONFIG_BE2NET=m +CONFIG_BE2NET_HWMON=y CONFIG_BE2NET_VXLAN=y +CONFIG_NET_VENDOR_EZCHIP=y CONFIG_NET_VENDOR_EXAR=y CONFIG_S2IO=m CONFIG_VXGE=m @@ -2618,6 +2647,7 @@ CONFIG_MLX4_EN_VXLAN=y CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_MLX5_CORE=m +CONFIG_MLX5_CORE_EN=y CONFIG_NET_VENDOR_MICREL=y CONFIG_KS8842=m CONFIG_KS8851=m @@ -2667,6 +2697,7 @@ CONFIG_8139TOO_PIO=y CONFIG_8139TOO_8129=y # CONFIG_8139_OLD_RX_RESET is not set CONFIG_R8169=m +CONFIG_NET_VENDOR_RENESAS=y CONFIG_NET_VENDOR_RDC=y CONFIG_R6040=m CONFIG_NET_VENDOR_ROCKER=y @@ -2682,6 +2713,7 @@ CONFIG_SFC=m CONFIG_SFC_MTD=y CONFIG_SFC_MCDI_MON=y CONFIG_SFC_SRIOV=y +CONFIG_SFC_MCDI_LOGGING=y CONFIG_NET_VENDOR_SMSC=y CONFIG_SMC9194=m CONFIG_PCMCIA_SMC91C92=m @@ -2692,6 +2724,7 @@ CONFIG_SMSC9420=m CONFIG_NET_VENDOR_STMICRO=y CONFIG_STMMAC_ETH=m CONFIG_STMMAC_PLATFORM=m +CONFIG_DWMAC_GENERIC=m # CONFIG_STMMAC_PCI is not set CONFIG_NET_VENDOR_SUN=y CONFIG_HAPPYMEAL=m @@ -2744,6 +2777,7 @@ CONFIG_NATIONAL_PHY=m CONFIG_STE10XP=m CONFIG_LSI_ET1011C_PHY=m CONFIG_MICREL_PHY=m +CONFIG_DP83867_PHY=m CONFIG_FIXED_PHY=y CONFIG_MDIO_BITBANG=m CONFIG_MDIO_GPIO=m @@ -3003,6 +3037,8 @@ CONFIG_RT2X00_LIB_CRYPTO=y CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_LIB_DEBUGFS is not set # CONFIG_RT2X00_DEBUG is not set +CONFIG_WL_MEDIATEK=y +CONFIG_MT7601U=m CONFIG_RTL_CARDS=m CONFIG_RTL8192CE=m CONFIG_RTL8192SE=m @@ -3083,6 +3119,7 @@ CONFIG_IEEE802154_FAKELB=m CONFIG_IEEE802154_AT86RF230=m CONFIG_IEEE802154_MRF24J40=m CONFIG_IEEE802154_CC2520=m +CONFIG_IEEE802154_ATUSB=m CONFIG_XEN_NETDEV_FRONTEND=y CONFIG_XEN_NETDEV_BACKEND=m CONFIG_VMXNET3=m @@ -3239,6 +3276,7 @@ CONFIG_ISDN_HDLC=m # Input device support # CONFIG_INPUT=y +CONFIG_INPUT_LEDS=m CONFIG_INPUT_FF_MEMLESS=m CONFIG_INPUT_POLLDEV=m CONFIG_INPUT_SPARSEKMAP=m @@ -3394,6 +3432,7 @@ CONFIG_TOUCHSCREEN_TOUCHWIN=m CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m CONFIG_TOUCHSCREEN_UCB1400=m CONFIG_TOUCHSCREEN_PIXCIR=m +CONFIG_TOUCHSCREEN_WDT87XX_I2C=m CONFIG_TOUCHSCREEN_WM831X=m CONFIG_TOUCHSCREEN_WM97XX=m CONFIG_TOUCHSCREEN_WM9705=y @@ -3474,6 +3513,7 @@ CONFIG_INPUT_PWM_BEEPER=m CONFIG_INPUT_GPIO_ROTARY_ENCODER=m CONFIG_INPUT_DA9052_ONKEY=m CONFIG_INPUT_DA9055_ONKEY=m +CONFIG_INPUT_DA9063_ONKEY=m CONFIG_INPUT_WM831X_ON=m CONFIG_INPUT_PCAP=m CONFIG_INPUT_ADXL34X=m @@ -3486,6 +3526,7 @@ CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m CONFIG_INPUT_IDEAPAD_SLIDEBAR=m CONFIG_INPUT_SOC_BUTTON_ARRAY=m CONFIG_INPUT_DRV260X_HAPTICS=m +CONFIG_INPUT_DRV2665_HAPTICS=m CONFIG_INPUT_DRV2667_HAPTICS=m # @@ -3581,7 +3622,10 @@ CONFIG_CONSOLE_POLL=y CONFIG_SERIAL_JSM=m CONFIG_SERIAL_SCCNXP=y CONFIG_SERIAL_SCCNXP_CONSOLE=y +CONFIG_SERIAL_SC16IS7XX_CORE=m CONFIG_SERIAL_SC16IS7XX=m +CONFIG_SERIAL_SC16IS7XX_I2C=y +CONFIG_SERIAL_SC16IS7XX_SPI=y CONFIG_SERIAL_TIMBERDALE=m CONFIG_SERIAL_ALTERA_JTAGUART=m CONFIG_SERIAL_ALTERA_UART=m @@ -3774,6 +3818,7 @@ CONFIG_SPI_SC18IS602=m CONFIG_SPI_TOPCLIFF_PCH=m CONFIG_SPI_XCOMM=m # CONFIG_SPI_XILINX is not set +CONFIG_SPI_ZYNQMP_GQSPI=m CONFIG_SPI_DESIGNWARE=m CONFIG_SPI_DW_PCI=m CONFIG_SPI_DW_MID_DMA=y @@ -3969,6 +4014,7 @@ CONFIG_BATTERY_BQ27X00_PLATFORM=y CONFIG_BATTERY_DA9030=m CONFIG_BATTERY_DA9052=m CONFIG_CHARGER_DA9150=m +CONFIG_AXP288_CHARGER=m CONFIG_AXP288_FUEL_GAUGE=m CONFIG_BATTERY_MAX17040=m CONFIG_BATTERY_MAX17042=m @@ -3990,11 +4036,14 @@ CONFIG_CHARGER_MAX8997=m CONFIG_CHARGER_MAX8998=m CONFIG_CHARGER_BQ2415X=m CONFIG_CHARGER_BQ24190=m +CONFIG_CHARGER_BQ24257=m CONFIG_CHARGER_BQ24735=m +CONFIG_CHARGER_BQ25890=m CONFIG_CHARGER_SMB347=m CONFIG_CHARGER_TPS65090=m CONFIG_BATTERY_GAUGE_LTC2941=m CONFIG_BATTERY_RT5033=m +CONFIG_CHARGER_RT9455=m CONFIG_POWER_RESET=y CONFIG_POWER_RESET_RESTART=y CONFIG_POWER_AVS=y @@ -4032,6 +4081,7 @@ CONFIG_SENSORS_ASB100=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_DS620=m CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_DELL_SMM=m CONFIG_SENSORS_DA9052_ADC=m CONFIG_SENSORS_DA9055=m CONFIG_SENSORS_I5K_AMB=m @@ -4134,6 +4184,7 @@ CONFIG_SENSORS_ADS7871=m CONFIG_SENSORS_AMC6821=m CONFIG_SENSORS_INA209=m CONFIG_SENSORS_INA2XX=m +CONFIG_SENSORS_TC74=m CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_TMP102=m CONFIG_SENSORS_TMP103=m @@ -4164,16 +4215,20 @@ CONFIG_SENSORS_ACPI_POWER=m CONFIG_SENSORS_ATK0110=m CONFIG_THERMAL=y CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_WRITABLE_TRIPS=y CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set CONFIG_THERMAL_GOV_FAIR_SHARE=y CONFIG_THERMAL_GOV_STEP_WISE=y CONFIG_THERMAL_GOV_BANG_BANG=y CONFIG_THERMAL_GOV_USER_SPACE=y +CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y CONFIG_THERMAL_EMULATION=y CONFIG_INTEL_POWERCLAMP=m CONFIG_X86_PKG_TEMP_THERMAL=m +CONFIG_INTEL_SOC_DTS_IOSF_CORE=m CONFIG_INTEL_SOC_DTS_THERMAL=m CONFIG_INT340X_THERMAL=m CONFIG_ACPI_THERMAL_REL=m @@ -4200,6 +4255,7 @@ CONFIG_CADENCE_WATCHDOG=m CONFIG_DW_WATCHDOG=m CONFIG_RN5T618_WATCHDOG=m CONFIG_TWL4030_WATCHDOG=m +CONFIG_MAX63XX_WATCHDOG=m CONFIG_RETU_WATCHDOG=m CONFIG_ACQUIRE_WDT=m CONFIG_ADVANTECH_WDT=m @@ -4306,6 +4362,7 @@ CONFIG_MFD_BCM590XX=m CONFIG_MFD_AXP20X=y CONFIG_MFD_CROS_EC=m CONFIG_MFD_CROS_EC_I2C=m +CONFIG_MFD_CROS_EC_SPI=m CONFIG_PMIC_DA903X=y CONFIG_PMIC_DA9052=y CONFIG_MFD_DA9052_SPI=y @@ -4451,6 +4508,7 @@ CONFIG_REGULATOR_PCAP=m CONFIG_REGULATOR_PCF50633=m CONFIG_REGULATOR_PFUZE100=m CONFIG_REGULATOR_PWM=m +CONFIG_REGULATOR_QCOM_SPMI=m CONFIG_REGULATOR_RC5T583=m CONFIG_REGULATOR_RN5T618=m CONFIG_REGULATOR_RT5033=m @@ -4494,6 +4552,7 @@ CONFIG_VIDEO_V4L2=m # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set CONFIG_VIDEO_TUNER=m CONFIG_V4L2_MEM2MEM_DEV=m +CONFIG_V4L2_FLASH_LED_CLASS=m CONFIG_VIDEOBUF_GEN=m CONFIG_VIDEOBUF_DMA_SG=m CONFIG_VIDEOBUF_VMALLOC=m @@ -4733,6 +4792,7 @@ CONFIG_VIDEO_HEXIUM_ORION=m CONFIG_VIDEO_MXB=m CONFIG_VIDEO_SOLO6X10=m CONFIG_VIDEO_TW68=m +CONFIG_VIDEO_DT3155=m # # Media capture/analog/hybrid TV support @@ -4758,6 +4818,7 @@ CONFIG_VIDEO_SAA7134_RC=y CONFIG_VIDEO_SAA7134_DVB=m CONFIG_VIDEO_SAA7134_GO7007=m CONFIG_VIDEO_SAA7164=m +CONFIG_VIDEO_COBALT=m # # Media digital TV PCI Adapters @@ -4895,6 +4956,8 @@ CONFIG_VIDEO_SAA6588=m # Video decoders # CONFIG_VIDEO_ADV7180=m +CONFIG_VIDEO_ADV7604=m +CONFIG_VIDEO_ADV7842=m CONFIG_VIDEO_BT819=m CONFIG_VIDEO_BT856=m CONFIG_VIDEO_BT866=m @@ -4920,6 +4983,7 @@ CONFIG_VIDEO_SAA7127=m CONFIG_VIDEO_SAA7185=m CONFIG_VIDEO_ADV7170=m CONFIG_VIDEO_ADV7175=m +CONFIG_VIDEO_ADV7511=m # # Camera sensor devices @@ -5046,6 +5110,7 @@ CONFIG_DVB_TDA826X=m CONFIG_DVB_TUA6100=m CONFIG_DVB_CX24116=m CONFIG_DVB_CX24117=m +CONFIG_DVB_CX24120=m CONFIG_DVB_SI21XX=m CONFIG_DVB_TS2020=m CONFIG_DVB_DS3000=m @@ -5188,6 +5253,9 @@ CONFIG_DRM_R128=m CONFIG_DRM_RADEON=m # CONFIG_DRM_RADEON_USERPTR is not set # CONFIG_DRM_RADEON_UMS is not set +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_AMDGPU_CIK=y +CONFIG_DRM_AMDGPU_USERPTR=y CONFIG_DRM_NOUVEAU=m CONFIG_NOUVEAU_DEBUG=5 CONFIG_NOUVEAU_DEBUG_DEFAULT=3 @@ -5196,7 +5264,7 @@ CONFIG_DRM_I810=m CONFIG_DRM_I915=m CONFIG_DRM_I915_KMS=y CONFIG_DRM_I915_FBDEV=y -CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT=y +# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set CONFIG_DRM_MGA=m CONFIG_DRM_SIS=m CONFIG_DRM_VIA=m @@ -5214,6 +5282,7 @@ CONFIG_DRM_AST=m CONFIG_DRM_CIRRUS_QEMU=m CONFIG_DRM_QXL=m # CONFIG_DRM_BOCHS is not set +CONFIG_DRM_VIRTIO_GPU=m CONFIG_DRM_PANEL=y # @@ -5422,11 +5491,11 @@ CONFIG_SND_SEQ_HRTIMER_DEFAULT=y CONFIG_SND_DYNAMIC_MINORS=y CONFIG_SND_MAX_CARDS=32 CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_PROC_FS=y CONFIG_SND_VERBOSE_PROCFS=y # CONFIG_SND_VERBOSE_PRINTK is not set # CONFIG_SND_DEBUG is not set CONFIG_SND_VMASTER=y -CONFIG_SND_KCTL_JACK=y CONFIG_SND_DMA_SGBUF=y CONFIG_SND_RAWMIDI_SEQ=m CONFIG_SND_OPL3_LIB_SEQ=m @@ -5569,20 +5638,16 @@ CONFIG_SND_YMFPCI=m # CONFIG_SND_HDA=m CONFIG_SND_HDA_INTEL=m -CONFIG_SND_HDA_DSP_LOADER=y -CONFIG_SND_HDA_PREALLOC_SIZE=64 CONFIG_SND_HDA_HWDEP=y CONFIG_SND_HDA_RECONFIG=y CONFIG_SND_HDA_INPUT_BEEP=y CONFIG_SND_HDA_INPUT_BEEP_MODE=0 -CONFIG_SND_HDA_INPUT_JACK=y CONFIG_SND_HDA_PATCH_LOADER=y CONFIG_SND_HDA_CODEC_REALTEK=m CONFIG_SND_HDA_CODEC_ANALOG=m CONFIG_SND_HDA_CODEC_SIGMATEL=m CONFIG_SND_HDA_CODEC_VIA=m CONFIG_SND_HDA_CODEC_HDMI=m -CONFIG_SND_HDA_I915=y CONFIG_SND_HDA_CODEC_CIRRUS=m CONFIG_SND_HDA_CODEC_CONEXANT=m CONFIG_SND_HDA_CODEC_CA0110=m @@ -5593,6 +5658,9 @@ CONFIG_SND_HDA_CODEC_SI3054=m CONFIG_SND_HDA_GENERIC=m CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 CONFIG_SND_HDA_CORE=m +CONFIG_SND_HDA_DSP_LOADER=y +CONFIG_SND_HDA_I915=y +CONFIG_SND_HDA_PREALLOC_SIZE=64 CONFIG_SND_SPI=y CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=m @@ -5621,6 +5689,7 @@ CONFIG_SND_PCMCIA=y CONFIG_SND_VXPOCKET=m CONFIG_SND_PDAUDIOCF=m CONFIG_SND_SOC=m +CONFIG_SND_SOC_AC97_BUS=y CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y CONFIG_SND_ATMEL_SOC=m CONFIG_SND_DESIGNWARE_I2S=m @@ -5654,6 +5723,7 @@ CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m CONFIG_SND_SOC_QCOM=m CONFIG_SND_SOC_XTFPGA_I2S=m CONFIG_SND_SOC_I2C_AND_SPI=m @@ -5661,6 +5731,7 @@ CONFIG_SND_SOC_I2C_AND_SPI=m # # CODEC drivers # +CONFIG_SND_SOC_AC97_CODEC=m CONFIG_SND_SOC_ADAU1701=m CONFIG_SND_SOC_AK4104=m CONFIG_SND_SOC_AK4554=m @@ -5689,6 +5760,7 @@ CONFIG_SND_SOC_PCM512x=m CONFIG_SND_SOC_PCM512x_I2C=m CONFIG_SND_SOC_PCM512x_SPI=m CONFIG_SND_SOC_RL6231=m +CONFIG_SND_SOC_RL6347A=m CONFIG_SND_SOC_RT286=m CONFIG_SND_SOC_RT5631=m CONFIG_SND_SOC_RT5640=m @@ -5710,6 +5782,7 @@ CONFIG_SND_SOC_STA32X=m CONFIG_SND_SOC_STA350=m CONFIG_SND_SOC_TAS2552=m CONFIG_SND_SOC_TAS5086=m +CONFIG_SND_SOC_TAS571X=m CONFIG_SND_SOC_TFA9879=m CONFIG_SND_SOC_TLV320AIC23=m CONFIG_SND_SOC_TLV320AIC23_I2C=m @@ -5870,6 +5943,7 @@ CONFIG_USB_DYNAMIC_MINORS=y # CONFIG_USB_OTG_WHITELIST is not set # CONFIG_USB_OTG_BLACKLIST_HUB is not set # CONFIG_USB_OTG_FSM is not set +CONFIG_USB_ULPI_BUS=m CONFIG_USB_MON=m CONFIG_USB_WUSB=m CONFIG_USB_WUSB_CBAF=m @@ -5960,6 +6034,7 @@ CONFIG_USB_MUSB_DUAL_ROLE=y # CONFIG_MUSB_PIO_ONLY=y CONFIG_USB_DWC3=m +CONFIG_USB_DWC3_ULPI=y # CONFIG_USB_DWC3_HOST is not set # CONFIG_USB_DWC3_GADGET is not set CONFIG_USB_DWC3_DUAL_ROLE=y @@ -5979,7 +6054,6 @@ CONFIG_USB_DWC2_HOST=y # # Gadget/Dual-role mode requires USB Gadget support to be enabled # -CONFIG_USB_DWC2_PLATFORM=y CONFIG_USB_DWC2_PCI=y # CONFIG_USB_DWC2_DEBUG is not set # CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set @@ -6243,6 +6317,7 @@ CONFIG_MMC_USDHI6ROL0=m CONFIG_MMC_REALTEK_PCI=m CONFIG_MMC_REALTEK_USB=m CONFIG_MMC_TOSHIBA_PCI=m +CONFIG_MMC_MTK=m CONFIG_MEMSTICK=m # CONFIG_MEMSTICK_DEBUG is not set @@ -6278,11 +6353,10 @@ CONFIG_LEDS_PCA9532=m CONFIG_LEDS_PCA9532_GPIO=y CONFIG_LEDS_GPIO=m CONFIG_LEDS_LP3944=m -CONFIG_LEDS_LP55XX_COMMON=m -CONFIG_LEDS_LP5521=m -CONFIG_LEDS_LP5523=m -CONFIG_LEDS_LP5562=m -CONFIG_LEDS_LP8501=m +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_LP5562 is not set +# CONFIG_LEDS_LP8501 is not set CONFIG_LEDS_LP8788=m CONFIG_LEDS_LP8860=m CONFIG_LEDS_CLEVO_MAIL=m @@ -6302,6 +6376,7 @@ CONFIG_LEDS_ADP5520=m CONFIG_LEDS_DELL_NETBOOKS=m CONFIG_LEDS_MC13783=m CONFIG_LEDS_TCA6507=m +CONFIG_LEDS_TLC591XX=m CONFIG_LEDS_MAX8997=m CONFIG_LEDS_LM355x=m CONFIG_LEDS_OT200=m @@ -6357,6 +6432,8 @@ CONFIG_INFINIBAND_SRP=m CONFIG_INFINIBAND_SRPT=m CONFIG_INFINIBAND_ISER=m CONFIG_INFINIBAND_ISERT=m +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_SUPPORT=y CONFIG_EDAC=y # CONFIG_EDAC_LEGACY_SYSFS is not set # CONFIG_EDAC_DEBUG is not set @@ -6384,8 +6461,9 @@ CONFIG_EDAC_I7300=m CONFIG_RTC_LIB=y CONFIG_RTC_CLASS=y CONFIG_RTC_HCTOSYS=y -CONFIG_RTC_SYSTOHC=y CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" # CONFIG_RTC_DEBUG is not set # @@ -6498,7 +6576,7 @@ CONFIG_RTC_DRV_AB3100=m # CONFIG_RTC_DRV_PCAP=m CONFIG_RTC_DRV_MC13XXX=m -CONFIG_RTC_DRV_XGENE=m +CONFIG_RTC_DRV_MT6397=m # # HID Sensor RTC drivers @@ -6543,6 +6621,7 @@ CONFIG_UIO_AEC=m CONFIG_UIO_SERCOS3=m CONFIG_UIO_PCI_GENERIC=m CONFIG_UIO_NETX=m +CONFIG_UIO_PRUSS=m CONFIG_UIO_MF624=m CONFIG_VFIO_IOMMU_TYPE1=m CONFIG_VFIO_VIRQFD=m @@ -6728,6 +6807,7 @@ CONFIG_COMEDI_USBDUXSIGMA=m CONFIG_COMEDI_VMK80XX=m CONFIG_COMEDI_8254=m CONFIG_COMEDI_8255=m +CONFIG_COMEDI_8255_SA=m CONFIG_COMEDI_KCOMEDILIB=m CONFIG_COMEDI_AMPLC_DIO200=m CONFIG_COMEDI_AMPLC_PC236=m @@ -6883,9 +6963,6 @@ CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m CONFIG_STAGING_MEDIA=y CONFIG_I2C_BCM2048=m CONFIG_DVB_CXD2099=m -CONFIG_VIDEO_DT3155=m -# CONFIG_DT3155_CCIR is not set -CONFIG_DT3155_STREAMING=y CONFIG_DVB_MN88472=m CONFIG_DVB_MN88473=m CONFIG_LIRC_STAGING=y @@ -6932,6 +7009,7 @@ CONFIG_FB_TFT_BD663474=m CONFIG_FB_TFT_HX8340BN=m CONFIG_FB_TFT_HX8347D=m CONFIG_FB_TFT_HX8353D=m +CONFIG_FB_TFT_HX8357D=m CONFIG_FB_TFT_ILI9163=m CONFIG_FB_TFT_ILI9320=m CONFIG_FB_TFT_ILI9325=m @@ -6955,16 +7033,6 @@ CONFIG_FB_TFT_UPD161704=m CONFIG_FB_TFT_WATTEROTT=m CONFIG_FB_FLEX=m CONFIG_FB_TFT_FBTFT_DEVICE=m -CONFIG_I2O=m -CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y -CONFIG_I2O_EXT_ADAPTEC=y -CONFIG_I2O_EXT_ADAPTEC_DMA64=y -CONFIG_I2O_CONFIG=m -# CONFIG_I2O_CONFIG_OLD_IOCTL is not set -CONFIG_I2O_BUS=m -CONFIG_I2O_BLOCK=m -CONFIG_I2O_SCSI=m -CONFIG_I2O_PROC=m CONFIG_X86_PLATFORM_DEVICES=y CONFIG_ACER_WMI=m CONFIG_ACERHDF=m @@ -6974,6 +7042,7 @@ CONFIG_DELL_LAPTOP=m CONFIG_DELL_WMI=m CONFIG_DELL_WMI_AIO=m CONFIG_DELL_SMO8800=m +CONFIG_DELL_RBTN=m CONFIG_FUJITSU_LAPTOP=m # CONFIG_FUJITSU_LAPTOP_DEBUG is not set CONFIG_FUJITSU_TABLET=m @@ -7023,11 +7092,13 @@ CONFIG_APPLE_GMUX=m CONFIG_INTEL_RST=m CONFIG_INTEL_SMARTCONNECT=m CONFIG_PVPANIC=m +CONFIG_INTEL_PMC_IPC=m CONFIG_CHROME_PLATFORMS=y CONFIG_CHROMEOS_LAPTOP=m CONFIG_CHROMEOS_PSTORE=m CONFIG_CROS_EC_CHARDEV=m CONFIG_CROS_EC_LPC=m +CONFIG_CROS_EC_PROTO=y CONFIG_CLKDEV_LOOKUP=y CONFIG_HAVE_CLK_PREPARE=y CONFIG_COMMON_CLK=y @@ -7089,6 +7160,7 @@ CONFIG_STE_MODEM_RPROC=m # # SOC (System On Chip) specific Drivers # +# CONFIG_SUNXI_SRAM is not set CONFIG_SOC_TI=y CONFIG_PM_DEVFREQ=y @@ -7111,6 +7183,7 @@ CONFIG_EXTCON=y # CONFIG_EXTCON_ADC_JACK=m CONFIG_EXTCON_ARIZONA=m +CONFIG_EXTCON_AXP288=m CONFIG_EXTCON_GPIO=m CONFIG_EXTCON_MAX14577=m CONFIG_EXTCON_MAX77693=m @@ -7144,6 +7217,8 @@ CONFIG_KXCJK1013=m CONFIG_MMA9551_CORE=m CONFIG_MMA9551=m CONFIG_MMA9553=m +CONFIG_STK8312=m +CONFIG_STK8BA50=m # # Analog to digital converters @@ -7213,6 +7288,7 @@ CONFIG_AD5755=m CONFIG_AD5764=m CONFIG_AD5791=m CONFIG_AD7303=m +CONFIG_M62332=m CONFIG_MAX517=m CONFIG_MCP4725=m CONFIG_MCP4922=m @@ -7266,9 +7342,11 @@ CONFIG_IIO_ADIS_LIB_BUFFER=y # # Light sensors # +CONFIG_ACPI_ALS=m CONFIG_ADJD_S311=m CONFIG_AL3320A=m CONFIG_APDS9300=m +CONFIG_BH1750=m CONFIG_CM32181=m CONFIG_CM3232=m CONFIG_CM3323=m @@ -7280,6 +7358,7 @@ CONFIG_HID_SENSOR_PROX=m CONFIG_JSA1212=m CONFIG_SENSORS_LM3533=m CONFIG_LTR501=m +CONFIG_STK3310=m CONFIG_TCS3414=m CONFIG_TCS3472=m CONFIG_SENSORS_TSL2563=m @@ -7293,9 +7372,11 @@ CONFIG_AK8975=m CONFIG_AK09911=m CONFIG_MAG3110=m CONFIG_HID_SENSOR_MAGNETOMETER_3D=m +CONFIG_MMC35240=m CONFIG_IIO_ST_MAGN_3AXIS=m CONFIG_IIO_ST_MAGN_I2C_3AXIS=m CONFIG_IIO_ST_MAGN_SPI_3AXIS=m +CONFIG_BMC150_MAGN=m # # Inclinometer sensors @@ -7340,6 +7421,9 @@ CONFIG_SX9500=m CONFIG_MLX90614=m CONFIG_TMP006=m CONFIG_NTB=m +CONFIG_NTB_PINGPONG=m +CONFIG_NTB_TOOL=m +CONFIG_NTB_TRANSPORT=m CONFIG_VME_BUS=y # @@ -7380,11 +7464,14 @@ CONFIG_FMC_CHARDEV=m # PHY Subsystem # CONFIG_GENERIC_PHY=y +CONFIG_PHY_PXA_28NM_HSIC=m +CONFIG_PHY_PXA_28NM_USB2=m CONFIG_BCM_KONA_USB2_PHY=m CONFIG_PHY_SAMSUNG_USB2=m # CONFIG_PHY_EXYNOS4210_USB2 is not set # CONFIG_PHY_EXYNOS4X12_USB2 is not set # CONFIG_PHY_EXYNOS5250_USB2 is not set +CONFIG_PHY_TUSB1210=m CONFIG_POWERCAP=y CONFIG_INTEL_RAPL=m CONFIG_MCB=m @@ -7396,6 +7483,11 @@ CONFIG_THUNDERBOLT=m # Android # # CONFIG_ANDROID is not set +CONFIG_LIBNVDIMM=y +CONFIG_BLK_DEV_PMEM=m +CONFIG_ND_BLK=m +CONFIG_ND_BTT=m +CONFIG_BTT=y # # Firmware Drivers @@ -7416,6 +7508,7 @@ CONFIG_ISCSI_IBFT=m # EFI (Extensible Firmware Interface) Support # CONFIG_EFI_VARS=y +CONFIG_EFI_ESRT=y CONFIG_EFI_VARS_PSTORE=m # CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set CONFIG_EFI_RUNTIME_MAP=y @@ -7476,6 +7569,7 @@ CONFIG_F2FS_FS_XATTR=y CONFIG_F2FS_FS_POSIX_ACL=y CONFIG_F2FS_FS_SECURITY=y # CONFIG_F2FS_CHECK_FS is not set +CONFIG_F2FS_FS_ENCRYPTION=y # CONFIG_F2FS_IO_TRACE is not set CONFIG_FS_DAX=y CONFIG_FS_POSIX_ACL=y @@ -7540,6 +7634,7 @@ CONFIG_PROC_KCORE=y CONFIG_PROC_VMCORE=y CONFIG_PROC_SYSCTL=y CONFIG_PROC_PAGE_MONITOR=y +CONFIG_PROC_CHILDREN=y CONFIG_KERNFS=y CONFIG_SYSFS=y CONFIG_TMPFS=y @@ -7662,8 +7757,7 @@ CONFIG_SUNRPC_BACKCHANNEL=y CONFIG_SUNRPC_SWAP=y CONFIG_RPCSEC_GSS_KRB5=m CONFIG_SUNRPC_DEBUG=y -CONFIG_SUNRPC_XPRT_RDMA_CLIENT=m -CONFIG_SUNRPC_XPRT_RDMA_SERVER=m +CONFIG_SUNRPC_XPRT_RDMA=m CONFIG_CEPH_FS=m CONFIG_CEPH_FSCACHE=y CONFIG_CEPH_FS_POSIX_ACL=y @@ -7679,6 +7773,7 @@ CONFIG_CIFS_DEBUG=y # CONFIG_CIFS_DEBUG2 is not set CONFIG_CIFS_DFS_UPCALL=y CONFIG_CIFS_SMB2=y +CONFIG_CIFS_SMB311=y CONFIG_CIFS_FSCACHE=y CONFIG_NCP_FS=m CONFIG_NCPFS_PACKET_SIGNING=y @@ -7824,6 +7919,7 @@ CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 CONFIG_PANIC_ON_OOPS_VALUE=0 CONFIG_PANIC_TIMEOUT=0 CONFIG_SCHED_DEBUG=y +CONFIG_SCHED_INFO=y CONFIG_SCHEDSTATS=y CONFIG_SCHED_STACK_END_CHECK=y # CONFIG_DEBUG_TIMEKEEPING is not set @@ -7861,6 +7957,7 @@ CONFIG_TORTURE_TEST=m CONFIG_RCU_CPU_STALL_TIMEOUT=60 # CONFIG_RCU_CPU_STALL_INFO is not set # CONFIG_RCU_TRACE is not set +# CONFIG_RCU_EQS_DEBUG is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set CONFIG_NOTIFIER_ERROR_INJECTION=m CONFIG_CPU_NOTIFIER_ERROR_INJECT=m @@ -7978,8 +8075,11 @@ CONFIG_DEFAULT_IO_DELAY_TYPE=1 # CONFIG_DEBUG_BOOT_PARAMS is not set # CONFIG_CPA_DEBUG is not set CONFIG_OPTIMIZE_INLINING=y +# CONFIG_DEBUG_ENTRY is not set # CONFIG_DEBUG_NMI_SELFTEST is not set # CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set +CONFIG_X86_DEBUG_FPU=y +CONFIG_PUNIT_ATOM_DEBUG=m # # Security options @@ -8069,8 +8169,12 @@ CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_HASH2=y CONFIG_CRYPTO_RNG=y CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=m CONFIG_CRYPTO_PCOMP=m CONFIG_CRYPTO_PCOMP2=y +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_AKCIPHER=m +CONFIG_CRYPTO_RSA=m CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y CONFIG_CRYPTO_USER=m @@ -8091,7 +8195,9 @@ CONFIG_CRYPTO_GLUE_HELPER_X86=m # CONFIG_CRYPTO_CCM=m CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_CHACHA20POLY1305=m CONFIG_CRYPTO_SEQIV=m +CONFIG_CRYPTO_ECHAINIV=m # # Block modes @@ -8121,6 +8227,7 @@ CONFIG_CRYPTO_CRC32=m CONFIG_CRYPTO_CRC32_PCLMUL=m CONFIG_CRYPTO_CRCT10DIF=y CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_POLY1305=m CONFIG_CRYPTO_MD4=m CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_MICHAEL_MIC=m @@ -8153,6 +8260,7 @@ CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_KHAZAD=m CONFIG_CRYPTO_SALSA20=m CONFIG_CRYPTO_SALSA20_586=m +CONFIG_CRYPTO_CHACHA20=m CONFIG_CRYPTO_SEED=m CONFIG_CRYPTO_SERPENT=m CONFIG_CRYPTO_SERPENT_SSE2_586=m @@ -8167,6 +8275,7 @@ CONFIG_CRYPTO_TWOFISH_586=m CONFIG_CRYPTO_DEFLATE=m CONFIG_CRYPTO_ZLIB=m CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_842=m CONFIG_CRYPTO_LZ4=m CONFIG_CRYPTO_LZ4HC=m @@ -8179,10 +8288,12 @@ CONFIG_CRYPTO_DRBG_HMAC=y CONFIG_CRYPTO_DRBG_HASH=y CONFIG_CRYPTO_DRBG_CTR=y CONFIG_CRYPTO_DRBG=m +CONFIG_CRYPTO_JITTERENTROPY=m CONFIG_CRYPTO_USER_API=m CONFIG_CRYPTO_USER_API_HASH=m CONFIG_CRYPTO_USER_API_SKCIPHER=m CONFIG_CRYPTO_USER_API_RNG=m +CONFIG_CRYPTO_USER_API_AEAD=m CONFIG_CRYPTO_HASH_INFO=y CONFIG_CRYPTO_HW=y CONFIG_CRYPTO_DEV_PADLOCK=y @@ -8253,6 +8364,8 @@ CONFIG_CRC8=m CONFIG_AUDIT_GENERIC=y # CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set # CONFIG_RANDOM32_SELFTEST is not set +CONFIG_842_COMPRESS=m +CONFIG_842_DECOMPRESS=m CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y @@ -8312,3 +8425,4 @@ CONFIG_FONT_SUPPORT=y CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y CONFIG_ARCH_HAS_SG_CHAIN=y +CONFIG_ARCH_HAS_PMEM_API=y diff --git a/gnu/packages/linux-libre-x86_64.conf b/gnu/packages/linux-libre-x86_64.conf index 82c5824923..e22b651f37 100644 --- a/gnu/packages/linux-libre-x86_64.conf +++ b/gnu/packages/linux-libre-x86_64.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 4.1.0-gnu Kernel Configuration +# Linux/x86 4.2.0-gnu Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y @@ -37,7 +37,6 @@ CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_HAVE_INTEL_TXT=y CONFIG_X86_64_SMP=y -CONFIG_X86_HT=y CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_FIX_EARLYCON_MEM=y @@ -86,11 +85,12 @@ CONFIG_AUDIT_TREE=y # CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_IRQ_SHOW=y -CONFIG_GENERIC_IRQ_LEGACY_ALLOC_HWIRQ=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_GENERIC_IRQ_CHIP=y CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_MSI_IRQ_DOMAIN=y # CONFIG_IRQ_DOMAIN_DEBUG is not set CONFIG_IRQ_FORCED_THREADING=y CONFIG_SPARSE_IRQ=y @@ -131,18 +131,11 @@ CONFIG_TASK_IO_ACCOUNTING=y # RCU Subsystem # CONFIG_TREE_RCU=y +# CONFIG_RCU_EXPERT is not set CONFIG_SRCU=y # CONFIG_TASKS_RCU is not set CONFIG_RCU_STALL_COMMON=y -CONFIG_CONTEXT_TRACKING=y -CONFIG_RCU_USER_QS=y -# CONFIG_CONTEXT_TRACKING_FORCE is not set -CONFIG_RCU_FANOUT=64 -CONFIG_RCU_FANOUT_LEAF=16 -# CONFIG_RCU_FANOUT_EXACT is not set -CONFIG_RCU_FAST_NO_HZ=y # CONFIG_TREE_RCU_TRACE is not set -CONFIG_RCU_KTHREAD_PRIO=0 CONFIG_RCU_NOCB_CPU=y # CONFIG_RCU_NOCB_CPU_NONE is not set # CONFIG_RCU_NOCB_CPU_ZERO is not set @@ -177,6 +170,7 @@ CONFIG_CFS_BANDWIDTH=y # CONFIG_RT_GROUP_SCHED is not set CONFIG_BLK_CGROUP=y # CONFIG_DEBUG_BLK_CGROUP is not set +CONFIG_CGROUP_WRITEBACK=y CONFIG_CHECKPOINT_RESTORE=y CONFIG_NAMESPACES=y CONFIG_UTS_NS=y @@ -266,6 +260,7 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y CONFIG_HAVE_DMA_ATTRS=y CONFIG_HAVE_DMA_CONTIGUOUS=y CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y CONFIG_HAVE_CLK=y CONFIG_HAVE_DMA_API_DEBUG=y @@ -298,6 +293,7 @@ CONFIG_HAVE_ARCH_SOFT_DIRTY=y CONFIG_MODULES_USE_ELF_RELA=y CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_COPY_THREAD_TLS=y CONFIG_OLD_SIGSUSPEND3=y CONFIG_COMPAT_OLD_SIGACTION=y @@ -318,6 +314,7 @@ CONFIG_MODVERSIONS=y CONFIG_MODULE_SRCVERSION_ALL=y # CONFIG_MODULE_SIG is not set # CONFIG_MODULE_COMPRESS is not set +CONFIG_MODULES_TREE_LOOKUP=y CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y CONFIG_BLK_DEV_BSG=y @@ -330,13 +327,7 @@ CONFIG_BLK_CMDLINE_PARSER=y # Partition Types # CONFIG_PARTITION_ADVANCED=y -CONFIG_ACORN_PARTITION=y -CONFIG_ACORN_PARTITION_CUMANA=y -CONFIG_ACORN_PARTITION_EESOX=y -CONFIG_ACORN_PARTITION_ICS=y -CONFIG_ACORN_PARTITION_ADFS=y -CONFIG_ACORN_PARTITION_POWERTEC=y -CONFIG_ACORN_PARTITION_RISCIX=y +# CONFIG_ACORN_PARTITION is not set CONFIG_AIX_PARTITION=y CONFIG_OSF_PARTITION=y CONFIG_AMIGA_PARTITION=y @@ -372,7 +363,6 @@ CONFIG_DEFAULT_IOSCHED="deadline" CONFIG_PREEMPT_NOTIFIERS=y CONFIG_PADATA=y CONFIG_ASN1=y -CONFIG_UNINLINE_SPIN_UNLOCK=y CONFIG_INLINE_SPIN_UNLOCK_IRQ=y CONFIG_INLINE_READ_UNLOCK=y CONFIG_INLINE_READ_UNLOCK_IRQ=y @@ -382,8 +372,10 @@ CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y CONFIG_MUTEX_SPIN_ON_OWNER=y CONFIG_RWSEM_SPIN_ON_OWNER=y CONFIG_LOCK_SPIN_ON_OWNER=y -CONFIG_ARCH_USE_QUEUE_RWLOCK=y -CONFIG_QUEUE_RWLOCK=y +CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +CONFIG_QUEUED_RWLOCKS=y CONFIG_FREEZER=y # @@ -542,7 +534,9 @@ CONFIG_ZSMALLOC=y CONFIG_PGTABLE_MAPPING=y # CONFIG_ZSMALLOC_STAT is not set CONFIG_GENERIC_EARLY_IOREMAP=y -# CONFIG_X86_PMEM_LEGACY is not set +CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y +# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set +CONFIG_X86_PMEM_LEGACY=y CONFIG_X86_CHECK_BIOS_CORRUPTION=y CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y CONFIG_X86_RESERVE_LOW=64 @@ -618,6 +612,7 @@ CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y CONFIG_ACPI_SLEEP=y # CONFIG_ACPI_PROCFS_POWER is not set +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y CONFIG_ACPI_EC_DEBUGFS=m CONFIG_ACPI_AC=y CONFIG_ACPI_BATTERY=y @@ -645,6 +640,8 @@ CONFIG_ACPI_HED=y # CONFIG_ACPI_CUSTOM_METHOD is not set CONFIG_ACPI_BGRT=y # CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set +CONFIG_ACPI_NFIT=m +# CONFIG_ACPI_NFIT_DEBUG is not set CONFIG_HAVE_ACPI_APEI=y CONFIG_HAVE_ACPI_APEI_NMI=y CONFIG_ACPI_APEI=y @@ -727,7 +724,9 @@ CONFIG_PCIEASPM_DEFAULT=y # CONFIG_PCIEASPM_POWERSAVE is not set # CONFIG_PCIEASPM_PERFORMANCE is not set CONFIG_PCIE_PME=y +CONFIG_PCI_BUS_ADDR_T_64BIT=y CONFIG_PCI_MSI=y +CONFIG_PCI_MSI_IRQ_DOMAIN=y # CONFIG_PCI_DEBUG is not set CONFIG_PCI_REALLOC_ENABLE_AUTO=y CONFIG_PCI_STUB=m @@ -806,6 +805,7 @@ CONFIG_X86_DEV_DMA_OPS=y CONFIG_PMC_ATOM=y CONFIG_NET=y CONFIG_COMPAT_NETLINK_MESSAGES=y +CONFIG_NET_INGRESS=y # # Networking options @@ -849,7 +849,7 @@ CONFIG_NET_IPVTI=m CONFIG_NET_UDP_TUNNEL=m CONFIG_NET_FOU=m CONFIG_NET_FOU_IP_TUNNELS=y -CONFIG_GENEVE=m +CONFIG_GENEVE_CORE=m CONFIG_INET_AH=m CONFIG_INET_ESP=m CONFIG_INET_IPCOMP=m @@ -876,6 +876,7 @@ CONFIG_TCP_CONG_VENO=m CONFIG_TCP_CONG_YEAH=m CONFIG_TCP_CONG_ILLINOIS=m CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m CONFIG_DEFAULT_CUBIC=y # CONFIG_DEFAULT_RENO is not set CONFIG_DEFAULT_TCP_CONG="cubic" @@ -917,6 +918,7 @@ CONFIG_BRIDGE_NETFILTER=m # # Core Netfilter Configuration # +CONFIG_NETFILTER_INGRESS=y CONFIG_NETFILTER_NETLINK=m CONFIG_NETFILTER_NETLINK_ACCT=m CONFIG_NETFILTER_NETLINK_QUEUE=m @@ -964,6 +966,7 @@ CONFIG_NF_NAT_REDIRECT=m CONFIG_NETFILTER_SYNPROXY=m CONFIG_NF_TABLES=m CONFIG_NF_TABLES_INET=m +CONFIG_NF_TABLES_NETDEV=m CONFIG_NFT_EXTHDR=m CONFIG_NFT_META=m CONFIG_NFT_CT=m @@ -1358,6 +1361,7 @@ CONFIG_NET_CLS_RSVP6=m CONFIG_NET_CLS_FLOW=m CONFIG_NET_CLS_CGROUP=m CONFIG_NET_CLS_BPF=m +CONFIG_NET_CLS_FLOWER=m CONFIG_NET_EMATCH=y CONFIG_NET_EMATCH_STACK=32 CONFIG_NET_EMATCH_CMP=m @@ -1564,8 +1568,10 @@ CONFIG_BT_DEBUGFS=y # CONFIG_BT_INTEL=m CONFIG_BT_BCM=m +CONFIG_BT_RTL=m CONFIG_BT_HCIBTUSB=m CONFIG_BT_HCIBTUSB_BCM=y +CONFIG_BT_HCIBTUSB_RTL=y CONFIG_BT_HCIBTSDIO=m CONFIG_BT_HCIUART=m CONFIG_BT_HCIUART_H4=y @@ -1624,6 +1630,7 @@ CONFIG_MAC80211_LEDS=y CONFIG_MAC80211_DEBUGFS=y CONFIG_MAC80211_MESSAGE_TRACING=y # CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 CONFIG_WIMAX=m CONFIG_WIMAX_DEBUG_LEVEL=8 CONFIG_RFKILL=y @@ -1646,6 +1653,7 @@ CONFIG_NFC=m CONFIG_NFC_DIGITAL=m CONFIG_NFC_NCI=m CONFIG_NFC_NCI_SPI=y +CONFIG_NFC_NCI_UART=m CONFIG_NFC_HCI=m CONFIG_NFC_SHDLC=y @@ -1666,10 +1674,11 @@ CONFIG_NFC_MICROREAD_I2C=m CONFIG_NFC_MICROREAD_MEI=m CONFIG_NFC_MRVL=m CONFIG_NFC_MRVL_USB=m +CONFIG_NFC_MRVL_UART=m CONFIG_NFC_ST21NFCA=m CONFIG_NFC_ST21NFCA_I2C=m -CONFIG_NFC_ST21NFCB=m -CONFIG_NFC_ST21NFCB_I2C=m +CONFIG_NFC_ST_NCI=m +CONFIG_NFC_ST_NCI_I2C=m CONFIG_NFC_NXP_NCI=m CONFIG_NFC_NXP_NCI_I2C=m CONFIG_HAVE_BPF_JIT=y @@ -1854,6 +1863,7 @@ CONFIG_MTD_UBI_BEB_LIMIT=20 CONFIG_MTD_UBI_FASTMAP=y CONFIG_MTD_UBI_GLUEBI=m CONFIG_MTD_UBI_BLOCK=y +# CONFIG_OF is not set CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y CONFIG_PARPORT=m CONFIG_PARPORT_PC=m @@ -1907,7 +1917,6 @@ CONFIG_PARIDE_ON26=m CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m CONFIG_ZRAM=m CONFIG_ZRAM_LZ4_COMPRESS=y -# CONFIG_ZRAM_DEBUG is not set CONFIG_BLK_CPQ_CISS_DA=m CONFIG_CISS_SCSI_TAPE=y CONFIG_BLK_DEV_DAC960=m @@ -1927,7 +1936,6 @@ CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=65536 CONFIG_BLK_DEV_RAM_DAX=y -CONFIG_BLK_DEV_PMEM=m CONFIG_CDROM_PKTCDVD=m CONFIG_CDROM_PKTCDVD_BUFFERS=8 # CONFIG_CDROM_PKTCDVD_WCACHE is not set @@ -2008,6 +2016,11 @@ CONFIG_VMWARE_VMCI=m # CONFIG_INTEL_MIC_BUS=m +# +# SCIF Bus Driver +# +CONFIG_SCIF_BUS=m + # # Intel MIC Host Driver # @@ -2017,10 +2030,16 @@ CONFIG_INTEL_MIC_HOST=m # Intel MIC Card Driver # CONFIG_INTEL_MIC_CARD=m + +# +# SCIF Driver +# +CONFIG_SCIF=m CONFIG_GENWQE=m CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0 CONFIG_ECHO=m # CONFIG_CXL_BASE is not set +# CONFIG_CXL_KERNEL_API is not set CONFIG_HAVE_IDE=y # CONFIG_IDE is not set @@ -2121,6 +2140,8 @@ CONFIG_LIBFC=m CONFIG_LIBFCOE=m CONFIG_FCOE=m CONFIG_FCOE_FNIC=m +CONFIG_SCSI_SNIC=m +# CONFIG_SCSI_SNIC_DEBUG_FS is not set CONFIG_SCSI_DMX3191D=m CONFIG_SCSI_EATA=m CONFIG_SCSI_EATA_TAGGED_QUEUE=y @@ -2294,6 +2315,7 @@ CONFIG_DM_SNAPSHOT=m CONFIG_DM_THIN_PROVISIONING=m CONFIG_DM_CACHE=m CONFIG_DM_CACHE_MQ=m +CONFIG_DM_CACHE_SMQ=m CONFIG_DM_CACHE_CLEANER=m CONFIG_DM_ERA=m CONFIG_DM_MIRROR=m @@ -2355,6 +2377,7 @@ CONFIG_MACVLAN=m CONFIG_MACVTAP=m CONFIG_IPVLAN=m CONFIG_VXLAN=m +CONFIG_GENEVE=m CONFIG_NETCONSOLE=m CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETPOLL=y @@ -2364,6 +2387,7 @@ CONFIG_RIONET=m CONFIG_RIONET_TX_SIZE=128 CONFIG_RIONET_RX_SIZE=128 CONFIG_TUN=y +# CONFIG_TUN_VNET_CROSS_LE is not set CONFIG_VETH=m CONFIG_VIRTIO_NET=y CONFIG_NLMON=m @@ -2422,6 +2446,7 @@ CONFIG_VHOST_NET=m CONFIG_VHOST_SCSI=m CONFIG_VHOST_RING=m CONFIG_VHOST=m +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set # # Distributed Switch Architecture drivers @@ -2469,6 +2494,11 @@ CONFIG_BNX2X=m CONFIG_BNX2X_SRIOV=y CONFIG_NET_VENDOR_BROCADE=y CONFIG_BNA=m +CONFIG_NET_VENDOR_CAVIUM=m +CONFIG_THUNDER_NIC_PF=m +CONFIG_THUNDER_NIC_VF=m +CONFIG_THUNDER_NIC_BGX=m +CONFIG_LIQUIDIO=m CONFIG_NET_VENDOR_CHELSIO=y CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T1_1G=y @@ -2500,7 +2530,9 @@ CONFIG_SUNDANCE=m # CONFIG_SUNDANCE_MMIO is not set CONFIG_NET_VENDOR_EMULEX=y CONFIG_BE2NET=m +CONFIG_BE2NET_HWMON=y CONFIG_BE2NET_VXLAN=y +CONFIG_NET_VENDOR_EZCHIP=y CONFIG_NET_VENDOR_EXAR=y CONFIG_S2IO=m CONFIG_VXGE=m @@ -2548,6 +2580,7 @@ CONFIG_MLX4_EN_VXLAN=y CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_MLX5_CORE=m +CONFIG_MLX5_CORE_EN=y CONFIG_NET_VENDOR_MICREL=y CONFIG_KS8842=m CONFIG_KS8851=m @@ -2593,6 +2626,7 @@ CONFIG_8139TOO_PIO=y CONFIG_8139TOO_8129=y # CONFIG_8139_OLD_RX_RESET is not set CONFIG_R8169=m +CONFIG_NET_VENDOR_RENESAS=y CONFIG_NET_VENDOR_RDC=y CONFIG_R6040=m CONFIG_NET_VENDOR_ROCKER=y @@ -2608,6 +2642,7 @@ CONFIG_SFC=m CONFIG_SFC_MTD=y CONFIG_SFC_MCDI_MON=y CONFIG_SFC_SRIOV=y +CONFIG_SFC_MCDI_LOGGING=y CONFIG_NET_VENDOR_SMSC=y CONFIG_PCMCIA_SMC91C92=m CONFIG_EPIC100=m @@ -2617,6 +2652,7 @@ CONFIG_SMSC9420=m CONFIG_NET_VENDOR_STMICRO=y CONFIG_STMMAC_ETH=m CONFIG_STMMAC_PLATFORM=m +CONFIG_DWMAC_GENERIC=m # CONFIG_STMMAC_PCI is not set CONFIG_NET_VENDOR_SUN=y CONFIG_HAPPYMEAL=m @@ -2669,6 +2705,7 @@ CONFIG_NATIONAL_PHY=m CONFIG_STE10XP=m CONFIG_LSI_ET1011C_PHY=m CONFIG_MICREL_PHY=m +CONFIG_DP83867_PHY=m CONFIG_FIXED_PHY=y CONFIG_MDIO_BITBANG=m CONFIG_MDIO_GPIO=m @@ -2928,6 +2965,8 @@ CONFIG_RT2X00_LIB_CRYPTO=y CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_LIB_DEBUGFS is not set # CONFIG_RT2X00_DEBUG is not set +CONFIG_WL_MEDIATEK=y +CONFIG_MT7601U=m CONFIG_RTL_CARDS=m CONFIG_RTL8192CE=m CONFIG_RTL8192SE=m @@ -3002,6 +3041,7 @@ CONFIG_IEEE802154_FAKELB=m CONFIG_IEEE802154_AT86RF230=m CONFIG_IEEE802154_MRF24J40=m CONFIG_IEEE802154_CC2520=m +CONFIG_IEEE802154_ATUSB=m CONFIG_XEN_NETDEV_FRONTEND=y CONFIG_XEN_NETDEV_BACKEND=m CONFIG_VMXNET3=m @@ -3142,6 +3182,7 @@ CONFIG_ISDN_HDLC=m # Input device support # CONFIG_INPUT=y +CONFIG_INPUT_LEDS=m CONFIG_INPUT_FF_MEMLESS=m CONFIG_INPUT_POLLDEV=m CONFIG_INPUT_SPARSEKMAP=m @@ -3292,6 +3333,7 @@ CONFIG_TOUCHSCREEN_TOUCHWIN=m CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m CONFIG_TOUCHSCREEN_UCB1400=m CONFIG_TOUCHSCREEN_PIXCIR=m +CONFIG_TOUCHSCREEN_WDT87XX_I2C=m CONFIG_TOUCHSCREEN_WM831X=m CONFIG_TOUCHSCREEN_WM97XX=m CONFIG_TOUCHSCREEN_WM9705=y @@ -3371,6 +3413,7 @@ CONFIG_INPUT_PWM_BEEPER=m CONFIG_INPUT_GPIO_ROTARY_ENCODER=m CONFIG_INPUT_DA9052_ONKEY=m CONFIG_INPUT_DA9055_ONKEY=m +CONFIG_INPUT_DA9063_ONKEY=m CONFIG_INPUT_WM831X_ON=m CONFIG_INPUT_PCAP=m CONFIG_INPUT_ADXL34X=m @@ -3383,6 +3426,7 @@ CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m CONFIG_INPUT_IDEAPAD_SLIDEBAR=m CONFIG_INPUT_SOC_BUTTON_ARRAY=m CONFIG_INPUT_DRV260X_HAPTICS=m +CONFIG_INPUT_DRV2665_HAPTICS=m CONFIG_INPUT_DRV2667_HAPTICS=m # @@ -3472,7 +3516,10 @@ CONFIG_CONSOLE_POLL=y CONFIG_SERIAL_JSM=m CONFIG_SERIAL_SCCNXP=y CONFIG_SERIAL_SCCNXP_CONSOLE=y +CONFIG_SERIAL_SC16IS7XX_CORE=m CONFIG_SERIAL_SC16IS7XX=m +CONFIG_SERIAL_SC16IS7XX_I2C=y +CONFIG_SERIAL_SC16IS7XX_SPI=y CONFIG_SERIAL_ALTERA_JTAGUART=m CONFIG_SERIAL_ALTERA_UART=m CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4 @@ -3653,6 +3700,7 @@ CONFIG_SPI_PXA2XX_PCI=m CONFIG_SPI_SC18IS602=m CONFIG_SPI_XCOMM=m # CONFIG_SPI_XILINX is not set +CONFIG_SPI_ZYNQMP_GQSPI=m CONFIG_SPI_DESIGNWARE=m CONFIG_SPI_DW_PCI=m CONFIG_SPI_DW_MID_DMA=y @@ -3843,6 +3891,7 @@ CONFIG_BATTERY_BQ27X00_PLATFORM=y CONFIG_BATTERY_DA9030=m CONFIG_BATTERY_DA9052=m CONFIG_CHARGER_DA9150=m +CONFIG_AXP288_CHARGER=m CONFIG_AXP288_FUEL_GAUGE=m CONFIG_BATTERY_MAX17040=m CONFIG_BATTERY_MAX17042=m @@ -3863,11 +3912,14 @@ CONFIG_CHARGER_MAX8997=m CONFIG_CHARGER_MAX8998=m CONFIG_CHARGER_BQ2415X=m CONFIG_CHARGER_BQ24190=m +CONFIG_CHARGER_BQ24257=m CONFIG_CHARGER_BQ24735=m +CONFIG_CHARGER_BQ25890=m CONFIG_CHARGER_SMB347=m CONFIG_CHARGER_TPS65090=m CONFIG_BATTERY_GAUGE_LTC2941=m CONFIG_BATTERY_RT5033=m +CONFIG_CHARGER_RT9455=m CONFIG_POWER_RESET=y CONFIG_POWER_RESET_RESTART=y CONFIG_POWER_AVS=y @@ -3905,6 +3957,7 @@ CONFIG_SENSORS_ASB100=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_DS620=m CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_DELL_SMM=m CONFIG_SENSORS_DA9052_ADC=m CONFIG_SENSORS_DA9055=m CONFIG_SENSORS_I5K_AMB=m @@ -4007,6 +4060,7 @@ CONFIG_SENSORS_ADS7871=m CONFIG_SENSORS_AMC6821=m CONFIG_SENSORS_INA209=m CONFIG_SENSORS_INA2XX=m +CONFIG_SENSORS_TC74=m CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_TMP102=m CONFIG_SENSORS_TMP103=m @@ -4037,16 +4091,20 @@ CONFIG_SENSORS_ACPI_POWER=m CONFIG_SENSORS_ATK0110=m CONFIG_THERMAL=y CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_WRITABLE_TRIPS=y CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set CONFIG_THERMAL_GOV_FAIR_SHARE=y CONFIG_THERMAL_GOV_STEP_WISE=y CONFIG_THERMAL_GOV_BANG_BANG=y CONFIG_THERMAL_GOV_USER_SPACE=y +CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y CONFIG_THERMAL_EMULATION=y CONFIG_INTEL_POWERCLAMP=m CONFIG_X86_PKG_TEMP_THERMAL=m +CONFIG_INTEL_SOC_DTS_IOSF_CORE=m CONFIG_INTEL_SOC_DTS_THERMAL=m CONFIG_INT340X_THERMAL=m CONFIG_ACPI_THERMAL_REL=m @@ -4073,6 +4131,7 @@ CONFIG_CADENCE_WATCHDOG=m CONFIG_DW_WATCHDOG=m CONFIG_RN5T618_WATCHDOG=m CONFIG_TWL4030_WATCHDOG=m +CONFIG_MAX63XX_WATCHDOG=m CONFIG_RETU_WATCHDOG=m CONFIG_ACQUIRE_WDT=m CONFIG_ADVANTECH_WDT=m @@ -4166,6 +4225,7 @@ CONFIG_MFD_BCM590XX=m CONFIG_MFD_AXP20X=y CONFIG_MFD_CROS_EC=m CONFIG_MFD_CROS_EC_I2C=m +CONFIG_MFD_CROS_EC_SPI=m CONFIG_PMIC_DA903X=y CONFIG_PMIC_DA9052=y CONFIG_MFD_DA9052_SPI=y @@ -4309,6 +4369,7 @@ CONFIG_REGULATOR_PCAP=m CONFIG_REGULATOR_PCF50633=m CONFIG_REGULATOR_PFUZE100=m CONFIG_REGULATOR_PWM=m +CONFIG_REGULATOR_QCOM_SPMI=m CONFIG_REGULATOR_RC5T583=m CONFIG_REGULATOR_RN5T618=m CONFIG_REGULATOR_RT5033=m @@ -4352,6 +4413,7 @@ CONFIG_VIDEO_V4L2=m # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set CONFIG_VIDEO_TUNER=m CONFIG_V4L2_MEM2MEM_DEV=m +CONFIG_V4L2_FLASH_LED_CLASS=m CONFIG_VIDEOBUF_GEN=m CONFIG_VIDEOBUF_DMA_SG=m CONFIG_VIDEOBUF_VMALLOC=m @@ -4590,6 +4652,7 @@ CONFIG_VIDEO_HEXIUM_ORION=m CONFIG_VIDEO_MXB=m CONFIG_VIDEO_SOLO6X10=m CONFIG_VIDEO_TW68=m +CONFIG_VIDEO_DT3155=m # # Media capture/analog/hybrid TV support @@ -4615,6 +4678,7 @@ CONFIG_VIDEO_SAA7134_RC=y CONFIG_VIDEO_SAA7134_DVB=m CONFIG_VIDEO_SAA7134_GO7007=m CONFIG_VIDEO_SAA7164=m +CONFIG_VIDEO_COBALT=m # # Media digital TV PCI Adapters @@ -4735,6 +4799,8 @@ CONFIG_VIDEO_SAA6588=m # # Video decoders # +CONFIG_VIDEO_ADV7604=m +CONFIG_VIDEO_ADV7842=m CONFIG_VIDEO_BT819=m CONFIG_VIDEO_BT856=m CONFIG_VIDEO_BT866=m @@ -4760,6 +4826,7 @@ CONFIG_VIDEO_SAA7127=m CONFIG_VIDEO_SAA7185=m CONFIG_VIDEO_ADV7170=m CONFIG_VIDEO_ADV7175=m +CONFIG_VIDEO_ADV7511=m # # Camera sensor devices @@ -4886,6 +4953,7 @@ CONFIG_DVB_TDA826X=m CONFIG_DVB_TUA6100=m CONFIG_DVB_CX24116=m CONFIG_DVB_CX24117=m +CONFIG_DVB_CX24120=m CONFIG_DVB_SI21XX=m CONFIG_DVB_TS2020=m CONFIG_DVB_DS3000=m @@ -5022,6 +5090,9 @@ CONFIG_DRM_R128=m CONFIG_DRM_RADEON=m # CONFIG_DRM_RADEON_USERPTR is not set # CONFIG_DRM_RADEON_UMS is not set +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_AMDGPU_CIK=y +CONFIG_DRM_AMDGPU_USERPTR=y CONFIG_DRM_NOUVEAU=m CONFIG_NOUVEAU_DEBUG=5 CONFIG_NOUVEAU_DEBUG_DEFAULT=3 @@ -5030,7 +5101,7 @@ CONFIG_DRM_I810=m CONFIG_DRM_I915=m CONFIG_DRM_I915_KMS=y CONFIG_DRM_I915_FBDEV=y -CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT=y +# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set CONFIG_DRM_MGA=m CONFIG_DRM_SIS=m CONFIG_DRM_VIA=m @@ -5047,6 +5118,7 @@ CONFIG_DRM_AST=m CONFIG_DRM_CIRRUS_QEMU=m CONFIG_DRM_QXL=m # CONFIG_DRM_BOCHS is not set +CONFIG_DRM_VIRTIO_GPU=m CONFIG_DRM_PANEL=y # @@ -5249,11 +5321,11 @@ CONFIG_SND_SEQ_HRTIMER_DEFAULT=y CONFIG_SND_DYNAMIC_MINORS=y CONFIG_SND_MAX_CARDS=32 CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_PROC_FS=y CONFIG_SND_VERBOSE_PROCFS=y # CONFIG_SND_VERBOSE_PRINTK is not set # CONFIG_SND_DEBUG is not set CONFIG_SND_VMASTER=y -CONFIG_SND_KCTL_JACK=y CONFIG_SND_DMA_SGBUF=y CONFIG_SND_RAWMIDI_SEQ=m CONFIG_SND_OPL3_LIB_SEQ=m @@ -5355,20 +5427,16 @@ CONFIG_SND_YMFPCI=m # CONFIG_SND_HDA=m CONFIG_SND_HDA_INTEL=m -CONFIG_SND_HDA_DSP_LOADER=y -CONFIG_SND_HDA_PREALLOC_SIZE=64 CONFIG_SND_HDA_HWDEP=y CONFIG_SND_HDA_RECONFIG=y CONFIG_SND_HDA_INPUT_BEEP=y CONFIG_SND_HDA_INPUT_BEEP_MODE=0 -CONFIG_SND_HDA_INPUT_JACK=y CONFIG_SND_HDA_PATCH_LOADER=y CONFIG_SND_HDA_CODEC_REALTEK=m CONFIG_SND_HDA_CODEC_ANALOG=m CONFIG_SND_HDA_CODEC_SIGMATEL=m CONFIG_SND_HDA_CODEC_VIA=m CONFIG_SND_HDA_CODEC_HDMI=m -CONFIG_SND_HDA_I915=y CONFIG_SND_HDA_CODEC_CIRRUS=m CONFIG_SND_HDA_CODEC_CONEXANT=m CONFIG_SND_HDA_CODEC_CA0110=m @@ -5379,6 +5447,9 @@ CONFIG_SND_HDA_CODEC_SI3054=m CONFIG_SND_HDA_GENERIC=m CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 CONFIG_SND_HDA_CORE=m +CONFIG_SND_HDA_DSP_LOADER=y +CONFIG_SND_HDA_I915=y +CONFIG_SND_HDA_PREALLOC_SIZE=64 CONFIG_SND_SPI=y CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=m @@ -5407,6 +5478,7 @@ CONFIG_SND_PCMCIA=y CONFIG_SND_VXPOCKET=m CONFIG_SND_PDAUDIOCF=m CONFIG_SND_SOC=m +CONFIG_SND_SOC_AC97_BUS=y CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y CONFIG_SND_ATMEL_SOC=m CONFIG_SND_DESIGNWARE_I2S=m @@ -5438,6 +5510,7 @@ CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m CONFIG_SND_SOC_QCOM=m CONFIG_SND_SOC_XTFPGA_I2S=m CONFIG_SND_SOC_I2C_AND_SPI=m @@ -5445,6 +5518,7 @@ CONFIG_SND_SOC_I2C_AND_SPI=m # # CODEC drivers # +CONFIG_SND_SOC_AC97_CODEC=m CONFIG_SND_SOC_ADAU1701=m CONFIG_SND_SOC_AK4104=m CONFIG_SND_SOC_AK4554=m @@ -5473,6 +5547,7 @@ CONFIG_SND_SOC_PCM512x=m CONFIG_SND_SOC_PCM512x_I2C=m CONFIG_SND_SOC_PCM512x_SPI=m CONFIG_SND_SOC_RL6231=m +CONFIG_SND_SOC_RL6347A=m CONFIG_SND_SOC_RT286=m CONFIG_SND_SOC_RT5631=m CONFIG_SND_SOC_RT5640=m @@ -5493,6 +5568,7 @@ CONFIG_SND_SOC_STA32X=m CONFIG_SND_SOC_STA350=m CONFIG_SND_SOC_TAS2552=m CONFIG_SND_SOC_TAS5086=m +CONFIG_SND_SOC_TAS571X=m CONFIG_SND_SOC_TFA9879=m CONFIG_SND_SOC_TLV320AIC23=m CONFIG_SND_SOC_TLV320AIC23_I2C=m @@ -5653,6 +5729,7 @@ CONFIG_USB_DYNAMIC_MINORS=y # CONFIG_USB_OTG_WHITELIST is not set # CONFIG_USB_OTG_BLACKLIST_HUB is not set # CONFIG_USB_OTG_FSM is not set +CONFIG_USB_ULPI_BUS=m CONFIG_USB_MON=m CONFIG_USB_WUSB=m CONFIG_USB_WUSB_CBAF=m @@ -5743,6 +5820,7 @@ CONFIG_USB_MUSB_DUAL_ROLE=y # CONFIG_MUSB_PIO_ONLY=y CONFIG_USB_DWC3=m +CONFIG_USB_DWC3_ULPI=y # CONFIG_USB_DWC3_HOST is not set # CONFIG_USB_DWC3_GADGET is not set CONFIG_USB_DWC3_DUAL_ROLE=y @@ -5762,7 +5840,6 @@ CONFIG_USB_DWC2_HOST=y # # Gadget/Dual-role mode requires USB Gadget support to be enabled # -CONFIG_USB_DWC2_PLATFORM=y CONFIG_USB_DWC2_PCI=y # CONFIG_USB_DWC2_DEBUG is not set # CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set @@ -6027,6 +6104,7 @@ CONFIG_MMC_USDHI6ROL0=m CONFIG_MMC_REALTEK_PCI=m CONFIG_MMC_REALTEK_USB=m CONFIG_MMC_TOSHIBA_PCI=m +CONFIG_MMC_MTK=m CONFIG_MEMSTICK=m # CONFIG_MEMSTICK_DEBUG is not set @@ -6060,11 +6138,10 @@ CONFIG_LEDS_PCA9532=m CONFIG_LEDS_PCA9532_GPIO=y CONFIG_LEDS_GPIO=m CONFIG_LEDS_LP3944=m -CONFIG_LEDS_LP55XX_COMMON=m -CONFIG_LEDS_LP5521=m -CONFIG_LEDS_LP5523=m -CONFIG_LEDS_LP5562=m -CONFIG_LEDS_LP8501=m +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_LP5562 is not set +# CONFIG_LEDS_LP8501 is not set CONFIG_LEDS_LP8788=m CONFIG_LEDS_LP8860=m CONFIG_LEDS_CLEVO_MAIL=m @@ -6084,6 +6161,7 @@ CONFIG_LEDS_ADP5520=m CONFIG_LEDS_DELL_NETBOOKS=m CONFIG_LEDS_MC13783=m CONFIG_LEDS_TCA6507=m +CONFIG_LEDS_TLC591XX=m CONFIG_LEDS_MAX8997=m CONFIG_LEDS_LM355x=m CONFIG_LEDS_MENF21BMC=m @@ -6141,6 +6219,8 @@ CONFIG_INFINIBAND_SRP=m CONFIG_INFINIBAND_SRPT=m CONFIG_INFINIBAND_ISER=m CONFIG_INFINIBAND_ISERT=m +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_SUPPORT=y CONFIG_EDAC=y # CONFIG_EDAC_LEGACY_SYSFS is not set # CONFIG_EDAC_DEBUG is not set @@ -6164,8 +6244,9 @@ CONFIG_EDAC_SBRIDGE=m CONFIG_RTC_LIB=y CONFIG_RTC_CLASS=y CONFIG_RTC_HCTOSYS=y -CONFIG_RTC_SYSTOHC=y CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" # CONFIG_RTC_DEBUG is not set # @@ -6277,7 +6358,7 @@ CONFIG_RTC_DRV_AB3100=m # CONFIG_RTC_DRV_PCAP=m CONFIG_RTC_DRV_MC13XXX=m -CONFIG_RTC_DRV_XGENE=y +CONFIG_RTC_DRV_MT6397=m # # HID Sensor RTC drivers @@ -6321,6 +6402,7 @@ CONFIG_UIO_AEC=m CONFIG_UIO_SERCOS3=m CONFIG_UIO_PCI_GENERIC=m CONFIG_UIO_NETX=m +CONFIG_UIO_PRUSS=m CONFIG_UIO_MF624=m CONFIG_VFIO_IOMMU_TYPE1=m CONFIG_VFIO_VIRQFD=m @@ -6507,6 +6589,7 @@ CONFIG_COMEDI_USBDUXSIGMA=m CONFIG_COMEDI_VMK80XX=m CONFIG_COMEDI_8254=m CONFIG_COMEDI_8255=m +CONFIG_COMEDI_8255_SA=m CONFIG_COMEDI_KCOMEDILIB=m CONFIG_COMEDI_AMPLC_DIO200=m CONFIG_COMEDI_AMPLC_PC236=m @@ -6658,9 +6741,6 @@ CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m CONFIG_STAGING_MEDIA=y CONFIG_I2C_BCM2048=m CONFIG_DVB_CXD2099=m -CONFIG_VIDEO_DT3155=m -# CONFIG_DT3155_CCIR is not set -CONFIG_DT3155_STREAMING=y CONFIG_DVB_MN88472=m CONFIG_DVB_MN88473=m CONFIG_LIRC_STAGING=y @@ -6703,18 +6783,15 @@ CONFIG_DGAP=m CONFIG_GS_FPGABOOT=m CONFIG_CRYPTO_SKEIN=y CONFIG_UNISYSSPAR=y -CONFIG_UNISYS_VISORUTIL=m -CONFIG_UNISYS_VISORCHANNEL=m -CONFIG_UNISYS_VISORCHIPSET=m -CONFIG_UNISYS_UISLIB=m -CONFIG_UNISYS_VIRTPCI=m -CONFIG_UNISYS_VIRTHBA=m +CONFIG_UNISYS_VISORBUS=m +CONFIG_UNISYS_VISORNIC=m CONFIG_FB_TFT=m CONFIG_FB_TFT_AGM1264K_FL=m CONFIG_FB_TFT_BD663474=m CONFIG_FB_TFT_HX8340BN=m CONFIG_FB_TFT_HX8347D=m CONFIG_FB_TFT_HX8353D=m +CONFIG_FB_TFT_HX8357D=m CONFIG_FB_TFT_ILI9163=m CONFIG_FB_TFT_ILI9320=m CONFIG_FB_TFT_ILI9325=m @@ -6738,16 +6815,6 @@ CONFIG_FB_TFT_UPD161704=m CONFIG_FB_TFT_WATTEROTT=m CONFIG_FB_FLEX=m CONFIG_FB_TFT_FBTFT_DEVICE=m -CONFIG_I2O=m -CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y -CONFIG_I2O_EXT_ADAPTEC=y -CONFIG_I2O_EXT_ADAPTEC_DMA64=y -CONFIG_I2O_CONFIG=m -# CONFIG_I2O_CONFIG_OLD_IOCTL is not set -CONFIG_I2O_BUS=m -CONFIG_I2O_BLOCK=m -CONFIG_I2O_SCSI=m -CONFIG_I2O_PROC=m CONFIG_X86_PLATFORM_DEVICES=y CONFIG_ACER_WMI=m CONFIG_ACERHDF=m @@ -6757,6 +6824,7 @@ CONFIG_DELL_LAPTOP=m CONFIG_DELL_WMI=m CONFIG_DELL_WMI_AIO=m CONFIG_DELL_SMO8800=m +CONFIG_DELL_RBTN=m CONFIG_FUJITSU_LAPTOP=m # CONFIG_FUJITSU_LAPTOP_DEBUG is not set CONFIG_FUJITSU_TABLET=m @@ -6800,11 +6868,13 @@ CONFIG_APPLE_GMUX=m CONFIG_INTEL_RST=m CONFIG_INTEL_SMARTCONNECT=m CONFIG_PVPANIC=m +CONFIG_INTEL_PMC_IPC=m CONFIG_CHROME_PLATFORMS=y CONFIG_CHROMEOS_LAPTOP=m CONFIG_CHROMEOS_PSTORE=m CONFIG_CROS_EC_CHARDEV=m CONFIG_CROS_EC_LPC=m +CONFIG_CROS_EC_PROTO=y CONFIG_CLKDEV_LOOKUP=y CONFIG_HAVE_CLK_PREPARE=y CONFIG_COMMON_CLK=y @@ -6868,6 +6938,7 @@ CONFIG_STE_MODEM_RPROC=m # # SOC (System On Chip) specific Drivers # +# CONFIG_SUNXI_SRAM is not set CONFIG_SOC_TI=y CONFIG_PM_DEVFREQ=y @@ -6890,6 +6961,7 @@ CONFIG_EXTCON=y # CONFIG_EXTCON_ADC_JACK=m CONFIG_EXTCON_ARIZONA=m +CONFIG_EXTCON_AXP288=m CONFIG_EXTCON_GPIO=m CONFIG_EXTCON_MAX14577=m CONFIG_EXTCON_MAX77693=m @@ -6923,6 +6995,8 @@ CONFIG_KXCJK1013=m CONFIG_MMA9551_CORE=m CONFIG_MMA9551=m CONFIG_MMA9553=m +CONFIG_STK8312=m +CONFIG_STK8BA50=m # # Analog to digital converters @@ -6992,6 +7066,7 @@ CONFIG_AD5755=m CONFIG_AD5764=m CONFIG_AD5791=m CONFIG_AD7303=m +CONFIG_M62332=m CONFIG_MAX517=m CONFIG_MCP4725=m CONFIG_MCP4922=m @@ -7045,9 +7120,11 @@ CONFIG_IIO_ADIS_LIB_BUFFER=y # # Light sensors # +CONFIG_ACPI_ALS=m CONFIG_ADJD_S311=m CONFIG_AL3320A=m CONFIG_APDS9300=m +CONFIG_BH1750=m CONFIG_CM32181=m CONFIG_CM3232=m CONFIG_CM3323=m @@ -7059,6 +7136,7 @@ CONFIG_HID_SENSOR_PROX=m CONFIG_JSA1212=m CONFIG_SENSORS_LM3533=m CONFIG_LTR501=m +CONFIG_STK3310=m CONFIG_TCS3414=m CONFIG_TCS3472=m CONFIG_SENSORS_TSL2563=m @@ -7072,9 +7150,11 @@ CONFIG_AK8975=m CONFIG_AK09911=m CONFIG_MAG3110=m CONFIG_HID_SENSOR_MAGNETOMETER_3D=m +CONFIG_MMC35240=m CONFIG_IIO_ST_MAGN_3AXIS=m CONFIG_IIO_ST_MAGN_I2C_3AXIS=m CONFIG_IIO_ST_MAGN_SPI_3AXIS=m +CONFIG_BMC150_MAGN=m # # Inclinometer sensors @@ -7119,6 +7199,10 @@ CONFIG_SX9500=m CONFIG_MLX90614=m CONFIG_TMP006=m CONFIG_NTB=m +CONFIG_NTB_INTEL=m +CONFIG_NTB_PINGPONG=m +CONFIG_NTB_TOOL=m +CONFIG_NTB_TRANSPORT=m CONFIG_VME_BUS=y # @@ -7159,11 +7243,14 @@ CONFIG_FMC_CHARDEV=m # PHY Subsystem # CONFIG_GENERIC_PHY=y +CONFIG_PHY_PXA_28NM_HSIC=m +CONFIG_PHY_PXA_28NM_USB2=m CONFIG_BCM_KONA_USB2_PHY=m CONFIG_PHY_SAMSUNG_USB2=m # CONFIG_PHY_EXYNOS4210_USB2 is not set # CONFIG_PHY_EXYNOS4X12_USB2 is not set # CONFIG_PHY_EXYNOS5250_USB2 is not set +CONFIG_PHY_TUSB1210=m CONFIG_POWERCAP=y CONFIG_INTEL_RAPL=m CONFIG_MCB=m @@ -7175,6 +7262,11 @@ CONFIG_THUNDERBOLT=m # Android # # CONFIG_ANDROID is not set +CONFIG_LIBNVDIMM=y +CONFIG_BLK_DEV_PMEM=m +CONFIG_ND_BLK=m +CONFIG_ND_BTT=m +CONFIG_BTT=y # # Firmware Drivers @@ -7195,6 +7287,7 @@ CONFIG_ISCSI_IBFT=m # EFI (Extensible Firmware Interface) Support # CONFIG_EFI_VARS=y +CONFIG_EFI_ESRT=y CONFIG_EFI_VARS_PSTORE=m # CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set CONFIG_EFI_RUNTIME_MAP=y @@ -7255,6 +7348,7 @@ CONFIG_F2FS_FS_XATTR=y CONFIG_F2FS_FS_POSIX_ACL=y CONFIG_F2FS_FS_SECURITY=y # CONFIG_F2FS_CHECK_FS is not set +CONFIG_F2FS_FS_ENCRYPTION=y # CONFIG_F2FS_IO_TRACE is not set CONFIG_FS_DAX=y CONFIG_FS_POSIX_ACL=y @@ -7320,6 +7414,7 @@ CONFIG_PROC_KCORE=y CONFIG_PROC_VMCORE=y CONFIG_PROC_SYSCTL=y CONFIG_PROC_PAGE_MONITOR=y +CONFIG_PROC_CHILDREN=y CONFIG_KERNFS=y CONFIG_SYSFS=y CONFIG_TMPFS=y @@ -7442,8 +7537,7 @@ CONFIG_SUNRPC_BACKCHANNEL=y CONFIG_SUNRPC_SWAP=y CONFIG_RPCSEC_GSS_KRB5=m CONFIG_SUNRPC_DEBUG=y -CONFIG_SUNRPC_XPRT_RDMA_CLIENT=m -CONFIG_SUNRPC_XPRT_RDMA_SERVER=m +CONFIG_SUNRPC_XPRT_RDMA=m CONFIG_CEPH_FS=m CONFIG_CEPH_FSCACHE=y CONFIG_CEPH_FS_POSIX_ACL=y @@ -7459,6 +7553,7 @@ CONFIG_CIFS_DEBUG=y # CONFIG_CIFS_DEBUG2 is not set CONFIG_CIFS_DFS_UPCALL=y CONFIG_CIFS_SMB2=y +CONFIG_CIFS_SMB311=y CONFIG_CIFS_FSCACHE=y CONFIG_NCP_FS=m CONFIG_NCPFS_PACKET_SIGNING=y @@ -7586,7 +7681,6 @@ CONFIG_HAVE_DEBUG_STACKOVERFLOW=y CONFIG_HAVE_ARCH_KMEMCHECK=y CONFIG_HAVE_ARCH_KASAN=y # CONFIG_KASAN is not set -CONFIG_KASAN_SHADOW_OFFSET=0xdffffc0000000000 # CONFIG_DEBUG_SHIRQ is not set # @@ -7606,6 +7700,7 @@ CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 CONFIG_PANIC_ON_OOPS_VALUE=0 CONFIG_PANIC_TIMEOUT=0 CONFIG_SCHED_DEBUG=y +CONFIG_SCHED_INFO=y CONFIG_SCHEDSTATS=y CONFIG_SCHED_STACK_END_CHECK=y # CONFIG_DEBUG_TIMEKEEPING is not set @@ -7643,6 +7738,7 @@ CONFIG_TORTURE_TEST=m CONFIG_RCU_CPU_STALL_TIMEOUT=60 # CONFIG_RCU_CPU_STALL_INFO is not set # CONFIG_RCU_TRACE is not set +# CONFIG_RCU_EQS_DEBUG is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set CONFIG_NOTIFIER_ERROR_INJECTION=m CONFIG_CPU_NOTIFIER_ERROR_INJECT=m @@ -7762,8 +7858,11 @@ CONFIG_DEFAULT_IO_DELAY_TYPE=1 # CONFIG_DEBUG_BOOT_PARAMS is not set # CONFIG_CPA_DEBUG is not set CONFIG_OPTIMIZE_INLINING=y +# CONFIG_DEBUG_ENTRY is not set # CONFIG_DEBUG_NMI_SELFTEST is not set # CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set +CONFIG_X86_DEBUG_FPU=y +CONFIG_PUNIT_ATOM_DEBUG=m # # Security options @@ -7853,8 +7952,12 @@ CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_HASH2=y CONFIG_CRYPTO_RNG=y CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=m CONFIG_CRYPTO_PCOMP=m CONFIG_CRYPTO_PCOMP2=y +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_AKCIPHER=m +CONFIG_CRYPTO_RSA=m CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y CONFIG_CRYPTO_USER=m @@ -7875,7 +7978,9 @@ CONFIG_CRYPTO_GLUE_HELPER_X86=m # CONFIG_CRYPTO_CCM=m CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_CHACHA20POLY1305=m CONFIG_CRYPTO_SEQIV=m +CONFIG_CRYPTO_ECHAINIV=m # # Block modes @@ -7906,6 +8011,7 @@ CONFIG_CRYPTO_CRC32_PCLMUL=m CONFIG_CRYPTO_CRCT10DIF=y CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_POLY1305=m CONFIG_CRYPTO_MD4=m CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_MICHAEL_MIC=m @@ -7950,6 +8056,7 @@ CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_KHAZAD=m CONFIG_CRYPTO_SALSA20=m CONFIG_CRYPTO_SALSA20_X86_64=m +CONFIG_CRYPTO_CHACHA20=m CONFIG_CRYPTO_SEED=m CONFIG_CRYPTO_SERPENT=m CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m @@ -7968,6 +8075,7 @@ CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m CONFIG_CRYPTO_DEFLATE=m CONFIG_CRYPTO_ZLIB=m CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_842=m CONFIG_CRYPTO_LZ4=m CONFIG_CRYPTO_LZ4HC=m @@ -7980,10 +8088,12 @@ CONFIG_CRYPTO_DRBG_HMAC=y CONFIG_CRYPTO_DRBG_HASH=y CONFIG_CRYPTO_DRBG_CTR=y CONFIG_CRYPTO_DRBG=m +CONFIG_CRYPTO_JITTERENTROPY=m CONFIG_CRYPTO_USER_API=m CONFIG_CRYPTO_USER_API_HASH=m CONFIG_CRYPTO_USER_API_SKCIPHER=m CONFIG_CRYPTO_USER_API_RNG=m +CONFIG_CRYPTO_USER_API_AEAD=m CONFIG_CRYPTO_HASH_INFO=y CONFIG_CRYPTO_HW=y CONFIG_CRYPTO_DEV_PADLOCK=y @@ -8053,6 +8163,8 @@ CONFIG_LIBCRC32C=m CONFIG_CRC8=m # CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set # CONFIG_RANDOM32_SELFTEST is not set +CONFIG_842_COMPRESS=m +CONFIG_842_DECOMPRESS=m CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y @@ -8112,3 +8224,4 @@ CONFIG_FONT_SUPPORT=y CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y CONFIG_ARCH_HAS_SG_CHAIN=y +CONFIG_ARCH_HAS_PMEM_API=y diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index adb6c5317e..be7eec8af6 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -210,7 +210,7 @@ (define (lookup file) #f))) (define-public linux-libre - (let* ((version "4.1.6") + (let* ((version "4.2") (build-phase '(lambda* (#:key system inputs #:allow-other-keys #:rest args) ;; Apply the neat patch. @@ -283,7 +283,7 @@ (define-public linux-libre (uri (linux-libre-urls version)) (sha256 (base32 - "07gmpy32v90bx78bm1khc1hw7x0akdh2sxpkxkavwj4fjc6f732v")))) + "0jfgbr9qc92bk7hyfdvw030xyic2bg834l8cxp25rw9qbbdck3rs")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) ("bc" ,bc) -- cgit v1.2.3 From 240f2785c02f87a179c29a49142e26b8b6f008e0 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 31 Jul 2015 17:55:29 +0200 Subject: gnu: sfml: Update to 2.3.1. * gnu/packages/game-development.scm (sfml): Update to 2.3.1. [inputs]: Add flac, libvorbis, xcb-util-image. --- gnu/packages/game-development.scm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index 26eb4ad9f3..5148a04c79 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -37,7 +37,8 @@ (define-module (gnu packages game-development) #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) #:use-module (gnu packages sdl) - #:use-module (gnu packages pkg-config)) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages xiph)) (define-public bullet (package @@ -101,14 +102,14 @@ (define-public tiled (define-public sfml (package (name "sfml") - (version "2.2") + (version "2.3.1") (source (origin (method url-fetch) (uri (string-append "http://mirror0.sfml-dev.org/files/SFML-" version "-sources.zip")) (sha256 (base32 - "1xhkvgyfbhqsjdmfbxvk729kdrzh7kdyagxa3bvpzi6z43mh1frd")))) + "0mjpkgfnz6ka4p0ir219pcqsbdy7gwcjydk7xxmjjfm2k5sw2qys")))) (build-system cmake-build-system) (arguments '(#:tests? #f)) ; no tests @@ -117,7 +118,10 @@ (define-public sfml (inputs `(("mesa" ,mesa) ("glew" ,glew) + ("flac" ,flac) + ("libvorbis" ,libvorbis) ("libx11" ,libx11) + ("xcb-util-image" ,xcb-util-image) ("libxrandr" ,libxrandr) ("eudev" ,eudev) ("freetype" ,freetype) -- cgit v1.2.3 From d9cef6128cd0b632fcb60eed0a29b9324abd97fc Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 1 Sep 2015 21:36:32 +0200 Subject: gnu: Add libraw. * gnu/packages/photo.scm (libraw): New variable. --- gnu/packages/photo.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index bf3c76c51e..cbfc1e8730 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015 Ludovic Courtès +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,6 +31,25 @@ (define-module (gnu packages photo) #:use-module (gnu packages perl) #:use-module (gnu packages base)) +(define-public libraw + (package + (name "libraw") + (version "0.17.0") + (source (origin + (method url-fetch) + (uri (string-append "http://www.libraw.org/data/LibRaw-" + version ".tar.gz")) + (sha256 + (base32 + "043kckxjqanw8dl3m9f6kvsf0l20ywxmgxd1xb0slj6m8l4w4hz6")))) + (build-system gnu-build-system) + (home-page "http://www.libraw.org") + (synopsis "Raw image decoder") + (description + "LibRaw is a library for reading RAW files obtained from digital photo +cameras (CRW/CR2, NEF, RAF, DNG, and others).") + (license lgpl2.1+))) + (define-public libexif (package (name "libexif") -- cgit v1.2.3 From 38b327a9eef8da31821879ed9a2039e36d3d5e7c Mon Sep 17 00:00:00 2001 From: David Thompson Date: Thu, 3 Sep 2015 07:45:28 -0400 Subject: gnu: bundler: Update to 1.10.6. * gnu/packages/ruby.scm (bundler): Update to 1.10.6. --- gnu/packages/ruby.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 4d1061e5a9..99aecf8039 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -350,13 +350,13 @@ (define-public ruby-rspec (define-public bundler (package (name "bundler") - (version "1.9.9") + (version "1.10.6") (source (origin (method url-fetch) (uri (rubygems-uri "bundler" version)) (sha256 (base32 - "12qk1569pswa9mmid6lsqy2napn9fmkbmv0k7xkl52nyfh8rsy4d")))) + "1vlzfq0bkkj4jyq6av0y55mh5nj5n0f3mfbmmifwgkh44g8k6agv")))) (build-system ruby-build-system) (arguments '(#:tests? #f)) ; avoid dependency cycles -- cgit v1.2.3 From b12636e6bb0a22a333b1b99e3cf20f35c58c5c56 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 15:24:03 +0200 Subject: gnu: Add r-colorspace. * gnu/packages/statistics.scm (r-colorspace): New variable. --- gnu/packages/statistics.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index ac7cb4677e..924c6a5890 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -22,6 +22,7 @@ (define-module (gnu packages statistics) #:use-module (guix download) #:use-module (guix utils) #:use-module (guix build-system gnu) + #:use-module (guix build-system r) #:use-module (gnu packages) #:use-module (gnu packages compression) #:use-module (gnu packages gcc) @@ -119,3 +120,24 @@ (define-public r publication-quality data plots. A large amount of 3rd-party packages are available, greatly increasing its breadth and scope.") (license license:gpl3+))) + +(define-public r-colorspace + (package + (name "r-colorspace") + (version "1.2-6") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cran/src/contrib/colorspace_" + version ".tar.gz")) + (sha256 + (base32 "0y8n4ljwhbdvkysdwgqzcnpv107pb3px1jip3k6svv86p72nacds")))) + (build-system r-build-system) + (home-page "http://cran.r-project.org/web/packages/colorspace") + (synopsis "Color space manipulation") + (description + "This package carries out a mapping between assorted color spaces +including RGB, HSV, HLS, CIEXYZ, CIELUV, HCL (polar CIELUV), CIELAB and polar +CIELAB. Qualitative, sequential, and diverging color palettes based on HCL +colors are provided.") + (license license:bsd-3))) -- cgit v1.2.3 From 3587effb7a737c4c64796d8ae1b6f73166c36149 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 15:24:31 +0200 Subject: gnu: Add r-dichromat. * gnu/packages/statistics.scm (r-dichromat): New variable. --- gnu/packages/statistics.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 924c6a5890..0eddbaf7f9 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -141,3 +141,22 @@ (define-public r-colorspace CIELAB. Qualitative, sequential, and diverging color palettes based on HCL colors are provided.") (license license:bsd-3))) + +(define-public r-dichromat + (package + (name "r-dichromat") + (version "2.0-0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cran/src/contrib/dichromat_" + version ".tar.gz")) + (sha256 + (base32 "1l8db1nk29ccqg3mkbafvfiw0775iq4gapysf88xq2zp6spiw59i")))) + (build-system r-build-system) + (home-page "http://cran.r-project.org/web/packages/dichromat") + (synopsis "Color schemes for dichromats") + (description + "Dichromat collapses red-green or green-blue distinctions to simulate the +effects of different types of color-blindness.") + (license license:gpl2+))) -- cgit v1.2.3 From 177f38c7fee90bb4a5b35ec66fa70791f5a92cc2 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 15:24:52 +0200 Subject: gnu: Add r-digest. * gnu/packages/statistics.scm (r-digest): New variable. --- gnu/packages/statistics.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 0eddbaf7f9..662bb46191 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -160,3 +160,29 @@ (define-public r-dichromat "Dichromat collapses red-green or green-blue distinctions to simulate the effects of different types of color-blindness.") (license license:gpl2+))) + +(define-public r-digest + (package + (name "r-digest") + (version "0.6.8") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cran/src/contrib/digest_" + version ".tar.gz")) + (sha256 + (base32 "0m9grqv67hhf51lz10whymhw0g0d98466ka694kya5x95hn44qih")))) + (build-system r-build-system) + (home-page "http://dirk.eddelbuettel.com/code/digest.html") + (synopsis "Create cryptographic hash digests of R objects") + (description + "This package contains an implementation of a function 'digest()' for the +creation of hash digests of arbitrary R objects (using the md5, sha-1, +sha-256, crc32, xxhash and murmurhash algorithms) permitting easy comparison +of R language objects, as well as a function 'hmac()' to create hash-based +message authentication code. + +Please note that this package is not meant to be deployed for cryptographic +purposes for which more comprehensive (and widely tested) libraries such as +OpenSSL should be used.") + (license license:gpl2+))) -- cgit v1.2.3 From 112bb3c04f1fe923e31b16748ae001a33bcb39a0 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 15:25:17 +0200 Subject: gnu: Add r-gtable. * gnu/packages/statistics.scm (r-gtable): New variable. --- gnu/packages/statistics.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 662bb46191..898501040c 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -186,3 +186,22 @@ (define-public r-digest purposes for which more comprehensive (and widely tested) libraries such as OpenSSL should be used.") (license license:gpl2+))) + +(define-public r-gtable + (package + (name "r-gtable") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cran/src/contrib/gtable_" + version ".tar.gz")) + (sha256 + (base32 "0k9hfj6r5y238gqh92s3cbdn34biczx3zfh79ix5xq0c5vkai2xh")))) + (build-system r-build-system) + (home-page "https://cran.r-project.org/web/packages/gtable") + (synopsis "R library to arrange grobs in tables") + (description + "Gtable is a collection of tools to make it easier to work with +\"tables\" of grobs.") + (license license:gpl2+))) -- cgit v1.2.3 From b7eee9fc65bf382a1db1bd9d6f1d6f2b92f6c62d Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 15:25:36 +0200 Subject: gnu: Add r-labeling. * gnu/packages/statistics.scm (r-labeling): New variable. --- gnu/packages/statistics.scm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 898501040c..ecd275e6e2 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -205,3 +205,21 @@ (define-public r-gtable "Gtable is a collection of tools to make it easier to work with \"tables\" of grobs.") (license license:gpl2+))) + +(define-public r-labeling + (package + (name "r-labeling") + (version "0.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cran/src/contrib/labeling_" + version ".tar.gz")) + (sha256 + (base32 "13sk7zrrrzry6ky1bp8mmnzcl9jhvkig8j4id9nny7z993mnk00d")))) + (build-system r-build-system) + (home-page "http://cran.r-project.org/web/packages/labeling") + (synopsis "Axis labeling algorithms") + (description "The labeling package provides a range of axis labeling +algorithms.") + (license license:expat))) -- cgit v1.2.3 From d69c4b04fafe0326c3b8185e5ca31bec5b310d3a Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 15:25:57 +0200 Subject: gnu: Add r-magrittr. * gnu/packages/statistics.scm (r-magrittr): New variable. --- gnu/packages/statistics.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index ecd275e6e2..e8596fbd2a 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -223,3 +223,25 @@ (define-public r-labeling (description "The labeling package provides a range of axis labeling algorithms.") (license license:expat))) + +(define-public r-magrittr + (package + (name "r-magrittr") + (version "1.5") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cran/src/contrib/magrittr_" + version ".tar.gz")) + (sha256 + (base32 "1s1ar6rag8m277qcqmdp02gn4awn9bdj9ax0r8s32i59mm1mki05")))) + (build-system r-build-system) + (home-page "http://cran.r-project.org/web/packages/magrittr/index.html") + (synopsis "A forward-pipe operator for R") + (description + "Magrittr provides a mechanism for chaining commands with a new +forward-pipe operator, %>%. This operator will forward a value, or the result +of an expression, into the next function call/expression. There is flexible +support for the type of right-hand side expressions. For more information, +see package vignette. To quote Rene Magritte, \"Ceci n'est pas un pipe.\"") + (license license:expat))) -- cgit v1.2.3 From 44373339584f40b7b5ee7e8f9c513278fe914e49 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 15:26:26 +0200 Subject: gnu: Add r-munsell. * gnu/packages/statistics.scm (r-munsell): New variable. --- gnu/packages/statistics.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index e8596fbd2a..51504f1473 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -245,3 +245,24 @@ (define-public r-magrittr support for the type of right-hand side expressions. For more information, see package vignette. To quote Rene Magritte, \"Ceci n'est pas un pipe.\"") (license license:expat))) + +(define-public r-munsell + (package + (name "r-munsell") + (version "0.4.2") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cran/src/contrib/munsell_" + version ".tar.gz")) + (sha256 + (base32 "1bi5yi0i80778bbzx2rm4f0glpc34kvh24pwwfhm4v32izsqgrw4")))) + (build-system r-build-system) + (propagated-inputs + `(("r-colorspace" ,r-colorspace))) + (home-page "http://cran.r-project.org/web/packages/munsell") + (synopsis "Munsell colour system") + (description + "The Munsell package contains Functions for exploring and using the +Munsell colour system.") + (license license:expat))) -- cgit v1.2.3 From ea69e2f853f8b6ffb490310920db29de829751fb Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 15:27:27 +0200 Subject: gnu: Add r-rcpp. * gnu/packages/statistics.scm (r-rcpp): New variable. --- gnu/packages/statistics.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 51504f1473..0da3b82c8e 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -266,3 +266,28 @@ (define-public r-munsell "The Munsell package contains Functions for exploring and using the Munsell colour system.") (license license:expat))) + +(define-public r-rcpp + (package + (name "r-rcpp") + (version "0.12.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cran/src/contrib/Rcpp_" + version ".tar.gz")) + (sha256 + (base32 "182109z0yc1snqgd833ssl2cix6cbq83bcxmy5344b15ym820y38")))) + (build-system r-build-system) + (home-page "http://www.rcpp.org") + (synopsis "Seamless R and C++ Integration") + (description + "The Rcpp package provides R functions as well as C++ classes which offer +a seamless integration of R and C++. Many R data types and objects can be +mapped back and forth to C++ equivalents which facilitates both writing of new +code as well as easier integration of third-party libraries. Documentation +about Rcpp is provided by several vignettes included in this package, via the +'Rcpp Gallery' site at , the paper by Eddelbuettel +and Francois (2011, JSS), and the book by Eddelbuettel (2013, Springer); see +'citation(\"Rcpp\")' for details on these last two.") + (license license:gpl2+))) -- cgit v1.2.3 From 7e10056b6bea8d3c43cff1948073d1e24c63e197 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 15:27:56 +0200 Subject: gnu: Add r-plyr. * gnu/packages/statistics.scm (r-plyr): New variable. --- gnu/packages/statistics.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 0da3b82c8e..6ba75b7850 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -291,3 +291,26 @@ (define-public r-rcpp and Francois (2011, JSS), and the book by Eddelbuettel (2013, Springer); see 'citation(\"Rcpp\")' for details on these last two.") (license license:gpl2+))) + +(define-public r-plyr + (package + (name "r-plyr") + (version "1.8.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cran/src/contrib/plyr_" + version ".tar.gz")) + (sha256 + (base32 "06v4zxawpjz37rp2q2ii5q43g664z9s29j4ydn0cz3crn7lzl6pk")))) + (build-system r-build-system) + (native-inputs `(("r-rcpp" ,r-rcpp))) + (home-page "http://had.co.nz/plyr") + (synopsis "Tools for Splitting, Applying and Combining Data") + (description + "Plyr is a set of tools that solves a common set of problems: you need to +break a big problem down into manageable pieces, operate on each piece and +then put all the pieces back together. For example, you might want to fit a +model to each spatial location or time point in your study, summarise data by +panels or collapse high-dimensional arrays to simpler summary statistics.") + (license license:expat))) -- cgit v1.2.3 From 9a4d8968f0328e3cfb6265325bf096d745a5b51e Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 15:34:38 +0200 Subject: gnu: Add r-proto. * gnu/packages/statistics.scm (r-proto): New variable. --- gnu/packages/statistics.scm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 6ba75b7850..c4a82d38ea 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -314,3 +314,21 @@ (define-public r-plyr model to each spatial location or time point in your study, summarise data by panels or collapse high-dimensional arrays to simpler summary statistics.") (license license:expat))) + +(define-public r-proto + (package + (name "r-proto") + (version "0.3-10") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cran/src/contrib/proto_" version ".tar.gz")) + (sha256 + (base32 "03mvzi529y6kjcp9bkpk7zlgpcakb3iz73hca6rpjy14pyzl3nfh")))) + (build-system r-build-system) + (home-page "http://r-proto.googlecode.com") + (synopsis "Prototype object-based programming") + (description + "Proto is an object oriented system using object-based, also called +prototype-based, rather than class-based object oriented ideas.") + (license license:gpl2+))) -- cgit v1.2.3 From a45ba1270c382657c76ead6223a7ec1a3ce607c7 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 15:34:58 +0200 Subject: gnu: Add r-rcolorbrewer. * gnu/packages/statistics.scm (r-rcolorbrewer): New variable. --- gnu/packages/statistics.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index c4a82d38ea..e3ab548406 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -332,3 +332,23 @@ (define-public r-proto "Proto is an object oriented system using object-based, also called prototype-based, rather than class-based object oriented ideas.") (license license:gpl2+))) + +(define-public r-rcolorbrewer + (package + (name "r-rcolorbrewer") + (version "1.1-2") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cran/src/contrib/RColorBrewer_" + version ".tar.gz")) + (sha256 + (base32 "1pfcl8z1pnsssfaaz9dvdckyfnnc6rcq56dhislbf571hhg7isgk")))) + (build-system r-build-system) + (home-page "http://cran.r-project.org/web/packages/RColorBrewer") + (synopsis "ColorBrewer palettes") + (description + "This package provides color schemes for maps (and other graphics) +designed by Cynthia Brewer as described at http://colorbrewer2.org") + ;; Includes code licensed under bsd-4 + (license license:asl2.0))) -- cgit v1.2.3 From 4dca98dc81f895a5ffd446c9b815b3538646e8ac Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 15:35:19 +0200 Subject: gnu: Add r-stringi. * gnu/packages/statistics.scm (r-stringi): New variable. --- gnu/packages/statistics.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index e3ab548406..6d33c360af 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -352,3 +352,32 @@ (define-public r-rcolorbrewer designed by Cynthia Brewer as described at http://colorbrewer2.org") ;; Includes code licensed under bsd-4 (license license:asl2.0))) + +(define-public r-stringi + (package + (name "r-stringi") + (version "0.5-5") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cran/src/contrib/stringi_" + version + ".tar.gz")) + (sha256 + (base32 + "183wrrjhpgl1wbnn9lhghyvhz7l2mc64mpcmzplckal7y9j7pmhw")))) + (build-system r-build-system) + (inputs `(("icu4c" ,icu4c))) + (native-inputs `(("pkg-config" ,pkg-config))) + (home-page "http://stringi.rexamine.com/") + (synopsis "Character string processing facilities") + (description + "This package allows for fast, correct, consistent, portable, as well as +convenient character string/text processing in every locale and any native +encoding. Owing to the use of the ICU library, the package provides R users +with platform-independent functions known to Java, Perl, Python, PHP, and Ruby +programmers. Among available features there are: pattern searching + (e.g. via regular expressions), random string generation, string collation, +transliteration, concatenation, date-time formatting and parsing, etc.") + (license license:bsd-3))) -- cgit v1.2.3 From d5cd5c1568f95b6919f325c41fe37859e5abd2b4 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 15:35:43 +0200 Subject: gnu: Add r-stringr. * gnu/packages/statistics.scm (r-stringr): New variable. --- gnu/packages/statistics.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 6d33c360af..ed550ede82 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -381,3 +381,28 @@ (define-public r-stringi (e.g. via regular expressions), random string generation, string collation, transliteration, concatenation, date-time formatting and parsing, etc.") (license license:bsd-3))) + +(define-public r-stringr + (package + (name "r-stringr") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cran/src/contrib/stringr_" + version ".tar.gz")) + (sha256 + (base32 "0jnz6r9yqyf7dschr2fnn1slg4wn6b4ik5q00j4zrh43bfw7s9pq")))) + (build-system r-build-system) + (propagated-inputs + `(("r-magrittr" ,r-magrittr) + ("r-stringi" ,r-stringi))) + (home-page "") + (synopsis "Simple, consistent wrappers for common string operations") + (description + "Stringr is a consistent, simple and easy to use set of wrappers around +the fantastic 'stringi' package. All function and argument names (and +positions) are consistent, all functions deal with \"NA\"'s and zero length +vectors in the same way, and the output from one function is easy to feed into +the input of another.") + (license license:gpl2+))) -- cgit v1.2.3 From 9ca731baf196d41cfbbd07cb85d8fd46b7fa4b40 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 15:36:03 +0200 Subject: gnu: Add r-reshape2. * gnu/packages/statistics.scm (r-reshape2): New variable. --- gnu/packages/statistics.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index ed550ede82..5b662a1d4e 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -406,3 +406,26 @@ (define-public r-stringr vectors in the same way, and the output from one function is easy to feed into the input of another.") (license license:gpl2+))) + +(define-public r-reshape2 + (package + (name "r-reshape2") + (version "1.4.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cran/src/contrib/reshape2_" + version ".tar.gz")) + (sha256 + (base32 "0hl082dyk3pk07nqprpn5dvnrkqhnf6zjnjig1ijddxhlmsrzm7v")))) + (build-system r-build-system) + (propagated-inputs + `(("r-plyr" ,r-plyr) + ("r-rcpp" ,r-rcpp) + ("r-stringr" ,r-stringr))) + (home-page "https://github.com/hadley/reshape") + (synopsis "Flexibly reshape data: a reboot of the \"reshape\" package") + (description + "Reshape2 is an R library to flexibly restructure and aggregate data +using just two functions: melt and dcast (or acast).") + (license license:expat))) -- cgit v1.2.3 From a11ee478a684e7a18f1a3eb51e3164645129af75 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 15:36:22 +0200 Subject: gnu: Add r-scales. * gnu/packages/statistics.scm (r-scales): New variable. --- gnu/packages/statistics.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 5b662a1d4e..b10ebdccd4 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -429,3 +429,30 @@ (define-public r-reshape2 "Reshape2 is an R library to flexibly restructure and aggregate data using just two functions: melt and dcast (or acast).") (license license:expat))) + +(define-public r-scales + (package + (name "r-scales") + (version "0.2.5") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cran/src/contrib/scales_" + version ".tar.gz")) + (sha256 + (base32 "12xrmn1vh64dl46bq7n7pa427aicb2ifjrby9in3m32nyvir0kac")))) + (build-system r-build-system) + (propagated-inputs + `(("r-dichromat" ,r-dichromat) + ("r-labeling" ,r-labeling) + ("r-munsell" ,r-munsell) + ("r-plyr" ,r-plyr) + ("r-rcolorbrewer" ,r-rcolorbrewer) + ("r-rcpp" ,r-rcpp))) + (home-page "https://github.com/hadley/scales") + (synopsis "Scale functions for visualization") + (description + "This package provides graphical scales that map data to aesthetics, and +provides methods for automatically determining breaks and labels for axes and +legends.") + (license license:expat))) -- cgit v1.2.3 From d11b808f4a456e6b09096742b21d58a317b73b84 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 31 Aug 2015 15:36:40 +0200 Subject: gnu: Add r-ggplot2. * gnu/packages/statistics.scm (r-ggplot2): New variable. --- gnu/packages/statistics.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index b10ebdccd4..b84c48dde9 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -456,3 +456,33 @@ (define-public r-scales provides methods for automatically determining breaks and labels for axes and legends.") (license license:expat))) + +(define-public r-ggplot2 + (package + (name "r-ggplot2") + (version "1.0.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cran/src/contrib/ggplot2_" + version ".tar.gz")) + (sha256 + (base32 "0794kjqi3lrxb33lr1mykd58959hlgkhdn259vj8fxrh65mqw920")))) + (build-system r-build-system) + (propagated-inputs + `(("r-digest" ,r-digest) + ("r-gtable" ,r-gtable) + ("r-plyr" ,r-plyr) + ("r-proto" ,r-proto) + ("r-reshape2" ,r-reshape2) + ("r-scales" ,r-scales))) + (home-page "http://ggplot2.org") + (synopsis "An implementation of the grammar of graphics") + (description + "Ggplot2 is an implementation of the grammar of graphics in R. It +combines the advantages of both base and lattice graphics: conditioning and +shared axes are handled automatically, and you can still build up a plot step +by step from multiple data sources. It also implements a sophisticated +multidimensional conditioning system and a consistent interface to map data to +aesthetic attributes.") + (license license:gpl2+))) -- cgit v1.2.3 From 7b770ecaf309cbc7282bd0f9075728a4bff2168d Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Thu, 3 Sep 2015 20:41:08 +0800 Subject: gnu: tinc: Use /etc as the sysconfdir, and /var as the localstatedir. * gnu/packages/vpn.scm (tinc)[arguments]: New field. --- gnu/packages/vpn.scm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm index 0c538daf58..4cd5cd9b11 100644 --- a/gnu/packages/vpn.scm +++ b/gnu/packages/vpn.scm @@ -169,6 +169,10 @@ (define-public tinc (base32 "08ds8s32cjslms1q227ihd6jz35583v378ij4pknfa5xngfijhrb")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags + '("--sysconfdir=/etc" + "--localstatedir=/var"))) (inputs `(("zlib" ,zlib) ("lzo" ,lzo) ("openssl" ,openssl))) -- cgit v1.2.3 From 6fc92598ac7f76568545f4218173b529a3df9fdc Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Thu, 3 Sep 2015 23:22:05 +0300 Subject: gnu: magit: Update to 2.2.2. * gnu/packages/emacs.scm (magit): Update to 2.2.2. --- gnu/packages/emacs.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 594e842008..742f2ae9da 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -310,7 +310,7 @@ (define-public git-modes (define-public magit (package (name "magit") - (version "2.2.1") + (version "2.2.2") (source (origin (method url-fetch) (uri (string-append @@ -318,7 +318,7 @@ (define-public magit version "/" name "-" version ".tar.gz")) (sha256 (base32 - "0bjdj4468i5w3j2i945b6psb6n04z34vhjaqr0iz4xgixk3wiqmh")))) + "1imkj4prprnivhbpdn1mdpiryxkckzy5hbnqaahv7gixwac1irh8")))) (build-system gnu-build-system) (native-inputs `(("texinfo" ,texinfo) ("emacs" ,emacs-no-x))) -- cgit v1.2.3 From 9d2f48df024fab5b99f1243cdf912a926c0e1e3d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 3 Sep 2015 23:37:33 +0200 Subject: publish: Gracefully handle the lack of a deriver. * guix/scripts/publish.scm (narinfo-string): Catch 'system-error' around 'load-derivation' call; return BASE-INFO upon ENOENT. This allows us to return the narinfo even if DERIVER is missing. Before that, the exception would be uncaught, leading to 500 Internal Error on the client side. --- guix/scripts/publish.scm | 23 ++++++++++++++++------- guix/scripts/substitute.scm | 2 +- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm index e3bcac8047..cc96355947 100644 --- a/guix/scripts/publish.scm +++ b/guix/scripts/publish.scm @@ -151,7 +151,7 @@ (define (narinfo-string store-path path-info key) (references (string-join (map basename (path-info-references path-info)) " ")) - (deriver (path-info-deriver path-info)) + (deriver (path-info-deriver path-info)) (base-info (format #f "StorePath: ~a URL: ~a @@ -162,12 +162,21 @@ (define (narinfo-string store-path path-info key) store-path url hash size references)) ;; Do not render a "Deriver" or "System" line if we are rendering ;; info for a derivation. - (info (if (string-null? deriver) - base-info - (let ((drv (load-derivation deriver))) - (format #f "~aSystem: ~a~%Deriver: ~a~%" - base-info (derivation-system drv) - (basename deriver))))) + (info (if (string-null? deriver) + base-info + (catch 'system-error + (lambda () + (let ((drv (load-derivation deriver))) + (format #f "~aSystem: ~a~%Deriver: ~a~%" + base-info (derivation-system drv) + (basename deriver)))) + (lambda args + ;; DERIVER might be missing, but that's fine: + ;; it's only used for where it's + ;; optional. 'System' is currently unused. + (if (= ENOENT (system-error-errno args)) + base-info + (apply throw args)))))) (signature (base64-encode-string (canonical-sexp->string (signed-string info))))) (format #f "~aSignature: 1;~a;~a~%" info (gethostname) signature))) diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index 95aae2a372..e908bc997e 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm @@ -703,7 +703,7 @@ (define (show-help) ;;; (define (display-narinfo-data narinfo) - "Write to the current output port the contents of NARINFO is the format + "Write to the current output port the contents of NARINFO in the format expected by the daemon." (format #t "~a\n~a\n~a\n" (narinfo-path narinfo) -- cgit v1.2.3 From 5e9738b7cac42f21e18be7c13c7de15664219dce Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 3 Sep 2015 11:41:07 +0200 Subject: gnu: r: Drop IcedTea from inputs. * gnu/packages/statistics.scm (r)[inputs]: Remove "icedtea6". --- gnu/packages/statistics.scm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index b84c48dde9..b1cc5cf7ae 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -84,6 +84,16 @@ (define-public r "--with-system-pcre" "--with-system-tre" "--with-system-xz"))) + ;; R has some support for Java. When the JDK is available at configure + ;; time environment variables pointing to the JDK will be recorded under + ;; $R_HOME/etc and ./tools/getsp.java will be compiled which is used by "R + ;; CMD javareconf". "R CMD javareconf" appears to only be used to update + ;; the recorded environment variables in $R_HOME/etc. Refer to + ;; https://cran.r-project.org/doc/manuals/r-release/R-admin.html#Java-support + ;; for additional information. + + ;; As the JDK is a rather large input with only very limited effects on R, + ;; we decided to drop it. (native-inputs `(("bzip2" ,bzip2) ("perl" ,perl) @@ -97,7 +107,6 @@ (define-public r ("cairo" ,cairo) ("gfortran" ,gfortran) ("icu4c" ,icu4c) - ("icedtea6" ,icedtea6 "jdk") ("lapack" ,lapack) ("libjpeg" ,libjpeg) ("libpng" ,libpng) -- cgit v1.2.3 From af23b6e946ba74880b063bac5a5200eec17cf7b8 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 3 Sep 2015 11:41:36 +0200 Subject: gnu: r: Install info documentation. * gnu/packages/statistics.scm (r)[arguments]: Add phases "make-info" and "install-info" to build and install info documentation. --- gnu/packages/statistics.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index b1cc5cf7ae..ec705c2c77 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -68,7 +68,11 @@ (define-public r (add-before 'check 'set-timezone ;; Some tests require the timezone to be set. - (lambda _ (setenv "TZ" "UTC") #t))) + (lambda _ (setenv "TZ" "UTC") #t)) + (add-after 'build 'make-info + (lambda _ (zero? (system* "make" "info")))) + (add-after 'build 'install-info + (lambda _ (zero? (system* "make" "install-info"))))) #:configure-flags '("--with-blas=openblas" "--with-lapack" -- cgit v1.2.3 From 02615bfa2f450d8acfd9d9013d460e30399338d5 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 3 Sep 2015 12:09:47 +0200 Subject: gnu: r: Drop texlive from native-inputs. * gnu/packages/statistics.scm (r)[native-inputs]: Remove "texlive". --- gnu/packages/statistics.scm | 1 - 1 file changed, 1 deletion(-) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index ec705c2c77..7cb61c9eb2 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -102,7 +102,6 @@ (define-public r `(("bzip2" ,bzip2) ("perl" ,perl) ("pkg-config" ,pkg-config) - ("texlive" ,texlive) ; needed to make vignettes ("texinfo" ,texinfo) ; for building HTML manuals ("which" ,which) ; for tests/Examples/base-Ex.R ("xz" ,xz))) -- cgit v1.2.3 From 00f34aaafe9547185c9eb200bb4533bf3534c124 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Wed, 2 Sep 2015 17:57:58 +0300 Subject: emacs: Add support for "triplet" package inputs. Fixes . * emacs/guix-main.scm (full-name->name+version): Adjust to handle "name-version:output" string. (package-inputs-names): Support ("name" package "output") inputs. --- emacs/guix-main.scm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm index 8d3a88152d..623da884f6 100644 --- a/emacs/guix-main.scm +++ b/emacs/guix-main.scm @@ -71,7 +71,14 @@ (define-syntax-rule (first-or-false lst) (define (list-maybe obj) (if (list? obj) obj (list obj))) -(define full-name->name+version package-name->name+version) +(define (full-name->name+version spec) + "Given package specification SPEC with or without output, +return two values: name and version. For example, for SPEC +\"foo-0.9.1b:lib\", return \"foo\" and \"0.9.1b\"." + (let-values (((name version output) + (package-specification->name+version+output spec))) + (values name version))) + (define (name+version->full-name name version) (string-append name "-" version)) @@ -247,6 +254,10 @@ (define (package-inputs-names inputs) (filter-map (match-lambda ((_ (? package? package)) (package-full-name package)) + ((_ (? package? package) output) + (make-package-specification (package-name package) + (package-version package) + output)) (_ #f)) inputs)) -- cgit v1.2.3 From ca64968068880e4dd7fa4d32c898a278473f74e3 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Fri, 4 Sep 2015 21:23:36 +0800 Subject: gnu: Rename librest to rest. * gnu/packages/gnome.scm (rest): Rename from librest. --- gnu/packages/gnome.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 790ec763b4..ca75fa82e0 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1912,15 +1912,15 @@ (define-public glib-networking library.") (license license:lgpl2.0+))) -(define-public librest +(define-public rest (package - (name "librest") + (name "rest") (version "0.7.93") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/rest/" - (version-major+minor version) "/" - "rest-" version ".tar.xz")) + (version-major+minor version) "/" + name "-" version ".tar.xz")) (sha256 (base32 "05mj10hhiik23ai8w4wkk5vhsp7hcv24bih5q3fl82ilam268467")))) -- cgit v1.2.3 From 7c473310a17fe9373e4f0a5b691dede7ba67c25b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 4 Sep 2015 17:37:46 +0200 Subject: gnu: ath9k-htc-firmware: Update to 1.4.0. * gnu/packages/firmware.scm (ath9k-htc-firmware): Update to 1.4.0. --- gnu/packages/firmware.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index bbd8368473..97f2975e51 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Ludovic Courtès +;;; Copyright © 2014, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,7 +29,7 @@ (define-module (gnu packages firmware) (define-public ath9k-htc-firmware (package (name "ath9k-htc-firmware") - (version "1.3.2") + (version "1.4.0") (source (origin (method git-fetch) (uri (git-reference @@ -37,7 +37,7 @@ (define-public ath9k-htc-firmware (commit version))) (sha256 (base32 - "0dgqfp4cbky79vzjrdy3j462l8figymzrk2v0jalmmz3lkxw88ww")) + "16jbj8avg5jkgvq5lxm0hdxxn4c3zn7fx8b4nxllvr024apk9w23")) (patches (list (search-patch "ath9k-htc-firmware-objcopy.patch"))))) (build-system gnu-build-system) (arguments -- cgit v1.2.3 From 1c74da213706bb3c855811222ff3ce281c3315ad Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 4 Sep 2015 17:45:03 +0200 Subject: gnu: Add python2-notmuch. * gnu/packages/mail.scm (python2-notmuch): New variable. --- gnu/packages/mail.scm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 6e0cfdfd32..5853b370ac 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -405,6 +405,40 @@ (define-public notmuch ing, and tagging large collections of email messages.") (license gpl3+))) +(define-public python2-notmuch + (package + (name "python2-notmuch") + (version "0.15.2") + (source (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/n/notmuch/notmuch-" + version + ".tar.gz")) + (sha256 + (base32 + "18g8701ibr153ngsz258kgcd42wqnbf9ifpqig1bijy6b0zx9xn5")))) + (build-system python-build-system) + (inputs `(("notmuch" ,notmuch))) + (arguments + `(#:python ,python-2 + #:phases (modify-phases %standard-phases + (add-before + 'build 'set-libnotmuch-file-name + (lambda* (#:key inputs #:allow-other-keys) + (let ((notmuch (assoc-ref inputs "notmuch"))) + (substitute* "notmuch/globals.py" + (("libnotmuch\\.so\\.[0-9]") + (string-append notmuch "/lib/libnotmuch.so.4"))) + #t)))) + #:tests? #f)) ;no "test" target + (home-page "http://notmuchmail.org/") + (synopsis "Python bindings of the Notmuch mail indexing library") + (description + "This package provides Python bindings to use the Notmuch mail indexing +and search library.") + (license gpl3+))) + (define-public getmail (package (name "getmail") -- cgit v1.2.3 From 3b6eddb2b27beacf462e9c254ebc6d612dac0129 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 4 Sep 2015 17:49:26 +0200 Subject: gnu: Add 'patches'. * gnu/packages/patchutils.scm (patches): New variables. --- gnu/packages/patchutils.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm index cf8a6e494b..319ccb21c2 100644 --- a/gnu/packages/patchutils.scm +++ b/gnu/packages/patchutils.scm @@ -20,7 +20,9 @@ (define-module (gnu packages patchutils) #:use-module (guix packages) #:use-module (guix licenses) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system gnu) + #:use-module (guix build-system python) #:use-module (gnu packages) #:use-module (gnu packages ed) #:use-module (gnu packages base) @@ -29,6 +31,8 @@ (define-module (gnu packages patchutils) #:use-module (gnu packages gawk) #:use-module (gnu packages less) #:use-module (gnu packages perl) + #:use-module (gnu packages python) + #:use-module (gnu packages mail) #:use-module (gnu packages xml)) (define-public patchutils @@ -170,3 +174,31 @@ (define-public colordiff "Colordiff is Perl script wrapper on top of diff command which provides 'syntax highlighting' for various patch formats.") (license gpl2+))) + +(define-public patches + (let ((commit "26d7dbc")) + (package + (name "patches") + (version (string-append "0.0." commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/aliguori/patches") + (commit commit))) + (sha256 + (base32 + "1bah6y84nlii5yif189ns28dz1m9vmsyw66jyk2vr5yf0njf7mzh")))) + (build-system python-build-system) + (inputs `(("python-notmuch" ,python2-notmuch))) + (arguments + `(#:tests? #f ;no "test" target + #:python ,python-2)) ;not compatible with Python 3 + (home-page "https://github.com/aliguori/patches") + (synopsis "Patch tracking tool") + (description + "'Patches' is a patch-tracking tool initially written for the QEMU +project. It provides commands that build a database of patches from a mailing +list, and commands that can search that database. It allows users to track +the status of a patch, apply patches, and search for patches---all that from +the command-line or from Emacs via its Notmuch integration.") + (license gpl2+)))) -- cgit v1.2.3 From dbbc248aeef1bc3b5d76268782acff43e9d71d57 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 4 Sep 2015 18:31:06 +0200 Subject: monads: Fix 'liftN' fallback case. Reported by Andy Wingo . * guix/monads.scm (define-lift) : Add missing #'. Remove extra formal parameter. * tests/monads.scm ("lift"): Add test with 'lift1' as a procedure. --- guix/monads.scm | 8 ++++---- tests/monads.scm | 4 +++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/guix/monads.scm b/guix/monads.scm index 61cd533bf4..0b0ad239de 100644 --- a/guix/monads.scm +++ b/guix/monads.scm @@ -239,10 +239,10 @@ (define-syntax liftn (identifier? #'id) ;; Slow path: Return a closure-returning procedure (we don't ;; guarantee (eq? LIFTN LIFTN), but that's fine.) - (lambda (liftn proc monad) - (lambda (args ...) - (with-monad monad - (return (proc args ...)))))))))))) + #'(lambda (proc monad) + (lambda (args ...) + (with-monad monad + (return (proc args ...)))))))))))) (define-lift lift0 ()) (define-lift lift1 (a)) diff --git a/tests/monads.scm b/tests/monads.scm index d3ef065f24..62a07a2bc6 100644 --- a/tests/monads.scm +++ b/tests/monads.scm @@ -95,10 +95,12 @@ (define (g x) (test-assert "lift" (every (lambda (monad run) - (let ((f (lift1 1+ monad))) + (let ((f (lift1 1+ monad)) + (g (apply lift1 1+ (list monad)))) (with-monad monad (let ((number (random 777))) (= (run (>>= (return number) f)) + (run (>>= (return number) g)) (1+ number)))))) %monads %monad-run)) -- cgit v1.2.3 From 34582b303719bd1f305a2a565285ee19e65a4706 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Fri, 4 Sep 2015 13:13:25 -0400 Subject: gnu: guix: Enable container tests. * gnu/packages/package-management.scm (guix-devel): Delete 'disable-container-tests' build phase. --- gnu/packages/package-management.scm | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 55e5037aba..f7af1a30da 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -200,18 +200,7 @@ (define guix-devel (chmod po #o666)) (find-files "." "\\.po$")) - (zero? (system* "sh" "bootstrap")))) - (add-after - 'unpack 'disable-container-tests - ;; XXX FIXME: These tests fail within the build container. - (lambda _ - (substitute* "tests/syscalls.scm" - (("^\\(test-assert \"(clone|setns|pivot-root)\"" all) - (string-append "(test-skip 1)\n" all))) - (substitute* "tests/containers.scm" - (("^\\(test-assert" all) - (string-append "(test-skip 1)\n" all))) - #t)))))) + (zero? (system* "sh" "bootstrap")))))))) (native-inputs `(("autoconf" ,(autoconf-wrapper)) ("automake" ,automake) -- cgit v1.2.3 From 341f49657784d55f7e3207d00bdfd26a367a332c Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Fri, 4 Sep 2015 19:26:07 +0200 Subject: gnu: Add prefix to license imports in (gnu packages photo). * gnu/packages/photo.scm: Import (guix licenses) with #:prefix license: to avoid an impending clash with the import of zlib from both (guix licenses) and (gnu packages compression). --- gnu/packages/photo.scm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index cbfc1e8730..4dba088fdd 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015 Ludovic Courtès ;;; Copyright © 2015 Ricardo Wurmus +;;; Copyright © 2015 Andreas Enge ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,7 +19,7 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages photo) - #:use-module (guix licenses) + #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) @@ -48,7 +49,7 @@ (define-public libraw (description "LibRaw is a library for reading RAW files obtained from digital photo cameras (CRW/CR2, NEF, RAF, DNG, and others).") - (license lgpl2.1+))) + (license license:lgpl2.1+))) (define-public libexif (package @@ -67,7 +68,7 @@ (define-public libexif (description "The libexif C library allows applications to read, edit, and save EXIF data as produced by digital cameras.") - (license lgpl2.1+))) + (license license:lgpl2.1+))) (define-public libgphoto2 (package @@ -97,7 +98,7 @@ (define-public libgphoto2 from digital cameras.") ;; 'COPYING' says LGPLv2.1+, but in practices files are under LGPLv2+. - (license lgpl2.1+))) + (license license:lgpl2.1+))) (define-public gphoto2 (package @@ -140,7 +141,7 @@ (define-public gphoto2 MTP, and much more.") ;; Files are typically under LGPLv2+, but 'COPYING' says GPLv2+. - (license gpl2+))) + (license license:gpl2+))) (define-public perl-image-exiftool (package -- cgit v1.2.3 From f06441951c4178d8228ba3e3ca1841934f7a86b8 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Fri, 4 Sep 2015 19:28:26 +0200 Subject: gnu: Order module imports in (gnu packages photo) alphabetically. * gnu/packages/photo.scm: Order module imports alphabetically. --- gnu/packages/photo.scm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index 4dba088fdd..38417e3781 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -19,18 +19,18 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages photo) - #:use-module ((guix licenses) #:prefix license:) - #:use-module (guix packages) - #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (guix build-system perl) - #:use-module (gnu packages pkg-config) - #:use-module (gnu packages libusb) + #:use-module (guix download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) #:use-module (gnu packages autotools) - #:use-module (gnu packages readline) - #:use-module (gnu packages popt) + #:use-module (gnu packages base) + #:use-module (gnu packages libusb) #:use-module (gnu packages perl) - #:use-module (gnu packages base)) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages popt) + #:use-module (gnu packages readline)) (define-public libraw (package -- cgit v1.2.3 From ced7cc92d7df106244d9df540f0f7b81744f1a8c Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Fri, 4 Sep 2015 21:19:51 +0200 Subject: gnu: vigra: Add support for OpenEXR. * gnu/packages/image.scm (vigra)[inputs]: Add ilmbase and openexr. [arguments]: Augment #:configure-flags. --- gnu/packages/image.scm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 84f03967a7..2e274953cd 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -31,6 +31,7 @@ (define-module (gnu packages image) #:use-module (gnu packages fontutils) #:use-module (gnu packages ghostscript) #:use-module (gnu packages gl) + #:use-module (gnu packages graphics) #:use-module (gnu packages maths) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -525,9 +526,12 @@ (define-public vigra ("fftw" ,fftw) ("fftwf" ,fftwf) ("hdf5" ,hdf5) + ("ilmbase" ,ilmbase) ; propagated by openexr, but needed explicitly + ; to create a configure-flag ("libjpeg" ,libjpeg) ("libpng" ,libpng) ("libtiff" ,libtiff) + ("openexr" ,openexr) ("python" ,python-2) ; print syntax ("python2-numpy" ,python2-numpy) ("zlib" ,zlib))) @@ -541,7 +545,15 @@ (define-public vigra (list "-Wno-dev" ; suppress developer mode with lots of warnings (string-append "-DVIGRANUMPY_INSTALL_DIR=" (assoc-ref %outputs "out") - "/lib/python2.7/site-packages")))) + "/lib/python2.7/site-packages") + ;; OpenEXR is not enabled by default. + "-DWITH_OPENEXR=1" + ;; The header files of ilmbase are not found when included + ;; by the header files of openexr, and an explicit flag + ;; needs to be set. + (string-append "-DCMAKE_CXX_FLAGS=-I" + (assoc-ref %build-inputs "ilmbase") + "/include/OpenEXR")))) (synopsis "Computer vision library") (description "VIGRA stands for Vision with Generic Algorithms. It is an image -- cgit v1.2.3 From 6376ed4a3435c74a68c14edddf31f3125141fcf5 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Fri, 4 Sep 2015 21:50:14 +0200 Subject: gnu: libtiff: Update home page. * gnu/packages/image.scm (libtiff)[home-page]: Update. --- gnu/packages/image.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 2e274953cd..1ba281205c 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -150,7 +150,7 @@ (define-public libtiff collection of tools for doing simple manipulations of TIFF images.") (license (license:non-copyleft "file://COPYRIGHT" "See COPYRIGHT in the distribution.")) - (home-page "http://www.libtiff.org/"))) + (home-page "http://www.remotesensing.org/libtiff/"))) (define-public libwmf (package -- cgit v1.2.3 From b7d0b096b063eccb51f01efeaa0eeb06561c2e84 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 5 Sep 2015 18:13:54 +0200 Subject: gnu: Remove #:select from module import in (gnu packages geeqie). * gnu/packages/geeqie.scm: Import all of (gnu packages ghostscript) instead of selectively only the lcms variable; this helps resolve problems with circular dependencies when including the module. --- gnu/packages/geeqie.scm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gnu/packages/geeqie.scm b/gnu/packages/geeqie.scm index ff45bda8c4..a192c4b009 100644 --- a/gnu/packages/geeqie.scm +++ b/gnu/packages/geeqie.scm @@ -25,8 +25,7 @@ (define-module (gnu packages geeqie) #:use-module (gnu packages glib) #:use-module (gnu packages gtk) #:use-module (gnu packages image) - #:use-module ((gnu packages ghostscript) - #:select (lcms)) + #:use-module (gnu packages ghostscript) #:use-module (gnu packages compression) #:use-module (gnu packages xml)) -- cgit v1.2.3 From cf897cbacc3ddcf5d5d553ee19002995985fff11 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 5 Sep 2015 13:36:53 -0400 Subject: build: syscalls: Properly handle clone errors. * guix/build/syscalls.scm (clone): Catch -1 return value and throw error. --- guix/build/syscalls.scm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm index fc801a5e9d..093eb0a1a0 100644 --- a/guix/build/syscalls.scm +++ b/guix/build/syscalls.scm @@ -325,7 +325,13 @@ (define clone "Create a new child process by duplicating the current parent process. Unlike the fork system call, clone accepts FLAGS that specify which resources are shared between the parent and child processes." - (proc syscall-id flags %null-pointer)))) + (let ((ret (proc syscall-id flags %null-pointer)) + (err (errno))) + (if (= ret -1) + (throw 'system-error "clone" "~d: ~A" + (list flags (strerror err)) + (list err)) + ret))))) (define setns ;; Some systems may be using an old (pre-2.14) version of glibc where there -- cgit v1.2.3 From 6b44a09747d18f1570c26f135c7f1a88c317201c Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 5 Sep 2015 19:24:16 +0200 Subject: download: Disable offloading for downloads. * guix/download.scm (url-fetch): Use #:local-build? #t. * guix/git-download.scm (git-fetch): Likewise. --- guix/download.scm | 11 +++++------ guix/git-download.scm | 4 +--- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/guix/download.scm b/guix/download.scm index 079d1b0b8d..42956772f5 100644 --- a/guix/download.scm +++ b/guix/download.scm @@ -288,12 +288,11 @@ (define builder ;; Honor the user's proxy settings. #:leaked-env-vars '("http_proxy" "https_proxy") - ;; In general, offloading downloads is not a good idea. - ;;#:local-build? #t - ;; FIXME: The above would also disable use of - ;; substitutes on old daemons, so comment it out; - ;; see . - ))))) + ;; In general, offloading downloads is not a good + ;; idea. Daemons before 0.8.3 would also + ;; interpret this as "do not substitute" (see + ;; .) + #:local-build? #t))))) (define* (download-to-store store url #:optional (name (basename url)) #:key (log (current-error-port)) recursive?) diff --git a/guix/git-download.scm b/guix/git-download.scm index 0f2218c13e..1e5c845e34 100644 --- a/guix/git-download.scm +++ b/guix/git-download.scm @@ -89,9 +89,7 @@ (define build (mlet %store-monad ((guile (package->derivation guile system))) (gexp->derivation (or name "git-checkout") build #:system system - ;; FIXME: See . - ;; Uncomment when fixed daemons are widely deployed. - ;;#:local-build? #t + #:local-build? #t ;don't offload repo cloning #:hash-algo hash-algo #:hash hash #:recursive? #t -- cgit v1.2.3 From cfc5d39888451b7576b48488f9b92aa70ecc5cec Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 5 Sep 2015 22:08:47 +0200 Subject: tests: Fix typos. * tests/derivations.scm ("substitutable-derivation?", "derivation-prerequisites-to-build and substitutes, local build"): Fix harmless typos. --- tests/derivations.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/derivations.scm b/tests/derivations.scm index d2a090c8bc..21a832fabe 100644 --- a/tests/derivations.scm +++ b/tests/derivations.scm @@ -199,7 +199,7 @@ (define prefix-len (string-length dir)) (and (substitutable-derivation? (derivation %store "foo" %bash '())) (substitutable-derivation? ;see (derivation %store "foo" %bash '() - #:local-build? #f)) + #:local-build? #t)) (not (substitutable-derivation? (derivation %store "foo" %bash '() #:substitutable? #f))))) @@ -663,7 +663,7 @@ (define %coreutils (with-derivation-narinfo drv (let-values (((build download) (derivation-prerequisites-to-build store drv))) - ;; #:local-build? is not be synonymous with #:substitutable?, so we + ;; #:local-build? is *not* synonymous with #:substitutable?, so we ;; must be able to substitute DRV's output. ;; See . (and (null? build) -- cgit v1.2.3 From 616eaead7e242384745a7ef619b97d538de4333b Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 29 Aug 2015 08:32:32 -0400 Subject: gnu: Add ruby-minitar. * gnu/packages/ruby.scm (ruby-minitar): New variable. --- gnu/packages/ruby.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 99aecf8039..1f150fdc05 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -767,3 +767,24 @@ (define-public ruby-arel (description "Arel is a SQL AST manager for Ruby. It simplifies the generation of complex SQL queries and is compatible with various RDBMSes.") (license license:expat))) + +(define-public ruby-minitar + (package + (name "ruby-minitar") + (version "0.5.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitar" version)) + (sha256 + (base32 + "1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; missing a gemspec + (synopsis "Ruby library and utility for handling tar archives") + (description + "Archive::Tar::Minitar is a pure-Ruby library and command-line utility +that provides the ability to deal with POSIX tar archive files.") + (home-page "http://www.github.com/atoulme/minitar") + (license (list license:gpl2+ license:ruby)))) -- cgit v1.2.3 From bea1c0e24645d527f0719e78779e3e4512ef45c5 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 29 Aug 2015 08:32:56 -0400 Subject: gnu: Add ruby-mini-portile. * gnu/packages/ruby.scm (ruby-mini-portile): New variable. --- gnu/packages/ruby.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 1f150fdc05..5f13318011 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -788,3 +788,24 @@ (define-public ruby-minitar that provides the ability to deal with POSIX tar archive files.") (home-page "http://www.github.com/atoulme/minitar") (license (list license:gpl2+ license:ruby)))) + +(define-public ruby-mini-portile + (package + (name "ruby-mini-portile") + (version "0.6.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mini_portile" version)) + (sha256 + (base32 + "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; tests require network access + (synopsis "Ports system for Ruby developers") + (description "Mini-portile is a port/recipe system for Ruby developers. +It provides a standard way to compile against specific versions of libraries +to reproduce user environments.") + (home-page "http://github.com/flavorjones/mini_portile") + (license license:expat))) -- cgit v1.2.3 From e920bfcacf894243ad2d89fb2d9409c91563ff41 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 29 Aug 2015 08:35:54 -0400 Subject: gnu: Add ruby-nokogiri. Co-Authored-By: Pjotr Prins * gnu/packages/ruby.scm (ruby-nokogiri): New variable. --- gnu/packages/ruby.scm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 5f13318011..5fea0566d9 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -36,6 +36,7 @@ (define-module (gnu packages ruby) #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system gnu) + #:use-module (gnu packages xml) #:use-module (guix build-system ruby)) (define-public ruby @@ -809,3 +810,37 @@ (define-public ruby-mini-portile to reproduce user environments.") (home-page "http://github.com/flavorjones/mini_portile") (license license:expat))) + +(define-public ruby-nokogiri + (package + (name "ruby-nokogiri") + (version "1.6.6.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "nokogiri" version)) + (sha256 + (base32 + "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30")))) + (build-system ruby-build-system) + (arguments + ;; Tests fail because Nokogiri can only test with an installed extension, + ;; and also because many test framework dependencies are missing. + '(#:tests? #f + #:gem-flags (list "--" "--use-system-libraries" + (string-append "--with-xml2-include=" + (assoc-ref %build-inputs "libxml2") + "/include/libxml2" )))) + (native-inputs + `(("ruby-hoe" ,ruby-hoe) + ("ruby-rake-compiler", ruby-rake-compiler))) + (inputs + `(("zlib" ,zlib) + ("libxml2" ,libxml2) + ("libxslt" ,libxslt))) + (propagated-inputs + `(("ruby-mini-portile" ,ruby-mini-portile))) + (synopsis "HTML, XML, SAX, and Reader parser for Ruby") + (description "Nokogiri (鋸) parses and searches XML/HTML, and features +both CSS3 selector and XPath 1.0 support.") + (home-page "http://www.nokogiri.org/") + (license license:expat))) -- cgit v1.2.3 From 761b3d44fb826f0707d32afce4edfb749dcda0e4 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Thu, 3 Sep 2015 17:53:51 -0400 Subject: gnu: Add Anonymous Pro fonts. * gnu/packages/fonts.scm (font-anonymous-pro): New variable. Signed-off-by: Alex Kost --- gnu/packages/fonts.scm | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index a78995c804..f7d58424d9 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -524,3 +524,47 @@ (define-public font-tex-gyre following fonts in the OpenType format: Adventor, Bonum, Chorus, Cursor, Heros, Pagella, Schola, Termes.") (license license:gfl1.0))) + +(define-public font-anonymous-pro + (package + (name "font-anonymous-pro") + (version "1.002") + (source (origin + (method url-fetch) + (uri (string-append + "http://www.marksimonson.com/assets/content/fonts/" + "AnonymousPro-" version ".zip")) + (sha256 + (base32 + "1asj6lykvxh46czbal7ymy2k861zlcdqpz8x3s5bbpqwlm3mhrl6")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((unzip (string-append (assoc-ref %build-inputs "unzip") + "/bin/unzip")) + (font-dir (string-append %output "/share/fonts/truetype")) + (doc-dir (string-append %output "/share/doc/" ,name))) + (system* unzip (assoc-ref %build-inputs "source")) + (mkdir-p font-dir) + (mkdir-p doc-dir) + (chdir (string-append "AnonymousPro-" ,version ".001")) + (for-each (lambda (ttf) + (copy-file ttf + (string-append font-dir "/" ttf))) + (find-files "." "\\.ttf$")) + (for-each (lambda (doc) + (copy-file doc + (string-append doc-dir "/" doc))) + (find-files "." "\\.txt$")))))) + (native-inputs + `(("unzip" ,unzip))) + (home-page "http://www.marksimonson.com/fonts/view/anonymous-pro") + (synopsis "Fixed-width fonts designed with coding in mind") + (description "Anonymous Pro is a family of four fixed-width fonts designed +with coding in mind. Anonymous Pro features an international, Unicode-based +character set, with support for most Western and Central European Latin-based +languages, plus Greek and Cyrillic.") + (license license:silofl1.1))) -- cgit v1.2.3 From 1ce6f43a6baaad37783784b55b8ccb7bb224873c Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Thu, 3 Sep 2015 11:23:30 +0300 Subject: gnu: wpa-supplicant-light: Rename to wpa-supplicant-minimal. * gnu/packages/admin.scm (wpa-supplicant-light): Rename to ... (wpa-supplicant-minimal): ...this. (wpa-supplicant): Use it. * gnu/system/install.scm (installation-os): Use it. --- gnu/packages/admin.scm | 10 +++++----- gnu/system/install.scm | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 53cf65e11a..70b2bb2c8f 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -703,9 +703,9 @@ (define-public sudo ;; See . (license license:x11))) -(define-public wpa-supplicant-light +(define-public wpa-supplicant-minimal (package - (name "wpa-supplicant-light") + (name "wpa-supplicant-minimal") (version "2.4") (source (origin (method url-fetch) @@ -795,12 +795,12 @@ (define (copy-man-page target) (license license:bsd-3))) (define-public wpa-supplicant - (package (inherit wpa-supplicant-light) + (package (inherit wpa-supplicant-minimal) (name "wpa-supplicant") (inputs `(("dbus" ,dbus) - ,@(package-inputs wpa-supplicant-light))) + ,@(package-inputs wpa-supplicant-minimal))) (arguments - (substitute-keyword-arguments (package-arguments wpa-supplicant-light) + (substitute-keyword-arguments (package-arguments wpa-supplicant-minimal) ((#:phases phases) `(alist-cons-after 'configure 'configure-for-dbus diff --git a/gnu/system/install.scm b/gnu/system/install.scm index e7e5d4ae9d..9314462f30 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -344,7 +344,7 @@ (define installation-os parted ddrescue grub ;mostly so xrefs to its manual work cryptsetup - wireless-tools iw wpa-supplicant-light iproute + wireless-tools iw wpa-supplicant-minimal iproute ;; XXX: We used to have GNU fdisk here, but as of version ;; 2.0.0a, that pulls Guile 1.8, which takes unreasonable ;; space; furthermore util-linux's fdisk is already -- cgit v1.2.3 From 6480fcae24db573aa11efaffe4157e2480b5d881 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Thu, 3 Sep 2015 10:35:19 +0300 Subject: emacs-build-system: Fix a file name of info directory. * guix/build/emacs-build-system.scm (move-doc): Adjust to use "/share/info" instead of its sub-directory. --- guix/build/emacs-build-system.scm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm index f18db0aadd..c01b24fe9a 100644 --- a/guix/build/emacs-build-system.scm +++ b/guix/build/emacs-build-system.scm @@ -83,8 +83,7 @@ (define* (move-doc #:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (elpa-name-ver (store-directory->elpa-name-version out)) (el-dir (string-append out %install-suffix "/" elpa-name-ver)) - (name-ver (store-directory->name-version out)) - (info-dir (string-append out "/share/info/" name-ver)) + (info-dir (string-append out "/share/info")) (info-files (find-files el-dir "\\.info$"))) (unless (null? info-files) (mkdir-p info-dir) -- cgit v1.2.3 From 718a2bde42c56a93faf182ddeb757b5cc937031e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 6 Sep 2015 10:43:40 +0200 Subject: gnu: r-stringr: Provide valid 'home-page' URL. * gnu/packages/statistics.scm (r-stringr)[home-page]: Set to valid URL. --- gnu/packages/statistics.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 7cb61c9eb2..29cd34a4f3 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -409,7 +409,7 @@ (define-public r-stringr (propagated-inputs `(("r-magrittr" ,r-magrittr) ("r-stringi" ,r-stringi))) - (home-page "") + (home-page "https://github.com/hadley/stringr") (synopsis "Simple, consistent wrappers for common string operations") (description "Stringr is a consistent, simple and easy to use set of wrappers around -- cgit v1.2.3 From 52b9efe337d00f2ce65c4d4ca74ccc3679e6aad8 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 6 Sep 2015 10:54:51 +0200 Subject: lint: Add 'license' checker. * guix/scripts/lint.scm (check-license): New procedure. (%checkers): Add 'license' checker. * tests/lint.scm ("license: invalid license"): New test. --- guix/scripts/lint.scm | 19 +++++++++++++++++++ tests/lint.scm | 6 ++++++ 2 files changed, 25 insertions(+) diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index 41249b2d15..2a618c9451 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm @@ -24,6 +24,7 @@ (define-module (guix scripts lint) #:use-module (guix download) #:use-module (guix ftp-client) #:use-module (guix packages) + #:use-module (guix licenses) #:use-module (guix records) #:use-module (guix ui) #:use-module (guix utils) @@ -56,6 +57,7 @@ (define-module (guix scripts lint) check-derivation check-home-page check-source + check-license check-formatting %checkers @@ -518,6 +520,16 @@ (define (check-derivation package) (format #f (_ "failed to create derivation: ~s~%") args))))) +(define (check-license package) + "Warn about type errors of the 'license' field of PACKAGE." + (match (package-license package) + ((or (? license?) + ((? license?) ...)) + #t) + (x + (emit-warning package (_ "invalid license field") + 'license)))) + ;;; ;;; Source code formatting. @@ -619,6 +631,13 @@ (define %checkers (name 'home-page) (description "Validate home-page URLs") (check check-home-page)) + (lint-checker + (name 'license) + ;; TRANSLATORS: is the name of a data type and must not be + ;; translated. + (description "Make sure the 'license' field is a \ +or a list thereof") + (check check-license)) (lint-checker (name 'source) (description "Validate source URLs") diff --git a/tests/lint.scm b/tests/lint.scm index 5d56420966..ac47dbb768 100644 --- a/tests/lint.scm +++ b/tests/lint.scm @@ -329,6 +329,12 @@ (define-syntax-rule (with-warnings body ...) (check-derivation pkg))) "failed to create derivation"))) +(test-assert "license: invalid license" + (string-contains + (with-warnings + (check-license (dummy-package "x" (license #f)))) + "invalid license")) + (test-assert "home-page: wrong home-page" (->bool (string-contains -- cgit v1.2.3 From 90f2801e2115d6f9b6e60c25e034d4d950b3e5d1 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 6 Sep 2015 11:09:33 +0200 Subject: gnu: Set license of the bootstrap tools. * gnu/packages/bootstrap.scm (package-from-tarball)[license]: Set to GPL3+. * gnu/packages/make-bootstrap.scm (%static-binaries)[license]: Likewise. --- gnu/packages/bootstrap.scm | 2 +- gnu/packages/make-bootstrap.scm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm index f3c1c5a617..bd9bce8a26 100644 --- a/gnu/packages/bootstrap.scm +++ b/gnu/packages/bootstrap.scm @@ -127,7 +127,7 @@ (define* (package-from-tarball name source program-to-test description (synopsis description) (description #f) (home-page #f) - (license #f))) + (license gpl3+))) (define package-with-bootstrap-guile (memoize diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm index 07e8b5160b..1b70d54c48 100644 --- a/gnu/packages/make-bootstrap.scm +++ b/gnu/packages/make-bootstrap.scm @@ -271,7 +271,7 @@ (define (copy-directory source destination) (synopsis "Statically-linked bootstrap binaries") (description "Binaries used to bootstrap the distribution.") - (license #f) + (license gpl3+) (home-page #f))) (define %binutils-static -- cgit v1.2.3 From 12abc6e39548a55c2b6ba4113f9f1bde8d5d08e1 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 6 Sep 2015 12:34:03 +0200 Subject: licenses: Add CC-BY-SA and CC-BY. * guix/licenses.scm (cc-by-sa4.0, cc-by3.0): New variables. --- guix/licenses.scm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/guix/licenses.scm b/guix/licenses.scm index 024f0c294c..c3b76af9b9 100644 --- a/guix/licenses.scm +++ b/guix/licenses.scm @@ -30,6 +30,7 @@ (define-module (guix licenses) non-copyleft bsd-style ;deprecated! cc0 + cc-by-sa4.0 cc-by3.0 cddl1.0 cecill-c artistic2.0 clarified-artistic @@ -137,6 +138,16 @@ (define cc0 "http://directory.fsf.org/wiki/License:CC0" "http://www.gnu.org/licenses/license-list.html#CC0")) +(define cc-by-sa4.0 + (license "CC-BY-SA 4.0" + "http://creativecommons.org/licenses/by-sa/4.0/" + "Creative Commons Attribution-ShareAlike 4.0 International")) + +(define cc-by3.0 + (license "CC-BY 3.0" + "http://creativecommons.org/licenses/by/3.0/" + "Creative Commons Attribution 3.0 Unported")) + (define cddl1.0 (license "CDDL 1.0" "http://directory.fsf.org/wiki/License:CDDLv1.0" -- cgit v1.2.3 From 386b0052f5ec05ef8bef8662ffa48c98cd80090a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 6 Sep 2015 12:34:38 +0200 Subject: gnu: sound-theme-freedesktop: Specify the applicable licenses. * gnu/packages/libcanberra.scm (sound-theme-freedesktop)[license]: Specify the actual licenses that apply. --- gnu/packages/libcanberra.scm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gnu/packages/libcanberra.scm b/gnu/packages/libcanberra.scm index 0ffae1f674..3769e3fe21 100644 --- a/gnu/packages/libcanberra.scm +++ b/gnu/packages/libcanberra.scm @@ -18,7 +18,8 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages libcanberra) - #:use-module ((guix licenses) #:select (lgpl2.1+)) + #:use-module ((guix licenses) + #:select (lgpl2.1+ gpl2 gpl2+ cc-by-sa4.0 cc-by3.0)) #:use-module (gnu packages) #:use-module (guix packages) #:use-module (guix download) @@ -112,5 +113,8 @@ (define-public sound-theme-freedesktop (description "This package provides audio samples that can be used by libcanberra as sounds for various system events.") - (license #f) + + ;; The license of the various sounds is given in the 'CREDITS' file. + (license (list cc-by-sa4.0 cc-by3.0 gpl2 gpl2+)) + (home-page "http://www.freedesktop.org/wiki/Specifications/sound-theme-spec/"))) -- cgit v1.2.3 From 30b0b725ff358e7d8e645d005f02a0a6e06cfbe9 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 29 Aug 2015 22:53:34 -0400 Subject: gnu: Add ruby-method-source. * gnu/packages/ruby.scm (ruby-method-source): New variable. --- gnu/packages/ruby.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 5fea0566d9..35b63cf6ac 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -844,3 +844,25 @@ (define-public ruby-nokogiri both CSS3 selector and XPath 1.0 support.") (home-page "http://www.nokogiri.org/") (license license:expat))) + +(define-public ruby-method-source + (package + (name "ruby-method-source") + (version "0.8.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "method_source" version)) + (sha256 + (base32 + "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2")))) + (build-system ruby-build-system) + (native-inputs + `(("ruby-bacon" ,ruby-bacon) + ("git" ,git))) + (synopsis "Retrieve the source code for Ruby methods") + (description "Method_source retrieves the source code for Ruby methods. +Additionally, it can extract source code from Proc and Lambda objects or just +extract comments.") + (home-page "https://github.com/banister/method_source") + (license license:expat))) -- cgit v1.2.3 From 2e3fdea4415a03455cb3561eaf6502bcce8f7d09 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 29 Aug 2015 22:54:05 -0400 Subject: gnu: Add ruby-coderay. * gnu/packages/ruby.scm (ruby-coderay): New variable. --- gnu/packages/ruby.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 35b63cf6ac..9fd531663e 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -866,3 +866,23 @@ (define-public ruby-method-source extract comments.") (home-page "https://github.com/banister/method_source") (license license:expat))) + +(define-public ruby-coderay + (package + (name "ruby-coderay") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "coderay" version)) + (sha256 + (base32 + "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; missing test files + (synopsis "Ruby syntax highlighting library") + (description "Coderay is a Ruby library that provides syntax highlighting +for select languages.") + (home-page "http://coderay.rubychan.de") + (license license:expat))) -- cgit v1.2.3 From 5337f8b97ddc754d04c2888822295602554d3944 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 6 Sep 2015 09:00:55 -0400 Subject: gnu: Add ruby-slop-3. * gnu/packages/ruby.scm (ruby-slop-3): New variable. --- gnu/packages/ruby.scm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 9fd531663e..b85bf82b80 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -732,6 +732,16 @@ (define-public ruby-slop (home-page "https://github.com/leejarvis/slop") (license license:expat))) +(define-public ruby-slop-3 + (package (inherit ruby-slop) + (version "3.6.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "slop" version)) + (sha256 + (base32 + "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n")))))) + (define-public ruby-multipart-post (package (name "ruby-multipart-post") -- cgit v1.2.3 From 96e76083b82659429cd46e9abe2323678fd98e87 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 29 Aug 2015 22:54:24 -0400 Subject: gnu: Add ruby-pry. * gnu/packages/ruby.scm (ruby-pry): New variable. --- gnu/packages/ruby.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index b85bf82b80..d3babbe5d2 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -896,3 +896,28 @@ (define-public ruby-coderay for select languages.") (home-page "http://coderay.rubychan.de") (license license:expat))) + +(define-public ruby-pry + (package + (name "ruby-pry") + (version "0.10.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "pry" version)) + (sha256 + (base32 + "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no tests + (propagated-inputs + `(("ruby-coderay" ,ruby-coderay) + ("ruby-method-source" ,ruby-method-source) + ("ruby-slop" ,ruby-slop-3))) + (synopsis "Ruby REPL") + (description "Pry is an IRB alternative and runtime developer console for +Ruby. It features syntax highlighting, a plugin architecture, runtime +invocation, and source and documentation browsing.") + (home-page "http://pryrepl.org") + (license license:expat))) -- cgit v1.2.3 From 1415792a7c2faafe3d62c80358211db87a03020b Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 30 Aug 2015 09:21:23 -0400 Subject: gnu: Add ruby-thread-safe. * gnu/packages/ruby.scm (ruby-thread-safe): New variable. --- gnu/packages/ruby.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index d3babbe5d2..60cee11356 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -921,3 +921,23 @@ (define-public ruby-pry invocation, and source and documentation browsing.") (home-page "http://pryrepl.org") (license license:expat))) + +(define-public ruby-thread-safe + (package + (name "ruby-thread-safe") + (version "0.3.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "thread_safe" version)) + (sha256 + (base32 + "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; needs simplecov, among others + (synopsis "Thread-safe utilities for Ruby") + (description "The thread_safe library provides thread-safe collections and +utilities for Ruby.") + (home-page "https://github.com/ruby-concurrency/thread_safe") + (license license:asl2.0))) -- cgit v1.2.3 From 08a1b7013df6d081037406a2a9e180724ecd79b3 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 30 Aug 2015 09:21:46 -0400 Subject: gnu: Add ruby-tzinfo. * gnu/packages/ruby.scm (ruby-tzinfo): New variable. --- gnu/packages/ruby.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 60cee11356..6c346d52f1 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -941,3 +941,23 @@ (define-public ruby-thread-safe utilities for Ruby.") (home-page "https://github.com/ruby-concurrency/thread_safe") (license license:asl2.0))) + +(define-public ruby-tzinfo + (package + (name "ruby-tzinfo") + (version "1.2.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "tzinfo" version)) + (sha256 + (base32 + "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-thread-safe" ,ruby-thread-safe))) + (synopsis "Time zone library for Ruby") + (description "TZInfo is a Ruby library that provides daylight savings +aware transformations between times in different time zones.") + (home-page "http://tzinfo.github.io") + (license license:expat))) -- cgit v1.2.3 From c99e2247078468e8755bd29dc9329b889dec910a Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 30 Aug 2015 09:22:12 -0400 Subject: gnu: Add ruby-json. * gnu/packages/ruby.scm (ruby-json): New variable. --- gnu/packages/ruby.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 6c346d52f1..3b4dc6d8e3 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -961,3 +961,22 @@ (define-public ruby-tzinfo aware transformations between times in different time zones.") (home-page "http://tzinfo.github.io") (license license:expat))) + +(define-public ruby-json + (package + (name "ruby-json") + (version "1.8.3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "json" version)) + (sha256 + (base32 + "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ; dependency cycle with sdoc + (synopsis "JSON library for Ruby") + (description "This Ruby library provides a JSON implementation written as +a native C extension.") + (home-page "http://json-jruby.rubyforge.org/") + (license (list license:ruby license:gpl2)))) ; GPL2 only -- cgit v1.2.3 From 5ff89a1bd218d7f1030e5ca776c10017c2d90a59 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 30 Aug 2015 09:22:50 -0400 Subject: gnu: Add ruby-activesupport. * gnu/packages/ruby.scm (ruby-activesupport): New variable. --- gnu/packages/ruby.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 3b4dc6d8e3..516708e5cc 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -980,3 +980,30 @@ (define-public ruby-json a native C extension.") (home-page "http://json-jruby.rubyforge.org/") (license (list license:ruby license:gpl2)))) ; GPL2 only + +(define-public ruby-activesupport + (package + (name "ruby-activesupport") + (version "4.2.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "activesupport" version)) + (sha256 + (base32 + "19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no tests + (propagated-inputs + `(("ruby-i18n" ,ruby-i18n) + ("ruby-json" ,ruby-json) + ("ruby-minitest" ,ruby-minitest) + ("ruby-thread-safe" ,ruby-thread-safe) + ("ruby-tzinfo" ,ruby-tzinfo))) + (synopsis "Ruby on Rails utility library") + (description "ActiveSupport is a toolkit of support libraries and Ruby +core extensions extracted from the Rails framework. It includes support for +multibyte strings, internationalization, time zones, and testing.") + (home-page "http://www.rubyonrails.org") + (license license:expat))) -- cgit v1.2.3 From f847ad7bc05545b4193875815988628a297c72ae Mon Sep 17 00:00:00 2001 From: David Thompson Date: Fri, 4 Sep 2015 15:01:11 -0400 Subject: gnu: Add ruby-ox. * gnu/packages/ruby.scm (ruby-ox): New variable. --- gnu/packages/ruby.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 516708e5cc..81ab4c7880 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -1007,3 +1007,26 @@ (define-public ruby-activesupport multibyte strings, internationalization, time zones, and testing.") (home-page "http://www.rubyonrails.org") (license license:expat))) + +(define-public ruby-ox + (package + (name "ruby-ox") + (version "2.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ox" version)) + (sha256 + (base32 + "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no tests + (synopsis "Optimized XML library for Ruby") + (description + "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby +written as a native C extension. It was designed to be an alternative to +Nokogiri and other Ruby XML parsers for generic XML parsing and as an +alternative to Marshal for Object serialization. ") + (home-page "http://www.ohler.com/ox") + (license license:expat))) -- cgit v1.2.3 From 37ab3abad35839b231074ea953f3287d395ac970 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 6 Sep 2015 09:39:18 -0400 Subject: Update copyright information in (gnu packages ruby). --- gnu/packages/ruby.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 81ab4c7880..fe9ba35dfe 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -1,8 +1,8 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Pjotr Prins +;;; Copyright © 2014, 2015 Pjotr Prins ;;; Copyright © 2014 Ludovic Courtès ;;; Copyright © 2014, 2015 Mark H Weaver -;;; Copyright © 2014 David Thompson +;;; Copyright © 2014, 2015 David Thompson ;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. -- cgit v1.2.3 From a5c0d8bc557affbcb58a4d2cb0059604e0cb89fa Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 6 Sep 2015 15:47:06 +0200 Subject: ui: Change 'P_' to return the empty string when passed the empty string. Reported by Mathieu Lirzin at . * guix/ui.scm (P_): Check whether MSGID is empty, and return it if it is. --- guix/ui.scm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/guix/ui.scm b/guix/ui.scm index 8de8e3c863..2f757547cf 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -99,7 +99,15 @@ (define %package-text-domain (define _ (cut gettext <> %gettext-domain)) (define N_ (cut ngettext <> <> <> %gettext-domain)) -(define P_ (cut gettext <> %package-text-domain)) + +(define (P_ msgid) + "Return the translation of the package description or synopsis MSGID." + ;; Descriptions/synopses might occasionally be empty strings, even if that + ;; is something we try to avoid. Since (gettext "") can return a non-empty + ;; string, explicitly check for that case. + (if (string-null? msgid) + msgid + (gettext msgid %package-text-domain))) (define-syntax-rule (define-diagnostic name prefix) "Create a diagnostic macro (i.e., NAME), which will prepend PREFIX to all -- cgit v1.2.3 From 0e6412c1d0465a6b3260f4855f3aad76b8b475e6 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sat, 5 Sep 2015 18:41:27 +0200 Subject: gnu: Add libpano13. * gnu/packages/photo.scm (libpano13): New variable. --- gnu/packages/photo.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index 38417e3781..3ecb1d720c 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -19,6 +19,7 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages photo) + #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system perl) #:use-module (guix download) @@ -26,6 +27,8 @@ (define-module (gnu packages photo) #:use-module (guix packages) #:use-module (gnu packages autotools) #:use-module (gnu packages base) + #:use-module (gnu packages compression) + #:use-module (gnu packages image) #:use-module (gnu packages libusb) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -175,3 +178,29 @@ (define-public perl-image-exiftool "This package provides the 'exiftool' command and the 'Image::ExifTool' Perl library to manipulate EXIF tags of digital images.") (license (package-license perl)))) + +(define-public libpano13 + (package + (name "libpano13") + (version "2.9.19") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/panotools/libpano13/" + "libpano13-" version "/" + "libpano13-" version ".tar.gz")) + (sha256 + (base32 + "1a4m3plmfcrrplqs9zfzhc5apibn10m5sajpizm1sd3q74w5fwq3")))) + (build-system cmake-build-system) + (inputs + `(("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("libtiff" ,libtiff) + ("zlib" ,zlib))) + (home-page "http://panotools.sourceforge.net/") + (synopsis "Library for panoramic images") + (description + "The libpano13 package contains the backend library written by the +Panorama Tools project for building panoramic images from a set of +overlapping images, as well as some command line tools.") + (license license:gpl2+))) -- cgit v1.2.3 From a1703aa76562143bcfdf9ac6efa914bbd9748626 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 6 Sep 2015 10:46:59 +0300 Subject: gnu: youtube-dl: Update to 2015.09.03. * gnu/packages/video.scm (youtube-dl): Update to 2015.09.03. --- gnu/packages/video.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index c1101cb8bd..efa0a60f19 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -792,15 +792,15 @@ (define-public libvpx (define-public youtube-dl (package (name "youtube-dl") - (version "2015.08.16.1") + (version "2015.09.03") (source (origin (method url-fetch) - (uri (string-append "http://youtube-dl.org/downloads/" + (uri (string-append "https://youtube-dl.org/downloads/" version "/youtube-dl-" version ".tar.gz")) (sha256 (base32 - "04g78anvy519pj8m8ys1ifmnmp1x3i9bw3afwqjch71n9f77papy")))) + "0wxjbqr07rm26iih12yhv0qwspfrg9safhgnrp8misqjjk4fz86z")))) (build-system python-build-system) (inputs `(("setuptools" ,python-setuptools))) (home-page "http://youtube-dl.org") -- cgit v1.2.3 From 194c7f95f101afbec21b4662b1eb1e06f09fa293 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sun, 6 Sep 2015 19:34:09 +0200 Subject: gnu: Add FLANN. * gnu/packages/maths.scm (flann): New variable. --- gnu/packages/maths.scm | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 2fc3ce19df..b56ca4057d 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -1930,3 +1930,39 @@ (define-public dealii-openmpi "-DMPI_Fortran_COMPILER=mpifort" ,@,cf)))) (synopsis "Finite element library (with MPI support)"))) + +(define-public flann + (package + (name "flann") + (version "1.8.4") + (source + (origin + (method url-fetch) + (uri + (string-append + "http://www.cs.ubc.ca/research/flann/uploads/FLANN/flann-" + version "-src.zip")) + (sha256 + (base32 + "022w8hph7bli5zbpnk3z1qh1c2sl5hm8fw2ccim651ynn0hr7fyz")))) + (build-system cmake-build-system) + (native-inputs + `(("unzip" ,unzip))) + (inputs + `(("hdf5" ,hdf5) + ("octave" ,octave) + ("python" ,python-2) ; print syntax + ;; ("python2-numpy" ,python2-numpy) ; only required for the tests + ("zlib" ,zlib))) + (arguments + `(#:tests? #f)) ; The test data are downloaded from the Internet. + (home-page "http://www.cs.ubc.ca/research/flann/") + (synopsis "Library for approximate nearest neighbors computation") + (description "FLANN is a library for performing fast approximate +nearest neighbor searches in high dimensional spaces. It implements a +collection of algorithms and a system for automatically choosing the best +algorithm and optimum parameters depending on the dataset. + +FLANN is written in C++ and contains bindings for C, Octave and Python.") + (license (license:non-copyleft "file://COPYING" + "See COPYING in the distribution.")))) -- cgit v1.2.3 From f03c0e01ca547aea1d0e7217ac4865bad1638d97 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sun, 6 Sep 2015 22:36:34 +0200 Subject: gnu: calibre: Update to 2.37.1. * gnu/packages/ebook.scm (calibre): Update to 2.37.1. --- gnu/packages/ebook.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index b0dde64360..ad615acc86 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -60,7 +60,7 @@ (define-public chmlib (define-public calibre (package (name "calibre") - (version "2.35.0") + (version "2.37.1") (source (origin (method url-fetch) @@ -69,7 +69,7 @@ (define-public calibre version ".tar.xz")) (sha256 (base32 - "13sic0l16myvka8mgpr56h6qlpf1cwx8xlf4acp3qz6gsmz3r23x")) + "0cbpkhchxjz9dz4chkrlgq0q1sjmyp6lm9vrhnm2mwai61kzn25s")) ;; Remove non-free or doubtful code, see ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html (modules '((guix build utils))) -- cgit v1.2.3 From 8957241dd461acb17068411eb9542ff8267e7cfc Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Sun, 6 Sep 2015 23:12:51 +0200 Subject: gnu: Add enblend-enfuse. * gnu/packages/photo.scm (enblend-enfuse): New variable. --- gnu/packages/photo.scm | 56 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index 3ecb1d720c..6af4e4a214 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -25,15 +25,25 @@ (define-module (gnu packages photo) #:use-module (guix download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) + #:use-module (guix utils) #:use-module (gnu packages autotools) #:use-module (gnu packages base) + #:use-module (gnu packages boost) #:use-module (gnu packages compression) + #:use-module (gnu packages ghostscript) + #:use-module (gnu packages gl) + #:use-module (gnu packages graphics) #:use-module (gnu packages image) + #:use-module (gnu packages imagemagick) #:use-module (gnu packages libusb) + #:use-module (gnu packages maths) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages popt) - #:use-module (gnu packages readline)) + #:use-module (gnu packages readline) + #:use-module (gnu packages web) + #:use-module (gnu packages xfig) + #:use-module (gnu packages xml)) (define-public libraw (package @@ -204,3 +214,47 @@ (define-public libpano13 Panorama Tools project for building panoramic images from a set of overlapping images, as well as some command line tools.") (license license:gpl2+))) + +(define-public enblend-enfuse + (package + (name "enblend-enfuse") + (version "4.1.3") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/enblend/" + name "/" + name "-" (version-major+minor version) "/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "1b7r1nnwaind0344ckwggy0ghl0ipbk9jzylsxcjfl05rnasw00w")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("perl" ,perl) + ("perl-timedate" ,perl-timedate) + ;; for building the documentation + ("gnuplot" ,gnuplot) + ("imagemagick" ,imagemagick) + ("libxml2" ,libxml2) + ("tidy" ,tidy) + ("transfig" ,transfig))) + (inputs + `(("boost" ,boost) + ("gsl" ,gsl) + ("lcms" ,lcms) + ("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("libtiff" ,libtiff) + ("openexr" ,openexr) + ("vigra" ,vigra) + ("zlib" ,zlib))) + (arguments + `(#:configure-flags `("--enable-openmp"))) + (home-page "http://enblend.sourceforge.net/") + (synopsis "Tools for combining and blending images") + (description + "Enblend blends away the seams in a panoramic image mosaic using a +multi-resolution spline. Enfuse merges different exposures of the same +scene to produce an image that looks much like a tone-mapped image.") + (license license:gpl2+))) -- cgit v1.2.3 From b500e7182d3278cbbe3ba3cb5c83ba985554aff7 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 29 Aug 2015 21:55:12 -0400 Subject: build: ruby: Avoid long build directory names. Having the hash of the source gem in the source directory file name proved to be problematic when running the test suite for the 'pg' gem that creates UNIX-domain sockets in the source directory and exceeded the 108 character limit on GNU/Linux systems. * guix/build/ruby-build-system.scm (unpack): Rename unpacked gem directory to "gem". --- guix/build/ruby-build-system.scm | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/guix/build/ruby-build-system.scm b/guix/build/ruby-build-system.scm index 90fab92f6a..4184ccc9ac 100644 --- a/guix/build/ruby-build-system.scm +++ b/guix/build/ruby-build-system.scm @@ -44,12 +44,16 @@ (define (first-matching-file pattern) (define* (unpack #:key source #:allow-other-keys) "Unpack the gem SOURCE and enter the resulting directory." (and (zero? (system* "gem" "unpack" source)) - (begin - ;; The unpacked gem directory is named the same as the archive, sans - ;; the ".gem" extension. - (chdir (match:substring (string-match "^(.*)\\.gem$" - (basename source)) - 1)) + ;; The unpacked gem directory is named the same as the archive, sans + ;; the ".gem" extension. It is renamed to simply "gem" in an effort to + ;; keep file names shorter to avoid UNIX-domain socket file names and + ;; shebangs that exceed the system's fixed maximum length when running + ;; test suites. + (let ((dir (match:substring (string-match "^(.*)\\.gem$" + (basename source)) + 1))) + (rename-file dir "gem") + (chdir "gem") #t))) (define* (build #:key source #:allow-other-keys) -- cgit v1.2.3 From 4a9e05856622d535cb51d64fe733b1c904095516 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 29 Aug 2015 22:03:51 -0400 Subject: gnu: Add ruby-pg. * gnu/packages/ruby.scm (ruby-pg): New variable. --- gnu/packages/ruby.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index fe9ba35dfe..5ec32b4d02 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -24,6 +24,7 @@ (define-module (gnu packages ruby) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages) #:use-module (gnu packages compression) + #:use-module (gnu packages databases) #:use-module (gnu packages readline) #:use-module (gnu packages autotools) #:use-module (gnu packages java) @@ -1030,3 +1031,29 @@ (define-public ruby-ox alternative to Marshal for Object serialization. ") (home-page "http://www.ohler.com/ox") (license license:expat))) + +(define-public ruby-pg + (package + (name "ruby-pg") + (version "0.18.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "pg" version)) + (sha256 + (base32 + "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf")))) + (build-system ruby-build-system) + (arguments + '(#:test-target "spec")) + (native-inputs + `(("ruby-rake-compiler" ,ruby-rake-compiler) + ("ruby-hoe" ,ruby-hoe) + ("ruby-rspec" ,ruby-rspec))) + (inputs + `(("postgresql" ,postgresql))) + (synopsis "Ruby interface to PostgreSQL") + (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works +with PostgreSQL 8.4 and later.") + (home-page "https://bitbucket.org/ged/ruby-pg") + (license license:ruby))) -- cgit v1.2.3 From 468e56576c23c44b96f0af08e15bd302862f9c81 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Fri, 4 Sep 2015 15:09:30 -0400 Subject: gnu: Add ruby-byebug. * gnu/packages/ruby.scm (ruby-byebug): New variable. --- gnu/packages/ruby.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 5ec32b4d02..1e9ed271f7 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -1057,3 +1057,26 @@ (define-public ruby-pg with PostgreSQL 8.4 and later.") (home-page "https://bitbucket.org/ged/ruby-pg") (license license:ruby))) + +(define-public ruby-byebug + (package + (name "ruby-byebug") + (version "6.0.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "byebug" version)) + (sha256 + (base32 + "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no tests + (synopsis "Debugger for Ruby 2") + (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2 +TracePoint C API for execution control and the Debug Inspector C API for call +stack navigation. The core component provides support that front-ends can +build on. It provides breakpoint handling and bindings for stack frames among +other things and it comes with a command line interface.") + (home-page "http://github.com/deivid-rodriguez/byebug") + (license license:bsd-2))) -- cgit v1.2.3 From 4949ada9da470b266063ff490438c85541af24cc Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 1 Aug 2015 13:54:40 -0400 Subject: build: container: Setup /dev/console. * gnu/build/linux-container.scm (mount-file-systems): Bind mount the controlling terminal as /dev/console. --- gnu/build/linux-container.scm | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm index af599040a1..c004303f03 100644 --- a/gnu/build/linux-container.scm +++ b/gnu/build/linux-container.scm @@ -55,6 +55,9 @@ (define* (mount-file-systems root mounts #:key mount-/sys? mount-/proc?) (define (scope dir) (string-append root dir)) + (define (touch file-name) + (call-with-output-file file-name (const #t))) + (define (bind-mount src dest) (mount src dest "none" MS_BIND)) @@ -89,8 +92,7 @@ (define* (mount* source target type #:optional (flags 0) options (for-each (lambda (device) (when (file-exists? device) ;; Create the mount point file. - (call-with-output-file (scope device) - (const #t)) + (touch (scope device)) (bind-mount device (scope device)))) '("/dev/null" "/dev/zero" @@ -101,6 +103,15 @@ (define* (mount* source target type #:optional (flags 0) options "/dev/ptmx" "/dev/fuse")) + ;; Setup the container's /dev/console by bind mounting the pseudo-terminal + ;; associated with standard input. + (let ((in (current-input-port)) + (console (scope "/dev/console"))) + (when (isatty? in) + (touch console) + (chmod console #o600) + (bind-mount (ttyname in) console))) + ;; Setup standard input/output/error. (symlink "/proc/self/fd" (scope "/dev/fd")) (symlink "/proc/self/fd/0" (scope "/dev/stdin")) -- cgit v1.2.3 From ee78d02452208b3cfd971cd5533570a1d3523512 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 5 Sep 2015 14:10:08 -0400 Subject: build: container: Use the same clone flags as fork(3). The intent is to make 'clone' behave a lot more like 'primitive-fork', which calls clone(2) with SIGCHLD, CLONE_CHILD_CLEARTID, and CLONE_CHILD_SETTID flags. Notably, running 'clone' at the REPL without these flags would break the REPL beyond repair. * guix/build/syscalls.scm (CLONE_CHILD_CLEARTID, CLONE_CHILD_SETTID): New variables. * gnu/build/linux-container.scm (namespaces->bit-mask): Add CLONE_CHILD_CLEARTID and CLONE_CHILD_SETTID to bit mask. --- gnu/build/linux-container.scm | 3 ++- guix/build/syscalls.scm | 16 ++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm index c004303f03..95220d0bc0 100644 --- a/gnu/build/linux-container.scm +++ b/gnu/build/linux-container.scm @@ -162,7 +162,8 @@ (define (scope file) (define (namespaces->bit-mask namespaces) "Return the number suitable for the 'flags' argument of 'clone' that corresponds to the symbols in NAMESPACES." - (apply logior SIGCHLD + ;; Use the same flags as fork(3) in addition to the namespace flags. + (apply logior SIGCHLD CLONE_CHILD_CLEARTID CLONE_CHILD_SETTID (map (match-lambda ('mnt CLONE_NEWNS) ('uts CLONE_NEWUTS) diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm index 093eb0a1a0..2c2fbde0a3 100644 --- a/guix/build/syscalls.scm +++ b/guix/build/syscalls.scm @@ -50,6 +50,8 @@ (define-module (guix build syscalls) mkdtemp! pivot-root + CLONE_CHILD_CLEARTID + CLONE_CHILD_SETTID CLONE_NEWNS CLONE_NEWUTS CLONE_NEWIPC @@ -303,12 +305,14 @@ (define mkdtemp! (pointer->string result))))) ;; Linux clone flags, from linux/sched.h -(define CLONE_NEWNS #x00020000) -(define CLONE_NEWUTS #x04000000) -(define CLONE_NEWIPC #x08000000) -(define CLONE_NEWUSER #x10000000) -(define CLONE_NEWPID #x20000000) -(define CLONE_NEWNET #x40000000) +(define CLONE_CHILD_CLEARTID #x00200000) +(define CLONE_CHILD_SETTID #x01000000) +(define CLONE_NEWNS #x00020000) +(define CLONE_NEWUTS #x04000000) +(define CLONE_NEWIPC #x08000000) +(define CLONE_NEWUSER #x10000000) +(define CLONE_NEWPID #x20000000) +(define CLONE_NEWNET #x40000000) ;; The libc interface to sys_clone is not useful for Scheme programs, so the ;; low-level system call is wrapped instead. -- cgit v1.2.3 From 64b6ccc30e42f5e7a655c2d32058eb12f4c03502 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Fri, 4 Sep 2015 16:47:52 -0400 Subject: gnu: Add ruby-rack. * gnu/packages/ruby.scm (ruby-rack): New variable. --- gnu/packages/ruby.scm | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 1e9ed271f7..ee0acc8639 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -1080,3 +1080,47 @@ (define-public ruby-byebug other things and it comes with a command line interface.") (home-page "http://github.com/deivid-rodriguez/byebug") (license license:bsd-2))) + +(define-public ruby-rack + (package + (name "ruby-rack") + (version "1.6.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rack" version)) + (sha256 + (base32 + "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-tests + (lambda _ + ;; A few of the tests use the length of a file on disk for + ;; Content-Length and Content-Range headers. However, this file + ;; has a shebang in it which an earlier phase patches, growing + ;; the file size from 193 to 239 bytes when the store prefix is + ;; "/gnu/store". + (let ((size-diff (- (string-length (which "ruby")) + (string-length "/usr/bin/env ruby")))) + (substitute* '("test/spec_file.rb") + (("193") + (number->string (+ 193 size-diff))) + (("bytes(.)22-33" all delimiter) + (string-append "bytes" + delimiter + (number->string (+ 22 size-diff)) + "-" + (number->string (+ 33 size-diff)))))) + #t))))) + (native-inputs + `(("ruby-bacon" ,ruby-bacon))) + (synopsis "Unified web application interface for Ruby") + (description "Rack provides a minimal, modular and adaptable interface for +developing web applications in Ruby. By wrapping HTTP requests and responses, +it unifies the API for web servers, web frameworks, and software in between +into a single method call.") + (home-page "http://rack.github.io/") + (license license:expat))) -- cgit v1.2.3 From ea8e40d031c3295805dc9357098c2c13aa516e1a Mon Sep 17 00:00:00 2001 From: Cyril Roelandt Date: Sun, 6 Sep 2015 23:07:16 +0200 Subject: gnu: pbr: Update to 1.6.0 * gnu/packages/openstack.scm (python-pbr): Update to 1.6.0. --- gnu/packages/openstack.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm index ddd2f507ac..a534147992 100644 --- a/gnu/packages/openstack.scm +++ b/gnu/packages/openstack.scm @@ -100,7 +100,7 @@ (define-public python2-mox3 (define-public python-pbr (package (name "python-pbr") - (version "1.2.0") + (version "1.6.0") (source (origin (method url-fetch) @@ -110,7 +110,7 @@ (define-public python-pbr ".tar.gz")) (sha256 (base32 - "1l2mls8wnwpkqj6hxsphq7xibbbsf40gg37wc30nj4r600zgqhqm")))) + "1lg1klrczvzfan89y3bl9ykrknl3nb01vvai37fkww24apzyibjf")))) (build-system python-build-system) (arguments `(#:tests? #f)) ;; Most tests seem to use the Internet. -- cgit v1.2.3 From 05de40c5d342232fae86e7839baec1ebffeac022 Mon Sep 17 00:00:00 2001 From: Cyril Roelandt Date: Tue, 1 Sep 2015 23:57:22 +0200 Subject: gnu: python-testtools: fix propagated inputs. * gnu/packages/python.scm (python-testools): turn python-fixtures and python-testtools into propagated inputs. --- gnu/packages/python.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 313c6251c6..f9ad95118b 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -1714,11 +1714,12 @@ (define-public python-testrepository (base32 "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m")))) (build-system python-build-system) + (propagated-inputs + `(("python-fixtures" ,python-fixtures) + ("python-testtools" ,python-testtools))) (inputs `(("python-setuptools" ,python-setuptools) - ("python-testtools" ,python-testtools) ("python-subunit" ,python-subunit) - ("python-fixtures" ,python-fixtures) ("python-mimeparse" ,python-mimeparse))) (home-page "https://launchpad.net/testrepository") (synopsis "Database for Python test results") -- cgit v1.2.3 From 8531b326f166403298f238817db728c2d8df6bb9 Mon Sep 17 00:00:00 2001 From: Cyril Roelandt Date: Wed, 2 Sep 2015 00:59:42 +0200 Subject: gnu: Add oslo.i18n. * gnu/packages/openstack.scm (python-oslo.i18n, python2-oslo.i18n): New variables. --- gnu/packages/openstack.scm | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm index a534147992..164147641c 100644 --- a/gnu/packages/openstack.scm +++ b/gnu/packages/openstack.scm @@ -140,6 +140,43 @@ (define-public python2-pbr (package-with-python2 python-pbr)) ;; Packages from the Oslo library +(define-public python-oslo.i18n + (package + (name "python-oslo.i18n") + (version "2.5.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/o/oslo.i18n/oslo.i18n-" + version + ".tar.gz")) + (sha256 + (base32 + "1kg72mqldlri3x0bhxai7j979czrd7mf8s3iflvvv0x9kn9ah4cw")))) + (build-system python-build-system) + (propagated-inputs + `(("python-babel" ,python-babel) + ("python-six" ,python-six))) + (inputs + `(("python-pbr" ,python-pbr) + ("python-setuptools" ,python-setuptools) + ;; Tests + ("python-mock" ,python-mock) + ("python-mox3" ,python-mox3) + ("python-oslotest" ,python-oslotest) + ("python-testscenarios" ,python-testscenarios))) + (home-page "http://launchpad.net/oslo") + (synopsis "Oslo internationalization (i18n) library") + (description + "The oslo.i18n library contain utilities for working with +internationalization (i18n) features, especially translation for text strings +in an application or library.") + (license asl2.0))) + +(define-public python2-oslo.i18n + (package-with-python2 python-oslo.i18n)) + (define-public python-oslotest (package (name "python-oslotest") -- cgit v1.2.3 From 1cd4027cfdb82d43321c9c20f8bfad97cbd74413 Mon Sep 17 00:00:00 2001 From: Mathieu Lirzin Date: Fri, 7 Aug 2015 00:10:43 +0200 Subject: ui: Add package-description-string. Provide support for Texinfo's markup in package description. * guix/ui.scm (%text-width): New parameter. (texi->plain-text): New variable. (package->recutils): Use them. (package-description-string): New variable. * emacs/guix-main.scm (%package-param-alist): Use it. * gnu/packages/perl.scm (perl-devel-globaldestruction) (perl-devel-lexalias, perl-exporter-lite): Adapt to Texinfo's markup. * gnu/packages/python.scm (python2-empy): Likewise. --- emacs/guix-main.scm | 2 +- gnu/packages/perl.scm | 6 +++--- gnu/packages/python.scm | 2 +- guix/ui.scm | 50 ++++++++++++++++++++++++++++++++++++------------- 4 files changed, 42 insertions(+), 18 deletions(-) diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm index 623da884f6..c9b84d36d9 100644 --- a/emacs/guix-main.scm +++ b/emacs/guix-main.scm @@ -293,7 +293,7 @@ (define %package-param-alist (license . ,package-license-names) (source . ,package-source-names) (synopsis . ,package-synopsis) - (description . ,package-description) + (description . ,package-description-string) (home-url . ,package-home-page) (outputs . ,package-outputs) (non-unique . ,(negate package-unique?)) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index c528516c15..12fed2b870 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1705,7 +1705,7 @@ (define-public perl-devel-globaldestruction (home-page "http://search.cpan.org/dist/Devel-GlobalDestruction") (synopsis "Provides equivalent of ${^GLOBAL_PHASE} eq 'DESTRUCT' for older perls") (description "Devel::GlobalDestruction provides a function returning the -equivalent of \"${^GLOBAL_PHASE} eq 'DESTRUCT'\" for older perls.") +equivalent of \"$@{^GLOBAL_PHASE@} eq 'DESTRUCT'\" for older perls.") (license (package-license perl)))) (define-public perl-devel-lexalias @@ -1949,7 +1949,7 @@ (define-public perl-eval-closure eval is not without its issues however - it's difficult to control the scope it's used in (which determines which variables are in scope inside the eval), and it's easy to miss compilation errors, since eval catches them and sticks -them in $@ instead. This module attempts to solve these problems. It +them in $@@ instead. This module attempts to solve these problems. It provides an eval_closure function, which evals a string in a clean environment, other than a fixed list of specified variables. Compilation errors are rethrown automatically.") @@ -1993,7 +1993,7 @@ (define-public perl-exporter-lite (description "Exporter::Lite is an alternative to Exporter, intended to provide a lightweight subset of the most commonly-used functionality. It supports -import(), @EXPORT and @EXPORT_OK and not a whole lot else.") +import(), @@EXPORT and @@EXPORT_OK and not a whole lot else.") (home-page (string-append "http://search.cpan.org/~neilb/" "Exporter-Lite-" version)) (license (package-license perl)))) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index f9ad95118b..feddd1a46a 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -1174,7 +1174,7 @@ (define-public python2-empy "EmPy is a system for embedding Python expressions and statements in template text; it takes an EmPy source file, processes it, and produces output. This is accomplished via expansions, which are special signals to the -EmPy system and are set off by a special prefix (by default the at sign, @). +EmPy system and are set off by a special prefix (by default the at sign, @@). EmPy can expand arbitrary Python expressions and statements in this way, as well as a variety of special forms. Textual data not explicitly delimited in this way is sent unaffected to the output, allowing Python to be used in diff --git a/guix/ui.scm b/guix/ui.scm index 2f757547cf..ca5b844a43 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2013 Mark H Weaver ;;; Copyright © 2013 Nikita Karetnikov ;;; Copyright © 2014, 2015 Alex Kost +;;; Copyright © 2015 Mathieu Lirzin ;;; Copyright © 2014 Deck Pickard ;;; ;;; This file is part of GNU Guix. @@ -45,6 +46,9 @@ (define-module (guix ui) #:use-module (ice-9 regex) #:autoload (system repl repl) (start-repl) #:autoload (system repl debug) (make-debug stack->vector) + #:use-module (texinfo) + #:use-module (texinfo plain-text) + #:use-module (texinfo string-utils) #:export (_ N_ P_ @@ -69,6 +73,7 @@ (define-module (guix ui) switch-symlinks config-directory fill-paragraph + package-description-string string->recutils package->recutils package-specification->name+version+output @@ -775,6 +780,28 @@ (define (maybe-break chr result) ;;; Packages. ;;; +(define %text-width + (make-parameter (or (and=> (getenv "WIDTH") string->number) + 80))) + +(set! (@@ (texinfo plain-text) wrap*) + ;; XXX: Monkey patch this private procedure to let 'package->recutils' + ;; parameterize the fill of description field correctly. + (lambda strings + (let ((indent (fluid-ref (@@ (texinfo plain-text) *indent*)))) + (fill-string (string-concatenate strings) + #:line-width (%text-width) #:initial-indent indent + #:subsequent-indent indent)))) + +(define (texi->plain-text str) + "Return a plain-text representation of texinfo fragment STR." + (stexi->plain-text (texi-fragment->stexi str))) + +(define (package-description-string package) + "Return a plain-text representation of PACKAGE description field." + (and=> (package-description package) + (compose texi->plain-text P_))) + (define (string->recutils str) "Return a version of STR where newlines have been replaced by newlines followed by \"+ \", which makes for a valid multi-line field value in the @@ -787,18 +814,9 @@ (define (string->recutils str) '() str))) -(define* (package->recutils p port - #:optional (width (or (and=> (getenv "WIDTH") - string->number) - 80))) +(define* (package->recutils p port #:optional (width (%text-width))) "Write to PORT a `recutils' record of package P, arranging to fit within WIDTH columns." - (define (description->recutils str) - (let ((str (P_ str))) - (string->recutils - (fill-paragraph str width - (string-length "description: "))))) - (define (dependencies->recutils packages) (let ((list (string-join (map package-full-name (sort packages package (package-synopsis p) P_) ""))) - (format port "description: ~a~%" - (and=> (package-description p) description->recutils)) - (newline port)) + (format port "~a~2%" + (string->recutils + (string-trim-right + (parameterize ((%text-width width)) + (texi->plain-text + (string-append "description: " + (or (and=> (package-description p) P_) + "")))) + #\newline)))) (define (string->generations str) "Return the list of generations matching a pattern in STR. This function -- cgit v1.2.3 From 0c0a1f22cebc0fc2bb78aaf369716d95b7b3fa55 Mon Sep 17 00:00:00 2001 From: Steve Sprang Date: Sat, 5 Sep 2015 11:32:39 -0700 Subject: build: Improve information density and appearance of download progress output. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * guix/build/download.scm (seconds->string): New function. (byte-count->string): New function. (progress-bar): New function. (throughput->string): Remove function. (progress-proc): Display base file name, elapsed time, and progress bar. Signed-off-by: Ludovic Courtès --- guix/build/download.scm | 79 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 60 insertions(+), 19 deletions(-) diff --git a/guix/build/download.scm b/guix/build/download.scm index ae59b0109c..6e85174bc9 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2015 Mark H Weaver +;;; Copyright © 2015 Steve Sprang ;;; ;;; This file is part of GNU Guix. ;;; @@ -54,17 +55,46 @@ (define (duration->seconds duration) (+ (time-second duration) (/ (time-nanosecond duration) 1e9))) -(define (throughput->string throughput) - "Given THROUGHPUT, measured in bytes per second, return a string -representing it in a human-readable way." - (if (> throughput 3e6) - (format #f "~,2f MiB/s" (/ throughput (expt 2. 20))) - (format #f "~,0f KiB/s" (/ throughput 1024.0)))) +(define (seconds->string duration) + "Given DURATION in seconds, return a string representing it in 'hh:mm:ss' +format." + (if (not (number? duration)) + "00:00:00" + (let* ((total-seconds (inexact->exact (round duration))) + (extra-seconds (modulo total-seconds 3600)) + (hours (quotient total-seconds 3600)) + (mins (quotient extra-seconds 60)) + (secs (modulo extra-seconds 60))) + (format #f "~2,'0d:~2,'0d:~2,'0d" hours mins secs)))) + +(define (byte-count->string size) + "Given SIZE in bytes, return a string representing it in a human-readable +way." + (let ((KiB 1024.) + (MiB (expt 1024. 2)) + (GiB (expt 1024. 3)) + (TiB (expt 1024. 4))) + (cond + ((< size KiB) (format #f "~dB" (inexact->exact size))) + ((< size MiB) (format #f "~dKiB" (inexact->exact (round (/ size KiB))))) + ((< size GiB) (format #f "~,1fMiB" (/ size MiB))) + ((< size TiB) (format #f "~,2fGiB" (/ size GiB))) + (else (format #f "~,3fTiB" (/ size TiB)))))) + +(define* (progress-bar % #:optional (bar-width 20)) + "Return % as a string representing an ASCII-art progress bar. The total +width of the bar is BAR-WIDTH." + (let* ((fraction (/ % 100)) + (filled (inexact->exact (floor (* fraction bar-width)))) + (empty (- bar-width filled))) + (format #f "[~a~a]" + (make-string filled #\#) + (make-string empty #\space)))) (define* (progress-proc file size #:optional (log-port (current-output-port))) - "Return a procedure to show the progress of FILE's download, which is -SIZE byte long. The returned procedure is suitable for use as an -argument to `dump-port'. The progress report is written to LOG-PORT." + "Return a procedure to show the progress of FILE's download, which is SIZE +bytes long. The returned procedure is suitable for use as an argument to +`dump-port'. The progress report is written to LOG-PORT." ;; XXX: Because of this procedure is often not ;; called as frequently as we'd like too; this is especially bad with Nginx ;; on hydra.gnu.org, which returns whole nars as a single chunk. @@ -83,14 +113,24 @@ (define* (progress-proc file size #:optional (log-port (current-output-port))) (if (number? size) (lambda (transferred cont) (with-elapsed-time elapsed - (let ((% (* 100.0 (/ transferred size))) - (throughput (if elapsed - (/ transferred elapsed) - 0))) + (let* ((% (* 100.0 (/ transferred size))) + (throughput (if elapsed + (/ transferred elapsed) + 0)) + (left (format #f " ~a ~a" + (basename file) + (byte-count->string size))) + (right (format #f "~a/s ~a ~a~6,1f%" + (byte-count->string throughput) + (seconds->string elapsed) + (progress-bar %) %)) + ;; TODO: Make this adapt to the actual terminal width. + (cols 80) + (num-spaces (max 1 (- cols (+ (string-length left) + (string-length right))))) + (gap (make-string num-spaces #\space))) + (format log-port "~a~a~a" left gap right) (display #\cr log-port) - (format log-port "~a\t~5,1f% of ~,1f KiB (~a)" - file % (/ size 1024.0) - (throughput->string throughput)) (flush-output-port log-port) (cont)))) (lambda (transferred cont) @@ -99,9 +139,10 @@ (define* (progress-proc file size #:optional (log-port (current-output-port))) (/ transferred elapsed) 0))) (display #\cr log-port) - (format log-port "~a\t~6,1f KiB transferred (~a)" - file (/ transferred 1024.0) - (throughput->string throughput)) + (format log-port "~a\t~a transferred (~a/s)" + file + (byte-count->string transferred) + (byte-count->string throughput)) (flush-output-port log-port) (cont)))))))) -- cgit v1.2.3 From 6f96706d6f82142c5ae7391ea911aff94b49c9cf Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 8 Sep 2015 22:21:00 +0200 Subject: gnu: sqlite: Switch to alternate source URL. * gnu/packages/databases.scm (sqlite)[source]: Add fossies.org URL. --- gnu/packages/databases.scm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index cbac16eac9..53a73a208b 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -322,8 +322,15 @@ (define-public sqlite other-digits)) 6 #\0)))))) (string-append - "mirror://sourceforge/sqlite.mirror/SQLite%20" version - "/sqlite-autoconf-" numeric-version ".tar.gz"))) + "https://fossies.org/linux/misc/sqlite-autoconf-" + numeric-version ".tar.gz") + + ;; XXX: As of 2015-09-08, SourceForge is squatting the URL + ;; below, returning 200 and showing an advertising page. + ;; (string-append + ;; "mirror://sourceforge/sqlite.mirror/SQLite%20" version + ;; "/sqlite-autoconf-" numeric-version ".tar.gz") + )) (sha256 (base32 "09nnaqx50gl1vmfvdipirizr61q3s0ywlql50f9kr1bx9rdfb0l3")))) -- cgit v1.2.3 From 5a4849e11cfd26c9ba8322bf7cdb9042d2b97cdb Mon Sep 17 00:00:00 2001 From: Cyril Roelandt Date: Tue, 8 Sep 2015 23:17:27 +0200 Subject: gnu: oslotest: Update to 1.10.0 * gnu/packages/openstack.scm (python-oslotest): Update to 1.10.0. --- gnu/packages/openstack.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm index 164147641c..91686441ba 100644 --- a/gnu/packages/openstack.scm +++ b/gnu/packages/openstack.scm @@ -180,7 +180,7 @@ (define-public python2-oslo.i18n (define-public python-oslotest (package (name "python-oslotest") - (version "1.8.0") + (version "1.10.0") (source (origin (method url-fetch) @@ -190,7 +190,7 @@ (define-public python-oslotest ".tar.gz")) (sha256 (base32 - "175dln2zxjvvh4b23f2hln6zwfy2v5f1blg7mxbwl4r3130zvs2k")))) + "0l3ny48ddz5xbf0v4r0jv1yhbdzinc2vy0lybhdkmx3xy0b886fs")))) (build-system python-build-system) (propagated-inputs `(("python-fixtures" ,python-fixtures) -- cgit v1.2.3 From a228fce59714746d3a137a481b9a01ac9e1b1698 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 9 Sep 2015 06:49:25 +0200 Subject: gnu: qsynth: Update to 0.4.0. * gnu/packages/audio.scm (qsynth): Update to 0.4.0. --- gnu/packages/audio.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index f7a1b26af1..eed72c31a9 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -1659,14 +1659,14 @@ (define-public portaudio (define-public qsynth (package (name "qsynth") - (version "0.3.9") + (version "0.4.0") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/qsynth/qsynth-" version ".tar.gz")) (sha256 - (base32 "08kyn6cl755l9i1grzjx8yi3f8mgiz4gx0hgqad1n0d8yz85087b")))) + (base32 "1chc89v9hcjw3k4rvzakl8g56wv24kh48fzv1gfs4iv8vhyl3j4x")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; no "check" phase -- cgit v1.2.3 From 5b86a5842c0f1d18eb0f6c78d0dfebf8fd8e8383 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 7 Sep 2015 09:05:50 +0200 Subject: gnu: ibus: Update to 1.5.11. * gnu/packages/ibus.scm (ibus): Update to 1.5.11. --- gnu/packages/ibus.scm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm index 1abe70a1ab..f06c8cedb8 100644 --- a/gnu/packages/ibus.scm +++ b/gnu/packages/ibus.scm @@ -34,20 +34,24 @@ (define-module (gnu packages ibus) (define-public ibus (package (name "ibus") - (version "1.5.5") + (version "1.5.11") (source (origin (method url-fetch) - (uri (string-append "https://ibus.googlecode.com/files/ibus-" - version ".tar.gz")) + (uri (string-append "https://github.com/ibus/ibus/" + "releases/download/" + version "/ibus-" version ".tar.gz")) (sha256 (base32 - "1v4a9xv2k26g6ggk4282ynfvh68j2r5hg1cdpvnryfa8c2pkdaq2")))) + "1g26llizd26h9sfz4xdq8krhz19hn08pirvfbkk3g89ri8lmm6a9")))) (build-system glib-or-gtk-build-system) (arguments `(#:tests? #f ; tests fail because there's no connection to dbus #:make-flags (list "CC=gcc" (string-append "pyoverridesdir=" + (assoc-ref %outputs "out") + "/lib/python2.7/site-packages/gi/overrides/") + (string-append "py2overridesdir=" (assoc-ref %outputs "out") "/lib/python2.7/site-packages/gi/overrides/")) #:phases -- cgit v1.2.3 From 3d3caf1f31782dee532b36ec7f677adf2608de38 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sun, 6 Sep 2015 23:07:10 +0200 Subject: gnu: Add gMTP. * gnu/packages/libusb.scm (gmtp): New variable. --- gnu/packages/libusb.scm | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm index 86a59befdd..e7f5b8b119 100644 --- a/gnu/packages/libusb.scm +++ b/gnu/packages/libusb.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2012 Nikita Karetnikov ;;; Copyright © 2015 Andreas Enge ;;; Copyright © 2015 Andy Wingo +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,9 +26,13 @@ (define-module (gnu packages libusb) #:use-module (guix utils) #:use-module (guix download) #:use-module (guix build-system gnu) + #:use-module (guix build-system glib-or-gtk) #:use-module (gnu packages gnupg) + #:use-module (gnu packages gtk) #:use-module (gnu packages linux) - #:use-module (gnu packages pkg-config)) + #:use-module (gnu packages mp3) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages xiph)) (define-public libusb (package @@ -116,3 +121,37 @@ (define-public libmtp ;; Foundation; either version 2 of the License, or (at your option) any ;; later version." (license lgpl2.1+))) + +(define-public gmtp + (package + (name "gmtp") + (version "1.3.9") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/gmtp/" version + "/gmtp-" version ".tar.gz")) + (sha256 + (base32 + "0bdxvi0jf3q870a39xzsaj4qrjwc9b5bgvc95plc7xb6vf2m7zsv")))) + (build-system glib-or-gtk-build-system) + (arguments + '(#:configure-flags + (let ((libid3tag (assoc-ref %build-inputs "libid3tag"))) + (list + ;; libid3tag provides no .pc file, so pkg-config fails to find them. + (string-append "ID3TAG_CFLAGS=-I" libid3tag "/include") + (string-append "ID3TAG_LIBS=-L" libid3tag "/lib -lid3tag -lz"))))) + (inputs + `(("gtk+" ,gtk+) + ("flac" ,flac) + ("libvorbis" ,libvorbis) + ("libid3tag" ,libid3tag) + ("libmtp" ,libmtp))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://gmtp.sourceforge.net/") + (synopsis "Simple graphical MTP client") + (description "gMTP is a simple graphical client for the Media Transfer Protocol + (MTP), which allows media files to be transferred to and from many portable +devices.") + (license bsd-3))) -- cgit v1.2.3 From c940a145594d3d1a93b30ec3260751debe1c63bb Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sat, 5 Sep 2015 23:05:58 +0200 Subject: gnu: ibus: Suggest search path. * gnu/packages/ibus.scm (ibus)[native-search-paths]: Add path specification for IBUS_COMPONENT_PATH. --- gnu/packages/ibus.scm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm index f06c8cedb8..b2d3fa5808 100644 --- a/gnu/packages/ibus.scm +++ b/gnu/packages/ibus.scm @@ -87,6 +87,10 @@ (define-public ibus `(("glib" ,glib "bin") ; for glib-genmarshal ("gobject-introspection" ,gobject-introspection) ; for g-ir-compiler ("pkg-config" ,pkg-config))) + (native-search-paths + (list (search-path-specification + (variable "IBUS_COMPONENT_PATH") + (files '("share/ibus/component"))))) (synopsis "Input method framework") (description "IBus is an input framework providing a full-featured and user-friendly -- cgit v1.2.3 From 363ccf9fe2e67606edc2ecf0ca70824e7adc1ce0 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 9 Sep 2015 21:00:11 +0800 Subject: gnu: xfce4-settings: Set the default icon theme to "gnome". Fixes . * gnu/packages/patches/xfce4-settings-defaults.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/xfce.scm (xfce4-settings)[source]: Add patch. --- gnu-system.am | 1 + gnu/packages/patches/xfce4-settings-defaults.patch | 29 ++++++++++++++++++++++ gnu/packages/xfce.scm | 4 ++- 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/xfce4-settings-defaults.patch diff --git a/gnu-system.am b/gnu-system.am index 4acbb51aad..e6f751f772 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -707,6 +707,7 @@ dist_patch_DATA = \ gnu/packages/patches/xf86-video-trident-remove-mibstore.patch \ gnu/packages/patches/xf86-video-vmware-glibc-2.20.patch \ gnu/packages/patches/xfce4-panel-plugins.patch \ + gnu/packages/patches/xfce4-settings-defaults.patch \ gnu/packages/patches/xmodmap-asprintf.patch \ gnu/packages/patches/zathura-plugindir-environment-variable.patch diff --git a/gnu/packages/patches/xfce4-settings-defaults.patch b/gnu/packages/patches/xfce4-settings-defaults.patch new file mode 100644 index 0000000000..fe91ae5f70 --- /dev/null +++ b/gnu/packages/patches/xfce4-settings-defaults.patch @@ -0,0 +1,29 @@ +This patch make Xfce use "gnome" as the default icon theme and enable font antialias. + +Taken from ArchLinux. + +diff -upr xfce4-settings-4.12.0.orig/xfsettingsd/xsettings.xml xfce4-settings-4.12.0/xfsettingsd/xsettings.xml +--- xfce4-settings-4.12.0.orig/xfsettingsd/xsettings.xml 2015-02-24 03:33:11.000000000 +0200 ++++ xfce4-settings-4.12.0/xfsettingsd/xsettings.xml 2015-03-01 09:52:24.376869688 +0200 +@@ -6,8 +6,8 @@ + + + + +- ++ + + + +@@ -19,9 +19,9 @@ + + + +- ++ + +- ++ + + + diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index a9ceb5bdd8..e42c58050d 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -452,7 +452,9 @@ (define-public xfce4-settings "/src/" name "-" version ".tar.bz2")) (sha256 (base32 - "108za1cmjslwzkdl76x9kwxkq8z734kg9nz8rxk057f10pqwxgh4")))) + "108za1cmjslwzkdl76x9kwxkq8z734kg9nz8rxk057f10pqwxgh4")) + (patches + (list (search-patch "xfce4-settings-defaults.patch"))))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) -- cgit v1.2.3 From 0334ef2ab06952df5c6a7582781d16d807e09ea7 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 9 Sep 2015 23:01:51 +0200 Subject: linux-initrd: Compress cpio archives deterministically. * gnu/build/linux-initrd.scm (write-cpio-archive): Use '--no-name'. --- gnu/build/linux-initrd.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/build/linux-initrd.scm b/gnu/build/linux-initrd.scm index e26c067b49..c65b5aacfa 100644 --- a/gnu/build/linux-initrd.scm +++ b/gnu/build/linux-initrd.scm @@ -72,7 +72,9 @@ (define files #:file->header cpio:file->cpio-header*))) (or (not compress?) - (and (zero? (system* gzip "--best" output)) + ;; Use '--no-name' so that gzip records neither a file name nor a time + ;; stamp in its output. + (and (zero? (system* gzip "--best" "--no-name" output)) (rename-file (string-append output ".gz") output)) output)) -- cgit v1.2.3 From c0a1ea2c7581e10f14077cc176fc553b26ddfd26 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 9 Sep 2015 23:06:41 +0200 Subject: gnu: gdb: Update to 7.10. * gnu/packages/gdb.scm (gdb): Update to 7.10. --- gnu/packages/gdb.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm index 9c0b3ea307..165f410bf6 100644 --- a/gnu/packages/gdb.scm +++ b/gnu/packages/gdb.scm @@ -36,14 +36,14 @@ (define-module (gnu packages gdb) (define-public gdb (package (name "gdb") - (version "7.9.1") + (version "7.10") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gdb/gdb-" version ".tar.xz")) (sha256 (base32 - "0h5sfg4ndhb8q4fxbq0hdxfjp35n6ih96f6x8yvb418s84x5976d")))) + "1a08c9svaihqmz2mm44il1gwa810gmwkckns8b0y0v3qz52amgby")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; FIXME "make check" fails on single-processor systems. -- cgit v1.2.3 From f19b9b96cda5ff45810f1363ef30df8d163451ad Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 9 Sep 2015 23:08:41 +0200 Subject: gnu: gdb: Use 'modify-phases'. * gnu/packages/gdb.scm (gdb)[arguments]: Use 'modify-phases'. --- gnu/packages/gdb.scm | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm index 165f410bf6..5849831f04 100644 --- a/gnu/packages/gdb.scm +++ b/gnu/packages/gdb.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. @@ -47,22 +47,22 @@ (define-public gdb (build-system gnu-build-system) (arguments '(#:tests? #f ; FIXME "make check" fails on single-processor systems. - #:phases (alist-cons-after - 'configure 'post-configure - (lambda _ - (for-each patch-makefile-SHELL - (find-files "." "Makefile\\.in"))) - (alist-cons-after - 'install 'post-install - (lambda* (#:key outputs #:allow-other-keys) - ;; Like Binutils, GDB installs libbfd and libopcodes. - ;; However, this leads to collisions when both are - ;; installed, and really is none of its business, - ;; conceptually. So remove them. - (for-each delete-file - (find-files (assoc-ref outputs "out") - "^lib(opcodes|bfd)\\."))) - %standard-phases)))) + #:phases (modify-phases %standard-phases + (add-after + 'configure 'post-configure + (lambda _ + (for-each patch-makefile-SHELL + (find-files "." "Makefile\\.in")))) + (add-after + 'install 'post-install + (lambda* (#:key outputs #:allow-other-keys) + ;; Like Binutils, GDB installs libbfd and libopcodes. + ;; However, this leads to collisions when both are + ;; installed, and really is none of its business, + ;; conceptually. So remove them. + (for-each delete-file + (find-files (assoc-ref outputs "out") + "^lib(opcodes|bfd)\\."))))))) (inputs `(("expat" ,expat) ("mpfr" ,mpfr) -- cgit v1.2.3 From 2fecbdbd82efda717d0e56101afcf41b79404a4f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 9 Sep 2015 23:25:22 +0200 Subject: gnu: gdb: Remove headers and libraries already in Binutils. * gnu/packages/gdb.scm (gdb)[arguments]: Add #:modules. Rename 'post-install' phase to 'remove-libs-already-in-binutils'. Change it to compute the intersection of the set of headers and libraries of GDB vs. Binutils and to remove each of the files found in both. --- gnu/packages/gdb.scm | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm index 5849831f04..f17b398048 100644 --- a/gnu/packages/gdb.scm +++ b/gnu/packages/gdb.scm @@ -46,7 +46,11 @@ (define-public gdb "1a08c9svaihqmz2mm44il1gwa810gmwkckns8b0y0v3qz52amgby")))) (build-system gnu-build-system) (arguments - '(#:tests? #f ; FIXME "make check" fails on single-processor systems. + `(#:tests? #f ; FIXME "make check" fails on single-processor systems. + + #:modules ((srfi srfi-1) + ,@%gnu-build-system-modules) + #:phases (modify-phases %standard-phases (add-after 'configure 'post-configure @@ -54,15 +58,25 @@ (define-public gdb (for-each patch-makefile-SHELL (find-files "." "Makefile\\.in")))) (add-after - 'install 'post-install - (lambda* (#:key outputs #:allow-other-keys) - ;; Like Binutils, GDB installs libbfd and libopcodes. + 'install 'remove-libs-already-in-binutils + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Like Binutils, GDB installs libbfd, libopcodes, etc. ;; However, this leads to collisions when both are ;; installed, and really is none of its business, ;; conceptually. So remove them. - (for-each delete-file - (find-files (assoc-ref outputs "out") - "^lib(opcodes|bfd)\\."))))))) + (let* ((binutils (assoc-ref inputs "binutils")) + (out (assoc-ref outputs "out")) + (files1 (with-directory-excursion binutils + (append (find-files "lib") + (find-files "include")))) + (files2 (with-directory-excursion out + (append (find-files "lib") + (find-files "include")))) + (common (lset-intersection string=? + files1 files2))) + (with-directory-excursion out + (for-each delete-file common) + #t))))))) (inputs `(("expat" ,expat) ("mpfr" ,mpfr) -- cgit v1.2.3 From ef30b974c95d900d446df19b83401b5dff014b7c Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 10 Sep 2015 08:49:36 +0200 Subject: pull: Update to the new cgit snapshot URL. * guix/scripts/pull.scm (%snapshot-url): Update to the new URL. --- guix/scripts/pull.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index e6ed8d23eb..e8459e5ffb 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -43,7 +43,7 @@ (define-module (guix scripts pull) (define %snapshot-url ;; "http://hydra.gnu.org/job/guix/master/tarball/latest/download" - "http://git.savannah.gnu.org/cgit/guix.git/snapshot/guix-master.tar.gz" + "http://git.savannah.gnu.org/cgit/guix.git/snapshot/master.tar.gz" ) (define-syntax-rule (with-environment-variable variable value body ...) -- cgit v1.2.3 From a1121a7f8319aacbf068e727385bc4576b4cca9f Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 10 Sep 2015 10:44:25 +0300 Subject: gnu: ffmpeg: Update to 2.8. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/video.scm (ffmpeg): Update to 2.8. Signed-off-by: Ludovic Courtès --- gnu/packages/video.scm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index efa0a60f19..a4e90ac4c1 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -370,14 +370,14 @@ (define-public libva (define-public ffmpeg (package (name "ffmpeg") - (version "2.7.2") + (version "2.8") (source (origin (method url-fetch) - (uri (string-append "http://www.ffmpeg.org/releases/ffmpeg-" - version ".tar.bz2")) + (uri (string-append "https://ffmpeg.org/releases/ffmpeg-" + version ".tar.xz")) (sha256 (base32 - "1wlygd0jp34dk4qagi4h9psn4yk8zgyj7zy9lrpm5332mm87bsvw")))) + "10l1iwc01k1algk2v4vzsrahdvqjmjfi3qazm2cwism0d8hsfg4r")))) (build-system gnu-build-system) (inputs `(("fontconfig" ,fontconfig) @@ -403,7 +403,6 @@ (define-public ffmpeg ("zlib", zlib))) (native-inputs `(("bc" ,bc) - ("bzip2" ,bzip2) ("perl" ,perl) ("pkg-config" ,pkg-config) ("texinfo" ,texinfo) -- cgit v1.2.3 From c1b9e7e7b5431a7be1263f0798ea9259dc0239e7 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Thu, 2 Jul 2015 18:58:45 -0500 Subject: gnu: Add perl-html-element-extended. * gnu/packages/web.scm (perl-html-element-extended): New variable. --- gnu/packages/web.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 94637df2b6..f937e6c41b 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1696,6 +1696,28 @@ (define-public perl-gssapi described in RFC 2744.") (license (package-license perl)))) +(define-public perl-html-element-extended + (package + (name "perl-html-element-extended") + (version "1.18") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/M/MS/MSISK/" + "HTML-Element-Extended-" version ".tar.gz")) + (sha256 + (base32 + "0axknss8c368r5i082yhkfj8mq0w4nglfrpcxcayyzzj13qimvzk")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-html-tree" ,perl-html-tree))) + (home-page "http://search.cpan.org/dist/HTML-Element-Extended") + (synopsis "Manipulate tables of HTML::Element") + (description + "HTML::Element::Extended is a Perl extension for manipulating a table +composed of HTML::Element style components.") + (license (package-license perl)))) + (define-public perl-html-form (package (name "perl-html-form") -- cgit v1.2.3 From 9cf6c9fcf0a7cedce805516101023a7acd2eed38 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Thu, 2 Jul 2015 18:59:40 -0500 Subject: gnu: Add perl-html-tableextract. * gnu/packages/web.scm (perl-html-tableextract): New variable. --- gnu/packages/web.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index f937e6c41b..f3c6638378 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1766,6 +1766,29 @@ (define-public perl-html-lint syntactic legitmacy.") (license l:artistic2.0))) +(define-public perl-html-tableextract + (package + (name "perl-html-tableextract") + (version "2.13") + (source + (origin + (method url-fetch) + (uri (string-append "https://cpan.metacpan.org/authors/id/M/MS/MSISK/" + "HTML-TableExtract-" version ".tar.gz")) + (sha256 + (base32 + "01jimmss3q68a89696wmclvqwb2ybz6xgabpnbp6mm6jcni82z8a")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-html-element-extended" ,perl-html-element-extended) + ("perl-html-parser" ,perl-html-parser))) + (home-page "http://search.cpan.org/dist/HTML-TableExtract") + (synopsis "Extract contents from HTML tables") + (description + "HTML::TableExtract is a Perl module for extracting the content contained +in tables within an HTML document, either as text or encoded element trees.") + (license (package-license perl)))) + (define-public perl-html-tree (package (name "perl-html-tree") -- cgit v1.2.3 From bb1ba6b8f75c6b5b6cd23edf7c36068211a96c93 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Thu, 9 Jul 2015 19:14:22 -0500 Subject: gnu: Add perl-date-manip. * gnu/packages/perl.scm (perl-date-manip): New variable. --- gnu/packages/perl.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 12fed2b870..5bae3f31c8 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -1332,6 +1332,31 @@ (define-public perl-date-calc-xs Date::Calc.") (license (list (package-license perl) lgpl2.0+)))) +(define-public perl-date-manip + (package + (name "perl-date-manip") + (version "6.50") + (source + (origin + (method url-fetch) + (uri (string-append "https://cpan.metacpan.org/authors/id/S/SB/SBECK/" + "Date-Manip-" version ".tar.gz")) + (sha256 + (base32 + "0zd0wbf91i49753rnf7m1lw197hdl5r97mxy0n43zdmcmhvkb3qq")))) + (build-system perl-build-system) + (arguments + ;; Tests would require tzdata for timezone information, but tzdata is in + ;; (gnu packages base) which would create a circular dependency. TODO: + ;; Maybe put this package elsewhere so we can turn on tests. + '(#:tests? #f)) + (home-page "http://search.cpan.org/dist/Date-Manip") + (synopsis "Date manipulation routines") + (description "Date::Manip is a series of modules for common date/time +operations, such as comparing two times, determining a date a given amount of +time from another, or parsing international times.") + (license (package-license perl)))) + (define-public perl-datetime (package (name "perl-datetime") -- cgit v1.2.3 From 8b45993235ce1ad71e4038452d6e7b4b063ce448 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Thu, 9 Jul 2015 19:16:05 -0500 Subject: gnu: Add perl-finance-quote. * gnu/packages/web.scm (perl-finance-quote): New variable. * gnu/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch: New patch. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + .../perl-finance-quote-unuse-mozilla-ca.patch | 15 ++++++++++ gnu/packages/web.scm | 33 ++++++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 gnu/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch diff --git a/gnu-system.am b/gnu-system.am index e6f751f772..0294a9eaae 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -592,6 +592,7 @@ dist_patch_DATA = \ gnu/packages/patches/patchelf-rework-for-arm.patch \ gnu/packages/patches/patchutils-xfail-gendiff-tests.patch \ gnu/packages/patches/patch-hurd-path-max.patch \ + gnu/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \ gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch \ gnu/packages/patches/perl-module-pluggable-search.patch \ gnu/packages/patches/perl-net-amazon-s3-moose-warning.patch \ diff --git a/gnu/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch b/gnu/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch new file mode 100644 index 0000000000..5f37bb0ba7 --- /dev/null +++ b/gnu/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch @@ -0,0 +1,15 @@ +Rather than unconditionally using Mozilla's CA certificates, let the user tell +LWP's UserAgent where to find certificates with the PERL_LWP_SSL_CA_FILE, +HTTPS_CA_FILE, PERL_LWP_SSL_CA_PATH, or HTTPS_CA_DIR environment variables +instead. + +--- Finance-Quote-1.37/lib/Finance/Quote/Tiaacref.pm.orig 2015-02-01 13:24:41.000000000 -0600 ++++ Finance-Quote-1.37/lib/Finance/Quote/Tiaacref.pm 2015-07-07 20:09:47.278885944 -0500 +@@ -30,7 +30,6 @@ + package Finance::Quote::Tiaacref; + require 5.005; + require LWP::Protocol::https; +-require Mozilla::CA; + + use strict; + diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index f3c6638378..3e89a728d6 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1673,6 +1673,39 @@ (define-public perl-file-listing which can be used to parse directory listings.") (home-page "http://search.cpan.org/~gaas/File-Listing/"))) +(define-public perl-finance-quote + (package + (name "perl-finance-quote") + (version "1.37") + (source + (origin + (method url-fetch) + (uri (string-append "https://cpan.metacpan.org/authors/id/E/EC/ECOCODE/" + "Finance-Quote-" version ".tar.gz")) + (sha256 + (base32 + "1b6pbh7f76fb5sa4f0lhx085xy55pprz5v7z7li7pqiyw7i4f4bf")) + (patches (list + (search-patch "perl-finance-quote-unuse-mozilla-ca.patch"))))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-datetime" ,perl-datetime) + ("perl-html-parser" ,perl-html-parser) + ("perl-html-tableextract" ,perl-html-tableextract) + ("perl-html-tree" ,perl-html-tree) + ("perl-http-cookies" ,perl-http-cookies) + ("perl-http-message" ,perl-http-message) + ("perl-json" ,perl-json) + ("perl-libwww" ,perl-libwww) + ("perl-lwp-protocol-https" ,perl-lwp-protocol-https) + ("perl-uri" ,perl-uri))) + (home-page "http://search.cpan.org/dist/Finance-Quote") + (synopsis "Stock and mutual fund quotes") + (description + "Finance::Quote gets stock quotes from various internet sources, including +Yahoo! Finance, Fidelity Investments, and the Australian Stock Exchange.") + (license l:gpl2))) + (define-public perl-gssapi (package (name "perl-gssapi") -- cgit v1.2.3 From a6d0b306c20f236324e4bd661d0f82750ee00e90 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 21 Jul 2015 20:45:54 -0500 Subject: guix: packages: Add transitive-input-references. * guix/packages.scm (transitive-input-references): New procedure. * gnu/packages/version-control.scm (package-transitive-propagated-labels*) (package-propagated-input-refs): Delete. (git)[arguments]: Adjust to transitive-input-references. --- gnu/packages/version-control.scm | 28 ++++++---------------------- guix/packages.scm | 15 +++++++++++++++ tests/packages.scm | 17 +++++++++++++++++ 3 files changed, 38 insertions(+), 22 deletions(-) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 8d8003fe4c..3c0571bac6 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -98,24 +98,6 @@ (define-public bazaar as well as the classic centralized workflow.") (license gpl2+))) -(define (package-transitive-propagated-labels* package) - "Return a list of the input labels of PACKAGE and its transitive inputs." - (let ((name (package-name package))) - `(,name - ,@(map (match-lambda - ((label (? package? _) . _) - label)) - (package-transitive-propagated-inputs package))))) - -(define (package-propagated-input-refs inputs packages) - "Return a list of (assoc-ref INPUTS ) for each package in -PACKAGES and their propagated inputs." - (map (lambda (l) - `(assoc-ref ,inputs ,l)) - (delete-duplicates ;XXX: efficiency - (append-map package-transitive-propagated-labels* - packages)))) - (define-public git ;; Keep in sync with 'git-manpages'! (package @@ -238,11 +220,13 @@ (define-public git `("PERL5LIB" ":" prefix ,(map (lambda (o) (string-append o "/lib/perl5/site_perl")) (list - ,@(package-propagated-input-refs + ,@(transitive-input-references 'inputs - (list perl-authen-sasl - perl-net-smtp-ssl - perl-io-socket-ssl)))))) + (map (lambda (l) + (assoc l (inputs))) + '("perl-authen-sasl" + "perl-net-smtp-ssl" + "perl-io-socket-ssl"))))))) ;; Tell 'git-submodule' where Perl is. (wrap-program git-sm diff --git a/guix/packages.scm b/guix/packages.scm index 3983d1409a..e466ffeda0 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2014, 2015 Mark H Weaver +;;; Copyright © 2015 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -93,6 +94,8 @@ (define-module (guix packages) package-output package-grafts + transitive-input-references + %supported-systems %hydra-supported-systems supported-package? @@ -579,6 +582,18 @@ (define (package-transitive-propagated-inputs package) recursively." (transitive-inputs (package-propagated-inputs package))) +(define (transitive-input-references alist inputs) + "Return a list of (assoc-ref ALIST