diff options
author | Ludovic Courtès <ludo@gnu.org> | 2016-05-23 14:55:44 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2016-05-23 15:02:26 +0200 |
commit | bc73a84398fa54b0a11a80c749bf78eb0a58dbe6 (patch) | |
tree | 3e7b6670989ceb4f31464bad632c0332121d96a0 | |
parent | 12b6f6527e49c8c4191929a72b1692dbd9eb2440 (diff) | |
parent | 624d4e2e6ba402c374a340869306eec65a808a20 (diff) | |
download | guix-bc73a84398fa54b0a11a80c749bf78eb0a58dbe6.tar.gz |
Merge branch 'master' into core-updates
83 files changed, 2764 insertions, 811 deletions
diff --git a/.mailmap b/.mailmap index 8f61e0efae..21841c1a0a 100644 --- a/.mailmap +++ b/.mailmap @@ -24,6 +24,7 @@ Joshua Grant <tadni@riseup.net> <gzg@riseup.net> Joshua Grant <tadni@riseup.net> <jgrant@parenthetical.io> Joshua Grant <tadni@riseup.net> <tadnimi@gmail.com> Joshua Grant <tadni@riseup.net> <youlysses@riseup.net> +Kei Kebreau <kei@openmailbox.org> Leo Famulari <leo@famulari.name> <lfamular@gmail.com> Ludovic Courtès <ludo@gnu.org> <ludovic.courtes@inria.fr> Mathieu Lirzin <mthl@gnu.org> <mthl@openmailbox.org> diff --git a/Makefile.am b/Makefile.am index dfd486b256..c2c571cf3b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -509,7 +509,7 @@ hydra-jobs.scm: $(GOBJECTS) $(AM_V_GEN)$(top_builddir)/pre-inst-env "$(GUILE)" \ "$(top_srcdir)/build-aux/hydra/evaluate.scm" \ "$(top_srcdir)/build-aux/hydra/gnu-system.scm" > "$@.tmp" - $(AT_V_at)mv "$@.tmp" "$@" + $(AM_V_at)mv "$@.tmp" "$@" .PHONY: sync-descriptions gen-ChangeLog gen-AUTHORS clean-go make-go .PHONY: assert-no-store-file-names assert-binaries-available diff --git a/doc/guix.texi b/doc/guix.texi index 0e63ecadfd..d88cc256d7 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4961,6 +4961,19 @@ To view information about a particular vulnerability, visit pages such as: where @code{CVE-YYYY-ABCD} is the CVE identifier---e.g., @code{CVE-2015-7554}. +Package developers can specify in package recipes the +@uref{https://nvd.nist.gov/cpe.cfm,Common Platform Enumeration (CPE)} +name and version of the package when they differ from the name that Guix +uses, as in this example: + +@example +(package + (name "grub") + ;; @dots{} + ;; CPE calls this package "grub2". + (properties '((cpe-name . "grub2")))) +@end example + @item formatting Warn about obvious source code formatting issues: trailing white space, use of tabulations, etc. @@ -5148,6 +5161,12 @@ derivations (@pxref{Derivations}) and plain store items. Compared to the above representation, many additional nodes are visible, including build scripts, patches, Guile modules, etc. +For this type of graph, it is also possible to pass a @file{.drv} file +name instead of a package name, as in: + +@example +guix graph -t derivation `guix system build -d my-config.scm` +@end example @end table All the types above correspond to @emph{build-time dependencies}. The @@ -5160,6 +5179,14 @@ by @command{guix gc --references} (@pxref{Invoking guix gc}). If the given package output is not available in the store, @command{guix graph} attempts to obtain dependency information from substitutes. + +Here you can also pass a store file name instead of a package name. For +example, the command below produces the reference graph of your profile +(which can be big!): + +@example +guix graph -t references `readlink -f ~/.guix-profile` +@end example @end table The available options are the following: diff --git a/gnu/local.mk b/gnu/local.mk index a1700a5e23..0287befd22 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -4,7 +4,7 @@ # Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> # Copyright © 2013, 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> # Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> -# Copyright © 2016 Kei Yamashita <kei@openmailbox.org> +# Copyright © 2016 Kei Kebreau <kei@openmailbox.org> # # This file is part of GNU Guix. # @@ -188,6 +188,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/lego.scm \ gnu/packages/less.scm \ gnu/packages/lesstif.scm \ + gnu/packages/libbsd.scm \ gnu/packages/libcanberra.scm \ gnu/packages/libdaemon.scm \ gnu/packages/libedit.scm \ @@ -303,6 +304,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/search.scm \ gnu/packages/serialization.scm \ gnu/packages/serveez.scm \ + gnu/packages/shellutils.scm \ gnu/packages/shishi.scm \ gnu/packages/skarnet.scm \ gnu/packages/skribilo.scm \ @@ -465,7 +467,6 @@ dist_patch_DATA = \ gnu/packages/patches/duplicity-test_selection-tmp.patch \ gnu/packages/patches/elfutils-tests-ptrace.patch \ gnu/packages/patches/einstein-build.patch \ - gnu/packages/patches/emacs-constants-lisp-like.patch \ gnu/packages/patches/emacs-exec-path.patch \ gnu/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch \ gnu/packages/patches/emacs-source-date-epoch.patch \ @@ -494,6 +495,7 @@ dist_patch_DATA = \ gnu/packages/patches/gcc-libiberty-printf-decl.patch \ gnu/packages/patches/gcc-libvtv-runpath.patch \ gnu/packages/patches/gcc-5.0-libvtv-runpath.patch \ + gnu/packages/patches/gd-CVE-2016-3074.patch \ gnu/packages/patches/geoclue-config.patch \ gnu/packages/patches/ghostscript-CVE-2015-3228.patch \ gnu/packages/patches/ghostscript-runpath.patch \ @@ -507,6 +509,7 @@ dist_patch_DATA = \ gnu/packages/patches/glibc-versioned-locpath.patch \ gnu/packages/patches/gmp-arm-asm-nothumb.patch \ gnu/packages/patches/gmp-faulty-test.patch \ + gnu/packages/patches/gnome-tweak-tool-search-paths.patch \ gnu/packages/patches/gnucash-price-quotes-perl.patch \ gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch \ gnu/packages/patches/gobject-introspection-cc.patch \ @@ -613,7 +616,6 @@ dist_patch_DATA = \ gnu/packages/patches/matplotlib-setupext-tk.patch \ gnu/packages/patches/maxima-defsystem-mkdir.patch \ gnu/packages/patches/mcron-install.patch \ - gnu/packages/patches/mdadm-gcc-4.9-fix.patch \ gnu/packages/patches/mhash-keygen-test-segfault.patch \ gnu/packages/patches/mit-krb5-CVE-2015-8629.patch \ gnu/packages/patches/mit-krb5-CVE-2015-8630.patch \ @@ -700,7 +702,6 @@ dist_patch_DATA = \ gnu/packages/patches/python-paste-remove-website-test.patch \ gnu/packages/patches/python-paste-remove-timing-test.patch \ gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \ - gnu/packages/patches/python-pandas-fix-tslib-test-failure.patch \ gnu/packages/patches/qt4-ldflags.patch \ gnu/packages/patches/ratpoison-shell.patch \ gnu/packages/patches/readline-link-ncurses.patch \ diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index c7bf03bcbc..d404ff839c 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -1482,7 +1482,7 @@ identify enrichments with functional annotations of the genome.") (define-public diamond (package (name "diamond") - (version "0.7.9") + (version "0.8.1") (source (origin (method url-fetch) (uri (string-append @@ -1491,33 +1491,18 @@ identify enrichments with functional annotations of the genome.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0hfkcfv9f76h5brbyw9fyvmc0l9cmbsxrcdqk0fa9xv82zj47p15")) - (snippet '(begin - (delete-file "bin/diamond") - #t)))) - (build-system gnu-build-system) + "1dqancz32c2l7w1b2vkvh5zqa2jnf99j1c41djnx1l8pxn044zdc")))) + (build-system cmake-build-system) (arguments - '(#:tests? #f ;no "check" target + '(#:tests? #f ; no "check" target #:phases (modify-phases %standard-phases - (add-after 'unpack 'enter-source-dir - (lambda _ - (chdir "src") - #t)) - (delete 'configure) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((bin (string-append (assoc-ref outputs "out") - "/bin"))) - (mkdir-p bin) - (copy-file "../bin/diamond" - (string-append bin "/diamond")) - #t)))))) - (native-inputs - `(("bc" ,bc))) + (add-after 'unpack 'remove-native-compilation + (lambda _ + (substitute* "CMakeLists.txt" (("-march=native") "")) + #t))))) (inputs - `(("boost" ,boost) - ("zlib" ,zlib))) + `(("zlib" ,zlib))) (home-page "https://github.com/bbuchfink/diamond") (synopsis "Accelerated BLAST compatible local sequence aligner") (description @@ -2094,7 +2079,7 @@ particular, reads spanning multiple exons.") (source (origin (method url-fetch) (uri (string-append - "http://selab.janelia.org/software/hmmer" + "http://eddylab.org/software/hmmer" (version-prefix version 1) "/" version "/hmmer-" version ".tar.gz")) (sha256 @@ -2102,7 +2087,7 @@ particular, reads spanning multiple exons.") "0djmgc0pfli0jilfx8hql1axhwhqxqb8rxg2r5rg07aw73sfs5nx")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl))) - (home-page "http://hmmer.janelia.org") + (home-page "http://hmmer.org/") (synopsis "Biosequence analysis using profile hidden Markov models") (description "HMMER is used for searching sequence databases for homologs of protein @@ -3570,7 +3555,7 @@ of these reads to align data quickly through a hash-based indexing scheme.") (define-public sortmerna (package (name "sortmerna") - (version "2.1") + (version "2.1b") (source (origin (method url-fetch) @@ -3580,7 +3565,7 @@ of these reads to align data quickly through a hash-based indexing scheme.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1mc5cf1c7xh0h7xb11vh7gqgzx0qvrfa606cb8ixlfg3f2av58s4")))) + "1ghaghvd82af9j5adavxh77g7hm247d1r69m3fbi6f1jdivj5ldk")))) (build-system gnu-build-system) (outputs '("out" ;for binaries "db")) ;for sequence databases @@ -3600,6 +3585,8 @@ of these reads to align data quickly through a hash-based indexing scheme.") (install-file file share)) (find-files "rRNA_databases" ".*fasta")) #t)))))) + (inputs + `(("zlib" ,zlib))) (home-page "http://bioinfo.lifl.fr/RNA/sortmerna") (synopsis "Biological sequence analysis tool for NGS reads") (description @@ -3831,7 +3818,7 @@ data in the form of VCF files.") (define-public vsearch (package (name "vsearch") - (version "1.10.0") + (version "1.11.1") (source (origin (method url-fetch) @@ -3841,7 +3828,7 @@ data in the form of VCF files.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1i3bad7gnn2y3a1yfixzshd99xdkjc8w5bxzgifpysc6jiljwvb5")) + "1pdvm3znjgq3zryy240yj9gc0bf1z31k6vf9jxrxgdgkvzgw85c7")) (modules '((guix build utils))) (snippet '(begin @@ -4018,13 +4005,13 @@ barplots or heatmaps.") (define-public r-biocgenerics (package (name "r-biocgenerics") - (version "0.16.1") + (version "0.18.0") (source (origin (method url-fetch) (uri (bioconductor-uri "BiocGenerics" version)) (sha256 (base32 - "0f16ryy5f012hvksrwlmm33bcl7lw97i2jvhbnwfwl03j4w7nhc1")))) + "1jjp48vbph09w5bmc7368gjjywsa1lmzfybpiwlypr60b51vlkp6")))) (properties `((upstream-name . "BiocGenerics"))) (build-system r-build-system) @@ -4038,13 +4025,13 @@ packages.") (define-public r-dnacopy (package (name "r-dnacopy") - (version "1.44.0") + (version "1.46.0") (source (origin (method url-fetch) (uri (bioconductor-uri "DNAcopy" version)) (sha256 (base32 - "1c1px4rbr36xx929hp59k7ca9k5ab66qmn8k63fk13278ncm6h66")))) + "0vwv2mndfjpcjp4sybg75abc7xnx8zyw8zjk717k6xh8c33ymcip")))) (properties `((upstream-name . "DNAcopy"))) (build-system r-build-system) @@ -4060,13 +4047,13 @@ abnormal copy number.") (define-public r-s4vectors (package (name "r-s4vectors") - (version "0.8.11") + (version "0.10.0") (source (origin (method url-fetch) (uri (bioconductor-uri "S4Vectors" version)) (sha256 (base32 - "12iibcs63m9iy7f45wgjcqsna2dnqwckphk682389grshz0g4x66")))) + "1mi6lf6pnb9l657igy0vj4yz03yawbr2jhk22l757fzbjc7n9q3b")))) (properties `((upstream-name . "S4Vectors"))) (build-system r-build-system) @@ -4087,13 +4074,13 @@ S4Vectors package itself.") (define-public r-iranges (package (name "r-iranges") - (version "2.4.8") + (version "2.6.0") (source (origin (method url-fetch) (uri (bioconductor-uri "IRanges" version)) (sha256 (base32 - "0hi5k1j5jm4xrg1l506g279qw1xkvp1gg1zgsjzpbng4vx4k4iyl")))) + "0dz7z0pk8hq79mcgylw920999s08h6j8xrl31rdxhssmi7l8v6vy")))) (properties `((upstream-name . "IRanges"))) (build-system r-build-system) @@ -4116,13 +4103,13 @@ possible.") (define-public r-genomeinfodb (package (name "r-genomeinfodb") - (version "1.6.3") + (version "1.8.1") (source (origin (method url-fetch) (uri (bioconductor-uri "GenomeInfoDb" version)) (sha256 (base32 - "1ggp005n2rlkad00ilzn95y4rd484yr1chdhnd6fwg45rbi94d63")))) + "0k4s6z5qj53zkfnyrmcbn3l2nzgm56bhv58rv321j22qa56cpz7d")))) (properties `((upstream-name . "GenomeInfoDb"))) (build-system r-build-system) @@ -4142,13 +4129,13 @@ names in their natural, rather than lexicographic, order.") (define-public r-variantannotation (package (name "r-variantannotation") - (version "1.16.4") + (version "1.18.1") (source (origin (method url-fetch) (uri (bioconductor-uri "VariantAnnotation" version)) (sha256 (base32 - "1z42j3p9b8h725inq8n0230llsdbav3gwcxy1nliypzfkxbzahsb")))) + "1jdpdnp7l81xfprba2ykfnj6i64fd84vxaax0wvrz6qahxvnjzyw")))) (properties `((upstream-name . "VariantAnnotation"))) (inputs @@ -4174,13 +4161,13 @@ coding changes and predict coding outcomes.") (define-public r-xvector (package (name "r-xvector") - (version "0.10.0") + (version "0.12.0") (source (origin (method url-fetch) (uri (bioconductor-uri "XVector" version)) (sha256 (base32 - "0havwyr6xqk7w0rmbwfj9jq1djz7wzdz7w39adhklwzwz9l4ih3a")))) + "0c9cqjcxxks3an4wiq167h2grxlfyazajn7bmxhbk42zifp8vmqp")))) (properties `((upstream-name . "XVector"))) (build-system r-build-system) @@ -4210,13 +4197,13 @@ coding changes and predict coding outcomes.") (define-public r-genomicranges (package (name "r-genomicranges") - (version "1.22.4") + (version "1.24.0") (source (origin (method url-fetch) (uri (bioconductor-uri "GenomicRanges" version)) (sha256 (base32 - "02df5683nrpn9d10ws8jz9b55nr9055hh882xp2i154xdddir0k0")))) + "1iyzg1npl3rnnslwq3h759vf0xhshnn5v801rnlj6bnxzhn9yaqh")))) (properties `((upstream-name . "GenomicRanges"))) (build-system r-build-system) @@ -4237,13 +4224,13 @@ manipulating genomic intervals and variables defined along a genome.") (define-public r-biobase (package (name "r-biobase") - (version "2.30.0") + (version "2.32.0") (source (origin (method url-fetch) (uri (bioconductor-uri "Biobase" version)) (sha256 (base32 - "1qasjpq3kw8h7qw8cin3bjvv1256hqr1mm24fq3v0ymxzlb66szi")))) + "0q4icv9n5rc2qfkv6k1wjhmfcpzcyr8f45m2z3xharbdv912kl1i")))) (properties `((upstream-name . "Biobase"))) (build-system r-build-system) @@ -4259,13 +4246,13 @@ on Bioconductor or which replace R functions.") (define-public r-annotationdbi (package (name "r-annotationdbi") - (version "1.32.3") + (version "1.34.2") (source (origin (method url-fetch) (uri (bioconductor-uri "AnnotationDbi" version)) (sha256 (base32 - "1v6x62hgys5827yg2xayjrd9xawbayzm6wy0q4vxh1s6yxc9bklj")))) + "0nw6c23098gkjlwlrra4rh1m65azczb31qr01pq81cn5gya1zkr4")))) (properties `((upstream-name . "AnnotationDbi"))) (build-system r-build-system) @@ -4286,13 +4273,13 @@ annotation data packages using SQLite data storage.") (define-public r-biomart (package (name "r-biomart") - (version "2.26.1") + (version "2.28.0") (source (origin (method url-fetch) (uri (bioconductor-uri "biomaRt" version)) (sha256 (base32 - "1s709055abj2gd35g6nnk5d2ai5ii09iir270l2xika6pi62gj3f")))) + "1g0w6an9hkflgyhvq6pmrs92s93qarv23v636b9a4bz771wjvm5v")))) (properties `((upstream-name . "biomaRt"))) (build-system r-build-system) @@ -4316,13 +4303,13 @@ powerful online queries from gene annotation to database mining.") (define-public r-biocparallel (package (name "r-biocparallel") - (version "1.4.3") + (version "1.6.2") (source (origin (method url-fetch) (uri (bioconductor-uri "BiocParallel" version)) (sha256 (base32 - "1f5mndx66vampcsq0n66afg6x851crl0h3nyv2nyp9bsgzj9cdzq")))) + "0ki5xvb3cwjmlsx81gr8ylk1qy3imlj2dd04mzpvl28x42ay4dqj")))) (properties `((upstream-name . "BiocParallel"))) (build-system r-build-system) @@ -4340,13 +4327,13 @@ objects.") (define-public r-biostrings (package (name "r-biostrings") - (version "2.38.4") + (version "2.40.0") (source (origin (method url-fetch) (uri (bioconductor-uri "Biostrings" version)) (sha256 (base32 - "0cjd7i4bdwabzb02gm753aji5xaihkj5ak8nb0d32cclxbj0hp33")))) + "03gyhiz14xy51nzg0glihk1rv19pq4p1aa3y5g23bzcshs67ggj9")))) (properties `((upstream-name . "Biostrings"))) (build-system r-build-system) @@ -4366,13 +4353,13 @@ biological sequences or sets of sequences.") (define-public r-rsamtools (package (name "r-rsamtools") - (version "1.22.0") + (version "1.24.0") (source (origin (method url-fetch) (uri (bioconductor-uri "Rsamtools" version)) (sha256 (base32 - "1yc3nzzms3igjwr4l9yd3wdac95glcs08b4cfp7disyly0wcskjd")))) + "0w0drs8cpk8nlazq64ag7nm1w5jd1m8riialivm01hz5zcra7scb")))) (properties `((upstream-name . "Rsamtools"))) (build-system r-build-system) @@ -4410,13 +4397,13 @@ files.") (define-public r-summarizedexperiment (package (name "r-summarizedexperiment") - (version "1.0.2") + (version "1.2.2") (source (origin (method url-fetch) (uri (bioconductor-uri "SummarizedExperiment" version)) (sha256 (base32 - "1gpmh1mi70m5k5qnyjs1h0qn8ajrzalzic7k3762xchxsmmdvxn4")))) + "1c81acgw3a0ha5fgapfh9xq8yhryqqf8k259n2dz0mgz1k2d9klg")))) (properties `((upstream-name . "SummarizedExperiment"))) (build-system r-build-system) @@ -4439,13 +4426,13 @@ samples.") (define-public r-genomicalignments (package (name "r-genomicalignments") - (version "1.6.3") + (version "1.8.0") (source (origin (method url-fetch) (uri (bioconductor-uri "GenomicAlignments" version)) (sha256 (base32 - "02b9j1pfd39bkvb623k5k0ziq9rpw093hifqw65vb954dwj29jhd")))) + "1y4qgqxq8dax9swgl59m6i7ggjpqrjllgx87b9vwls3z0nf1i6xj")))) (properties `((upstream-name . "GenomicAlignments"))) (build-system r-build-system) @@ -4472,13 +4459,13 @@ alignments.") (define-public r-rtracklayer (package (name "r-rtracklayer") - (version "1.30.4") + (version "1.32.0") (source (origin (method url-fetch) (uri (bioconductor-uri "rtracklayer" version)) (sha256 (base32 - "0knjnwywh9k726mq28s3sy013zhw6d6nfa8hfw670720nq18i2p0")))) + "0nrwk1g8b1ymvbgnqniimbvwfq13r01va9rx3b03xj4hpywzy5nv")))) (build-system r-build-system) (arguments `(#:phases @@ -4517,13 +4504,13 @@ as well as query and modify the browser state, such as the current viewport.") (define-public r-genomicfeatures (package (name "r-genomicfeatures") - (version "1.22.13") + (version "1.24.2") (source (origin (method url-fetch) (uri (bioconductor-uri "GenomicFeatures" version)) (sha256 (base32 - "0n3rkj66la6wizgcsf2rmwcsyfxz9kv5zak337lmk1raqfnancz4")))) + "0ga5a7w8jnnq2k0kc07mshl6cggmbhzh42pzvhnilgl4x3kpbysl")))) (properties `((upstream-name . "GenomicFeatures"))) (build-system r-build-system) @@ -4582,13 +4569,13 @@ information about the latest version of the Gene Ontologies.") (define-public r-graph (package (name "r-graph") - (version "1.48.0") + (version "1.50.0") (source (origin (method url-fetch) (uri (bioconductor-uri "graph" version)) (sha256 (base32 - "16w75rji3kv24gfv44w66y1a2y75ax26rl470y3ypna0ndc3rrcd")))) + "0ys5s19m5r30rlr0fnx2h0z2qw7n2xrad4l2yfb1bbrk8dwyf4pi")))) (build-system r-build-system) (propagated-inputs `(("r-biocgenerics" ,r-biocgenerics))) @@ -4601,13 +4588,13 @@ information about the latest version of the Gene Ontologies.") (define-public r-topgo (package (name "r-topgo") - (version "2.22.0") + (version "2.24.0") (source (origin (method url-fetch) (uri (bioconductor-uri "topGO" version)) (sha256 (base32 - "029j9nb39b8l9xlzsp83pmjr8ap247aia387yzaa1yyw8klapdaf")))) + "1p4vsl32qhjw15yv9ym01ni63gjg73jaghlf17wc4zfn3iaz2zar")))) (properties `((upstream-name . "topGO"))) (build-system r-build-system) @@ -4616,6 +4603,7 @@ information about the latest version of the Gene Ontologies.") ("r-biobase" ,r-biobase) ("r-biocgenerics" ,r-biocgenerics) ("r-go-db" ,r-go-db) + ("r-matrixstats" ,r-matrixstats) ("r-graph" ,r-graph) ("r-sparsem" ,r-sparsem))) (home-page "http://bioconductor.org/packages/topGO") @@ -4631,13 +4619,13 @@ dependencies between GO terms can be implemented and applied.") (define-public r-bsgenome (package (name "r-bsgenome") - (version "1.38.0") + (version "1.40.0") (source (origin (method url-fetch) (uri (bioconductor-uri "BSgenome" version)) (sha256 (base32 - "130w0m6q8kkca7gyz1aqj5jjhalwvwi6rk2yvbjrnj4gpnncyrd2")))) + "08g3w47ysbmgj4hclb0x2wsn7pi9cnm3xkkfk4shgrka2g23qz44")))) (properties `((upstream-name . "BSgenome"))) (build-system r-build-system) @@ -4661,13 +4649,13 @@ genome data packages and support for efficient SNP representation.") (define-public r-impute (package (name "r-impute") - (version "1.44.0") + (version "1.46.0") (source (origin (method url-fetch) (uri (bioconductor-uri "impute" version)) (sha256 (base32 - "0y4x5jk7gsf4xn56jrkdcdnxpcfll4h6ivncd7n4snmzixldvmvw")))) + "0v9ibgv8kp8il52miz7b7z65mv6irqxylx6lfzkxgvxd970dgrz0")))) (inputs `(("gfortran" ,gfortran))) (build-system r-build-system) @@ -4681,13 +4669,13 @@ microarray data, using nearest neighbor averaging.") (define-public r-seqpattern (package (name "r-seqpattern") - (version "1.2.0") + (version "1.4.0") (source (origin (method url-fetch) (uri (bioconductor-uri "seqPattern" version)) (sha256 (base32 - "0p9zj6bic7sa0hb2bjm988kkk5n9r1kvlbqkzvy702f642n0j53i")))) + "1dj9hfnbdj11yjxwd8jmxrdkj7n6gmaaj6244g2psgarhjcp4wfb")))) (properties `((upstream-name . "seqPattern"))) (build-system r-build-system) @@ -4707,13 +4695,13 @@ reference point and sorted by a user defined feature.") (define-public r-genomation (package (name "r-genomation") - (version "1.2.2") + (version "1.4.2") (source (origin (method url-fetch) (uri (bioconductor-uri "genomation" version)) (sha256 (base32 - "0kvzwc21zsh2c8d34yn935ncn38bfkpzmknycd8h7b0521x20mi9")))) + "017hxh3yhizlsswd2vw8504arkckrcgq5zraiw67lldq9wzs5qzg")))) (build-system r-build-system) (propagated-inputs `(("r-biostrings" ,r-biostrings) @@ -4854,14 +4842,14 @@ annotations for the genome of the model mouse Mus musculus.") (define-public r-seqlogo (package (name "r-seqlogo") - (version "1.36.0") + (version "1.38.0") (source (origin (method url-fetch) (uri (bioconductor-uri "seqLogo" version)) (sha256 (base32 - "0kn1a1nf2j4v9c09vjkz9bmxlln7yhg87bnyrdsxy1m55x56rn5k")))) + "01jddx62nhi3r7czbh9hxy0wwpazbc9ax1fgagfxl6p4kx9xz9rb")))) (properties `((upstream-name . "seqLogo"))) (build-system r-build-system) (home-page "http://bioconductor.org/packages/seqLogo") @@ -5001,14 +4989,14 @@ Biostrings objects.") (define-public r-motifrg (package (name "r-motifrg") - (version "1.14.0") + (version "1.16.0") (source (origin (method url-fetch) (uri (bioconductor-uri "motifRG" version)) (sha256 (base32 - "1v9zm5629k2lcqbbgw8bwflvbircyxkfavbkvmbd212kgwcng8vn")))) + "1ds22paqc0923y6z1fy0arw0wxvvmglfvfgarhywv1qywhq68mbq")))) (properties `((upstream-name . "motifRG"))) (build-system r-build-system) (propagated-inputs @@ -5053,13 +5041,13 @@ two-dimensional genome scans.") (define-public r-zlibbioc (package (name "r-zlibbioc") - (version "1.16.0") + (version "1.18.0") (source (origin (method url-fetch) (uri (bioconductor-uri "zlibbioc" version)) (sha256 (base32 - "01wc26ndg4jsn1wyrl6zzq636gxaip5fci0xapym4lh9wryc4wnw")))) + "0m8l7zpx1l3qsk73k3ibkxxzzff938x3qhnwki1ymf3cnsg8cb36")))) (properties `((upstream-name . "zlibbioc"))) (build-system r-build-system) @@ -5069,6 +5057,70 @@ two-dimensional genome scans.") libraries for systems that do not have these available via other means.") (license license:artistic2.0))) +(define-public piranha + (package + (name "piranha") + (version "1.1.3") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/smithlabcode/piranha" + "/archive/svn/tags/piranha-" + version ".tar.gz")) + (sha256 + (base32 + "1lczxff01n4139w7xwqamlb36g9hgrcy93gh03nqszhwb8ivsrqd")))) + (build-system gnu-build-system) + (arguments + `(#:test-target "test" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'copy-smithlab-cpp + (lambda* (#:key inputs #:allow-other-keys) + (mkdir "src/smithlab_cpp") + (for-each (lambda (file) + (install-file file "./src/smithlab_cpp/")) + (find-files (assoc-ref inputs "smithlab-cpp"))) + #t)) + (add-after 'install 'install-to-store + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (mkdir-p bin) + (for-each (lambda (file) + (install-file file bin)) + (find-files "bin" ".*"))) + #t))) + #:configure-flags + (list (string-append "--with-bam_tools_headers=" + (assoc-ref %build-inputs "bamtools") "/include/bamtools") + (string-append "--with-bam_tools_library=" + (assoc-ref %build-inputs "bamtools") "/lib/bamtools")))) + (inputs + `(("bamtools" ,bamtools) + ("samtools" ,samtools-0.1) + ("gsl" ,gsl) + ("smithlab-cpp" + ,(let ((commit "3723e2d")) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/smithlabcode/smithlab_cpp.git") + (commit commit))) + (file-name (string-append "smithlab_cpp-" commit "-checkout")) + (sha256 + (base32 + "0l4gvbwslw5ngziskja41c00x1r06l3yidv7y0xw9djibhykzy0g"))))))) + (native-inputs + `(("python" ,python-2))) + (home-page "https://github.com/smithlabcode/piranha") + (synopsis "Peak-caller for CLIP-seq and RIP-seq data") + (description + "Piranha is a peak-caller for genomic data produced by CLIP-seq and +RIP-seq experiments. It takes input in BED or BAM format and identifies +regions of statistically significant read enrichment. Additional covariates +may optionally be provided to further inform the peak-calling process.") + (license license:gpl3+))) + (define-public pepr (package (name "pepr") diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm index 5ddd358607..3b5aba72c8 100644 --- a/gnu/packages/calendar.scm +++ b/gnu/packages/calendar.scm @@ -1,7 +1,8 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2015, 2016 Leo Famulari <leo@famulari.name> -;;; Copyright © 2016 Kei Yamashita <kei@openmailbox.org> +;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> +;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,7 +38,7 @@ (define-public libical (package (name "libical") - (version "1.0.1") + (version "2.0.0") (source (origin (method url-fetch) (uri (string-append @@ -45,10 +46,14 @@ version "/libical-" version ".tar.gz")) (sha256 (base32 - "14lmjj63zyx88rf1z71l0v9ms4c2vpdhmixksjjxgywp5p2f7708")))) + "1njn2kr0rrjqv5g3hdhpdzrhankyj4fl1bgn76z3g4n1b7vi2k35")))) (build-system cmake-build-system) (arguments '(#:tests? #f ; test suite appears broken + #:configure-flags + (list (string-append "-DCMAKE_INSTALL_RPATH=" + (assoc-ref %outputs "out") "/lib:" + (assoc-ref %outputs "out") "/lib64")) #:phases (modify-phases %standard-phases (add-before 'configure 'patch-paths diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm index af671d5780..7e8a361967 100644 --- a/gnu/packages/code.scm +++ b/gnu/packages/code.scm @@ -43,14 +43,14 @@ (define-public cflow (package (name "cflow") - (version "1.4") + (version "1.5") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/cflow/cflow-" version ".tar.bz2")) (sha256 (base32 - "1jkbq97ajcf834z68hbn3xfhiz921zhn39gklml1racf0kb3jzh3")))) + "0yq33k5ap1zpnja64n89iai4zh018ffr72wki5a6mzczd880mr3g")))) (build-system gnu-build-system) ;; Needed to have cflow-mode.el installed. diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index a8d675be4c..08eb146cf7 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 David Thompson <davet@gnu.org> ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,6 +20,8 @@ (define-module (gnu packages crypto) #:use-module (gnu packages) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages libbsd) #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) @@ -46,3 +49,42 @@ communication, encryption, decryption, signatures, etc.") (license isc) (home-page "http://libsodium.org"))) + +(define-public signify + (package + (name "signify") + (version "17") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/aperezdc/signify/" + "archive/v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0kfv2k1fqck31vwlnicavb0h541ilad9zd7j8zz8x2kx36wwqpr7")))) + (build-system gnu-build-system) + ;; TODO Build with libwaive (described in README.md), to implement something + ;; like OpenBSD's pledge(). + (arguments + `(#:tests? #f ; no test suite + #:make-flags + (list "CC=gcc" + (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (delete 'configure)))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libbsd" ,libbsd))) + (synopsis "Create and verify cryptographic signatures") + (description "The signify utility creates and verifies cryptographic +signatures using the elliptic curve Ed25519. This is a Linux port of the +OpenBSD tool of the same name.") + (home-page "https://github.com/aperezdc/signify") + ;; This package includes third-party code that was originally released under + ;; various non-copyleft licenses. See the source files for clarification. + (license (list bsd-3 bsd-4 expat isc public-domain + (non-copyleft "file://base64.c" + "See base64.c in the distribution for + the license from IBM."))))) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 6bf829f9d9..501377b7b7 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -332,14 +332,14 @@ as a drop-in replacement of MySQL.") (define-public postgresql (package (name "postgresql") - (version "9.5.2") + (version "9.5.3") (source (origin (method url-fetch) (uri (string-append "https://ftp.postgresql.org/pub/source/v" version "/postgresql-" version ".tar.bz2")) (sha256 (base32 - "0hbwwhh0pz0a6vf8j5bskiq7gmz9rwc9ywcqyhg5asshckj35lgq")))) + "1d500d2qsdzysnis6qi84xchnz5xh8kx8sjfmkbsijwaqlfw11bk")))) (build-system gnu-build-system) (arguments `(#:phases @@ -460,14 +460,14 @@ is in the public domain.") (define-public tdb (package (name "tdb") - (version "1.3.8") + (version "1.3.9") (source (origin (method url-fetch) (uri (string-append "https://www.samba.org/ftp/tdb/tdb-" version ".tar.gz")) (sha256 (base32 - "1cg6gmpgn36dd4bsp3j9k3hyrm87d8hdigqyyqxw5jga4w2aq186")))) + "1ll4q17scax1arg12faj8p25jq1f7q9irc3pwla0ziymwqkgf0bi")))) (build-system gnu-build-system) (arguments '(#:phases (alist-replace @@ -822,14 +822,15 @@ valid SQL query.") (define-public unixodbc (package (name "unixodbc") - (version "2.3.2") + (version "2.3.4") (source (origin (method url-fetch) (uri (string-append - "ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-" version ".tar.gz")) + "ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-" + version ".tar.gz")) (sha256 - (base32 "16jw5fq7wgfky6ak1h2j2pqx99jivsdl4q8aq6immpr55xs5jd4w")))) + (base32 "0f8y88rcc2akjvjv5y66yx7k0ms9h1s0vbcfy25j93didflhj59f")))) (build-system gnu-build-system) (synopsis "Data source abstraction library") (description "Unixodbc is a library providing an API with which to access diff --git a/gnu/packages/dillo.scm b/gnu/packages/dillo.scm index 0fd84d9177..6e0c4d17a9 100644 --- a/gnu/packages/dillo.scm +++ b/gnu/packages/dillo.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Kei Yamashita <kei@openmailbox.org> +;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 4ffc3c1b7f..6d80d37d27 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -7,6 +7,8 @@ ;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net> ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> +;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org> +;;; Copyright © 2016 humanitiesNerd <catonano@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -252,6 +254,36 @@ implementation, Emacs and, ultimately, the schemer, giving them access to live metadata.") (license license:bsd-3))) +(define-public geiser-next + ;; Geiser's upcoming version supports guile-next, and 0.8.1 does not. + ;; When the next Geiser release comes out, we can remove this. + (let ((commit "2e335695fc1a4a0b520b50deb761b958194cbec4")) + (package + (inherit geiser) + (name "geiser-next") + (version (string-append "0.8.1-1" + (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "git://git.sv.gnu.org/geiser.git") + (commit commit))) + (sha256 + (base32 + "00rmpn8zncq1fiah5m12l26z0s28bh7ql63kxdvksqdgfrisnmgf")))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("texinfo" ,texinfo) + ,@(package-native-inputs geiser))) + (arguments + (substitute-keyword-arguments (package-arguments geiser) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'autogen + (lambda _ + (zero? (system* "sh" "autogen.sh"))))))))))) + (define-public paredit (package (name "paredit") @@ -1364,26 +1396,24 @@ identifiers in the MIT-Scheme documentation.") (gexp->derivation (or name (basename url)) #~(begin (mkdir #$output) - (setenv "PATH" - (string-append #$gzip "/bin")) (chdir #$output) (copy-file #$drv (basename #$url)))))) (define-public emacs-constants (package (name "emacs-constants") - (version "2.2") + (version "2.6") + (home-page "https://staff.fnwi.uva.nl/c.dominik/Tools/constants") (source (origin (file-name (string-append name "-" version ".el")) - (method uncompressed-file-fetch) - (uri "https://staff.fnwi.uva.nl/c.dominik/Tools/constants/constants.el") - (patches (search-patches "emacs-constants-lisp-like.patch")) + (method url-fetch) + (uri (string-append "https://github.com/fedeinthemix/emacs-constants" + "/archive/v" version ".tar.gz")) (sha256 (base32 - "14q094aphsjhq8gklv7i5a7byl0ygz63cv3n6b5p8ji2jy0mnnw3")))) + "0pnrpmmxq8mh5h2hbrp5vcym0j0fh6dv3s7c5ccn18wllhzg9g7n")))) (build-system emacs-build-system) - (home-page "https://staff.fnwi.uva.nl/c.dominik/Tools/constants") (synopsis "Enter definition of constants into an Emacs buffer") (description "This package provides functions for inserting the definition of natural @@ -1551,3 +1581,53 @@ to recognize a name like \"RFC 1234\". This package enhances ffap so that it correctly finds RFCs even when a space appears before the number.") (license license:gpl3+))) + +(define-public emacs-zenburn-theme + (package + (name "emacs-zenburn-theme") + (version "2.4") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/bbatsov/zenburn-emacs/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0lyi84bm8sa7vj40n6zg6rlbsmi53mi1y9xn6gkjj29s5zbcnlg7")))) + (build-system emacs-build-system) + (home-page "http://github.com/bbatsov/zenburn-emacs") + (synopsis "Low contrast color theme for Emacs") + (description + "Zenburn theme is a port of the popular Vim Zenburn theme for Emacs. +It is built on top of the custom theme support in Emacs 24 or later.") + (license license:gpl3+))) + +(define-public emacs-smartparens + (package + (name "emacs-smartparens") + (version "1.7.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/Fuco1/smartparens/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1b47ppkzsj8j8a2p0bmvq05rhm2d2lsm3wlc0sg542r4zr6nji8s")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-dash" ,emacs-dash))) + (home-page "https://github.com/Fuco1/smartparens") + (synopsis "Paredit-like insertion, wrapping and navigation with user +defined pairs") + (description + "Smartparens is a minor mode for Emacs that deals with parens pairs +and tries to be smart about it. It started as a unification effort to +combine functionality of several existing packages in a single, +compatible and extensible way to deal with parentheses, delimiters, tags +and the like. Some of these packages include autopair, textmate, +wrap-region, electric-pair-mode, paredit and others. With the basic +features found in other packages it also brings many improvements as +well as completely new features.") + (license license:gpl3+))) diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index e9487d4207..b511d2c951 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,13 +24,21 @@ #:use-module (guix download) #:use-module (guix build utils) #:use-module (guix build-system gnu) + #:use-module (guix build-system cmake) + #:use-module (gnu packages base) #:use-module (gnu packages boost) #:use-module (gnu packages databases) + #:use-module (gnu packages emacs) + #:use-module (gnu packages groff) + #:use-module (gnu packages libedit) #:use-module (gnu packages linux) + #:use-module (gnu packages multiprecision) #:use-module (gnu packages pkg-config) #:use-module (gnu packages protobuf) #:use-module (gnu packages python) #:use-module (gnu packages qt) + #:use-module (gnu packages texinfo) + #:use-module (gnu packages textutils) #:use-module (gnu packages tls) #:use-module (gnu packages upnp)) @@ -81,3 +90,100 @@ collectively by the network. Bitcoin Core is the reference implementation of the bitcoin protocol. This package provides the Bitcoin Core command line client and a client based on Qt.") (license license:expat))) + +(define-public ledger + (package + (name "ledger") + (version "3.1.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/ledger/ledger/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "12jlv3gsjhrja25q9hrwh73cdacd2l3c2yyn8qnijav9mdhnbw4h")))) + (build-system cmake-build-system) + (arguments + `(#:modules ((guix build cmake-build-system) + (guix build utils) + (guix build emacs-utils)) + #:imported-modules (,@%cmake-build-system-modules + (guix build emacs-utils)) + #:configure-flags + `("-DBUILD_DOCS:BOOL=ON" + "-DBUILD_WEB_DOCS:BOOL=ON" + "-DBUILD_EMACSLISP:BOOL=ON" + "-DUSE_PYTHON:BOOL=ON" + "-DCMAKE_INSTALL_LIBDIR:PATH=lib" + ,(string-append "-DUTFCPP_INCLUDE_DIR:PATH=" + (assoc-ref %build-inputs "utfcpp") + "/include")) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'install-examples + (lambda* (#:key outputs #:allow-other-keys) + (let ((examples (string-append (assoc-ref outputs "out") + "/share/doc/ledger/examples"))) + (install-file "test/input/sample.dat" examples) + (install-file "test/input/demo.ledger" examples)) + #t)) + (add-after 'build 'build-doc + (lambda _ (zero? (system* "make" "doc")))) + (add-before 'check 'check-setup + ;; One test fails if it can't set the timezone. + (lambda* (#:key inputs #:allow-other-keys) + (setenv "TZDIR" + (string-append (assoc-ref inputs "tzdata") + "/share/zoneinfo")) + #t)) + (add-after 'install 'relocate-elisp + (lambda* (#:key outputs #:allow-other-keys) + (let* ((site-dir (string-append (assoc-ref outputs "out") + "/share/emacs/site-lisp")) + (guix-dir (string-append site-dir "/guix.d")) + (orig-dir (string-append site-dir "/ledger-mode")) + (dest-dir (string-append guix-dir "/ledger-mode"))) + (mkdir-p guix-dir) + (rename-file orig-dir dest-dir) + (emacs-generate-autoloads ,name dest-dir)) + #t))))) + (inputs + `(("boost" ,boost) + ("gmp" ,gmp) + ("libedit" ,libedit) + ("mpfr" ,mpfr) + ("python" ,python-2) + ("tzdata" ,tzdata) + ("utfcpp" ,utfcpp))) + (native-inputs + `(("emacs" ,emacs-no-x) + ("groff" ,groff) + ("texinfo" ,texinfo))) + (home-page "http://ledger-cli.org/") + (synopsis "Command-line double-entry accounting program") + (description + "Ledger is a powerful, double-entry accounting system that is +accessed from the UNIX command-line. This may put off some users, since +there is no flashy UI, but for those who want unparalleled reporting +access to their data there are few alternatives. + +Ledger uses text files for input. It reads the files and generates +reports; there is no other database or stored state. To use Ledger, +you create a file of your account names and transactions, run from the +command line with some options to specify input and requested reports, and +get output. The output is generally plain text, though you could generate +a graph or html instead. Ledger is simple in concept, surprisingly rich +in ability, and easy to use.") + ;; There are some extra licenses in files which do not presently get + ;; installed when you build this package. Different versions of the GPL + ;; are used in the contrib and python subdirectories. The bundled version + ;; of utfcpp is under the Boost 1.0 license. Also the file + ;; `tools/update_copyright_year` has an Expat license. + (license (list license:bsd-3 + license:asl2.0 ; src/strptime.cc + (license:non-copyleft + "file://src/wcwidth.cc" + "See src/wcwidth.cc in the distribution.") + license:gpl2+)))) ; lisp/* diff --git a/gnu/packages/fltk.scm b/gnu/packages/fltk.scm index bc6b4ab5e6..27d2f62ca7 100644 --- a/gnu/packages/fltk.scm +++ b/gnu/packages/fltk.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2014 John Darrington <jmd@gnu.org> ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2016 Kei Yamashita <kei@openmailbox.org> +;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index a610776096..9bd080c7f9 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -82,14 +82,14 @@ freedesktop.org project.") (define-public libinput (package (name "libinput") - (version "1.2.0") + (version "1.3.0") (source (origin (method url-fetch) (uri (string-append "https://freedesktop.org/software/libinput/" name "-" version ".tar.xz")) (sha256 (base32 - "0b3f67xsy1s84cvzw22mjfkbcv6pj4p4yns4h3m0fmb7zqbvjm0p")))) + "1sn1s1bz06fa49izqkqf519sjclsvhf42i6slzx1w5hx4vxpb2lr")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -288,7 +288,7 @@ applications, X servers (rootless or fullscreen) or other display servers.") (define-public exempi (package (name "exempi") - (version "2.2.2") + (version "2.3.0") (source (origin (method url-fetch) (uri (string-append @@ -296,7 +296,7 @@ applications, X servers (rootless or fullscreen) or other display servers.") name "-" version ".tar.bz2")) (sha256 (base32 - "01vcd1mfn2s0iiq2cjyzgvnxx6kcq9cwra1iipijhs0vwvjx0yhf")))) + "0jcrv3w8m415cq8xi886hcxfqbrn5dczxbzybx9bhf3dbqsyv6nq")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list (string-append "--with-boost=" @@ -448,7 +448,7 @@ interfaces, based on the useradd, usermod and userdel commands.") (define-public libmbim (package (name "libmbim") - (version "1.12.2") + (version "1.12.4") (source (origin (method url-fetch) (uri (string-append @@ -456,7 +456,7 @@ interfaces, based on the useradd, usermod and userdel commands.") name "-" version ".tar.xz")) (sha256 (base32 - "0abv0h9c3kbw4bq1b9270sg189jcjj3x3wa91bj836ynwg9m34wl")))) + "0flpgzsqpjgybjkx4smbb4rjxf2w1xgd1v9gmz61rvl89qasznbv")))) (build-system gnu-build-system) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-mkenums @@ -467,7 +467,7 @@ interfaces, based on the useradd, usermod and userdel commands.") (inputs `(("libgudev" ,libgudev))) (synopsis "Library to communicate with MBIM-powered modems") - (home-page "http://www.freedesktop.org/wiki/Software/libmbim/") + (home-page "https://www.freedesktop.org/wiki/Software/libmbim/") (description "Libmbim is a GLib-based library for talking to WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol.") @@ -479,7 +479,7 @@ which speak the Mobile Interface Broadband Model (MBIM) protocol.") (define-public libqmi (package (name "libqmi") - (version "1.12.8") + (version "1.14.2") (source (origin (method url-fetch) (uri (string-append @@ -487,7 +487,7 @@ which speak the Mobile Interface Broadband Model (MBIM) protocol.") name "-" version ".tar.xz")) (sha256 (base32 - "19w2zkm5xl6i3vm1xhjjclks4awas17gfbb2k5y66gwnkiykjfnj")))) + "0h009bzss4bal47nk21lyp4s3mmlcivhhaaj7r9229qvx85bi0v2")))) (build-system gnu-build-system) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-mkenums diff --git a/gnu/packages/fvwm.scm b/gnu/packages/fvwm.scm index b994fbf6b6..933820e5fa 100644 --- a/gnu/packages/fvwm.scm +++ b/gnu/packages/fvwm.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> +;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -33,15 +34,16 @@ (define-public fvwm (package (name "fvwm") - (version "2.6.5") + (version "2.6.6") (source (origin (method url-fetch) (uri (string-append - "ftp://ftp.fvwm.org/pub/fvwm/version-2/fvwm-" - version ".tar.bz2")) + "https://github.com/fvwmorg/fvwm/releases/download/" + "version-" (string-join (string-split version #\.) "_") + "/" name "-" version ".tar.gz")) (sha256 (base32 - "1ks8igvmzm0m0sra05k8xzc8vkqy3gv1qskl6davw1irqnarjm11")))) + "0b6w0vk6cpqaz0ws3vl4by0mycv33r42a0m806j2h8avy9ghipn5")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index 8bfd2f1cb0..56617bb895 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2015 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016 Kei Yamashita <kei@openmailbox.org> +;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -272,14 +272,14 @@ archive on a per-file basis.") (define-public love (package (name "love") - (version "0.10.0") + (version "0.10.1") (source (origin (method url-fetch) (uri (string-append "https://bitbucket.org/rude/love/downloads/" "love-" version "-linux-src.tar.gz")) (sha256 (base32 - "1r2n1nrw3hcdvy14fjbwz3l9swcy65v3lqwpj2frnkkcwncdz94p")))) + "1ys18m7c4994k5s7avqlf17sc2icx5zgvfplz504q1ka16hwkc52")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 75f926edce..fc16862471 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 John Darrington <jmd@gnu.org> -;;; Copyright © 2014, 2015 David Thompson <dthompson2@worcester.edu> +;;; Copyright © 2014, 2015, 2016 David Thompson <dthompson2@worcester.edu> ;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com> ;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net> @@ -18,7 +18,7 @@ ;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> ;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net> ;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org> -;;; Copyright © 2016 Kei Yamashita <kei@openmailbox.org> +;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> ;;; ;;; This file is part of GNU Guix. @@ -642,7 +642,7 @@ match, cannon keep, and grave-itation pit.") (define minetest-data (package (name "minetest-data") - (version "0.4.13") + (version "0.4.14") (source (origin (method url-fetch) (uri (string-append @@ -651,7 +651,7 @@ match, cannon keep, and grave-itation pit.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "04xnyfap75v3p818kpqb07xshqwqzpws5xjvw5m96qnd9x4725ld")))) + "11fzdh4icx2yvjfz1skdql0d0wxpzdr006k993v33x72s0q2ig7f")))) (build-system trivial-build-system) (native-inputs `(("source" ,source) @@ -683,7 +683,7 @@ match, cannon keep, and grave-itation pit.") (define-public minetest (package (name "minetest") - (version "0.4.13") + (version "0.4.14") (source (origin (method url-fetch) (uri (string-append @@ -692,7 +692,7 @@ match, cannon keep, and grave-itation pit.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1xzrvsg0fpbj5p4pz6lls11m3ab4y2bnjlsm4gnw68x9006ffznp")))) + "0m3hhk5icx4y4gd970z7ya2013fq4vvqbjljmck62ik03baf8g90")))) (build-system cmake-build-system) (arguments '(#:configure-flags diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 0ec8026bb8..b8e13f3f8e 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -618,6 +618,17 @@ as the 'native-search-paths' field." (variable "LIBRARY_PATH") (files '("lib" "lib64")))))) +(define-public gcc-objc-4.9 + (custom-gcc gcc-4.9 "gcc-objc" '("objc") + (list (search-path-specification + (variable "OBJC_INCLUDE_PATH") + (files '("include"))) + (search-path-specification + (variable "LIBRARY_PATH") + (files '("lib" "lib64")))))) + +(define-public gcc-objc gcc-objc-4.9) + (define-public gcc-objc++-4.8 (custom-gcc gcc-4.8 "gcc-objc++" '("obj-c++") (list (search-path-specification @@ -627,6 +638,17 @@ as the 'native-search-paths' field." (variable "LIBRARY_PATH") (files '("lib" "lib64")))))) +(define-public gcc-objc++-4.9 + (custom-gcc gcc-4.9 "gcc-objc++" '("obj-c++") + (list (search-path-specification + (variable "OBJCPLUS_INCLUDE_PATH") + (files '("include"))) + (search-path-specification + (variable "LIBRARY_PATH") + (files '("lib" "lib64")))))) + +(define-public gcc-objc++ gcc-objc++-4.9) + (define (make-libstdc++-doc gcc) "Return a package with the libstdc++ documentation for GCC." (package diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm index 6ae5579b9c..e52a030f86 100644 --- a/gnu/packages/gd.scm +++ b/gnu/packages/gd.scm @@ -1,7 +1,8 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> +;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; ;;; This file is part of GNU Guix. ;;; @@ -48,7 +49,8 @@ "libgd-" version ".tar.xz")) (sha256 (base32 - "11djy9flzxczphigqgp7fbbblbq35gqwwhn9xfcckawlapa1xnls")))) + "11djy9flzxczphigqgp7fbbblbq35gqwwhn9xfcckawlapa1xnls")) + (patches (search-patches "gd-CVE-2016-3074.patch")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -69,7 +71,8 @@ formats. GD is commonly used to generate charts, graphics, thumbnails, and most anything else, on the fly. While not restricted to use on the web, the most common applications of GD involve website development.") (license (non-copyleft "file://COPYING" - "See COPYING file in the distribution.")))) + "See COPYING file in the distribution.")) + (properties '((cpe-name . "libgd"))))) (define-public perl-gd (package diff --git a/gnu/packages/geeqie.scm b/gnu/packages/geeqie.scm index 9cc8f74255..7ea75aa3a0 100644 --- a/gnu/packages/geeqie.scm +++ b/gnu/packages/geeqie.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -63,8 +64,9 @@ and XMP metadata of images in various formats.") (version "1.1") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/geeqie/geeqie-" - version ".tar.gz")) + (uri (string-append "https://github.com/BestImageViewer/geeqie/" + "archive/" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 "1kzy39z9505xkayyx7rjj2wda76xy3ch1s5z35zn8yli54ffhi2m")))) @@ -78,7 +80,7 @@ and XMP metadata of images in various formats.") (native-inputs `(("intltool" ,intltool) ("pkg-config" ,pkg-config))) - (home-page "http://geeqie.sourceforge.net") + (home-page "http://www.geeqie.org/") (synopsis "Lightweight GTK+ based image viewer") (description "Geeqie is a lightweight GTK+ based image viewer for Unix like operating diff --git a/gnu/packages/gkrellm.scm b/gnu/packages/gkrellm.scm index 31bca00889..ed83186ae8 100644 --- a/gnu/packages/gkrellm.scm +++ b/gnu/packages/gkrellm.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -33,7 +34,7 @@ (source (origin (method url-fetch) - (uri (string-append "http://members.dslextreme.com/users/billw/gkrellm/gkrellm-" + (uri (string-append "http://gkrellm.srcbox.net/releases/gkrellm-" version ".tar.bz2")) (sha256 (base32 @@ -57,7 +58,7 @@ (list (string-append "INSTALLROOT=" out) "CC=gcc" "X11_LIBS = -lX11 -lSM -lICE -lgmodule-2.0")))) - (home-page "http://members.dslextreme.com/users/billw/gkrellm/gkrellm.html") + (home-page "http://gkrellm.srcbox.net/") (synopsis "System monitors") (description "GKrellM is a single process stack of system monitors which supports diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 83e4f83163..c5d53d1e0a 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -15,7 +15,9 @@ ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org> ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net> ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org> -;;; Copyright © 2016 Kei Yamashita <kei@openmailbox.org> +;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> +;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2016 Roel Janssen <roel@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -58,6 +60,7 @@ #:use-module (gnu packages flex) #:use-module (gnu packages docbook) #:use-module (gnu packages enchant) + #:use-module (gnu packages fontutils) #:use-module (gnu packages game-development) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) @@ -162,6 +165,55 @@ Desktop. It is designed to be as simple as possible and has some unique features to enable users to create their discs easily and quickly.") (license license:gpl2+))) +(define-public dia + ;; This version from GNOME's repository includes fixes for compiling with + ;; recent versions of the build tools. The latest activity on the + ;; pre-GNOME version has been in 2014, while GNOME has continued applying + ;; fixes in 2016. + (let ((commit "fbc306168edab63db80b904956117cbbdc514ee4")) + (package + (name "dia") + (version (string-append "0.97.2-" (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.gnome.org/browse/dia") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1b4bba0k8ph4cwgw8xjglss0p6n111bpd5app67lrq79mp0ad06l")))) + (build-system gnu-build-system) + (inputs + `(("glib" ,glib "bin") + ("pango" ,pango) + ("gdk-pixbuf" ,gdk-pixbuf) + ("gtk+" ,gtk+-2) + ("libxml2" ,libxml2) + ("freetype" ,freetype) + ("libart-lgpl" ,libart-lgpl))) + (native-inputs + `(("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ("automake" ,automake) + ("autoconf" ,autoconf) + ("libtool" ,libtool) + ("perl" ,perl) + ("python-wrapper" ,python-wrapper))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'configure 'run-autogen + (lambda _ + (system* "sh" "autogen.sh")))))) + (home-page "https://wiki.gnome.org/Apps/Dia") + (synopsis "Diagram creation for GNOME") + (description "Dia can be used to draw different types of diagrams, and +includes support for UML static structure diagrams (class diagrams), entity +relationship modeling, and network diagrams. The program supports various file +formats like PNG, SVG, PDF and EPS.") + (license license:gpl2+)))) + (define-public gnome-common (package (name "gnome-common") @@ -682,7 +734,8 @@ database is translated at Transifex.") ("libpng" ,libpng))) (native-inputs `(("pkg-config" ,pkg-config) - ("glib" ,glib "bin"))) + ("glib" ,glib "bin") + ("gobject-introspection" ,gobject-introspection))) (home-page "https://developer-next.gnome.org/libnotify/") (synopsis "GNOME desktop notification library") @@ -5022,3 +5075,74 @@ specified duration and save it as a GIF encoded animated image file.") "Libzapojit is a GLib-based library for accessing online service APIs of Microsoft SkyDrive and Hotmail, using their REST protocols.") (license license:lgpl2.1+))) + +(define-public gnome-calendar + (package + (name "gnome-calendar") + (version "3.20.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1vny8fclwglapdyxd2g9fbwdlk5hhnb993k2hvq3rf0hcgswycpi")))) + (build-system glib-or-gtk-build-system) + (native-inputs + `(("intltool" ,intltool) + ("pkg-config" ,pkg-config))) + (inputs + `(("bdb" ,bdb) + ("desktop-file-utils" ,desktop-file-utils) + ("evolution-data-server" ,evolution-data-server) + ("gnome-online-accounts" ,gnome-online-accounts))) + (home-page "https://wiki.gnome.org/Apps/Calendar") + (synopsis "GNOME's calendar application") + (description + "GNOME Calendar is a simple calendar application designed to fit the GNOME +desktop. It supports multiple calendars, monthly view and yearly view.") + (license license:gpl3+))) + +(define-public gnome-tweak-tool + (package + (name "gnome-tweak-tool") + (version "3.20.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/gnome-tweak-tool/" + (version-major+minor version) "/" + "gnome-tweak-tool-" version ".tar.xz")) + (patches (list + (search-patch "gnome-tweak-tool-search-paths.patch"))) + (sha256 + (base32 + "1fj6wjvnjygzm9br3sw9gya6d18yly1rm69yaiar9spfbkvv4wai")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags '("--localstatedir=/tmp" + "--sysconfdir=/tmp") + #:imported-modules ((guix build python-build-system) + ,@%gnu-build-system-modules) + #:phases (modify-phases %standard-phases + (add-after 'install 'wrap + (@@ (guix build python-build-system) wrap))))) + (native-inputs + `(("intltool" ,intltool) + ("pkg-config" ,pkg-config))) + (inputs + `(("python" ,python-2) + ("python2-pygobject" ,python2-pygobject))) + (propagated-inputs + `(("libnotify" ,libnotify) + ("gobject-introspection" ,gobject-introspection) + ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) + ("gtk+" ,gtk+))) + (synopsis "Customize advanced GNOME 3 options") + (home-page "https://wiki.gnome.org/action/show/Apps/GnomeTweakTool") + (description + "GNOME Tweak Tool allows adjusting advanced configuration settings in +GNOME 3. This includes things like the fonts used in user interface elements, +alternative user interface themes, changes in window management behavior, +GNOME Shell appearance and extension, etc.") + (license license:gpl3+))) diff --git a/gnu/packages/gnu-pw-mgr.scm b/gnu/packages/gnu-pw-mgr.scm index 76329e8084..461f4f8cb7 100644 --- a/gnu/packages/gnu-pw-mgr.scm +++ b/gnu/packages/gnu-pw-mgr.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,7 +30,7 @@ (define-public gnu-pw-mgr (package (name "gnu-pw-mgr") - (version "1.6") + (version "2.0") (source (origin (method url-fetch) @@ -37,7 +38,7 @@ version ".tar.xz")) (sha256 (base32 - "141wfm4w420ygrl7qvrc84drzv34jym0d2bxqcgi7n1vimql0slp")))) + "19qvg37snfa8s06q5crx25m1r1n4l0wvfpkbdxz17q7whp0plrl6")))) (build-system gnu-build-system) (native-inputs `(("which" ,which) diff --git a/gnu/packages/gnustep.scm b/gnu/packages/gnustep.scm index 31fca5b504..30574fca18 100644 --- a/gnu/packages/gnustep.scm +++ b/gnu/packages/gnustep.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2016 Kei Yamashita <kei@openmailbox.org> +;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -101,7 +101,15 @@ interface. It is fast, feature rich, easy to configure, and easy to use.") version ".orig.tar.gz")) (sha256 (base32 - "0hi6bivv3xd2k68w08krndfl68wdx7nmc2wjzsmcd4q3qgwgyk44")))) + "0hi6bivv3xd2k68w08krndfl68wdx7nmc2wjzsmcd4q3qgwgyk44")) + (modules '((guix build utils))) + (snippet + ;; Fix memory leak: + ;; <https://lists.gnu.org/archive/html/guix-devel/2016-05/msg00466.html>. + '(substitute* "upower.c" + (("up = up_client_new\\(\\);") + (string-append "if (!up)\n" + " up = up_client_new();")))))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no "check" target diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index df1075c370..7e52534b8f 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -517,4 +517,8 @@ standards.") software, which does not recommend non-free plugins and addons. It also features built-in privacy-protecting features.") (license license:mpl2.0) ;and others, see toolkit/content/license.html - (properties '((ftp-directory . "/gnu/gnuzilla"))))) + (properties + `((ftp-directory . "/gnu/gnuzilla") + (cpe-name . "firefox_esr") + (cpe-version . ,(string-drop-right version + (string-length "-gnu1"))))))) diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index d08542fd4a..ca99cd0302 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -295,15 +295,30 @@ visual effects work for film.") "1y51yjrpsihas1jy905m9p3r8iiyhq6bwi2690c564i5dnix1f9d")))) (build-system gnu-build-system) (arguments - `(;; FIXME: At least "testrcore1" fails. - #:tests? #f - #:phases + `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'replace-/bin/ls + (add-after 'unpack 'fix-tests + (lambda _ + ;; Our grep does not support perl regular expressions. + (substitute* "taptool.sh" + (("grep -P") "grep -E")) + ;; Disable path tests because we cannot access /bin or /sbin. + (substitute* "rcore/tests/multitest.cc" + (("TCMP \\(Path::equals \\(\"/bin\"") "//")) + #t)) + (add-before 'check 'pre-check + (lambda _ + ;; The test suite requires a running X server (with DISPLAY + ;; number 99 or higher). + (system "Xvfb :99 &") + (setenv "DISPLAY" ":99") + #t)) + (add-after 'unpack 'replace-fhs-paths (lambda _ (substitute* (cons "Makefile.decl" (find-files "." "^Makefile\\.in$")) - (("/bin/ls") (which "ls"))) + (("/bin/ls") (which "ls")) + (("/usr/bin/env") (which "env"))) #t))))) ;; These libraries are listed in the "Required" section of the pkg-config ;; file. @@ -311,7 +326,8 @@ visual effects work for film.") `(("librsvg" ,librsvg) ("cairo" ,cairo) ("pango" ,pango) - ("libxml2" ,libxml2))) + ("libxml2" ,libxml2) + ("python2-enum34" ,python2-enum34))) (inputs `(("gdk-pixbuf" ,gdk-pixbuf) ("libpng" ,libpng-1.2) @@ -326,7 +342,8 @@ visual effects work for film.") ("doxygen" ,doxygen) ("graphviz" ,graphviz) ("intltool" ,intltool) - ("pkg-config" ,pkg-config))) + ("pkg-config" ,pkg-config) + ("xvfb" ,xorg-server))) (home-page "http://rapicorn.org") (synopsis "Toolkit for rapid development of user interfaces") (description diff --git a/gnu/packages/grub.scm b/gnu/packages/grub.scm index 5fc7ee8386..ec2feebbf4 100644 --- a/gnu/packages/grub.scm +++ b/gnu/packages/grub.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Leo Famulari <leo@famulari.name> ;;; @@ -132,4 +132,5 @@ then goes on to load the rest of the operating system. As a multiboot bootloader, GRUB handles the presence of multiple operating systems installed on the same computer; upon booting the computer, the user is presented with a menu to select one of the installed operating systems.") - (license gpl3+))) + (license gpl3+) + (properties '((cpe-name . "grub2"))))) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 7e81a81986..1fe52a4b83 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -10,6 +10,7 @@ ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de> +;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -41,6 +42,7 @@ #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages docbook) + #:use-module (gnu packages enchant) #:use-module (gnu packages fontutils) #:use-module (gnu packages gettext) #:use-module (gnu packages ghostscript) @@ -1244,3 +1246,30 @@ Redmond95 and ThinIce.") "Murrine is a cairo-based GTK+ theming engine. It is named after the glass artworks done by Venicians glass blowers.") (license license:gpl2+))) + +(define-public gtkspell3 + (package + (name "gtkspell3") + (version "3.0.8") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/gtkspell/" + version "/" name "-" version ".tar.gz")) + (sha256 + (base32 + "1zrz5pz4ryvcssk898liynmy2wyxgj95ak7mp2jv7x62yzihq6h1")))) + (build-system gnu-build-system) + (native-inputs + `(("intltool" ,intltool) + ("pkg-config" ,pkg-config))) + (inputs + `(("enchant" ,enchant) + ("gobject-introspection" ,gobject-introspection) + ("gtk+" ,gtk+) + ("pango" ,pango))) + (home-page "http://gtkspell.sourceforge.net") + (synopsis "Spell-checking addon for GTK's TextView widget") + (description + "GtkSpell provides word-processor-style highlighting and replacement of +misspelled words in a GtkTextView widget.") + (license license:gpl2+))) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 3b7977a629..8838426130 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -566,16 +566,15 @@ See http://minikanren.org/ for more on miniKanren generally.") (define-public guile-irregex (package (name "guile-irregex") - (version "0.9.3") + (version "0.9.4") (source (origin (method url-fetch) (uri (string-append "http://synthcode.com/scheme/irregex/irregex-" - version - ".tar.gz")) + version ".tar.gz")) (sha256 (base32 - "1b8jl7bycyl2ssp6sb1j24pp9hvqyxm85ki9bmwd50glyyjs5zay")))) + "0cmaqvqvyarcnnsyrl2p6vwyv1r3k1q7qw8p9zrlnz1vpbj7vb90")))) (build-system gnu-build-system) (arguments `(#:modules ((guix build utils) diff --git a/gnu/packages/hugs.scm b/gnu/packages/hugs.scm index 36be5aee4a..2dcc61f4de 100644 --- a/gnu/packages/hugs.scm +++ b/gnu/packages/hugs.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> +;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,7 +30,7 @@ (source (origin (method url-fetch) - (uri (string-append "http://cvs.haskell.org/Hugs/downloads/2006-09/" + (uri (string-append "https://www.haskell.org/hugs/downloads/2006-09/" name "98-plus-" version ".tar.gz")) (sha256 (base32 @@ -67,7 +68,7 @@ (("/bin/cp") (which "cp")))) %standard-phases) #:tests? #f)) ; no test target - (home-page "http://haskell.org/hugs") + (home-page "https://www.haskell.org/hugs/") (synopsis "Functional programming system based on Haskell 98") (description "Hugs 98 is an interpreter and programming environment for developing diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm index ff29aee489..7a0a158899 100644 --- a/gnu/packages/hurd.scm +++ b/gnu/packages/hurd.scm @@ -32,7 +32,7 @@ (define-public gnumach-headers (package (name "gnumach-headers") - (version "1.6") + (version "1.7") (source (origin (method url-fetch) @@ -40,7 +40,7 @@ version ".tar.gz")) (sha256 (base32 - "1m7xwsrv6x6gk9xi5phs104rdn9q3lr63p348vyv0dzd6r3zyncb")))) + "1vd0bykshf6ilr55792b5lf6yd5ywlkp1wqz00dcsx7fq3rfadz2")))) (build-system gnu-build-system) (arguments `(#:phases (alist-replace @@ -66,7 +66,7 @@ (define-public mig (package (name "mig") - (version "1.6") + (version "1.7") (source (origin (method url-fetch) @@ -74,7 +74,7 @@ version ".tar.gz")) (sha256 (base32 - "1i9qd6j5g8wsv9k9n6vpdqflyw0284wyayb2s2h7pp4yyi2jsksk")))) + "1hxqd8p14pgamgavmbmziswvd1zvwqx7lgc9qga805q9jrs93q2b")))) (build-system gnu-build-system) ;; Flex is needed both at build and run time. (inputs `(("gnumach-headers" ,gnumach-headers) @@ -97,14 +97,14 @@ communication.") (define-public hurd-headers (package (name "hurd-headers") - (version "0.7") + (version "0.8") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/hurd/hurd-" version ".tar.gz")) (sha256 (base32 - "1q2pyc16vb5plqi8hlwnnc9jk8zlifm91cavz6x7vhbwy0nh2yvh")))) + "1pbc4aqgzxvkgivw80ghp3w755cl0fwxmg357vq7chimj64jk78d")))) (build-system gnu-build-system) (native-inputs `(;; Autoconf shouldn't be necessary but there seems to be a bug in the diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 57c0be60e7..3651e97f3e 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -392,14 +392,15 @@ error-resilience, a Java-viewer for j2k-images, ...") (define-public giflib (package (name "giflib") - (version "5.1.2") + (version "5.1.4") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/giflib/giflib-" (first (string-split version #\.)) ".x/giflib-" version ".tar.bz2")) (sha256 - (base32 "0z1adsza46q84chkxwr6x8ph11k117k8nywkzwar6bxhqf2a1h3n")))) + (base32 + "1md83dip8rf29y40cm5r7nn19705f54iraz6545zhwa6y8zyq9yz")))) (build-system gnu-build-system) (outputs '("bin" ; utility programs "out")) ; library @@ -408,26 +409,25 @@ error-resilience, a Java-viewer for j2k-images, ...") ("libsm" ,libsm) ("perl" ,perl))) (arguments - `(#:phases (alist-cons-after - 'unpack 'disable-html-doc-gen - (lambda _ - (substitute* "doc/Makefile.in" - (("^all: allhtml manpages") ""))) - (alist-cons-after - 'install 'install-manpages - (lambda* (#:key outputs #:allow-other-keys) - (let* ((bin (assoc-ref outputs "bin")) - (man1dir (string-append bin "/share/man/man1"))) - (mkdir-p man1dir) - (for-each (lambda (file) - (let ((base (basename file))) - (format #t "installing `~a' to `~a'~%" - base man1dir) - (copy-file file - (string-append - man1dir "/" base)))) - (find-files "doc" "\\.1")))) - %standard-phases)))) + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-html-doc-gen + (lambda _ + (substitute* "doc/Makefile.in" + (("^all: allhtml manpages") "")))) + (add-after 'install 'install-manpages + (lambda* (#:key outputs #:allow-other-keys) + (let* ((bin (assoc-ref outputs "bin")) + (man1dir (string-append bin "/share/man/man1"))) + (mkdir-p man1dir) + (for-each (lambda (file) + (let ((base (basename file))) + (format #t "installing `~a' to `~a'~%" + base man1dir) + (copy-file file + (string-append + man1dir "/" base)))) + (find-files "doc" "\\.1")))))))) (synopsis "Tools and library for working with GIF images") (description "GIFLIB is a library for reading and writing GIF images. It is API and @@ -501,9 +501,13 @@ more modular, simple, and flexible.") (version "1.2.4") (source (origin (method url-fetch) - (uri (string-append - "http://linuxbrit.co.uk/downloads/giblib-" - version ".tar.gz")) + (uri (list + (string-append + "http://linuxbrit.co.uk/downloads/giblib-" + version ".tar.gz") + (string-append + "https://sourceforge.net/projects/slackbuildsdirectlinks/" + "files/giblib/giblib-" version ".tar.gz"))) (sha256 (base32 "1b4bmbmj52glq0s898lppkpzxlprq9aav49r06j2wx4dv3212rhp")))) diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm index 095f662376..a7bbe0cce0 100644 --- a/gnu/packages/imagemagick.scm +++ b/gnu/packages/imagemagick.scm @@ -40,14 +40,14 @@ (define-public imagemagick (package (name "imagemagick") - (version "6.9.3-10") + (version "6.9.4-4") (source (origin (method url-fetch) (uri (string-append "mirror://imagemagick/ImageMagick-" version ".tar.xz")) (sha256 (base32 - "0sik2jl1cywnpr5xm28mjhs1l8kxry65f3v2kqzp0cczhwf04gz3")))) + "005nnp0masv59yfcdip6qld86567zjbz59c9lkcqrxclm27vmx0p")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--with-frozenpaths") diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index e715798691..ff785efad6 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -66,48 +66,41 @@ (sha256 (base32 "03mhzraikcs4fsz7d3h5af9pw1bbcfd6dglsvbk2ciwimy9zj30q")))) - (build-system gnu-build-system) + (build-system ant-build-system) (arguments - `(#:make-flags '("-f" "make_linux.mak") + `(#:jar-name "swt.jar" #:tests? #f ; no "check" target #:phases - (alist-replace - 'unpack - (lambda _ - (and (mkdir "swt") - (zero? (system* "unzip" (assoc-ref %build-inputs "source") "-d" "swt")) - (chdir "swt") - (mkdir "src") - (zero? (system* "unzip" "src.zip" "-d" "src")) - (chdir "src"))) - (alist-replace - 'build - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((lib (string-append (assoc-ref outputs "out") "/lib"))) - (setenv "JAVA_HOME" (assoc-ref inputs "jdk")) - - ;; Build shared libraries. Users of SWT have to set the system - ;; property swt.library.path to the "lib" directory of this - ;; package output. - (mkdir-p lib) - (setenv "OUTPUT_DIR" lib) - (zero? (system* "bash" "build.sh")) - - ;; build jar - (mkdir "build") - (for-each (lambda (file) - (format #t "Compiling ~s\n" file) - (system* "javac" "-d" "build" file)) - (find-files "." "\\.java")) - (zero? (system* "jar" "cvf" "swt.jar" "-C" "build" ".")))) - (alist-cons-after - 'install 'install-java-files - (lambda* (#:key outputs #:allow-other-keys) - (let ((java (string-append (assoc-ref outputs "out") - "/share/java"))) - (install-file "swt.jar" java) - #t)) - (alist-delete 'configure %standard-phases)))))) + (modify-phases %standard-phases + (replace 'unpack + (lambda* (#:key source #:allow-other-keys) + (and (mkdir "swt") + (zero? (system* "unzip" source "-d" "swt")) + (chdir "swt") + (mkdir "src") + (zero? (system* "unzip" "src.zip" "-d" "src"))))) + ;; The classpath contains invalid icecat jars. Since we don't need + ;; anything other than the JDK on the classpath, we can simply unset + ;; it. + (add-after 'configure 'unset-classpath + (lambda _ (unsetenv "CLASSPATH") #t)) + (add-before 'build 'build-native + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((lib (string-append (assoc-ref outputs "out") "/lib"))) + ;; Build shared libraries. Users of SWT have to set the system + ;; property swt.library.path to the "lib" directory of this + ;; package output. + (mkdir-p lib) + (setenv "OUTPUT_DIR" lib) + (with-directory-excursion "src" + (zero? (system* "bash" "build.sh")))))) + (add-after 'install 'install-native + (lambda* (#:key outputs #:allow-other-keys) + (let ((lib (string-append (assoc-ref outputs "out") "/lib"))) + (for-each (lambda (file) + (install-file file lib)) + (find-files "." "\\.so$")) + #t)))))) (inputs `(("xulrunner" ,icecat) ("gtk" ,gtk+-2) @@ -117,8 +110,7 @@ ("glu" ,glu))) (native-inputs `(("pkg-config" ,pkg-config) - ("unzip" ,unzip) - ("jdk" ,icedtea "jdk"))) + ("unzip" ,unzip))) (home-page "https://www.eclipse.org/swt/") (synopsis "Widget toolkit for Java") (description diff --git a/gnu/packages/jemalloc.scm b/gnu/packages/jemalloc.scm index 52d43e8bd3..e82bcd84c8 100644 --- a/gnu/packages/jemalloc.scm +++ b/gnu/packages/jemalloc.scm @@ -27,7 +27,7 @@ (define-public jemalloc (package (name "jemalloc") - (version "4.1.0") + (version "4.2.0") (source (origin (method url-fetch) (uri (string-append @@ -35,7 +35,7 @@ name "-" version ".tar.bz2")) (sha256 (base32 - "13pc6gcs5d6ws63jv83vslrb1vlqdnf1dg43awkb9bbj9xqnvl7s")))) + "1jvasihaizawz44j02bri47bd905flns03nkigipys81p6pds5mj")))) (build-system gnu-build-system) (home-page "http://www.canonware.com/jemalloc/") (synopsis "General-purpose scalable concurrent malloc implementation") diff --git a/gnu/packages/libbsd.scm b/gnu/packages/libbsd.scm new file mode 100644 index 0000000000..3bfa2a3fec --- /dev/null +++ b/gnu/packages/libbsd.scm @@ -0,0 +1,47 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016 Leo Famulari <leo@famulari.name> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages libbsd) + #:use-module (guix build-system gnu) + #:use-module (guix download) + #:use-module (guix licenses) + #:use-module (guix packages)) + +(define-public libbsd + (package + (name "libbsd") + (version "0.8.3") + (source (origin + (method url-fetch) + (uri (string-append "https://libbsd.freedesktop.org/releases/" + "libbsd-" version ".tar.xz")) + (sha256 + (base32 + "1a1l7afchlvvj2zfi7ajcg26bbkh5i98y2v5h9j5p1px9m7n6jwk")))) + (build-system gnu-build-system) + (synopsis "Utility functions from BSD systems") + (description "This library provides useful functions commonly found on BSD +systems, and lacking on others like GNU systems, thus making it easier to port +projects with strong BSD origins, without needing to embed the same code over +and over again on each project.") + (home-page "https://libbsd.freedesktop.org/wiki/") + ;; This package is a collection of third-party functions that were + ;; originally released under various non-copyleft licenses. + (license (list bsd-2 bsd-3 bsd-4 expat isc public-domain + (non-copyleft "file://COPYING" + "See COPYING in the distribution."))))) diff --git a/gnu/packages/libidn.scm b/gnu/packages/libidn.scm index 382e14f0cc..053565c909 100644 --- a/gnu/packages/libidn.scm +++ b/gnu/packages/libidn.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -40,5 +41,7 @@ "libidn is a library implementing of the Stringprep, Punycode and IDNA specifications. These are used to encode and decode internationalized domain names. It includes native C, C# and Java libraries.") - (license lgpl2.1+) + ;; The C code is dual-licensed gpl2+ lgpl3+, the manual is fdl1.3+, + ;; the command line tool is gpl3+. + (license (list gpl2+ gpl3+ lgpl3+ fdl1.3+)) (home-page "http://www.gnu.org/software/libidn/"))) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 6e3228f9d1..90f56025f6 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2016 Raymond Nicholson <rain1@openmailbox.org> ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr> +;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -224,7 +225,7 @@ for SYSTEM and optionally VARIANT, or #f if there is no such configuration." (search-path %load-path file))) (define-public linux-libre - (let* ((version "4.5.4") + (let* ((version "4.5.5") (build-phase '(lambda* (#:key system inputs #:allow-other-keys #:rest args) ;; Avoid introducing timestamps @@ -302,7 +303,7 @@ for SYSTEM and optionally VARIANT, or #f if there is no such configuration." (uri (linux-libre-urls version)) (sha256 (base32 - "0c587v03kz5whh82apva6gwqvczdi6djy29gk0gfd9dbkb2518b1")))) + "1zys74hfdi13yyk17x45hvvbx7m97wk7pala3cd8k93xbq8qnai0")))) (build-system gnu-build-system) (supported-systems '("x86_64-linux" "i686-linux")) (native-inputs `(("perl" ,perl) @@ -339,13 +340,13 @@ It has been modified to remove all non-free binary blobs.") (define-public linux-libre-4.4 (package (inherit linux-libre) - (version "4.4.10") + (version "4.4.11") (source (origin (method url-fetch) (uri (linux-libre-urls version)) (sha256 (base32 - "1k7h632vgh3wlz44qqawy238f4mzn19bm9sz9zqq0ql6wwhkjdkj")))) + "17pb9w72vigdrhm8hnkdyw9kwc2l06nabzygpdkwbvf7fg3j03vc")))) (native-inputs (let ((conf (kernel-config (or (%current-target-system) (%current-system)) @@ -1182,15 +1183,15 @@ configuration and monitoring interfaces.") (define-public iw (package (name "iw") - (version "3.17") + (version "4.3") (source (origin (method url-fetch) (uri (string-append - "https://www.kernel.org/pub/software/network/iw/iw-" + "mirror://kernel.org/software/network/iw/iw-" version ".tar.xz")) (sha256 (base32 - "14zsapqhivk0ws5z21y1ys2c2czi05mzk7bl2yb7qxcfrnsjx9j8")))) + "085jyvrxzarvn5jl0fk618jjxy50nqx7ifngszc4jxk6a4ddibd6")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("libnl" ,libnl))) @@ -1198,11 +1199,11 @@ configuration and monitoring interfaces.") `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "CC=gcc") #:phases (alist-delete 'configure %standard-phases))) - (home-page "http://wireless.kernel.org/en/users/Documentation/iw") + (home-page "https://wireless.wiki.kernel.org/") (synopsis "Tool for configuring wireless devices") (description "iw is a new nl80211 based CLI configuration utility for wireless -devices. It replaces 'iwconfig', which is deprecated.") +devices. It replaces @code{iwconfig}, which is deprecated.") (license license:isc))) (define-public powertop @@ -1827,7 +1828,7 @@ compliance.") (define-public wireless-regdb (package (name "wireless-regdb") - (version "2015.04.06") + (version "2016.05.02") (source (origin (method url-fetch) (uri (string-append @@ -1835,7 +1836,7 @@ compliance.") "wireless-regdb-" version ".tar.xz")) (sha256 (base32 - "0czi83k311fp27z42hxjm8vi88fsbc23mhavv96lkb4pmari0jjc")) + "07n6gcwfbddz3awbdflv3dhxjszsqq2lrdwih0a0ahcliac4qry9")) ;; We're building 'regulatory.bin' by ourselves. (snippet '(delete-file "regulatory.bin")))) @@ -2332,7 +2333,7 @@ MPEG-2 and audio over Linux IEEE 1394.") (define-public mdadm (package (name "mdadm") - (version "3.3.2") + (version "3.4") (source (origin (method url-fetch) (uri (string-append @@ -2340,8 +2341,7 @@ MPEG-2 and audio over Linux IEEE 1394.") version ".tar.xz")) (sha256 (base32 - "132vdvh3myjgcjn6i9w90ck16ddjxjcszklzkyvr4f5ifqd7wfhg")) - (patches (search-patches "mdadm-gcc-4.9-fix.patch")))) + "0248v9f28mrbwabl94ck22gfim29sqhkf70wrpfi52nk4x3bxl17")))) (build-system gnu-build-system) (inputs `(("udev" ,eudev))) @@ -2401,18 +2401,41 @@ system calls, important for the performance of databases and other advanced applications.") (license license:lgpl2.1+))) +(define-public sbc + (package + (name "sbc") + (version "1.3") + (source (origin + (method url-fetch) + (uri (string-append "https://www.kernel.org/pub/linux/bluetooth/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "02ckd2z51z0h85qgv7x8vv8ybp5czm9if1z78411j53gaz7j4476")))) + (build-system gnu-build-system) + (inputs + `(("libsndfile" ,libsndfile))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "https://www.kernel.org/pub/linux/bluetooth/") + (synopsis "Bluetooth subband audio codec") + (description + "The SBC is a digital audio encoder and decoder used to transfer data to +Bluetooth audio output devices like headphones or loudspeakers.") + (license license:gpl2+))) + (define-public bluez (package (name "bluez") - (version "5.36") + (version "5.39") (source (origin (method url-fetch) (uri (string-append - "https://www.kernel.org/pub/linux/bluetooth/bluez-" + "mirror://kernel.org/linux/bluetooth/bluez-" version ".tar.xz")) (sha256 (base32 - "1wkqwmi5krr37mxcqqlp5m2xnw7vw70v3ww7j09vvlskxcdflhx3")))) + "0fsrf9rdmrdyx0vmcpfji4imjsvliawyy5sjb6b64myka28vrl91")))) (build-system gnu-build-system) (arguments '(#:configure-flags @@ -2542,7 +2565,7 @@ and copy/paste text in the console and in xterm.") (define-public btrfs-progs (package (name "btrfs-progs") - (version "4.5.1") + (version "4.5.3") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/linux/kernel/" @@ -2550,7 +2573,7 @@ and copy/paste text in the console and in xterm.") "btrfs-progs-v" version ".tar.xz")) (sha256 (base32 - "1znf2zhb56zbmdjk3lq107678xwsqwc5gczspypmc5i31qnppy7f")))) + "1lzbw275xgv69v4z8hmsf3jnip38116hxhkpv0madk8wv049drz6")))) (build-system gnu-build-system) (outputs '("out" "static")) ; static versions of binaries in "out" (~16MiB!) @@ -2676,3 +2699,38 @@ pre-configured) fan level. It requires a working @code{thinkpad_acpi} or any other @code{hwmon} driver that enables temperature reading and fan control from userspace.") (license license:gpl3+))) + +(define-public ntfs-3g + (package + (name "ntfs-3g") + (version "2016.2.22") + (source (origin + (method url-fetch) + (uri (string-append "https://tuxera.com/opensource/" + "ntfs-3g_ntfsprogs-" version ".tgz")) + (sha256 + (base32 + "180y5y09h30ryf2vim8j30a2npwz1iv9ly5yjmh3wjdkwh2jrdyp")) + (modules '((guix build utils))) + (snippet + ;; Install under $prefix. + '(substitute* '("src/Makefile.in" "ntfsprogs/Makefile.in") + (("/sbin") + "@sbindir@"))))) + (build-system gnu-build-system) + (inputs `(("util-linux" ,util-linux) + ("fuse" ,fuse))) ;libuuid + (native-inputs `(("pkg-config" ,pkg-config))) + (arguments + '(#:configure-flags (list "--exec-prefix=${prefix}" + "--with-fuse=external" ;use our own FUSE + "--enable-mount-helper" + "--enable-posix-acls" + "--enable-xattr-mappings"))) + (home-page "http://www.tuxera.com/community/open-source-ntfs-3g/") + (synopsis "Read-write access to NTFS file systems") + (description + "NTFS-3G provides read-write access to NTFS file systems, which are +commonly found on Microsoft Windows. It is implemented as a FUSE file system. +The package provides additional NTFS tools.") + (license license:gpl2+))) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index b127419d7b..e86afb2f2d 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -13,6 +13,7 @@ ;;; Copyright © 2016 Al McElrath <hello@yrns.org> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> +;;; Copyright © 2016 Alex Kost <alezost@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -325,19 +326,10 @@ can read the same mailbox from multiple computers. It supports IMAP as REMOTE repository and Maildir/IMAP as LOCAL repository.") (license gpl2+))) -(define %mu-gtester-patch - ;; Ensure tests have unique names, to placate GLib 2.6's gtester. - (origin - (method url-fetch) - (uri "https://github.com/djcb/mu/commit/b44039ed.patch") - (sha256 - (base32 - "165hryqqhx3wah8a4f5jaq465azx1pm9r4jid7880pys9gd88qlv")))) - (define-public mu (package (name "mu") - (version "0.9.13") + (version "0.9.16") (source (origin (method url-fetch) (uri (string-append "https://github.com/djcb/mu/archive/v" @@ -345,8 +337,7 @@ repository and Maildir/IMAP as LOCAL repository.") (file-name (string-append "mu-" version ".tar.gz")) (sha256 (base32 - "0wj33pma8xgjvn2akk7khzbycwn4c9sshxvzdph9dnpy7gyqxj51")) - (patches (list %mu-gtester-patch)))) + "0p7hqri1r1x6750x138cc29mh81kdav2dcim26y58s8an206h25g")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -364,18 +355,39 @@ repository and Maildir/IMAP as LOCAL repository.") ("gmime" ,gmime) ("tzdata" ,tzdata))) ;for mu/test/test-mu-query.c (arguments - '(#:phases (alist-cons-after - 'unpack 'autoreconf - (lambda _ - (zero? (system* "autoreconf" "-vi"))) - (alist-cons-before - 'check 'check-tz-setup - (lambda* (#:key inputs #:allow-other-keys) - ;; For mu/test/test-mu-query.c - (setenv "TZDIR" - (string-append (assoc-ref inputs "tzdata") - "/share/zoneinfo"))) - %standard-phases)))) + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (guix build emacs-utils)) + #:imported-modules (,@%gnu-build-system-modules + (guix build emacs-utils)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-configure.ac + ;; By default, elisp code goes to "share/emacs/site-lisp/mu4e", + ;; so our Emacs package can't find it. Setting "--with-lispdir" + ;; configure flag doesn't help because "mu4e" will be added to + ;; the lispdir anyway, so we have to modify "configure.ac". + (lambda _ + (substitute* "configure.ac" + (("^ +lispdir=.*") "")) + #t)) + (add-after 'patch-configure.ac 'autoreconf + (lambda _ + (zero? (system* "autoreconf" "-vi")))) + (add-before 'check 'check-tz-setup + (lambda* (#:key inputs #:allow-other-keys) + ;; For mu/test/test-mu-query.c + (setenv "TZDIR" + (string-append (assoc-ref inputs "tzdata") + "/share/zoneinfo")) + #t)) + (add-after 'install 'install-emacs-autoloads + (lambda* (#:key outputs #:allow-other-keys) + (emacs-generate-autoloads + "mu4e" + (string-append (assoc-ref outputs "out") + "/share/emacs/site-lisp")) + #t))))) (home-page "http://www.djcbsoftware.nl/code/mu/") (synopsis "Quickly find emails") (description diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 10b1e9be45..19ed44f2c9 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -11,6 +11,8 @@ ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015 Fabian Harfert <fhmgufs@web.de> ;;; Copyright © 2016 Roel Janssen <roel@gnu.org> +;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> +;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -46,6 +48,7 @@ #:use-module (gnu packages cmake) #:use-module (gnu packages compression) #:use-module (gnu packages curl) + #:use-module (gnu packages cyrus-sasl) #:use-module (gnu packages documentation) #:use-module (gnu packages elf) #:use-module (gnu packages flex) @@ -79,6 +82,7 @@ #:use-module (gnu packages tcl) #:use-module (gnu packages texinfo) #:use-module (gnu packages texlive) + #:use-module (gnu packages tls) #:use-module (gnu packages wxwidgets) #:use-module (gnu packages xml) #:use-module (gnu packages zip) @@ -583,7 +587,7 @@ online as well as original implementations of various other algorithms.") (define-public octave (package (name "octave") - (version "4.0.0") + (version "4.0.2") (source (origin (method url-fetch) @@ -591,7 +595,7 @@ online as well as original implementations of various other algorithms.") version ".tar.gz")) (sha256 (base32 - "101jr9yck798586jz4vkjcgk36zksmxf1pxrzvipgn2xgyay0zjc")))) + "1hdxap3j88rpqjimnfhinym6z73wdi5dfa6fv85c13r1dk9qzk9r")))) (build-system gnu-build-system) (inputs `(("lapack" ,lapack) @@ -602,6 +606,7 @@ online as well as original implementations of various other algorithms.") ("arpack" ,arpack-ng) ("curl" ,curl) ("pcre" ,pcre) + ("cyrus-sasl" ,cyrus-sasl) ("fltk" ,fltk) ("fontconfig" ,fontconfig) ("freetype" ,freetype) @@ -609,6 +614,7 @@ online as well as original implementations of various other algorithms.") ("libxft" ,libxft) ("mesa" ,mesa) ("glu" ,glu) + ("openssl" ,openssl) ("zlib" ,zlib))) (native-inputs `(("gfortran" ,gfortran) @@ -626,9 +632,10 @@ online as well as original implementations of various other algorithms.") ("ghostscript" ,ghostscript) ("gnuplot" ,gnuplot))) (arguments - `(#:configure-flags (list (string-append "--with-shell=" - (assoc-ref %build-inputs "bash") - "/bin/sh")))) + `(#:configure-flags + (list (string-append "--with-shell=" + (assoc-ref %build-inputs "bash") + "/bin/sh")))) (home-page "http://www.gnu.org/software/octave/") (synopsis "High-level language for numerical computation") (description "GNU Octave is a high-level interpreted language that is @@ -664,6 +671,9 @@ script files.") ("glu" ,glu) ("libx11" ,libx11) ("libxext" ,libxext))) + (inputs + `(("fontconfig" ,fontconfig) + ("libxft" ,libxft))) (arguments `(#:configure-flags `("-DENABLE_METIS:BOOL=OFF" "-DENABLE_BUILD_SHARED:BOOL=ON" @@ -1588,7 +1598,7 @@ point numbers.") (define-public wxmaxima (package (name "wxmaxima") - (version "15.04.0") + (version "16.04.2") (source (origin (method url-fetch) @@ -1596,7 +1606,7 @@ point numbers.") version "/" name "-" version ".tar.gz")) (sha256 (base32 - "1fm47ah4aw5qdjqhkz67w5fwhy8yfffa5z896crp0d3hk2bh4180")))) + "1fpqzk1921isiqrpgpf433ldq41924qs9sy99fl1zn5661b2l73n")))) (build-system gnu-build-system) (inputs `(("wxwidgets" ,wxwidgets) @@ -1631,14 +1641,14 @@ full text searching.") (define-public armadillo (package (name "armadillo") - (version "6.700.4") + (version "6.700.7") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/arma/armadillo-" version ".tar.gz")) (sha256 (base32 - "0dsdjcps5l2nhg0455rrc708inffarzj7n435vj4sm9lxwf21wg9")))) + "0xbidcxrvbq33xf7iysg2nic2ai9a043psl33kiv6ifkk7p8hcra")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ;no test target (inputs @@ -1659,14 +1669,14 @@ associated functions (eg. contiguous and non-contiguous submatrix views).") (define-public armadillo-for-rcpparmadillo (package (inherit armadillo) - (version "6.700.3") + (version "6.700.6") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/arma/armadillo-" version ".tar.gz")) (sha256 (base32 - "1vnhifa7d0aij3kv5bxf6m91d99h3y2fyj48jrx7jcvwyb1q5wwq")))))) + "1cdpjxb0fz5f28y5qrqgpw53s7qi8s2v3al9lfdldqxngb21vpx8")))))) (define-public muparser (package @@ -2199,7 +2209,23 @@ in finite element programs.") ;; ("python2-numpy" ,python2-numpy) ; only required for the tests ("zlib" ,zlib))) (arguments - `(#:tests? #f)) ; The test data are downloaded from the Internet. + `(;; The 'share/flann/octave' contains a .mex file, which is an ELF file + ;; taken 46 MiB unstripped, and 6 MiB stripped. + #:strip-directories '("lib" "lib64" "libexec" + "bin" "sbin" "share/flann/octave") + + ;; Save 12 MiB by not installing .a files. Passing + ;; '-DBUILD_STATIC_LIBS=OFF' has no effect. + #:phases (modify-phases %standard-phases + (add-after 'install 'remove-static-libraries + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib"))) + (for-each delete-file + (find-files lib "\\.a$")) + #t)))) + + #:tests? #f)) ; The test data are downloaded from the Internet. (home-page "http://www.cs.ubc.ca/research/flann/") (synopsis "Library for approximate nearest neighbors computation") (description "FLANN is a library for performing fast approximate diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 39e261df8c..f2787ee2d1 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2016 Al McElrath <hello@yrns.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> -;;; Copyright © 2016 Kei Yamashita <kei@openmailbox.org> +;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 306a3a0218..ffad1db2f2 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -138,14 +138,14 @@ more.") (define-public libndp (package (name "libndp") - (version "1.5") + (version "1.6") (source (origin (method url-fetch) (uri (string-append "http://libndp.org/files/" name "-" version ".tar.gz")) (sha256 (base32 - "15f743hjc7yy2sv3hzvfc27s1gny4mh5aww59vn195fff2midwgs")))) + "03mczwrxqbp54msafxzzyhaazkvjdwm2kipjkrb5xg8kw22glz8c")))) (build-system gnu-build-system) (home-page "http://libndp.org/") (synopsis "Library for Neighbor Discovery Protocol") diff --git a/gnu/packages/owncloud.scm b/gnu/packages/owncloud.scm index e75426e579..954e689f7d 100644 --- a/gnu/packages/owncloud.scm +++ b/gnu/packages/owncloud.scm @@ -34,14 +34,14 @@ (define-public owncloud-client (package (name "owncloud-client") - (version "2.1.1") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://download.owncloud.com/desktop/stable/" "owncloudclient-" version ".tar.xz")) (sha256 - (base32 "1jxi439qff4acvyvszjprj42kvzhlz255wv8g4p3jrf55svzwz2f")))) + (base32 "1ak7hq13hl7qndm3zz7hdfvw6930kmhjh27s1427g784vxcqb23q")))) (build-system cmake-build-system) (arguments `(#:phases diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 0a765cd080..314dc90888 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -203,17 +203,19 @@ the Nix package manager.") ;; ;; Note: use a very short commit id; with a longer one, the limit on ;; hash-bang lines would be exceeded while running the tests. - (let ((commit "80627f51f0238b9450745f4e642172d059ca5bb5")) + (let ((commit "e9017c98d61f305b624bacaa30e8891ec0100980")) (package (inherit guix-0.10.0) (version (string-append "0.10.0-0." (string-take commit 4))) (source (origin (method git-fetch) (uri (git-reference - (url "git://git.sv.gnu.org/guix.git") + ;; "git://git.sv.gnu.org/guix.git" temporarily + ;; unavailable (XXX). + (url "http://git.savannah.gnu.org/r/guix.git") (commit commit))) (sha256 (base32 - "102gdbx5imx0zab7i5dwa1z9j1diblinaaja09dp3q30770iyxj9")) + "13mfk10cw6fk4diclzld56xwabshanxjcczdrjlj0wisaz32h3nl")) (file-name (string-append "guix-" version "-checkout")))) (arguments (substitute-keyword-arguments (package-arguments guix-0.10.0) diff --git a/gnu/packages/patches/emacs-constants-lisp-like.patch b/gnu/packages/patches/emacs-constants-lisp-like.patch deleted file mode 100644 index 5ec37f3adf..0000000000 --- a/gnu/packages/patches/emacs-constants-lisp-like.patch +++ /dev/null @@ -1,81 +0,0 @@ -Add Scheme support - ---- constants/constants.el.orig 2015-12-26 17:44:31.734520833 +0100 -+++ constants/constants.el 2015-12-30 17:41:28.402871263 +0100 -@@ -684,6 +684,33 @@ - - (eval-when-compile (defvar ctable)) - -+(defun constants-is-lisp-like (mode) -+ (save-match-data -+ (string-match "\\(lisp\\|scheme\\)" (symbol-name mode)))) -+ -+(defun constants-is-set-like () -+ (save-excursion -+ (condition-case nil -+ (save-match-data -+ (progn (up-list -1) -+ (or (looking-at "(set[qf!]?\\>") (looking-at "(define\\>")))) -+ (error nil)))) ; return value nil means use default -+ -+;;;###autoload -+(defun constants-lisp-like-function () -+ "Check context for constants insertion." -+ (if (constants-is-set-like) -+ '(emacs-lisp-mode "%n %v%t; %d %u" "e" "(* %p %v)") -+ '(emacs-lisp-mode "(%n %v)%t; %d %u" "e" "(* %p %v)"))) -+ -+;;;###autoload -+(mapc (lambda (mode-hook) -+ (add-hook mode-hook -+ (lambda () -+ (setq constants-language-function -+ 'constants-lisp-like-function)))) -+ '(scheme-mode-hook emacs-lisp-mode-hook lisp-mode-hook)) -+ - ;;;###autoload - (defun constants-insert (&optional unit-system names) - "Insert one or more natural constant definitions in source code. -@@ -826,8 +853,9 @@ - (funcall process-func ins)) - ;; Here comes the insertion stuff for source code editing modes. - ;; First make sure we start a new line -- (if (string-match -- "\\S-" (buffer-substring (point-at-bol) (point-at-eol))) -+ (if (and (string-match -+ "\\S-" (buffer-substring (point-at-bol) (point-at-eol))) -+ (not (constants-is-lisp-like mode))) - ;; non-empty line, insert after this line - (progn - (end-of-line 1) -@@ -841,13 +869,24 @@ - (if (string-match "\\(.*\\)%t\\(.*\\)" line) - (let ((comment-column 42)) - (insert (match-string 1 line)) -- (indent-to comment-column) -- (insert (match-string 2 line))) -+ (if (and (constants-is-lisp-like mode) -+ (or (constants-is-set-like) -+ (null clist))) -+ (save-excursion -+ (progn -+ (move-to-column comment-column t) -+ (insert (match-string 2 line)) -+ ;; insert a newline such that paredit's M-) can mode -+ ;; the closing parentheses to the next line. -+ (newline-and-indent))) -+ (progn -+ (indent-to comment-column) -+ (insert (match-string 2 line))))) - (insert line))) -- (if constants-indent-code -- (newline-and-indent) -- (newline)))))) -- -+ (unless (and (constants-is-lisp-like mode) (null clist)) -+ (if constants-indent-code -+ (newline-and-indent) -+ (newline))))))) - ;;;###autoload - (defun constants-get (&optional const message) - "Return the value of CONST as defined in the constants package. diff --git a/gnu/packages/patches/expat-CVE-2015-1283-refix.patch b/gnu/packages/patches/expat-CVE-2015-1283-refix.patch new file mode 100644 index 0000000000..af5e3bcc3e --- /dev/null +++ b/gnu/packages/patches/expat-CVE-2015-1283-refix.patch @@ -0,0 +1,42 @@ +Update previous fix for CVE-2015-1283 to not rely on undefined behavior. + +Copied from Debian, as found in Debian package version 2.1.0-6+deb8u2. + +https://sources.debian.net/src/expat/2.1.0-6%2Bdeb8u2/debian/patches/CVE-2015-1283-refix.patch/ + +From 29a11774d8ebbafe8418b4a5ffb4cc1160b194a1 Mon Sep 17 00:00:00 2001 +From: Pascal Cuoq <cuoq@trust-in-soft.com> +Date: Sun, 15 May 2016 09:05:46 +0200 +Subject: [PATCH] Avoid relying on undefined behavior in CVE-2015-1283 fix. + +--- + expat/lib/xmlparse.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/lib/xmlparse.c b/lib/xmlparse.c +index 13e080d..cdb12ef 100644 +--- a/lib/xmlparse.c ++++ b/lib/xmlparse.c +@@ -1695,7 +1695,8 @@ XML_GetBuffer(XML_Parser parser, int len + } + + if (len > bufferLim - bufferEnd) { +- int neededSize = len + (int)(bufferEnd - bufferPtr); ++ /* Do not invoke signed arithmetic overflow: */ ++ int neededSize = (int) ((unsigned)len + (unsigned)(bufferEnd - bufferPtr)); + /* BEGIN MOZILLA CHANGE (sanity check neededSize) */ + if (neededSize < 0) { + errorCode = XML_ERROR_NO_MEMORY; +@@ -1729,7 +1730,8 @@ XML_GetBuffer(XML_Parser parser, int len + if (bufferSize == 0) + bufferSize = INIT_BUFFER_SIZE; + do { +- bufferSize *= 2; ++ /* Do not invoke signed arithmetic overflow: */ ++ bufferSize = (int) (2U * (unsigned) bufferSize); + /* BEGIN MOZILLA CHANGE (prevent infinite loop on overflow) */ + } while (bufferSize < neededSize && bufferSize > 0); + /* END MOZILLA CHANGE */ +-- +2.8.2 + diff --git a/gnu/packages/patches/expat-CVE-2016-0718.patch b/gnu/packages/patches/expat-CVE-2016-0718.patch new file mode 100644 index 0000000000..22436c20cc --- /dev/null +++ b/gnu/packages/patches/expat-CVE-2016-0718.patch @@ -0,0 +1,761 @@ +Fix CVE-2016-0718. + +Copied from Debian, as found in Debian package version 2.1.0-6+deb8u2. + +https://sources.debian.net/src/expat/2.1.0-6%2Bdeb8u2/debian/patches/CVE-2016-0718-v2-2-1.patch/ + +From cdfcb1b5c95e93b00ae9e9d25708b4a3bee72c15 Mon Sep 17 00:00:00 2001 +From: Sebastian Pipping <sebastian@pipping.org> +Date: Mon, 2 May 2016 00:02:44 +0200 +Subject: [PATCH] Address CVE-2016-0718 (/patch/ version 2.2.1) + +* Out of bounds memory access when doing text conversion on malformed input +* Integer overflow related to memory allocation + +Reported by Gustavo Grieco + +Patch credits go to +* Christian Heimes +* Karl Waclawek +* Gustavo Grieco +* Sebastian Pipping +* Pascal Cuoq +--- + expat/lib/xmlparse.c | 34 +++++++++----- + expat/lib/xmltok.c | 115 +++++++++++++++++++++++++++++++++++------------- + expat/lib/xmltok.h | 10 ++++- + expat/lib/xmltok_impl.c | 62 +++++++++++++------------- + 4 files changed, 146 insertions(+), 75 deletions(-) + +diff --git a/lib/xmlparse.c b/lib/xmlparse.c +index e308c79..13e080d 100644 +--- a/lib/xmlparse.c ++++ b/lib/xmlparse.c +@@ -2436,11 +2436,11 @@ doContent(XML_Parser parser, + for (;;) { + int bufSize; + int convLen; +- XmlConvert(enc, ++ const enum XML_Convert_Result convert_res = XmlConvert(enc, + &fromPtr, rawNameEnd, + (ICHAR **)&toPtr, (ICHAR *)tag->bufEnd - 1); + convLen = (int)(toPtr - (XML_Char *)tag->buf); +- if (fromPtr == rawNameEnd) { ++ if ((convert_res == XML_CONVERT_COMPLETED) || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) { + tag->name.strLen = convLen; + break; + } +@@ -2661,11 +2661,11 @@ doContent(XML_Parser parser, + if (MUST_CONVERT(enc, s)) { + for (;;) { + ICHAR *dataPtr = (ICHAR *)dataBuf; +- XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); ++ const enum XML_Convert_Result convert_res = XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); + *eventEndPP = s; + charDataHandler(handlerArg, dataBuf, + (int)(dataPtr - (ICHAR *)dataBuf)); +- if (s == next) ++ if ((convert_res == XML_CONVERT_COMPLETED) || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) + break; + *eventPP = s; + } +@@ -3269,11 +3269,11 @@ doCdataSection(XML_Parser parser, + if (MUST_CONVERT(enc, s)) { + for (;;) { + ICHAR *dataPtr = (ICHAR *)dataBuf; +- XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); ++ const enum XML_Convert_Result convert_res = XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); + *eventEndPP = next; + charDataHandler(handlerArg, dataBuf, + (int)(dataPtr - (ICHAR *)dataBuf)); +- if (s == next) ++ if ((convert_res == XML_CONVERT_COMPLETED) || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) + break; + *eventPP = s; + } +@@ -5350,6 +5350,7 @@ reportDefault(XML_Parser parser, const ENCODING *enc, + const char *s, const char *end) + { + if (MUST_CONVERT(enc, s)) { ++ enum XML_Convert_Result convert_res; + const char **eventPP; + const char **eventEndPP; + if (enc == encoding) { +@@ -5362,11 +5363,11 @@ reportDefault(XML_Parser parser, const ENCODING *enc, + } + do { + ICHAR *dataPtr = (ICHAR *)dataBuf; +- XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); ++ convert_res = XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); + *eventEndPP = s; + defaultHandler(handlerArg, dataBuf, (int)(dataPtr - (ICHAR *)dataBuf)); + *eventPP = s; +- } while (s != end); ++ } while ((convert_res != XML_CONVERT_COMPLETED) && (convert_res != XML_CONVERT_INPUT_INCOMPLETE)); + } + else + defaultHandler(handlerArg, (XML_Char *)s, (int)((XML_Char *)end - (XML_Char *)s)); +@@ -6169,8 +6170,8 @@ poolAppend(STRING_POOL *pool, const ENCODING *enc, + if (!pool->ptr && !poolGrow(pool)) + return NULL; + for (;;) { +- XmlConvert(enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end); +- if (ptr == end) ++ const enum XML_Convert_Result convert_res = XmlConvert(enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end); ++ if ((convert_res == XML_CONVERT_COMPLETED) || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) + break; + if (!poolGrow(pool)) + return NULL; +@@ -6254,8 +6255,13 @@ poolGrow(STRING_POOL *pool) + } + } + if (pool->blocks && pool->start == pool->blocks->s) { +- int blockSize = (int)(pool->end - pool->start)*2; +- BLOCK *temp = (BLOCK *) ++ BLOCK *temp; ++ int blockSize = (int)((unsigned)(pool->end - pool->start)*2U); ++ ++ if (blockSize < 0) ++ return XML_FALSE; ++ ++ temp = (BLOCK *) + pool->mem->realloc_fcn(pool->blocks, + (offsetof(BLOCK, s) + + blockSize * sizeof(XML_Char))); +@@ -6270,6 +6276,10 @@ poolGrow(STRING_POOL *pool) + else { + BLOCK *tem; + int blockSize = (int)(pool->end - pool->start); ++ ++ if (blockSize < 0) ++ return XML_FALSE; ++ + if (blockSize < INIT_BLOCK_SIZE) + blockSize = INIT_BLOCK_SIZE; + else +diff --git a/lib/xmltok.c b/lib/xmltok.c +index bf09dfc..cb98ce1 100644 +--- a/lib/xmltok.c ++++ b/lib/xmltok.c +@@ -318,39 +318,55 @@ enum { /* UTF8_cvalN is value of masked first byte of N byte sequence */ + UTF8_cval4 = 0xf0 + }; + +-static void PTRCALL ++static enum XML_Convert_Result PTRCALL + utf8_toUtf8(const ENCODING *enc, + const char **fromP, const char *fromLim, + char **toP, const char *toLim) + { ++ enum XML_Convert_Result res = XML_CONVERT_COMPLETED; + char *to; + const char *from; + if (fromLim - *fromP > toLim - *toP) { + /* Avoid copying partial characters. */ ++ res = XML_CONVERT_OUTPUT_EXHAUSTED; + for (fromLim = *fromP + (toLim - *toP); fromLim > *fromP; fromLim--) + if (((unsigned char)fromLim[-1] & 0xc0) != 0x80) + break; + } +- for (to = *toP, from = *fromP; from != fromLim; from++, to++) ++ for (to = *toP, from = *fromP; (from < fromLim) && (to < toLim); from++, to++) + *to = *from; + *fromP = from; + *toP = to; ++ ++ if ((to == toLim) && (from < fromLim)) ++ return XML_CONVERT_OUTPUT_EXHAUSTED; ++ else ++ return res; + } + +-static void PTRCALL ++static enum XML_Convert_Result PTRCALL + utf8_toUtf16(const ENCODING *enc, + const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) + { ++ enum XML_Convert_Result res = XML_CONVERT_COMPLETED; + unsigned short *to = *toP; + const char *from = *fromP; +- while (from != fromLim && to != toLim) { ++ while (from < fromLim && to < toLim) { + switch (((struct normal_encoding *)enc)->type[(unsigned char)*from]) { + case BT_LEAD2: ++ if (fromLim - from < 2) { ++ res = XML_CONVERT_INPUT_INCOMPLETE; ++ break; ++ } + *to++ = (unsigned short)(((from[0] & 0x1f) << 6) | (from[1] & 0x3f)); + from += 2; + break; + case BT_LEAD3: ++ if (fromLim - from < 3) { ++ res = XML_CONVERT_INPUT_INCOMPLETE; ++ break; ++ } + *to++ = (unsigned short)(((from[0] & 0xf) << 12) + | ((from[1] & 0x3f) << 6) | (from[2] & 0x3f)); + from += 3; +@@ -358,8 +374,14 @@ utf8_toUtf16(const ENCODING *enc, + case BT_LEAD4: + { + unsigned long n; +- if (to + 1 == toLim) ++ if (toLim - to < 2) { ++ res = XML_CONVERT_OUTPUT_EXHAUSTED; + goto after; ++ } ++ if (fromLim - from < 4) { ++ res = XML_CONVERT_INPUT_INCOMPLETE; ++ goto after; ++ } + n = ((from[0] & 0x7) << 18) | ((from[1] & 0x3f) << 12) + | ((from[2] & 0x3f) << 6) | (from[3] & 0x3f); + n -= 0x10000; +@@ -377,6 +399,7 @@ utf8_toUtf16(const ENCODING *enc, + after: + *fromP = from; + *toP = to; ++ return res; + } + + #ifdef XML_NS +@@ -425,7 +448,7 @@ static const struct normal_encoding internal_utf8_encoding = { + STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) + }; + +-static void PTRCALL ++static enum XML_Convert_Result PTRCALL + latin1_toUtf8(const ENCODING *enc, + const char **fromP, const char *fromLim, + char **toP, const char *toLim) +@@ -433,30 +456,35 @@ latin1_toUtf8(const ENCODING *enc, + for (;;) { + unsigned char c; + if (*fromP == fromLim) +- break; ++ return XML_CONVERT_COMPLETED; + c = (unsigned char)**fromP; + if (c & 0x80) { + if (toLim - *toP < 2) +- break; ++ return XML_CONVERT_OUTPUT_EXHAUSTED; + *(*toP)++ = (char)((c >> 6) | UTF8_cval2); + *(*toP)++ = (char)((c & 0x3f) | 0x80); + (*fromP)++; + } + else { + if (*toP == toLim) +- break; ++ return XML_CONVERT_OUTPUT_EXHAUSTED; + *(*toP)++ = *(*fromP)++; + } + } + } + +-static void PTRCALL ++static enum XML_Convert_Result PTRCALL + latin1_toUtf16(const ENCODING *enc, + const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) + { +- while (*fromP != fromLim && *toP != toLim) ++ while (*fromP < fromLim && *toP < toLim) + *(*toP)++ = (unsigned char)*(*fromP)++; ++ ++ if ((*toP == toLim) && (*fromP < fromLim)) ++ return XML_CONVERT_OUTPUT_EXHAUSTED; ++ else ++ return XML_CONVERT_COMPLETED; + } + + #ifdef XML_NS +@@ -483,13 +511,18 @@ static const struct normal_encoding latin1_encoding = { + STANDARD_VTABLE(sb_) + }; + +-static void PTRCALL ++static enum XML_Convert_Result PTRCALL + ascii_toUtf8(const ENCODING *enc, + const char **fromP, const char *fromLim, + char **toP, const char *toLim) + { +- while (*fromP != fromLim && *toP != toLim) ++ while (*fromP < fromLim && *toP < toLim) + *(*toP)++ = *(*fromP)++; ++ ++ if ((*toP == toLim) && (*fromP < fromLim)) ++ return XML_CONVERT_OUTPUT_EXHAUSTED; ++ else ++ return XML_CONVERT_COMPLETED; + } + + #ifdef XML_NS +@@ -536,13 +569,14 @@ unicode_byte_type(char hi, char lo) + } + + #define DEFINE_UTF16_TO_UTF8(E) \ +-static void PTRCALL \ ++static enum XML_Convert_Result PTRCALL \ + E ## toUtf8(const ENCODING *enc, \ + const char **fromP, const char *fromLim, \ + char **toP, const char *toLim) \ + { \ +- const char *from; \ +- for (from = *fromP; from != fromLim; from += 2) { \ ++ const char *from = *fromP; \ ++ fromLim = from + (((fromLim - from) >> 1) << 1); /* shrink to even */ \ ++ for (; from < fromLim; from += 2) { \ + int plane; \ + unsigned char lo2; \ + unsigned char lo = GET_LO(from); \ +@@ -552,7 +586,7 @@ E ## toUtf8(const ENCODING *enc, \ + if (lo < 0x80) { \ + if (*toP == toLim) { \ + *fromP = from; \ +- return; \ ++ return XML_CONVERT_OUTPUT_EXHAUSTED; \ + } \ + *(*toP)++ = lo; \ + break; \ +@@ -562,7 +596,7 @@ E ## toUtf8(const ENCODING *enc, \ + case 0x4: case 0x5: case 0x6: case 0x7: \ + if (toLim - *toP < 2) { \ + *fromP = from; \ +- return; \ ++ return XML_CONVERT_OUTPUT_EXHAUSTED; \ + } \ + *(*toP)++ = ((lo >> 6) | (hi << 2) | UTF8_cval2); \ + *(*toP)++ = ((lo & 0x3f) | 0x80); \ +@@ -570,7 +604,7 @@ E ## toUtf8(const ENCODING *enc, \ + default: \ + if (toLim - *toP < 3) { \ + *fromP = from; \ +- return; \ ++ return XML_CONVERT_OUTPUT_EXHAUSTED; \ + } \ + /* 16 bits divided 4, 6, 6 amongst 3 bytes */ \ + *(*toP)++ = ((hi >> 4) | UTF8_cval3); \ +@@ -580,7 +614,11 @@ E ## toUtf8(const ENCODING *enc, \ + case 0xD8: case 0xD9: case 0xDA: case 0xDB: \ + if (toLim - *toP < 4) { \ + *fromP = from; \ +- return; \ ++ return XML_CONVERT_OUTPUT_EXHAUSTED; \ ++ } \ ++ if (fromLim - from < 4) { \ ++ *fromP = from; \ ++ return XML_CONVERT_INPUT_INCOMPLETE; \ + } \ + plane = (((hi & 0x3) << 2) | ((lo >> 6) & 0x3)) + 1; \ + *(*toP)++ = ((plane >> 2) | UTF8_cval4); \ +@@ -596,20 +634,32 @@ E ## toUtf8(const ENCODING *enc, \ + } \ + } \ + *fromP = from; \ ++ if (from < fromLim) \ ++ return XML_CONVERT_INPUT_INCOMPLETE; \ ++ else \ ++ return XML_CONVERT_COMPLETED; \ + } + + #define DEFINE_UTF16_TO_UTF16(E) \ +-static void PTRCALL \ ++static enum XML_Convert_Result PTRCALL \ + E ## toUtf16(const ENCODING *enc, \ + const char **fromP, const char *fromLim, \ + unsigned short **toP, const unsigned short *toLim) \ + { \ ++ enum XML_Convert_Result res = XML_CONVERT_COMPLETED; \ ++ fromLim = *fromP + (((fromLim - *fromP) >> 1) << 1); /* shrink to even */ \ + /* Avoid copying first half only of surrogate */ \ + if (fromLim - *fromP > ((toLim - *toP) << 1) \ +- && (GET_HI(fromLim - 2) & 0xF8) == 0xD8) \ ++ && (GET_HI(fromLim - 2) & 0xF8) == 0xD8) { \ + fromLim -= 2; \ +- for (; *fromP != fromLim && *toP != toLim; *fromP += 2) \ ++ res = XML_CONVERT_INPUT_INCOMPLETE; \ ++ } \ ++ for (; *fromP < fromLim && *toP < toLim; *fromP += 2) \ + *(*toP)++ = (GET_HI(*fromP) << 8) | GET_LO(*fromP); \ ++ if ((*toP == toLim) && (*fromP < fromLim)) \ ++ return XML_CONVERT_OUTPUT_EXHAUSTED; \ ++ else \ ++ return res; \ + } + + #define SET2(ptr, ch) \ +@@ -1288,7 +1338,7 @@ unknown_isInvalid(const ENCODING *enc, const char *p) + return (c & ~0xFFFF) || checkCharRefNumber(c) < 0; + } + +-static void PTRCALL ++static enum XML_Convert_Result PTRCALL + unknown_toUtf8(const ENCODING *enc, + const char **fromP, const char *fromLim, + char **toP, const char *toLim) +@@ -1299,21 +1349,21 @@ unknown_toUtf8(const ENCODING *enc, + const char *utf8; + int n; + if (*fromP == fromLim) +- break; ++ return XML_CONVERT_COMPLETED; + utf8 = uenc->utf8[(unsigned char)**fromP]; + n = *utf8++; + if (n == 0) { + int c = uenc->convert(uenc->userData, *fromP); + n = XmlUtf8Encode(c, buf); + if (n > toLim - *toP) +- break; ++ return XML_CONVERT_OUTPUT_EXHAUSTED; + utf8 = buf; + *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP] + - (BT_LEAD2 - 2)); + } + else { + if (n > toLim - *toP) +- break; ++ return XML_CONVERT_OUTPUT_EXHAUSTED; + (*fromP)++; + } + do { +@@ -1322,13 +1372,13 @@ unknown_toUtf8(const ENCODING *enc, + } + } + +-static void PTRCALL ++static enum XML_Convert_Result PTRCALL + unknown_toUtf16(const ENCODING *enc, + const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) + { + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); +- while (*fromP != fromLim && *toP != toLim) { ++ while (*fromP < fromLim && *toP < toLim) { + unsigned short c = uenc->utf16[(unsigned char)**fromP]; + if (c == 0) { + c = (unsigned short) +@@ -1340,6 +1390,11 @@ unknown_toUtf16(const ENCODING *enc, + (*fromP)++; + *(*toP)++ = c; + } ++ ++ if ((*toP == toLim) && (*fromP < fromLim)) ++ return XML_CONVERT_OUTPUT_EXHAUSTED; ++ else ++ return XML_CONVERT_COMPLETED; + } + + ENCODING * +@@ -1503,7 +1558,7 @@ initScan(const ENCODING * const *encodingTable, + { + const ENCODING **encPtr; + +- if (ptr == end) ++ if (ptr >= end) + return XML_TOK_NONE; + encPtr = enc->encPtr; + if (ptr + 1 == end) { +diff --git a/lib/xmltok.h b/lib/xmltok.h +index ca867aa..752007e 100644 +--- a/lib/xmltok.h ++++ b/lib/xmltok.h +@@ -130,6 +130,12 @@ typedef int (PTRCALL *SCANNER)(const ENCODING *, + const char *, + const char **); + ++enum XML_Convert_Result { ++ XML_CONVERT_COMPLETED = 0, ++ XML_CONVERT_INPUT_INCOMPLETE = 1, ++ XML_CONVERT_OUTPUT_EXHAUSTED = 2 /* and therefore potentially input remaining as well */ ++}; ++ + struct encoding { + SCANNER scanners[XML_N_STATES]; + SCANNER literalScanners[XML_N_LITERAL_TYPES]; +@@ -158,12 +164,12 @@ struct encoding { + const char *ptr, + const char *end, + const char **badPtr); +- void (PTRCALL *utf8Convert)(const ENCODING *enc, ++ enum XML_Convert_Result (PTRCALL *utf8Convert)(const ENCODING *enc, + const char **fromP, + const char *fromLim, + char **toP, + const char *toLim); +- void (PTRCALL *utf16Convert)(const ENCODING *enc, ++ enum XML_Convert_Result (PTRCALL *utf16Convert)(const ENCODING *enc, + const char **fromP, + const char *fromLim, + unsigned short **toP, +diff --git a/lib/xmltok_impl.c b/lib/xmltok_impl.c +index 9c2895b..6c5a3ba 100644 +--- a/lib/xmltok_impl.c ++++ b/lib/xmltok_impl.c +@@ -93,13 +93,13 @@ static int PTRCALL + PREFIX(scanComment)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) + { +- if (ptr != end) { ++ if (ptr < end) { + if (!CHAR_MATCHES(enc, ptr, ASCII_MINUS)) { + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + ptr += MINBPC(enc); +- while (ptr != end) { ++ while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + INVALID_CASES(ptr, nextTokPtr) + case BT_MINUS: +@@ -147,7 +147,7 @@ PREFIX(scanDecl)(const ENCODING *enc, const char *ptr, + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } +- while (ptr != end) { ++ while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + case BT_PERCNT: + if (ptr + MINBPC(enc) == end) +@@ -233,7 +233,7 @@ PREFIX(scanPi)(const ENCODING *enc, const char *ptr, + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } +- while (ptr != end) { ++ while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + case BT_S: case BT_CR: case BT_LF: +@@ -242,7 +242,7 @@ PREFIX(scanPi)(const ENCODING *enc, const char *ptr, + return XML_TOK_INVALID; + } + ptr += MINBPC(enc); +- while (ptr != end) { ++ while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + INVALID_CASES(ptr, nextTokPtr) + case BT_QUEST: +@@ -305,7 +305,7 @@ static int PTRCALL + PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) + { +- if (ptr == end) ++ if (ptr >= end) + return XML_TOK_NONE; + if (MINBPC(enc) > 1) { + size_t n = end - ptr; +@@ -348,7 +348,7 @@ PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr, + ptr += MINBPC(enc); + break; + } +- while (ptr != end) { ++ while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + #define LEAD_CASE(n) \ + case BT_LEAD ## n: \ +@@ -391,11 +391,11 @@ PREFIX(scanEndTag)(const ENCODING *enc, const char *ptr, + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } +- while (ptr != end) { ++ while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + case BT_S: case BT_CR: case BT_LF: +- for (ptr += MINBPC(enc); ptr != end; ptr += MINBPC(enc)) { ++ for (ptr += MINBPC(enc); ptr < end; ptr += MINBPC(enc)) { + switch (BYTE_TYPE(enc, ptr)) { + case BT_S: case BT_CR: case BT_LF: + break; +@@ -432,7 +432,7 @@ static int PTRCALL + PREFIX(scanHexCharRef)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) + { +- if (ptr != end) { ++ if (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + case BT_DIGIT: + case BT_HEX: +@@ -441,7 +441,7 @@ PREFIX(scanHexCharRef)(const ENCODING *enc, const char *ptr, + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } +- for (ptr += MINBPC(enc); ptr != end; ptr += MINBPC(enc)) { ++ for (ptr += MINBPC(enc); ptr < end; ptr += MINBPC(enc)) { + switch (BYTE_TYPE(enc, ptr)) { + case BT_DIGIT: + case BT_HEX: +@@ -464,7 +464,7 @@ static int PTRCALL + PREFIX(scanCharRef)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) + { +- if (ptr != end) { ++ if (ptr < end) { + if (CHAR_MATCHES(enc, ptr, ASCII_x)) + return PREFIX(scanHexCharRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); + switch (BYTE_TYPE(enc, ptr)) { +@@ -474,7 +474,7 @@ PREFIX(scanCharRef)(const ENCODING *enc, const char *ptr, + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } +- for (ptr += MINBPC(enc); ptr != end; ptr += MINBPC(enc)) { ++ for (ptr += MINBPC(enc); ptr < end; ptr += MINBPC(enc)) { + switch (BYTE_TYPE(enc, ptr)) { + case BT_DIGIT: + break; +@@ -506,7 +506,7 @@ PREFIX(scanRef)(const ENCODING *enc, const char *ptr, const char *end, + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } +- while (ptr != end) { ++ while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + case BT_SEMI: +@@ -529,7 +529,7 @@ PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end, + #ifdef XML_NS + int hadColon = 0; + #endif +- while (ptr != end) { ++ while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + #ifdef XML_NS +@@ -716,7 +716,7 @@ PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end, + hadColon = 0; + #endif + /* we have a start-tag */ +- while (ptr != end) { ++ while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + #ifdef XML_NS +@@ -740,7 +740,7 @@ PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end, + case BT_S: case BT_CR: case BT_LF: + { + ptr += MINBPC(enc); +- while (ptr != end) { ++ while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) + case BT_GT: +@@ -785,7 +785,7 @@ static int PTRCALL + PREFIX(contentTok)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) + { +- if (ptr == end) ++ if (ptr >= end) + return XML_TOK_NONE; + if (MINBPC(enc) > 1) { + size_t n = end - ptr; +@@ -832,7 +832,7 @@ PREFIX(contentTok)(const ENCODING *enc, const char *ptr, const char *end, + ptr += MINBPC(enc); + break; + } +- while (ptr != end) { ++ while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + #define LEAD_CASE(n) \ + case BT_LEAD ## n: \ +@@ -895,7 +895,7 @@ PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end, + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } +- while (ptr != end) { ++ while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + case BT_SEMI: +@@ -921,7 +921,7 @@ PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end, + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } +- while (ptr != end) { ++ while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + case BT_CR: case BT_LF: case BT_S: +@@ -941,7 +941,7 @@ PREFIX(scanLit)(int open, const ENCODING *enc, + const char *ptr, const char *end, + const char **nextTokPtr) + { +- while (ptr != end) { ++ while (ptr < end) { + int t = BYTE_TYPE(enc, ptr); + switch (t) { + INVALID_CASES(ptr, nextTokPtr) +@@ -973,7 +973,7 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) + { + int tok; +- if (ptr == end) ++ if (ptr >= end) + return XML_TOK_NONE; + if (MINBPC(enc) > 1) { + size_t n = end - ptr; +@@ -1141,7 +1141,7 @@ PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } +- while (ptr != end) { ++ while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + case BT_GT: case BT_RPAR: case BT_COMMA: +@@ -1204,10 +1204,10 @@ PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) + { + const char *start; +- if (ptr == end) ++ if (ptr >= end) + return XML_TOK_NONE; + start = ptr; +- while (ptr != end) { ++ while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + #define LEAD_CASE(n) \ + case BT_LEAD ## n: ptr += n; break; +@@ -1262,10 +1262,10 @@ PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) + { + const char *start; +- if (ptr == end) ++ if (ptr >= end) + return XML_TOK_NONE; + start = ptr; +- while (ptr != end) { ++ while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + #define LEAD_CASE(n) \ + case BT_LEAD ## n: ptr += n; break; +@@ -1326,7 +1326,7 @@ PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, + end = ptr + n; + } + } +- while (ptr != end) { ++ while (ptr < end) { + switch (BYTE_TYPE(enc, ptr)) { + INVALID_CASES(ptr, nextTokPtr) + case BT_LT: +@@ -1373,7 +1373,7 @@ PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end, + { + ptr += MINBPC(enc); + end -= MINBPC(enc); +- for (; ptr != end; ptr += MINBPC(enc)) { ++ for (; ptr < end; ptr += MINBPC(enc)) { + switch (BYTE_TYPE(enc, ptr)) { + case BT_DIGIT: + case BT_HEX: +@@ -1760,7 +1760,7 @@ PREFIX(updatePosition)(const ENCODING *enc, + case BT_CR: + pos->lineNumber++; + ptr += MINBPC(enc); +- if (ptr != end && BYTE_TYPE(enc, ptr) == BT_LF) ++ if (ptr < end && BYTE_TYPE(enc, ptr) == BT_LF) + ptr += MINBPC(enc); + pos->columnNumber = (XML_Size)-1; + break; +-- +2.8.2 + diff --git a/gnu/packages/patches/gd-CVE-2016-3074.patch b/gnu/packages/patches/gd-CVE-2016-3074.patch new file mode 100644 index 0000000000..a90c51d77b --- /dev/null +++ b/gnu/packages/patches/gd-CVE-2016-3074.patch @@ -0,0 +1,36 @@ +Adapted from upstream commit 2bb97f407c1145c850416a3bfbcc8cf124e68a19 +(gd2: handle corrupt images better (CVE-2016-3074)). + +This patch omits the upstream changes to '.gitignore', and the test +added in files 'tests/Makefile.am', 'tests/gd2/gd2_read_corrupt.c', and +'tests/gd2/invalid_neg_size.gd2'. + +We omit the test because its input data, +'tests/gd2/invalid_neg_size.gd2', is provided as a binary Git diff, +which is not supported by `patch`. + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3074 +https://github.com/libgd/libgd/commit/2bb97f407c1145c850416a3bfbcc8cf124e68a19 +--- + .gitignore | 1 + + src/gd_gd2.c | 2 ++ + tests/Makefile.am | 3 ++- + tests/gd2/gd2_read_corrupt.c | 25 +++++++++++++++++++++++++ + tests/gd2/invalid_neg_size.gd2 | Bin 0 -> 1676 bytes + 5 files changed, 30 insertions(+), 1 deletion(-) + create mode 100644 tests/gd2/gd2_read_corrupt.c + create mode 100644 tests/gd2/invalid_neg_size.gd2 + +diff --git a/src/gd_gd2.c b/src/gd_gd2.c +index 6f28461..a50b33d 100644 +--- a/src/gd_gd2.c ++++ b/src/gd_gd2.c +@@ -165,6 +165,8 @@ _gd2GetHeader (gdIOCtxPtr in, int *sx, int *sy, + if (gdGetInt (&cidx[i].size, in) != 1) { + goto fail2; + }; ++ if (cidx[i].offset < 0 || cidx[i].size < 0) ++ goto fail2; + }; + *chunkIdx = cidx; + }; diff --git a/gnu/packages/patches/gnome-tweak-tool-search-paths.patch b/gnu/packages/patches/gnome-tweak-tool-search-paths.patch new file mode 100644 index 0000000000..027c61b3af --- /dev/null +++ b/gnu/packages/patches/gnome-tweak-tool-search-paths.patch @@ -0,0 +1,52 @@ +Gnome-tweak-tool does not look at GSETTINGS_SCHEMA_PATH or XDG_DATA_DIRS, it +assumes that schemas are installed in one global directory +(GSETTINGS_SCHEMA_DIR/gsettingsschemadir). + +Guix/GuixSD uses a different directory for every gir package and has +packages pick-up files using XDG_DATA_DIRS. + +Upstream ticket: https://bugzilla.gnome.org/show_bug.cgi?id=764537 +janneke@gnu.org + +--- gnome-tweak-tool-3.18.1.orig/gtweak/gsettings.py 2015-04-08 15:21:32.000000000 +0200 ++++ gnome-tweak-tool-3.18.1/gtweak/gsettings.py 2016-04-03 11:26:38.658482704 +0200 +@@ -16,7 +16,8 @@ + # along with gnome-tweak-tool. If not, see <http://www.gnu.org/licenses/>. + + import logging +-import os.path ++import os ++import sys + import xml.dom.minidom + import gettext + +@@ -31,6 +32,13 @@ + class GSettingsMissingError(Exception): + pass + ++def file_from_path(path, file_name): ++ for dir in path: ++ f = os.path.join(dir, file_name) ++ if os.path.exists(f): ++ return f ++ return None ++ + class _GSettingsSchema: + def __init__(self, schema_name, schema_dir=None, schema_filename=None, **options): + if not schema_dir: +@@ -38,9 +46,14 @@ + if not schema_filename: + schema_filename = schema_name + ".gschema.xml" + ++ schema_prefix = os.path.join('glib-2.0', 'schemas') + schema_path = os.path.join(schema_dir, schema_filename) + if not os.path.exists(schema_path): +- logging.critical("Could not find schema %s" % schema_path) ++ schema_path = file_from_path(os.environ.get ('GSETTINGS_SCHEMA_PATH', '').split(os.path.pathsep), schema_filename) ++ if not (schema_path and os.path.exists(schema_path)): ++ schema_path = file_from_path(os.environ.get ('XDG_DATA_DIRS', '').split(os.path.pathsep), os.path.join(schema_prefix, schema_filename)) ++ if not (schema_path and os.path.exists(schema_path)): ++ logging.critical("Could not find schema %s" % schema_filename) + assert(False) + + self._schema_name = schema_name diff --git a/gnu/packages/patches/mdadm-gcc-4.9-fix.patch b/gnu/packages/patches/mdadm-gcc-4.9-fix.patch deleted file mode 100644 index 222fd0ea32..0000000000 --- a/gnu/packages/patches/mdadm-gcc-4.9-fix.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 68641cdb646eaa15099c1d6cfff1eaa5dd2ac841 Mon Sep 17 00:00:00 2001 -From: Jes Sorensen <Jes.Sorensen@redhat.com> -Date: Tue, 24 Feb 2015 16:00:40 -0500 -Subject: [PATCH] write_super_imsm_spares(): C statements are terminated by ; - -Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> -Signed-off-by: NeilBrown <neilb@suse.de> ---- - super-intel.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/super-intel.c b/super-intel.c -index 819e0da..7f75b53 100644 ---- a/super-intel.c -+++ b/super-intel.c -@@ -5115,13 +5115,13 @@ static int write_super_imsm_spares(struct intel_super *super, int doclose) - __u32 sum; - struct dl *d; - -- spare->mpb_size = __cpu_to_le32(sizeof(struct imsm_super)), -- spare->generation_num = __cpu_to_le32(1UL), -+ spare->mpb_size = __cpu_to_le32(sizeof(struct imsm_super)); -+ spare->generation_num = __cpu_to_le32(1UL); - spare->attributes = MPB_ATTRIB_CHECKSUM_VERIFY; -- spare->num_disks = 1, -- spare->num_raid_devs = 0, -- spare->cache_size = mpb->cache_size, -- spare->pwr_cycle_count = __cpu_to_le32(1), -+ spare->num_disks = 1; -+ spare->num_raid_devs = 0; -+ spare->cache_size = mpb->cache_size; -+ spare->pwr_cycle_count = __cpu_to_le32(1); - - snprintf((char *) spare->sig, MAX_SIGNATURE_LENGTH, - MPB_SIGNATURE MPB_VERSION_RAID0); --- -2.4.3 - diff --git a/gnu/packages/patches/python-pandas-fix-tslib-test-failure.patch b/gnu/packages/patches/python-pandas-fix-tslib-test-failure.patch deleted file mode 100644 index 62d6a38086..0000000000 --- a/gnu/packages/patches/python-pandas-fix-tslib-test-failure.patch +++ /dev/null @@ -1,141 +0,0 @@ -This patch is required to fix a test failure when python-dateutil version -2.5.2 or later is used. It is derived from the following commits: - -80ef4e06526b9b60cf24268454c9456585a790a3 -845ff974af6f7c3b3067cce8a7149b771c2be87 - -diff --git a/pandas/tseries/tests/test_tslib.py b/pandas/tseries/tests/test_tslib.py -index f0d5bf7..863bc6f 100644 ---- a/pandas/tseries/tests/test_tslib.py -+++ b/pandas/tseries/tests/test_tslib.py -@@ -474,6 +474,11 @@ def test_does_not_convert_mixed_integer(self): - good_date_string)) - - def test_parsers(self): -+ -+ # https://github.com/dateutil/dateutil/issues/217 -+ import dateutil -+ yearfirst = dateutil.__version__ >= LooseVersion('2.5.0') -+ - cases = {'2011-01-01': datetime.datetime(2011, 1, 1), - '2Q2005': datetime.datetime(2005, 4, 1), - '2Q05': datetime.datetime(2005, 4, 1), -@@ -527,20 +532,26 @@ def test_parsers(self): - } - - for date_str, expected in compat.iteritems(cases): -- result1, _, _ = tools.parse_time_string(date_str) -- result2 = to_datetime(date_str) -- result3 = to_datetime([date_str]) -- result4 = to_datetime(np.array([date_str], dtype=object)) -- result5 = Timestamp(date_str) -- result6 = DatetimeIndex([date_str])[0] -- result7 = date_range(date_str, freq='S', periods=1) -+ result1, _, _ = tools.parse_time_string(date_str, -+ yearfirst=yearfirst) -+ result2 = to_datetime(date_str, yearfirst=yearfirst) -+ result3 = to_datetime([date_str], yearfirst=yearfirst) -+ result4 = to_datetime(np.array([date_str], dtype=object), -+ yearfirst=yearfirst) -+ result6 = DatetimeIndex([date_str], yearfirst=yearfirst)[0] - self.assertEqual(result1, expected) - self.assertEqual(result2, expected) - self.assertEqual(result3, expected) - self.assertEqual(result4, expected) -- self.assertEqual(result5, expected) - self.assertEqual(result6, expected) -- self.assertEqual(result7, expected) -+ -+ # these really need to have yearfist, but we don't support -+ if not yearfirst: -+ result5 = Timestamp(date_str) -+ self.assertEqual(result5, expected) -+ result7 = date_range(date_str, freq='S', periods=1, -+ yearfirst=yearfirst) -+ self.assertEqual(result7, expected) - - # NaT - result1, _, _ = tools.parse_time_string('NaT') -@@ -589,23 +589,62 @@ def test_parsers_quarter_invalid(self): - self.assertRaises(ValueError, tools.parse_time_string, case) - - def test_parsers_dayfirst_yearfirst(self): -+ -+ # https://github.com/dateutil/dateutil/issues/217 -+ # this issue was closed -+ import dateutil -+ is_compat_version = dateutil.__version__ >= LooseVersion('2.5.2') -+ if is_compat_version: -+ dayfirst_yearfirst1 = datetime.datetime(2010, 12, 11) -+ dayfirst_yearfirst2 = datetime.datetime(2020, 12, 21) -+ else: -+ dayfirst_yearfirst1 = datetime.datetime(2010, 11, 12) -+ dayfirst_yearfirst2 = datetime.datetime(2020, 12, 21) -+ - # str : dayfirst, yearfirst, expected -- cases = {'10-11-12': [(False, False, datetime.datetime(2012, 10, 11)), -- (True, False, datetime.datetime(2012, 11, 10)), -- (False, True, datetime.datetime(2010, 11, 12)), -- (True, True, datetime.datetime(2010, 11, 12))], -- '20/12/21': [(False, False, datetime.datetime(2021, 12, 20)), -- (True, False, datetime.datetime(2021, 12, 20)), -- (False, True, datetime.datetime(2020, 12, 21)), -- (True, True, datetime.datetime(2020, 12, 21))]} -+ cases = {'10-11-12': [(False, False, False, -+ datetime.datetime(2012, 10, 11)), -+ (True, False, False, -+ datetime.datetime(2012, 11, 10)), -+ (False, True, False, -+ datetime.datetime(2010, 11, 12)), -+ (True, True, False, dayfirst_yearfirst1)], -+ '20/12/21': [(False, False, False, -+ datetime.datetime(2021, 12, 20)), -+ (True, False, False, -+ datetime.datetime(2021, 12, 20)), -+ (False, True, False, -+ datetime.datetime(2020, 12, 21)), -+ (True, True, True, dayfirst_yearfirst2)]} - - tm._skip_if_no_dateutil() - from dateutil.parser import parse - for date_str, values in compat.iteritems(cases): -- for dayfirst, yearfirst, expected in values: -- result1, _, _ = tools.parse_time_string(date_str, -- dayfirst=dayfirst, -- yearfirst=yearfirst) -+ for dayfirst, yearfirst, is_compat, expected in values: -+ -+ f = lambda x: tools.parse_time_string(x, -+ dayfirst=dayfirst, -+ yearfirst=yearfirst) -+ -+ # we now have an invalid parse -+ if is_compat and is_compat_version: -+ self.assertRaises(tslib.DateParseError, f, date_str) -+ -+ def f(date_str): -+ return to_datetime(date_str, dayfirst=dayfirst, -+ yearfirst=yearfirst) -+ -+ self.assertRaises(ValueError, f, date_str) -+ -+ def f(date_str): -+ return DatetimeIndex([date_str], dayfirst=dayfirst, -+ yearfirst=yearfirst)[0] -+ -+ self.assertRaises(ValueError, f, date_str) -+ -+ continue -+ -+ result1, _, _ = f(date_str) - - result2 = to_datetime(date_str, dayfirst=dayfirst, - yearfirst=yearfirst) -@@ -614,7 +653,6 @@ def test_parsers_dayfirst_yearfirst(self): - yearfirst=yearfirst)[0] - - # Timestamp doesn't support dayfirst and yearfirst -- - self.assertEqual(result1, expected) - self.assertEqual(result2, expected) - self.assertEqual(result3, expected) diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm index 3fdd539835..ef61239cab 100644 --- a/gnu/packages/plotutils.scm +++ b/gnu/packages/plotutils.scm @@ -25,6 +25,7 @@ #:use-module (guix build-system gnu) #:use-module (gnu packages algebra) #:use-module (gnu packages bdw-gc) + #:use-module (gnu packages emacs) #:use-module (gnu packages xorg) #:use-module (gnu packages image) #:use-module (gnu packages ghostscript) @@ -188,6 +189,7 @@ colors, styles, options and details.") `(("gs" ,ghostscript) ;For tests ("texinfo" ,texinfo) ;For generating documentation ("texlive" ,texlive) ;For tests and documentation + ("emacs" ,emacs-no-x) ("perl" ,perl))) (inputs `(("fftw" ,fftw) @@ -198,7 +200,13 @@ colors, styles, options and details.") ("readline" ,readline) ("zlib" ,zlib))) (arguments - `(#:configure-flags + `(#:modules ((guix build emacs-utils) + (guix build gnu-build-system) + (guix build utils) + (srfi srfi-26)) + #:imported-modules (,@%gnu-build-system-modules + (guix build emacs-utils)) + #:configure-flags (list (string-append "--enable-gc=" (assoc-ref %build-inputs "libgc")) (string-append "--with-latex=" (assoc-ref %outputs "out") @@ -210,15 +218,26 @@ colors, styles, options and details.") (modify-phases %standard-phases (add-before 'build 'patch-pdf-viewer (lambda _ - ;; Default to a free pdf viewer + ;; Default to a free pdf viewer. (substitute* "settings.cc" (("defaultPDFViewer=\"acroread\"") - "defaultPDFViewer=\"gv\"")))) + "defaultPDFViewer=\"gv\"")) + #t)) (add-before 'check 'set-HOME ;; Some tests require write access to $HOME, otherwise leading to ;; "failed to create directory /homeless-shelter/.asy" error. (lambda _ - (setenv "HOME" "/tmp")))))) + (setenv "HOME" "/tmp") + #t)) + (add-after 'install 'install-Emacs-data + (lambda* (#:key outputs #:allow-other-keys) + ;; Install related Emacs libraries into an appropriate location. + (let* ((out (assoc-ref outputs "out")) + (lisp-dir (string-append out "/share/emacs/site-lisp"))) + (for-each (cut install-file <> lisp-dir) + (find-files "." "\\.el$")) + (emacs-generate-autoloads ,name lisp-dir)) + #t))))) (home-page "http://asymptote.sourceforge.net") (synopsis "Script-based vector graphics language") (description diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index adef5e6529..d2698d4231 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -18,6 +18,7 @@ ;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com> ;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org> +;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -90,7 +91,7 @@ #:use-module (guix build-system trivial) #:use-module (srfi srfi-1)) -(define-public python-2 +(define-public python-2.7 (package (name "python") (version "2.7.11") @@ -281,7 +282,10 @@ packages; exception-based error handling; and very high level dynamic data types.") (license psfl))) -(define-public python +;; Current 2.x version. +(define-public python-2 python-2.7) + +(define-public python-3.4 (package (inherit python-2) (version "3.4.3") (source (origin @@ -307,6 +311,12 @@ data types.") (version-major+minor version) "/site-packages")))))))) +;; Current 3.x version. +(define-public python-3 python-3.4) + +;; Current major version. +(define-public python python-3) + ;; Minimal variants of Python, mostly used to break the cycle between Tk and ;; Python (Tk -> libxcb -> Python.) @@ -1002,15 +1012,16 @@ datetime module, available in Python 2.3+.") (define-public python-pandas (package (name "python-pandas") - (version "0.18.0") + (version "0.18.1") (source (origin (method url-fetch) - (uri (pypi-uri "pandas" version)) + (uri (string-append + "https://pypi.python.org/packages/11/09/" + "e66eb844daba8680ddff26335d5b4fead77f60f957678243549a8dd4830d/" + "pandas-" version ".tar.gz")) (sha256 - (base32 "050qw0ap5bhyv5flp78x3lcq1dlminl3xaj6kbrm0jqmx0672xf9")) - (patches (search-patches - "python-pandas-fix-tslib-test-failure.patch")))) + (base32 "1ckpxrvvjj6zxmn68icd9hib8qcpx9b35f6izxnr25br5ilq7r6j")))) (build-system python-build-system) (propagated-inputs `(("python-numpy" ,python-numpy))) @@ -1018,8 +1029,7 @@ datetime module, available in Python 2.3+.") `(("python-pytz" ,python-pytz) ("python-dateutil" ,python-dateutil-2))) (native-inputs - `(("python-nose" ,python-nose) - ("python-setuptools" ,python-setuptools))) + `(("python-nose" ,python-nose))) (home-page "http://pandas.pydata.org") (synopsis "Data structures for data analysis, time series, and statistics") (description @@ -1028,15 +1038,15 @@ structures designed to make working with structured (tabular, multidimensional, potentially heterogeneous) and time series data both easy and intuitive. It aims to be the fundamental high-level building block for doing practical, real world data analysis in Python.") - (license bsd-3))) + (license bsd-3) + (properties `((python2-variant . ,(delay python2-pandas)))))) (define-public python2-pandas - (let ((pandas (package-with-python2 python-pandas))) - (package (inherit pandas) - (propagated-inputs - `(("python2-numpy" ,python2-numpy) - ,@(alist-delete "python-numpy" - (package-propagated-inputs pandas))))))) + (let ((base (package-with-python2 (strip-python2-variant python-pandas)))) + (package + (inherit base) + (native-inputs `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs base)))))) (define-public python-tzlocal (package @@ -5856,16 +5866,18 @@ responses, rather than doing any computation.") (define-public python-cryptography-vectors (package (name "python-cryptography-vectors") - (version "1.3.1") + (version "1.3.2") (source (origin (method url-fetch) - (uri (string-append "https://pypi.python.org/packages/source/c/" - "cryptography-vectors/cryptography_vectors-" - version ".tar.gz")) + (uri (string-append + "https://pypi.python.org/packages/" + "3f/fd/" + "5883a7fdfcdf6edec55c58605be99d8c36ce97a9b729763ea9cf30e761b7" + "/cryptography_vectors-" version ".tar.gz")) (sha256 (base32 - "1144l3ypz3bngxd59lb4y74xa401w92lhvvjgxzglmvbh8wzkcbb")))) + "0ss682bpgzdfy2vam8yhhrx7p5gnw89ydlvaswqp52za8sd8nsh0")))) (build-system python-build-system) (native-inputs `(("python-setuptools" ,python-setuptools))) @@ -5882,14 +5894,18 @@ responses, rather than doing any computation.") (define-public python-cryptography (package (name "python-cryptography") - (version "1.3.1") + (version "1.3.2") (source (origin (method url-fetch) - (uri (pypi-uri "cryptography" version)) + (uri (string-append + "https://pypi.python.org/packages/" + "04/da/" + "35f9a1d34dab5d777f65fb87731288f338ab0ae46a525ffdf0405b573dd0" + "/cryptography-" version ".tar.gz")) (sha256 (base32 - "1qjkrpfvxcyd0kal3zpm5y7f9p3y77ixn9jw8f4dqpgrw1sn3cxl")))) + "121067qdbzd0ir0nxjdf0kgai7qlsc9yh2xhrj4cavcn4y4gmapv")))) (build-system python-build-system) (inputs `(("openssl" ,openssl))) @@ -8764,3 +8780,30 @@ respectively.") (description (string-append "This is an experimental compiler for a subset of Python. It generates C++ code and a Makefile.")) (license (list gpl3 bsd-3 license:expat)))) + +(define-public python2-rope + (package + (name "python2-rope") + (version "0.10.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "rope" version)) + (sha256 + (base32 + "18k5znhpwvrfck3yp0jmhd5j8r0f0s8bk1zh5yhs2cfgmfhbwigb")))) + (arguments + ;; Rope is currently python-2 only. + ;; https://github.com/python-rope/rope/issues/57 + `(#:python ,python-2)) + (build-system python-build-system) + (native-inputs + `(("python2-unittest2" ,python2-unittest2) + ("python2-setuptools" ,python2-setuptools))) + (home-page "https://github.com/python-rope/rope") + (synopsis "Refactoring library for Python") + (description "Rope is a refactoring library for Python. It facilitates +the renaming, moving and extracting of attributes, functions, modules, fields +and parameters in Python 2 source code. These refactorings can also be applied +to occurences in strings and comments.") + (license gpl2))) diff --git a/gnu/packages/qemu.scm b/gnu/packages/qemu.scm index 9e3fbf462c..6dd6ce4d76 100644 --- a/gnu/packages/qemu.scm +++ b/gnu/packages/qemu.scm @@ -55,20 +55,17 @@ (define-public qemu (package (name "qemu") - (version "2.5.1.1") + (version "2.6.0") (source (origin (method url-fetch) (uri (string-append "http://wiki.qemu-project.org/download/qemu-" version ".tar.bz2")) (sha256 (base32 - "1rpgr1v6gnsdb4bcxwn1krsz4d4h9xgvlg6ark648nkn8dp99n98")))) + "1v1lhhd6m59hqgmiz100g779rjq70pik5v4b3g936ci73djlmb69")))) (build-system gnu-build-system) (arguments - '(;; FIXME: On x86_64, the test 'check-qtest-x86_64' sometimes fails when - ;; parallel builds are enabled. - #:parallel-tests? #f - #:phases (alist-replace + '(#:phases (alist-replace 'configure (lambda* (#:key inputs outputs (configure-flags '()) #:allow-other-keys) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 097ec06d2a..47720384c2 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -505,7 +505,7 @@ contain over 620 classes.") (define-public qtkeychain (package (name "qtkeychain") - (version "0.5.0") + (version "0.6.2") (source (origin (method url-fetch) @@ -513,7 +513,7 @@ contain over 620 classes.") "archive/v" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "055mkd4pz6cyff4cw0784wjc1w92m8x223sxi96ph15fr3lplbg6")))) + (base32 "0g76pa786mg0fxy52hrljw09dvi6kffk2ms42lxapvpy6j94a4xf")))) (build-system cmake-build-system) (inputs `(("qt" ,qt))) diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index 5601d6c78e..c345d59ed3 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2015, 2016 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,11 +23,15 @@ (define-module (gnu packages scheme) #:use-module (gnu packages) - #:use-module ((guix licenses) #:select (gpl2+ lgpl2.0+ lgpl2.1+ asl2.0 bsd-3)) + #:use-module ((guix licenses) + #:select (gpl2+ lgpl2.0+ lgpl2.1+ asl2.0 bsd-3 + cc-by-sa4.0)) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system gnu) + #:use-module (guix build-system trivial) #:use-module (gnu packages compression) #:use-module (gnu packages m4) #:use-module (gnu packages multiprecision) @@ -38,6 +43,7 @@ #:use-module (gnu packages texinfo) #:use-module (gnu packages texlive) #:use-module (gnu packages base) + #:use-module (gnu packages compression) #:use-module (gnu packages pkg-config) #:use-module (gnu packages avahi) #:use-module (gnu packages libphidget) @@ -872,3 +878,54 @@ procedures, embedded in the programming language Scheme, and intended to support teaching and research in mathematical physics and electrical engineering.") (license gpl2+)))) + +(define-public sicp + (let ((commit "5b52db566968d28a89fbbaf338d207f01cc81cac")) + (package + (name "sicp") + (version (string-append "20160220-1." (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sarabander/sicp") + (commit commit))) + (sha256 + (base32 + "10h6h7szwlfbshwh18bnl2hvyddj5i7106l79s145l0sjjv15cxb")) + (file-name (string-append name "-" version "-checkout")))) + (build-system trivial-build-system) + (native-inputs `(("gzip" ,gzip) + ("source" ,source) + ("texinfo" ,texinfo))) + (arguments + `(#:modules ((guix build utils) + (srfi srfi-1) + (srfi srfi-26)) + #:builder + (begin + (use-modules (guix build utils) + (srfi srfi-1) + (srfi srfi-26)) + (let ((gzip (assoc-ref %build-inputs "gzip")) + (source (assoc-ref %build-inputs "source")) + (texinfo (assoc-ref %build-inputs "texinfo")) + (info-dir (string-append %output "/share/info"))) + (setenv "PATH" (string-append gzip "/bin" + ":" texinfo "/bin")) + (mkdir-p info-dir) + (and (zero? + (system* "makeinfo" "--output" + (string-append info-dir "/sicp.info") + (string-append source "/sicp-pocket.texi"))) + (every zero? + (map (cut system* "gzip" "-9n" <>) + (find-files info-dir)))))))) + (home-page "http://sarabander.github.io/sicp") + (synopsis "Structure and Interpretation of Computer Programs") + (description "Structure and Interpretation of Computer Programs (SICP) is +a textbook aiming to teach the principles of computer programming. + +Using Scheme, a dialect of the Lisp programming language, the book explains +core computer science concepts such as abstraction in programming, +metalinguistic abstraction, recursion, interpreters, and modular programming.") + (license cc-by-sa4.0)))) diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm new file mode 100644 index 0000000000..8108b0465d --- /dev/null +++ b/gnu/packages/shellutils.scm @@ -0,0 +1,50 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages shellutils) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu)) + +(define-public envstore + (package + (name "envstore") + (version "2.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://finalrewind.org/projects/" + name "/" name "-" version ".tar.bz2")) + (sha256 + (base32 "1x97lxad80m5blhdfanl5v2qzjwcgbij2i23701bn8mpyxsrqszi")))) + (build-system gnu-build-system) + (arguments + `(#:test-target "test" + #:make-flags (list "CC=gcc" + (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (delete 'configure)))) + (home-page "https://finalrewind.org/projects/envstore/") + (synopsis "Save and restore environment variables") + (description "Envstore is a program for sharing environment variables +between various shells or commands.") + (license + (non-copyleft "http://www.wtfpl.net/txt/copying/")))) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 7b3483206f..43f9042e9c 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl> ;;; Copyright © 2016 Roel Janssen <roel@gnu.org> +;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -356,13 +357,13 @@ Munsell colour system.") (define-public r-rcpp (package (name "r-rcpp") - (version "0.12.4") + (version "0.12.5") (source (origin (method url-fetch) (uri (cran-uri "Rcpp" version)) (sha256 - (base32 "1lyhyaxrnb5w4igi3l1p378s4jblcnrv6h7h5ym42ljm54mm44w3")))) + (base32 "1vw0zbd6zhqixqg7h8ahn1dr1hb492365x419nrp2lhvr60r8i0k")))) (build-system r-build-system) (home-page "http://www.rcpp.org") (synopsis "Seamless R and C++ Integration") @@ -604,13 +605,13 @@ evaluation (NSE) in R.") (define-public r-dbi (package (name "r-dbi") - (version "0.3.1") + (version "0.4-1") (source (origin (method url-fetch) (uri (cran-uri "DBI" version)) (sha256 (base32 - "0xj5baxwnhl23rd5nskhjvranrwrc68f3xlyrklglipi41bm69hw")))) + "13n6ibmrma42qmq17qgkyjsc0ciwqf17sd7lw7w26pwpyjd4mwgg")))) (build-system r-build-system) (home-page "https://github.com/rstats-db/DBI") (synopsis "R database interface") @@ -624,13 +625,13 @@ R/DBMS implementations.") (define-public r-bh (package (name "r-bh") - (version "1.60.0-1") + (version "1.60.0-2") (source (origin (method url-fetch) (uri (cran-uri "BH" version)) (sha256 (base32 - "08gc3b0irgvpjl59irdxs8jhlbky4yp4fvs3zi4pq0wdwj43cfsk")))) + "136497fng9bcvrf8favpj8inz96pxdwp1rrb2k00sxjxjbgawhg4")))) (build-system r-build-system) (home-page "https://github.com/eddelbuettel/bh") (synopsis "R package providing subset of Boost headers") @@ -642,13 +643,13 @@ for template use among CRAN packages.") (define-public r-evaluate (package (name "r-evaluate") - (version "0.8.3") + (version "0.9") (source (origin (method url-fetch) (uri (cran-uri "evaluate" version)) (sha256 (base32 - "08d6164m9wqf9qq6yh1s9a0qxwqzqpsq7312hilzy79gxf9gixzr")))) + "1bn6bympg9prr8d16g1g530bddii8i04hf4i2bkw0yf4dsfqq4g8")))) (build-system r-build-system) (propagated-inputs `(("r-stringr" ,r-stringr))) @@ -664,13 +665,13 @@ adapted for other output formats, such as HTML or LaTeX.") (define-public r-formatr (package (name "r-formatr") - (version "1.3") + (version "1.4") (source (origin (method url-fetch) (uri (cran-uri "formatR" version)) (sha256 (base32 - "09fsd0z6nhksc1h921h8q28f87hr6d1q8d6dmpxphjylb9r5xmj4")))) + "1fvynq0fj1r9grg9vvfdh5fl2riv6qki9f2rfpyvbvqq3xxpmi3f")))) (build-system r-build-system) (home-page "http://yihui.name/formatR") (synopsis "Format R code automatically") @@ -684,13 +685,13 @@ There is also a Shiny app as a user interface in this package.") (define-public r-highr (package (name "r-highr") - (version "0.5.1") + (version "0.6") (source (origin (method url-fetch) (uri (cran-uri "highr" version)) (sha256 (base32 - "11hyawzhaw3ph5y5xphi7alx6df1d0i6wh0a2n5m4sxxhdrzswnb")))) + "0n9v44dxdy5fhkdmpbpa2p78whyd9z3rhhy42ipdz5m5vsr55qa3")))) (build-system r-build-system) (home-page "https://github.com/yihui/highr") (synopsis "Syntax highlighting for R source code") @@ -765,13 +766,13 @@ emitter (http://pyyaml.org/wiki/LibYAML) for R.") (define-public r-knitr (package (name "r-knitr") - (version "1.12.3") + (version "1.13") (source (origin (method url-fetch) (uri (cran-uri "knitr" version)) (sha256 (base32 - "1v3rzv6wq8mvpdrljsaqk4z3f8323jnv385js24wmn4fglqly6dz")))) + "0v69846myi4fbjp8wiik4295fhba67s3i6ccysghm6x031i2f26q")))) (build-system r-build-system) (propagated-inputs `(("r-evaluate" ,r-evaluate) @@ -915,13 +916,13 @@ R packages that praise their users.") (define-public r-testthat (package (name "r-testthat") - (version "1.0.0") + (version "1.0.2") (source (origin (method url-fetch) (uri (cran-uri "testthat" version)) (sha256 (base32 - "1ci1y54kaz7g4di79fcibp0m0wkkxn2glchhs6v8jfg6374ka410")))) + "0pj1r01x4ny4capr83dfa19hi5i2sjjxky99schzip8zrq5dzxqf")))) (build-system r-build-system) (propagated-inputs `(("r-digest" ,r-digest) @@ -1395,14 +1396,14 @@ collation, and NAMESPACE files.") (define-public r-openssl (package (name "r-openssl") - (version "0.9.2") + (version "0.9.3") (source (origin (method url-fetch) (uri (cran-uri "openssl" version)) (sha256 (base32 - "1dbsaciz39zvsmcyxkmpfm5yxzrpw2iv2nb86525wn80q0cyv0cb")))) + "0ldqam7d9fyxwhr651ld6lsh05lg4v2y8ajxwzq9ywzjmfb3vlpz")))) (build-system r-build-system) (inputs `(("openssl" ,openssl))) @@ -1452,13 +1453,13 @@ functions make it easy to control additional request components.") (define-public r-git2r (package (name "r-git2r") - (version "0.14.0") + (version "0.15.0") (source (origin (method url-fetch) (uri (cran-uri "git2r" version)) (sha256 (base32 - "0jkkrggffpflaaw0gn2hnm1wz83xs31amriim481g73zf30g2bpr")))) + "1rpdf85wy9fp456ypvbhl3p9whkb7kgl0n7rkqxd2bhvyzkvjak8")))) (build-system r-build-system) ;; This R package contains modified sources of libgit2. This modified ;; version of libgit2 is built as the package is built. Hence libgit2 is @@ -1496,13 +1497,13 @@ informative error messages when it's not available.") (define-public r-devtools (package (name "r-devtools") - (version "1.11.0") + (version "1.11.1") (source (origin (method url-fetch) (uri (cran-uri "devtools" version)) (sha256 (base32 - "101j15d0f9107pnmdpdwqyvk2ncykq48336rl8lnqp6idiq8id2q")))) + "0ik3l3q62sspdph613f9ik5yz36s8q5nrc50dqgn3pxzvpwpdj2i")))) (build-system r-build-system) (propagated-inputs `(("r-curl" ,r-curl) @@ -1567,13 +1568,13 @@ disk (or a connection).") (define-public r-plotrix (package (name "r-plotrix") - (version "3.6-1") + (version "3.6-2") (source (origin (method url-fetch) (uri (cran-uri "plotrix" version)) (sha256 (base32 - "1y8xnlpy4zba70af9lwj2sshvfdfcmfdh92wamyzj8z9gciailfr")))) + "1jn1k3skmlgyvpijj6vlcn5m2zgrsdh00g1fq8n5dqs1pkl1sqrw")))) (build-system r-build-system) (home-page "http://cran.r-project.org/web/packages/plotrix") (synopsis "Various plotting functions") @@ -1646,13 +1647,13 @@ well as additional utilities such as panel and axis annotation functions.") (define-public r-rcpparmadillo (package (name "r-rcpparmadillo") - (version "0.6.700.3.0") + (version "0.6.700.6.0") (source (origin (method url-fetch) (uri (cran-uri "RcppArmadillo" version)) (sha256 (base32 - "1mc62b6my568ni18w4clgs6l6ggqrwzsm3lgx0c1prf4rap69s8w")) + "0x736cjg1pbvn8c6h91c88qmmz4pddvvqg88k9c9kwhn24fjrra0")) (modules '((guix build utils))) ;; Remove bundled armadillo sources (snippet @@ -1730,14 +1731,14 @@ encoder/decoder, round-off-error-free sum and cumsum, etc.") (define-public r-rmarkdown (package (name "r-rmarkdown") - (version "0.9.5") + (version "0.9.6") (source (origin (method url-fetch) (uri (cran-uri "rmarkdown" version)) (sha256 (base32 - "1zz98jxvw3lzva5kkj1n37gbhjwqd96gjs04y6h37pqy6qmkhk8c")))) + "09ajq5miqzz46q0i9svvbh93dbi7xbjn4702d6z3scdz272gx7l2")))) (properties `((upstream-name . "rmarkdown"))) (build-system r-build-system) (propagated-inputs @@ -2411,13 +2412,13 @@ persistent (on the file system).") (define-public r-r-rsp (package (name "r-r-rsp") - (version "0.21.0") + (version "0.30.0") (source (origin (method url-fetch) (uri (cran-uri "R.rsp" version)) (sha256 (base32 - "0snc6ps75s3ci6sy8mil1wg2i9xmlr1ygh9n244y1brdvp43dfsw")))) + "1ssykygqkxzx9qblxhavxlf2z6r5bhk0s47yw1dllfiyc8zy7jv2")))) (properties `((upstream-name . "R.rsp"))) (build-system r-build-system) (propagated-inputs @@ -2461,13 +2462,13 @@ t-probabilities, quantiles, random deviates and densities.") (define-public r-matrixstats (package (name "r-matrixstats") - (version "0.50.1") + (version "0.50.2") (source (origin (method url-fetch) (uri (cran-uri "matrixStats" version)) (sha256 (base32 - "08l32abp7dfnsc49ca4hzznh934y60n5z01x5ga2ixky5961s57c")))) + "0zj27xxx9cyrq16rn4g3l0krqg68p8f2qp18w1w4i767j87amlbj")))) (properties `((upstream-name . "matrixStats"))) (build-system r-build-system) (native-inputs @@ -2563,13 +2564,13 @@ It uses and relies on grid graphics and formal (S4) classes and methods.") (define-public r-plotly (package (name "r-plotly") - (version "3.4.13") + (version "3.6.0") (source (origin (method url-fetch) (uri (cran-uri "plotly" version)) (sha256 (base32 - "1pfl9w35iwin8a1hfwcihajyps2ngjbyrmvi61b9lspcdbk39lf8")))) + "15hvqa0sf4z6l6vvr614zjszfphwpv66zpc665iyiynq0pd1jv2c")))) (build-system r-build-system) (propagated-inputs `(("r-base64enc" ,r-base64enc) @@ -2593,6 +2594,28 @@ directly from R. Once uploaded to a plotly account, plotly graphs (and the data behind them) can be viewed and modified in a web browser.") (license license:x11))) +(define-public r-biased-urn + (package + (name "r-biased-urn") + (version "1.07") + (source + (origin + (method url-fetch) + (uri (cran-uri "BiasedUrn" version)) + (sha256 + (base32 + "13i2lgfnjhlbbm2yxfc2l5hswqw6x03pwba5csjmirv8kpjw4xr3")))) + (properties `((upstream-name . "BiasedUrn"))) + (build-system r-build-system) + (home-page "http://www.agner.org/random/") + (synopsis "Biased urn model distributions") + (description + "This package provides statistical models of biased sampling in the form +of univariate and multivariate noncentral hypergeometric distributions, +including Wallenius' noncentral hypergeometric distribution and Fisher's +noncentral hypergeometric distribution (also called extended hypergeometric +distribution).") + (license license:gpl3+))) (define-public r-ztable (package diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm index f6735a43e0..080c95ba1c 100644 --- a/gnu/packages/textutils.scm +++ b/gnu/packages/textutils.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2015, 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2015 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org> +;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,8 +28,10 @@ #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) + #:use-module (guix build-system trivial) #:use-module (gnu packages autotools) - #:use-module (gnu packages python)) + #:use-module (gnu packages python) + #:use-module (gnu packages zip)) (define-public recode (package @@ -328,3 +331,42 @@ name comes from: \"The antidote against people who send Microsoft Word files to everybody, because they believe that everybody runs Windows and therefore runs Word\".") (license license:gpl2+))) + +(define-public utfcpp + (package + (name "utfcpp") + (version "2.3.4") + (source (origin + (method url-fetch) + (uri + (string-append + "mirror://sourceforge/project/utfcpp/utf8cpp_2x/Release%20" + version "/utf8_v" + (string-map (lambda (x) (if (eq? x #\.) #\_ x)) version) + ".zip")) + (file-name (string-append name "-" version ".zip")) + (sha256 + (base32 + "1vqhs0aipcvvdrwcs7h3jsryg6mgbmc4s34n5cm6d36q4nxwwwrk")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((source (assoc-ref %build-inputs "source")) + (out (assoc-ref %outputs "out")) + (unzip (string-append (assoc-ref %build-inputs "unzip") + "/bin/unzip"))) + (mkdir-p out) + (with-directory-excursion out + (system* unzip source) + (mkdir-p "share/doc") + (rename-file "doc" "share/doc/utfcpp") + (rename-file "source" "include")))))) + (native-inputs `(("unzip" ,unzip))) + (home-page "https://github.com/nemtrif/utfcpp") + (synopsis "Portable C++ library for handling UTF-8") + (description "UTF8-CPP is a C++ library for handling UTF-8 encoded text +in a portable way.") + (license license:boost1.0))) diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index 35bd64faa9..cedb306957 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -351,13 +351,16 @@ security, and applying best practice development processes.") (define-public python-acme (package (name "python-acme") - (version "0.5.0") + (version "0.6.0") (source (origin - (method url-fetch) - (uri (pypi-uri "acme" version)) + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/" + "af/33/703e5ec3d7efde7c4d2fcea9cdf88953a33d4e72aafd5b0a330173a7b395/" + "acme-" version ".tar.gz")) (sha256 (base32 - "1g8scfkhs3l06588h73py81xb1gvkkdzaxanl21whcvdclycc186")))) + "1ipck25c6nr0x54w2cc8ziwjmyyrpyz6pc1y8xc9nqmxvw4n0kpc")))) (build-system python-build-system) (arguments `(#:phases @@ -407,16 +410,19 @@ security, and applying best practice development processes.") (define-public python2-acme (package-with-python2 python-acme)) -(define-public letsencrypt +(define-public certbot (package - (name "letsencrypt") - (version "0.5.0") + (name "certbot") + (version "0.6.0") (source (origin (method url-fetch) - (uri (pypi-uri "letsencrypt" version)) + (uri (string-append + "https://pypi.python.org/packages/" + "fc/eb/7594bf16d89909a9d52c46edbeae669d4b2ee6e12453bd97e674d0371920/" + name "-" version ".tar.gz")) (sha256 (base32 - "0nnijs26kkw07yylszc97p3jw09y98j54xihjp0rprrbp1q2p2p3")))) + "0ba95cf6shmyhi4vzvk64vbkrmr8qvkn32k3xwb2iv7ybbfbgc40")))) (build-system python-build-system) (arguments `(#:python ,python-2 @@ -428,14 +434,14 @@ security, and applying best practice development processes.") (man1 (string-append out "/share/man/man1")) (man7 (string-append out "/share/man/man7")) (info (string-append out "/info"))) - (substitute* "docs/man/letsencrypt.rst" - (("letsencrypt --help all") - (string-append out "/bin/letsencrypt" " --help all"))) + (substitute* "docs/man/certbot.rst" + (("certbot --help all") + (string-append out "/bin/certbot" " --help all"))) (and (zero? (system* "make" "-C" "docs" "man" "info")) - (install-file "docs/_build/texinfo/LetsEncrypt.info" info) - (install-file "docs/_build/man/letsencrypt.1" man1) - (install-file "docs/_build/man/letsencrypt.7" man7) + (install-file "docs/_build/texinfo/Certbot.info" info) + (install-file "docs/_build/man/certbot.1" man1) + (install-file "docs/_build/man/certbot.7" man7) #t))))))) ;; TODO: Add optional inputs for testing. (native-inputs @@ -465,9 +471,13 @@ security, and applying best practice development processes.") (description "Tool to automatically receive and install X.509 certificates to enable TLS on servers. The client will interoperate with the Let’s Encrypt CA which will be issuing browser-trusted certificates for free.") - (home-page "https://letsencrypt.org/") + (home-page "https://certbot.eff.org/") (license license:asl2.0))) +(define-public letsencrypt + (package (inherit certbot) + (name "letsencrypt"))) + (define-public perl-net-ssleay (package (name "perl-net-ssleay") diff --git a/gnu/packages/tmux.scm b/gnu/packages/tmux.scm index 48d50ccafc..d89fc16844 100644 --- a/gnu/packages/tmux.scm +++ b/gnu/packages/tmux.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> +;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,7 +29,7 @@ (define-public tmux (package (name "tmux") - (version "2.1") + (version "2.2") (source (origin (method url-fetch) (uri (string-append @@ -36,7 +37,7 @@ version "/tmux-" version ".tar.gz")) (sha256 (base32 - "0xk1mylsb08sf0w597mdgj9s6hxxjvjvjd6bngpjvvxwyixlwmii")))) + "1r0riry5vw604hc21087ffbkqgr6j4ia1rrsivz2k6grchdm8a5w")))) (build-system gnu-build-system) (inputs `(("libevent" ,libevent) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 796fd7ad67..db3e9f1768 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -265,6 +265,7 @@ as well as the classic centralized workflow.") ;; FIXME: This variable designates a single file; it is not a search path. (list (search-path-specification (variable "GIT_SSL_CAINFO") + (file-type 'regular) (files '("etc/ssl/certs/ca-certificates.crt"))))) (synopsis "Distributed version control system") @@ -323,7 +324,7 @@ command."))) (define-public libgit2 (package (name "libgit2") - (version "0.24.0") + (version "0.24.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/libgit2/libgit2/" @@ -331,7 +332,7 @@ command."))) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1c5jx0pcpz83x7s36jimfz5bj0vy7vwpchq9p4sgdqxy8gwr6rhw")))) + "1ppyfwxc276d2p2pwbzlmvs2bkgng425rl8k2rf9nsq66jxqq6b0")))) (build-system cmake-build-system) (arguments `(#:phases diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 5df4765d3c..c86e0f03fc 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -11,6 +11,7 @@ ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org> +;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -56,6 +57,7 @@ #:use-module (gnu packages icu4c) #:use-module (gnu packages lua) #:use-module (gnu packages base) + #:use-module (gnu packages perl) #:use-module (gnu packages python) #:use-module (gnu packages pcre) #:use-module (gnu packages pkg-config) @@ -274,6 +276,100 @@ easily construct JSON objects in C, output them as JSON formatted strings and parse JSON formatted strings back into the C representation of JSON objects.") (license l:x11))) +(define-public krona-tools + (package + (name "krona-tools") + (version "2.6.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/marbl/Krona/releases/download/v" + version "/KronaTools-" version ".tar")) + (sha256 + (base32 + "1fj5mf6wbwz7v74n2safbw7fpw32fik19vf0wdbc2srn82i8fiwz")))) + (build-system perl-build-system) + (arguments + `(#:tests? #f ; no tests + #:phases + (modify-phases %standard-phases + ;; There is no configure or build steps. + (delete 'configure) + (replace 'build + ;; Remove 'use lib' statements from scripts as PERL5LIB is set + ;; correctly during installation. + (lambda _ + (for-each + (lambda (executable) + (display executable)(display "\n") + (substitute* executable + (("use lib \\(`ktGetLibPath`\\);") ""))) + (find-files "scripts/" ".*")) + #t)) + ;; Install script "install.pl" expects the build directory to remain + ;; after installation, creating symlinks etc., so re-implement it + ;; here. + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") "/bin")) + (perl (string-append (assoc-ref outputs "out") + "/lib/perl5/site_perl")) + (share (string-append + (assoc-ref outputs "out") "/share/krona-tools"))) + (mkdir-p bin) + (for-each + (lambda (script) + (let* ((executable (string-append "scripts/" script ".pl"))) + ;; Prefix executables with 'kt' as install script does. + (copy-file executable (string-append bin "/kt" script)))) + '("ClassifyBLAST" + "GetContigMagnitudes" + "GetTaxIDFromGI" + "ImportBLAST" + "ImportDiskUsage" + "ImportEC" + "ImportFCP" + "ImportGalaxy" + "ImportKrona" + "ImportMETAREP-BLAST" + "ImportMETAREP-EC" + "ImportMGRAST" + "ImportPhymmBL" + "ImportRDP" + "ImportRDPComparison" + "ImportTaxonomy" + "ImportText" + "ImportXML")) + (mkdir-p share) + (copy-recursively "data" (string-append share "/data")) + (copy-recursively "img" (string-append share "/img")) + (copy-recursively "taxonomy" (string-append share "/taxonomy")) + (substitute* '("lib/KronaTools.pm") + (("taxonomyDir = \".libPath/../taxonomy\"") + (string-append "taxonomyDir = \"" share "/taxonomy\""))) + (install-file "lib/KronaTools.pm" perl)))) + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (path (getenv "PERL5LIB"))) + (for-each + (lambda (executable) + (wrap-program executable + `("PERL5LIB" ":" prefix + (,(string-append out "/lib/perl5/site_perl"))))) + (find-files (string-append out "/bin/") ".*")))))))) + (inputs + `(("perl" ,perl))) + (home-page "https://github.com/marbl/Krona/wiki") + (synopsis "Hierarchical data exploration with zoomable HTML5 pie charts") + (description + "Krona is a flexible tool for exploring the relative proportions of +hierarchical data, such as metagenomic classifications, using a radial, +space-filling display. It is implemented using HTML5 and JavaScript, allowing +charts to be explored locally or served over the Internet, requiring only a +current version of any major web browser.") + (license l:bsd-3))) + (define-public rapidjson (package (name "rapidjson") @@ -2964,13 +3060,13 @@ particularly easy to create complete web applications using httpuv alone.") (define-public r-jsonlite (package (name "r-jsonlite") - (version "0.9.19") + (version "0.9.20") (source (origin (method url-fetch) (uri (cran-uri "jsonlite" version)) (sha256 (base32 - "1hbdraj3xv2l2gs9f205j8z054ycy0bfdvwdhvpa9qlji588sz7g")))) + "08b2gifd81yzj0h4k7pqp2cc2r5lwsg3sxnssi6c96rgqvl4702n")))) (build-system r-build-system) (home-page "http://arxiv.org/abs/1403.2805") (synopsis "Robust, high performance JSON parser and generator for R") diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index c164c66a18..c201f03ab5 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2016 Florian Paul Schmidt <mista.tapas@gmx.net> -;;; Copyright © 2016 Kei Yamashita <kei@openmailbox.org> +;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index 538996f88f..a5ea3d0974 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015 Raimon Grau <raimonster@gmail.com> ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> +;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/guix/build/ant-build-system.scm b/guix/build/ant-build-system.scm index 27277af34b..6dc19ff2db 100644 --- a/guix/build/ant-build-system.scm +++ b/guix/build/ant-build-system.scm @@ -86,6 +86,17 @@ INPUTS." (find-files dir "\\.*jar$"))) inputs)) ":")) +(define* (unpack #:key source #:allow-other-keys) + "Unpack the jar archive SOURCE. When SOURCE is not a jar archive fall back +to the default GNU unpack strategy." + (if (string-suffix? ".jar" source) + (begin + (mkdir "src") + (with-directory-excursion "src" + (zero? (system* "jar" "-xf" source)))) + ;; Use GNU unpack strategy for things that aren't jar archives. + ((assq-ref gnu:%standard-phases 'unpack) #:source source))) + (define* (configure #:key inputs outputs (jar-name #f) #:allow-other-keys) (when jar-name @@ -151,6 +162,7 @@ repack them. This is necessary to ensure that archives are reproducible." (define %standard-phases (modify-phases gnu:%standard-phases + (replace 'unpack unpack) (replace 'configure configure) (replace 'build build) (replace 'check check) diff --git a/guix/build/download.scm b/guix/build/download.scm index fec4cec3e8..7741726c41 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -426,6 +426,85 @@ port if PORT is a TLS session record port." (module-define! (resolve-module '(web client)) 'shutdown (const #f)) + +;; XXX: Work around <http://bugs.gnu.org/23421>, fixed in Guile commit +;; 16050431f29d56f80c4a8253506fc851b8441840. Guile's date validation +;; procedure rejects dates in which the hour is not padded with a zero but +;; with whitespace. +(begin + (define-syntax string-match? + (lambda (x) + (syntax-case x () + ((_ str pat) (string? (syntax->datum #'pat)) + (let ((p (syntax->datum #'pat))) + #`(let ((s str)) + (and + (= (string-length s) #,(string-length p)) + #,@(let lp ((i 0) (tests '())) + (if (< i (string-length p)) + (let ((c (string-ref p i))) + (lp (1+ i) + (case c + ((#\.) ; Whatever. + tests) + ((#\d) ; Digit. + (cons #`(char-numeric? (string-ref s #,i)) + tests)) + ((#\a) ; Alphabetic. + (cons #`(char-alphabetic? (string-ref s #,i)) + tests)) + (else ; Literal. + (cons #`(eqv? (string-ref s #,i) #,c) + tests))))) + tests))))))))) + + (define (parse-rfc-822-date str space zone-offset) + (let ((parse-non-negative-integer (@@ (web http) parse-non-negative-integer)) + (parse-month (@@ (web http) parse-month)) + (bad-header (@@ (web http) bad-header))) + ;; We could verify the day of the week but we don't. + (cond ((string-match? (substring str 0 space) "aaa, dd aaa dddd dd:dd:dd") + (let ((date (parse-non-negative-integer str 5 7)) + (month (parse-month str 8 11)) + (year (parse-non-negative-integer str 12 16)) + (hour (parse-non-negative-integer str 17 19)) + (minute (parse-non-negative-integer str 20 22)) + (second (parse-non-negative-integer str 23 25))) + (make-date 0 second minute hour date month year zone-offset))) + ((string-match? (substring str 0 space) "aaa, d aaa dddd dd:dd:dd") + (let ((date (parse-non-negative-integer str 5 6)) + (month (parse-month str 7 10)) + (year (parse-non-negative-integer str 11 15)) + (hour (parse-non-negative-integer str 16 18)) + (minute (parse-non-negative-integer str 19 21)) + (second (parse-non-negative-integer str 22 24))) + (make-date 0 second minute hour date month year zone-offset))) + + ;; The next two clauses match dates that have a space instead of + ;; a leading zero for hours, like " 8:49:37". + ((string-match? (substring str 0 space) "aaa, dd aaa dddd d:dd:dd") + (let ((date (parse-non-negative-integer str 5 7)) + (month (parse-month str 8 11)) + (year (parse-non-negative-integer str 12 16)) + (hour (parse-non-negative-integer str 18 19)) + (minute (parse-non-negative-integer str 20 22)) + (second (parse-non-negative-integer str 23 25))) + (make-date 0 second minute hour date month year zone-offset))) + ((string-match? (substring str 0 space) "aaa, d aaa dddd d:dd:dd") + (let ((date (parse-non-negative-integer str 5 6)) + (month (parse-month str 7 10)) + (year (parse-non-negative-integer str 11 15)) + (hour (parse-non-negative-integer str 17 18)) + (minute (parse-non-negative-integer str 19 21)) + (second (parse-non-negative-integer str 22 24))) + (make-date 0 second minute hour date month year zone-offset))) + + (else + (bad-header 'date str) ; prevent tail call + #f)))) + (module-set! (resolve-module '(web http)) + 'parse-rfc-822-date parse-rfc-822-date)) + ;; XXX: Work around <http://bugs.gnu.org/19840>, present in Guile ;; up to 2.0.11. (unless (or (> (string->number (major-version)) 2) @@ -605,10 +684,22 @@ Return a list of URIs." (else (list uri)))) -(define* (url-fetch url file #:key (mirrors '())) +(define* (url-fetch url file + #:key + (mirrors '()) (content-addressed-mirrors '()) + (hashes '())) "Fetch FILE from URL; URL may be either a single string, or a list of string denoting alternate URLs for FILE. Return #f on failure, and FILE -on success." +on success. + +When MIRRORS is defined, it must be an alist of mirrors; it is used to resolve +'mirror://' URIs. + +HASHES must be a list of algorithm/hash pairs, where each algorithm is a +symbol such as 'sha256 and each hash is a bytevector. +CONTENT-ADDRESSED-MIRRORS must be a list of procedures that, given a hash +algorithm and a hash, return a URL where the specified data can be retrieved +or #f." (define uri (append-map (cut maybe-expand-mirrors <> mirrors) (match url @@ -628,13 +719,21 @@ on success." uri) #f))) + (define content-addressed-urls + (append-map (lambda (make-url) + (filter-map (match-lambda + ((hash-algo . hash) + (make-url hash-algo hash))) + hashes)) + content-addressed-mirrors)) + ;; Make this unbuffered so 'progress-proc' works as expected. _IOLBF means ;; '\n', not '\r', so it's not appropriate here. (setvbuf (current-output-port) _IONBF) (setvbuf (current-error-port) _IOLBF) - (let try ((uri uri)) + (let try ((uri (append uri content-addressed-urls))) (match uri ((uri tail ...) (or (fetch uri file) diff --git a/guix/build/graft.scm b/guix/build/graft.scm index b216e6c0d7..b61982dd64 100644 --- a/guix/build/graft.scm +++ b/guix/build/graft.scm @@ -83,6 +83,28 @@ writing the result to OUTPUT." (put-u8 output (char->integer char)) result))))) +(define (rename-matching-files directory mapping) + "Apply MAPPING to the names of all the files in DIRECTORY, where MAPPING is +a list of store file name pairs." + (let* ((mapping (map (match-lambda + ((source . target) + (cons (basename source) (basename target)))) + mapping)) + (matches (find-files directory + (lambda (file stat) + (assoc-ref mapping (basename file))) + #:directories? #t))) + + ;; XXX: This is not quite correct: if MAPPING contains "foo", and + ;; DIRECTORY contains "bar/foo/foo", we first rename "bar/foo" and then + ;; "bar/foo/foo" no longer exists so we fail. Oh well, surely that's good + ;; enough! + (for-each (lambda (file) + (let ((target (assoc-ref mapping (basename file)))) + (rename-file file + (string-append (dirname file) "/" target)))) + matches))) + (define* (rewrite-directory directory output mapping #:optional (store (%store-directory))) "Copy DIRECTORY to OUTPUT, replacing strings according to MAPPING, a list of @@ -115,6 +137,8 @@ file name pairs." (replace-store-references input output mapping store) (chmod output (stat:perms stat)))))))) + ((directory) + (mkdir-p dest)) (else (error "unsupported file type" stat))))) @@ -124,6 +148,8 @@ file name pairs." (umask #o022) (n-par-for-each (parallel-job-count) - rewrite-leaf (find-files directory))) + rewrite-leaf (find-files directory (const #t) + #:directories? #t)) + (rename-matching-files output mapping)) ;;; graft.scm ends here diff --git a/guix/derivations.scm b/guix/derivations.scm index d4f697477b..76593f373b 100644 --- a/guix/derivations.scm +++ b/guix/derivations.scm @@ -176,6 +176,11 @@ download with a fixed hash (aka. `fetchurl')." #t) (_ #f))) +(define (derivation-input<? input1 input2) + "Compare INPUT1 and INPUT2, two <derivation-input>." + (string<? (derivation-input-path input1) + (derivation-input-path input2))) + (define (derivation-input-output-paths input) "Return the list of output paths corresponding to INPUT, a <derivation-input>." @@ -190,6 +195,30 @@ the store." (every (cut valid-path? store <>) (derivation-input-output-paths input))) +(define (coalesce-duplicate-inputs inputs) + "Return a list of inputs, such that when INPUTS contains the same DRV twice, +they are coalesced, with their sub-derivations merged. This is needed because +Nix itself keeps only one of them." + (fold (lambda (input result) + (match input + (($ <derivation-input> path sub-drvs) + ;; XXX: quadratic + (match (find (match-lambda + (($ <derivation-input> p s) + (string=? p path))) + result) + (#f + (cons input result)) + ((and dup ($ <derivation-input> _ sub-drvs2)) + ;; Merge DUP with INPUT. + (let ((sub-drvs (delete-duplicates + (append sub-drvs sub-drvs2)))) + (cons (make-derivation-input path + (sort sub-drvs string<?)) + (delq dup result)))))))) + '() + inputs)) + (define* (derivation-prerequisites drv #:optional (cut? (const #f))) "Return the list of derivation-inputs required to build DRV, recursively. @@ -473,29 +502,6 @@ that form." (define (write-string-list lst) (write-list lst write port)) - (define (coalesce-duplicate-inputs inputs) - ;; Return a list of inputs, such that when INPUTS contains the same DRV - ;; twice, they are coalesced, with their sub-derivations merged. This is - ;; needed because Nix itself keeps only one of them. - (fold (lambda (input result) - (match input - (($ <derivation-input> path sub-drvs) - ;; XXX: quadratic - (match (find (match-lambda - (($ <derivation-input> p s) - (string=? p path))) - result) - (#f - (cons input result)) - ((and dup ($ <derivation-input> _ sub-drvs2)) - ;; Merge DUP with INPUT. - (let ((sub-drvs (delete-duplicates - (append sub-drvs sub-drvs2)))) - (cons (make-derivation-input path sub-drvs) - (delq dup result)))))))) - '() - inputs)) - (define (write-output output port) (match output ((name . ($ <derivation-output> path hash-algo hash recursive?)) @@ -515,7 +521,7 @@ that form." (display "(" port) (write path port) (display "," port) - (write-string-list (sort sub-drvs string<?)) + (write-string-list sub-drvs) (display ")" port)))) (define (write-env-var env-var port) @@ -527,35 +533,20 @@ that form." (write value port) (display ")" port)))) - ;; Note: lists are sorted alphabetically, to conform with the behavior of - ;; C++ `std::map' in Nix itself. - + ;; Assume all the lists we are writing are already sorted. (match drv (($ <derivation> outputs inputs sources system builder args env-vars) (display "Derive(" port) - (write-list (sort outputs - (lambda (o1 o2) - (string<? (car o1) (car o2)))) - write-output - port) + (write-list outputs write-output port) (display "," port) - (write-list (sort (coalesce-duplicate-inputs inputs) - (lambda (i1 i2) - (string<? (derivation-input-path i1) - (derivation-input-path i2)))) - write-input - port) + (write-list inputs write-input port) (display "," port) - (write-string-list (sort sources string<?)) + (write-string-list sources) (format port ",~s,~s," system builder) (write-string-list args) (display "," port) - (write-list (sort env-vars - (lambda (e1 e2) - (string<? (car e1) (car e2)))) - write-env-var - port) + (write-list env-vars write-env-var port) (display ")" port)))) (define derivation->string @@ -653,7 +644,10 @@ derivation at FILE." (let ((hash (derivation-path->base16-hash path))) (make-derivation-input hash sub-drvs)))) inputs)) - (drv (make-derivation outputs inputs sources + (drv (make-derivation outputs + (sort (coalesce-duplicate-inputs inputs) + derivation-input<?) + sources system builder args env-vars #f))) @@ -820,30 +814,38 @@ output should not be used." (make-derivation outputs inputs sources system builder args env-vars file)))) + (define input->derivation-input + (match-lambda + (((? derivation? drv)) + (make-derivation-input (derivation-file-name drv) '("out"))) + (((? derivation? drv) sub-drvs ...) + (make-derivation-input (derivation-file-name drv) sub-drvs)) + (((? direct-store-path? input)) + (make-derivation-input input '("out"))) + (((? direct-store-path? input) sub-drvs ...) + (make-derivation-input input sub-drvs)) + ((input . _) + (let ((path (add-to-store store (basename input) + #t "sha256" input))) + (make-derivation-input path '()))))) + + ;; Note: lists are sorted alphabetically, to conform with the behavior of + ;; C++ `std::map' in Nix itself. + (let* ((outputs (map (lambda (name) ;; Return outputs with an empty path. (cons name (make-derivation-output "" hash-algo hash recursive?))) - outputs)) - (inputs (map (match-lambda - (((? derivation? drv)) - (make-derivation-input (derivation-file-name drv) - '("out"))) - (((? derivation? drv) sub-drvs ...) - (make-derivation-input (derivation-file-name drv) - sub-drvs)) - (((? direct-store-path? input)) - (make-derivation-input input '("out"))) - (((? direct-store-path? input) sub-drvs ...) - (make-derivation-input input sub-drvs)) - ((input . _) - (let ((path (add-to-store store - (basename input) - #t "sha256" input))) - (make-derivation-input path '())))) - (delete-duplicates inputs))) - (env-vars (env-vars-with-empty-outputs (user+system-env-vars))) + (sort outputs string<?))) + (inputs (sort (coalesce-duplicate-inputs + (map input->derivation-input + (delete-duplicates inputs))) + derivation-input<?)) + (env-vars (sort (env-vars-with-empty-outputs + (user+system-env-vars)) + (lambda (e1 e2) + (string<? (car e1) (car e2))))) (drv-masked (make-derivation outputs (filter (compose derivation-path? derivation-input-path) @@ -858,8 +860,7 @@ output should not be used." (let ((file (add-text-to-store store (string-append name ".drv") (derivation->string drv) - (map derivation-input-path - inputs)))) + (map derivation-input-path inputs)))) (set-file-name drv file)))) (define* (map-derivation store drv mapping diff --git a/guix/download.scm b/guix/download.scm index 88f285dc0a..67c55aff33 100644 --- a/guix/download.scm +++ b/guix/download.scm @@ -202,7 +202,8 @@ (debian "http://ftp.de.debian.org/debian/" "http://ftp.fr.debian.org/debian/" - "http://ftp.debian.org/debian/")))) + "http://ftp.debian.org/debian/" + "http://archive.debian.org/debian/")))) (define %mirror-file ;; Copy of the list of mirrors to a file. This allows us to keep a single @@ -210,6 +211,22 @@ ;; 'object->string'. (plain-file "mirrors" (object->string %mirrors))) +(define %content-addressed-mirrors + ;; List of content-addressed mirrors. Each mirror is represented as a + ;; procedure that takes an algorithm (symbol) and a hash (bytevector), and + ;; returns a URL or #f. + ;; TODO: Add more. + '(list (lambda (algo hash) + ;; 'tarballs.nixos.org' supports several algorithms. + (string-append "http://tarballs.nixos.org/" + (symbol->string algo) "/" + (bytevector->nix-base32-string hash))))) + +(define %content-addressed-mirror-file + ;; Content-addressed mirrors stored in a file. + (plain-file "content-addressed-mirrors" + (object->string %content-addressed-mirrors))) + (define (gnutls-package) "Return the default GnuTLS package." (let ((module (resolve-interface '(gnu packages tls)))) @@ -258,12 +275,21 @@ in the store." %load-path))) #~#t) - (use-modules (guix build download)) + (use-modules (guix build download) + (guix base32)) + + (let ((value-from-environment (lambda (variable) + (call-with-input-string + (getenv variable) + read)))) + (url-fetch (value-from-environment "guix download url") + #$output + #:mirrors (call-with-input-file #$%mirror-file read) - (url-fetch (call-with-input-string (getenv "guix download url") - read) - #$output - #:mirrors (call-with-input-file #$%mirror-file read)))) + ;; Content-addressed mirrors. + #:hashes (value-from-environment "guix download hashes") + #:content-addressed-mirrors + (primitive-load #$%content-addressed-mirror-file))))) (let ((uri (and (string? url) (string->uri url)))) (if (or (and (string? url) (not uri)) @@ -278,14 +304,17 @@ in the store." #:hash hash #:modules '((guix build download) (guix build utils) - (guix ftp-client)) + (guix ftp-client) + (guix base32)) ;; Use environment variables and a fixed script ;; name so there's only one script in store for ;; all the downloads. #:script-name "download" #:env-vars - `(("guix download url" . ,(object->string url))) + `(("guix download url" . ,(object->string url)) + ("guix download hashes" + . ,(object->string `((,hash-algo . ,hash))))) ;; Honor the user's proxy settings. #:leaked-env-vars '("http_proxy" "https_proxy") diff --git a/guix/graph.scm b/guix/graph.scm index 1a8f2d55b3..ad93403a1e 100644 --- a/guix/graph.scm +++ b/guix/graph.scm @@ -65,7 +65,7 @@ (identifier node-type-identifier) ;node -> M identifier (label node-type-label) ;node -> string (edges node-type-edges) ;node -> M list of nodes - (convert node-type-convert ;package -> M list of nodes + (convert node-type-convert ;any -> M list of nodes (default (lift1 list %store-monad))) (name node-type-name) ;string (description node-type-description)) ;string diff --git a/guix/import/cran.scm b/guix/import/cran.scm index 69485bc88d..f9369414cd 100644 --- a/guix/import/cran.scm +++ b/guix/import/cran.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. @@ -111,11 +111,11 @@ package definition." (define %cran-url "http://cran.r-project.org/web/packages/") (define %bioconductor-url "http://bioconductor.org/packages/") -;; The latest Bioconductor release is 3.2. Bioconductor packages should be +;; The latest Bioconductor release is 3.3. Bioconductor packages should be ;; updated together. (define %bioconductor-svn-url (string-append "https://readonly:readonly@" - "hedgehog.fhcrc.org/bioconductor/branches/RELEASE_3_2/" + "hedgehog.fhcrc.org/bioconductor/branches/RELEASE_3_3/" "madman/Rpacks/")) @@ -267,7 +267,7 @@ s-expression corresponding to that package, or #f on failure." (upstream-source (package (package-name package)) (version version) - (urls (bioconductor-uri upstream-name version)))))) + (urls (list (bioconductor-uri upstream-name version))))))) (define (cran-package? package) "Return true if PACKAGE is an R package from CRAN." diff --git a/guix/import/gnu.scm b/guix/import/gnu.scm index 834f0ae5cf..2cfb46beb9 100644 --- a/guix/import/gnu.scm +++ b/guix/import/gnu.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -55,8 +55,8 @@ (define* (gnu-package->sexp package release #:key (key-download 'interactive)) "Return the 'package' sexp for the RELEASE (a <gnu-release>) of PACKAGE (a -<gnu-package>). Use KEY-DOWNLOAD as the OpenPGP key download policy (see -'download-tarball' for details.)" +<gnu-package>), or #f upon failure. Use KEY-DOWNLOAD as the OpenPGP key +download policy (see 'download-tarball' for details.)" (define name (gnu-package-name package)) @@ -79,25 +79,29 @@ (find (cute string-suffix? (string-append archive-type ".sig") <>) (upstream-source-signature-urls release))) - (let ((tarball (with-store store - (download-tarball store url sig-url - #:key-download key-download)))) - `(package - (name ,name) - (version ,(upstream-source-version release)) - (source (origin - (method url-fetch) - (uri (string-append ,url-base version - ,(string-append ".tar." archive-type))) - (sha256 - (base32 - ,(bytevector->nix-base32-string (file-sha256 tarball)))))) - (build-system gnu-build-system) - (synopsis ,(gnu-package-doc-summary package)) - (description ,(gnu-package-doc-description package)) - (home-page ,(match (gnu-package-doc-urls package) - ((head . tail) (qualified-url head)))) - (license find-by-yourself!)))) + (with-store store + (match (download-tarball store url sig-url + #:key-download key-download) + ((? string? tarball) + `(package + (name ,name) + (version ,(upstream-source-version release)) + (source (origin + (method url-fetch) + (uri (string-append ,url-base version + ,(string-append ".tar." archive-type))) + (sha256 + (base32 + ,(bytevector->nix-base32-string + (file-sha256 tarball)))))) + (build-system gnu-build-system) + (synopsis ,(gnu-package-doc-summary package)) + (description ,(gnu-package-doc-description package)) + (home-page ,(match (gnu-package-doc-urls package) + ((head . tail) (qualified-url head)))) + (license find-by-yourself!))) + (#f ;failure to download or authenticate the tarball + #f)))) (define* (gnu->guix-package name #:key (key-download 'interactive)) diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index 320ec39be2..a02a0d5792 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -65,9 +65,13 @@ found. Return #f if no build log was found." (define (valid-url? url) ;; Probe URL and return #t if it is accessible. - (guard (c ((http-get-error? c) #f)) - (close-port (http-fetch url #:buffered? #f)) - #t)) + (catch 'getaddrinfo-error + (lambda () + (guard (c ((http-get-error? c) #f)) + (close-port (http-fetch url #:buffered? #f)) + #t)) + (lambda _ + #f))) (define (find-url file) (let ((base (basename file))) @@ -681,7 +685,8 @@ needed." (_ #f)) opts))) - (unless (assoc-ref opts 'log-file?) + (unless (or (assoc-ref opts 'log-file?) + (assoc-ref opts 'derivations-only?)) (show-what-to-build store drv #:use-substitutes? (assoc-ref opts 'substitutes?) diff --git a/guix/scripts/graph.scm b/guix/scripts/graph.scm index ba63780e2b..782fca5d63 100644 --- a/guix/scripts/graph.scm +++ b/guix/scripts/graph.scm @@ -33,6 +33,7 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) #:use-module (srfi srfi-37) #:use-module (ice-9 match) #:export (%package-node-type @@ -70,11 +71,27 @@ name." ;; Filter out origins and other non-package dependencies. (filter package? packages)))) +(define assert-package + (match-lambda + ((? package? package) + package) + (x + (raise + (condition + (&message + (message (format #f (_ "~a: invalid argument (package name expected)") + x)))))))) + +(define nodes-from-package + ;; The default conversion method. + (lift1 (compose list assert-package) %store-monad)) + (define %package-node-type ;; Type for the traversal of package nodes. (node-type (name "package") (description "the DAG of packages, excluding implicit inputs") + (convert nodes-from-package) ;; We use package addresses as unique identifiers. This generally works ;; well, but for generated package objects, we could end up with two @@ -131,6 +148,7 @@ Dependencies may include packages, origin, and file names." (node-type (name "bag") (description "the DAG of packages, including implicit inputs") + (convert nodes-from-package) (identifier bag-node-identifier) (label node-full-name) (edges (lift1 (compose (cut filter package? <>) bag-node-edges) @@ -140,6 +158,7 @@ Dependencies may include packages, origin, and file names." (node-type (name "bag-with-origins") (description "the DAG of packages and origins, including implicit inputs") + (convert nodes-from-package) (identifier bag-node-identifier) (label node-full-name) (edges (lift1 (lambda (thing) @@ -170,6 +189,7 @@ GNU-BUILD-SYSTEM have zero dependencies." (node-type (name "bag-emerged") (description "same as 'bag', but without the bootstrap nodes") + (convert nodes-from-package) (identifier bag-node-identifier) (label node-full-name) (edges (lift1 (compose (cut filter package? <>) @@ -215,10 +235,19 @@ a plain store file." (node-type (name "derivation") (description "the DAG of derivations") - (convert (lambda (package) - (with-monad %store-monad - (>>= (package->derivation package) - (lift1 list %store-monad))))) + (convert (match-lambda + ((? package? package) + (with-monad %store-monad + (>>= (package->derivation package) + (lift1 list %store-monad)))) + ((? derivation-path? item) + (mbegin %store-monad + ((store-lift add-temp-root) item) + (return (list (file->derivation item))))) + (x + (raise + (condition (&message (message "unsupported argument for \ +derivation graph"))))))) (identifier (lift1 derivation-node-identifier %store-monad)) (label derivation-node-label) (edges (lift1 derivation-dependencies %store-monad)))) @@ -246,12 +275,20 @@ substitutes." (node-type (name "references") (description "the DAG of run-time dependencies (store references)") - (convert (lambda (package) - ;; Return the output file names of PACKAGE. - (mlet %store-monad ((drv (package->derivation package))) - (return (match (derivation->output-paths drv) - (((_ . file-names) ...) - file-names)))))) + (convert (match-lambda + ((? package? package) + ;; Return the output file names of PACKAGE. + (mlet %store-monad ((drv (package->derivation package))) + (return (match (derivation->output-paths drv) + (((_ . file-names) ...) + file-names))))) + ((? store-path? item) + (with-monad %store-monad + (return (list item)))) + (x + (raise + (condition (&message (message "unsupported argument for \ +reference graph"))))))) (identifier (lift1 identity %store-monad)) (label store-path-package-name) (edges references*))) @@ -348,7 +385,9 @@ Emit a Graphviz (dot) representation of the dependencies of PACKAGE...\n")) (alist-cons 'argument arg result)) %default-options)) (type (assoc-ref opts 'node-type)) - (packages (filter-map (match-lambda + (items (filter-map (match-lambda + (('argument . (? store-path? item)) + item) (('argument . spec) (specification->package spec)) (('expression . exp) @@ -356,15 +395,18 @@ Emit a Graphviz (dot) representation of the dependencies of PACKAGE...\n")) (_ #f)) opts))) (with-store store - (run-with-store store - ;; XXX: Since grafting can trigger unsolicited builds, disable it. - (mlet %store-monad ((_ (set-grafting #f)) - (nodes (mapm %store-monad - (node-type-convert type) - packages))) - (export-graph (concatenate nodes) - (current-output-port) - #:node-type type)))))) + ;; Ask for absolute file names so that .drv file names passed from the + ;; user to 'read-derivation' are absolute when it returns. + (with-fluids ((%file-port-name-canonicalization 'absolute)) + (run-with-store store + ;; XXX: Since grafting can trigger unsolicited builds, disable it. + (mlet %store-monad ((_ (set-grafting #f)) + (nodes (mapm %store-monad + (node-type-convert type) + items))) + (export-graph (concatenate nodes) + (current-output-port) + #:node-type type))))))) #t) ;;; graph.scm ends here diff --git a/guix/scripts/import.scm b/guix/scripts/import.scm index 7b29794e8f..e54744feca 100644 --- a/guix/scripts/import.scm +++ b/guix/scripts/import.scm @@ -107,7 +107,10 @@ Run IMPORTER with ARGS.\n")) (show-version-and-exit "guix import")) ((importer args ...) (if (member importer importers) - (let ((expr (apply (resolve-importer importer) args))) - (pretty-print expr (newline-rewriting-port (current-output-port)))) - (format (current-error-port) - (_ "guix import: invalid importer~%")))))) + (match (apply (resolve-importer importer) args) + ((and expr ('package _ ...)) + (pretty-print expr (newline-rewriting-port + (current-output-port)))) + (x + (leave (_ "'~a' import failed~%") importer))) + (leave (_ "~a: invalid importer~%") importer))))) diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index 06001d3eae..b4fdb6f905 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm @@ -600,15 +600,6 @@ be determined." ((? origin?) (and=> (origin-actual-file-name patch) basename)))) -(define (package-name->cpe-name name) - "Do a basic conversion of NAME, a Guix package name, to the corresponding -Common Platform Enumeration (CPE) name." - (match name - ("icecat" "firefox") ;or "firefox_esr" - ("grub" "grub2") - ;; TODO: Add more. - (_ name))) - (define (current-vulnerabilities*) "Like 'current-vulnerabilities', but return the empty list upon networking or HTTP errors. This allows network-less operation and makes problems with @@ -635,9 +626,15 @@ from ~s: ~a (~s)~%") (current-vulnerabilities*))))) (lambda (package) "Return a list of vulnerabilities affecting PACKAGE." - ((force lookup) - (package-name->cpe-name (package-name package)) - (package-version package))))) + ;; First we retrieve the Common Platform Enumeration (CPE) name and + ;; version for PACKAGE, then we can pass them to LOOKUP. + (let ((name (or (assoc-ref (package-properties package) + 'cpe-name) + (package-name package))) + (version (or (assoc-ref (package-properties package) + 'cpe-version) + (package-version package)))) + ((force lookup) name version))))) (define (check-vulnerabilities package) "Check for known vulnerabilities for PACKAGE." diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index d46d610347..5cdc55f2b2 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm @@ -440,9 +440,15 @@ the cache STR originates form." (define (narinfo-cache-file cache-url path) "Return the name of the local file that contains an entry for PATH. The entry is stored in a sub-directory specific to CACHE-URL." - (string-append %narinfo-cache-directory "/" - (bytevector->base32-string (sha256 (string->utf8 cache-url))) - "/" (store-path-hash-part path))) + ;; The daemon does not sanitize its input, so PATH could be something like + ;; "/gnu/store/foo". Gracefully handle that. + (match (store-path-hash-part path) + (#f + (leave (_ "'~a' does not name a store item~%") path)) + ((? string? hash-part) + (string-append %narinfo-cache-directory "/" + (bytevector->base32-string (sha256 (string->utf8 cache-url))) + "/" hash-part)))) (define (cached-narinfo cache-url path) "Check locally if we have valid info about PATH coming from CACHE-URL. diff --git a/guix/store.scm b/guix/store.scm index f352a99cbd..4d89f4a413 100644 --- a/guix/store.scm +++ b/guix/store.scm @@ -615,7 +615,7 @@ store directory (/gnu/store)." boolean) (define-operation (query-path-hash (store-path path)) - "Return the SHA256 hash of PATH as a bytevector." + "Return the SHA256 hash of the nar serialization of PATH as a bytevector." base16) (define hash-part->path diff --git a/guix/upstream.scm b/guix/upstream.scm index 167c9ff89a..18157376d2 100644 --- a/guix/upstream.scm +++ b/guix/upstream.scm @@ -143,8 +143,9 @@ no update is needed or known." #:key (key-download 'interactive)) "Download the tarball at URL to the store; check its OpenPGP signature at SIGNATURE-URL, unless SIGNATURE-URL is false. On success, return the tarball -file name. KEY-DOWNLOAD specifies a download policy for missing OpenPGP keys; -allowed values: 'interactive' (default), 'always', and 'never'." +file name; return #f on failure (network failure or authentication failure). +KEY-DOWNLOAD specifies a download policy for missing OpenPGP keys; allowed +values: 'interactive' (default), 'always', and 'never'." (let ((tarball (download-to-store store url))) (if (not signature-url) tarball diff --git a/tests/derivations.scm b/tests/derivations.scm index cb7196e2a9..d8553b223e 100644 --- a/tests/derivations.scm +++ b/tests/derivations.scm @@ -367,6 +367,33 @@ (and (eq? 'one (call-with-input-file one read)) (eq? 'two (call-with-input-file two read))))))) +(test-assert "read-derivation vs. derivation" + ;; Make sure 'derivation' and 'read-derivation' return objects that are + ;; identical. + (let* ((sources (unfold (cut >= <> 10) + (lambda (n) + (add-text-to-store %store + (format #f "input~a" n) + (random-text))) + 1+ + 0)) + (inputs (map (lambda (file) + (derivation %store "derivation-input" + %bash '() + #:inputs `((,%bash) (,file)))) + sources)) + (builder (add-text-to-store %store "builder.sh" + "echo one > $one ; echo two > $two" + '())) + (drv (derivation %store "derivation" + %bash `(,builder) + #:inputs `((,%bash) (,builder) + ,@(map list (append sources inputs))) + #:outputs '("two" "one"))) + (drv* (call-with-input-file (derivation-file-name drv) + read-derivation))) + (equal? drv* drv))) + (test-assert "multiple-output derivation, derivation-path->output-path" (let* ((builder (add-text-to-store %store "builder.sh" "echo one > $out ; echo two > $second" diff --git a/tests/grafts.scm b/tests/grafts.scm index afed704cde..8cd048552c 100644 --- a/tests/grafts.scm +++ b/tests/grafts.scm @@ -127,6 +127,30 @@ (list one two dep) (references %store dep))))))) +(test-assert "graft-derivation, preserve empty directories" + (run-with-store %store + (mlet* %store-monad ((fake (text-file "bash" "Fake bash.")) + (graft -> (graft + (origin %bash) + (replacement fake))) + (drv (gexp->derivation + "to-graft" + #~(begin + (use-modules (guix build utils)) + (mkdir-p (string-append #$output + "/a/b/c/d")) + (symlink #$%bash + (string-append #$output + "/bash"))) + #:modules '((guix build utils)))) + (grafted ((store-lift graft-derivation) drv + (list graft))) + (_ (built-derivations (list grafted))) + (out -> (derivation->output-path grafted))) + (return (and (string=? (readlink (string-append out "/bash")) + fake) + (file-is-directory? (string-append out "/a/b/c/d"))))))) + (test-assert "graft-derivation, no dependencies on grafted output" (run-with-store %store (mlet* %store-monad ((fake (text-file "bash" "Fake bash.")) @@ -158,4 +182,21 @@ (and (string=? (readlink one) repl) (string=? (readlink two) one)))))) +(test-assert "graft-derivation, renaming" ;<http://bugs.gnu.org/23132> + (let* ((build `(begin + (use-modules (guix build utils)) + (mkdir-p (string-append (assoc-ref %outputs "out") "/" + (assoc-ref %build-inputs "in"))))) + (orig (build-expression->derivation %store "thing-to-graft" build + #:modules '((guix build utils)) + #:inputs `(("in" ,%bash)))) + (repl (add-text-to-store %store "bash" "fake bash")) + (grafted (graft-derivation %store orig + (list (graft + (origin %bash) + (replacement repl)))))) + (and (build-derivations %store (list grafted)) + (let ((out (derivation->output-path grafted))) + (file-is-directory? (string-append out "/" repl)))))) + (test-end) diff --git a/tests/guix-graph.sh b/tests/guix-graph.sh index 4d5a755bc1..1ec99706fd 100644 --- a/tests/guix-graph.sh +++ b/tests/guix-graph.sh @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright © 2015 Ludovic Courtès <ludo@gnu.org> +# Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org> # # This file is part of GNU Guix. # @@ -20,6 +20,10 @@ # Test the 'guix graph' command-line utility. # +tmpfile1="t-guix-graph1-$$" +tmpfile2="t-guix-graph2-$$" +trap 'rm -f "$tmpfile1" "$tmpfile2"' EXIT + guix graph --version for package in guile-bootstrap coreutils python @@ -37,3 +41,15 @@ guix graph -e '(@ (gnu packages bootstrap) %bootstrap-guile)' \ | grep guile-bootstrap if guix graph -e +; then false; else true; fi + +# Try passing store file names. + +guix graph -t references guile-bootstrap > "$tmpfile1" +guix graph -t references `guix build guile-bootstrap` > "$tmpfile2" +cmp "$tmpfile1" "$tmpfile2" + +# XXX: Filter the file names in the graph to work around the fact that we get +# a mixture of relative and absolute file names. +guix graph -t derivation coreutils > "$tmpfile1" +guix graph -t derivation `guix build -d coreutils` > "$tmpfile2" +cmp "$tmpfile1" "$tmpfile2" |