From 079c93e1c1dd93639417095000d5e56d8db62d61 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 6 Jul 2019 20:02:02 -0400 Subject: [PATCH 01/61] =?UTF-8?q?self:=20Ship=20the=20(gnu=20machine=20?= =?UTF-8?q?=E2=80=A6)=20modules.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a followup to commit fa9edf09e992db7510c7471486dffc93e1e707e5. * guix/self.scm (compiled-guix)[*system-modules*]: Explicitly add all of gnu/machine/*. --- guix/self.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/guix/self.scm b/guix/self.scm index be90b60863..b8581d01d5 100644 --- a/guix/self.scm +++ b/guix/self.scm @@ -769,7 +769,8 @@ Info manual." (gnu services) ,@(scheme-modules* source "gnu/bootloader") ,@(scheme-modules* source "gnu/system") - ,@(scheme-modules* source "gnu/services")) + ,@(scheme-modules* source "gnu/services") + ,@(scheme-modules* source "gnu/machine")) (list *core-package-modules* *package-modules* *extra-modules* *core-modules*) #:extensions dependencies From d029afdd2d9854cfc9bd2b4d27988e521e6ac863 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sun, 7 Jul 2019 12:24:19 +0100 Subject: [PATCH 02/61] gnu: Update lollypop to 1.1.3.1. * gnu/packages/gnome.scm (lollypop): Update to 1.1.3.1. [inputs]: Add python-pil. --- gnu/packages/gnome.scm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 88d293ee9f..4b1dbbdb49 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -7594,16 +7594,16 @@ views can be printed as PDF or PostScript files, or exported to HTML.") (define-public lollypop (package (name "lollypop") - (version "0.9.521") + (version "1.1.3.1") (source (origin (method url-fetch) (uri (string-append "https://gitlab.gnome.org/World/lollypop/uploads/" - "e4df2ed75c5ed71d64afcc668e579b2a/" + "5a7cd7c72b6d83ae08d0c54c4691f9df/" name "-" version ".tar.xz")) (sha256 (base32 - "0knsqh24siyw98vmiq6b1hzq4y4cazs9f1hq1js9c96hqqj9rvdx")))) + "1r5wn0bja9psz6nr1rcaysdkkwz84rbyzpdfw66cxa6wiy52pkjm")))) (build-system meson-build-system) (arguments `(#:imported-modules ((guix build python-build-system) @@ -7636,6 +7636,7 @@ views can be printed as PDF or PostScript files, or exported to HTML.") ("python" ,python) ("python-beautifulsoup4" ,python-beautifulsoup4) ("python-gst" ,python-gst) + ("python-pil" ,python-pillow) ("python-pycairo" ,python-pycairo) ("python-pygobject" ,python-pygobject) ("python-pylast" ,python-pylast) From aad65962944098736f0e357683ed12d554cf5e8e Mon Sep 17 00:00:00 2001 From: Rutger Helling Date: Sun, 7 Jul 2019 13:49:43 +0200 Subject: [PATCH 03/61] gnu: wine-staging: Update to 4.12.1. * gnu/packages/wine.scm (wine-staging-patchset-data): Update to 4.12.1. * gnu/packages/wine.scm (wine-staging): Update to 4.12.1. --- gnu/packages/wine.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm index b76c9d18b9..62cf225ceb 100644 --- a/gnu/packages/wine.scm +++ b/gnu/packages/wine.scm @@ -310,7 +310,7 @@ integrate Windows applications into your desktop.") (define-public wine-staging-patchset-data (package (name "wine-staging-patchset-data") - (version "4.12") + (version "4.12.1") (source (origin (method git-fetch) @@ -320,7 +320,7 @@ integrate Windows applications into your desktop.") (file-name (git-file-name name version)) (sha256 (base32 - "1drsrps6bd5gcafzcfrr9pzajhh5s6qg5la7q4qpwzlng9969f3r")))) + "1bvpvj6vcw2p6vcjm6mw5maarbs4lfw1ix3pj020w4n3kg4nmmc4")))) (build-system trivial-build-system) (native-inputs `(("bash" ,bash) @@ -366,7 +366,7 @@ integrate Windows applications into your desktop.") (file-name (string-append name "-" version ".tar.xz")) (sha256 (base32 - "1az5pcczq2zl1cvfdggzf89n0sf77m3fjkc8rnna8qr3n585q4h0")))) + "09yjfb2k14y11k19lm8dqmb8qwxyhh67d5q1gqv480y64mljvkx0")))) (inputs `(("autoconf" ,autoconf) ; for autoreconf ("faudio" ,faudio) ("ffmpeg" ,ffmpeg) From ccadafdcefee012c261513e9d8663a22704bc496 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 7 Jul 2019 15:00:43 +0200 Subject: [PATCH 04/61] build: Add 'doc/build.scm' to build on-line copies of the manual. * doc/build.scm: New file. * Makefile.am (EXTRA_DIST): Add it. --- Makefile.am | 1 + doc/build.scm | 563 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 564 insertions(+) create mode 100644 doc/build.scm diff --git a/Makefile.am b/Makefile.am index c5dcf4113e..0c4a79bbbf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -544,6 +544,7 @@ EXTRA_DIST += \ tests/cve-sample.xml \ build-aux/config.rpath \ bootstrap \ + doc/build.scm \ release.nix \ $(TESTS) diff --git a/doc/build.scm b/doc/build.scm new file mode 100644 index 0000000000..e628a91048 --- /dev/null +++ b/doc/build.scm @@ -0,0 +1,563 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Ludovic Courtès +;;; +;;; 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 . + + +;; This file contains machinery to build HTML and PDF copies of the manual +;; that can be readily published on the web site. To do that, run: +;; +;; guix build -f build.scm +;; +;; The result is a directory hierarchy that can be used as the manual/ +;; sub-directory of the web site. + +(use-modules (guix) + (guix gexp) + (guix git) + (guix git-download) + (git) + (gnu packages base) + (gnu packages gawk) + (gnu packages gettext) + (gnu packages guile) + (gnu packages texinfo) + (gnu packages tex) + (srfi srfi-19) + (srfi srfi-71)) + +(define file-append* + (@@ (guix self) file-append*)) + +(define translated-texi-manuals + (@@ (guix self) translate-texi-manuals)) + +(define info-manual + (@@ (guix self) info-manual)) + +(define %languages + '("de" "en" "es" "fr" "ru" "zh_CN")) + +(define (texinfo-manual-images source) + "Return a directory containing all the images used by the user manual, taken +from SOURCE, the root of the source tree." + (define graphviz + (module-ref (resolve-interface '(gnu packages graphviz)) + 'graphviz)) + + (define images + (file-append* source "doc/images")) + + (define build + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils) + (srfi srfi-26)) + + (define (dot->image dot-file format) + (invoke #+(file-append graphviz "/bin/dot") + "-T" format "-Gratio=.9" "-Gnodesep=.005" + "-Granksep=.00005" "-Nfontsize=9" + "-Nheight=.1" "-Nwidth=.1" + "-o" (string-append #$output "/" + (basename dot-file ".dot") + "." format) + dot-file)) + + ;; Build graphs. + (mkdir-p #$output) + (for-each (lambda (dot-file) + (for-each (cut dot->image dot-file <>) + '("png" "pdf"))) + (find-files #$images "\\.dot$")) + + ;; Copy other PNGs. + (for-each (lambda (png-file) + (install-file png-file #$output)) + (find-files #$images "\\.png$"))))) + + (computed-file "texinfo-manual-images" build)) + +(define* (texinfo-manual-source source #:key + (version "0.0") + (languages %languages) + (date 1)) + "Gather all the source files of the Texinfo manuals from SOURCE--.texi file +as well as images, OS examples, and translations." + (define documentation + (file-append* source "doc")) + + (define examples + (file-append* source "gnu/system/examples")) + + (define build + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils) + (srfi srfi-19)) + + (define (make-version-texi language) + ;; Create the 'version.texi' file for LANGUAGE. + (let ((file (if (string=? language "en") + "version.texi" + (string-append "version-" language ".texi")))) + (call-with-output-file (string-append #$output "/" file) + (lambda (port) + (let* ((version #$version) + (time (make-time time-utc 0 #$date)) + (date (time-utc->date time))) + (format port " +@set UPDATED ~a +@set UPDATED-MONTH ~a +@set EDITION ~a +@set VERSION ~a\n" + (date->string date "~e ~B ~Y") + (date->string date "~B ~Y") + version version)))))) + + (install-file #$(file-append* documentation "/htmlxref.cnf") + #$output) + + (for-each (lambda (texi) + (install-file texi #$output)) + (append (find-files #$documentation "\\.(texi|scm)$") + (find-files #$(translated-texi-manuals source) + "\\.texi$"))) + + ;; Create 'version.texi'. + (for-each make-version-texi '#$languages) + + ;; Copy configuration templates that the manual includes. + (for-each (lambda (template) + (copy-file template + (string-append + #$output "/os-config-" + (basename template ".tmpl") + ".texi"))) + (find-files #$examples "\\.tmpl$")) + + (symlink #$(texinfo-manual-images source) + (string-append #$output "/images"))))) + + (computed-file "texinfo-manual-source" build)) + +(define %web-site-url + ;; URL of the web site home page. + (or (getenv "GUIX_WEB_SITE_URL") + "/software/guix/")) + +(define %makeinfo-html-options + ;; Options passed to 'makeinfo --html'. + '("--css-ref=https://www.gnu.org/software/gnulib/manual.css")) + +(define* (html-manual source #:key (languages %languages) + (version "0.0") + (manual "guix") + (date 1) + (options %makeinfo-html-options)) + "Return the HTML manuals built from SOURCE for all LANGUAGES, with the given +makeinfo OPTIONS." + (define manual-source + (texinfo-manual-source source + #:version version + #:languages languages + #:date date)) + + (define build + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils) + (ice-9 match)) + + (define (normalize language) + ;; Normalize LANGUAGE. For instance, "zh_CN" become "zh-cn". + (string-map (match-lambda + (#\_ #\-) + (chr chr)) + (string-downcase language))) + + ;; Install a UTF-8 locale so that 'makeinfo' is at ease. + (setenv "GUIX_LOCPATH" + #+(file-append glibc-utf8-locales "/lib/locale")) + (setenv "LC_ALL" "en_US.utf8") + + (setvbuf (current-output-port) 'line) + (setvbuf (current-error-port) 'line) + + (for-each (lambda (language) + (let ((opts `("--html" + "-c" ,(string-append "TOP_NODE_UP_URL=/manual/" + language) + #$@options + ,(if (string=? language "en") + (string-append #$manual-source "/" + #$manual ".texi") + (string-append #$manual-source "/" + #$manual "." language ".texi"))))) + (format #t "building HTML manual for language '~a'...~%" + language) + (mkdir-p (string-append #$output "/" + (normalize language))) + (setenv "LANGUAGE" language) + (apply invoke #$(file-append texinfo "/bin/makeinfo") + "-o" (string-append #$output "/" + (normalize language) + "/html_node") + opts) + (apply invoke #$(file-append texinfo "/bin/makeinfo") + "--no-split" + "-o" + (string-append #$output "/" + (normalize language) + "/" #$manual + (if (string=? language "en") + "" + (string-append "." language)) + ".html") + opts))) + '#$languages)))) + + (computed-file (string-append manual "-html-manual") build)) + +(define* (pdf-manual source #:key (languages %languages) + (version "0.0") + (manual "guix") + (date 1) + (options '())) + "Return the HTML manuals built from SOURCE for all LANGUAGES, with the given +makeinfo OPTIONS." + (define manual-source + (texinfo-manual-source source + #:version version + #:languages languages + #:date date)) + + ;; FIXME: This union works, except for the table of contents of non-English + ;; manuals, which contains escape sequences like "^^ca^^fe" instead of + ;; accented letters. + ;; + ;; (define texlive + ;; (texlive-union (list texlive-tex-texinfo + ;; texlive-generic-epsf + ;; texlive-fonts-ec))) + + (define build + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils) + (srfi srfi-34) + (ice-9 match)) + + (define (normalize language) ;XXX: deduplicate + ;; Normalize LANGUAGE. For instance, "zh_CN" becomes "zh-cn". + (string-map (match-lambda + (#\_ #\-) + (chr chr)) + (string-downcase language))) + + ;; Install a UTF-8 locale so that 'makeinfo' is at ease. + (setenv "GUIX_LOCPATH" + #+(file-append glibc-utf8-locales "/lib/locale")) + (setenv "LC_ALL" "en_US.utf8") + (setenv "PATH" + (string-append #+(file-append texlive "/bin") ":" + #+(file-append texinfo "/bin") ":" + + ;; Below are command-line tools needed by + ;; 'texi2dvi' and friends. + #+(file-append sed "/bin") ":" + #+(file-append grep "/bin") ":" + #+(file-append coreutils "/bin") ":" + #+(file-append gawk "/bin") ":" + #+(file-append tar "/bin") ":" + #+(file-append diffutils "/bin"))) + + (setvbuf (current-output-port) 'line) + (setvbuf (current-error-port) 'line) + + (setenv "HOME" (getcwd)) ;for kpathsea/mktextfm + + ;; 'SOURCE_DATE_EPOCH' is honored by pdftex. + (setenv "SOURCE_DATE_EPOCH" "1") + + (for-each (lambda (language) + (let ((opts `("--pdf" + "-I" "." + #$@options + ,(if (string=? language "en") + (string-append #$manual-source "/" + #$manual ".texi") + (string-append #$manual-source "/" + #$manual "." language ".texi"))))) + (format #t "building PDF manual for language '~a'...~%" + language) + (mkdir-p (string-append #$output "/" + (normalize language))) + (setenv "LANGUAGE" language) + + + ;; FIXME: Unfortunately building PDFs for non-Latin + ;; alphabets doesn't work: + ;; . + (guard (c ((invoke-error? c) + (format (current-error-port) + "~%~%Failed to produce \ +PDF for language '~a'!~%~%" + language))) + (apply invoke #$(file-append texinfo "/bin/makeinfo") + "--pdf" "-o" + (string-append #$output "/" + (normalize language) + "/" #$manual + (if (string=? language "en") + "" + (string-append "." + language)) + ".pdf") + opts)))) + '#$languages)))) + + (computed-file (string-append manual "-pdf-manual") build)) + +(define (guix-manual-text-domain source languages) + "Return the PO files for LANGUAGES of the 'guix-manual' text domain taken +from SOURCE." + (define po-directory + (file-append* source "/po/doc")) + + (define build + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + + (mkdir-p #$output) + (for-each (lambda (language) + (define directory + (string-append #$output "/" language + "/LC_MESSAGES")) + + (mkdir-p directory) + (invoke #+(file-append gnu-gettext "/bin/msgfmt") + "-c" "-o" + (string-append directory "/guix-manual.mo") + (string-append #$po-directory "/guix-manual." + language ".po"))) + '#$(delete "en" languages))))) + + (computed-file "guix-manual-po" build)) + +(define* (html-manual-indexes source + #:key (languages %languages) + (version "0.0") + (manual "guix") + (date 1)) + (define build + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils) + (ice-9 match) + (ice-9 popen) + (sxml simple) + (srfi srfi-19)) + + (define (normalize language) ;XXX: deduplicate + ;; Normalize LANGUAGE. For instance, "zh_CN" become "zh-cn". + (string-map (match-lambda + (#\_ #\-) + (chr chr)) + (string-downcase language))) + + (define-syntax-rule (with-language language exp ...) + (let ((lang (getenv "LANGUAGE"))) + (dynamic-wind + (lambda () + (setenv "LANGUAGE" language) + (setlocale LC_MESSAGES)) + (lambda () exp ...) + (lambda () + (if lang + (setenv "LANGUAGE" lang) + (unsetenv "LANGUAGE")) + (setlocale LC_MESSAGES))))) + + ;; (put 'with-language 'scheme-indent-function 1) + (define* (translate str language + #:key (domain "guix-manual")) + (define exp + `(begin + (bindtextdomain "guix-manual" + #+(guix-manual-text-domain + source + languages)) + (write (gettext ,str "guix-manual")))) + + (with-language language + ;; Since the 'gettext' function caches msgid translations, + ;; regardless of $LANGUAGE, we have to spawn a new process each + ;; time we want to translate to a different language. Bah! + (let* ((pipe (open-pipe* OPEN_READ + #+(file-append guile-2.2 + "/bin/guile") + "-c" (object->string exp))) + (str (read pipe))) + (close-pipe pipe) + str))) + + (define (seconds->string seconds language) + (let* ((time (make-time time-utc 0 seconds)) + (date (time-utc->date time))) + (with-language language (date->string date "~e ~B ~Y")))) + + (define (guix-url path) + (string-append #$%web-site-url path)) + + (define (sxml-index language) + (define title + (translate "GNU Guix Reference Manual" language)) + + ;; FIXME: Avoid duplicating styling info from guix-artwork.git. + `(html (@ (lang ,language)) + (head + (title ,(string-append title " — GNU Guix")) + (meta (@ (charset "UTF-8"))) + (meta (@ (name "viewport") (content "width=device-width, initial-scale=1.0"))) + ;; Menu prefetch. + (link (@ (rel "prefetch") (href ,(guix-url "menu/index.html")))) + ;; Base CSS. + (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/elements.css")))) + (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/common.css")))) + (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/messages.css")))) + (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/navbar.css")))) + (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/breadcrumbs.css")))) + (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/buttons.css")))) + (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/footer.css")))) + + (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/page.css")))) + (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/post.css"))))) + (body + (header (@ (class "navbar")) + (h1 (a (@ (class "branding") + (href #$%web-site-url))) + (span (@ (class "a11y-offset")) + "Guix")) + (nav (@ (class "menu")))) + (nav (@ (class "breadcrumbs")) + (a (@ (class "crumb") + (href #$%web-site-url)) + "Home")) + (main + (article + (@ (class "page centered-block limit-width")) + (h2 ,title) + (p (@ (class "post-metadata centered-text")) + #$version " — " + ,(seconds->string #$date language)) + + (div + (ul + (li (a (@ (href "html_node")) + "HTML, with one page per node")) + (li (a (@ (href + ,(string-append + #$manual + (if (string=? language + "en") + "" + (string-append "." + language)) + ".html"))) + "HTML, entirely on one page")) + ,@(if (member language '("ru" "zh_CN")) + '() + `((li (a (@ (href ,(string-append + #$manual + (if (string=? language "en") + "" + (string-append "." + language)) + ".pdf")))) + "PDF"))))))) + (footer)))) + + (define (write-index language file) + (call-with-output-file file + (lambda (port) + (display "\n" port) + (sxml->xml (sxml-index language) port)))) + + (setenv "GUIX_LOCPATH" + #+(file-append glibc-utf8-locales "/lib/locale")) + (setenv "LC_ALL" "en_US.utf8") + (setlocale LC_ALL "en_US.utf8") + + (bindtextdomain "guix-manual" + #+(guix-manual-text-domain source languages)) + + (for-each (lambda (language) + (define directory + (string-append #$output "/" + (normalize language))) + + (mkdir-p directory) + (write-index language + (string-append directory + "/index.html"))) + '#$languages)))) + + (computed-file "html-indexes" build)) + +(define* (pdf+html-manual source + #:key (languages %languages) + (version "0.0") + (date (time-second (current-time time-utc))) + (manual "guix")) + "Return the union of the HTML and PDF manuals, as well as the indexes." + (directory-union (string-append manual "-manual") + (map (lambda (proc) + (proc source + #:date date + #:languages languages + #:version version + #:manual manual)) + (list html-manual-indexes + html-manual pdf-manual)) + #:copy? #t)) + +(define (latest-commit+date directory) + "Return two values: the last commit ID (a hex string) for DIRECTORY, and its +commit date (an integer)." + (let* ((repository (repository-open directory)) + (head (repository-head repository)) + (oid (reference-target head)) + (commit (commit-lookup repository oid))) + ;; TODO: Use (git describe) when it's widely available. + (values (oid->string oid) (commit-time commit)))) + + +(let* ((root (canonicalize-path + (string-append (current-source-directory) "/.."))) + (commit date (latest-commit+date root))) + (format (current-error-port) + "building manual from work tree around commit ~a, ~a~%" + commit + (let* ((time (make-time time-utc 0 date)) + (date (time-utc->date time))) + (date->string date "~e ~B ~Y"))) + (pdf+html-manual (local-file root "guix" #:recursive? #t + #:select? (git-predicate root)) + #:version (or (getenv "GUIX_MANUAL_VERSION") + (string-take commit 7)) + #:date date)) From 866822b738cf7cc4c2e2a4c27efbd8a8db55b7a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 7 Jul 2019 15:02:08 +0200 Subject: [PATCH 05/61] build: Remove outdated 'release.nix'. This file had been unmaintained and probably broken since ~2013. * release.nix: Remove. * Makefile.am (EXTRA_DIST): Adjust accordingly. --- Makefile.am | 1 - release.nix | 129 ---------------------------------------------------- 2 files changed, 130 deletions(-) delete mode 100644 release.nix diff --git a/Makefile.am b/Makefile.am index 0c4a79bbbf..82eda6042a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -545,7 +545,6 @@ EXTRA_DIST += \ build-aux/config.rpath \ bootstrap \ doc/build.scm \ - release.nix \ $(TESTS) if !BUILD_DAEMON_OFFLOAD diff --git a/release.nix b/release.nix deleted file mode 100644 index 369d54ed96..0000000000 --- a/release.nix +++ /dev/null @@ -1,129 +0,0 @@ -/* GNU Guix --- Functional package management for GNU - Copyright (C) 2012 Ludovic Courtès - - 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 . */ - -/* Release file to build Guix with Nix. Useful to bootstrap Guix on - Guix-enabled Hydra instances. */ - -let - nixpkgs = ; - - buildOutOfSourceTree = true; - succeedOnFailure = true; - keepBuildDirectory = true; - - # The Guile used to bootstrap the whole thing. It's normally - # downloaded by the build system, but here we download it via a - # fixed-output derivation and stuff it into the build tree. - bootstrap_guile = - let pkgs = import nixpkgs {}; in { - i686 = pkgs.fetchurl { - url = http://www.fdn.fr/~lcourtes/software/guix/packages/i686-linux/20121219/guile-2.0.7.tar.xz; - sha256 = "45d1f9bfb9e4531a8f1c5a105f7ab094cd481b8a179ccc63cbabb73ce6b8437f"; - }; - - x86_64 = pkgs.fetchurl { - url = http://www.fdn.fr/~lcourtes/software/guix/packages/x86_64-linux/20121219/guile-2.0.7.tar.xz; - sha256 = "953fbcc8db6e310626be79b67319cf4141dc23b296447952a99d95425b3a4dc1"; - }; - }; - - jobs = { - tarball = - let pkgs = import nixpkgs {}; in - pkgs.releaseTools.sourceTarball { - name = "guix-tarball"; - src = ; - buildInputs = with pkgs; [ guile sqlite bzip2 git libgcrypt ]; - buildNativeInputs = with pkgs; [ texinfo gettext cvs pkgconfig ]; - preAutoconf = ''git config submodule.nix.url "${}"''; - configureFlags = - [ "--with-libgcrypt-prefix=${pkgs.libgcrypt}" - "--localstatedir=/nix/var" - ]; - }; - - build = - { system ? builtins.currentSystem }: - - let pkgs = import nixpkgs { inherit system; }; in - pkgs.releaseTools.nixBuild { - name = "guix"; - buildInputs = with pkgs; [ guile sqlite bzip2 libgcrypt ]; - buildNativeInputs = [ pkgs.pkgconfig ]; - src = jobs.tarball; - configureFlags = - [ "--with-libgcrypt-prefix=${pkgs.libgcrypt}" - "--localstatedir=/nix/var" - ]; - - preBuild = - # Use our pre-downloaded bootstrap tarballs instead of letting - # the build system download it over and over again. - '' mkdir -p distro/packages/bootstrap/{i686,x86_64}-linux - cp -v "${bootstrap_guile.i686}" \ - distro/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz - cp -v "${bootstrap_guile.x86_64}" \ - distro/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz - ''; - - inherit succeedOnFailure keepBuildDirectory - buildOutOfSourceTree; - }; - - - build_disable_daemon = - { system ? builtins.currentSystem }: - - let - pkgs = import nixpkgs { inherit system; }; - build = jobs.build { inherit system; }; - in - pkgs.lib.overrideDerivation build ({ configureFlags, ... }: { - configureFlags = configureFlags ++ [ "--disable-daemon" ]; - buildInputs = with pkgs; [ guile nixUnstable pkgconfig ]; - - # Since we need to talk to a running daemon, we need to escape - # the chroot. - preConfigure = "export NIX_REMOTE=daemon"; - __noChroot = true; - }); - - # Jobs to test the distro. - distro = { - hello = - { system ? builtins.currentSystem }: - - let - pkgs = import nixpkgs { inherit system; }; - guix = jobs.build { inherit system; }; - in - # XXX: We have no way to tell the Nix code to swallow the .drv - # produced by `guix-build', so we have a pointless indirection - # here. This could be worked around by generating Nix code - # from the .drv, and importing that. - pkgs.releaseTools.nixBuild { - src = null; - name = "guix-hello"; - phases = "buildPhase"; - buildPhase = "${guix}/bin/guix-build --no-substitutes hello | tee $out"; - __noChroot = true; - }; - }; - }; -in - jobs From 1c9ea5aaa473a9b8c48b1ad9b07bc69e334390b8 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Wed, 26 Jun 2019 02:01:38 +0200 Subject: [PATCH 06/61] gnu: emacs-git-timemachine: Update to 4.10. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-git-timemachine): Update to 4.10. [propagated-inputs] Add emacs-transient. [source] Use GIT-FETCH and GIT-REFERENCE. Signed-off-by: Ludovic Courtès --- gnu/packages/emacs-xyz.scm | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index b6051c0ac1..6d5282fd83 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -2225,18 +2225,20 @@ display and behaviour is easily customisable.") (define-public emacs-git-timemachine (package (name "emacs-git-timemachine") - (version "4.5") + (version "4.10") (source (origin - (method url-fetch) - (uri (string-append "https://gitlab.com/pidu/git-timemachine" - "/-/archive/" version - "/git-timemachine-" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/pidu/git-timemachine.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "0ii40qcincasg7s1yrvqcxkqcqzb4sfs7gcxscn6m4x4ans165zy")))) + "08zsn3lsnnf01wkv5ls38jga02s5dnf0j3gigy4qd6im3j3d04m1")))) (build-system emacs-build-system) + (propagated-inputs + `(("emacs-transient" ,emacs-transient))) (home-page "https://gitlab.com/pidu/git-timemachine") (synopsis "Step through historic versions of Git-controlled files") (description "This package enables you to step through historic versions From 9ee3be1bd581da9038d033226c69748f419f7ddf Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Wed, 26 Jun 2019 02:03:16 +0200 Subject: [PATCH 07/61] gnu: emacs-simple-httpd: Update to 1.5.1. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-simple-httpd): Update to 1.5.1. Signed-off-by: Ludovic Courtès --- gnu/packages/emacs-xyz.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 6d5282fd83..33395399fe 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -2577,7 +2577,7 @@ as horizontal rules.") (define-public emacs-simple-httpd (package (name "emacs-simple-httpd") - (version "1.4.6") + (version "1.5.1") (source (origin (method git-fetch) @@ -2586,9 +2586,9 @@ as horizontal rules.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1qmkc0w28l53zzf5yd2grrk1sq222g5qnsm35ph25s1cfvc1qb2g")))) + (base32 "0dpn92rg813c4pq7a1vzj3znyxzp2lmvxqz6pzcqi0l2xn5r3wvb")))) (build-system emacs-build-system) - (home-page "https://github.com/skeeto/emacs-http-server") + (home-page "https://github.com/skeeto/emacs-web-server") (synopsis "HTTP server in pure Emacs Lisp") (description "This package provides a simple HTTP server written in Emacs Lisp to From 1fd2886ca7060bd0636d9ae4080bb30d0a3e875a Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Wed, 26 Jun 2019 02:03:31 +0200 Subject: [PATCH 08/61] gnu: emacs-skewer-mode: Update to 1.8.0. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-skewer-mode): Update to 1.8.0. Signed-off-by: Ludovic Courtès --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 33395399fe..ab90590950 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -2598,7 +2598,7 @@ serve files and directory listings.") (define-public emacs-skewer-mode (package (name "emacs-skewer-mode") - (version "1.6.2") + (version "1.8.0") (source (origin (method git-fetch) @@ -2607,7 +2607,7 @@ serve files and directory listings.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "05jndz0c26q60s416vqgvr66axdmxb7qsr2g70fvl5iqavnayhpv")))) + (base32 "1ha7jl7776pk1bki5zj2q0jy66450mn8xr3aqjc0m9kj3gc9qxgw")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-simple-httpd" ,emacs-simple-httpd) From 846d83482fe28ddcd3521260c0c0ce6274854c28 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Wed, 26 Jun 2019 02:07:55 +0200 Subject: [PATCH 09/61] gnu: emacs-company-restclient: Update to 0.3.0. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-company-restclient): Update to 0.3.0. Signed-off-by: Ludovic Courtès --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index ab90590950..7dd31c051f 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -12554,7 +12554,7 @@ the current upstream.") (define-public emacs-company-restclient (package (name "emacs-company-restclient") - (version "0.1.0") + (version "0.3.0") (source (origin (method git-fetch) @@ -12563,7 +12563,7 @@ the current upstream.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0i1fh5lvqwlgn3g3fzh0xacxyljx6gkryipn133vfkv4jbns51n4")))) + (base32 "0yp0hlrgcr6yy1xkjvfckys2k24x9xg7y6336ma61bdwn5lpv0x0")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-company" ,emacs-company) From 8330715878d6387a6c5c87adcee2f181dc36c117 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Wed, 26 Jun 2019 03:57:37 +0200 Subject: [PATCH 10/61] gnu: emacs-fish-completion: Don't use unstable tarball. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-fish-completion)[source]: Use GIT-FETCH and GIT-FILE-NAME. Signed-off-by: Ludovic Courtès --- gnu/packages/emacs-xyz.scm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 7dd31c051f..489e2ce14e 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -13053,14 +13053,14 @@ cohesion with the Emacs Way.") (version "1.1") (source (origin - (method url-fetch) - (uri (string-append - "https://gitlab.com/Ambrevar/emacs-fish-completion/repository/" - "archive.tar.gz?ref=" - version)) + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/Ambrevar/emacs-fish-completion.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "0bpvifv6c2a65nks6kvarw0hhm37fnyy74wikwf9qq1i20va0fpv")))) + "1pjqnbyjmj64q5nwq1mrdxcls4fp5y0b6zqs785i0s6wdvrm4021")))) (build-system emacs-build-system) (inputs `(("fish" ,fish))) (arguments @@ -13071,6 +13071,7 @@ cohesion with the Emacs Way.") (let ((fish (assoc-ref inputs "fish"))) ;; Specify the absolute file names of the various ;; programs so that everything works out-of-the-box. + (make-file-writable "fish-completion.el") (emacs-substitute-variables "fish-completion.el" ("fish-completion-command" From fa71034115cc43b2bfcadaa57fff51c6319f9d2f Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Wed, 26 Jun 2019 04:31:44 +0200 Subject: [PATCH 11/61] gnu: emacs-disk-usage: Don't use unstable tarball. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-disk-usage)[source]: Use GIT-FETCH and GIT-FILE-NAME. [home-page] Move to usual location. Signed-off-by: Ludovic Courtès --- gnu/packages/emacs-xyz.scm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 489e2ce14e..1f32ee27d2 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -14915,18 +14915,18 @@ opposed to character-based).") (package (name "emacs-disk-usage") (version "1.3.3") - (home-page "https://gitlab.com/Ambrevar/emacs-disk-usage") (source (origin - (method url-fetch) - (uri (string-append - "https://elpa.gnu.org/packages/disk-usage-" - version - ".el")) + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/Ambrevar/emacs-disk-usage.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "0h1jwznd41gi0vg830ilfgm01q05zknikzahwasm9cizwm2wyizj")))) + "0hv2gsd8k5fbjgckgiyisq4rn1i7y4rchbjy8kmixjv6mx563bll")))) (build-system emacs-build-system) + (home-page "https://gitlab.com/Ambrevar/emacs-disk-usage") (synopsis "Sort and browse disk usage listings with Emacs") (description "Disk Usage is a file system analyzer: it offers a tabulated view of file listings sorted by size. Directory sizes are computed From 9f6dca4de3fb6f52e0e82376a347b63722df993c Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Wed, 26 Jun 2019 21:27:21 +0200 Subject: [PATCH 12/61] gnu: emacs-restclient: Update to 0-2.422ee8d. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-restclient): Update to 0-2.422ee8d. Signed-off-by: Ludovic Courtès --- gnu/packages/emacs-xyz.scm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 1f32ee27d2..592023d0b4 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -8323,13 +8323,13 @@ highlighting.") (license license:gpl3+))) (define-public emacs-restclient - (let ((commit "07a3888bb36d0e29608142ebe743b4362b800f40") - (revision "1")) ;Guix package revision, + (let ((commit "422ee8d8b077dffe65706a0f027ed700b84746bc") + (version "0") + (revision "2")) ;Guix package revision, ;upstream doesn't have official releases (package (name "emacs-restclient") - (version (string-append revision "." - (string-take commit 7))) + (version (git-version version revision commit)) (source (origin (method git-fetch) (uri (git-reference @@ -8337,7 +8337,7 @@ highlighting.") (commit commit))) (sha256 (base32 - "00lmjhb5im1kgrp54yipf1h9pshxzgjlg71yf2rq5n973gvb0w0q")) + "067nin7vxkdpffxa0q61ybv7szihhvpdinivmci9qkbb86rs9kkz")) (file-name (git-file-name name version)))) (build-system emacs-build-system) (propagated-inputs From 26150eac734cb91c00420d382ff0cb39f391d3a1 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Fri, 28 Jun 2019 04:09:07 +0200 Subject: [PATCH 13/61] gnu: emacs-zoutline: Update to 0.2.0. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-zoutline): Update to 0.2.0. Signed-off-by: Ludovic Courtès --- gnu/packages/emacs-xyz.scm | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 592023d0b4..beac6caba7 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -4759,25 +4759,26 @@ a temporary @code{keep-lines} or @code{occur}.") (license license:gpl3+))) (define-public emacs-zoutline - (let ((commit "b3ee0f0e0b916838c2d2c249beba74ffdb8d5699") - (revision "0")) - (package - (name "emacs-zoutline") - (version (git-version "0.1" revision commit)) - (home-page "https://github.com/abo-abo/zoutline") - (source (origin - (method git-fetch) - (uri (git-reference (url home-page) (commit commit))) - (sha256 - (base32 - "0sd0017piw0dis6dhpq5dkqd3acisxqgipl7dj8gmc1vnswhdwr8")) - (file-name (git-file-name name version)))) - (build-system emacs-build-system) - (synopsis "Simple outline library") - (description - "This library provides helpers for outlines. Outlines allow users to + (package + (name "emacs-zoutline") + (version "0.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abo-abo/zoutline") + (commit version))) + (sha256 + (base32 + "1w0zh6vs7klgivq5r030a82mcfg1zwic4x3fimyiqyg5n8p67hyx")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (home-page "https://github.com/abo-abo/zoutline") + (synopsis "Simple outline library") + (description + "This library provides helpers for outlines. Outlines allow users to navigate code in a tree-like fashion.") - (license license:gpl3+)))) + (license license:gpl3+))) (define-public emacs-lispy (package From 55a0b2a08d97b5df9e802c4392dcd4cc680f977e Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Thu, 27 Jun 2019 09:14:32 +0200 Subject: [PATCH 14/61] gnu: emacs-md4rd: Update to 0.3.1. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-md4rd): Update to 0.3.1. Signed-off-by: Ludovic Courtès --- gnu/packages/emacs-xyz.scm | 51 ++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index beac6caba7..281fa0d3e9 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -10678,33 +10678,30 @@ navigate and display hierarchy structures.") (license license:gpl3+)))) (define-public emacs-md4rd - (let ((commit "c55512c2f7680db2a1e73db6bdf93adecaf40fec") - (revision "1")) - (package - (name "emacs-md4rd") - (version (string-append "0.0.2" "-" revision "." - (string-take commit 7))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ahungry/md4rd.git") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0mvv1mvsrpkrmikcpfqf2zbawnzgq33j6zjdrlv48mcw57xb2ak9")))) - (propagated-inputs - `(("emacs-hierarchy" ,emacs-hierarchy) - ("emacs-request" ,emacs-request) - ("emacs-dash" ,emacs-dash) - ("emacs-s" ,emacs-s) - ("emacs-tree-mode" ,emacs-tree-mode))) - (build-system emacs-build-system) - (home-page "https://github.com/ahungry/md4rd") - (synopsis "Emacs Mode for Reddit") - (description - "This package allows to read Reddit from within Emacs interactively.") - (license license:gpl3+)))) + (package + (name "emacs-md4rd") + (version "0.3.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ahungry/md4rd.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1n6g6k4adzkkn1g7z4j27s35xy12c1fg2r08gv345ddr3wplq4ri")))) + (propagated-inputs + `(("emacs-hierarchy" ,emacs-hierarchy) + ("emacs-request" ,emacs-request) + ("emacs-dash" ,emacs-dash) + ("emacs-s" ,emacs-s) + ("emacs-tree-mode" ,emacs-tree-mode))) + (build-system emacs-build-system) + (home-page "https://github.com/ahungry/md4rd") + (synopsis "Emacs Mode for Reddit") + (description + "This package allows to read Reddit from within Emacs interactively.") + (license license:gpl3+))) (define-public emacs-pulseaudio-control (let ((commit "7e1a87068379075a5e9ce36c64c686c03d20d379") From b453637f1bc2626e0b19fc6b981b1d42c43b3dcc Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Fri, 28 Jun 2019 04:20:12 +0200 Subject: [PATCH 15/61] gnu: Add emacs-lpy. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-lpy): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/emacs-xyz.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 281fa0d3e9..051816cb90 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -4838,6 +4838,36 @@ keybinding style. The provided commands allow for editing Lisp in normal state and will work even without lispy being enabled.") (license license:gpl3+)))) +(define-public emacs-lpy + (let ((commit "553d28f7b6523ae5d44d34852ab770b871b0b0ad") + (version "0.1.0") + (revision "1")) + (package + (name "emacs-lpy") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abo-abo/lpy") + (commit commit))) + (sha256 + (base32 + "0kl9b3gga18cwv5cq4db8i6b7waj6mp3h2l7qjnp7wq6dpvwhn0i")) + (file-name (git-file-name name version)))) + (propagated-inputs + `(("emacs-zoutline" ,emacs-zoutline) + ("emacs-lispy" ,emacs-lispy))) + (build-system emacs-build-system) + (home-page "https://github.com/abo-abo/lpy") + (synopsis "Modal editing for Python") + (description + "This package provides a minor mode for Python that binds useful +commands to unprefixed keys, such as @code{j} or @code{e}, under certain +circumstances, and leaves the keys untouched outside of those situations, +allowing unprefixed keys to insert their respective characters as expected.") + (license license:gpl3+)))) + (define-public emacs-clojure-mode (package (name "emacs-clojure-mode") From 81d1baafdb60d0450d494b786c26ea56ef64291f Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Fri, 5 Jul 2019 06:37:26 +0200 Subject: [PATCH 16/61] gnu: emacs-hydra: Update to 0.15.0. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-hydra): Update to 0.15.0. Signed-off-by: Ludovic Courtès --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 051816cb90..2cb9a7dc92 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -4525,7 +4525,7 @@ fully-functional one.") (define-public emacs-hydra (package (name "emacs-hydra") - (version "0.14.0") + (version "0.15.0") (source (origin (method git-fetch) @@ -4535,7 +4535,7 @@ fully-functional one.") (file-name (git-file-name name version)) (sha256 (base32 - "0ln4z2796ycy33g5jcxkqvm7638qxy4sipsab7d2864hh700cikg")))) + "0fapvhmhgc9kppf3bvkgry0cd7gyilg7sfvlscfrfjxpx4xvwsfy")))) (build-system emacs-build-system) (home-page "https://github.com/abo-abo/hydra") (synopsis "Make Emacs bindings that stick around") From ae429e48d1d38f05cadb2aaed3c084c9ac659f1d Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Fri, 5 Jul 2019 06:37:39 +0200 Subject: [PATCH 17/61] gnu: emacs-goto-chg: Update to 1.7.3-1.1829a13. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-goto-chg): Update to 1.7.3-1.1829a13. [origin]: Use GIT-FETCH and GIT-REFERENCE. [home-page]: Update. [inputs]: Add emacs-undo-tree. Signed-off-by: Ludovic Courtès --- gnu/packages/emacs-xyz.scm | 43 +++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 2cb9a7dc92..0c562b8675 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -6136,28 +6136,33 @@ Emacs that Evil does not cover properly by default, such as @code{help-mode}, (license license:gpl3+)))) (define-public emacs-goto-chg - (package - (name "emacs-goto-chg") - (version "1.6") - (source - (origin - (method url-fetch) - ;; There is no versioned source. - (uri "https://www.emacswiki.org/emacs/download/goto-chg.el") - (file-name (string-append "goto-chg-" version ".el")) - (sha256 - (base32 - "078d6p4br5vips7b9x4v6cy0wxf6m5ij9gpqd4g33bryn22gnpij")))) - (build-system emacs-build-system) - ;; There is no other home page. - (home-page "https://www.emacswiki.org/emacs/goto-chg.el") - (synopsis "Go to the last change in the Emacs buffer") - (description - "This package provides @code{M-x goto-last-change} command that goes to + (let ((commit "1829a13026c597e358f716d2c7793202458120b5") + (version "1.7.3") + (revision "1")) + (package + (name "emacs-goto-chg") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-evil/goto-chg") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1y603maw9xwdj3qiarmf1bp13461f9f5ackzicsbynl0i9la3qki")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-undo-tree" ,emacs-undo-tree))) + (home-page "https://github.com/emacs-evil/goto-chg") + (synopsis "Go to the last change in the Emacs buffer") + (description + "This package provides @code{M-x goto-last-change} command that goes to the point of the most recent edit in the current Emacs buffer. When repeated, go to the second most recent edit, etc. Negative argument, @kbd{C-u -}, is used for reverse direction.") - (license license:gpl2+))) + (license license:gpl2+)))) (define-public emacs-janpath-evil-numbers (let ((commit "d988041c1fe6e941dc8d591390750b237f71f524") From e41ba8606f13513c89832cdfffbafc689740f8bc Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Sat, 6 Jul 2019 20:10:54 +0200 Subject: [PATCH 18/61] gnu: Add emacs-moe-theme-el. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-moe-theme-el): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/emacs-xyz.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 0c562b8675..30b6ccf673 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -4077,6 +4077,30 @@ organizer.") It is built on top of the custom theme support in Emacs 24 or later.") (license license:gpl3+))) +(define-public emacs-moe-theme-el + (let ((commit "6e086d855d6bb446bbd1090742815589a81a915f") + (version "1.0") + (revision "1")) + (package + (name "emacs-moe-theme-el") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kuanyui/moe-theme.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0xj4wfd7h4jqnr193pizm9frf6lmwjr0dsdv2l9mqh9k691z1dnc")))) + (build-system emacs-build-system) + (home-page "https://github.com/kuanyui/moe-theme.el") + (synopsis "Anime-inspired color themes") + (description + "This package provides vibrant color schemes with light and dark +variants.") + (license license:gpl3+)))) + (define-public emacs-solarized-theme (package (name "emacs-solarized-theme") From 6543bc80b41c488a069b39d8b26e6d61cbb8252d Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Wed, 12 Jun 2019 21:15:27 +0100 Subject: [PATCH 19/61] gnu: Add python-slugify. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/python-web.scm (python-slugify): New variable. * gnu/packages/patches/python-slugify-depend-on-unidecode.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. Signed-off-by: Ludovic Courtès --- gnu/local.mk | 1 + .../python-slugify-depend-on-unidecode.patch | 22 +++++++++++++ gnu/packages/python-web.scm | 31 +++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 gnu/packages/patches/python-slugify-depend-on-unidecode.patch diff --git a/gnu/local.mk b/gnu/local.mk index 68a43330c4..f6392ccd23 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1231,6 +1231,7 @@ dist_patch_DATA = \ %D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \ %D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch \ %D%/packages/patches/python-robotframework-honor-source-date-epoch.patch \ + %D%/packages/patches/python-slugify-depend-on-unidecode.patch \ %D%/packages/patches/python2-subprocess32-disable-input-test.patch \ %D%/packages/patches/python-unittest2-python3-compat.patch \ %D%/packages/patches/python-unittest2-remove-argparse.patch \ diff --git a/gnu/packages/patches/python-slugify-depend-on-unidecode.patch b/gnu/packages/patches/python-slugify-depend-on-unidecode.patch new file mode 100644 index 0000000000..6038f432f1 --- /dev/null +++ b/gnu/packages/patches/python-slugify-depend-on-unidecode.patch @@ -0,0 +1,22 @@ +diff --git a/setup.py b/setup.py +index 4800173..6bdd77f 100755 +--- a/setup.py ++++ b/setup.py +@@ -14,8 +14,7 @@ url = 'https://github.com/un33k/python-slugify' + author = 'Val Neekman' + author_email = 'info@neekware.com' + license = 'MIT' +-install_requires = ['text-unidecode==1.2'] +-extras_require = {'unidecode': ['Unidecode==1.0.23']} ++install_requires = ['Unidecode'] + + classifiers = [ + 'Development Status :: 5 - Production/Stable', +@@ -67,7 +66,6 @@ setup( + author_email=author_email, + packages=find_packages(exclude=EXCLUDE_FROM_PACKAGES), + install_requires=install_requires, +- extras_require=extras_require, + classifiers=classifiers, + entry_points={'console_scripts': ['slugify=slugify.slugify:main']}, + ) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index cbcbe6c867..e441cbaa81 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -29,6 +29,7 @@ ;;; Copyright © 2018 Maxim Cournoyer ;;; Copyright © 2019 Vagrant Cascadian ;;; Copyright © 2019 Brendan Tildesley +;;; Copyright © 2019 Pierre Langlois ;;; ;;; This file is part of GNU Guix. ;;; @@ -3165,3 +3166,33 @@ Python.") (propagated-inputs `(("python-gevent" ,python2-gevent) ("python-tornado" ,python2-tornado))))) + +(define-public python-slugify + (package + (name "python-slugify") + (version "3.0.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-slugify" version)) + (sha256 + (base32 + "0n6pfmsq899c54plpvzi46l7zrpa3zfpm8im6h32czjw6kxky5jp")) + (patches + (search-patches "python-slugify-depend-on-unidecode.patch")))) + (native-inputs + `(("python-wheel" ,python-wheel))) + (propagated-inputs + `(("python-unidecode" ,python-unidecode))) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "python" "test.py")))))) + (build-system python-build-system) + (home-page "https://github.com/un33k/python-slugify") + (synopsis "Python Slugify application that handles Unicode") + (description "This package provides a @command{slufigy} command and +library to create slugs from unicode strings while keeping it DRY.") + (license license:expat))) From 0d5b7ea11f4b46197ede74e4b203244620dfd0f2 Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Thu, 13 Jun 2019 16:06:20 +0100 Subject: [PATCH 20/61] gnu: Add python-pytimeparse. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/time.scm (python-pytimeparse): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/time.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm index 747e4cf080..a0c0824a92 100644 --- a/gnu/packages/time.scm +++ b/gnu/packages/time.scm @@ -15,6 +15,7 @@ ;;; Copyright © 2017 Julien Lepiller ;;; Copyright © 2018 Alex Vong ;;; Copyright © 2019 Kyle Meyer +;;; Copyright © 2019 Pierre Langlois ;;; ;;; This file is part of GNU Guix. ;;; @@ -65,6 +66,26 @@ program uses. The display output of the program can be customized or saved to a file.") (license gpl3+))) +(define-public python-pytimeparse + (package + (name "python-pytimeparse") + (version "1.1.8") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pytimeparse" version)) + (sha256 + (base32 + "02kaambsgpjx3zi42j6l11rwms2p35b9hsk4f3kdf979gd3kcqg8")))) + (native-inputs + `(("python-nose" ,python-nose))) + (build-system python-build-system) + (home-page "https://github.com/wroberts/pytimeparse") + (synopsis "Time expression parser") + (description "This small Python module parses various kinds of time +expressions.") + (license expat))) + (define-public python-pytzdata (package (name "python-pytzdata") From 450d5dc2893aad1511b280ff71a98840c29f64cb Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Thu, 13 Jun 2019 16:06:21 +0100 Subject: [PATCH 21/61] gnu: Add python-crate. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/databases.scm (python-crate): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/databases.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 561a3b3b12..b60bc69903 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -36,6 +36,7 @@ ;;; Copyright © 2019 Jack Hill ;;; Copyright © 2019 Alex Griffin ;;; Copyright © 2019 Gábor Boskovits +;;; Copyright © 2019 Pierre Langlois ;;; ;;; This file is part of GNU Guix. ;;; @@ -92,6 +93,7 @@ #:use-module (gnu packages popt) #:use-module (gnu packages python) #:use-module (gnu packages python-crypto) + #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages rdf) #:use-module (gnu packages readline) @@ -3080,3 +3082,24 @@ NumPy, and other traditional Python scientific computing packages.") (define-public python2-pyarrow (package-with-python2 python-pyarrow)) + +(define-public python-crate + (package + (name "python-crate") + (version "0.23.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "crate" version)) + (sha256 + (base32 + "0s3s7yg4m2zflg9q96aibwb5hizsn10ql63fsj6h5z624qkavnlp")))) + (build-system python-build-system) + (propagated-inputs + `(("python-urllib3" ,python-urllib3))) + (home-page "https://github.com/crate/crate-python") + (synopsis "CrateDB Python client") + (description + "This package provides a Python client library for CrateDB. +It implements the Python DB API 2.0 specification and includes support for +SQLAlchemy.") + (license license:asl2.0))) From edeb04bfb78524e46f5e20fcef5bb025469e216c Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Thu, 13 Jun 2019 16:06:22 +0100 Subject: [PATCH 22/61] gnu: Add python-dbfread. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/python-xyz.scm (python-dbfread): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/python-xyz.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index e27cb16007..49d5126e02 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -62,6 +62,7 @@ ;;; Copyright © 2019 Jack Hill ;;; Copyright © 2019 Guillaume Le Vaillant ;;; Copyright © 2019 Alex Griffin +;;; Copyright © 2019 Pierre Langlois ;;; ;;; This file is part of GNU Guix. ;;; @@ -15901,3 +15902,24 @@ hash, recno, and queue. Complete support of Berkeley DB distributed transactions. Complete support for Berkeley DB Replication Manager. Complete support for Berkeley DB Base Replication. Support for RPC.") (license license:bsd-3))) + +(define-public python-dbfread + (package + (name "python-dbfread") + (version "2.0.7") + (source (origin + (method url-fetch) + (uri (pypi-uri "dbfread" version)) + (sha256 + (base32 + "0gdpwdzf1fngsi6jrdyj4qdf6cr7gnnr3zp80dpkzbgz0spskj07")))) + (build-system python-build-system) + (native-inputs + `(("python-pytest" ,python-pytest))) + (home-page "https://dbfread.readthedocs.io") + (synopsis "Read DBF Files with Python") + (description + "This library reads DBF files and returns the data as native Python data +types for further processing. It is primarily intended for batch jobs and +one-off scripts.") + (license license:expat))) From 451742bcf658b0bc185e925d01d5b96355bda412 Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Thu, 13 Jun 2019 16:06:23 +0100 Subject: [PATCH 23/61] gnu: Add python-leather. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/wireservice.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. Signed-off-by: Ludovic Courtès --- gnu/local.mk | 1 + gnu/packages/wireservice.scm | 91 ++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 gnu/packages/wireservice.scm diff --git a/gnu/local.mk b/gnu/local.mk index f6392ccd23..0f4c1ce5c8 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -490,6 +490,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/wget.scm \ %D%/packages/wicd.scm \ %D%/packages/wine.scm \ + %D%/packages/wireservice.scm \ %D%/packages/wm.scm \ %D%/packages/wordnet.scm \ %D%/packages/wv.scm \ diff --git a/gnu/packages/wireservice.scm b/gnu/packages/wireservice.scm new file mode 100644 index 0000000000..290b027e7b --- /dev/null +++ b/gnu/packages/wireservice.scm @@ -0,0 +1,91 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Pierre Langlois +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages wireservice) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix build-system python) + #:use-module (guix git-download) + #:use-module (guix packages) + #:use-module (gnu packages) + #:use-module (gnu packages check) + #:use-module (gnu packages python-web) + #:use-module (gnu packages python-xyz) + #:use-module (gnu packages sphinx)) + +;; Base package definition for packages from https://github.com/wireservice. +;; This is done so we can share how to run tests and build documentation. +(define base-package + (package + (name #f) + (version #f) + (source #f) + (home-page #f) + (synopsis #f) + (description #f) + (build-system python-build-system) + (native-inputs + `(("python-nose" ,python-nose) + ("python-sphinx" ,python-sphinx) + ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme))) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "nosetests" "tests"))) + (add-after 'install 'install-docs + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (string-append out "/share/doc/" + ,(package-name this-package) + "-" + ,(package-version this-package)))) + (with-directory-excursion "docs" + (for-each + (lambda (target) + (invoke "make" target) + (copy-recursively (string-append "_build/" target) + (string-append doc "/" target))) + '("html" "dirhtml" "singlehtml" "text"))) + #t)))))) + (license license:expat))) + +(define-public python-leather + (package + (inherit base-package) + (name "python-leather") + (version "0.3.3") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wireservice/leather.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ck3dplni99sv4s117cbm07ydwwjsrxkhdy19rnk0iglia1d4s5i")))) + (native-inputs + `(("python-cssselect" ,python-cssselect) + ("python-lxml" ,python-lxml) + ,@(package-native-inputs base-package))) + (propagated-inputs + `(("python-six" ,python-six))) + (home-page "https://leather.rtfd.org") + (synopsis "Python charting for 80% of humans") + (description "Leather is a Python charting library for those who need +charts now and don't care if they're perfect."))) From dc835e75ce2f8b192cddf9b20e3cffeb5722db6e Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Thu, 13 Jun 2019 16:06:24 +0100 Subject: [PATCH 24/61] gnu: Add python-agate. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/wireservice.scm (python-agate): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/wireservice.scm | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/gnu/packages/wireservice.scm b/gnu/packages/wireservice.scm index 290b027e7b..db17c55cd8 100644 --- a/gnu/packages/wireservice.scm +++ b/gnu/packages/wireservice.scm @@ -25,7 +25,8 @@ #:use-module (gnu packages check) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) - #:use-module (gnu packages sphinx)) + #:use-module (gnu packages sphinx) + #:use-module (gnu packages time)) ;; Base package definition for packages from https://github.com/wireservice. ;; This is done so we can share how to run tests and build documentation. @@ -89,3 +90,35 @@ (synopsis "Python charting for 80% of humans") (description "Leather is a Python charting library for those who need charts now and don't care if they're perfect."))) + +(define-public python-agate + (package + (inherit base-package) + (name "python-agate") + (version "1.6.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wireservice/agate.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "077zj8xad8hsa3nqywvf7ircirmx3krxdipl8wr3dynv3l3khcpl")))) + (native-inputs + `(("python-cssselect" ,python-cssselect) + ("python-lxml" ,python-lxml) + ,@(package-native-inputs base-package))) + (propagated-inputs + `(("python-babel" ,python-babel) + ("python-isodate" ,python-isodate) + ("python-leather" ,python-leather) + ("python-parsedatetime" ,python-parsedatetime) + ("python-pytimeparse" ,python-pytimeparse) + ("python-six" ,python-six) + ("python-slugify" ,python-slugify))) + (home-page "https://agate.rtfd.org") + (synopsis "Data analysis library") + (description "Agate is a Python data analysis library. It is an +alternative to numpy and pandas that solves real-world problems with readable +code. Agate was previously known as journalism."))) From 9b2850c8458747d6840538b1cf9a7f8b804bf17b Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Thu, 13 Jun 2019 16:06:25 +0100 Subject: [PATCH 25/61] gnu: Add python-agate-sql. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/wireservice.scm (python-agate-sql): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/wireservice.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/wireservice.scm b/gnu/packages/wireservice.scm index db17c55cd8..575b63792b 100644 --- a/gnu/packages/wireservice.scm +++ b/gnu/packages/wireservice.scm @@ -23,6 +23,7 @@ #:use-module (guix packages) #:use-module (gnu packages) #:use-module (gnu packages check) + #:use-module (gnu packages databases) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages sphinx) @@ -122,3 +123,26 @@ charts now and don't care if they're perfect."))) (description "Agate is a Python data analysis library. It is an alternative to numpy and pandas that solves real-world problems with readable code. Agate was previously known as journalism."))) + +(define-public python-agate-sql + (package + (inherit base-package) + (name "python-agate-sql") + (version "0.5.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wireservice/agate-sql.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "16q0b211n5b1qmhzkfl2jr56lda0rvyh5j1wzw26h2n4pm4wxlx2")))) + (propagated-inputs + `(("python-agate" ,python-agate) + ("python-crate" ,python-crate) + ("python-sqlalchemy" ,python-sqlalchemy))) + (home-page "https://agate-sql.rtfd.org") + (synopsis "SQL read/write support to agate") + (description "@code{agatesql} uses a monkey patching pattern to add SQL +support to all @code{agate.Table} instances."))) From f1122a2c91d4c6f5bdda495882ac6c9efc4843a8 Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Thu, 13 Jun 2019 16:06:26 +0100 Subject: [PATCH 26/61] gnu: Add python-agate-dbf. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/wireservice.scm (python-agate-dbf): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/wireservice.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/wireservice.scm b/gnu/packages/wireservice.scm index 575b63792b..4a8e7681ed 100644 --- a/gnu/packages/wireservice.scm +++ b/gnu/packages/wireservice.scm @@ -146,3 +146,25 @@ code. Agate was previously known as journalism."))) (synopsis "SQL read/write support to agate") (description "@code{agatesql} uses a monkey patching pattern to add SQL support to all @code{agate.Table} instances."))) + +(define-public python-agate-dbf + (package + (inherit base-package) + (name "python-agate-dbf") + (version "0.2.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wireservice/agate-dbf.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1y49fi6pmm7gzhajvqmfpcca2sqnwj24fqnsvzwk7r1hg2iaa2gi")))) + (propagated-inputs + `(("python-agate" ,python-agate) + ("python-dbfread" ,python-dbfread))) + (home-page "https://agate-dbf.rtfd.org") + (synopsis "Add read support for dbf files to agate") + (description "@code{agatedbf} uses a monkey patching pattern to add read +for dbf files support to all @code{agate.Table} instances."))) From 213b05f04e2ee246ffb0285c71ad2f646795d135 Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Thu, 13 Jun 2019 16:06:27 +0100 Subject: [PATCH 27/61] gnu: Add python-agate-excel. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/wireservice.scm (python-agate-excel): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/wireservice.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/wireservice.scm b/gnu/packages/wireservice.scm index 4a8e7681ed..78c2a4264d 100644 --- a/gnu/packages/wireservice.scm +++ b/gnu/packages/wireservice.scm @@ -168,3 +168,26 @@ support to all @code{agate.Table} instances."))) (synopsis "Add read support for dbf files to agate") (description "@code{agatedbf} uses a monkey patching pattern to add read for dbf files support to all @code{agate.Table} instances."))) + +(define-public python-agate-excel + (package + (inherit base-package) + (name "python-agate-excel") + (version "0.2.3") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wireservice/agate-excel.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1k5lv21k19s7kgbj5srd1xgrkqvxqqs49qwj33zncs9l7851afy7")))) + (propagated-inputs + `(("python-agate" ,python-agate) + ("python-openpyxl" ,python-openpyxl) + ("python-xlrd" ,python-xlrd))) + (home-page "https://agate-excel.rtfd.org") + (synopsis "Add read support for Excel files (xls and xlsx) to agate") + (description "@code{agateexcel} uses a monkey patching pattern to add read +for xls and xlsx files support to all @code{agate.Table} instances."))) From bf187d92e39e93e8e08719de8b08c57db530eed9 Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Thu, 13 Jun 2019 16:07:21 +0100 Subject: [PATCH 28/61] gnu: Add csvkit. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/wireservice.scm (csvkit): New variable. * gnu/packages/patches/csvkit-fix-tests.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. Signed-off-by: Ludovic Courtès --- gnu/local.mk | 1 + gnu/packages/patches/csvkit-fix-tests.patch | 45 +++++++++++++ gnu/packages/wireservice.scm | 73 +++++++++++++++++++++ 3 files changed, 119 insertions(+) create mode 100644 gnu/packages/patches/csvkit-fix-tests.patch diff --git a/gnu/local.mk b/gnu/local.mk index 0f4c1ce5c8..734676f45a 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -742,6 +742,7 @@ dist_patch_DATA = \ %D%/packages/patches/cpufrequtils-fix-aclocal.patch \ %D%/packages/patches/crawl-upgrade-saves.patch \ %D%/packages/patches/crda-optional-gcrypt.patch \ + %D%/packages/patches/csvkit-fix-tests.patch \ %D%/packages/patches/clucene-contribs-lib.patch \ %D%/packages/patches/cube-nocheck.patch \ %D%/packages/patches/cursynth-wave-rand.patch \ diff --git a/gnu/packages/patches/csvkit-fix-tests.patch b/gnu/packages/patches/csvkit-fix-tests.patch new file mode 100644 index 0000000000..cb9ec39cb0 --- /dev/null +++ b/gnu/packages/patches/csvkit-fix-tests.patch @@ -0,0 +1,45 @@ +diff --git a/tests/test_utilities/test_csvsql.py b/tests/test_utilities/test_csvsql.py +index e6ec4af..4f47980 100644 +--- a/tests/test_utilities/test_csvsql.py ++++ b/tests/test_utilities/test_csvsql.py +@@ -197,7 +197,7 @@ class TestCSVSQL(CSVKitTestCase, EmptyFileTests): + utility.run() + output = output_file.getvalue() + output_file.close() +- self.assertEqual(output, 'a,b,c\n1,2,3\n0,5,6\n') ++ self.assertEqual(output, 'a,b,c\n1,2.0,3.0\n0,5.0,6.0\n') + + def test_no_prefix_unique_constraint(self): + self.get_output(['--db', 'sqlite:///' + self.db_file, '--insert', 'examples/dummy.csv', '--unique-constraint', 'a']) +diff --git a/tests/test_utilities/test_sql2csv.py b/tests/test_utilities/test_sql2csv.py +index a0c3d3e..babcfd6 100644 +--- a/tests/test_utilities/test_sql2csv.py ++++ b/tests/test_utilities/test_sql2csv.py +@@ -121,23 +121,23 @@ class TestSQL2CSV(CSVKitTestCase, EmptyFileTests): + input_file.close() + + def test_unicode(self): +- expected = self.csvsql('examples/test_utf8.csv') ++ self.csvsql('examples/test_utf8.csv') + csv = self.get_output(['--db', 'sqlite:///' + self.db_file, '--query', 'select * from foo']) +- self.assertEqual(csv.strip(), expected) ++ self.assertEqual(csv.strip(), 'foo,bar,baz\n1.0,2.0,3\n4.0,5.0,ʤ') + + def test_no_header_row(self): + self.csvsql('examples/dummy.csv') + csv = self.get_output(['--db', 'sqlite:///' + self.db_file, '--no-header-row', '--query', 'select * from foo']) + + self.assertTrue('a,b,c' not in csv) +- self.assertTrue('1,2,3' in csv) ++ self.assertTrue('1,2.0,3.0' in csv) + + def test_linenumbers(self): + self.csvsql('examples/dummy.csv') + csv = self.get_output(['--db', 'sqlite:///' + self.db_file, '--linenumbers', '--query', 'select * from foo']) + + self.assertTrue('line_number,a,b,c' in csv) +- self.assertTrue('1,1,2,3' in csv) ++ self.assertTrue('1,1,2.0,3.0' in csv) + + def test_wildcard_on_sqlite(self): + self.csvsql('examples/iris.csv') diff --git a/gnu/packages/wireservice.scm b/gnu/packages/wireservice.scm index 78c2a4264d..ab86f21f2f 100644 --- a/gnu/packages/wireservice.scm +++ b/gnu/packages/wireservice.scm @@ -19,6 +19,7 @@ (define-module (gnu packages wireservice) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system python) + #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix packages) #:use-module (gnu packages) @@ -191,3 +192,75 @@ for dbf files support to all @code{agate.Table} instances."))) (synopsis "Add read support for Excel files (xls and xlsx) to agate") (description "@code{agateexcel} uses a monkey patching pattern to add read for xls and xlsx files support to all @code{agate.Table} instances."))) + +(define-public csvkit + (package + (name "csvkit") + (version "1.0.4") + (source (origin + (method url-fetch) + (uri (pypi-uri "csvkit" version)) + (sha256 + (base32 + "1830lb95rh1iyi3drlwxzb6y3pqkii0qiyzd40c1kvhvaf1s6lqk")) + (patches (search-patches "csvkit-fix-tests.patch")))) + (build-system python-build-system) + (native-inputs + `(("python-psycopg2" ,python-psycopg2) ;; Used to test PostgreSQL support. + ("python-sphinx" ,python-sphinx) + ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme))) + (inputs + `(("python-agate-dbf" ,python-agate-dbf) + ("python-agate-excel" ,python-agate-excel) + ("python-agate-sql" ,python-agate-sql) + ("python-six" ,python-six))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'install-docs + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (man1 (string-append out "/share/man/man1"))) + (with-directory-excursion "docs" + (invoke "make" "man") + (copy-recursively "_build/man" man1)) + #t)))))) + (home-page "https://csvkit.rtfd.org") + (synopsis "Command-line tools for working with CSV") + (description "csvkit is a suite of command-line tools for converting to +and working with CSV. It provides the following commands: +@itemize +@item Input: + @itemize + @item @command{in2csv}: Convert various formats to CSV. + @item @command{sql2csv}: Execute SQL commands on a database and return the +data as CSV. + @end itemize +@item Processing: + @itemize + @item @command{csvclean}: Remove common syntax errors. + @item @command{csvcut}: Filter and truncate CSV files. + @item @command{csvgrep}: Filter tabular data to only those rows where +certain columns contain a given value or match a regular expression. + @item @command{csvjoin}: Merges two or more CSV tables together using a +method analogous to SQL JOIN operation. + @item @command{csvsort}: Sort CSV files. + @item @command{csvstack}: Stack up the rows from multiple CSV files, +optionally adding a grouping value to each row. + @end itemize +@item Output and analysis: + @itemize + @item @command{csvformat}: Convert a CSV file to a custom output format. + @item @command{csvjson}: Converts a CSV file into JSON or GeoJSON. + @item @command{csvlook}: Renders a CSV to the command line in a +Markdown-compatible, fixed-width format. + @item @command{csvpy}: Loads a CSV file into a @code{agate.csv.Reader} +object and then drops into a Python shell so the user can inspect the data +however they see fit. + @item @command{csvsql}: Generate SQL statements for a CSV file or execute +those statements directly on a database. + @item @command{csvstat}: Prints descriptive statistics for all columns in a +CSV file. + @end itemize +@end itemize") + (license license:expat))) From d335ef51d7e73808c3b8bd7247710db0f3302287 Mon Sep 17 00:00:00 2001 From: Vagrant Cascadian Date: Sun, 7 Jul 2019 18:26:41 -0700 Subject: [PATCH 29/61] gnu: diffoscope: Update to 116. * gnu/packages/package-management (diffoscope): Update to 116. --- gnu/packages/package-management.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index d0388e5d43..ab11065379 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -563,16 +563,16 @@ transactions from C or Python.") (define-public diffoscope (package (name "diffoscope") - (version (git-version "115" "1" "7f3416ffd12572b42c814e43ac15cee44ef48155")) + (version "116") (source (origin (method git-fetch) (uri (git-reference (url "https://salsa.debian.org/reproducible-builds/diffoscope.git") - (commit "7f3416ffd12572b42c814e43ac15cee44ef48155"))) + (commit "116"))) (file-name (git-file-name name version)) (sha256 (base32 - "1pn2rwlz5shdx7s63798wx2v7029bl5if6dlq3i2r6zsnpp0laki")))) + "1anz2c112y0w21mh7xp6bs6z7v10dcy1i25nypkvqy3j929m0g28")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases From c7b757c46c91c4c3ddb4b784ae132af119f17ea8 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Mon, 8 Jul 2019 10:38:23 +0300 Subject: [PATCH 30/61] gnu: gama: Update to 2.06. * gnu/packages/gps.scm (gama): Update to 2.06. --- gnu/packages/gps.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm index 75212ed60e..852d095300 100644 --- a/gnu/packages/gps.scm +++ b/gnu/packages/gps.scm @@ -147,7 +147,7 @@ between two other data points.") (define-public gama (package (name "gama") - (version "2.03") + (version "2.06") (source (origin (method url-fetch) @@ -155,7 +155,7 @@ between two other data points.") version ".tar.gz")) (sha256 (base32 - "0d33yyasnx54c6i40rkr9by4qv92rqb8wkmp5r46nz7bbp9kpymv")))) + "06xp3kj099b6m2fsmgcbzgj7xk4j0drsps52m4fr8vc6fglsh44p")))) (build-system gnu-build-system) (arguments '(#:parallel-tests? #f)) ; race condition (native-inputs From cdf689471a7f360efc798eb6e4dcdc4297d64043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 8 Jul 2019 10:53:41 +0200 Subject: [PATCH 31/61] channels: Key cached channel derivations by system. Previously, the channel instance to derivation mapping would be independent of the system. Thus, building the same channel instance for several different systems would always return the derivation that was first computed. This is a followup to c3ab921eed2a471022e9863a94ea521508782e53. * guix/channels.scm (channel-instance-derivations)[instance->derivation]: Pass the current system as a third argument to 'mcached'. --- guix/channels.scm | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/guix/channels.scm b/guix/channels.scm index fcf9fed829..e6bb9b891b 100644 --- a/guix/channels.scm +++ b/guix/channels.scm @@ -349,13 +349,15 @@ INSTANCES." (resolve-dependencies instances)) (define (instance->derivation instance) - (mcached (if (eq? instance core-instance) - (build-channel-instance instance) - (mlet %store-monad ((core (instance->derivation core-instance)) - (deps (mapm %store-monad instance->derivation - (edges instance)))) - (build-channel-instance instance core deps))) - instance)) + (mlet %store-monad ((system (current-system))) + (mcached (if (eq? instance core-instance) + (build-channel-instance instance) + (mlet %store-monad ((core (instance->derivation core-instance)) + (deps (mapm %store-monad instance->derivation + (edges instance)))) + (build-channel-instance instance core deps))) + instance + system))) (unless core-instance (let ((loc (and=> (any (compose channel-location channel-instance-channel) From b9a1d74de59887e0e73908f5bcbe27631038b2cf Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Sun, 7 Jul 2019 16:02:26 +0100 Subject: [PATCH 32/61] gnu: wireservice: New wireservice-package macro. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the parent 'base-package' variable with a 'wireservice-package' macro that includes all common package fields. * gnu/packages/wireservice.scm (base-package): Delete. (wireservice-package): New macro. (python-leather, python-agate, python-agate-sql, python-agate-dbf, python-agate-excel): Use wireservice-package. Signed-off-by: Ludovic Courtès --- gnu/packages/wireservice.scm | 247 ++++++++++++++++++----------------- 1 file changed, 124 insertions(+), 123 deletions(-) diff --git a/gnu/packages/wireservice.scm b/gnu/packages/wireservice.scm index ab86f21f2f..362b69575f 100644 --- a/gnu/packages/wireservice.scm +++ b/gnu/packages/wireservice.scm @@ -30,21 +30,10 @@ #:use-module (gnu packages sphinx) #:use-module (gnu packages time)) -;; Base package definition for packages from https://github.com/wireservice. -;; This is done so we can share how to run tests and build documentation. -(define base-package +;; Common package definition for packages from https://github.com/wireservice. +(define-syntax-rule (wireservice-package extra-fields ...) (package - (name #f) - (version #f) - (source #f) - (home-page #f) - (synopsis #f) - (description #f) (build-system python-build-system) - (native-inputs - `(("python-nose" ,python-nose) - ("python-sphinx" ,python-sphinx) - ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme))) (arguments `(#:phases (modify-phases %standard-phases @@ -66,131 +55,143 @@ (string-append doc "/" target))) '("html" "dirhtml" "singlehtml" "text"))) #t)))))) - (license license:expat))) + (license license:expat) + extra-fields ...)) (define-public python-leather - (package - (inherit base-package) - (name "python-leather") - (version "0.3.3") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/wireservice/leather.git") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1ck3dplni99sv4s117cbm07ydwwjsrxkhdy19rnk0iglia1d4s5i")))) - (native-inputs - `(("python-cssselect" ,python-cssselect) - ("python-lxml" ,python-lxml) - ,@(package-native-inputs base-package))) - (propagated-inputs - `(("python-six" ,python-six))) - (home-page "https://leather.rtfd.org") - (synopsis "Python charting for 80% of humans") - (description "Leather is a Python charting library for those who need + (wireservice-package + (name "python-leather") + (version "0.3.3") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wireservice/leather.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ck3dplni99sv4s117cbm07ydwwjsrxkhdy19rnk0iglia1d4s5i")))) + (native-inputs + `(("python-nose" ,python-nose) + ("python-sphinx" ,python-sphinx) + ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme) + ("python-csselect" ,python-cssselect) + ("python-lxml" ,python-lxml))) + (propagated-inputs + `(("python-six" ,python-six))) + (home-page "https://leather.rtfd.org") + (synopsis "Python charting for 80% of humans") + (description "Leather is a Python charting library for those who need charts now and don't care if they're perfect."))) (define-public python-agate - (package - (inherit base-package) - (name "python-agate") - (version "1.6.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/wireservice/agate.git") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "077zj8xad8hsa3nqywvf7ircirmx3krxdipl8wr3dynv3l3khcpl")))) - (native-inputs - `(("python-cssselect" ,python-cssselect) - ("python-lxml" ,python-lxml) - ,@(package-native-inputs base-package))) - (propagated-inputs - `(("python-babel" ,python-babel) - ("python-isodate" ,python-isodate) - ("python-leather" ,python-leather) - ("python-parsedatetime" ,python-parsedatetime) - ("python-pytimeparse" ,python-pytimeparse) - ("python-six" ,python-six) - ("python-slugify" ,python-slugify))) - (home-page "https://agate.rtfd.org") - (synopsis "Data analysis library") - (description "Agate is a Python data analysis library. It is an + (wireservice-package + (name "python-agate") + (version "1.6.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wireservice/agate.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "077zj8xad8hsa3nqywvf7ircirmx3krxdipl8wr3dynv3l3khcpl")))) + (native-inputs + `(("python-nose" ,python-nose) + ("python-sphinx" ,python-sphinx) + ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme) + ("python-csselect" ,python-cssselect) + ("python-lxml" ,python-lxml))) + (propagated-inputs + `(("python-babel" ,python-babel) + ("python-isodate" ,python-isodate) + ("python-leather" ,python-leather) + ("python-parsedatetime" ,python-parsedatetime) + ("python-pytimeparse" ,python-pytimeparse) + ("python-six" ,python-six) + ("python-slugify" ,python-slugify))) + (home-page "https://agate.rtfd.org") + (synopsis "Data analysis library") + (description "Agate is a Python data analysis library. It is an alternative to numpy and pandas that solves real-world problems with readable code. Agate was previously known as journalism."))) (define-public python-agate-sql - (package - (inherit base-package) - (name "python-agate-sql") - (version "0.5.4") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/wireservice/agate-sql.git") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "16q0b211n5b1qmhzkfl2jr56lda0rvyh5j1wzw26h2n4pm4wxlx2")))) - (propagated-inputs - `(("python-agate" ,python-agate) - ("python-crate" ,python-crate) - ("python-sqlalchemy" ,python-sqlalchemy))) - (home-page "https://agate-sql.rtfd.org") - (synopsis "SQL read/write support to agate") - (description "@code{agatesql} uses a monkey patching pattern to add SQL + (wireservice-package + (name "python-agate-sql") + (version "0.5.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wireservice/agate-sql.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "16q0b211n5b1qmhzkfl2jr56lda0rvyh5j1wzw26h2n4pm4wxlx2")))) + (native-inputs + `(("python-nose" ,python-nose) + ("python-sphinx" ,python-sphinx) + ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme))) + (propagated-inputs + `(("python-agate" ,python-agate) + ("python-crate" ,python-crate) + ("python-sqlalchemy" ,python-sqlalchemy))) + (home-page "https://agate-sql.rtfd.org") + (synopsis "SQL read/write support to agate") + (description "@code{agatesql} uses a monkey patching pattern to add SQL support to all @code{agate.Table} instances."))) (define-public python-agate-dbf - (package - (inherit base-package) - (name "python-agate-dbf") - (version "0.2.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/wireservice/agate-dbf.git") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1y49fi6pmm7gzhajvqmfpcca2sqnwj24fqnsvzwk7r1hg2iaa2gi")))) - (propagated-inputs - `(("python-agate" ,python-agate) - ("python-dbfread" ,python-dbfread))) - (home-page "https://agate-dbf.rtfd.org") - (synopsis "Add read support for dbf files to agate") - (description "@code{agatedbf} uses a monkey patching pattern to add read + (wireservice-package + (name "python-agate-dbf") + (version "0.2.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wireservice/agate-dbf.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1y49fi6pmm7gzhajvqmfpcca2sqnwj24fqnsvzwk7r1hg2iaa2gi")))) + (native-inputs + `(("python-nose" ,python-nose) + ("python-sphinx" ,python-sphinx) + ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme))) + (propagated-inputs + `(("python-agate" ,python-agate) + ("python-dbfread" ,python-dbfread))) + (home-page "https://agate-dbf.rtfd.org") + (synopsis "Add read support for dbf files to agate") + (description "@code{agatedbf} uses a monkey patching pattern to add read for dbf files support to all @code{agate.Table} instances."))) (define-public python-agate-excel - (package - (inherit base-package) - (name "python-agate-excel") - (version "0.2.3") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/wireservice/agate-excel.git") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1k5lv21k19s7kgbj5srd1xgrkqvxqqs49qwj33zncs9l7851afy7")))) - (propagated-inputs - `(("python-agate" ,python-agate) - ("python-openpyxl" ,python-openpyxl) - ("python-xlrd" ,python-xlrd))) - (home-page "https://agate-excel.rtfd.org") - (synopsis "Add read support for Excel files (xls and xlsx) to agate") - (description "@code{agateexcel} uses a monkey patching pattern to add read + (wireservice-package + (name "python-agate-excel") + (version "0.2.3") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wireservice/agate-excel.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1k5lv21k19s7kgbj5srd1xgrkqvxqqs49qwj33zncs9l7851afy7")))) + (native-inputs + `(("python-nose" ,python-nose) + ("python-sphinx" ,python-sphinx) + ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme))) + (propagated-inputs + `(("python-agate" ,python-agate) + ("python-openpyxl" ,python-openpyxl) + ("python-xlrd" ,python-xlrd))) + (home-page "https://agate-excel.rtfd.org") + (synopsis "Add read support for Excel files (xls and xlsx) to agate") + (description "@code{agateexcel} uses a monkey patching pattern to add read for xls and xlsx files support to all @code{agate.Table} instances."))) (define-public csvkit From a55dd25d3ef5c8c6a2ea202fef44665ea2992ad2 Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Sun, 7 Jul 2019 13:25:08 +0100 Subject: [PATCH 33/61] gnu: dosfstools: Enable compat symlinks. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enable compatibility symlinks to provide commands such as `mkfs.vfat`. * gnu/packages/disk.scm (dosfstools)[arguments]: Pass "--enable-compat-symlinks" to configure. Signed-off-by: Ludovic Courtès --- gnu/packages/disk.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm index 06f4430b2d..187ef74b4e 100644 --- a/gnu/packages/disk.scm +++ b/gnu/packages/disk.scm @@ -14,6 +14,7 @@ ;;; Copyright © 2018 Rutger Helling ;;; Copyright © 2018, 2019 Pierre Neidhardt ;;; Copyright © 2019 Leo Famulari +;;; Copyright © 2019 Pierre Langlois ;;; ;;; This file is part of GNU Guix. ;;; @@ -236,7 +237,8 @@ to recover data more efficiently by only reading the necessary blocks.") "0wy13i3i4x2bw1hf5m4fd0myh61f9bcrs035fdlf6gyc1jksrcp6")))) (build-system gnu-build-system) (arguments - `(#:make-flags (list (string-append "PREFIX=" %output) + `(#:configure-flags (list "--enable-compat-symlinks") + #:make-flags (list (string-append "PREFIX=" %output) "CC=gcc"))) (native-inputs `(("xxd" ,xxd))) ; for tests From 88a29b5cd33160a14fc9ef1f795de8d127b5fd8c Mon Sep 17 00:00:00 2001 From: ison Date: Sun, 7 Jul 2019 05:02:01 -0600 Subject: [PATCH 34/61] gnu: i3blocks: Update to ec050e7. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/wm.scm (i3blocks): Update to ec050e7. Signed-off-by: Ludovic Courtès --- gnu/packages/wm.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 90bc7fc883..d4c750dc66 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -269,8 +269,8 @@ Despite the name it should work with any X11 window manager.") (license license:bsd-3))) (define-public i3blocks - (let ((commit "37f23805ff886639163fbef8aedba71c8071eff8") - (revision "1")) + (let ((commit "ec050e79ad8489a6f8deb37d4c20ab10729c25c3") + (revision "2")) (package (name "i3blocks") (version (string-append "1.4-" revision "." @@ -282,7 +282,7 @@ Despite the name it should work with any X11 window manager.") (commit commit))) (sha256 (base32 - "15rnrcajzyrmhlz1a21qqsjlj3dkib70806dlb386fliylc2kisb")) + "1fx4230lmqa5rpzph68dwnpcjfaaqv5gfkradcr85hd1z8d1qp1b")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments From 85630d8042ef0904f328dae809a658842e5858bb Mon Sep 17 00:00:00 2001 From: Joseph LaFreniere Date: Fri, 5 Jul 2019 19:39:05 -0500 Subject: [PATCH 35/61] gnu: emacs-polymode: Update to 0.2. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-polymode): Update to 0.2. [source]: Change URL of Git repository to Polymode GitHub project. [homepage]: Change URL to polymode GitHub project. [description]: Realign text. Signed-off-by: Ludovic Courtès --- gnu/packages/emacs-xyz.scm | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 30b6ccf673..706d60035d 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -9230,33 +9230,25 @@ contexts. (define-public emacs-polymode (package (name "emacs-polymode") - (version "0.1.5") + (version "0.2") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/vspinu/polymode.git") + (url "https://github.com/polymode/polymode.git") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 - "0wwphs54jx48a3ca6x1qaz56j3j9bg4mv8g2akkffrzbdcb8sbc7")))) + "04v0gnzfsjb50bgly6kvpryx8cyzwjaq2llw4qv9ijw1l6ixmq3b")))) (build-system emacs-build-system) - (arguments - `(#:include (cons* "^modes/.*\\.el$" %default-include) - #:phases - (modify-phases %standard-phases - (add-after 'set-emacs-load-path 'add-modes-subdir-to-load-path - (lambda _ - (setenv "EMACSLOADPATH" - (string-append (getenv "EMACSLOADPATH") - ":" (getcwd) "/modes" ":"))))))) - (home-page "https://github.com/vspinu/polymode") + (home-page "https://github.com/polymode/polymode") (synopsis "Framework for multiple Emacs modes based on indirect buffers") - (description "Polymode is an Emacs package that offers generic support -for multiple major modes inside a single Emacs buffer. It is lightweight, -object oriented and highly extensible. Creating a new polymode typically -takes only a few lines of code. Polymode also provides extensible facilities -for external literate programming tools for exporting, weaving and tangling.") + (description + "Polymode is an Emacs package that offers generic support for multiple +major modes inside a single Emacs buffer. It is lightweight, object oriented +and highly extensible. Creating a new polymode typically takes only a few +lines of code. Polymode also provides extensible facilities for external +literate programming tools for exporting, weaving and tangling.") (license license:gpl3+))) (define-public emacs-polymode-ansible From 377b0501c460bc537219c40547361a99744d9261 Mon Sep 17 00:00:00 2001 From: Joseph LaFreniere Date: Thu, 4 Jul 2019 23:11:46 -0500 Subject: [PATCH 36/61] gnu: Add emacs-polymode-org. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-polymode-org): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/emacs-xyz.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 706d60035d..1858a41fc1 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -9280,6 +9280,33 @@ literate programming tools for exporting, weaving and tangling.") "Edit YAML files for Ansible containing embedded Jinja2 templating.") (license license:gpl3+)))) +(define-public emacs-polymode-org + (package + (name "emacs-polymode-org") + (version "0.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/polymode/poly-org.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "04x6apjad4kg30456z1j4ipp64yjgkcaim6hqr6bb0rmrianqhck")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-polymode" ,emacs-polymode))) + (properties '((upstream-name . "poly-org"))) + (home-page "https://github.com/polymode/poly-org") + (synopsis "Polymode definitions for Org mode buffers") + (description + "Provides definitions for @code{emacs-polymode} to support +@code{emacs-org} buffers. Edit source blocks in an Org mode buffer using the +native modes of the blocks' languages while remaining inside the primary Org +buffer.") + (license license:gpl3+))) + (define-public eless (package (name "eless") From 61242625ada7a18874a98ea19cbbbc48e53d66ef Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 8 Jul 2019 15:10:14 +0200 Subject: [PATCH 37/61] gnu: r-txdb-mmusculus-ucsc-mm10-knowngene: Update to 3.4.7. * gnu/packages/bioconductor.scm (r-txdb-mmusculus-ucsc-mm10-knowngene): Update to 3.4.7. --- gnu/packages/bioconductor.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index 29dac5b0f1..e5a2d66b2d 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus ;;; Copyright © 2016, 2017, 2018 Roel Janssen -;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice +;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. ;;; @@ -652,7 +652,7 @@ database is exposed as a @code{TxDb} object.") (define-public r-txdb-mmusculus-ucsc-mm10-knowngene (package (name "r-txdb-mmusculus-ucsc-mm10-knowngene") - (version "3.4.4") + (version "3.4.7") (source (origin (method url-fetch) ;; We cannot use bioconductor-uri here because this tarball is @@ -663,7 +663,7 @@ database is exposed as a @code{TxDb} object.") version ".tar.gz")) (sha256 (base32 - "01lgxc1fx5nhlpbwjd5zqghkkbmh6axd98ikx4b0spv0jdg6gf39")))) + "04impkl8zh1gpwwrpbf19jqznsjrq2306yyhm6cmx6hr1401bd6b")))) (properties `((upstream-name . "TxDb.Mmusculus.UCSC.mm10.knownGene"))) (build-system r-build-system) From e2170c3192abd0cbb953265f0b516f6569e4c906 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 8 Jul 2019 15:28:41 +0200 Subject: [PATCH 38/61] gnu: libomp: Fix source hash. This is a follow-up to commit c5296e205b65a9b53553cf45be2ab223d5e82df5, which updated llvm. * gnu/packages/llvm.scm (libomp)[source]: Fix hash. --- gnu/packages/llvm.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 0315740bcd..ca306469de 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus ;;; Copyright © 2017 Roel Janssen ;;; Copyright © 2018, 2019 Marius Bakke -;;; Copyright © 2018 Tobias Geerinckx-Rice +;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2018 Efraim Flashner ;;; Copyright © 2018 Tim Gesthuizen ;;; Copyright © 2018 Pierre Neidhardt @@ -337,7 +337,7 @@ requirements according to version 1.1 of the OpenCL specification.") ".src.tar.xz")) (sha256 (base32 - "030dkg5cypd7j9hq0mcqb5gs31lxwmzfq52j81l7v9ldcy5bf5mz")) + "1mf9cpgvix34xlpv0inkgl3qmdvgvp96f7sksqizri0n5xfp1cgp")) (file-name (string-append "libomp-" version ".tar.xz")))) (build-system cmake-build-system) ;; XXX: Note this gets built with GCC because building with Clang itself From 69e3512b7c66923111a32fdee34b716a8a753bfd Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 8 Jul 2019 15:30:13 +0200 Subject: [PATCH 39/61] gnu: libomp: Download over HTTPS. * gnu/packages/llvm.scm (libomp)[source]: Use HTTPS. --- gnu/packages/llvm.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index ca306469de..1fe9af38e0 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -332,7 +332,7 @@ requirements according to version 1.1 of the OpenCL specification.") (version (package-version llvm)) (source (origin (method url-fetch) - (uri (string-append "http://releases.llvm.org/" + (uri (string-append "https://releases.llvm.org/" version "/openmp-" version ".src.tar.xz")) (sha256 From ddfb62807d211c3118ecc08ea7de1906bbe9e0de Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 8 Jul 2019 15:47:52 +0200 Subject: [PATCH 40/61] gnu: cmh: Fix build. This follows up on commit 1de48e8f8afec23847458c533d2fae0d69d8942a. * gnu/packages/algebra.scm (fplll-4-cmh): New variable. (cmh)[inputs]: Use it. --- gnu/packages/algebra.scm | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index 7e66e42f0a..87eadf0338 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -298,6 +298,20 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.") (license license:gpl2) (home-page "https://pari.math.u-bordeaux.fr/"))) +(define fplll-4-cmh + (package + (inherit fplll) + (name "fplll") + (version "4.0.4") + (source + (origin + (method url-fetch) + (uri (string-append + "http://perso.ens-lyon.fr/damien.stehle/fplll/libfplll-" + version ".tar.gz")) + (sha256 + (base32 "1cbiby7ykis4z84swclpysrljmqhfcllpkcbll1m08rzskgb1a6b")))))) + (define-public cmh (package (name "cmh") @@ -316,7 +330,7 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.") ("mpfr" ,mpfr) ("mpc" ,mpc) ("mpfrcx" ,mpfrcx) - ("fplll" ,fplll) + ("fplll" ,fplll-4-cmh) ("pari-gp" ,pari-gp))) (synopsis "Igusa class polynomial computations") (description From 1042e3481d12f6ce550d1c49dd72b3cf85665394 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 8 Jul 2019 16:07:04 +0200 Subject: [PATCH 41/61] gnu: r-xbioc: Update to 0.1.16-1.6ff0670. This is needed to deprecate r-biocinstaller, which is no longer distributed. * gnu/packages/bioinformatics.scm (r-xbioc): Update to 0.1.16-1.6ff0670. [propagated-inputs]: Replace deprecated r-biocinstaller with r-biocmanager. --- gnu/packages/bioinformatics.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index f8ac41c249..b6f5a35355 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -13622,10 +13622,10 @@ sequencing data.") (define-public r-xbioc (let ((revision "1") - (commit "f798c187e376fd1ba27abd559f47bbae7e3e466b")) + (commit "6ff0670a37ab3036aaf1d94aa4b208310946b0b5")) (package (name "r-xbioc") - (version (git-version "0.1.15" revision commit)) + (version (git-version "0.1.16" revision commit)) (source (origin (method git-fetch) (uri (git-reference @@ -13634,13 +13634,13 @@ sequencing data.") (file-name (git-file-name name version)) (sha256 (base32 - "03hffh2f6z71y6l6dqpa5cql3hdaw7zigdi8sm2dzgx379k9rgrr")))) + "0w8bsq5myiwkfhh83nm6is5ichiyvwa1axx2szvxnzq39x6knf66")))) (build-system r-build-system) (propagated-inputs `(("r-annotationdbi" ,r-annotationdbi) ("r-assertthat" ,r-assertthat) ("r-biobase" ,r-biobase) - ("r-biocinstaller" ,r-biocinstaller) + ("r-biocmanager" ,r-biocmanager) ("r-digest" ,r-digest) ("r-pkgmaker" ,r-pkgmaker) ("r-plyr" ,r-plyr) From 0971f8bd884b6e92b77d9e12030cd58279699183 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 8 Jul 2019 16:09:46 +0200 Subject: [PATCH 42/61] gnu: Remove r-biocinstaller. It requires R < 3.6 and is no longer supported. * gnu/packages/bioinformatics.scm (r-biocinstaller): Define as deprecated in favour of r-biocmanager. --- gnu/packages/bioinformatics.scm | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index b6f5a35355..62d1cbdc34 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -7238,23 +7238,7 @@ BLAST, KEGG, GenBank, MEDLINE and GO.") (license (list license:ruby license:lgpl2.1+ license:gpl2+ )))) (define-public r-biocinstaller - (package - (name "r-biocinstaller") - (version "1.32.1") - (source (origin - (method url-fetch) - (uri (bioconductor-uri "BiocInstaller" version)) - (sha256 - (base32 - "1s1f9qhyf3mc73ir25x2zlgi9hf45a37lg4z8fbva4i21hqisgsl")))) - (properties - `((upstream-name . "BiocInstaller"))) - (build-system r-build-system) - (home-page "https://bioconductor.org/packages/BiocInstaller") - (synopsis "Install Bioconductor packages") - (description "This package is used to install and update R packages from -Bioconductor, CRAN, and Github.") - (license license:artistic2.0))) + (deprecated-package "r-biocinstaller" r-biocmanager)) (define-public r-biocviews (package From a655d504aa1dc04ab9c8916f2022f07ca89ceb3b Mon Sep 17 00:00:00 2001 From: Carl Dong Date: Sat, 29 Jun 2019 16:59:22 -0400 Subject: [PATCH 43/61] scripts: environment: Only rewrite user-specified mappings. * guix/scripts/environment.scm (launch-environment/container): Only apply override-user-mappings to user-mappings and cwd. Do not apply to network configuration mapping and inputs. --- guix/scripts/environment.scm | 41 ++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm index c1341628a8..949ba1124f 100644 --- a/guix/scripts/environment.scm +++ b/guix/scripts/environment.scm @@ -479,26 +479,27 @@ will be used for the passwd entry. LINK-PROFILE? creates a symbolic link from ;; /bin/sh, the current working directory, and possibly networking ;; configuration files within the container. (mappings - (override-user-mappings - user home - (append user-mappings - ;; Current working directory. - (list (file-system-mapping - (source cwd) - (target cwd) - (writable? #t))) - ;; When in Rome, do as Nix build.cc does: Automagically - ;; map common network configuration files. - (if network? - %network-file-mappings - '()) - ;; Mappings for the union closure of all inputs. - (map (lambda (dir) - (file-system-mapping - (source dir) - (target dir) - (writable? #f))) - reqs)))) + (append + (override-user-mappings + user home + (append user-mappings + ;; Current working directory. + (list (file-system-mapping + (source cwd) + (target cwd) + (writable? #t))))) + ;; When in Rome, do as Nix build.cc does: Automagically + ;; map common network configuration files. + (if network? + %network-file-mappings + '()) + ;; Mappings for the union closure of all inputs. + (map (lambda (dir) + (file-system-mapping + (source dir) + (target dir) + (writable? #f))) + reqs))) (file-systems (append %container-file-systems (map file-system-mapping->bind-mount mappings)))) From b6dc08393e6a8313b88ce422fc3c1e4e9c0efc6f Mon Sep 17 00:00:00 2001 From: Carl Dong Date: Sat, 29 Jun 2019 17:15:11 -0400 Subject: [PATCH 44/61] scripts: environment: Add --no-cwd. * doc/guix.texi (Invoking guix environment): Add --no-cwd. * guix/scripts/environment.scm (show-help, %options): Add --no-cwd. (launch-environment/container): Add 'map-cwd?' param; only add mapping for cwd if #t. Only change to cwd within container if #t, otherwise home. (guix-environment): Error if --no-cwd without --container. Provide '(not no-cwd?)' to launch-environment/container as 'map-cwd?'. * tests/guix-environment.sh: Add test for no-cwd. Co-authored-by: Mike Gerwitz --- doc/guix.texi | 8 ++++++++ guix/scripts/environment.scm | 36 +++++++++++++++++++++++++++--------- tests/guix-environment.sh | 8 ++++++++ 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 0b50482530..3e0788ed3a 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4657,6 +4657,14 @@ While this will limit the leaking of user identity through home paths and each of the user fields, this is only one useful component of a broader privacy/anonymity solution---not one in and of itself. +@item --no-cwd +For containers, the default behavior is to share the current working +directory with the isolated container and immediately change to that +directory within the container. If this is undesirable, @code{--no-cwd} +will cause the current working directory to @emph{not} be automatically +shared and will change to the user's home directory within the container +instead. See also @code{--user}. + @item --expose=@var{source}[=@var{target}] For containers, expose the file system @var{source} from the host system as the read-only file system @var{target} within the container. If diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm index 949ba1124f..cf58768300 100644 --- a/guix/scripts/environment.scm +++ b/guix/scripts/environment.scm @@ -161,6 +161,10 @@ COMMAND or an interactive shell in that environment.\n")) -u, --user=USER instead of copying the name and home of the current user into an isolated container, use the name USER with home directory /home/USER")) + (display (G_ " + --no-cwd do not share current working directory with an + isolated container")) + (display (G_ " --share=SPEC for containers, share writable host file system according to SPEC")) @@ -269,6 +273,9 @@ use '--preserve' instead~%")) (lambda (opt name arg result) (alist-cons 'user arg (alist-delete 'user result eq?)))) + (option '("no-cwd") #f #f + (lambda (opt name arg result) + (alist-cons 'no-cwd? #t result))) (option '("share") #t #f (lambda (opt name arg result) (alist-cons 'file-system-mapping @@ -444,7 +451,8 @@ regexps in WHITE-LIST." ((_ . status) status))))) (define* (launch-environment/container #:key command bash user user-mappings - profile manifest link-profile? network?) + profile manifest link-profile? network? + map-cwd?) "Run COMMAND within a container that features the software in PROFILE. Environment variables are set according to the search paths of MANIFEST. The global shell is BASH, a file name for a GNU Bash binary in the @@ -483,11 +491,13 @@ will be used for the passwd entry. LINK-PROFILE? creates a symbolic link from (override-user-mappings user home (append user-mappings - ;; Current working directory. - (list (file-system-mapping - (source cwd) - (target cwd) - (writable? #t))))) + ;; Share current working directory, unless asked not to. + (if map-cwd? + (list (file-system-mapping + (source cwd) + (target cwd) + (writable? #t))) + '()))) ;; When in Rome, do as Nix build.cc does: Automagically ;; map common network configuration files. (if network? @@ -537,8 +547,10 @@ will be used for the passwd entry. LINK-PROFILE? creates a symbolic link from (write-group groups) ;; For convenience, start in the user's current working - ;; directory rather than the root directory. - (chdir (override-user-dir user home cwd)) + ;; directory or, if unmapped, the home directory. + (chdir (if map-cwd? + (override-user-dir user home cwd) + home-dir)) (primitive-exit/status ;; A container's environment is already purified, so no need to @@ -665,6 +677,7 @@ message if any test fails." (container? (assoc-ref opts 'container?)) (link-prof? (assoc-ref opts 'link-profile?)) (network? (assoc-ref opts 'network?)) + (no-cwd? (assoc-ref opts 'no-cwd?)) (user (assoc-ref opts 'user)) (bootstrap? (assoc-ref opts 'bootstrap?)) (system (assoc-ref opts 'system)) @@ -685,6 +698,9 @@ message if any test fails." (leave (G_ "'--link-profile' cannot be used without '--container'~%"))) (when (and (not container?) user) (leave (G_ "'--user' cannot be used without '--container'~%"))) + (when (and (not container?) no-cwd?) + (leave (G_ "--no-cwd cannot be used without --container~%"))) + (with-store store (with-status-verbosity (assoc-ref opts 'verbosity) @@ -741,7 +757,9 @@ message if any test fails." #:profile profile #:manifest manifest #:link-profile? link-prof? - #:network? network?))) + #:network? network? + #:map-cwd? (not no-cwd?)))) + (else (return (exit/status diff --git a/tests/guix-environment.sh b/tests/guix-environment.sh index a670db36be..5a5a69d58c 100644 --- a/tests/guix-environment.sh +++ b/tests/guix-environment.sh @@ -84,6 +84,14 @@ echo "(use-modules (guix profiles) (gnu packages bootstrap)) guix environment --bootstrap --manifest=$tmpdir/manifest.scm --pure \ -- "$SHELL" -c 'test -f "$GUIX_ENVIRONMENT/bin/guile"' +# if not sharing CWD, chdir home +( + cd "$tmpdir" \ + && guix environment --bootstrap --container --no-cwd --user=foo \ + --ad-hoc guile-bootstrap --pure \ + -- /bin/sh -c 'test $(pwd) == "/home/foo" -a ! -d '"$tmpdir" +) + # Make sure '-r' works as expected. rm -f "$gcroot" expected="`guix environment --bootstrap --ad-hoc guile-bootstrap \ From 6c77d79a4994124150071b36bfbb74c18a4651b3 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 8 Jul 2019 17:32:53 +0200 Subject: [PATCH 45/61] guix-install.sh: Treat REQUIRE as the array it is. Don't flatten it into a string only to split it again later. * etc/guix-install.sh (chk_require): Iterate over array elements, not string tokens. (main): Pass $REQUIRE as an array of arguments. --- etc/guix-install.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/etc/guix-install.sh b/etc/guix-install.sh index aa95cb4e20..d3f80d1a35 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -3,6 +3,7 @@ # Copyright © 2017 sharlatan # Copyright © 2018 Ricardo Wurmus # Copyright © 2018 Efraim Flashner +# Copyright © 2019 Tobias Geerinckx-Rice # # This file is part of GNU Guix. # @@ -85,14 +86,11 @@ _debug() chk_require() { # Check that every required command is available. - declare -a cmds declare -a warn - cmds=(${1}) - _debug "--- [ $FUNCNAME ] ---" - for c in ${cmds[@]}; do + for c in "$@"; do command -v "$c" &>/dev/null || warn+=("$c") done @@ -415,7 +413,7 @@ main() _msg "Starting installation ($(date))" chk_term - chk_require "${REQUIRE[*]}" + chk_require "${REQUIRE[@]}" chk_init_sys chk_sys_arch From 7a2e0c52df8e355d4b1596788d8f71fad3cbefea Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 8 Jul 2019 17:35:14 +0200 Subject: [PATCH 46/61] =?UTF-8?q?guix-install.sh:=20Add=20missing=20?= =?UTF-8?q?=E2=80=98local=E2=80=99=20declaration.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * etc/guix-install.sh (chk_require): Make $c local. --- etc/guix-install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/guix-install.sh b/etc/guix-install.sh index d3f80d1a35..05e2ef8157 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -87,6 +87,7 @@ _debug() chk_require() { # Check that every required command is available. declare -a warn + local c _debug "--- [ $FUNCNAME ] ---" From 1d0bde2ee4009a301fee6ceeaf140396bb49a748 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sun, 7 Jul 2019 12:14:58 +0100 Subject: [PATCH 47/61] discovery: Handle edge case in scheme-files when looking at symlinks. Previously, this code would cause crashes in Guix (running guix package -s for example) which could be experienced when Emacs creates temporary files in the gnu/packages/patches directory when a patch file has been edited, but not saved. * guix/discovery.scm (scheme-files): Add else clause to cond used when handling symlinks. --- guix/discovery.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/guix/discovery.scm b/guix/discovery.scm index 5bb494941b..86f20ec344 100644 --- a/guix/discovery.scm +++ b/guix/discovery.scm @@ -78,7 +78,9 @@ DIRECTORY is not accessible." ((= stat:type 'directory) (append (scheme-files absolute) result)) - (_ result))))) + (_ result))) + (else + result))) (else result)))))) '() From 5d8e505ce5d179f321f2ee80927a8a0bd78979c4 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 8 Jul 2019 18:04:30 +0200 Subject: [PATCH 48/61] guix-install.sh: Check for PGP key separately. * etc/guix-install.sh (chk_gpg_keyring): New function to handle the public key check previously stuffed into chk_require. (main): Call it. --- etc/guix-install.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/etc/guix-install.sh b/etc/guix-install.sh index 05e2ef8157..3f05796339 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -100,6 +100,11 @@ chk_require() return 1; } _msg "${PAS}verification of required commands completed" +} + +chk_gpg_keyring() +{ # Check whether the Guix release signing public key is present. + _debug "--- [ $FUNCNAME ] ---" gpg --list-keys ${OPENPGP_SIGNING_KEY_ID} >/dev/null 2>&1 || ( _err "${ERR}Missing OpenPGP public key. Fetch it with this command:" @@ -415,6 +420,7 @@ main() chk_term chk_require "${REQUIRE[@]}" + chk_gpg_keyring chk_init_sys chk_sys_arch From 9b2644c2929163183699cf85dbd20cb9d628613f Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 8 Jul 2019 18:14:01 +0200 Subject: [PATCH 49/61] guix-install.sh: Don't initialise ~/.gnupg. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * etc/guix-install.sh (chk_gpg_keyring): Call gpg with ‘--dry-run’. --- etc/guix-install.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/etc/guix-install.sh b/etc/guix-install.sh index 3f05796339..960313d462 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -106,7 +106,9 @@ chk_gpg_keyring() { # Check whether the Guix release signing public key is present. _debug "--- [ $FUNCNAME ] ---" - gpg --list-keys ${OPENPGP_SIGNING_KEY_ID} >/dev/null 2>&1 || ( + # Without --dry-run this command will create a ~/.gnupg owned by root on + # systems where gpg has never been used, causing errors and confusion. + gpg --dry-run --list-keys ${OPENPGP_SIGNING_KEY_ID} >/dev/null 2>&1 || ( _err "${ERR}Missing OpenPGP public key. Fetch it with this command:" echo " wget https://sv.gnu.org/people/viewgpg.php?user_id=15145 -qO - | gpg --import -" exit 1 From 069ab3bbfde704760acaca20dff8a29d167c6be5 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 9 Jul 2019 01:24:17 +0200 Subject: [PATCH 50/61] gnu: grub: Update to 2.04. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/bootloaders.scm (grub): Update to 2.04. [source]: Remove upstreamed patches. [arguments]: Don't require Python. Add a ‘disable-pixel-perfect-test’ phase to skip tests that fail with with our newer Unifont. * gnu/packages/patches/grub-efi-fat-serial-number.patch: Adjust context. * gnu/packages/patches/grub-binutils-compat.patch, gnu/packages/patches/grub-check-error-efibootmgr.patch: Delete files. * gnu/local.mk (dist_patch_DATA): Remove them. --- gnu/local.mk | 2 - gnu/packages/bootloaders.scm | 23 +- .../patches/grub-binutils-compat.patch | 53 ----- .../patches/grub-check-error-efibootmgr.patch | 197 ------------------ .../patches/grub-efi-fat-serial-number.patch | 17 +- 5 files changed, 26 insertions(+), 266 deletions(-) delete mode 100644 gnu/packages/patches/grub-binutils-compat.patch delete mode 100644 gnu/packages/patches/grub-check-error-efibootmgr.patch diff --git a/gnu/local.mk b/gnu/local.mk index 734676f45a..7dcac4f2bc 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -893,8 +893,6 @@ dist_patch_DATA = \ %D%/packages/patches/grep-timing-sensitive-test.patch \ %D%/packages/patches/groff-source-date-epoch.patch \ %D%/packages/patches/groovy-add-exceptionutilsgenerator.patch \ - %D%/packages/patches/grub-binutils-compat.patch \ - %D%/packages/patches/grub-check-error-efibootmgr.patch \ %D%/packages/patches/grub-efi-fat-serial-number.patch \ %D%/packages/patches/gsl-test-i686.patch \ %D%/packages/patches/gspell-dash-test.patch \ diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 6e6e69ff3b..d6b936b64a 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -82,19 +82,22 @@ (define-public grub (package (name "grub") - (version "2.02") + (version "2.04") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/grub/grub-" version ".tar.xz")) (sha256 (base32 - "03vvdfhdmf16121v7xs8is2krwnv15wpkhkf16a4yf8nsfc3f2w1")) - (patches (search-patches "grub-check-error-efibootmgr.patch" - "grub-binutils-compat.patch" - "grub-efi-fat-serial-number.patch")))) + "0zgp5m3hmc9jh8wpjx6czzkh5id2y8n1k823x2mjvm2sk6b28ag5")) + (patches (search-patches "grub-efi-fat-serial-number.patch")))) (build-system gnu-build-system) (arguments - `(#:phases (modify-phases %standard-phases + `(#:configure-flags + ;; Counterintuitively, this *disables* a spurious Python dependency by + ;; calling the ‘true’ binary instead. Python is only needed during + ;; bootstrapping (for genptl.py), not when building from a release. + (list "PYTHON=true") + #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-stuff (lambda* (#:key inputs #:allow-other-keys) (substitute* "grub-core/Makefile.in" @@ -127,6 +130,14 @@ (substitute* "Makefile.in" (("grub_cmd_date grub_cmd_set_date grub_cmd_sleep") "grub_cmd_date grub_cmd_sleep")) + #t)) + (add-before 'check 'disable-pixel-perfect-test + (lambda _ + ;; This test compares many screenshots rendered with an + ;; older Unifont (9.0.06) than that packaged in Guix. + (substitute* "Makefile.in" + (("test_unset grub_func_test") + "test_unset")) #t))) ;; Disable tests on ARM and AARCH64 platforms. #:tests? ,(not (any (cute string-prefix? <> (or (%current-target-system) diff --git a/gnu/packages/patches/grub-binutils-compat.patch b/gnu/packages/patches/grub-binutils-compat.patch deleted file mode 100644 index 2107869314..0000000000 --- a/gnu/packages/patches/grub-binutils-compat.patch +++ /dev/null @@ -1,53 +0,0 @@ -Fix a relocation issue that shows up with recent binutils. - -Patch taken from upstream: -https://git.sv.gnu.org/cgit/grub.git/commit/?id=842c390469e2c2e10b5aa36700324cd3bde25875 - -diff --git a/grub-core/efiemu/i386/loadcore64.c b/grub-core/efiemu/i386/loadcore64.c -index e49d0b6..18facf4 100644 ---- a/grub-core/efiemu/i386/loadcore64.c -+++ b/grub-core/efiemu/i386/loadcore64.c -@@ -98,6 +98,7 @@ grub_arch_efiemu_relocate_symbols64 (grub_efiemu_segment_t segs, - break; - - case R_X86_64_PC32: -+ case R_X86_64_PLT32: - err = grub_efiemu_write_value (addr, - *addr32 + rel->r_addend - + sym.off -diff --git a/grub-core/kern/x86_64/dl.c b/grub-core/kern/x86_64/dl.c -index 4406906..3a73e6e 100644 ---- a/grub-core/kern/x86_64/dl.c -+++ b/grub-core/kern/x86_64/dl.c -@@ -70,6 +70,7 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr, - break; - - case R_X86_64_PC32: -+ case R_X86_64_PLT32: - { - grub_int64_t value; - value = ((grub_int32_t) *addr32) + rel->r_addend + sym->st_value - -diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c -index a2bb054..39d7efb 100644 ---- a/util/grub-mkimagexx.c -+++ b/util/grub-mkimagexx.c -@@ -841,6 +841,7 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections, - break; - - case R_X86_64_PC32: -+ case R_X86_64_PLT32: - { - grub_uint32_t *t32 = (grub_uint32_t *) target; - *t32 = grub_host_to_target64 (grub_target_to_host32 (*t32) -diff --git a/util/grub-module-verifier.c b/util/grub-module-verifier.c -index 9179285..a79271f 100644 ---- a/util/grub-module-verifier.c -+++ b/util/grub-module-verifier.c -@@ -19,6 +19,7 @@ struct grub_module_verifier_arch archs[] = { - -1 - }, (int[]){ - R_X86_64_PC32, -+ R_X86_64_PLT32, - -1 - } - }, diff --git a/gnu/packages/patches/grub-check-error-efibootmgr.patch b/gnu/packages/patches/grub-check-error-efibootmgr.patch deleted file mode 100644 index efeb20f213..0000000000 --- a/gnu/packages/patches/grub-check-error-efibootmgr.patch +++ /dev/null @@ -1,197 +0,0 @@ -Without this patch, GRUB may proceed to wipe all firmware boot entries -and report a successful installation, even if efibootmgr hit an error. - -Origin URL: -https://git.sv.gnu.org/cgit/grub.git/commit/?id=6400613ad0b463abc93362086a491cd2a5e99b0d - -From 6400613ad0b463abc93362086a491cd2a5e99b0d Mon Sep 17 00:00:00 2001 -From: Steve McIntyre -Date: Wed, 31 Jan 2018 21:49:36 +0000 -Subject: Make grub-install check for errors from efibootmgr - -Code is currently ignoring errors from efibootmgr, giving users -clearly bogus output like: - - Setting up grub-efi-amd64 (2.02~beta3-4) ... - Installing for x86_64-efi platform. - Could not delete variable: No space left on device - Could not prepare Boot variable: No space left on device - Installation finished. No error reported. - -and then potentially unbootable systems. If efibootmgr fails, grub-install -should know that and report it! - -We've been using similar patch in Debian now for some time, with no ill effects. - -diff --git a/grub-core/osdep/unix/platform.c b/grub-core/osdep/unix/platform.c -index a3fcfca..ca448bc 100644 ---- a/grub-core/osdep/unix/platform.c -+++ b/grub-core/osdep/unix/platform.c -@@ -78,19 +78,20 @@ get_ofpathname (const char *dev) - dev); - } - --static void -+static int - grub_install_remove_efi_entries_by_distributor (const char *efi_distributor) - { - int fd; - pid_t pid = grub_util_exec_pipe ((const char * []){ "efibootmgr", NULL }, &fd); - char *line = NULL; - size_t len = 0; -+ int rc; - - if (!pid) - { - grub_util_warn (_("Unable to open stream from %s: %s"), - "efibootmgr", strerror (errno)); -- return; -+ return errno; - } - - FILE *fp = fdopen (fd, "r"); -@@ -98,7 +99,7 @@ grub_install_remove_efi_entries_by_distributor (const char *efi_distributor) - { - grub_util_warn (_("Unable to open stream from %s: %s"), - "efibootmgr", strerror (errno)); -- return; -+ return errno; - } - - line = xmalloc (80); -@@ -119,23 +120,25 @@ grub_install_remove_efi_entries_by_distributor (const char *efi_distributor) - bootnum = line + sizeof ("Boot") - 1; - bootnum[4] = '\0'; - if (!verbosity) -- grub_util_exec ((const char * []){ "efibootmgr", "-q", -+ rc = grub_util_exec ((const char * []){ "efibootmgr", "-q", - "-b", bootnum, "-B", NULL }); - else -- grub_util_exec ((const char * []){ "efibootmgr", -+ rc = grub_util_exec ((const char * []){ "efibootmgr", - "-b", bootnum, "-B", NULL }); - } - - free (line); -+ return rc; - } - --void -+int - grub_install_register_efi (grub_device_t efidir_grub_dev, - const char *efifile_path, - const char *efi_distributor) - { - const char * efidir_disk; - int efidir_part; -+ int ret; - efidir_disk = grub_util_biosdisk_get_osdev (efidir_grub_dev->disk); - efidir_part = efidir_grub_dev->disk->partition ? efidir_grub_dev->disk->partition->number + 1 : 1; - -@@ -151,23 +154,26 @@ grub_install_register_efi (grub_device_t efidir_grub_dev, - grub_util_exec ((const char * []){ "modprobe", "-q", "efivars", NULL }); - #endif - /* Delete old entries from the same distributor. */ -- grub_install_remove_efi_entries_by_distributor (efi_distributor); -+ ret = grub_install_remove_efi_entries_by_distributor (efi_distributor); -+ if (ret) -+ return ret; - - char *efidir_part_str = xasprintf ("%d", efidir_part); - - if (!verbosity) -- grub_util_exec ((const char * []){ "efibootmgr", "-q", -+ ret = grub_util_exec ((const char * []){ "efibootmgr", "-q", - "-c", "-d", efidir_disk, - "-p", efidir_part_str, "-w", - "-L", efi_distributor, "-l", - efifile_path, NULL }); - else -- grub_util_exec ((const char * []){ "efibootmgr", -+ ret = grub_util_exec ((const char * []){ "efibootmgr", - "-c", "-d", efidir_disk, - "-p", efidir_part_str, "-w", - "-L", efi_distributor, "-l", - efifile_path, NULL }); - free (efidir_part_str); -+ return ret; - } - - void -diff --git a/include/grub/util/install.h b/include/grub/util/install.h -index 5910b0c..0dba8b6 100644 ---- a/include/grub/util/install.h -+++ b/include/grub/util/install.h -@@ -210,7 +210,7 @@ grub_install_create_envblk_file (const char *name); - const char * - grub_install_get_default_x86_platform (void); - --void -+int - grub_install_register_efi (grub_device_t efidir_grub_dev, - const char *efifile_path, - const char *efi_distributor); -diff --git a/util/grub-install.c b/util/grub-install.c -index 5e4cdfd..690f180 100644 ---- a/util/grub-install.c -+++ b/util/grub-install.c -@@ -1848,9 +1848,13 @@ main (int argc, char *argv[]) - if (!removable && update_nvram) - { - /* Try to make this image bootable using the EFI Boot Manager, if available. */ -- grub_install_register_efi (efidir_grub_dev, -- "\\System\\Library\\CoreServices", -- efi_distributor); -+ int ret; -+ ret = grub_install_register_efi (efidir_grub_dev, -+ "\\System\\Library\\CoreServices", -+ efi_distributor); -+ if (ret) -+ grub_util_error (_("efibootmgr failed to register the boot entry: %s"), -+ strerror (ret)); - } - - grub_device_close (ins_dev); -@@ -1871,6 +1875,7 @@ main (int argc, char *argv[]) - { - char * efifile_path; - char * part; -+ int ret; - - /* Try to make this image bootable using the EFI Boot Manager, if available. */ - if (!efi_distributor || efi_distributor[0] == '\0') -@@ -1887,7 +1892,10 @@ main (int argc, char *argv[]) - efidir_grub_dev->disk->name, - (part ? ",": ""), (part ? : "")); - grub_free (part); -- grub_install_register_efi (efidir_grub_dev, -- efifile_path, efi_distributor); -+ ret = grub_install_register_efi (efidir_grub_dev, -+ efifile_path, efi_distributor); -+ if (ret) -+ grub_util_error (_("efibootmgr failed to register the boot entry: %s"), -+ strerror (ret)); - } - break; - - -Below is a followup to the patch above: the uninitialized variable could lead -‘grub-install’ to error out when it shouldn’t (seen on an AArch64 box where -‘grub_install_remove_efi_entries_by_distributor’ didn't have any entry to -remove): - - grub-install: error: efibootmgr failed to register the boot entry: Unknown error 65535. - -See . - ---- grub-2.02/grub-core/osdep/unix/platform.c 2018-10-17 22:21:53.015284846 +0200 -+++ grub-2.02/grub-core/osdep/unix/platform.c 2018-10-17 22:21:55.595271222 +0200 -@@ -85,7 +85,7 @@ grub_install_remove_efi_entries_by_distr - pid_t pid = grub_util_exec_pipe ((const char * []){ "efibootmgr", NULL }, &fd); - char *line = NULL; - size_t len = 0; -- int rc; -+ int rc = 0; - - if (!pid) - { diff --git a/gnu/packages/patches/grub-efi-fat-serial-number.patch b/gnu/packages/patches/grub-efi-fat-serial-number.patch index ad92f9bc9e..aec37d68e2 100644 --- a/gnu/packages/patches/grub-efi-fat-serial-number.patch +++ b/gnu/packages/patches/grub-efi-fat-serial-number.patch @@ -4,22 +4,23 @@ serial number (instead of the randomly chosen one) to create EFI images (the 'efi.img' file) that are reproducible bit-for-bit. Patch by Ludovic Courtès . +Mangled (for GRUB 2.04) by Tobias Geerinckx-Rice . ---- grub-2.02/util/grub-mkrescue.c 2019-04-20 19:15:26.180242812 +0200 -+++ grub-2.02/util/grub-mkrescue.c 2019-04-20 21:56:34.672370849 +0200 -@@ -788,8 +788,15 @@ main (int argc, char *argv[]) +--- grub-2.04/util/grub-mkrescue.c 2019-05-20 13:01:11.000000000 +0200 ++++ grub-2.04/util/grub-mkrescue.c 2019-07-08 23:57:36.912104652 +0200 +@@ -809,8 +809,15 @@ + free (efidir_efi_boot); efiimgfat = grub_util_path_concat (2, iso9660_dir, "efi.img"); - int rv; - rv = grub_util_exec ((const char * []) { "mformat", "-C", "-f", "2880", "-L", "16", "-i", - efiimgfat, "::", NULL }); + + const char *fat_serial_number = getenv ("GRUB_FAT_SERIAL_NUMBER"); + const char *mformat_args[] = -+ { "mformat", "-C", "-f", "2880", "-L", "16", -+ fat_serial_number != NULL ? "-N" : "-C", -+ fat_serial_number != NULL ? fat_serial_number : "-C", -+ "-i", efiimgfat, "::", NULL }; ++ { "mformat", "-C", "-f", "2880", "-L", "16", ++ fat_serial_number != NULL ? "-N" : "-C", ++ fat_serial_number != NULL ? fat_serial_number : "-C", ++ "-i", efiimgfat, "::", NULL }; + + rv = grub_util_exec (mformat_args); if (rv != 0) From 35014c402d5a2019df8da20e172e11a65312126d Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 9 Jul 2019 01:43:07 +0200 Subject: [PATCH 51/61] =?UTF-8?q?gnu:=20grub:=20Build=20=E2=80=98grub-moun?= =?UTF-8?q?t=E2=80=99.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This increases the closure size by a mere 1.8 MiB (0.8%). * gnu/packages/bootloaders.scm (grub)[inputs]: Add fuse. --- gnu/packages/bootloaders.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index d6b936b64a..dda258a52e 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -158,9 +158,12 @@ ;; for generating alternative keyboard layouts. ("console-setup" ,console-setup) + ;; Needed for ‘grub-mount’, the only reliable way to tell whether a given + ;; file system will be readable by GRUB without rebooting. + ("fuse" ,fuse) + ("freetype" ,freetype) ;; ("libusb" ,libusb) - ;; ("fuse" ,fuse) ("ncurses" ,ncurses))) (native-inputs `(("pkg-config" ,pkg-config) From 3fd3dd33cb5684cc053d0c4c1ce3585ec6fa7656 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 9 Jul 2019 04:45:28 +0200 Subject: [PATCH 52/61] gnu: libmicrohttpd: Update to 0.9.65. * gnu/packages/gnunet.scm (libmicrohttpd): Update to 0.9.65. --- gnu/packages/gnunet.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm index f2f8647730..2653645c5d 100644 --- a/gnu/packages/gnunet.scm +++ b/gnu/packages/gnunet.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2016 Ricardo Wurmus ;;; Copyright © 2016 Mark H Weaver ;;; Copyright © 2016, 2017, 2018, 2019 ng0 -;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice +;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2018 Alex Vong ;;; ;;; This file is part of GNU Guix. @@ -146,14 +146,14 @@ tool to extract metadata from a file and print the results.") (define-public libmicrohttpd (package (name "libmicrohttpd") - (version "0.9.64") + (version "0.9.65") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-" version ".tar.gz")) (sha256 (base32 - "03imzkd1hl2mkkpi84vg5xq9x6b58gwsv86ym85km0lhb7nxi4p7")))) + "1jdk6wigvnkh5bi9if4rik8i9sbvdql61lm8ipgpypyxqmcpjipj")))) (build-system gnu-build-system) (inputs `(("curl" ,curl) From 032ca4baa711f0c1a1b257fe58a386a41f2c7bdc Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Tue, 9 Jul 2019 09:02:50 +0200 Subject: [PATCH 53/61] gnu: musescore: Update to 3.2.3. * gnu/packages/music.scm (musescore): Update to 3.2.3. --- gnu/packages/music.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 982a0ce5a9..3dfe88132f 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -3747,7 +3747,7 @@ audio samples and various soft sythesizers. It can receive input from a MIDI ke (define-public musescore (package (name "musescore") - (version "3.2") + (version "3.2.3") (source (origin (method git-fetch) (uri (git-reference @@ -3756,7 +3756,7 @@ audio samples and various soft sythesizers. It can receive input from a MIDI ke (file-name (git-file-name name version)) (sha256 (base32 - "0719p4hjlq7skga8q4hvnd5w33vhrd1a1aygvqm9pn4na02zazy6")) + "17wx1wl8ns2k31qvrr888dxnrsa13vazg04zh2sn2q4vzd869a7v")) (modules '((guix build utils))) (snippet ;; Un-bundle OpenSSL and remove unused libraries. From 3c2bbbb0ffcc9b407c81261c1deecd9f043a4509 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Tue, 9 Jul 2019 09:13:43 +0200 Subject: [PATCH 54/61] gnu: snap: Update to 5.0.1. * gnu/packages/education.scm (snap): Update to 5.0.1. --- gnu/packages/education.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm index 2bb61a744a..f3d8907583 100644 --- a/gnu/packages/education.scm +++ b/gnu/packages/education.scm @@ -250,7 +250,7 @@ easy.") (define-public snap (package (name "snap") - (version "5") + (version "5.0.1") (source (origin (method git-fetch) @@ -260,7 +260,7 @@ easy.") (file-name (git-file-name name version)) (sha256 (base32 - "0bh52n7nklaaq02qb56v7bvrslf047my6irl7g8h6xfjgw04yf20")))) + "0ic0xgal19yazbd1kffmbjhiicvvlw5clj48lj80mksa2lgvnzna")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) From 582de58c69bd46385196e26434951e1e2d5f32f2 Mon Sep 17 00:00:00 2001 From: Hartmut Goebel Date: Tue, 2 Jul 2019 16:19:18 +0200 Subject: [PATCH 55/61] gnu: Add anonip. * gnu/packages/web.scm (anonip): New variable. --- gnu/packages/web.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 124cc93e68..1eae6c7c3b 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -33,6 +33,7 @@ ;;; Copyright © 2019 Nicolas Goaziou ;;; Copyright © 2019 Brendan Tildesley ;;; Copyright © 2019 Alex Griffin +;;; Copyright © 2019 Hartmut Goebel ;;; ;;; This file is part of GNU Guix. ;;; @@ -6498,3 +6499,30 @@ update an existing mirrored site, and resume interrupted downloads. HTTrack is fully configurable, and has an integrated help system.") (license license:gpl3+))) + +(define-public anonip + (package + (name "anonip") + (version "1.0.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "anonip" version)) + (sha256 + (base32 + "0ckn9nnfhpdnz8b92q8pkysdqj6pdh71ckfqvfj0z01cq0hzbhd2")))) + (build-system python-build-system) + (home-page "https://github.com/DigitaleGesellschaft/Anonip") + (synopsis "Anonymize IP addresses in log files") + (description + "Anonip masks the last bits of IPv4 and IPv6 addresses in log files. +That way most of the relevant information is preserved, while the IP address +does not match a particular individuum anymore. + +Depending on your Web server, the log entries may be piped to Anonip directly +or via a FIFO (named pipe). Thus the unmasked IP addresses will never be +written to any file. + +It's also possible to rewrite existing log files. + +Anonip can also be uses as a Python module in your own Python application.") + (license license:bsd-3))) From 48182cff03530ef6ad4add2a793bd3978ae5ae1b Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 8 Jul 2019 18:50:56 +0200 Subject: [PATCH 56/61] gnu: r-biocinstaller: Remove entirely. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This follows up on commit 0971f8bd884b6e92b77d9e12030cd58279699183, which led to ‘r-biocmanager: unbound variable’ errors. See . * gnu/packages/bioinformatics.scm (r-biocinstaller): Remove variable. --- gnu/packages/bioinformatics.scm | 3 --- 1 file changed, 3 deletions(-) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 62d1cbdc34..5d7a905f6a 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -7237,9 +7237,6 @@ BLAST, KEGG, GenBank, MEDLINE and GO.") ;; (LGPLv2.1+) and scripts in samples (which have GPL2 and GPL2+) (license (list license:ruby license:lgpl2.1+ license:gpl2+ )))) -(define-public r-biocinstaller - (deprecated-package "r-biocinstaller" r-biocmanager)) - (define-public r-biocviews (package (name "r-biocviews") From 534ceb7de11651abc89d82d80ee494ae8720ab67 Mon Sep 17 00:00:00 2001 From: Oleg Pykhalov Date: Tue, 9 Jul 2019 14:41:07 +0300 Subject: [PATCH 57/61] gnu: emacs-stumpwm-mode: Update to 0.0.1-1.8fbe071. * gnu/packages/emacs-xyz.scm (emacs-stumpwm-mode): Update to 0.0.1-1.8fbe071. --- gnu/packages/emacs-xyz.scm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 1858a41fc1..2d9f271cc8 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -12343,12 +12343,10 @@ bookmarks and history.") (license license:gpl3+))) (define-public emacs-stumpwm-mode - (let ((commit "8fbe071d2c6c040794060a354eb377218dc10b35") - (revision "1")) + (let ((commit "5328f85fbf6a8b08c758c17b9435368bf7a68f39")) (package (name "emacs-stumpwm-mode") - (version (string-append "0.0.1-" revision "." - (string-take commit 7))) + (version (git-version "0.0.1" "1" commit)) (source (origin (method git-fetch) (uri (git-reference @@ -12357,7 +12355,7 @@ bookmarks and history.") (file-name (git-file-name name version)) (sha256 (base32 - "1dfwsvz1c8w6j4jp0kzaz78ml3f5dp0a5pvf090kwpbpg176r7iq")))) + "00kf4k8bqadi5s667wb96sn549v2kvw01zwszjrg7nhd805m1ng6")))) (build-system emacs-build-system) (arguments `(#:phases From 710f027765079db7e5a9ea31faedf42e8748600c Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 9 Jul 2019 16:50:36 +0300 Subject: [PATCH 58/61] gnu: wgetpaste: Update to 2.29. * gnu/packages/wget.scm (wgetpaste): Update to 2.29. [arguments]: Replace default paste service. Install license file. --- gnu/packages/wget.scm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm index 7261137cab..76ceed5ff7 100644 --- a/gnu/packages/wget.scm +++ b/gnu/packages/wget.scm @@ -79,7 +79,7 @@ in downloaded documents to relative links.") (define-public wgetpaste (package (name "wgetpaste") - (version "2.28") + (version "2.29") (source (origin (method url-fetch) @@ -87,10 +87,10 @@ in downloaded documents to relative links.") version ".tar.bz2")) (sha256 (base32 - "1hh9svyypqcvdg5mjxyyfzpdzhylhf7s7xq5dzglnm4injx3i3ak")))) + "1rp0wxr3zy7y2xp3azaadfghrx7g0m138f9qg6icjxkkz4vj9r22")))) (build-system gnu-build-system) (arguments - '(#:modules ((guix build gnu-build-system) + `(#:modules ((guix build gnu-build-system) (guix build utils) (srfi srfi-1)) #:phases @@ -102,16 +102,17 @@ in downloaded documents to relative links.") ;; https://gitweb.gentoo.org/repo/gentoo.git/tree/app-text/wgetpaste/files/wgetpaste-remove-dead.patch (lambda _ (substitute* "wgetpaste" - ((" poundpython\"") "\"") - (("-poundpython") "-bpaste")) ; dpaste blocks tor users + (("-bpaste") "-dpaste")) ; dpaste blocks tor users #t)) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin")) - (zsh (string-append out "/share/zsh/site-functions"))) + (zsh (string-append out "/share/zsh/site-functions")) + (doc (string-append out "/share/doc/" ,name "-" ,version))) (install-file "wgetpaste" bin) (install-file "_wgetpaste" zsh) + (install-file "LICENSE" doc) #t))) (add-after 'install 'wrap-program ;; /bin/wgetpaste prides itself on relying only on the following From 38a9b4b74ee008d68dd0d6332a1092b552f1196f Mon Sep 17 00:00:00 2001 From: Oleg Pykhalov Date: Tue, 9 Jul 2019 15:35:51 +0300 Subject: [PATCH 59/61] gnu: python-internetarchive: Update to 1.8.5. * gnu/packages/web.scm (python-internetarchive)[version]: Update to 1.8.5. [source](modules, snippet): New fields. --- gnu/packages/web.scm | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 1eae6c7c3b..0a270e14f0 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -5239,16 +5239,28 @@ command-line arguments or read from stdin.") (define-public python-internetarchive (package (name "python-internetarchive") - (version "1.7.4") + (version "1.8.5") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/jjjake/internetarchive/archive/" - "v" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/jjjake/internetarchive") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "0sdbb2ag6vmybi8zmbjszi492a587giaaqxyy1p6gy03cb8mc512")))) + "0ih7hplv92wbv6cmgc1gs0v35qkajwicalwcq8vcljw30plr24fp")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Python 3.7 removed `_pattern_type'. + (for-each (lambda (file) + (chmod file #o644) + (substitute* file + (("^import re\n" line) + (string-append line "re._pattern_type = re.Pattern\n")))) + (find-files "." "\\.py$")) + #t)))) (build-system python-build-system) (arguments `(#:phases From 12b1ec661701f58b605050308532cd34f1e18740 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 9 Jul 2019 21:13:54 +0200 Subject: [PATCH 60/61] gnu: iproute2: Update to 5.2.0. * gnu/packages/linux.scm (iproute): Update to 5.2.0. --- 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 690fd1ad68..653f844b48 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -1411,7 +1411,7 @@ that the Ethernet protocol is much simpler than the IP protocol.") (define-public iproute (package (name "iproute2") - (version "5.1.0") + (version "5.2.0") (source (origin (method url-fetch) (uri (string-append @@ -1419,7 +1419,7 @@ that the Ethernet protocol is much simpler than the IP protocol.") version ".tar.xz")) (sha256 (base32 - "1kvvrz5mlpjxqcm7vl6i8w6l1cb2amp6p5xyq006pgzafc49hnnw")))) + "1a2dywa2kam24951byv9pl32mb9z6klh7d4vp8fwfgrm4vn5vfd5")))) (build-system gnu-build-system) (arguments `( ;; There is a test suite, but it wants network namespaces and sudo. From 760d90cc6a5c0f9eb46ad18a30da5520fac2525e Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Wed, 10 Jul 2019 00:54:29 +0200 Subject: [PATCH 61/61] gnu: ungoogled-chromium: Increase build timeout. * gnu/packages/chromium.scm (ungoogled-chromium)[properties]: Set TIMEOUT to 40 hours. --- gnu/packages/chromium.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index 79828ef589..3bb8978b08 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -760,9 +760,9 @@ from forcing GEXP-PROMISE." ("valgrind" ,valgrind) ("vulkan-headers" ,vulkan-headers))) - ;; Building Chromium with a single core takes around 6 hours on an x86_64 - ;; system. Give some leeway for slower or busy machines. - (properties '((timeout . 64800))) ;18 hours + ;; Building Chromium takes ... a very long time. On a single core, a busy + ;; mid-end x86 system may need more than 24 hours to complete the build. + (properties '((timeout . 144000))) ;40 hours (home-page "https://github.com/Eloston/ungoogled-chromium") (description