Merge branch 'master' into staging

master
Marius Bakke 2019-07-10 00:55:42 +02:00
commit 7a05fdd0e1
No known key found for this signature in database
GPG Key ID: A2A06DF2A33A54FA
40 changed files with 1420 additions and 626 deletions

View File

@ -544,7 +544,7 @@ EXTRA_DIST += \
tests/cve-sample.xml \
build-aux/config.rpath \
bootstrap \
release.nix \
doc/build.scm \
$(TESTS)
if !BUILD_DAEMON_OFFLOAD

563
doc/build.scm Normal file
View File

@ -0,0 +1,563 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; 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 <http://www.gnu.org/licenses/>.
;; 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:
;; <https://lists.gnu.org/archive/html/help-texinfo/2012-01/msg00014.html>.
(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 "<!DOCTYPE html>\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))

View File

@ -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

View File

@ -3,6 +3,7 @@
# Copyright © 2017 sharlatan <sharlatanus@gmail.com>
# Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
# Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
# Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
#
# This file is part of GNU Guix.
#
@ -85,14 +86,12 @@ _debug()
chk_require()
{ # Check that every required command is available.
declare -a cmds
declare -a warn
cmds=(${1})
local c
_debug "--- [ $FUNCNAME ] ---"
for c in ${cmds[@]}; do
for c in "$@"; do
command -v "$c" &>/dev/null || warn+=("$c")
done
@ -101,8 +100,15 @@ chk_require()
return 1; }
_msg "${PAS}verification of required commands completed"
}
gpg --list-keys ${OPENPGP_SIGNING_KEY_ID} >/dev/null 2>&1 || (
chk_gpg_keyring()
{ # Check whether the Guix release signing public key is present.
_debug "--- [ $FUNCNAME ] ---"
# 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
@ -415,7 +421,8 @@ main()
_msg "Starting installation ($(date))"
chk_term
chk_require "${REQUIRE[*]}"
chk_require "${REQUIRE[@]}"
chk_gpg_keyring
chk_init_sys
chk_sys_arch

View File

@ -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 \
@ -741,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 \
@ -891,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 \
@ -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 \

View File

@ -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

View File

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016, 2017, 2018 Roel Janssen <roel@gnu.org>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; 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)

View File

@ -7237,25 +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
(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)))
(define-public r-biocviews
(package
(name "r-biocviews")
@ -13622,10 +13603,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 +13615,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)

View File

@ -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)
@ -147,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)

View File

@ -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

View File

@ -36,6 +36,7 @@
;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us>
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;;
;;; 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)))

View File

@ -14,6 +14,7 @@
;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2019 Leo Famulari <leo@famulari.name>
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;;
;;; 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

View File

@ -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))

View File

@ -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
@ -2575,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)
@ -2584,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
@ -2596,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)
@ -2605,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)
@ -4075,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")
@ -4523,7 +4549,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)
@ -4533,7 +4559,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")
@ -4757,25 +4783,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
@ -4835,6 +4862,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")
@ -6103,28 +6160,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")
@ -8321,13 +8383,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
@ -8335,7 +8397,7 @@ highlighting.")
(commit commit)))
(sha256
(base32
"00lmjhb5im1kgrp54yipf1h9pshxzgjlg71yf2rq5n973gvb0w0q"))
"067nin7vxkdpffxa0q61ybv7szihhvpdinivmci9qkbb86rs9kkz"))
(file-name (git-file-name name version))))
(build-system emacs-build-system)
(propagated-inputs
@ -9168,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
@ -9226,6 +9280,33 @@ for external 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")
@ -10675,33 +10756,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")
@ -12265,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
@ -12279,7 +12355,7 @@ bookmarks and history.")
(file-name (git-file-name name version))
(sha256
(base32
"1dfwsvz1c8w6j4jp0kzaz78ml3f5dp0a5pvf090kwpbpg176r7iq"))))
"00kf4k8bqadi5s667wb96sn549v2kvw01zwszjrg7nhd805m1ng6"))))
(build-system emacs-build-system)
(arguments
`(#:phases
@ -12552,7 +12628,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)
@ -12561,7 +12637,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)
@ -13051,14 +13127,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
@ -13069,6 +13145,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"
@ -14912,18 +14989,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

View File

@ -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)

View File

@ -6,7 +6,7 @@
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016, 2017, 2018, 2019 ng0 <ng0@n0.is>
;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
;;;
;;; 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)

View File

@ -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

View File

@ -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.

View File

@ -6,7 +6,7 @@
;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
@ -332,12 +332,12 @@ 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
(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

View File

@ -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.

View File

@ -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

View File

@ -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')

View File

@ -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
}
},

View File

@ -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 <steve@einval.com>
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 shouldnt (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 <http://lists.gnu.org/archive/html/bug-grub/2018-10/msg00006.html>.
--- 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)
{

View File

@ -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 <ludo@gnu.org>.
Mangled (for GRUB 2.04) by Tobias Geerinckx-Rice <me@tobias.gr>.
--- 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)

View File

@ -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']},
)

View File

@ -29,6 +29,7 @@
;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Vagrant Cascadian <vagrant@debian.org>
;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot>
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;;
;;; 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)))

View File

@ -62,6 +62,7 @@
;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us>
;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -15932,3 +15933,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)))

View File

@ -15,6 +15,7 @@
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2019 Kyle Meyer <kyle@kyleam.com>
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;;
;;; 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")

View File

@ -33,6 +33,7 @@
;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot>
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -5238,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
@ -6498,3 +6511,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)))

View File

@ -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

View File

@ -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)

View File

@ -0,0 +1,267 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;;
;;; 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 <http://www.gnu.org/licenses/>.
(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)
#: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)
#:use-module (gnu packages time))
;; Common package definition for packages from https://github.com/wireservice.
(define-syntax-rule (wireservice-package extra-fields ...)
(package
(build-system python-build-system)
(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)
extra-fields ...))
(define-public python-leather
(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
(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
(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
(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
(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
(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)))

View File

@ -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

View File

@ -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)

View File

@ -78,7 +78,9 @@ DIRECTORY is not accessible."
((= stat:type 'directory)
(append (scheme-files absolute)
result))
(_ result)))))
(_ result)))
(else
result)))
(else
result))))))
'()

View File

@ -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
@ -479,26 +487,29 @@ 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
;; 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?
%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))))
@ -536,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
@ -664,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))
@ -684,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)
@ -740,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

View File

@ -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

View File

@ -1,129 +0,0 @@
/* GNU Guix --- Functional package management for GNU
Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
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 <http://www.gnu.org/licenses/>. */
/* Release file to build Guix with Nix. Useful to bootstrap Guix on
Guix-enabled Hydra instances. */
let
nixpkgs = <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 = <guix>;
buildInputs = with pkgs; [ guile sqlite bzip2 git libgcrypt ];
buildNativeInputs = with pkgs; [ texinfo gettext cvs pkgconfig ];
preAutoconf = ''git config submodule.nix.url "${<nix>}"'';
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

View File

@ -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 \