aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi24
-rw-r--r--gnu/local.mk10
-rw-r--r--gnu/packages/admin.scm17
-rw-r--r--gnu/packages/benchmark.scm28
-rw-r--r--gnu/packages/bioconductor.scm68
-rw-r--r--gnu/packages/bioinformatics.scm67
-rw-r--r--gnu/packages/chromium.scm85
-rw-r--r--gnu/packages/crates-io.scm92
-rw-r--r--gnu/packages/databases.scm5
-rw-r--r--gnu/packages/disk.scm22
-rw-r--r--gnu/packages/emacs-xyz.scm223
-rw-r--r--gnu/packages/games.scm70
-rw-r--r--gnu/packages/gimp.scm8
-rw-r--r--gnu/packages/gnupg.scm6
-rw-r--r--gnu/packages/gpodder.scm10
-rw-r--r--gnu/packages/gps.scm35
-rw-r--r--gnu/packages/guile-xyz.scm80
-rw-r--r--gnu/packages/kawa.scm53
-rw-r--r--gnu/packages/linux.scm20
-rw-r--r--gnu/packages/mes.scm39
-rw-r--r--gnu/packages/networking.scm4
-rw-r--r--gnu/packages/patches/benchmark-unbundle-googletest.patch69
-rw-r--r--gnu/packages/patches/emacs-realgud-fix-configure-ac.patch27
-rw-r--r--gnu/packages/patches/inkscape-poppler-compat3.patch499
-rw-r--r--gnu/packages/patches/racket-store-checksum-override.patch35
-rw-r--r--gnu/packages/patches/ri-li-modernize_cpp.patch391
-rw-r--r--gnu/packages/patches/usb-modeswitch-accept-config-arg.patch42
-rw-r--r--gnu/packages/perl.scm9
-rw-r--r--gnu/packages/scheme.scm4
-rw-r--r--gnu/packages/usb-modeswitch.scm166
-rw-r--r--gnu/packages/vim.scm29
-rw-r--r--gnu/packages/web.scm19
-rw-r--r--gnu/packages/wget.scm14
-rw-r--r--gnu/packages/wm.scm9
-rw-r--r--gnu/services/nix.scm3
-rw-r--r--guix/build-system/cargo.scm117
-rw-r--r--guix/build/cargo-build-system.scm54
-rw-r--r--guix/import/cabal.scm7
-rw-r--r--guix/import/crate.scm47
-rw-r--r--guix/import/hackage.scm62
-rw-r--r--guix/import/utils.scm4
-rw-r--r--nix/libstore/build.cc2
-rw-r--r--nix/libstore/globals.cc2
-rw-r--r--nix/libstore/store-api.cc2
-rw-r--r--tests/crate.scm4
-rw-r--r--tests/hackage.scm45
46 files changed, 1824 insertions, 804 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 87dc6ea5c5..052be47bdb 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -64,6 +64,7 @@ Copyright @copyright{} 2018 Laura Lazzati@*
Copyright @copyright{} 2018 Alex Vong@*
Copyright @copyright{} 2019 Josh Holland@*
Copyright @copyright{} 2019 Diego Nicola Barbato@*
+Copyright @copyright{} 2019 Ivan Petkov@*
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -569,7 +570,7 @@ you may have to run @code{su -} or @code{sudo -i}. As @code{root}, run:
@example
# cd /tmp
# tar --warning=no-timestamp -xf \
- guix-binary-@value{VERSION}.@var{system}.tar.xz
+ /path/to/guix-binary-@value{VERSION}.@var{system}.tar.xz
# mv var/guix /var/ && mv gnu /
@end example
@@ -5814,10 +5815,21 @@ This variable is exported by @code{(guix build-system cargo)}. It
supports builds of packages using Cargo, the build tool of the
@uref{https://www.rust-lang.org, Rust programming language}.
-In its @code{configure} phase, this build system replaces dependencies
-specified in the @file{Cargo.toml} file with inputs to the Guix package.
-The @code{install} phase installs the binaries, and it also installs the
-source code and @file{Cargo.toml} file.
+It adds @code{rustc} and @code{cargo} to the set of inputs.
+A different Rust package can be specified with the @code{#:rust} parameter.
+
+Regular cargo dependencies should be added to the package definition via the
+@code{#:cargo-inputs} parameter as a list of name and spec pairs, where the
+spec can be a package or a source definition. Note that the spec must
+evaluate to a path to a gzipped tarball which includes a @code{Cargo.toml}
+file at its root, or it will be ignored. Similarly, cargo dev-dependencies
+should be added to the package definition via the
+@code{#:cargo-development-inputs} parameter.
+
+In its @code{configure} phase, this build system will make any source inputs
+specified in the @code{#:cargo-inputs} and @code{#:cargo-development-inputs}
+parameters available to cargo. The @code{install} phase installs any crate
+the binaries if they are defined by the crate.
@end defvr
@cindex Clojure (programming language)
@@ -19821,7 +19833,7 @@ A simple setup for cat-avatar-generator can look like this:
@subsubheading Hpcguix-web
@cindex hpcguix-web
-The @uref{hpcguix-web, https://github.com/UMCUGenetics/hpcguix-web/}
+The @uref{https://github.com/UMCUGenetics/hpcguix-web/, hpcguix-web}
program is a customizable web interface to browse Guix packages,
initially designed for users of high-performance computing (HPC)
clusters.
diff --git a/gnu/local.mk b/gnu/local.mk
index 49cb429ba9..5b6dd31b11 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -15,7 +15,7 @@
# Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
# Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
# Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
-# Copyright © 2017, 2018 Gábor Boskovits <boskovits@gmail.com>
+# Copyright © 2017, 2018, 2019 Gábor Boskovits <boskovits@gmail.com>
# Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
# Copyright © 2018, 2019 Oleg Pykhalov <go.wigust@gmail.com>
# Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
@@ -121,6 +121,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/cpp.scm \
%D%/packages/cppi.scm \
%D%/packages/cran.scm \
+ %D%/packages/crates-io.scm \
%D%/packages/cross-base.scm \
%D%/packages/crypto.scm \
%D%/packages/cryptsetup.scm \
@@ -261,6 +262,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/jrnl.scm \
%D%/packages/jose.scm \
%D%/packages/julia.scm \
+ %D%/packages/kawa.scm \
%D%/packages/kde.scm \
%D%/packages/kde-frameworks.scm \
%D%/packages/kde-plasma.scm \
@@ -468,6 +470,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/uml.scm \
%D%/packages/unrtf.scm \
%D%/packages/upnp.scm \
+ %D%/packages/usb-modeswitch.scm \
%D%/packages/uucp.scm \
%D%/packages/valgrind.scm \
%D%/packages/version-control.scm \
@@ -688,6 +691,7 @@ dist_patch_DATA = \
%D%/packages/patches/bazaar-CVE-2017-14176.patch \
%D%/packages/patches/beets-python-3.7-fix.patch \
%D%/packages/patches/beignet-correct-file-names.patch \
+ %D%/packages/patches/benchmark-unbundle-googletest.patch \
%D%/packages/patches/biber-fix-encoding-write.patch \
%D%/packages/patches/binutils-loongson-workaround.patch \
%D%/packages/patches/blender-2.79-newer-ffmpeg.patch \
@@ -759,7 +763,6 @@ dist_patch_DATA = \
%D%/packages/patches/emacs-highlight-stages-add-gexp.patch \
%D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch \
%D%/packages/patches/emacs-source-date-epoch.patch \
- %D%/packages/patches/emacs-realgud-fix-configure-ac.patch \
%D%/packages/patches/emacs-undohist-ignored.patch \
%D%/packages/patches/emacs-wordnut-require-adaptive-wrap.patch \
%D%/packages/patches/emacs-zones-called-interactively.patch \
@@ -929,7 +932,6 @@ dist_patch_DATA = \
%D%/packages/patches/id3lib-CVE-2007-4460.patch \
%D%/packages/patches/idris-test-no-node.patch \
%D%/packages/patches/ilmbase-fix-tests.patch \
- %D%/packages/patches/inkscape-poppler-compat3.patch \
%D%/packages/patches/intltool-perl-compatibility.patch \
%D%/packages/patches/irrlicht-use-system-libs.patch \
%D%/packages/patches/isl-0.11.1-aarch64-support.patch \
@@ -1235,6 +1237,7 @@ dist_patch_DATA = \
%D%/packages/patches/readline-6.2-CVE-2014-2524.patch \
%D%/packages/patches/red-eclipse-remove-gamma-name-hack.patch \
%D%/packages/patches/reposurgeon-add-missing-docbook-files.patch \
+ %D%/packages/patches/ri-li-modernize_cpp.patch \
%D%/packages/patches/ripperx-missing-file.patch \
%D%/packages/patches/rpcbind-CVE-2017-8779.patch \
%D%/packages/patches/rtags-separate-rct.patch \
@@ -1332,6 +1335,7 @@ dist_patch_DATA = \
%D%/packages/patches/util-linux-tests.patch \
%D%/packages/patches/upower-builddir.patch \
%D%/packages/patches/upx-fix-CVE-2017-15056.patch \
+ %D%/packages/patches/usb-modeswitch-accept-config-arg.patch \
%D%/packages/patches/valgrind-enable-arm.patch \
%D%/packages/patches/vboot-utils-fix-format-load-address.patch \
%D%/packages/patches/vboot-utils-fix-tests-show-contents.patch \
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index d85bd6e324..9392c59521 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -2140,9 +2140,20 @@ results (ndiff), and a packet generation and response analysis tool (nping).")
#:make-flags (let ((out (assoc-ref %outputs "out")))
(list (string-append "DESTDIR=" out)
"prefix=/"))
- ;; No configure script.
- #:phases (modify-phases %standard-phases (delete 'configure))))
- (inputs `(("python-2" ,python-2)))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure) ; no configure script
+ (add-after 'install 'wrap
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (wrap-program (string-append out "/bin/dstat")
+ `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))))
+ #t))))))
+ (inputs
+ ;; Python 3 is supposedly supported but prints a DeprecationWarning.
+ ;; Upstream is dead. See <https://github.com/dagwieers/dstat/releases>.
+ `(("python" ,python-wrapper)
+ ("python-six" ,python-six)))
(synopsis "Versatile resource statistics tool")
(description "Dstat is a versatile replacement for @command{vmstat},
@command{iostat}, @command{netstat}, and @command{ifstat}. Dstat overcomes
diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm
index 970df735aa..c513370e74 100644
--- a/gnu/packages/benchmark.scm
+++ b/gnu/packages/benchmark.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2019 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -25,7 +26,10 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages linux)
#:use-module (gnu packages maths)
@@ -193,3 +197,27 @@ extension to @code{time} which runs a command multiple times and prints the
timing means, standard deviations, mins, medians, and maxes having done so.
This can give a much better understanding of the command's performance.")
(license license:expat)))
+
+(define-public benchmark
+ (package
+ (name "benchmark")
+ (version "1.5.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/google/benchmark.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0r9dbg4cbk47gwmayys31a83m3y67k0kh1f6pl8i869rbd609ndh"))
+ (patches (search-patches "benchmark-unbundle-googletest.patch"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("googletest" ,googletest)))
+ (home-page "https://github.com/google/benchmark")
+ (synopsis "Microbenchmark support library")
+ (description
+ "Benchmark is a library to benchmark code snippets,
+similar to unit tests.")
+ (license license:asl2.0)))
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index ff159638b3..e87907fac5 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -590,6 +590,35 @@ data. It is derived from the UCSC hg19 genome and based on the \"knownGene\"
track. The database is exposed as a @code{TxDb} object.")
(license license:artistic2.0)))
+(define-public r-txdb-hsapiens-ucsc-hg38-knowngene
+ (package
+ (name "r-txdb-hsapiens-ucsc-hg38-knowngene")
+ (version "3.4.6")
+ (source (origin
+ (method url-fetch)
+ ;; We cannot use bioconductor-uri here because this tarball is
+ ;; located under "data/annotation/" instead of "bioc/".
+ (uri (string-append "https://bioconductor.org/packages/"
+ "release/data/annotation/src/contrib"
+ "/TxDb.Hsapiens.UCSC.hg38.knownGene_"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "12j7rri9r129v9w1yiqadg952dx462dh092sxif3r5kk8l7bxkn9"))))
+ (properties
+ `((upstream-name . "TxDb.Hsapiens.UCSC.hg38.knownGene")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-genomicfeatures" ,r-genomicfeatures)))
+ (home-page
+ "https://bioconductor.org/packages/TxDb.Hsapiens.UCSC.hg38.knownGene/")
+ (synopsis "Annotation package for human genome in TxDb format")
+ (description
+ "This package provides an annotation database of Homo sapiens genome
+data. It is derived from the UCSC hg38 genome and based on the \"knownGene\"
+track. The database is exposed as a @code{TxDb} object.")
+ (license license:artistic2.0)))
+
(define-public r-txdb-mmusculus-ucsc-mm9-knowngene
(package
(name "r-txdb-mmusculus-ucsc-mm9-knowngene")
@@ -4677,3 +4706,42 @@ Forest, and SVM binary classifiers. The signatures and the corresponding
'restricted' models are returned, enabling future predictions on new
datasets.")
(license license:cecill)))
+
+(define-public r-annotatr
+ (package
+ (name "r-annotatr")
+ (version "1.10.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (bioconductor-uri "annotatr" version))
+ (sha256
+ (base32
+ "1zlhy6swfgqjhhcqn8c6akxd4c4z8p85swfh095imji7hxnlhh1f"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-annotationdbi" ,r-annotationdbi)
+ ("r-annotationhub" ,r-annotationhub)
+ ("r-dplyr" ,r-dplyr)
+ ("r-genomeinfodb" ,r-genomeinfodb)
+ ("r-genomicfeatures" ,r-genomicfeatures)
+ ("r-genomicranges" ,r-genomicranges)
+ ("r-ggplot2" ,r-ggplot2)
+ ("r-iranges" ,r-iranges)
+ ("r-readr" ,r-readr)
+ ("r-regioner" ,r-regioner)
+ ("r-reshape2" ,r-reshape2)
+ ("r-rtracklayer" ,r-rtracklayer)
+ ("r-s4vectors" ,r-s4vectors)))
+ (home-page "https://bioconductor.org/packages/annotatr/")
+ (synopsis "Annotation of genomic regions to genomic annotations")
+ (description
+ "Given a set of genomic sites/regions (e.g. ChIP-seq peaks, CpGs,
+differentially methylated CpGs or regions, SNPs, etc.) it is often of interest
+to investigate the intersecting genomic annotations. Such annotations include
+those relating to gene models (promoters, 5'UTRs, exons, introns, and 3'UTRs),
+CpGs (CpG islands, CpG shores, CpG shelves), or regulatory sequences such as
+enhancers. The annotatr package provides an easy way to summarize and
+visualize the intersection of genomic sites/regions with genomic
+annotations.")
+ (license license:gpl3)))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index bb15672d51..b950b8cf53 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -12536,15 +12536,15 @@ once. This package provides tools to perform Drop-seq analyses.")
(define-public pigx-rnaseq
(package
(name "pigx-rnaseq")
- (version "0.0.5")
+ (version "0.0.6")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/BIMSBbioinfo/pigx_rnaseq/"
- "releases/download/v" version
+ "releases/download/v." version
"/pigx_rnaseq-" version ".tar.gz"))
(sha256
(base32
- "05gn658zpj9xki5dbs728z9zxq1mcm25hkwr5vzwqxsfi15l5f2l"))))
+ "1w7cwbbz1sbvbyqh5c60iqcjfs3qsppmdgxqa1i0w5wwb9mkh27m"))))
(build-system gnu-build-system)
(arguments
`(#:parallel-tests? #f ; not supported
@@ -12567,7 +12567,6 @@ once. This package provides tools to perform Drop-seq analyses.")
("trim-galore" ,trim-galore)
("htseq" ,htseq)
("samtools" ,samtools)
- ("bedtools" ,bedtools)
("r-minimal" ,r-minimal)
("r-rmarkdown" ,r-rmarkdown)
("r-ggplot2" ,r-ggplot2)
@@ -13087,35 +13086,6 @@ known and yet unknown splice junctions. Circular-to-linear ratios of circRNAs
can be calculated, and a number of descriptive plots easily generated.")
(license license:artistic2.0)))
-(define-public r-loomr
- (let ((commit "df0144bd2bbceca6fadef9edc1bbc5ca672d4739")
- (revision "1"))
- (package
- (name "r-loomr")
- (version (git-version "0.2.0" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/mojaveazure/loomR.git")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1b1g4dlmfdyhn56bz1mkh9ymirri43wiz7rjhs7py3y7bdw1s3yr"))))
- (build-system r-build-system)
- (propagated-inputs
- `(("r-r6" ,r-r6)
- ("r-hdf5r" ,r-hdf5r)
- ("r-iterators" ,r-iterators)
- ("r-itertools" ,r-itertools)
- ("r-matrix" ,r-matrix)))
- (home-page "https://github.com/mojaveazure/loomR")
- (synopsis "R interface for loom files")
- (description "This package provides an R interface to access, create,
-and modify loom files. loomR aims to be completely compatible with loompy.")
- (license license:gpl3))))
-
(define-public gffread
;; We cannot use the tagged release because it is not in sync with gclib.
;; See https://github.com/gpertea/gffread/issues/26
@@ -14755,3 +14725,34 @@ ATAC-seq results. It was written to make it easier to spot differences that
might be caused by ATAC-seq library prep or sequencing. The main program,
@code{ataqv}, examines aligned reads and reports some basic metrics.")
(license license:gpl3+)))
+
+(define-public r-psiplot
+ (package
+ (name "r-psiplot")
+ (version "2.3.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/kcha/psiplot.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "08438h16cfry5kqh3y9hs8q1b1a8bxhblsm75knviz5r6q0n1jxh"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-mass" ,r-mass)
+ ("r-dplyr" ,r-dplyr)
+ ("r-tidyr" ,r-tidyr)
+ ("r-purrr" ,r-purrr)
+ ("r-readr" ,r-readr)
+ ("r-magrittr" ,r-magrittr)
+ ("r-ggplot2" ,r-ggplot2)))
+ (home-page "https://github.com/kcha/psiplot")
+ (synopsis "Plot percent spliced-in values of alternatively-spliced exons")
+ (description
+ "PSIplot is an R package for generating plots of @dfn{percent
+spliced-in} (PSI) values of alternatively-spliced exons that were computed by
+vast-tools, an RNA-Seq pipeline for alternative splicing analysis. The plots
+are generated using @code{ggplot2}.")
+ (license license:expat)))
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index 005b21ad7b..2127e402d7 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -98,6 +98,7 @@
"third_party/angle/third_party/vulkan-tools" ;ASL2.0
"third_party/angle/third_party/vulkan-validation-layers" ;ASL2.0
"third_party/apple_apsl" ;APSL2.0
+ "third_party/axe-core" ;MPL2.0
"third_party/blink" ;BSD-3, LGPL2+
"third_party/boringssl" ;OpenSSL/ISC (Google additions are ISC)
"third_party/boringssl/src/third_party/fiat" ;Expat
@@ -117,13 +118,14 @@
"third_party/ced" ;BSD-3
"third_party/cld_3" ;ASL2.0
"third_party/crashpad" ;ASL2.0
+ "third_party/crashpad/crashpad/third_party/lss" ;ASL2.0
"third_party/crashpad/crashpad/third_party/zlib/zlib_crashpad.h" ;Zlib
"third_party/crc32c" ;BSD-3
"third_party/cros_system_api" ;BSD-3
"third_party/dav1d" ;BSD-2
+ "third_party/dawn" ;ASL2.0
"third_party/dom_distiller_js" ;BSD-3
"third_party/emoji-segmenter" ;ASL2.0
- "third_party/fips181" ;BSD-3
"third_party/flatbuffers" ;ASL2.0
"third_party/glslang" ;BSD-3, Expat, ASL2.0
"third_party/google_input_tools" ;ASL2.0
@@ -166,6 +168,7 @@
"third_party/pdfium/third_party/bigint" ;Public domain, BSD-3
"third_party/pdfium/third_party/skia_shared" ;BSD-3
"third_party/pdfium/third_party/freetype/include/pstables.h" ;FreeType
+ "third_party/pffft" ;the "FFTPACK" license, similar to BSD-3
"third_party/ply" ;BSD-3
"third_party/polymer" ;BSD-3
"third_party/protobuf" ;BSD-3
@@ -223,54 +226,58 @@ from forcing GEXP-PROMISE."
#:system system
#:guile-for-build guile)))
-(define %chromium-version "74.0.3729.169")
-(define %ungoogled-revision "d2beaeff47a6e97b8909163147ad6b4058238f36")
-(define %debian-revision "debian/74.0.3729.108-1")
+(define %chromium-version "75.0.3770.90")
+(define %ungoogled-revision "5d8abc38b43a62f379615a0dc972b29d9aebb4b4")
+(define %debian-revision "debian/75.0.3770.90-1")
(define package-revision "0")
-
(define %package-version (string-append %chromium-version "-"
package-revision "."
(string-take %ungoogled-revision 7)))
+(define %chromium-origin
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://commondatastorage.googleapis.com"
+ "/chromium-browser-official/chromium-"
+ %chromium-version ".tar.xz"))
+ (sha256
+ (base32
+ "0f9qjhxvk8sajj7qa061crfmln65q7sniylrgp0qijwyw6xrmddi"))))
+
+(define %ungoogled-origin
+ (origin
+ (method git-fetch)
+ (uri (git-reference (url "https://github.com/Eloston/ungoogled-chromium")
+ (commit %ungoogled-revision)))
+ (file-name (git-file-name "ungoogled-chromium"
+ (string-take %ungoogled-revision 7)))
+ (sha256
+ (base32
+ "1vk8jzzsn20ysn4nlz84mwwhfa9nnywzd1lrahlhcky9pf6xzpwa"))))
+
+(define %debian-origin
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://salsa.debian.org/chromium-team/chromium.git")
+ (commit %debian-revision)))
+ (file-name (git-file-name "debian-chromium-packaging"
+ (if (string-prefix? "debian/" %debian-revision)
+ (cadr (string-split %debian-revision #\/))
+ (string-take %debian-revision 7))))
+ (sha256
+ (base32
+ "0sh6z2lx44zb31qrpa29vm0sw09dxi7i9h6fsq3ivfxjs7v98bbx"))))
+
;; This is a "computed" origin that does the following:
;; *) Runs the Ungoogled scripts on a pristine Chromium tarball.
;; *) Applies Debians Chromium patches, for their unbundling and GCC work.
;; *) Prunes all third_party directories that are not explicitly preserved.
;; *) Adjusts "GN" build files such that system libraries are preferred.
(define ungoogled-chromium-source
- (let ((chromium-source
- (origin
- (method url-fetch)
- (uri (string-append "https://commondatastorage.googleapis.com"
- "/chromium-browser-official/chromium-"
- %chromium-version ".tar.xz"))
- (sha256
- (base32
- "1d0c3asfhqh6wlzngajcl0v2wn573m1jd1zqci9bcm3z048043q7"))))
- (ungoogled-source
- (origin
- (method git-fetch)
- (uri (git-reference (url "https://github.com/Eloston/ungoogled-chromium")
- (commit %ungoogled-revision)))
- (file-name (git-file-name "ungoogled-chromium"
- (string-take %ungoogled-revision 7)))
- (sha256
- (base32
- "04schaaqhnkrgh0p1p0wyjd5aybpxmj3kfnyipwy5nh7d39afymc"))))
- (debian-source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://salsa.debian.org/chromium-team/chromium.git")
- (commit %debian-revision)))
- (file-name (git-file-name "debian-chromium-packaging"
- (if (string-prefix? "debian/" %debian-revision)
- (cadr (string-split %debian-revision #\/))
- (string-take %debian-revision 7))))
- (sha256
- (base32
- "1bn0c86sxkkxgdz0i88y0zh4zr39l6379r2rhgk3b3qbvwz25s3j")))))
-
+ (let ((chromium-source %chromium-origin)
+ (ungoogled-source %ungoogled-origin)
+ (debian-source %debian-origin))
(origin
(method computed-origin-method)
(file-name (string-append "ungoogled-chromium-" %package-version ".tar.xz"))
@@ -335,7 +342,6 @@ from forcing GEXP-PROMISE."
(when (and (> (string-length line) 1)
;; Skip the Debian-specific ones.
(not (string-prefix? "debianization/" line))
- (not (string-prefix? "gcc6/" line))
;; And those that conflict with Ungoogled.
(not (any (cute string-suffix? <> line)
'("widevine-buildflag.patch"
@@ -434,6 +440,7 @@ from forcing GEXP-PROMISE."
"enable_reporting=false"
"enable_service_discovery=false"
"enable_swiftshader=false"
+ "enable_vr=false"
"enable_widevine=false"
;; Disable type-checking for the Web UI to avoid a Java dependency.
"closure_compile=false"
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
new file mode 100644
index 0000000000..b480b6fe56
--- /dev/null
+++ b/gnu/packages/crates-io.scm
@@ -0,0 +1,92 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.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 crates-io)
+ #:use-module (guix build-system cargo)
+ #:use-module (guix download)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages))
+
+(define-public rust-unicode-xid
+ (package
+ (name "rust-unicode-xid")
+ (version "0.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "unicode-xid" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1z57lqh4s18rr4x0j4fw4fmp9hf9346h0kmdgqsqx0fhjr3k0wpw"))))
+ (build-system cargo-build-system)
+ (home-page
+ "https://github.com/unicode-rs/unicode-xid")
+ (synopsis "Determine Unicode XID related properties")
+ (description "Determine whether characters have the XID_Start
+or XID_Continue properties according to Unicode Standard Annex #31.")
+ ;; Dual licensed.
+ (license (list license:asl2.0 license:expat))))
+
+(define-public rust-proc-macro2
+ (package
+ (name "rust-proc-macro2")
+ (version "0.4.27")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "proc-macro2" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "05c92v787snyaq4ss16vxc9mdv6zndfgsdq8k3hnnyffmsf7ycad"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-unicode-xid" ,rust-unicode-xid))
+ #:cargo-development-inputs (("rust-quote" ,rust-quote))))
+ (home-page "https://github.com/alexcrichton/proc-macro2")
+ (synopsis "Stable implementation of the upcoming new `proc_macro` API")
+ (description "This package provides a stable implementation of the upcoming new
+`proc_macro` API. Comes with an option, off by default, to also reimplement itself
+in terms of the upstream unstable API.")
+ ;; Dual licensed.
+ (license (list license:asl2.0 license:expat))))
+
+(define-public rust-quote
+ (package
+ (name "rust-quote")
+ (version "0.6.12")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "quote" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1nw0klza45hf127kfyrpxsxd5jw2l6h21qxalil3hkr7bnf7kx7s"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-proc-macro2" ,rust-proc-macro2))))
+ (home-page "https://github.com/dtolnay/quote")
+ (synopsis "Quasi-quoting macro quote!(...)")
+ (description "Quasi-quoting macro quote!(...)")
+ ;; Dual licensed.
+ (license (list license:asl2.0 license:expat))))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 55f7a46dc5..acffc56a27 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -34,6 +34,7 @@
;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us>
+;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1879,7 +1880,7 @@ database.")
(define-public perl-db-file
(package
(name "perl-db-file")
- (version "1.843")
+ (version "1.852")
(source
(origin
(method url-fetch)
@@ -1889,7 +1890,7 @@ database.")
".tar.gz"))
(sha256
(base32
- "0sildz1i3fmh949w1scpjsyjx0cbmfw0yna3y70mc6vbwp8y696y"))))
+ "14c30xyqx9c1hxw40bqbzls41al8gmklxv5jbk2kknmn4dsrbdrs"))))
(build-system perl-build-system)
(inputs `(("bdb" ,bdb)))
(native-inputs `(("perl-test-pod" ,perl-test-pod)))
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 491f7ce881..778529436b 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -13,6 +13,7 @@
;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2019 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -341,32 +342,31 @@ and can dramatically shorten the lifespan of the drive if left unchecked.")
(define-public gparted
(package
(name "gparted")
- (version "0.33.0")
+ (version "1.0.0")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/gparted/gparted/gparted-"
version "/gparted-" version ".tar.gz"))
(sha256
- (base32 "1ml1ky3s75lbxr91p608q3prsdh9x899mw7nbgk252pqhg4vh8sh"))))
+ (base32
+ "0mdvn85jvy72ff7nds3dakx9kzknh8gx1z8i0w2sf970q03qp2z4"))))
(build-system gnu-build-system)
(arguments
- `(#:tests? #f ; tests require a network connection
- #:configure-flags '("--disable-scrollkeeper")))
+ ;; Tests require access to paths outside the build container, such
+ ;; as '/dev/disk/by-id'
+ `(#:tests? #f))
(inputs
`(("util-linux" ,util-linux)
("parted" ,parted)
("glib" ,glib)
- ("gtkmm" ,gtkmm-2)
+ ("gtkmm" ,gtkmm)
("libxml2" ,libxml2)
- ("libxslt" ,libxslt)
- ("gnome-doc-utils" ,gnome-doc-utils)
- ("docbook-xml" ,docbook-xml-4.2)
- ("python" ,python-2)
- ("python-libxml2" ,python2-libxml2)
- ("which" ,which)))
+ ("yelp-tools" ,yelp-tools)
+ ("itstool" ,itstool)))
(native-inputs
`(("intltool" ,intltool)
+ ("lvm2" ,lvm2) ; for tests
("pkg-config" ,pkg-config)))
(home-page "https://gparted.org/")
(synopsis "Partition editor to graphically manage disk partitions")
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 2eb705dedd..d341501cc0 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -13,7 +13,7 @@
;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
-;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2016, 2019 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2016, 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2016, 2017, 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
@@ -47,6 +47,7 @@
;;; Copyright © 2019 mikadoZero <mikadozero@yandex.com>
;;; Copyright © 2019 Gabriel Hondet <gabrielhondet@gmail.com>
;;; Copyright © 2019 LaFreniere, Joseph <joseph@lafreniere.xyz>
+;;; Copyright © 2019 Amar Singh <nly@disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -545,6 +546,35 @@ handful of functions that are not resource-specific.")
for editing Racket's Scribble documentation syntax in Emacs.")
(license license:gpl3+))))
+(define-public emacs-shroud
+ (package
+ (name "emacs-shroud")
+ (version "1.15.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/o-nly/emacs-shroud.git")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0wvm4lxqcc1p8v7rpqal3bnqgnpk1gs7v18i83f6cvi5d88jkgdg"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-bui" ,emacs-bui)
+ ("emacs-dash" ,emacs-dash)
+ ("emacs-f" ,emacs-f)
+ ("emacs-s" ,emacs-s)
+ ("gnupg" ,gnupg)
+ ("shroud" ,shroud)))
+ (home-page "https://github.com/o-nly/emacs-shroud")
+ (synopsis "Emacs interface to the Shroud password manager")
+ (description
+ "This package provides an Emacs interface to the Shroud password manager,
+using the Buffers User Interface library. You can view, copy, and edit secrets
+from within Emacs.")
+ (license license:gpl3+)))
+
(define-public emacs-unpackaged-el
(let ((commit "f4df7f8dfea715e893b2223adda32545803f5cce")
(revision "1"))
@@ -4093,6 +4123,29 @@ of sixteen colors suitable for a wide range of applications. Base16 is not a
single theme but a set of guidelines with numerous implementations.")
(license license:expat)))
+(define-public emacs-solaire-mode
+ (package
+ (name "emacs-solaire-mode")
+ (version "1.0.9")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hlissner/emacs-solaire-mode.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "011m4r7s6i9lgjymh7jgq5jwwrpz4vmpvp3c8d4ix96v5hi04kzg"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/hlissner/emacs-solaire-mode")
+ (synopsis "Change background of file-visiting buffers in Emacs")
+ (description
+ "@code{solaire-mode} is inspired by editors which visually distinguish
+code-editing windows from sidebars, popups, terminals, ecetera. It changes the
+background of file-visiting buffers (and certain aspects of the UI) to make
+them easier to distinguish from other, less important buffers.")
+ (license license:expat)))
+
(define-public emacs-prescient
(package
(name "emacs-prescient")
@@ -4213,16 +4266,17 @@ regexp that matches all known keywords.")
(define-public emacs-perspective
(package
(name "emacs-perspective")
- (version "1.12")
+ (version "2.2")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://github.com/nex3/perspective-el/"
- "archive/" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/nex3/perspective-el.git")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
(base32
- "078ahh0kmhdylq5ib9c81c76kz1n02xwc83pm729d00i84ibviic"))))
+ "0pd5sqrrz6y3md20yh6ffy32jdcgb1gc9b4j14pm6r54bqxik68h"))))
(build-system emacs-build-system)
(home-page "https://github.com/nex3/perspective-el")
(synopsis "Switch between named \"perspectives\"")
@@ -4305,19 +4359,17 @@ after buffer changes.")
(define-public emacs-realgud
(package
(name "emacs-realgud")
- (version "1.4.5")
+ (version "1.5.0")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://elpa.gnu.org/packages/realgud-"
- version ".tar"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/realgud/realgud/")
+ (commit version)))
(sha256
(base32
- "108wgxg7fb4byaiasgvbxv2hq7b00biq9f0mh9hy6vw4160y5w24"))
- (patches
- ;; Patch awaiting inclusion upstream (see:
- ;; https://github.com/realgud/realgud/pull/226).
- (search-patches "emacs-realgud-fix-configure-ac.patch"))))
+ "0xnick9016wxrgi8v0lycvxhyz8l2k4nfvdpjc5yq476vwrjfzbz"))
+ (file-name (git-file-name name version))))
(build-system emacs-build-system)
(arguments
`(#:tests? #t
@@ -4336,11 +4388,6 @@ after buffer changes.")
(setenv "HOME" (getenv "TMPDIR"))))
(add-before 'patch-el-files 'remove-realgud-pkg.el
(lambda _
- ;; XXX: This file is auto-generated at some point and causes
- ;; substitute* to crash during the `patch-el-files' phase with:
- ;; ERROR: In procedure stat: No such file or directory:
- ;; "./realgud-pkg.el"
- (delete-file "./realgud-pkg.el")
;; FIXME: `patch-el-files' crashes on this file with error:
;; unable to locate "bashdb".
(delete-file "./test/test-regexp-bashdb.el"))))
@@ -5209,6 +5256,48 @@ If you want to mark a folder manually as a project just create an empty
and RSS, with a user interface inspired by notmuch.")
(license license:gpl3+)))
+(define-public emacs-elfeed-org
+ (let ((commit "77b6bbf222487809813de260447d31c4c59902c9"))
+ (package
+ (name "emacs-elfeed-org")
+ (version (git-version "0.1" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/remyhonig/elfeed-org.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0a2ibka82xq1dhy2z7rd2y9zhcj8rna8357881yz49wf55ccgm53"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-elfeed" ,emacs-elfeed)
+ ("emacs-org" ,emacs-org)
+ ("emacs-dash" ,emacs-dash)
+ ("emacs-s" ,emacs-s)))
+ (native-inputs
+ `(("ert-runner" ,emacs-ert-runner)
+ ("emacs-xtest" ,emacs-xtest)))
+ (arguments
+ `(#:tests? #t
+ #:test-command '("ert-runner" "-L" "org-mode/lisp")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'chmod
+ (lambda _
+ (chmod "test/fixture-mark-feed-ignore.org" #o644)
+ #t)))))
+ (home-page "https://github.com/remyhonig/elfeed-org")
+ (synopsis "Configure Elfeed with an Org-mode file")
+ (description
+ "@code{elfeed-org} lets you manage your Elfeed subscriptions
+in Org-mode. Maintaining tags for all RSS feeds is cumbersome using
+the regular flat list, where there is no hierarchy and tag names are
+duplicated a lot. Org-mode makes the book keeping of tags and feeds
+much easier.")
+ (license license:gpl3+))))
+
(define-public emacs-el-x
(package
(name "emacs-el-x")
@@ -7960,6 +8049,27 @@ running tests easier.")
(define-public ert-runner
(deprecated-package "ert-runner" emacs-ert-runner))
+(define-public emacs-xtest
+ (package
+ (name "emacs-xtest")
+ (version "1.1.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/promethial/xtest.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1wqx6hlqcmqiljydih5fx89dw06g8w728pyn4iqsap8jwgjngb09"))))
+ (arguments
+ `(#:exclude '()))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/promethial/xtest/")
+ (synopsis "Simple testing with Emacs")
+ (description "This package provides a simple testing library for Emacs.")
+ (license license:gpl3+)))
+
(define-public emacs-disable-mouse
(package
(name "emacs-disable-mouse")
@@ -10602,6 +10712,28 @@ macro takes a first argument (whose value must be an alist) and a body.")
your Emacs.")
(license license:gpl2+))))
+(define-public emacs-restart-emacs
+ (let ((commit "9aa90d3df9e08bc420e1c9845ee3ff568e911bd9")
+ (revision "1"))
+ (package
+ (name "emacs-restart-emacs")
+ (version (git-version "0.1.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/iqbalansari/restart-emacs.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "02x1a85k7r95z8091zgjiaj9nf0zvx1jy4xvl3hr12qbnrx1wfav"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/iqbalansari/restart-emacs")
+ (synopsis "Restart Emacs from within Emacs")
+ (description "This package provides a simple command to restart Emacs from
+within Emacs.")
+ (license license:gpl3+))))
+
(define-public emacs-sourcemap
(package
(name "emacs-sourcemap")
@@ -11559,6 +11691,29 @@ interactive behavior should be different.")
decreasing the default font size in all GUI Emacs frames.")
(license license:gpl3+))))
+(define-public emacs-mixed-pitch
+ (package
+ (name "emacs-mixed-pitch")
+ (version "1.0.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/jabranham/mixed-pitch.git")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1458sy5b6bis1i0k23jdqk6hfqg0ghk637r3ajql2g19ym48rf58"))))
+ (build-system emacs-build-system)
+ (home-page "https://gitlab.com/jabranham/mixed-pitch")
+ (synopsis "Mix variable- and fixed-pitch fonts in the same Emacs buffer")
+ (description
+ "@code{mixed-pitch-mode} is a minor mode that enables mixing
+variable-pitch and fixed-pitch fonts in the same buffer. The list
+@code{mixed-pitch-fixed-pitch-faces} defines the faces that are kept
+fixed-pitch,everything else becomes variable-pitch.")
+ (license license:gpl3+)))
+
(define-public emacs-visual-regexp
(package
(name "emacs-visual-regexp")
@@ -15833,3 +15988,29 @@ corresponding Evil keys.")
(description "@code{xterm-color.el} is an ANSI control sequence to
text-property translator.")
(license license:bsd-2))))
+
+(define-public emacs-org-noter
+ (package
+ (name "emacs-org-noter")
+ (version "1.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://stable.melpa.org/packages/org-noter-"
+ version
+ ".el"))
+ (sha256
+ (base32
+ "1hczwva73gsyanl1ldhdvql01gy0hy2g861yzkaklyb763sx58x4"))))
+ (build-system emacs-build-system)
+ (propagated-inputs `(("emacs-org" ,emacs-org)))
+ (home-page "https://github.com/weirdNox/org-noter")
+ (synopsis "Synchronized, Org-mode, document annotator")
+ (description
+ "This package lets you create notes that are kept in sync when you
+scroll through the document, but that are external to it---the notes
+themselves live in an Org-mode file. As such, this leverages the power of
+Org-mode (the notes may have outlines, latex fragments, babel, etc...) while
+acting like notes that are made @emph{in} the document.")
+ (license license:gpl3+)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 7a433a0bfd..86bdf99a32 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -7385,3 +7385,73 @@ full of enemies that can hurt it, obstacles and food to be eaten. The goal of
the game is to stay alive and collect prizes. The robot program conveniently
may be written in a plain text file in the Scheme programming language.")
(license license:gpl3+)))
+
+(define-public ri-li
+ (package
+ (name "ri-li")
+ (version "2.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/ri-li/"
+ "Ri-li%20Linux_Unix/Ri-li%20V" version "/"
+ "Ri-li-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "1gcdsgnnbbn1mb1hkpwniv3fhkaj1nn8gq33v5c16q3wqchcq77p"))
+ ;; Taken from
+ ;; <https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/rili/moderinze_cpp.patch>.
+ ;; It doesn't build otherwise.
+ (patches (search-patches "ri-li-modernize_cpp.patch"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ ;; Remove "gentoo" subdirectory from Makefile, as it is
+ ;; missing a make file and generates a build failure.
+ (add-after 'configure 'fix-build
+ (lambda _
+ (substitute* "Makefile"
+ ((" gentoo") ""))
+ #t))
+ (add-after 'install 'install-desktop-file
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (apps (string-append out "/share/applications"))
+ (pixmaps (string-append out "/share/pixmaps")))
+ (for-each (lambda (f) (install-file f pixmaps))
+ (find-files "data" "\\.(png|ico)$"))
+ (mkdir-p apps)
+ (with-output-to-file (string-append apps "/ri-li.desktop")
+ (lambda _
+ (format #t
+ "[Desktop Entry]~@
+ Name=Ri-li~@
+ Exec=~a/bin/Ri_li~@
+ Icon=~a/Ri-li-icon-32x32.png~@
+ Categories=Game;ArcadeGame;~@
+ Keywords=toy;train;wooden;snake-like;engine;~@
+ Comment=a toy simulator game~@
+ Comment[de]=Ein Spiel mit einem kleinen Zug~@
+ Comment[fr]=un jeu de petit train~@
+ Comment[ro_RO]=un joc cu un tren de jucărie~@
+ Terminal=false~@
+ Type=Application~%"
+ out pixmaps))))
+ #t))
+ (add-after 'install-desktop-file 'remove-spurious-files
+ ;; Delete redundant files already installed somewhere else.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (for-each delete-file
+ (find-files (string-append out "/share/Ri-li")
+ "\\.(png|ico)|COPYING"))
+ #t))))))
+ (inputs
+ `(("sdl" ,(sdl-union (list sdl sdl-mixer)))))
+ (home-page "http://www.ri-li.org")
+ (synopsis "Toy train simulation game")
+ (description "Ri-li is a game in which you drive a wooden toy
+steam locomotive across many levels and collect all the coaches to
+win.")
+ ;; The project is dual-licensed GPL2+ and GPL3+.
+ (license (list license:gpl2+ license:gpl3+))))
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index c190049212..70bc8db4c1 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -49,7 +49,7 @@
(define-public babl
(package
(name "babl")
- (version "0.1.64")
+ (version "0.1.66")
(source (origin
(method url-fetch)
(uri (list (string-append "https://download.gimp.org/pub/babl/"
@@ -63,7 +63,7 @@
"/babl-" version ".tar.bz2")))
(sha256
(base32
- "1gsqs5spgla86y9g11riryvw7015asik7y22maainl83nhq4sxxv"))))
+ "0qx1dwbinxihwl2lmxi60qiqi402jlrdcnixx14kk6j88n9xi79n"))))
(build-system gnu-build-system)
(home-page "http://gegl.org/babl/")
(synopsis "Image pixel format conversion library")
@@ -118,7 +118,7 @@ buffers.")
(define-public gimp
(package
(name "gimp")
- (version "2.10.10")
+ (version "2.10.12")
(source (origin
(method url-fetch)
(uri (string-append "https://download.gimp.org/pub/gimp/v"
@@ -126,7 +126,7 @@ buffers.")
"/gimp-" version ".tar.bz2"))
(sha256
(base32
- "0xwck5nbpb945s1cyij3kfqw1pchbhx8i5vf5hgywyjw4r1z5l8j"))))
+ "0wdcr8d2ink4swn5r4v13bsiya6s3xm4ya97sdbhs4l40y7bb03x"))))
(build-system gnu-build-system)
(outputs '("out"
"doc")) ; 9 MiB of gtk-doc HTML
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index ba8d31eb25..abd1d6f419 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -940,8 +940,8 @@ files, to verify signatures, and to manage the private and public keys.")
(version "0.10.3")
(source (origin
(method url-fetch)
- (uri (string-append "https://gaffer.ptitcanardnoir.org/"
- "intrigeri/files/parcimonie/App-Parcimonie-"
+ (uri (string-append "https://gaffer.boum.org/intrigeri/files/"
+ "parcimonie/App-Parcimonie-"
version ".tar.gz"))
(sha256
(base32
@@ -1011,7 +1011,7 @@ files, to verify signatures, and to manage the private and public keys.")
`("PERL5LIB" ":"
prefix (,(string-append perllib ":" (getenv "PERL5LIB")))))
#t))))))
- (home-page "https://gaffer.ptitcanardnoir.org/intrigeri/code/parcimonie/")
+ (home-page "https://gaffer.boum.org/intrigeri/code/parcimonie/")
(synopsis "Incrementally refreshes a GnuPG keyring")
(description "Parcimonie incrementaly refreshes a GnuPG keyring in a way
that makes it hard to correlate the keyring content to an individual, and
diff --git a/gnu/packages/gpodder.scm b/gnu/packages/gpodder.scm
index badb7f867f..7c9994f128 100644
--- a/gnu/packages/gpodder.scm
+++ b/gnu/packages/gpodder.scm
@@ -36,7 +36,7 @@
(define-public gpodder
(package
(name "gpodder")
- (version "3.10.7")
+ (version "3.10.9")
(source
(origin
(method git-fetch)
@@ -45,7 +45,7 @@
(commit version)))
(sha256
(base32
- "0sx9rj6dpvd2xz7lak2yi0zlgr3lp2ng1fw23s39la9ly4g1835j"))
+ "1sdmr1sq1d4p492zp9kq3npl7p56yr0pr470z9r6xxcylax5mhfq"))
(file-name (git-file-name name version))))
(build-system python-build-system)
(native-inputs
@@ -81,12 +81,12 @@
(for-each
(lambda (f)
(chmod f #o664))
- (find-files "po"))))
+ (find-files "po"))
+ #t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(setenv "PREFIX" (assoc-ref outputs "out"))
- (invoke "make" "install")
- #t))
+ (invoke "make" "install")))
(add-after 'install 'wrap-gpodder
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm
index 66e091ddbf..75212ed60e 100644
--- a/gnu/packages/gps.scm
+++ b/gnu/packages/gps.scm
@@ -175,16 +175,16 @@ coordinates as well as partial support for adjustments in global coordinate syst
(define-public gpxsee
(package
(name "gpxsee")
- (version "4.19")
+ (version "7.8")
(source (origin
- (method url-fetch)
- (uri
- (string-append "https://github.com/tumic0/GPXSee/archive/"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tumic0/GPXSee")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
(base32
- "00j0gjldw1kn3i45dppld1pz8r4s1g7lw89k7gfvvqbjjyjih1wg"))))
+ "1ymqz4wrl9ghkyyqi2vrnlyvz3fc84s3p8a1dkiqlvyvj360ck9j"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@@ -195,27 +195,16 @@ coordinates as well as partial support for adjustments in global coordinate syst
(for-each (lambda (file)
(invoke "lrelease" file))
(find-files "lang" "\\.ts"))
- (substitute* "src/config.h"
- (("/usr/share/gpxsee")
- (string-append
- (assoc-ref outputs "out") "/share/gpxsee")))
(invoke "qmake"
(string-append "PREFIX="
- (assoc-ref outputs "out")))))
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (share (string-append out "/share/gpxsee/")))
- (install-file "GPXSee" (string-append out "/bin/GPXSee"))
- (install-file "pkg/maps.txt" share))
- #t)))))
+ (assoc-ref outputs "out"))))))))
(inputs
`(("qtbase" ,qtbase)))
(native-inputs
`(("qttools" ,qttools)))
- (home-page "http://www.gpxsee.org")
- (synopsis "GPX file viewer and analyzer")
+ (home-page "https://www.gpxsee.org")
+ (synopsis "GPS log file viewer and analyzer")
(description
- "GPXSee is a Qt-based GPS log file viewer and analyzer that supports GPX,
-TCX, KML, FIT, IGC and NMEA files.")
+ "GPXSee is a Qt-based GPS log file viewer and analyzer that supports
+all common GPS log file formats.")
(license license:gpl3)))
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index aee908a6f5..191f32c321 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -68,6 +68,7 @@
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages networking)
+ #:use-module (gnu packages noweb)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
@@ -75,6 +76,7 @@
#:use-module (gnu packages sdl)
#:use-module (gnu packages slang)
#:use-module (gnu packages sqlite)
+ #:use-module (gnu packages tex)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
@@ -2305,3 +2307,81 @@ formatting combinators specified by
@uref{https://srfi.schemers.org/srfi-159/srfi-159.html, SRFI-159}. These are
more expressive and flexible than the traditional @code{format} procedure.")
(license license:bsd-3))))
+
+(define-public emacsy
+ (let ((commit "7d49cc1425d5d209bdb82cac0d8ea0694b8b3784")
+ (revision "4"))
+ (package
+ (name "emacsy")
+ (version (string-append "0.1.2-" revision "." (string-take commit 7)))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/janneke/emacsy.git")
+ (commit commit)))
+ (file-name (string-append name "-" version))
+ (sha256
+ (base32
+ "0k9yns1v8zn135w60sx96nqs2bm2p2dvcvlm987hkw4lbff9ii6i"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("emacsy-webkit-gtk"
+ ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/janneke/emacsy-webkit-gtk.git")
+ (commit "35ded1b3e997fd779a17e0c4a2c73741718562d9")))
+ (file-name (string-append "emacsy-webkit-gtk" "-" version))
+ (sha256
+ (base32
+ "1gp0li2rbp6in926r3hrww6cnh864pp46v1din2pgmd7vzzl7kg0"))))
+ ("hello-emacsy"
+ ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/janneke/hello-emacsy.git")
+ (commit "2c117e5286a261be4ff24938f3ae1d348396c538")))
+ (file-name (string-append "hello-emacsy" "-" version))
+ (sha256
+ (base32
+ "15ykd7s8axcy8ym4v71fgal4x28fxnim0pv0jmpi3dnhizr63zqn"))))
+ ("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("bzip2" ,bzip2)
+ ("guile" ,guile-2.2)
+ ("gettext" ,gnu-gettext)
+ ("libtool" ,libtool)
+ ("noweb" ,noweb)
+ ("perl" ,perl)
+ ("pkg-config" ,pkg-config)
+ ("texinfo" ,texinfo)
+ ("texlive" ,texlive)))
+ (propagated-inputs
+ `(("guile-lib" ,guile-lib)
+ ("guile-readline" ,guile-readline)
+ ("freeglut" ,freeglut)
+ ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)
+ ("webkitgtk" ,webkitgtk)))
+ (inputs `(("guile" ,guile-2.2)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'unpack-examples
+ (lambda _
+ (copy-recursively (assoc-ref %build-inputs "emacsy-webkit-gtk")
+ "example/emacsy-webkit-gtk")
+ (copy-recursively (assoc-ref %build-inputs "hello-emacsy")
+ "example/hello-emacsy")))
+ (add-before 'configure 'setenv
+ (lambda _
+ (setenv "GUILE_AUTO_COMPILE" "0"))))))
+ (home-page "https://github.com/shanecelis/emacsy/")
+ (synopsis "Embeddable GNU Emacs-like library using Guile")
+ (description
+ "Emacsy is an embeddable GNU Emacs-like library that uses GNU Guile
+as extension language. Emacsy can give a C program an Emacsy feel with
+keymaps, minibuffer, recordable macros, history, tab completion, major
+and minor modes, etc., and can also be used as a pure Guile library. It
+comes with a simple counter example using GLUT and browser examples in C
+using gtk+-3 and webkitgtk.")
+ (license license:gpl3+))))
diff --git a/gnu/packages/kawa.scm b/gnu/packages/kawa.scm
new file mode 100644
index 0000000000..5771eeda8e
--- /dev/null
+++ b/gnu/packages/kawa.scm
@@ -0,0 +1,53 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Carlo Zancanaro <carlo@zancanaro.id.au>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages kawa)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (gnu packages java))
+
+(define-public kawa
+ (package
+ (name "kawa")
+ (version "3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/kawa/kawa-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1k9qpydc64ar4aqyg3q7jmmxy503ayj85227qfhc5n6ngchqavhy"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:parallel-build? #f
+ #:parallel-tests? #f))
+ (inputs
+ `(("icedtea" ,icedtea-8 "jdk")))
+ (home-page "https://www.gnu.org/software/kawa/")
+ (synopsis "Java framework and implementation of Scheme, Elisp, and more")
+ (description
+ "GNU Kawa is an implementation of the Scheme programming language that
+is built on top of the Java platform. It is thus conveniently integrated
+with Java and benefits from this by having a compiler, optional static
+typing, and so on. Kawa also serves as a framework for implementing other
+programming languages on the Java platform. Included in Kawa is qexo, a
+partial implementation of XQuery in Java.")
+ (license license:expat)))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index b6887349fa..ec0ac2add2 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -430,8 +430,8 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
It has been modified to remove all non-free binary blobs.")
(license license:gpl2)))
-(define %linux-libre-version "5.1.8")
-(define %linux-libre-hash "1vkirlz9vsvym8fdbvj308n3hj8f9j8n9m267x0dhlgbmig570j2")
+(define %linux-libre-version "5.1.9")
+(define %linux-libre-hash "1l1nhq3giqyv7zir1sl8m32xbbpmqhsw8dgf90kf4qcnh6bvjin1")
(define %linux-libre-5.1-patches
(list %boot-logo-patch
@@ -448,8 +448,8 @@ It has been modified to remove all non-free binary blobs.")
(make-linux-libre-headers %linux-libre-version
%linux-libre-hash))
-(define %linux-libre-4.19-version "4.19.49")
-(define %linux-libre-4.19-hash "0dxmm8190h0g5indj3sqfipkji10y3icr8xnf7bbz7086nkkrcvz")
+(define %linux-libre-4.19-version "4.19.50")
+(define %linux-libre-4.19-hash "0j1p459al3y77cv2xwjx7ppghc8ixs3wm3w9a10sc3ckbq1hw8ly")
(define %linux-libre-4.19-patches
(list %boot-logo-patch
@@ -466,8 +466,8 @@ It has been modified to remove all non-free binary blobs.")
(make-linux-libre-headers %linux-libre-4.19-version
%linux-libre-4.19-hash))
-(define %linux-libre-4.14-version "4.14.124")
-(define %linux-libre-4.14-hash "0z9iaz1rcm9472rjvcihmq65ygyks07j6kbiqm989r9rb4dw6ghg")
+(define %linux-libre-4.14-version "4.14.125")
+(define %linux-libre-4.14-hash "1ms7ai7c6xspq8r2amgjfsdyl87x10dc4b1c3iacrhrxaqqmab01")
(define-public linux-libre-4.14
(make-linux-libre %linux-libre-4.14-version
@@ -480,14 +480,14 @@ It has been modified to remove all non-free binary blobs.")
%linux-libre-4.14-hash))
(define-public linux-libre-4.9
- (make-linux-libre "4.9.180"
- "062ybvc5ljpbn8llj62zsvvykl5rikn0jfzh62nrrdsnj7mvi77a"
+ (make-linux-libre "4.9.181"
+ "0fdqfd6z73q00nracrixliw0i0b60f4z352jmzabcwy431wszar5"
'("x86_64-linux" "i686-linux")
#:configuration-file kernel-config))
(define-public linux-libre-4.4
- (make-linux-libre "4.4.180"
- "157kfs4slii86q9yrspvqdynpiv6rff80hrrn569v6h4nkc4b7ag"
+ (make-linux-libre "4.4.181"
+ "1ird78a3pg8k6h60258g56ka86jpgiaj0q9r2jws770qgrmy324l"
'("x86_64-linux" "i686-linux")
#:configuration-file kernel-config
#:extra-options
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index afb1e025b4..ae887fa24d 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -29,6 +29,7 @@
#:use-module (gnu packages man)
#:use-module (gnu packages package-management)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages pkg-config)
#:use-module (gnu packages texinfo)
#:use-module (guix build-system gnu)
#:use-module (guix download)
@@ -36,7 +37,7 @@
#:use-module (guix licenses)
#:use-module (guix packages))
-(define-public nyacc
+(define-public nyacc-0.86
(package
(name "nyacc")
(version "0.86.0")
@@ -59,6 +60,37 @@ extensive examples, including parsers for the Javascript and C99 languages.")
(home-page "https://savannah.nongnu.org/projects/nyacc")
(license (list gpl3+ lgpl3+))))
+(define-public nyacc
+ (package
+ (inherit nyacc-0.86)
+ (version "0.94.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://savannah/nyacc/nyacc-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "12qnzwm1n3j8z7hbr9hy2wka9a1aasm2rvnpnvdxkjcsbdzj8fn4"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (substitute* (find-files "." "^Makefile\\.in$")
+ (("^SITE_SCM_DIR =.*")
+ "SITE_SCM_DIR = \
+@prefix@/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n")
+ (("^SITE_SCM_GO_DIR =.*")
+ "SITE_SCM_GO_DIR = \
+@prefix@/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")
+ (("^INFODIR =.*")
+ "INFODIR = @prefix@/share/info\n")
+ (("^DOCDIR =.*")
+ "DOCDIR = @prefix@/share/doc/$(PACKAGE_TARNAME)\n"))
+ #t))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("guile" ,guile-2.2)))))
+
(define-public mes
(package
(name "mes")
@@ -74,7 +106,10 @@ extensive examples, including parsers for the Javascript and C99 languages.")
(supported-systems '("i686-linux" "x86_64-linux"))
(propagated-inputs
`(("mescc-tools" ,mescc-tools)
- ("nyacc" ,nyacc)))
+
+ ;; XXX: MesCC appears to enter an infinite loop (?) while building
+ ;; crt1.o when we switch to nyacc 0.94.
+ ("nyacc" ,nyacc-0.86)))
(native-inputs
`(("guile" ,guile-2.2)
,@(let ((target-system (or (%current-target-system)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 2ea65f270c..6ade8ed85d 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -549,7 +549,7 @@ and up to 1 Mbit/s downstream.")
(define-public whois
(package
(name "whois")
- (version "5.4.2")
+ (version "5.4.3")
(source
(origin
(method url-fetch)
@@ -557,7 +557,7 @@ and up to 1 Mbit/s downstream.")
name "_" version ".tar.xz"))
(sha256
(base32
- "0mqzs0g2qxd29ihammisg9qf4503sr7d4zas26zjz4an78xkmqzf"))))
+ "1hqg14k0q4979a1amgms4sa1d2iiid51rra3jyqmv63hkw189ypy"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no test suite
diff --git a/gnu/packages/patches/benchmark-unbundle-googletest.patch b/gnu/packages/patches/benchmark-unbundle-googletest.patch
new file mode 100644
index 0000000000..4dce8f59f1
--- /dev/null
+++ b/gnu/packages/patches/benchmark-unbundle-googletest.patch
@@ -0,0 +1,69 @@
+From 5eb306618196ea78b8c9390e22ea2edce20760fe Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=A1bor=20Boskovits?= <boskovits@gmail.com>
+Date: Fri, 14 Jun 2019 22:15:49 +0200
+Subject: [PATCH] Remove googletest lookup from build system.
+
+---
+ cmake/GoogleTest.cmake | 18 +++++++++---------
+ cmake/GoogleTest.cmake.in | 12 ++++++------
+ 2 files changed, 15 insertions(+), 15 deletions(-)
+
+diff --git a/cmake/GoogleTest.cmake b/cmake/GoogleTest.cmake
+index fb7c6be..a6c473b 100644
+--- a/cmake/GoogleTest.cmake
++++ b/cmake/GoogleTest.cmake
+@@ -27,15 +27,15 @@ endif()
+ # settings on Windows
+ set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+
+-include(${GOOGLETEST_PREFIX}/googletest-paths.cmake)
++#include(${GOOGLETEST_PREFIX}/googletest-paths.cmake)
+
+ # Add googletest directly to our build. This defines
+ # the gtest and gtest_main targets.
+-add_subdirectory(${GOOGLETEST_SOURCE_DIR}
+- ${GOOGLETEST_BINARY_DIR}
+- EXCLUDE_FROM_ALL)
+-
+-set_target_properties(gtest PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gtest,INTERFACE_INCLUDE_DIRECTORIES>)
+-set_target_properties(gtest_main PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gtest_main,INTERFACE_INCLUDE_DIRECTORIES>)
+-set_target_properties(gmock PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gmock,INTERFACE_INCLUDE_DIRECTORIES>)
+-set_target_properties(gmock_main PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gmock_main,INTERFACE_INCLUDE_DIRECTORIES>)
++#add_subdirectory(${GOOGLETEST_SOURCE_DIR}
++# ${GOOGLETEST_BINARY_DIR}
++# EXCLUDE_FROM_ALL)
++
++#set_target_properties(gtest PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gtest,INTERFACE_INCLUDE_DIRECTORIES>)
++#set_target_properties(gtest_main PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gtest_main,INTERFACE_INCLUDE_DIRECTORIES>)
++#set_target_properties(gmock PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gmock,INTERFACE_INCLUDE_DIRECTORIES>)
++#set_target_properties(gmock_main PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gmock_main,INTERFACE_INCLUDE_DIRECTORIES>)
+diff --git a/cmake/GoogleTest.cmake.in b/cmake/GoogleTest.cmake.in
+index 28818ee..13b0888 100644
+--- a/cmake/GoogleTest.cmake.in
++++ b/cmake/GoogleTest.cmake.in
+@@ -31,7 +31,7 @@ if(EXISTS "${GOOGLETEST_PATH}" AND IS_DIRECTORY "${GOOGLETEST_PATH}"
+ )
+ else()
+ if(NOT ALLOW_DOWNLOADING_GOOGLETEST)
+- message(SEND_ERROR "Did not find Google Test sources! Either pass correct path in GOOGLETEST_PATH, or enable ALLOW_DOWNLOADING_GOOGLETEST, or disable BENCHMARK_ENABLE_GTEST_TESTS / BENCHMARK_ENABLE_TESTING.")
++ message(WARNING "Did not find Google Test sources! Either pass correct path in GOOGLETEST_PATH, or enable ALLOW_DOWNLOADING_GOOGLETEST, or disable BENCHMARK_ENABLE_GTEST_TESTS / BENCHMARK_ENABLE_TESTING.")
+ else()
+ message(WARNING "Did not find Google Test sources! Fetching from web...")
+ ExternalProject_Add(
+@@ -51,8 +51,8 @@ else()
+ endif()
+ endif()
+
+-ExternalProject_Get_Property(googletest SOURCE_DIR BINARY_DIR)
+-file(WRITE googletest-paths.cmake
+-"set(GOOGLETEST_SOURCE_DIR \"${SOURCE_DIR}\")
+-set(GOOGLETEST_BINARY_DIR \"${BINARY_DIR}\")
+-")
++#ExternalProject_Get_Property(googletest SOURCE_DIR BINARY_DIR)
++#file(WRITE googletest-paths.cmake
++#"set(GOOGLETEST_SOURCE_DIR \"${SOURCE_DIR}\")
++#set(GOOGLETEST_BINARY_DIR \"${BINARY_DIR}\")
++#")
+--
+2.22.0
+
diff --git a/gnu/packages/patches/emacs-realgud-fix-configure-ac.patch b/gnu/packages/patches/emacs-realgud-fix-configure-ac.patch
deleted file mode 100644
index 8165857c87..0000000000
--- a/gnu/packages/patches/emacs-realgud-fix-configure-ac.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From a293690f29407ac54a218d6d20c2142e1a0319d1 Mon Sep 17 00:00:00 2001
-From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
-Date: Wed, 31 Oct 2018 00:08:34 -0400
-Subject: [PATCH] configure.ac: Fix NO_CHECK_EMACS_PACKAGES elisp.
-
-Remove the extraneous trailing parenthesis.
----
- configure.ac | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index de0d932..69bcea7 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -25,8 +25,7 @@ AC_MSG_NOTICE("Checking prerequiste packages")
- $EMACS -batch -q --no-site-file -eval \
- '(dolist (package
- (quote (cl-lib loc-changes load-relative test-simple)))
-- (require package))
-- )'
-+ (require package))'
- fi
- if test $? -ne 0 ; then
- AC_MSG_ERROR([Can't continue until above error is corrected.])
---
-2.19.0
-
diff --git a/gnu/packages/patches/inkscape-poppler-compat3.patch b/gnu/packages/patches/inkscape-poppler-compat3.patch
deleted file mode 100644
index eaaf7d93f1..0000000000
--- a/gnu/packages/patches/inkscape-poppler-compat3.patch
+++ /dev/null
@@ -1,499 +0,0 @@
-Fix compatibility with Poppler >= 0.69.
-
-This is a combination of these upstream commits:
-https://gitlab.com/inkscape/inkscape/commit/722e121361d0f784083d10e897155b7d4e44e515
-https://gitlab.com/inkscape/inkscape/commit/402c0274420fe39fd2f3393bc7d8d8879d436358
-
-...with slight adjustments for the 0.92.3 release tarball.
-
-diff --git a/CMakeScripts/DefineDependsandFlags.cmake b/CMakeScripts/DefineDependsandFlags.cmake
---- a/CMakeScripts/DefineDependsandFlags.cmake
-+++ b/CMakeScripts/DefineDependsandFlags.cmake
-@@ -116,18 +116,6 @@ if(ENABLE_POPPLER)
- set(HAVE_POPPLER_GLIB ON)
- endif()
- endif()
-- if(POPPLER_VERSION VERSION_GREATER "0.26.0" OR
-- POPPLER_VERSION VERSION_EQUAL "0.26.0")
-- set(POPPLER_EVEN_NEWER_COLOR_SPACE_API ON)
-- endif()
-- if(POPPLER_VERSION VERSION_GREATER "0.29.0" OR
-- POPPLER_VERSION VERSION_EQUAL "0.29.0")
-- set(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API ON)
-- endif()
-- if(POPPLER_VERSION VERSION_GREATER "0.58.0" OR
-- POPPLER_VERSION VERSION_EQUAL "0.58.0")
-- set(POPPLER_NEW_OBJECT_API ON)
-- endif()
- else()
- set(ENABLE_POPPLER_CAIRO OFF)
- endif()
-diff --git a/src/extension/internal/pdfinput/pdf-input.cpp b/src/extension/internal/pdfinput/pdf-input.cpp
---- a/src/extension/internal/pdfinput/pdf-input.cpp
-+++ b/src/extension/internal/pdfinput/pdf-input.cpp
-@@ -793,7 +793,7 @@ PdfInput::open(::Inkscape::Extension::Input * /*mod*/, const gchar * uri) {
- dlg->getImportSettings(prefs);
-
- // Apply crop settings
-- PDFRectangle *clipToBox = NULL;
-+ _POPPLER_CONST PDFRectangle *clipToBox = NULL;
- double crop_setting;
- sp_repr_get_double(prefs, "cropTo", &crop_setting);
-
-diff --git a/src/extension/internal/pdfinput/pdf-input.h b/src/extension/internal/pdfinput/pdf-input.h
---- a/src/extension/internal/pdfinput/pdf-input.h
-+++ b/src/extension/internal/pdfinput/pdf-input.h
-@@ -15,6 +15,7 @@
- #endif
-
- #ifdef HAVE_POPPLER
-+#include "poppler-transition-api.h"
-
- #include <gtkmm/dialog.h>
-
-diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp
---- a/src/extension/internal/pdfinput/pdf-parser.cpp
-+++ b/src/extension/internal/pdfinput/pdf-parser.cpp
-@@ -36,6 +36,7 @@ extern "C" {
- #include "pdf-parser.h"
- #include "util/units.h"
-
-+#include "glib/poppler-features.h"
- #include "goo/gmem.h"
- #include "goo/GooString.h"
- #include "GlobalParams.h"
-@@ -294,8 +295,8 @@ PdfParser::PdfParser(XRef *xrefA,
- int /*pageNum*/,
- int rotate,
- Dict *resDict,
-- PDFRectangle *box,
-- PDFRectangle *cropBox) :
-+ _POPPLER_CONST PDFRectangle *box,
-+ _POPPLER_CONST PDFRectangle *cropBox) :
- xref(xrefA),
- builder(builderA),
- subPage(gFalse),
-@@ -317,7 +318,7 @@ PdfParser::PdfParser(XRef *xrefA,
- builder->setDocumentSize(Inkscape::Util::Quantity::convert(state->getPageWidth(), "pt", "px"),
- Inkscape::Util::Quantity::convert(state->getPageHeight(), "pt", "px"));
-
-- double *ctm = state->getCTM();
-+ const double *ctm = state->getCTM();
- double scaledCTM[6];
- for (int i = 0; i < 6; ++i) {
- baseMatrix[i] = ctm[i];
-@@ -352,7 +353,7 @@ PdfParser::PdfParser(XRef *xrefA,
- PdfParser::PdfParser(XRef *xrefA,
- Inkscape::Extension::Internal::SvgBuilder *builderA,
- Dict *resDict,
-- PDFRectangle *box) :
-+ _POPPLER_CONST PDFRectangle *box) :
- xref(xrefA),
- builder(builderA),
- subPage(gTrue),
-@@ -571,7 +572,7 @@ const char *PdfParser::getPreviousOperator(unsigned int look_back) {
-
- void PdfParser::execOp(Object *cmd, Object args[], int numArgs) {
- PdfOperator *op;
-- char *name;
-+ const char *name;
- Object *argPtr;
- int i;
-
-@@ -619,7 +620,7 @@ void PdfParser::execOp(Object *cmd, Object args[], int numArgs) {
- (this->*op->func)(argPtr, numArgs);
- }
-
--PdfOperator* PdfParser::findOp(char *name) {
-+PdfOperator* PdfParser::findOp(const char *name) {
- int a = -1;
- int b = numOps;
- int cmp = -1;
-@@ -1751,7 +1752,7 @@ void PdfParser::doShadingPatternFillFallback(GfxShadingPattern *sPat,
- GBool stroke, GBool eoFill) {
- GfxShading *shading;
- GfxPath *savedPath;
-- double *ctm, *btm, *ptm;
-+ const double *ctm, *btm, *ptm;
- double m[6], ictm[6], m1[6];
- double xMin, yMin, xMax, yMax;
- double det;
-@@ -1993,7 +1994,7 @@ void PdfParser::doFunctionShFill1(GfxFunctionShading *shading,
- GfxColor color0M, color1M, colorM0, colorM1, colorMM;
- GfxColor colors2[4];
- double functionColorDelta = colorDeltas[pdfFunctionShading-1];
-- double *matrix;
-+ const double *matrix;
- double xM, yM;
- int nComps, i, j;
-
-@@ -2173,7 +2174,7 @@ void PdfParser::doPatchMeshShFill(GfxPatchMeshShading *shading) {
- }
- }
-
--void PdfParser::fillPatch(GfxPatch *patch, int nComps, int depth) {
-+void PdfParser::fillPatch(_POPPLER_CONST GfxPatch *patch, int nComps, int depth) {
- GfxPatch patch00 = blankPatch();
- GfxPatch patch01 = blankPatch();
- GfxPatch patch10 = blankPatch();
-@@ -2581,7 +2582,11 @@ void PdfParser::opShowSpaceText(Object args[], int /*numArgs*/)
- }
- }
-
-+#if POPPLER_CHECK_VERSION(0,64,0)
- void PdfParser::doShowText(const GooString *s) {
-+#else
-+void PdfParser::doShowText(GooString *s) {
-+#endif
- GfxFont *font;
- int wMode;
- double riseX, riseY;
-@@ -2590,11 +2595,15 @@ void PdfParser::doShowText(const GooString *s) {
- double x, y, dx, dy, tdx, tdy;
- double originX, originY, tOriginX, tOriginY;
- double oldCTM[6], newCTM[6];
-- double *mat;
-+ const double *mat;
- Object charProc;
- Dict *resDict;
- Parser *oldParser;
-+#if POPPLER_CHECK_VERSION(0,64,0)
-+ const char *p;
-+#else
- char *p;
-+#endif
- int len, n, uLen;
-
- font = state->getFont();
-@@ -2630,7 +2639,7 @@ void PdfParser::doShowText(const GooString *s) {
- double lineX = state->getLineX();
- double lineY = state->getLineY();
- oldParser = parser;
-- p = g_strdup(s->getCString());
-+ p = s->getCString();
- len = s->getLength();
- while (len > 0) {
- n = font->getNextChar(p, len, &code,
-@@ -2685,7 +2694,7 @@ void PdfParser::doShowText(const GooString *s) {
-
- } else {
- state->textTransformDelta(0, state->getRise(), &riseX, &riseY);
-- p = g_strdup(s->getCString());
-+ p = s->getCString();
- len = s->getLength();
- while (len > 0) {
- n = font->getNextChar(p, len, &code,
-@@ -2731,7 +2740,11 @@ void PdfParser::opXObject(Object args[], int /*numArgs*/)
- {
- Object obj1, obj2, obj3, refObj;
-
-- char *name = g_strdup(args[0].getName());
-+#if POPPLER_CHECK_VERSION(0,64,0)
-+ const char *name = args[0].getName();
-+#else
-+ char *name = args[0].getName();
-+#endif
- #if defined(POPPLER_NEW_OBJECT_API)
- if ((obj1 = res->lookupXObject(name)).isNull()) {
- #else
-@@ -3656,7 +3669,6 @@ void PdfParser::opBeginImage(Object /*args*/[], int /*numArgs*/)
- Stream *PdfParser::buildImageStream() {
- Object dict;
- Object obj;
-- char *key;
- Stream *str;
-
- // build dictionary
-@@ -3674,26 +3686,17 @@ Stream *PdfParser::buildImageStream() {
- obj.free();
- #endif
- } else {
-- key = copyString(obj.getName());
--#if defined(POPPLER_NEW_OBJECT_API)
-- obj = parser->getObj();
--#else
-- obj.free();
-- parser->getObj(&obj);
--#endif
-- if (obj.isEOF() || obj.isError()) {
-- gfree(key);
-+ Object obj2;
-+ _POPPLER_CALL(obj2, parser->getObj);
-+ if (obj2.isEOF() || obj2.isError()) {
-+ _POPPLER_FREE(obj);
- break;
- }
--#if defined(POPPLER_NEW_OBJECT_API)
-- dict.dictAdd(key, std::move(obj));
-- }
-- obj = parser->getObj();
--#else
-- dict.dictAdd(key, &obj);
-+ _POPPLER_DICTADD(dict, obj.getName(), obj2);
-+ _POPPLER_FREE(obj);
-+ _POPPLER_FREE(obj2);
- }
-- parser->getObj(&obj);
--#endif
-+ _POPPLER_CALL(obj, parser->getObj);
- }
- if (obj.isEOF()) {
- error(errSyntaxError, getPos(), "End of file in inline image");
-diff --git a/src/extension/internal/pdfinput/pdf-parser.h b/src/extension/internal/pdfinput/pdf-parser.h
---- a/src/extension/internal/pdfinput/pdf-parser.h
-+++ b/src/extension/internal/pdfinput/pdf-parser.h
-@@ -9,6 +9,7 @@
- #define PDF_PARSER_H
-
- #ifdef HAVE_POPPLER
-+#include "poppler-transition-api.h"
-
- #ifdef USE_GCC_PRAGMAS
- #pragma interface
-@@ -25,6 +26,7 @@ namespace Inkscape {
- // TODO clean up and remove using:
- using Inkscape::Extension::Internal::SvgBuilder;
-
-+#include "glib/poppler-features.h"
- #include "goo/gtypes.h"
- #include "Object.h"
-
-@@ -127,11 +129,14 @@ public:
-
- // Constructor for regular output.
- PdfParser(XRef *xrefA, SvgBuilder *builderA, int pageNum, int rotate,
-- Dict *resDict, PDFRectangle *box, PDFRectangle *cropBox);
-+ Dict *resDict,
-+ _POPPLER_CONST PDFRectangle *box,
-+ _POPPLER_CONST PDFRectangle *cropBox);
-
- // Constructor for a sub-page object.
- PdfParser(XRef *xrefA, Inkscape::Extension::Internal::SvgBuilder *builderA,
-- Dict *resDict, PDFRectangle *box);
-+ Dict *resDict,
-+ _POPPLER_CONST PDFRectangle *box);
-
- virtual ~PdfParser();
-
-@@ -185,7 +190,7 @@ private:
-
- void go(GBool topLevel);
- void execOp(Object *cmd, Object args[], int numArgs);
-- PdfOperator *findOp(char *name);
-+ PdfOperator *findOp(const char *name);
- GBool checkArg(Object *arg, TchkType type);
- int getPos();
-
-@@ -256,7 +261,7 @@ private:
- double x2, double y2, GfxColor *color2,
- int nComps, int depth);
- void doPatchMeshShFill(GfxPatchMeshShading *shading);
-- void fillPatch(GfxPatch *patch, int nComps, int depth);
-+ void fillPatch(_POPPLER_CONST GfxPatch *patch, int nComps, int depth);
- void doEndPath();
-
- // path clipping operators
-@@ -287,7 +292,12 @@ private:
- void opMoveShowText(Object args[], int numArgs);
- void opMoveSetShowText(Object args[], int numArgs);
- void opShowSpaceText(Object args[], int numArgs);
-+#if POPPLER_CHECK_VERSION(0,64,0)
- void doShowText(const GooString *s);
-+#else
-+ void doShowText(GooString *s);
-+#endif
-+
-
- // XObject operators
- void opXObject(Object args[], int numArgs);
-diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h b/src/extension/internal/pdfinput/poppler-transition-api.h
-new file mode 100644
---- /dev/null
-+++ b/src/extension/internal/pdfinput/poppler-transition-api.h
-@@ -0,0 +1,39 @@
-+#ifndef SEEN_POPPLER_TRANSITION_API_H
-+#define SEEN_POPPLER_TRANSITION_API_H
-+
-+#include <glib/poppler-features.h>
-+
-+#if POPPLER_CHECK_VERSION(0,70,0)
-+#define _POPPLER_CONST const
-+#else
-+#define _POPPLER_CONST
-+#endif
-+
-+#if POPPLER_CHECK_VERSION(0,69,0)
-+#define _POPPLER_DICTADD(dict, key, obj) (dict).dictAdd(key, std::move(obj))
-+#elif POPPLER_CHECK_VERSION(0,58,0)
-+#define _POPPLER_DICTADD(dict, key, obj) (dict).dictAdd(copyString(key), std::move(obj))
-+#else
-+#define _POPPLER_DICTADD(dict, key, obj) (dict).dictAdd(copyString(key), &obj)
-+#endif
-+
-+#if POPPLER_CHECK_VERSION(0,58,0)
-+#define POPPLER_NEW_OBJECT_API
-+#define _POPPLER_FREE(obj)
-+#define _POPPLER_CALL(ret, func) (ret = func())
-+#define _POPPLER_CALL_ARGS(ret, func, ...) (ret = func(__VA_ARGS__))
-+#else
-+#define _POPPLER_FREE(obj) (obj).free()
-+#define _POPPLER_CALL(ret, func) (*func(&ret))
-+#define _POPPLER_CALL_ARGS(ret, func, ...) (*func(__VA_ARGS__, &ret))
-+#endif
-+
-+#if POPPLER_CHECK_VERSION(0, 29, 0)
-+#define POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API
-+#endif
-+
-+#if POPPLER_CHECK_VERSION(0, 25, 0)
-+#define POPPLER_EVEN_NEWER_COLOR_SPACE_API
-+#endif
-+
-+#endif
-diff --git a/src/extension/internal/pdfinput/svg-builder.cpp b/src/extension/internal/pdfinput/svg-builder.cpp
---- a/src/extension/internal/pdfinput/svg-builder.cpp
-+++ b/src/extension/internal/pdfinput/svg-builder.cpp
-@@ -625,7 +625,7 @@ gchar *SvgBuilder::_createPattern(GfxPattern *pattern, GfxState *state, bool is_
- if ( pattern != NULL ) {
- if ( pattern->getType() == 2 ) { // Shading pattern
- GfxShadingPattern *shading_pattern = static_cast<GfxShadingPattern *>(pattern);
-- double *ptm;
-+ const double *ptm;
- double m[6] = {1, 0, 0, 1, 0, 0};
- double det;
-
-@@ -672,7 +672,7 @@ gchar *SvgBuilder::_createTilingPattern(GfxTilingPattern *tiling_pattern,
-
- Inkscape::XML::Node *pattern_node = _xml_doc->createElement("svg:pattern");
- // Set pattern transform matrix
-- double *p2u = tiling_pattern->getMatrix();
-+ const double *p2u = tiling_pattern->getMatrix();
- double m[6] = {1, 0, 0, 1, 0, 0};
- double det;
- det = _ttm[0] * _ttm[3] - _ttm[1] * _ttm[2]; // see LP Bug 1168908
-@@ -698,7 +698,7 @@ gchar *SvgBuilder::_createTilingPattern(GfxTilingPattern *tiling_pattern,
- pattern_node->setAttribute("patternUnits", "userSpaceOnUse");
- // Set pattern tiling
- // FIXME: don't ignore XStep and YStep
-- double *bbox = tiling_pattern->getBBox();
-+ const double *bbox = tiling_pattern->getBBox();
- sp_repr_set_svg_double(pattern_node, "x", 0.0);
- sp_repr_set_svg_double(pattern_node, "y", 0.0);
- sp_repr_set_svg_double(pattern_node, "width", bbox[2] - bbox[0]);
-@@ -751,7 +751,7 @@ gchar *SvgBuilder::_createTilingPattern(GfxTilingPattern *tiling_pattern,
- */
- gchar *SvgBuilder::_createGradient(GfxShading *shading, double *matrix, bool for_shading) {
- Inkscape::XML::Node *gradient;
-- Function *func;
-+ _POPPLER_CONST Function *func;
- int num_funcs;
- bool extend0, extend1;
-
-@@ -865,7 +865,7 @@ static bool svgGetShadingColorRGB(GfxShading *shading, double offset, GfxRGB *re
-
- #define INT_EPSILON 8
- bool SvgBuilder::_addGradientStops(Inkscape::XML::Node *gradient, GfxShading *shading,
-- Function *func) {
-+ _POPPLER_CONST Function *func) {
- int type = func->getType();
- if ( type == 0 || type == 2 ) { // Sampled or exponential function
- GfxRGB stop1, stop2;
-@@ -877,9 +877,9 @@ bool SvgBuilder::_addGradientStops(Inkscape::XML::Node *gradient, GfxShading *sh
- _addStopToGradient(gradient, 1.0, &stop2, 1.0);
- }
- } else if ( type == 3 ) { // Stitching
-- StitchingFunction *stitchingFunc = static_cast<StitchingFunction*>(func);
-- double *bounds = stitchingFunc->getBounds();
-- double *encode = stitchingFunc->getEncode();
-+ auto stitchingFunc = static_cast<_POPPLER_CONST StitchingFunction*>(func);
-+ const double *bounds = stitchingFunc->getBounds();
-+ const double *encode = stitchingFunc->getEncode();
- int num_funcs = stitchingFunc->getNumFuncs();
-
- // Add stops from all the stitched functions
-@@ -890,7 +890,7 @@ bool SvgBuilder::_addGradientStops(Inkscape::XML::Node *gradient, GfxShading *sh
- svgGetShadingColorRGB(shading, bounds[i + 1], &color);
- // Add stops
- if (stitchingFunc->getFunc(i)->getType() == 2) { // process exponential fxn
-- double expE = (static_cast<ExponentialFunction*>(stitchingFunc->getFunc(i)))->getE();
-+ double expE = (static_cast<_POPPLER_CONST ExponentialFunction*>(stitchingFunc->getFunc(i)))->getE();
- if (expE > 1.0) {
- expE = (bounds[i + 1] - bounds[i])/expE; // approximate exponential as a single straight line at x=1
- if (encode[2*i] == 0) { // normal sequence
-@@ -1020,9 +1020,9 @@ void SvgBuilder::updateFont(GfxState *state) {
- GfxFont *font = state->getFont();
- // Store original name
- if (font->getName()) {
-- _font_specification = g_strdup(font->getName()->getCString());
-+ _font_specification = font->getName()->getCString();
- } else {
-- _font_specification = (char*) "Arial";
-+ _font_specification = "Arial";
- }
-
- // Prune the font name to get the correct font family name
-@@ -1030,7 +1030,7 @@ void SvgBuilder::updateFont(GfxState *state) {
- char *font_family = NULL;
- char *font_style = NULL;
- char *font_style_lowercase = NULL;
-- char *plus_sign = strstr(_font_specification, "+");
-+ const char *plus_sign = strstr(_font_specification, "+");
- if (plus_sign) {
- font_family = g_strdup(plus_sign + 1);
- _font_specification = plus_sign + 1;
-@@ -1148,7 +1148,7 @@ void SvgBuilder::updateFont(GfxState *state) {
- Inkscape::CSSOStringStream os_font_size;
- double css_font_size = _font_scaling * state->getFontSize();
- if ( font->getType() == fontType3 ) {
-- double *font_matrix = font->getFontMatrix();
-+ const double *font_matrix = font->getFontMatrix();
- if ( font_matrix[0] != 0.0 ) {
- css_font_size *= font_matrix[3] / font_matrix[0];
- }
-@@ -1193,7 +1193,7 @@ void SvgBuilder::updateTextPosition(double tx, double ty) {
- void SvgBuilder::updateTextMatrix(GfxState *state) {
- _flushText();
- // Update text matrix
-- double *text_matrix = state->getTextMat();
-+ const double *text_matrix = state->getTextMat();
- double w_scale = sqrt( text_matrix[0] * text_matrix[0] + text_matrix[2] * text_matrix[2] );
- double h_scale = sqrt( text_matrix[1] * text_matrix[1] + text_matrix[3] * text_matrix[3] );
- double max_scale;
-diff --git a/src/extension/internal/pdfinput/svg-builder.h b/src/extension/internal/pdfinput/svg-builder.h
---- a/src/extension/internal/pdfinput/svg-builder.h
-+++ b/src/extension/internal/pdfinput/svg-builder.h
-@@ -15,6 +15,7 @@
- #endif
-
- #ifdef HAVE_POPPLER
-+#include "poppler-transition-api.h"
-
- class SPDocument;
- namespace Inkscape {
-@@ -80,7 +81,7 @@ struct SvgGlyph {
- bool style_changed; // Set to true if style has to be reset
- SPCSSAttr *style;
- int render_mode; // Text render mode
-- char *font_specification; // Pointer to current font specification
-+ const char *font_specification; // Pointer to current font specification
- };
-
- /**
-@@ -174,7 +175,7 @@ private:
- void _addStopToGradient(Inkscape::XML::Node *gradient, double offset,
- GfxRGB *color, double opacity);
- bool _addGradientStops(Inkscape::XML::Node *gradient, GfxShading *shading,
-- Function *func);
-+ _POPPLER_CONST Function *func);
- gchar *_createTilingPattern(GfxTilingPattern *tiling_pattern, GfxState *state,
- bool is_stroke=false);
- // Image/mask creation
-@@ -202,7 +203,7 @@ private:
-
- SPCSSAttr *_font_style; // Current font style
- GfxFont *_current_font;
-- char *_font_specification;
-+ const char *_font_specification;
- double _font_scaling;
- bool _need_font_update;
- Geom::Affine _text_matrix;
diff --git a/gnu/packages/patches/racket-store-checksum-override.patch b/gnu/packages/patches/racket-store-checksum-override.patch
index 6c9cd5198a..236c843de1 100644
--- a/gnu/packages/patches/racket-store-checksum-override.patch
+++ b/gnu/packages/patches/racket-store-checksum-override.patch
@@ -7,12 +7,8 @@ because the store is immutable. This patch makes Racket ignore
checksums for files in the store.
See <https://debbugs.gnu.org/30680> for details.
----
- collects/compiler/private/cm-minimal.rkt | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-diff --git a/collects/compiler/private/cm-minimal.rkt b/collects/compiler/private/cm-minimal.rkt
-index a5a5407..15af6b8 100644
+---
--- a/collects/compiler/private/cm-minimal.rkt
+++ b/collects/compiler/private/cm-minimal.rkt
@@ -7,6 +7,7 @@
@@ -20,10 +16,10 @@ index a5a5407..15af6b8 100644
racket/path
racket/promise
+ racket/string
- openssl/sha1
+ file/sha1
setup/collects
- compiler/compilation-path
-@@ -543,6 +544,10 @@
+ setup/cross-system
+@@ -940,6 +941,10 @@
#f
(list src-hash recorded-hash)))
@@ -34,16 +30,13 @@ index a5a5407..15af6b8 100644
(define (rkt->ss p)
(if (path-has-extension? p #".rkt")
(path-replace-extension p #".ss")
-@@ -595,7 +600,8 @@
- (trace-printf "newer src... ~a > ~a" path-time path-zo-time)
- ;; If `sha1-only?', then `maybe-compile-zo' returns a #f or thunk:
- (maybe-compile-zo sha1-only? deps path->mode roots path orig-path read-src-syntax up-to-date collection-cache new-seen)]
-- [(different-source-sha1-and-dep-recorded path deps)
-+ [(and (not (store-reference? path))
-+ (different-source-sha1-and-dep-recorded path deps))
- => (lambda (difference)
- (trace-printf "different src hash... ~a" difference)
- ;; If `sha1-only?', then `maybe-compile-zo' returns a #f or thunk:
---
-2.18.0
-
+@@ -1015,6 +1020,7 @@
+ (trace-printf "newer src... ~a > ~a" path-time path-zo-time)
+ (maybe-compile-zo deps path->mode roots path orig-path read-src-syntax up-to-date collection-cache new-seen
+ #:trying-sha1? sha1-only?)]
+- [(different-source-sha1-and-dep-recorded path deps)
++ [(and (not (store-reference? path))
++ (different-source-sha1-and-dep-recorded path deps))
+ => (lambda (difference)
+ (trace-printf "different src hash ~a for ~a..." difference path)
+ (maybe-compile-zo deps path->mode roots path orig-path read-src-syntax up-to-date collection-cache new-seen \ No newline at end of file
diff --git a/gnu/packages/patches/ri-li-modernize_cpp.patch b/gnu/packages/patches/ri-li-modernize_cpp.patch
new file mode 100644
index 0000000000..3d076afb39
--- /dev/null
+++ b/gnu/packages/patches/ri-li-modernize_cpp.patch
@@ -0,0 +1,391 @@
+diff -r -u Ri-li-2.0.1.orig/src/audio.cc Ri-li-2.0.1/src/audio.cc
+--- Ri-li-2.0.1.orig/src/audio.cc 2012-01-22 00:40:56.928609371 -0800
++++ Ri-li-2.0.1/src/audio.cc 2012-01-22 00:28:33.360636539 -0800
+@@ -22,8 +22,8 @@
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ #include <stdlib.h>
+-#include <iostream.h>
+-#include <string.h>
++#include <iostream>
++#include <string>
+
+ #include "audio.h"
+ #include "utils.h"
+@@ -57,7 +57,7 @@
+ char PathFile[512];
+
+ if(Mix_OpenAudio(22050,AUDIO_S16,1,1024)) {
+- cerr <<"Enable to init Sound card ! "<<SDL_GetError()<<endl;
++ std::cerr <<"Enable to init Sound card ! "<<SDL_GetError()<<std::endl;
+ return false;
+ }
+
+diff -r -u Ri-li-2.0.1.orig/src/ecran.cc Ri-li-2.0.1/src/ecran.cc
+--- Ri-li-2.0.1.orig/src/ecran.cc 2007-11-02 04:48:16.000000000 -0700
++++ Ri-li-2.0.1/src/ecran.cc 2012-01-22 00:13:54.422798653 -0800
+@@ -21,7 +21,7 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <math.h>
+diff -r -u Ri-li-2.0.1.orig/src/editeur.cc Ri-li-2.0.1/src/editeur.cc
+--- Ri-li-2.0.1.orig/src/editeur.cc 2007-11-02 04:48:17.000000000 -0700
++++ Ri-li-2.0.1/src/editeur.cc 2012-01-22 00:28:59.632635579 -0800
+@@ -25,10 +25,10 @@
+ #include <windows.h>
+ #endif
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+ #include <math.h>
+ #include <SDL/SDL.h>
+
+@@ -374,7 +374,7 @@
+
+ // Sauve le niveau
+ if(Niveau.Save()==false) {
+- cerr <<"ERREUR Saving levels!"<<endl;
++ std::cerr <<"ERREUR Saving levels!"<<std::endl;
+ exit(-1);
+ }
+
+diff -r -u Ri-li-2.0.1.orig/src/jeux.cc Ri-li-2.0.1/src/jeux.cc
+--- Ri-li-2.0.1.orig/src/jeux.cc 2007-11-02 04:48:17.000000000 -0700
++++ Ri-li-2.0.1/src/jeux.cc 2012-01-22 00:14:08.422798143 -0800
+@@ -25,10 +25,10 @@
+ #include <windows.h>
+ #endif
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+ #include <math.h>
+ #include <SDL/SDL.h>
+
+diff -r -u Ri-li-2.0.1.orig/src/loco.cc Ri-li-2.0.1/src/loco.cc
+--- Ri-li-2.0.1.orig/src/loco.cc 2007-11-02 04:48:18.000000000 -0700
++++ Ri-li-2.0.1/src/loco.cc 2012-01-22 00:14:17.878797797 -0800
+@@ -21,10 +21,10 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+ #include <math.h>
+ #include "preference.h"
+ #include "loco.h"
+diff -r -u Ri-li-2.0.1.orig/src/main.cc Ri-li-2.0.1/src/main.cc
+--- Ri-li-2.0.1.orig/src/main.cc 2007-11-02 04:48:19.000000000 -0700
++++ Ri-li-2.0.1/src/main.cc 2012-01-22 00:29:40.080634136 -0800
+@@ -23,8 +23,8 @@
+
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <iostream.h>
+-#include <string.h>
++#include <iostream>
++#include <string>
+ #include <SDL/SDL.h>
+ #include <SDL/SDL_mixer.h>
+
+@@ -115,7 +115,7 @@
+
+ // Initilise SDL
+ if( SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_AUDIO|SDL_INIT_NOPARACHUTE) < 0 ) {
+- cerr <<"Impossible d'initialiser SDL:"<<SDL_GetError()<<endl;
++ std::cerr <<"Impossible d'initialiser SDL:"<<SDL_GetError()<<std::endl;
+ exit(-1);
+ }
+ // Ferme le programme correctement quant quit
+@@ -125,7 +125,7 @@
+ sdlVideoInfo=(SDL_VideoInfo*)SDL_GetVideoInfo();
+
+ if(sdlVideoInfo->vfmt->BitsPerPixel==8) {
+- cerr <<"Impossible d'utiliser 8bits pour la vidéo !"<<endl;
++ std::cerr <<"Impossible d'utiliser 8bits pour la vidéo !"<<std::endl;
+ exit(-1);
+ }
+
+@@ -145,7 +145,7 @@
+ sdlVideo=SDL_SetVideoMode(800,600,sdlVideoInfo->vfmt->BitsPerPixel,vOption);
+
+ if(sdlVideo==NULL) {
+- cerr <<"Impossible de passer dans le mode vidéo 800x600 !"<<endl;
++ std::cerr <<"Impossible de passer dans le mode vidéo 800x600 !"<<std::endl;
+ exit(-1);
+ }
+ // Change le nom de la fenetre
+diff -r -u Ri-li-2.0.1.orig/src/menu.cc Ri-li-2.0.1/src/menu.cc
+--- Ri-li-2.0.1.orig/src/menu.cc 2007-11-02 04:48:19.000000000 -0700
++++ Ri-li-2.0.1/src/menu.cc 2012-01-22 00:30:04.752633198 -0800
+@@ -21,10 +21,10 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+ #include "preference.h"
+ #include "menu.h"
+ #include "sprite.h"
+@@ -92,7 +92,7 @@
+ // Teste la resolution video
+ sdlVideoInfo=(SDL_VideoInfo*)SDL_GetVideoInfo();
+ if(sdlVideoInfo->vfmt->BitsPerPixel==8) {
+- cerr <<"Impossible d'utiliser 8bits pour la vidéo !"<<endl;
++ std::cerr <<"Impossible d'utiliser 8bits pour la vidéo !"<<std::endl;
+ exit(-1);
+ }
+
+@@ -112,7 +112,7 @@
+ if(Pref.FullScreen) vOption|=SDL_FULLSCREEN;
+ sdlVideo=SDL_SetVideoMode(800,600,sdlVideoInfo->vfmt->BitsPerPixel,vOption);
+ if(sdlVideo==NULL) {
+- cerr <<"Impossible de passer dans le mode vidéo 800x600 !"<<endl;
++ std::cerr <<"Impossible de passer dans le mode vidéo 800x600 !"<<std::endl;
+ exit(-1);
+ }
+
+diff -r -u Ri-li-2.0.1.orig/src/mouse.cc Ri-li-2.0.1/src/mouse.cc
+--- Ri-li-2.0.1.orig/src/mouse.cc 2007-11-02 04:48:20.000000000 -0700
++++ Ri-li-2.0.1/src/mouse.cc 2012-01-22 00:14:36.438797120 -0800
+@@ -21,7 +21,7 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include "mouse.h"
+ #include "preference.h"
+diff -r -u Ri-li-2.0.1.orig/src/sprite.cc Ri-li-2.0.1/src/sprite.cc
+--- Ri-li-2.0.1.orig/src/sprite.cc 2007-11-02 04:48:20.000000000 -0700
++++ Ri-li-2.0.1/src/sprite.cc 2012-01-22 00:30:43.640631779 -0800
+@@ -21,10 +21,10 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+ #include <math.h>
+ #include "sprite.h"
+ #include "preference.h"
+@@ -84,7 +84,7 @@
+ strcpy(PathFile,Langue[Pref.Langue]);
+ GetPath(PathFile);
+ if(FileExiste(PathFile)==false) {
+- cerr <<"Impossible de trouver "<<Langue[Pref.Langue]<<endl;
++ std::cerr <<"Impossible de trouver "<<Langue[Pref.Langue]<<std::endl;
+ return false;
+ }
+ L=ChargeFichier(PathFile,Buf);
+@@ -128,7 +128,7 @@
+ // *** Charge le fichier des langues ***
+ // *************************************
+ if(FileExiste(PathFile)==false) {
+- cerr <<"Impossible de trouver 'language.dat'"<<endl;
++ std::cerr <<"Impossible de trouver 'language.dat'"<<std::endl;
+ return false;
+ }
+ L=ChargeFichier(PathFile,Buf);
+@@ -163,7 +163,7 @@
+ strcpy(PathFile,"sprites.dat");
+ GetPath(PathFile);
+ if(FileExiste(PathFile)==false) {
+- cerr <<"Impossible de trouver 'sprites.dat'"<<endl;
++ std::cerr <<"Impossible de trouver 'sprites.dat'"<<std::endl;
+ return false;
+ }
+ L=ChargeFichier(PathFile,Buf);
+@@ -352,7 +352,7 @@
+ Image[i]=SDL_CreateRGBSurface((Dim[i].bpp-3)*SDL_SRCALPHA,Dim[i].L,Dim[i].H,Dim[i].bpp*8,
+ 0xff,0xff00,0xff0000,0xff000000*(Dim[i].bpp-3));
+ if(Image[i]<=NULL) {
+- cerr <<"Impossible de créer une Surface SDL!"<<endl;
++ std::cerr <<"Impossible de créer une Surface SDL!"<<std::endl;
+ return false;
+ }
+
+@@ -486,7 +486,7 @@
+ Image[0]=SDL_CreateRGBSurface((Dim[0].bpp-3)*SDL_SRCALPHA,Dim[0].L,Dim[0].H,Dim[0].bpp*8,
+ 0xff,0xff00,0xff0000,0xff000000*(Dim[0].bpp-3));
+ if(Image[0]<=NULL) {
+- cerr <<"Impossible de créer une Surface SDL!"<<endl;
++ std::cerr <<"Impossible de créer une Surface SDL!"<<std::endl;
+ return false;
+ }
+ return true;
+diff -r -u Ri-li-2.0.1.orig/src/tableau.cc Ri-li-2.0.1/src/tableau.cc
+--- Ri-li-2.0.1.orig/src/tableau.cc 2007-11-02 04:48:21.000000000 -0700
++++ Ri-li-2.0.1/src/tableau.cc 2012-01-22 00:14:50.710796598 -0800
+@@ -21,7 +21,7 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include "preference.h"
+diff -r -u Ri-li-2.0.1.orig/src/utils.cc Ri-li-2.0.1/src/utils.cc
+--- Ri-li-2.0.1.orig/src/utils.cc 2007-11-02 04:48:22.000000000 -0700
++++ Ri-li-2.0.1/src/utils.cc 2012-01-22 00:31:30.944630051 -0800
+@@ -21,10 +21,10 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+
+ #ifdef WINDOWS
+ #include <windows.h>
+@@ -77,7 +77,7 @@
+
+ file=fopen(Path,"r");
+ if(!file) {
+- cerr <<"ERREUR: Impossible d'ouvrir '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR: Impossible d'ouvrir '"<<Path<<"'"<<std::endl;
+ perror("fopen");
+ return -1;
+ }
+@@ -93,7 +93,7 @@
+
+ Buf=new unsigned char [L+1];
+ if(Buf==NULL) {
+- cerr <<"ERREUR: Memoire insuffisante!"<<endl;
++ std::cerr <<"ERREUR: Memoire insuffisante!"<<std::endl;
+ fclose(file);
+ return -1;
+ }
+@@ -104,7 +104,7 @@
+ while(Compt>1024) {
+ AfficheChargeur();
+ if( fread(Po,1,1024,file) != 1024 ) {
+- cerr <<"ERREUR de lecture du fichier '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR de lecture du fichier '"<<Path<<"'"<<std::endl;
+ perror("fread");
+ fclose(file);
+ delete [] Buf;
+@@ -131,13 +131,13 @@
+
+ file=_lopen(Path,OF_READ);
+ if(file==-1) {
+- cerr <<"Impossible d'ouvrir "<<Path<<endl;
++ std::cerr <<"Impossible d'ouvrir "<<Path<<std::endl;
+ exit(-1);
+ }
+
+ long L=(long)_llseek(file,0,SEEK_END);
+ if(L==-1) {
+- cerr <<"Impossible de trouver la longueur du fichier"<<endl;
++ std::cerr <<"Impossible de trouver la longueur du fichier"<<std::endl;
+ perror("lseek");
+ _lclose(file);
+ return -1;
+@@ -146,7 +146,7 @@
+
+ Buf=new unsigned char [L+1];
+ if(Buf==NULL) {
+- cerr <<"ERREUR: Memoire insuffisante!"<<endl;
++ std::cerr <<"ERREUR: Memoire insuffisante!"<<std::endl;
+ _lclose(file);
+ return -1;
+ }
+@@ -169,14 +169,14 @@
+
+ file=fopen(Path,"w");
+ if(!file) {
+- cerr <<"ERREUR: Impossible d'ouvrir '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR: Impossible d'ouvrir '"<<Path<<"'"<<std::endl;
+ perror("fopen");
+ return false;
+ }
+
+ while(L>512) {
+ if( fwrite(Buf,1,512,file) != 512 ) {
+- cerr <<"ERREUR d'ecriture du fichier '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR d'ecriture du fichier '"<<Path<<"'"<<std::endl;
+ perror("fwrite");
+ fclose(file);
+ return false;
+@@ -187,7 +187,7 @@
+
+ if(L>0) {
+ if( fwrite(Buf,1,(size_t)L,file) != (size_t)L ) {
+- cerr <<"ERREUR d'ecriture du fichier '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR d'ecriture du fichier '"<<Path<<"'"<<std::endl;
+ perror("fwrite");
+ fclose(file);
+ return false;
+@@ -208,7 +208,7 @@
+
+ file=_lcreat(Path,0);
+ if(!file) {
+- cerr <<"ERREUR: Impossible de créer le fichier '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR: Impossible de créer le fichier '"<<Path<<"'"<<std::endl;
+ return false;
+ }
+
+@@ -216,7 +216,7 @@
+ _lclose(file);
+
+ if(Lec!=L) {
+- cerr <<"Problème d'ecriture du fichier '"<<Path<<"' ecris="<<Lec<<" au lieux de ="<<L<<endl;
++ std::cerr <<"Problème d'ecriture du fichier '"<<Path<<"' ecris="<<Lec<<" au lieux de ="<<L<<std::endl;
+ return false;
+ }
+
+@@ -250,7 +250,7 @@
+ sprintf(Path,"/usr/share/games/Ri-li/%s",Provi);
+ if(FileExiste(Path)) return;
+
+- cerr <<"Impossible de trouver le fichier '"<<Provi<<endl;
++ std::cerr <<"Impossible de trouver le fichier '"<<Provi<<std::endl;
+ exit(-1);
+ }
+ #endif
+@@ -266,7 +266,7 @@
+ sprintf(Path,"PROGDIR:%s",Provi);
+ if(FileExiste(Path)) return;
+
+- cerr <<"Impossible de trouver le fichier '"<<Path<<endl;
++ std::cerr <<"Impossible de trouver le fichier '"<<Path<<std::endl;
+ exit(-1);
+ }
+ #endif
+@@ -282,7 +282,7 @@
+ sprintf(Path,"Ri-li.app/Contents/Resources/%s",Provi);
+ if(FileExiste(Path)) return;
+
+- cerr <<"Impossible de trouver le fichier '"<<Path<<endl;
++ std::cerr <<"Impossible de trouver le fichier '"<<Path<<std::endl;
+ exit(-1);
+ }
+ #endif
diff --git a/gnu/packages/patches/usb-modeswitch-accept-config-arg.patch b/gnu/packages/patches/usb-modeswitch-accept-config-arg.patch
new file mode 100644
index 0000000000..9c050f7ee6
--- /dev/null
+++ b/gnu/packages/patches/usb-modeswitch-accept-config-arg.patch
@@ -0,0 +1,42 @@
+--- old/usb_modeswitch.tcl 1970-01-01 01:00:00.000000000 +0100
++++ usb_modeswitch.tcl 2019-06-12 08:39:42.140000000 +0200
+@@ -41,7 +41,7 @@
+ global scsi usb config match device flags setup devdir loginit
+
+ set flags(config) ""
+-Log "[ParseGlobalConfig]"
++Log "[ParseGlobalConfig $argv]"
+
+ if {$flags(stordelay) > 0} {
+ SetStorageDelay $flags(stordelay)
+@@ -496,9 +496,21 @@
+ # end of proc {MatchDevice}
+
+
+-proc {ParseGlobalConfig} {} {
++proc {ParseGlobalConfig} {argv} {
+
+ global flags
++
++set configFileParam ""
++for {set i 0} {$i < [llength $argv]} {incr i} {
++ switch -glob -- [set v [lindex $argv $i]] {
++ --config-file=* {
++ set configFileParam $v
++ }
++ }
++}
++if {$configFileParam != ""} {
++ set configFile [string range $configFileParam [string length "--config-file="] end]
++} else {
+ set configFile ""
+ set places [list /etc/usb_modeswitch.conf /etc/sysconfig/usb_modeswitch /etc/default/usb_modeswitch]
+ foreach cfg $places {
+@@ -507,6 +519,7 @@
+ break
+ }
+ }
++}
+ if {$configFile == ""} {return}
+
+ set rc [open $configFile r]
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 8e9410e37a..3875c71911 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -21,6 +21,7 @@
;;; Copyright © 2018, 2019 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
+;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -711,14 +712,14 @@ is captured while being passed through to the original file handles.")
(define-public perl-canary-stability
(package
(name "perl-canary-stability")
- (version "2012")
+ (version "2013")
(source (origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/"
"Canary-Stability-" version ".tar.gz"))
(sha256
(base32
- "01vih43hvpqy67m6a6fwmlswli91mqpv8n8ccglvlkc33l8hn97x"))))
+ "1smnsx371x9zrqmylgq145991xh8561mraqfyrlbiz4mrxi1rjd5"))))
(build-system perl-build-system)
(home-page "https://metacpan.org/release/Canary-Stability")
(synopsis "Check compatibility with the installed perl version")
@@ -9429,7 +9430,7 @@ on the YAML 1.0 specification.")
(define-public perl-yaml-libyaml
(package
(name "perl-yaml-libyaml")
- (version "0.76")
+ (version "0.78")
(source
(origin
(method url-fetch)
@@ -9438,7 +9439,7 @@ on the YAML 1.0 specification.")
version
".tar.gz"))
(sha256
- (base32 "1m94g36sl9rasjlvlsf65xcal5hvkc3gbzd7l68h17az75269kyy"))))
+ (base32 "03plv3wfqqqf7g8mxr8f6wlki2af8w3rg9xcfii1z5l1f1iarxx1"))))
(build-system perl-build-system)
(home-page
"https://metacpan.org/release/YAML-LibYAML")
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 3e5ab72f20..9962cbdcb5 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -437,7 +437,7 @@ implementation techniques and as an expository tool.")
(define-public racket
(package
(name "racket")
- (version "7.0")
+ (version "7.3")
(source (origin
(method url-fetch)
(uri (list (string-append "http://mirror.racket-lang.org/installers/"
@@ -447,7 +447,7 @@ implementation techniques and as an expository tool.")
version "/racket-" version "-src.tgz")))
(sha256
(base32
- "1glv5amsp9xp480d4yr63hhm9kkyav06yl3a6p489nkr4cln0j9a"))
+ "0h6072njhb87rkz4arijvahxgjzn8r14s4wns0ijvxm89bg136yl"))
(patches (search-patches
"racket-store-checksum-override.patch"))))
(build-system gnu-build-system)
diff --git a/gnu/packages/usb-modeswitch.scm b/gnu/packages/usb-modeswitch.scm
new file mode 100644
index 0000000000..8f1cf9df60
--- /dev/null
+++ b/gnu/packages/usb-modeswitch.scm
@@ -0,0 +1,166 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Florian Pelz <pelzflorian@pelzflorian.de>
+;;;
+;;; 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 usb-modeswitch)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system trivial)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages embedded)
+ #:use-module (gnu packages libusb)
+ #:use-module (gnu packages pkg-config))
+
+(define-public usb-modeswitch-data
+ (package
+ (name "usb-modeswitch-data")
+ (version "20170806")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://www.draisberghof.de/usb_modeswitch/"
+ "usb-modeswitch-data-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "0b1wari3aza6qjggqd0hk2zsh93k1q8scgmwh6f8wr0flpr3whff"))))
+ (build-system trivial-build-system)
+ (native-inputs `(("tar" ,tar)
+ ("bzip2" ,bzip2)))
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let* ((source (assoc-ref %build-inputs "source"))
+ (tar (assoc-ref %build-inputs "tar"))
+ (bzip2 (assoc-ref %build-inputs "bzip2"))
+ (files (string-append "usb-modeswitch-data-"
+ ,(package-version this-package)))
+ (share-dir (string-append %output "/share"))
+ (doc-dir (string-append share-dir "/doc/"))
+ (license-dir (string-append doc-dir
+ (strip-store-file-name %output)))
+ (udev-dir (string-append %output "/udev")))
+ (copy-file source "data.tar.bz2")
+ (invoke (string-append bzip2 "/bin/bzip2") "-d" "data.tar.bz2")
+ (invoke (string-append tar "/bin/tar") "xvf" "data.tar")
+ (copy-recursively (string-append files "/usb_modeswitch.d")
+ (string-append share-dir "/usb_modeswitch.d"))
+ (install-file (string-append files "/40-usb_modeswitch.rules")
+ udev-dir)
+ (install-file (string-append files "/COPYING") license-dir)))))
+ (home-page "http://www.draisberghof.de/usb_modeswitch/")
+ (synopsis "Data package for USB_ModeSwitch")
+ (description "This packages contains data about devices and a UDEV rules
+file for use with USB_ModeSwitch.")
+ (license license:gpl2+)))
+
+(define-public usb-modeswitch
+ (package
+ (name "usb-modeswitch")
+ (version "2.5.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://www.draisberghof.de/usb_modeswitch/"
+ "usb-modeswitch-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "19ifi80g9ns5dmspchjvfj4ykxssq9yrci8m227dgb3yr04srzxb"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Remove bundled jimtcl.
+ '(begin
+ (delete-file-recursively "jim")
+ #t))
+ (patches
+ (search-patches "usb-modeswitch-accept-config-arg.patch"))))
+ (native-inputs `(("pkg-config" ,pkg-config)))
+ (inputs `(("libusb" ,libusb)
+ ("jimtcl" ,jimtcl)
+ ("usb-modeswitch-data" ,usb-modeswitch-data)))
+ (outputs '("out" "dispatcher"))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; does not support `make check`
+ #:make-flags (list "CC=gcc")
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure) ; no configure script
+ (replace 'install
+ (lambda* (#:key source outputs inputs #:allow-other-keys)
+ (let* ((source (assoc-ref inputs "source"))
+ (jimtcl (assoc-ref inputs "jimtcl"))
+ (data (assoc-ref inputs "usb-modeswitch-data"))
+ (out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (man1 (string-append out "/share/man/man1"))
+ (dispatcher-out (assoc-ref outputs "dispatcher"))
+ (udev (string-append dispatcher-out "/lib/udev"))
+ (etc (string-append dispatcher-out "/etc"))
+ (dispatcher-bin (string-append dispatcher-out "/bin"))
+ (dispatcher-man1 (string-append dispatcher-out
+ "/share/man/man1")))
+ (begin
+ ;; Users can install the default output and
+ ;; usb-modeswitch-data and then modeswitch their USB device
+ ;; by running e.g.:
+ ;;
+ ;; sudo usb_modeswitch -c \
+ ;; ~/.guix-profile/share/usb_modeswitch.d/12d1\:14fe \
+ ;; -v 0x12d1 -p 0x14fe
+ ;;
+ ;; But it is simpler to use the usb-modeswitch-service-type
+ ;; that installs a UDEV rules file which invokes a shell
+ ;; script in lib/udev (also called `usb_modeswitch' like the
+ ;; main binary) which, in turn, invokes the program
+ ;; `usb_modeswitch_dispatcher'. Normal users should not
+ ;; invoke this dispatcher directly, so it is a separate output.
+ (install-file "usb_modeswitch" bin)
+ (install-file "usb_modeswitch.conf" etc)
+ (install-file "usb_modeswitch.1" man1)
+ (install-file "usb_modeswitch_dispatcher.1" dispatcher-man1)
+
+ (substitute* "usb_modeswitch.sh"
+ (("PATH=") "PATH=$PATH:") ; we do not want hardcoded FHS path
+ (("init_path=") "init_path=/does/not/exist")) ; no /sbin/init
+ (rename-file "usb_modeswitch.sh" "usb_modeswitch")
+ (install-file "usb_modeswitch" udev)
+
+ (rename-file "usb_modeswitch.tcl" "usb_modeswitch_dispatcher")
+ (substitute* "usb_modeswitch_dispatcher"
+ (("/usr/bin/tclsh")
+ (string-append jimtcl "/bin/jimsh"))
+ (("/usr/sbin") bin)
+ (("/usr/share/usb_modeswitch")
+ (string-append data "/share/usb_modeswitch.d")))
+ (install-file "usb_modeswitch_dispatcher"
+ dispatcher-bin)
+ #t)))))))
+ (home-page "http://www.draisberghof.de/usb_modeswitch/")
+ (synopsis "Mode switching tool for controlling `multi-mode' USB devices")
+ (description "USB_ModeSwitch is a mode switching tool for controlling USB
+devices with multiple @dfn{modes}. When plugged in for the first time many
+USB devices (primarily high-speed WAN modems) act like a flash storage
+containing installers for Windows drivers. USB_ModeSwitch replays the
+sequence the Windows drivers would send to switch their mode from storage to
+modem (or whatever the thing is supposed to do).")
+ (license license:gpl2+)))
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index aa543b68d0..7f2db9980e 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -6,6 +6,7 @@
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 HiPhish <hiphish@posteo.de>
+;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -30,6 +31,7 @@
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system python)
#:use-module (gnu packages)
#:use-module (gnu packages acl)
#:use-module (gnu packages admin) ; For GNU hostname
@@ -52,6 +54,7 @@
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-xyz)
#:use-module (gnu packages ruby)
#:use-module (gnu packages serialization)
#:use-module (gnu packages shells)
@@ -888,3 +891,29 @@ from the @command{vi}-editor:
@end enumerate
With the package comes a plugin to use vifm as a vim file selector.")
(license license:gpl2+)))
+
+(define-public python-pynvim
+ (package
+ (name "python-pynvim")
+ (version "0.3.2")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "pynvim" version))
+ (sha256
+ (base32
+ "01dybk4vs452pljn1q3il5z2sd313ki0lgiglc0xmjc6wp290r6g"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-greenlet" ,python-greenlet)
+ ("python-msgpack" ,python-msgpack)))
+ (arguments
+ `(#:tests? #f))
+ (home-page "https://github.com/neovim/pynvim")
+ (synopsis "Python client and plugin host for neovim")
+ (description "Pynvim implements support for python plugins in neovim. It
+also works as a library for connecting to and scripting neovim processes
+through its msgpack-rpc API.")
+ (license license:asl2.0)))
+
+(define-public python2-pynvim
+ (package-with-python2 python-pynvim))
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index d022c6be46..1ed113cd20 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -32,6 +32,7 @@
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot>
+;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -4234,27 +4235,19 @@ NetSurf project.")
(define-public ikiwiki
(package
(name "ikiwiki")
- (version "3.20170111")
+ (version "3.20190228")
(source
(origin
(method url-fetch)
(uri (string-append "http://snapshot.debian.org/archive/debian/"
- "20170111T215449Z/pool/main/i/ikiwiki/ikiwiki_"
- version ".tar.xz"))
+ "20190301T035241Z/pool/main/i/ikiwiki/ikiwiki_"
+ version ".orig.tar.xz"))
(sha256
(base32
- "00d7yzv426fvqbhvzyafddv7fa6b4j2647b0wi371wd5yjj9j3sz"))))
+ "17pyblaqhkb61lxl63bzndiffism8k859p54k3k4sghclq6lsynh"))))
(build-system perl-build-system)
(arguments
- `(;; Image tests fail
- ;;
- ;; Test Summary Report
- ;; -------------------
- ;; t/img.t (Wstat: 2304 Tests: 62 Failed: 9)
- ;; Failed tests: 21, 27-28, 30-35
- ;; Non-zero exit status: 9
- #:tests? #f
- #:phases
+ `(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'include-PERL5LIB-in-wrapper
(lambda _
diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm
index 4940156db5..2c1562fb49 100644
--- a/gnu/packages/wget.scm
+++ b/gnu/packages/wget.scm
@@ -31,12 +31,13 @@
#:use-module (gnu packages gettext)
#:use-module (gnu packages gnunet)
#:use-module (gnu packages libidn)
- #:use-module (gnu packages python)
- #:use-module (gnu packages perl)
- #:use-module (gnu packages web)
#:use-module (gnu packages pcre)
+ #:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python)
#:use-module (gnu packages tls)
+ #:use-module (gnu packages web)
+ #:use-module (gnu packages xdisorg)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
@@ -102,7 +103,7 @@ in downloaded documents to relative links.")
(lambda _
(substitute* "wgetpaste"
((" poundpython\"") "\"")
- (("-poundpython") "-dpaste"))
+ (("-poundpython") "-bpaste")) ; dpaste blocks tor users
#t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
@@ -123,11 +124,12 @@ in downloaded documents to relative links.")
,(delete-duplicates
(map (lambda (command) (dirname (which command)))
(list "bash" "mktemp" "sed" "sort" "tee" "tr"
- "wget")))))
+ "wget" "xclip")))))
#t))))
#:tests? #f)) ; no test target
(inputs
- `(("wget" ,wget)))
+ `(("wget" ,wget)
+ ("xclip" ,xclip)))
(home-page "http://wgetpaste.zlin.dk/")
(synopsis "Script that automates pasting to a number of pastebin services")
(description
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index f0589e98f1..eac17e0837 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -17,7 +17,7 @@
;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
-;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
+;;; Copyright © 2018, 2019 Meiyo Peng <meiyo@riseup.net>
;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
;;;
@@ -1201,6 +1201,12 @@ modules for building a Wayland compositor.")
(modify-phases %standard-phases
(add-before 'configure 'hardcode-paths
(lambda* (#:key inputs #:allow-other-keys)
+ ;; Hardcode path to swaybg.
+ (substitute* "sway/config.c"
+ (("strdup..swaybg..")
+ (string-append "strdup(\"" (assoc-ref inputs "swaybg")
+ "/bin/swaybg\")")))
+ ;; Hardcode path to scdoc.
(substitute* "meson.build"
(("scdoc.get_pkgconfig_variable..scdoc..")
(string-append "'" (assoc-ref inputs "scdoc")
@@ -1214,6 +1220,7 @@ modules for building a Wayland compositor.")
("libinput" ,libinput)
("libxkbcommon" ,libxkbcommon)
("pango" ,pango)
+ ("swaybg" ,swaybg)
("wayland" ,wayland)
("wlroots" ,wlroots)))
(native-inputs `(("git" ,git)
diff --git a/gnu/services/nix.scm b/gnu/services/nix.scm
index 72ecb7d089..dfe33991d0 100644
--- a/gnu/services/nix.scm
+++ b/gnu/services/nix.scm
@@ -77,7 +77,8 @@ GID."
"Return the activation gexp."
(with-imported-modules '((guix build utils))
#~(begin
- (use-modules (guix build utils))
+ (use-modules (guix build utils)
+ (srfi srfi-26))
(for-each (cut mkdir-p <>) '("/nix/store" "/nix/var/log"
"/nix/var/nix/gcroots/per-user"
"/nix/var/nix/profiles/per-user"))
diff --git a/guix/build-system/cargo.scm b/guix/build-system/cargo.scm
index dc137421e9..fa211d456d 100644
--- a/guix/build-system/cargo.scm
+++ b/guix/build-system/cargo.scm
@@ -29,6 +29,8 @@
#:use-module (guix build-system)
#:use-module (guix build-system gnu)
#:use-module (ice-9 match)
+ #:use-module (ice-9 vlist)
+ #:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:export (%cargo-build-system-modules
%cargo-utils-modules
@@ -118,18 +120,128 @@ to NAME and VERSION."
#:inputs inputs
#:system system
#:modules imported-modules
- #:outputs (cons "src" outputs)
+ #:outputs outputs
#:guile-for-build guile-for-build))
+(define (package-cargo-inputs p)
+ (apply
+ (lambda* (#:key (cargo-inputs '()) #:allow-other-keys)
+ cargo-inputs)
+ (package-arguments p)))
+
+(define (package-cargo-development-inputs p)
+ (apply
+ (lambda* (#:key (cargo-development-inputs '()) #:allow-other-keys)
+ cargo-development-inputs)
+ (package-arguments p)))
+
+(define (crate-closure inputs)
+ "Return the closure of INPUTS when considering the 'cargo-inputs' and
+'cargod-dev-deps' edges. Omit duplicate inputs, except for those
+already present in INPUTS itself.
+
+This is implemented as a breadth-first traversal such that INPUTS is
+preserved, and only duplicate extracted inputs are removed.
+
+Forked from ((guix packages) transitive-inputs) since this extraction
+uses slightly different rules compared to the rest of Guix (i.e. we
+do not extract the conventional inputs)."
+ (define (seen? seen item)
+ ;; FIXME: We're using pointer identity here, which is extremely sensitive
+ ;; to memoization in package-producing procedures; see
+ ;; <https://bugs.gnu.org/30155>.
+ (vhash-assq item seen))
+
+ (let loop ((inputs inputs)
+ (result '())
+ (propagated '())
+ (first? #t)
+ (seen vlist-null))
+ (match inputs
+ (()
+ (if (null? propagated)
+ (reverse result)
+ (loop (reverse (concatenate propagated)) result '() #f seen)))
+ (((and input (label (? package? package))) rest ...)
+ (if (and (not first?) (seen? seen package))
+ (loop rest result propagated first? seen)
+ (loop rest
+ (cons input result)
+ (cons (package-cargo-inputs package)
+ propagated)
+ first?
+ (vhash-consq package package seen))))
+ ((input rest ...)
+ (loop rest (cons input result) propagated first? seen)))))
+
+(define (expand-crate-sources cargo-inputs cargo-development-inputs)
+ "Extract all transitive sources for CARGO-INPUTS and CARGO-DEVELOPMENT-INPUTS
+along their 'cargo-inputs' edges.
+
+Cargo requires all transitive crate dependencies' sources to be available
+in its index, even if they are optional (this is so it can generate
+deterministic Cargo.lock files regardless of the target platform or enabled
+features). Thus we need all transitive crate dependencies for any cargo
+dev-dependencies, but this is only needed when building/testing a crate directly
+(i.e. we will never need transitive dev-dependencies for any dependency crates).
+
+Another complication arises due potential dependency cycles from Guix's
+perspective: Although cargo does not permit cyclic dependencies between crates,
+however, it permits cycles to occur via dev-dependencies. For example, if crate
+X depends on crate Y, crate Y's tests could pull in crate X to to verify
+everything builds properly (this is a rare scenario, but it it happens for
+example with the `proc-macro2` and `quote` crates). This is allowed by cargo
+because tests are built as a pseudo-crate which happens to depend on the
+X and Y crates, forming an acyclic graph.
+
+We can side step this problem by only considering regular cargo dependencies
+since they are guaranteed to not have cycles. We can further resolve any
+potential dev-dependency cycles by extracting package sources (which never have
+any dependencies and thus no cycles can exist).
+
+There are several implications of this decision:
+* Building a package definition does not require actually building/checking
+any dependent crates. This can be a benefits:
+ - For example, sometimes a crate may have an optional dependency on some OS
+ specific package which cannot be built or run on the current system. This
+ approach means that the build will not fail if cargo ends up internally ignoring
+ the dependency.
+ - It avoids waiting for quadratic builds from source: cargo always builds
+ dependencies within the current workspace. This is largely due to Rust not
+ having a stable ABI and other resolutions that cargo applies. This means that
+ if we have a depencency chain of X -> Y -> Z and we build each definition
+ independently the following will happen:
+ * Cargo will build and test crate Z
+ * Cargo will build crate Z in Y's workspace, then build and test Y
+ * Cargo will build crates Y and Z in X's workspace, then build and test X
+* But there are also some downsides with this approach:
+ - If a dependent crate is subtly broken on the system (i.e. it builds but its
+ tests fail) the consuming crates may build and test successfully but
+ actually fail during normal usage (however, the CI will still build all
+ packages which will give visibility in case packages suddenly break).
+ - Because crates aren't declared as regular inputs, other Guix facilities
+ such as tracking package graphs may not work by default (however, this is
+ something that can always be extended or reworked in the future)."
+ (filter-map
+ (match-lambda
+ ((label (? package? p))
+ (list label (package-source p)))
+ ((label input)
+ (list label input)))
+ (crate-closure (append cargo-inputs cargo-development-inputs))))
+
(define* (lower name
#:key source inputs native-inputs outputs system target
(rust (default-rust))
+ (cargo-inputs '())
+ (cargo-development-inputs '())
#:allow-other-keys
#:rest arguments)
"Return a bag for NAME."
(define private-keywords
- '(#:source #:target #:rust #:inputs #:native-inputs #:outputs))
+ '(#:source #:target #:rust #:inputs #:native-inputs #:outputs
+ #:cargo-inputs #:cargo-development-inputs))
(and (not target) ;; TODO: support cross-compilation
(bag
@@ -145,6 +257,7 @@ to NAME and VERSION."
,@(standard-packages)))
(build-inputs `(("cargo" ,rust "cargo")
("rustc" ,rust)
+ ,@(expand-crate-sources cargo-inputs cargo-development-inputs)
,@native-inputs))
(outputs outputs)
(build cargo-build)
diff --git a/guix/build/cargo-build-system.scm b/guix/build/cargo-build-system.scm
index 9f44bd6ee9..1f36304b15 100644
--- a/guix/build/cargo-build-system.scm
+++ b/guix/build/cargo-build-system.scm
@@ -54,6 +54,22 @@
(bin-dep? (lambda (dep) (find bin? (get-kinds dep)))))
(find bin-dep? (manifest-targets))))
+(define (crate-src? path)
+ "Check if PATH refers to a crate source, namely a gzipped tarball with a
+Cargo.toml file present at its root."
+ (and (gzip-file? path)
+ ;; First we print out all file names within the tarball to see if it
+ ;; looks like the source of a crate. However, the tarball will include
+ ;; an extra path component which we would like to ignore (since we're
+ ;; interested in checking if a Cargo.toml exists at the root of the
+ ;; archive, but not nested anywhere else). We do this by cutting up
+ ;; each output line and only looking at the second component. We then
+ ;; check if it matches Cargo.toml exactly and short circuit if it does.
+ (zero? (apply system* (list "sh" "-c"
+ (string-append "tar -tf " path
+ " | cut -d/ -f2"
+ " | grep -q '^Cargo.toml$'"))))))
+
(define* (configure #:key inputs
(vendor-dir "guix-vendor")
#:allow-other-keys)
@@ -67,14 +83,21 @@
(for-each
(match-lambda
((name . path)
- (let* ((rust-share (string-append path "/share/rust-source"))
- (basepath (basename path))
- (link-dir (string-append vendor-dir "/" basepath)))
- (and (file-exists? rust-share)
+ (let* ((basepath (basename path))
+ (crate-dir (string-append vendor-dir "/" basepath)))
+ (and (crate-src? path)
;; Gracefully handle duplicate inputs
- (not (file-exists? link-dir))
- (symlink rust-share link-dir)))))
+ (not (file-exists? crate-dir))
+ (mkdir-p crate-dir)
+ ;; Cargo crates are simply gzipped tarballs but with a .crate
+ ;; extension. We expand the source to a directory name we control
+ ;; so that we can generate any cargo checksums.
+ ;; The --strip-components argument is needed to prevent creating
+ ;; an extra directory within `crate-dir`.
+ (invoke "tar" "xvf" path "-C" crate-dir "--strip-components" "1")
+ (generate-checksums crate-dir)))))
inputs)
+
;; Configure cargo to actually use this new directory.
(mkdir-p ".cargo")
(let ((port (open-file ".cargo/config" "w" #:encoding "utf-8")))
@@ -117,24 +140,6 @@ directory = '" port)
(define (touch file-name)
(call-with-output-file file-name (const #t)))
-(define* (install-source #:key inputs outputs #:allow-other-keys)
- "Install the source for a given Cargo package."
- (let* ((out (assoc-ref outputs "out"))
- (src (assoc-ref inputs "source"))
- (rsrc (string-append (assoc-ref outputs "src")
- "/share/rust-source")))
- (mkdir-p rsrc)
- ;; Rust doesn't have a stable ABI yet. Because of this
- ;; Cargo doesn't have a search path for binaries yet.
- ;; Until this changes we are working around this by
- ;; vendoring the crates' sources by symlinking them
- ;; to store paths.
- (copy-recursively "." rsrc)
- (touch (string-append rsrc "/.cargo-ok"))
- (generate-checksums rsrc)
- (install-file "Cargo.toml" rsrc)
- #t))
-
(define* (install #:key inputs outputs skip-build? #:allow-other-keys)
"Install a given Cargo package."
(let* ((out (assoc-ref outputs "out")))
@@ -156,7 +161,6 @@ directory = '" port)
(define %standard-phases
(modify-phases gnu:%standard-phases
(delete 'bootstrap)
- (add-before 'configure 'install-source install-source)
(replace 'configure configure)
(replace 'build build)
(replace 'check check)
diff --git a/guix/import/cabal.scm b/guix/import/cabal.scm
index 1a87be0b00..7dfe771e41 100644
--- a/guix/import/cabal.scm
+++ b/guix/import/cabal.scm
@@ -40,6 +40,7 @@
cabal-package?
cabal-package-name
cabal-package-version
+ cabal-package-revision
cabal-package-license
cabal-package-home-page
cabal-package-source-repository
@@ -638,13 +639,14 @@ If #f use the function 'port-filename' to obtain it."
;; information of the Cabal file, but only the ones we currently are
;; interested in.
(define-record-type <cabal-package>
- (make-cabal-package name version license home-page source-repository
+ (make-cabal-package name version revision license home-page source-repository
synopsis description
executables lib test-suites
flags eval-environment custom-setup)
cabal-package?
(name cabal-package-name)
(version cabal-package-version)
+ (revision cabal-package-revision)
(license cabal-package-license)
(home-page cabal-package-home-page)
(source-repository cabal-package-source-repository)
@@ -838,6 +840,7 @@ See the manual for limitations.")))))))
(define (cabal-evaluated-sexp->package evaluated-sexp)
(let* ((name (lookup-join evaluated-sexp "name"))
(version (lookup-join evaluated-sexp "version"))
+ (revision (lookup-join evaluated-sexp "x-revision"))
(license (lookup-join evaluated-sexp "license"))
(home-page (lookup-join evaluated-sexp "homepage"))
(home-page-or-hackage
@@ -856,7 +859,7 @@ See the manual for limitations.")))))))
(custom-setup (match (make-cabal-section evaluated-sexp 'custom-setup)
((x) x)
(_ #f))))
- (make-cabal-package name version license home-page-or-hackage
+ (make-cabal-package name version revision license home-page-or-hackage
source-repository synopsis description executables lib
test-suites flags eval-environment custom-setup)))
diff --git a/guix/import/crate.scm b/guix/import/crate.scm
index e0b400d054..9a73d9fe16 100644
--- a/guix/import/crate.scm
+++ b/guix/import/crate.scm
@@ -65,29 +65,53 @@
(path (string-append "/" version "/dependencies"))
(deps-json (json-fetch-alist (string-append crate-url name path)))
(deps (assoc-ref deps-json "dependencies"))
- (input-crates (filter (crate-kind-predicate "normal") deps))
- (native-input-crates
+ (dep-crates (filter (crate-kind-predicate "normal") deps))
+ (dev-dep-crates
(filter (lambda (dep)
(not ((crate-kind-predicate "normal") dep))) deps))
- (inputs (crates->inputs input-crates))
- (native-inputs (crates->inputs native-input-crates))
+ (cargo-inputs (crates->inputs dep-crates))
+ (cargo-development-inputs (crates->inputs dev-dep-crates))
(home-page (match homepage
(() repository)
(_ homepage))))
(callback #:name name #:version version
- #:inputs inputs #:native-inputs native-inputs
+ #:cargo-inputs cargo-inputs
+ #:cargo-development-inputs cargo-development-inputs
#:home-page home-page #:synopsis synopsis
#:description description #:license license)))
-(define* (make-crate-sexp #:key name version inputs native-inputs
+(define (maybe-cargo-inputs package-names)
+ (match (package-names->package-inputs package-names)
+ (()
+ '())
+ ((package-inputs ...)
+ `((#:cargo-inputs ,package-inputs)))))
+
+(define (maybe-cargo-development-inputs package-names)
+ (match (package-names->package-inputs package-names)
+ (()
+ '())
+ ((package-inputs ...)
+ `((#:cargo-development-inputs ,package-inputs)))))
+
+(define (maybe-arguments arguments)
+ (match arguments
+ (()
+ '())
+ ((args ...)
+ `((arguments (,'quasiquote ,args))))))
+
+(define* (make-crate-sexp #:key name version cargo-inputs cargo-development-inputs
home-page synopsis description license
#:allow-other-keys)
"Return the `package' s-expression for a rust package with the given NAME,
-VERSION, INPUTS, NATIVE-INPUTS, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE."
+VERSION, CARGO-INPUTS, CARGO-DEVELOPMENT-INPUTS, HOME-PAGE, SYNOPSIS, DESCRIPTION,
+and LICENSE."
(let* ((port (http-fetch (crate-uri name version)))
(guix-name (crate-name->package-name name))
- (inputs (map crate-name->package-name inputs))
- (native-inputs (map crate-name->package-name native-inputs))
+ (cargo-inputs (map crate-name->package-name cargo-inputs))
+ (cargo-development-inputs (map crate-name->package-name
+ cargo-development-inputs))
(pkg `(package
(name ,guix-name)
(version ,version)
@@ -99,8 +123,9 @@ VERSION, INPUTS, NATIVE-INPUTS, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE."
(base32
,(bytevector->nix-base32-string (port-sha256 port))))))
(build-system cargo-build-system)
- ,@(maybe-native-inputs native-inputs "src")
- ,@(maybe-inputs inputs "src")
+ ,@(maybe-arguments (append (maybe-cargo-inputs cargo-inputs)
+ (maybe-cargo-development-inputs
+ cargo-development-inputs)))
(home-page ,(match home-page
(() "")
(_ home-page)))
diff --git a/guix/import/hackage.scm b/guix/import/hackage.scm
index 366256b40d..6f426af900 100644
--- a/guix/import/hackage.scm
+++ b/guix/import/hackage.scm
@@ -117,19 +117,34 @@ version is returned."
(#f name)
(m (match:substring m 1)))))))
+(define (read-cabal-and-hash port)
+ "Read a Cabal file from PORT and return it and its hash in nix-base32
+format as two values."
+ (let-values (((port get-hash) (open-sha256-input-port port)))
+ (values (read-cabal (canonical-newline-port port))
+ (bytevector->nix-base32-string (get-hash)))))
+
+(define (hackage-fetch-and-hash name-version)
+ "Fetch the latest Cabal revision for the package NAME-VERSION, and return
+two values: the parsed Cabal file and its hash in nix-base32 format. If the
+version part is omitted from the package name, then fetch the latest
+version. On failure, both return values will be #f."
+ (guard (c ((and (http-get-error? c)
+ (= 404 (http-get-error-code c)))
+ (values #f #f))) ;"expected" if package is unknown
+ (let*-values (((name version) (package-name->name+version name-version))
+ ((url) (hackage-cabal-url name version))
+ ((port _) (http-fetch url))
+ ((cabal hash) (read-cabal-and-hash port)))
+ (close-port port)
+ (values cabal hash))))
+
(define (hackage-fetch name-version)
"Return the Cabal file for the package NAME-VERSION, or #f on failure. If
the version part is omitted from the package name, then return the latest
version."
- (guard (c ((and (http-get-error? c)
- (= 404 (http-get-error-code c)))
- #f)) ;"expected" if package is unknown
- (let-values (((name version) (package-name->name+version name-version)))
- (let* ((url (hackage-cabal-url name version))
- (port (http-fetch url))
- (result (read-cabal (canonical-newline-port port))))
- (close-port port)
- result))))
+ (let-values (((cabal hash) (hackage-fetch-and-hash name-version)))
+ cabal))
(define string->license
;; List of valid values from
@@ -198,15 +213,20 @@ package being processed and is used to filter references to itself."
(cons own-name ghc-standard-libraries))))
dependencies))
-(define* (hackage-module->sexp cabal #:key (include-test-dependencies? #t))
+(define* (hackage-module->sexp cabal cabal-hash
+ #:key (include-test-dependencies? #t))
"Return the `package' S-expression for a Cabal package. CABAL is the
-representation of a Cabal file as produced by 'read-cabal'."
+representation of a Cabal file as produced by 'read-cabal'. CABAL-HASH is
+the hash of the Cabal file."
(define name
(cabal-package-name cabal))
(define version
(cabal-package-version cabal))
+
+ (define revision
+ (cabal-package-revision cabal))
(define source-url
(hackage-source-url name version))
@@ -252,9 +272,14 @@ representation of a Cabal file as produced by 'read-cabal'."
(list 'quasiquote inputs))))))
(define (maybe-arguments)
- (if (not include-test-dependencies?)
- '((arguments `(#:tests? #f)))
- '()))
+ (match (append (if (not include-test-dependencies?)
+ '(#:tests? #f)
+ '())
+ (if (not (string-null? revision))
+ `(#:cabal-revision (,revision ,cabal-hash))
+ '()))
+ (() '())
+ (args `((arguments (,'quasiquote ,args))))))
(let ((tarball (with-store store
(download-to-store store source-url))))
@@ -294,10 +319,11 @@ symbol 'true' or 'false'. The value associated with other keys has to conform
to the Cabal file format definition. The default value associated with the
keys \"os\", \"arch\" and \"impl\" is \"linux\", \"x86_64\" and \"ghc\"
respectively."
- (let ((cabal-meta (if port
- (read-cabal (canonical-newline-port port))
- (hackage-fetch package-name))))
- (and=> cabal-meta (compose (cut hackage-module->sexp <>
+ (let-values (((cabal-meta cabal-hash)
+ (if port
+ (read-cabal-and-hash port)
+ (hackage-fetch-and-hash package-name))))
+ (and=> cabal-meta (compose (cut hackage-module->sexp <> cabal-hash
#:include-test-dependencies?
include-test-dependencies?)
(cut eval-cabal <> cabal-environment)))))
diff --git a/guix/import/utils.scm b/guix/import/utils.scm
index 63fc9bbb27..84503ab907 100644
--- a/guix/import/utils.scm
+++ b/guix/import/utils.scm
@@ -52,6 +52,7 @@
url-fetch
guix-hash-url
+ package-names->package-inputs
maybe-inputs
maybe-native-inputs
package->definition
@@ -236,6 +237,9 @@ into a proper sentence and by using two spaces between sentences."
cleaned 'pre ". " 'post)))
(define* (package-names->package-inputs names #:optional (output #f))
+ "Given a list of PACKAGE-NAMES, and an optional OUTPUT, tries to generate a
+quoted list of inputs, as suitable to use in an 'inputs' field of a package
+definition."
(map (lambda (input)
(cons* input (list 'unquote (string->symbol input))
(or (and output (list output))
diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc
index 06bc7601b9..fe7bf79069 100644
--- a/nix/libstore/build.cc
+++ b/nix/libstore/build.cc
@@ -2348,7 +2348,7 @@ PathSet parseReferenceSpecifiers(const Derivation & drv, string attr)
else if (drv.outputs.find(*i) != drv.outputs.end())
result.insert(drv.outputs.find(*i)->second.path);
else throw BuildError(
- format("derivation contains an illegal reference specifier `%1%'")
+ format("derivation contains an invalid reference specifier `%1%'")
% *i);
}
return result;
diff --git a/nix/libstore/globals.cc b/nix/libstore/globals.cc
index 69f6d06563..6df20e7a52 100644
--- a/nix/libstore/globals.cc
+++ b/nix/libstore/globals.cc
@@ -196,7 +196,7 @@ string Settings::pack()
if (i->first.find('\n') != string::npos ||
i->first.find('=') != string::npos ||
i->second.find('\n') != string::npos)
- throw Error("illegal option name/value");
+ throw Error("invalid option name/value");
s += i->first; s += '='; s += i->second; s += '\n';
}
return s;
diff --git a/nix/libstore/store-api.cc b/nix/libstore/store-api.cc
index 709d17ea21..0de0b6b298 100644
--- a/nix/libstore/store-api.cc
+++ b/nix/libstore/store-api.cc
@@ -61,7 +61,7 @@ void checkStoreName(const string & name)
/* Disallow names starting with a dot for possible security
reasons (e.g., "." and ".."). */
if (string(name, 0, 1) == ".")
- throw Error(format("illegal name: `%1%'") % name);
+ throw Error(format("invalid name: `%1%'") % name);
foreach (string::const_iterator, i, name)
if (!((*i >= 'A' && *i <= 'Z') ||
(*i >= 'a' && *i <= 'z') ||
diff --git a/tests/crate.scm b/tests/crate.scm
index a1dcfd5e52..a4a328d507 100644
--- a/tests/crate.scm
+++ b/tests/crate.scm
@@ -89,9 +89,9 @@
('base32
(? string? hash)))))
('build-system 'cargo-build-system)
- ('inputs
+ ('arguments
('quasiquote
- (("rust-bar" ('unquote 'rust-bar) "src"))))
+ (('#:cargo-inputs (("rust-bar" ('unquote rust-bar)))))))
('home-page "http://example.com")
('synopsis "summary")
('description "summary")
diff --git a/tests/hackage.scm b/tests/hackage.scm
index 38a5825af7..14176b2cf9 100644
--- a/tests/hackage.scm
+++ b/tests/hackage.scm
@@ -274,6 +274,51 @@ executable cabal
(test-assert "hackage->guix-package test multiline desc (braced)"
(eval-test-with-cabal test-cabal-multiline-braced match-ghc-foo))
+;; Check Hackage Cabal revisions.
+(define test-cabal-revision
+ "name: foo
+version: 1.0.0
+x-revision: 2
+homepage: http://test.org
+synopsis: synopsis
+description: description
+license: BSD3
+executable cabal
+ build-depends:
+ HTTP >= 4000.2.5 && < 4000.3,
+ mtl >= 2.0 && < 3
+")
+
+(define-package-matcher match-ghc-foo-revision
+ ('package
+ ('name "ghc-foo")
+ ('version "1.0.0")
+ ('source
+ ('origin
+ ('method 'url-fetch)
+ ('uri ('string-append
+ "https://hackage.haskell.org/package/foo/foo-"
+ 'version
+ ".tar.gz"))
+ ('sha256
+ ('base32
+ (? string? hash)))))
+ ('build-system 'haskell-build-system)
+ ('inputs
+ ('quasiquote
+ (("ghc-http" ('unquote 'ghc-http)))))
+ ('arguments
+ ('quasiquote
+ ('#:cabal-revision
+ ("2" "0xxd88fb659f0krljidbvvmkh9ppjnx83j0nqzx8whcg4n5qbyng"))))
+ ('home-page "http://test.org")
+ ('synopsis (? string?))
+ ('description (? string?))
+ ('license 'bsd-3)))
+
+(test-assert "hackage->guix-package test cabal revision"
+ (eval-test-with-cabal test-cabal-revision match-ghc-foo-revision))
+
(test-assert "read-cabal test 1"
(match (call-with-input-string test-read-cabal-1 read-cabal)
((("name" ("test-me"))