Merge branch 'master' into core-updates

This commit is contained in:
Marius Bakke 2018-11-07 21:09:57 +01:00
commit 55174e668f
No known key found for this signature in database
GPG Key ID: A2A06DF2A33A54FA
48 changed files with 1576 additions and 961 deletions

View File

@ -406,6 +406,7 @@ SH_TESTS = \
tests/guix-gc.sh \ tests/guix-gc.sh \
tests/guix-hash.sh \ tests/guix-hash.sh \
tests/guix-pack.sh \ tests/guix-pack.sh \
tests/guix-pack-relocatable.sh \
tests/guix-package.sh \ tests/guix-package.sh \
tests/guix-package-net.sh \ tests/guix-package-net.sh \
tests/guix-system.sh \ tests/guix-system.sh \
@ -462,8 +463,8 @@ check-system: $(GOBJECTS)
# Public key used to sign substitutes from hydra.gnu.org & co. # Public key used to sign substitutes from hydra.gnu.org & co.
dist_pkgdata_DATA = \ dist_pkgdata_DATA = \
hydra.gnu.org.pub \ etc/substitutes/hydra.gnu.org.pub \
berlin.guixsd.org.pub etc/substitutes/berlin.guixsd.org.pub
# Bash completion file. # Bash completion file.
dist_bashcompletion_DATA = etc/completion/bash/guix \ dist_bashcompletion_DATA = etc/completion/bash/guix \

View File

@ -31,7 +31,7 @@ Copyright @copyright{} 2016, 2017, 2018 Jan Nieuwenhuizen@*
Copyright @copyright{} 2016 Julien Lepiller@* Copyright @copyright{} 2016 Julien Lepiller@*
Copyright @copyright{} 2016 Alex ter Weele@* Copyright @copyright{} 2016 Alex ter Weele@*
Copyright @copyright{} 2017, 2018 Clément Lassieur@* Copyright @copyright{} 2017, 2018 Clément Lassieur@*
Copyright @copyright{} 2017 Mathieu Othacehe@* Copyright @copyright{} 2017, 2018 Mathieu Othacehe@*
Copyright @copyright{} 2017 Federico Beffa@* Copyright @copyright{} 2017 Federico Beffa@*
Copyright @copyright{} 2017, 2018 Carlo Zancanaro@* Copyright @copyright{} 2017, 2018 Carlo Zancanaro@*
Copyright @copyright{} 2017 Thomas Danckaert@* Copyright @copyright{} 2017 Thomas Danckaert@*
@ -2844,9 +2844,6 @@ The @command{guix pull} command is usually invoked with no arguments,
but it supports the following options: but it supports the following options:
@table @code @table @code
@item --verbose
Produce verbose output, writing build logs to the standard error output.
@item --url=@var{url} @item --url=@var{url}
@itemx --commit=@var{commit} @itemx --commit=@var{commit}
@itemx --branch=@var{branch} @itemx --branch=@var{branch}
@ -2880,6 +2877,14 @@ current generation only.
@itemx -p @var{profile} @itemx -p @var{profile}
Use @var{profile} instead of @file{~/.config/guix/current}. Use @var{profile} instead of @file{~/.config/guix/current}.
@item --dry-run
@itemx -n
Show which channel commit(s) would be used and what would be built or
substituted but do not actually do it.
@item --verbose
Produce verbose output, writing build logs to the standard error output.
@item --bootstrap @item --bootstrap
Use the bootstrap Guile to build the latest Guix. This option is only Use the bootstrap Guile to build the latest Guix. This option is only
useful to Guix developers. useful to Guix developers.
@ -10934,6 +10939,10 @@ A gexp denoting the name of the log-in program. The default log-in program is
@item @code{login-arguments} (default: @code{'("-p")}) @item @code{login-arguments} (default: @code{'("-p")})
A list of arguments to pass to @command{login}. A list of arguments to pass to @command{login}.
@item @code{auto-login} (default: @code{#f})
When passed a login name, as a string, the specified user will be logged
in automatically without prompting for their login name or password.
@item @code{hardware-acceleration?} (default: #f) @item @code{hardware-acceleration?} (default: #f)
Whether to use hardware acceleration. Whether to use hardware acceleration.
@ -18663,6 +18672,11 @@ Cuirass jobs.
Location of sqlite database which contains the build results and previously Location of sqlite database which contains the build results and previously
added specifications. added specifications.
@item @code{ttl} (default: @code{(* 30 24 3600)})
Specifies the time-to-live (TTL) in seconds of garbage collector roots that
are registered for build results. This means that build results are protected
from garbage collection for at least @var{ttl} seconds.
@item @code{port} (default: @code{8081}) @item @code{port} (default: @code{8081})
Port number used by the HTTP server. Port number used by the HTTP server.

View File

@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU # GNU Guix --- Functional package management for GNU
# Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> # Copyright © 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
# #
# This file is part of GNU Guix. # This file is part of GNU Guix.
# #
@ -172,6 +172,8 @@ _guix_complete ()
if _guix_is_dash_L if _guix_is_dash_L
then then
_guix_complete_file _guix_complete_file
else
_guix_complete_available_package "$word_at_point"
fi fi
elif _guix_is_command "download" elif _guix_is_command "download"
then then

View File

@ -18,7 +18,6 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu build install) (define-module (gnu build install)
#:use-module (guix store database)
#:use-module (guix build utils) #:use-module (guix build utils)
#:use-module (guix build store-copy) #:use-module (guix build store-copy)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
@ -27,6 +26,7 @@
evaluate-populate-directive evaluate-populate-directive
populate-root-file-system populate-root-file-system
register-closure register-closure
install-database-and-gc-roots
populate-single-profile-directory)) populate-single-profile-directory))
;;; Commentary: ;;; Commentary:
@ -141,34 +141,45 @@ includes /etc, /var, /run, /bin/sh, etc., and all the symlinks to SYSTEM."
(try)) (try))
(apply throw args))))))) (apply throw args)))))))
(define* (register-closure prefix closure (define %root-profile
#:key "/var/guix/profiles/per-user/root")
(deduplicate? #t) (reset-timestamps? #t)
(schema (sql-schema))) (define* (install-database-and-gc-roots root database profile
"Register CLOSURE in PREFIX, where PREFIX is the directory name of the #:key (profile-name "guix-profile"))
target store and CLOSURE is the name of a file containing a reference graph as "Install DATABASE, the store database, under directory ROOT. Create
produced by #:references-graphs.. As a side effect, if RESET-TIMESTAMPS? is PROFILE-NAME and have it link to PROFILE, a store item."
true, reset timestamps on store files and, if DEDUPLICATE? is true, (define (scope file)
deduplicates files common to CLOSURE and the rest of PREFIX." (string-append root "/" file))
(let ((items (call-with-input-file closure read-reference-graph)))
(register-items items (define (mkdir-p* dir)
#:prefix prefix (mkdir-p (scope dir)))
#:deduplicate? deduplicate?
#:reset-timestamps? reset-timestamps? (define (symlink* old new)
#:registration-time %epoch (symlink old (scope new)))
#:schema schema)))
(install-file database (scope "/var/guix/db/"))
(chmod (scope "/var/guix/db/db.sqlite") #o644)
(mkdir-p* "/var/guix/profiles")
(mkdir-p* "/var/guix/gcroots")
(symlink* "/var/guix/profiles" "/var/guix/gcroots/profiles")
;; Make root's profile, which makes it a GC root.
(mkdir-p* %root-profile)
(symlink* profile
(string-append %root-profile "/" profile-name "-1-link"))
(symlink* (string-append profile-name "-1-link")
(string-append %root-profile "/" profile-name)))
(define* (populate-single-profile-directory directory (define* (populate-single-profile-directory directory
#:key profile closure #:key profile closure
(profile-name "guix-profile") (profile-name "guix-profile")
deduplicate? database)
register? schema)
"Populate DIRECTORY with a store containing PROFILE, whose closure is given "Populate DIRECTORY with a store containing PROFILE, whose closure is given
in the file called CLOSURE (as generated by #:references-graphs.) DIRECTORY in the file called CLOSURE (as generated by #:references-graphs.) DIRECTORY
is initialized to contain a single profile under /root pointing to PROFILE. is initialized to contain a single profile under /root pointing to PROFILE.
When REGISTER? is true, initialize DIRECTORY/var/guix/db to reflect the
contents of the store; DEDUPLICATE? determines whether to deduplicate files in When DATABASE is true, copy it to DIRECTORY/var/guix/db and create
the store. DIRECTORY/var/guix/gcroots and friends.
PROFILE-NAME is the name of the profile being created under PROFILE-NAME is the name of the profile being created under
/var/guix/profiles, typically either \"guix-profile\" or \"current-guix\". /var/guix/profiles, typically either \"guix-profile\" or \"current-guix\".
@ -177,9 +188,6 @@ This is used to create the self-contained tarballs with 'guix pack'."
(define (scope file) (define (scope file)
(string-append directory "/" file)) (string-append directory "/" file))
(define %root-profile
"/var/guix/profiles/per-user/root")
(define (mkdir-p* dir) (define (mkdir-p* dir)
(mkdir-p (scope dir))) (mkdir-p (scope dir)))
@ -189,22 +197,9 @@ This is used to create the self-contained tarballs with 'guix pack'."
;; Populate the store. ;; Populate the store.
(populate-store (list closure) directory) (populate-store (list closure) directory)
(when register? (when database
(register-closure (canonicalize-path directory) closure (install-database-and-gc-roots directory database profile
#:deduplicate? deduplicate? #:profile-name profile-name))
#:schema schema)
(mkdir-p* "/var/guix/profiles")
(mkdir-p* "/var/guix/gcroots")
(symlink* "/var/guix/profiles"
"/var/guix/gcroots/profiles"))
;; Make root's profile, which makes it a GC root.
(mkdir-p* %root-profile)
(symlink* profile
(string-append %root-profile "/" profile-name "-1-link"))
(symlink* (string-append profile-name "-1-link")
(string-append %root-profile "/" profile-name))
(match profile-name (match profile-name
("guix-profile" ("guix-profile"

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2018 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -139,6 +139,12 @@ REFERENCES-GRAPHS."
(write-cpio-archive output "." #:gzip gzip)) (write-cpio-archive output "." #:gzip gzip))
;; Make sure directories are writable so we can delete files.
(for-each make-file-writable
(find-files "contents"
(lambda (file stat)
(eq? 'directory (stat:type stat)))
#:directories? #t))
(delete-file-recursively "contents")) (delete-file-recursively "contents"))
;;; linux-initrd.scm ends here ;;; linux-initrd.scm ends here

View File

@ -25,7 +25,7 @@
#:use-module (guix build utils) #:use-module (guix build utils)
#:use-module (guix build store-copy) #:use-module (guix build store-copy)
#:use-module (guix build syscalls) #:use-module (guix build syscalls)
#:use-module ((guix store database) #:select (reset-timestamps)) #:use-module (guix store database)
#:use-module (gnu build linux-boot) #:use-module (gnu build linux-boot)
#:use-module (gnu build install) #:use-module (gnu build install)
#:use-module (gnu system uuid) #:use-module (gnu system uuid)
@ -191,6 +191,23 @@ the #:references-graphs parameter of 'derivation'."
(mkdir output) (mkdir output)
(copy-recursively "xchg" output))))) (copy-recursively "xchg" output)))))
(define* (register-closure prefix closure
#:key
(deduplicate? #t) (reset-timestamps? #t)
(schema (sql-schema)))
"Register CLOSURE in PREFIX, where PREFIX is the directory name of the
target store and CLOSURE is the name of a file containing a reference graph as
produced by #:references-graphs.. As a side effect, if RESET-TIMESTAMPS? is
true, reset timestamps on store files and, if DEDUPLICATE? is true,
deduplicates files common to CLOSURE and the rest of PREFIX."
(let ((items (call-with-input-file closure read-reference-graph)))
(register-items items
#:prefix prefix
#:deduplicate? deduplicate?
#:reset-timestamps? reset-timestamps?
#:registration-time %epoch
#:schema schema)))
;;; ;;;
;;; Partitions. ;;; Partitions.

View File

@ -726,7 +726,6 @@ dist_patch_DATA = \
%D%/packages/patches/gd-fix-tests-on-i686.patch \ %D%/packages/patches/gd-fix-tests-on-i686.patch \
%D%/packages/patches/gd-freetype-test-failure.patch \ %D%/packages/patches/gd-freetype-test-failure.patch \
%D%/packages/patches/gdm-CVE-2018-14424.patch \ %D%/packages/patches/gdm-CVE-2018-14424.patch \
%D%/packages/patches/gemma-intel-compat.patch \
%D%/packages/patches/geoclue-config.patch \ %D%/packages/patches/geoclue-config.patch \
%D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \ %D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \
%D%/packages/patches/ghc-dont-pass-linker-flags-via-response-files.patch \ %D%/packages/patches/ghc-dont-pass-linker-flags-via-response-files.patch \
@ -838,7 +837,6 @@ dist_patch_DATA = \
%D%/packages/patches/java-xerces-xjavac_taskdef.patch \ %D%/packages/patches/java-xerces-xjavac_taskdef.patch \
%D%/packages/patches/jbig2dec-ignore-testtest.patch \ %D%/packages/patches/jbig2dec-ignore-testtest.patch \
%D%/packages/patches/json-glib-fix-tests-32bit.patch \ %D%/packages/patches/json-glib-fix-tests-32bit.patch \
%D%/packages/patches/jq-CVE-2015-8863.patch \
%D%/packages/patches/kdbusaddons-kinit-file-name.patch \ %D%/packages/patches/kdbusaddons-kinit-file-name.patch \
%D%/packages/patches/khmer-use-libraries.patch \ %D%/packages/patches/khmer-use-libraries.patch \
%D%/packages/patches/libziparchive-add-includes.patch \ %D%/packages/patches/libziparchive-add-includes.patch \
@ -882,6 +880,7 @@ dist_patch_DATA = \
%D%/packages/patches/libexif-CVE-2017-7544.patch \ %D%/packages/patches/libexif-CVE-2017-7544.patch \
%D%/packages/patches/libgcrypt-make-yat2m-reproducible.patch \ %D%/packages/patches/libgcrypt-make-yat2m-reproducible.patch \
%D%/packages/patches/libgit2-mtime-0.patch \ %D%/packages/patches/libgit2-mtime-0.patch \
%D%/packages/patches/libgit2-oom-test.patch \
%D%/packages/patches/libgdata-fix-tests.patch \ %D%/packages/patches/libgdata-fix-tests.patch \
%D%/packages/patches/libgdata-glib-duplicate-tests.patch \ %D%/packages/patches/libgdata-glib-duplicate-tests.patch \
%D%/packages/patches/libgnome-encoding.patch \ %D%/packages/patches/libgnome-encoding.patch \

View File

@ -35,14 +35,14 @@
(define-public fio (define-public fio
(package (package
(name "fio") (name "fio")
(version "3.7") (version "3.11")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://brick.kernel.dk/snaps/" (uri (string-append "http://brick.kernel.dk/snaps/"
"fio-" version ".tar.gz")) "fio-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0rw9jf2ikm19lq4jizavdvvp3vfvlm3annq7jsxl2y5nf1pi2qr7")))) "0s8m0wcz5j6sa1hblj80wk3syy5b4shg7y3gabvm9xa3wj0lzasa"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:test-target "test" '(#:test-target "test"

View File

@ -201,14 +201,14 @@ genomes and gene ID formats, largely based on the UCSC table browser.")
(define-public r-hpar (define-public r-hpar
(package (package
(name "r-hpar") (name "r-hpar")
(version "1.22.2") (version "1.24.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "hpar" version)) (uri (bioconductor-uri "hpar" version))
(sha256 (sha256
(base32 (base32
"1b72hvzasf6q739gmx6jblbzzyq22l7crrkbbfkihv3v7s94g388")))) "1pm3k8apgynmdzv2d0chca3b636kcai3b1x861fyv1m3xs6msgxn"))))
(build-system r-build-system) (build-system r-build-system)
(home-page "https://bioconductor.org/packages/hpar/") (home-page "https://bioconductor.org/packages/hpar/")
(synopsis "Human Protein Atlas in R") (synopsis "Human Protein Atlas in R")
@ -219,23 +219,24 @@ the Human Protein Atlas project.")
(define-public r-regioner (define-public r-regioner
(package (package
(name "r-regioner") (name "r-regioner")
(version "1.12.0") (version "1.14.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "regioneR" version)) (uri (bioconductor-uri "regioneR" version))
(sha256 (sha256
(base32 (base32
"09bzlaqdgy7wmzly3zc9y2da50d07mlixlnpaxdxpiwdk8qmhxsb")))) "19la74swgzxp90z2nr3pzsgkxd7wp70zl6i2ipv3plg841f6k5zd"))))
(properties `((upstream-name . "regioneR"))) (properties `((upstream-name . "regioneR")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-memoise" ,r-memoise) `(("r-biostrings" ,r-biostrings)
("r-genomicranges" ,r-genomicranges)
("r-bsgenome" ,r-bsgenome) ("r-bsgenome" ,r-bsgenome)
("r-rtracklayer" ,r-rtracklayer)
("r-genomeinfodb" ,r-genomeinfodb) ("r-genomeinfodb" ,r-genomeinfodb)
("r-genomicranges" ,r-genomicranges)
("r-iranges" ,r-iranges) ("r-iranges" ,r-iranges)
("r-memoise" ,r-memoise)
("r-rtracklayer" ,r-rtracklayer)
("r-s4vectors" ,r-s4vectors))) ("r-s4vectors" ,r-s4vectors)))
(home-page "https://bioconductor.org/packages/regioneR/") (home-page "https://bioconductor.org/packages/regioneR/")
(synopsis "Association analysis of genomic regions") (synopsis "Association analysis of genomic regions")
@ -247,14 +248,14 @@ region sets and other genomic features.")
(define-public r-diffbind (define-public r-diffbind
(package (package
(name "r-diffbind") (name "r-diffbind")
(version "2.8.0") (version "2.10.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "DiffBind" version)) (uri (bioconductor-uri "DiffBind" version))
(sha256 (sha256
(base32 (base32
"1w1hybzd732ccg3q8zhirwfilq8sx3frv1x98zfyj3svzw98fish")))) "0j8pal40lr1gv8sss96hhkj7l1qn9sy4q4l2kqd4rfwl7qrcnfw5"))))
(properties `((upstream-name . "DiffBind"))) (properties `((upstream-name . "DiffBind")))
(build-system r-build-system) (build-system r-build-system)
(inputs (inputs
@ -292,14 +293,14 @@ occupancy (overlap) analysis and plotting functions.")
(define-public r-ripseeker (define-public r-ripseeker
(package (package
(name "r-ripseeker") (name "r-ripseeker")
(version "1.20.0") (version "1.22.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "RIPSeeker" version)) (uri (bioconductor-uri "RIPSeeker" version))
(sha256 (sha256
(base32 (base32
"0y9cvzqslfxj3z9mnp47mknff0pky2g5x8x1z1s5yjcx35q89xfi")))) "1x2n1iyik4s67bxq0fl6fpf602k51g4pxjpjpxkgx1a5fsk61f2i"))))
(properties `((upstream-name . "RIPSeeker"))) (properties `((upstream-name . "RIPSeeker")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -325,14 +326,14 @@ processing to visualization and annotation.")
(define-public r-multtest (define-public r-multtest
(package (package
(name "r-multtest") (name "r-multtest")
(version "2.36.0") (version "2.38.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "multtest" version)) (uri (bioconductor-uri "multtest" version))
(sha256 (sha256
(base32 (base32
"11949h2kglw13x8haaj4clg4jim1mwh5n98n9zxp9mmgn01z1lp0")))) "0lq62jw81hz9k840969n5byj57pwd0jqga3hqvhb6abb3g10yz7k"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-survival" ,r-survival) `(("r-survival" ,r-survival)
@ -363,13 +364,13 @@ expressed genes in DNA microarray experiments.")
(define-public r-graph (define-public r-graph
(package (package
(name "r-graph") (name "r-graph")
(version "1.58.2") (version "1.60.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "graph" version)) (uri (bioconductor-uri "graph" version))
(sha256 (sha256
(base32 (base32
"07smbb3c30pr5r425g181xsg0rs5jx6x2q6xpwb5dqgicxrz30ga")))) "1kgnsm6f0vmb9qbkmmrnvxbwqc0gar17dq5gv1v10hrksw6mh64i"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-biocgenerics" ,r-biocgenerics))) `(("r-biocgenerics" ,r-biocgenerics)))
@ -410,18 +411,19 @@ determining dependencies between variables, code improvement suggestions.")
(define-public r-chippeakanno (define-public r-chippeakanno
(package (package
(name "r-chippeakanno") (name "r-chippeakanno")
(version "3.14.2") (version "3.16.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "ChIPpeakAnno" version)) (uri (bioconductor-uri "ChIPpeakAnno" version))
(sha256 (sha256
(base32 (base32
"13rksc65lxxzyw11galh6xzvgzp5ii0gwiwpvrm395v2r17rhwsc")))) "09fhh1355diip3v3c0skmp1336vclipkm5nv02qvp5902v4262y3"))))
(properties `((upstream-name . "ChIPpeakAnno"))) (properties `((upstream-name . "ChIPpeakAnno")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-biocgenerics" ,r-biocgenerics) `(("r-biocgenerics" ,r-biocgenerics)
("r-biocmanager" ,r-biocmanager)
("r-biostrings" ,r-biostrings) ("r-biostrings" ,r-biostrings)
("r-delayedarray" ,r-delayedarray) ("r-delayedarray" ,r-delayedarray)
("r-go-db" ,r-go-db) ("r-go-db" ,r-go-db)
@ -437,7 +439,6 @@ determining dependencies between variables, code improvement suggestions.")
("r-multtest" ,r-multtest) ("r-multtest" ,r-multtest)
("r-rbgl" ,r-rbgl) ("r-rbgl" ,r-rbgl)
("r-graph" ,r-graph) ("r-graph" ,r-graph)
("r-biocinstaller" ,r-biocinstaller)
("r-regioner" ,r-regioner) ("r-regioner" ,r-regioner)
("r-dbi" ,r-dbi) ("r-dbi" ,r-dbi)
("r-ensembldb" ,r-ensembldb) ("r-ensembldb" ,r-ensembldb)
@ -465,12 +466,12 @@ enrichedGO (addGeneIDs).")
(define-public r-marray (define-public r-marray
(package (package
(name "r-marray") (name "r-marray")
(version "1.58.0") (version "1.60.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "marray" version)) (uri (bioconductor-uri "marray" version))
(sha256 (sha256
(base32 "0539flh3y1qy5b1bamkfwbskis765c5s33v1y9j51n33mxb9h08d")))) (base32 "1sh7l3c28x6zhdv99c9x05ii2yxmh9alkazp98kdi4fdb23rlzky"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-limma" ,r-limma))) `(("r-limma" ,r-limma)))
@ -484,12 +485,12 @@ normalization and quality checking.")
(define-public r-cghbase (define-public r-cghbase
(package (package
(name "r-cghbase") (name "r-cghbase")
(version "1.40.0") (version "1.42.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "CGHbase" version)) (uri (bioconductor-uri "CGHbase" version))
(sha256 (sha256
(base32 "1hf44vma3kgwr61kjbszvfxkava8bjqnam1mdncqvczbypb2xwaq")))) (base32 "0ghxp49xdi09p3f2qwrdrq2p4qjafj4z1rr08ycgbf11gb22h1sc"))))
(properties `((upstream-name . "CGHbase"))) (properties `((upstream-name . "CGHbase")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -504,12 +505,12 @@ the @code{arrayCGH} packages.")
(define-public r-cghcall (define-public r-cghcall
(package (package
(name "r-cghcall") (name "r-cghcall")
(version "2.42.0") (version "2.44.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "CGHcall" version)) (uri (bioconductor-uri "CGHcall" version))
(sha256 (sha256
(base32 "0y71vfxv9x0am3xvv520yr95cb7m7y92dhdx1vkqki80jrmf12dz")))) (base32 "1k65kaiqvjyllzbpa2367n6f6kkmsy463kpflzs66hqhx2fshsmi"))))
(properties `((upstream-name . "CGHcall"))) (properties `((upstream-name . "CGHcall")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -527,12 +528,12 @@ the @code{arrayCGH} packages.")
(define-public r-qdnaseq (define-public r-qdnaseq
(package (package
(name "r-qdnaseq") (name "r-qdnaseq")
(version "1.16.0") (version "1.18.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "QDNAseq" version)) (uri (bioconductor-uri "QDNAseq" version))
(sha256 (sha256
(base32 "1pj69mfyxwfd0d7h4kls9xq96sdc55y3rv20qpla50hw9libcwwd")))) (base32 "04ff9nbckzrlb45mr2j0c3mlh1wcggq5bbl81zklhq203c5x1wc2"))))
(properties `((upstream-name . "QDNAseq"))) (properties `((upstream-name . "QDNAseq")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -559,14 +560,14 @@ respectively.")
(define-public r-bayseq (define-public r-bayseq
(package (package
(name "r-bayseq") (name "r-bayseq")
(version "2.14.0") (version "2.16.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "baySeq" version)) (uri (bioconductor-uri "baySeq" version))
(sha256 (sha256
(base32 (base32
"0hbmm01a8libara9mbxknpk0wzarwfngnfwlmhpww91a0cmy5klg")))) "0f6yckihm5cwh3dycv2g54hf7nddhcqya4yrqwbir96y5k1d1km5"))))
(properties `((upstream-name . "baySeq"))) (properties `((upstream-name . "baySeq")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -585,14 +586,14 @@ more complex hypotheses) via empirical Bayesian methods.")
(define-public r-chipcomp (define-public r-chipcomp
(package (package
(name "r-chipcomp") (name "r-chipcomp")
(version "1.10.0") (version "1.12.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "ChIPComp" version)) (uri (bioconductor-uri "ChIPComp" version))
(sha256 (sha256
(base32 (base32
"0j9nif7z33qdxf347r9wa62hhz8qs09r2p96x3hg5yz30a10ahqs")))) "1sypdsvwzssraanlhddhzpf9p0xs3qlflc0hp7yfbp0aplsifx85"))))
(properties `((upstream-name . "ChIPComp"))) (properties `((upstream-name . "ChIPComp")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -619,14 +620,14 @@ datasets.")
(define-public r-riboprofiling (define-public r-riboprofiling
(package (package
(name "r-riboprofiling") (name "r-riboprofiling")
(version "1.10.0") (version "1.12.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "RiboProfiling" version)) (uri (bioconductor-uri "RiboProfiling" version))
(sha256 (sha256
(base32 (base32
"04yjklqdjkim7yxyk3cyvf0mmwyxyfvw2mmfzgwaaqbiyg29sli0")))) "1njvkd1khmf3rbp3dkz5z63wp79z4wmk4kzd3p3amky3w5by070z"))))
(properties `((upstream-name . "RiboProfiling"))) (properties `((upstream-name . "RiboProfiling")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -658,14 +659,14 @@ assessment, principal component analysis on codon coverage.")
(define-public r-riboseqr (define-public r-riboseqr
(package (package
(name "r-riboseqr") (name "r-riboseqr")
(version "1.14.0") (version "1.16.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "riboSeqR" version)) (uri (bioconductor-uri "riboSeqR" version))
(sha256 (sha256
(base32 (base32
"0xavd1cdhi8qfjn9a1hjhflyg6jq1ydvv56z12gjz572pwz2knvn")))) "1nacsbsz77fw4a10nqj2ncsf25q3aaa0gd5w1q0ray2prx7qmlqb"))))
(properties `((upstream-name . "riboSeqR"))) (properties `((upstream-name . "riboSeqR")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -686,14 +687,14 @@ parsing of genetic sequencing data from ribosome profiling experiments.")
(define-public r-interactionset (define-public r-interactionset
(package (package
(name "r-interactionset") (name "r-interactionset")
(version "1.8.0") (version "1.10.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "InteractionSet" version)) (uri (bioconductor-uri "InteractionSet" version))
(sha256 (sha256
(base32 (base32
"0xngraq7ic80jr98i1wqp8bxdgidq6py60m2wfk82n1ixpcdck8n")))) "0wirfhmpmkmnmhbqslw4bzvi2msqyqpjy1rrwr5qbd9k5rhx3bzb"))))
(properties (properties
`((upstream-name . "InteractionSet"))) `((upstream-name . "InteractionSet")))
(build-system r-build-system) (build-system r-build-system)
@ -718,14 +719,14 @@ experiments.")
(define-public r-genomicinteractions (define-public r-genomicinteractions
(package (package
(name "r-genomicinteractions") (name "r-genomicinteractions")
(version "1.14.0") (version "1.16.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "GenomicInteractions" version)) (uri (bioconductor-uri "GenomicInteractions" version))
(sha256 (sha256
(base32 (base32
"0cnagprxj0b7p6s29iyhqwxj7hgmrh75gj52y4dlil790d1bmq2q")))) "0zy5isp2lqpjm0n0n1gly5bs4izn22yciibyqrnlrr60rmn5s67q"))))
(properties (properties
`((upstream-name . "GenomicInteractions"))) `((upstream-name . "GenomicInteractions")))
(build-system r-build-system) (build-system r-build-system)
@ -757,14 +758,14 @@ information and producing various plots and statistics.")
(define-public r-ctc (define-public r-ctc
(package (package
(name "r-ctc") (name "r-ctc")
(version "1.54.0") (version "1.56.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "ctc" version)) (uri (bioconductor-uri "ctc" version))
(sha256 (sha256
(base32 (base32
"0sadplm4n9n3z6inmn6y3d6qbr4hllljqh700x5fygrnfacnckk9")))) "0yp7c0abk48jx1wf8n1gawh7dm15idahqc8va24v8cm0bzxgnmh2"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs `(("r-amap" ,r-amap))) (propagated-inputs `(("r-amap" ,r-amap)))
(home-page "https://bioconductor.org/packages/ctc/") (home-page "https://bioconductor.org/packages/ctc/")
@ -777,14 +778,14 @@ trees and clusters to other programs.")
(define-public r-goseq (define-public r-goseq
(package (package
(name "r-goseq") (name "r-goseq")
(version "1.32.0") (version "1.34.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "goseq" version)) (uri (bioconductor-uri "goseq" version))
(sha256 (sha256
(base32 (base32
"0xmbb8ma32lrfy810r82y34gkspq4fqiqxykic9j4rq9rg9n9x2l")))) "1401x0jn5f8hqc12r3gd1wammp1nxir3is1k5ldd03ln97x00i7a"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-annotationdbi" ,r-annotationdbi) `(("r-annotationdbi" ,r-annotationdbi)
@ -803,14 +804,14 @@ defined categories which are over/under represented in RNA-seq data.")
(define-public r-glimma (define-public r-glimma
(package (package
(name "r-glimma") (name "r-glimma")
(version "1.8.2") (version "1.10.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "Glimma" version)) (uri (bioconductor-uri "Glimma" version))
(sha256 (sha256
(base32 (base32
"0kfia60vrlys6amdchdix01iwbkwyb7nfjqn5hczsxp8rhmbg25s")))) "0cbsi6g8k1whkh21jxfn22sj7wry2g3rshiracf5nyvrl2fnl947"))))
(properties `((upstream-name . "Glimma"))) (properties `((upstream-name . "Glimma")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -830,14 +831,14 @@ information.")
(define-public r-rots (define-public r-rots
(package (package
(name "r-rots") (name "r-rots")
(version "1.8.0") (version "1.10.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "ROTS" version)) (uri (bioconductor-uri "ROTS" version))
(sha256 (sha256
(base32 (base32
"12jvdqanyk86ihpcylp105zip22y0gkbksmyxy00q7iad0jhaqp3")))) "137c06g5w7mjw3b1mly7b7n9iix4fcy23c7a9ym9iz8dazwhzwn5"))))
(properties `((upstream-name . "ROTS"))) (properties `((upstream-name . "ROTS")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -854,14 +855,14 @@ in omics data.")
(define-public r-inspect (define-public r-inspect
(package (package
(name "r-inspect") (name "r-inspect")
(version "1.10.0") (version "1.12.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "INSPEcT" version)) (uri (bioconductor-uri "INSPEcT" version))
(sha256 (sha256
(base32 (base32
"1gk0pwyimkswrvgb2xr3c2zy4myi448a2shr5ap65rq9pcpp0l8p")))) "0b671x5v2wyq5np2flq2m1fnjz32f303yjlw64a1inwc9k2w2pz2"))))
(properties `((upstream-name . "INSPEcT"))) (properties `((upstream-name . "INSPEcT")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -890,14 +891,14 @@ modeling the rates that determines changes in mature mRNA levels.")
(define-public r-dnabarcodes (define-public r-dnabarcodes
(package (package
(name "r-dnabarcodes") (name "r-dnabarcodes")
(version "1.10.0") (version "1.12.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "DNABarcodes" version)) (uri (bioconductor-uri "DNABarcodes" version))
(sha256 (sha256
(base32 (base32
"0xhna7f0kr7pp2hqwara5i57m9mdr65shflfxiyw6yy3g90pgb5x")))) "0g6j7ish0fk9jcib94wssjgp1m8ldcp42hyyg1ypr945fa3xghx0"))))
(properties `((upstream-name . "DNABarcodes"))) (properties `((upstream-name . "DNABarcodes")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -917,14 +918,14 @@ demultiplexed, i.e. assigned to their original reference barcode.")
(define-public r-ruvseq (define-public r-ruvseq
(package (package
(name "r-ruvseq") (name "r-ruvseq")
(version "1.14.0") (version "1.16.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "RUVSeq" version)) (uri (bioconductor-uri "RUVSeq" version))
(sha256 (sha256
(base32 (base32
"16i5sm5af761k4zvspfi8jknsgln48bn538hxqqmlaq7wvlfxqxj")))) "0xb3bj3n06cb9xddkv77a8svhg4fl1azlfmibwrm9mq9464kgf0m"))))
(properties `((upstream-name . "RUVSeq"))) (properties `((upstream-name . "RUVSeq")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -939,3 +940,32 @@ demultiplexed, i.e. assigned to their original reference barcode.")
of Risso et al. (2014) for the normalization of RNA-Seq read counts between of Risso et al. (2014) for the normalization of RNA-Seq read counts between
samples.") samples.")
(license license:artistic2.0))) (license license:artistic2.0)))
(define-public r-biocneighbors
(package
(name "r-biocneighbors")
(version "1.0.0")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "BiocNeighbors" version))
(sha256
(base32
"1fsb96acidlxwf0h65xv7fnwdi58ckmq00gmwykrlawh88wgn1ll"))))
(properties `((upstream-name . "BiocNeighbors")))
(build-system r-build-system)
(propagated-inputs
`(("r-biocparallel" ,r-biocparallel)
("r-rcpp" ,r-rcpp)
("r-rcppannoy" ,r-rcppannoy)
("r-s4vectors" ,r-s4vectors)))
(home-page "https://bioconductor.org/packages/BiocNeighbors")
(synopsis "Nearest Neighbor Detection for Bioconductor packages")
(description
"This package implements exact and approximate methods for nearest
neighbor detection, in a framework that allows them to be easily switched
within Bioconductor packages or workflows. The exact algorithm is implemented
using pre-clustering with the k-means algorithm. Functions are also provided
to search for all neighbors within a given distance. Parallelization is
achieved for all methods using the BiocParallel framework.")
(license license:gpl3)))

File diff suppressed because it is too large Load Diff

View File

@ -186,8 +186,8 @@ their dependencies.")
(license l:gpl3+)))) (license l:gpl3+))))
(define-public cuirass (define-public cuirass
(let ((commit "fe2b73c2353d106431ed0659345391f14ed64600") (let ((commit "0b40dca734468e8b12b3ff58e3e779679f17d38e")
(revision "20")) (revision "21"))
(package (package
(name "cuirass") (name "cuirass")
(version (string-append "0.0.1-" revision "." (string-take commit 7))) (version (string-append "0.0.1-" revision "." (string-take commit 7)))
@ -199,7 +199,7 @@ their dependencies.")
(file-name (string-append name "-" version)) (file-name (string-append name "-" version))
(sha256 (sha256
(base32 (base32
"00ldbig2p14qpwrl2i2hnhb9idgbbf0kqnlh4n79rmz96blm7463")))) "1kdxs8dzdyldfs4wsz5hb64hprkbrnq5ljdll631f3bj8pbvvvc1"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:modules ((guix build utils) '(#:modules ((guix build utils)

View File

@ -492,13 +492,13 @@ print, summary, plot, update, etc.
(define-public r-ps (define-public r-ps
(package (package
(name "r-ps") (name "r-ps")
(version "1.2.0") (version "1.2.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "ps" version)) (uri (cran-uri "ps" version))
(sha256 (sha256
(base32 "0ai8igdkysmks1ihbp3h3s552da2hskxqwrvp4cx7vwn91x9f3wd")))) (base32 "1zxylcb0nr4qb5v6j199mc2pfgf2bpf00jrw47jajmv59qb0fwmx"))))
(build-system r-build-system) (build-system r-build-system)
(home-page "http://ps.r-lib.org") (home-page "http://ps.r-lib.org")
(synopsis "List, query, and manipulate system processes") (synopsis "List, query, and manipulate system processes")
@ -539,14 +539,14 @@ is configured appropriately so R can use them.")
(define-public r-pkgload (define-public r-pkgload
(package (package
(name "r-pkgload") (name "r-pkgload")
(version "1.0.1") (version "1.0.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "pkgload" version)) (uri (cran-uri "pkgload" version))
(sha256 (sha256
(base32 (base32
"0mm0avvan528zbrcrxigl5fkd7za01fb0qhlqrqvm3ar0115cqa8")))) "0z7jvharafahi2gv5547mk1n499isjzw06kfwymmxc0gd575d1ii"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-desc" ,r-desc) `(("r-desc" ,r-desc)
@ -891,14 +891,14 @@ in main memory.")
(define-public r-ffbase (define-public r-ffbase
(package (package
(name "r-ffbase") (name "r-ffbase")
(version "0.12.5") (version "0.12.7")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "ffbase" version)) (uri (cran-uri "ffbase" version))
(sha256 (sha256
(base32 (base32
"1h5x6rbb1nrpzf4ywkizn8ij0bz3mlz46byh46ylxhicg1ribi24")))) "04kxx2f3f0743c5nvpb7x1x0pcd220dazpd5ag1pidxbz3xa85nw"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-bit" ,r-bit) `(("r-bit" ,r-bit)
@ -1762,14 +1762,14 @@ provided.")
(define-public r-ipred (define-public r-ipred
(package (package
(name "r-ipred") (name "r-ipred")
(version "0.9-7") (version "0.9-8")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "ipred" version)) (uri (cran-uri "ipred" version))
(sha256 (sha256
(base32 (base32
"0q53cqs46501wsd4cmfsmr78l8nv1hkbamk9m0ns5qy02df5r254")))) "01xcg3c121ndfpz9dirqxszknh4yb1p222p7f1wbwwhdrg1i27cw"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-class" ,r-class) `(("r-class" ,r-class)
@ -1789,14 +1789,14 @@ problems as well as resampling based estimators of prediction error.")
(define-public r-psych (define-public r-psych
(package (package
(name "r-psych") (name "r-psych")
(version "1.8.4") (version "1.8.10")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "psych" version)) (uri (cran-uri "psych" version))
(sha256 (sha256
(base32 (base32
"1kzv9nc7rwn1sj1zxd8xrbs6c7qlka7j2c8lsr4f20znkd3qx8gf")))) "0n3frgzsfmnan6cp3yyq5h6c28v5pd7q5a42pp6byaa7n7d1v478"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-foreign" ,r-foreign) `(("r-foreign" ,r-foreign)
@ -2319,14 +2319,14 @@ training models for classification or ranking.")
(define-public r-xts (define-public r-xts
(package (package
(name "r-xts") (name "r-xts")
(version "0.11-1") (version "0.11-2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "xts" version)) (uri (cran-uri "xts" version))
(sha256 (sha256
(base32 (base32
"17d3g14xkxa1a5z5gd3gk1xjqfkjg1ik3i12q0arina8frql3jhd")))) "1f0kxrvn13py3hk2gh2m56cqm39x3bqp1i350r5viddacrm2yxqj"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs `(("r-zoo" ,r-zoo))) (propagated-inputs `(("r-zoo" ,r-zoo)))
(home-page "https://github.com/joshuaulrich/xts") (home-page "https://github.com/joshuaulrich/xts")
@ -4814,14 +4814,14 @@ vice versa), or to deal with multiple declared missing values.")
(define-public r-sjmisc (define-public r-sjmisc
(package (package
(name "r-sjmisc") (name "r-sjmisc")
(version "2.7.5") (version "2.7.6")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "sjmisc" version)) (uri (cran-uri "sjmisc" version))
(sha256 (sha256
(base32 (base32
"05fjqfr2rfk11065zqkzb9mbqd6mgdkw9jdhq3by425a7f8m2dcg")))) "1jhrigikjpkdar3jxvi7qhqsg6lgjkjqhqll9vaay98b88rfc2im"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-broom" ,r-broom) `(("r-broom" ,r-broom)
@ -4829,15 +4829,12 @@ vice versa), or to deal with multiple declared missing values.")
("r-dplyr" ,r-dplyr) ("r-dplyr" ,r-dplyr)
("r-haven" ,r-haven) ("r-haven" ,r-haven)
("r-magrittr" ,r-magrittr) ("r-magrittr" ,r-magrittr)
("r-pillar" ,r-pillar)
("r-purrr" ,r-purrr) ("r-purrr" ,r-purrr)
("r-rlang" ,r-rlang) ("r-rlang" ,r-rlang)
("r-sjlabelled" ,r-sjlabelled) ("r-sjlabelled" ,r-sjlabelled)
("r-stringdist" ,r-stringdist) ("r-stringdist" ,r-stringdist)
("r-stringr" ,r-stringr) ("r-stringr" ,r-stringr)
("r-tibble" ,r-tibble) ("r-tidyr" ,r-tidyr)))
("r-tidyr" ,r-tidyr)
("r-tidyselect" ,r-tidyselect)))
(home-page "https://github.com/strengejacke/sjmisc") (home-page "https://github.com/strengejacke/sjmisc")
(synopsis "Data and variable transformation functions") (synopsis "Data and variable transformation functions")
(description (description
@ -4899,14 +4896,14 @@ functions.")
(define-public r-flextable (define-public r-flextable
(package (package
(name "r-flextable") (name "r-flextable")
(version "0.4.5") (version "0.4.6")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "flextable" version)) (uri (cran-uri "flextable" version))
(sha256 (sha256
(base32 (base32
"09j2y0z7rkc0w1cl9pp1cpk6fnzzfr6245mxa3ca42z9k2cy2jfl")))) "0fa42dvf0wyl91w4v0rywm3xgw9n03cfyl28ficrv8iabz4k4382"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-gdtools" ,r-gdtools) `(("r-gdtools" ,r-gdtools)
@ -6823,14 +6820,14 @@ Rcpp, RStudio projects, and more.")
(define-public r-sessioninfo (define-public r-sessioninfo
(package (package
(name "r-sessioninfo") (name "r-sessioninfo")
(version "1.1.0") (version "1.1.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "sessioninfo" version)) (uri (cran-uri "sessioninfo" version))
(sha256 (sha256
(base32 (base32
"01c0m8yzadpwd825hky6as0f8ka4xyz7zfy0ih2iy7qqw11w6qn5")))) "0j5f3l58fynxx3v0w62vqpii7miabszgljpja36xx9s8hikh8sqn"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-cli" ,r-cli) `(("r-cli" ,r-cli)
@ -6846,14 +6843,14 @@ more information about packages, and where they were installed from.")
(define-public r-remotes (define-public r-remotes
(package (package
(name "r-remotes") (name "r-remotes")
(version "2.0.1") (version "2.0.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "remotes" version)) (uri (cran-uri "remotes" version))
(sha256 (sha256
(base32 (base32
"1xkzlciv68jyf4j8hads0i47nxbgsy1kv7258c6zzyq66z0amhss")))) "0rsjxmhwpr51ilsdjfqn06mj8yr2d7nckcn3arv1ljn23qfkpcxa"))))
(build-system r-build-system) (build-system r-build-system)
(home-page "https://github.com/r-lib/remotes#readme") (home-page "https://github.com/r-lib/remotes#readme")
(synopsis "R package installation from remote repositories") (synopsis "R package installation from remote repositories")
@ -6888,14 +6885,14 @@ directories or URLs with their associated programs.")
(define-public r-rcmdcheck (define-public r-rcmdcheck
(package (package
(name "r-rcmdcheck") (name "r-rcmdcheck")
(version "1.3.0") (version "1.3.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "rcmdcheck" version)) (uri (cran-uri "rcmdcheck" version))
(sha256 (sha256
(base32 (base32
"13liz9lmx9xgc0f7pjiz3sp8ygvazx2zslbiwz3p9fimfsx1yfsg")))) "1ga19jqix0zs7xyz2j155zyagwbv22r6dgv55g6wdjigc67qfsix"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-callr" ,r-callr) `(("r-callr" ,r-callr)
@ -6907,6 +6904,7 @@ directories or URLs with their associated programs.")
("r-prettyunits" ,r-prettyunits) ("r-prettyunits" ,r-prettyunits)
("r-r6" ,r-r6) ("r-r6" ,r-r6)
("r-rprojroot" ,r-rprojroot) ("r-rprojroot" ,r-rprojroot)
("r-sessioninfo" ,r-sessioninfo)
("r-withr" ,r-withr) ("r-withr" ,r-withr)
("r-xopen" ,r-xopen))) ("r-xopen" ,r-xopen)))
(home-page "https://github.com/r-Lib/rcmdcheck#readme") (home-page "https://github.com/r-Lib/rcmdcheck#readme")
@ -6943,14 +6941,14 @@ quick reporting.")
(define-public r-pander (define-public r-pander
(package (package
(name "r-pander") (name "r-pander")
(version "0.6.2") (version "0.6.3")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "pander" version)) (uri (cran-uri "pander" version))
(sha256 (sha256
(base32 (base32
"0gd7rqkpbraznip8jmri9lqa8ajg1sryyplhd6m633wg91whiipi")))) "1bd9sdghlsppmff18k5fg3i0visq9f4wc82rlhwq5m82bmgdgnyi"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-digest" ,r-digest) `(("r-digest" ,r-digest)
@ -7225,3 +7223,105 @@ R squared measure from L. J. Edwards et al. (2008) is extended to the GLMM
using @dfn{penalized quasi-likelihood} (PQL) estimation (see Jaeger et using @dfn{penalized quasi-likelihood} (PQL) estimation (see Jaeger et
al. (2016)).") al. (2016)).")
(license license:gpl2))) (license license:gpl2)))
(define-public r-weights
(package
(name "r-weights")
(version "1.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "weights" version))
(sha256
(base32
"0186bfpkhxngrshac6bpg37alp6slwhwd43inrm8hqg0vhpfgc4c"))))
(build-system r-build-system)
(propagated-inputs
`(("r-gdata" ,r-gdata)
("r-hmisc" ,r-hmisc)
("r-mice" ,r-mice)))
(home-page
"https://cran.r-project.org/web/packages/weights/")
(synopsis "Weighting and weighted statistics")
(description "This package Provides a variety of functions for producing
simple weighted statistics, such as weighted Pearson's correlations, partial
correlations, Chi-Squared statistics, histograms, and t-tests. Also now
includes some software for quickly recoding survey data and plotting point
estimates from interaction terms in regressions (and multiply imputed
regressions). NOTE: Weighted partial correlation calculations pulled to
address a bug.")
(license license:gpl2+)))
(define-public r-rcppannoy
(package
(name "r-rcppannoy")
(version "0.0.11")
(source
(origin
(method url-fetch)
(uri (cran-uri "RcppAnnoy" version))
(sha256
(base32
"1ik50ancfgcvh03n4jsqwjk8lf056rbgd70q4l4didmvh5kcyjd1"))))
(properties `((upstream-name . "RcppAnnoy")))
(build-system r-build-system)
(propagated-inputs
`(("r-rcpp" ,r-rcpp)))
(native-inputs
`(("r-knitr" ,r-knitr))) ; for vignettes
(home-page "https://cran.r-project.org/web/packages/RcppAnnoy/")
(synopsis "Rcpp bindings for Annoy, a library for Approximate Nearest Neighbors")
(description
"Annoy is a small C++ library for Approximate Nearest Neighbors written
for efficient memory usage as well an ability to load from and save to disk.
This package provides an R interface.")
;; Annoy is released under ASL 2.0, but this wrapper is released under
;; GPLv2+.
(license (list license:gpl2+ license:asl2.0))))
(define-public r-ncdf4
(package
(name "r-ncdf4")
(version "1.16")
(source
(origin
(method url-fetch)
(uri (cran-uri "ncdf4" version))
(sha256
(base32
"0lwjjis0b83c4l3xvqai4ckzrskd6mychck1iwxcxgjvh0d77mgd"))))
(build-system r-build-system)
(inputs
`(("netcdf" ,netcdf)
("zlib" ,zlib)))
(home-page "https://cran.r-project.org/web/packages/ncdf4/index.html")
(synopsis "R interface to Unidata netCDF format data files")
(description
"This package provides a high-level R interface to data files written
using Unidata's netCDF library (version 4 or earlier), which are binary data
files that are portable across platforms and include metadata information in
addition to the data sets. Using this package, netCDF files can be opened and
data sets read in easily. It is also easy to create new netCDF dimensions,
variables, and files, in either version 3 or 4 format, and manipulate existing
netCDF files.")
(license license:gpl3+)))
(define-public r-biocmanager
(package
(name "r-biocmanager")
(version "1.30.3")
(source
(origin
(method url-fetch)
(uri (cran-uri "BiocManager" version))
(sha256
(base32
"0mfvx1xzsgiag9p42kdyqg8fvajyakrdy3z2smhdlaawzbi0qmax"))))
(properties `((upstream-name . "BiocManager")))
(build-system r-build-system)
(home-page "https://cran.r-project.org/web/packages/BiocManager/")
(synopsis "Access the Bioconductor project package repository")
(description
"This package provides a convenient tool to install and update
Bioconductor packages.")
(license license:artistic2.0)))

View File

@ -221,14 +221,14 @@ compatible to GNU Pth.")
(define-public gnupg (define-public gnupg
(package (package
(name "gnupg") (name "gnupg")
(version "2.2.10") (version "2.2.11")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnupg/gnupg/gnupg-" version (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
".tar.bz2")) ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"05f9804g72pffdxgvxjmjzkfcpjg1x221g9rwcr8fi51hrxd77br")))) "1ncwqjhcxh46fgkp84g2lhf91amcha7abk6wdm1kagzm7q93wv29"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))

View File

@ -156,14 +156,14 @@ model.")
(define-public r-rgraphviz (define-public r-rgraphviz
(package (package
(name "r-rgraphviz") (name "r-rgraphviz")
(version "2.24.0") (version "2.26.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "Rgraphviz" version)) (uri (bioconductor-uri "Rgraphviz" version))
(sha256 (sha256
(base32 (base32
"1037hzfxxcn46w6y88wm3kk2nixj0s8bk0hkmnshpxih3kmnvqby")))) "0bp6517xsih0wng2rgkh9z4r1afqhwl3h04z6ssm7p4cdj0ahm4y"))))
(properties `((upstream-name . "Rgraphviz"))) (properties `((upstream-name . "Rgraphviz")))
(build-system r-build-system) (build-system r-build-system)
;; FIXME: Rgraphviz bundles the sources of an older variant of ;; FIXME: Rgraphviz bundles the sources of an older variant of

View File

@ -12,7 +12,7 @@
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2017 Andy Wingo <wingo@igalia.com> ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
;;; Copyright © 2017 David Thompson <davet@gnu.org> ;;; Copyright © 2017 David Thompson <davet@gnu.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017, 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org> ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
;;; Copyright © 2017 Nils Gillmann <ng0@n0.is> ;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@ -68,6 +68,7 @@
#:use-module (gnu packages maths) #:use-module (gnu packages maths)
#:use-module (gnu packages image) #:use-module (gnu packages image)
#:use-module (gnu packages version-control) #:use-module (gnu packages version-control)
#:use-module (gnu packages slang)
#:use-module (gnu packages xdisorg) #:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
#:use-module (gnu packages networking) #:use-module (gnu packages networking)
@ -1112,7 +1113,7 @@ Guile's foreign function interface.")
(package (package
(name "guile-sqlite3") (name "guile-sqlite3")
(version "0.1.0") (version "0.1.0")
(home-page "https://notabug.org/civodul/guile-sqlite3.git") (home-page "https://notabug.org/guile-sqlite3/guile-sqlite3.git")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -2243,4 +2244,39 @@ using S-expressions.")
tracker's SOAP service, such as @url{https://bugs.gnu.org}.") tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
(license license:gpl3+))) (license license:gpl3+)))
;; There has not been any release yet.
(define-public guile-newt
(let ((commit "596ad760bee1be419d71271732f0f30eaee55143")
(revision "0"))
(package
(name "guile-newt")
(version (string-append "0-" revision "." (string-take commit 9)))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/mothacehe/guile-newt")
(commit commit)))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"18qqbi0bc7vp2vlrhib3p3wwgn7wrlv5728dn0avirhw4fxxivnf"))))
(build-system gnu-build-system)
(arguments
'(#:make-flags
'("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
(inputs
`(("guile" ,guile-2.2)
("newt" ,newt)))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("pkg-config" ,pkg-config)))
(synopsis "Guile bindings to Newt")
(description
"This package provides bindings for Newt, a programming library for
color text mode, widget based user interfaces. The bindings are written in pure
Scheme by using Guiles foreign function interface.")
(home-page "https://gitlab.com/mothacehe/guile-newt")
(license license:gpl3+))))
;;; guile.scm ends here ;;; guile.scm ends here

View File

@ -317,8 +317,8 @@ generator library for C++.")
(string-append (assoc-ref inputs "tzdata") (string-append (assoc-ref inputs "tzdata")
"/share/zoneinfo"))) "/share/zoneinfo")))
;; Don't phone home to check for updates.¬ ;; Don't phone home to check for updates.
(substitute* "system/addon-manifest.xml"¬ (substitute* "system/addon-manifest.xml"
(("<addon optional=\\\"true\\\">service.xbmc.versioncheck</addon>") (("<addon optional=\\\"true\\\">service.xbmc.versioncheck</addon>")
"")) ""))

View File

@ -939,7 +939,7 @@ converting QuarkXPress file format. It supports versions 3.1 to 4.1.")
(define-public libreoffice (define-public libreoffice
(package (package
(name "libreoffice") (name "libreoffice")
(version "6.1.2.1") (version "6.1.3.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -949,7 +949,7 @@ converting QuarkXPress file format. It supports versions 3.1 to 4.1.")
(version-prefix version 3) "/libreoffice-" version ".tar.xz")) (version-prefix version 3) "/libreoffice-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"149ziasibplihfxlzafzcm4737ns30hg9175967b43c81yv5f335")) "0i4gf3qi16fg7dxq2l4vhkwh4f5lx7xd1ilpzcw26vccqkv3hvyl"))
(patches (search-patches "libreoffice-icu.patch" (patches (search-patches "libreoffice-icu.patch"
"libreoffice-glm.patch")))) "libreoffice-glm.patch"))))
(build-system glib-or-gtk-build-system) (build-system glib-or-gtk-build-system)

View File

@ -884,6 +884,25 @@ extremely large and complex data collections.")
(license (license:x11-style (license (license:x11-style
"http://www.hdfgroup.org/ftp/HDF5/current/src/unpacked/COPYING")))) "http://www.hdfgroup.org/ftp/HDF5/current/src/unpacked/COPYING"))))
(define-public hdf5-1.10
(package (inherit hdf5)
(version "1.10.4")
(source
(origin
(method url-fetch)
(uri (list (string-append "https://support.hdfgroup.org/ftp/HDF5/releases/"
"hdf5-" (version-major+minor version)
"/hdf5-" version "/src/hdf5-"
version ".tar.bz2")
(string-append "https://support.hdfgroup.org/ftp/HDF5/"
"current"
(apply string-append
(take (string-split version #\.) 2))
"/src/hdf5-" version ".tar.bz2")))
(sha256
(base32 "1pr85fa1sh2ky6ai2hs3f21lp252grl2cq3wbyi4rh7dm83gyrqj"))
(patches (list (search-patch "hdf5-config-date.patch")))))))
(define-public hdf-java (define-public hdf-java
(package (package
(name "hdf-java") (name "hdf-java")

View File

@ -284,7 +284,7 @@ score, keyboard, guitar, drum and controller views.")
("pulseaudio" ,pulseaudio) ("pulseaudio" ,pulseaudio)
("qtbase" ,qtbase) ("qtbase" ,qtbase)
("qtx11extras" ,qtx11extras) ("qtx11extras" ,qtx11extras)
("sqlite" ,sqlite) ("sqlite" ,sqlite-with-column-metadata)
("sparsehash" ,sparsehash) ("sparsehash" ,sparsehash)
("taglib" ,taglib))) ("taglib" ,taglib)))
(home-page "http://clementine-player.org") (home-page "http://clementine-player.org")

View File

@ -1,44 +0,0 @@
From da1ed24209121f7b0f03f360b1029d7125a38e70 Mon Sep 17 00:00:00 2001
From: Efraim Flashner <efraim@flashner.co.il>
Date: Tue, 4 Jul 2017 12:44:53 +0300
Subject: [PATCH] Add NO_INTEL_COMPAT flag to Makefile.
see also: https://github.com/xiangzhou/GEMMA/pull/47
---
Makefile | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/Makefile b/Makefile
index 5bb8748..712b1ad 100644
--- a/Makefile
+++ b/Makefile
@@ -11,6 +11,7 @@
SYS = LNX
# Leave blank after "=" to disable; put "= 1" to enable
WITH_LAPACK = 1
+NO_INTEL_COMPAT =
FORCE_32BIT =
FORCE_DYNAMIC =
DIST_NAME = gemma-0.96
@@ -64,10 +65,13 @@ endif
HDR += $(SRC_DIR)/lapack.h
endif
-ifdef FORCE_32BIT
- CPPFLAGS += -m32
-else
- CPPFLAGS += -m64
+ifdef NO_INTEL_COMPAT
+ else
+ ifdef FORCE_32BIT
+ CPPFLAGS += -m32
+ else
+ CPPFLAGS += -m64
+ endif
endif
ifdef FORCE_DYNAMIC
--
2.13.2

View File

@ -1,45 +0,0 @@
Fix CVE-2015-8863 (Off-by-one error in the tokenadd function in
jv_parse.c in jq allows remote attackers to cause a denial of service
(crash) via a long JSON-encoded number, which triggers a heap-based
buffer overflow):
<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-8863>
Copied from upstream code repository:
<https://github.com/stedolan/jq/commit/8eb1367ca44e772963e704a700ef72ae2e12babd>
From 8eb1367ca44e772963e704a700ef72ae2e12babd Mon Sep 17 00:00:00 2001
From: Nicolas Williams <nico@cryptonector.com>
Date: Sat, 24 Oct 2015 17:24:57 -0500
Subject: [PATCH] Heap buffer overflow in tokenadd() (fix #105)
This was an off-by one: the NUL terminator byte was not allocated on
resize. This was triggered by JSON-encoded numbers longer than 256
bytes.
---
jv_parse.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/jv_parse.c b/jv_parse.c
index 3102ed4..84245b8 100644
--- a/jv_parse.c
+++ b/jv_parse.c
@@ -383,7 +383,7 @@ static pfunc stream_token(struct jv_parser* p, char ch) {
static void tokenadd(struct jv_parser* p, char c) {
assert(p->tokenpos <= p->tokenlen);
- if (p->tokenpos == p->tokenlen) {
+ if (p->tokenpos >= (p->tokenlen - 1)) {
p->tokenlen = p->tokenlen*2 + 256;
p->tokenbuf = jv_mem_realloc(p->tokenbuf, p->tokenlen);
}
@@ -485,7 +485,7 @@ static pfunc check_literal(struct jv_parser* p) {
TRY(value(p, v));
} else {
// FIXME: better parser
- p->tokenbuf[p->tokenpos] = 0; // FIXME: invalid
+ p->tokenbuf[p->tokenpos] = 0;
char* end = 0;
double d = jvp_strtod(&p->dtoa, p->tokenbuf, &end);
if (end == 0 || *end != 0)

View File

@ -0,0 +1,62 @@
Fix a test failure on 32-bit platforms as reported
at <https://github.com/libgit2/libgit2/issues/4868>.
From 415a8ae9c9b6ac18f0524b6af8e58408b426457d Mon Sep 17 00:00:00 2001
From: Edward Thomson <ethomson@edwardthomson.com>
Date: Thu, 13 Sep 2018 13:27:07 +0100
Subject: [PATCH] tests: don't run buf::oom on 32-bit systems
On a 32-bit Linux systems, the value large enough to make malloc
guarantee a failure is also large enough that valgrind considers it
"fishy". Skip this test on those systems entirely.
---
tests/buf/oom.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/tests/buf/oom.c b/tests/buf/oom.c
index 2741a8ddf2..ec3bad9979 100644
--- a/tests/buf/oom.c
+++ b/tests/buf/oom.c
@@ -11,12 +11,8 @@
*/
#if defined(GIT_ARCH_64) && defined(__linux__)
# define TOOBIG 0x0fffffffffffffff
-#elif defined(__linux__)
-# define TOOBIG 0x0fffffff
#elif defined(GIT_ARCH_64)
# define TOOBIG 0xffffffffffffff00
-#else
-# define TOOBIG 0xffffff00
#endif
/**
@@ -25,13 +21,18 @@
* will fail. And because the git_buf_grow() wrapper always
* sets mark_oom, the code in git_buf_try_grow() will free
* the internal buffer and set it to git_buf__oom.
- *
+ *
* We initialized the internal buffer to (the static variable)
* git_buf__initbuf. The purpose of this test is to make sure
* that we don't try to free the static buffer.
+ *
+ * Skip this test entirely on 32-bit platforms; a buffer large enough
+ * to guarantee malloc failures is so large that valgrind considers
+ * it likely to be an error.
*/
void test_buf_oom__grow(void)
{
+#ifdef GIT_ARCH_64
git_buf buf = GIT_BUF_INIT;
git_buf_clear(&buf);
@@ -40,6 +41,9 @@ void test_buf_oom__grow(void)
cl_assert(git_buf_oom(&buf));
git_buf_free(&buf);
+#else
+ cl_skip();
+#endif
}
void test_buf_oom__grow_by(void)

View File

@ -50,13 +50,21 @@
'(begin '(begin
(substitute* "src/Makefile.in" (substitute* "src/Makefile.in"
(("/bin/ln") "ln")) (("/bin/ln") "ln"))
(substitute* "configure"
(("-ltermcap") ""))
#t)))) #t))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:parallel-tests? #f '(#:parallel-tests? #f
#:parallel-build? #f)) ; there's at least one race #:parallel-build? #f ; there's at least one race
#:phases
(modify-phases %standard-phases
(add-before 'configure 'substitute-before-config
(lambda* (#:key inputs #:allow-other-keys)
(let ((ncurses (assoc-ref inputs "ncurses")))
(substitute* "configure"
(("MISC_TERMINFO_DIRS=\"\"")
(string-append "MISC_TERMINFO_DIRS="
"\"" ncurses "/share/terminfo" "\"")))
#t))))))
(inputs (inputs
`(("readline" ,readline) `(("readline" ,readline)
("zlib" ,zlib) ("zlib" ,zlib)

View File

@ -339,14 +339,14 @@ D.V. Hinkley (1997, CUP), originally written by Angelo Canty for S.")
(define-public r-mass (define-public r-mass
(package (package
(name "r-mass") (name "r-mass")
(version "7.3-51") (version "7.3-51.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "MASS" version)) (uri (cran-uri "MASS" version))
(sha256 (sha256
(base32 (base32
"0yp5ssfm9mahrp30y1hkqgjg70mzs6w065ba8h7j5ky1z6msdsdy")))) "14907ia8418mp3p1rs1i2f1x5b6kk5z998dk353a29j3xqf3ybyq"))))
(properties `((upstream-name . "MASS"))) (properties `((upstream-name . "MASS")))
(build-system r-build-system) (build-system r-build-system)
(home-page "http://www.stats.ox.ac.uk/pub/MASS4/") (home-page "http://www.stats.ox.ac.uk/pub/MASS4/")
@ -467,13 +467,13 @@ estimation) corresponding to the book: Wand, M.P. and Jones, M.C. (1995)
(define-public r-lattice (define-public r-lattice
(package (package
(name "r-lattice") (name "r-lattice")
(version "0.20-35") (version "0.20-38")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "lattice" version)) (uri (cran-uri "lattice" version))
(sha256 (sha256
(base32 (base32
"0pcnmaz3lr62ly0dcy5hnnqxshc4yqd43hrvlz3almgc9l7sna88")))) "0b8abkz7syscq883mrgv63pkwaqkcpwfx8rgbqy9vgfva0z5xszx"))))
(build-system r-build-system) (build-system r-build-system)
(home-page "http://lattice.r-forge.r-project.org/") (home-page "http://lattice.r-forge.r-project.org/")
(synopsis "High-level data visualization system") (synopsis "High-level data visualization system")
@ -487,14 +487,14 @@ also flexible enough to handle most nonstandard requirements.")
(define-public r-matrix (define-public r-matrix
(package (package
(name "r-matrix") (name "r-matrix")
(version "1.2-14") (version "1.2-15")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "Matrix" version)) (uri (cran-uri "Matrix" version))
(sha256 (sha256
(base32 (base32
"15hknim84nj3f54vkchca5ac0c3ip15v1by18k5parmn8wsl19j9")))) "1mshhyia6imh939p8labxi0wv21lal7csmccxi42klpgdh1j89kv"))))
(properties `((upstream-name . "Matrix"))) (properties `((upstream-name . "Matrix")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -614,14 +614,14 @@ analysis.")
(define-public r-survival (define-public r-survival
(package (package
(name "r-survival") (name "r-survival")
(version "2.42-6") (version "2.43-1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "survival" version)) (uri (cran-uri "survival" version))
(sha256 (sha256
(base32 (base32
"1bsxc2fir9pbvdzy9n474fkl7har606h9zhspp0z67wnjpp48g73")))) "0220fjsq4ycx1n5zc5h39wdbj5j6xr8rzqbcixx2p25akzdn7kqk"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-matrix" ,r-matrix))) `(("r-matrix" ,r-matrix)))
@ -2233,13 +2233,13 @@ tables, autolinks and strikethrough text.")
(define-public r-roxygen2 (define-public r-roxygen2
(package (package
(name "r-roxygen2") (name "r-roxygen2")
(version "6.1.0") (version "6.1.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "roxygen2" version)) (uri (cran-uri "roxygen2" version))
(sha256 (sha256
(base32 (base32
"0ji9k4s1bvfbl8wimfqj1lqr33h1claaz30vb5pgksxyg77j5xaa")))) "0wq29ilqas8yn2z8v49fk0hbgchg29nmyyhwczgdipz0cbhbfipd"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-brew" ,r-brew) `(("r-brew" ,r-brew)
@ -3085,13 +3085,13 @@ using the multicore functionality of the parallel package.")
(define-public r-dt (define-public r-dt
(package (package
(name "r-dt") (name "r-dt")
(version "0.4") (version "0.5")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "DT" version)) (uri (cran-uri "DT" version))
(sha256 (sha256
(base32 (base32
"06gsqz7p2fv6hc3fm3759gaa50krcfrqrmy7qbxyam6a36w9daix")))) "1s5d3sld4l8zygpkvprvlbqa0pm2cv1bm7h7p999wxlap28vnnqf"))))
(properties (properties
`((upstream-name . "DT"))) `((upstream-name . "DT")))
(build-system r-build-system) (build-system r-build-system)
@ -3099,7 +3099,8 @@ using the multicore functionality of the parallel package.")
`(("r-crosstalk" ,r-crosstalk) `(("r-crosstalk" ,r-crosstalk)
("r-htmltools" ,r-htmltools) ("r-htmltools" ,r-htmltools)
("r-htmlwidgets" ,r-htmlwidgets) ("r-htmlwidgets" ,r-htmlwidgets)
("r-magrittr" ,r-magrittr))) ("r-magrittr" ,r-magrittr)
("r-promises" ,r-promises)))
(home-page "http://rstudio.github.io/DT") (home-page "http://rstudio.github.io/DT")
(synopsis "R wrapper of the DataTables JavaScript library") (synopsis "R wrapper of the DataTables JavaScript library")
(description (description
@ -3665,14 +3666,14 @@ selection.")
(define-public r-tidyr (define-public r-tidyr
(package (package
(name "r-tidyr") (name "r-tidyr")
(version "0.8.1") (version "0.8.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "tidyr" version)) (uri (cran-uri "tidyr" version))
(sha256 (sha256
(base32 (base32
"0485f19mkkglc4bv57y6bm6l9rfgd878hsz2xdg1nwgbqchjhgix")))) "03s9dv6c2dj65a769h8fgy9878y46rdq7x65i53kd44kag80i9cr"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-dplyr" ,r-dplyr) `(("r-dplyr" ,r-dplyr)
@ -4031,14 +4032,14 @@ hierarchical clustering dendrograms.")
(define-public r-preprocesscore (define-public r-preprocesscore
(package (package
(name "r-preprocesscore") (name "r-preprocesscore")
(version "1.42.0") (version "1.44.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (bioconductor-uri "preprocessCore" version)) (uri (bioconductor-uri "preprocessCore" version))
(sha256 (sha256
(base32 (base32
"1afar1z7959v7mbzsqa77vqfh0yc7y3nv5ayx71485a8scwsfwbk")))) "0ijyjqi8mxxf350dhvgp36swwww5ag7ac9a6r6ymihc5syjr4w4j"))))
(properties (properties
`((upstream-name . "preprocessCore"))) `((upstream-name . "preprocessCore")))
(build-system r-build-system) (build-system r-build-system)
@ -5016,14 +5017,14 @@ decompositions of such matrices, and solutions of linear systems.")
(define-public r-modelmetrics (define-public r-modelmetrics
(package (package
(name "r-modelmetrics") (name "r-modelmetrics")
(version "1.2.0") (version "1.2.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "ModelMetrics" version)) (uri (cran-uri "ModelMetrics" version))
(sha256 (sha256
(base32 (base32
"1sgdyrf6fbsn18gk8slir4a1yhv133kfhyg2crfs759nff4aw89h")))) "158ddbw2snlyzd2q6mdaif5i67kq4qfvadylwjxgv1w2cmszrmk6"))))
(properties `((upstream-name . "ModelMetrics"))) (properties `((upstream-name . "ModelMetrics")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs

View File

@ -30,7 +30,7 @@
(define-public syncthing (define-public syncthing
(package (package
(name "syncthing") (name "syncthing")
(version "0.14.51") (version "0.14.52")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/syncthing/syncthing" (uri (string-append "https://github.com/syncthing/syncthing"
@ -38,7 +38,7 @@
"/syncthing-source-v" version ".tar.gz")) "/syncthing-source-v" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"17phn8l2afhgzh0q9ambi28awj2m905sr1bicq2wc7ghypk5vgqh")) "1hhn72l74vb9l32i1a54ry2l85ji78cq6isd20lxxdk0bjqc4m29"))
(modules '((guix build utils))) (modules '((guix build utils)))
;; Delete bundled ("vendored") free software source code. ;; Delete bundled ("vendored") free software source code.
(snippet '(begin (snippet '(begin

View File

@ -187,96 +187,112 @@ text-based approach to terminal recording.")
(license license:gpl3))) (license license:gpl3)))
(define-public libtsm (define-public libtsm
(package (let ((commit "f70e37982f382b03c6939dac3d5f814450bda253")
(name "libtsm") (revision "1"))
(version "3") (package
(source (origin (name "libtsm")
(method url-fetch) (version (git-version "0.0.0" revision commit))
(uri (string-append (source (origin
"https://freedesktop.org/software/kmscon/releases/" (method git-fetch)
"libtsm-" version ".tar.xz")) ;; The freedesktop repository is no longer maintained.
(sha256 (uri (git-reference
(base32 (url (string-append "https://github.com/Aetf/" name))
"01ygwrsxfii0pngfikgqsb4fxp8n1bbs47l7hck81h9b9bc1ah8i")))) (commit commit)))
(build-system gnu-build-system) (sha256
(native-inputs (base32
`(("pkg-config" ,pkg-config))) "0mwn91i5h5d518i1s05y7hzv6bc13vzcvxszpfh77473iwg4wprx"))))
(inputs (build-system cmake-build-system)
`(("libxkbcommon" ,libxkbcommon))) (arguments
(synopsis "Xterm state machine library") `(#:configure-flags '("-DBUILD_TESTING=ON")))
(description "TSM is a state machine for DEC VT100-VT520 compatible (native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("libxkbcommon" ,libxkbcommon)
("check" ,check)))
(synopsis "Xterm state machine library")
(description "TSM is a state machine for DEC VT100-VT520 compatible
terminal emulators. It tries to support all common standards while keeping terminal emulators. It tries to support all common standards while keeping
compatibility to existing emulators like xterm, gnome-terminal, konsole, etc.") compatibility to existing emulators like xterm, gnome-terminal, konsole, etc.")
(home-page "https://www.freedesktop.org/wiki/Software/libtsm") (home-page "https://www.freedesktop.org/wiki/Software/libtsm")
;; Hash table implementation is lgpl2.1+ licensed. ;; Hash table implementation is lgpl2.1+ licensed.
;; The wcwidth implementation in external/wcwidth.{h,c} uses a license ;; The wcwidth implementation in external/wcwidth.{h,c} uses a license
;; derived from ISC. ;; derived from ISC.
;; UCS-4 to UTF-8 encoding is copied from "terminology" which is released ;; UCS-4 to UTF-8 encoding is copied from "terminology" which is released
;; under the bsd 2 license. ;; under the bsd 2 license.
(license (list license:expat license:lgpl2.1+ license:isc license:bsd-2)))) (license (list license:expat license:lgpl2.1+ license:isc license:bsd-2)))))
(define-public kmscon (define-public kmscon
(package (let ((commit "01dd0a231e2125a40ceba5f59fd945ff29bf2cdc")
(name "kmscon") (revision "1"))
(version "8") (package
(source (origin (name "kmscon")
(method url-fetch) (version (git-version "0.0.0" revision commit))
(uri (string-append (source (origin
"https://freedesktop.org/software/kmscon/releases/" (method git-fetch)
"kmscon-" version ".tar.xz")) ;; The freedesktop repository is no longer maintained.
(sha256 (uri (git-reference
(base32 (url (string-append "https://github.com/Aetf/" name))
"0axfwrp3c8f4gb67ap2sqnkn75idpiw09s35wwn6kgagvhf1rc0a")) (commit commit)))
(modules '((guix build utils))) (sha256
(snippet (base32
;; Use elogind instead of systemd. "0q62kjsvy2iwy8adfiygx2bfwlh83rphgxbis95ycspqidg9py87"))
'(begin (modules '((guix build utils)))))
(substitute* "configure" (build-system gnu-build-system)
(("libsystemd-daemon libsystemd-login") (arguments
"libelogind")) `(#:phases (modify-phases %standard-phases
(substitute* "src/uterm_systemd.c" (add-after 'unpack 'autogen.sh
(("#include <systemd/sd-login.h>") (lambda _
"#include <elogind/sd-login.h>") (zero? (system* "sh" "autogen.sh"))))
;; We don't have this header. ;; Use elogind instead of systemd.
(("#include <systemd/sd-daemon\\.h>") (add-before 'configure 'remove-systemd
"") (lambda _
;; Replace the call to 'sd_booted' by the truth value. (substitute* "configure"
(("sd_booted\\(\\)") (("libsystemd-daemon libsystemd-login")
"1")) "libelogind"))
#t)))) (substitute* "src/uterm_systemd.c"
(build-system gnu-build-system) (("#include <systemd/sd-login.h>")
(native-inputs "#include <elogind/sd-login.h>")
`(("pkg-config" ,pkg-config) ;; We don't have this header.
("libxslt" ,libxslt) ;to build the man page (("#include <systemd/sd-daemon\\.h>")
("libxml2" ,libxml2) ;for XML_CATALOG_FILES "")
("docbook-xsl" ,docbook-xsl))) ;; Replace the call to 'sd_booted' by the truth value.
(inputs (("sd_booted\\(\\)")
`(("libdrm" ,libdrm) "1")))))))
("libtsm" ,libtsm) (native-inputs
("libxkbcommon" ,libxkbcommon) `(("pkg-config" ,pkg-config)
("logind" ,elogind) ("autoconf" ,autoconf)
("mesa" ,mesa) ("automake" ,automake)
("pango" ,pango) ("libtool" ,libtool)
("udev" ,eudev))) ("libxslt" ,libxslt) ;to build the man page
(synopsis "Linux KMS-based terminal emulator") ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
(description "Kmscon is a terminal emulator based on Linux's @dfn{kernel ("docbook-xsl" ,docbook-xsl)))
(inputs
`(("libdrm" ,libdrm)
("libtsm" ,libtsm)
("libxkbcommon" ,libxkbcommon)
("logind" ,elogind)
("mesa" ,mesa)
("pango" ,pango)
("udev" ,eudev)))
(synopsis "Linux KMS-based terminal emulator")
(description "Kmscon is a terminal emulator based on Linux's @dfn{kernel
mode setting} (KMS). It can replace the in-kernel virtual terminal (VT) mode setting} (KMS). It can replace the in-kernel virtual terminal (VT)
implementation with a user-space console. Compared to the Linux console, implementation with a user-space console. Compared to the Linux console,
kmscon provides enhanced features including XKB-compatible internationalized kmscon provides enhanced features including XKB-compatible internationalized
keyboard support, UTF-8 input/font support, hardware-accelerated rendering, keyboard support, UTF-8 input/font support, hardware-accelerated rendering,
multi-seat support, a replacement for @command{mingetty}, and more.") multi-seat support, a replacement for @command{mingetty}, and more.")
(home-page "https://www.freedesktop.org/wiki/Software/kmscon") (home-page "https://www.freedesktop.org/wiki/Software/kmscon")
;; Hash table implementation is lgpl2.1+ licensed. ;; Hash table implementation is lgpl2.1+ licensed.
;; The wcwidth implementation in external/wcwidth.{h,c} uses a license ;; The wcwidth implementation in external/wcwidth.{h,c} uses a license
;; derived from ISC. ;; derived from ISC.
;; UCS-4 to UTF-8 encoding is copied from "terminology" which is released ;; UCS-4 to UTF-8 encoding is copied from "terminology" which is released
;; under the bsd 2 license. ;; under the bsd 2 license.
;; Unifont-Font is from http://unifoundry.com/unifont.html and licensed ;; Unifont-Font is from http://unifoundry.com/unifont.html and licensed
;; under the terms of the GNU GPL. ;; under the terms of the GNU GPL.
(license (list license:expat license:lgpl2.1+ license:bsd-2 (license (list license:expat license:lgpl2.1+ license:bsd-2
license:gpl2+)) license:gpl2+))
(supported-systems (filter (cut string-suffix? "-linux" <>) (supported-systems (filter (cut string-suffix? "-linux" <>)
%supported-systems)))) %supported-systems)))))
(define-public libtermkey (define-public libtermkey
(package (package

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Christopher Baines <mail@cbaines.net> ;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -21,13 +22,12 @@
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix git-download) #:use-module (guix git-download)
#:use-module (guix build-system go) #:use-module (guix build-system go))
#:use-module (gnu packages golang))
(define-public terraform-docs (define-public terraform-docs
(package (package
(name "terraform-docs") (name "terraform-docs")
(version "0.3.0") (version "0.5.0")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -36,11 +36,8 @@
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0xchpik32ab8m89s6jv671vswg8xhprfvh6s5md0zd36482d2nmm")))) "12w2yr669hk5kxdb9rrzsn8hwvx8rzrc1rmn8hs9l8z1bkfhr4gg"))))
(build-system go-build-system) (build-system go-build-system)
(native-inputs
`(("go-github-com-hashicorp-hcl" ,go-github-com-hashicorp-hcl)
("go-github-com-tj-docopt" ,go-github-com-tj-docopt)))
(arguments (arguments
'(#:import-path "github.com/segmentio/terraform-docs")) '(#:import-path "github.com/segmentio/terraform-docs"))
(synopsis "Generate documentation from Terraform modules") (synopsis "Generate documentation from Terraform modules")

View File

@ -469,7 +469,8 @@ everything from small to very large projects with speed and efficiency.")
(sha256 (sha256
(base32 (base32
"15kp4sq72kh762bm7dgspyrk0a6siarvll3k7nrhs0xy77idf80g")) "15kp4sq72kh762bm7dgspyrk0a6siarvll3k7nrhs0xy77idf80g"))
(patches (search-patches "libgit2-mtime-0.patch")) (patches (search-patches "libgit2-mtime-0.patch"
"libgit2-oom-test.patch"))
;; Remove bundled software. ;; Remove bundled software.
(snippet '(begin (snippet '(begin

View File

@ -614,14 +614,14 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
(define-public ffmpeg (define-public ffmpeg
(package (package
(name "ffmpeg") (name "ffmpeg")
(version "4.0.3") (version "4.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://ffmpeg.org/releases/ffmpeg-" (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1vg229mxcrm415cq6q1nfm891hm4x56mb5p4cqjnlqnky7ikfg15")))) "150rrm549fy1x71c9whmyi5knyd9sliwvmcsm438bdgg4v8c93m3"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("fontconfig" ,fontconfig) `(("fontconfig" ,fontconfig)
@ -1269,7 +1269,7 @@ access to mpv's powerful playback capabilities.")
(define-public youtube-dl (define-public youtube-dl
(package (package
(name "youtube-dl") (name "youtube-dl")
(version "2018.10.05") (version "2018.11.03")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://yt-dl.org/downloads/" (uri (string-append "https://yt-dl.org/downloads/"
@ -1277,7 +1277,7 @@ access to mpv's powerful playback capabilities.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1iq02kwxdgh07bf0w0fvbsjbdshs4kja35gy8m70ji9cj10l1mbw")))) "11phhwhr1g050h4625d5jsgcsjnnv7jc6xcrbn7zdzd32f6gy2lj"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
;; The problem here is that the directory for the man page and completion ;; The problem here is that the directory for the man page and completion

View File

@ -195,14 +195,14 @@ Interface} specification.")
(name "nginx") (name "nginx")
;; Consider updating the nginx-documentation package if the nginx package is ;; Consider updating the nginx-documentation package if the nginx package is
;; updated. ;; updated.
(version "1.14.0") (version "1.14.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://nginx.org/download/nginx-" (uri (string-append "https://nginx.org/download/nginx-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1d9c0avfpbwvzyg53b59ks8shpnrxnbnshcd7ziizflsyv5vw5ax")))) "19542jxcjf4dvrqvgb5vr36mhbzcjrxc3v0xh451rm60610rf2dz"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("openssl" ,openssl) (inputs `(("openssl" ,openssl)
("pcre" ,pcre) ("pcre" ,pcre)
@ -4166,19 +4166,15 @@ It uses the uwsgi protocol for all the networking/interprocess communications.")
(define-public jq (define-public jq
(package (package
(name "jq") (name "jq")
(version "1.5") (version "1.6")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/stedolan/" name (uri (string-append "https://github.com/stedolan/jq"
"/releases/download/" name "-" version "/releases/download/jq-" version
"/" name "-" version ".tar.gz")) "/jq-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0g29kyz4ykasdcrb0zmbrp2jqs9kv1wz9swx849i2d1ncknbzln4")) "1a76f46a652i2g333kfvrl6mp2w7whf6h1yly519izg4y967h9cn"))))
;; This patch has been pushed and the vulnerability will be
;; fixed in the next release after 1.5.
;; https://github.com/stedolan/jq/issues/995
(patches (search-patches "jq-CVE-2015-8863.patch"))))
(inputs (inputs
`(("oniguruma" ,oniguruma))) `(("oniguruma" ,oniguruma)))
(native-inputs (native-inputs

View File

@ -5453,6 +5453,58 @@ The XCB util module provides the following libraries:
"file://COPYING" "file://COPYING"
"See COPYING in the distribution.")))) "See COPYING in the distribution."))))
(define-public xcb-util-errors
(let ((commit "5d660ebe872cadcdc85de9d6f9afe05de629c030")
(revision "1"))
(package
(name "xcb-util-errors")
(version (git-version "1.0" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://anongit.freedesktop.org/git/xcb/util-errors.git")
(commit commit)
(recursive? #t)))
(file-name (git-file-name name version))
(sha256
(base32
"12bah0iz5k6b9hwlc5zffyfg2gnrajll3gn5s8zmazgynvw72ahg"))))
(build-system gnu-build-system)
(outputs '("out"))
(inputs
`(("util-macros" ,util-macros)
("xcb-proto" ,xcb-proto)))
(propagated-inputs
`(("libxcb" ,libxcb)))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
("python-2" ,python-2)
("pkg-config" ,pkg-config)))
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'bootstrap
(lambda _
;; The default 'bootstrap' phase would run 'autogen.sh', which
;; would try to run ./configure and fail due to unpatched
;; shebangs.
(invoke "autoreconf" "-v" "--install"))))))
(home-page "https://cgit.freedesktop.org/xcb/util-errors/")
(synopsis "XCB helper library for printing information about X11 errors")
(description
"The XCB util module provides a number of libraries which sit on
top of libxcb, the core X protocol library, and some of the extension
libraries. These experimental libraries provide convenience functions
and interfaces which make the raw X protocol more usable. Some of the
libraries also provide client-side code which is not strictly part of
the X protocol but which has traditionally been provided by Xlib.
The XCB util-errors module provides a utility library that gives human
readable names to error codes, event codes, and also to major and minor
numbers.")
(license license:x11))))
(define-public xcb-util-image (define-public xcb-util-image
(package (package

View File

@ -6,6 +6,7 @@
;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -2040,6 +2041,8 @@ This service is not part of @var{%base-services}."
(default (file-append shadow "/bin/login"))) (default (file-append shadow "/bin/login")))
(login-arguments kmscon-configuration-login-arguments (login-arguments kmscon-configuration-login-arguments
(default '("-p"))) (default '("-p")))
(auto-login kmscon-configuration-auto-login
(default #f))
(hardware-acceleration? kmscon-configuration-hardware-acceleration? (hardware-acceleration? kmscon-configuration-hardware-acceleration?
(default #f))) ; #t causes failure (default #f))) ; #t causes failure
@ -2051,14 +2054,20 @@ This service is not part of @var{%base-services}."
(virtual-terminal (kmscon-configuration-virtual-terminal config)) (virtual-terminal (kmscon-configuration-virtual-terminal config))
(login-program (kmscon-configuration-login-program config)) (login-program (kmscon-configuration-login-program config))
(login-arguments (kmscon-configuration-login-arguments config)) (login-arguments (kmscon-configuration-login-arguments config))
(auto-login (kmscon-configuration-auto-login config))
(hardware-acceleration? (kmscon-configuration-hardware-acceleration? config))) (hardware-acceleration? (kmscon-configuration-hardware-acceleration? config)))
(define kmscon-command (define kmscon-command
#~(list #~(list
#$(file-append kmscon "/bin/kmscon") "--login" #$(file-append kmscon "/bin/kmscon") "--login"
"--vt" #$virtual-terminal "--vt" #$virtual-terminal
"--no-switchvt" ;Prevent a switch to the virtual terminal.
#$@(if hardware-acceleration? '("--hwaccel") '()) #$@(if hardware-acceleration? '("--hwaccel") '())
"--" #$login-program #$@login-arguments)) "--login" "--"
#$login-program #$@login-arguments
#$@(if auto-login
#~(#$auto-login)
#~())))
(shepherd-service (shepherd-service
(documentation "kmscon virtual terminal") (documentation "kmscon virtual terminal")

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
@ -54,6 +54,8 @@
(default "/var/log/cuirass.log")) (default "/var/log/cuirass.log"))
(cache-directory cuirass-configuration-cache-directory ;string (dir-name) (cache-directory cuirass-configuration-cache-directory ;string (dir-name)
(default "/var/cache/cuirass")) (default "/var/cache/cuirass"))
(ttl cuirass-configuration-ttl ;integer
(default (* 30 24 3600)))
(user cuirass-configuration-user ;string (user cuirass-configuration-user ;string
(default "cuirass")) (default "cuirass"))
(group cuirass-configuration-group ;string (group cuirass-configuration-group ;string
@ -86,6 +88,7 @@
(group (cuirass-configuration-group config)) (group (cuirass-configuration-group config))
(interval (cuirass-configuration-interval config)) (interval (cuirass-configuration-interval config))
(database (cuirass-configuration-database config)) (database (cuirass-configuration-database config))
(ttl (cuirass-configuration-ttl config))
(port (cuirass-configuration-port config)) (port (cuirass-configuration-port config))
(host (cuirass-configuration-host config)) (host (cuirass-configuration-host config))
(specs (cuirass-configuration-specifications config)) (specs (cuirass-configuration-specifications config))
@ -102,6 +105,7 @@
"--specifications" "--specifications"
#$(scheme-file "cuirass-specs.scm" specs) #$(scheme-file "cuirass-specs.scm" specs)
"--database" #$database "--database" #$database
"--ttl" #$(string-append (number->string ttl) "s")
"--port" #$(number->string port) "--port" #$(number->string port)
"--listen" #$host "--listen" #$host
"--interval" #$(number->string interval) "--interval" #$(number->string interval)

View File

@ -763,9 +763,9 @@ manually.")
(use-modules (guix build utils) (use-modules (guix build utils)
(ice-9 rdelim)) (ice-9 rdelim))
(let ((ddclient-user (let ((ddclient-user
#$(passwd:uid (getpw (ddclient-configuration-user config)))) (passwd:uid (getpw #$(ddclient-configuration-user config))))
(ddclient-group (ddclient-group
#$(passwd:gid (getpw (ddclient-configuration-group config)))) (passwd:gid (getpw #$(ddclient-configuration-group config))))
(ddclient-secret-file (ddclient-secret-file
#$(ddclient-configuration-secret-file config))) #$(ddclient-configuration-secret-file config)))
;; 'ddclient' complains about ddclient.conf file permissions, which ;; 'ddclient' complains about ddclient.conf file permissions, which

View File

@ -53,7 +53,7 @@ release corresponding to NAME and VERSION."
(list (string-append "https://bioconductor.org/packages/release/bioc/src/contrib/" (list (string-append "https://bioconductor.org/packages/release/bioc/src/contrib/"
name "_" version ".tar.gz") name "_" version ".tar.gz")
;; TODO: use %bioconductor-version from (guix import cran) ;; TODO: use %bioconductor-version from (guix import cran)
(string-append "https://bioconductor.org/packages/3.7/bioc/src/contrib/Archive/" (string-append "https://bioconductor.org/packages/3.8/bioc/src/contrib/Archive/"
name "_" version ".tar.gz"))) name "_" version ".tar.gz")))
(define %r-build-system-modules (define %r-build-system-modules

View File

@ -168,6 +168,28 @@ REFERENCE-GRAPHS, a list of reference-graph files."
(reduce + 0 (map file-size items))) (reduce + 0 (map file-size items)))
(define (reset-permissions file)
"Reset the permissions on FILE and its sub-directories so that they are all
read-only."
;; XXX: This procedure exists just to work around the inability of
;; 'copy-recursively' to preserve permissions.
(file-system-fold (const #t) ;enter?
(lambda (file stat _) ;leaf
(unless (eq? 'symlink (stat:type stat))
(chmod file
(if (zero? (logand (stat:mode stat)
#o100))
#o444
#o555))))
(const #t) ;down
(lambda (directory stat _) ;up
(chmod directory #o555))
(const #f) ;skip
(const #f) ;error
#t
file
lstat))
(define* (populate-store reference-graphs target (define* (populate-store reference-graphs target
#:key (log-port (current-error-port))) #:key (log-port (current-error-port)))
"Populate the store under directory TARGET with the items specified in "Populate the store under directory TARGET with the items specified in
@ -197,7 +219,13 @@ REFERENCE-GRAPHS, a list of reference-graph files."
(for-each (lambda (thing) (for-each (lambda (thing)
(copy-recursively thing (copy-recursively thing
(string-append target thing) (string-append target thing)
#:keep-mtime? #t
#:log (%make-void-port "w")) #:log (%make-void-port "w"))
;; XXX: Since 'copy-recursively' doesn't allow us to
;; preserve permissions, we have to traverse TARGET to
;; make sure everything is read-only.
(reset-permissions (string-append target thing))
(report)) (report))
things))))) things)))))

View File

@ -26,6 +26,7 @@
delete-file-recursively delete-file-recursively
with-directory-excursion with-directory-excursion
invoke)) invoke))
#:use-module (gnu build install)
#:use-module (json) ;guile-json #:use-module (json) ;guile-json
#:use-module (srfi srfi-19) #:use-module (srfi srfi-19)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
@ -108,11 +109,15 @@ return \"a\"."
(symlinks '()) (symlinks '())
(transformations '()) (transformations '())
(system (utsname:machine (uname))) (system (utsname:machine (uname)))
database
compressor compressor
(creation-time (current-time time-utc))) (creation-time (current-time time-utc)))
"Write to IMAGE a Docker image archive containing the given PATHS. PREFIX "Write to IMAGE a Docker image archive containing the given PATHS. PREFIX
must be a store path that is a prefix of any store paths in PATHS. must be a store path that is a prefix of any store paths in PATHS.
When DATABASE is true, copy it to /var/guix/db in the image and create
/var/guix/gcroots and friends.
SYMLINKS must be a list of (SOURCE -> TARGET) tuples describing symlinks to be SYMLINKS must be a list of (SOURCE -> TARGET) tuples describing symlinks to be
created in the image, where each TARGET is relative to PREFIX. created in the image, where each TARGET is relative to PREFIX.
TRANSFORMATIONS must be a list of (OLD -> NEW) tuples describing how to TRANSFORMATIONS must be a list of (OLD -> NEW) tuples describing how to
@ -188,10 +193,15 @@ SRFI-19 time-utc object, as the creation time in metadata."
source)))) source))))
symlinks) symlinks)
(when database
;; Initialize /var/guix, assuming PREFIX points to a profile.
(install-database-and-gc-roots "." database prefix))
(apply invoke "tar" "-cf" "layer.tar" (apply invoke "tar" "-cf" "layer.tar"
`(,@transformation-options `(,@transformation-options
,@%tar-determinism-options ,@%tar-determinism-options
,@paths ,@paths
,@(if database '("var") '())
,@(map symlink-source symlinks))) ,@(map symlink-source symlinks)))
;; It is possible for "/" to show up in the archive, especially when ;; It is possible for "/" to show up in the archive, especially when
;; applying transformations. For example, the transformation ;; applying transformations. For example, the transformation
@ -203,7 +213,11 @@ SRFI-19 time-utc object, as the creation time in metadata."
(system* "tar" "--delete" "/" "-f" "layer.tar") (system* "tar" "--delete" "/" "-f" "layer.tar")
(for-each delete-file-recursively (for-each delete-file-recursively
(map (compose topmost-component symlink-source) (map (compose topmost-component symlink-source)
symlinks))) symlinks))
;; Delete /var/guix.
(when database
(delete-file-recursively "var")))
(with-output-to-file "config.json" (with-output-to-file "config.json"
(lambda () (lambda ()

View File

@ -127,9 +127,9 @@ package definition."
(define %cran-url "http://cran.r-project.org/web/packages/") (define %cran-url "http://cran.r-project.org/web/packages/")
(define %bioconductor-url "https://bioconductor.org/packages/") (define %bioconductor-url "https://bioconductor.org/packages/")
;; The latest Bioconductor release is 3.7. Bioconductor packages should be ;; The latest Bioconductor release is 3.8. Bioconductor packages should be
;; updated together. ;; updated together.
(define %bioconductor-version "3.7") (define %bioconductor-version "3.8")
(define %bioconductor-packages-list-url (define %bioconductor-packages-list-url
(string-append "https://bioconductor.org/packages/" (string-append "https://bioconductor.org/packages/"

View File

@ -52,6 +52,9 @@
#:export (compressor? #:export (compressor?
lookup-compressor lookup-compressor
self-contained-tarball self-contained-tarball
docker-image
squashfs-image
guix-pack)) guix-pack))
;; Type of a compression tool. ;; Type of a compression tool.
@ -103,6 +106,47 @@ found."
(package-transitive-propagated-inputs package))) (package-transitive-propagated-inputs package)))
(list guile-gcrypt guile-sqlite3))) (list guile-gcrypt guile-sqlite3)))
(define (store-database items)
"Return a directory containing a store database where all of ITEMS and their
dependencies are registered."
(define schema
(local-file (search-path %load-path
"guix/store/schema.sql")))
(define labels
(map (lambda (n)
(string-append "closure" (number->string n)))
(iota (length items))))
(define build
(with-extensions gcrypt-sqlite3&co
;; XXX: Adding (gnu build install) just to work around
;; <https://bugs.gnu.org/15602>: that way, (guix build store-copy) is
;; copied last and the 'store-info-XXX' macros are correctly expanded.
(with-imported-modules (source-module-closure
'((guix build store-copy)
(guix store database)
(gnu build install)))
#~(begin
(use-modules (guix store database)
(guix build store-copy)
(srfi srfi-1))
(define (read-closure closure)
(call-with-input-file closure read-reference-graph))
(let ((items (append-map read-closure '#$labels)))
(register-items items
#:state-directory #$output
#:deduplicate? #f
#:reset-timestamps? #f
#:registration-time %epoch
#:schema #$schema))))))
(computed-file "store-database" build
#:options `(#:references-graphs ,(zip labels items))))
(define* (self-contained-tarball name profile (define* (self-contained-tarball name profile
#:key target #:key target
deduplicate? deduplicate?
@ -117,121 +161,116 @@ with a properly initialized store database.
SYMLINKS must be a list of (SOURCE -> TARGET) tuples denoting symlinks to be SYMLINKS must be a list of (SOURCE -> TARGET) tuples denoting symlinks to be
added to the pack." added to the pack."
(define schema (define database
(and localstatedir? (and localstatedir?
(local-file (search-path %load-path (file-append (store-database (list profile))
"guix/store/schema.sql")))) "/db/db.sqlite")))
(define build (define build
(with-imported-modules `(((guix config) => ,(make-config.scm)) (with-imported-modules (source-module-closure
,@(source-module-closure `((guix build utils)
`((guix build utils) (guix build union)
(guix build union) (gnu build install))
(guix build store-copy) #:select? not-config?)
(gnu build install)) #~(begin
#:select? not-config?)) (use-modules (guix build utils)
(with-extensions gcrypt-sqlite3&co ((guix build union) #:select (relative-file-name))
#~(begin (gnu build install)
(use-modules (guix build utils) (srfi srfi-1)
((guix build union) #:select (relative-file-name)) (srfi srfi-26)
(gnu build install) (ice-9 match))
(srfi srfi-1)
(srfi srfi-26)
(ice-9 match))
(define %root "root") (define %root "root")
(define symlink->directives (define symlink->directives
;; Return "populate directives" to make the given symlink and its ;; Return "populate directives" to make the given symlink and its
;; parent directories. ;; parent directories.
(match-lambda (match-lambda
((source '-> target) ((source '-> target)
(let ((target (string-append #$profile "/" target)) (let ((target (string-append #$profile "/" target))
(parent (dirname source))) (parent (dirname source)))
;; Never add a 'directory' directive for "/" so as to ;; Never add a 'directory' directive for "/" so as to
;; preserve its ownnership when extracting the archive (see ;; preserve its ownnership when extracting the archive (see
;; below), and also because this would lead to adding the ;; below), and also because this would lead to adding the
;; same entries twice in the tarball. ;; same entries twice in the tarball.
`(,@(if (string=? parent "/") `(,@(if (string=? parent "/")
'() '()
`((directory ,parent))) `((directory ,parent)))
(,source (,source
-> ,(relative-file-name parent target))))))) -> ,(relative-file-name parent target)))))))
(define directives (define directives
;; Fully-qualified symlinks. ;; Fully-qualified symlinks.
(append-map symlink->directives '#$symlinks)) (append-map symlink->directives '#$symlinks))
;; The --sort option was added to GNU tar in version 1.28, released ;; The --sort option was added to GNU tar in version 1.28, released
;; 2014-07-28. For testing, we use the bootstrap tar, which is ;; 2014-07-28. For testing, we use the bootstrap tar, which is
;; older and doesn't support it. ;; older and doesn't support it.
(define tar-supports-sort? (define tar-supports-sort?
(zero? (system* (string-append #+archiver "/bin/tar") (zero? (system* (string-append #+archiver "/bin/tar")
"cf" "/dev/null" "--files-from=/dev/null" "cf" "/dev/null" "--files-from=/dev/null"
"--sort=name"))) "--sort=name")))
;; Add 'tar' to the search path. ;; Add 'tar' to the search path.
(setenv "PATH" #+(file-append archiver "/bin")) (setenv "PATH" #+(file-append archiver "/bin"))
;; Note: there is not much to gain here with deduplication and there ;; Note: there is not much to gain here with deduplication and there
;; is the overhead of the '.links' directory, so turn it off. ;; is the overhead of the '.links' directory, so turn it off.
;; Furthermore GNU tar < 1.30 sometimes fails to extract tarballs ;; Furthermore GNU tar < 1.30 sometimes fails to extract tarballs
;; with hard links: ;; with hard links:
;; <http://lists.gnu.org/archive/html/bug-tar/2017-11/msg00009.html>. ;; <http://lists.gnu.org/archive/html/bug-tar/2017-11/msg00009.html>.
(populate-single-profile-directory %root (populate-single-profile-directory %root
#:profile #$profile #:profile #$profile
#:closure "profile" #:closure "profile"
#:deduplicate? #f #:database #+database)
#:register? #$localstatedir?
#:schema #$schema)
;; Create SYMLINKS. ;; Create SYMLINKS.
(for-each (cut evaluate-populate-directive <> %root) (for-each (cut evaluate-populate-directive <> %root)
directives) directives)
;; Create the tarball. Use GNU format so there's no file name ;; Create the tarball. Use GNU format so there's no file name
;; length limitation. ;; length limitation.
(with-directory-excursion %root (with-directory-excursion %root
(exit (exit
(zero? (apply system* "tar" (zero? (apply system* "tar"
#+@(if (compressor-command compressor) #+@(if (compressor-command compressor)
#~("-I" #~("-I"
(string-join (string-join
'#+(compressor-command compressor))) '#+(compressor-command compressor)))
#~()) #~())
"--format=gnu" "--format=gnu"
;; Avoid non-determinism in the archive. Use ;; Avoid non-determinism in the archive. Use
;; mtime = 1, not zero, because that is what the ;; mtime = 1, not zero, because that is what the
;; daemon does for files in the store (see the ;; daemon does for files in the store (see the
;; 'mtimeStore' constant in local-store.cc.) ;; 'mtimeStore' constant in local-store.cc.)
(if tar-supports-sort? "--sort=name" "--mtime=@1") (if tar-supports-sort? "--sort=name" "--mtime=@1")
"--mtime=@1" ;for files in /var/guix "--mtime=@1" ;for files in /var/guix
"--owner=root:0" "--owner=root:0"
"--group=root:0" "--group=root:0"
"--check-links" "--check-links"
"-cvf" #$output "-cvf" #$output
;; Avoid adding / and /var to the tarball, so ;; Avoid adding / and /var to the tarball, so
;; that the ownership and permissions of those ;; that the ownership and permissions of those
;; directories will not be overwritten when ;; directories will not be overwritten when
;; extracting the archive. Do not include /root ;; extracting the archive. Do not include /root
;; because the root account might have a ;; because the root account might have a
;; different home directory. ;; different home directory.
#$@(if localstatedir? #$@(if localstatedir?
'("./var/guix") '("./var/guix")
'()) '())
(string-append "." (%store-directory)) (string-append "." (%store-directory))
(delete-duplicates (delete-duplicates
(filter-map (match-lambda (filter-map (match-lambda
(('directory directory) (('directory directory)
(string-append "." directory)) (string-append "." directory))
((source '-> _) ((source '-> _)
(string-append "." source)) (string-append "." source))
(_ #f)) (_ #f))
directives)))))))))) directives)))))))))
(gexp->derivation (string-append name ".tar" (gexp->derivation (string-append name ".tar"
(compressor-extension compressor)) (compressor-extension compressor))
@ -240,7 +279,6 @@ added to the pack."
(define* (squashfs-image name profile (define* (squashfs-image name profile
#:key target #:key target
deduplicate?
(compressor (first %compressors)) (compressor (first %compressors))
localstatedir? localstatedir?
(symlinks '()) (symlinks '())
@ -251,75 +289,85 @@ points for virtual file systems (like procfs), and optional symlinks.
SYMLINKS must be a list of (SOURCE -> TARGET) tuples denoting symlinks to be SYMLINKS must be a list of (SOURCE -> TARGET) tuples denoting symlinks to be
added to the pack." added to the pack."
(define database
(and localstatedir?
(file-append (store-database (list profile))
"/db/db.sqlite")))
(define build (define build
(with-imported-modules `(((guix config) => ,(make-config.scm)) (with-imported-modules (source-module-closure
,@(source-module-closure '((guix build utils)
'((guix build utils) (guix build store-copy)
(guix build store-copy) (gnu build install))
(gnu build install)) #:select? not-config?)
#:select? not-config?)) #~(begin
(with-extensions gcrypt-sqlite3&co (use-modules (guix build utils)
#~(begin (guix build store-copy)
(use-modules (guix build utils) (gnu build install)
(gnu build install) (srfi srfi-1)
(guix build store-copy) (srfi srfi-26)
(srfi srfi-1) (ice-9 match))
(srfi srfi-26)
(ice-9 match))
(setenv "PATH" (string-append #$archiver "/bin")) (define database #+database)
;; We need an empty file in order to have a valid file argument when (setenv "PATH" (string-append #$archiver "/bin"))
;; we reparent the root file system. Read on for why that's
;; necessary.
(with-output-to-file ".empty" (lambda () (display "")))
;; Create the squashfs image in several steps. ;; We need an empty file in order to have a valid file argument when
;; Add all store items. Unfortunately mksquashfs throws away all ;; we reparent the root file system. Read on for why that's
;; ancestor directories and only keeps the basename. We fix this ;; necessary.
;; in the following invocations of mksquashfs. (with-output-to-file ".empty" (lambda () (display "")))
(apply invoke "mksquashfs"
`(,@(map store-info-item
(call-with-input-file "profile"
read-reference-graph))
,#$output
;; Do not perform duplicate checking because we ;; Create the squashfs image in several steps.
;; don't have any dupes. ;; Add all store items. Unfortunately mksquashfs throws away all
"-no-duplicates" ;; ancestor directories and only keeps the basename. We fix this
"-comp" ;; in the following invocations of mksquashfs.
,#+(compressor-name compressor))) (apply invoke "mksquashfs"
`(,@(map store-info-item
(call-with-input-file "profile"
read-reference-graph))
,#$output
;; Here we reparent the store items. For each sub-directory of ;; Do not perform duplicate checking because we
;; the store prefix we need one invocation of "mksquashfs". ;; don't have any dupes.
(for-each (lambda (dir) "-no-duplicates"
(apply invoke "mksquashfs" "-comp"
`(".empty" ,#+(compressor-name compressor)))
,#$output
"-root-becomes" ,dir)))
(reverse (string-tokenize (%store-directory)
(char-set-complement (char-set #\/)))))
;; Add symlinks and mount points. ;; Here we reparent the store items. For each sub-directory of
(apply invoke "mksquashfs" ;; the store prefix we need one invocation of "mksquashfs".
`(".empty" (for-each (lambda (dir)
,#$output (apply invoke "mksquashfs"
;; Create SYMLINKS via pseudo file definitions. `(".empty"
,@(append-map ,#$output
(match-lambda "-root-becomes" ,dir)))
((source '-> target) (reverse (string-tokenize (%store-directory)
(list "-p" (char-set-complement (char-set #\/)))))
(string-join
;; name s mode uid gid symlink
(list source
"s" "777" "0" "0"
(string-append #$profile "/" target))))))
'#$symlinks)
;; Create empty mount points. ;; Add symlinks and mount points.
"-p" "/proc d 555 0 0" (apply invoke "mksquashfs"
"-p" "/sys d 555 0 0" `(".empty"
"-p" "/dev d 555 0 0")))))) ,#$output
;; Create SYMLINKS via pseudo file definitions.
,@(append-map
(match-lambda
((source '-> target)
(list "-p"
(string-join
;; name s mode uid gid symlink
(list source
"s" "777" "0" "0"
(string-append #$profile "/" target))))))
'#$symlinks)
;; Create empty mount points.
"-p" "/proc d 555 0 0"
"-p" "/sys d 555 0 0"
"-p" "/dev d 555 0 0"))
(when database
;; Initialize /var/guix.
(install-database-and-gc-roots "var-etc" database #$profile)
(invoke "mksquashfs" "var-etc" #$output)))))
(gexp->derivation (string-append name (gexp->derivation (string-append name
(compressor-extension compressor) (compressor-extension compressor)
@ -329,7 +377,6 @@ added to the pack."
(define* (docker-image name profile (define* (docker-image name profile
#:key target #:key target
deduplicate?
(compressor (first %compressors)) (compressor (first %compressors))
localstatedir? localstatedir?
(symlinks '()) (symlinks '())
@ -339,6 +386,11 @@ image is a tarball conforming to the Docker Image Specification, compressed
with COMPRESSOR. It can be passed to 'docker load'. If TARGET is true, it with COMPRESSOR. It can be passed to 'docker load'. If TARGET is true, it
must a be a GNU triplet and it is used to derive the architecture metadata in must a be a GNU triplet and it is used to derive the architecture metadata in
the image." the image."
(define database
(and localstatedir?
(file-append (store-database (list profile))
"/db/db.sqlite")))
(define defmod 'define-module) ;trick Geiser (define defmod 'define-module) ;trick Geiser
(define build (define build
@ -357,6 +409,7 @@ the image."
(call-with-input-file "profile" (call-with-input-file "profile"
read-reference-graph)) read-reference-graph))
#$profile #$profile
#:database #+database
#:system (or #$target (utsname:machine (uname))) #:system (or #$target (utsname:machine (uname)))
#:symlinks '#$symlinks #:symlinks '#$symlinks
#:compressor '#$(compressor-command compressor) #:compressor '#$(compressor-command compressor)

View File

@ -86,6 +86,8 @@ Download and deploy the latest version of Guix.\n"))
list generations matching PATTERN")) list generations matching PATTERN"))
(display (G_ " (display (G_ "
-p, --profile=PROFILE use PROFILE instead of ~/.config/guix/current")) -p, --profile=PROFILE use PROFILE instead of ~/.config/guix/current"))
(display (G_ "
-n, --dry-run show what would be pulled and built"))
(display (G_ " (display (G_ "
--bootstrap use the bootstrap Guile to build the new Guix")) --bootstrap use the bootstrap Guile to build the new Guix"))
(newline) (newline)
@ -164,15 +166,18 @@ Download and deploy the latest version of Guix.\n"))
(_ #t))) (_ #t)))
(define* (build-and-install instances profile (define* (build-and-install instances profile
#:key verbose?) #:key verbose? dry-run?)
"Build the tool from SOURCE, and install it in PROFILE." "Build the tool from SOURCE, and install it in PROFILE. When DRY-RUN? is
true, display what would be built without actually building it."
(define update-profile (define update-profile
(store-lift build-and-use-profile)) (store-lift build-and-use-profile))
(mlet %store-monad ((manifest (channel-instances->manifest instances))) (mlet %store-monad ((manifest (channel-instances->manifest instances)))
(mbegin %store-monad (mbegin %store-monad
(update-profile profile manifest) (update-profile profile manifest
(return (display-profile-news profile))))) #:dry-run? dry-run?)
(munless dry-run?
(display-profile-news profile)))))
(define (honor-lets-encrypt-certificates! store) (define (honor-lets-encrypt-certificates! store)
"Tell Guile-Git to use the Let's Encrypt certificates." "Tell Guile-Git to use the Let's Encrypt certificates."
@ -497,8 +502,6 @@ Use '~/.config/guix/channels.scm' instead."))
(ensure-default-profile) (ensure-default-profile)
(cond ((assoc-ref opts 'query) (cond ((assoc-ref opts 'query)
(process-query opts profile)) (process-query opts profile))
((assoc-ref opts 'dry-run?)
#t) ;XXX: not very useful
(else (else
(with-store store (with-store store
(with-status-report print-build-event (with-status-report print-build-event
@ -531,6 +534,8 @@ Use '~/.config/guix/channels.scm' instead."))
(canonical-package guile-2.2))))) (canonical-package guile-2.2)))))
(run-with-store store (run-with-store store
(build-and-install instances profile (build-and-install instances profile
#:dry-run?
(assoc-ref opts 'dry-run?)
#:verbose? #:verbose?
(assoc-ref opts 'verbose?)))))))))))))) (assoc-ref opts 'verbose?))))))))))))))

View File

@ -206,21 +206,22 @@ list of file-name/file-like objects suitable as inputs to 'imported-files'."
(local-file file #:recursive? #t))) (local-file file #:recursive? #t)))
(find-files (string-append directory "/" sub-directory) pred))) (find-files (string-append directory "/" sub-directory) pred)))
(define* (sub-directory item sub-directory) (define* (file-append* item file #:key (recursive? #t))
"Return SUB-DIRECTORY within ITEM, which may be a file name or a file-like "Return FILE within ITEM, which may be a file name or a file-like object.
object." When ITEM is a plain file name (a string), simply return a 'local-file'
record with the new file name."
(match item (match item
((? string?) ((? string?)
;; This is the optimal case: we return a new "source". Thus, a ;; This is the optimal case: we return a new "source". Thus, a
;; derivation that depends on this sub-directory does not depend on ITEM ;; derivation that depends on this sub-directory does not depend on ITEM
;; itself. ;; itself.
(local-file (string-append item "/" sub-directory) (local-file (string-append item "/" file)
#:recursive? #t)) #:recursive? recursive?))
;; TODO: Add 'local-file?' case. ;; TODO: Add 'local-file?' case.
(_ (_
;; In this case, anything that refers to the result also depends on ITEM, ;; In this case, anything that refers to the result also depends on ITEM,
;; which isn't great. ;; which isn't great.
(file-append item "/" sub-directory)))) (file-append item "/" file))))
(define* (locale-data source domain (define* (locale-data source domain
#:optional (directory domain)) #:optional (directory domain))
@ -238,7 +239,7 @@ DOMAIN, a gettext domain."
(ice-9 match) (ice-9 ftw)) (ice-9 match) (ice-9 ftw))
(define po-directory (define po-directory
#+(sub-directory source (string-append "po/" directory))) #+(file-append* source (string-append "po/" directory)))
(define (compile language) (define (compile language)
(let ((gmo (string-append #$output "/" language "/LC_MESSAGES/" (let ((gmo (string-append #$output "/" language "/LC_MESSAGES/"
@ -273,10 +274,10 @@ DOMAIN, a gettext domain."
'graphviz)) 'graphviz))
(define documentation (define documentation
(sub-directory source "doc")) (file-append* source "doc"))
(define examples (define examples
(sub-directory source "gnu/system/examples")) (file-append* source "gnu/system/examples"))
(define build (define build
(with-imported-modules '((guix build utils)) (with-imported-modules '((guix build utils))
@ -290,7 +291,7 @@ DOMAIN, a gettext domain."
;; doesn't change at each commit? ;; doesn't change at each commit?
(call-with-output-file "version.texi" (call-with-output-file "version.texi"
(lambda (port) (lambda (port)
(let ((version "0.0-git)")) (let ((version "0.0-git"))
(format port " (format port "
@set UPDATED 1 January 1970 @set UPDATED 1 January 1970
@set UPDATED-MONTH January 1970 @set UPDATED-MONTH January 1970
@ -404,11 +405,29 @@ load path."
(apply guix-main (command-line)))) (apply guix-main (command-line))))
#:guile guile)) #:guile guile))
(define (miscellaneous-files source)
"Return data files taken from SOURCE."
(file-mapping "guix-misc"
`(("etc/bash_completion.d/guix"
,(file-append* source "/etc/completion/bash/guix"))
("etc/bash_completion.d/guix-daemon"
,(file-append* source "/etc/completion/bash/guix-daemon"))
("share/zsh/site-functions/_guix"
,(file-append* source "/etc/completion/zsh/_guix"))
("share/fish/vendor_completions.d/guix.fish"
,(file-append* source "/etc/completion/fish/guix.fish"))
("share/guix/hydra.gnu.org.pub"
,(file-append* source
"/etc/substitutes/hydra.gnu.org.pub"))
("share/guix/berlin.guixsd.org.pub"
,(file-append* source "/etc/substitutes/berlin.guixsd.org.pub")))))
(define* (whole-package name modules dependencies (define* (whole-package name modules dependencies
#:key #:key
(guile-version (effective-version)) (guile-version (effective-version))
compiled-modules compiled-modules
info daemon guile info daemon miscellany
guile
(command (guix-command modules (command (guix-command modules
#:dependencies dependencies #:dependencies dependencies
#:guile guile #:guile guile
@ -422,6 +441,7 @@ assumed to be part of MODULES."
(with-imported-modules '((guix build utils)) (with-imported-modules '((guix build utils))
#~(begin #~(begin
(use-modules (guix build utils)) (use-modules (guix build utils))
(mkdir-p (string-append #$output "/bin")) (mkdir-p (string-append #$output "/bin"))
(symlink #$command (symlink #$command
(string-append #$output "/bin/guix")) (string-append #$output "/bin/guix"))
@ -441,6 +461,10 @@ assumed to be part of MODULES."
(string-append #$output (string-append #$output
"/share/info")))) "/share/info"))))
(when #$miscellany
(copy-recursively #$miscellany #$output
#:log (%make-void-port "w")))
;; Object files. ;; Object files.
(when #$compiled-modules (when #$compiled-modules
(let ((modules (string-append #$output "/lib/guile/" (let ((modules (string-append #$output "/lib/guile/"
@ -666,6 +690,7 @@ assumed to be part of MODULES."
'guix-daemon) 'guix-daemon)
#:info (info-manual source) #:info (info-manual source)
#:miscellany (miscellaneous-files source)
#:guile-version guile-version))) #:guile-version guile-version)))
((= 0 pull-version) ((= 0 pull-version)
;; Legacy 'guix pull': return the .scm and .go files as one ;; Legacy 'guix pull': return the .scm and .go files as one

View File

@ -161,7 +161,7 @@ Throw an error on failure."
"/var/guix/daemon-socket/socket")) "/var/guix/daemon-socket/socket"))
"Connect to the remote build daemon listening on SOCKET-NAME over SESSION, "Connect to the remote build daemon listening on SOCKET-NAME over SESSION,
an SSH session. Return a <nix-server> object." an SSH session. Return a <nix-server> object."
(open-connection #:port (remote-daemon-channel session))) (open-connection #:port (remote-daemon-channel session socket-name)))
(define (store-import-channel session) (define (store-import-channel session)

View File

@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: guix 0.15.0\n" "Project-Id-Version: guix 0.15.0\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\n" "Report-Msgid-Bugs-To: ludo@gnu.org\n"
"POT-Creation-Date: 2018-06-22 14:08+0200\n" "POT-Creation-Date: 2018-06-22 14:08+0200\n"
"PO-Revision-Date: 2018-08-24 20:57+0200\n" "PO-Revision-Date: 2018-10-27 02:22+0200\n"
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n" "Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n" "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\n" "Language: de\n"
@ -437,7 +437,7 @@ msgid ""
" --no-build-hook do not attempt to offload builds via the build hook" " --no-build-hook do not attempt to offload builds via the build hook"
msgstr "" msgstr ""
"\n" "\n"
" --no-build-hook nicht versuchen, Erstellungen über den »build hook«\n" " --no-build-hook nicht versuchen, Erstellungen über den »Build-Hook«\n"
" auszulagern" " auszulagern"
#: guix/scripts/build.scm:362 #: guix/scripts/build.scm:362
@ -497,7 +497,7 @@ msgstr ""
#: guix/scripts/build.scm:479 guix/scripts/build.scm:486 #: guix/scripts/build.scm:479 guix/scripts/build.scm:486
#, scheme-format #, scheme-format
msgid "not a number: '~a' option argument: ~a~%" msgid "not a number: '~a' option argument: ~a~%"
msgstr "Keine Zahl: Kommandozeilenargument von »~a«: ~a~%" msgstr "Keine Zahl: Befehlszeilenargument von »~a«: ~a~%"
#: guix/scripts/build.scm:505 #: guix/scripts/build.scm:505
msgid "" msgid ""
@ -658,7 +658,7 @@ msgid ""
"invalid argument: '~a' option argument: ~a, ~\n" "invalid argument: '~a' option argument: ~a, ~\n"
"must be one of 'package', 'all', or 'transitive'~%" "must be one of 'package', 'all', or 'transitive'~%"
msgstr "" msgstr ""
"Ungültiges Argument der Kommandozeilenoption »~a«: ~a, ~\n" "Ungültiges Argument der Befehlszeilenoption »~a«: ~a, ~\n"
"muss entweder »package«, »all« oder »transitive« sein~%" "muss entweder »package«, »all« oder »transitive« sein~%"
#: guix/scripts/build.scm:621 #: guix/scripts/build.scm:621
@ -1018,7 +1018,7 @@ msgstr ""
msgid "upgrade regexp '~a' looks like a command-line option~%" msgid "upgrade regexp '~a' looks like a command-line option~%"
msgstr "" msgstr ""
"--upgrade: Der reguläre Ausdruck »~a«\n" "--upgrade: Der reguläre Ausdruck »~a«\n"
"sieht wie eine Kommandozeilenoption aus" "sieht wie eine Befehlszeilenoption aus"
#: guix/scripts/package.scm:443 #: guix/scripts/package.scm:443
#, scheme-format #, scheme-format
@ -1183,7 +1183,7 @@ msgstr "Es sind bereits ~h Bytes verfügbar auf ~a, nichts zu tun~%"
#: guix/scripts/gc.scm:205 #: guix/scripts/gc.scm:205
msgid "freeing ~h bytes~%" msgid "freeing ~h bytes~%"
msgstr "Gebe ~h Bytes frei~%" msgstr "~h Bytes werden freigegeben~%"
#: guix/scripts/gc.scm:217 #: guix/scripts/gc.scm:217
#, scheme-format #, scheme-format
@ -1192,7 +1192,7 @@ msgstr "Zusätzliche Argumente: ~{~a ~}~%"
#: guix/scripts/gc.scm:237 guix/scripts/gc.scm:240 #: guix/scripts/gc.scm:237 guix/scripts/gc.scm:240
msgid "freed ~h bytes~%" msgid "freed ~h bytes~%"
msgstr "~h Bytes freigegeben" msgstr "~h Bytes wurden freigegeben"
#: guix/scripts/hash.scm:47 #: guix/scripts/hash.scm:47
msgid "" msgid ""
@ -2885,7 +2885,7 @@ msgid ""
" -R, --relocatable produce relocatable executables" " -R, --relocatable produce relocatable executables"
msgstr "" msgstr ""
"\n" "\n"
" -R, --relocatable »portable« ausführbare Datei erzeugen" " -R, --relocatable pfad-agnostische ausführbare Datei erzeugen"
#: guix/scripts/pack.scm:650 #: guix/scripts/pack.scm:650
msgid "" msgid ""
@ -3331,7 +3331,7 @@ msgstr "Generation ~a des Profils »~a« existiert nicht~%"
#: guix/ui.scm:628 #: guix/ui.scm:628
#, scheme-format #, scheme-format
msgid " ... propagated from ~a@~a~%" msgid " ... propagated from ~a@~a~%"
msgstr " … propagatiert von ~a@~a~%" msgstr " … propagiert von ~a@~a~%"
#: guix/ui.scm:638 #: guix/ui.scm:638
#, scheme-format #, scheme-format
@ -3703,7 +3703,7 @@ msgstr "URLS als die vorgegebene Liste von Substitutsanbietern nutzen"
#: nix/nix-daemon/guix-daemon.cc:117 #: nix/nix-daemon/guix-daemon.cc:117
msgid "do not use the 'build hook'" msgid "do not use the 'build hook'"
msgstr "den »build hook« nicht benutzen" msgstr "den »Build-Hook« nicht benutzen"
#: nix/nix-daemon/guix-daemon.cc:119 #: nix/nix-daemon/guix-daemon.cc:119
msgid "cache build failures" msgid "cache build failures"

View File

@ -0,0 +1,61 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2018 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/>.
#
# Test the 'guix pack --relocatable' using the external store, if any.
#
guix pack --version
# 'guix pack --relocatable' requires a C compiler and libc.a, which our
# bootstrap binaries don't provide. To make the test relatively inexpensive,
# run it on the user's global store if possible, on the grounds that binaries
# may already be there or can be built or downloaded inexpensively.
NIX_STORE_DIR="`guile -c '(use-modules (guix config))(display %storedir)'`"
localstatedir="`guile -c '(use-modules (guix config))(display %localstatedir)'`"
GUIX_DAEMON_SOCKET="$localstatedir/guix/daemon-socket/socket"
export NIX_STORE_DIR GUIX_DAEMON_SOCKET
if ! guile -c '(use-modules (guix)) (exit (false-if-exception (open-connection)))'
then
exit 77
fi
STORE_PARENT="`dirname $NIX_STORE_DIR`"
export STORE_PARENT
if test "$STORE_PARENT" = "/"; then exit 77; fi
# This test requires user namespaces and associated command-line tools.
if ! unshare -mrf sh -c 'mount -t tmpfs none "$STORE_PARENT"'
then
exit 77
fi
test_directory="`mktemp -d`"
export test_directory
trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT
tarball="`guix pack -R -S /Bin=bin sed`"
(cd "$test_directory"; tar xvf "$tarball")
# Run that relocatable 'sed' in a user namespace where we "erase" the store by
# mounting an empty file system on top of it. That way, we exercise the
# wrapper code that creates the user namespace and bind-mounts the store.
unshare -mrf sh -c 'mount -t tmpfs none "$STORE_PARENT"; echo "$STORE_PARENT"/*; "$test_directory/Bin/sed" --version > "$test_directory/output"'
grep 'GNU sed' "$test_directory/output"

View File

@ -29,39 +29,27 @@ fi
guix pack --version guix pack --version
# Starting from commit 66e9944e078cbb9e0d618377dd6df6e639640efa, 'guix pack' # Use --no-substitutes because we need to verify we can do this ourselves.
# produces derivations that refer to guile-sqlite3 and libgcrypt. To make GUIX_BUILD_OPTIONS="--no-substitutes"
# that relatively inexpensive, run the test in the user's global store if export GUIX_BUILD_OPTIONS
# possible, on the grounds that binaries may already be there or can be built
# or downloaded inexpensively.
NIX_STORE_DIR="`guile -c '(use-modules (guix config))(display %storedir)'`"
localstatedir="`guile -c '(use-modules (guix config))(display %localstatedir)'`"
GUIX_DAEMON_SOCKET="$localstatedir/guix/daemon-socket/socket"
export NIX_STORE_DIR GUIX_DAEMON_SOCKET
if ! guile -c '(use-modules (guix)) (exit (false-if-exception (open-connection)))'
then
exit 77
fi
# Build a tarball with no compression. # Build a tarball with no compression.
guix pack --compression=none guile-bootstrap guix pack --compression=none --bootstrap guile-bootstrap
# Build a tarball (with compression). Check that '-e' works as well. # Build a tarball (with compression). Check that '-e' works as well.
out1="`guix pack guile-bootstrap`" out1="`guix pack --bootstrap guile-bootstrap`"
out2="`guix pack -e '(@ (gnu packages bootstrap) %bootstrap-guile)'`" out2="`guix pack --bootstrap -e '(@ (gnu packages bootstrap) %bootstrap-guile)'`"
test -n "$out1" test -n "$out1"
test "$out1" = "$out2" test "$out1" = "$out2"
# Build a tarball with a symlink. # Build a tarball with a symlink.
the_pack="`guix pack -S /opt/gnu/bin=bin guile-bootstrap`" the_pack="`guix pack --bootstrap -S /opt/gnu/bin=bin guile-bootstrap`"
# Try to extract it. Note: we cannot test whether /opt/gnu/bin/guile itself # Try to extract it. Note: we cannot test whether /opt/gnu/bin/guile itself
# exists because /opt/gnu/bin may be an absolute symlink to a store item that # exists because /opt/gnu/bin may be an absolute symlink to a store item that
# has been GC'd. # has been GC'd.
test_directory="`mktemp -d`" test_directory="`mktemp -d`"
trap 'rm -rf "$test_directory"' EXIT trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT
cd "$test_directory" cd "$test_directory"
tar -xf "$the_pack" tar -xf "$the_pack"
test -L opt/gnu/bin test -L opt/gnu/bin

View File

@ -22,20 +22,26 @@
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix derivations) #:use-module (guix derivations)
#:use-module (guix profiles) #:use-module (guix profiles)
#:use-module (guix packages)
#:use-module (guix monads) #:use-module (guix monads)
#:use-module (guix grafts) #:use-module (guix grafts)
#:use-module (guix tests) #:use-module (guix tests)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (gnu packages bootstrap) #:use-module (gnu packages bootstrap)
#:use-module ((gnu packages compression) #:select (squashfs-tools-next))
#:use-module (srfi srfi-64)) #:use-module (srfi srfi-64))
(define %store
(open-connection-for-tests))
;; Globally disable grafts because they can trigger early builds. ;; Globally disable grafts because they can trigger early builds.
(%graft? #f) (%graft? #f)
(define-syntax-rule (test-assertm name store exp) (define-syntax-rule (test-assertm name store exp)
(test-assert name (test-assert name
(run-with-store store exp (let ((guile (package-derivation store %bootstrap-guile)))
#:guile-for-build (%guile-for-build)))) (run-with-store store exp
#:guile-for-build guile))))
(define %gzip-compressor (define %gzip-compressor
;; Compressor that uses the bootstrap 'gzip'. ;; Compressor that uses the bootstrap 'gzip'.
@ -48,6 +54,58 @@
(test-begin "pack") (test-begin "pack")
(unless (network-reachable?) (test-skip 1))
(test-assertm "self-contained-tarball" %store
(mlet* %store-monad
((profile (profile-derivation (packages->manifest
(list %bootstrap-guile))
#:hooks '()
#:locales? #f))
(tarball (self-contained-tarball "pack" profile
#:symlinks '(("/bin/Guile"
-> "bin/guile"))
#:compressor %gzip-compressor
#:archiver %tar-bootstrap))
(check (gexp->derivation
"check-tarball"
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils)
(srfi srfi-1))
(define store
;; The unpacked store.
(string-append "." (%store-directory) "/"))
(define (canonical? file)
;; Return #t if FILE is read-only and its mtime is 1.
(let ((st (lstat file)))
(or (not (string-prefix? store file))
(eq? 'symlink (stat:type st))
(and (= 1 (stat:mtime st))
(zero? (logand #o222
(stat:mode st)))))))
(define bin
(string-append "." #$profile "/bin"))
(setenv "PATH"
(string-append #$%tar-bootstrap "/bin"))
(system* "tar" "xvf" #$tarball)
(mkdir #$output)
(exit
(and (file-exists? (string-append bin "/guile"))
(file-exists? store)
(every canonical?
(find-files "." (const #t)
#:directories? #t))
(string=? (string-append #$%bootstrap-guile "/bin")
(readlink bin))
(string=? (string-append ".." #$profile
"/bin/guile")
(readlink "bin/Guile")))))))))
(built-derivations (list check))))
;; The following test needs guile-sqlite3, libgcrypt, etc. as a consequence of ;; The following test needs guile-sqlite3, libgcrypt, etc. as a consequence of
;; commit c45477d2a1a651485feede20fe0f3d15aec48b39 and related changes. Thus, ;; commit c45477d2a1a651485feede20fe0f3d15aec48b39 and related changes. Thus,
;; run it on the user's store, if it's available, on the grounds that these ;; run it on the user's store, if it's available, on the grounds that these
@ -56,17 +114,15 @@
(with-external-store store (with-external-store store
(unless store (test-skip 1)) (unless store (test-skip 1))
(test-assertm "self-contained-tarball" store (test-assertm "self-contained-tarball + localstatedir" store
(mlet* %store-monad (mlet* %store-monad
((profile (profile-derivation (packages->manifest ((guile (set-guile-for-build (default-guile)))
(profile (profile-derivation (packages->manifest
(list %bootstrap-guile)) (list %bootstrap-guile))
#:hooks '() #:hooks '()
#:locales? #f)) #:locales? #f))
(tarball (self-contained-tarball "pack" profile (tarball (self-contained-tarball "tar-pack" profile
#:symlinks '(("/bin/Guile" #:localstatedir? #t))
-> "bin/guile"))
#:compressor %gzip-compressor
#:archiver %tar-bootstrap))
(check (gexp->derivation (check (gexp->derivation
"check-tarball" "check-tarball"
#~(let ((bin (string-append "." #$profile "/bin"))) #~(let ((bin (string-append "." #$profile "/bin")))
@ -75,12 +131,84 @@
(system* "tar" "xvf" #$tarball) (system* "tar" "xvf" #$tarball)
(mkdir #$output) (mkdir #$output)
(exit (exit
(and (file-exists? (string-append bin "/guile")) (and (file-exists? "var/guix/db/db.sqlite")
(string=? (string-append #$%bootstrap-guile "/bin") (string=? (string-append #$%bootstrap-guile "/bin")
(readlink bin)) (readlink bin))))))))
(string=? (string-append ".." #$profile (built-derivations (list check))))
"/bin/guile")
(readlink "bin/Guile")))))))) (unless store (test-skip 1))
(test-assertm "docker-image + localstatedir" store
(mlet* %store-monad
((guile (set-guile-for-build (default-guile)))
(profile (profile-derivation (packages->manifest
(list %bootstrap-guile))
#:hooks '()
#:locales? #f))
(tarball (docker-image "docker-pack" profile
#:symlinks '(("/bin/Guile" -> "bin/guile"))
#:localstatedir? #t))
(check (gexp->derivation
"check-tarball"
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils)
(ice-9 match))
(define bin
(string-append "." #$profile "/bin"))
(setenv "PATH" (string-append #$%tar-bootstrap "/bin"))
(mkdir "base")
(with-directory-excursion "base"
(invoke "tar" "xvf" #$tarball))
(match (find-files "base" "layer.tar")
((layer)
(invoke "tar" "xvf" layer)))
(when
(and (file-exists? (string-append bin "/guile"))
(file-exists? "var/guix/db/db.sqlite")
(string=? (string-append #$%bootstrap-guile "/bin")
(pk 'binlink (readlink bin)))
(string=? (string-append #$profile "/bin/guile")
(pk 'guilelink (readlink "bin/Guile"))))
(mkdir #$output)))))))
(built-derivations (list check))))
(unless store (test-skip 1))
(test-assertm "squashfs-image + localstatedir" store
(mlet* %store-monad
((guile (set-guile-for-build (default-guile)))
(profile (profile-derivation (packages->manifest
(list %bootstrap-guile))
#:hooks '()
#:locales? #f))
(image (squashfs-image "squashfs-pack" profile
#:symlinks '(("/bin" -> "bin"))
#:localstatedir? #t))
(check (gexp->derivation
"check-tarball"
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils)
(ice-9 match))
(define bin
(string-append "." #$profile "/bin"))
(setenv "PATH"
(string-append #$squashfs-tools-next "/bin"))
(invoke "unsquashfs" #$image)
(with-directory-excursion "squashfs-root"
(when (and (file-exists? (string-append bin
"/guile"))
(file-exists? "var/guix/db/db.sqlite")
(string=? (string-append #$%bootstrap-guile "/bin")
(pk 'binlink (readlink bin)))
(string=? (string-append #$profile "/bin")
(pk 'guilelink (readlink "bin"))))
(mkdir #$output))))))))
(built-derivations (list check))))) (built-derivations (list check)))))
(test-end) (test-end)