From 5021f9d34042e4929e27ffc126198ed43f32fcb7 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sat, 12 Dec 2015 22:52:48 +0200 Subject: gnu: owncloud-client: Update to 2.1.0. * gnu/packages/owncloud.scm (owncloud-client): Update to 2.1.0. --- gnu/packages/owncloud.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gnu/packages/owncloud.scm b/gnu/packages/owncloud.scm index 58c2a51ba8..084a0a2863 100644 --- a/gnu/packages/owncloud.scm +++ b/gnu/packages/owncloud.scm @@ -34,14 +34,14 @@ (define-public owncloud-client (package (name "owncloud-client") - (version "2.0.2") + (version "2.1.0") (source (origin (method url-fetch) (uri (string-append "https://download.owncloud.com/desktop/stable/" "owncloudclient-" version ".tar.xz")) (sha256 - (base32 "0a42nqx0gn10n7ikhxwif0lqddmb6gbvr45bqbbl30an9gixq598")))) + (base32 "0gyhll4yfxcpyc5m73zar5f33qgnmpwiggw2adxdiqy55hc3ymbk")))) (build-system cmake-build-system) (arguments `(#:phases @@ -50,9 +50,9 @@ (lambda _ (substitute* '("src/libsync/CMakeLists.txt" "csync/src/CMakeLists.txt") - ;; We store the libs in out/lib and not /usr/lib/appname, so we + ;; We store the libs in out/lib and not /usr/lib/appname, so we ;; need the executable to point to the libraries in /lib and not - ;; in /lib/appname. + ;; in /lib/appname. (("\\/\\$\\{APPLICATION_EXECUTABLE\\}") "")) (substitute* '("src/cmd/CMakeLists.txt" "src/crashreporter/CMakeLists.txt" -- cgit v1.2.3 From f0b0a5de871a074b5879224dc1faee64cd834c43 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sat, 12 Dec 2015 23:22:03 +0200 Subject: gnu: clutter-gtk: Update to 1.6.6. * gnu/packages/gnome.scm (clutter-gtk): Update to 1.6.6. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index c17dd19802..13f45722b0 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2740,7 +2740,7 @@ presentations, kiosk style applications and so on.") (define-public clutter-gtk (package (name "clutter-gtk") - (version "1.6.0") + (version "1.6.6") (source (origin (method url-fetch) @@ -2749,7 +2749,7 @@ presentations, kiosk style applications and so on.") name "-" version ".tar.xz")) (sha256 (base32 - "0k93hbf5d1970hs7vjddr3nnngygc7mxqbj474r3cdm0fjsm0dc8")))) + "0a2a8ci6in82l43zak3zj3cyms23i5rq6lzk1bz013gm023ach4l")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) -- cgit v1.2.3 From b6b53a874d97dda6795576bca32e88479b87720e Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 06:58:50 +0200 Subject: gnu: libchamplain: Update to 0.12.12. * gnu/packages/gnome.scm (libchamplain): Update to 0.12.12. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 13f45722b0..4b0c9afad1 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2799,7 +2799,7 @@ GL based interactive canvas library.") (define-public libchamplain (package (name "libchamplain") - (version "0.12.10") + (version "0.12.12") (source (origin (method url-fetch) (uri (string-append @@ -2807,7 +2807,7 @@ GL based interactive canvas library.") version ".tar.xz")) (sha256 (base32 - "019b8scnx7d3wdylmpk9ihzh06w25b63x9cn8nhj6kjx82rcwlxz")))) + "19jlhbgfn9c9g40b3fa2x373s6rfcwx5i9lbpl3vl7d901r7kpp7")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (propagated-inputs -- cgit v1.2.3 From c79595178ce4ff37d3f8d5b2a5803d6d8db03c00 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 07:21:03 +0200 Subject: gnu: clutter-gst: Update to 3.0.14. * gnu/packages/gnome.scm (clutter-gst): Update to 3.0.14. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 4b0c9afad1..86539e6a96 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2768,7 +2768,7 @@ presentations, kiosk style applications and so on.") (define-public clutter-gst (package (name "clutter-gst") - (version "3.0.6") + (version "3.0.14") (source (origin (method url-fetch) @@ -2777,7 +2777,7 @@ presentations, kiosk style applications and so on.") name "-" version ".tar.xz")) (sha256 (base32 - "0xnzfdzawl1kdx715gp31nwjp7a1kib094s7xvg7bhbwwlx4kmfn")))) + "1qidm0q28q6w8gjd0gpqnk8fzqxv39dcp0vlzzawlncp8zfagj7p")))) (build-system gnu-build-system) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-mkenums -- cgit v1.2.3 From c725dc4da1d1fa1e052d769355581278b9fe4e2c Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 07:37:21 +0200 Subject: gnu: grilo: Update to 0.2.14. * gnu/packages/gnome.scm (grilo): Update to 0.2.14. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 86539e6a96..abb595b982 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2894,7 +2894,7 @@ as possible!") (define-public grilo (package (name "grilo") - (version "0.2.12") + (version "0.2.14") (source (origin (method url-fetch) @@ -2903,7 +2903,7 @@ as possible!") name "-" version ".tar.xz")) (sha256 (base32 - "11bvc7rsrjjwz8hp67p3fn8zmywrpawrcbi3vgw8b0dwa0sndd2m")))) + "1k8wj8f7xfaw5hxypnmwd34li3fq8h76dacach547rvsfjhjxj3r")))) (build-system gnu-build-system) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-mkenums and glib-genmarshal -- cgit v1.2.3 From 47b7d7bf98c8fec8b763c091cd8ca6cb19076095 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 08:06:42 +0200 Subject: gnu: grilo-plugins: Update to 0.2.16. * gnu/packages/gnome.scm (grilo-plugins): Update to 0.2.16. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index abb595b982..5a47afb65a 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2945,7 +2945,7 @@ for application developers.") (define-public grilo-plugins (package (name "grilo-plugins") - (version "0.2.14") + (version "0.2.16") (source (origin (method url-fetch) @@ -2954,7 +2954,7 @@ for application developers.") name "-" version ".tar.xz")) (sha256 (base32 - "1aykhc679pwn2qxsg19g8nh9hffpsqkgxcbqq7lcfn2hcwb83wfh")))) + "00sjmkzxc8w4qn4lp5yj65c4y83mwhp0zlvk11ghvpxnklgmgd40")))) (build-system gnu-build-system) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-mkenums and glib-genmarshal -- cgit v1.2.3 From c0925c7a290729b731c4c352db3e71bdfc4d1a1c Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 10:10:10 +0200 Subject: gnu: totem: Update to 3.18.1. * gnu/packages/gnome.scm (totem): Update to 3.18.1. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 5a47afb65a..70a076b361 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2997,7 +2997,7 @@ for application developers.") (define-public totem (package (name "totem") - (version "3.16.1") + (version "3.18.1") (source (origin (method url-fetch) @@ -3006,7 +3006,7 @@ for application developers.") name "-" version ".tar.xz")) (sha256 (base32 - "1nkm2i271ivq40hryrl6px39gbbvhmlx4vmvwvw4h3z8xh3013f9")))) + "18h784c77m4h359j3xnlwqlfvnhbw7m052ahzm26r106jsp6x0fp")))) (build-system glib-or-gtk-build-system) (native-inputs `(("pkg-config" ,pkg-config) -- cgit v1.2.3 From f05c809f8fd9cf9f0f26d768b55167928744456c Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 10:24:16 +0200 Subject: gnu: dconf: Update to 0.24.0. * gnu/packages/gnome.scm (dconf): Update to 0.24.0. --- gnu/packages/gnome.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 70a076b361..a2a6aa1971 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1765,7 +1765,7 @@ editors, IDEs, etc.") (define-public dconf (package (name "dconf") - (version "0.22.0") + (version "0.24.0") (source (origin (method url-fetch) (uri (string-append @@ -1773,7 +1773,8 @@ editors, IDEs, etc.") (version-major+minor version) "/" name "-" version ".tar.xz")) (sha256 - (base32 "13jb49504bir814v8n8vjip5sazwfwsrnniw87cpg7phqfq7q9qa")))) + (base32 + "1hpy6336f0pbkyranywm4872i5in0xn7jf40a66xdmzls77f0ws3")))) (build-system glib-or-gtk-build-system) (inputs `(("gtk+" ,gtk+) -- cgit v1.2.3 From 6d320ca693c7e4e18225bdab227fb632e88b86a6 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 10:38:34 +0200 Subject: gnu: geocode-glib: Update to 3.18.0. * gnu/packages/gnome.scm (geocode-glib): Update to 3.18.0. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index a2a6aa1971..ce5763bbfc 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2331,7 +2331,7 @@ permission from user.") (define-public geocode-glib (package (name "geocode-glib") - (version "3.16.0") + (version "3.18.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/geocode-glib/" @@ -2339,7 +2339,7 @@ permission from user.") name "-" version ".tar.xz")) (sha256 (base32 - "1cbfv0kds6b6k0cl7q47xpj3x1scwcd7m68zl1rf7i4hmhw4hpqj")))) + "0pa9cgndycynipc6z8wzbvn2fi89ndf2gpqzm9m6krp3d7az1dwg")))) (build-system gnu-build-system) (arguments `(;; The tests want to write to $HOME/.cache/geocode-glib, which doesn't -- cgit v1.2.3 From d45d35288ee6feba1285d3806e091cf00a2abbd9 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 10:58:35 +0200 Subject: gnu: gnome-settings-daemon: Update to 3.18.2. * gnu/packages/gnome.scm (gnome-settings-daemon): Update to 3.18.2. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index ce5763bbfc..72b1111087 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2467,7 +2467,7 @@ services for numerous locations.") (define-public gnome-settings-daemon (package (name "gnome-settings-daemon") - (version "3.16.0") + (version "3.18.2") (source (origin (method url-fetch) @@ -2476,7 +2476,7 @@ services for numerous locations.") name "-" version ".tar.xz")) (sha256 (base32 - "1w29x2izq59125ga5ncmmaklc8kw7x7rdn6swn26bs23mah1r1g3")))) + "0vzwf875csyqx04fnra6zicmzcjc3s13bxxpcizlys12iwjwfw9h")))) (build-system glib-or-gtk-build-system) (arguments `(;; Network manager not yet packaged. -- cgit v1.2.3 From 9bffc630cfcf615bff73d2a7c1e49178155c64a3 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 12:03:03 +0200 Subject: gnu: file-roller: Update to 3.16.4. * gnu/packages/gnome.scm (file-roller): Update to 3.16.4. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 72b1111087..7ff425fdc5 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -3697,7 +3697,7 @@ share them with others via social networking and more.") (define-public file-roller (package (name "file-roller") - (version "3.10.0") + (version "3.16.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -3705,7 +3705,7 @@ share them with others via social networking and more.") name "-" version ".tar.xz")) (sha256 (base32 - "04sg4yzz4c3hzgxhbgx2dc36lq5hjrnrmal2q0amfvhl0jcvp2fq")))) + "11a1g8f2700n2mz998wf40dz1rxjgap60mfns9iv0zlw5h5rhmal")))) (build-system glib-or-gtk-build-system) (native-inputs `(("intltool" ,intltool) -- cgit v1.2.3 From ccdb0181c1967795c1d39560c3d0125620408442 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 12:12:46 +0200 Subject: gnu: yelp-xsl: Update to 3.18.1. * gnu/packages/gnome.scm (yelp-xsl): Update to 3.18.1. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 7ff425fdc5..47056e9187 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -3485,7 +3485,7 @@ of running programs and invoke methods on those interfaces.") (define-public yelp-xsl (package (name "yelp-xsl") - (version "3.16.1") + (version "3.18.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -3493,7 +3493,7 @@ of running programs and invoke methods on those interfaces.") name "-" version ".tar.xz")) (sha256 (base32 - "0jhpni4mmfvj3xf57rjm61nc8d0x66hz9gd1ywws5lh39g6fx59j")))) + "0qmsq7qkc06gmnkvbs84qj3jjzlihriy3z45nfbpgg51b6z0z1q0")))) (build-system gnu-build-system) (native-inputs `(("intltool" ,intltool) -- cgit v1.2.3 From 506959552ff77870b5a73069fa3577ffe1a9bcfc Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 12:16:38 +0200 Subject: gnu: yelp-tools: Update to 3.18.0. * gnu/packages/gnome.scm (yelp-tools): Update to 3.18.0. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 47056e9187..ab8accdd89 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -3544,7 +3544,7 @@ freedesktop.org help system specification.") (define-public yelp-tools (package (name "yelp-tools") - (version "3.16.1") + (version "3.18.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -3552,7 +3552,7 @@ freedesktop.org help system specification.") name "-" version ".tar.xz")) (sha256 (base32 - "177qzvj5w019isdp41qxqcys2kc4sq2x6dqhqn6l9ipib8a6rxml")))) + "0ck9f78c1xka8a823bd7w1k0gdn4k19zvaj7viy2d5r3h1gxdhf6")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) -- cgit v1.2.3 From af83490d7e156e8e34335e429803c670143411e7 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 12:21:15 +0200 Subject: gnu: gnome-common: Update to 3.18.0. * gnu/packages/gnome.scm (gnome-common): Update to 3.18.0. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index ab8accdd89..47c62f1d02 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -152,7 +152,7 @@ features to enable users to create their discs easily and quickly.") (define-public gnome-common (package (name "gnome-common") - (version "3.14.0") + (version "3.18.0") (source (origin (method url-fetch) @@ -161,7 +161,7 @@ features to enable users to create their discs easily and quickly.") name "-" version ".tar.xz")) (sha256 (base32 - "0b1676g4q44ah73c5gwl1kg88pc93pnq1pa9kwl43d0vg0pj802c")))) + "1kzqi8qvh5p1zncj8msazlmvcwsczjz2hqxp4x2y0mg718vrwmi2")))) (build-system gnu-build-system) (home-page "https://www.gnome.org/") (synopsis "Bootstrap GNOME modules built from Git") -- cgit v1.2.3 From e0b6e264031eef3269a591bf82148a9747245e2a Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 12:24:47 +0200 Subject: gnu: gnome-klotski: Update to 3.18.2. * gnu/packages/gnome.scm (gnome-klotski): Update to 3.18.2. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 47c62f1d02..935ceac384 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2864,7 +2864,7 @@ queries upon that data.") (define-public gnome-klotski (package (name "gnome-klotski") - (version "3.16.1") + (version "3.18.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -2872,7 +2872,7 @@ queries upon that data.") name "-" version ".tar.xz")) (sha256 (base32 - "0a64935c7pp51jhaf29q9zlx3lamj7zrhyff7clvv0w8v1w6gpax")))) + "14l1fji0860yam41x2cy72nd9bljph385ynfm6k1lsv4qhv72az2")))) (build-system glib-or-gtk-build-system) (native-inputs `(("desktop-file-utils" ,desktop-file-utils) -- cgit v1.2.3 From 1a0b2d8241dbd9ae1773d73b5442b03acf8a2f19 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 12:34:29 +0200 Subject: gnu: gnome-keyring: Update to 3.18.3. * gnu/packages/gnome.scm (gnome-keyring): Update to 3.18.3. [inputs]: Add linux-pam. --- gnu/packages/gnome.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 935ceac384..e27d80bcd5 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -328,7 +328,7 @@ GNOME Desktop.") (define-public gnome-keyring (package (name "gnome-keyring") - (version "3.16.0") + (version "3.18.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -336,7 +336,7 @@ GNOME Desktop.") name "-" version ".tar.xz")) (sha256 (base32 - "1xg1xha3x3hzlmvdq2zm90hc61pj7pnf9yxxvgq4ynl5af6bp8qm")))) + "167dq1yvm080g5s38hqjl0xx5cgpkcl1xqy9p5sxmgc92zb0srrz")))) (build-system gnu-build-system) (arguments `(#:tests? #f ;48 of 603 tests fail because /var/lib/dbus/machine-id does @@ -368,6 +368,7 @@ GNOME Desktop.") "/xml/dtd/docbook/catalog.xml"))))))) (inputs `(("libgcrypt" ,libgcrypt) + ("linux-pam" ,linux-pam) ("dbus" ,dbus) ("gcr" ,gcr))) (native-inputs -- cgit v1.2.3 From 2e221beed51c1c24d4522a1bc83d71a1c9edc0ae Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 12:40:04 +0200 Subject: gnu: gnome-terminal: Update to 3.18.2. * gnu/packages/gnome.scm (gnome-terminal): Update to 3.18.2. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index e27d80bcd5..682ba267a7 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2173,7 +2173,7 @@ floating in an ocean using only your brain and a little bit of luck.") (define-public gnome-terminal (package (name "gnome-terminal") - (version "3.16.0") + (version "3.18.2") (source (origin (method url-fetch) @@ -2182,7 +2182,7 @@ floating in an ocean using only your brain and a little bit of luck.") name "-" version ".tar.xz")) (sha256 (base32 - "1s3zwqxs4crlqmh6l7s7n87pbmh2nnjdvhxlkalh58pbl0bk0qrd")))) + "1ylyv0mla2ypms7iyxndbdjvha0q9jzglb4mhfmqn9cm2gxc0day")))) (build-system glib-or-gtk-build-system) (arguments '(#:configure-flags -- cgit v1.2.3 From 017d779c2256804c5ea6c96ce123cecd2c6af8e9 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 13:00:08 +0200 Subject: gnu: seahorse: Update to 3.18.0. * gnu/packages/gnome.scm (seahorse): Update to 3.18.0. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 682ba267a7..f943dc0adb 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1616,7 +1616,7 @@ engineering.") (define-public seahorse (package (name "seahorse") - (version "3.16.0") + (version "3.18.0") (source (origin (method url-fetch) @@ -1625,7 +1625,7 @@ engineering.") version ".tar.xz")) (sha256 (base32 - "0cg1grgpwbfkiny5148n17rzpc8kswyr5yff0kpm8l3lp01my2kp")))) + "0rxnq47xcagmpqb63g49ay3lfiyjjnmmiay9yifx5jn406d8h32k")))) (build-system glib-or-gtk-build-system) (inputs `(("gtk+" ,gtk+) -- cgit v1.2.3 From 34b979b903cb15b54a5b3f1fb6f15b8d327031ff Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 13:02:14 +0200 Subject: gnu: seahorse: Add support for keyservers, gnupg2 and ldap. * gnu/packages/gnome.scm (seahorse): Do it. [inputs]: Remove gnupg-1, add gnupg, openldap, libsoup. --- gnu/packages/gnome.scm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index f943dc0adb..51f2341d62 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -58,6 +58,7 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages gperf) #:use-module (gnu packages guile) + #:use-module (gnu packages openldap) #:use-module (gnu packages pdf) #:use-module (gnu packages polkit) #:use-module (gnu packages popt) @@ -1630,10 +1631,12 @@ engineering.") (inputs `(("gtk+" ,gtk+) ("gcr" ,gcr) - ("gnupg" ,gnupg-1) + ("gnupg" ,gnupg) ("gpgme" ,gpgme) + ("openldap" ,openldap) ("openssh" ,openssh) - ("libsecret" ,libsecret))) + ("libsecret" ,libsecret) + ("libsoup" ,libsoup))) (native-inputs `(("intltool" ,intltool) ("glib:bin" ,glib "bin") -- cgit v1.2.3 From daee4191e1101257f743969fda60df678dd6c33d Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 13:18:57 +0200 Subject: gnu: gnome-mines: Update to 3.18.2. * gnu/packages/gnome.scm (gnome-mines): Update to 3.18.2. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 51f2341d62..a3d53502a1 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2130,7 +2130,7 @@ and other secrets. It communicates with the \"Secret Service\" using DBus.") (define-public gnome-mines (package (name "gnome-mines") - (version "3.16.0") + (version "3.18.2") (source (origin (method url-fetch) @@ -2139,7 +2139,7 @@ and other secrets. It communicates with the \"Secret Service\" using DBus.") name "-" version ".tar.xz")) (sha256 (base32 - "0wfvqyryc1093l4dr75zv9h0jyn28z6wirdq03lm5w24qf9lvjjx")))) + "0izkcf81rji4dj9k0k93ij4lp5iza2bh6jwlcdhbjfv2xdw0f7ky")))) (build-system glib-or-gtk-build-system) (arguments '(#:phases -- cgit v1.2.3 From bcff53e03f564d2a6b0dfb9fe1434458fa76d351 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 13:35:11 +0200 Subject: gnu: aisleriot: Update to 3.18.2. * gnu/packages/gnome.scm (aisleriot): Update to 3.18.2. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index a3d53502a1..ea7e13be08 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2562,7 +2562,7 @@ playlists in a variety of formats.") (define-public aisleriot (package (name "aisleriot") - (version "3.16.1") + (version "3.18.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -2570,7 +2570,7 @@ playlists in a variety of formats.") name "-" version ".tar.xz")) (sha256 (base32 - "19k483x9dkq8vjbq8f333pk9qil64clpsfg20q8xk9bgmk38aj8h")))) + "1qrgcj30hl0fgssspkwrad10lqy1bbsp7lfwxmxlwzp33jhqpb0b")))) (build-system glib-or-gtk-build-system) (arguments '(#:configure-flags -- cgit v1.2.3 From 3acae17019fdb1d4c7327acbcecebfc94c0f5d6a Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 13:40:30 +0200 Subject: gnu: devhelp: Update to 3.18.1. * gnu/packages/gnome.scm (devhelp): Update to 3.18.1. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index ea7e13be08..6e33fa9950 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2598,7 +2598,7 @@ which are easy to play with the aid of a mouse.") (define-public devhelp (package (name "devhelp") - (version "3.16.1") + (version "3.18.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -2606,7 +2606,7 @@ which are easy to play with the aid of a mouse.") name "-" version ".tar.xz")) (sha256 (base32 - "0i8kyh86hzwxs8dm047ivghl2b92vigdxa3x4pk4ha0whpk38g37")))) + "1vqsqpc51cir5qf801ibh6ljlpfw0qd513l9hjcnzp4ls8m1cfih")))) (build-system glib-or-gtk-build-system) (native-inputs `(("intltool" ,intltool) -- cgit v1.2.3 From 5d73ac06881beae181f6bd6f2abe5a14166dee36 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 13:51:13 +0200 Subject: gnu: eog: Update to 3.18.1. * gnu/packages/gnome.scm (eog): Update to 3.18.1. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 6e33fa9950..fd3fe9a283 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -3168,7 +3168,7 @@ supports playlists, song ratings, and any codecs installed through gstreamer.") (define-public eog (package (name "eog") - (version "3.16.2") + (version "3.18.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -3176,7 +3176,7 @@ supports playlists, song ratings, and any codecs installed through gstreamer.") name "-" version ".tar.xz")) (sha256 (base32 - "0frw1b5jix9pffznav5s7ajjx91a8rv5lf4sjvjv3fw65mbnhbw0")))) + "19wkawrcwjjcvlmizkj57qycnbgizhr8ck3j5qg70605d1xb8yvv")))) (build-system glib-or-gtk-build-system) (arguments `(#:phases -- cgit v1.2.3 From b1b9ca8e011575801bc2555c52a4b032ca8f1230 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 13 Dec 2015 14:19:06 +0200 Subject: gnu: adwaita-icon-theme: Update to 3.18.0. * gnu/packages/gnome.scm (adwaita-icon-theme): Update to 3.18.0. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index fd3fe9a283..dee911fc0e 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -586,7 +586,7 @@ update-desktop-database: updates the database containing a cache of MIME types (define-public adwaita-icon-theme (package (inherit gnome-icon-theme) (name "adwaita-icon-theme") - (version "3.16.2") + (version "3.18.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -594,7 +594,7 @@ update-desktop-database: updates the database containing a cache of MIME types name "-" version ".tar.xz")) (sha256 (base32 - "1hmlw7kvhr7c2asc5y77adpymi9ka17gaf76zz835nwwffnn4rlw")))))) + "0n0fqlg55krw8pgn4z2vxnxh65lyvcydqkrr7klqxp8z00kfg72y")))))) (define-public shared-mime-info (package -- cgit v1.2.3 From f7e4ae7f450569a20fcd4c0edd2814b3056f917c Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 13 Dec 2015 14:26:55 +0100 Subject: doc: Fix typo in "Setuid Programs". * doc/guix.texi (Setuid Programs): Remove extra 's'. --- doc/guix.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index 4b06b32232..401e98ba99 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -7126,7 +7126,7 @@ password, and which needs to access the @file{/etc/passwd} and obvious security reasons. To address that, these executables are @dfn{setuid-root}, meaning that they always run with root privileges (@pxref{How Change Persona,,, libc, The GNU C Library Reference Manual}, -for more info about the setuid mechanisms.) +for more info about the setuid mechanism.) The store itself @emph{cannot} contain setuid programs: that would be a security issue since any user on the system can write derivations that -- cgit v1.2.3 From 70650c684aed96e7b7d42548ebb012f716554024 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 13 Dec 2015 14:42:38 +0100 Subject: doc: Reword description of 'inputs' & co. * doc/guix.texi (package Reference): Reword explanation of 'inputs', 'native-inputs', and 'propagated-inputs'. Add example. --- doc/guix.texi | 58 +++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 401e98ba99..e0235b9590 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2263,34 +2263,46 @@ The arguments that should be passed to the build system. This is a list, typically containing sequential keyword-value pairs. @item @code{inputs} (default: @code{'()}) -Package or derivation inputs to the build. This is a list of lists, -where each list has the name of the input (a string) as its first -element, a package or derivation object as its second element, and -optionally the name of the output of the package or derivation that -should be used, which defaults to @code{"out"}. - -@item @anchor{package-propagated-inputs}@code{propagated-inputs} (default: @code{'()}) -@cindex propagated inputs -This field is like @code{inputs}, but the specified packages will be -force-installed alongside the package they belong to -(@pxref{package-cmd-propagated-inputs, @command{guix package}}, for -information on how @command{guix package} deals with propagated inputs.) +@itemx @code{native-inputs} (default: @code{'()}) +@itemx @code{propagated-inputs} (default: @code{'()}) +@cindex inputs, of packages +These fields list dependencies of the package. Each one is a list of +tuples, where each tuple has a label for the input (a string) as its +first element, a package, origin, or derivation as its second element, +and optionally the name of the output thereof that should be used, which +defaults to @code{"out"} (@pxref{Packages with Multiple Outputs}, for +more on package outputs). For example, the list below specifies 3 +inputs: + +@example +`(("libffi" ,libffi) + ("libunistring" ,libunistring) + ("glib:bin" ,glib "bin")) ;the "bin" output of Glib +@end example + +@cindex cross compilation, package dependencies +The distinction between @code{native-inputs} and @code{inputs} is +necessary when considering cross-compilation. When cross-compiling, +dependencies listed in @code{inputs} are built for the @emph{target} +architecture; conversely, dependencies listed in @code{native-inputs} +are built for the architecture of the @emph{build} machine. + +@code{native-inputs} is typically where you would list tools needed at +build time but not at run time, such as Autoconf, Automake, pkg-config, +Gettext, or Bison. @command{guix lint} can report likely mistakes in +this area (@pxref{Invoking guix lint}). + +@anchor{package-propagated-inputs} +Lastly, @code{propagated-inputs} is similar to @code{inputs}, but the +specified packages will be force-installed alongside the package they +belong to (@pxref{package-cmd-propagated-inputs, @command{guix +package}}, for information on how @command{guix package} deals with +propagated inputs.) For example this is necessary when a library needs headers of another library to compile, or needs another shared library to be linked alongside itself when a program wants to link to it. -@item @code{native-inputs} (default: @code{'()}) -This field is like @code{inputs}, but in case of a cross-compilation it -will be ensured that packages for the architecture of the build machine -are present, such that executables from them can be used during the -build. - -This is typically where you would list tools needed at build time but -not at run time, such as Autoconf, Automake, pkg-config, Gettext, or -Bison. @command{guix lint} can report likely mistakes in this area -(@pxref{Invoking guix lint}). - @item @code{self-native-input?} (default: @code{#f}) This is a Boolean field telling whether the package should use itself as a native input when cross-compiling. -- cgit v1.2.3 From 5568151f5b571346e8c1760a1e0be9d7fd01b665 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 13 Dec 2015 15:14:06 +0100 Subject: gnu: wireless-regdb: Build sequentially. Fixes . Reported by Mark H Weaver . * gnu/packages/linux.scm (wireless-regdb)[source]: Add 'snippet'. [arguments]: Add #:parallel-build?. --- gnu/packages/linux.scm | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 503f9c3368..ad3bd51554 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -1759,11 +1759,21 @@ compliance.") "wireless-regdb-" version ".tar.xz")) (sha256 (base32 - "0czi83k311fp27z42hxjm8vi88fsbc23mhavv96lkb4pmari0jjc")))) + "0czi83k311fp27z42hxjm8vi88fsbc23mhavv96lkb4pmari0jjc")) + + ;; We're building 'regulatory.bin' by ourselves. + (snippet '(delete-file "regulatory.bin")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'configure)) + + ;; The 'all' target of the makefile depends on $(REGDB_CHANGED), which + ;; is computed and can be equal to 'maintainer-clean'; when that + ;; happens, we can end up deleting the 'regulatory.bin' file that we + ;; just built. Thus, build things sequentially. + #:parallel-build? #f + #:tests? #f ;no tests #:make-flags (let ((out (assoc-ref %outputs "out"))) (list (string-append "PREFIX=" out) -- cgit v1.2.3 From dec1e2b3520d00a910189425303aab1a7d2bd1c1 Mon Sep 17 00:00:00 2001 From: Amirouche BOUBEKKI Date: Fri, 11 Dec 2015 17:04:06 +0100 Subject: gnu: Add g-wrap. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/guile.scm (g-wrap): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/guile.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index a4203f0f3b..4be237cd65 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -841,4 +841,32 @@ capabilities.") (home-page "http://dthompson.us/pages/software/sly.html") (license gpl3+))) +(define-public g-wrap + (package + (name "g-wrap") + (version "1.9.15") + (source (origin + (method url-fetch) + (uri (string-append "mirror://savannah/g-wrap/g-wrap-" + version ".tar.gz")) + (sha256 + (base32 + "0ak0bha37dfpj9kmyw1r8fj8nva639aw5xr66wr5gd3l1rqf5xhg")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (propagated-inputs + `(("guile" ,guile-2.0) + ("guile-lib" ,guile-lib))) + (inputs + `(("libffi" ,libffi))) + (synopsis "Generate C bindings for Guile") + (description "G-Wrap is a tool and Guile library for generating function +wrappers for inter-language calls. It currently only supports generating Guile +wrappers for C functions. Given a definition of the types and prototypes for +a given C interface, G-Wrap will automatically generate the C code that +provides access to that interface and its types from the Scheme level.") + (home-page "http://www.nongnu.org/g-wrap/index.html") + (license lgpl2.1+))) + ;;; guile.scm ends here -- cgit v1.2.3 From df12f04a0ce7658fe13ca8ab104d094947b61280 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sun, 13 Dec 2015 12:08:04 +0800 Subject: gnu: Add gdm. * gnu/packages/gnome.scm (gdm): New variable. --- gnu/packages/gnome.scm | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index dee911fc0e..0a02d08ae3 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -42,6 +42,7 @@ #:use-module (gnu packages base) #:use-module (gnu packages bison) #:use-module (gnu packages calendar) + #:use-module (gnu packages check) #:use-module (gnu packages cups) #:use-module (gnu packages curl) #:use-module (gnu packages databases) @@ -4264,3 +4265,63 @@ the available networks and allows users to easily switch between them.") "This package provides a C++ wrapper for the XML parser library libxml2.") (license license:lgpl2.1+))) + +(define-public gdm + (package + (name "gdm") + (version "3.18.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "08pqhslwd487nh9w0jp4d0s4s2imm4ds0jjsbl6lzmqifqj3b4jl")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags + '("--without-plymouth") + #:phases + (modify-phases %standard-phases + (add-before + 'configure 'pre-configure + (lambda _ + ;; We don't have . + (substitute* '("common/gdm-log.c" + "daemon/gdm-server.c" + "daemon/gdm-session-worker.c" + "daemon/gdm-session-worker-job.c") + (("#include ") "")) + ;; Use elogind for sd-login. + (substitute* '("common/gdm-common.c" + "daemon/gdm-manager.c" + "libgdm/gdm-user-switching.c") + (("#include ") + "#include ")) + ;; Avoid checking SYSTEMD using pkg-config. + (setenv "SYSTEMD_CFLAGS" " ") + (setenv "SYSTEMD_LIBS" "-lelogind") + #t))))) + (native-inputs + `(("dconf" ,dconf) + ("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc. + ("gobject-introspection" ,gobject-introspection) + ("intltool" ,intltool) + ("itstool" ,itstool) + ("pkg-config" ,pkg-config) + ("xmllint" ,libxml2))) + (inputs + `(("accountsservice" ,accountsservice) + ("check" ,check) ; for testing + ("elogind" ,elogind) + ("gtk+" ,gtk+) + ("iso-codes" ,iso-codes) + ("libcanberra" ,libcanberra) + ("linux-pam" ,linux-pam))) + (synopsis "Display manager for GNOME") + (home-page "http://wiki.gnome.org/Projects/GDM/") + (description + "GNOME Display Manager is a system service that is responsible for +providing graphical log-ins and managing local and remote displays.") + (license license:gpl2+))) -- cgit v1.2.3 From f3ad149057f1cb840566379838c99b1e420a3d3e Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sun, 13 Dec 2015 22:35:12 +0800 Subject: gnu: Add libmbim. * gnu/packages/freedesktop.scm (libmbim): New variable. --- gnu/packages/freedesktop.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index 3db7ff7835..e5c9e2df99 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -427,3 +427,34 @@ message bus.") and manipulating user account information and an implementation of these interfaces, based on the useradd, usermod and userdel commands.") (license license:gpl3+))) + +(define-public libmbim + (package + (name "libmbim") + (version "1.12.2") + (source (origin + (method url-fetch) + (uri (string-append + "http://www.freedesktop.org/software/" name "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0abv0h9c3kbw4bq1b9270sg189jcjj3x3wa91bj836ynwg9m34wl")))) + (build-system gnu-build-system) + (native-inputs + `(("glib:bin" ,glib "bin") ; for glib-mkenums + ("pkg-config" ,pkg-config) + ("python" ,python-wrapper))) + (propagated-inputs + `(("glib" ,glib))) ; required by mbim-glib.pc + (inputs + `(("libgudev" ,libgudev))) + (synopsis "Library to communicate with MBIM-powered modems") + (home-page "http://www.freedesktop.org/wiki/Software/libmbim/") + (description + "Libmbim is a GLib-based library for talking to WWAN modems and devices +which speak the Mobile Interface Broadband Model (MBIM) protocol.") + (license + ;; The libmbim-glib library is released under the LGPLv2+ license. + ;; The mbimcli tool is released under the GPLv2+ license. + (list license:lgpl2.0+ license:gpl2+)))) -- cgit v1.2.3 From 5302c5ffd100e7b58fe41d698eb9a36f328ef8bb Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sun, 13 Dec 2015 22:35:54 +0800 Subject: gnu: Add libqmi. * gnu/packages/freedesktop.scm (libqmi): New variable. --- gnu/packages/freedesktop.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index e5c9e2df99..060a955e21 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -458,3 +458,32 @@ which speak the Mobile Interface Broadband Model (MBIM) protocol.") ;; The libmbim-glib library is released under the LGPLv2+ license. ;; The mbimcli tool is released under the GPLv2+ license. (list license:lgpl2.0+ license:gpl2+)))) + +(define-public libqmi + (package + (name "libqmi") + (version "1.12.6") + (source (origin + (method url-fetch) + (uri (string-append + "http://www.freedesktop.org/software/" name "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "101ppan2q1h4pyp2zbn9b8sdwy2c7fk9rp91yykxz3afrvzbymq8")))) + (build-system gnu-build-system) + (native-inputs + `(("glib:bin" ,glib "bin") ; for glib-mkenums + ("pkg-config" ,pkg-config) + ("python" ,python-wrapper))) + (propagated-inputs + `(("glib" ,glib))) ; required by qmi-glib.pc + (synopsis "Library to communicate with QMI-powered modems") + (home-page "http://www.freedesktop.org/wiki/Software/libqmi/") + (description + "Libqmi is a GLib-based library for talking to WWAN modems and devices +which speak the Qualcomm MSM Interface (QMI) protocol.") + (license + ;; The libqmi-glib library is released under the LGPLv2+ license. + ;; The qmicli tool is released under the GPLv2+ license. + (list license:lgpl2.0+ license:gpl2+)))) -- cgit v1.2.3 From 1509a1dc82839814828bb5883803c6f58df732c4 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sun, 13 Dec 2015 22:36:30 +0800 Subject: gnu: Add modem-manager. * gnu/packages/freedesktop.scm (modem-manager): New variable. --- gnu/packages/freedesktop.scm | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index 060a955e21..b4e7164bfa 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -487,3 +487,44 @@ which speak the Qualcomm MSM Interface (QMI) protocol.") ;; The libqmi-glib library is released under the LGPLv2+ license. ;; The qmicli tool is released under the GPLv2+ license. (list license:lgpl2.0+ license:gpl2+)))) + +(define-public modem-manager + (package + (name "modem-manager") + (version "1.4.12") + (source (origin + (method url-fetch) + (uri (string-append + "http://www.freedesktop.org/software/ModemManager/" + "ModemManager-" version ".tar.xz")) + (sha256 + (base32 + "1cvhpkbdch9a77sdir0wcks45m2zlvq1sna2ly2v4lx9fm9h7xby")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags + `(,(string-append "--with-udev-base-dir=" %output "/lib/udev")))) + (native-inputs + `(("glib:bin" ,glib "bin") ; for glib-mkenums + ("gobject-introspection" ,gobject-introspection) + ("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ("vala" ,vala) + ;; For testing. + ("dbus" ,dbus))) + (propagated-inputs + `(("glib" ,glib))) ; required by mm-glib.pc + (inputs + `(("libgudev" ,libgudev) + ("libmbim" ,libmbim) + ("libqmi" ,libqmi) + ("polkit" ,polkit))) + (synopsis "Mobile broadband modems manager") + (home-page "http://www.freedesktop.org/wiki/Software/ModemManager/") + (description + "ModemManager is a DBus-activated daemon which controls mobile +broadband (2G/3G/4G) devices and connections. Whether built-in devices, USB +dongles, bluetooth-paired telephones, or professional RS232/USB devices with +external power supplies, ModemManager is able to prepare and configure the +modems and setup connections with them.") + (license license:gpl2+))) -- cgit v1.2.3 From f3ff1da42479eda7826d1bcb10e3a067e62a2daa Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 20 Jul 2015 03:15:45 +0200 Subject: daemon: Better distinguish build statuses. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In Nix itself, the new 'BuildResult' type is returned by the new 'buildDerivation' method, which we don't have and need. * nix/libstore/build.cc (Goal)[cancel]: Remove. [timeOut]: New pure virtual method. (DerivationGoal)[result]: New field. [cancel]: Remove. [timedOut, getResult, done]: New methods. (DerivationGoal::cancel): Remove. (DerivationGoal::timedOut): New method. (DerivationGoal::haveDerivation): Call 'done' instead of 'amDone'. (DerivationGoal::outputsSubstituted): Ditto. (DerivationGoal::inputsRealised): Ditto. (DerivationGoal::buildDone): Ditto. (DerivationGoal::handleChildOutput): Call 'timedOut' instead of 'cancel'. (DerivationGoal::done): New method. (SubstitutionGoal)[cancel]: Remove. [timedOut]: New method. (SubstitutionGoal::cancel): Remove. (SubstitutionGoal::timedOut): New method. (Worker::waitForInput): Use it. * nix/libstore/store-api.hh (BuildResult): New struct. Co-authored-by: Ludovic Courtès --- nix/libstore/build.cc | 93 +++++++++++++++++++++++++++++------------------ nix/libstore/store-api.hh | 24 ++++++++++++ 2 files changed, 82 insertions(+), 35 deletions(-) diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc index 47c7f9728e..ff7b2c4771 100644 --- a/nix/libstore/build.cc +++ b/nix/libstore/build.cc @@ -84,6 +84,7 @@ struct HookInstance; /* A pointer to a goal. */ class Goal; +class DerivationGoal; typedef std::shared_ptr GoalPtr; typedef std::weak_ptr WeakGoalPtr; @@ -174,10 +175,10 @@ public: return exitCode; } - /* Cancel the goal. It should wake up its waiters, get rid of any - running child processes that are being monitored by the worker - (important!), etc. */ - virtual void cancel(bool timeout) = 0; + /* Callback in case of a timeout. It should wake up its waiters, + get rid of any running child processes that are being monitored + by the worker (important!), etc. */ + virtual void timedOut() = 0; virtual string key() = 0; @@ -799,11 +800,13 @@ private: result. */ ValidPathInfos prevInfos; + BuildResult result; + public: DerivationGoal(const Path & drvPath, const StringSet & wantedOutputs, Worker & worker, BuildMode buildMode = bmNormal); ~DerivationGoal(); - void cancel(bool timeout); + void timedOut() override; string key() { @@ -824,6 +827,8 @@ public: /* Add wanted outputs to an already existing derivation goal. */ void addWantedOutputs(const StringSet & outputs); + BuildResult getResult() { return result; } + private: /* The states. */ void init(); @@ -874,6 +879,8 @@ private: Path addHashRewrite(const Path & path); void repairClosure(); + + void done(BuildResult::Status status, const string & msg = ""); }; @@ -933,12 +940,12 @@ void DerivationGoal::killChild() } -void DerivationGoal::cancel(bool timeout) +void DerivationGoal::timedOut() { - if (settings.printBuildTrace && timeout) + if (settings.printBuildTrace) printMsg(lvlError, format("@ build-failed %1% - timeout") % drvPath); killChild(); - amDone(ecFailed); + done(BuildResult::TimedOut); } @@ -991,8 +998,8 @@ void DerivationGoal::haveDerivation() trace("loading derivation"); if (nrFailed != 0) { - printMsg(lvlError, format("cannot build missing derivation `%1%'") % drvPath); - amDone(ecFailed); + printMsg(lvlError, format("cannot build missing derivation ‘%1%’") % drvPath); + done(BuildResult::MiscFailure); return; } @@ -1014,7 +1021,7 @@ void DerivationGoal::haveDerivation() /* If they are all valid, then we're done. */ if (invalidOutputs.size() == 0 && buildMode == bmNormal) { - amDone(ecSuccess); + done(BuildResult::AlreadyValid); return; } @@ -1059,7 +1066,7 @@ void DerivationGoal::outputsSubstituted() unsigned int nrInvalid = checkPathValidity(false, buildMode == bmRepair).size(); if (buildMode == bmNormal && nrInvalid == 0) { - amDone(ecSuccess); + done(BuildResult::Substituted); return; } if (buildMode == bmRepair && nrInvalid == 0) { @@ -1132,7 +1139,7 @@ void DerivationGoal::repairClosure() } if (waitees.empty()) { - amDone(ecSuccess); + done(BuildResult::AlreadyValid); return; } @@ -1144,8 +1151,8 @@ void DerivationGoal::closureRepaired() { trace("closure repaired"); if (nrFailed > 0) - throw Error(format("some paths in the output closure of derivation `%1%' could not be repaired") % drvPath); - amDone(ecSuccess); + throw Error(format("some paths in the output closure of derivation ‘%1%’ could not be repaired") % drvPath); + done(BuildResult::AlreadyValid); } @@ -1157,7 +1164,7 @@ void DerivationGoal::inputsRealised() printMsg(lvlError, format("cannot build derivation `%1%': %2% dependencies couldn't be built") % drvPath % nrFailed); - amDone(ecFailed); + done(BuildResult::DependencyFailed); return; } @@ -1286,7 +1293,7 @@ void DerivationGoal::tryToBuild() if (buildMode != bmCheck && validPaths.size() == drv.outputs.size()) { debug(format("skipping build of derivation `%1%', someone beat us to it") % drvPath); outputLocks.setDeletion(true); - amDone(ecSuccess); + done(BuildResult::AlreadyValid); return; } @@ -1358,7 +1365,7 @@ void DerivationGoal::tryToBuild() printMsg(lvlError, format("@ build-failed %1% - %2% %3%") % drvPath % 0 % e.msg()); worker.permanentFailure = true; - amDone(ecFailed); + done(BuildResult::InputRejected, e.msg()); return; } @@ -1473,7 +1480,7 @@ void DerivationGoal::buildDone() registerOutputs(); if (buildMode == bmCheck) { - amDone(ecSuccess); + done(BuildResult::Built); return; } @@ -1508,10 +1515,12 @@ void DerivationGoal::buildDone() outputLocks.unlock(); buildUser.release(); + BuildResult::Status st = BuildResult::MiscFailure; + if (hook && WIFEXITED(status) && WEXITSTATUS(status) == 101) { if (settings.printBuildTrace) printMsg(lvlError, format("@ build-failed %1% - timeout") % drvPath); - worker.timedOut = true; + st = BuildResult::TimedOut; } else if (hook && (!WIFEXITED(status) || WEXITSTATUS(status) != 100)) { @@ -1524,7 +1533,11 @@ void DerivationGoal::buildDone() if (settings.printBuildTrace) printMsg(lvlError, format("@ build-failed %1% - %2% %3%") % drvPath % 1 % e.msg()); - worker.permanentFailure = !fixedOutput && !diskFull; + + st = + statusOk(status) ? BuildResult::OutputRejected : + fixedOutput || diskFull ? BuildResult::TransientFailure : + BuildResult::PermanentFailure; /* Register the outputs of this build as "failed" so we won't try to build them again (negative caching). @@ -1538,7 +1551,7 @@ void DerivationGoal::buildDone() worker.store.registerFailedPath(i->second.path); } - amDone(ecFailed); + done(st, e.msg()); return; } @@ -1548,7 +1561,7 @@ void DerivationGoal::buildDone() if (settings.printBuildTrace) printMsg(lvlError, format("@ build-succeeded %1% -") % drvPath); - amDone(ecSuccess); + done(BuildResult::Built); } @@ -2579,7 +2592,7 @@ void DerivationGoal::handleChildOutput(int fd, const string & data) printMsg(lvlError, format("%1% killed after writing more than %2% bytes of log output") % getName() % settings.maxLogSize); - cancel(true); // not really a timeout, but close enough + timedOut(); // not really a timeout, but close enough return; } if (verbosity >= settings.buildVerbosity) @@ -2628,8 +2641,7 @@ bool DerivationGoal::pathFailed(const Path & path) if (settings.printBuildTrace) printMsg(lvlError, format("@ build-failed %1% - cached") % drvPath); - worker.permanentFailure = true; - amDone(ecFailed); + done(BuildResult::CachedFailure); return true; } @@ -2649,6 +2661,18 @@ Path DerivationGoal::addHashRewrite(const Path & path) } +void DerivationGoal::done(BuildResult::Status status, const string & msg) +{ + result.status = status; + result.errorMsg = msg; + amDone(result.success() ? ecSuccess : ecFailed); + if (result.status == BuildResult::TimedOut) + worker.timedOut = true; + if (result.status == BuildResult::PermanentFailure || result.status == BuildResult::CachedFailure) + worker.permanentFailure = true; +} + + ////////////////////////////////////////////////////////////////////// @@ -2698,7 +2722,7 @@ public: SubstitutionGoal(const Path & storePath, Worker & worker, bool repair = false); ~SubstitutionGoal(); - void cancel(bool timeout); + void timedOut(); string key() { @@ -2743,9 +2767,9 @@ SubstitutionGoal::~SubstitutionGoal() } -void SubstitutionGoal::cancel(bool timeout) +void SubstitutionGoal::timedOut() { - if (settings.printBuildTrace && timeout) + if (settings.printBuildTrace) printMsg(lvlError, format("@ substituter-failed %1% timeout") % storePath); if (pid != -1) { pid_t savedPid = pid; @@ -3066,7 +3090,8 @@ Worker::~Worker() } -GoalPtr Worker::makeDerivationGoal(const Path & path, const StringSet & wantedOutputs, BuildMode buildMode) +GoalPtr Worker::makeDerivationGoal(const Path & path, + const StringSet & wantedOutputs, BuildMode buildMode) { GoalPtr goal = derivationGoals[path].lock(); if (!goal) { @@ -3323,7 +3348,7 @@ void Worker::waitForInput() /* Since goals may be canceled from inside the loop below (causing them go be erased from the `children' map), we have to be careful that we don't keep iterators alive across calls to - cancel(). */ + timedOut(). */ set pids; foreach (Children::iterator, i, children) pids.insert(i->first); @@ -3365,8 +3390,7 @@ void Worker::waitForInput() printMsg(lvlError, format("%1% timed out after %2% seconds of silence") % goal->getName() % settings.maxSilentTime); - goal->cancel(true); - timedOut = true; + goal->timedOut(); } else if (goal->getExitCode() == Goal::ecBusy && @@ -3377,8 +3401,7 @@ void Worker::waitForInput() printMsg(lvlError, format("%1% timed out after %2% seconds") % goal->getName() % settings.buildTimeout); - goal->cancel(true); - timedOut = true; + goal->timedOut(); } } diff --git a/nix/libstore/store-api.hh b/nix/libstore/store-api.hh index 9403cbee19..3e982f6dd3 100644 --- a/nix/libstore/store-api.hh +++ b/nix/libstore/store-api.hh @@ -106,6 +106,30 @@ typedef list ValidPathInfos; enum BuildMode { bmNormal, bmRepair, bmCheck }; +struct BuildResult +{ + enum Status { + Built = 0, + Substituted, + AlreadyValid, + PermanentFailure, + InputRejected, + OutputRejected, + TransientFailure, // possibly transient + CachedFailure, + TimedOut, + MiscFailure, + DependencyFailed, + LogLimitExceeded, + NotDeterministic, + } status = MiscFailure; + std::string errorMsg; + //time_t startTime = 0, stopTime = 0; + bool success() { + return status == Built || status == Substituted || status == AlreadyValid; + } +}; + class StoreAPI { -- cgit v1.2.3 From ecf84b7c482e4ab0d001b0121b76f1ae11a5482b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 13 Dec 2015 19:08:20 +0100 Subject: daemon: Add '--rounds'. * nix/nix-daemon/guix-daemon.cc (GUIX_OPT_BUILD_ROUNDS): New macro. (options): Add --rounds. (parse_opt): Honor it. * doc/guix.texi (Invoking guix-daemon): Document it. --- doc/guix.texi | 6 ++++++ nix/nix-daemon/guix-daemon.cc | 15 +++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/doc/guix.texi b/doc/guix.texi index e0235b9590..29cea5cef8 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -864,6 +864,12 @@ Allow at most @var{n} build jobs in parallel. The default value is locally; instead, the daemon will offload builds (@pxref{Daemon Offload Setup}), or simply fail. +@item --rounds=@var{N} +Build each derivation @var{n} times in a row, and raise an error if +consecutive build results are not bit-for-bit identical. Note that this +setting can be overridden by clients such as @command{guix build} +(@pxref{Invoking guix build}). + @item --debug Produce debugging output. diff --git a/nix/nix-daemon/guix-daemon.cc b/nix/nix-daemon/guix-daemon.cc index 1934487d24..20a0732fcb 100644 --- a/nix/nix-daemon/guix-daemon.cc +++ b/nix/nix-daemon/guix-daemon.cc @@ -80,6 +80,7 @@ builds derivations on behalf of its clients."); #define GUIX_OPT_NO_BUILD_HOOK 14 #define GUIX_OPT_GC_KEEP_OUTPUTS 15 #define GUIX_OPT_GC_KEEP_DERIVATIONS 16 +#define GUIX_OPT_BUILD_ROUNDS 17 static const struct argp_option options[] = { @@ -104,6 +105,8 @@ static const struct argp_option options[] = n_("do not use the 'build hook'") }, { "cache-failures", GUIX_OPT_CACHE_FAILURES, 0, 0, n_("cache build failures") }, + { "rounds", GUIX_OPT_BUILD_ROUNDS, "N", 0, + n_("build each derivation N times in a row") }, { "lose-logs", GUIX_OPT_LOSE_LOGS, 0, 0, n_("do not keep build logs") }, { "disable-log-compression", GUIX_OPT_DISABLE_LOG_COMPRESSION, 0, 0, @@ -189,6 +192,18 @@ parse_opt (int key, char *arg, struct argp_state *state) case GUIX_OPT_CACHE_FAILURES: settings.cacheFailure = true; break; + case GUIX_OPT_BUILD_ROUNDS: + { + char *end; + unsigned long n = strtoul (arg, &end, 10); + if (end != arg + strlen (arg)) + { + fprintf (stderr, _("error: %s: invalid number of rounds\n"), arg); + exit (EXIT_FAILURE); + } + settings.set ("build-repeat", std::to_string (std::max (0UL, n - 1))); + break; + } case GUIX_OPT_IMPERSONATE_LINUX_26: settings.impersonateLinux26 = true; break; -- cgit v1.2.3 From ee2a7e3fd293b80d3b7f9b9a7949b8a74b2f0575 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 13 Dec 2015 21:04:56 +0100 Subject: guix build: Remove dead code. * guix/scripts/build.scm (options->things-to-build): Remove unused 'match' clause. --- guix/scripts/build.scm | 2 -- 1 file changed, 2 deletions(-) diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index 8ecd9560ed..debf7c2848 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -424,8 +424,6 @@ build---packages, gexps, derivations, and so on." (ensure-list (read/eval str))) (('argument . (? derivation? drv)) drv) - (('argument . (? derivation-path? drv)) - (list )) (_ '())) opts)) -- cgit v1.2.3 From 20464dde13dc540951edc035d1af5d9fd756f2d1 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 13 Dec 2015 21:13:16 +0100 Subject: guix build: Gracefully handle type errors in -e and -f. * guix/scripts/build.scm (options->things-to-build)[validate-type]: New procedure. [ensure-list]: Use it. --- guix/scripts/build.scm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index debf7c2848..a6596d0a82 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -404,10 +404,16 @@ must be one of 'package', 'all', or 'transitive'~%") (define (options->things-to-build opts) "Read the arguments from OPTS and return a list of high-level objects to build---packages, gexps, derivations, and so on." - (define ensure-list - (match-lambda - ((x ...) x) - (x (list x)))) + (define (validate-type x) + (unless (or (package? x) (derivation? x) (gexp? x) (procedure? x)) + (leave (_ "~s: not something we can build~%") x))) + + (define (ensure-list x) + (let ((lst (match x + ((x ...) x) + (x (list x))))) + (for-each validate-type lst) + lst)) (append-map (match-lambda (('argument . (? string? spec)) -- cgit v1.2.3 From 88d5858f55ea824cd9f09d8d3481a9a85aea3fa8 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 13 Dec 2015 21:41:52 +0100 Subject: graph: Add synthetic test. * tests/graph.scm ("node-transitive-edges, no duplicates"): New test. --- tests/graph.scm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/graph.scm b/tests/graph.scm index ad8aea0ada..04c6e74279 100644 --- a/tests/graph.scm +++ b/tests/graph.scm @@ -250,6 +250,17 @@ edges." (bootstrap? package))) diff)))))))) +(test-assert "node-transitive-edges, no duplicates" + (run-with-store %store + (let* ((p0 (dummy-package "p0")) + (p1a (dummy-package "p1a" (inputs `(("p0" ,p0))))) + (p1b (dummy-package "p1b" (inputs `(("p0" ,p0))))) + (p2 (dummy-package "p2" (inputs `(("p1a" ,p1a) ("p1b" ,p1b)))))) + (mlet %store-monad ((edges (node-edges %package-node-type + (list p2 p1a p1b p0)))) + (return (lset= eq? (node-transitive-edges (list p2) edges) + (list p1a p1b p0))))))) + (test-end "graph") -- cgit v1.2.3 From 6645753b463ffc45e7161c33801fd8e80c9a209b Mon Sep 17 00:00:00 2001 From: Florian Paul Schmidt Date: Thu, 10 Dec 2015 08:57:57 +0100 Subject: gnu: Add redshift. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/xdisorg.scm (redshift): New variable. Co-authored-by: Ludovic Courtès --- gnu/packages/xdisorg.scm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index 4b5308c665..efe858615d 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2015 Alexander I.Grafov ;;; Copyright © 2015 Andy Wingo ;;; Copyright © 2015 xd1le +;;; Copyright © 2015 Florian Paul Schmidt ;;; ;;; This file is part of GNU Guix. ;;; @@ -655,3 +656,37 @@ use it as well.") "The xf86-input-wacom driver is the wacom-specific X11 input driver for the X.Org X Server version 1.7 and later (X11R7.5 or later).") (license license:x11))) + +(define-public redshift + (package + (name "redshift") + (version "1.10") + (source + (origin + (method url-fetch) + (uri + (string-append "https://github.com/jonls/redshift/" + "releases/download/v" version + "/redshift-" version ".tar.xz")) + (sha256 + (base32 + "19pfk9il5x2g2ivqix4a555psz8mj3m0cvjwnjpjvx0llh5fghjv")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("intltool" ,intltool))) + (inputs + `(("libdrm" ,libdrm) + ("libx11" ,libx11) + ("libxcb" ,libxcb) + ("libxxf86vm", libxxf86vm) + ("glib" ,glib))) ;for Geoclue2 support + (home-page "https://github.com/jonls/redshift") + (synopsis "Adjust the color temperature of your screen") + (description + "Redshift adjusts the color temperature according to the position of the +sun. A different color temperature is set during night and daytime. During +twilight and early morning, the color temperature transitions smoothly from +night to daytime temperature to allow your eyes to slowly adapt. At night the +color temperature should be set to match the lamps in your room.") + (license license:gpl3+))) -- cgit v1.2.3 From b431e3a08dd2dd98cd985b83481dd44ffe24d7d5 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Mon, 14 Dec 2015 07:26:36 +0200 Subject: gnu: gcc-5: Update to 5.3.0. * gnu/packages/gcc.scm (gcc-5): Update to 5.3.0. --- gnu/packages/gcc.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 8465859c24..2848e4343a 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2014, 2015 Ricardo Wurmus ;;; Copyright © 2015 Andreas Enge +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -334,14 +335,14 @@ Go. It also includes runtime support libraries for these languages.") (define-public gcc-5 (package (inherit gcc-4.9) - (version "5.2.0") + (version "5.3.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gcc/gcc-" version "/gcc-" version ".tar.bz2")) (sha256 (base32 - "1bccp8a106xwz3wkixn65ngxif112vn90qf95m6lzpgpnl25p0sz")) + "1ny4smkp5bzs3cp8ss7pl6lk8yss0d9m4av1mvdp72r1x695akxq")) (patches (list (search-patch "gcc-5.0-libvtv-runpath.patch"))))))) (define-public gcc gcc-4.9) -- cgit v1.2.3 From 03f964a511b1c2c0129a580e51ca72bf18a70d3a Mon Sep 17 00:00:00 2001 From: Chris Marusich Date: Mon, 7 Dec 2015 21:07:40 -0800 Subject: gnu: Add python-contextlib2. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/python.scm (python-contextlib2, python2-contextlib2): New variables. Signed-off-by: Ludovic Courtès --- gnu/packages/python.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 5880cac099..b94dc1dbcc 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -16,6 +16,7 @@ ;;; Copyright © 2015 Erik Edrosa ;;; Copyright © 2015 Efraim Flashner ;;; Copyright © 2015 Kyle Meyer +;;; Copyright © 2015 Chris Marusich ;;; ;;; This file is part of GNU Guix. ;;; @@ -6616,3 +6617,34 @@ of the SSL peer.") (arguments `(#:python ,python-2)) (propagated-inputs `(("python2-pyopenssl" ,python2-pyopenssl))))) + +(define-public python-contextlib2 + (package + (name "python-contextlib2") + (version "0.4.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "contextlib2" version)) + (sha256 + (base32 + "0cmp131dlh0d0zvw0aza1zd13glvngzk8lb4avks0hm7yxwdr9am")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ (zero? + (system* + "python" "test_contextlib2.py", "-v"))))))) + (home-page "http://contextlib2.readthedocs.org/") + (synopsis "Tools for decorators and context managers") + (description "This module is primarily a backport of the Python +3.2 contextlib to earlier Python versions. Like contextlib, it +provides utilities for common tasks involving decorators and context +managers. It also contains additional features that are not part of +the standard library.") + (license psfl))) + +(define-public python2-contextlib2 + (package-with-python2 python-contextlib2)) -- cgit v1.2.3 From ebacb0de4ce62d2c5fff3d3c769d46d2f46dbfc1 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Mon, 14 Dec 2015 10:29:18 +0200 Subject: gnu: powertop: Update to 2.8. * gnu/packages/linux.scm (powertop): Update to 2.8. --- gnu/packages/linux.scm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index ad3bd51554..3d17e9de44 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2015 Federico Beffa ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -1164,7 +1165,7 @@ devices. It replaces 'iwconfig', which is deprecated.") (define-public powertop (package (name "powertop") - (version "2.7") + (version "2.8") (source (origin (method url-fetch) @@ -1173,7 +1174,7 @@ devices. It replaces 'iwconfig', which is deprecated.") version ".tar.gz")) (sha256 (base32 - "1jkqqr3l1x98m7rgin1dgfzxqwj4vciw9lyyq1kl9bdswa818jwd")))) + "0nlwazxbnn0k6q5f5b09wdhw0f194lpzkp3l7vxansqhfczmcyx8")))) (build-system gnu-build-system) (inputs `(("zlib" ,zlib) @@ -1181,7 +1182,7 @@ devices. It replaces 'iwconfig', which is deprecated.") ("ncurses" ,ncurses) ("libnl" ,libnl))) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config))) (home-page "https://01.org/powertop/") (synopsis "Analyze power consumption on Intel-based laptops") (description -- cgit v1.2.3 From 9c1c2a7f8d11fd90df6c7176bc38684e7ebe0e4f Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Mon, 14 Dec 2015 10:50:55 +0200 Subject: gnu: bluez: Update to 5.36. * gnu/packages/linux.scm (bluez): Update to 5.36. [source]: Remove patch. * gnu/packages/patches/bluez-tests.patch: Remove file. * gnu-system.am (dist_patch_DATA): Remove it. --- gnu-system.am | 1 - gnu/packages/linux.scm | 6 ++---- gnu/packages/patches/bluez-tests.patch | 25 ------------------------- 3 files changed, 2 insertions(+), 30 deletions(-) delete mode 100644 gnu/packages/patches/bluez-tests.patch diff --git a/gnu-system.am b/gnu-system.am index 8ffc671142..77a8b2e1c5 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -420,7 +420,6 @@ dist_patch_DATA = \ gnu/packages/patches/binutils-ld-new-dtags.patch \ gnu/packages/patches/binutils-loongson-workaround.patch \ gnu/packages/patches/bitlbee-configure-doc-fix.patch \ - gnu/packages/patches/bluez-tests.patch \ gnu/packages/patches/boost-mips-avoid-m32.patch \ gnu/packages/patches/byobu-writable-status.patch \ gnu/packages/patches/calibre-drop-unrar.patch \ diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 3d17e9de44..4319ed93af 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -2309,7 +2309,7 @@ applications.") (define-public bluez (package (name "bluez") - (version "5.35") + (version "5.36") (source (origin (method url-fetch) (uri (string-append @@ -2317,9 +2317,7 @@ applications.") version ".tar.xz")) (sha256 (base32 - "1qphz25hganfnd5ipfscbj7s70anv5favmwqmi9ig2saciaf1zhs")) - (patches - (list (search-patch "bluez-tests.patch"))))) + "1wkqwmi5krr37mxcqqlp5m2xnw7vw70v3ww7j09vvlskxcdflhx3")))) (build-system gnu-build-system) (arguments '(#:configure-flags diff --git a/gnu/packages/patches/bluez-tests.patch b/gnu/packages/patches/bluez-tests.patch deleted file mode 100644 index 608ded9be2..0000000000 --- a/gnu/packages/patches/bluez-tests.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 484ad8c9263bb524051a999ce19a994960e69572 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= -Date: Fri, 23 Oct 2015 20:48:57 +0800 -Subject: [PATCH] unit/test-gobex-header: Fix duplicate test names - ---- - unit/test-gobex-header.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/unit/test-gobex-header.c b/unit/test-gobex-header.c -index 6f49312..8705892 100644 ---- a/unit/test-gobex-header.c -+++ b/unit/test-gobex-header.c -@@ -554,7 +554,7 @@ int main(int argc, char *argv[]) - test_header_encode_name_umlaut); - g_test_add_func("/gobex/test_header_encode_body", - test_header_encode_body); -- g_test_add_func("/gobex/test_header_encode_connid", -+ g_test_add_func("/gobex/test_header_encode_actionid", - test_header_encode_actionid); - g_test_add_func("/gobex/test_header_encode_apparam", - test_header_encode_apparam); --- -2.5.0 - -- cgit v1.2.3 From 1db6e09fa9e43b64a3b3306199c5e10088fe47f1 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:29:37 +0100 Subject: gnu: Add ruby-minitest-4. * gnu/packages/ruby.scm (ruby-minitest-4): 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 c51a5f08e2..e4880ca42d 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -1432,6 +1432,25 @@ facilities supporting TDD, BDD, mocking, and benchmarking.") (home-page "https://github.com/seattlerb/minitest") (license license:expat))) +;; This is the last release of Minitest 4, which is used by some packages. +(define-public ruby-minitest-4 + (package (inherit ruby-minitest) + (version "4.7.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "minitest" version)) + (sha256 + (base32 + "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy")))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-unsupported-method + (lambda _ + (substitute* "Rakefile" + (("self\\.rubyforge_name = .*") "")) + #t))))))) + (define-public ruby-minitest-sprint (package (name "ruby-minitest-sprint") -- cgit v1.2.3 From bc8277e458fddbb32f4e33f2f6c895a12560d112 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:30:40 +0100 Subject: gnu: Add ruby-gem-hadar. * gnu/packages/ruby.scm (ruby-gem-hadar): New variable. --- gnu/packages/ruby.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index e4880ca42d..58478e5d24 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -1911,6 +1911,39 @@ documentation for Ruby code.") (home-page "https://github.com/flori/tins") (license license:expat))) +(define-public ruby-gem-hadar + (package + (name "ruby-gem-hadar") + (version "1.3.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "gem_hadar" version)) + (sha256 + (base32 + "1j8qri4m9wf8nbfv0kakrgsv2x8vg10914xgm6f69nw8zi3i39ws")))) + (build-system ruby-build-system) + ;; This gem needs itself at development time. We disable rebuilding of the + ;; gemspec to avoid this loop. + (arguments + `(#:tests? #f ; there are no tests + #:phases + (modify-phases %standard-phases + (replace 'build + (lambda _ + (zero? (system* "gem" "build" "gem_hadar.gemspec"))))))) + (propagated-inputs + `(("git" ,git) + ("ruby-tins" ,ruby-tins) + ("ruby-sdoc" ,ruby-sdoc))) + (native-inputs + `(("bundler" ,bundler))) + (synopsis "Library for the development of Ruby gems") + (description + "This library contains some useful functionality to support the +development of Ruby gems.") + (home-page "https://github.com/flori/gem_hadar") + (license license:expat))) + (define-public ruby-json (package (name "ruby-json") -- cgit v1.2.3 From d8cafe29dfc33b7a114a820f782dd5fbb7ea0e32 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:31:09 +0100 Subject: gnu: Add ruby-minitest-tu-shim. * gnu/packages/ruby.scm (ruby-minitest-tu-shim): New variable. --- gnu/packages/ruby.scm | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 58478e5d24..d3b3d39137 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -1944,6 +1944,51 @@ development of Ruby gems.") (home-page "https://github.com/flori/gem_hadar") (license license:expat))) +(define-public ruby-minitest-tu-shim + (package + (name "ruby-minitest-tu-shim") + (version "1.3.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "minitest_tu_shim" version)) + (sha256 + (base32 + "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-test-include-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "Rakefile" + (("Hoe\\.add_include_dirs .*") + (string-append "Hoe.add_include_dirs \"" + (assoc-ref inputs "ruby-minitest-4") + "/lib/ruby/gems/2.2.0/gems/minitest-" + ,(package-version ruby-minitest-4) + "/lib" "\""))))) + (add-before 'check 'fix-test-assumptions + (lambda _ + ;; The test output includes the file name, so a couple of tests + ;; fail. Changing the regular expressions slightly fixes this + ;; problem. + (substitute* "test/test_mini_test.rb" + (("output.sub!\\(.*, 'FILE:LINE'\\)") + "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')") + (("gsub\\(/.*, 'FILE:LINE'\\)") + "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")) + #t))))) + (propagated-inputs + `(("ruby-minitest-4" ,ruby-minitest-4))) + (native-inputs + `(("ruby-hoe" ,ruby-hoe))) + (synopsis "Adapter library between minitest and test/unit") + (description + "This library bridges the gap between the small and fast minitest and +Ruby's large and slower test/unit.") + (home-page "https://rubygems.org/gems/minitest_tu_shim") + (license license:expat))) + (define-public ruby-json (package (name "ruby-json") -- cgit v1.2.3 From fd83a212bc9e18a0321b21e25a8e8c6fdbafb08f Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:34:09 +0100 Subject: gnu: Add ruby-term-ansicolor. * gnu/packages/ruby.scm (ruby-term-ansicolor): New variable. --- gnu/packages/ruby.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index d3b3d39137..dec3e1ed47 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -1989,6 +1989,38 @@ Ruby's large and slower test/unit.") (home-page "https://rubygems.org/gems/minitest_tu_shim") (license license:expat))) +(define-public ruby-term-ansicolor + (package + (name "ruby-term-ansicolor") + (version "1.3.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "term-ansicolor" version)) + (sha256 + (base32 + "0ydbbyjmk5p7fsi55ffnkq79jnfqx65c3nj8d9rpgl6sw85ahyys")))) + (build-system ruby-build-system) + ;; Rebuilding the gemspec seems to require git, even though this is not a + ;; git repository, so we just build the gem from the existing gemspec. + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'build + (lambda _ + (zero? (system* "gem" "build" "term-ansicolor.gemspec"))))))) + (propagated-inputs + `(("ruby-tins" ,ruby-tins))) + (native-inputs + `(("ruby-gem-hadar" ,ruby-gem-hadar) + ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim))) + (synopsis "Ruby library to control the attributes of terminal output") + (description + "This Ruby library uses ANSI escape sequences to control the attributes +of terminal output.") + (home-page "http://flori.github.io/term-ansicolor/") + ;; There is no mention of the "or later" clause. + (license license:gpl2))) + (define-public ruby-json (package (name "ruby-json") -- cgit v1.2.3 From 6e376ca46ac6e97bfe6b5db7f54f717edf3cecb6 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:34:33 +0100 Subject: gnu: Add ruby-pstree. * gnu/packages/ruby.scm (ruby-pstree): 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 dec3e1ed47..0e4d1aaf64 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -2021,6 +2021,28 @@ of terminal output.") ;; There is no mention of the "or later" clause. (license license:gpl2))) +(define-public ruby-pstree + (package + (name "ruby-pstree") + (version "0.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pstree" version)) + (sha256 + (base32 + "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1")))) + (build-system ruby-build-system) + (native-inputs + `(("ruby-gem-hadar" ,ruby-gem-hadar) + ("bundler" ,bundler))) + (synopsis "Create a process tree data structure") + (description + "This library uses the output of the @code{ps} command to create a +process tree data structure for the current host.") + (home-page "http://flori.github.com/pstree") + ;; There is no mention of the "or later" clause. + (license license:gpl2))) + (define-public ruby-json (package (name "ruby-json") -- cgit v1.2.3 From 53239b5f9649b5b27945eafd550c6b296b4140d1 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:34:58 +0100 Subject: gnu: Add ruby-utils. * gnu/packages/ruby.scm (ruby-utils): 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 0e4d1aaf64..2f3e9f3a09 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -2043,6 +2043,33 @@ process tree data structure for the current host.") ;; There is no mention of the "or later" clause. (license license:gpl2))) +(define-public ruby-utils + (package + (name "ruby-utils") + (version "0.2.4") + (source (origin + (method url-fetch) + (uri (rubygems-uri "utils" version)) + (sha256 + (base32 + "0vycgscxf3s1xn4yyfsq54zlh082581ga8azybmqgc4pij6iz2cd")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-tins" ,ruby-tins) + ("ruby-term-ansicolor" ,ruby-term-ansicolor) + ("ruby-pstree" ,ruby-pstree) + ("ruby-pry-editline" ,ruby-pry-editline))) + (native-inputs + `(("ruby-gem-hadar" ,ruby-gem-hadar) + ("bundler" ,bundler))) + (synopsis "Command line tools for working with Ruby") + (description + "This package provides assorted command line tools that may be useful +when working with Ruby code.") + (home-page "https://github.com/flori/utils") + ;; There is no mention of the "or later" clause. + (license license:gpl2))) + (define-public ruby-json (package (name "ruby-json") -- cgit v1.2.3 From 763624f56616eae6c974e8d6c1acc257020154dd Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:36:24 +0100 Subject: gnu: Add ruby-json-pure. * gnu/packages/ruby.scm (ruby-json-pure): New variable. --- gnu/packages/ruby.scm | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 2f3e9f3a09..eb6abbf3d2 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -30,6 +30,7 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages java) #:use-module (gnu packages libffi) + #:use-module (gnu packages ragel) #:use-module (gnu packages tls) #:use-module (gnu packages version-control) #:use-module (guix packages) @@ -2089,6 +2090,53 @@ a native C extension.") (home-page "http://json-jruby.rubyforge.org/") (license (list license:ruby license:gpl2)))) ; GPL2 only +(define-public ruby-json-pure + (package + (name "ruby-json-pure") + (version "1.8.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "json_pure" version)) + (sha256 + (base32 + "025aykr360x6dr1jmg8pmsrx7gr30pws4p1q686vnb48zyw1sc94")))) + (build-system ruby-build-system) + (arguments + `(#:modules ((srfi srfi-1) + (ice-9 regex) + (rnrs io ports) + (guix build ruby-build-system) + (guix build utils)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'replace-git-ls-files + (lambda _ + ;; The existing gemspec file already contains a nice list of + ;; files that belong to the gem. We extract the list from the + ;; gemspec file and then replace the file list in the Rakefile to + ;; get rid of the call to "git ls-files". + (let* ((contents (call-with-input-file "json.gemspec" get-string-all)) + ;; Guile is unhappy about the #\nul characters in comments. + (filtered (string-filter (lambda (char) + (not (equal? #\nul char))) + contents)) + (files (match:substring + (string-match " s\\.files = ([^]]+\\])" filtered) 1))) + (substitute* "Rakefile" + (("FileList\\[`git ls-files`\\.split\\(/\\\\n/\\)\\]") + (string-append "FileList" files)))) + #t))))) + (native-inputs + `(("ruby-permutation" ,ruby-permutation) + ("ruby-utils" ,ruby-utils) + ("ragel" ,ragel) + ("bundler" ,bundler))) + (synopsis "JSON implementation in pure Ruby") + (description + "This package provides a JSON implementation written in pure Ruby.") + (home-page "http://flori.github.com/json") + (license license:ruby))) + (define-public ruby-listen (package (name "ruby-listen") -- cgit v1.2.3 From b004fb6a8a28d220ad61128bc4e6040bb29df7ea Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:36:58 +0100 Subject: gnu: Add ruby-saikuro-treemap. * gnu/packages/ruby.scm (ruby-saikuro-treemap): New variable. --- gnu/packages/ruby.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index eb6abbf3d2..06eca79019 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -572,6 +572,32 @@ format.") (home-page "https://github.com/nicksieger/ci_reporter") (license license:expat))) +(define-public ruby-saikuro-treemap + (package + (name "ruby-saikuro-treemap") + (version "0.2.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "saikuro_treemap" version)) + (sha256 + (base32 + "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950")))) + (build-system ruby-build-system) + ;; Some of the tests fail because the generated JSON has keys in a + ;; different order. This is a problem with the test suite rather than any + ;; of the involved libraries. + (arguments `(#:tests? #f)) + (propagated-inputs + `(("ruby-json-pure" ,ruby-json-pure) + ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro))) + (synopsis "Generate complexity treemap based on saikuro analysis") + (description + "This gem generates a treemap showing the complexity of Ruby code on +which it is run. It uses Saikuro under the covers to analyze Ruby code +complexity.") + (home-page "http://github.com/ThoughtWorksStudios/saikuro_treemap") + (license license:expat))) + (define-public ruby-orderedhash (package (name "ruby-orderedhash") -- cgit v1.2.3 From 16b324cdf4fc265f7b3f9662ff995bcefa932474 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:38:33 +0100 Subject: gnu: Add ruby-rb-fsevent. * gnu/packages/ruby.scm (ruby-rb-fsevent): 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 06eca79019..77d52bd983 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -2163,6 +2163,28 @@ a native C extension.") (home-page "http://flori.github.com/json") (license license:ruby))) +;; Even though this package only provides bindings for a Mac OSX API it is +;; required by "ruby-listen" at runtime. +(define-public ruby-rb-fsevent + (package + (name "ruby-rb-fsevent") + (version "0.9.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rb-fsevent" version)) + (sha256 + (base32 + "1hq57by28iv0ijz8pk9ynih0xdg7vnl1010xjcijfklrcv89a1j2")))) + (build-system ruby-build-system) + ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs + ;; "listen", which needs "rb-fsevent" at runtime. + (arguments `(#:tests? #f)) + (synopsis "FSEvents API with signals catching") + (description + "This library provides Ruby bindings for the Mac OSX FSEvents API.") + (home-page "https://rubygems.org/gems/rb-fsevent") + (license license:expat))) + (define-public ruby-listen (package (name "ruby-listen") -- cgit v1.2.3 From cf1a01f48c10d20f80554f825ec375cc21d7a690 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:38:51 +0100 Subject: gnu: ruby-listen: Add rb-fsevent to inputs. * gnu/packages/ruby.scm (ruby-listen)[propagated-inputs]: Add "ruby-rb-fsevent". --- 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 77d52bd983..a660b3e4ca 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -2199,8 +2199,8 @@ a native C extension.") (build-system ruby-build-system) (arguments '(#:tests? #f)) ; no tests (propagated-inputs - ;; FIXME: omitting "ruby-rb-fsevent" which is only for MacOS. - `(("ruby-rb-inotify" ,ruby-rb-inotify))) + `(("ruby-rb-inotify" ,ruby-rb-inotify) + ("ruby-rb-fsevent" ,ruby-rb-fsevent))) (synopsis "Listen to file modifications") (description "The Listen gem listens to file modifications and notifies you about the changes.") -- cgit v1.2.3 From 051deeb79d1737477e298a322de35ddb962911f4 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:40:13 +0100 Subject: gnu: Add ruby-guard. * gnu/packages/ruby.scm (ruby-guard): New variable. --- gnu/packages/ruby.scm | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index a660b3e4ca..5c8d684cde 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -1782,6 +1782,54 @@ invocation, and source and documentation browsing.") (home-page "http://pryrepl.org") (license license:expat))) +(define-public ruby-guard + (package + (name "ruby-guard") + (version "2.13.0") + (source (origin + (method url-fetch) + ;; The gem does not include a Rakefile, nor does it contain a + ;; gemspec file, nor does it come with the tests. This is why + ;; we fetch the tarball from Github. + (uri (string-append "https://github.com/guard/guard/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1hwj0yi17k6f5axrm0k2bb7fq71dlp0zfywmd7pij9iimbppcca0")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f ; tests require cucumber + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-git-ls-files + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "guard.gemspec" + (("git ls-files -z") "find . -type f -print0")) + #t)) + (replace 'build + (lambda _ + (zero? (system* "gem" "build" "guard.gemspec"))))))) + (propagated-inputs + `(("ruby-formatador" ,ruby-formatador) + ("ruby-listen" ,ruby-listen) + ("ruby-lumberjack" ,ruby-lumberjack) + ("ruby-nenv" ,ruby-nenv) + ("ruby-notiffany" ,ruby-notiffany) + ("ruby-pry" ,ruby-pry) + ("ruby-shellany" ,ruby-shellany) + ("ruby-thor" ,ruby-thor))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-rspec" ,ruby-rspec))) + (synopsis "Tool to handle events on file system modifications") + (description + "Guard is a command line tool to easily handle events on file system +modifications. Guard automates various tasks by running custom rules whenever +file or directories are modified.") + (home-page "http://guardgem.org/") + (license license:expat))) + (define-public ruby-thread-safe (package (name "ruby-thread-safe") -- cgit v1.2.3 From 5799bc2b1f9bfbbf3fb2acc3a3adab9acfcdf66b Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:43:10 +0100 Subject: gnu: Add ruby-netrc. * gnu/packages/ruby.scm (ruby-netrc): New variable. --- gnu/packages/ruby.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 5c8d684cde..2454148bc2 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -2354,6 +2354,36 @@ 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-netrc + (package + (name "ruby-netrc") + (version "0.11.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "netrc" version)) + (sha256 + (base32 + "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + ;; There is no Rakefile and minitest can only run one file at once, + ;; so we have to iterate over all test files. + (lambda _ + (and (map (lambda (file) + (zero? (system* "ruby" "-Itest" file))) + (find-files "./test" "test_.*\\.rb")))))))) + (native-inputs + `(("ruby-minitest" ,ruby-minitest))) + (synopsis "Library to read and update netrc files") + (description + "This library can read and update netrc files, preserving formatting +including comments and whitespace.") + (home-page "https://github.com/geemus/netrc") + (license license:expat))) + (define-public ruby-rack (package (name "ruby-rack") -- cgit v1.2.3 From 3a6989ce3ad69215fa182e8037f02c108889be9d Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:43:41 +0100 Subject: gnu: Add ruby-unf-ext. * gnu/packages/ruby.scm (ruby-unf-ext): 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 2454148bc2..bdcb7ced79 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -2384,6 +2384,27 @@ including comments and whitespace.") (home-page "https://github.com/geemus/netrc") (license license:expat))) +(define-public ruby-unf-ext + (package + (name "ruby-unf-ext") + (version "0.0.7.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "unf_ext" version)) + (sha256 + (base32 + "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b")))) + (build-system ruby-build-system) + (native-inputs + `(("bundler" ,bundler) + ("ruby-rake-compiler" ,ruby-rake-compiler) + ("ruby-test-unit" ,ruby-test-unit))) + (synopsis "Unicode normalization form support library") + (description + "This package provides unicode normalization form support for Ruby.") + (home-page "https://github.com/knu/ruby-unf_ext") + (license license:expat))) + (define-public ruby-rack (package (name "ruby-rack") -- cgit v1.2.3 From 2632a0671283fb1dabb02f98acce2777c3d67309 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:44:17 +0100 Subject: gnu: Add ruby-tdiff. * gnu/packages/ruby.scm (ruby-tdiff): 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 bdcb7ced79..9ac859bf61 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -2405,6 +2405,28 @@ including comments and whitespace.") (home-page "https://github.com/knu/ruby-unf_ext") (license license:expat))) +(define-public ruby-tdiff + (package + (name "ruby-tdiff") + (version "0.3.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "tdiff" version)) + (sha256 + (base32 + "0k41jbvn8qq4mgrixnhlk742b971d136i8wpbcv2cczvi22xpc86")))) + (build-system ruby-build-system) + (native-inputs + `(("ruby-rspec-2" ,ruby-rspec-2) + ("ruby-yard" ,ruby-yard) + ("ruby-rubygems-tasks" ,ruby-rubygems-tasks))) + (synopsis "Calculate the differences between two tree-like structures") + (description + "This library provides functions to calculate the differences between two +tree-like structures. It is similar to Ruby's built-in @code{TSort} module.") + (home-page "https://github.com/postmodern/tdiff") + (license license:expat))) + (define-public ruby-rack (package (name "ruby-rack") -- cgit v1.2.3 From f60f5002225a9cc6c397a8da88631fd7bbe40312 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:44:35 +0100 Subject: gnu: Add ruby-nokogiri-diff. * gnu/packages/ruby.scm (ruby-nokogiri-diff): 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 9ac859bf61..dfacb8ceb0 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -2427,6 +2427,31 @@ tree-like structures. It is similar to Ruby's built-in @code{TSort} module.") (home-page "https://github.com/postmodern/tdiff") (license license:expat))) +(define-public ruby-nokogiri-diff + (package + (name "ruby-nokogiri-diff") + (version "0.2.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "nokogiri-diff" version)) + (sha256 + (base32 + "0njr1s42war0bj1axb2psjvk49l74a8wzr799wckqqdcb6n51lc1")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-tdiff" ,ruby-tdiff) + ("ruby-nokogiri" ,ruby-nokogiri))) + (native-inputs + `(("ruby-rspec-2" ,ruby-rspec-2) + ("ruby-yard" ,ruby-yard) + ("ruby-rubygems-tasks" ,ruby-rubygems-tasks))) + (synopsis "Calculate the differences between two XML/HTML documents") + (description + "@code{Nokogiri::Diff} adds the ability to calculate the +differences (added or removed nodes) between two XML/HTML documents.") + (home-page "https://github.com/postmodern/nokogiri-diff") + (license license:expat))) + (define-public ruby-rack (package (name "ruby-rack") -- cgit v1.2.3 From 3996f0aadc675a19db74503563fb98ee18734297 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:45:15 +0100 Subject: gnu: Add ruby-crass. * gnu/packages/ruby.scm (ruby-crass): 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 dfacb8ceb0..f4c9c0afcc 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -2282,6 +2282,26 @@ multibyte strings, internationalization, time zones, and testing.") (home-page "http://www.rubyonrails.org") (license license:expat))) +(define-public ruby-crass + (package + (name "ruby-crass") + (version "1.0.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "crass" version)) + (sha256 + (base32 + "1c377r8g7m58y22803iyjgqkkvnnii0pymskda1pardxrzaighj9")))) + (build-system ruby-build-system) + (native-inputs + `(("bundler" ,bundler) + ("ruby-minitest" ,ruby-minitest))) + (synopsis "Pure Ruby CSS parser") + (description + "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.") + (home-page "https://github.com/rgrove/crass/") + (license license:expat))) + (define-public ruby-ox (package (name "ruby-ox") -- cgit v1.2.3 From e1c63590efef7cf383994253b07e81d3e27f3a54 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:56:56 +0100 Subject: gnu: Add Gumbo Parser. * gnu/packages/web.scm (gumbo-parser): New variable. --- gnu/packages/web.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 6c3329ffb6..e6659ec148 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -3003,3 +3003,34 @@ the package implements a framework for performing fully customized requests where data can be processed either in memory, on disk, or streaming via the callback or connection interfaces.") (license l:expat))) + +(define-public gumbo-parser + (package + (name "gumbo-parser") + (version "0.10.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/google/" + "gumbo-parser/archive/v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1bgg2kbj311pqdzw2v33za7k66g1rv44kkvvnz2gnpaasi9k0ii8")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; tests require bundling googletest sources + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'bootstrap + (lambda _ (zero? (system* "sh" "autogen.sh"))))))) + ;; The release tarball lacks the generated files. + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool))) + (home-page "https://github.com/google/gumbo-parser") + (synopsis "HTML5 parsing library") + (description + "Gumbo is an implementation of the HTML5 parsing algorithm implemented as +a pure C99 library.") + (license l:asl2.0))) -- cgit v1.2.3 From c2c4e5b2ee7d3e9412822e87bd5aaedbfa40f9bd Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 15:57:37 +0100 Subject: gnu: Add ruby-nokogumbo. * gnu/packages/ruby.scm (ruby-nokogumbo): New variable. --- gnu/packages/ruby.scm | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index f4c9c0afcc..d10dc04a4d 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -39,6 +39,7 @@ #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (gnu packages xml) + #:use-module (gnu packages web) #:use-module (guix build-system ruby)) (define-public ruby @@ -2302,6 +2303,69 @@ multibyte strings, internationalization, time zones, and testing.") (home-page "https://github.com/rgrove/crass/") (license license:expat))) +(define-public ruby-nokogumbo + (package + (name "ruby-nokogumbo") + (version "1.4.6") + (source (origin + ;; We use the git reference, because there's no Rakefile in the + ;; published gem and the tarball on Github is outdated. + (method git-fetch) + (uri (git-reference + (url "https://github.com/rubys/nokogumbo.git") + (commit "d56f954d20a"))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl")))) + (build-system ruby-build-system) + (arguments + `(#:modules ((guix build ruby-build-system) + (guix build utils) + (ice-9 rdelim)) + #:phases + (modify-phases %standard-phases + (add-before 'build 'build-gemspec + (lambda _ + (substitute* "Rakefile" + ;; Build Makefile even without a copy of gumbo-parser sources + (("'gumbo-parser/src',") "") + ;; We don't bundle gumbo-parser sources + (("'gumbo-parser/src/\\*',") "") + (("'gumbo-parser/visualc/include/\\*',") "") + ;; The definition of SOURCES will be cut in gemspec, and + ;; "FileList" will be undefined. + (("SOURCES \\+ FileList\\[") + "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', ")) + + ;; Copy the Rakefile and cut out the gemspec. + (copy-file "Rakefile" ".gemspec") + (with-atomic-file-replacement ".gemspec" + (lambda (in out) + (let loop ((line (read-line in 'concat)) + (skipping? #t)) + (if (eof-object? line) + #t + (let ((skip-next? (if skipping? + (not (string-prefix? "SPEC =" line)) + (string-prefix? "end" line)))) + (when (or (not skipping?) + (and skipping? (not skip-next?))) + (format #t "~a" line) + (display line out)) + (loop (read-line in 'concat) skip-next?)))))) + #t))))) + (inputs + `(("gumbo-parser" ,gumbo-parser))) + (propagated-inputs + `(("ruby-nokogiri" ,ruby-nokogiri))) + (synopsis "Ruby bindings to the Gumbo HTML5 parser") + (description + "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and +access the result as a Nokogiri parsed document.") + (home-page "https://github.com/rubys/nokogumbo/") + (license license:asl2.0))) + (define-public ruby-ox (package (name "ruby-ox") -- cgit v1.2.3 From ad686ef3fc4cb5581e409e647541ce3e248fa111 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 16:58:26 +0100 Subject: gnu: Add ruby-clap. * gnu/packages/ruby.scm (ruby-clap): 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 d10dc04a4d..1c0e3ae728 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -2704,6 +2704,26 @@ extending for custom Ruby constructs such as custom class level definitions.") (home-page "http://yardoc.org") (license license:expat))) +(define-public ruby-clap + (package + (name "ruby-clap") + (version "1.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "clap" version)) + (sha256 + (base32 + "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q")))) + (build-system ruby-build-system) + ;; Clap needs cutest for running tests, but cutest needs clap. + (arguments `(#:tests? #f)) + (synopsis "Command line argument parsing for simple applications") + (description + "Clap provides command line argument parsing features. It covers the +simple case of executing code based on the flags or parameters passed.") + (home-page "https://github.com/djanowski/cutest") + (license license:expat))) + (define-public ruby-eventmachine (package (name "ruby-eventmachine") -- cgit v1.2.3 From 0c80451e81ba5662d9b3f410dbd3996d2c371b87 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 16:58:41 +0100 Subject: gnu: Add ruby-cutest. * gnu/packages/ruby.scm (ruby-cutest): 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 1c0e3ae728..e5489819f5 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -2724,6 +2724,25 @@ simple case of executing code based on the flags or parameters passed.") (home-page "https://github.com/djanowski/cutest") (license license:expat))) +(define-public ruby-cutest + (package + (name "ruby-cutest") + (version "1.2.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "cutest" version)) + (sha256 + (base32 + "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-clap" ,ruby-clap))) + (synopsis "Run tests in separate processes") + (description + "Cutest runs tests in separate processes to avoid shared state.") + (home-page "https://github.com/djanowski/cutest") + (license license:expat))) + (define-public ruby-eventmachine (package (name "ruby-eventmachine") -- cgit v1.2.3 From ac09beba841cb6b3323c80d28fcbae8aa2d9b87a Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 16:59:05 +0100 Subject: gnu: Add ruby-pygmentize. * gnu/packages/ruby.scm (ruby-pygmentize): New variable. --- gnu/packages/ruby.scm | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index e5489819f5..cb813403a0 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -30,6 +30,7 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages java) #:use-module (gnu packages libffi) + #:use-module (gnu packages python) #:use-module (gnu packages ragel) #:use-module (gnu packages tls) #:use-module (gnu packages version-control) @@ -2743,6 +2744,46 @@ simple case of executing code based on the flags or parameters passed.") (home-page "https://github.com/djanowski/cutest") (license license:expat))) +(define-public ruby-pygmentize + (package + (name "ruby-pygmentize") + (version "0.0.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pygmentize" version)) + (sha256 + (base32 + "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-pygmentize-path + (lambda _ + (substitute* "lib/pygmentize.rb" + (("\"/usr/bin/env python.*") + (string-append "\"" (which "pygmentize") "\"\n"))) + #t)) + (add-after 'build 'do-not-use-vendor-directory + (lambda _ + ;; Remove bundled pygments sources + ;; FIXME: ruby-build-system does not support snippets. + (delete-file-recursively "vendor") + (substitute* "pygmentize.gemspec" + (("\"vendor/\\*\\*/\\*\",") "")) + #t))))) + (inputs + `(("pygments" ,python-pygments))) + (native-inputs + `(("ruby-cutest" ,ruby-cutest) + ("ruby-nokogiri" ,ruby-nokogiri))) + (synopsis "Thin Ruby wrapper around pygmentize") + (description + "Pygmentize provides a simple way to call pygmentize from within a Ruby +application.") + (home-page "https://github.com/djanowski/pygmentize") + (license license:expat))) + (define-public ruby-eventmachine (package (name "ruby-eventmachine") -- cgit v1.2.3 From d56ff88b6c63bb4f3e7877986b313ed944d6f341 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 17:11:14 +0100 Subject: gnu: Add ruby-sanitize. * gnu/packages/ruby.scm (ruby-sanitize): New variable. --- gnu/packages/ruby.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index cb813403a0..846e358554 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -2367,6 +2367,38 @@ access the result as a Nokogiri parsed document.") (home-page "https://github.com/rubys/nokogumbo/") (license license:asl2.0))) +(define-public ruby-sanitize + (package + (name "ruby-sanitize") + (version "4.0.0") + (source (origin + (method url-fetch) + ;; The gem does not include the Rakefile, so we download the + ;; release tarball from Github. + (uri (string-append "https://github.com/rgrove/" + "sanitize/archive/v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "055xnj38l60gxnnng76kpy2l2jbrp0byjdyq17jw79w7l4b40znr")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-crass" ,ruby-crass) + ("ruby-nokogiri" ,ruby-nokogiri) + ("ruby-nokogumbo" ,ruby-nokogumbo))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-minitest" ,ruby-minitest) + ("ruby-redcarpet" ,ruby-redcarpet) + ("ruby-yard" ,ruby-yard))) + (synopsis "Whitelist-based HTML and CSS sanitizer") + (description + "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of +acceptable elements, attributes, and CSS properties, Sanitize will remove all +unacceptable HTML and/or CSS from a string.") + (home-page "https://github.com/rgrove/sanitize/") + (license license:expat))) + (define-public ruby-ox (package (name "ruby-ox") -- cgit v1.2.3 From 0c4e762570dfb46d554b30ef14b27cd808ffcff6 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 25 Nov 2015 17:25:22 +0100 Subject: gnu: Add ruby-redcloth. * gnu/packages/ruby.scm (ruby-redcloth): New variable. --- gnu/packages/ruby.scm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 846e358554..1bd3fe2c9a 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -2422,6 +2422,45 @@ alternative to Marshal for Object serialization. ") (home-page "http://www.ohler.com/ox") (license license:expat))) +(define-public ruby-redcloth + (package + (name "ruby-redcloth") + (version "4.2.9") + (source (origin + (method url-fetch) + (uri (rubygems-uri "RedCloth" version)) + (sha256 + (base32 + "06pahxyrckhgb7alsxwhhlx1ib2xsx33793finj01jk8i054bkxl")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f ; no tests + #:phases + (modify-phases %standard-phases + ;; Redcloth has complicated rake tasks to build various versions for + ;; multiple targets using RVM. We don't want this so we just use the + ;; existing gemspec. + (replace 'build + (lambda _ + (zero? (system* "gem" "build" "redcloth.gemspec")))) + ;; Make sure that the "redcloth" executable finds required Ruby + ;; libraries. + (add-after 'install 'wrap-bin-redcloth + (lambda* (#:key outputs #:allow-other-keys) + (wrap-program (string-append (assoc-ref outputs "out") + "/bin/redcloth") + `("GEM_HOME" ":" prefix (,(getenv "GEM_HOME")))) + #t))))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-diff-lcs" ,ruby-diff-lcs) + ("ruby-rspec-2" ,ruby-rspec-2))) + (synopsis "Textile markup language parser for Ruby") + (description + "RedCloth is a Ruby parser for the Textile markup language.") + (home-page "http://redcloth.org") + (license license:expat))) + (define-public ruby-pg (package (name "ruby-pg") -- cgit v1.2.3 From 4fef1e850e4872f2bc7c1f0a10cbac176b50895f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 14 Dec 2015 19:24:22 +0100 Subject: profiles: Silence Info installation. * guix/profiles.scm (info-dir-file)[build]: Pass --silent to 'install-info'. --- guix/profiles.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guix/profiles.scm b/guix/profiles.scm index c222f4115d..ce6b2c4f42 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -469,7 +469,7 @@ MANIFEST." (define (install-info info) (setenv "PATH" (string-append #+gzip "/bin")) ;for info.gz files (zero? - (system* (string-append #+texinfo "/bin/install-info") + (system* (string-append #+texinfo "/bin/install-info") "--silent" info (string-append #$output "/share/info/dir")))) (mkdir-p (string-append #$output "/share/info")) -- cgit v1.2.3 From 9d3994f70095b46b95e6d05562f32c25be326772 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 14 Dec 2015 19:52:47 +0100 Subject: gexp: 'local-file' resolves relative file names. * guix/gexp.scm (): Rename constructor to '%%local-file'. Add 'absolute' field. (%local-file, extract-directory, absolute-file-name): New procedures. (current-source-directory): New macro. (local-file): Adjust call to '%local-file'. (local-file-absolute-file-name): New procedure. (local-file-compiler): Force the 'absolute' field. * tests/guix-system.sh: Test whether 'local-file' canonicalization works. * doc/guix.texi (G-Expressions): Adjust. --- doc/guix.texi | 5 ++-- guix/gexp.scm | 66 ++++++++++++++++++++++++++++++++++++++++++---------- tests/guix-system.sh | 32 +++++++++++++++++++++++-- 3 files changed, 87 insertions(+), 16 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 29cea5cef8..07668e917f 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3489,8 +3489,9 @@ content is directly passed as a string. @deffn {Scheme Procedure} local-file @var{file} [@var{name}] @ [#:recursive? #t] Return an object representing local file @var{file} to add to the store; this -object can be used in a gexp. @var{file} will be added to the store under @var{name}--by -default the base name of @var{file}. +object can be used in a gexp. If @var{file} is a relative file name, it is looked +up relative to the source file where this form appears. @var{file} will be added to +the store under @var{name}--by default the base name of @var{file}. When @var{recursive?} is true, the contents of @var{file} are added recursively; if @var{file} designates a flat file and @var{recursive?} is true, its contents are added, and its diff --git a/guix/gexp.scm b/guix/gexp.scm index 14ced747b2..35adc179a1 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -35,6 +35,7 @@ local-file local-file? local-file-file + local-file-absolute-file-name local-file-name local-file-recursive? @@ -182,35 +183,76 @@ cross-compiling.)" ;;; File declarations. ;;; +;; A local file name. FILE is the file name the user entered, which can be a +;; relative file name, and ABSOLUTE is a promise that computes its canonical +;; absolute file name. We keep it in a promise to compute it lazily and avoid +;; repeated 'stat' calls. (define-record-type - (%local-file file name recursive?) + (%%local-file file absolute name recursive?) local-file? (file local-file-file) ;string + (absolute %local-file-absolute-file-name) ;promise string (name local-file-name) ;string (recursive? local-file-recursive?)) ;Boolean -(define* (local-file file #:optional (name (basename file)) - #:key recursive?) +(define* (%local-file file promise #:optional (name (basename file)) + #:key recursive?) + ;; This intermediate procedure is part of our ABI, but the underlying + ;; %%LOCAL-FILE is not. + (%%local-file file promise name recursive?)) + +(define (extract-directory properties) + "Extract the directory name from source location PROPERTIES." + (match (assq 'filename properties) + (('filename . (? string? file-name)) + (dirname file-name)) + (_ + #f))) + +(define-syntax-rule (current-source-directory) + "Expand to the directory of the current source file or #f if it could not +be determined." + (extract-directory (current-source-location))) + +(define (absolute-file-name file directory) + "Return the canonical absolute file name for FILE, which lives in the +vicinity of DIRECTORY." + (canonicalize-path + (cond ((string-prefix? "/" file) file) + ((not directory) file) + ((string-prefix? "/" directory) + (string-append directory "/" file)) + (else file)))) + +(define-syntax-rule (local-file file rest ...) "Return an object representing local file FILE to add to the store; this -object can be used in a gexp. FILE will be added to the store under NAME--by -default the base name of FILE. +object can be used in a gexp. If FILE is a relative file name, it is looked +up relative to the source file where this form appears. FILE will be added to +the store under NAME--by default the base name of FILE. When RECURSIVE? is true, the contents of FILE are added recursively; if FILE designates a flat file and RECURSIVE? is true, its contents are added, and its permission bits are kept. This is the declarative counterpart of the 'interned-file' monadic procedure." - ;; Canonicalize FILE so that if it's a symlink, it is resolved. Failing to - ;; do that, when RECURSIVE? is #t, we could end up creating a dangling - ;; symlink in the store, and when RECURSIVE? is #f 'add-to-store' would just - ;; throw an error, both of which are inconvenient. - (%local-file (canonicalize-path file) name recursive?)) + (%local-file file + (delay (absolute-file-name file (current-source-directory))) + rest ...)) + +(define (local-file-absolute-file-name file) + "Return the absolute file name for FILE, a instance. A +'system-error' exception is raised if FILE could not be found." + (force (%local-file-absolute-file-name file))) (define-gexp-compiler (local-file-compiler (file local-file?) system target) ;; "Compile" FILE by adding it to the store. (match file - (($ file name recursive?) - (interned-file file name #:recursive? recursive?)))) + (($ file (= force absolute) name recursive?) + ;; Canonicalize FILE so that if it's a symlink, it is resolved. Failing + ;; to do that, when RECURSIVE? is #t, we could end up creating a dangling + ;; symlink in the store, and when RECURSIVE? is #f 'add-to-store' would + ;; just throw an error, both of which are inconvenient. + (interned-file absolute name #:recursive? recursive?)))) (define-record-type (%plain-file name content references) diff --git a/tests/guix-system.sh b/tests/guix-system.sh index e20bc98713..02e2524d9e 100644 --- a/tests/guix-system.sh +++ b/tests/guix-system.sh @@ -17,7 +17,7 @@ # along with GNU Guix. If not, see . # -# Test the daemon and its interaction with 'guix substitute'. +# Test 'guix system', mostly error reporting. # set -e @@ -26,7 +26,15 @@ guix system --version tmpfile="t-guix-system-$$" errorfile="t-guix-system-error-$$" -trap 'rm -f "$tmpfile" "$errorfile"' EXIT + +# Note: This directory is chosen outside $builddir so that relative file name +# canonicalization doesn't mess up with 'current-source-directory', used by +# 'local-file' ('load' forces 'relative' for +# %FILE-PORT-NAME-CANONICALIZATION.) +tmpdir="${TMPDIR:-/tmp}/t-guix-system-$$" +mkdir "$tmpdir" + +trap 'rm -f "$tmpfile" "$errorfile" "$tmpdir"/*; rmdir "$tmpdir"' EXIT # Reporting of syntax errors. @@ -180,3 +188,23 @@ make_user_config "users" "group-that-does-not-exist" if guix system build "$tmpfile" -n 2> "$errorfile" then false else grep "supplementary group.*group-that-does-not-exist.*undeclared" "$errorfile"; fi + +# Try 'local-file' and relative file name resolution. + +cat > "$tmpdir/config.scm"< "$tmpdir/my-torrc"< Date: Sat, 12 Dec 2015 17:37:16 -0500 Subject: gnu: tmux: Update to 2.1. * gnu/packages/tmux.scm (tmux): Update to 2.1. --- gnu/packages/tmux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/tmux.scm b/gnu/packages/tmux.scm index 69757a3162..48d50ccafc 100644 --- a/gnu/packages/tmux.scm +++ b/gnu/packages/tmux.scm @@ -28,7 +28,7 @@ (define-public tmux (package (name "tmux") - (version "2.0") + (version "2.1") (source (origin (method url-fetch) (uri (string-append @@ -36,7 +36,7 @@ version "/tmux-" version ".tar.gz")) (sha256 (base32 - "0qnkda8kb747vmbldjpb23ksv9pq3s65xhh1ja5rdsmh8r24npvr")))) + "0xk1mylsb08sf0w597mdgj9s6hxxjvjvjd6bngpjvvxwyixlwmii")))) (build-system gnu-build-system) (inputs `(("libevent" ,libevent) -- cgit v1.2.3 From 75f52fca95536b543a39dbee775c16aff0a67ef0 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 15 Dec 2015 11:45:44 +0200 Subject: gnu: enlightenment: Update to 0.20.1. * gnu/packages/enlightenment.scm (enlightenment): Update to 0.20.1. --- gnu/packages/enlightenment.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index 6224a2a527..3b882d6d28 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -271,7 +271,7 @@ Libraries with some extra bells and whistles.") (define-public enlightenment (package (name "enlightenment") - (version "0.20.0") + (version "0.20.1") (source (origin (method url-fetch) (uri @@ -279,7 +279,7 @@ Libraries with some extra bells and whistles.") name "/" name "-" version ".tar.xz")) (sha256 (base32 - "0mwiim0nv640v3af7qxc5ajfk702qkl5c1cnqlhz6rqzr5yjapxv")))) + "1vplq5i34shn4q3jzmxr0gw916k7q3prfgcp26h8bmgc7nmi82w2")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--enable-mount-eeze"))) -- cgit v1.2.3 From e0508b6bf7a378e774b42e212befc77d5fb3eb5e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 15 Dec 2015 12:00:39 +0100 Subject: doc: Give another example use of 'propagated-inputs'. Suggested by Leo Famulari . * doc/guix.texi (package Reference): Explain 'propagated-inputs' for non-C languages. --- doc/guix.texi | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 07668e917f..f63e3669fa 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2305,9 +2305,16 @@ belong to (@pxref{package-cmd-propagated-inputs, @command{guix package}}, for information on how @command{guix package} deals with propagated inputs.) -For example this is necessary when a library needs headers of another -library to compile, or needs another shared library to be linked -alongside itself when a program wants to link to it. +For example this is necessary when a C/C++ library needs headers of +another library to compile, or when a pkg-config file refers to another +one @i{via} its @code{Requires} field. + +Another example where @code{propagated-inputs} is useful is for +languages that lack a facility to record the run-time search path akin +to ELF's @code{RUNPATH}; this includes Guile, Python, Perl, GHC, and +more. To ensure that libraries written in those languages can find +library code they depend on at run time, run-time dependencies must be +listed in @code{propagated-inputs} rather than @code{inputs}. @item @code{self-native-input?} (default: @code{#f}) This is a Boolean field telling whether the package should use itself as -- cgit v1.2.3 From 2ad9515c50fbb44bfd829682078acfcf6d0d2d19 Mon Sep 17 00:00:00 2001 From: Alex Vong Date: Mon, 14 Dec 2015 20:20:55 +0800 Subject: gnu: youtube-dl: Install man pages and completion files. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/video.scm (youtube-dl) [arguments]: Add fix-the-data-directories phase. Co-authored-by: Ludovic Courtès --- gnu/packages/video.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 76374e2ac6..4f6ef6d7e5 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2015 Efraim Flashner ;;; Copyright © 2015 Andy Patterson ;;; Copyright © 2015 Ricardo Wurmus +;;; Copyright © 2015 Alex Vong ;;; ;;; This file is part of GNU Guix. ;;; @@ -822,6 +823,27 @@ projects while introducing many more.") (build-system python-build-system) (native-inputs `(("python-setuptools" ,python-setuptools))) (home-page "http://youtube-dl.org") + (arguments + ;; The problem here is that the directory for the man page and completion + ;; files is relative, and for some reason, setup.py uses the + ;; auto-detected sys.prefix instead of the user-defined "--prefix=FOO". + ;; So, we need pass the prefix directly. In addition, make sure the Bash + ;; completion file is called 'youtube-dl' rather than + ;; 'youtube-dl.bash-completion'. + `(#:phases (modify-phases %standard-phases + (add-before 'install 'fix-the-data-directories + (lambda* (#:key outputs #:allow-other-keys) + (let ((prefix (assoc-ref outputs "out"))) + (mkdir "bash-completion") + (rename-file "youtube-dl.bash-completion" + "bash-completion/youtube-dl") + (substitute* "setup.py" + (("youtube-dl\\.bash-completion") + "bash-completion/youtube-dl") + (("'etc/") + (string-append "'" prefix "/etc/")) + (("'share/") + (string-append "'" prefix "/share/"))))))))) (synopsis "Download videos from YouTube.com and other sites") (description "Youtube-dl is a small command-line program to download videos from -- cgit v1.2.3 From ca473fc21d9abe774fd94efee06bc48a8587b0c5 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Mon, 14 Dec 2015 12:13:56 +0800 Subject: gnu: tdb: Update to 1.3.8. * gnu/packages/databases.scm (tdb): Update to 1.3.8. [source]: Switch to https URI. --- gnu/packages/databases.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 1eccad59fc..5cac48d081 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -386,14 +386,14 @@ is in the public domain.") (define-public tdb (package (name "tdb") - (version "1.3.0") + (version "1.3.8") (source (origin (method url-fetch) - (uri (string-append "http://samba.org/ftp/tdb/tdb-" + (uri (string-append "https://www.samba.org/ftp/tdb/tdb-" version ".tar.gz")) (sha256 (base32 - "085sd2kii72fr0c4pdc7c7m0xk34nc66wnjp21c83dss826y9gh4")))) + "1cg6gmpgn36dd4bsp3j9k3hyrm87d8hdigqyyqxw5jga4w2aq186")))) (build-system gnu-build-system) (arguments '(#:phases (alist-replace -- cgit v1.2.3 From 9a3a8b8edd95e2f566373ed53d3f6deac4635f0f Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 15 Dec 2015 19:33:52 +0800 Subject: gnu: clutter-gtk: Propagate inputs. * gnu/packages/gnome.scm (clutter-gtk): Move clutter and gtk+ to 'propagated-inputs'. --- gnu/packages/gnome.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 0a02d08ae3..25cd08faf2 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2760,7 +2760,8 @@ presentations, kiosk style applications and so on.") (native-inputs `(("pkg-config" ,pkg-config) ("gobject-introspection" ,gobject-introspection))) - (inputs + (propagated-inputs + ;; clutter-gtk.pc refers to all these. `(("clutter" ,clutter) ("gtk+" ,gtk+))) (home-page "http://www.clutter-project.org") -- cgit v1.2.3 From ba3cb5ab5c64076881880a26126daa2c57447bf9 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 15 Dec 2015 19:39:31 +0800 Subject: gnu: gnome-session: Add input gsettings-desktop-schemas. * gnu/packages/gnome.scm (gnome-session)[build-system]: Switch to GLIB-OR-GTK-BUILD-SYSTEM. [inputs]: Add gsettings-desktop-schemas. --- gnu/packages/gnome.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 25cd08faf2..1ace5943e5 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -3745,7 +3745,7 @@ such as gzip tarballs.") (sha256 (base32 "0icajbzqf5llvp5s8nafwkhwz6a6jmwn4hhs81bk0bpzawyq4zdk")))) - (build-system gnu-build-system) + (build-system glib-or-gtk-build-system) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc. ("pkg-config" ,pkg-config) @@ -3753,6 +3753,7 @@ such as gzip tarballs.") ("xsltproc" ,libxslt))) (inputs `(("gnome-desktop" ,gnome-desktop) + ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) ("gtk+" ,gtk+) ("json-glib" ,json-glib) ("libsm" ,libsm) -- cgit v1.2.3 From 664e6c3a95521b3642160645f96aa0a0867ba918 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 15 Dec 2015 13:05:20 +0200 Subject: gnu: python-keyring: Update to 5.7.1. * gnu/packages/python.scm (python-keyring): Update to 5.7.1. [source]: Change to pypi syntax. [native-inputs]: Add python-setuptools-scm. [arguments]: Remove argument to replace unpack with unzip. --- gnu/packages/python.scm | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index b94dc1dbcc..fd8c4fc5c7 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -838,34 +838,23 @@ etc.). The package is structured to make adding new modules easy.") (define-public python-keyring (package (name "python-keyring") - (version "3.8") + (version "5.7.1") (source (origin (method url-fetch) - (uri (string-append "https://pypi.python.org/packages/source/k/" - "keyring/keyring-" version ".zip")) + (uri (pypi-uri "keyring" version)) (sha256 (base32 - "1vxazfbcwggyfyramh55shkxs08skhpqrkm6lrrjnygnm8c1l2zg")))) + "1h7a1r9ick7wdd0xb5p63413nvjadna2xawrsvmklsl5ddhm5wrx")))) (build-system python-build-system) (native-inputs - `(("unzip" ,unzip) - ("python-setuptools" ,python-setuptools) + `(("python-setuptools" ,python-setuptools) + ("python-setuptools-scm" ,python-setuptools-scm) ("python-mock" ,python-mock))) (inputs `(("python-pycrypto" ,python-pycrypto))) (arguments - `(#:tests? #f ;TODO: tests require pytest - #:phases - (alist-replace - 'unpack - (lambda _ - (let ((unzip (string-append (assoc-ref %build-inputs "unzip") - "/bin/unzip")) - (source (assoc-ref %build-inputs "source"))) - (and (zero? (system* unzip source)) - (chdir (string-append "keyring-" ,version))))) - %standard-phases))) + `(#:tests? #f)) ;TODO: tests require pytest (home-page "http://bitbucket.org/kang/python-keyring-lib") (synopsis "Store and access your passwords safely") (description -- cgit v1.2.3 From 5bd88cf1e3ebca19dccd68129258e8f365b2ae3c Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 15 Dec 2015 13:10:34 +0200 Subject: gnu: python-click: Update to 6.2. * gnu/packages/python.scm (python-click): Update to 6.2. [source]: Change to pypi syntax. --- gnu/packages/python.scm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index fd8c4fc5c7..6a051014f9 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -2127,15 +2127,13 @@ is used by the Requests library to verify HTTPS requests.") (define-public python-click (package (name "python-click") - (version "4.0") + (version "6.2") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/source/c/click/click-" - version ".tar.gz")) + (uri (pypi-uri "click" version)) (sha256 - (base32 "0294x9g28w6zgswl0rsygkwi0wf6n480gf7fiiw5f9az3xhh77pl")))) + (base32 "10kavbisnk9m93jl2wi34pw7ryr2qbxshh2cysxwxd7bymqgz87v")))) (build-system python-build-system) (native-inputs `(("python-setuptools" ,python-setuptools))) -- cgit v1.2.3 From fceac8803966dd7988b56e1e26b909c7fede0e05 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Tue, 15 Dec 2015 17:59:15 +0100 Subject: gnu: python-ipython: Patch 'ctypes' bug. * gnu/packages/patches/python-ipython-inputhook-ctype.patch: New patch. * gnu/packages/python.scm (python-ipython): Use it. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + .../patches/python-ipython-inputhook-ctype.patch | 41 ++++++++++++++++++++++ gnu/packages/python.scm | 11 +++--- 3 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 gnu/packages/patches/python-ipython-inputhook-ctype.patch diff --git a/gnu-system.am b/gnu-system.am index 77a8b2e1c5..0039246e4d 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -640,6 +640,7 @@ dist_patch_DATA = \ gnu/packages/patches/python-3-search-paths.patch \ gnu/packages/patches/python-disable-ssl-test.patch \ gnu/packages/patches/python-fix-tests.patch \ + gnu/packages/patches/python-ipython-inputhook-ctype.patch \ gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \ gnu/packages/patches/python-configobj-setuptools.patch \ gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \ diff --git a/gnu/packages/patches/python-ipython-inputhook-ctype.patch b/gnu/packages/patches/python-ipython-inputhook-ctype.patch new file mode 100644 index 0000000000..c77e310542 --- /dev/null +++ b/gnu/packages/patches/python-ipython-inputhook-ctype.patch @@ -0,0 +1,41 @@ +From 04c5d358c7ab74d3ddab4f7662e539393d8604c6 Mon Sep 17 00:00:00 2001 +From: Lucretiel +Date: Wed, 13 May 2015 13:12:43 -0400 +Subject: [PATCH] register now checks for missing ctypes + +If ctypes is None, then no input hooks may be registered; `InputHookManager.register` skips registration of input hook classes. Also updated `__init__` to no longer skip creating the instance attributes, to prevent AttributeError exceptions at load time. +--- + IPython/lib/inputhook.py | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +diff --git a/IPython/lib/inputhook.py b/IPython/lib/inputhook.py +index 4ae2cb3..6578365 100644 +--- a/IPython/lib/inputhook.py ++++ b/IPython/lib/inputhook.py +@@ -107,8 +107,8 @@ class InputHookManager(object): + def __init__(self): + if ctypes is None: + warn("IPython GUI event loop requires ctypes, %gui will not be available") +- return +- self.PYFUNC = ctypes.PYFUNCTYPE(ctypes.c_int) ++ else: ++ self.PYFUNC = ctypes.PYFUNCTYPE(ctypes.c_int) + self.guihooks = {} + self.aliases = {} + self.apps = {} +@@ -197,10 +197,11 @@ def enable(self, app=None): + ... + """ + def decorator(cls): +- inst = cls(self) +- self.guihooks[toolkitname] = inst +- for a in aliases: +- self.aliases[a] = toolkitname ++ if ctypes is not None: ++ inst = cls(self) ++ self.guihooks[toolkitname] = inst ++ for a in aliases: ++ self.aliases[a] = toolkitname + return cls + return decorator + diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 6a051014f9..95c24a6a43 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -4194,11 +4194,12 @@ without using the configuration machinery.") (version "3.2.1") (source (origin - (method url-fetch) - (uri (string-append "https://pypi.python.org/packages/source/i/" - "ipython/ipython-" version ".tar.gz")) - (sha256 - (base32 "0xwin0sa9n0cabx4cq1ibf5ldsiw5dyimibla82kicz5gbpas4y9")))) + (method url-fetch) + (patches (list (search-patch "python-ipython-inputhook-ctype.patch"))) + (uri (string-append "https://pypi.python.org/packages/source/i/" + "ipython/ipython-" version ".tar.gz")) + (sha256 + (base32 "0xwin0sa9n0cabx4cq1ibf5ldsiw5dyimibla82kicz5gbpas4y9")))) (build-system python-build-system) (outputs '("out" "doc")) (propagated-inputs -- cgit v1.2.3 From 7ccb3ad3c1cd45f2b23d57ef01d3f0a1b9bcaf7e Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sat, 12 Dec 2015 11:19:43 +0300 Subject: emacs: 'node-type' is in (guix graph) now. This is a followup to commit 8fb583714f78d1b283523ef7edbb6e098946182f. * emacs/guix-main.scm (graph-type-names): Use 'node-type-name' from (guix graph) module. --- emacs/guix-main.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm index 7175b103da..6f9eb422e0 100644 --- a/emacs/guix-main.scm +++ b/emacs/guix-main.scm @@ -58,7 +58,6 @@ (guix licenses) (guix utils) (guix ui) - (guix scripts graph) (guix scripts lint) (guix scripts package) (guix scripts pull) @@ -989,7 +988,8 @@ Return #t if the shell command was executed successfully." (define (graph-type-names) "Return a list of names of available graph node types." - (map node-type-name %node-types)) + (map (@ (guix graph) node-type-name) + (@ (guix scripts graph) %node-types))) (define (refresh-updater-names) "Return a list of names of available refresh updater types." -- cgit v1.2.3 From 1ccdc7f0bebff1a277acb970abed55b4130d8d0f Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sat, 12 Dec 2015 11:23:03 +0300 Subject: emacs: Use socket instead of port. Suggested by Florian Paul Schmidt. * emacs/guix-backend.el (guix-default-port): Remove. (guix-repl-socket-file-name-function, guix-repl-current-socket): New variables. (guix-repl-socket-file-name, guix-repl-delete-socket-maybe): New procedures. (guix-get-guile-program): Take socket as an optional argument. (guix-start-repl-maybe): Adjust accordingly. --- emacs/guix-backend.el | 68 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 27 deletions(-) diff --git a/emacs/guix-backend.el b/emacs/guix-backend.el index 82383e48ff..0736f85ec8 100644 --- a/emacs/guix-backend.el +++ b/emacs/guix-backend.el @@ -36,18 +36,13 @@ ;; running code in the REPL (see ;; ). ;; -;; If you need to use "guix.el" in another Emacs (i.e. when there is -;; a runnig "guile --listen..." REPL somewhere), you can either change -;; `guix-default-port' in that Emacs instance or set -;; `guix-use-guile-server' to t. -;; ;; Guix REPLs (unlike the usual Geiser REPLs) are not added to ;; `geiser-repl--repls' variable, and thus cannot be used for evaluating ;; while editing scm-files. The only purpose of Guix REPLs is to be an ;; intermediate between "Guix/Guile level" and "Emacs interface level". ;; That being said you can still want to use a Guix REPL while hacking -;; auxiliary scheme-files for "guix.el". You can just use "M-x -;; connect-to-guile" (connect to "localhost" and `guix-default-port') to +;; auxiliary scheme-files for "guix.el". You can just use +;; `geiser-connect-local' command with `guix-repl-current-socket' to ;; have a usual Geiser REPL with all stuff defined by "guix.el" package. ;;; Code: @@ -98,11 +93,17 @@ REPL while some packages are being installed/removed in the main REPL." :type 'boolean :group 'guix-repl) -(defcustom guix-default-port 37246 - "Default port used if `guix-use-guile-server' is non-nil." - :type 'integer +(defcustom guix-repl-socket-file-name-function + #'guix-repl-socket-file-name + "Function used to define a socket file name used by Guix REPL. +The function is called without arguments." + :type '(choice (function-item guix-repl-socket-file-name) + (function :tag "Other function")) :group 'guix-repl) +(defvar guix-repl-current-socket nil + "Name of a socket file used by the current Guix REPL.") + (defvar guix-repl-buffer nil "Main Geiser REPL buffer used for communicating with Guix. This REPL is used for processing package actions and for @@ -139,17 +140,28 @@ See `guix-eval-in-repl' for details.") "Message telling about successful Guix operation." (message "Guix operation has been performed.")) -(defun guix-get-guile-program (&optional internal) +(defun guix-get-guile-program (&optional socket) "Return a value suitable for `geiser-guile-binary'." - (if (or internal - (not guix-use-guile-server)) + (if (null socket) guix-guile-program (append (if (listp guix-guile-program) guix-guile-program (list guix-guile-program)) - ;; Guile understands "--listen=..." but not "--listen ..." - (list (concat "--listen=" - (number-to-string guix-default-port)))))) + (list (concat "--listen=" socket))))) + +(defun guix-repl-socket-file-name () + "Return a name of a socket file used by Guix REPL." + (make-temp-name + (concat (file-name-as-directory temporary-file-directory) + "guix-repl-"))) + +(defun guix-repl-delete-socket-maybe () + "Delete `guix-repl-current-socket' file if it exists." + (and guix-repl-current-socket + (file-exists-p guix-repl-current-socket) + (delete-file guix-repl-current-socket))) + +(add-hook 'kill-emacs-hook 'guix-repl-delete-socket-maybe) (defun guix-start-process-maybe (&optional start-msg end-msg) "Start Geiser REPL configured for Guix if needed. @@ -176,19 +188,21 @@ display messages." (get-buffer-process repl)) (and start-msg (message start-msg)) (setq guix-repl-operation-p nil) - (let ((geiser-guile-binary (guix-get-guile-program internal)) - (geiser-guile-init-file (or internal guix-helper-file)) + (unless internal + ;; Guile leaves socket file after exit, so remove it if it + ;; exists (after the REPL restart). + (guix-repl-delete-socket-maybe) + (setq guix-repl-current-socket + (and guix-use-guile-server + (or guix-repl-current-socket + (funcall guix-repl-socket-file-name-function))))) + (let ((geiser-guile-binary (guix-get-guile-program + (unless internal + guix-repl-current-socket))) + (geiser-guile-init-file (unless internal guix-helper-file)) (repl (get-buffer-create (guix-get-repl-buffer-name internal)))) - (condition-case err - (guix-start-repl repl - (and internal - (geiser-repl--read-address - "localhost" guix-default-port))) - (text-read-only - (error (concat "Couldn't start Guix REPL. Perhaps the port %s is busy.\n" - "See buffer '%s' for details") - guix-default-port (buffer-name repl)))) + (guix-start-repl repl (and internal guix-repl-current-socket)) (set repl-var repl) (and end-msg (message end-msg)) (unless internal -- cgit v1.2.3 From 8ae95578a7a88554afe9b3bfa03881ee3206485b Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 16 Dec 2015 10:34:41 -0500 Subject: gnu: linux-libre: Update to 4.3.3. * gnu/packages/linux.scm (linux-libre): Update to 4.3.3. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 4319ed93af..e17e493099 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -212,7 +212,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." #f))) (define-public linux-libre - (let* ((version "4.3.2") + (let* ((version "4.3.3") (build-phase '(lambda* (#:key system inputs #:allow-other-keys #:rest args) ;; Apply the neat patch. @@ -286,7 +286,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." (uri (linux-libre-urls version)) (sha256 (base32 - "0d87jbmplv36kxq40k44zh3sj82qp79lf8n4by7jb2wvyk06rvfg")))) + "1z43kzs1pzwq5mkyh7zk8nq38sxlswp65824v54dzwngyc252a18")))) (build-system gnu-build-system) (supported-systems '("x86_64-linux" "i686-linux")) (native-inputs `(("perl" ,perl) -- cgit v1.2.3 From 44157e9f3c238c8ffcc18c64a8bc95dbd20b70b4 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 15 Dec 2015 02:00:08 -0600 Subject: gnu: Add cpulimit. * gnu/packages/admin.scm (cpulimit): New variable. --- gnu/packages/admin.scm | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 5b9f5d1650..ee275f7251 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2013 Cyril Roelandt ;;; Copyright © 2014, 2015 Mark H Weaver -;;; Copyright © 2014 Eric Bavier +;;; Copyright © 2014, 2015 Eric Bavier ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer ;;; Copyright © 2015 Alex Sassmannshausen ;;; Copyright © 2015 Eric Dvorsak @@ -1233,3 +1233,44 @@ handles configuration-management, application deployment, cloud provisioning, ad-hoc task-execution, and multinode orchestration - including trivializing things like zero downtime rolling updates with load balancers.") (license license:gpl3+))) + +(define-public cpulimit + (package + (name "cpulimit") + (version "0.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/opsengine/cpulimit/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1nn2w849xd5bw4y5sqnll29nxdwl5h0cv4smc7dwmpb9qnd2ycb4")))) + (build-system gnu-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (delete 'configure) + (replace + 'build + (lambda _ + (zero? (system* "make" "CC=gcc" "-Csrc")))) + (replace + 'check + (lambda _ + (zero? (system* "make" "CC=gcc" "-Ctests")))) + (replace + 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (install-file "src/cpulimit" bin))))))) + (home-page "https://github.com/opsengine/cpulimit") + (synopsis "Limit CPU usage") + (description + "Cpulimit limits the CPU usage of a process. It does not change the nice +value or other scheduling priority settings, but the real CPU usage, and is +able to adapt itself dynamically to the overall system load. Children +processes and threads of the specified process may optionally share the same +limits.") + (license license:gpl2+))) -- cgit v1.2.3 From b809cc9addf27a2233e1e8888637122397b48eaa Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 17 Dec 2015 14:20:46 +0100 Subject: gnu: ruby-unf-ext: Build extension. * gnu/packages/ruby.scm (ruby-unf-ext)[arguments]: Add phase "build-ext" to build "unf_ext.so". --- gnu/packages/ruby.scm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 1bd3fe2c9a..a3eafb1f58 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -2551,6 +2551,11 @@ including comments and whitespace.") (base32 "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b")))) (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'build 'build-ext + (lambda _ (zero? (system* "rake" "compile:unf_ext"))))))) (native-inputs `(("bundler" ,bundler) ("ruby-rake-compiler" ,ruby-rake-compiler) -- cgit v1.2.3 From cbbe1a1c2c7ca86e348656ae3b7197d53c2527f2 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 17 Dec 2015 11:24:44 -0500 Subject: gnu: subversion: Update to 1.8.15 [fixes CVE-2015-5343]. * gnu/packages/version-control.scm (subversion): Update to 1.8.15. --- gnu/packages/version-control.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 6861e35bec..171faab784 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -570,14 +570,14 @@ property manipulation.") (define-public subversion (package (name "subversion") - (version "1.8.14") + (version "1.8.15") (source (origin (method url-fetch) (uri (string-append "http://archive.apache.org/dist/subversion/" "subversion-" version ".tar.bz2")) (sha256 (base32 - "07ws4bspdgi4r5hbxvk86a15c669iqz6wkfrdph78hddzk6q6f3z")))) + "0b68rjy1sjd66nqcswrm1bhda3vk2ngkgs6drcanmzbcd3vs366g")))) (build-system gnu-build-system) (arguments '(#:phases (alist-cons-after -- cgit v1.2.3 From 3faf214a0b58c10e9838fcbf59f139172fe4a871 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 17 Dec 2015 12:07:13 -0500 Subject: gnu: icecat: Add fixes for several security flaws. * gnu/packages/patches/icecat-CVE-2015-7201-pt1.patch, gnu/packages/patches/icecat-CVE-2015-7201-pt2.patch, gnu/packages/patches/icecat-CVE-2015-7201-pt3.patch, gnu/packages/patches/icecat-CVE-2015-7205.patch, gnu/packages/patches/icecat-CVE-2015-7210.patch, gnu/packages/patches/icecat-CVE-2015-7212.patch, gnu/packages/patches/icecat-CVE-2015-7213-pt1.patch, gnu/packages/patches/icecat-CVE-2015-7213-pt2.patch, gnu/packages/patches/icecat-CVE-2015-7214.patch, gnu/packages/patches/icecat-CVE-2015-7222-pt1.patch, gnu/packages/patches/icecat-CVE-2015-7222-pt2.patch, gnu/packages/patches/icecat-CVE-2015-7222-pt3.patch: New files. * gnu-system.am (dist_patch_DATA): Add them. * gnu/packages/gnuzilla.scm (icecat)[source]: Add patches. --- gnu-system.am | 12 + gnu/packages/gnuzilla.scm | 14 +- .../patches/icecat-CVE-2015-7201-pt1.patch | 123 +++++++ .../patches/icecat-CVE-2015-7201-pt2.patch | 29 ++ .../patches/icecat-CVE-2015-7201-pt3.patch | 35 ++ gnu/packages/patches/icecat-CVE-2015-7205.patch | 84 +++++ gnu/packages/patches/icecat-CVE-2015-7210.patch | 47 +++ gnu/packages/patches/icecat-CVE-2015-7212.patch | 364 +++++++++++++++++++++ .../patches/icecat-CVE-2015-7213-pt1.patch | 32 ++ .../patches/icecat-CVE-2015-7213-pt2.patch | 27 ++ gnu/packages/patches/icecat-CVE-2015-7214.patch | 47 +++ .../patches/icecat-CVE-2015-7222-pt1.patch | 112 +++++++ .../patches/icecat-CVE-2015-7222-pt2.patch | 34 ++ .../patches/icecat-CVE-2015-7222-pt3.patch | 37 +++ 14 files changed, 996 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/icecat-CVE-2015-7201-pt1.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-7201-pt2.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-7201-pt3.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-7205.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-7210.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-7212.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-7213-pt1.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-7213-pt2.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-7214.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-7222-pt1.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-7222-pt2.patch create mode 100644 gnu/packages/patches/icecat-CVE-2015-7222-pt3.patch diff --git a/gnu-system.am b/gnu-system.am index 0039246e4d..09525da28f 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -510,6 +510,18 @@ dist_patch_DATA = \ gnu/packages/patches/hop-linker-flags.patch \ gnu/packages/patches/hydra-automake-1.15.patch \ gnu/packages/patches/hydra-disable-darcs-test.patch \ + gnu/packages/patches/icecat-CVE-2015-7201-pt1.patch \ + gnu/packages/patches/icecat-CVE-2015-7201-pt2.patch \ + gnu/packages/patches/icecat-CVE-2015-7201-pt3.patch \ + gnu/packages/patches/icecat-CVE-2015-7205.patch \ + gnu/packages/patches/icecat-CVE-2015-7210.patch \ + gnu/packages/patches/icecat-CVE-2015-7212.patch \ + gnu/packages/patches/icecat-CVE-2015-7213-pt1.patch \ + gnu/packages/patches/icecat-CVE-2015-7213-pt2.patch \ + gnu/packages/patches/icecat-CVE-2015-7214.patch \ + gnu/packages/patches/icecat-CVE-2015-7222-pt1.patch \ + gnu/packages/patches/icecat-CVE-2015-7222-pt2.patch \ + gnu/packages/patches/icecat-CVE-2015-7222-pt3.patch \ gnu/packages/patches/icecat-avoid-bundled-includes.patch \ gnu/packages/patches/icecat-freetype-2.6.patch \ gnu/packages/patches/icu4c-CVE-2014-6585.patch \ diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 6d134a89c7..8125a262aa 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -276,7 +276,19 @@ standards.") (sha256 (base32 "0rcaa19rfgclwd2qvcz8798m57jjzra6kaxg5dniysajvx7qndfp")) - (patches (map search-patch '("icecat-avoid-bundled-includes.patch" + (patches (map search-patch '("icecat-CVE-2015-7210.patch" + "icecat-CVE-2015-7205.patch" + "icecat-CVE-2015-7201-pt1.patch" + "icecat-CVE-2015-7201-pt2.patch" + "icecat-CVE-2015-7212.patch" + "icecat-CVE-2015-7213-pt1.patch" + "icecat-CVE-2015-7213-pt2.patch" + "icecat-CVE-2015-7222-pt1.patch" + "icecat-CVE-2015-7222-pt2.patch" + "icecat-CVE-2015-7222-pt3.patch" + "icecat-CVE-2015-7214.patch" + "icecat-CVE-2015-7201-pt3.patch" + "icecat-avoid-bundled-includes.patch" "icecat-freetype-2.6.patch"))) (modules '((guix build utils))) (snippet diff --git a/gnu/packages/patches/icecat-CVE-2015-7201-pt1.patch b/gnu/packages/patches/icecat-CVE-2015-7201-pt1.patch new file mode 100644 index 0000000000..0fcfe9b409 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-7201-pt1.patch @@ -0,0 +1,123 @@ +From e2bbd632e220be7626efd34acb9a517430d36004 Mon Sep 17 00:00:00 2001 +From: Andrew Comminos +Date: Fri, 23 Oct 2015 21:35:16 -0700 +Subject: [PATCH] Bug 1203135 - Terminate linking if maximum vertex attribute + count is exceeded on Mesa. r=jgilbert, a=ritu + +--HG-- +extra : source : 8021382da9722db0ad97ebd93698b69a74f0d9b0 +extra : intermediate-source : 90eff805d2810e9d9ea88f6869335b0500b1a536 +--- + dom/canvas/WebGLProgram.cpp | 28 ++++++++++++++++++---------- + dom/canvas/WebGLShader.cpp | 10 ++++++++++ + dom/canvas/WebGLShader.h | 1 + + dom/canvas/WebGLShaderValidator.cpp | 6 ++++++ + dom/canvas/WebGLShaderValidator.h | 1 + + 5 files changed, 36 insertions(+), 10 deletions(-) + +diff --git a/dom/canvas/WebGLProgram.cpp b/dom/canvas/WebGLProgram.cpp +index 78f7413..0e056e8 100644 +--- a/dom/canvas/WebGLProgram.cpp ++++ b/dom/canvas/WebGLProgram.cpp +@@ -569,18 +569,26 @@ WebGLProgram::LinkProgram() + gl::GLContext* gl = mContext->gl; + gl->MakeCurrent(); + +- // Bug 777028: Mesa can't handle more than 16 samplers per program, +- // counting each array entry. +- size_t numSamplerUniforms_upperBound = mVertShader->CalcNumSamplerUniforms() + +- mFragShader->CalcNumSamplerUniforms(); + if (gl->WorkAroundDriverBugs() && +- mContext->mIsMesa && +- numSamplerUniforms_upperBound > 16) ++ mContext->mIsMesa) + { +- mLinkLog.AssignLiteral("Programs with more than 16 samplers are disallowed on" +- " Mesa drivers to avoid crashing."); +- mContext->GenerateWarning("linkProgram: %s", mLinkLog.BeginReading()); +- return false; ++ // Bug 777028: Mesa can't handle more than 16 samplers per program, ++ // counting each array entry. ++ size_t numSamplerUniforms_upperBound = mVertShader->CalcNumSamplerUniforms() + ++ mFragShader->CalcNumSamplerUniforms(); ++ if (numSamplerUniforms_upperBound > 16) { ++ mLinkLog.AssignLiteral("Programs with more than 16 samplers are disallowed on" ++ " Mesa drivers to avoid crashing."); ++ mContext->GenerateWarning("linkProgram: %s", mLinkLog.BeginReading()); ++ return false; ++ } ++ ++ // Bug 1203135: Mesa crashes internally if we exceed the reported maximum attribute count. ++ if (mVertShader->NumAttributes() > mContext->MaxVertexAttribs()) { ++ mLinkLog.AssignLiteral("Number of attributes exceeds Mesa's reported max attribute count."); ++ mContext->GenerateWarning("linkProgram: %s", mLinkLog.BeginReading()); ++ return false; ++ } + } + + // Bind the attrib locations. +diff --git a/dom/canvas/WebGLShader.cpp b/dom/canvas/WebGLShader.cpp +index 85a3809..bab4157 100644 +--- a/dom/canvas/WebGLShader.cpp ++++ b/dom/canvas/WebGLShader.cpp +@@ -299,6 +299,16 @@ WebGLShader::CalcNumSamplerUniforms() const + return 0; + } + ++size_t ++WebGLShader::NumAttributes() const ++{ ++ if (mValidator) ++ return mValidator->NumAttributes(); ++ ++ // TODO ++ return 0; ++} ++ + void + WebGLShader::BindAttribLocation(GLuint prog, const nsCString& userName, + GLuint index) const +diff --git a/dom/canvas/WebGLShader.h b/dom/canvas/WebGLShader.h +index 698e30c..2c80b16a 100644 +--- a/dom/canvas/WebGLShader.h ++++ b/dom/canvas/WebGLShader.h +@@ -45,6 +45,7 @@ public: + // Util funcs + bool CanLinkTo(const WebGLShader* prev, nsCString* const out_log) const; + size_t CalcNumSamplerUniforms() const; ++ size_t NumAttributes() const; + void BindAttribLocation(GLuint prog, const nsCString& userName, GLuint index) const; + bool FindAttribUserNameByMappedName(const nsACString& mappedName, + nsDependentCString* const out_userName) const; +diff --git a/dom/canvas/WebGLShaderValidator.cpp b/dom/canvas/WebGLShaderValidator.cpp +index 80005e2..8bedf88 100644 +--- a/dom/canvas/WebGLShaderValidator.cpp ++++ b/dom/canvas/WebGLShaderValidator.cpp +@@ -274,6 +274,12 @@ ShaderValidator::CalcNumSamplerUniforms() const + return accum; + } + ++size_t ++ShaderValidator::NumAttributes() const ++{ ++ return ShGetAttributes(mHandle)->size(); ++} ++ + // Attribs cannot be structs or arrays, and neither can vertex inputs in ES3. + // Therefore, attrib names are always simple. + bool +diff --git a/dom/canvas/WebGLShaderValidator.h b/dom/canvas/WebGLShaderValidator.h +index 35db2f1..1f794bf0 100644 +--- a/dom/canvas/WebGLShaderValidator.h ++++ b/dom/canvas/WebGLShaderValidator.h +@@ -41,6 +41,7 @@ public: + void GetOutput(nsACString* out) const; + bool CanLinkTo(const ShaderValidator* prev, nsCString* const out_log) const; + size_t CalcNumSamplerUniforms() const; ++ size_t NumAttributes() const; + + bool FindAttribUserNameByMappedName(const std::string& mappedName, + const std::string** const out_userName) const; +-- +2.6.3 + diff --git a/gnu/packages/patches/icecat-CVE-2015-7201-pt2.patch b/gnu/packages/patches/icecat-CVE-2015-7201-pt2.patch new file mode 100644 index 0000000000..3764371a11 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-7201-pt2.patch @@ -0,0 +1,29 @@ +From f02e3252391f5fa79916e4c8f30b3d8340d06cc7 Mon Sep 17 00:00:00 2001 +From: "Carsten \"Tomcat\" Book" +Date: Tue, 8 Dec 2015 12:38:15 +0100 +Subject: [PATCH] Bug 1225250 - fix stride on SourceSurfaceSkia when + initialized from GPU texture. r=jmuizelaar, a=lizzard + +--- + gfx/2d/SourceSurfaceSkia.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/gfx/2d/SourceSurfaceSkia.cpp b/gfx/2d/SourceSurfaceSkia.cpp +index 4b95bc2..d7e0714 100644 +--- a/gfx/2d/SourceSurfaceSkia.cpp ++++ b/gfx/2d/SourceSurfaceSkia.cpp +@@ -110,8 +110,10 @@ SourceSurfaceSkia::InitFromTexture(DrawTargetSkia* aOwner, + GrTexture *skiaTexture = aOwner->mGrContext->wrapBackendTexture(skiaTexGlue); + SkImageInfo imgInfo = SkImageInfo::Make(aSize.width, aSize.height, GfxFormatToSkiaColorType(aFormat), kOpaque_SkAlphaType); + SkGrPixelRef *texRef = new SkGrPixelRef(imgInfo, skiaTexture, false); +- mBitmap.setInfo(imgInfo, aSize.width*aSize.height*4); ++ mBitmap.setInfo(imgInfo); + mBitmap.setPixelRef(texRef); ++ mFormat = aFormat; ++ mStride = mBitmap.rowBytes(); + + mDrawTarget = aOwner; + return true; +-- +2.6.3 + diff --git a/gnu/packages/patches/icecat-CVE-2015-7201-pt3.patch b/gnu/packages/patches/icecat-CVE-2015-7201-pt3.patch new file mode 100644 index 0000000000..022ab5cc16 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-7201-pt3.patch @@ -0,0 +1,35 @@ +From 567a97b6347ac8c2b93ec788c437b7e9bb23ef75 Mon Sep 17 00:00:00 2001 +From: Edwin Flores +Date: Wed, 2 Dec 2015 16:15:29 +0100 +Subject: [PATCH] Bug 1224100 - Initialize padding to 0 in Downscaler. r=seth, + a=sledru + +--- + image/src/Downscaler.cpp | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/image/src/Downscaler.cpp b/image/src/Downscaler.cpp +index 24ecfda..2a7acfd 100644 +--- a/image/src/Downscaler.cpp ++++ b/image/src/Downscaler.cpp +@@ -86,11 +86,16 @@ Downscaler::BeginFrame(const nsIntSize& aOriginalSize, + mTargetSize.height, mYFilter.get()); + + // Allocate the buffer, which contains scanlines of the original image. +- mRowBuffer = MakeUnique(mOriginalSize.width * sizeof(uint32_t)); ++ size_t bufferLen = mOriginalSize.width * sizeof(uint32_t); ++ mRowBuffer = MakeUnique(bufferLen); + if (MOZ_UNLIKELY(!mRowBuffer)) { + return NS_ERROR_OUT_OF_MEMORY; + } + ++ // Zero buffer to keep valgrind happy. ++ memset(mRowBuffer.get(), 0, bufferLen); ++ ++ + // Allocate the window, which contains horizontally downscaled scanlines. (We + // can store scanlines which are already downscale because our downscaling + // filter is separable.) +-- +2.6.3 + diff --git a/gnu/packages/patches/icecat-CVE-2015-7205.patch b/gnu/packages/patches/icecat-CVE-2015-7205.patch new file mode 100644 index 0000000000..620fa0d6bd --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-7205.patch @@ -0,0 +1,84 @@ +From 20df7b0b3f3e7dd201c9811bbb1e6515da8da359 Mon Sep 17 00:00:00 2001 +From: Randell Jesup +Date: Thu, 5 Nov 2015 10:17:29 -0500 +Subject: [PATCH] Bug 1220493 - validate RTP packets against underflows. + r=pkerr a=sylvestre + +--HG-- +extra : source : 575d3aa376b1c8e7507d94833f7b74bf963127cb +extra : intermediate-source : 2c1b396ef5c3e2424fb9af56d86ebf6f6551a997 +--- + .../webrtc/modules/rtp_rtcp/source/rtp_utility.cc | 26 ++++++++++++---------- + 1 file changed, 14 insertions(+), 12 deletions(-) + +diff --git a/media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.cc b/media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.cc +index 9334b23..80cf55a 100644 +--- a/media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.cc ++++ b/media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.cc +@@ -338,12 +338,6 @@ bool RtpHeaderParser::Parse(RTPHeader& header, + return false; + } + +- const uint8_t CSRCocts = CC * 4; +- +- if ((ptr + CSRCocts) > _ptrRTPDataEnd) { +- return false; +- } +- + header.markerBit = M; + header.payloadType = PT; + header.sequenceNumber = sequenceNumber; +@@ -352,6 +346,14 @@ bool RtpHeaderParser::Parse(RTPHeader& header, + header.numCSRCs = CC; + header.paddingLength = P ? *(_ptrRTPDataEnd - 1) : 0; + ++ // 12 == sizeof(RFC rtp header) == kRtpMinParseLength, each CSRC=4 bytes ++ header.headerLength = 12 + (CC * 4); ++ // not a full validation, just safety against underflow. Padding must ++ // start after the header. We can have 0 payload bytes left, note. ++ if (header.paddingLength + header.headerLength > length) { ++ return false; ++ } ++ + for (unsigned int i = 0; i < CC; ++i) { + uint32_t CSRC = *ptr++ << 24; + CSRC += *ptr++ << 16; +@@ -359,8 +361,7 @@ bool RtpHeaderParser::Parse(RTPHeader& header, + CSRC += *ptr++; + header.arrOfCSRCs[i] = CSRC; + } +- +- header.headerLength = 12 + CSRCocts; ++ assert((ptr - _ptrRTPDataBegin) == header.headerLength); + + // If in effect, MAY be omitted for those packets for which the offset + // is zero. +@@ -385,8 +386,9 @@ bool RtpHeaderParser::Parse(RTPHeader& header, + | header extension | + | .... | + */ +- const ptrdiff_t remain = _ptrRTPDataEnd - ptr; +- if (remain < 4) { ++ // earlier test ensures we have at least paddingLength bytes left ++ const ptrdiff_t remain = (_ptrRTPDataEnd - ptr) - header.paddingLength; ++ if (remain < 4) { // minimum header extension length = 32 bits + return false; + } + +@@ -395,11 +397,11 @@ bool RtpHeaderParser::Parse(RTPHeader& header, + uint16_t definedByProfile = *ptr++ << 8; + definedByProfile += *ptr++; + +- uint16_t XLen = *ptr++ << 8; ++ size_t XLen = *ptr++ << 8; + XLen += *ptr++; // in 32 bit words + XLen *= 4; // in octs + +- if (remain < (4 + XLen)) { ++ if (remain < (4 + XLen)) { // we already accounted for padding + return false; + } + if (definedByProfile == kRtpOneByteHeaderExtensionId) { +-- +2.6.3 + diff --git a/gnu/packages/patches/icecat-CVE-2015-7210.patch b/gnu/packages/patches/icecat-CVE-2015-7210.patch new file mode 100644 index 0000000000..eab57021db --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-7210.patch @@ -0,0 +1,47 @@ +From 4e0cd9ba4924869f91be0e7c8cf666182bb75f90 Mon Sep 17 00:00:00 2001 +From: "Byron Campen [:bwc]" +Date: Wed, 28 Oct 2015 12:48:17 -0500 +Subject: [PATCH] Bug 1218326 - Prevent datachannel operations on closed + PeerConnections. r=jesup a=sylvestre + +--HG-- +extra : source : a7637b62d9b5ab73f58e5aa3c663d7d35b624826 +extra : intermediate-source : d8f0412f38f75040064157d8d2b0140df21600e6 +--- + media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp b/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp +index c3d8d26..fe86ff7 100644 +--- a/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp ++++ b/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp +@@ -1004,7 +1004,7 @@ PeerConnectionImpl::GetIdentity() const + NS_IMETHODIMP + PeerConnectionImpl::EnsureDataConnection(uint16_t aNumstreams) + { +- PC_AUTO_ENTER_API_CALL_NO_CHECK(); ++ PC_AUTO_ENTER_API_CALL(false); + + #ifdef MOZILLA_INTERNAL_API + if (mDataConnection) { +@@ -1102,7 +1102,7 @@ PeerConnectionImpl::GetDatachannelParameters( + nsresult + PeerConnectionImpl::InitializeDataChannel() + { +- PC_AUTO_ENTER_API_CALL_NO_CHECK(); ++ PC_AUTO_ENTER_API_CALL(false); + CSFLogDebug(logTag, "%s", __FUNCTION__); + + const JsepApplicationCodecDescription* codec; +@@ -1184,7 +1184,7 @@ PeerConnectionImpl::CreateDataChannel(const nsAString& aLabel, + uint16_t aStream, + nsDOMDataChannel** aRetval) + { +- PC_AUTO_ENTER_API_CALL_NO_CHECK(); ++ PC_AUTO_ENTER_API_CALL(false); + MOZ_ASSERT(aRetval); + + #ifdef MOZILLA_INTERNAL_API +-- +2.6.3 + diff --git a/gnu/packages/patches/icecat-CVE-2015-7212.patch b/gnu/packages/patches/icecat-CVE-2015-7212.patch new file mode 100644 index 0000000000..7bda486ff7 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-7212.patch @@ -0,0 +1,364 @@ +From 595e3a152ff2912a950defd0ef4b5f659135b03a Mon Sep 17 00:00:00 2001 +From: Nicolas Silva +Date: Wed, 18 Nov 2015 16:59:11 +0100 +Subject: [PATCH] Bug 1222809 - Don't try to allocate unreasonably large + textures. r=Bas, a=sylvestre + +--- + gfx/2d/2D.h | 25 ++++++++++-- + gfx/2d/Factory.cpp | 67 ++++++++++++++++++++++++++++----- + gfx/layers/ImageDataSerializer.cpp | 21 ++++++----- + gfx/layers/YCbCrImageDataSerializer.cpp | 7 ++++ + gfx/layers/client/TextureClient.cpp | 12 ++++++ + gfx/thebes/gfxPlatform.cpp | 15 ++++++-- + gfx/thebes/gfxPrefs.h | 3 ++ + 7 files changed, 124 insertions(+), 26 deletions(-) + +diff --git a/gfx/2d/2D.h b/gfx/2d/2D.h +index cf35bb2..b1e0e3e 100644 +--- a/gfx/2d/2D.h ++++ b/gfx/2d/2D.h +@@ -1082,22 +1082,41 @@ struct TileSet + size_t mTileCount; + }; + ++struct Config { ++ LogForwarder* mLogForwarder; ++ int32_t mMaxTextureSize; ++ int32_t mMaxAllocSize; ++ ++ Config() ++ : mLogForwarder(nullptr) ++ , mMaxTextureSize(8192) ++ , mMaxAllocSize(52000000) ++ {} ++}; ++ + class GFX2D_API Factory + { + public: ++ static void Init(const Config& aConfig); ++ static void ShutDown(); ++ + static bool HasSSE2(); + + /** Make sure that the given dimensions don't overflow a 32-bit signed int + * using 4 bytes per pixel; optionally, make sure that either dimension + * doesn't exceed the given limit. + */ +- static bool CheckSurfaceSize(const IntSize &sz, int32_t limit = 0); ++ static bool CheckSurfaceSize(const IntSize &sz, ++ int32_t limit = 0, ++ int32_t allocLimit = 0); + + /** Make sure the given dimension satisfies the CheckSurfaceSize and is + * within 8k limit. The 8k value is chosen a bit randomly. + */ + static bool ReasonableSurfaceSize(const IntSize &aSize); + ++ static bool AllowedSurfaceSize(const IntSize &aSize); ++ + static TemporaryRef CreateDrawTargetForCairoSurface(cairo_surface_t* aSurface, const IntSize& aSize, SurfaceFormat* aFormat = nullptr); + + static TemporaryRef +@@ -1171,10 +1190,10 @@ public: + + static uint32_t GetMaxSurfaceSize(BackendType aType); + +- static LogForwarder* GetLogForwarder() { return mLogForwarder; } ++ static LogForwarder* GetLogForwarder() { return sConfig ? sConfig->mLogForwarder : nullptr; } + + private: +- static LogForwarder* mLogForwarder; ++ static Config* sConfig; + public: + + #ifdef USE_SKIA_GPU +diff --git a/gfx/2d/Factory.cpp b/gfx/2d/Factory.cpp +index 948d3c3..6750c28 100644 +--- a/gfx/2d/Factory.cpp ++++ b/gfx/2d/Factory.cpp +@@ -188,6 +188,35 @@ ID2D1Device *Factory::mD2D1Device; + + DrawEventRecorder *Factory::mRecorder; + ++mozilla::gfx::Config* Factory::sConfig = nullptr; ++ ++void ++Factory::Init(const Config& aConfig) ++{ ++ MOZ_ASSERT(!sConfig); ++ sConfig = new Config(aConfig); ++ ++ // Make sure we don't completely break rendering because of a typo in the ++ // pref or whatnot. ++ const int32_t kMinAllocPref = 10000000; ++ const int32_t kMinSizePref = 2048; ++ if (sConfig->mMaxAllocSize < kMinAllocPref) { ++ sConfig->mMaxAllocSize = kMinAllocPref; ++ } ++ if (sConfig->mMaxTextureSize < kMinSizePref) { ++ sConfig->mMaxTextureSize = kMinSizePref; ++ } ++} ++ ++void ++Factory::ShutDown() ++{ ++ if (sConfig) { ++ delete sConfig; ++ sConfig = nullptr; ++ } ++} ++ + bool + Factory::HasSSE2() + { +@@ -222,11 +251,25 @@ inline int LoggerOptionsBasedOnSize(const IntSize& aSize) + bool + Factory::ReasonableSurfaceSize(const IntSize &aSize) + { +- return Factory::CheckSurfaceSize(aSize,8192); ++ return Factory::CheckSurfaceSize(aSize, 8192); ++} ++ ++bool ++Factory::AllowedSurfaceSize(const IntSize &aSize) ++{ ++ if (sConfig) { ++ return Factory::CheckSurfaceSize(aSize, ++ sConfig->mMaxTextureSize, ++ sConfig->mMaxAllocSize); ++ } ++ ++ return CheckSurfaceSize(aSize); + } + + bool +-Factory::CheckSurfaceSize(const IntSize &sz, int32_t limit) ++Factory::CheckSurfaceSize(const IntSize &sz, ++ int32_t extentLimit, ++ int32_t allocLimit) + { + if (sz.width <= 0 || sz.height <= 0) { + gfxDebug() << "Surface width or height <= 0!"; +@@ -234,8 +277,8 @@ Factory::CheckSurfaceSize(const IntSize &sz, int32_t limit) + } + + // reject images with sides bigger than limit +- if (limit && (sz.width > limit || sz.height > limit)) { +- gfxDebug() << "Surface size too large (exceeds caller's limit)!"; ++ if (extentLimit && (sz.width > extentLimit || sz.height > extentLimit)) { ++ gfxDebug() << "Surface size too large (exceeds extent limit)!"; + return false; + } + +@@ -267,13 +310,18 @@ Factory::CheckSurfaceSize(const IntSize &sz, int32_t limit) + return false; + } + ++ if (allocLimit && allocLimit < numBytes.value()) { ++ gfxDebug() << "Surface size too large (exceeds allocation limit)!"; ++ return false; ++ } ++ + return true; + } + + TemporaryRef + Factory::CreateDrawTarget(BackendType aBackend, const IntSize &aSize, SurfaceFormat aFormat) + { +- if (!CheckSurfaceSize(aSize)) { ++ if (!AllowedSurfaceSize(aSize)) { + gfxCriticalError(LoggerOptionsBasedOnSize(aSize)) << "Failed to allocate a surface due to invalid size " << aSize; + return nullptr; + } +@@ -364,7 +412,7 @@ Factory::CreateDrawTargetForData(BackendType aBackend, + SurfaceFormat aFormat) + { + MOZ_ASSERT(aData); +- if (!CheckSurfaceSize(aSize)) { ++ if (!AllowedSurfaceSize(aSize)) { + gfxCriticalError(LoggerOptionsBasedOnSize(aSize)) << "Failed to allocate a surface due to invalid size " << aSize; + return nullptr; + } +@@ -835,7 +883,7 @@ Factory::CreateDataSourceSurface(const IntSize &aSize, + SurfaceFormat aFormat, + bool aZero) + { +- if (!CheckSurfaceSize(aSize)) { ++ if (!AllowedSurfaceSize(aSize)) { + gfxCriticalError(LoggerOptionsBasedOnSize(aSize)) << "Failed to allocate a surface due to invalid size " << aSize; + return nullptr; + } +@@ -881,14 +929,13 @@ Factory::SetGlobalEventRecorder(DrawEventRecorder *aRecorder) + mRecorder = aRecorder; + } + +-LogForwarder* Factory::mLogForwarder = nullptr; +- + // static + void + Factory::SetLogForwarder(LogForwarder* aLogFwd) { +- mLogForwarder = aLogFwd; ++ sConfig->mLogForwarder = aLogFwd; + } + ++ + // static + void + CriticalLogger::OutputMessage(const std::string &aString, +diff --git a/gfx/layers/ImageDataSerializer.cpp b/gfx/layers/ImageDataSerializer.cpp +index 5dd6aca..331dd04 100644 +--- a/gfx/layers/ImageDataSerializer.cpp ++++ b/gfx/layers/ImageDataSerializer.cpp +@@ -84,21 +84,23 @@ ImageDataSerializerBase::ComputeMinBufferSize(IntSize aSize, + SurfaceFormat aFormat) + { + MOZ_ASSERT(aSize.height >= 0 && aSize.width >= 0); +- if (aSize.height <= 0 || aSize.width <= 0) { +- gfxDebug() << "Non-positive image buffer size request " << aSize.width << "x" << aSize.height; ++ ++ // This takes care of checking whether there could be overflow ++ // with enough margin for the metadata. ++ if (!gfx::Factory::AllowedSurfaceSize(aSize)) { + return 0; + } + +- CheckedInt bufsize = ComputeStride(aFormat, aSize.width); +- bufsize *= aSize.height; ++ int32_t bufsize = GetAlignedStride<16>(ComputeStride(aFormat, aSize.width) ++ * aSize.height) ++ + SurfaceBufferInfo::GetOffset(); + +- if (!bufsize.isValid() || bufsize.value() <= 0) { +- gfxDebug() << "Buffer size overflow " << aSize.width << "x" << aSize.height; ++ if (bufsize < 0) { ++ // This should not be possible thanks to Factory::AllowedSurfaceSize + return 0; + } + +- return SurfaceBufferInfo::GetOffset() +- + GetAlignedStride<16>(bufsize.value()); ++ return bufsize; + } + + void +@@ -114,7 +116,8 @@ ImageDataSerializerBase::Validate() + } + size_t requiredSize = + ComputeMinBufferSize(IntSize(info->width, info->height), info->format); +- mIsValid = requiredSize <= mDataSize; ++ ++ mIsValid = !!requiredSize && requiredSize <= mDataSize; + } + + uint8_t* +diff --git a/gfx/layers/YCbCrImageDataSerializer.cpp b/gfx/layers/YCbCrImageDataSerializer.cpp +index c8e148d..05f5ab2 100644 +--- a/gfx/layers/YCbCrImageDataSerializer.cpp ++++ b/gfx/layers/YCbCrImageDataSerializer.cpp +@@ -150,6 +150,13 @@ YCbCrImageDataDeserializerBase::ComputeMinBufferSize(const gfx::IntSize& aYSize, + gfxDebug() << "Non-positive YCbCr buffer size request " << aYSize.height << "x" << aYSize.width << ", " << aCbCrSize.height << "x" << aCbCrSize.width; + return 0; + } ++ ++ if (!gfx::Factory::AllowedSurfaceSize(aYSize) || ++ aCbCrSize.width > aYSize.width || ++ aCbCrSize.height > aYSize.height) { ++ return 0; ++ } ++ + return ComputeOffset(aYSize.height, aYStride) + + 2 * ComputeOffset(aCbCrSize.height, aCbCrStride) + + MOZ_ALIGN_WORD(sizeof(YCbCrBufferInfo)); +diff --git a/gfx/layers/client/TextureClient.cpp b/gfx/layers/client/TextureClient.cpp +index 9b45ca0..6ae7cbf 100644 +--- a/gfx/layers/client/TextureClient.cpp ++++ b/gfx/layers/client/TextureClient.cpp +@@ -315,6 +315,10 @@ TextureClient::CreateForDrawing(ISurfaceAllocator* aAllocator, + aMoz2DBackend = gfxPlatform::GetPlatform()->GetContentBackend(); + } + ++ if (!gfx::Factory::AllowedSurfaceSize(aSize)) { ++ return nullptr; ++ } ++ + RefPtr texture; + + #if defined(MOZ_WIDGET_GONK) || defined(XP_WIN) +@@ -415,6 +419,10 @@ TextureClient::CreateForRawBufferAccess(ISurfaceAllocator* aAllocator, + TextureFlags aTextureFlags, + TextureAllocationFlags aAllocFlags) + { ++ if (!gfx::Factory::AllowedSurfaceSize(aSize)) { ++ return nullptr; ++ } ++ + RefPtr texture = + CreateBufferTextureClient(aAllocator, aFormat, + aTextureFlags, aMoz2DBackend); +@@ -434,6 +442,10 @@ TextureClient::CreateForYCbCr(ISurfaceAllocator* aAllocator, + StereoMode aStereoMode, + TextureFlags aTextureFlags) + { ++ if (!gfx::Factory::AllowedSurfaceSize(aYSize)) { ++ return nullptr; ++ } ++ + RefPtr texture; + if (aAllocator->IsSameProcess()) { + texture = new MemoryTextureClient(aAllocator, gfx::SurfaceFormat::YUV, +diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp +index 41e4b0c..209a0a8 100644 +--- a/gfx/thebes/gfxPlatform.cpp ++++ b/gfx/thebes/gfxPlatform.cpp +@@ -458,13 +458,18 @@ gfxPlatform::Init() + } + gEverInitialized = true; + +- CrashStatsLogForwarder* logForwarder = new CrashStatsLogForwarder("GraphicsCriticalError"); +- mozilla::gfx::Factory::SetLogForwarder(logForwarder); +- + // Initialize the preferences by creating the singleton. + gfxPrefs::GetSingleton(); + +- logForwarder->SetCircularBufferSize(gfxPrefs::GfxLoggingCrashLength()); ++ auto fwd = new CrashStatsLogForwarder("GraphicsCriticalError"); ++ fwd->SetCircularBufferSize(gfxPrefs::GfxLoggingCrashLength()); ++ ++ mozilla::gfx::Config cfg; ++ cfg.mLogForwarder = fwd; ++ cfg.mMaxTextureSize = gfxPrefs::MaxTextureSize(); ++ cfg.mMaxAllocSize = gfxPrefs::MaxAllocSize(); ++ ++ gfx::Factory::Init(cfg); + + gGfxPlatformPrefsLock = new Mutex("gfxPlatform::gGfxPlatformPrefsLock"); + +@@ -641,6 +646,8 @@ gfxPlatform::Shutdown() + delete mozilla::gfx::Factory::GetLogForwarder(); + mozilla::gfx::Factory::SetLogForwarder(nullptr); + ++ gfx::Factory::ShutDown(); ++ + delete gGfxPlatformPrefsLock; + + gfxPrefs::DestroySingleton(); +diff --git a/gfx/thebes/gfxPrefs.h b/gfx/thebes/gfxPrefs.h +index b7a5fb9..038e1ff 100644 +--- a/gfx/thebes/gfxPrefs.h ++++ b/gfx/thebes/gfxPrefs.h +@@ -209,6 +209,9 @@ private: + DECL_GFX_PREF(Live, "gfx.layerscope.port", LayerScopePort, int32_t, 23456); + // Note that "gfx.logging.level" is defined in Logging.h + DECL_GFX_PREF(Once, "gfx.logging.crash.length", GfxLoggingCrashLength, uint32_t, 6); ++ // The maximums here are quite conservative, we can tighten them if problems show up. ++ DECL_GFX_PREF(Once, "gfx.max-alloc-size", MaxAllocSize, int32_t, (int32_t)500000000); ++ DECL_GFX_PREF(Once, "gfx.max-texture-size", MaxTextureSize, int32_t, (int32_t)32767); + DECL_GFX_PREF(Live, "gfx.perf-warnings.enabled", PerfWarnings, bool, false); + DECL_GFX_PREF(Once, "gfx.work-around-driver-bugs", WorkAroundDriverBugs, bool, true); + +-- +2.6.3 + diff --git a/gnu/packages/patches/icecat-CVE-2015-7213-pt1.patch b/gnu/packages/patches/icecat-CVE-2015-7213-pt1.patch new file mode 100644 index 0000000000..854c91b8aa --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-7213-pt1.patch @@ -0,0 +1,32 @@ +From 3f31bf9e243fb3de26e36d6be0bb0153f51c5b2a Mon Sep 17 00:00:00 2001 +From: Jean-Yves Avenard +Date: Wed, 9 Dec 2015 09:54:58 +0100 +Subject: [PATCH] Bug 1206211 - P1. Ensure operation can't overflow. + r=kentuckyfriedtakahe, a=sylvestre + +--- + .../frameworks/av/media/libstagefright/MPEG4Extractor.cpp | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp +index 22163fa..318152a 100644 +--- a/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp ++++ b/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp +@@ -508,10 +508,13 @@ status_t MPEG4Extractor::readMetaData() { + CHECK_NE(err, (status_t)NO_INIT); + + // copy pssh data into file metadata +- int psshsize = 0; ++ uint64_t psshsize = 0; + for (size_t i = 0; i < mPssh.size(); i++) { + psshsize += 20 + mPssh[i].datalen; + } ++ if (psshsize > kMAX_ALLOCATION) { ++ return ERROR_MALFORMED; ++ } + if (psshsize) { + char *buf = (char*)malloc(psshsize); + char *ptr = buf; +-- +2.6.3 + diff --git a/gnu/packages/patches/icecat-CVE-2015-7213-pt2.patch b/gnu/packages/patches/icecat-CVE-2015-7213-pt2.patch new file mode 100644 index 0000000000..20bbd36281 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-7213-pt2.patch @@ -0,0 +1,27 @@ +From bb6870bd6dc3acb183f44360c7cc6488656f47ea Mon Sep 17 00:00:00 2001 +From: Jean-Yves Avenard +Date: Wed, 9 Dec 2015 09:55:16 +0100 +Subject: [PATCH] Bug 1206211 - P2. Abort on OOM. r=kentuckyfriedtakahe, + a=sylvestre + +--- + .../frameworks/av/media/libstagefright/MPEG4Extractor.cpp | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp +index 318152a..c6aaf1d 100644 +--- a/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp ++++ b/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp +@@ -517,6 +517,9 @@ status_t MPEG4Extractor::readMetaData() { + } + if (psshsize) { + char *buf = (char*)malloc(psshsize); ++ if (!buf) { ++ return ERROR_MALFORMED; ++ } + char *ptr = buf; + for (size_t i = 0; i < mPssh.size(); i++) { + memcpy(ptr, mPssh[i].uuid, 20); // uuid + length +-- +2.6.3 + diff --git a/gnu/packages/patches/icecat-CVE-2015-7214.patch b/gnu/packages/patches/icecat-CVE-2015-7214.patch new file mode 100644 index 0000000000..3a56d3d2cd --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-7214.patch @@ -0,0 +1,47 @@ +From 487799700b0b676c2c6b95ad33c8afb8dbd329d8 Mon Sep 17 00:00:00 2001 +From: Bobby Holley +Date: Mon, 14 Dec 2015 15:36:20 -0500 +Subject: [PATCH] Bug 1228950 - Disallow scheme sets on nsHostObjectURI. r=bz, + a=lizzard + +--- + dom/base/nsHostObjectURI.cpp | 9 +++++++++ + dom/base/nsHostObjectURI.h | 2 ++ + 2 files changed, 11 insertions(+) + +diff --git a/dom/base/nsHostObjectURI.cpp b/dom/base/nsHostObjectURI.cpp +index 94b02ff..57b0209 100644 +--- a/dom/base/nsHostObjectURI.cpp ++++ b/dom/base/nsHostObjectURI.cpp +@@ -81,6 +81,15 @@ nsHostObjectURI::Write(nsIObjectOutputStream* aStream) + true); + } + ++NS_IMETHODIMP ++nsHostObjectURI::SetScheme(const nsACString& aScheme) ++{ ++ // Disallow setting the scheme, since that could cause us to be associated ++ // with a different protocol handler that doesn't expect us to be carrying ++ // around a principal with nsIURIWithPrincipal. ++ return NS_ERROR_FAILURE; ++} ++ + // nsIURI methods: + nsresult + nsHostObjectURI::CloneInternal(nsSimpleURI::RefHandlingEnum aRefHandlingMode, +diff --git a/dom/base/nsHostObjectURI.h b/dom/base/nsHostObjectURI.h +index b468d5d..23ff7ab 100644 +--- a/dom/base/nsHostObjectURI.h ++++ b/dom/base/nsHostObjectURI.h +@@ -34,6 +34,8 @@ public: + NS_DECL_NSISERIALIZABLE + NS_DECL_NSICLASSINFO + ++ NS_IMETHOD SetScheme(const nsACString &aProtocol) override; ++ + // Override CloneInternal() and EqualsInternal() + virtual nsresult CloneInternal(RefHandlingEnum aRefHandlingMode, + nsIURI** aClone) override; +-- +2.6.3 + diff --git a/gnu/packages/patches/icecat-CVE-2015-7222-pt1.patch b/gnu/packages/patches/icecat-CVE-2015-7222-pt1.patch new file mode 100644 index 0000000000..c5d0e4ad60 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-7222-pt1.patch @@ -0,0 +1,112 @@ +From 76e6db3e514350fd146cb04425e669d63b59f889 Mon Sep 17 00:00:00 2001 +From: Gerald Squelart +Date: Wed, 9 Dec 2015 09:59:37 +0100 +Subject: [PATCH] Bug 1216748 - p2. Handle failed malloc in Metadata storage - + r=rillian, a=sylvestre + +--- + .../av/include/media/stagefright/MetaData.h | 2 +- + .../av/media/libstagefright/MetaData.cpp | 35 ++++++++++++++-------- + 2 files changed, 24 insertions(+), 13 deletions(-) + +diff --git a/media/libstagefright/frameworks/av/include/media/stagefright/MetaData.h b/media/libstagefright/frameworks/av/include/media/stagefright/MetaData.h +index 30d969d..0a8ff77 100644 +--- a/media/libstagefright/frameworks/av/include/media/stagefright/MetaData.h ++++ b/media/libstagefright/frameworks/av/include/media/stagefright/MetaData.h +@@ -248,7 +248,7 @@ private: + return mSize <= sizeof(u.reservoir); + } + +- void allocateStorage(size_t size); ++ bool allocateStorage(size_t size); + void freeStorage(); + + void *storage() { +diff --git a/media/libstagefright/frameworks/av/media/libstagefright/MetaData.cpp b/media/libstagefright/frameworks/av/media/libstagefright/MetaData.cpp +index c832c96..cba324d 100644 +--- a/media/libstagefright/frameworks/av/media/libstagefright/MetaData.cpp ++++ b/media/libstagefright/frameworks/av/media/libstagefright/MetaData.cpp +@@ -220,7 +220,7 @@ bool MetaData::findData(uint32_t key, uint32_t *type, + } + + MetaData::typed_data::typed_data() +- : mType(0), ++ : mType(TYPE_NONE), + mSize(0) { + } + +@@ -231,17 +231,19 @@ MetaData::typed_data::~typed_data() { + MetaData::typed_data::typed_data(const typed_data &from) + : mType(from.mType), + mSize(0) { +- allocateStorage(from.mSize); +- memcpy(storage(), from.storage(), mSize); ++ if (allocateStorage(from.mSize)) { ++ memcpy(storage(), from.storage(), mSize); ++ } + } + + MetaData::typed_data &MetaData::typed_data::operator=( + const MetaData::typed_data &from) { + if (this != &from) { + clear(); +- mType = from.mType; +- allocateStorage(from.mSize); +- memcpy(storage(), from.storage(), mSize); ++ if (allocateStorage(from.mSize)) { ++ mType = from.mType; ++ memcpy(storage(), from.storage(), mSize); ++ } + } + + return *this; +@@ -250,16 +252,17 @@ MetaData::typed_data &MetaData::typed_data::operator=( + void MetaData::typed_data::clear() { + freeStorage(); + +- mType = 0; ++ mType = TYPE_NONE; + } + + void MetaData::typed_data::setData( + uint32_t type, const void *data, size_t size) { + clear(); + +- mType = type; +- allocateStorage(size); +- memcpy(storage(), data, size); ++ if (allocateStorage(size)) { ++ mType = type; ++ memcpy(storage(), data, size); ++ } + } + + void MetaData::typed_data::getData( +@@ -269,14 +272,22 @@ void MetaData::typed_data::getData( + *data = storage(); + } + +-void MetaData::typed_data::allocateStorage(size_t size) { ++bool MetaData::typed_data::allocateStorage(size_t size) { ++ // Update mSize now, as it is needed by usesReservoir() below. ++ // (mSize will be reset if the allocation fails further below.) + mSize = size; + + if (usesReservoir()) { +- return; ++ return true; + } + + u.ext_data = malloc(mSize); ++ if (!u.ext_data) { ++ mType = TYPE_NONE; ++ mSize = 0; ++ return false; ++ } ++ return true; + } + + void MetaData::typed_data::freeStorage() { +-- +2.6.3 + diff --git a/gnu/packages/patches/icecat-CVE-2015-7222-pt2.patch b/gnu/packages/patches/icecat-CVE-2015-7222-pt2.patch new file mode 100644 index 0000000000..688d7f903f --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-7222-pt2.patch @@ -0,0 +1,34 @@ +From 63c353cf8ec6b787936f602532026bd9923a16e4 Mon Sep 17 00:00:00 2001 +From: Gerald Squelart +Date: Wed, 9 Dec 2015 10:00:13 +0100 +Subject: [PATCH] Bug 1216748 - p3. Ensure 'covr' data size cannot create + underflow - r=rillian, a=sylvestre + +--- + .../frameworks/av/media/libstagefright/MPEG4Extractor.cpp | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp +index c6aaf1d..a69fc14 100644 +--- a/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp ++++ b/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp +@@ -1889,12 +1889,15 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) { + if (mFileMetaData != NULL) { + ALOGV("chunk_data_size = %lld and data_offset = %lld", + chunk_data_size, data_offset); ++ const int kSkipBytesOfDataBox = 16; ++ if (chunk_data_size <= kSkipBytesOfDataBox) { ++ return ERROR_MALFORMED; ++ } + sp buffer = new ABuffer(chunk_data_size + 1); + if (mDataSource->readAt( + data_offset, buffer->data(), chunk_data_size) != (ssize_t)chunk_data_size) { + return ERROR_IO; + } +- const int kSkipBytesOfDataBox = 16; + mFileMetaData->setData( + kKeyAlbumArt, MetaData::TYPE_NONE, + buffer->data() + kSkipBytesOfDataBox, chunk_data_size - kSkipBytesOfDataBox); +-- +2.6.3 + diff --git a/gnu/packages/patches/icecat-CVE-2015-7222-pt3.patch b/gnu/packages/patches/icecat-CVE-2015-7222-pt3.patch new file mode 100644 index 0000000000..2f3c95623d --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-7222-pt3.patch @@ -0,0 +1,37 @@ +From 0221ef0c389bff196ff59fa18232467d3648b926 Mon Sep 17 00:00:00 2001 +From: Gerald Squelart +Date: Wed, 9 Dec 2015 10:00:32 +0100 +Subject: [PATCH] Bug 1216748 - p4. Check other Metadata::setData uses - + r=rillian, a=sylvestre + +Found only one other use that needed better checks: the size of the pssh +data was only checked after all items were added up; so it would be +possible to create a set of big items such that they create an overflow, +but the final sum looks reasonable. +Instead each item size should be checked, and the sum should also be +checked at each step. +--- + .../frameworks/av/media/libstagefright/MPEG4Extractor.cpp | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp +index a69fc14..413a495 100644 +--- a/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp ++++ b/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp +@@ -511,9 +511,10 @@ status_t MPEG4Extractor::readMetaData() { + uint64_t psshsize = 0; + for (size_t i = 0; i < mPssh.size(); i++) { + psshsize += 20 + mPssh[i].datalen; +- } +- if (psshsize > kMAX_ALLOCATION) { +- return ERROR_MALFORMED; ++ if (mPssh[i].datalen > kMAX_ALLOCATION - 20 || ++ psshsize > kMAX_ALLOCATION) { ++ return ERROR_MALFORMED; ++ } + } + if (psshsize) { + char *buf = (char*)malloc(psshsize); +-- +2.6.3 + -- cgit v1.2.3 From f464016d603ba151491b529b6bcc91d087816b9d Mon Sep 17 00:00:00 2001 From: David Thompson Date: Thu, 17 Dec 2015 13:36:42 -0500 Subject: gnu: Add obs. * gnu/packages/video.scm (obs): New variable. --- gnu/packages/video.scm | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 4f6ef6d7e5..5d118ca32d 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -42,6 +42,7 @@ #:use-module (gnu packages base) #:use-module (gnu packages cdrom) #:use-module (gnu packages compression) + #:use-module (gnu packages curl) #:use-module (gnu packages databases) #:use-module (gnu packages doxygen) #:use-module (gnu packages elf) @@ -1270,3 +1271,40 @@ players, transcoders, web streamers and many more types of applications. The functionality of the system is provided via an assortment of ready to use tools, XML authoring components, and an extensible plug-in based API.") (license license:lgpl2.1+))) + +(define-public obs + (package + (name "obs") + (version "0.12.4") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/jp9000/obs-studio" + "/archive/" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0b1xb5vd3g4h7m1hsjzsq3bbbnqb2n6mpmq6ix4yyy72g087rjk1")))) + (build-system cmake-build-system) + (arguments '(#:tests? #f)) ; no tests + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("curl" ,curl) + ("eudev" ,eudev) + ("ffmpeg" ,ffmpeg) + ("freetype" ,freetype) + ("jack" ,jack-1) + ("jansson" ,jansson) + ("libx264" ,libx264) + ("libxcomposite" ,libxcomposite) + ("mesa" ,mesa) + ("pulseaudio" ,pulseaudio) + ("qt" ,qt) + ("zlib" ,zlib))) + (synopsis "Live streaming software") + (description "Open Broadcaster Software provides a graphical interface for +video recording and live streaming. OBS supports capturing audio and video +from many input sources such as webcams, X11 (for screencasting), PulseAudio, +and JACK.") + (home-page "https://obsproject.com") + (license license:gpl2+))) -- cgit v1.2.3 From 72029c8bf1b5730c01bd2d3d6d84eec038a3e8fe Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 15 Dec 2015 11:38:46 +0800 Subject: gnu: Add cracklib. * gnu/packages/password-utils.scm (cracklib): New variable. --- gnu/packages/password-utils.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm index 1ca327b5c8..0cb3750d6a 100644 --- a/gnu/packages/password-utils.scm +++ b/gnu/packages/password-utils.scm @@ -135,3 +135,24 @@ session. Two companion utilities enable users to convert CSV files to YAPET and vice versa.") (home-page "http://www.guengel.ch/myapps/yapet/") (license license:gpl3+))) + +(define-public cracklib + (package + (name "cracklib") + (version "2.9.6") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/cracklib/cracklib/" + "releases/download/" name "-" version "/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "0hrkb0prf7n92w6rxgq0ilzkk6rkhpys2cfqkrbzswp27na7dkqp")))) + (build-system gnu-build-system) + (synopsis "Password checking library") + (home-page "https://github.com/cracklib/cracklib") + (description + "CrackLib is a library containing a C function which may be used in a +passwd like program. The idea is simple: try to prevent users from choosing +passwords that could be guessed by crack by filtering them out, at source.") + (license license:lgpl2.1))) -- cgit v1.2.3 From c2fb20761a000b9be743ffe378b38409d5a4a556 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 15 Dec 2015 11:39:25 +0800 Subject: gnu: Add libpwquality. * gnu/packages/password-utils.scm (libpwquality): New variable. --- gnu/packages/password-utils.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm index 0cb3750d6a..7c390e908d 100644 --- a/gnu/packages/password-utils.scm +++ b/gnu/packages/password-utils.scm @@ -156,3 +156,31 @@ and vice versa.") passwd like program. The idea is simple: try to prevent users from choosing passwords that could be guessed by crack by filtering them out, at source.") (license license:lgpl2.1))) + +(define-public libpwquality + (package + (name "libpwquality") + (version "1.3.0") + (source (origin + (method url-fetch) + (uri (list + (string-append "https://fedorahosted.org/releases/l/i/" + name "/" name "-" version ".tar.bz2") + (string-append "https://launchpad.net/libpwquality/trunk/" + version "/+download/" + name "-" version ".tar.bz2"))) + (sha256 + (base32 + "0aidriag6h0syfm33nzdfdsqgrnsgihwjv3a5lgkqch3w68fmlkl")))) + (build-system gnu-build-system) + (arguments + ;; XXX: have RUNPATH issue. + '(#:configure-flags '("--disable-python-bindings"))) + (inputs + `(("cracklib" ,cracklib))) + (synopsis "Password quality checker") + (home-page "https://fedorahosted.org/libpwquality/") + (description + "Libpwquality is a library for password quality checking and generation of +random passwords that pass the checks.") + (license license:gpl2+))) -- cgit v1.2.3 From 960ae0cde4d05c33547b16fe97f17f82a9c562e1 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 15 Dec 2015 12:09:19 +0800 Subject: gnu: talloc: Use 'modify-phases' syntax. * gnu/packages/samba.scm (talloc)[arguments]: Use 'modify-phases' syntax. --- gnu/packages/samba.scm | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index 484eafb647..0873a00267 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -179,16 +179,16 @@ Desktops into Active Directory environments using the winbind daemon.") "13c365f7y8idjf2v1jxdjpkc3lxdmsxxfxjx1ymianm7zjiph393")))) (build-system gnu-build-system) (arguments - '(#:phases (alist-replace - 'configure - (lambda* (#:key outputs #:allow-other-keys) - ;; talloc uses a custom configuration script that runs a - ;; python script called 'waf'. - (setenv "CONFIG_SHELL" (which "sh")) - (let ((out (assoc-ref outputs "out"))) - (zero? (system* "./configure" - (string-append "--prefix=" out))))) - %standard-phases))) + '(#:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + ;; talloc uses a custom configuration script that runs a + ;; python script called 'waf'. + (setenv "CONFIG_SHELL" (which "sh")) + (let ((out (assoc-ref outputs "out"))) + (zero? (system* "./configure" + (string-append "--prefix=" out))))))))) (inputs `(("python" ,python-2))) (home-page "http://talloc.samba.org") -- cgit v1.2.3 From 095da0234299372c9793d1ccd7ee05e5abf0ff04 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Fri, 18 Dec 2015 10:08:33 +0800 Subject: gnu: talloc: Update to 2.1.5. * gnu/packages/samba.scm (talloc): Update to 2.1.5. [arguments]: Modify wscript to skip the 'magic_differs' test. --- gnu/packages/samba.scm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index 0873a00267..743784c02e 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -169,20 +169,25 @@ Desktops into Active Directory environments using the winbind daemon.") (define-public talloc (package (name "talloc") - (version "2.1.2") + (version "2.1.5") (source (origin (method url-fetch) (uri (string-append "https://www.samba.org/ftp/talloc/talloc-" version ".tar.gz")) (sha256 (base32 - "13c365f7y8idjf2v1jxdjpkc3lxdmsxxfxjx1ymianm7zjiph393")))) + "1pfx3kmj973hpacfw46fzfnjd7ms1j03ifkc30wk930brx8ffcrq")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases (replace 'configure (lambda* (#:key outputs #:allow-other-keys) + ;; test_magic_differs.sh has syntax error, and is not in the right + ;; place where wscript expected. + ;; Skip the test. + (substitute* "wscript" + (("magic_ret = .*") "magic_ret = 0\n")) ;; talloc uses a custom configuration script that runs a ;; python script called 'waf'. (setenv "CONFIG_SHELL" (which "sh")) -- cgit v1.2.3 From 0674b3c96d3aa93b63cdafbf99abe87815aec55c Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 15 Dec 2015 12:17:07 +0800 Subject: gnu: Add tevent. * gnu/packages/samba.scm (tevent): New variable. --- gnu/packages/samba.scm | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index 743784c02e..137e04df18 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -25,6 +25,7 @@ #:use-module (gnu packages acl) #:use-module (gnu packages admin) #:use-module (gnu packages popt) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages openldap) #:use-module (gnu packages readline) #:use-module (gnu packages libunwind) @@ -203,6 +204,41 @@ Desktops into Active Directory environments using the winbind daemon.") destructors. It is the core memory allocator used in Samba.") (license gpl3+))) ;; The bundled "replace" library uses LGPL3. +(define-public tevent + (package + (name "tevent") + (version "0.9.26") + (source (origin + (method url-fetch) + (uri (string-append "https://www.samba.org/ftp/tevent/tevent-" + version ".tar.gz")) + (sha256 + (base32 + "1gbh6d2m49j1v2hkaiyrh8bj02i5wxd4hqayzk2g44yyivbi8b16")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'configure + ;; tevent uses a custom configuration script that runs waf. + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (zero? (system* "./configure" + (string-append "--prefix=" out) + "--bundled-libraries=NONE")))))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("python" ,python-2))) + (propagated-inputs + `(("talloc" ,talloc))) ; required by tevent.pc + (synopsis "Event system library") + (home-page "https://tevent.samba.org/") + (description + "Tevent is an event system based on the talloc memory management library. +It is the core event system used in Samba. The low level tevent has support for +many event types, including timers, signals, and the classic file descriptor events.") + (license lgpl3+))) + (define-public ppp (package (name "ppp") -- cgit v1.2.3 From 52513595ad4665ecf53577e124ed43098726eea1 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 15 Dec 2015 12:19:26 +0800 Subject: gnu: Add ldb. * gnu/packages/samba.scm (ldb): New variable. --- gnu/packages/samba.scm | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index 137e04df18..ecf8ada8c9 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -24,6 +24,7 @@ #:use-module (guix licenses) #:use-module (gnu packages acl) #:use-module (gnu packages admin) + #:use-module (gnu packages databases) #:use-module (gnu packages popt) #:use-module (gnu packages pkg-config) #:use-module (gnu packages openldap) @@ -239,6 +240,49 @@ It is the core event system used in Samba. The low level tevent has support for many event types, including timers, signals, and the classic file descriptor events.") (license lgpl3+))) +(define-public ldb + (package + (name "ldb") + (version "1.1.23") + (source (origin + (method url-fetch) + (uri (string-append "https://www.samba.org/ftp/ldb/ldb-" + version ".tar.gz")) + (sha256 + (base32 + "0ncmwgga6q9v7maiywgw21w6rb3149m1w2ca11yq8k5j0izjz2wg")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'configure + ;; ldb use a custom configuration script that runs waf. + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (zero? (system* "./configure" + (string-append "--prefix=" out) + (string-append "--with-modulesdir=" out + "/lib/ldb/modules") + "--bundled-libraries=NONE")))))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("python" ,python-2))) + (propagated-inputs + ;; ldb.pc refers to all these. + `(("talloc" ,talloc) + ("tdb" ,tdb))) + (inputs + `(("popt" ,popt) + ("tevent" ,tevent))) + (synopsis "LDAP-like embedded database") + (home-page "https://ldb.samba.org/") + (description + "Ldb is a LDAP-like embedded database built on top of TDB. What ldb does +is provide a fast database with an LDAP-like API designed to be used within an +application. In some ways it can be seen as a intermediate solution between +key-value pair databases and a real LDAP database.") + (license lgpl3+))) + (define-public ppp (package (name "ppp") -- cgit v1.2.3 From 710964d1790e6e583a9564f398ac57d635225cb2 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 15 Dec 2015 12:20:26 +0800 Subject: gnu: samba: Update to 4.3.2. * gnu/packages/samba.scm (samba): Update to 4.3.2. Add more inputs. [arguments]: Remove #:modules and #:imported-modules. Remove 'chdir' and 'add-lib-to-runpath' from #:phases. Use 'modify-phases' syntax. --- gnu/packages/samba.scm | 75 +++++++++++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 41 deletions(-) diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index ecf8ada8c9..ac3a17d512 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -24,14 +24,14 @@ #:use-module (guix licenses) #:use-module (gnu packages acl) #:use-module (gnu packages admin) + #:use-module (gnu packages cups) #:use-module (gnu packages databases) + #:use-module (gnu packages tls) #:use-module (gnu packages popt) #:use-module (gnu packages pkg-config) #:use-module (gnu packages openldap) #:use-module (gnu packages readline) - #:use-module (gnu packages libunwind) #:use-module (gnu packages linux) - #:use-module (gnu packages elf) #:use-module (gnu packages perl) #:use-module (gnu packages python)) @@ -98,64 +98,57 @@ anywhere.") (define-public samba (package (name "samba") - (version "3.6.25") + (version "4.3.2") (source (origin (method url-fetch) (uri (string-append "https://www.samba.org/samba/ftp/stable/samba-" version ".tar.gz")) (sha256 (base32 - "0l9pz2m67vf398q3c2dwn8jwdxsjb20igncf4byhv6yq5dzqlb4g")))) + "0xcs2bcim421mlk6l9rcrkx4cq9y41gfssyfa7xzdw5draar3631")))) (build-system gnu-build-system) (arguments - `(#:phases (alist-cons-before - 'configure 'chdir - (lambda _ - (chdir "source3")) - (alist-cons-after - 'strip 'add-lib-to-runpath - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (lib (string-append out "/lib"))) - ;; Add LIB to the RUNPATH of all the executables and - ;; dynamic libraries. - (with-directory-excursion out - (for-each (cut augment-rpath <> lib) - (append (find-files "bin" ".*") - (find-files "sbin" ".*") - (find-files "lib" ".*")))))) - %standard-phases)) - - #:modules ((guix build gnu-build-system) - (guix build utils) - (guix build rpath) - (srfi srfi-26)) - #:imported-modules (,@%gnu-build-system-modules - (guix build rpath)) - - ;; This flag is required to allow for "make test". - #:configure-flags '("--enable-socket-wrapper") - - #:test-target "test" + '(#:phases + (modify-phases %standard-phases + (replace 'configure + ;; samba uses a custom configuration script that runs waf. + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (libdir (string-append out "/lib"))) + (zero? (system* + "./configure" + "--enable-fhs" + ;; XXX: heimdal not packaged. + "--bundled-libraries=com_err" + (string-append "--prefix=" out) + ;; Install public and private libraries into + ;; a single directory to avoid RPATH issues. + (string-append "--libdir=" libdir) + (string-append "--with-privatelibdir=" libdir))))))) ;; XXX: The test infrastructure attempts to set password with ;; smbpasswd, which fails with "smbpasswd -L can only be used by root." ;; So disable tests until there's a workaround. #:tests? #f)) (inputs ; TODO: Add missing dependencies - `(;; ("cups" ,cups) - ("acl" ,acl) + `(("acl" ,acl) + ("cups" ,cups) ;; ("gamin" ,gamin) - ("libunwind" ,libunwind) + ("gnutls" ,gnutls) ("iniparser" ,iniparser) - ("popt" ,popt) - ("openldap" ,openldap) + ("libaio" ,libaio) + ("ldb" ,ldb) ("linux-pam" ,linux-pam) + ("openldap" ,openldap) + ("popt" ,popt) ("readline" ,readline) - ("patchelf" ,patchelf))) ; for (guix build rpath) - (native-inputs ; for the test suite + ("talloc" ,talloc) + ("tevent" ,tevent) + ("tdb" ,tdb))) + (native-inputs `(("perl" ,perl) - ("python" ,python-wrapper))) + ("pkg-config" ,pkg-config) + ("python" ,python-2))) ; incompatible with Python 3 (home-page "http://www.samba.org/") (synopsis "The standard Windows interoperability suite of programs for GNU and Unix") -- cgit v1.2.3 From 6813f70a5c02eec999850603bd99b6df4fd41bec Mon Sep 17 00:00:00 2001 From: David Thompson Date: Tue, 15 Dec 2015 13:30:11 -0500 Subject: gnu: Add sdl2-image. * gnu/packages/sdl.scm (propagated-inputs-with-sdl2): New procedure. (sdl2-image): New variable. --- gnu/packages/sdl.scm | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index 1b64be024d..63c1037fcb 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 David Thompson +;;; Copyright © 2013, 2015 David Thompson ;;; Copyright © 2014 Mark H Weaver ;;; Copyright © 2015 Sou Bunnbu ;;; Copyright © 2015 Alex Kost @@ -20,6 +20,7 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages sdl) + #:use-module (ice-9 match) #:use-module (gnu packages) #:use-module ((guix licenses) #:hide (freetype)) #:use-module (guix packages) @@ -299,6 +300,29 @@ directory.") (home-page (package-home-page sdl)) (license (package-license sdl)))) +(define (propagated-inputs-with-sdl2 package) + "Replace the \"sdl\" propagated input of PACKAGE with SDL2." + (map (match-lambda + (("sdl" _) + `("sdl2" ,sdl2)) + (other other)) + (package-propagated-inputs package))) + +(define-public sdl2-image + (package (inherit sdl-image) + (name "sdl2-image") + (version "2.0.0") + (source (origin + (method url-fetch) + (uri + (string-append "http://www.libsdl.org/projects/SDL_image/release/SDL2_image-" + version ".tar.gz")) + (sha256 + (base32 + "0d3jlhkmr0j5a2dd5h6y29jfcsj7mkl16wghm6n3nqqp7g3ib65j")))) + (propagated-inputs + (propagated-inputs-with-sdl2 sdl-image)))) + (define-public guile-sdl (package (name "guile-sdl") -- cgit v1.2.3 From 855e2939819c967d42d34b4c90f9c1abd9fd3c87 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Tue, 15 Dec 2015 13:30:56 -0500 Subject: gnu: Add sdl2-mixer. * gnu/packages/sdl.scm (sdl2-mixer): New variable. --- gnu/packages/sdl.scm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index 63c1037fcb..2d019665ba 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -323,6 +323,21 @@ directory.") (propagated-inputs (propagated-inputs-with-sdl2 sdl-image)))) +(define-public sdl2-mixer + (package (inherit sdl-mixer) + (name "sdl2-mixer") + (version "2.0.0") + (source (origin + (method url-fetch) + (uri + (string-append "http://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-" + version ".tar.gz")) + (sha256 + (base32 + "0nvjdxjchrajrn0jag877hdx9zb788hsd315zzg1lyck2wb0xkm8")))) + (propagated-inputs + (propagated-inputs-with-sdl2 sdl-mixer)))) + (define-public guile-sdl (package (name "guile-sdl") -- cgit v1.2.3 From d3f6a1defb3d3b7824ae54aaf756b196ff451a25 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Tue, 15 Dec 2015 13:31:32 -0500 Subject: gnu: Add sdl2-ttf. * gnu/packages/sdl.scm (sdl2-ttf): New variable. --- gnu/packages/sdl.scm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index 2d019665ba..2fdddcc17e 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -338,6 +338,21 @@ directory.") (propagated-inputs (propagated-inputs-with-sdl2 sdl-mixer)))) +(define-public sdl2-ttf + (package (inherit sdl-ttf) + (name "sdl2-ttf") + (version "2.0.12") + (source (origin + (method url-fetch) + (uri + (string-append "http://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-" + version ".tar.gz")) + (sha256 + (base32 + "0vkg6lyj278mdpd52map3rfi65fbq16w67ahmmfcl77a8da60a47")))) + (propagated-inputs + (propagated-inputs-with-sdl2 sdl-ttf)))) + (define-public guile-sdl (package (name "guile-sdl") -- cgit v1.2.3 From 6a51e95b6690cf7b8b5bd14794fdb126b0d6b1e6 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Thu, 17 Dec 2015 22:32:05 -0500 Subject: gnu: sdl-image: Add libwebp input. * gnu/packages/sdl.scm (sdl-image)[propagated-inputs]: Add libwebp. --- gnu/packages/sdl.scm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index 2fdddcc17e..825e7db5d9 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -174,8 +174,6 @@ other supporting functions for SDL.") "--disable-tif-shared" "--disable-webp-shared"))) (native-inputs `(("pkg-config" ,pkg-config))) - ;; FIXME: Add webp - ;; ;; libjpeg, libpng, and libtiff are propagated inputs because the ;; SDL_image headers include the headers of these libraries. SDL is a ;; propagated input because the pkg-config file refers to SDL's pkg-config @@ -183,7 +181,8 @@ other supporting functions for SDL.") (propagated-inputs `(("sdl" ,sdl) ("libjpeg" ,libjpeg) ("libpng" ,libpng) - ("libtiff" ,libtiff))) + ("libtiff" ,libtiff) + ("libwebp" ,libwebp))) (synopsis "SDL image loading library") (description "SDL_image is an image file loading library for SDL that supports the following formats: BMP, GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF, -- cgit v1.2.3 From fd5c70f867175155263f8bc04095a0fd1e51a764 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Mon, 14 Dec 2015 14:10:07 +0100 Subject: gnu: dovecot: Add linux-pam to inputs. * gnu/packages/mail.scm (dovecot): Add linux-pam to inputs, enabling the PAM auth driver. --- gnu/packages/mail.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index bf28ec674e..38cab27494 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -696,7 +696,8 @@ facilities for checking incoming mail.") `(("openssl" ,openssl) ("zlib" ,zlib) ("bzip2" ,bzip2) - ("sqlite" ,sqlite))) + ("sqlite" ,sqlite) + ("linux-pam" ,linux-pam))) (arguments `(#:configure-flags '("--sysconfdir=/etc" "--localstatedir=/var") -- cgit v1.2.3 From d8c18af834c492a2066e882fed95062a5c33fbc7 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Mon, 14 Dec 2015 14:10:46 +0100 Subject: gnu: Add dovecot service * gnu/services/mail.scm: New file. (&dovecot-configuration-error, dovecot-configuration-error?) (dovecot-service, dovecot-configuration, dict-configuration) (passdb-configuration, userdb-configuration) (unix-listener-configuration, fifo-listener-configuration) (inet-listener-configuration, service-configuration) (protocol-configuration, plugin-configuration, mailbox-configuration) (namespace-configuration, opaque-dovecot-configuration): New public variables. * gnu-system.am (GNU_SYSTEM_MODULES): Add (gnu services mail). * doc/guix.texi (Mail Services): New node. --- doc/guix.texi | 1371 +++++++++++++++++++++++++++++++++++++++ gnu-system.am | 1 + gnu/services/mail.scm | 1692 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 3064 insertions(+) create mode 100644 gnu/services/mail.scm diff --git a/doc/guix.texi b/doc/guix.texi index f63e3669fa..06d70ba8a4 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -181,6 +181,7 @@ Services * X Window:: Graphical display. * Desktop Services:: D-Bus and desktop services. * Database Services:: SQL databases. +* Mail Services:: IMAP, POP3, SMTP, and all that. * Web Services:: Web servers. * Various Services:: Other services. @@ -6377,6 +6378,7 @@ declaration. * X Window:: Graphical display. * Desktop Services:: D-Bus and desktop services. * Database Services:: SQL databases. +* Mail Services:: IMAP, POP3, SMTP, and all that. * Web Services:: Web servers. * Various Services:: Other services. @end menu @@ -7100,6 +7102,1375 @@ The PostgreSQL daemon loads its runtime configuration from @var{data-directory}. @end deffn +@node Mail Services +@subsubsection Mail Services + +The @code{(gnu services mail)} module provides Guix service definitions +for mail services. Currently the only implemented service is Dovecot, +an IMAP, POP3, and LMTP server. + +Guix does not yet have a mail transfer agent (MTA), although for some +lightweight purposes the @code{esmtp} relay-only MTA may suffice. Help +is needed to properly integrate a full MTA, such as Postfix. Patches +welcome! + +To add an IMAP/POP3 server to a GuixSD system, add a +@code{dovecot-service} to the operating system definition: + +@deffn {Scheme Procedure} dovecot-service [#:config (dovecot-configuration)] +Return a service that runs the Dovecot IMAP/POP3/LMTP mail server. +@end deffn + +By default, Dovecot doesn't need much configuration; the default +configuration object created by @code{(dovecot-configuration)} will +suffice if your mail is delivered to @code{~/Maildir}. A self-signed +certificate will be generated for TLS-protected connections, though +Dovecot will also listen on cleartext ports by default. There are a +number of options though which mail administrators might need to change, +and as is the case with other services, Guix allows the system +administrator to specify these parameters via a uniform Scheme interface. + +For example, to specify that mail is located at @code{maildir~/.mail}, +one would instantiate the Dovecot service like this: + +@example +(dovecot-service #:config + (dovecot-configuration + (mail-location "maildir:~/.mail"))) +@end example + +The available configuration parameters follow. Each parameter +definition is preceded by its type; for example, @samp{string-list foo} +indicates that the @code{foo} parameter should be specified as a list of +strings. There is also a way to specify the configuration as a string, +if you have an old @code{dovecot.conf} file that you want to port over +from some other system; see the end for more details. + +@c The following documentation was initially generated by +@c (generate-documentation) in (gnu services mail). Manually maintained +@c documentation is better, so we shouldn't hesitate to edit below as +@c needed. However if the change you want to make to this documentation +@c can be done in an automated way, it's probably easier to change +@c (generate-documentation) than to make it below and have to deal with +@c the churn as dovecot updates. + +Available @code{dovecot-configuration} fields are: + +@deftypevr {@code{dovecot-configuration} parameter} package dovecot +The dovecot package. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} comma-separated-string-list listen +A list of IPs or hosts where to listen in for connections. @samp{*} +listens in all IPv4 interfaces, @samp{::} listens in all IPv6 +interfaces. If you want to specify non-default ports or anything more +complex, customize the address and port fields of the +@samp{inet-listener} of the specific services you are interested in. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} protocol-configuration-list protocols +List of protocols we want to serve. Available protocols include +@samp{imap}, @samp{pop3}, and @samp{lmtp}. + +Available @code{protocol-configuration} fields are: + +@deftypevr {@code{protocol-configuration} parameter} string name +The name of the protocol. +@end deftypevr + +@deftypevr {@code{protocol-configuration} parameter} string auth-socket-path +UNIX socket path to master authentication server to find users. +This is used by imap (for shared users) and lda. +Defaults to @samp{"/var/run/dovecot/auth-userdb"}. +@end deftypevr + +@deftypevr {@code{protocol-configuration} parameter} space-separated-string-list mail-plugins +Space separated list of plugins to load. +@end deftypevr + +@deftypevr {@code{protocol-configuration} parameter} non-negative-integer mail-max-userip-connections +Maximum number of IMAP connections allowed for a user from each IP +address. NOTE: The username is compared case-sensitively. +Defaults to @samp{10}. +@end deftypevr + +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} service-configuration-list services +List of services to enable. Available services include @samp{imap}, +@samp{imap-login}, @samp{pop3}, @samp{pop3-login}, @samp{auth}, and +@samp{lmtp}. + +Available @code{service-configuration} fields are: + +@deftypevr {@code{service-configuration} parameter} string kind +The service kind. Valid values include @code{director}, +@code{imap-login}, @code{pop3-login}, @code{lmtp}, @code{imap}, +@code{pop3}, @code{auth}, @code{auth-worker}, @code{dict}, +@code{tcpwrap}, @code{quota-warning}, or anything else. +@end deftypevr + +@deftypevr {@code{service-configuration} parameter} listener-configuration-list listeners +Listeners for the service. A listener is either an +@code{unix-listener-configuration}, a @code{fifo-listener-configuration}, or +an @code{inet-listener-configuration}. +Defaults to @samp{()}. + +Available @code{unix-listener-configuration} fields are: + +@deftypevr {@code{unix-listener-configuration} parameter} file-name path +The file name on which to listen. +@end deftypevr + +@deftypevr {@code{unix-listener-configuration} parameter} string mode +The access mode for the socket. +Defaults to @samp{"0600"}. +@end deftypevr + +@deftypevr {@code{unix-listener-configuration} parameter} string user +The user to own the the socket. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{unix-listener-configuration} parameter} string group +The group to own the socket. +Defaults to @samp{""}. +@end deftypevr + + +Available @code{fifo-listener-configuration} fields are: + +@deftypevr {@code{fifo-listener-configuration} parameter} file-name path +The file name on which to listen. +@end deftypevr + +@deftypevr {@code{fifo-listener-configuration} parameter} string mode +The access mode for the socket. +Defaults to @samp{"0600"}. +@end deftypevr + +@deftypevr {@code{fifo-listener-configuration} parameter} string user +The user to own the the socket. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{fifo-listener-configuration} parameter} string group +The group to own the socket. +Defaults to @samp{""}. +@end deftypevr + + +Available @code{inet-listener-configuration} fields are: + +@deftypevr {@code{inet-listener-configuration} parameter} string protocol +The protocol to listen for. +@end deftypevr + +@deftypevr {@code{inet-listener-configuration} parameter} string address +The address on which to listen, or empty for all addresses. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{inet-listener-configuration} parameter} non-negative-integer port +The port on which to listen. +@end deftypevr + +@deftypevr {@code{inet-listener-configuration} parameter} boolean ssl? +Whether to use SSL for this service; @samp{yes}, @samp{no}, or +@samp{required}. +Defaults to @samp{#t}. +@end deftypevr + +@end deftypevr + +@deftypevr {@code{service-configuration} parameter} non-negative-integer service-count +Number of connections to handle before starting a new process. +Typically the only useful values are 0 (unlimited) or 1. 1 is more +secure, but 0 is faster. . +Defaults to @samp{1}. +@end deftypevr + +@deftypevr {@code{service-configuration} parameter} non-negative-integer process-min-avail +Number of processes to always keep waiting for more connections. +Defaults to @samp{0}. +@end deftypevr + +@deftypevr {@code{service-configuration} parameter} non-negative-integer vsz-limit +If you set @samp{service-count 0}, you probably need to grow +this. +Defaults to @samp{256000000}. +@end deftypevr + +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} dict-configuration dict +Dict configuration, as created by the @code{dict-configuration} +constructor. + +Available @code{dict-configuration} fields are: + +@deftypevr {@code{dict-configuration} parameter} free-form-fields entries +A list of key-value pairs that this dict should hold. +Defaults to @samp{()}. +@end deftypevr + +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} passdb-configuration-list passdbs +List of passdb configurations, each one created by the +@code{passdb-configuration} constructor. + +Available @code{passdb-configuration} fields are: + +@deftypevr {@code{passdb-configuration} parameter} string driver +The driver that the passdb should use. Valid values include +@samp{pam}, @samp{passwd}, @samp{shadow}, @samp{bsdauth}, and +@samp{static}. +Defaults to @samp{"pam"}. +@end deftypevr + +@deftypevr {@code{passdb-configuration} parameter} free-form-args args +A list of key-value args to the passdb driver. +Defaults to @samp{()}. +@end deftypevr + +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} userdb-configuration-list userdbs +List of userdb configurations, each one created by the +@code{userdb-configuration} constructor. + +Available @code{userdb-configuration} fields are: + +@deftypevr {@code{userdb-configuration} parameter} string driver +The driver that the userdb should use. Valid values include +@samp{passwd} and @samp{static}. +Defaults to @samp{"passwd"}. +@end deftypevr + +@deftypevr {@code{userdb-configuration} parameter} free-form-args args +A list of key-value args to the userdb driver. +Defaults to @samp{()}. +@end deftypevr + +@deftypevr {@code{userdb-configuration} parameter} free-form-args override-fields +Override fields from passwd. +Defaults to @samp{()}. +@end deftypevr + +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} plugin-configuration plugin-configuration +Plug-in configuration, created by the @code{plugin-configuration} +constructor. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} list-of-namespace-configuration namespaces +List of namespaces. Each item in the list is created by the +@code{namespace-configuration} constructor. + +Available @code{namespace-configuration} fields are: + +@deftypevr {@code{namespace-configuration} parameter} string name +Name for this namespace. +@end deftypevr + +@deftypevr {@code{namespace-configuration} parameter} string type +Namespace type: @samp{private}, @samp{shared} or @samp{public}. +Defaults to @samp{"private"}. +@end deftypevr + +@deftypevr {@code{namespace-configuration} parameter} string separator +Hierarchy separator to use. You should use the same separator for +all namespaces or some clients get confused. @samp{/} is usually a good +one. The default however depends on the underlying mail storage +format. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{namespace-configuration} parameter} string prefix +Prefix required to access this namespace. This needs to be +different for all namespaces. For example @samp{Public/}. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{namespace-configuration} parameter} string location +Physical location of the mailbox. This is in same format as +mail_location, which is also the default for it. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{namespace-configuration} parameter} boolean inbox? +There can be only one INBOX, and this setting defines which +namespace has it. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{namespace-configuration} parameter} boolean hidden? +If namespace is hidden, it's not advertised to clients via NAMESPACE +extension. You'll most likely also want to set @samp{list? #f}. This is mostly +useful when converting from another server with different namespaces +which you want to deprecate but still keep working. For example you can +create hidden namespaces with prefixes @samp{~/mail/}, @samp{~%u/mail/} +and @samp{mail/}. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{namespace-configuration} parameter} boolean list? +Show the mailboxes under this namespace with LIST command. This +makes the namespace visible for clients that don't support NAMESPACE +extension. The special @code{children} value lists child mailboxes, but +hides the namespace prefix. +Defaults to @samp{#t}. +@end deftypevr + +@deftypevr {@code{namespace-configuration} parameter} boolean subscriptions? +Namespace handles its own subscriptions. If set to @code{#f}, the +parent namespace handles them. The empty prefix should always have this +as @code{#t}.) +Defaults to @samp{#t}. +@end deftypevr + +@deftypevr {@code{namespace-configuration} parameter} mailbox-configuration-list mailboxes +List of predefined mailboxes in this namespace. +Defaults to @samp{()}. + +Available @code{mailbox-configuration} fields are: + +@deftypevr {@code{mailbox-configuration} parameter} string name +Name for this mailbox. +@end deftypevr + +@deftypevr {@code{mailbox-configuration} parameter} string auto +@samp{create} will automatically create this mailbox. +@samp{subscribe} will both create and subscribe to the mailbox. +Defaults to @samp{"no"}. +@end deftypevr + +@deftypevr {@code{mailbox-configuration} parameter} space-separated-string-list special-use +List of IMAP @code{SPECIAL-USE} attributes as specified by RFC 6154. +Valid values are @code{\All}, @code{\Archive}, @code{\Drafts}, +@code{\Flagged}, @code{\Junk}, @code{\Sent}, and @code{\Trash}. +Defaults to @samp{()}. +@end deftypevr + +@end deftypevr + +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} file-name base-dir +Base directory where to store runtime data. +Defaults to @samp{"/var/run/dovecot/"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string login-greeting +Greeting message for clients. +Defaults to @samp{"Dovecot ready."}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} space-separated-string-list login-trusted-networks +List of trusted network ranges. Connections from these IPs are +allowed to override their IP addresses and ports (for logging and for +authentication checks). @samp{disable-plaintext-auth} is also ignored +for these networks. Typically you'd specify your IMAP proxy servers +here. +Defaults to @samp{()}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} space-separated-string-list login-access-sockets +List of login access check sockets (e.g. tcpwrap). +Defaults to @samp{()}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean verbose-proctitle? +Show more verbose process titles (in ps). Currently shows user name +and IP address. Useful for seeing who are actually using the IMAP +processes (e.g. shared mailboxes or if same uid is used for multiple +accounts). +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean shutdown-clients? +Should all processes be killed when Dovecot master process shuts down. +Setting this to @code{#f} means that Dovecot can be upgraded without +forcing existing client connections to close (although that could also +be a problem if the upgrade is e.g. because of a security fix). +Defaults to @samp{#t}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer doveadm-worker-count +If non-zero, run mail commands via this many connections to doveadm +server, instead of running them directly in the same process. +Defaults to @samp{0}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string doveadm-socket-path +UNIX socket or host:port used for connecting to doveadm server. +Defaults to @samp{"doveadm-server"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} space-separated-string-list import-environment +List of environment variables that are preserved on Dovecot startup +and passed down to all of its child processes. You can also give +key=value pairs to always set specific settings. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean disable-plaintext-auth? +Disable LOGIN command and all other plaintext authentications unless +SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP +matches the local IP (i.e. you're connecting from the same computer), +the connection is considered secure and plaintext authentication is +allowed. See also ssl=required setting. +Defaults to @samp{#t}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer auth-cache-size +Authentication cache size (e.g. @samp{#e10e6}). 0 means it's disabled. +Note that bsdauth, PAM and vpopmail require @samp{cache-key} to be set +for caching to be used. +Defaults to @samp{0}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string auth-cache-ttl +Time to live for cached data. After TTL expires the cached record +is no longer used, *except* if the main database lookup returns internal +failure. We also try to handle password changes automatically: If +user's previous authentication was successful, but this one wasn't, the +cache isn't used. For now this works only with plaintext +authentication. +Defaults to @samp{"1 hour"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string auth-cache-negative-ttl +TTL for negative hits (user not found, password mismatch). +0 disables caching them completely. +Defaults to @samp{"1 hour"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} space-separated-string-list auth-realms +List of realms for SASL authentication mechanisms that need them. +You can leave it empty if you don't want to support multiple realms. +Many clients simply use the first one listed here, so keep the default +realm first. +Defaults to @samp{()}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string auth-default-realm +Default realm/domain to use if none was specified. This is used for +both SASL realms and appending @@domain to username in plaintext +logins. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string auth-username-chars +List of allowed characters in username. If the user-given username +contains a character not listed in here, the login automatically fails. +This is just an extra check to make sure user can't exploit any +potential quote escaping vulnerabilities with SQL/LDAP databases. If +you want to allow all characters, set this value to empty. +Defaults to @samp{"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@@"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string auth-username-translation +Username character translations before it's looked up from +databases. The value contains series of from -> to characters. For +example @samp{#@@/@@} means that @samp{#} and @samp{/} characters are +translated to @samp{@@}. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string auth-username-format +Username formatting before it's looked up from databases. You can +use the standard variables here, e.g. %Lu would lowercase the username, +%n would drop away the domain if it was given, or @samp{%n-AT-%d} would +change the @samp{@@} into @samp{-AT-}. This translation is done after +@samp{auth-username-translation} changes. +Defaults to @samp{"%Lu"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string auth-master-user-separator +If you want to allow master users to log in by specifying the master +username within the normal username string (i.e. not using SASL +mechanism's support for it), you can specify the separator character +here. The format is then . +UW-IMAP uses @samp{*} as the separator, so that could be a good +choice. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string auth-anonymous-username +Username to use for users logging in with ANONYMOUS SASL +mechanism. +Defaults to @samp{"anonymous"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer auth-worker-max-count +Maximum number of dovecot-auth worker processes. They're used to +execute blocking passdb and userdb queries (e.g. MySQL and PAM). +They're automatically created and destroyed as needed. +Defaults to @samp{30}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string auth-gssapi-hostname +Host name to use in GSSAPI principal names. The default is to use +the name returned by gethostname(). Use @samp{$ALL} (with quotes) to +allow all keytab entries. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string auth-krb5-keytab +Kerberos keytab to use for the GSSAPI mechanism. Will use the +system default (usually /etc/krb5.keytab) if not specified. You may +need to change the auth service to run as root to be able to read this +file. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean auth-use-winbind? +Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon +and @samp{ntlm-auth} helper. +. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} file-name auth-winbind-helper-path +Path for Samba's @samp{ntlm-auth} helper binary. +Defaults to @samp{"/usr/bin/ntlm_auth"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string auth-failure-delay +Time to delay before replying to failed authentications. +Defaults to @samp{"2 secs"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean auth-ssl-require-client-cert? +Require a valid SSL client certificate or the authentication +fails. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean auth-ssl-username-from-cert? +Take the username from client's SSL certificate, using +@code{X509_NAME_get_text_by_NID()} which returns the subject's DN's +CommonName. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} space-separated-string-list auth-mechanisms +List of wanted authentication mechanisms. Supported mechanisms are: +@samp{plain}, @samp{login}, @samp{digest-md5}, @samp{cram-md5}, +@samp{ntlm}, @samp{rpa}, @samp{apop}, @samp{anonymous}, @samp{gssapi}, +@samp{otp}, @samp{skey}, and @samp{gss-spnego}. NOTE: See also +@samp{disable-plaintext-auth} setting. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} space-separated-string-list director-servers +List of IPs or hostnames to all director servers, including ourself. +Ports can be specified as ip:port. The default port is the same as what +director service's @samp{inet-listener} is using. +Defaults to @samp{()}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} space-separated-string-list director-mail-servers +List of IPs or hostnames to all backend mail servers. Ranges are +allowed too, like 10.0.0.10-10.0.0.30. +Defaults to @samp{()}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string director-user-expire +How long to redirect users to a specific server after it no longer +has any connections. +Defaults to @samp{"15 min"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer director-doveadm-port +TCP/IP port that accepts doveadm connections (instead of director +connections) If you enable this, you'll also need to add +@samp{inet-listener} for the port. +Defaults to @samp{0}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string director-username-hash +How the username is translated before being hashed. Useful values +include %Ln if user can log in with or without @@domain, %Ld if mailboxes +are shared within domain. +Defaults to @samp{"%Lu"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string log-path +Log file to use for error messages. @samp{syslog} logs to syslog, +@samp{/dev/stderr} logs to stderr. +Defaults to @samp{"syslog"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string info-log-path +Log file to use for informational messages. Defaults to +@samp{log-path}. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string debug-log-path +Log file to use for debug messages. Defaults to +@samp{info-log-path}. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string syslog-facility +Syslog facility to use if you're logging to syslog. Usually if you +don't want to use @samp{mail}, you'll use local0..local7. Also other +standard facilities are supported. +Defaults to @samp{"mail"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean auth-verbose? +Log unsuccessful authentication attempts and the reasons why they +failed. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean auth-verbose-passwords? +In case of password mismatches, log the attempted password. Valid +values are no, plain and sha1. sha1 can be useful for detecting brute +force password attempts vs. user simply trying the same password over +and over again. You can also truncate the value to n chars by appending +":n" (e.g. sha1:6). +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean auth-debug? +Even more verbose logging for debugging purposes. Shows for example +SQL queries. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean auth-debug-passwords? +In case of password mismatches, log the passwords and used scheme so +the problem can be debugged. Enabling this also enables +@samp{auth-debug}. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean mail-debug? +Enable mail process debugging. This can help you figure out why +Dovecot isn't finding your mails. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean verbose-ssl? +Show protocol level SSL errors. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string log-timestamp +Prefix for each line written to log file. % codes are in +strftime(3) format. +Defaults to @samp{"\"%b %d %H:%M:%S \""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} space-separated-string-list login-log-format-elements +List of elements we want to log. The elements which have a +non-empty variable value are joined together to form a comma-separated +string. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string login-log-format +Login log format. %s contains @samp{login-log-format-elements} +string, %$ contains the data we want to log. +Defaults to @samp{"%$: %s"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string mail-log-prefix +Log prefix for mail processes. See doc/wiki/Variables.txt for list +of possible variables you can use. +Defaults to @samp{"\"%s(%u): \""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string deliver-log-format +Format to use for logging mail deliveries. You can use variables: +@table @code +@item %$ +Delivery status message (e.g. @samp{saved to INBOX}) +@item %m +Message-ID +@item %s +Subject +@item %f +From address +@item %p +Physical size +@item %w +Virtual size. +@end table +Defaults to @samp{"msgid=%m: %$"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string mail-location +Location for users' mailboxes. The default is empty, which means +that Dovecot tries to find the mailboxes automatically. This won't work +if the user doesn't yet have any mail, so you should explicitly tell +Dovecot the full location. + +If you're using mbox, giving a path to the INBOX +file (e.g. /var/mail/%u) isn't enough. You'll also need to tell Dovecot +where the other mailboxes are kept. This is called the "root mail +directory", and it must be the first path given in the +@samp{mail-location} setting. + +There are a few special variables you can use, eg.: + +@table @samp +@item %u +username +@item %n +user part in user@@domain, same as %u if there's no domain +@item %d +domain part in user@@domain, empty if there's no domain +@item %h +home director +@end table + +See doc/wiki/Variables.txt for full list. Some examples: +@table @samp +@item maildir:~/Maildir +@item mbox:~/mail:INBOX=/var/mail/%u +@item mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/% +@end table +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string mail-uid +System user and group used to access mails. If you use multiple, +userdb can override these by returning uid or gid fields. You can use +either numbers or names. . +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string mail-gid + +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string mail-privileged-group +Group to enable temporarily for privileged operations. Currently +this is used only with INBOX when either its initial creation or +dotlocking fails. Typically this is set to "mail" to give access to +/var/mail. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string mail-access-groups +Grant access to these supplementary groups for mail processes. +Typically these are used to set up access to shared mailboxes. Note +that it may be dangerous to set these if users can create +symlinks (e.g. if "mail" group is set here, ln -s /var/mail ~/mail/var +could allow a user to delete others' mailboxes, or ln -s +/secret/shared/box ~/mail/mybox would allow reading it). +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean mail-full-filesystem-access? +Allow full filesystem access to clients. There's no access checks +other than what the operating system does for the active UID/GID. It +works with both maildir and mboxes, allowing you to prefix mailboxes +names with e.g. /path/ or ~user/. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean mmap-disable? +Don't use mmap() at all. This is required if you store indexes to +shared filesystems (NFS or clustered filesystem). +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean dotlock-use-excl? +Rely on @samp{O_EXCL} to work when creating dotlock files. NFS +supports @samp{O_EXCL} since version 3, so this should be safe to use +nowadays by default. +Defaults to @samp{#t}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string mail-fsync +When to use fsync() or fdatasync() calls: +@table @code +@item optimized +Whenever necessary to avoid losing important data +@item always +Useful with e.g. NFS when write()s are delayed +@item never +Never use it (best performance, but crashes can lose data). +@end table +Defaults to @samp{"optimized"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean mail-nfs-storage? +Mail storage exists in NFS. Set this to yes to make Dovecot flush +NFS caches whenever needed. If you're using only a single mail server +this isn't needed. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean mail-nfs-index? +Mail index files also exist in NFS. Setting this to yes requires +@samp{mmap-disable? #t} and @samp{fsync-disable? #f}. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string lock-method +Locking method for index files. Alternatives are fcntl, flock and +dotlock. Dotlocking uses some tricks which may create more disk I/O +than other locking methods. NFS users: flock doesn't work, remember to +change @samp{mmap-disable}. +Defaults to @samp{"fcntl"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} file-name mail-temp-dir +Directory in which LDA/LMTP temporarily stores incoming mails >128 +kB. +Defaults to @samp{"/tmp"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer first-valid-uid +Valid UID range for users. This is mostly to make sure that users can't +log in as daemons or other system users. Note that denying root logins is +hardcoded to dovecot binary and can't be done even if @samp{first-valid-uid} +is set to 0. +Defaults to @samp{500}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer last-valid-uid + +Defaults to @samp{0}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer first-valid-gid +Valid GID range for users. Users having non-valid GID as primary group ID +aren't allowed to log in. If user belongs to supplementary groups with +non-valid GIDs, those groups are not set. +Defaults to @samp{1}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer last-valid-gid + +Defaults to @samp{0}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer mail-max-keyword-length +Maximum allowed length for mail keyword name. It's only forced when +trying to create new keywords. +Defaults to @samp{50}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} colon-separated-file-name-list valid-chroot-dirs +List of directories under which chrooting is allowed for mail +processes (i.e. /var/mail will allow chrooting to /var/mail/foo/bar +too). This setting doesn't affect @samp{login-chroot} +@samp{mail-chroot} or auth chroot settings. If this setting is empty, +"/./" in home dirs are ignored. WARNING: Never add directories here +which local users can modify, that may lead to root exploit. Usually +this should be done only if you don't allow shell access for users. +. +Defaults to @samp{()}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string mail-chroot +Default chroot directory for mail processes. This can be overridden +for specific users in user database by giving /./ in user's home +directory (e.g. /home/./user chroots into /home). Note that usually +there is no real need to do chrooting, Dovecot doesn't allow users to +access files outside their mail directory anyway. If your home +directories are prefixed with the chroot directory, append "/." to +@samp{mail-chroot}. . +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} file-name auth-socket-path +UNIX socket path to master authentication server to find users. +This is used by imap (for shared users) and lda. +Defaults to @samp{"/var/run/dovecot/auth-userdb"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} file-name mail-plugin-dir +Directory where to look up mail plugins. +Defaults to @samp{"/usr/lib/dovecot"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} space-separated-string-list mail-plugins +List of plugins to load for all services. Plugins specific to IMAP, +LDA, etc. are added to this list in their own .conf files. +Defaults to @samp{()}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer mail-cache-min-mail-count +The minimum number of mails in a mailbox before updates are done to +cache file. This allows optimizing Dovecot's behavior to do less disk +writes at the cost of more disk reads. +Defaults to @samp{0}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string mailbox-idle-check-interval +When IDLE command is running, mailbox is checked once in a while to +see if there are any new mails or other changes. This setting defines +the minimum time to wait between those checks. Dovecot can also use +dnotify, inotify and kqueue to find out immediately when changes +occur. +Defaults to @samp{"30 secs"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean mail-save-crlf? +Save mails with CR+LF instead of plain LF. This makes sending those +mails take less CPU, especially with sendfile() syscall with Linux and +FreeBSD. But it also creates a bit more disk I/O which may just make it +slower. Also note that if other software reads the mboxes/maildirs, +they may handle the extra CRs wrong and cause problems. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean maildir-stat-dirs? +By default LIST command returns all entries in maildir beginning +with a dot. Enabling this option makes Dovecot return only entries +which are directories. This is done by stat()ing each entry, so it +causes more disk I/O. + (For systems setting struct @samp{dirent->d_type} this check is free +and it's done always regardless of this setting). +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean maildir-copy-with-hardlinks? +When copying a message, do it with hard links whenever possible. +This makes the performance much better, and it's unlikely to have any +side effects. +Defaults to @samp{#t}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean maildir-very-dirty-syncs? +Assume Dovecot is the only MUA accessing Maildir: Scan cur/ +directory only when its mtime changes unexpectedly or when we can't find +the mail otherwise. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} space-separated-string-list mbox-read-locks +Which locking methods to use for locking mbox. There are four +available: + +@table @code +@item dotlock +Create .lock file. This is the oldest and most NFS-safe +solution. If you want to use /var/mail/ like directory, the users will +need write access to that directory. +@item dotlock-try +Same as dotlock, but if it fails because of permissions or because there +isn't enough disk space, just skip it. +@item fcntl +Use this if possible. Works with NFS too if lockd is used. +@item flock +May not exist in all systems. Doesn't work with NFS. +@item lockf +May not exist in all systems. Doesn't work with NFS. +@end table + +You can use multiple locking methods; if you do the order they're declared +in is important to avoid deadlocks if other MTAs/MUAs are using multiple +locking methods as well. Some operating systems don't allow using some of +them simultaneously. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} space-separated-string-list mbox-write-locks + +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string mbox-lock-timeout +Maximum time to wait for lock (all of them) before aborting. +Defaults to @samp{"5 mins"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string mbox-dotlock-change-timeout +If dotlock exists but the mailbox isn't modified in any way, +override the lock file after this much time. +Defaults to @samp{"2 mins"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean mbox-dirty-syncs? +When mbox changes unexpectedly we have to fully read it to find out +what changed. If the mbox is large this can take a long time. Since +the change is usually just a newly appended mail, it'd be faster to +simply read the new mails. If this setting is enabled, Dovecot does +this but still safely fallbacks to re-reading the whole mbox file +whenever something in mbox isn't how it's expected to be. The only real +downside to this setting is that if some other MUA changes message +flags, Dovecot doesn't notice it immediately. Note that a full sync is +done with SELECT, EXAMINE, EXPUNGE and CHECK commands. +Defaults to @samp{#t}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean mbox-very-dirty-syncs? +Like @samp{mbox-dirty-syncs}, but don't do full syncs even with SELECT, +EXAMINE, EXPUNGE or CHECK commands. If this is set, +@samp{mbox-dirty-syncs} is ignored. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean mbox-lazy-writes? +Delay writing mbox headers until doing a full write sync (EXPUNGE +and CHECK commands and when closing the mailbox). This is especially +useful for POP3 where clients often delete all mails. The downside is +that our changes aren't immediately visible to other MUAs. +Defaults to @samp{#t}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer mbox-min-index-size +If mbox size is smaller than this (e.g. 100k), don't write index +files. If an index file already exists it's still read, just not +updated. +Defaults to @samp{0}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer mdbox-rotate-size +Maximum dbox file size until it's rotated. +Defaults to @samp{2000000}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string mdbox-rotate-interval +Maximum dbox file age until it's rotated. Typically in days. Day +begins from midnight, so 1d = today, 2d = yesterday, etc. 0 = check +disabled. +Defaults to @samp{"1d"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean mdbox-preallocate-space? +When creating new mdbox files, immediately preallocate their size to +@samp{mdbox-rotate-size}. This setting currently works only in Linux +with some filesystems (ext4, xfs). +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string mail-attachment-dir +sdbox and mdbox support saving mail attachments to external files, +which also allows single instance storage for them. Other backends +don't support this for now. + +WARNING: This feature hasn't been tested much yet. Use at your own risk. + +Directory root where to store mail attachments. Disabled, if empty. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer mail-attachment-min-size +Attachments smaller than this aren't saved externally. It's also +possible to write a plugin to disable saving specific attachments +externally. +Defaults to @samp{128000}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string mail-attachment-fs +Filesystem backend to use for saving attachments: +@table @code +@item posix +No SiS done by Dovecot (but this might help FS's own deduplication) +@item sis posix +SiS with immediate byte-by-byte comparison during saving +@item sis-queue posix +SiS with delayed comparison and deduplication. +@end table +Defaults to @samp{"sis posix"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string mail-attachment-hash +Hash format to use in attachment filenames. You can add any text and +variables: @code{%@{md4@}}, @code{%@{md5@}}, @code{%@{sha1@}}, +@code{%@{sha256@}}, @code{%@{sha512@}}, @code{%@{size@}}. Variables can be +truncated, e.g. @code{%@{sha256:80@}} returns only first 80 bits. +Defaults to @samp{"%@{sha1@}"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer default-process-limit + +Defaults to @samp{100}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer default-client-limit + +Defaults to @samp{1000}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer default-vsz-limit +Default VSZ (virtual memory size) limit for service processes. +This is mainly intended to catch and kill processes that leak memory +before they eat up everything. +Defaults to @samp{256000000}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string default-login-user +Login user is internally used by login processes. This is the most +untrusted user in Dovecot system. It shouldn't have access to anything +at all. +Defaults to @samp{"dovenull"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string default-internal-user +Internal user is used by unprivileged processes. It should be +separate from login user, so that login processes can't disturb other +processes. +Defaults to @samp{"dovecot"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string ssl? +SSL/TLS support: yes, no, required. . +Defaults to @samp{"required"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string ssl-cert +PEM encoded X.509 SSL/TLS certificate (public key). +Defaults to @samp{". %d expands to recipient domain. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string hostname +Hostname to use in various parts of sent mails (e.g. in Message-Id) +and in LMTP replies. Default is the system's real hostname@@domain. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean quota-full-tempfail? +If user is over quota, return with temporary failure instead of +bouncing the mail. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} file-name sendmail-path +Binary to use for sending mails. +Defaults to @samp{"/usr/sbin/sendmail"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string submission-host +If non-empty, send mails via this SMTP host[:port] instead of +sendmail. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string rejection-subject +Subject: header to use for rejection mails. You can use the same +variables as for @samp{rejection-reason} below. +Defaults to @samp{"Rejected: %s"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string rejection-reason +Human readable error message for rejection mails. You can use +variables: + +@table @code +@item %n +CRLF +@item %r +reason +@item %s +original subject +@item %t +recipient +@end table +Defaults to @samp{"Your message to <%t> was automatically rejected:%n%r"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string recipient-delimiter +Delimiter character between local-part and detail in email +address. +Defaults to @samp{"+"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string lda-original-recipient-header +Header where the original recipient address (SMTP's RCPT TO: +address) is taken from if not available elsewhere. With dovecot-lda -a +parameter overrides this. A commonly used header for this is +X-Original-To. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean lda-mailbox-autocreate? +Should saving a mail to a nonexistent mailbox automatically create +it?. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} boolean lda-mailbox-autosubscribe? +Should automatically created mailboxes be also automatically +subscribed?. +Defaults to @samp{#f}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} non-negative-integer imap-max-line-length +Maximum IMAP command line length. Some clients generate very long +command lines with huge mailboxes, so you may need to raise this if you +get "Too long argument" or "IMAP command line too large" errors +often. +Defaults to @samp{64000}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string imap-logout-format +IMAP logout format string: +@table @code +@item %i +total number of bytes read from client +@item %o +total number of bytes sent to client. +@end table +Defaults to @samp{"in=%i out=%o"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string imap-capability +Override the IMAP CAPABILITY response. If the value begins with '+', +add the given capabilities on top of the defaults (e.g. +XFOO XBAR). +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string imap-idle-notify-interval +How long to wait between "OK Still here" notifications when client +is IDLEing. +Defaults to @samp{"2 mins"}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string imap-id-send +ID field names and values to send to clients. Using * as the value +makes Dovecot use the default value. The following fields have default +values currently: name, version, os, os-version, support-url, +support-email. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} string imap-id-log +ID fields sent by client to log. * means everything. +Defaults to @samp{""}. +@end deftypevr + +@deftypevr {@code{dovecot-configuration} parameter} space-separated-string-list imap-client-workarounds +Workarounds for various client bugs: + +@table @code +@item delay-newmail +Send EXISTS/RECENT new mail notifications only when replying to NOOP and +CHECK commands. Some clients ignore them otherwise, for example OSX +Mail ( +;;; +;;; 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 . +;;; +;;; Some of the help text was taken from the default dovecot.conf files. + +(define-module (gnu services mail) + #:use-module (gnu services) + #:use-module (gnu services base) + #:use-module (gnu services dmd) + #:use-module (gnu system pam) + #:use-module (gnu system shadow) + #:use-module (gnu packages mail) + #:use-module (gnu packages admin) + #:use-module (gnu packages tls) + #:use-module (guix records) + #:use-module (guix packages) + #:use-module (guix gexp) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) + #:use-module (ice-9 match) + #:export (&dovecot-configuation-error + dovecot-configuration-error? + + dovecot-service + dovecot-configuration + opaque-dovecot-configuration + + dict-configuration + passdb-configuration + userdb-configuration + unix-listener-configuration + fifo-listener-configuration + inet-listener-configuration + service-configuration + protocol-configuration + plugin-configuration + mailbox-configuration + namespace-configuration)) + +;;; Commentary: +;;; +;;; This module provides service definitions for the Dovecot POP3 and IMAP +;;; mail server. +;;; +;;; Code: + +(define-condition-type &dovecot-configuration-error &error + dovecot-configuration-error?) + +(define (dovecot-error message) + (raise (condition (&message (message message)) + (&dovecot-configuration-error)))) +(define (dovecot-configuration-field-error field val) + (dovecot-error + (format #f "Invalid value for field ~a: ~s" field val))) +(define (dovecot-configuration-missing-field kind field) + (dovecot-error + (format #f "~a configuration missing required field ~a" kind field))) + +(define-record-type* + configuration-field make-configuration-field configuration-field? + (name configuration-field-name) + (type configuration-field-type) + (getter configuration-field-getter) + (predicate configuration-field-predicate) + (serializer configuration-field-serializer) + (default-value-thunk configuration-field-default-value-thunk) + (documentation configuration-field-documentation)) + +(define-syntax define-configuration + (lambda (stx) + (define (id ctx part . parts) + (let ((part (syntax->datum part))) + (datum->syntax + ctx + (match parts + (() part) + (parts (symbol-append part + (syntax->datum (apply id ctx parts)))))))) + (syntax-case stx () + ((_ stem (field (field-type def) doc) ...) + (with-syntax (((field-getter ...) + (map (lambda (field) + (id #'stem #'stem #'- field)) + #'(field ...))) + ((field-predicate ...) + (map (lambda (type) + (id #'stem type #'?)) + #'(field-type ...))) + ((field-serializer ...) + (map (lambda (type) + (id #'stem #'serialize- type)) + #'(field-type ...)))) + #`(begin + (define-record-type* #,(id #'stem #'< #'stem #'>) + stem #,(id #'stem #'make- #'stem) #,(id #'stem #'stem #'?) + (field field-getter (default def)) + ...) + (define #,(id #'stem #'stem #'-fields) + (list (configuration-field + (name 'field) + (type 'field-type) + (getter field-getter) + (predicate field-predicate) + (serializer field-serializer) + (default-value-thunk (lambda () def)) + (documentation doc)) + ...)))))))) + +(define (serialize-configuration config fields) + (for-each (lambda (field) + ((configuration-field-serializer field) + (configuration-field-name field) + ((configuration-field-getter field) config))) + fields)) + +(define (validate-configuration config fields) + (for-each (lambda (field) + (let ((val ((configuration-field-getter field) config))) + (unless ((configuration-field-predicate field) val) + (dovecot-configuration-field-error + (configuration-field-name field) val)))) + fields)) + +(define (validate-package field-name package) + (unless (package? package) + (dovecot-configuration-field-error field-name package))) + +(define (uglify-field-name field-name) + (let ((str (symbol->string field-name))) + (string-join (string-split (if (string-suffix? "?" str) + (substring str 0 (1- (string-length str))) + str) + #\-) + "_"))) + +(define (serialize-package field-name val) + #f) + +(define (serialize-field field-name val) + (format #t "~a=~a\n" (uglify-field-name field-name) val)) + +(define (serialize-string field-name val) + (serialize-field field-name val)) + +(define (space-separated-string-list? val) + (and (list? val) + (and-map (lambda (x) + (and (string? x) (not (string-index x #\space)))) + val))) +(define (serialize-space-separated-string-list field-name val) + (serialize-field field-name (string-join val " "))) + +(define (comma-separated-string-list? val) + (and (list? val) + (and-map (lambda (x) + (and (string? x) (not (string-index x #\,)))) + val))) +(define (serialize-comma-separated-string-list field-name val) + (serialize-field field-name (string-join val ","))) + +(define (file-name? val) + (and (string? val) + (string-prefix? "/" val))) +(define (serialize-file-name field-name val) + (serialize-string field-name val)) + +(define (colon-separated-file-name-list? val) + (and (list? val) + ;; Trailing slashes not needed and not + (and-map file-name? val))) +(define (serialize-colon-separated-file-name-list field-name val) + (serialize-field field-name (string-join val ":"))) + +(define (serialize-boolean field-name val) + (serialize-string field-name (if val "yes" "no"))) + +(define (non-negative-integer? val) + (and (exact-integer? val) (not (negative? val)))) +(define (serialize-non-negative-integer field-name val) + (serialize-field field-name val)) + +(define (hours? val) (non-negative-integer? val)) +(define (serialize-hours field-name val) + (serialize-field field-name (format #f "~a hours" val))) + +(define (free-form-fields? val) + (match val + (() #t) + ((((? symbol?) . (? string)) . val) (free-form-fields? val)) + (_ #f))) +(define (serialize-free-form-fields field-name val) + (for-each (match-lambda ((k . v) (serialize-field k v))) val)) + +(define (free-form-args? val) + (match val + (() #t) + ((((? symbol?) . (? string)) . val) (free-form-args? val)) + (_ #f))) +(define (serialize-free-form-args field-name val) + (serialize-field field-name + (string-join + (map (match-lambda ((k . v) (format #t "~a=~a" k v))) val) + " "))) + +(define-configuration dict-configuration + (entries + (free-form-fields '()) + "A list of key-value pairs that this dict should hold.")) + +(define (serialize-dict-configuration field-name val) + (format #t "dict {\n") + (serialize-configuration val dict-configuration-fields) + (format #t "}\n")) + +(define-configuration passdb-configuration + (driver + (string "pam") + "The driver that the passdb should use. Valid values include +@samp{pam}, @samp{passwd}, @samp{shadow}, @samp{bsdauth}, and +@samp{static}.") + (args + (free-form-args '()) + "A list of key-value args to the passdb driver.")) + +(define (serialize-passdb-configuration field-name val) + (format #t "passdb {\n") + (serialize-configuration val passdb-configuration-fields) + (format #t "}\n")) +(define (passdb-configuration-list? val) + (and (list? val) (and-map passdb-configuration? val))) +(define (serialize-passdb-configuration-list field-name val) + (for-each (lambda (val) (serialize-passdb-configuration field-name val)) val)) + +(define-configuration userdb-configuration + (driver + (string "passwd") + "The driver that the userdb should use. Valid values include +@samp{passwd} and @samp{static}.") + (args + (free-form-args '()) + "A list of key-value args to the userdb driver.") + (override-fields + (free-form-args '()) + "Override fields from passwd.")) + +(define (serialize-userdb-configuration field-name val) + (format #t "userdb {\n") + (serialize-configuration val userdb-configuration-fields) + (format #t "}\n")) +(define (userdb-configuration-list? val) + (and (list? val) (and-map userdb-configuration? val))) +(define (serialize-userdb-configuration-list field-name val) + (for-each (lambda (val) (serialize-userdb-configuration field-name val)) val)) + +(define-configuration unix-listener-configuration + (path + (file-name (dovecot-configuration-missing-field 'unix-listener 'path)) + "The file name on which to listen.") + (mode + (string "0600") + "The access mode for the socket.") + (user + (string "") + "The user to own the the socket.") + (group + (string "") + "The group to own the socket.")) + +(define (serialize-unix-listener-configuration field-name val) + (format #t "unix_listener ~a {\n" (unix-listener-configuration-path val)) + (serialize-configuration val (cdr unix-listener-configuration-fields)) + (format #t "}\n")) + +(define-configuration fifo-listener-configuration + (path + (file-name (dovecot-configuration-missing-field 'fifo-listener 'path)) + "The file name on which to listen.") + (mode + (string "0600") + "The access mode for the socket.") + (user + (string "") + "The user to own the the socket.") + (group + (string "") + "The group to own the socket.")) + +(define (serialize-fifo-listener-configuration field-name val) + (format #t "fifo_listener ~a {\n" (fifo-listener-configuration-path val)) + (serialize-configuration val (cdr fifo-listener-configuration-fields)) + (format #t "}\n")) + +(define-configuration inet-listener-configuration + (protocol + (string (dovecot-configuration-missing-field 'inet-listener 'protocol)) + "The protocol to listen for.") + (address + (string "") + "The address on which to listen, or empty for all addresses.") + (port + (non-negative-integer + (dovecot-configuration-missing-field 'inet-listener 'port)) + "The port on which to listen.") + (ssl? + (boolean #t) + "Whether to use SSL for this service; @samp{yes}, @samp{no}, or +@samp{required}.")) + +(define (serialize-inet-listener-configuration field-name val) + (format #t "inet_listener ~a {\n" (inet-listener-configuration-protocol val)) + (serialize-configuration val (cdr inet-listener-configuration-fields)) + (format #t "}\n")) + +(define (listener-configuration? val) + (or (unix-listener-configuration? val) + (fifo-listener-configuration? val) + (inet-listener-configuration? val))) +(define (serialize-listener-configuration field-name val) + (cond + ((unix-listener-configuration? val) + (serialize-unix-listener-configuration field-name val)) + ((fifo-listener-configuration? val) + (serialize-fifo-listener-configuration field-name val)) + ((inet-listener-configuration? val) + (serialize-inet-listener-configuration field-name val)) + (else (dovecot-configuration-field-error field-name val)))) +(define (listener-configuration-list? val) + (and (list? val) (and-map listener-configuration? val))) +(define (serialize-listener-configuration-list field-name val) + (for-each (lambda (val) + (serialize-listener-configuration field-name val)) + val)) + +(define-configuration service-configuration + (kind + (string (dovecot-configuration-missing-field 'service 'kind)) + "The service kind. Valid values include @code{director}, +@code{imap-login}, @code{pop3-login}, @code{lmtp}, @code{imap}, +@code{pop3}, @code{auth}, @code{auth-worker}, @code{dict}, +@code{tcpwrap}, @code{quota-warning}, or anything else.") + (listeners + (listener-configuration-list '()) + "Listeners for the service. A listener is either an +@code{unix-listener-configuration}, a @code{fifo-listener-configuration}, or +an @code{inet-listener-configuration}.") + (service-count + (non-negative-integer 1) + "Number of connections to handle before starting a new process. +Typically the only useful values are 0 (unlimited) or 1. 1 is more +secure, but 0 is faster. .") + (process-min-avail + (non-negative-integer 0) + "Number of processes to always keep waiting for more connections.") + ;; FIXME: Need to be able to take the default for this value from other + ;; parts of the config. + (vsz-limit + (non-negative-integer #e256e6) + "If you set @samp{service-count 0}, you probably need to grow +this.")) + +(define (serialize-service-configuration field-name val) + (format #t "service ~a {\n" (service-configuration-kind val)) + (serialize-configuration val (cdr service-configuration-fields)) + (format #t "}\n")) +(define (service-configuration-list? val) + (and (list? val) (and-map service-configuration? val))) +(define (serialize-service-configuration-list field-name val) + (for-each (lambda (val) + (serialize-service-configuration field-name val)) + val)) + +(define-configuration protocol-configuration + (name + (string (dovecot-configuration-missing-field 'protocol 'name)) + "The name of the protocol.") + (auth-socket-path + (string "/var/run/dovecot/auth-userdb") + "UNIX socket path to master authentication server to find users. +This is used by imap (for shared users) and lda.") + (mail-plugins + (space-separated-string-list '("$mail_plugins")) + "Space separated list of plugins to load.") + (mail-max-userip-connections + (non-negative-integer 10) + "Maximum number of IMAP connections allowed for a user from each IP +address. NOTE: The username is compared case-sensitively.")) + +(define (serialize-protocol-configuration field-name val) + (format #t "protocol ~a {\n" (protocol-configuration-name val)) + (serialize-configuration val (cdr protocol-configuration-fields)) + (format #t "}\n")) +(define (protocol-configuration-list? val) + (and (list? val) (and-map protocol-configuration? val))) +(define (serialize-protocol-configuration-list field-name val) + (serialize-field 'protocols + (string-join (map protocol-configuration-name val) " ")) + (for-each (lambda (val) + (serialize-protocol-configuration field-name val)) + val)) + +(define-configuration plugin-configuration + (entries + (free-form-fields '()) + "A list of key-value pairs that this dict should hold.")) + +(define (serialize-plugin-configuration field-name val) + (format #t "plugin {\n") + (serialize-configuration val plugin-configuration-fields) + (format #t "}\n")) + +(define-configuration mailbox-configuration + (name + (string (error "mailbox name is required")) + "Name for this mailbox.") + + (auto + (string "no") + "@samp{create} will automatically create this mailbox. +@samp{subscribe} will both create and subscribe to the mailbox.") + + (special-use + (space-separated-string-list '()) + "List of IMAP @code{SPECIAL-USE} attributes as specified by RFC 6154. +Valid values are @code{\\All}, @code{\\Archive}, @code{\\Drafts}, +@code{\\Flagged}, @code{\\Junk}, @code{\\Sent}, and @code{\\Trash}.")) + +(define (serialize-mailbox-configuration field-name val) + (format #t "mailbox \"~a\" {\n" (mailbox-configuration-name val)) + (serialize-configuration val (cdr mailbox-configuration-fields)) + (format #t "}\n")) +(define (mailbox-configuration-list? val) + (and (list? val) (and-map mailbox-configuration? val))) +(define (serialize-mailbox-configuration-list field-name val) + (for-each (lambda (val) + (serialize-mailbox-configuration field-name val)) + val)) + +(define-configuration namespace-configuration + (name + (string (error "namespace name is required")) + "Name for this namespace.") + + (type + (string "private") + "Namespace type: @samp{private}, @samp{shared} or @samp{public}.") + + (separator + (string "") + "Hierarchy separator to use. You should use the same separator for +all namespaces or some clients get confused. @samp{/} is usually a good +one. The default however depends on the underlying mail storage +format.") + + (prefix + (string "") + "Prefix required to access this namespace. This needs to be +different for all namespaces. For example @samp{Public/}.") + + (location + (string "") + "Physical location of the mailbox. This is in same format as +mail_location, which is also the default for it.") + + (inbox? + (boolean #f) + "There can be only one INBOX, and this setting defines which +namespace has it.") + + (hidden? + (boolean #f) + "If namespace is hidden, it's not advertised to clients via NAMESPACE +extension. You'll most likely also want to set @samp{list? #f}. This is mostly +useful when converting from another server with different namespaces +which you want to deprecate but still keep working. For example you can +create hidden namespaces with prefixes @samp{~/mail/}, @samp{~%u/mail/} +and @samp{mail/}.") + + (list? + (boolean #t) + "Show the mailboxes under this namespace with LIST command. This +makes the namespace visible for clients that don't support NAMESPACE +extension. The special @code{children} value lists child mailboxes, but +hides the namespace prefix.") + + (subscriptions? + (boolean #t) + "Namespace handles its own subscriptions. If set to @code{#f}, the +parent namespace handles them. The empty prefix should always have this +as @code{#t}.)") + + (mailboxes + (mailbox-configuration-list '()) + "List of predefined mailboxes in this namespace.")) + +(define (serialize-namespace-configuration field-name val) + (format #t "namespace ~a {\n" (namespace-configuration-name val)) + (serialize-configuration val (cdr namespace-configuration-fields)) + (format #t "}\n")) +(define (list-of-namespace-configuration? val) + (and (list? val) (and-map namespace-configuration? val))) +(define (serialize-list-of-namespace-configuration field-name val) + (for-each (lambda (val) + (serialize-namespace-configuration field-name val)) + val)) + +(define-configuration dovecot-configuration + (dovecot + (package dovecot) + "The dovecot package.") + + (listen + (comma-separated-string-list '("*" "::")) + "A list of IPs or hosts where to listen in for connections. @samp{*} +listens in all IPv4 interfaces, @samp{::} listens in all IPv6 +interfaces. If you want to specify non-default ports or anything more +complex, customize the address and port fields of the +@samp{inet-listener} of the specific services you are interested in.") + + (protocols + (protocol-configuration-list + (list (protocol-configuration + (name "imap")))) + "List of protocols we want to serve. Available protocols include +@samp{imap}, @samp{pop3}, and @samp{lmtp}.") + + (services + (service-configuration-list + (list + (service-configuration + (kind "imap-login") + (listeners + (list + (inet-listener-configuration (protocol "imap") (port 143) (ssl? #f)) + (inet-listener-configuration (protocol "imaps") (port 993) (ssl? #t))))) + (service-configuration + (kind "pop3-login") + (listeners + (list + (inet-listener-configuration (protocol "pop3") (port 110) (ssl? #f)) + (inet-listener-configuration (protocol "pop3s") (port 995) (ssl? #t))))) + (service-configuration + (kind "lmtp") + (listeners + (list (unix-listener-configuration (path "lmtp") (mode "0666"))))) + (service-configuration (kind "imap")) + (service-configuration (kind "pop3")) + (service-configuration (kind "auth") + ;; In what could be taken to be a bug, the default value of 1 for + ;; service-count makes it so that a PAM auth worker can't fork off + ;; subprocesses for making blocking queries. The result is that nobody + ;; can log in -- very secure, but not very useful! If we simply omit + ;; the service-count, it will default to the value of + ;; auth-worker-max-count, which is 30, instead of defaulting to 1, which + ;; is the default for all other services. As a hack, bump this value to + ;; 30. + (service-count 30) + (listeners + (list (unix-listener-configuration (path "auth-userdb"))))) + (service-configuration (kind "auth-worker")) + (service-configuration (kind "dict") + (listeners (list (unix-listener-configuration (path "dict"))))))) + "List of services to enable. Available services include @samp{imap}, +@samp{imap-login}, @samp{pop3}, @samp{pop3-login}, @samp{auth}, and +@samp{lmtp}.") + + (dict + (dict-configuration (dict-configuration)) + "Dict configuration, as created by the @code{dict-configuration} +constructor.") + + (passdbs + (passdb-configuration-list (list (passdb-configuration (driver "pam")))) + "List of passdb configurations, each one created by the +@code{passdb-configuration} constructor.") + + (userdbs + (userdb-configuration-list (list (userdb-configuration (driver "passwd")))) + "List of userdb configurations, each one created by the +@code{userdb-configuration} constructor.") + + (plugin-configuration + (plugin-configuration (plugin-configuration)) + "Plug-in configuration, created by the @code{plugin-configuration} +constructor.") + + (namespaces + (list-of-namespace-configuration + (list + (namespace-configuration + (name "inbox") + (prefix "") + (inbox? #t) + (mailboxes + (list + (mailbox-configuration (name "Drafts") (special-use '("\\Drafts"))) + (mailbox-configuration (name "Junk") (special-use '("\\Junk"))) + (mailbox-configuration (name "Trash") (special-use '("\\Trash"))) + (mailbox-configuration (name "Sent") (special-use '("\\Sent"))) + (mailbox-configuration (name "Sent Messages") (special-use '("\\Sent"))) + (mailbox-configuration (name "Drafts") (special-use '("\\Drafts")))))))) + "List of namespaces. Each item in the list is created by the +@code{namespace-configuration} constructor.") + + (base-dir + (file-name "/var/run/dovecot/") + "Base directory where to store runtime data.") + + (login-greeting + (string "Dovecot ready.") + "Greeting message for clients.") + + (login-trusted-networks + (space-separated-string-list '()) + "List of trusted network ranges. Connections from these IPs are +allowed to override their IP addresses and ports (for logging and for +authentication checks). @samp{disable-plaintext-auth} is also ignored +for these networks. Typically you'd specify your IMAP proxy servers +here.") + + (login-access-sockets + (space-separated-string-list '()) + "List of login access check sockets (e.g. tcpwrap).") + + (verbose-proctitle? + (boolean #f) + "Show more verbose process titles (in ps). Currently shows user name +and IP address. Useful for seeing who are actually using the IMAP +processes (e.g. shared mailboxes or if same uid is used for multiple +accounts).") + + (shutdown-clients? + (boolean #t) + "Should all processes be killed when Dovecot master process shuts down. +Setting this to @code{#f} means that Dovecot can be upgraded without +forcing existing client connections to close (although that could also +be a problem if the upgrade is e.g. because of a security fix).") + + (doveadm-worker-count + (non-negative-integer 0) + "If non-zero, run mail commands via this many connections to doveadm +server, instead of running them directly in the same process.") + + (doveadm-socket-path + (string "doveadm-server") + "UNIX socket or host:port used for connecting to doveadm server.") + + (import-environment + (space-separated-string-list '("TZ")) + "List of environment variables that are preserved on Dovecot startup +and passed down to all of its child processes. You can also give +key=value pairs to always set specific settings.") + +;;; Authentication processes + + (disable-plaintext-auth? + (boolean #t) + "Disable LOGIN command and all other plaintext authentications unless +SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP +matches the local IP (i.e. you're connecting from the same computer), +the connection is considered secure and plaintext authentication is +allowed. See also ssl=required setting.") + + (auth-cache-size + (non-negative-integer 0) + "Authentication cache size (e.g. @samp{#e10e6}). 0 means it's disabled. +Note that bsdauth, PAM and vpopmail require @samp{cache-key} to be set +for caching to be used.") + + (auth-cache-ttl + (string "1 hour") + "Time to live for cached data. After TTL expires the cached record +is no longer used, *except* if the main database lookup returns internal +failure. We also try to handle password changes automatically: If +user's previous authentication was successful, but this one wasn't, the +cache isn't used. For now this works only with plaintext +authentication.") + + (auth-cache-negative-ttl + (string "1 hour") + "TTL for negative hits (user not found, password mismatch). +0 disables caching them completely.") + + (auth-realms + (space-separated-string-list '()) + "List of realms for SASL authentication mechanisms that need them. +You can leave it empty if you don't want to support multiple realms. +Many clients simply use the first one listed here, so keep the default +realm first.") + + (auth-default-realm + (string "") + "Default realm/domain to use if none was specified. This is used for +both SASL realms and appending @@domain to username in plaintext +logins.") + + (auth-username-chars + (string + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@") + "List of allowed characters in username. If the user-given username +contains a character not listed in here, the login automatically fails. +This is just an extra check to make sure user can't exploit any +potential quote escaping vulnerabilities with SQL/LDAP databases. If +you want to allow all characters, set this value to empty.") + + (auth-username-translation + (string "") + "Username character translations before it's looked up from +databases. The value contains series of from -> to characters. For +example @samp{#@@/@@} means that @samp{#} and @samp{/} characters are +translated to @samp{@@}.") + + (auth-username-format + (string "%Lu") + "Username formatting before it's looked up from databases. You can +use the standard variables here, e.g. %Lu would lowercase the username, +%n would drop away the domain if it was given, or @samp{%n-AT-%d} would +change the @samp{@@} into @samp{-AT-}. This translation is done after +@samp{auth-username-translation} changes.") + + (auth-master-user-separator + (string "") + "If you want to allow master users to log in by specifying the master +username within the normal username string (i.e. not using SASL +mechanism's support for it), you can specify the separator character +here. The format is then . +UW-IMAP uses @samp{*} as the separator, so that could be a good +choice.") + + (auth-anonymous-username + (string "anonymous") + "Username to use for users logging in with ANONYMOUS SASL +mechanism.") + + (auth-worker-max-count + (non-negative-integer 30) + "Maximum number of dovecot-auth worker processes. They're used to +execute blocking passdb and userdb queries (e.g. MySQL and PAM). +They're automatically created and destroyed as needed.") + + (auth-gssapi-hostname + (string "") + "Host name to use in GSSAPI principal names. The default is to use +the name returned by gethostname(). Use @samp{$ALL} (with quotes) to +allow all keytab entries.") + + (auth-krb5-keytab + (string "") + "Kerberos keytab to use for the GSSAPI mechanism. Will use the +system default (usually /etc/krb5.keytab) if not specified. You may +need to change the auth service to run as root to be able to read this +file.") + + (auth-use-winbind? + (boolean #f) + "Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon +and @samp{ntlm-auth} helper. +.") + + (auth-winbind-helper-path + (file-name "/usr/bin/ntlm_auth") + "Path for Samba's @samp{ntlm-auth} helper binary.") + + (auth-failure-delay + (string "2 secs") + "Time to delay before replying to failed authentications.") + + (auth-ssl-require-client-cert? + (boolean #f) + "Require a valid SSL client certificate or the authentication +fails.") + + (auth-ssl-username-from-cert? + (boolean #f) + "Take the username from client's SSL certificate, using +@code{X509_NAME_get_text_by_NID()} which returns the subject's DN's +CommonName.") + + (auth-mechanisms + (space-separated-string-list '("plain")) + "List of wanted authentication mechanisms. Supported mechanisms are: +@samp{plain}, @samp{login}, @samp{digest-md5}, @samp{cram-md5}, +@samp{ntlm}, @samp{rpa}, @samp{apop}, @samp{anonymous}, @samp{gssapi}, +@samp{otp}, @samp{skey}, and @samp{gss-spnego}. NOTE: See also +@samp{disable-plaintext-auth} setting.") + + (director-servers + (space-separated-string-list '()) + "List of IPs or hostnames to all director servers, including ourself. +Ports can be specified as ip:port. The default port is the same as what +director service's @samp{inet-listener} is using.") + + (director-mail-servers + (space-separated-string-list '()) + "List of IPs or hostnames to all backend mail servers. Ranges are +allowed too, like 10.0.0.10-10.0.0.30.") + + (director-user-expire + (string "15 min") + "How long to redirect users to a specific server after it no longer +has any connections.") + + (director-doveadm-port + (non-negative-integer 0) + "TCP/IP port that accepts doveadm connections (instead of director +connections) If you enable this, you'll also need to add +@samp{inet-listener} for the port.") + + (director-username-hash + (string "%Lu") + "How the username is translated before being hashed. Useful values +include %Ln if user can log in with or without @@domain, %Ld if mailboxes +are shared within domain.") + +;;; Log destination. + + (log-path + (string "syslog") + "Log file to use for error messages. @samp{syslog} logs to syslog, +@samp{/dev/stderr} logs to stderr.") + + (info-log-path + (string "") + "Log file to use for informational messages. Defaults to +@samp{log-path}.") + + (debug-log-path + (string "") + "Log file to use for debug messages. Defaults to +@samp{info-log-path}.") + + (syslog-facility + (string "mail") + "Syslog facility to use if you're logging to syslog. Usually if you +don't want to use @samp{mail}, you'll use local0..local7. Also other +standard facilities are supported.") + + (auth-verbose? + (boolean #f) + "Log unsuccessful authentication attempts and the reasons why they +failed.") + + (auth-verbose-passwords? + (boolean #f) + "In case of password mismatches, log the attempted password. Valid +values are no, plain and sha1. sha1 can be useful for detecting brute +force password attempts vs. user simply trying the same password over +and over again. You can also truncate the value to n chars by appending +\":n\" (e.g. sha1:6).") + + (auth-debug? + (boolean #f) + "Even more verbose logging for debugging purposes. Shows for example +SQL queries.") + + (auth-debug-passwords? + (boolean #f) + "In case of password mismatches, log the passwords and used scheme so +the problem can be debugged. Enabling this also enables +@samp{auth-debug}.") + + (mail-debug? + (boolean #f) + "Enable mail process debugging. This can help you figure out why +Dovecot isn't finding your mails.") + + (verbose-ssl? + (boolean #f) + "Show protocol level SSL errors.") + + (log-timestamp + (string "\"%b %d %H:%M:%S \"") + "Prefix for each line written to log file. % codes are in +strftime(3) format.") + + (login-log-format-elements + (space-separated-string-list + '("user=<%u>" "method=%m" "rip=%r" "lip=%l" "mpid=%e" "%c")) + "List of elements we want to log. The elements which have a +non-empty variable value are joined together to form a comma-separated +string.") + + (login-log-format + (string "%$: %s") + "Login log format. %s contains @samp{login-log-format-elements} +string, %$ contains the data we want to log.") + + (mail-log-prefix + (string "\"%s(%u): \"") + "Log prefix for mail processes. See doc/wiki/Variables.txt for list +of possible variables you can use.") + + (deliver-log-format + (string "msgid=%m: %$") + "Format to use for logging mail deliveries. You can use variables: +@table @code +@item %$ +Delivery status message (e.g. @samp{saved to INBOX}) +@item %m +Message-ID +@item %s +Subject +@item %f +From address +@item %p +Physical size +@item %w +Virtual size. +@end table") + +;;; Mailbox locations and namespaces + + (mail-location + (string "") + "Location for users' mailboxes. The default is empty, which means +that Dovecot tries to find the mailboxes automatically. This won't work +if the user doesn't yet have any mail, so you should explicitly tell +Dovecot the full location. + +If you're using mbox, giving a path to the INBOX +file (e.g. /var/mail/%u) isn't enough. You'll also need to tell Dovecot +where the other mailboxes are kept. This is called the \"root mail +directory\", and it must be the first path given in the +@samp{mail-location} setting. + +There are a few special variables you can use, eg.: + +@table @samp +@item %u +username +@item %n +user part in user@@domain, same as %u if there's no domain +@item %d +domain part in user@@domain, empty if there's no domain +@item %h +home director +@end table + +See doc/wiki/Variables.txt for full list. Some examples: +@table @samp +@item maildir:~/Maildir +@item mbox:~/mail:INBOX=/var/mail/%u +@item mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/% +@end table") + + (mail-uid + (string "") + "System user and group used to access mails. If you use multiple, +userdb can override these by returning uid or gid fields. You can use +either numbers or names. .") + + (mail-gid + (string "") + "") + + (mail-privileged-group + (string "") + "Group to enable temporarily for privileged operations. Currently +this is used only with INBOX when either its initial creation or +dotlocking fails. Typically this is set to \"mail\" to give access to +/var/mail.") + + (mail-access-groups + (string "") + "Grant access to these supplementary groups for mail processes. +Typically these are used to set up access to shared mailboxes. Note +that it may be dangerous to set these if users can create +symlinks (e.g. if \"mail\" group is set here, ln -s /var/mail ~/mail/var +could allow a user to delete others' mailboxes, or ln -s +/secret/shared/box ~/mail/mybox would allow reading it).") + + (mail-full-filesystem-access? + (boolean #f) + "Allow full filesystem access to clients. There's no access checks +other than what the operating system does for the active UID/GID. It +works with both maildir and mboxes, allowing you to prefix mailboxes +names with e.g. /path/ or ~user/.") + +;;; Mail processes + + (mmap-disable? + (boolean #f) + "Don't use mmap() at all. This is required if you store indexes to +shared filesystems (NFS or clustered filesystem).") + + (dotlock-use-excl? + (boolean #t) + "Rely on @samp{O_EXCL} to work when creating dotlock files. NFS +supports @samp{O_EXCL} since version 3, so this should be safe to use +nowadays by default.") + + (mail-fsync + (string "optimized") + "When to use fsync() or fdatasync() calls: +@table @code +@item optimized +Whenever necessary to avoid losing important data +@item always +Useful with e.g. NFS when write()s are delayed +@item never +Never use it (best performance, but crashes can lose data). +@end table") + + (mail-nfs-storage? + (boolean #f) + "Mail storage exists in NFS. Set this to yes to make Dovecot flush +NFS caches whenever needed. If you're using only a single mail server +this isn't needed.") + + (mail-nfs-index? + (boolean #f) + "Mail index files also exist in NFS. Setting this to yes requires +@samp{mmap-disable? #t} and @samp{fsync-disable? #f}.") + + (lock-method + (string "fcntl") + "Locking method for index files. Alternatives are fcntl, flock and +dotlock. Dotlocking uses some tricks which may create more disk I/O +than other locking methods. NFS users: flock doesn't work, remember to +change @samp{mmap-disable}.") + + (mail-temp-dir + (file-name "/tmp") + "Directory in which LDA/LMTP temporarily stores incoming mails >128 +kB.") + + (first-valid-uid + (non-negative-integer 500) + "Valid UID range for users. This is mostly to make sure that users can't +log in as daemons or other system users. Note that denying root logins is +hardcoded to dovecot binary and can't be done even if @samp{first-valid-uid} +is set to 0.") + + (last-valid-uid + (non-negative-integer 0) + "") + + (first-valid-gid + (non-negative-integer 1) + "Valid GID range for users. Users having non-valid GID as primary group ID +aren't allowed to log in. If user belongs to supplementary groups with +non-valid GIDs, those groups are not set.") + + (last-valid-gid + (non-negative-integer 0) + "") + + (mail-max-keyword-length + (non-negative-integer 50) + "Maximum allowed length for mail keyword name. It's only forced when +trying to create new keywords.") + + (valid-chroot-dirs + (colon-separated-file-name-list '()) + "List of directories under which chrooting is allowed for mail +processes (i.e. /var/mail will allow chrooting to /var/mail/foo/bar +too). This setting doesn't affect @samp{login-chroot} +@samp{mail-chroot} or auth chroot settings. If this setting is empty, +\"/./\" in home dirs are ignored. WARNING: Never add directories here +which local users can modify, that may lead to root exploit. Usually +this should be done only if you don't allow shell access for users. +.") + + (mail-chroot + (string "") + "Default chroot directory for mail processes. This can be overridden +for specific users in user database by giving /./ in user's home +directory (e.g. /home/./user chroots into /home). Note that usually +there is no real need to do chrooting, Dovecot doesn't allow users to +access files outside their mail directory anyway. If your home +directories are prefixed with the chroot directory, append \"/.\" to +@samp{mail-chroot}. .") + + (auth-socket-path + (file-name "/var/run/dovecot/auth-userdb") + "UNIX socket path to master authentication server to find users. +This is used by imap (for shared users) and lda.") + + (mail-plugin-dir + (file-name "/usr/lib/dovecot") + "Directory where to look up mail plugins.") + + (mail-plugins + (space-separated-string-list '()) + "List of plugins to load for all services. Plugins specific to IMAP, +LDA, etc. are added to this list in their own .conf files.") + + + (mail-cache-min-mail-count + (non-negative-integer 0) + "The minimum number of mails in a mailbox before updates are done to +cache file. This allows optimizing Dovecot's behavior to do less disk +writes at the cost of more disk reads.") + + (mailbox-idle-check-interval + (string "30 secs") + "When IDLE command is running, mailbox is checked once in a while to +see if there are any new mails or other changes. This setting defines +the minimum time to wait between those checks. Dovecot can also use +dnotify, inotify and kqueue to find out immediately when changes +occur.") + + (mail-save-crlf? + (boolean #f) + "Save mails with CR+LF instead of plain LF. This makes sending those +mails take less CPU, especially with sendfile() syscall with Linux and +FreeBSD. But it also creates a bit more disk I/O which may just make it +slower. Also note that if other software reads the mboxes/maildirs, +they may handle the extra CRs wrong and cause problems.") + + (maildir-stat-dirs? + (boolean #f) + "By default LIST command returns all entries in maildir beginning +with a dot. Enabling this option makes Dovecot return only entries +which are directories. This is done by stat()ing each entry, so it +causes more disk I/O. + (For systems setting struct @samp{dirent->d_type} this check is free +and it's done always regardless of this setting).") + + (maildir-copy-with-hardlinks? + (boolean #t) + "When copying a message, do it with hard links whenever possible. +This makes the performance much better, and it's unlikely to have any +side effects.") + + (maildir-very-dirty-syncs? + (boolean #f) + "Assume Dovecot is the only MUA accessing Maildir: Scan cur/ +directory only when its mtime changes unexpectedly or when we can't find +the mail otherwise.") + + (mbox-read-locks + (space-separated-string-list '("fcntl")) + "Which locking methods to use for locking mbox. There are four +available: + +@table @code +@item dotlock +Create .lock file. This is the oldest and most NFS-safe +solution. If you want to use /var/mail/ like directory, the users will +need write access to that directory. +@item dotlock-try +Same as dotlock, but if it fails because of permissions or because there +isn't enough disk space, just skip it. +@item fcntl +Use this if possible. Works with NFS too if lockd is used. +@item flock +May not exist in all systems. Doesn't work with NFS. +@item lockf +May not exist in all systems. Doesn't work with NFS. +@end table + +You can use multiple locking methods; if you do the order they're declared +in is important to avoid deadlocks if other MTAs/MUAs are using multiple +locking methods as well. Some operating systems don't allow using some of +them simultaneously.") + + (mbox-write-locks + (space-separated-string-list '("dotlock" "fcntl")) + "") + + (mbox-lock-timeout + (string "5 mins") + "Maximum time to wait for lock (all of them) before aborting.") + + (mbox-dotlock-change-timeout + (string "2 mins") + "If dotlock exists but the mailbox isn't modified in any way, +override the lock file after this much time.") + + (mbox-dirty-syncs? + (boolean #t) + "When mbox changes unexpectedly we have to fully read it to find out +what changed. If the mbox is large this can take a long time. Since +the change is usually just a newly appended mail, it'd be faster to +simply read the new mails. If this setting is enabled, Dovecot does +this but still safely fallbacks to re-reading the whole mbox file +whenever something in mbox isn't how it's expected to be. The only real +downside to this setting is that if some other MUA changes message +flags, Dovecot doesn't notice it immediately. Note that a full sync is +done with SELECT, EXAMINE, EXPUNGE and CHECK commands.") + + (mbox-very-dirty-syncs? + (boolean #f) + "Like @samp{mbox-dirty-syncs}, but don't do full syncs even with SELECT, +EXAMINE, EXPUNGE or CHECK commands. If this is set, +@samp{mbox-dirty-syncs} is ignored.") + + (mbox-lazy-writes? + (boolean #t) + "Delay writing mbox headers until doing a full write sync (EXPUNGE +and CHECK commands and when closing the mailbox). This is especially +useful for POP3 where clients often delete all mails. The downside is +that our changes aren't immediately visible to other MUAs.") + + (mbox-min-index-size + (non-negative-integer 0) + "If mbox size is smaller than this (e.g. 100k), don't write index +files. If an index file already exists it's still read, just not +updated.") + + (mdbox-rotate-size + (non-negative-integer #e2e6) + "Maximum dbox file size until it's rotated.") + + (mdbox-rotate-interval + (string "1d") + "Maximum dbox file age until it's rotated. Typically in days. Day +begins from midnight, so 1d = today, 2d = yesterday, etc. 0 = check +disabled.") + + (mdbox-preallocate-space? + (boolean #f) + "When creating new mdbox files, immediately preallocate their size to +@samp{mdbox-rotate-size}. This setting currently works only in Linux +with some filesystems (ext4, xfs).") + + (mail-attachment-dir + (string "") + "sdbox and mdbox support saving mail attachments to external files, +which also allows single instance storage for them. Other backends +don't support this for now. + +WARNING: This feature hasn't been tested much yet. Use at your own risk. + +Directory root where to store mail attachments. Disabled, if empty.") + + (mail-attachment-min-size + (non-negative-integer #e128e3) + "Attachments smaller than this aren't saved externally. It's also +possible to write a plugin to disable saving specific attachments +externally.") + + (mail-attachment-fs + (string "sis posix") + "Filesystem backend to use for saving attachments: +@table @code +@item posix +No SiS done by Dovecot (but this might help FS's own deduplication) +@item sis posix +SiS with immediate byte-by-byte comparison during saving +@item sis-queue posix +SiS with delayed comparison and deduplication. +@end table") + + (mail-attachment-hash + (string "%{sha1}") + "Hash format to use in attachment filenames. You can add any text and +variables: @code{%@{md4@}}, @code{%@{md5@}}, @code{%@{sha1@}}, +@code{%@{sha256@}}, @code{%@{sha512@}}, @code{%@{size@}}. Variables can be +truncated, e.g. @code{%@{sha256:80@}} returns only first 80 bits.") + + (default-process-limit + (non-negative-integer 100) + "") + + (default-client-limit + (non-negative-integer 1000) + "") + + (default-vsz-limit + (non-negative-integer #e256e6) + "Default VSZ (virtual memory size) limit for service processes. +This is mainly intended to catch and kill processes that leak memory +before they eat up everything.") + + (default-login-user + (string "dovenull") + "Login user is internally used by login processes. This is the most +untrusted user in Dovecot system. It shouldn't have access to anything +at all.") + + (default-internal-user + (string "dovecot") + "Internal user is used by unprivileged processes. It should be +separate from login user, so that login processes can't disturb other +processes.") + + (ssl? + (string "required") + "SSL/TLS support: yes, no, required. .") + + (ssl-cert + (string ". %d expands to recipient domain.") + + (hostname + (string "") + "Hostname to use in various parts of sent mails (e.g. in Message-Id) +and in LMTP replies. Default is the system's real hostname@@domain.") + + (quota-full-tempfail? + (boolean #f) + "If user is over quota, return with temporary failure instead of +bouncing the mail.") + + (sendmail-path + (file-name "/usr/sbin/sendmail") + "Binary to use for sending mails.") + + (submission-host + (string "") + "If non-empty, send mails via this SMTP host[:port] instead of +sendmail.") + + (rejection-subject + (string "Rejected: %s") + "Subject: header to use for rejection mails. You can use the same +variables as for @samp{rejection-reason} below.") + + (rejection-reason + (string "Your message to <%t> was automatically rejected:%n%r") + "Human readable error message for rejection mails. You can use +variables: + +@table @code +@item %n +CRLF +@item %r +reason +@item %s +original subject +@item %t +recipient +@end table") + + (recipient-delimiter + (string "+") + "Delimiter character between local-part and detail in email +address.") + + (lda-original-recipient-header + (string "") + "Header where the original recipient address (SMTP's RCPT TO: +address) is taken from if not available elsewhere. With dovecot-lda -a +parameter overrides this. A commonly used header for this is +X-Original-To.") + + (lda-mailbox-autocreate? + (boolean #f) + "Should saving a mail to a nonexistent mailbox automatically create +it?.") + + (lda-mailbox-autosubscribe? + (boolean #f) + "Should automatically created mailboxes be also automatically +subscribed?.") + + + (imap-max-line-length + (non-negative-integer #e64e3) + "Maximum IMAP command line length. Some clients generate very long +command lines with huge mailboxes, so you may need to raise this if you +get \"Too long argument\" or \"IMAP command line too large\" errors +often.") + + (imap-logout-format + (string "in=%i out=%o") + "IMAP logout format string: +@table @code +@item %i +total number of bytes read from client +@item %o +total number of bytes sent to client. +@end table") + + (imap-capability + (string "") + "Override the IMAP CAPABILITY response. If the value begins with '+', +add the given capabilities on top of the defaults (e.g. +XFOO XBAR).") + + (imap-idle-notify-interval + (string "2 mins") + "How long to wait between \"OK Still here\" notifications when client +is IDLEing.") + + (imap-id-send + (string "") + "ID field names and values to send to clients. Using * as the value +makes Dovecot use the default value. The following fields have default +values currently: name, version, os, os-version, support-url, +support-email.") + + (imap-id-log + (string "") + "ID fields sent by client to log. * means everything.") + + (imap-client-workarounds + (space-separated-string-list '()) + "Workarounds for various client bugs: + +@table @code +@item delay-newmail +Send EXISTS/RECENT new mail notifications only when replying to NOOP and +CHECK commands. Some clients ignore them otherwise, for example OSX +Mail ( for CONFIG." + (let* ((config-str + (cond + ((opaque-dovecot-configuration? config) + (opaque-dovecot-configuration-string config)) + (else + (with-output-to-string + (lambda () + (serialize-configuration config + dovecot-configuration-fields)))))) + (config-file (plain-file "dovecot.conf" config-str)) + (dovecot (if (opaque-dovecot-configuration? config) + (opaque-dovecot-configuration-dovecot config) + (dovecot-configuration-dovecot config)))) + (list (dmd-service + (documentation "Run the Dovecot POP3/IMAP mail server.") + (provision '(dovecot)) + (requirement '(networking)) + (start #~(make-forkexec-constructor + (list (string-append #$dovecot "/sbin/dovecot") + "-F" "-c" #$config-file))) + (stop #~(make-forkexec-constructor + (list (string-append #$dovecot "/sbin/dovecot") + "-c" #$config-file "stop"))))))) + +(define %dovecot-pam-services + (list (unix-pam-service "dovecot"))) + +(define dovecot-service-type + (service-type (name 'dovecot) + (extensions + (list (service-extension dmd-root-service-type + dovecot-dmd-service) + (service-extension account-service-type + (const %dovecot-accounts)) + (service-extension pam-root-service-type + (const %dovecot-pam-services)) + (service-extension activation-service-type + (const %dovecot-activation)))))) + +(define* (dovecot-service #:key (config (dovecot-configuration))) + "Return a service that runs @command{dovecot}, a mail server that can run +POP3, IMAP, and LMTP. @var{config} should be a configuration object created +by @code{dovecot-configuration}. @var{config} may also be created by +@code{opaque-dovecot-configuration}, which allows specification of the +@code{dovecot.conf} as a string." + (validate-configuration config + (if (opaque-dovecot-configuration? config) + opaque-dovecot-configuration-fields + dovecot-configuration-fields)) + (service dovecot-service-type config)) + +;; A little helper to make it easier to document all those fields. +(define (generate-documentation) + (define documentation + `((dovecot-configuration + ,dovecot-configuration-fields + (dict dict-configuration) + (namespaces namespace-configuration) + (plugin plugin-configuration) + (passdbs passdb-configuration) + (userdbs userdb-configuration) + (services service-configuration) + (protocols protocol-configuration)) + (dict-configuration ,dict-configuration-fields) + (plugin-configuration ,plugin-configuration-fields) + (passdb-configuration ,passdb-configuration-fields) + (userdb-configuration ,userdb-configuration-fields) + (unix-listener-configuration ,unix-listener-configuration-fields) + (fifo-listener-configuration ,fifo-listener-configuration-fields) + (inet-listener-configuration ,inet-listener-configuration-fields) + (namespace-configuration + ,namespace-configuration-fields + (mailboxes mailbox-configuration)) + (mailbox-configuration ,mailbox-configuration-fields) + (service-configuration + ,service-configuration-fields + (listeners unix-listener-configuration fifo-listener-configuration + inet-listener-configuration)) + (protocol-configuration ,protocol-configuration-fields))) + (define (generate configuration-name) + (match (assq-ref documentation configuration-name) + ((fields . sub-documentation) + (format #t "\nAvailable @code{~a} fields are:\n\n" configuration-name) + (for-each + (lambda (f) + (let ((field-name (configuration-field-name f)) + (field-type (configuration-field-type f)) + (field-docs (string-trim-both + (configuration-field-documentation f))) + (default (catch #t + (configuration-field-default-value-thunk f) + (lambda _ 'nope)))) + (define (escape-chars str chars escape) + (with-output-to-string + (lambda () + (string-for-each (lambda (c) + (when (char-set-contains? chars c) + (display escape)) + (display c)) + str)))) + (define (show-default? val) + (or (string? default) (number? default) (boolean? default) + (and (list? val) (and-map show-default? val)))) + (format #t "@deftypevr {@code{~a} parameter} ~a ~a\n~a\n" + configuration-name field-type field-name field-docs) + (when (show-default? default) + (format #t "Defaults to @samp{~a}.\n" + (escape-chars (format #f "~s" default) + (char-set #\@ #\{ #\}) + #\@))) + (for-each generate (or (assq-ref sub-documentation field-name) '())) + (format #t "@end deftypevr\n\n"))) + fields)))) + (generate 'dovecot-configuration)) -- cgit v1.2.3 From 72a06d3e32700dbf30409e1ace8f3989680dd680 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 18 Dec 2015 10:30:08 +0100 Subject: gnu: goffice: Add "doc" output. * gnu/packages/gnome.scm (goffice)[outputs, arguments]: New fields. (goffice-0.8)[arguments]: Append arguments from GOFFICE. --- gnu/packages/gnome.scm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 1ace5943e5..59e43dcc96 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1470,6 +1470,12 @@ Hints specification (EWMH).") (sha256 (base32 "0nmghi26dpjcw7knkviq031crhm0zjy4k650pv1jj3hb1fmhx9yd")))) (build-system gnu-build-system) + (outputs '("out" + "doc")) ;4.1 MiB of gtk-doc + (arguments + '(#:configure-flags (list (string-append "--with-html-dir=" + (assoc-ref %outputs "doc") + "/share/gtk-doc/html")))) (inputs `(("gtk+" ,gtk+) ("libgsf" ,libgsf) @@ -1507,7 +1513,9 @@ Hints specification (EWMH).") ;; https://bugzilla.gnome.org/show_bug.cgi?id=670316 (substitute* "configure" (("glib/gregex\\.h") "glib.h")) #t) - %standard-phases))) + %standard-phases) + + ,@(package-arguments goffice))) (propagated-inputs ;; libgoffice-0.8.pc mentions libgsf-1 `(("libgsf" ,libgsf))) -- cgit v1.2.3 From be4fbbe01b76da5e9b3b0156ace8f174efe5df3e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 18 Dec 2015 10:46:55 +0100 Subject: gnu: gimp: Add "doc" output. * gnu/packages/gimp.scm (gimp)[outputs, arguments]: New fields. --- gnu/packages/gimp.scm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm index ebf66d478e..00c429ae56 100644 --- a/gnu/packages/gimp.scm +++ b/gnu/packages/gimp.scm @@ -128,6 +128,12 @@ buffers.") (base32 "0bdj0l7a94jqhjnj40m9rqaf622wj905iximivb55iy98639aanq")))) (build-system gnu-build-system) + (outputs '("out" + "doc")) ;8 MiB of gtk-doc HTML + (arguments + '(#:configure-flags (list (string-append "--with-html-dir=" + (assoc-ref %outputs "doc") + "/share/gtk-doc/html")))) (inputs `(("babl" ,babl) ("glib" ,glib) -- cgit v1.2.3 From ae115bc75a4a70f473608a60720c048d771f1885 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 18 Dec 2015 10:57:53 +0100 Subject: gnu: python2-pygtk: Use 'modify-phases'. * gnu/packages/gtk.scm (python2-pygtk)[arguments]: Use 'modify-phases'. --- gnu/packages/gtk.scm | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index c0c0794f4a..ccd9ad57cf 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -1005,29 +1005,28 @@ extensive documentation, including API reference and a tutorial.") ("gtk+" ,gtk+-2))) (arguments `(#:tests? #f - #:phases (alist-cons-after - 'configure 'fix-codegen - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "pygtk-codegen-2.0" - (("^prefix=.*$") - (string-append - "prefix=" - (assoc-ref inputs "python-pygobject") "\n")))) - (alist-cons-after - 'install 'install-pth - (lambda* (#:key inputs outputs #:allow-other-keys) - ;; pygtk's modules are stored in a subdirectory of python's - ;; site-packages directory. Add a .pth file so that python - ;; will add that subdirectory to its module search path. - (let* ((out (assoc-ref outputs "out")) - (site (string-append out "/lib/python" - ,(version-major+minor - (package-version python-2)) - "/site-packages"))) - (call-with-output-file (string-append site "/pygtk.pth") - (lambda (port) - (format port "gtk-2.0~%"))))) - %standard-phases)))) + #:phases (modify-phases %standard-phases + (add-after 'configure 'fix-codegen + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "pygtk-codegen-2.0" + (("^prefix=.*$") + (string-append + "prefix=" + (assoc-ref inputs "python-pygobject") "\n"))))) + (add-after 'install 'install-pth + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; pygtk's modules are stored in a subdirectory of + ;; python's site-packages directory. Add a .pth file so + ;; that python will add that subdirectory to its module + ;; search path. + (let* ((out (assoc-ref outputs "out")) + (site (string-append out "/lib/python" + ,(version-major+minor + (package-version python-2)) + "/site-packages"))) + (call-with-output-file (string-append site "/pygtk.pth") + (lambda (port) + (format port "gtk-2.0~%"))))))))) (home-page "http://www.pygtk.org/") (synopsis "Python bindings for GTK+") (description -- cgit v1.2.3 From 594e7b479a676dc74693b158522af93f5daa088f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 18 Dec 2015 11:01:33 +0100 Subject: gnu: python2-pygtk: Add "doc" output. * gnu/packages/gtk.scm (python2-pygtk)[outputs]: New field. [arguments]: Add 'set-gtk-doc-directory' phase. --- gnu/packages/gtk.scm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index ccd9ad57cf..279c06294e 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -994,6 +994,8 @@ extensive documentation, including API reference and a tutorial.") (base32 "04k942gn8vl95kwf0qskkv6npclfm31d78ljkrkgyqxxcni1w76d")))) (build-system gnu-build-system) + (outputs '("out" + "doc")) ;13 MiB of gtk-doc HTML (native-inputs `(("pkg-config" ,pkg-config))) (inputs @@ -1006,6 +1008,13 @@ extensive documentation, including API reference and a tutorial.") (arguments `(#:tests? #f #:phases (modify-phases %standard-phases + (add-before 'configure 'set-gtk-doc-directory + (lambda* (#:key outputs #:allow-other-keys) + ;; Install documentation to "doc". + (let ((doc (assoc-ref outputs "doc"))) + (substitute* "docs/Makefile.in" + (("TARGET_DIR = \\$\\(datadir\\)") + (string-append "TARGET_DIR = " doc)))))) (add-after 'configure 'fix-codegen (lambda* (#:key inputs #:allow-other-keys) (substitute* "pygtk-codegen-2.0" -- cgit v1.2.3 From bf46f74160739a6810d27815213819786d4d7bfc Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 18 Dec 2015 11:03:28 +0100 Subject: gnu: key-mon: Remove unnecessary propagated inputs. * gnu/packages/key-mon.scm (key-mon)[propagated-inputs]: Rename to... [inputs]: ... this. Propagated was unnecessary since the 'key-mon' program is wrapped. --- gnu/packages/key-mon.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/key-mon.scm b/gnu/packages/key-mon.scm index c890f85f8d..dbfee050a9 100644 --- a/gnu/packages/key-mon.scm +++ b/gnu/packages/key-mon.scm @@ -56,7 +56,7 @@ #:tests? #f)) ;no tests (native-inputs `(("python2-setuptools" ,python2-setuptools))) - (propagated-inputs + (inputs `(("python2-xlib" ,python2-xlib) ("python2-pygtk" ,python2-pygtk) ("librsvg" ,librsvg) -- cgit v1.2.3 From 793bcc1933b7ba35fe5b2771305a682ceb4f933e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 19 Dec 2015 00:22:42 +0100 Subject: gnu: Do not #:select from (gnu packages …) modules. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is to avoid . * gnu/packages/bittorrent.scm: Do not #:select from (gnu packages compression). * gnu/packages/dictionaries.scm: Likewise. * gnu/packages/disk.scm: Likewise. * gnu/packages/gimp.scm: Likewise. * gnu/packages/haskell.scm: Likewise. --- gnu/packages/bittorrent.scm | 5 ++--- gnu/packages/dictionaries.scm | 5 ++--- gnu/packages/disk.scm | 3 +-- gnu/packages/gimp.scm | 3 +-- gnu/packages/haskell.scm | 2 +- 5 files changed, 7 insertions(+), 11 deletions(-) diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm index 2410647818..967580d158 100644 --- a/gnu/packages/bittorrent.scm +++ b/gnu/packages/bittorrent.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer -;;; Copyright © 2014 Ludovic Courtès +;;; Copyright © 2014, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,8 +28,7 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages file) #:use-module (gnu packages linux) - #:use-module ((gnu packages compression) - #:select (zlib)) + #:use-module (gnu packages compression) #:use-module (gnu packages glib) #:use-module (gnu packages gtk) #:use-module (gnu packages check) diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm index 345d0a26c1..1ecfc3f674 100644 --- a/gnu/packages/dictionaries.scm +++ b/gnu/packages/dictionaries.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. ;;; @@ -23,8 +23,7 @@ #:use-module (guix build-system trivial) #:use-module (gnu packages base) #:use-module (gnu packages texinfo) - #:use-module ((gnu packages compression) - #:select (gzip))) + #:use-module (gnu packages compression)) (define-public vera (package diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm index 9d3e2f9e32..d806e0c1cd 100644 --- a/gnu/packages/disk.scm +++ b/gnu/packages/disk.scm @@ -29,8 +29,7 @@ #:use-module (gnu packages python) #:use-module (gnu packages readline) #:use-module (gnu packages guile) - #:use-module ((gnu packages compression) - #:select (lzip))) + #:use-module (gnu packages compression)) (define-public parted (package diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm index 00c429ae56..00feb1c131 100644 --- a/gnu/packages/gimp.scm +++ b/gnu/packages/gimp.scm @@ -27,8 +27,7 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages gnome) #: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) #:use-module (gnu packages photo) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 277bdebed0..a193e96bf0 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -47,7 +47,7 @@ #:use-module (gnu packages ncurses) #:use-module (gnu packages python) #:use-module (gnu packages pcre) - #:use-module ((gnu packages xml) #:select (libxml2)) + #:use-module (gnu packages xml) #:use-module (gnu packages xorg)) (define ghc-bootstrap-x86_64-7.8.4 -- cgit v1.2.3 From 3ac732715dbd37f99c8f7de4bf1b5699fa34d109 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 19 Dec 2015 00:30:33 +0100 Subject: gnu: Use #:prefix when importing (guix licenses). This works around a problem with #:hide, whereby Guile would report 'zlib', 'openssl', and/or 'expat as colliding bindings at run time despite the #:hide. * gnu/packages/linux.scm: Use #:prefix license for (guix licenses). * gnu/packages/haskell.scm: Likewise. --- gnu/packages/haskell.scm | 445 +++++++++++++++++++++++------------------------ gnu/packages/linux.scm | 123 +++++++------ 2 files changed, 282 insertions(+), 286 deletions(-) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index a193e96bf0..843a428dc6 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -21,10 +21,7 @@ (define-module (gnu packages haskell) #:use-module (ice-9 regex) - #:use-module ((guix licenses) #:select (bsd-3 - lgpl2.1 lgpl2.1+ gpl2+ gpl3+ - public-domain - expat)) + #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) @@ -251,7 +248,7 @@ (description "The Glasgow Haskell Compiler (GHC) is a state-of-the-art compiler and interactive environment for the functional language Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-hostname (package @@ -270,7 +267,7 @@ interactive environment for the functional language Haskell.") (synopsis "Hostname in Haskell") (description "Network.HostName is a simple package providing a means to determine the hostname.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-libxml (package @@ -297,7 +294,7 @@ determine the hostname.") (synopsis "Haskell bindings to libxml2") (description "This library provides minimal Haskell binding to libxml2.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-prelude-extras (package @@ -319,7 +316,7 @@ determine the hostname.") (description "This library provides higher order versions of @code{Prelude} classes to ease programming with polymorphic recursion and reduce @code{UndecidableInstances}.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-data-default (package @@ -352,7 +349,7 @@ reduce @code{UndecidableInstances}.") "This package defines a class for types with a default value, and provides instances for types from the base, containers, dlist and old-locale packages.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-data-default-class (package @@ -371,7 +368,7 @@ packages.") (synopsis "Types with default values") (description "This package defines a class for types with default values.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-data-default-instances-base (package @@ -394,7 +391,7 @@ packages.") (description "This package provides default instances for types from the base package.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-data-default-instances-containers (package @@ -416,7 +413,7 @@ package.") (synopsis "Default instances for types in containers") (description "Provides default instances for types from the containers package.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-data-default-instances-dlist (package @@ -439,7 +436,7 @@ package.") (synopsis "Default instances for types in dlist") (description "Provides default instances for types from the dlist package.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-haddock-library (package @@ -469,7 +466,7 @@ modules expose some functionality of it without pulling in the GHC dependency. Please note that the API is likely to change so specify upper bounds in your project if you can't release often. For interacting with Haddock itself, see the ‘haddock’ package.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-haddock-api (package @@ -493,7 +490,7 @@ the ‘haddock’ package.") (synopsis "API for documentation-generation tool Haddock") (description "This package provides an API to Haddock, the documentation-generation tool for Haskell libraries.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-haddock (package @@ -519,7 +516,7 @@ documentation-generation tool for Haskell libraries.") "Documentation-generation tool for Haskell libraries") (description "Haddock is a documentation-generation tool for Haskell libraries.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-simple-reflect (package @@ -546,7 +543,7 @@ variables. Reflection here means that a Haskell expression is turned into a string. The primary aim of this package is teaching and understanding; there are no options for manipulating the reflected expressions beyond showing them.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-multipart (package @@ -570,7 +567,7 @@ them.") "HTTP multipart library") (description "HTTP multipart split out of the cgi package, for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-html (package @@ -593,7 +590,7 @@ them.") (description "This package contains a combinator library for constructing HTML documents.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-xhtml (package @@ -615,7 +612,7 @@ documents.") (description "This package provides combinators for producing XHTML 1.0, including the Strict, Transitional and Frameset variants.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-haskell-src (package @@ -644,7 +641,7 @@ Strict, Transitional and Frameset variants.") source code. The package provides a lexer, parser and pretty-printer, and a definition of a Haskell abstract syntax tree (AST). Common uses of this package are to parse or generate Haskell 98 code.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-alex (package @@ -673,7 +670,7 @@ package are to parse or generate Haskell 98 code.") description of tokens based on regular expressions and generates a Haskell module containing code for scanning text efficiently. It is similar to the tool lex or flex for C/C++.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-cgi (package @@ -704,7 +701,7 @@ tool lex or flex for C/C++.") (synopsis "Library for writing CGI programs") (description "This is a Haskell library for writing CGI programs.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-cmdargs (package @@ -726,7 +723,7 @@ tool lex or flex for C/C++.") (synopsis "Command line argument processing") (description "This library provides an easy way to define command line parsers.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-happy (package @@ -752,7 +749,7 @@ tool lex or flex for C/C++.") (description "Happy is a parser generator for Haskell. Given a grammar specification in BNF, Happy generates Haskell code to parse the grammar. Happy works in a similar way to the yacc tool for C.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-haskell-src-exts (package @@ -786,7 +783,7 @@ extension of the standard @code{haskell-src} package, and handles most registered syntactic extensions to Haskell. All extensions implemented in GHC are supported. Apart from these standard extensions, it also handles regular patterns as per the HaRP extension as well as HSX-style embedded XML syntax.") - (license bsd-3))) + (license license:bsd-3))) (define-public hlint (package @@ -815,7 +812,7 @@ patterns as per the HaRP extension as well as HSX-style embedded XML syntax.") (description "HLint reads Haskell programs and suggests changes that hopefully make them easier to read. HLint also makes it easy to disable unwanted suggestions, and to add your own custom suggestions.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-resourcet (package @@ -846,7 +843,7 @@ unwanted suggestions, and to add your own custom suggestions.") (synopsis "Deterministic allocation and freeing of scarce resources") (description "ResourceT is a monad transformer which creates a region of code where you can safely allocate resources.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-xss-sanitize (package @@ -878,7 +875,7 @@ code where you can safely allocate resources.") (description "This library provides @code{sanitizeXSS}. Run untrusted HTML through @code{Text.HTML.SanitizeXSS.sanitizeXSS} to prevent XSS attacks.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-objectname (package @@ -901,7 +898,7 @@ attacks.") corresponds to the general notion of explicitly handled identifiers for API objects, e.g. a texture object name in OpenGL or a buffer object name in OpenAL.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-sdl (package @@ -927,7 +924,7 @@ multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. It is used by MPEG playback software, emulators, and many popular games, including the award winning Linux port of \"Civilization: Call To Power.\"") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-sdl-mixer (package @@ -959,7 +956,7 @@ award winning Linux port of \"Civilization: Call To Power.\"") supports any number of simultaneously playing channels of 16 bit stereo audio, plus a single channel of music, mixed by the popular MikMod MOD, Timidity MIDI, Ogg Vorbis, and SMPEG MP3 libraries.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-sdl-image (package @@ -990,7 +987,7 @@ MIDI, Ogg Vorbis, and SMPEG MP3 libraries.") (description "SDL_image is an image file loading library. It loads images as SDL surfaces, and supports the following formats: BMP, GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF, XCF, XPM, XV.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-half (package @@ -1011,7 +1008,7 @@ PNG, PNM, TGA, TIFF, XCF, XPM, XV.") (synopsis "Half-precision floating-point computations") (description "This library provides a half-precision floating-point computation library for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-openglraw (package @@ -1043,7 +1040,7 @@ the naming structure of the OpenGL extensions, making it easy to find the right module to import. All API entries are loaded dynamically, so no special C header files are needed for building this package. If an API entry is not found at runtime, a userError is thrown.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-glut (package @@ -1071,7 +1068,7 @@ found at runtime, a userError is thrown.") (description "This library provides Haskell bindings for the OpenGL Utility Toolkit, a window system-independent toolkit for writing OpenGL programs.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-gluraw (package @@ -1095,7 +1092,7 @@ programs.") (description "GLURaw is a raw Haskell binding for the GLU 1.3 OpenGL utility library. It is basically a 1:1 mapping of GLU's C API, intended as a basis for a nicer interface.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-opengl (package @@ -1123,7 +1120,7 @@ basis for a nicer interface.") (description "This package provides Haskell bindings for the OpenGL graphics system (GL, version 4.5) and its accompanying utility library (GLU, version 1.3).") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-streaming-commons (package @@ -1156,7 +1153,7 @@ version 1.3).") (description "Provides low-dependency functionality commonly needed by various Haskell streaming data libraries, such as @code{conduit} and @code{pipe}s.") - (license bsd-3))) + (license license:bsd-3))) (define-public cpphs (package @@ -1184,7 +1181,7 @@ can be distributed with compilers. This version of the C pre-processor is pretty-much feature-complete and compatible with traditional (K&R) pre-processors. Additional features include: a plain-text mode; an option to unlit literate code files; and an option to turn off macro-expansion.") - (license (list lgpl2.1+ gpl3+)))) + (license (list license:lgpl2.1+ license:gpl3+)))) (define-public ghc-reflection (package @@ -1209,7 +1206,7 @@ into terms") propogating configurations that are available at run-time, allowing multiple configurations to coexist without resorting to mutable global variables or @code{System.IO.Unsafe.unsafePerformIO}.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-old-locale (package @@ -1230,7 +1227,7 @@ configurations to coexist without resorting to mutable global variables or (description "This package provides the ability to adapt to locale conventions such as date and time formats.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-old-time (package @@ -1254,7 +1251,7 @@ date and time formats.") (description "Old-time is a package for backwards compatibility with the old @code{time} library. For new projects, the newer @uref{http://hackage.haskell.org/package/time, time library} is recommended.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-data-default-instances-old-locale (package @@ -1278,7 +1275,7 @@ old @code{time} library. For new projects, the newer (synopsis "Default instances for types in old-locale") (description "Provides Default instances for types from the old-locale package.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-dlist (package @@ -1302,7 +1299,7 @@ old @code{time} library. For new projects, the newer "Difference lists are a list-like type supporting O(1) append. This is particularly useful for efficient logging and pretty printing (e.g. with the Writer monad), where list append quickly becomes too expensive.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-extensible-exceptions (package @@ -1322,7 +1319,7 @@ Writer monad), where list append quickly becomes too expensive.") (description "This package provides extensible exceptions for both new and old versions of GHC (i.e., < 6.10).") - (license bsd-3))) + (license license:bsd-3))) (define-public cabal-install (package @@ -1353,7 +1350,7 @@ versions of GHC (i.e., < 6.10).") "The cabal command-line program simplifies the process of managing Haskell software by automating the fetching, configuration, compilation and installation of Haskell libraries and programs.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-mtl (package @@ -1379,7 +1376,7 @@ for various monad transformers, inspired by the paper 'Functional Programming with Overloading and Higher-Order Polymorphism', by Mark P Jones, in 'Advanced School of Functional Programming', 1995. See @uref{http://web.cecs.pdx.edu/~mpj/pubs/springschool.html, the paper}.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-paths (package @@ -1402,7 +1399,7 @@ School of Functional Programming', 1995. See "Knowledge of GHC's installation directories") (description "Knowledge of GHC's installation directories.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-utf8-string (package @@ -1424,7 +1421,7 @@ School of Functional Programming', 1995. See "A UTF8 layer for Strings. The utf8-string package provides operations for encoding UTF8 strings to Word8 lists and back, and for reading and writing UTF8 without truncation.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-setenv (package @@ -1445,7 +1442,7 @@ UTF8 without truncation.") (synopsis "Library for setting environment variables") (description "This package provides a Haskell library for setting environment variables.") - (license expat))) + (license license:expat))) (define-public ghc-x11 (package @@ -1471,7 +1468,7 @@ environment variables.") (description "This package provides Haskell bindings to the X11 graphics library. The bindings are a direct translation of the C bindings.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-x11-xft (package @@ -1499,7 +1496,7 @@ bindings are a direct translation of the C bindings.") (description "Bindings to the Xft, X Free Type interface library, and some Xrender parts.") - (license lgpl2.1))) + (license license:lgpl2.1))) (define-public ghc-stringbuilder (package @@ -1522,7 +1519,7 @@ parts.") (synopsis "Writer monad for multi-line string literals") (description "This package provides a writer monad for multi-line string literals.") - (license expat))) + (license license:expat))) (define-public ghc-zlib (package @@ -1551,7 +1548,7 @@ so it has high performance. It supports the 'zlib', 'gzip' and 'raw' compression formats. It provides a convenient high level API suitable for most tasks and for the few cases where more control is needed it provides access to the full zlib feature set.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-stm (package @@ -1573,7 +1570,7 @@ access to the full zlib feature set.") (synopsis "Software Transactional Memory") (description "A modular composable concurrency abstraction.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-parallel (package @@ -1595,7 +1592,7 @@ access to the full zlib feature set.") (synopsis "Parallel programming library") (description "This package provides a library for parallel programming.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-text (package @@ -1625,7 +1622,7 @@ The 'Text' type represents Unicode character strings, in a time and space-efficient manner. This package provides text processing capabilities that are optimized for performance critical use, both in terms of large data quantities and high speed.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-hashable (package @@ -1656,7 +1653,7 @@ in terms of large data quantities and high speed.") converted to a hash value. This class exists for the benefit of hashing-based data structures. The package provides instances for basic types and a way to combine hash values.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-hunit (package @@ -1679,7 +1676,7 @@ combine hash values.") (description "HUnit is a unit testing framework for Haskell, inspired by the JUnit tool for Java.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-random (package @@ -1700,7 +1697,7 @@ JUnit tool for Java.") (synopsis "Random number library") (description "This package provides a basic random number generation library, including the ability to split random number generators.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-primitive (package @@ -1723,7 +1720,7 @@ library, including the ability to split random number generators.") (synopsis "Primitive memory-related operations") (description "This package provides various primitive memory-related operations.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-test-framework (package @@ -1758,7 +1755,7 @@ cases to be assembled into test groups, run in parallel (but reported in deterministic order, to aid diff interpretation) and filtered and controlled by command line options. All of this comes with colored test output, progress reporting and test statistics output.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-test-framework-hunit (package @@ -1782,7 +1779,7 @@ reporting and test statistics output.") (synopsis "HUnit support for test-framework") (description "This package provides HUnit support for the test-framework package.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-test-framework-quickcheck2 (package @@ -1815,7 +1812,7 @@ reporting and test statistics output.") (description "This packages provides QuickCheck2 support for the test-framework package.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-tf-random (package @@ -1843,7 +1840,7 @@ splittable pseudorandom number generator. The generator is based on a cryptographic hash function built on top of the ThreeFish block cipher. See the paper \"Splittable Pseudorandom Number Generators Using Cryptographic Hashing\" by Claessen, Pałka for details and the rationale of the design.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-transformers-base (package @@ -1872,7 +1869,7 @@ Hashing\" by Claessen, Pałka for details and the rationale of the design.") "Backported versions of types that were added to transformers in transformers 0.3 and 0.4 for users who need strict transformers 0.2 or 0.3 compatibility to run on old versions of the platform.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-transformers-compat (package @@ -1894,7 +1891,7 @@ compatibility to run on old versions of the platform.") added to transformers in transformers 0.3 and 0.4 for users who need strict transformers 0.2 or 0.3 compatibility to run on old versions of the platform, but also need those types.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-unix-time (package @@ -1921,7 +1918,7 @@ but also need those types.") (synopsis "Unix time parser/formatter and utilities") (description "This library provides fast parsing and formatting utilities for Unix time in Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-unix-compat (package @@ -1945,7 +1942,7 @@ for Unix time in Haskell.") "This package provides portable implementations of parts of the unix package. This package re-exports the unix package when available. When it isn't available, portable implementations are used.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-http-types (package @@ -1974,7 +1971,7 @@ isn't available, portable implementations are used.") (synopsis "Generic HTTP types for Haskell") (description "This package provides generic HTTP types for Haskell (for both client and server code).") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-iproute (package @@ -2004,7 +2001,7 @@ both client and server code).") (description "IP Routing Table is a tree of IP ranges to search one of them on the longest match base. It is a kind of TRIE with one way branching removed. Both IPv4 and IPv6 are supported.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-regex-base (package @@ -2028,7 +2025,7 @@ removed. Both IPv4 and IPv6 are supported.") (synopsis "Replaces/Enhances Text.Regex") (description "@code{Text.Regex.Base} provides the interface API for regex-posix, regex-pcre, regex-parsec, regex-tdfa, regex-dfa.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-regex-posix (package @@ -2051,7 +2048,7 @@ regex-posix, regex-pcre, regex-parsec, regex-tdfa, regex-dfa.") (synopsis "POSIX regular expressions for Haskell") (description "This library provides the POSIX regex backend used by the Haskell library @code{regex-base}.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-regex-compat (package @@ -2075,7 +2072,7 @@ Haskell library @code{regex-base}.") (synopsis "Replaces/Enhances Text.Regex") (description "This library provides one module layer over @code{regex-posix} to replace @code{Text.Regex}.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-regex-tdfa-rc (package @@ -2102,7 +2099,7 @@ Haskell library @code{regex-base}.") (synopsis "Tagged DFA regex engine for Haskell") (description "A new all-Haskell \"tagged\" DFA regex engine, inspired by @code{libtre} (fork by Roman Cheplyaka).") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-parsers (package @@ -2137,7 +2134,7 @@ with and building parsing combinator libraries. Given a few simple instances, you get access to a large number of canned definitions. Instances exist for the parsers provided by @code{parsec}, @code{attoparsec} and @code{base}'s @code{Text.Read}.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-trifecta (package @@ -2179,7 +2176,7 @@ the parsers provided by @code{parsec}, @code{attoparsec} and @code{base}'s (synopsis "Parser combinator library with convenient diagnostics") (description "Trifecta is a modern parser combinator library for Haskell, with slicing and Clang-style colored diagnostics.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-attoparsec (package @@ -2210,7 +2207,7 @@ with slicing and Clang-style colored diagnostics.") (description "This library provides a fast parser combinator library, aimed particularly at dealing efficiently with network protocols and complicated text/binary file formats.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-css-text (package @@ -2236,7 +2233,7 @@ complicated text/binary file formats.") (synopsis "CSS parser and renderer") (description "This package provides a CSS parser and renderer for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-zip-archive (package @@ -2266,7 +2263,7 @@ Haskell.") (synopsis "Zip archive library for Haskell") (description "The zip-archive library provides functions for creating, modifying, and extracting files from zip archives in Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-distributive (package @@ -2292,7 +2289,7 @@ modifying, and extracting files from zip archives in Haskell.") (synopsis "Distributive functors for Haskell") (description "This package provides distributive functors for Haskell. Dual to @code{Traversable}.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-cereal (package @@ -2314,7 +2311,7 @@ Dual to @code{Traversable}.") (description "This package provides a binary serialization library, similar to @code{binary}, that introduces an @code{isolate} primitive for parser isolation, and labeled blocks for better error messages.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-comonad (package @@ -2344,7 +2341,7 @@ parser isolation, and labeled blocks for better error messages.") (home-page "http://github.com/ekmett/comonad/") (synopsis "Comonads for Haskell") (description "This library provides @code{Comonad}s for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public hscolour (package @@ -2368,7 +2365,7 @@ code. It currently has six output formats: ANSI terminal codes (optionally XTerm-256colour codes), HTML 3.2 with font tags, HTML 4.01 with CSS, HTML 4.01 with CSS and mouseover annotations, XHTML 1.0 with inline CSS styling, LaTeX, and mIRC chat codes.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-polyparse (package @@ -2398,7 +2395,7 @@ features like good error reporting, arbitrary token type, running state, lazy parsing, and so on. Finally, Text.Parse is a proposed replacement for the standard Read class, for better deserialisation of Haskell values from Strings.") - (license lgpl2.1))) + (license license:lgpl2.1))) (define-public ghc-extra (package @@ -2422,7 +2419,7 @@ Strings.") Haskell libraries. Most functions are simple additions, filling out missing functionality. A few functions are available in later versions of GHC, but this package makes them available back to GHC 7.2.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-profunctors (package @@ -2447,7 +2444,7 @@ this package makes them available back to GHC 7.2.") (home-page "http://github.com/ekmett/profunctors/") (synopsis "Profunctors for Haskell") (description "This library provides profunctors for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-reducers (package @@ -2476,7 +2473,7 @@ this package makes them available back to GHC 7.2.") (synopsis "Semigroups, specialized containers and a general map/reduce framework") (description "This library provides various semigroups, specialized containers and a general map/reduce framework for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-appar (package @@ -2498,7 +2495,7 @@ containers and a general map/reduce framework for Haskell.") (synopsis "Simple applicative parser") (description "This package provides a simple applicative parser in Parsec style.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-safe (package @@ -2520,7 +2517,7 @@ style.") (description "This library provides wrappers around @code{Prelude} and @code{Data.List} functions, such as @code{head} and @code{!!}, that can throw exceptions.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-generic-deriving (package @@ -2541,7 +2538,7 @@ exceptions.") (synopsis "Generalise the deriving mechanism to arbitrary classes") (description "This package provides functionality for generalising the deriving mechanism in Haskell to arbitrary classes.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-pcre-light (package @@ -2566,7 +2563,7 @@ deriving mechanism in Haskell to arbitrary classes.") library for Perl 5 compatible regular expressions. The PCRE library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-logict (package @@ -2591,7 +2588,7 @@ logic programming monad. An adaptation of the two-continuation implementation found in the paper \"Backtracking, Interleaving, and Terminating Monad Transformers\" available @uref{http://okmij.org/ftp/papers/LogicT.pdf, online}.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-xml (package @@ -2613,7 +2610,7 @@ online}.") (home-page "http://code.galois.com") (synopsis "Simple XML library for Haskell") (description "This package provides a simple XML library for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-exceptions (package @@ -2639,7 +2636,7 @@ online}.") (synopsis "Extensible optionally-pure exceptions") (description "This library provides extensible optionally-pure exceptions for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-temporary (package @@ -2664,7 +2661,7 @@ in the Haskelll base library are quite limited. This library just repackages the Cabal implementations of its own temporary file and folder functions so that you can use them without linking against Cabal or depending on it being installed.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-temporary-rc (package @@ -2693,7 +2690,7 @@ they aren't portable to Windows. This library just repackages the Cabal implementations of its own temporary file and folder functions so that you can use them without linking against Cabal or depending on it being installed. This is a better maintained fork of the \"temporary\" package.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-smallcheck (package @@ -2720,7 +2717,7 @@ This is a better maintained fork of the \"temporary\" package.") (description "SmallCheck is a testing library that allows to verify properties for all test cases up to some depth. The test cases are generated automatically by SmallCheck.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-tasty-ant-xml (package @@ -2753,7 +2750,7 @@ automatically by SmallCheck.") "A tasty ingredient to output test results in XML, using the Ant schema. This XML can be consumed by the Jenkins continuous integration framework.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-tasty-smallcheck (package @@ -2779,7 +2776,7 @@ framework.") (synopsis "SmallCheck support for the Tasty test framework") (description "This package provides SmallCheck support for the Tasty Haskell test framework.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-silently (package @@ -2803,7 +2800,7 @@ Haskell test framework.") (synopsis "Prevent writing to stdout") (description "This package provides functions to prevent or capture writing to stdout and other handles.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-quickcheck-instances (package @@ -2832,7 +2829,7 @@ writing to stdout and other handles.") (synopsis "Common quickcheck instances") (description "This package provides QuickCheck instances for types provided by the Haskell Platform.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-quickcheck-unicode (package @@ -2855,7 +2852,7 @@ provided by the Haskell Platform.") (synopsis "Generator functions Unicode-related tests") (description "This package provides generator and shrink functions for testing Unicode-related software.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-quickcheck-io (package @@ -2880,7 +2877,7 @@ testing Unicode-related software.") (synopsis "Use HUnit assertions as QuickCheck properties") (description "This package provides an orphan instance that allows you to use HUnit assertions as QuickCheck properties.") - (license expat))) + (license license:expat))) (define-public ghc-quickcheck (package @@ -2910,7 +2907,7 @@ use HUnit assertions as QuickCheck properties.") "Automatic testing of Haskell programs") (description "QuickCheck is a library for random testing of program properties.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-case-insensitive (package @@ -2944,7 +2941,7 @@ use HUnit assertions as QuickCheck properties.") which can be parameterised by a string-like type like: 'String', 'ByteString', 'Text', etc.. Comparisons of values of the resulting type will be insensitive to cases.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-syb (package @@ -2974,7 +2971,7 @@ to cases.") defines the 'Data' class of types permitting folding and unfolding of constructor applications, instances of this class for primitive types, and a variety of traversals.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-fgl (package @@ -3000,7 +2997,7 @@ variety of traversals.") and function definitions to address graph problems. The basis of the library is an inductive definition of graphs in the style of algebraic data types that encourages inductive, recursive definitions of graph algorithms.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-chasingbottoms (package @@ -3038,7 +3035,7 @@ see the article @uref{http://www.cse.chalmers.se/~nad/publications/danielsson-jansson-mpc2004.html, \"Chasing Bottoms A Case Study in Program Verification in the Presence of Partial and Infinite Values\"}.") - (license expat))) + (license license:expat))) (define-public ghc-unordered-containers (package @@ -3072,7 +3069,7 @@ Partial and Infinite Values\"}.") "Efficient hashing-based container types. The containers have been optimized for performance critical use, both in terms of large data quantities and high speed.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-uniplate (package @@ -3098,7 +3095,7 @@ and high speed.") (description "Uniplate is a library for writing simple and concise generic operations. Uniplate has similar goals to the original Scrap Your Boilerplate work, but is substantially simpler and faster.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-base64-bytestring (package @@ -3120,7 +3117,7 @@ work, but is substantially simpler and faster.") (synopsis "Base64 encoding and decoding for ByteStrings") (description "This library provides fast base64 encoding and decoding for Haskell @code{ByteString}s.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-annotated-wl-pprint (package @@ -3145,7 +3142,7 @@ Haskell @code{ByteString}s.") Wadler's paper \"A Prettier Printer\". This version allows the library user to annotate the text with semantic information, which can later be rendered in a variety of ways.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-ansi-wl-pprint (package @@ -3169,7 +3166,7 @@ a variety of ways.") (description "This is a pretty printing library based on Wadler's paper \"A Prettier Printer\". It has been enhanced with support for ANSI terminal colored output using the ansi-terminal package.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-split (package @@ -3201,7 +3198,7 @@ colored output using the ansi-terminal package.") (description "This package provides a collection of Haskell functions for splitting lists into parts, akin to the @code{split} function found in several mainstream languages.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-parsec (package @@ -3233,7 +3230,7 @@ mainstream languages.") documented, has extensive libraries, good error messages, and is fast. It is defined as a monad transformer that can be stacked on arbitrary monads, and it is also parametric in the input stream type.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-vector (package @@ -3263,7 +3260,7 @@ is also parametric in the input stream type.") (description "This library provides an efficient implementation of Int-indexed arrays (both mutable and immutable), with a powerful loop optimisation framework.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-vector-binary-instances (package @@ -3291,7 +3288,7 @@ types defined in the @code{vector} package, making it easy to serialize vectors to and from disk. We use the generic interface to vectors, so all vector types are supported. Specific instances are provided for unboxed, boxed and storable vectors.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-network (package @@ -3317,7 +3314,7 @@ boxed and storable vectors.") (synopsis "Low-level networking interface") (description "This package provides a low-level networking interface.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-network-uri (package @@ -3348,7 +3345,7 @@ boxed and storable vectors.") (description "This package provides an URI manipulation interface. In 'network-2.6' the 'Network.URI' module was split off from the 'network' package into this package.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-ansi-terminal (package @@ -3370,7 +3367,7 @@ package into this package.") (description "This package provides ANSI terminal support for Haskell. It allows cursor movement, screen clearing, color output showing or hiding the cursor, and changing the title.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-http (package @@ -3404,7 +3401,7 @@ cursor, and changing the title.") "The HTTP package supports client-side web programming in Haskell. It lets you set up HTTP connections, transmitting requests and processing the responses coming back.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-hspec (package @@ -3434,7 +3431,7 @@ responses coming back.") (synopsis "Testing Framework for Haskell") (description "This library provides the Hspec testing framework for Haskell, inspired by the Ruby library RSpec.") - (license expat))) + (license license:expat))) (define-public ghc-hspec-contrib (package @@ -3458,7 +3455,7 @@ Haskell, inspired by the Ruby library RSpec.") (synopsis "Contributed functionality for Hspec") (description "This package provides contributed Hspec extensions.") - (license expat))) + (license license:expat))) (define-public ghc-hspec-expectations (package @@ -3480,7 +3477,7 @@ Haskell, inspired by the Ruby library RSpec.") (synopsis "Catchy combinators for HUnit") (description "This library provides catchy combinators for HUnit, see @uref{https://github.com/sol/hspec-expectations#readme, the README}.") - (license expat))) + (license license:expat))) (define-public hspec-discover (package @@ -3504,7 +3501,7 @@ Haskell, inspired by the Ruby library RSpec.") (synopsis "Automatically discover and run Hspec tests") (description "hspec-discover is a tool which automatically discovers and runs Hspec tests.") - (license expat))) + (license license:expat))) (define-public ghc-hspec-core (package @@ -3536,7 +3533,7 @@ runs Hspec tests.") (synopsis "Testing framework for Haskell") (description "This library exposes internal types and functions that can be used to extend Hspec's functionality.") - (license expat))) + (license license:expat))) (define-public ghc-hspec-meta (package @@ -3566,7 +3563,7 @@ be used to extend Hspec's functionality.") (synopsis "Version of Hspec to test Hspec itself") (description "This library provides a stable version of Hspec which is used to test the in-development version of Hspec.") - (license expat))) + (license license:expat))) (define-public ghc-vault (package @@ -3595,7 +3592,7 @@ access to the storage space behind @code{IORefs}. The data structure is analogous to a bank vault, where you can access different bank boxes with different keys; hence the name. Also provided is a @code{locker} type, representing a store for a single element.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-mmorph (package @@ -3618,7 +3615,7 @@ representing a store for a single element.") (description "This library provides monad morphism utilities, most commonly used for manipulating monad transformer stacks.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-monad-control (package @@ -3644,7 +3641,7 @@ catching") (description "This package defines the type class @code{MonadBaseControl}, a subset of @code{MonadBase} into which generic control operations such as @code{catch} can be lifted from @code{IO} or any other base monad.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-byteorder (package @@ -3668,7 +3665,7 @@ a subset of @code{MonadBase} into which generic control operations such as (description "This package is for working with the native byte-ordering of the system.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-base-compat (package @@ -3693,7 +3690,7 @@ system.") (description "This library provides functions available in later versions of base to a wider range of compilers, without requiring the use of CPP pragmas in your code.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-blaze-builder (package @@ -3721,7 +3718,7 @@ pragmas in your code.") @code{bytestring-0.10.4.0}. This implementation is mostly intended as a bridge to the new builder, so that code that uses the old interface can interoperate with code that uses the new implementation.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-blaze-markup (package @@ -3746,7 +3743,7 @@ interoperate with code that uses the new implementation.") (synopsis "Fast markup combinator library for Haskell") (description "This library provides core modules of a markup combinator library for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-blaze-html (package @@ -3771,7 +3768,7 @@ library for Haskell.") (home-page "http://jaspervdj.be/blaze") (synopsis "Fast HTML combinator library") (description "This library provides HTML combinators for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-easy-file (package @@ -3792,7 +3789,7 @@ library for Haskell.") "http://github.com/kazu-yamamoto/easy-file") (synopsis "File handling library for Haskell") (description "This library provides file handling utilities for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-async (package @@ -3821,7 +3818,7 @@ library for Haskell.") asynchronously, and wait for their results. It is a higher-level interface over threads in Haskell, in which @code{Async a} is a concurrent thread that will eventually deliver a value of type @code{a}.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-fingertree (package @@ -3846,7 +3843,7 @@ representation with arbitrary annotations, for use as a base for implementations of various collection types. It includes examples, as described in section 4 of Ralf Hinze and Ross Paterson, \"Finger trees: a simple general-purpose data structure\".") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-optparse-applicative (package @@ -3869,7 +3866,7 @@ simple general-purpose data structure\".") (synopsis "Utilities and combinators for parsing command line options") (description "This package provides utilities and combinators for parsing command line options in Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-base-orphans (package @@ -3893,7 +3890,7 @@ command line options in Haskell.") (synopsis "Orphan instances for backwards compatibility") (description "This package defines orphan instances that mimic instances available in later versions of base to a wider (older) range of compilers.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-auto-update (package @@ -3914,7 +3911,7 @@ available in later versions of base to a wider (older) range of compilers.") (synopsis "Efficiently run periodic, on-demand actions") (description "This library provides mechanisms to efficiently run periodic, on-demand actions in Haskell.") - (license expat))) + (license license:expat))) (define-public ghc-tagged (package @@ -3935,7 +3932,7 @@ periodic, on-demand actions in Haskell.") (synopsis "Haskell phantom types to avoid passing dummy arguments") (description "This library provides phantom types for Haskell 98, to avoid having to unsafely pass dummy arguments.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-unbounded-delays (package @@ -3958,7 +3955,7 @@ having to unsafely pass dummy arguments.") Haskell base library use the bounded @code{Int} type for specifying the delay or timeout period. This package provides alternative functions which use the unbounded @code{Integer} type.") - (license bsd-3))) + (license license:bsd-3))) ;; This package builds `clock` without tests, since the tests rely on tasty ;; and tasty-quickcheck, which in turn require clock to build. When tasty and @@ -3983,7 +3980,7 @@ unbounded @code{Integer} type.") (synopsis "High-resolution clock for Haskell") (description "A package for convenient access to high-resolution clock and timer functions of different operating systems via a unified API.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-clock (package @@ -4006,7 +4003,7 @@ timer functions of different operating systems via a unified API.") (synopsis "High-resolution clock for Haskell") (description "A package for convenient access to high-resolution clock and timer functions of different operating systems via a unified API.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-charset (package @@ -4031,7 +4028,7 @@ timer functions of different operating systems via a unified API.") (synopsis "Fast unicode character sets for Haskell") (description "This package provides fast unicode character sets for Haskell, based on complemented PATRICIA tries.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-bytestring-builder (package @@ -4053,7 +4050,7 @@ Haskell, based on complemented PATRICIA tries.") (description "This package provides the bytestring builder that is debuting in bytestring-0.10.4.0, which should be shipping with GHC 7.8. Compatibility package for older packages.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-nats (package @@ -4076,7 +4073,7 @@ Compatibility package for older packages.") (home-page "https://hackage.haskell.org/package/nats") (synopsis "Natural numbers") (description "This library provides the natural numbers for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-void (package @@ -4103,7 +4100,7 @@ Compatibility package for older packages.") (description "A Haskell 98 logically uninhabited data type, used to indicate that a given term should not exist.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-kan-extensions (package @@ -4134,7 +4131,7 @@ given term should not exist.") (synopsis "Kan extensions library") (description "This library provides Kan extensions, Kan lifts, various forms of the Yoneda lemma, and (co)density (co)monads for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-statevar (package @@ -4157,7 +4154,7 @@ forms of the Yoneda lemma, and (co)density (co)monads for Haskell.") (synopsis "State variables for Haskell") (description "This package provides state variables, which are references in the @code{IO} monad, like @code{IORef}s or parts of the OpenGL state.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-lens (package @@ -4208,7 +4205,7 @@ in the @code{IO} monad, like @code{IORef}s or parts of the OpenGL state.") in @code{Control.Lens} provide a highly generic toolbox for composing families of getters, folds, isomorphisms, traversals, setters and lenses and their indexed variants.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-tagsoup (package @@ -4237,7 +4234,7 @@ specification, and can be used to parse either well-formed XML, or unstructured and malformed HTML from the web. The library also provides useful functions to extract information from an HTML document, making it ideal for screen-scraping.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-digest (package @@ -4264,7 +4261,7 @@ for screen-scraping.") "This package provides efficient cryptographic hash implementations for strict and lazy bytestrings. For now, CRC32 and Adler32 are supported; they are implemented as FFI bindings to efficient code from zlib.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-cheapskate (package @@ -4301,7 +4298,7 @@ Haskell. It aims to process Markdown efficiently and in the most forgiving possible way. It is designed to deal with any input, including garbage, with linear performance. Output is sanitized by default for protection against XSS attacks.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-bifunctors (package @@ -4324,7 +4321,7 @@ attacks.") (home-page "http://github.com/ekmett/bifunctors/") (synopsis "Bifunctors for Haskell") (description "This package provides bifunctors for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-semigroupoids (package @@ -4362,7 +4359,7 @@ Finally, to work with these weaker structures it is beneficial to have containers that can provide stronger guarantees about their contents, so versions of @code{Traversable} and @code{Foldable} that can be folded with just a @code{Semigroup} are added.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-contravariant (package @@ -4389,7 +4386,7 @@ just a @code{Semigroup} are added.") "http://github.com/ekmett/contravariant/") (synopsis "Contravariant functors") (description "Contravariant functors for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-semigroups (package @@ -4422,7 +4419,7 @@ monoid in that there might not exist an identity element. It also (originally) generalized a group (a monoid with all inverses) to a type where every element did not have to have an inverse, thus the name semigroup.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-free (package @@ -4459,7 +4456,7 @@ whose nodes are labeled with the constructors of @code{f}. The word \"free\" is used in the sense of \"unrestricted\" rather than \"zero-cost\": @code{Free f} makes no constraining assumptions beyond those given by @code{f} and the definition of @code{Monad}.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-adjunctions (package @@ -4492,7 +4489,7 @@ definition of @code{Monad}.") (synopsis "Adjunctions and representable functors") (description "This library provides adjunctions and representable functors for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-fast-logger (package @@ -4518,7 +4515,7 @@ for Haskell.") (home-page "https://hackage.haskell.org/package/fast-logger") (synopsis "Fast logging system") (description "This library provides a fast logging system for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-doctest (package @@ -4553,7 +4550,7 @@ for Haskell.") (description "The doctest program checks examples in source code comments. It is modeled after doctest for Python, see @uref{http://docs.python.org/library/doctest.html, the Doctest website}.") - (license expat))) + (license license:expat))) (define-public ghc-lifted-base (package @@ -4584,7 +4581,7 @@ library lifted to any instance of @code{MonadBase} or @code{MonadBaseControl}. Note that not all modules from @code{base} are converted yet. The package includes a copy of the @code{monad-peel} test suite written by Anders Kaseorg.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-word8 (package @@ -4606,7 +4603,7 @@ Kaseorg.") (home-page "http://hackage.haskell.org/package/word8") (synopsis "Word8 library for Haskell") (description "Word8 library to be used with @code{Data.ByteString}.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-stringsearch (package @@ -4629,7 +4626,7 @@ Kaseorg.") for substrings in strict or lazy @code{ByteStrings}. It also provides functions for breaking or splitting on substrings and replacing all occurrences of a substring (the first in case of overlaps) with another.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-tasty-quickcheck (package @@ -4658,7 +4655,7 @@ occurrences of a substring (the first in case of overlaps) with another.") (synopsis "QuickCheck support for the Tasty test framework") (description "This package provides QuickCheck support for the Tasty Haskell test framework.") - (license expat))) + (license license:expat))) (define-public ghc-tasty-golden (package @@ -4693,7 +4690,7 @@ Haskell test framework.") IO action that writes its result to a file. To pass the test, this output file should be identical to the corresponding 'golden' file, which contains the correct result for the test.") - (license expat))) + (license license:expat))) (define-public ghc-tasty (package @@ -4725,7 +4722,7 @@ the correct result for the test.") (description "Tasty is a modern testing framework for Haskell. It lets you combine your unit tests, golden tests, QuickCheck/SmallCheck properties, and any other types of tests into a single test suite.") - (license expat))) + (license license:expat))) (define-public ghc-tasty-hunit (package @@ -4748,7 +4745,7 @@ and any other types of tests into a single test suite.") (synopsis "HUnit support for the Tasty test framework") (description "This package provides HUnit support for the Tasty Haskell test framework.") - (license expat))) + (license license:expat))) (define-public ghc-cookie (package @@ -4779,7 +4776,7 @@ test framework.") (home-page "http://github.com/snoyberg/cookie") (synopsis "HTTP cookie parsing and rendering") (description "HTTP cookie parsing and rendering library for Haskell.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-scientific (package @@ -4815,7 +4812,7 @@ the number type @code{Scientific}. Scientific numbers are arbitrary precision and space efficient. They are represented using @uref{http://en.wikipedia.org/wiki/Scientific_notation, scientific notation}.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-aeson (package @@ -4851,7 +4848,7 @@ notation}.") (description "This package provides a JSON parsing and encoding library for Haskell, optimized for ease of use and high performance. (A note on naming: in Greek mythology, Aeson was the father of Jason.)") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-wai (package @@ -4885,7 +4882,7 @@ naming: in Greek mythology, Aeson was the father of Jason.)") (description "This package provides a Web Application Interface (WAI) library for the Haskell language. It defines a common protocol for communication between web applications and web servers.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-wai-logger (package @@ -4919,7 +4916,7 @@ communication between web applications and web servers.") (home-page "http://hackage.haskell.org/package/wai-logger") (synopsis "Logging system for WAI") (description "This package provides the logging system for WAI.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-wai-extra (package @@ -4967,7 +4964,7 @@ communication between web applications and web servers.") (synopsis "Some basic WAI handlers and middleware") (description "This library provides basic WAI handlers and middleware functionality.") - (license expat))) + (license license:expat))) (define-public ghc-deepseq-generics (package @@ -5000,7 +4997,7 @@ functionality.") "This package provides a @code{GHC.Generics}-based @code{Control.DeepSeq.Generics.genericRnf} function which can be used for providing an 'rnf' implementation.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-pandoc-types (package @@ -5025,7 +5022,7 @@ providing an 'rnf' implementation.") "This module defines the @code{Pandoc} data structure, which is used by pandoc to represent structured documents. It also provides functions for building up, manipulating and serialising @code{Pandoc} structures.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-texmath (package @@ -5058,7 +5055,7 @@ Office). Support is also included for converting math formats to pandoc's native format (allowing conversion, via pandoc, to a variety of different markup formats). The TeX reader supports basic LaTeX and AMS extensions, and it can parse and apply LaTeX macros.") - (license gpl2+))) + (license license:gpl2+))) (define-public ghc-regex-pcre-builtin (package @@ -5081,7 +5078,7 @@ it can parse and apply LaTeX macros.") "This package is an enhancement of the @code{Text.Regex} library, providing the PCRE backend to accompany regex-base, with bundled code from @url{http://www.pcre.org}.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-diff (package @@ -5100,7 +5097,7 @@ providing the PCRE backend to accompany regex-base, with bundled code from (description "This package provides an implementation of the standard diff algorithm, and utilities for pretty printing.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-highlighting-kate (package @@ -5132,7 +5129,7 @@ from @uref{http://kate-editor.org/, Kate syntax descriptions}, so any syntax supported by Kate can be added. An (optional) command-line program is provided, along with a utility for generating new parsers from Kate XML syntax descriptions.") - (license gpl2+))) + (license license:gpl2+))) (define-public ghc-cmark (package @@ -5157,7 +5154,7 @@ descriptions.") @uref{https://github.com/jgm/cmark, libcmark}, the reference parser for CommonMark, a fully specified variant of Markdown. It includes sources for libcmark (0.21.0) and does not require prior installation of the C library.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-executable-path (package @@ -5179,7 +5176,7 @@ libcmark (0.21.0) and does not require prior installation of the C library.") \"However, this is hard-to-impossible to implement on some non-Unix OSes, so instead, for maximum portability, we just return the leafname of the program as invoked.\" This library tries to provide the missing path.") - (license public-domain))) + (license license:public-domain))) (define-public ghc-enclosed-exceptions (package @@ -5208,7 +5205,7 @@ as invoked.\" This library tries to provide the missing path.") "This library implements a technique to catch all exceptions raised within an enclosed computation, while remaining responsive to (external) asynchronous exceptions.") - (license expat))) + (license license:expat))) (define-public ghc-packedstring (package @@ -5237,7 +5234,7 @@ asynchronous exceptions.") (synopsis "Library for packed strings") (description "This deprecated library provides an implementation of packed strings.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-th-lift (package @@ -5258,7 +5255,7 @@ asynchronous exceptions.") (description "This is a Haskell library to derive Template Haskell's Lift class for datatypes.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-th-expand-syns (package @@ -5280,7 +5277,7 @@ datatypes.") (description "This package enables users to expand type synonyms in Template Haskell @dfn{abstract syntax trees} (ASTs).") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-th-reify-many (package @@ -5306,7 +5303,7 @@ datatypes.") declarations. The main intended use case is for enumerating the names of datatypes reachable from an initial datatype, and passing these names to some function which generates instances.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-th-orphans (package @@ -5334,7 +5331,7 @@ function which generates instances.") instances for @code{Ord} and @code{Lift}, as well as a few missing @code{Show} and @code{Eq} instances. These instances used to live in the haskell-src-meta package, and that's where the version number started.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-haskell-src-meta (package @@ -5358,7 +5355,7 @@ package, and that's where the version number started.") (description "This package provides tools to parse Haskell sources to the template-haskell abstract syntax.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-aeson-qq (package @@ -5389,7 +5386,7 @@ template-haskell abstract syntax.") "aeson-qq provides a JSON quasiquoter for Haskell. This package exposes the function @code{aesonQQ} that compile-time converts a string representation of a JSON value into a @code{Data.Aeson.Value}.") - (license expat))) + (license license:expat))) (define-public ghc-conduit (package @@ -5423,7 +5420,7 @@ production, transformation, and consumption of streams of data in constant memory. It is an alternative to lazy I/O which guarantees deterministic resource handling, and fits in the same general solution space as enumerator/iteratee and pipes." ) - (license expat))) + (license license:expat))) (define-public ghc-logging-facade (package @@ -5445,7 +5442,7 @@ enumerator/iteratee and pipes." ) (description "This package provides a simple logging abstraction that allows multiple back-ends.") - (license expat))) + (license license:expat))) (define-public ghc-mockery (package @@ -5468,7 +5465,7 @@ back-ends.") (synopsis "Support functions for automated testing") (description "The mockery package provides support functions for automated testing.") - (license expat))) + (license license:expat))) (define-public ghc-yaml (package @@ -5502,7 +5499,7 @@ back-ends.") (synopsis "Parsing and rendering YAML documents") (description "This package provides a library to parse and render YAML documents.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-filemanip (package @@ -5525,7 +5522,7 @@ back-ends.") "This package provides a Haskell library for working with files and directories. It includes code for pattern matching, finding files, modifying file contents, and more.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-mmap (package @@ -5546,7 +5543,7 @@ file contents, and more.") devices to be lazily loaded into memory as strict or lazy @code{ByteStrings}, @code{ForeignPtrs} or plain @code{Ptrs}, using the virtual memory subsystem to do on-demand loading.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-juicypixels (package @@ -5572,7 +5569,7 @@ do on-demand loading.") (description "This library can load and store images in PNG, Bitmap, JPEG, Radiance, TIFF and GIF formats.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-sha (package @@ -5599,7 +5596,7 @@ SHA-based HMAC routines. The functions have been tested against most of the NIST and RFC test vectors for the various functions. While some attention has been paid to performance, these do not presently reach the speed of well-tuned libraries, like OpenSSL.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-hslua (package @@ -5630,7 +5627,7 @@ libraries, like OpenSSL.") (description "The Scripting.Lua module is a wrapper of the Lua language interpreter as described in @url{http://www.lua.org/}.") - (license expat))) + (license license:expat))) (define-public ghc-mime-types (package @@ -5651,7 +5648,7 @@ described in @url{http://www.lua.org/}.") (synopsis "Basic MIME type handling types and functions") (description "This library provides basic MIME type handling types and functions.") - (license expat))) + (license license:expat))) (define-public ghc-http-client (package @@ -5692,7 +5689,7 @@ described in @url{http://www.lua.org/}.") (description "This package provides an HTTP client engine, intended as a base layer for more user-friendly packages.") - (license expat))) + (license license:expat))) (define-public ghc-byteable (package @@ -5712,7 +5709,7 @@ for more user-friendly packages.") "This package provides an abstract class to manipulate sequence of bytes. The use case of this class is abstracting manipulation of types that are just wrapping a bytestring with stronger and more meaniful name.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-hourglass (package @@ -5741,7 +5738,7 @@ performant API. The backbone of the library are the @code{Timeable} and @code{Time} type classes. Each @code{Timeable} instances can be converted to a type that has a @code{Time} instances, and thus are different representations of current time.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-pem (package @@ -5769,7 +5766,7 @@ representations of current time.") (description "This library provides readers and writers for the @dfn{Privacy Enhanced Mail} (PEM) format.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-asn1-types (package @@ -5792,7 +5789,7 @@ Mail} (PEM) format.") (description "The package provides the standard types for dealing with the ASN.1 format.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-asn1-encoding (package @@ -5820,7 +5817,7 @@ format.") (description "This package provides a reader and writer for ASN1 data in raw form with supports for high level forms of ASN1 (BER, and DER).") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-asn1-parse (package @@ -5843,7 +5840,7 @@ supports for high level forms of ASN1 (BER, and DER).") (description "This package provides a simple monadic parser for ASN1 stream types, when ASN1 pattern matching is not convenient.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-tasty-kat (package @@ -5867,7 +5864,7 @@ when ASN1 pattern matching is not convenient.") (description "This package provides a @dfn{Known Answer Tests} (KAT) framework for tasty.") - (license expat))) + (license license:expat))) (define-public ghc-cryptonite (package @@ -5897,7 +5894,7 @@ tasty.") It supports a wide range of symmetric ciphers, cryptographic hash functions, public key algorithms, key derivation numbers, cryptographic random number generators, and more.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-memory (package @@ -5923,7 +5920,7 @@ polymorphic byte array management and manipulation functions. It contains a polymorphic byte array abstraction and functions similar to strict ByteString, different type of byte array abstraction, raw memory IO operations (memory set, memory copy, ..) and more") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-x509 (package @@ -5953,7 +5950,7 @@ set, memory copy, ..) and more") (synopsis "X509 reader and writer") (description "This library provides functions to read and write X509 certificates.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-x509-store (package @@ -5980,7 +5977,7 @@ set, memory copy, ..) and more") (description "This package provides functions for accessing and storing X.509 collections, certificates, revocation lists, and exception lists.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-x509-validation (package @@ -6012,7 +6009,7 @@ collections, certificates, revocation lists, and exception lists.") (description "This package provides functions for X.509 certificate and revocation list validation.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-x509-system (package @@ -6037,7 +6034,7 @@ list validation.") (description "This package provides a library to handle system accessors and storage for X.509 certificates.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-tls (package @@ -6080,7 +6077,7 @@ type system, high level constructions and common Haskell features. Currently implement the SSL3.0, TLS1.0, TLS1.1 and TLS1.2 protocol, and support RSA and Ephemeral (Elliptic curve and regular) Diffie Hellman key exchanges, and many extensions.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-socks (package @@ -6101,7 +6098,7 @@ extensions.") (synopsis "SOCKS proxy (version 5) implementation.") (description "This library provides a SOCKS proxy (version 5) implementation.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-connection (package @@ -6132,7 +6129,7 @@ extensions.") "This package provides a simple network library for all your connection needs. It provides a very simple API to create sockets to a destination with the choice of SSL/TLS, and SOCKS.") - (license bsd-3))) + (license license:bsd-3))) (define-public ghc-http-client-tls (package @@ -6164,7 +6161,7 @@ the choice of SSL/TLS, and SOCKS.") "This package provides a backend for the http-client package using the connection and TLS libraries. It is intended for use by higher-level libraries, such as http-conduit.") - (license expat))) + (license license:expat))) (define-public ghc-pandoc (package @@ -6237,7 +6234,7 @@ LaTeX, DocBook, and many more. Pandoc extends standard Markdown syntax with footnotes, embedded LaTeX, definition lists, tables, and other features. A compatibility mode is provided for those who need a drop-in replacement for Markdown.pl.") - (license gpl2+))) + (license license:gpl2+))) (define-public idris (package @@ -6298,6 +6295,6 @@ types. It is compiled, with eager evaluation. Dependent types allow types to be predicated on values, meaning that some aspects of a program's behaviour can be specified precisely in the type. The language is closely related to Epigram and Agda.") - (license bsd-3))) + (license license:bsd-3))) ;;; haskell.scm ends here diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index e17e493099..535bd84aa1 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -23,8 +23,7 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages linux) - #:use-module ((guix licenses) - #:hide (zlib openssl)) + #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages) #:use-module (gnu packages compression) #:use-module (gnu packages gcc) @@ -150,7 +149,7 @@ #:tests? #f)) (synopsis "GNU Linux-Libre kernel headers") (description "Headers of the Linux-Libre kernel.") - (license gpl2) + (license license:gpl2) (home-page "http://www.gnu.org/software/linux-libre/")))) (define-public module-init-tools @@ -184,7 +183,7 @@ (description "Tools for loading and managing Linux kernel modules, such as `modprobe', `insmod', `lsmod', and more.") - (license gpl2+))) + (license license:gpl2+))) (define %boot-logo-patch ;; Linux-Libre boot logo featuring Freedo and a gnu. @@ -315,7 +314,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." (description "GNU Linux-Libre is a free (as in freedom) variant of the Linux kernel. It has been modified to remove all non-free binary blobs.") - (license gpl2) + (license license:gpl2) (home-page "http://www.gnu.org/software/linux-libre/")))) @@ -362,7 +361,7 @@ It has been modified to remove all non-free binary blobs.") Pluggable authentication modules are small shared object files that can be used through the PAM API to perform tasks, like authenticating a user at login. Local and dynamic reconfiguration are its key features.") - (license bsd-3))) + (license license:bsd-3))) ;;; @@ -390,7 +389,7 @@ at login. Local and dynamic reconfiguration are its key features.") "This PSmisc package is a set of some small useful utilities that use the proc filesystem. We're not about changing the world, but providing the system administrator with some help in common tasks.") - (license gpl2+))) + (license license:gpl2+))) (define-public util-linux (package @@ -457,8 +456,8 @@ block devices, UUIDs, TTYs, and many other tools.") ;; Note that util-linux doesn't use the same license for all the ;; code. GPLv2+ is the default license for a code without an ;; explicitly defined license. - (license (list gpl3+ gpl2+ gpl2 lgpl2.0+ - bsd-4 public-domain)))) + (license (list license:gpl3+ license:gpl2+ license:gpl2 license:lgpl2.0+ + license:bsd-4 license:public-domain)))) (define-public procps (package @@ -525,7 +524,7 @@ block devices, UUIDs, TTYs, and many other tools.") that give information about processes using the Linux /proc file system. The package includes the programs ps, top, vmstat, w, kill, free, slabtop, and skill.") - (license gpl2))) + (license license:gpl2))) (define-public usbutils (package @@ -549,7 +548,7 @@ slabtop, and skill.") "Tools for working with USB devices, such as lsusb") (description "Tools for working with USB devices, such as lsusb.") - (license gpl2+))) + (license license:gpl2+))) (define-public e2fsprogs (package @@ -625,9 +624,9 @@ slabtop, and skill.") (synopsis "Creating and checking ext2/ext3/ext4 file systems") (description "This package provides tools for manipulating ext2/ext3/ext4 file systems.") - (license (list gpl2 ; programs - lgpl2.0 ; libext2fs - x11)))) ; libuuid + (license (list license:gpl2 ;programs + license:lgpl2.0 ;libext2fs + license:x11)))) ;libuuid (define e2fsprogs/static (static-package @@ -691,7 +690,7 @@ from the e2fsprogs package. It is meant to be used in initrds.") (description "Extundelete is a set of tools that can recover deleted files from an ext3 or ext4 partition.") - (license gpl2))) + (license license:gpl2))) (define-public zerofree (package @@ -726,7 +725,7 @@ ext3 or ext4 partition.") "The zerofree command scans the free blocks in an ext2 file system and fills any non-zero blocks with zeroes. This is a useful way to make disk images more compressible.") - (license gpl2))) + (license license:gpl2))) (define-public strace (package @@ -746,7 +745,7 @@ images more compressible.") (description "strace is a system call tracer, i.e. a debugging tool which prints out a trace of all the system calls made by a another process/program.") - (license bsd-3))) + (license license:bsd-3))) (define-public ltrace (package @@ -770,7 +769,7 @@ trace of all the system calls made by a another process/program.") "ltrace intercepts and records dynamic library calls which are called by an executed process and the signals received by that process. It can also intercept and print the system calls executed by the program.") - (license gpl2+))) + (license license:gpl2+))) (define-public alsa-lib (package @@ -791,7 +790,7 @@ intercept and print the system calls executed by the program.") (description "The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI functionality to the Linux-based operating system.") - (license lgpl2.1+))) + (license license:lgpl2.1+))) (define-public alsa-utils (package @@ -836,7 +835,7 @@ MIDI functionality to the Linux-based operating system.") ;; This is mostly GPLv2+ but a few files such as 'alsactl.c' are ;; GPLv2-only. - (license gpl2))) + (license license:gpl2))) (define-public iptables (package @@ -864,7 +863,7 @@ system administrators. Since Network Address Translation is also configured from the packet filter ruleset, iptables is used for this, too. The iptables package also includes ip6tables. ip6tables is used for configuring the IPv6 packet filter.") - (license gpl2+))) + (license license:gpl2+))) (define-public iproute (package @@ -925,7 +924,7 @@ consists of several tools, of which the most important are ip and tc. ip controls IPv4 and IPv6 configuration and tc stands for traffic control. Both tools print detailed usage messages and are accompanied by a set of manpages.") - (license gpl2+))) + (license license:gpl2+))) (define-public net-tools ;; XXX: This package is basically unmaintained, but it provides a few @@ -1023,7 +1022,7 @@ subsystem of the Linux kernel. This includes arp, hostname, ifconfig, netstat, rarp and route. Additionally, this package contains utilities relating to particular network hardware types (plipconfig, slattach) and advanced aspects of IP configuration (iptunnel, ipmaddr).") - (license gpl2+))) + (license license:gpl2+))) (define-public libcap (package @@ -1061,7 +1060,7 @@ advanced aspects of IP configuration (iptunnel, ipmaddr).") Linux-based operating systems.") ;; License is BSD-3 or GPLv2, at the user's choice. - (license gpl2))) + (license license:gpl2))) (define-public bridge-utils (package @@ -1107,7 +1106,7 @@ to connect two Ethernet segments together in a protocol independent way. Packets are forwarded based on Ethernet address, rather than IP address (like a router). Since forwarding is done at Layer 2, all protocols can go transparently through a bridge.") - (license gpl2+))) + (license license:gpl2+))) (define-public libnl (package @@ -1134,7 +1133,7 @@ configuration and monitoring interfaces.") ;; Most files are LGPLv2.1-only, but some are GPLv2-only (like ;; 'nl-addr-add.c'), so the result is GPLv2-only. - (license gpl2))) + (license license:gpl2))) (define-public iw (package @@ -1160,7 +1159,7 @@ configuration and monitoring interfaces.") (description "iw is a new nl80211 based CLI configuration utility for wireless devices. It replaces 'iwconfig', which is deprecated.") - (license isc))) + (license license:isc))) (define-public powertop (package @@ -1191,7 +1190,7 @@ power management. In addition to being a diagnostic tool, PowerTOP also has an interactive mode where the user can experiment various power management settings for cases where the operating system has not enabled these settings.") - (license gpl2))) + (license license:gpl2))) (define-public aumix (package @@ -1212,7 +1211,7 @@ settings.") (description "Aumix adjusts an audio mixer from X, the console, a terminal, the command line or a script.") - (license gpl2+))) + (license license:gpl2+))) (define-public iotop (package @@ -1238,7 +1237,7 @@ the command line or a script.") (description "Iotop is a Python program with a top like user interface to show the processes currently causing I/O.") - (license gpl2+))) + (license license:gpl2+))) (define-public fuse (package @@ -1296,8 +1295,8 @@ but also an impediment to system extensibility. FUSE, for \"file systems in user space\", is a kernel module and user-space library that tries to address part of this problem by allowing users to run file system implementations as user-space processes.") - (license (list lgpl2.1 ; library - gpl2+)))) ; command-line utilities + (license (list license:lgpl2.1 ;library + license:gpl2+)))) ;command-line utilities (define-public unionfs-fuse (package @@ -1321,7 +1320,7 @@ user-space processes.") space, using the FUSE library. Mounting a union file system allows you to \"aggregate\" the contents of several directories into a single mount point. UnionFS-FUSE additionally supports copy-on-write.") - (license bsd-3))) + (license license:bsd-3))) (define fuse-static (package (inherit fuse) @@ -1390,7 +1389,7 @@ UnionFS-FUSE additionally supports copy-on-write.") Since most SSH servers already support this protocol it is very easy to set up: on the server side there's nothing to do; on the client side mounting the file system is as easy as logging into the server with an SSH client.") - (license gpl2+))) + (license license:gpl2+))) (define-public numactl (package @@ -1423,8 +1422,8 @@ program. The package contains other commands, such as numademo, numastat and memhog. The numademo command provides a quick overview of NUMA performance on your system.") - (license (list gpl2 ; programs - lgpl2.1)))) ; library + (license (list license:gpl2 ;programs + license:lgpl2.1)))) ;library (define-public kbd (package @@ -1482,7 +1481,7 @@ system.") "This package contains keytable files and keyboard utilities compatible for systems using the Linux kernel. This includes commands such as 'loadkeys', 'setfont', 'kbdinfo', and 'chvt'.") - (license gpl2+))) + (license license:gpl2+))) (define-public inotify-tools (package @@ -1502,7 +1501,7 @@ for systems using the Linux kernel. This includes commands such as (description "The inotify-tools packages provides a C library and command-line tools to use Linux' inotify mechanism, which allows file accesses to be monitored.") - (license gpl2+))) + (license license:gpl2+))) (define-public kmod (package @@ -1546,7 +1545,7 @@ dependencies and aliases. These tools are designed on top of libkmod, a library that is shipped with kmod. The aim is to be compatible with tools, configurations and indices from the module-init-tools project.") - (license gpl2+))) ; library under lgpl2.1+ + (license license:gpl2+))) ; library under lgpl2.1+ (define-public eudev ;; The post-systemd fork, maintained by Gentoo. @@ -1574,7 +1573,7 @@ from the module-init-tools project.") (description "Udev is a daemon which dynamically creates and removes device nodes from /dev/, handles hotplug events and loads drivers at boot time.") - (license gpl2+))) + (license license:gpl2+))) (define-public lvm2 (package @@ -1639,7 +1638,7 @@ mapper. Kernel components are part of Linux-libre.") ;; Libraries (liblvm2, libdevmapper) are LGPLv2.1. ;; Command-line tools are GPLv2. - (license (list gpl2 lgpl2.1)))) + (license (list license:gpl2 license:lgpl2.1)))) (define-public wireless-tools (package @@ -1678,7 +1677,7 @@ interface.") (home-page "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html") ;; wireless.21.h and wireless.22.h are distributed under lgpl2.1+, the ;; other files are distributed under gpl2. - (license (list gpl2 lgpl2.1+)))) + (license (list license:gpl2 license:lgpl2.1+)))) (define-public crda (package @@ -1747,7 +1746,7 @@ interface.") "The Central Regulatory Domain Agent (CRDA) acts as the udev helper for communication between the kernel Linux and user space for regulatory compliance.") - (license copyleft-next))) + (license license:copyleft-next))) (define-public wireless-regdb (package @@ -1795,7 +1794,7 @@ compliance.") "This package contains the wireless regulatory database Central Regulatory Database Agent (CRDA) daemon. The database contains information on country-specific regulations for the wireless spectrum.") - (license isc))) + (license license:isc))) (define-public lm-sensors (package @@ -1868,7 +1867,7 @@ country-specific regulations for the wireless spectrum.") "Lm-sensors is a hardware health monitoring package for Linux. It allows you to access information from temperature, voltage, and fan speed sensors. It works with most newer systems.") - (license gpl2+))) + (license license:gpl2+))) (define-public i2c-tools (package @@ -1898,7 +1897,7 @@ It works with most newer systems.") Linux: a bus probing tool, a chip dumper, register-level SMBus access helpers, EEPROM decoding scripts, EEPROM programming tools, and a python module for SMBus access.") - (license gpl2+))) + (license license:gpl2+))) (define-public xsensors (package @@ -1935,7 +1934,7 @@ SMBus access.") "Xsensors reads data from the libsensors library regarding hardware health such as temperature, voltage and fan speed and displays the information in a digital read-out.") - (license gpl2+))) + (license license:gpl2+))) (define-public perf (package @@ -2011,7 +2010,7 @@ containers. It can be used for running a command or even booting an OS inside an isolated container, created with the help of Linux namespaces. It is similar in functionality to chroot, although pflask provides better isolation thanks to the use of namespaces.") - (license bsd-2))) + (license license:bsd-2))) (define-public hdparm (package @@ -2037,7 +2036,7 @@ thanks to the use of namespaces.") (description "Get/set device parameters for Linux SATA/IDE drives. It's primary use is for enabling irq-unmasking and IDE multiple-mode.") - (license (non-copyleft "file://LICENSE.TXT")))) + (license (license:non-copyleft "file://LICENSE.TXT")))) (define-public rfkill (package @@ -2063,8 +2062,8 @@ is for enabling irq-unmasking and IDE multiple-mode.") "rfkill is a simple tool for accessing the rfkill device interface, which is used to enable and disable wireless networking devices, typically WLAN, Bluetooth and mobile broadband.") - (license (non-copyleft "file://COPYING" - "See COPYING in the distribution.")))) + (license (license:non-copyleft "file://COPYING" + "See COPYING in the distribution.")))) (define-public acpid (package @@ -2086,7 +2085,7 @@ Configuration and Power Interface (ACPI) events. acpid should be started during the system boot, and will run as a background process. When an ACPI event is received from the kernel, acpid will examine the list of rules specified in /etc/acpi/events and execute the rules that match the event.") - (license gpl2+))) + (license license:gpl2+))) (define-public sysfsutils (package @@ -2110,7 +2109,7 @@ Linux kernel versions 2.5+ that exposes a system's device tree. The package also contains the libsysfs library.") ;; The library is under lgpl2.1+ (all files say "or any later version"). ;; The rest is mostly gpl2, with a few files indicating gpl2+. - (license (list gpl2 gpl2+ lgpl2.1+)))) + (license (list license:gpl2 license:gpl2+ license:lgpl2.1+)))) (define-public sysfsutils-1 (package @@ -2162,7 +2161,7 @@ also contains the libsysfs library.") "The cpufrequtils suite contains utilities to retrieve CPU frequency information, and set the CPU frequency if supported, using the cpufreq capabilities of the Linux kernel.") - (license gpl2))) + (license license:gpl2))) (define-public libraw1394 (package @@ -2185,7 +2184,7 @@ the Linux IEEE-1394 subsystem, which provides direct access to the connected 1394 buses to user space. Through libraw1394/raw1394, applications can directly send to and receive from other nodes without requiring a kernel driver for the protocol in question.") - (license lgpl2.1+))) + (license license:lgpl2.1+))) (define-public libavc1394 (package @@ -2208,7 +2207,7 @@ protocol in question.") (description "Libavc1394 is a programming interface to the AV/C specification from the 1394 Trade Association. AV/C stands for Audio/Video Control.") - (license lgpl2.1+))) + (license license:lgpl2.1+))) (define-public libiec61883 (package @@ -2232,7 +2231,7 @@ the 1394 Trade Association. AV/C stands for Audio/Video Control.") (description "The libiec61883 library provides a higher level API for streaming DV, MPEG-2 and audio over Linux IEEE 1394.") - (license lgpl2.1+))) + (license license:lgpl2.1+))) (define-public mdadm (package @@ -2275,7 +2274,7 @@ MPEG-2 and audio over Linux IEEE 1394.") "mdadm is a tool for managing Linux Software RAID arrays. It can create, assemble, report on, and monitor arrays. It can also move spares between raid arrays when needed.") - (license gpl2+))) + (license license:gpl2+))) (define-public libaio (package @@ -2304,7 +2303,7 @@ arrays when needed.") "This library enables userspace to use Linux kernel asynchronous I/O system calls, important for the performance of databases and other advanced applications.") - (license lgpl2.1+))) + (license license:lgpl2.1+))) (define-public bluez (package @@ -2341,7 +2340,7 @@ applications.") (description "BlueZ provides support for the core Bluetooth layers and protocols. It is flexible, efficient and uses a modular implementation.") - (license gpl2+))) + (license license:gpl2+))) (define-public fuse-exfat (package @@ -2399,7 +2398,7 @@ id=0B7CLI-REKbE3VTdaa0EzTkhYdU0") (description "This package provides a FUSE-based file system that provides read and write access to exFAT devices.") - (license gpl2+))) + (license license:gpl2+))) (define-public gpm (package @@ -2442,4 +2441,4 @@ write access to exFAT devices.") "The GPM (general-purpose mouse) daemon is a mouse server for applications running on the Linux console. It allows users to select items and copy/paste text in the console and in xterm.") - (license gpl2+))) + (license license:gpl2+))) -- cgit v1.2.3 From 7db0799dc97a3b6f268bb7fa410137c1321af3d4 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 19 Dec 2015 00:42:10 +0100 Subject: gnu: agg: Update URLs. * gnu/packages/graphics.scm (agg)[source, home-page]: Add up-to-date URLs. --- gnu/packages/graphics.scm | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index 02e65d3276..4e15b814c8 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -271,8 +271,16 @@ and understanding different BRDFs (and other component functions).") (version "2.5") (source (origin (method url-fetch) - (uri (string-append "http://www.antigrain.com/agg-" - version ".tar.gz")) + (uri (list (string-append + "ftp://ftp.fau.de/gentoo/distfiles/agg-" + version ".tar.gz") + (string-append + "ftp://ftp.ula.ve/gentoo/distfiles/agg-" + version ".tar.gz") + + ;; Site was discontinued. + (string-append "http://www.antigrain.com/agg-" + version ".tar.gz"))) (sha256 (base32 "07wii4i824vy9qsvjsgqxppgqmfdxq0xa87i5yk53fijriadq7mb")) (patches (list (search-patch "agg-am_c_prototype.patch"))))) @@ -301,7 +309,9 @@ and understanding different BRDFs (and other component functions).") `(("libx11" ,libx11) ("freetype" ,freetype) ("sdl" ,sdl))) - (home-page "http://antigrain.com") + + ;; Antigrain.com was discontinued. + (home-page "http://agg.sourceforge.net/antigrain.com/index.html") (synopsis "High-quality 2D graphics rendering engine for C++") (description "Anti-Grain Geometry is a high quality rendering engine written in C++. -- cgit v1.2.3 From 599fd84227066d64095f7ec2c2bc942cda763f2b Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 19 Dec 2015 12:15:59 +0800 Subject: gnu: mpv: Fix build by using pkg-config for smbclient. This is a followup to commit 710964d. * gnu/packages/video.scm (mpv)[arguments]: Remove 'patch-wscript' phase. --- gnu/packages/video.scm | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 5d118ca32d..dcefd4ee0d 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -755,14 +755,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") 'configure 'setup-waf (lambda* (#:key inputs #:allow-other-keys) (copy-file (assoc-ref inputs "waf") "waf") - (setenv "CC" "gcc"))) - (add-before - 'configure 'patch-wscript - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "wscript" - ;; XXX Remove this when our Samba package provides a .pc file. - (("check_pkg_config\\('smbclient'\\)") - "check_cc(lib='smbclient')"))))) + (setenv "CC" "gcc")))) ;; No check function defined. #:tests? #f)) (home-page "http://mpv.io/") -- cgit v1.2.3 From 04dc6c99922a00cdf3fa34f99a73119d6550ae34 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Sat, 19 Dec 2015 12:21:59 +0800 Subject: gnu: mpv: Update to 0.14.0. * gnu/packages/video.scm (mpv): Update to 0.14.0. --- gnu/packages/video.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index dcefd4ee0d..85b7414737 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -693,7 +693,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") (define-public mpv (package (name "mpv") - (version "0.13.0") + (version "0.14.0") (source (origin (method url-fetch) (uri (string-append @@ -701,7 +701,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") ".tar.gz")) (sha256 (base32 - "1nqjd64p4pj1lks9n9s8y4zf4dp5bz8pyd0gsvviww7mv17p0whk")) + "0cqjwl0xyg0sv1jflipfkvqjg32y0kqfh4gc3lyhqgv0hgs3fa84")) (file-name (string-append name "-" version ".tar.gz")))) (build-system waf-build-system) (native-inputs -- cgit v1.2.3 From 604d20a2519431cb2d5bf1e062998b5f6fe794e9 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 19 Dec 2015 23:14:45 +0100 Subject: gnu: Add tlsdate. * gnu/packages/ntp.scm (tlsdate): New variable. --- gnu/packages/ntp.scm | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scm index 9e6db67e3e..4ed2e3cc11 100644 --- a/gnu/packages/ntp.scm +++ b/gnu/packages/ntp.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2014 John Darrington ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer +;;; Copyright © 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,6 +23,7 @@ #:use-module (gnu packages) #:use-module (gnu packages base) #:use-module (gnu packages linux) + #:use-module (gnu packages autotools) #:use-module (gnu packages pkg-config) #:use-module (gnu packages tls) #:use-module (gnu packages libevent) @@ -29,6 +31,7 @@ #:use-module (guix packages) #:use-module (guix utils) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (srfi srfi-1)) @@ -108,3 +111,43 @@ secure, easy to configure, and accurate enough for most purposes, so it's more minimalist than ntpd.") ;; A few of the source files are under bsd-3. (license (list l:isc l:bsd-3)))) + +(define-public tlsdate + (package + (name "tlsdate") + (version "0.0.13") + (home-page "https://github.com/ioerror/tlsdate") + (source (origin + (method git-fetch) + (uri (git-reference + (commit (string-append "tlsdate-" version)) + (url home-page))) + (sha256 + (base32 + "0w3v63qmbhpqlxjsvf4k3zp90k6mdzi8cdpgshan9iphy1f44xgl")) + (file-name (string-append name "-" version "-checkout")))) + (build-system gnu-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-after 'unpack 'autogen + (lambda _ + ;; The ancestor of 'SOURCE_DATE_EPOCH'; it contains the + ;; date that is recorded in binaries. It must be a + ;; "recent date" since it is used to detect bogus dates + ;; received from servers. + (setenv "COMPILE_DATE" (number->string 1450563040)) + (zero? (system* "sh" "autogen.sh"))))))) + (inputs `(("openssl" ,openssl) + ("libevent" ,libevent))) + (native-inputs `(("pkg-config" ,pkg-config) + ("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool))) + (synopsis "Extract remote time from TLS handshakes") + (description + "@command{tlsdate} sets the local clock by securely connecting with TLS +to remote servers and extracting the remote time out of the secure handshake. +Unlike ntpdate, @command{tlsdate} uses TCP, for instance connecting to a +remote HTTPS or TLS enabled service, and provides some protection against +adversaries that try to feed you malicious time information.") + (license l:bsd-3))) -- cgit v1.2.3 From ff80b96378a3fffc23a16a68031420de07d2c1a0 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 20 Dec 2015 09:40:56 +0200 Subject: gnu: tilda: Update to 1.3.1. * gnu/packages/terminals.scm (tilda): Update to 1.3.1. --- gnu/packages/terminals.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm index 153c51a346..1a83eda3c0 100644 --- a/gnu/packages/terminals.scm +++ b/gnu/packages/terminals.scm @@ -33,14 +33,14 @@ (define-public tilda (package (name "tilda") - (version "1.3.0") + (version "1.3.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/lanoxx/tilda/archive/" "tilda-" version ".tar.gz")) (sha256 (base32 - "1bbn2fflngx0g18ssvnzgzprvn1w6wc2y03sqzjwvxds488lhndx")))) + "1nh0kw8f6srriglj55gmir1hvakcwrak1wcydz3vpnmwipgy6jib")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases -- cgit v1.2.3 From 6976e7d2fff3833568c1a8f3def8d3c64214177f Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 15 Dec 2015 19:28:51 +0800 Subject: gnu: Add telepathy-logger. * gnu/packages/freedesktop.scm (telepathy-logger): New variable. --- gnu/packages/freedesktop.scm | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index b4e7164bfa..474cf24af0 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -47,7 +47,8 @@ #:use-module (gnu packages libffi) #:use-module (gnu packages acl) #:use-module (gnu packages admin) - #:use-module (gnu packages polkit)) + #:use-module (gnu packages polkit) + #:use-module (gnu packages databases)) (define-public xdg-utils (package @@ -528,3 +529,42 @@ dongles, bluetooth-paired telephones, or professional RS232/USB devices with external power supplies, ModemManager is able to prepare and configure the modems and setup connections with them.") (license license:gpl2+))) + +(define-public telepathy-logger + (package + (name "telepathy-logger") + (version "0.8.2") + (source (origin + (method url-fetch) + (uri (string-append "http://telepathy.freedesktop.org/releases/" + name "/" name "-" version ".tar.bz2")) + (sha256 + (base32 + "1bjx85k7jyfi5pvl765fzc7q2iz9va51anrc2djv7caksqsdbjlg")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before 'check 'pre-check + (lambda _ + (setenv "HOME" (getenv "TMPDIR")) + #t))))) + (native-inputs + `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc. + ("gobject-introspection" ,gobject-introspection) + ("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ("python" ,python-2) + ("xsltproc" ,libxslt))) + (propagated-inputs + ;; telepathy-logger-0.2.pc refers to all these. + `(("libxml2" ,libxml2) + ("sqlite" ,sqlite) + ("telepathy-glib" ,telepathy-glib))) + (synopsis "Telepathy logger library") + (home-page "http://telepathy.freedesktop.org/") + (description + "Telepathy logger is a headless observer client that logs information +received by the Telepathy framework. It features pluggable backends to log +different sorts of messages in different formats.") + (license license:lgpl2.1+))) -- cgit v1.2.3 From e68232797656813ceb139fa01d465290eed84a66 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 15 Dec 2015 19:32:50 +0800 Subject: gnu: Add colord-gtk. * gnu/packages/freedesktop.scm (colord-gtk): New variable. --- gnu/packages/freedesktop.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index 474cf24af0..b8eb75eddd 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -35,6 +35,7 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages gettext) #:use-module (gnu packages gperf) + #:use-module (gnu packages gtk) #:use-module (gnu packages xml) #:use-module (gnu packages docbook) #:use-module (gnu packages glib) ;intltool @@ -568,3 +569,33 @@ modems and setup connections with them.") received by the Telepathy framework. It features pluggable backends to log different sorts of messages in different formats.") (license license:lgpl2.1+))) + +(define-public colord-gtk + (package + (name "colord-gtk") + (version "0.1.26") + (source (origin + (method url-fetch) + (uri (string-append "http://www.freedesktop.org/software/colord" + "/releases/" name "-" version ".tar.xz")) + (sha256 + (base32 + "0i9y3bb5apj6a0f8cx36l6mjzs7xc0k7nf0magmf58vy2mzhpl18")))) + (build-system gnu-build-system) + (arguments '(#:tests? #f)) ; require the colord system service + (native-inputs + `(("gobject-introspection" ,gobject-introspection) + ("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ("vala" ,vala))) + (propagated-inputs + ;; colord-gtk.pc refers to all these. + `(("colord" ,colord) + ("gtk+" ,gtk+))) + (synopsis "GTK integration for libcolord") + (home-page "http://www.freedesktop.org/software/colord/") + (description + "This is a GTK+ convenience library for interacting with colord. It is +useful for both applications which need colour management and applications that +wish to perform colour calibration.") + (license license:lgpl2.1+))) -- cgit v1.2.3 From 8e1dd04f450aeef8ebdf7e3030ea3961f3beba75 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 15 Dec 2015 19:43:33 +0800 Subject: gnu: Add libgtop. * gnu/packages/gnome.scm (libgtop): New variable. --- gnu/packages/gnome.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 59e43dcc96..d45a240532 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -4335,3 +4335,30 @@ libxml2.") "GNOME Display Manager is a system service that is responsible for providing graphical log-ins and managing local and remote displays.") (license license:gpl2+))) + +(define-public libgtop + (package + (name "libgtop") + (version "2.32.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "13hpml2vfm23816qggr5fvxj75ndb1dq4rgmi7ik6azj69ij8hw4")))) + (build-system gnu-build-system) + (native-inputs + `(("gobject-introspection" ,gobject-introspection) + ("intltool" ,intltool) + ("perl" ,perl) + ("pkg-config" ,pkg-config))) + (propagated-inputs + `(("glib" ,glib))) ; required by libgtop-2.0.pc + (synopsis "Portable system access library") + (home-page "https://www.gnome.org/") + (description + "LibGTop is a library to get system specific data such as CPU and memory +usage and information about running processes.") + (license license:gpl2+))) -- cgit v1.2.3 From b96c42605ba68377cac5463822a0a8abecd0acf7 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 15 Dec 2015 19:45:24 +0800 Subject: gnu: Add gnome-bluetooth. * gnu/packages/gnome.scm (gnome-bluetooth): New variable. --- gnu/packages/gnome.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index d45a240532..729dd37e9f 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -4362,3 +4362,36 @@ providing graphical log-ins and managing local and remote displays.") "LibGTop is a library to get system specific data such as CPU and memory usage and information about running processes.") (license license:gpl2+))) + +(define-public gnome-bluetooth + (package + (name "gnome-bluetooth") + (version "3.18.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0jaa9nbygdvcqp9k4p4iy2g8x3684s4x9k5nbcmmm11jdn4mn7f5")))) + (build-system glib-or-gtk-build-system) + (native-inputs + `(("glib:bin" ,glib "bin") ; for gdbus-codegen, etc. + ("gobject-introspection" ,gobject-introspection) + ("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ("xmllint" ,libxml2))) + (propagated-inputs + ;; gnome-bluetooth-1.0.pc refers to all these. + `(("gtk+" ,gtk+) + ("udev" ,eudev))) + (inputs + `(("libcanberra" ,libcanberra) + ("libnotify" ,libnotify))) + (synopsis "GNOME Bluetooth subsystem") + (home-page "https://wiki.gnome.org/Projects/GnomeBluetooth") + (description + "This package contains tools for managing and manipulating Bluetooth +devices using the GNOME desktop.") + (license license:lgpl2.1+))) -- cgit v1.2.3 From b645146f00b154a541388e7f227bc18a0c1e8899 Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 15 Dec 2015 19:53:33 +0800 Subject: gnu: Add gnome-control-center. * gnu/packages/gnome.scm (gnome-control-center): New variable. --- gnu/packages/gnome.scm | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 729dd37e9f..e28aaff5e7 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -64,6 +64,7 @@ #:use-module (gnu packages polkit) #:use-module (gnu packages popt) #:use-module (gnu packages ghostscript) + #:use-module (gnu packages ibus) #:use-module (gnu packages iso-codes) #:use-module (gnu packages libcanberra) #:use-module (gnu packages linux) @@ -73,6 +74,7 @@ #:use-module (gnu packages m4) #:use-module (gnu packages image) #:use-module (gnu packages networking) + #:use-module (gnu packages password-utils) #:use-module (gnu packages perl) #:use-module (gnu packages photo) #:use-module (gnu packages pkg-config) @@ -93,6 +95,7 @@ #:use-module (gnu packages xdisorg) #:use-module (gnu packages freedesktop) #:use-module (gnu packages mail) + #:use-module (gnu packages mit-krb5) #:use-module (gnu packages backup) #:use-module (gnu packages nettle) #:use-module (gnu packages ncurses) @@ -4395,3 +4398,73 @@ usage and information about running processes.") "This package contains tools for managing and manipulating Bluetooth devices using the GNOME desktop.") (license license:lgpl2.1+))) + +(define-public gnome-control-center + (package + (name "gnome-control-center") + (version "3.18.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1bgqg1sl3cp2azrwrjgwx3jzk9n3w76xpcyvk257qavx4ibn3zin")))) + (build-system glib-or-gtk-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before 'configure 'patch-paths + (lambda* (#:key inputs #:allow-other-keys) + (let ((libc (assoc-ref inputs "libc")) + (tzdata (assoc-ref inputs "tzdata"))) + (substitute* "panels/datetime/tz.h" + (("/usr/share/zoneinfo/zone.tab") + (string-append tzdata "/share/zoneinfo/zone.tab"))) + (substitute* "panels/datetime/test-endianess.c" + (("/usr/share/locale") + (string-append libc "/share/locale"))) + #t)))))) + (native-inputs + `(("glib:bin" ,glib "bin") ; for glib-mkenums, etc. + ("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ("xsltproc" ,libxslt))) + (inputs + `(("accountsservice" ,accountsservice) + ("clutter-gtk" ,clutter-gtk) + ("colord-gtk" ,colord-gtk) + ("cups" ,cups) + ("dconf" ,dconf) + ("docbook-xsl" ,docbook-xsl) + ("gnome-bluetooth" ,gnome-bluetooth) + ("gnome-desktop" ,gnome-desktop) + ("gnome-online-accounts" ,gnome-online-accounts) + ("gnome-settings-daemon" ,gnome-settings-daemon) + ("grilo" ,grilo) + ("ibus" ,ibus) + ("libcanberra" ,libcanberra) + ("libgudev" ,libgudev) + ("libgtop" ,libgtop) + ("libpwquality" ,libpwquality) + ("libsoup" ,libsoup) + ("libxml2" ,libxml2) + ("libwacom" ,libwacom) + ("mesa" ,mesa) + ("mit-krb5" ,mit-krb5) + ("modem-manager" ,modem-manager) + ("network-manager-applet" ,network-manager-applet) + ("polkit" ,polkit) + ("pulseaudio" ,pulseaudio) + ("smbclient" ,samba) + ("tzdata" ,tzdata) + ("upower" ,upower))) + (synopsis "Utilities to configure the GNOME desktop") + (home-page "https://www.gnome.org/") + (description + "This package contains configuration applets for the GNOME desktop, +allowing to set accessibility configuration, desktop fonts, keyboard and mouse +properties, sound setup, desktop theme and background, user interface +properties, screen resolution, and other GNOME parameters.") + (license license:gpl2+))) -- cgit v1.2.3 From a4df575631e8212d82af59f0178ba42150e2cb1f Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Tue, 15 Dec 2015 21:14:57 +0800 Subject: gnu: Add gnome-shell. * gnu/packages/gnome.scm (gnome-shell): New variable. --- gnu/packages/gnome.scm | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index e28aaff5e7..8f886fd84f 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -4468,3 +4468,85 @@ allowing to set accessibility configuration, desktop fonts, keyboard and mouse properties, sound setup, desktop theme and background, user interface properties, screen resolution, and other GNOME parameters.") (license license:gpl2+))) + +(define-public gnome-shell + (package + (name "gnome-shell") + (version "3.18.3") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "16sicxdp08yfaj4hiyzvbspb5jk3fpmi291272zhx5vgc3wbl5w5")))) + (build-system glib-or-gtk-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (keysdir (string-append + out "/share/gnome-control-center/keybindings"))) + (zero? (system* "make" + (string-append "keysdir=" keysdir) + "install"))))) + (add-after + 'install 'wrap-programs + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (gi-typelib-path (getenv "GI_TYPELIB_PATH")) + (python-path (getenv "PYTHONPATH"))) + (wrap-program (string-append out "/bin/gnome-shell") + `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))) + (for-each + (lambda (prog) + (wrap-program (string-append out "/bin/" prog) + `("PYTHONPATH" ":" prefix (,python-path)) + `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))) + '("gnome-shell-extension-tool" "gnome-shell-perf-tool")) + #t)))))) + (native-inputs + `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc. + ("gobject-introspection" ,gobject-introspection) + ("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ("python" ,python) + ("xsltproc" ,libxslt))) + (inputs + `(("accountsservice" ,accountsservice) + ("caribou" ,caribou) + ("docbook-xsl" ,docbook-xsl) + ("evolution-data-server" ,evolution-data-server) + ("gcr" ,gcr) + ("gdm" ,gdm) + ("gjs" ,gjs) + ("gnome-bluetooth" ,gnome-bluetooth) + ("gnome-control-center" ,gnome-control-center) + ("gnome-desktop" ,gnome-desktop) + ("gnome-settings-daemon" ,gnome-settings-daemon) + ("gst-plugins-base" ,gst-plugins-base) + ("ibus" ,ibus) + ("libcanberra" ,libcanberra) + ("libcroco" ,libcroco) + ("libgweather" ,libgweather) + ("libsoup" ,libsoup) + ("mesa-headers" ,mesa-headers) + ("mutter" ,mutter) + ("network-manager-applet" ,network-manager-applet) + ("polkit" ,polkit) + ("pulseaudio" ,pulseaudio) + ("python-pygobject" ,python-pygobject) + ("startup-notification" ,startup-notification) + ("telepathy-logger" ,telepathy-logger) + ("upower" ,upower) + ;; XXX: required by libgjs.la. + ("readline" ,readline))) + (synopsis "Desktop shell for GNOME") + (home-page "https://wiki.gnome.org/Projects/GnomeShell") + (description + "GNOME Shell provides core user interface functions for the GNOME desktop, +like switching to windows and launching applications.") + (license license:gpl2+))) -- cgit v1.2.3 From b5d47a5a53ec6c5ab56e8409e837cb80a6c5b56a Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 20 Dec 2015 20:07:31 +0200 Subject: gnu: gnupg: Update to 1.4.20. * gnu/packages/gnupg.scm (gnupg-1): Update to 1.4.20. --- gnu/packages/gnupg.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index af01749545..aeee440b7e 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -273,14 +273,14 @@ libskba (working with X.509 certificates and CMS data).") (define-public gnupg-1 (package (inherit gnupg) - (version "1.4.19") + (version "1.4.20") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/gnupg/gnupg-" version ".tar.bz2")) (sha256 (base32 - "11pxx26sfilh0vswylh9mhiifw5yffw7nn733zknw3sb0jfk22bz")))) + "1k7d6zi0zznqsmcjic0yrgfhqklqz3qgd3yac7wxsa7s6088p604")))) (native-inputs '()) (inputs `(("zlib" ,zlib) -- cgit v1.2.3 From 54b7f63a72f79797c4dd587c9c28706d7ca89dc7 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 20 Dec 2015 21:39:18 +0200 Subject: gnu: offlineimap: Update to 6.6.0. * gnu/packages/mail.scm (offlineimap): Update to 6.6.0. --- gnu/packages/mail.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 38cab27494..7b85c9dd68 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -285,7 +285,7 @@ and corrections. It is based on a Bayesian filter.") (define-public offlineimap (package (name "offlineimap") - (version "6.5.7") + (version "6.6.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/OfflineIMAP/offlineimap/" @@ -293,7 +293,7 @@ and corrections. It is based on a Bayesian filter.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "18whwc4f8nk8gi3mjw9153c9cvwd3i9i7njmpdbhcplrv33m5pmp")))) + "1x33zxjm3y2p54lbcsgflrs6v2zq785y2k0xi6xia6akrvjmh4n4")))) (build-system python-build-system) (native-inputs `(("python" ,python-2))) (arguments -- cgit v1.2.3 From aa8e051532a144ce86c13169e08abdd554b9823e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 20 Dec 2015 14:34:36 +0100 Subject: packages: Add 'package-transitive-native-search-paths'. * guix/packages.scm (package-transitive-native-search-paths): New procedure. * tests/packages.scm ("package-transitive-native-search-paths"): New test. --- guix/packages.scm | 12 ++++++++++++ tests/packages.scm | 21 +++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/guix/packages.scm b/guix/packages.scm index 68fb0916d8..41f3e20c41 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -89,6 +89,7 @@ package-transitive-target-inputs package-transitive-native-inputs package-transitive-propagated-inputs + package-transitive-native-search-paths package-transitive-supported-systems package-source-derivation package-derivation @@ -632,6 +633,17 @@ for the host system (\"native inputs\"), and not target inputs." recursively." (transitive-inputs (package-propagated-inputs package))) +(define (package-transitive-native-search-paths package) + "Return the list of search paths for PACKAGE and its propagated inputs, +recursively." + (append (package-native-search-paths package) + (append-map (match-lambda + ((label (? package? p) _ ...) + (package-native-search-paths p)) + (_ + '())) + (package-transitive-propagated-inputs package)))) + (define (transitive-input-references alist inputs) "Return a list of (assoc-ref ALIST