aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.mailmap2
-rw-r--r--HACKING2
-rw-r--r--Makefile.am4
-rw-r--r--doc/guix.texi27
-rw-r--r--gnu/local.mk12
-rw-r--r--gnu/packages/admin.scm28
-rw-r--r--gnu/packages/algebra.scm19
-rw-r--r--gnu/packages/aspell.scm18
-rw-r--r--gnu/packages/audio.scm4
-rw-r--r--gnu/packages/bittorrent.scm4
-rw-r--r--gnu/packages/bootloaders.scm3
-rw-r--r--gnu/packages/busybox.scm13
-rw-r--r--gnu/packages/cdrom.scm6
-rw-r--r--gnu/packages/chemistry.scm44
-rw-r--r--gnu/packages/ci.scm7
-rw-r--r--gnu/packages/compression.scm37
-rw-r--r--gnu/packages/crypto.scm88
-rw-r--r--gnu/packages/cups.scm35
-rw-r--r--gnu/packages/databases.scm5
-rw-r--r--gnu/packages/dav.scm40
-rw-r--r--gnu/packages/debian.scm15
-rw-r--r--gnu/packages/display-managers.scm8
-rw-r--r--gnu/packages/ebook.scm4
-rw-r--r--gnu/packages/elixir.scm6
-rw-r--r--gnu/packages/emacs.scm288
-rw-r--r--gnu/packages/erlang.scm7
-rw-r--r--gnu/packages/finance.scm96
-rw-r--r--gnu/packages/fltk.scm26
-rw-r--r--gnu/packages/fontutils.scm9
-rw-r--r--gnu/packages/game-development.scm40
-rw-r--r--gnu/packages/games.scm196
-rw-r--r--gnu/packages/geo.scm2
-rw-r--r--gnu/packages/ghostscript.scm11
-rw-r--r--gnu/packages/gimp.scm6
-rw-r--r--gnu/packages/gnu-pw-mgr.scm4
-rw-r--r--gnu/packages/gnunet.scm4
-rw-r--r--gnu/packages/golang.scm383
-rw-r--r--gnu/packages/graphics.scm30
-rw-r--r--gnu/packages/guile.scm585
-rw-r--r--gnu/packages/image-viewers.scm4
-rw-r--r--gnu/packages/java.scm52
-rw-r--r--gnu/packages/julia.scm2
-rw-r--r--gnu/packages/kodi.scm2
-rw-r--r--gnu/packages/libusb.scm4
-rw-r--r--gnu/packages/linux.scm67
-rw-r--r--gnu/packages/mail.scm4
-rw-r--r--gnu/packages/maths.scm32
-rw-r--r--gnu/packages/maven.scm2
-rw-r--r--gnu/packages/messaging.scm16
-rw-r--r--gnu/packages/music.scm89
-rw-r--r--gnu/packages/networking.scm4
-rw-r--r--gnu/packages/package-management.scm13
-rw-r--r--gnu/packages/patches/file-CVE-2017-1000249.patch27
-rw-r--r--gnu/packages/patches/fltk-shared-lib-defines.patch51
-rw-r--r--gnu/packages/patches/fltk-xfont-on-demand.patch45
-rw-r--r--gnu/packages/patches/ghostscript-CVE-2018-10194.patch52
-rw-r--r--gnu/packages/patches/monero-use-system-miniupnpc.patch111
-rw-r--r--gnu/packages/patches/openbabel-fix-crash-on-nwchem-output.patch34
-rw-r--r--gnu/packages/patches/python-cairocffi-dlopen-path.patch10
-rw-r--r--gnu/packages/patches/syncthing-fix-crash.patch72
-rwxr-xr-xgnu/packages/patches/twinkle-include-qregexpvalidator.patch123
-rw-r--r--gnu/packages/patches/xorg-server-rotate-fb.patch35
-rw-r--r--gnu/packages/pdf.scm19
-rw-r--r--gnu/packages/photo.scm4
-rw-r--r--gnu/packages/php.scm12
-rw-r--r--gnu/packages/python-crypto.scm15
-rw-r--r--gnu/packages/python.scm59
-rw-r--r--gnu/packages/ruby.scm51
-rw-r--r--gnu/packages/rust.scm24
-rw-r--r--gnu/packages/scanner.scm3
-rw-r--r--gnu/packages/sdl.scm4
-rw-r--r--gnu/packages/statistics.scm20
-rw-r--r--gnu/packages/stb.scm103
-rw-r--r--gnu/packages/syncthing.scm18
-rw-r--r--gnu/packages/telephony.scm2
-rw-r--r--gnu/packages/tls.scm6
-rw-r--r--gnu/packages/tor.scm6
-rw-r--r--gnu/packages/video.scm61
-rw-r--r--gnu/packages/web-browsers.scm68
-rw-r--r--gnu/packages/web.scm41
-rw-r--r--gnu/packages/wine.scm6
-rw-r--r--gnu/packages/xorg.scm69
-rw-r--r--gnu/services/cuirass.scm12
-rw-r--r--gnu/services/ssh.scm2
-rw-r--r--gnu/system/install.scm7
-rw-r--r--gnu/system/shadow.scm12
-rw-r--r--guix/build-system/guile.scm202
-rw-r--r--guix/build/go-build-system.scm38
-rw-r--r--guix/build/guile-build-system.scm153
-rw-r--r--guix/build/ruby-build-system.scm111
-rw-r--r--guix/gexp.scm145
-rw-r--r--guix/hash.scm7
-rw-r--r--guix/import/pypi.scm10
-rw-r--r--guix/packages.scm3
-rw-r--r--guix/scripts/pack.scm5
-rw-r--r--guix/self.scm57
-rw-r--r--guix/serialization.scm140
-rw-r--r--guix/store.scm100
-rw-r--r--guix/store/database.scm8
-rw-r--r--guix/store/deduplication.scm54
-rw-r--r--guix/utils.scm7
-rw-r--r--srfi/srfi-64.scm41
-rw-r--r--srfi/srfi-64.upstream.scm1040
-rw-r--r--tests/gexp.scm31
-rw-r--r--tests/hash.scm4
-rw-r--r--tests/nar.scm62
-rw-r--r--tests/pypi.scm6
-rw-r--r--tests/store-database.scm7
-rw-r--r--tests/store.scm46
109 files changed, 3461 insertions, 2409 deletions
diff --git a/.mailmap b/.mailmap
index 4f672f3278..6188162c62 100644
--- a/.mailmap
+++ b/.mailmap
@@ -43,6 +43,7 @@ Mathieu Lirzin <mthl@gnu.org> <mathieu.lirzin@openmailbox.org>
Mathieu Othacehe <m.othacehe@gmail.com>
Nikita Karetnikov <nikita@karetnikov.org> <nikita.karetnikov@gmail.com>
Nils Gillmann <ng0@n0.is> ng0 <ng0@n0.is>
+Nils Gillmann <ng0@n0.is> Nils Gillmann <gillmann@infotropique.org>
Nils Gillmann <ng0@n0.is> ng0 <ng0@crash.cx>
Nils Gillmann <ng0@n0.is> ng0 <ng0@crash.cx>
Nils Gillmann <ng0@n0.is> <ng0@infotropique.org>
@@ -55,6 +56,7 @@ Nils Gillmann <ng0@n0.is> <ngillmann@runbox.com>
Nils Gillmann <ng0@n0.is> <niasterisk@grrlz.net>
Nils Gillmann <ng0@n0.is> <ng@niasterisk.space>
Nils Gillmann <ng0@n0.is> <ng0@libertad.pw>
+Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
Pjotr Prins <pjotr.guix@thebird.nl> <pjotr.public01@thebird.nl>
Pjotr Prins <pjotr.guix@thebird.nl> <pjotr.public12@thebird.nl>
Pjotr Prins <pjotr.guix@thebird.nl> <pjotr.public12@email>
diff --git a/HACKING b/HACKING
index d1a26d2d64..f68753fee9 100644
--- a/HACKING
+++ b/HACKING
@@ -27,7 +27,7 @@ mailing list. When you get commit access, please make sure to follow the
policy below (discussions of the policy can take place on guix-devel@gnu.org.)
Non-trivial patches should always be posted to guix-patches@gnu.org (trivial
-patches include fixing typos, etc.) This mailing list fills the
+patches include fixing typos, etc.). This mailing list fills the
patch-tracking database at [[https://bugs.gnu.org/guix-patches]]; see
"Contributing" in the manual for details.
diff --git a/Makefile.am b/Makefile.am
index 134ab0f142..b4cd07ed22 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -111,6 +111,7 @@ MODULES = \
guix/build-system/asdf.scm \
guix/build-system/glib-or-gtk.scm \
guix/build-system/gnu.scm \
+ guix/build-system/guile.scm \
guix/build-system/haskell.scm \
guix/build-system/perl.scm \
guix/build-system/python.scm \
@@ -149,6 +150,7 @@ MODULES = \
guix/build/glib-or-gtk-build-system.scm \
guix/build/gnu-build-system.scm \
guix/build/gnu-dist.scm \
+ guix/build/guile-build-system.scm \
guix/build/perl-build-system.scm \
guix/build/python-build-system.scm \
guix/build/ocaml-build-system.scm \
@@ -498,8 +500,6 @@ EXTRA_DIST += \
build-aux/run-system-tests.scm \
d3.v3.js \
graph.js \
- srfi/srfi-64.scm \
- srfi/srfi-64.upstream.scm \
tests/test.drv \
tests/signing-key.pub \
tests/signing-key.sec \
diff --git a/doc/guix.texi b/doc/guix.texi
index c759ccb119..2df4064524 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -4045,6 +4045,21 @@ specified with the @code{#:glib} parameter.
Both phases are executed after the @code{install} phase.
@end defvr
+@defvr {Scheme Variable} guile-build-system
+This build system is for Guile packages that consist exclusively of Scheme
+code and that are so lean that they don't even have a makefile, let alone a
+@file{configure} script. It compiles Scheme code using @command{guild
+compile} (@pxref{Compilation,,, guile, GNU Guile Reference Manual}) and
+installs the @file{.scm} and @file{.go} files in the right place. It also
+installs documentation.
+
+This build system supports cross-compilation by using the @code{--target}
+option of @command{guild compile}.
+
+Packages built with @code{guile-build-system} must provide a Guile package in
+their @code{native-inputs} field.
+@end defvr
+
@defvr {Scheme Variable} minify-build-system
This variable is exported by @code{(guix build-system minify)}. It
implements a minification procedure for simple JavaScript packages.
@@ -12141,7 +12156,7 @@ secure connections to the print server.
Suppose you want to enable the Web interface of CUPS and also add
support for Epson printers @i{via} the @code{escpr} package and for HP
-printers @i{via} the @code{hplip} package. You can do that directly,
+printers @i{via} the @code{hplip-minimal} package. You can do that directly,
like this (you need to use the @code{(gnu packages cups)} module):
@example
@@ -12149,9 +12164,13 @@ like this (you need to use the @code{(gnu packages cups)} module):
(cups-configuration
(web-interface? #t)
(extensions
- (list cups-filters escpr hplip))))
+ (list cups-filters escpr hplip-minimal))))
@end example
+Note: If you wish to use the Qt5 based GUI which comes with the hplip
+package then it is suggested that you install the @code{hplip} package,
+either in your OS configuration file or as your user.
+
The available configuration parameters follow. Each parameter
definition is preceded by its type; for example, @samp{string-list foo}
indicates that the @code{foo} parameter should be specified as a list of
@@ -17742,10 +17761,6 @@ Only evaluate specifications and build derivations once.
When substituting a pre-built binary fails, fall back to building
packages locally.
-@item @code{load-path} (default: @code{'()})
-This allows users to define their own packages and make them visible to
-cuirass as in @command{guix build} command.
-
@item @code{cuirass} (default: @code{cuirass})
The Cuirass package to use.
@end table
diff --git a/gnu/local.mk b/gnu/local.mk
index ea066aa718..612304bad9 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -18,6 +18,7 @@
# Copyright © 2017, 2018 Gábor Boskovits <boskovits@gmail.com>
# Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
# Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
+# Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
#
# This file is part of GNU Guix.
#
@@ -403,6 +404,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/sssd.scm \
%D%/packages/stalonetray.scm \
%D%/packages/statistics.scm \
+ %D%/packages/stb.scm \
%D%/packages/storage.scm \
%D%/packages/suckless.scm \
%D%/packages/swig.scm \
@@ -671,13 +673,10 @@ dist_patch_DATA = \
%D%/packages/patches/fcgi-2.4.0-poll.patch \
%D%/packages/patches/fifo-map-fix-flags-for-gcc.patch \
%D%/packages/patches/fifo-map-remove-catch.hpp.patch \
- %D%/packages/patches/file-CVE-2017-1000249.patch \
%D%/packages/patches/findutils-localstatedir.patch \
%D%/packages/patches/findutils-test-xargs.patch \
%D%/packages/patches/flann-cmake-3.11.patch \
%D%/packages/patches/flint-ldconfig.patch \
- %D%/packages/patches/fltk-shared-lib-defines.patch \
- %D%/packages/patches/fltk-xfont-on-demand.patch \
%D%/packages/patches/foomatic-filters-CVE-2015-8327.patch \
%D%/packages/patches/foomatic-filters-CVE-2015-8560.patch \
%D%/packages/patches/freeimage-CVE-2015-0852.patch \
@@ -716,6 +715,7 @@ dist_patch_DATA = \
%D%/packages/patches/geoclue-config.patch \
%D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \
%D%/packages/patches/ghc-dont-pass-linker-flags-via-response-files.patch \
+ %D%/packages/patches/ghostscript-CVE-2018-10194.patch \
%D%/packages/patches/ghostscript-no-header-id.patch \
%D%/packages/patches/ghostscript-no-header-uuid.patch \
%D%/packages/patches/ghostscript-no-header-creationdate.patch \
@@ -942,6 +942,7 @@ dist_patch_DATA = \
%D%/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch \
%D%/packages/patches/mpc123-initialize-ao.patch \
%D%/packages/patches/module-init-tools-moduledir.patch \
+ %D%/packages/patches/monero-use-system-miniupnpc.patch \
%D%/packages/patches/mongodb-support-unknown-linux-distributions.patch \
%D%/packages/patches/mozjs17-aarch64-support.patch \
%D%/packages/patches/mozjs24-aarch64-support.patch \
@@ -979,6 +980,7 @@ dist_patch_DATA = \
%D%/packages/patches/ocaml-graph-honor-source-date-epoch.patch \
%D%/packages/patches/omake-fix-non-determinism.patch \
%D%/packages/patches/ola-readdir-r.patch \
+ %D%/packages/patches/openbabel-fix-crash-on-nwchem-output.patch \
%D%/packages/patches/opencascade-oce-glibc-2.26.patch \
%D%/packages/patches/openblas-fix-tests-i686.patch \
%D%/packages/patches/openexr-missing-samples.patch \
@@ -1060,6 +1062,7 @@ dist_patch_DATA = \
%D%/packages/patches/python-3-search-paths.patch \
%D%/packages/patches/python-3-fix-tests.patch \
%D%/packages/patches/python-axolotl-AES-fix.patch \
+ %D%/packages/patches/python-cairocffi-dlopen-path.patch \
%D%/packages/patches/python-dendropy-fix-tests.patch \
%D%/packages/patches/python-fix-tests.patch \
%D%/packages/patches/python-genshi-add-support-for-python-3.4-AST.patch \
@@ -1136,7 +1139,6 @@ dist_patch_DATA = \
%D%/packages/patches/superlu-dist-scotchmetis.patch \
%D%/packages/patches/swish-e-search.patch \
%D%/packages/patches/swish-e-format-security.patch \
- %D%/packages/patches/syncthing-fix-crash.patch \
%D%/packages/patches/synfigstudio-fix-ui-with-gtk3.patch \
%D%/packages/patches/t1lib-CVE-2010-2642.patch \
%D%/packages/patches/t1lib-CVE-2011-0764.patch \
@@ -1162,6 +1164,7 @@ dist_patch_DATA = \
%D%/packages/patches/tophat-build-with-later-seqan.patch \
%D%/packages/patches/totem-meson-easy-codec.patch \
%D%/packages/patches/tuxpaint-stamps-path.patch \
+ %D%/packages/patches/twinkle-include-qregexpvalidator.patch \
%D%/packages/patches/unrtf-CVE-2016-10091.patch \
%D%/packages/patches/unzip-CVE-2014-8139.patch \
%D%/packages/patches/unzip-CVE-2014-8140.patch \
@@ -1230,6 +1233,7 @@ dist_patch_DATA = \
%D%/packages/patches/xinetd-fix-fd-leak.patch \
%D%/packages/patches/xinetd-CVE-2013-4342.patch \
%D%/packages/patches/xmodmap-asprintf.patch \
+ %D%/packages/patches/xorg-server-rotate-fb.patch \
%D%/packages/patches/zathura-pdf-mupdf-link-to-jpeg-libraries.patch \
%D%/packages/patches/zathura-plugindir-environment-variable.patch \
%D%/packages/patches/zstd-fix-stdin-list-without-tty.patch \
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index e80436e95c..29651f7c48 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -46,6 +46,7 @@
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system meson)
#:use-module (guix build-system perl)
#:use-module (guix build-system python)
#:use-module (guix build-system trivial)
@@ -2740,3 +2741,30 @@ support forum. It runs with the @code{/exec} command in most IRC clients.")
;; perl-xml-dumper
;; ipmitool
,@(package-inputs inxi-minimal)))))
+
+(define-public pscircle
+ (package
+ (name "pscircle")
+ (version "1.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://gitlab.com/mildlyparallel/pscircle/-/archive/v"
+ version "/pscircle-v" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1k757yf2bmgfrjd417l6kpcf83hlvi0z1791vz967mwcklrsb3fj"))))
+ (build-system meson-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("cairo" ,cairo)
+ ("libpng" ,libpng)
+ ("libx11" ,libx11)))
+ (home-page "https://gitlab.com/mildlyparallel/pscircle")
+ (synopsis "Visualize Linux processes in a form of radial tree")
+ (description
+ "@code{pscircle} visualizes Linux processes in the form of a radial tree.")
+ (license license:gpl2+)))
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index d03b675f3a..c889433b41 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -139,7 +139,7 @@ solve the shortest vector problem.")
(define-public pari-gp
(package
(name "pari-gp")
- (version "2.9.4")
+ (version "2.11.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -147,7 +147,7 @@ solve the shortest vector problem.")
version ".tar.gz"))
(sha256
(base32
- "0ir6m3a8r46md5x6zk4xf159qra7aqparby9zk03k81hjrrxr72g"))))
+ "18f9yj8ffn3dxignbxj1x36771zbxy4js0r18mv6831ymb6cld9q"))))
(build-system gnu-build-system)
(native-inputs `(("texlive" ,texlive-tiny)))
(inputs `(("gmp" ,gmp)
@@ -179,7 +179,7 @@ PARI is also available as a C library to allow for faster computations.")
(define-public gp2c
(package
(name "gp2c")
- (version "0.0.10")
+ (version "0.0.11")
(source (origin
(method url-fetch)
(uri (string-append
@@ -187,7 +187,7 @@ PARI is also available as a C library to allow for faster computations.")
version ".tar.gz"))
(sha256
(base32
- "1xhpz5p81iw261ay1kip283ggr0ir8ydz8qx3v24z8jfms1r3y70"))))
+ "1z69xj2dpd8yyi8108rz26c50xpv0k2j8qnk0bzy1c5lw3pd1adm"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl)))
(inputs `(("pari-gp" ,pari-gp)))
@@ -315,7 +315,7 @@ fast arithmetic.")
(define-public arb
(package
(name "arb")
- (version "2.13.0")
+ (version "2.14.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -324,7 +324,7 @@ fast arithmetic.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "123p3gwx0s3i88rcaj3g4jl37cr3pywhpqackipskzab15ni2xfh"))))
+ "0ncr27nd20xxi18nj30cvpa6r52v59nq7gbi34x3l4xym3p8mlmx"))))
(build-system gnu-build-system)
(propagated-inputs
`(("flint" ,flint))) ; flint.h is included by arf.h
@@ -342,19 +342,18 @@ fast arithmetic.")
(mpfr (assoc-ref inputs "mpfr")))
;; do not pass "--enable-fast-install", which makes the
;; homebrew configure process fail
- (zero? (system*
- "./configure"
+ (invoke "./configure"
(string-append "--prefix=" out)
(string-append "--with-flint=" flint)
(string-append "--with-gmp=" gmp)
- (string-append "--with-mpfr=" mpfr)))))))))
+ (string-append "--with-mpfr=" mpfr))))))))
(synopsis "Arbitrary precision floating-point ball arithmetic")
(description
"Arb is a C library for arbitrary-precision floating-point ball
arithmetic. It supports efficient high-precision computation with
polynomials, power series, matrices and special functions over the
real and complex numbers, with automatic, rigorous error control.")
- (license license:gpl2+)
+ (license license:lgpl2.1+)
(home-page "http://fredrikj.net/arb/")))
(define-public ntl
diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm
index 1e2149cd2c..993dc560eb 100644
--- a/gnu/packages/aspell.scm
+++ b/gnu/packages/aspell.scm
@@ -27,6 +27,7 @@
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix licenses)
+ #:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
@@ -49,6 +50,19 @@
(arguments
`(#:phases
(modify-phases %standard-phases
+ (add-before 'build 'set-filter-path
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Change the default value of 'filter-path' so that filters such
+ ;; as 'tex-filter.so' can be found. By default none of the
+ ;; filters would be found.
+ (let* ((out (assoc-ref outputs "out"))
+ (libdir (string-append out "/lib/aspell-"
+ ,(version-major+minor version))))
+ (substitute* "common/config.cpp"
+ (("\"filter-path(.*)DICT_DIR" _ middle)
+ (string-append "\"filter-path" middle
+ "\"" libdir "\"")))
+ #t)))
(add-after 'install 'wrap-aspell
(lambda* (#:key outputs #:allow-other-keys)
(let ((bin/aspell (string-append (assoc-ref outputs "out")
@@ -141,10 +155,10 @@ dictionaries, including personal ones.")
(define-public aspell-dict-en
(aspell-dictionary "en" "English"
- #:version "2017.08.24-0"
+ #:version "2018.04.16-0"
#:sha256
(base32
- "0z2vvm1by485cm0sna21cmw6zb771c2l2lnn676zmrwm46q65d89")))
+ "0bxxdzkk9g27plg22y9qzsx9cfjw3aa29w5bmzs561qc9gkp247i")))
(define-public aspell-dict-eo
(aspell-dictionary "eo" "Esperanto"
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 98f66aae88..58d67f2ebb 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -2505,7 +2505,7 @@ encode and decode wavpack files.")
(define-public libmodplug
(package
(name "libmodplug")
- (version "0.8.8.5")
+ (version "0.8.9.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -2513,7 +2513,7 @@ encode and decode wavpack files.")
name "/" version "/" name "-" version ".tar.gz"))
(sha256
(base32
- "1bfsladg7h6vnii47dd66f5vh1ir7qv12mfb8n36qiwrxq92sikp"))))
+ "1pnri98a603xk47smnxr551svbmgbzcw018mq1k6srbrq6kaaz25"))))
(build-system gnu-build-system)
(home-page "http://modplug-xmms.sourceforge.net/")
(synopsis "Mod file playing library")
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index a9d62a5664..ce1e93ef00 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -373,7 +373,7 @@ and will take advantage of multiple processor cores where possible.")
(define-public libtorrent-rasterbar
(package
(name "libtorrent-rasterbar")
- (version "1.1.7")
+ (version "1.1.8")
(source (origin
(method url-fetch)
(uri
@@ -383,7 +383,7 @@ and will take advantage of multiple processor cores where possible.")
"/libtorrent-rasterbar-" version ".tar.gz"))
(sha256
(base32
- "1agkcyjs7xscx4sgkg2ri4nm4v736xsg3br2v8jcrph86dlbycw1"))))
+ "0pcdy26l5ivcs78y2bqh2qca83ikzjfchw5815xh69qf8g88zgvb"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 7599f4ac25..792fc4ae2f 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -580,6 +580,9 @@ board-independent tools.")))
(define-public u-boot-cubieboard
(make-u-boot-package "Cubieboard" "arm-linux-gnueabihf"))
+(define-public u-boot-cubietruck
+ (make-u-boot-package "Cubietruck" "arm-linux-gnueabihf"))
+
(define-public u-boot-puma-rk3399
(let ((base (make-u-boot-package "puma-rk3399" "aarch64-linux-gnu")))
(package
diff --git a/gnu/packages/busybox.scm b/gnu/packages/busybox.scm
index 4cdea3a294..480b777574 100644
--- a/gnu/packages/busybox.scm
+++ b/gnu/packages/busybox.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 John Darrington <jmd@gnu.org>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
@@ -31,7 +31,7 @@
(define-public busybox
(package
(name "busybox")
- (version "1.26.2")
+ (version "1.29.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -39,11 +39,18 @@
version ".tar.bz2"))
(sha256
(base32
- "05mg6rh5smkzfwqfcazkpwy6h6555llsazikqnvwkaf17y8l8gns"))))
+ "1hqlr5b3bsyb6avadz1z4za6pyl32r1krnpcpwwqilhnx8q0f9gw"))))
(build-system gnu-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
+ (add-before 'configure 'disable-taskset
+ ;; This feature fails its tests in the build environment,
+ ;; was default 'n' until after 1.26.2.
+ (lambda _
+ (substitute* "util-linux/taskset.c"
+ (("default y") "default n"))
+ #t))
(replace 'configure
(lambda _ (invoke "make" "defconfig")))
(replace 'check
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 027a333d67..384fc57317 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -418,7 +418,7 @@ graphical interface.")
(define-public libcue
(package
(name "libcue")
- (version "2.2.0")
+ (version "2.2.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -427,8 +427,10 @@ graphical interface.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0y9808vbly1w6i3diaad9csjmmw6iaw572wjjr68ssqamsw193rj"))))
+ "000j5xqp7cc7njwlixr9byahz9kn8pcfdgm76afwv4p8nbmw6yzj"))))
(build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
(native-inputs
`(("bison" ,bison)
("flex" ,flex)))
diff --git a/gnu/packages/chemistry.scm b/gnu/packages/chemistry.scm
index 1a5086d622..2d7cb7aad1 100644
--- a/gnu/packages/chemistry.scm
+++ b/gnu/packages/chemistry.scm
@@ -21,10 +21,15 @@
#:use-module (guix packages)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix download)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages algebra)
#:use-module (gnu packages compression)
#:use-module (gnu packages gv)
#:use-module (gnu packages maths)
+ #:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
+ #:use-module (gnu packages xml)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python))
@@ -198,3 +203,42 @@ neutron scattering spectra, but also computes other quantities. The software
is currently not actively maintained and works only with Python 2 and
NumPy < 1.9.")
(license license:cecill)))
+
+(define-public openbabel
+ (package
+ (name "openbabel")
+ (version "2.4.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/" name "/" name "/"
+ version "/" name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1z3d6xm70dpfikhwdnbzc66j2l49vq105ch041wivrfz5ic3ch90"))
+ (patches
+ (search-patches "openbabel-fix-crash-on-nwchem-output.patch"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ (list "-DOPENBABEL_USE_SYSTEM_INCHI=ON"
+ (string-append "-DINCHI_LIBRARY="
+ (assoc-ref %build-inputs "inchi")
+ "/lib/inchi/libinchi.so.1")
+ (string-append "-DINCHI_INCLUDE_DIR="
+ (assoc-ref %build-inputs "inchi") "/include/inchi"))
+ #:test-target "test"))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("eigen" ,eigen)
+ ("inchi" ,inchi)
+ ("libxml2" ,libxml2)
+ ("zlib" ,zlib)))
+ (home-page "http://openbabel.org/wiki/Main_Page")
+ (synopsis "Chemistry data manipulation toolbox")
+ (description
+ "Open Babel is a chemical toolbox designed to speak the many languages of
+chemical data. It's a collaborative project allowing anyone to search, convert,
+analyze, or store data from molecular modeling, chemistry, solid-state
+materials, biochemistry, or related areas.")
+ (license license:gpl2)))
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index ba95dc174b..85dbefae7a 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2016, 2017 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -184,8 +185,8 @@ their dependencies.")
(license l:gpl3+))))
(define-public cuirass
- (let ((commit "238f856e48ee333ed3e19fa32ce5e1742c650c67")
- (revision "16"))
+ (let ((commit "7b2f9e0de1ad2d320973b7aea132a8afcad8bece")
+ (revision "17"))
(package
(name "cuirass")
(version (string-append "0.0.1-" revision "." (string-take commit 7)))
@@ -197,7 +198,7 @@ their dependencies.")
(file-name (string-append name "-" version))
(sha256
(base32
- "15iwdgy561gnsr224rs5z8qn7nrsh1wdlsxr8gwxyk0v4zp6yvbf"))))
+ "0knww99adgjh8s6f38z3hpwi9hxhmnvqj5g35pcj80xv8j4xj3y3"))))
(build-system gnu-build-system)
(arguments
'(#:modules ((guix build utils)
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 0d73886109..2e62cd76ea 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -981,6 +981,43 @@ provides encoder and a decoder libraries: libbrotlienc and libbrotlidec,
respectively, based on the reference implementation from Google.")
(license license:expat))))
+(define-public bsdiff
+ (package
+ (name "bsdiff")
+ (version "4.3")
+ (home-page "https://www.daemonology.net/bsdiff/")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append home-page name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0j2zm3z271x5aw63mwhr3vymzn45p2vvrlrpm9cz2nywna41b0hq"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags (list "INSTALL=install" "CC=gcc"
+ (string-append "PREFIX=" (assoc-ref %outputs "out")))
+ #:phases (modify-phases %standard-phases
+ (delete 'configure)
+ (add-before 'build 'fix-Makefile
+ (lambda _
+ (substitute* "Makefile"
+ ;; Adjust syntax to make it compatible with GNU Make.
+ (("^\\.") "")
+ ;; Help install(1) create the target directory.
+ (("\\$\\{PREFIX\\}") "-D -t ${PREFIX}"))
+ #t)))
+ #:tests? #f)) ;no tests
+ (inputs
+ `(("bzip2" ,bzip2)))
+ (synopsis "Patch binary files")
+ (description
+ "@command{bsdiff} and @command{bspatch} are tools for building and
+applying patches to binary files. By using suffix sorting (specifically
+Larsson and Sadakane's @code{qsufsort}) and taking advantage of how
+executable files change, bsdiff routinely produces binary patches 50-80%
+smaller than those produced by @code{Xdelta}.")
+ (license license:bsd-2)))
+
(define-public cabextract
(package
(name "cabextract")
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index dd86843938..730895efd9 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -668,39 +668,32 @@ data on your platform, so the seed itself will be as random as possible.
(license (list license:boost1.0 license:public-domain))))
(define-public libb2
- (let ((revision "1") ; upstream doesn't ‘do’ releases
- (commit "60ea749837362c226e8501718f505ab138e5c19d"))
- (package
- (name "libb2")
- (version (git-version "0.0.0" revision commit))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/BLAKE2/libb2")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "07a2m8basxrsj9dsp5lj24y8jraj85lfy56756a7za1nfkgy04z7"))))
- (build-system gnu-build-system)
- (native-inputs
- `(("autoconf" ,autoconf)
- ("automake" ,automake)
- ("libtool" ,libtool)))
- (arguments
- `(#:configure-flags
- (list
- ,@(if (any (cute string-prefix? <> (or (%current-system)
- (%current-target-system)))
- '("x86_64" "i686"))
- ;; fat only checks for Intel optimisations
- '("--enable-fat")
- '())
- "--disable-native"))) ;don't optimise at build time
- (home-page "https://blake2.net/")
- (synopsis "Library implementing the BLAKE2 family of hash functions")
- (description
- "libb2 is a portable implementation of the BLAKE2 family of cryptographic
+ (package
+ (name "libb2")
+ (version "0.98")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/BLAKE2/libb2/releases/download/v"
+ version "/libb2-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0vq39cvwy05754l565xl11rqr2jvjb6ykjzca886vi9vm71y0sg8"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list
+ ,@(if (any (cute string-prefix? <> (or (%current-system)
+ (%current-target-system)))
+ '("x86_64" "i686"))
+ ;; fat only checks for Intel optimisations
+ '("--enable-fat")
+ '())
+ "--disable-native"))) ;don't optimise at build time
+ (home-page "https://blake2.net/")
+ (synopsis "Library implementing the BLAKE2 family of hash functions")
+ (description
+ "libb2 is a portable implementation of the BLAKE2 family of cryptographic
hash functions. It includes optimised implementations for IA-32 and AMD64
processors, and an interface layer that automatically selects the best
implementation for the processor it is run on.
@@ -709,7 +702,7 @@ implementation for the processor it is run on.
that are faster than MD5, SHA-1, SHA-2, and SHA-3, yet are at least as secure
as the latest standard, SHA-3. It is an improved version of the SHA-3 finalist
BLAKE.")
- (license license:public-domain))))
+ (license license:public-domain)))
(define-public rhash
(package
@@ -755,14 +748,14 @@ SHA256, SHA512, SHA3, AICH, ED2K, Tiger, DC++ TTH, BitTorrent BTIH, GOST R
(define-public botan
(package
(name "botan")
- (version "2.6.0")
+ (version "2.7.0")
(source (origin
(method url-fetch)
(uri (string-append "https://botan.randombit.net/releases/"
"Botan-" version ".tgz"))
(sha256
(base32
- "1iawmymmnp5j2mcjj70slivn6bgg8gbpppldc1rjqw5sbdan3wn1"))))
+ "142aqabwc266jxn8wrp0f1ffrmcvdxwvyh8frb38hx9iaqazjbg4"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@@ -797,3 +790,26 @@ specifically designed to be easy to call from other languages. A Python binding
using ctypes is included, and several other language bindings are available.")
(home-page "https://botan.randombit.net")
(license license:bsd-2)))
+
+(define-public ccrypt
+ (package
+ (name "ccrypt")
+ (version "1.10")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/ccrypt/ccrypt/"
+ version "/ccrypt-" version ".tar.gz"))
+ (sha256
+ (base32
+ "184v9676hx2w875cz04rd3a20wrcms33a1zwybvapb0g2yi6vml7"))))
+ (build-system gnu-build-system)
+ (home-page "http://ccrypt.sourceforge.net")
+ (synopsis "Command-line utility for encrypting and decrypting files and streams")
+ (description "@command{ccrypt} is a utility for encrypting and decrypting
+files and streams. It was designed as a replacement for the standard unix
+@command{crypt} utility, which is notorious for using a very weak encryption
+algorithm. @command{ccrypt} is based on the Rijndael block cipher, a version of
+which is also used in the Advanced Encryption Standard (AES, see
+@url{http://www.nist.gov/aes}). This cipher is believed to provide very strong
+security.")
+ (license license:gpl2)))
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index d365587022..04d4e3fadd 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 Mark H Weaver <mhw@netris.org>
@@ -46,7 +46,9 @@
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module ((guix licenses) #:prefix license:)
- #:use-module (guix packages))
+ #:use-module (guix packages)
+ #:use-module (guix utils)
+ #:use-module (srfi srfi-1))
(define-public cups-filters
(package
@@ -174,6 +176,7 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.")
(define-public cups-minimal
(package
(name "cups-minimal")
+ (replacement cups-minimal-2.2.8)
(version "2.2.6")
(source
(origin
@@ -234,8 +237,21 @@ describe printer capabilities and features, and a wide variety of generic and
device-specific programs to convert and print many types of files.")
(license license:gpl2)))
+(define-public cups-minimal-2.2.8
+ (package
+ (inherit cups-minimal)
+ (version "2.2.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/apple/cups/releases/download/v"
+ version "/cups-" version "-source.tar.gz"))
+ (sha256
+ (base32
+ "1r7r7b3nqpzc1a9dczqpj2mr8rkcwf01676v11sp4j7w4qfzqs1r"))))))
+
(define-public cups
- (package (inherit cups-minimal)
+ (package/inherit cups-minimal
(name "cups")
(arguments
`(;; Three tests fail:
@@ -506,6 +522,19 @@ device-specific programs to convert and print many types of files.")
`(("perl" ,perl)
("pkg-config" ,pkg-config)))))
+(define-public hplip-minimal
+ (package
+ (inherit hplip)
+ (name "hplip-minimal")
+ (arguments
+ (substitute-keyword-arguments (package-arguments hplip)
+ ((#:configure-flags cf)
+ ``(,@(delete "--enable-qt5" ,cf)))))
+ (inputs
+ `(,@(fold alist-delete (package-inputs hplip)
+ '("python-pygobject" "python-pyqt"))))
+ (synopsis "GUI-less version of hplip")))
+
(define-public foomatic-filters
(package
(name "foomatic-filters")
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 55979834c9..382c74cfd9 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -702,6 +702,7 @@ Language.")
as a drop-in replacement of MySQL.")
(license license:gpl2)))
+;; Don't forget to update the other postgresql packages when upgrading this one.
(define-public postgresql
(package
(name "postgresql")
@@ -750,14 +751,14 @@ pictures, sounds, or video.")
(package
(inherit postgresql)
(name "postgresql")
- (version "9.6.8")
+ (version "9.6.9")
(source (origin
(method url-fetch)
(uri (string-append "https://ftp.postgresql.org/pub/source/v"
version "/postgresql-" version ".tar.bz2"))
(sha256
(base32
- "0w7bwf19wbdd3jjbjv03cnx56qka4801srcbsayk9v792awv7zga"))))))
+ "0biy8j69dbvdmrag55pdszpc0702agzqhhcwdx21xp02mzim4ydr"))))))
(define-public qdbm
(package
diff --git a/gnu/packages/dav.scm b/gnu/packages/dav.scm
index 9d0479b1e1..1a154ea351 100644
--- a/gnu/packages/dav.scm
+++ b/gnu/packages/dav.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -57,31 +58,32 @@ clients.")
(define-public vdirsyncer
(package
(name "vdirsyncer")
- (version "0.16.6")
+ (version "0.16.7")
(source (origin
(method url-fetch)
(uri (pypi-uri name version))
(sha256
(base32
- "07iqq5c53cfrb5xnmam1rsl683hc3rykmdak896n2gm81r361c66"))))
+ "1vqjhn2bffy2bx45a1r14crsyn2cylf5by567g44c4mhpjwwz6vc"))))
(build-system python-build-system)
(arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (setenv "DETERMINISTIC_TESTS" "true")
- (setenv "DAV_SERVER" "radicale")
- (setenv "REMOTESTORAGE_SERVER" "skip")
- (zero? (system* "make" "test"))))
- (add-after 'install 'manpage
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (zero? (system* "make" "--directory=docs/" "man"))
- (install-file
- "docs/_build/man/vdirsyncer.1"
- (string-append
- (assoc-ref outputs "out")
- "/share/man/man1")))))))
+ `(#:phases (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (add-installed-pythonpath inputs outputs)
+ (setenv "DETERMINISTIC_TESTS" "true")
+ (setenv "DAV_SERVER" "radicale")
+ (setenv "REMOTESTORAGE_SERVER" "skip")
+ (invoke "make" "test")))
+ (add-after 'install 'manpage
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (invoke "make" "--directory=docs/" "man")
+ (install-file
+ "docs/_build/man/vdirsyncer.1"
+ (string-append
+ (assoc-ref outputs "out")
+ "/share/man/man1"))
+ #t)))))
(native-inputs
`(("python-setuptools-scm" ,python-setuptools-scm)
("python-sphinx" ,python-sphinx)
@@ -105,5 +107,5 @@ between two storage locations. The most popular purpose is to
synchronize a CalDAV or CardDAV server with a local folder or file. The
local data can then be accessed via a variety of programs, none of which
have to know or worry about syncing to a server.")
- (home-page "https://github.com/untitaker/vdirsyncer")
+ (home-page "https://github.com/pimutils/vdirsyncer")
(license bsd-3)))
diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm
index e1dd9d1485..1974672fb6 100644
--- a/gnu/packages/debian.scm
+++ b/gnu/packages/debian.scm
@@ -17,6 +17,7 @@
(define-module (gnu packages debian)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix download)
+ #:use-module (guix git-download)
#:use-module (guix packages)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
@@ -112,15 +113,17 @@ contains the archive keys used for that.")
(define-public debootstrap
(package
(name "debootstrap")
- (version "1.0.101")
+ (version "1.0.106")
(source
(origin
- (method url-fetch)
- (uri (string-append "mirror://debian/pool/main/d/" name "/"
- name "_" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://salsa.debian.org/installer-team/debootstrap.git")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
(base32
- "1p1a81s8hq73byd7256iljdls389x2q7w6srgrgfmx5bl1csnzp3"))))
+ "1fm5bgllcwgwizrqi4sn8p4fpbzhbzgwprrfppfq9hqdzbmlfmnv"))))
(build-system gnu-build-system)
(arguments
`(#:phases
@@ -165,7 +168,7 @@ contains the archive keys used for that.")
`(("binutils" ,binutils)
("gnupg" ,gnupg)
("perl" ,perl)))
- (home-page "https://anonscm.debian.org/cgit/d-i/debootstrap.git")
+ (home-page "https://tracker.debian.org/pkg/debootstrap")
(synopsis "Bootstrap a basic Debian system")
(description "Debootstrap is used to create a Debian base system from
scratch, without requiring the availability of @code{dpkg} or @code{apt}.
diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm
index 6e3d4912de..5baaa6c102 100644
--- a/gnu/packages/display-managers.scm
+++ b/gnu/packages/display-managers.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Joshua Grant <tadni@riseup.net>
-;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Sou Bunnbu <iyzsong@gmail.com>
@@ -134,7 +134,7 @@ Qt-style API for Wayland clients.")
(define-public sddm
(package
(name "sddm")
- (version "0.17.0")
+ (version "0.18.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -143,7 +143,7 @@ Qt-style API for Wayland clients.")
"sddm-" version ".tar.xz"))
(sha256
(base32
- "0ch6rdppgy2vbzw0c2x9a4c6ry46vx7p6b76d8xbh2nvxh23xv0k"))))
+ "0icyi9nqgbp2v6dwh3n3jzff9jv2xy8d4rbsz89hd65x7c3hrv87"))))
(build-system cmake-build-system)
(native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules)
@@ -256,7 +256,7 @@ create smooth, animated user interfaces.")
(inputs
`(("audit" ,audit)
("linux-pam" ,linux-pam)
- ("util-linux" ,util-linux) ; for sbin/nologin
+ ("shadow" ,shadow) ;for sbin/nologin
("libgcrypt" ,libgcrypt)
("libxcb" ,libxcb)))
(native-inputs
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index bf4b6a750e..a78e3e871f 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -75,7 +75,7 @@
(define-public calibre
(package
(name "calibre")
- (version "3.17.0")
+ (version "3.28.0")
(source
(origin
(method url-fetch)
@@ -84,7 +84,7 @@
version ".tar.xz"))
(sha256
(base32
- "1w6hw1s0d4daa4q2ykzhxdndiq61l8z7ls7rxh7k7p62ia0i5sxp"))
+ "0b3vv03c6m6972sk8zj3zc5sq6b9837irnfgjlqhv9z5i75m0414"))
;; Remove non-free or doubtful code, see
;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html
(modules '((guix build utils)))
diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm
index ed6bd00236..26120327f4 100644
--- a/gnu/packages/elixir.scm
+++ b/gnu/packages/elixir.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 nee <nee.git@cock.li>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright (C) 2018 Nils Gillmann <ng0@n0.is>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -32,7 +33,7 @@
(define-public elixir
(package
(name "elixir")
- (version "1.5.3")
+ (version "1.6.6")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/elixir-lang/elixir"
@@ -40,10 +41,11 @@
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0acnxfwvkx1m1d0h5z051mz95n35zm468hcvc3wpmn17c15h5ihg"))))
+ "0c9qz5hasa59a9x1iwpcqpqj6wdbzpijfxqfmzimwj5z8q37nl3l"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
+ #:parallel-tests? #f ;see <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32171#23>
#:make-flags (list (string-append "PREFIX="
(assoc-ref %outputs "out")))
#:phases
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 11cd244deb..eab31278a5 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -36,6 +36,8 @@
;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2018 Pierre Neidhardt <ambrevar@gmail.com>
;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
+;;; Copyright © 2018 Jack Hill <jackhill@jackhill.us>
+;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -107,6 +109,7 @@
#:use-module (gnu packages gd)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages password-utils)
+ #:use-module (gnu packages pulseaudio)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages shells)
#:use-module (gnu packages gnupg)
@@ -199,7 +202,7 @@
("libxft" ,libxft)
("libtiff" ,libtiff)
("giflib" ,giflib)
- ("libjpeg" ,libjpeg-8)
+ ("libjpeg" ,libjpeg)
("imagemagick" ,imagemagick)
("acl" ,acl)
@@ -4573,25 +4576,28 @@ Dust.js, React/JSX, Angularjs, ejs, etc.")
(license license:gpl3+)))
(define-public emacs-wgrep
- (package
- (name "emacs-wgrep")
- (version "2.1.10")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/mhayashi1120/Emacs-wgrep/archive/"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1r2bpypar70xg6dsx12x1k74f39ww930rday7rgqpyknzsx1k4l1"))))
- (build-system emacs-build-system)
- (home-page "https://github.com/mhayashi1120/Emacs-wgrep")
- (synopsis "Edit a grep buffer and apply those changes to the files")
- (description
- "Emacs wgrep allows you to edit a grep buffer and apply those changes to
-the file buffer.")
- (license license:gpl3+)))
+ (let ((commit "414be70bd313e482cd9f0b70fd2daad4ee23497c"))
+ ;; Late commit fixes compatibility issue with Emacs 26+.
+ (package
+ (name "emacs-wgrep")
+ (version (git-version "2.1.10" "1" commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mhayashi1120/Emacs-wgrep")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1sdhd587q3pg92lhiayph87azhalmf1gzrnsprkmqvnphv7mvks9"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/mhayashi1120/Emacs-wgrep")
+ (synopsis "Edit a grep buffer and apply those changes to the files")
+ (description
+ "Emacs wgrep allows you to edit a grep buffer and apply those changes
+to the file buffer. Several backends are supported beside the classic grep:
+ack, ag, helm and pt.")
+ (license license:gpl3+))))
(define-public emacs-helm
(package
@@ -4855,11 +4861,11 @@ extensions.")
(license license:gpl3+))))
(define-public emacs-evil-collection
- (let ((commit "ac21b8957cfc22485cdaa316384edf9cb220d837")
- (revision "1"))
+ (let ((commit "5d739f58118a5a316c4fe25adb4e13ccea3fdc10")
+ (revision "2"))
(package
(name "emacs-evil-collection")
- (version (git-version "20180617" revision commit))
+ (version (git-version "20180721" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
@@ -4868,7 +4874,7 @@ extensions.")
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "082a3c5c2ls9ryqrl5kzb4z6bcprhqx8pypnlj1razbld3lny934"))))
+ "05p612qncd0cp5q61hq2ag1k558vhb10049xrc88n9l6qwz9bpk3"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-evil" ,emacs-evil)))
@@ -6229,14 +6235,14 @@ which code derived from Kelvin H's org-page.")
(define-public emacs-xelb
(package
(name "emacs-xelb")
- (version "0.14")
+ (version "0.15")
(source (origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/xelb-"
version ".tar"))
(sha256
(base32
- "09flnbjy9ck784kprz036rwg9qk45hpv0w5hz3pz3zhwyk57fv74"))))
+ "031rvgprsqhf344p9wsczr50vj2qcpwdmhxi80jdbrsm7wyxf3qz"))))
(build-system emacs-build-system)
;; The following functions and variables needed by emacs-xelb are
;; not included in emacs-minimal:
@@ -6268,7 +6274,7 @@ It should enable you to implement low-level X11 applications.")
(define-public emacs-exwm
(package
(name "emacs-exwm")
- (version "0.18")
+ (version "0.19")
(synopsis "Emacs X window manager")
(source (origin
(method url-fetch)
@@ -6276,7 +6282,7 @@ It should enable you to implement low-level X11 applications.")
version ".tar"))
(sha256
(base32
- "1shz5bf4v4gg3arjaaldics5qkg3aiiaf3ngys8lb6qyxhcpvh6q"))))
+ "11xd2w4h3zdwkdxypvmcz8s7q72cn76lfr9js77jbizyj6b04lr0"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-xelb" ,emacs-xelb)))
@@ -7356,10 +7362,10 @@ messaging service.")
("bash-completion-prog" (string-append bash "/bin/bash"))))
#t)))))
(home-page "https://github.com/szermatt/emacs-bash-completion")
- (synopsis "BASH completion for the shell buffer")
+ (synopsis "Bash completion for the shell buffer")
(description
"@code{bash-completion} defines dynamic completion hooks for shell-mode
-and shell-command prompts that are based on bash completion.")
+and shell-command prompts that are based on Bash completion.")
(license license:gpl2+)))
(define-public emacs-easy-kill
@@ -8819,23 +8825,33 @@ navigate and display hierarchy structures.")
(license license:gpl3+))))
(define-public emacs-pulseaudio-control
- (let ((commit "08c59e1dc45ec96edb62f34036e82cf5f14c0e8b")
- (revision "1"))
+ (let ((commit "1da372ec79f5d2fb901d1f9f0679fee8848fd011")
+ (revision "2"))
(package
(name "emacs-pulseaudio-control")
- (version (string-append "0.0.1" "-" revision "."
- (string-take commit 7)))
+ (version (git-version "0.0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/flexibeast/pulseaudio-control.git")
(commit commit)))
- (file-name (string-append name "-" version "-checkout"))
+ (file-name (git-file-name name version))
(sha256
(base32
- "10cgg1r00kz2fsnnryvzay5pf8s1pwb1dzlds1fbjdnyfvdgammv"))))
+ "02xrsms2pjqdk6327midi61i5vg2h9cq5jwaxv43ldm68wl7hi6k"))))
(build-system emacs-build-system)
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (add-after 'unpack 'patch-file-name
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((pulseaudio (assoc-ref inputs "pulseaudio")))
+ (chmod "pulseaudio-control.el" #o600)
+ (emacs-substitute-variables "pulseaudio-control.el"
+ ("pulseaudio-control-pactl-path"
+ (string-append pulseaudio "/bin/pactl")))
+ #t))))))
+ (inputs `(("pulseaudio" ,pulseaudio)))
(home-page "https://github.com/flexibeast/pulseaudio-control")
(synopsis "Control @code{pulseaudio} from Emacs")
(description
@@ -10218,10 +10234,10 @@ keep Parens and Indentation inline with one another.")
(license license:gpl3+)))
(define-public emacs-helm-eww
- (let ((commit "5d6c2c66d4694415ef8a16a6d38a37aeae76c5ac"))
+ (let ((commit "1a09f11b2376dec8237df40140f056be8a256ef0"))
(package
(name "emacs-helm-eww")
- (version (git-version "0.1" "1" commit))
+ (version (git-version "0.1" "2" commit))
(source (origin
(method git-fetch)
(uri (git-reference
@@ -10230,7 +10246,7 @@ keep Parens and Indentation inline with one another.")
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "1x442ylrr7cx587s4rvfh187h3qbkr79qp95qr57a4igxkkw6183"))))
+ "1kqdjhz2xiqw3bxjhfl9namhqrkbc2x70gcv6ljljya5hbkm62sm"))))
(propagated-inputs
`(("emacs-helm" ,emacs-helm)))
(build-system emacs-build-system)
@@ -11083,10 +11099,10 @@ from @code{emms-source-file-default-directory}.")
(license license:gpl3+))))
(define-public emacs-helm-exwm
- (let ((commit "82a856c80c8d295e3be522a01c5a15af50d08990"))
+ (let ((commit "56266f261ba3b3d2753b374b50da20eb768c06f5"))
(package
(name "emacs-helm-exwm")
- (version (git-version "20180523" "1" commit))
+ (version (git-version "20180703" "2" commit))
(source
(origin
(method url-fetch)
@@ -11096,7 +11112,7 @@ from @code{emms-source-file-default-directory}.")
".tar.gz"))
(sha256
(base32
- "1xsg2lar1vh7jmj5lnnyi14vssxkgy95sv9r8pbfhbnkjkbjm9pb"))))
+ "0n7hdiajw5vxl8ha2r9r4cl4i7crza25348825wb6acwhhzijxcj"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-helm" ,emacs-helm)
@@ -11304,37 +11320,14 @@ file.")
(license license:gpl3+))))
(define-public emacs-wgrep-helm
- (let ((commit "1cdd7c136f1e7565bb13d2df69be3dc77b83698d"))
- (package
- (name "emacs-wgrep-helm")
- (version (git-version "2.1.10" "1" commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/mhayashi1120/Emacs-wgrep")
- (commit commit)))
- (file-name (string-append name "-" version "-checkout"))
- (sha256
- (base32
- "057p99hq0r6z1k8sl15w3sxrqvlv0g9wp39zy1pqhccv2mn3g2d6"))))
- (build-system emacs-build-system)
- (propagated-inputs
- `(("emacs-wgrep" ,emacs-wgrep)))
- (home-page
- "https://github.com/mhayashi1120/Emacs-wgrep")
- (synopsis
- "Writable helm-grep-mode buffer and apply the changes to files")
- (description
- "@code{wgrep-helm} allows you to edit a @code{helm-grep-mode} buffer and
-apply those changes to the file buffer.")
- (license license:gpl3+))))
+ ;; `emacs-wgrep-helm' was mistakenly added.
+ (deprecated-package "emacs-wgrep-helm" emacs-wgrep))
(define-public emacs-mu4e-conversation
- (let ((commit "b60d6bd27d7220c3dd041ff2a090e29f2166a319"))
+ (let ((commit "223cc66e99c7665326e3d991d6d383cb0d7512bb"))
(package
(name "emacs-mu4e-conversation")
- (version (git-version "20180615" "1" commit))
+ (version (git-version "20180722" "2" commit))
(source
(origin
(method url-fetch)
@@ -11345,7 +11338,7 @@ apply those changes to the file buffer.")
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "0x8kmi0rmbaaxn5zicm1f9yb8ynxi8074hi2n0rvymlfpxbpn0ma"))))
+ "1ivy7pihhma465hi25p1y45dyi8h52nsm2m0cvizj5sw36jw0n81"))))
(build-system emacs-build-system)
(propagated-inputs
`(("mu" ,mu)))
@@ -11463,3 +11456,158 @@ can do different things depending on the context. In this package, it means
that, if the cursor is in a currently hidden folded construction, we want to
show it; if it's not, we want to hide whatever fold the cursor is in.")
(license license:gpl2+))))
+
+(define-public emacs-markup-faces
+ (package
+ (name "emacs-markup-faces")
+ (version "1.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://stable.melpa.org/packages/markup-faces-"
+ version ".el"))
+ (sha256
+ (base32
+ "124dxbaa25fwxnpwsygpz7pw6da6dnnw7y2lic3jf8rgz7lw4v32"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/sensorflo/markup-faces")
+ (synopsis "Collection of Emacs faces for markup language modes")
+ (description "emacs-markup-faces is like font-lock-faces, but tailored for
+markup languages instead programming languages. The sub group markup-faces-text
+is also intended for 'text viewing modes' such as info or (wo)man. This gives a
+common look and feel, or let's say theme, across different markup language modes
+and 'text viewing modes' respectively.")
+ (license license:gpl3+)))
+
+(define-public emacs-adoc-mode
+ (package
+ (name "emacs-adoc-mode")
+ (version "0.6.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://stable.melpa.org/packages/adoc-mode-"
+ version ".el"))
+ (sha256
+ (base32
+ "1c6hrgxxsnl2c19rgjykpm7r4xg9lp6bmk5z6bi7g8pqlrgwffcy"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-markup-faces" ,emacs-markup-faces)))
+ (home-page "https://github.com/sensorflo/adoc-mode/wiki")
+ (synopsis "AsciiDoc mode for Emacs")
+ (description "This package provides an Emacs major mode for editing AsciiDoc
+files. It focuses on highlighting the document to improve readability.")
+ (license license:gpl2+)))
+
+(define-public emacs-rust-mode
+ (let ((commit
+ ;; Last release is old (2016), use more recent commit to get bug
+ ;; fixes.
+ "64b4a2450e4d4c47f6307851c9b2598cd2254d68")
+ (revision "0"))
+ (package
+ (name "emacs-rust-mode")
+ (version (git-version "0.3.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/rust-lang/rust-mode")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0pbz36lljgb7bdgx3h3g0pq1nss1kvn8mhk1l3mknsmynd6w4nd8"))))
+ (build-system emacs-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "sh" "run_rust_emacs_tests.sh"))))))
+ (home-page "https://github.com/rust-lang/rust-mode")
+ (synopsis "Major Emacs mode for editing Rust source code")
+ (description "This package provides a major Emacs mode for editing Rust
+source code.")
+ (license (list license:expat
+ license:asl2.0)))))
+
+(define-public emacs-ztree
+ (let ((commit "c54425a094353ec40a8179f9eab3596f76c6cf94"))
+ (package
+ (name "emacs-ztree")
+ (version (git-version "1.0.5" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/fourier/ztree")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0j8fpxds8m1zi04nrs8vv21091abvh4n8ab76f1sgdxnp4l5cfb0"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/fourier/ztree")
+ (synopsis "Directory tree comparison mode for Emacs")
+ (description "Ztree is a project dedicated to implementation of several
+text-tree applications inside GNU Emacs. It consists of 2 subprojects:
+@command{ztree-diff} and @command{ztree-dir} (the basis of
+@command{ztree-diff}).")
+ (license license:gpl3))))
+
+(define-public emacs-helm-org-contacts
+ (let ((commit "0af703bd9a43032b89fdf5559673151d1ac2fffc"))
+ (package
+ (name "emacs-helm-org-contacts")
+ (version (git-version "20180707" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tmalsburg/helm-org-contacts")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1cl7cm2ic9pg4vc9cdh84vzjj1x2lpd5ymimiva8h4l17kiphk4s"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-dash" ,emacs-dash)
+ ("emacs-helm" ,emacs-helm)
+ ("emacs-s" ,emacs-s)))
+ (home-page "https://github.com/tmalsburg/helm-org-contacts")
+ (synopsis "Helm source for org-contacts")
+ (description "This Helm source can be used to search contacts stored in
+org-contacts format. There are actions for inserting postal addresses, email
+addresses, and phone numbers in the buffer where @command{helm-org-contacts}
+was called.")
+ (license license:gpl3))))
+
+(define-public emacs-dired-du
+ (package
+ (name "emacs-dired-du")
+ (version "0.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://elpa.gnu.org/packages/dired-du-"
+ version ".tar"))
+ (sha256
+ (base32
+ "09yj37p2fa5f81fqrzwghjkyy2ydsf4rbkfwpn2yyvzd5nd97bpl"))))
+ (build-system emacs-build-system)
+ (home-page "http://elpa.gnu.org/packages/dired-du.html")
+ (synopsis "Dired with recursive directory sizes")
+ (description
+ "Display the recursive size of directories in Dired.
+This file defines a minor mode @command{dired-du-mode} to show the recursive
+size of directories in Dired buffers. If @command{du} program is available,
+then the directory sizes are obtained with it. Otherwise, the directory sizes
+are obtained with Lisp. The former is faster and provide a more precise
+value. For directories where the user doesn't have read permission, the
+recursive size is not obtained. Once this mode is enabled, every new Dired
+buffer displays recursive dir sizes.")
+ (license license:gpl3+)))
diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
index 1c18efe9da..f0b2f350c2 100644
--- a/gnu/packages/erlang.scm
+++ b/gnu/packages/erlang.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright (C) 2018 Nils Gillmann <ng0@n0.is>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -37,7 +38,7 @@
(define-public erlang
(package
(name "erlang")
- (version "20.2.3")
+ (version "21.0")
(source (origin
(method url-fetch)
;; The tarball from http://erlang.org/download contains many
@@ -48,7 +49,7 @@
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0s9g4ijdbqq21k4cqggz074d3fiimah942qisv2kgizhlivpw2nm"))
+ "0gv43lra4870xns8b0yjzbq78afzvz9gk6y3q3fa4y4sqcrqwbas"))
(patches (search-patches "erlang-man-path.patch"))))
(build-system gnu-build-system)
(native-inputs
@@ -64,7 +65,7 @@
(version-major+minor version) ".tar.gz"))
(sha256
(base32
- "1pyb8wbk7znsyni8d1k4dj1m01lr191dcrrzisli1z27ks7hh3lm"))))))
+ "0cgv23q0215f6lvmhj4w9skx5m29khjs9mb890635s3yp520xgqh"))))))
(inputs
`(("ncurses" ,ncurses)
("openssl" ,openssl)
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 1d3e6a7a6a..3ddaa76a4e 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -39,6 +39,7 @@
#:use-module (gnu packages base)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
+ #:use-module (gnu packages crypto)
#:use-module (gnu packages databases)
#:use-module (gnu packages documentation)
#:use-module (gnu packages dns)
@@ -51,6 +52,7 @@
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
#:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages networking)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
@@ -69,7 +71,7 @@
(define-public bitcoin-core
(package
(name "bitcoin-core")
- (version "0.15.1")
+ (version "0.16.1")
(source (origin
(method url-fetch)
(uri
@@ -77,7 +79,7 @@
version "/bitcoin-" version ".tar.gz"))
(sha256
(base32
- "1d22fgwdcn343kd95lh389hj417zwbmnhi29cij8n7wc0nz2vpil"))))
+ "1zkqp93yircd3pbxczxfnibkpq0sgcv5r7wg6d196b9pwgr9zd39"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
@@ -329,6 +331,37 @@ generation from a seed. Your secret keys are encrypted and are never sent to
other machines/servers. Electrum does not download the Bitcoin blockchain.")
(license license:expat)))
+(define-public electron-cash
+ (package
+ (inherit electrum)
+ (name "electron-cash")
+ (version "3.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://electroncash.org/downloads/"
+ version
+ "/win-linux/ElectronCash-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "1x487hyacdm1qhik1mhfimr4jwcwz7sgsbkh11awrb6j19sxdxym"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Delete the bundled dependencies.
+ (delete-file-recursively "packages")
+ #t))))
+ (home-page "https://electroncash.org/")
+ (synopsis "Bitcoin Cash wallet")
+ (description
+ "Electroncash is a lightweight Bitcoin Cash client, based on a client-server
+protocol. It supports Simple Payment Verification (SPV) and deterministic key
+generation from a seed. Your secret keys are encrypted and are never sent to
+other machines/servers. Electroncash does not download the Bitcoin Cash blockchain.")
+ (license license:expat)))
+
(define-public monero
;; This package bundles easylogging++ and lmdb.
;; The bundled easylogging++ is modified, and the changes will not be upstreamed.
@@ -336,25 +369,18 @@ other machines/servers. Electrum does not download the Bitcoin blockchain.")
;; the system's dynamically linked library.
(package
(name "monero")
- (version "0.11.1.0")
+ (version "0.12.3.0")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://github.com/monero-project/monero/archive/v"
- version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/monero-project/monero")
+ (commit (string-append "v" version))))
(file-name (string-append name "-" version ".tar.gz"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Delete bundled dependencies.
- (for-each
- delete-file-recursively
- '("external/miniupnpc" "external/rapidjson"
- "external/unbound"))
- #t))
+ (patches (search-patches "monero-use-system-miniupnpc.patch"))
(sha256
(base32
- "16shd834025jyzy68h3gag1sz8vbk875hy4j97hrki8pacz8vd5m"))))
+ "14db9kgjm2ha93c2x5fjdw01xaqshn756qr3x2cnzyyjh7caz5qd"))))
(build-system cmake-build-system)
(native-inputs
`(("doxygen" ,doxygen)
@@ -364,15 +390,19 @@ other machines/servers. Electrum does not download the Bitcoin blockchain.")
(inputs
`(("bind" ,isc-bind)
("boost" ,boost)
+ ("zeromq" ,zeromq)
+ ("cppzmq" ,cppzmq)
("expat" ,expat)
+ ("libsodium" ,libsodium)
("libunwind" ,libunwind)
("lmdb" ,lmdb)
- ("miniupnpc" ,miniupnpc)
+ ("miniupnpc" ,monero-miniupnpc)
("openssl" ,openssl)
("rapidjson" ,rapidjson)
("unbound" ,unbound)))
(arguments
`(#:out-of-source? #t
+ #:build-type "release"
#:configure-flags '("-DBUILD_TESTS=ON"
,@(if (string=? "aarch64-linux" (%current-system))
'("-DARCH=armv8-a")
@@ -400,9 +430,8 @@ other machines/servers. Electrum does not download the Bitcoin blockchain.")
#t))
(replace 'check
(lambda _
- (zero?
- (system* "make" "ARGS=-E 'unit_tests|libwallet_api_tests'"
- "test"))))
+ (invoke "make" "ARGS=-E 'unit_tests|libwallet_api_tests'"
+ "test")))
;; The excluded unit tests need network access
(add-after 'check 'unit-tests
(lambda _
@@ -415,10 +444,9 @@ other machines/servers. Electrum does not download the Bitcoin blockchain.")
"DNSResolver.DNSSECFailure"
"DNSResolver.GetTXTRecord")
":")))
- (zero?
- (system* "tests/unit_tests/unit_tests"
- (string-append "--gtest_filter=-"
- excluded-unit-tests))))))
+ (invoke "tests/unit_tests/unit_tests"
+ (string-append "--gtest_filter=-"
+ excluded-unit-tests)))))
(add-after 'install 'install-blockchain-import-export
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -432,19 +460,20 @@ other machines/servers. Electrum does not download the Bitcoin blockchain.")
Monero command line client and daemon.")
(license license:bsd-3)))
-(define-public monero-core
+(define-public monero-gui
(package
- (name "monero-core")
- (version "0.11.1.0")
+ (name "monero-gui")
+ (version "0.12.2.0")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://github.com/monero-project/monero-core/archive/v"
- version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/monero-project/monero-gui")
+ (commit (string-append "v" version))))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1q7a9kpcjgp74fbplzs2iszdld6gwbfrydyd9in9izhwp100p1rr"))))
+ "1cnrkwh7kp64lnzz1xfmkf1mhsgm5gls292gpqai3jr8jydpkahl"))))
(build-system gnu-build-system)
(native-inputs
`(("doxygen" ,doxygen)
@@ -491,7 +520,7 @@ Monero command line client and daemon.")
#t))
(replace 'build
(lambda _
- (zero? (system* "./build.sh"))))
+ (invoke "./build.sh")))
(add-after 'build 'fix-install-path
(lambda* (#:key outputs #:allow-other-keys)
(substitute* "build/Makefile"
@@ -508,6 +537,9 @@ Monero command line client and daemon.")
Monero GUI client.")
(license license:bsd-3)))
+(define-public monero-core
+ (deprecated-package "monero-core" monero-gui))
+
(define-public python-trezor-agent
(package
(name "python-trezor-agent")
diff --git a/gnu/packages/fltk.scm b/gnu/packages/fltk.scm
index e4eb2fcad0..a3c088c2e8 100644
--- a/gnu/packages/fltk.scm
+++ b/gnu/packages/fltk.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2015, 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -34,27 +35,27 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
- #:use-module (guix build-system waf))
+ #:use-module (guix build-system waf)
+ #:use-module (srfi srfi-1))
(define-public fltk
(package
(name "fltk")
- (version "1.3.3")
+ (version "1.3.4-2")
(source
(origin
(method url-fetch)
- (uri (string-append "http://fltk.org/pub/fltk/" version
+ (uri (string-append "http://fltk.org/pub/fltk/"
+ (first (string-split version #\-))
"/fltk-" version "-source.tar.gz"))
(sha256
(base32
- "15qd7lkz5d5ynz70xhxhigpz3wns39v9xcf7ggkl0792syc8sfgq"))
- (patches (search-patches "fltk-shared-lib-defines.patch"
- "fltk-xfont-on-demand.patch"))))
+ "0459rm1gl5x3famiqma7ja7k6hvan8p5l8lgshvqfl4rik0lklr5"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
- `(("libjpeg" ,libjpeg-8) ;jpeg_read_header argument error in libjpeg-9
+ `(("libjpeg" ,libjpeg)
("libpng" ,libpng)
("libx11" ,libx11)
("libxft" ,libxft)
@@ -76,12 +77,11 @@
;; Provide -L flags for image libraries when querying fltk-config to
;; avoid propagating inputs.
(lambda* (#:key inputs outputs #:allow-other-keys)
- (use-modules (srfi srfi-26))
- (let* ((conf (string-append (assoc-ref outputs "out")
- "/bin/fltk-config"))
- (jpeg (assoc-ref inputs "libjpeg"))
- (png (assoc-ref inputs "libpng"))
- (zlib (assoc-ref inputs "zlib")))
+ (let ((conf (string-append (assoc-ref outputs "out")
+ "/bin/fltk-config"))
+ (jpeg (assoc-ref inputs "libjpeg"))
+ (png (assoc-ref inputs "libpng"))
+ (zlib (assoc-ref inputs "zlib")))
(substitute* conf
(("-ljpeg") (string-append "-L" jpeg "/lib -ljpeg"))
(("-lpng") (string-append "-L" png "/lib -lpng"))
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 85febd73f4..725387ce8e 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -455,17 +455,16 @@ using the above tables.")
(define-public libspiro
(package
(name "libspiro")
- (version "20071029")
+ (version "0.5.20150702")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://sourceforge/libspiro/libspiro/"
- version "/libspiro_src-" version ".tar.bz2"))
+ (uri (string-append "https://github.com/fontforge/libspiro/releases"
+ "/download/" version "/libspiro-dist-" version ".tar.gz"))
(sha256
(base32
- "1kylz8pvwnb85yya150r9i6mhbpzx38f32qy523qg3ylgd9b3zhy"))))
+ "153ckwj6h3wwlsgcppzqj8cymv1927hi8ar8fzpchq5q89cj2kai"))))
(build-system gnu-build-system)
- (arguments `(#:tests? #f)) ;no tests
(synopsis "Clothoid to bezier conversion library")
(description
"Raph Levien's Spiro package as a library. A mechanism for drawing
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index afabeb0c62..33e2b4a16c 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -74,6 +74,7 @@
#:use-module (gnu packages python)
#:use-module (gnu packages qt)
#:use-module (gnu packages sdl)
+ #:use-module (gnu packages stb)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages tls)
#:use-module (gnu packages video)
@@ -440,7 +441,7 @@ clone.")
(define-public sfml
(package
(name "sfml")
- (version "2.3.2")
+ (version "2.5.0")
(source (origin
(method url-fetch)
;; Do not fetch the archives from
@@ -451,24 +452,37 @@ clone.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0k2fl5xk3ni2q8bsxl0551inx26ww3w6cp6hssvww0wfjdjcirsm"))))
+ "1x3yvhdrln5b6h4g5r4mds76gq8zsxw6icxqpwqkmxsqcq5yviab"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Ensure system libraries are used.
+ (delete-file-recursively "extlibs")
+ #t))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags
- (list "-DSFML_INSTALL_PKGCONFIG_FILES=TRUE")
+ (list "-DSFML_INSTALL_PKGCONFIG_FILES=TRUE"
+ "-DSFML_OS_PKGCONFIG_DIR=lib/pkgconfig")
#:tests? #f)) ; no tests
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
(inputs
`(("mesa" ,mesa)
("glew" ,glew)
- ("flac" ,flac)
- ("libvorbis" ,libvorbis)
("libx11" ,libx11)
("xcb-util-image" ,xcb-util-image)
("libxrandr" ,libxrandr)
("eudev" ,eudev)
- ("freetype" ,freetype)
("libjpeg" ,libjpeg)
("libsndfile" ,libsndfile)
+ ("stb-image" ,stb-image)
+ ("stb-image-write" ,stb-image-write)))
+ (propagated-inputs
+ ;; In Requires.private of pkg-config files.
+ `(("flac" ,flac)
+ ("freetype" ,freetype)
+ ("libvorbis" ,libvorbis)
("openal" ,openal)))
(home-page "https://www.sfml-dev.org")
(synopsis "Simple and Fast Multimedia Library")
@@ -518,7 +532,7 @@ sounds from presets such as \"explosion\" or \"powerup\".")
(define-public physfs
(package
(name "physfs")
- (version "2.0.3")
+ (version "3.0.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -527,10 +541,18 @@ sounds from presets such as \"explosion\" or \"powerup\".")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0sbbyqzqhyf0g68fcvvv20n3928j0x6ik1njmhn1yigvq2bj11na"))))
+ "1wgj2zqpnfbnyyi1i7bq5pshcc9n5cvwlpzp8im67nb8662ryyxp"))))
(build-system cmake-build-system)
(arguments
- '(#:tests? #f)) ; no check target
+ '(#:tests? #f ; no check target
+ #:phases (modify-phases %standard-phases
+ (add-after 'unpack 'patch-CMakeLists.txt
+ (lambda _
+ (substitute* "CMakeLists.txt"
+ ;; XXX: For some reason CMakeLists.txt disables
+ ;; RUNPATH manipulation when the compiler is GCC.
+ (("CMAKE_COMPILER_IS_GNUCC") "FALSE"))
+ #t)))))
(inputs
`(("zlib" ,zlib)))
(native-inputs
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 4af0b52e82..1082dadae6 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -87,6 +87,7 @@
#:use-module (gnu packages gtk)
#:use-module (gnu packages guile)
#:use-module (gnu packages imagemagick)
+ #:use-module (gnu packages less)
#:use-module (gnu packages libcanberra)
#:use-module (gnu packages libedit)
#:use-module (gnu packages libunwind)
@@ -665,6 +666,131 @@ removed lines to all opponents. There is also a Demo mode in which you can
watch your CPU playing while enjoying a cup of tea!")
(license license:gpl2+)))
+(define-public nethack
+ (package
+ (name "nethack")
+ (version "3.6.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.nethack.org/download/"
+ version "/" name "-361-src.tgz"))
+ (sha256
+ (base32 "1dha0ijvxhx7c9hr0452h93x81iiqsll8bc9msdnp7xdqcfbz32b"))))
+ (inputs
+ `(("ncurses" ,ncurses)
+ ("bison" ,bison)
+ ("flex" ,flex)
+ ("less" ,less)))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:make-flags
+ `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'patch-paths
+ (lambda _
+ (substitute* "sys/unix/nethack.sh"
+ (("^ *cd .*$") ""))
+ (substitute* "sys/unix/Makefile.utl"
+ (("^YACC *=.*$") "YACC = bison -y\n")
+ (("^LEX *=.*$") "LEX = flex\n")
+ (("^# CC = gcc") "CC = gcc"))
+ (substitute* "sys/unix/hints/linux"
+ (("/bin/gzip") (string-append
+ (assoc-ref %build-inputs "gzip")
+ "/bin/gzip"))
+ (("^WINTTYLIB=.*") "WINTTYLIB=-lncurses"))
+ (substitute* "include/config.h"
+ (("^.*define CHDIR.*$") "")
+ (("^/\\* *#*define *REPRODUCIBLE_BUILD *\\*/")
+ ;; Honor SOURCE_DATE_EPOCH.
+ "#define REPRODUCIBLE_BUILD"))
+
+ ;; Note: 'makedefs' rejects and ignores dates that are too old
+ ;; or too new, so we must choose something reasonable here.
+ (setenv "SOURCE_DATE_EPOCH" "1531865062")
+
+ (substitute* "sys/unix/Makefile.src"
+ (("^# CC = gcc") "CC = gcc"))
+ #t))
+ (replace 'configure
+ (lambda _
+ (let ((bash (string-append
+ (assoc-ref %build-inputs "bash")
+ "/bin/bash")))
+ (with-directory-excursion "sys/unix"
+ (substitute* "setup.sh" (("/bin/sh") bash))
+ (invoke bash "setup.sh" "hints/linux"))
+ #t)))
+ (add-after 'install 'fixup-paths
+ (lambda _
+ (let* ((output (assoc-ref %outputs "out"))
+ (nethack-script (string-append output "/bin/nethack")))
+ (mkdir-p (string-append output "/games/lib/nethackuserdir"))
+ (for-each
+ (lambda (file)
+ (rename-file
+ (string-append output "/games/lib/nethackdir/" file)
+ (string-append output "/games/lib/nethackuserdir/"
+ file)))
+ '("xlogfile" "logfile" "perm" "record" "save"))
+ (mkdir-p (string-append output "/bin"))
+ (call-with-output-file nethack-script
+ (lambda (port)
+ (format port "#!~a/bin/sh
+PATH=~a:$PATH
+if [ ! -d ~~/.config/nethack ]; then
+ mkdir -p ~~/.config/nethack
+ cp -r ~a/games/lib/nethackuserdir/* ~~/.config/nethack
+ chmod -R +w ~~/.config/nethack
+fi
+
+RUNDIR=$(mktemp -d)
+
+cleanup() {
+ rm -rf $RUNDIR
+}
+trap cleanup EXIT
+
+cd $RUNDIR
+for i in ~~/.config/nethack/*; do
+ ln -s $i $(basename $i)
+done
+for i in ~a/games/lib/nethackdir/*; do
+ ln -s $i $(basename $i)
+done
+~a/games/nethack"
+ (assoc-ref %build-inputs "bash")
+ (list->search-path-as-string
+ (list
+ (string-append
+ (assoc-ref %build-inputs "coreutils") "/bin")
+ (string-append
+ (assoc-ref %build-inputs "less") "/bin"))
+ ":")
+ output
+ output
+ output)))
+ (chmod nethack-script #o555)
+ #t)))
+ (delete 'check))))
+ (home-page "https://nethack.org")
+ (synopsis "Classic dungeon crawl game")
+ (description "NetHack is a single player dungeon exploration game that runs
+on a wide variety of computer systems, with a variety of graphical and text
+interfaces all using the same game engine. Unlike many other Dungeons &
+Dragons-inspired games, the emphasis in NetHack is on discovering the detail of
+the dungeon and not simply killing everything in sight - in fact, killing
+everything in sight is a good way to die quickly. Each game presents a
+different landscape - the random number generator provides an essentially
+unlimited number of variations of the dungeon and its denizens to be discovered
+by the player in one of a number of characters: you can pick your race, your
+role, and your gender.")
+ (license
+ (license:fsdg-compatible
+ "https://nethack.org/common/license.html"))))
+
(define-public prboom-plus
(package
(name "prboom-plus")
@@ -955,15 +1081,16 @@ that beneath its ruins lay buried an ancient evil.")
(define-public angband
(package
(name "angband")
- (version "4.0.5")
+ (version "4.1.2")
(source
(origin
(method url-fetch)
- (uri (string-append "http://rephial.org/downloads/4.0/"
- "angband-" version ".tar.gz"))
+ (uri (string-append "http://rephial.org/downloads/"
+ (version-major+minor version)
+ "/angband-" version ".tar.gz"))
(sha256
(base32
- "0lpq2kms7hp421vrasx2bkkn9w08kr581ldwik3v0hlq6h7rlxhd"))
+ "0ahfzb66ihxvkxcbhcib816x40sdsp26b3ravr1xqp44w1whkg1h"))
(modules '((guix build utils)))
(snippet
;; So, some of the sounds/graphics/tilesets are under different
@@ -987,11 +1114,11 @@ that beneath its ruins lay buried an ancient evil.")
#:configure-flags (list (string-append "--bindir=" %output "/bin"))
#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'autogen.sh
+ (replace 'bootstrap
(lambda _
(substitute* "acinclude.m4"
(("ncursesw5-config") "ncursesw6-config"))
- (zero? (system* "sh" "autogen.sh")))))))
+ (invoke "sh" "autogen.sh"))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)))
@@ -1448,7 +1575,7 @@ match, cannon keep, and grave-itation pit.")
(define minetest-data
(package
(name "minetest-data")
- (version "0.4.16")
+ (version "0.4.17")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1457,7 +1584,7 @@ match, cannon keep, and grave-itation pit.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0nibpm600rbv9dg1zgcsl5grlbqx0b5l6cg1lp6sqkwvjialb4ga"))))
+ "0pa9skjwbq27aky6dgr7g3mb0a7c5rpa6xmz2qh0nm618z5hgazh"))))
(build-system trivial-build-system)
(native-inputs
`(("source" ,source)
@@ -1490,7 +1617,7 @@ match, cannon keep, and grave-itation pit.")
(define-public minetest
(package
(name "minetest")
- (version "0.4.16")
+ (version "0.4.17")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1499,7 +1626,7 @@ match, cannon keep, and grave-itation pit.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0mbnf1ma4gsw9ah68ply04059xkfx5psdxwalxp78sgmx4ypkwqf"))))
+ "0wpbad5bssbbgspgdcq3hhq4bhckrj53nhymsz34d8g01j0csr46"))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags
@@ -1830,7 +1957,7 @@ falling, themeable graphics and sounds, and replays.")
(define-public wesnoth
(package
(name "wesnoth")
- (version "1.14.3")
+ (version "1.14.4")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
@@ -1839,7 +1966,7 @@ falling, themeable graphics and sounds, and replays.")
name "-" version ".tar.bz2"))
(sha256
(base32
- "06648041nr77sgzr7jpmcn37cma3hp41qynp50xzddx28l17zwg9"))))
+ "1hw1ap8xxpdwyx1sf8fm1g75p6724y3hwb4kpvyqbsq7bwfwsb9i"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f)) ; no check target
@@ -3345,7 +3472,7 @@ throwing people around in pseudo-randomly generated buildings.")
(define-public hyperrogue
(package
(name "hyperrogue")
- (version "10.0g")
+ (version "10.4j")
;; When updating this package, be sure to update the "hyperrogue-data"
;; origin in native-inputs.
(source (origin
@@ -3356,7 +3483,7 @@ throwing people around in pseudo-randomly generated buildings.")
"-src.tgz"))
(sha256
(base32
- "0f68pcnsgl406dhm91ckn3f364bar9m9i5njp9vrmvhvv9p2icy0"))))
+ "0909p4xvbi1c2jc5rdgrf8b1c60fmsaapabsi6yyglh5znkf0k27"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no check target
@@ -3368,7 +3495,6 @@ throwing people around in pseudo-randomly generated buildings.")
(setenv "CPATH"
(string-append (assoc-ref inputs "sdl-union")
"/include/SDL"))))
- ;; Fix font and music paths.
(replace 'configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -3378,17 +3504,18 @@ throwing people around in pseudo-randomly generated buildings.")
"/share/fonts/truetype"))
(dejavu-font "DejaVuSans-Bold.ttf")
(music-file "hyperrogue-music.txt"))
+ ;; Fix font and music paths.
(substitute* "basegraph.cpp"
((dejavu-font)
(string-append dejavu-dir "/" dejavu-font)))
- (substitute* "sound.cpp"
- (((string-append "\\./" music-file))
- (string-append share-dir "/" music-file))
- (("sounds/")
- (string-append share-dir "/sounds/")))
(substitute* music-file
(("\\*/")
(string-append share-dir "/sounds/"))))
+ ;; Fix Makefile.
+ (substitute* "Makefile"
+ (("g\\+\\+ langen.cpp")
+ "g++ langen.cpp ${CXXFLAGS}")
+ (("savepng.c") "savepng.cpp"))
#t))
(replace 'install
(lambda* (#:key inputs outputs #:allow-other-keys)
@@ -3405,21 +3532,18 @@ throwing people around in pseudo-randomly generated buildings.")
(out (assoc-ref outputs "out"))
(sounds (string-append out "/share/hyperrogue/sounds"))
(unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
- (and
- ;; Extract media license information into sounds directory.
- (zero?
- (system* unzip "-j" data
- (string-append
- "hyperrogue"
- (string-join (string-split ,version #\.) "")
- "/sounds/credits.txt") "-d" sounds))
- ;; Extract sounds and music into sounds directory.
- (zero?
- (system* "unzip" "-j" data
- (string-append
- "hyperrogue"
- (string-join (string-split ,version #\.) "")
- "/*.ogg") "-d" sounds)))))))))
+ ;; Extract media license information into sounds directory.
+ (invoke unzip "-j" data
+ (string-append
+ "hyperrogue"
+ (string-join (string-split ,version #\.) "")
+ "/sounds/credits.txt") "-d" sounds)
+ ;; Extract sounds and music into sounds directory.
+ (invoke "unzip" "-j" data
+ (string-append
+ "hyperrogue"
+ (string-join (string-split ,version #\.) "")
+ "/*.ogg") "-d" sounds)))))))
(native-inputs
`(("hyperrogue-data"
,(origin
@@ -3431,7 +3555,7 @@ throwing people around in pseudo-randomly generated buildings.")
"-win.zip"))
(sha256
(base32
- "0bnp077qvlmxjlz1jjd6kpghlv9flxc19ac1xq3m3wyq1w9p3pab"))))
+ "0w61iv2rn93hi0q3hxyyyf9xcr8vi9zd7fjvpz5adpgf94jm3zsc"))))
("unzip" ,unzip)))
(inputs
`(("font-dejavu" ,font-dejavu)
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 85bb0ccf9b..ae6ba024e0 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -180,7 +180,7 @@ and driving.")
(inputs
`(("cairo" ,cairo)
("libpng" ,libpng)
- ("libjepeg-turbo" ,libjpeg-turbo)
+ ("libjpeg-turbo" ,libjpeg-turbo)
("libtiff" ,libtiff)
("libgeotiff" ,libgeotiff)
("proj.4" ,proj.4)
diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm
index 0a6043ba65..1240b1dc16 100644
--- a/gnu/packages/ghostscript.scm
+++ b/gnu/packages/ghostscript.scm
@@ -132,6 +132,7 @@ printing, and psresize, for adjusting page sizes.")
(define-public ghostscript
(package
(name "ghostscript")
+ (replacement ghostscript/fixed)
(version "9.23")
(source
(origin
@@ -250,6 +251,16 @@ output file formats and printers.")
(home-page "https://www.ghostscript.com/")
(license license:agpl3+)))
+(define-public ghostscript/fixed
+ (hidden-package
+ (package
+ (inherit ghostscript)
+ (source
+ (origin
+ (inherit (package-source ghostscript))
+ (patches (append (origin-patches (package-source ghostscript))
+ (search-patches "ghostscript-CVE-2018-10194.patch"))))))))
+
(define-public ghostscript/x
(package/inherit ghostscript
(name (string-append (package-name ghostscript) "-with-x"))
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index ec3a634844..feb67318df 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
;;;
@@ -100,7 +100,7 @@ provided, as well as a framework to add new color models and data types.")
`(("cairo" ,cairo)
("pango" ,pango)
("libpng" ,libpng)
- ("libjpeg" ,libjpeg-8)))
+ ("libjpeg" ,libjpeg)))
(native-inputs
`(("pkg-config" ,pkg-config)
("glib" ,glib "bin") ; for gtester
@@ -154,7 +154,7 @@ buffers.")
("glib" ,glib)
("glib-networking" ,glib-networking)
("libtiff" ,libtiff)
- ("libjpeg" ,libjpeg-8)
+ ("libjpeg" ,libjpeg)
("atk" ,atk)
("gexiv2" ,gexiv2)
("gtk+" ,gtk+-2)
diff --git a/gnu/packages/gnu-pw-mgr.scm b/gnu/packages/gnu-pw-mgr.scm
index 0d16bf5f0b..38f9e8187a 100644
--- a/gnu/packages/gnu-pw-mgr.scm
+++ b/gnu/packages/gnu-pw-mgr.scm
@@ -30,7 +30,7 @@
(define-public gnu-pw-mgr
(package
(name "gnu-pw-mgr")
- (version "2.3.2")
+ (version "2.3.3")
(source
(origin
(method url-fetch)
@@ -38,7 +38,7 @@
version ".tar.xz"))
(sha256
(base32
- "0x60g0syqpd107l8w4bl213imy2lspm4kz1j18yr1sh10rdxlgxd"))))
+ "04xh38j7l0sfnb01kp05xc908pvqfc0lph94k7n9bi46zy3qy7ma"))))
(build-system gnu-build-system)
(arguments
'(#:phases
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 7335742e20..7a4660cc8d 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -67,14 +67,14 @@
(define-public libextractor
(package
(name "libextractor")
- (version "1.6")
+ (version "1.7")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/libextractor/libextractor-"
version ".tar.gz"))
(sha256
(base32
- "17gnpgspdhfgcr27j8sn9105vb4lw22yqdrhic62l79q5v5avm16"))))
+ "13wf6vj7mkv6gw8h183cnk7m24ir0gyf198pyb2148ng4klgv9p0"))))
(build-system gnu-build-system)
;; WARNING: Checks require /dev/shm to be in the build chroot, especially
;; not to be a symbolic link to /run/shm.
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 92ce504c52..445533b0c2 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -11,6 +11,7 @@
;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
+;;; Copyright © 2018 Pierre Neidhardt <ambrevar@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -41,6 +42,8 @@
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pcre)
+ #:use-module (gnu packages lua)
+ #:use-module (gnu packages mp3)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1))
@@ -1975,3 +1978,383 @@ which satisfies the cron expression.")
"This package provides a Go library for encode and decode YAML
values.")
(license license:asl2.0))))
+
+(define-public go-github-com-mattn-go-isatty
+ (let ((commit "6ca4dbf54d38eea1a992b3c722a76a5d1c4cb25c")
+ (revision "0"))
+ (package
+ (name "go-github-com-mattn-go-isatty")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mattn/go-isatty")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0zs92j2cqaw9j8qx1sdxpv3ap0rgbs0vrvi72m40mg8aa36gd39w"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/mattn/go-isatty"))
+ (home-page "https://github.com/mattn/go-isatty")
+ (synopsis "Provide @code{isatty} for Golang")
+ (description "This package provides @code{isatty}, a Go module that can
+tell you whether a file descriptor points to a terminal and the type of the
+terminal.")
+ (license license:expat))))
+
+(define-public go-github-com-mattn-go-colorable
+ (let ((commit "efa589957cd060542a26d2dd7832fd6a6c6c3ade")
+ (revision "0"))
+ (package
+ (name "go-github-com-mattn-go-colorable")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mattn/go-colorable")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0kshi4hvm0ayrsxqxy0599iv81kryhd2fn9lwjyczpj593cq069r"))))
+ (build-system go-build-system)
+ (native-inputs
+ `(("go-github-com-mattn-go-isatty"
+ ,go-github-com-mattn-go-isatty)))
+ (arguments
+ '(#:import-path "github.com/mattn/go-colorable"))
+ (home-page "https://github.com/mattn/go-colorable")
+ (synopsis "Handle ANSI color escapes on Windows")
+ (description "This package provides @code{colorable}, a module that
+makes it possible to handle ANSI color escapes on Windows.")
+ (license license:expat))))
+
+(define-public go-github-com-mgutz-ansi
+ (let ((commit "9520e82c474b0a04dd04f8a40959027271bab992")
+ (revision "0"))
+ (package
+ (name "go-github-com-mgutz-ansi")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url
+ "https://github.com/mgutz/ansi")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "00bz22314j26736w1f0q4jy9d9dfaml17vn890n5zqy3cmvmww1j"))))
+ (build-system go-build-system)
+ (native-inputs
+ `(("go-github-com-mattn-go-isatty"
+ ,go-github-com-mattn-go-isatty)
+ ("go-github-com-mattn-go-colorable"
+ ,go-github-com-mattn-go-colorable)))
+ (arguments
+ '(#:import-path "github.com/mgutz/ansi"))
+ (home-page "https://github.com/mgutz/ansi")
+ (synopsis "Small, fast library to create ANSI colored strings and codes")
+ (description "This package provides @code{ansi}, a Go module that can
+generate ANSI colored strings.")
+ (license license:expat))))
+
+(define-public go-github-com-aarzilli-golua
+ (let ((commit "03fc4642d792b1f2bc5e7343b403cf490f8c501d")
+ (revision "0"))
+ (package
+ (name "go-github-com-aarzilli-golua")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url
+ "https://github.com/aarzilli/golua")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1d9hr29i36cza98afj3g6rs3l7xbkprwzz0blcxsr9dd7nak20di"))))
+ (build-system go-build-system)
+ (native-inputs
+ `(("lua" ,lua)))
+ (arguments
+ `(#:unpack-path "github.com/aarzilli/golua"
+ #:import-path "github.com/aarzilli/golua/lua"
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'build
+ (lambda* (#:key import-path #:allow-other-keys)
+ (invoke "go" "install"
+ "-v" ; print the name of packages as they are compiled
+ "-x" ; print each command as it is invoked
+ "-ldflags=-s -w" ; strip the symbol table and debug
+ "-tags" "llua" ; Latest Lua on Guix does not have a version number.
+ import-path)))
+ (replace 'check
+ (lambda* (#:key import-path #:allow-other-keys)
+ (invoke "go" "test"
+ "-tags" "llua" ; Latest Lua on Guix does not have a version number.
+ import-path))))))
+ (home-page "https://github.com/aarzilli/golua")
+ (synopsis "Go Bindings for the Lua C API")
+ (description "This package provides @code{lua}, a Go module that can
+run a Lua virtual machine.")
+ (license license:expat))))
+
+(define-public go-gitlab-com-ambrevar-golua-unicode
+ (let ((commit "97ce517e7a1fe2407a90c317a9c74b173d396144")
+ (revision "0"))
+ (package
+ (name "go-gitlab-com-ambrevar-golua-unicode")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url
+ "https://gitlab.com/ambrevar/golua")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1izcp7p8nagjwqd13shb0020w7xhppib1a3glw2d1468bflhksnm"))))
+ (build-system go-build-system)
+ (native-inputs
+ `(("lua" ,lua)
+ ("go-github-com-aarzilli-golua" ,go-github-com-aarzilli-golua)))
+ (arguments
+ `(#:unpack-path "gitlab.com/ambrevar/golua"
+ #:import-path "gitlab.com/ambrevar/golua/unicode"
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key import-path #:allow-other-keys)
+ (setenv "USER" "homeless-dude")
+ (invoke "go" "test" import-path))))))
+ (home-page "https://gitlab.com/ambrevar/golua")
+ (synopsis "Add Unicode support to Golua")
+ (description "This extension to Arzilli's Golua adds Unicode support to
+all functions from the Lua string library. Lua patterns are replaced by Go
+regexps. This breaks compatibility with Lua, but Unicode support breaks it
+anyways and Go regexps are more powerful.")
+ (license license:expat))))
+
+(define-public go-github-com-yookoala-realpath
+ (let ((commit "d19ef9c409d9817c1e685775e53d361b03eabbc8")
+ (revision "0"))
+ (package
+ (name "go-github-com-yookoala-realpath")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url
+ "https://github.com/yookoala/realpath")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0qvz1dcdldf53rq69fli76z5k1vr7prx9ds1d5rpzgs68kwn40nw"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/yookoala/realpath"))
+ (home-page "https://github.com/yookoala/realpath")
+ (synopsis "@code{realpath} for Golang")
+ (description "This package provides @code{realpath}, a Go module that
+when provided with a valid relative path / alias path, it will return you with
+a string of its real absolute path in the system.")
+ (license license:expat))))
+
+(define-public go-gitlab-com-ambrevar-damerau
+ (let ((commit "883829e1f25fad54015772ea663e69017cf22352")
+ (revision "0"))
+ (package
+ (name "go-gitlab-com-ambrevar-damerau")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url
+ "https://gitlab.com/ambrevar/damerau")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1b9p8fypc914ij1afn6ir346zsgfqrc5mqc1k3d53n4snypq27qv"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "gitlab.com/ambrevar/damerau"))
+ (home-page "https://gitlab.com/ambrevar/damerau")
+ (synopsis "Damerau-Levenshtein distance for Golang")
+ (description "This is a spelling corrector implementing the
+Damerau-Levenshtein distance. Takes a string value input from the user.
+Looks for an identical word on a list of words, if none is found, look for a
+similar word.")
+ (license license:expat))))
+
+(define-public go-github-com-stevedonovan-luar
+ (let ((commit "22d247e5366095f491cd83edf779ee99a78f5ead")
+ (revision "0"))
+ (package
+ (name "go-github-com-stevedonovan-luar")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url
+ "https://github.com/stevedonovan/luar")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1acjgw9cz1l0l9mzkyk7irz6cfk31wnxgbwa805fvm1rqcjzin2c"))))
+ (build-system go-build-system)
+ (native-inputs
+ `(("go-github-com-aarzilli-golua" ,go-github-com-aarzilli-golua)))
+ (arguments
+ `(#:tests? #f ; Upstream tests are broken.
+ #:import-path "github.com/stevedonovan/luar"))
+ (home-page "https://github.com/stevedonovan/luar")
+ (synopsis "Lua reflection bindings for Go")
+ (description "Luar is designed to make using Lua from Go more
+convenient. Go structs, slices and maps can be automatically converted to Lua
+tables and vice-versa. The resulting conversion can either be a copy or a
+proxy. In the latter case, any change made to the result will reflect on the
+source.
+
+Any Go function can be made available to Lua scripts, without having to write
+C-style wrappers.
+
+Luar support cyclic structures (lists, etc.).
+
+User-defined types can be made available to Lua as well: their exported
+methods can be called and usual operations such as indexing or arithmetic can
+be performed.")
+ (license license:expat))))
+
+(define-public go-github-com-kr-text
+ (let ((commit "e2ffdb16a802fe2bb95e2e35ff34f0e53aeef34f")
+ (revision "0"))
+ (package
+ (name "go-github-com-kr-text")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url
+ "https://github.com/kr/text")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1gm5bsl01apvc84bw06hasawyqm4q84vx1pm32wr9jnd7a8vjgj1"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/kr/text"))
+ (home-page "https://github.com/kr/text")
+ (synopsis "Go package for manipulating paragraphs of text")
+ (description "Package @code{text} provides manipulation Go functions for
+paragraphs of text.")
+ (license license:expat))))
+
+(define-public go-github-com-michiwend-golang-pretty
+ (let ((commit "8ac61812ea3fa540f3f141a444fcb0dd713cdca4")
+ (revision "0"))
+ (package
+ (name "go-github-com-michiwend-golang-pretty")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url
+ "https://github.com/michiwend/golang-pretty")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0rjfms0csjqi91xnddzx3rcrcaikc7xc027617px3kdwdap80ir4"))))
+ (build-system go-build-system)
+ (native-inputs
+ `(("go-github-com-kr-text" ,go-github-com-kr-text)))
+ (arguments
+ `(#:tests? #f ; Upstream tests seem to be broken.
+ #:import-path "github.com/michiwend/golang-pretty"))
+ (home-page "https://github.com/michiwend/golang-pretty")
+ (synopsis "Pretty printing for Go values")
+ (description "Package @code{pretty} provides pretty-printing for Go
+values. This is useful during debugging, to avoid wrapping long output lines
+in the terminal.
+
+It provides a function, @code{Formatter}, that can be used with any function
+that accepts a format string. It also provides convenience wrappers for
+functions in packages @code{fmt} and @code{log}.")
+ (license license:expat))))
+
+(define-public go-github-com-michiwend-gomusicbrainz
+ (let ((commit "0cdeb13f9b24d2c714feb7e3c63d595cf7121d7d")
+ (revision "0"))
+ (package
+ (name "go-github-com-michiwend-gomusicbrainz")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url
+ "https://github.com/michiwend/gomusicbrainz")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1li9daw0kghb80rdmxbh7g72qhxcvx3rvhwq5gs0jrr9hb8pjvcn"))))
+ (build-system go-build-system)
+ (native-inputs
+ `(("go-github-com-michiwend-golang-pretty" ,go-github-com-michiwend-golang-pretty)
+ ("go-github-com-kr-text" ,go-github-com-kr-text)))
+ (arguments
+ `(#:import-path "github.com/michiwend/gomusicbrainz"))
+ (home-page "https://github.com/michiwend/gomusicbrainz")
+ (synopsis "MusicBrainz WS2 client library for Golang")
+ (description "Currently GoMusicBrainz provides methods to perform search
+and lookup requests. Browse requests are not supported yet.")
+ (license license:expat))))
+
+(define-public go-github-com-wtolson-go-taglib
+ (let ((commit "6e68349ff94ecea412de7e748cb5eaa26f472777")
+ (revision "0"))
+ (package
+ (name "go-github-com-wtolson-go-taglib")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url
+ "https://github.com/wtolson/go-taglib")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1cpjqnrviwflz150g78iir5ndrp3hh7a93zbp4dwbg6sb2q141p2"))))
+ (build-system go-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("taglib" ,taglib)))
+ (arguments
+ `(#:import-path "github.com/wtolson/go-taglib"))
+ (home-page "https://github.com/wtolson/go-taglib")
+ (synopsis "Go wrapper for taglib")
+ (description "Go wrapper for taglib")
+ (license license:unlicense))))
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 65f023a488..ad5ff8ed1e 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -3,7 +3,7 @@
;;; Copyright © 2015 Tomáš Čech <sleep_walker@gnu.org>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; Copyright © 2017, 2018 Ben Woodcroft <donttrustben@gmail.com>
@@ -161,19 +161,20 @@ application can be customized via its API for Python scripting.")
(define-public assimp
(package
(name "assimp")
- (version "3.3.1")
+ (version "4.1.0")
(source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/assimp/assimp/archive/v"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/assimp/assimp.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "1gy7zlgkf4nmyv8n674p3f30asis0gjz8icyy11i693n13ww71fk"))))
+ "1rhyqfhzifdj7yibyanph3rh13ykw3i98dnn8mz65j780472hw28"))))
(build-system cmake-build-system)
(inputs
`(("zlib" ,zlib)))
- (home-page "http://assimp.org/")
+ (home-page "http://www.assimp.org/")
(synopsis "Asset import library")
(description
"The Open Asset Import Library loads more than 40 3D file formats into
@@ -373,13 +374,14 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.")
(name "openimageio")
(version "1.7.19")
(source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/OpenImageIO/oiio/"
- "archive/Release-" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/OpenImageIO/oiio.git")
+ (commit (string-append "Release-" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "1qlmfhvl2wva4aifyiq7c4sdy61ddl7wykwvlpfys9p701xghvj7"))))
+ "0yxxy43l3lllw7maqg42dlkgqms2d4772sxzxk7kmxg4lnhsvndc"))))
(build-system cmake-build-system)
;; FIXME: To run all tests successfully, test image sets from multiple
;; third party sources have to be present. For details see
@@ -390,7 +392,7 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.")
(inputs
`(("boost" ,boost)
("libpng" ,libpng)
- ("libjpeg" ,libjpeg-8)
+ ("libjpeg" ,libjpeg)
("libtiff" ,libtiff)
("giflib" ,giflib)
("openexr" ,openexr)
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 62d292264e..f179f293ea 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -74,6 +74,7 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system guile)
#:use-module (guix build-system trivial)
#:use-module (guix utils)
#:use-module (ice-9 match)
@@ -965,60 +966,8 @@ specification. These are the main features:
(sha256
(base32
"0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6"))))
- (build-system trivial-build-system)
- (arguments
- `(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils)
- (ice-9 match)
- (ice-9 popen)
- (ice-9 rdelim))
-
- (let* ((out (assoc-ref %outputs "out"))
- (guile (assoc-ref %build-inputs "guile"))
- (effective (read-line
- (open-pipe* OPEN_READ
- (string-append guile "/bin/guile")
- "-c" "(display (effective-version))")))
- (module-dir (string-append out "/share/guile/site/"
- effective))
- (source (assoc-ref %build-inputs "source"))
- (doc (string-append out "/share/doc/guile-minikanren"))
- (scm-files '("minikanren.scm"
- "minikanren/mkextraforms.scm"
- "minikanren/mkprelude.scm"
- "minikanren/mk.scm"))
- (guild (string-append (assoc-ref %build-inputs "guile")
- "/bin/guild")))
- ;; Make installation directories.
- (mkdir-p (string-append module-dir "/minikanren"))
- (mkdir-p doc)
-
- ;; Compile .scm files and install.
- (chdir source)
- (setenv "GUILE_AUTO_COMPILE" "0")
- (for-each (lambda (file)
- (let* ((dest-file (string-append module-dir "/"
- file))
- (go-file (match (string-split file #\.)
- ((base _)
- (string-append module-dir "/"
- base ".go")))))
- ;; Install source module.
- (copy-file file dest-file)
- ;; Install compiled module.
- (invoke guild "compile"
- "-L" source
- "-o" go-file
- file)))
- scm-files)
-
- ;; Also copy over the README.
- (install-file "README.org" doc)
-
- #t))))
- (inputs
+ (build-system guile-build-system)
+ (native-inputs
`(("guile" ,guile-2.2)))
(home-page "https://github.com/ijp/minikanren")
(synopsis "MiniKanren declarative logic system, packaged for Guile")
@@ -1055,46 +1004,8 @@ See http://minikanren.org/ for more on miniKanren generally.")
(sha256
(base32
"09q51zkw2fypad5xixskfzw2cjhjgs5cswdp3i7cpp651rb3zndh"))))
- (build-system gnu-build-system)
- (arguments
- `(#:modules ((guix build utils)
- (ice-9 popen)
- (ice-9 rdelim)
- (srfi srfi-1)
- (guix build gnu-build-system))
- #:tests? #f ; there is no test target
- #:phases
- (modify-phases %standard-phases
- (delete 'configure)
- (delete 'build)
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((cwd (getcwd))
- (scm-files (find-files "." "\\.scm$"))
- (effective (read-line
- (open-pipe* OPEN_READ
- "guile" "-c"
- "(display (effective-version))")))
- (module-dir (string-append (assoc-ref outputs "out")
- "/share/guile/site/"
- effective)))
-
- ;; Make installation directories.
- (mkdir-p module-dir)
-
- (setenv "GUILE_AUTO_COMPILE" "0")
-
- ;; Compile .scm files and install.
- (every (lambda (file)
- (let ((go-file (string-append module-dir "/"
- (basename file ".scm") ".go")))
- ;; Install source module.
- (install-file file module-dir)
- ;; Compile and install module.
- (zero? (system* "guild" "compile" "-L" cwd
- "-o" go-file file))))
- scm-files)))))))
- (inputs
+ (build-system guile-build-system)
+ (native-inputs
`(("guile" ,guile-2.2)))
(home-page "https://github.com/fisherdj/miniAdapton")
(synopsis "Minimal implementation of incremental computation in Guile
@@ -1120,65 +1031,25 @@ understand, extend, and port to host languages other than Scheme.")
(sha256
(base32
"1ia3m7dp3lcxa048q0gqbiwwsyvn99baw6xkhb4bhhzn4k7bwyqq"))))
- (build-system gnu-build-system)
+ (build-system guile-build-system)
(arguments
- `(#:modules ((guix build utils)
- (ice-9 match)
- (ice-9 rdelim)
- (ice-9 popen)
- (guix build gnu-build-system))
- #:phases
- (modify-phases %standard-phases
- (delete 'configure)
- (delete 'build)
- (delete 'check)
- (replace 'install
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (effective (read-line
- (open-pipe* OPEN_READ
- "guile" "-c"
- "(display (effective-version))")))
- (module-dir (string-append out "/share/guile/site/"
- effective))
- (source (assoc-ref inputs "source"))
- (doc (string-append out "/share/doc/guile-irregex/"))
- (guild (string-append (assoc-ref %build-inputs "guile")
- "/bin/guild")))
- ;; Make installation directories.
- (mkdir-p (string-append module-dir "/rx/source"))
- (mkdir-p doc)
-
- ;; Compile .scm files and install.
- (setenv "GUILE_AUTO_COMPILE" "0")
-
- (for-each (lambda (copy-info)
- (match copy-info
- ((src-file dest-file-basis)
- (let* ((dest-file (string-append
- module-dir dest-file-basis
- ".scm"))
- (go-file (string-append
- module-dir dest-file-basis
- ".go")))
- ;; Install source module.
- (copy-file src-file
- dest-file)
- ;; Install compiled module.
- (invoke guild "compile"
- "-L" (getcwd)
- "-o" go-file
- src-file)))))
- '(("irregex-guile.scm" "/rx/irregex")
- ("irregex.scm" "/rx/source/irregex")
- ;; Not really reachable via guile's packaging system,
- ;; but nice to have around
- ("irregex-utils.scm" "/rx/source/irregex-utils")))
-
- ;; Also copy over the README.
- (install-file "irregex.html" doc)
- #t))))))
- (inputs
+ '(#:phases (modify-phases %standard-phases
+ (add-after 'unpack 'move-files-around
+ (lambda _
+ ;; Move the relevant source files to src/ and create the
+ ;; rx/ directory to match the expected module hierarchy.
+ (mkdir-p "src/rx/source")
+ (rename-file "irregex-guile.scm"
+ "src/rx/irregex.scm")
+ (rename-file "irregex.scm"
+ "src/rx/source/irregex.scm")
+ ;; Not really reachable via guile's packaging system,
+ ;; but nice to have around.
+ (rename-file "irregex-utils.scm"
+ "src/rx/source/irregex-utils.scm")
+ #t)))
+ #:source-directory "src"))
+ (native-inputs
`(("guile" ,guile-2.2)))
(home-page "http://synthcode.com/scheme/irregex")
(synopsis "S-expression based regular expressions")
@@ -1207,83 +1078,35 @@ inspired by the SCSH regular expression system.")
(url "https://github.com/ijp/guile-gdbm.git")
(commit "fa1d5b6231d0e4d096687b378c025f2148c5f246")))
(file-name (string-append name "-" version "-checkout"))
+ (patches (search-patches
+ "guile-gdbm-ffi-support-gdbm-1.14.patch"))
(sha256
(base32
"1j8wrsw7v9w6qkl47xz0rdikg50v16nn6kbs3lgzcymjzpa7babj"))))
- (build-system trivial-build-system)
+ (build-system guile-build-system)
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (add-after 'unpack 'move-examples
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Move examples where they belong.
+ (let* ((out (assoc-ref outputs "out"))
+ (doc (string-append out "/share/doc/"
+ (strip-store-file-name out)
+ "/examples")))
+ (copy-recursively "examples" doc)
+ (delete-file-recursively "examples")
+ #t)))
+ (add-after 'unpack 'set-libgdbm-file-name
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "gdbm.scm"
+ (("\\(dynamic-link \"libgdbm\"\\)")
+ (format #f "(dynamic-link \"~a/lib/libgdbm.so\")"
+ (assoc-ref inputs "gdbm"))))
+ #t)))))
+ (native-inputs
+ `(("guile" ,guile-2.2)))
(inputs
- `(("guile" ,guile-2.2)
- ;; patch-and-repack doesn't work for git checkouts,
- ;; so we must apply the patch manually.
- ("patch" ,patch)
- ("patch-file" ,(search-patch
- "guile-gdbm-ffi-support-gdbm-1.14.patch"))))
- (propagated-inputs
`(("gdbm" ,gdbm)))
- (arguments
- `(#:modules
- ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils)
- (ice-9 rdelim)
- (ice-9 popen))
-
- ;; Avoid warnings we can safely ignore
- (setenv "GUILE_AUTO_COMPILE" "0")
-
- (let* ((out (assoc-ref %outputs "out"))
- (effective-version
- (read-line
- (open-pipe* OPEN_READ
- (string-append
- (assoc-ref %build-inputs "guile")
- "/bin/guile")
- "-c" "(display (effective-version))")))
- (module-dir (string-append out "/share/guile/site/"
- effective-version))
- (source (assoc-ref %build-inputs "source"))
- (doc (string-append out "/share/doc"))
- (guild (string-append (assoc-ref %build-inputs "guile")
- "/bin/guild"))
- (gdbm.scm-dest
- (string-append module-dir "/gdbm.scm"))
- (gdbm.go-dest
- (string-append module-dir "/gdbm.go"))
- (compile-file
- (lambda (in-file out-file)
- (invoke guild "compile" "-o" out-file in-file))))
- ;; Switch directory for compiling and installing
- (chdir source)
-
- ;; Install the documentation.
- (install-file "README.md" doc)
- (copy-recursively "examples" (string-append doc "/examples"))
-
- ;; Make installation directories.
- (mkdir-p module-dir)
-
- ;; copy the source
- (copy-file "gdbm.scm" gdbm.scm-dest)
-
- ;; Patch the FFI
- (substitute* gdbm.scm-dest
- (("\\(dynamic-link \"libgdbm\"\\)")
- (format #f "(dynamic-link \"~a/lib/libgdbm.so\")"
- (assoc-ref %build-inputs "gdbm"))))
-
- ;; Apply the patch to add support for gdbm-1.14.
- (let ((patch-command (string-append (assoc-ref %build-inputs "patch")
- "/bin/patch"))
- (patch-file (assoc-ref %build-inputs "patch-file")))
- (with-directory-excursion (dirname gdbm.scm-dest)
- (format #t "applying '~a'...~%" patch-file)
- (invoke patch-command "--force" "--input" patch-file)))
-
- ;; compile to the destination
- (compile-file gdbm.scm-dest gdbm.go-dest)
-
- #t))))
(home-page "https://github.com/ijp/guile-gdbm")
(synopsis "Guile bindings to the GDBM library via Guile's FFI")
(description
@@ -2142,32 +1965,8 @@ It has a nice, simple s-expression based syntax.")
(sha256
(base32
"16xhc3an6aglnca8xl3mvgi8hsqzqn68vsl5ga4bz8bvbap5fn4p"))))
- (build-system gnu-build-system)
- (arguments
- `(#:modules ((system base compile)
- ,@%gnu-build-system-modules)
- #:tests? #f ;No tests included
- #:phases
- (modify-phases %standard-phases
- (delete 'configure) ;No configure script
- (replace 'install
- (lambda* (#:key outputs inputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (module-dir (string-append out "/share/guile/site/2.2"))
- (language-dir (string-append module-dir "/ice-9"))
- (guild (string-append (assoc-ref inputs "guile")
- "/bin/guild")))
- ;; The original 'make install' is too primitive.
-
- ;; copy the source
- (install-file "ice-9/colorized.scm" language-dir)
-
- ;; compile to the destination
- (compile-file "ice-9/colorized.scm"
- #:output-file (string-append
- language-dir "/colorized.go"))
- #t))))))
- (inputs
+ (build-system guile-build-system)
+ (native-inputs
`(("guile" ,guile-2.2)))
(home-page "https://github.com/NalaGinrut/guile-colorized")
(synopsis "Colorized REPL for Guile")
@@ -2175,6 +1974,78 @@ It has a nice, simple s-expression based syntax.")
"Guile-colorized provides you with a colorized REPL for GNU Guile.")
(license license:gpl3+)))
+(define-public guile-pfds
+ (package
+ (name "guile-pfds")
+ (version "0.3")
+ (home-page "https://github.com/ijp/pfds")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit (string-append "v" version))))
+ (sha256
+ (base32
+ "19y33wg94pf0n98dkfqd1zbw93fgky4sawxsxl6s3vyqwl0yi5vh"))
+ (file-name (string-append name "-" version "-checkout"))))
+ (build-system guile-build-system)
+ (arguments
+ '(#:source-directory "src"
+ #:phases (modify-phases %standard-phases
+ (add-after 'unpack 'move-files-around
+ (lambda _
+ ;; Move files under a pfds/ directory to reflect the
+ ;; module hierarchy.
+ (mkdir-p "src/pfds")
+ (for-each (lambda (file)
+ (rename-file file
+ (string-append "src/pfds/"
+ file)))
+ '("bbtrees.sls"
+ "deques"
+ "deques.sls"
+ "dlists.sls"
+ "fingertrees.sls"
+ "hamts.sls"
+ "heaps.sls"
+ "private"
+ "psqs.sls"
+ "queues"
+ "queues.sls"
+ "sequences.sls"
+ "sets.sls"))
+
+ ;; In Guile <= 2.2.4, there's no way to tell 'guild
+ ;; compile' to accept the ".sls" extension. So...
+ (for-each (lambda (file)
+ (rename-file file
+ (string-append
+ (string-drop-right file 4)
+ ".scm")))
+ (find-files "." "\\.sls$"))
+ #t)))))
+ (native-inputs
+ `(("guile" ,guile-2.2)))
+ (synopsis "Purely functional data structures for Guile")
+ (description
+ "This package provides purely functional data structures written in R6RS
+Scheme and compiled for Guile. It has been tested with Racket, Guile 2,
+Vicare Scheme and IronScheme. Right now it contains:
+
+@itemize
+@item queues
+@item deques
+@item bbtrees
+@item sets
+@item dlists
+@item priority search queues (PSQs)
+@item finger trees
+@item sequences
+@item heaps
+@item hash array mapped tries (HAMTs).
+@end itemize\n")
+ (license license:bsd-3)))
+
(define-public guile-simple-zmq
(let ((commit "1f3b7c0b9b249c6fde8e8a632b252d8a1b794424")
(revision "1"))
@@ -2191,72 +2062,20 @@ It has a nice, simple s-expression based syntax.")
(base32
"0nj2pd5bsmmgd3c54wh4sixfhmsv1arsq7yam2d7487h3n9q57r7"))
(file-name (git-file-name name version))))
- (build-system trivial-build-system)
+ (build-system guile-build-system)
(arguments
- `(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils)
- (srfi srfi-26)
- (ice-9 match)
- (ice-9 popen)
- (ice-9 rdelim))
-
- (let* ((out (assoc-ref %outputs "out"))
- (guile (assoc-ref %build-inputs "guile"))
- (effective (read-line
- (open-pipe* OPEN_READ
- (string-append guile "/bin/guile")
- "-c" "(display (effective-version))")))
- (module-dir (string-append out "/share/guile/site/"
- effective))
- (go-dir (string-append out "/lib/guile/"
- effective "/site-ccache/"))
- (source (string-append (assoc-ref %build-inputs "source")
- "/src"))
- (scm-file "simple-zmq.scm")
- (guild (string-append (assoc-ref %build-inputs "guile")
- "/bin/guild"))
- (zmq (assoc-ref %build-inputs "zeromq"))
- (deps (list zmq))
- (path (string-join
- (map (cut string-append <>
- "/lib/")
- deps)
- ":")))
- ;; Make installation directories.
- (mkdir-p module-dir)
- (mkdir-p go-dir)
-
- ;; Compile .scm files and install.
- (chdir source)
- (setenv "GUILE_AUTO_COMPILE" "0")
- (for-each (lambda (file)
- (let* ((dest-file (string-append module-dir "/"
- file))
- (go-file (match (string-split file #\.)
- ((base _)
- (string-append go-dir "/"
- base ".go")))))
- ;; Install source module.
- (copy-file file dest-file)
- (substitute* dest-file
- (("\\(dynamic-link \"libzmq\"\\)")
- (format #f "(dynamic-link \"~a/lib/libzmq.so\")"
- (assoc-ref %build-inputs "zeromq"))))
-
- ;; Install and compile module.
- (unless (zero? (system* guild "compile"
- "-L" source
- "-o" go-file
- dest-file))
- (error (format #f "Failed to compile ~s to ~s!"
- file go-file)))))
- (list scm-file))
- #t))))
- (inputs
+ `(#:source-directory "src"
+ #:phases (modify-phases %standard-phases
+ (add-after 'unpack 'set-libzmq-file-name
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/simple-zmq.scm"
+ (("\\(dynamic-link \"libzmq\"\\)")
+ (format #f "(dynamic-link \"~a/lib/libzmq.so\")"
+ (assoc-ref inputs "zeromq"))))
+ #t)))))
+ (native-inputs
`(("guile" ,guile-2.2)))
- (propagated-inputs
+ (inputs
`(("zeromq" ,zeromq)))
(home-page "https://github.com/jerry40/guile-simple-zmq")
(synopsis "Guile wrapper over ZeroMQ library")
@@ -2280,106 +2099,46 @@ messaging library.")
(sha256
(base32
"0y5jr0f0dyskvsawqbf6n0bpg8jirw4mhqbarf2a6p9lxhqha9s9"))))
- (build-system trivial-build-system)
+ (build-system guile-build-system)
(arguments
- `(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils)
- (srfi srfi-26)
- (ice-9 match)
- (ice-9 popen)
- (ice-9 rdelim))
-
- (let* ((out (assoc-ref %outputs "out"))
- (guile (assoc-ref %build-inputs "guile"))
- (effective (read-line
- (open-pipe* OPEN_READ
- (string-append guile "/bin/guile")
- "-c" "(display (effective-version))")))
- (module-dir (string-append out "/share/guile/site/"
- effective))
- (kernel-dir (string-append out "/share/jupyter/kernels/guile"))
- (go-dir (string-append out "/lib/guile/"
- effective
- "/site-ccache"))
- (source (string-append (assoc-ref %build-inputs "source")
- "/src"))
- (scm-files '("hmac.scm"
- "tools.scm"
- "guile-jupyter-kernel.scm"))
- (kernel-file "kernel.json")
- (guild (string-append (assoc-ref %build-inputs "guile")
- "/bin/guild"))
- (g-szmq (assoc-ref %build-inputs "guile-simple-zmq"))
- (json (assoc-ref %build-inputs "guile-json"))
- (deps (list g-szmq json))
- (path (string-join
- (map (cut string-append <>
- "/share/guile/site/"
- effective)
- deps)
- ":"))
- (gopath (string-join
- (map (cut string-append <>
- "/lib/guile/" effective
- "/site-ccache/")
- deps)
- ":")))
-
- ;; Make installation directories.
- (mkdir-p module-dir)
- (mkdir-p kernel-dir)
- (mkdir-p go-dir)
-
- ;; Make a writable copy of SOURCE.
- (copy-recursively source ".")
-
- ;; Record the absolute file name of the 'openssl' command.
- (substitute* "hmac.scm"
- (("openssl")
- (string-append (assoc-ref %build-inputs "openssl")
- "/bin/openssl")))
-
- ;; Compile .scm files and install.
- (setenv "GUILE_AUTO_COMPILE" "0")
- (setenv "GUILE_LOAD_PATH" path)
- (setenv "GUILE_LOAD_COMPILED_PATH" gopath)
-
- (for-each (lambda (file)
- (let* ((dest-file (string-append module-dir "/"
- file))
- (go-file (match (string-split file #\.)
- ((base _)
- (string-append go-dir "/"
- base ".go")))))
- ;; Install source module.
- (copy-file file dest-file)
-
- ;; Install compiled module.
- (unless (zero? (system* guild "compile"
- "-L" source
- "-o" go-file
- file))
- (error (format #f "Failed to compile ~s to ~s!"
- file go-file)))))
- scm-files)
-
- ;; Install kernel
- (copy-file kernel-file (string-append kernel-dir "/"
- kernel-file))
- ;; Fix hard-coded file name in the kernel
- (substitute* (string-append kernel-dir "/"
- kernel-file)
- (("/home/jerry/.local/share/jupyter/kernels/guile/guile-jupyter-kernel.scm")
- (string-append module-dir "/guile-jupyter-kernel.scm"))
- (("\"guile\"")
- (string-append "\"" (assoc-ref %build-inputs "guile")
- "/bin/guile\""))
- (("-s")
- (string-append "--no-auto-compile\", \"-s")))
-
- #t))))
+ '(#:phases (modify-phases %standard-phases
+ (add-after 'unpack 'set-openssl-file-name
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Record the absolute file name of the 'openssl'
+ ;; command.
+ (substitute* "src/hmac.scm"
+ (("openssl")
+ (string-append (assoc-ref inputs "openssl")
+ "/bin/openssl")))
+ #t))
+
+ ;; XXX: The code uses 'include' to include its own source
+ ;; files, and "-L src" isn't enough in this case.
+ (add-before 'build 'chdir
+ (lambda _ (chdir "src") #t))
+ (add-after 'build 'chdir-back
+ (lambda _ (chdir "..") #t))
+
+ (add-after 'install 'install-kernel
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (dir (string-append
+ out "/share/jupyter/kernels/guile")))
+ ;; Install kernel.
+ (install-file "src/kernel.json" dir)
+
+ ;; Fix hard-coded file name in the kernel.
+ (substitute* (string-append dir "/kernel.json")
+ (("/home/.*/guile-jupyter-kernel.scm")
+ (string-append out "/share/guile/site/"
+ (target-guile-effective-version)
+ "/guile-jupyter-kernel.scm"))
+ (("\"guile\"")
+ (string-append "\"" (assoc-ref inputs "guile")
+ "/bin/guile\""))
+ (("-s")
+ (string-append "--no-auto-compile\", \"-s")))
+ #t))))))
(inputs
`(("openssl" ,openssl)
("guile" ,guile-2.2)))
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index b2e67e52f9..3410880a67 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -60,7 +60,7 @@
(define-public feh
(package
(name "feh")
- (version "2.27")
+ (version "2.27.1")
(home-page "https://feh.finalrewind.org/")
(source (origin
(method url-fetch)
@@ -68,7 +68,7 @@
name "-" version ".tar.bz2"))
(sha256
(base32
- "0kn6cka9m76697i495npd60ad64jnfnzv5z6znzyr0vlxx2nhcmg"))))
+ "10zk76l491s22qrv86rax6cvpgwyl3qq0izl2pbk0k1z1kw3ihvf"))))
(build-system gnu-build-system)
(arguments
'(#:phases (modify-phases %standard-phases (delete 'configure))
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index a7d5c9f445..2ba6d76cae 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2537,6 +2537,37 @@ ClasspathX project. It provides implementations of version 3.0 of the servlet
API and version 2.1 of the Java ServerPages API.")
(license license:gpl3+)))
+(define-public java-javaee-servletapi
+ (package
+ (name "java-javaee-servletapi")
+ (version "3.1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/javaee/servlet-spec/"
+ "archive/" version ".zip"))
+ (file-name (string-append name "-" version ".zip"))
+ (sha256
+ (base32
+ "0m6p13vgfb1ihich1jp5j6fqlhkjsrkn32c86bsbkryp38ipwg8w"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "javax-servletapi.jar"
+ ;; no tests
+ #:tests? #f
+ #:source-dir "src/main/java"))
+ (native-inputs
+ `(("unzip" ,unzip)))
+ (home-page "https://javaee.github.io/servlet-spec/")
+ (synopsis "Java servlet API")
+ (description "Java Servlet is the foundation web specification in the
+Java Enterprise Platform. Developers can build web applications using the
+Servlet API to interact with the request/response workflow. This project
+provides information on the continued development of the Java Servlet
+specification.")
+ ;; Main code is dual-licensed by Oracle under either GLP2 or CDDL 1.1.
+ ;; Some files are licensed under ASL 2.0.
+ (license (list license:asl2.0 license:gpl2 license:cddl1.1))))
+
(define-public java-swt
(package
(name "java-swt")
@@ -4449,7 +4480,7 @@ these scripting language engines.")
#:tests? #f
#:source-dir "src/java"))
(inputs
- `(("java-tomcat" ,java-tomcat)
+ `(("servlet" ,java-classpathx-servletapi)
("java-jdom" ,java-jdom)
("java-commons-beanutils" ,java-commons-beanutils)))
(native-inputs
@@ -7908,6 +7939,10 @@ the dependency is said to be unsatisfied, and the application is broken.")
(uri (string-append "https://github.com/google/guice/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
+ (modules '((guix build utils)))
+ (snippet
+ `(begin
+ (for-each delete-file (find-files "." ".*.jar"))))
(sha256
(base32
"0dwmqjzlavb144ywqqglj3h68hqszkff8ai0a42hyb5il0qh4rbp"))))
@@ -7940,7 +7975,7 @@ Java 6 and above.")
#:tests? #f)); FIXME: not in a java subdir
(inputs
`(("guice" ,java-guice)
- ("servlet" ,java-tomcat)
+ ("servlet" ,java-classpathx-servletapi)
,@(package-inputs java-guice)))))
(define-public java-assertj
@@ -8425,15 +8460,15 @@ algorithms and xxHash hashing algorithm.")
(define-public java-bouncycastle
(package
(name "java-bouncycastle")
- (version "1.59")
+ (version "1.60")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/bcgit/bc-java/archive/r"
- (substring version 0 1) "rv"
+ (substring version 0 1) "v"
(substring version 2 4) ".tar.gz"))
(sha256
(base32
- "1bwl499whlbq896w18idqw2dkp8v0wp0npv9g71i5fgf8xjh0k3q"))
+ "0v434513y708qc87k4xz13p2kzydc736lk3ks67df9mg11s7hchv"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -10109,7 +10144,7 @@ and reporting) project dependencies. It is characterized by the following:
`(("java-guice" ,java-guice)
("java-guice-servlet" ,java-guice-servlet)
("java-javax-inject" ,java-javax-inject)
- ("java-tomcat" ,java-tomcat)
+ ("java-javaee-servletapi" ,java-javaee-servletapi)
("java-junit" ,java-junit)
("java-slf4j-api" ,java-slf4j-api)
("java-jsr305" ,java-jsr305)
@@ -10273,6 +10308,7 @@ static code analysis or code manipulation.")))
(method url-fetch)
(uri (string-append "https://github.com/qos-ch/logback/archive/v_"
version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1x6ga74yfgm94cfx98gybakbrlilx8i2gn6dx13l40kasmys06mi"))
@@ -10303,7 +10339,7 @@ static code analysis or code manipulation.")))
#t)))))
(inputs
`(("java-javax-mail" ,java-javax-mail)
- ("java-tomcat" ,java-tomcat)
+ ("servlet" ,java-javaee-servletapi)
("java-commons-compiler" ,java-commons-compiler)
("java-janino" ,java-janino)))
(native-inputs
@@ -10347,7 +10383,7 @@ This module lays the groundwork for the other two modules.")
(find-files (assoc-ref inputs input)
".*.jar"))
'("java-logback-core" "java-slf4j-api"
- "java-commons-compiler" "java-tomcat"
+ "java-commons-compiler" "servlet"
"groovy")))
":"))
(apply invoke "groovyc" "-d" "build/classes" "-j"
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 6fb1eee6cc..39e2322739 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -314,7 +314,7 @@
"USE_SYSTEM_LIBGIT2=1"
"USE_SYSTEM_OPENSPECFUN=1")))
(inputs
- `(("llvm" ,llvm)
+ `(("llvm" ,llvm-3.9.1)
;; The bundled version is 3.3.0 so stick to that version. With other
;; versions, we get test failures in 'linalg/arnoldi' as described in
diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm
index 6f8571d22a..62a971a0a8 100644
--- a/gnu/packages/kodi.scm
+++ b/gnu/packages/kodi.scm
@@ -395,7 +395,7 @@ generator library for C++.")
("libxrender" ,libxrender)
("libxslt" ,libxslt)
("lzo" ,lzo)
- ("mysql" ,mysql)
+ ("mariadb" ,mariadb)
("openssl" ,openssl)
("pcre" ,pcre)
("pulseaudio" ,pulseaudio)
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index e4b8bbbbed..73788ea80f 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -65,7 +65,7 @@
(arguments `(#:configure-flags '("--disable-udev")))
;; (inputs `(("eudev" ,eudev)))
- (home-page "http://libusb.info")
+ (home-page "https://libusb.info")
(synopsis "User-space USB library")
(description
"Libusb is a library that gives applications easy access to USB
@@ -91,7 +91,7 @@ devices on various operating systems.")
`(("pkg-config" ,pkg-config)))
(inputs
`(("libusb" ,libusb)))
- (home-page "http://libusb.info")
+ (home-page "https://libusb.info")
(synopsis "Compatibility shim for libusb")
(description
"Libusb-compat provides a shim allowing applications based on older
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 2ce0f56b84..7edf20ebc9 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -28,6 +28,7 @@
;;; Copyright © 2017 nee <nee-git@hidamari.blue>
;;; Copyright © 2017 Dave Love <fx@gnu.org>
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
+;;; Copyright © 2018 Brendan Tildesley <brendan.tildesley@openmailbox.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -59,6 +60,7 @@
#:use-module (gnu packages calendar)
#:use-module (gnu packages check)
#:use-module (gnu packages crypto)
+ #:use-module (gnu packages cryptsetup)
#:use-module (gnu packages compression)
#:use-module (gnu packages databases)
#:use-module (gnu packages datastructures)
@@ -402,8 +404,8 @@ It has been modified to remove all non-free binary blobs.")
;; supports qemu "virt" machine and possibly a large number of ARM boards.
;; See : https://wiki.debian.org/DebianKernel/ARMMP.
-(define %linux-libre-version "4.17.6")
-(define %linux-libre-hash "0d48r5jpj71ikdalz5z756snwq54cpnwnba8bbhg8r2ri3770wcm")
+(define %linux-libre-version "4.17.9")
+(define %linux-libre-hash "1mahjxn4j7sdjdrbkrgal37nfx23njhnmrxcmixmphps8i44rlwm")
(define-public linux-libre
(make-linux-libre %linux-libre-version
@@ -411,8 +413,8 @@ It has been modified to remove all non-free binary blobs.")
%linux-compatible-systems
#:configuration-file kernel-config))
-(define %linux-libre-4.14-version "4.14.55")
-(define %linux-libre-4.14-hash "1rlapfwkjfmyk4ahvqwqap4w9flbw2zag0r04fwrmyqz1y5ijayf")
+(define %linux-libre-4.14-version "4.14.57")
+(define %linux-libre-4.14-hash "1qp8g87ss4a3iz6k3k4mkllibvdrixh6ys4a9l7jidp2wmkxj3kc")
(define-public linux-libre-4.14
(make-linux-libre %linux-libre-4.14-version
@@ -421,14 +423,14 @@ It has been modified to remove all non-free binary blobs.")
#:configuration-file kernel-config))
(define-public linux-libre-4.9
- (make-linux-libre "4.9.112"
- "1zrnbvzr7z5ky79r6hpjvn15bxmwcyi8lr7yq2nx1r8ladl8lnb0"
+ (make-linux-libre "4.9.114"
+ "069ckgck4skzci6sjrpk1sja0h1fdmrlcbpnqwl2844m5vfffzk9"
%intel-compatible-systems
#:configuration-file kernel-config))
(define-public linux-libre-4.4
- (make-linux-libre "4.4.140"
- "10h4k2c2ncnc1h61kikqb618dh9lp8fmzagz2ydykrdbb5jjiy82"
+ (make-linux-libre "4.4.143"
+ "0kawgpmmv37gds3cbww791bbzvwfjg760yg3qw3dk913dawhdmzw"
%intel-compatible-systems
#:configuration-file kernel-config))
@@ -1609,7 +1611,7 @@ processes currently causing I/O.")
(define-public fuse
(package
(name "fuse")
- (version "2.9.7")
+ (version "2.9.8")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/libfuse/libfuse/releases/"
@@ -1617,7 +1619,7 @@ processes currently causing I/O.")
"/fuse-" version ".tar.gz"))
(sha256
(base32
- "0x486nri30f7cgy0acj87v9sjxsjrr0cymrvw4h3r0sgmp8k4943"))
+ "1k4ggl2y5v0lr98l189pc81w0zijj23wbbnijsc6zlx84117nd0j"))
(patches (search-patches "fuse-overlapping-headers.patch"))))
(build-system gnu-build-system)
(inputs `(("util-linux" ,util-linux)))
@@ -3588,7 +3590,7 @@ The following service daemons are also provided:
(define-public rng-tools
(package
(name "rng-tools")
- (version "6.3")
+ (version "6.3.1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/nhorman/rng-tools/"
@@ -3596,7 +3598,7 @@ The following service daemons are also provided:
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1lc2kqw3idwmjyjnf16sqz0f4r1w7c638n4la1j1n5c3188q26bv"))))
+ "04p7wvcm389s21y9mq8ss6z2szxi4nfrfixzwqjkq2qciz705i4s"))))
(build-system gnu-build-system)
(arguments
`(;; Avoid using OpenSSL, curl, and libxml2, reducing the closure by 166 MiB.
@@ -3699,7 +3701,43 @@ as used on certified hardware security devices.")
"0zwq19siiwf09h7lwa7n7mgmrr8cxifp45lmwgcfr8c1gviv6b0i"))))
(build-system gnu-build-system)
(arguments
- `(#:configure-flags (list "--disable-pywrap")))
+ `(#:configure-flags (list "--disable-pywrap")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'patch-source-shebangs 'patch-hardcoded-paths
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (utils-linux (assoc-ref inputs "utils-linux"))
+ (cryptsetup (assoc-ref inputs "cryptsetup"))
+ (linux-pam (assoc-ref inputs "linux-pam"))
+ (lvm2 (assoc-ref inputs "lvm2")))
+ (substitute* '("src/utils/ecryptfs-mount-private"
+ "src/utils/ecryptfs-umount-private"
+ "src/utils/ecryptfs-setup-private"
+ "src/utils/mount.ecryptfs.c"
+ "src/pam_ecryptfs/pam_ecryptfs.c"
+ "src/desktop/ecryptfs-mount-private.desktop.in"
+ "src/utils/ecryptfs-setup-swap")
+ (("/bin/mount")
+ (string-append utils-linux "/bin/mount"))
+ (("/bin/umount")
+ (string-append utils-linux "/bin/umount"))
+ (("/sbin/mount.ecryptfs_private")
+ (string-append out "/sbin/mount.ecryptfs_private"))
+ (("/sbin/umount.ecryptfs_private")
+ (string-append out "/sbin/umount.ecryptfs_private"))
+ (("/usr/bin/ecryptfs-mount-private")
+ (string-append out "/bin/ecryptfs-mount-private"))
+ (("/usr/bin/ecryptfs-rewrite-file")
+ (string-append out "/bin/ecryptfs-rewrite-file"))
+ (("/usr/bin/ecryptfs-setup-private")
+ (string-append out "/bin/ecryptfs-setup-private"))
+ (("/sbin/cryptsetup")
+ (string-append cryptsetup "/sbin/cryptsetup"))
+ (("/sbin/unix_chkpwd")
+ (string-append linux-pam "/sbin/unix_chkpwd"))
+ (("/sbin/dmsetup")
+ (string-append lvm2 "/sbin/dmsetup")))))))))
(native-inputs
`(("intltool" ,intltool)
("perl" ,perl) ; for pod2man
@@ -3707,6 +3745,9 @@ as used on certified hardware security devices.")
(inputs
`(("keyutils" ,keyutils)
("linux-pam" ,linux-pam)
+ ("utils-linux" ,util-linux)
+ ("cryptsetup" ,cryptsetup)
+ ("lvm2" ,lvm2)
("nss" ,nss)))
(home-page "http://ecryptfs.org/")
(synopsis "eCryptfs cryptographic file system utilities")
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index f127e27e3c..3d7b0e4632 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -261,14 +261,14 @@ aliasing facilities to work just as they would on normal mail.")
(define-public mutt
(package
(name "mutt")
- (version "1.10.0")
+ (version "1.10.1")
(source (origin
(method url-fetch)
(uri (string-append "https://bitbucket.org/mutt/mutt/downloads/"
"mutt-" version ".tar.gz"))
(sha256
(base32
- "0nskymwr2cdapxlfv0ysz3bjwhb4kcvl5a3c39237k7r1vwva582"))
+ "182lkbkpd3q3l1x6bvyds90ycp38gyyxhf35ry0d3hwf2n1khjkk"))
(patches (search-patches "mutt-store-references.patch"))))
(build-system gnu-build-system)
(inputs
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 1e0e1998db..fd3626a595 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -207,6 +207,37 @@ programming languages.")
(home-page "https://stcorp.nl/coda")
(license license:gpl2+)))
+(define-public qhull
+ (package
+ (name "qhull")
+ (version "2015.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://www.qhull.org/download/qhull-"
+ (car (string-split version #\.))
+ "-src-7.2.0.tgz"))
+ (sha256
+ (base32
+ "0dm4b2xr3asy6w74khq2zg4gf26zsy3qf9sq7pf7lmrvbj911c3q"))))
+ (build-system cmake-build-system)
+ (synopsis "Calculate convex hulls and related structures")
+ (description
+ "@code{Qhull} computes the convex hull, Delaunay triangulation, Voronoi
+diagram, halfspace intersection about a point, furthest-site Delaunay
+triangulation, and furthest-site Voronoi diagram. The source code runs in 2-d,
+3-d, 4-d, and higher dimensions. @code{Qhull} implements the Quickhull
+algorithm for computing the convex hull. It handles roundoff errors from
+floating point arithmetic. It computes volumes, surface areas, and
+approximations to the convex hull.
+
+@code{Qhull} does not support triangulation of non-convex surfaces, mesh
+generation of non-convex objects, medium-sized inputs in 9-D and higher, alpha
+shapes, weighted Voronoi diagrams, Voronoi volumes, or constrained Delaunay
+triangulations.")
+ (home-page "http://qhull.org")
+ (license (license:non-copyleft "file://COPYING.txt"
+ "See COPYING in the distribution."))))
+
(define-public units
(package
(name "units")
@@ -1336,6 +1367,7 @@ can solve two kinds of problems:
(build-system gnu-build-system)
(inputs
`(("lapack" ,lapack)
+ ("qhull" ,qhull)
("readline" ,readline)
("gl2ps" ,gl2ps)
("glpk" ,glpk)
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index a3e5687dc8..34fbce0e62 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -428,7 +428,7 @@ artifact and repository handling code.")
("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
("java-slf4j-api" ,java-slf4j-api)
- ("java-tomcat" ,java-tomcat)
+ ("java-javaee-servletapi" ,java-javaee-servletapi)
("maven-wagon-provider-api" ,maven-wagon-provider-api)))
(synopsis "Test classes from maven-wagon")
(description "Maven Wagon is a transport abstraction that is used in Maven's
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 1212a06eeb..a34f744659 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -12,7 +12,7 @@
;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
-;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
;;;
@@ -487,14 +487,14 @@ compromised.")
(define-public znc
(package
(name "znc")
- (version "1.7.0")
+ (version "1.7.1")
(source (origin
(method url-fetch)
(uri (string-append "http://znc.in/releases/archive/znc-"
version ".tar.gz"))
(sha256
(base32
- "0vxra50418bsjfdpf8vl70fijv8syvasjqdxfyjliff6k91k2zn0"))))
+ "1i1r1lh9q2mr1bg520zrvrlwhrhy6wibrin78wjxq1gab1qymks4"))))
;; TODO: autotools support has been deprecated, and new features like i18n
;; are only supported when building with cmake.
(build-system gnu-build-system)
@@ -873,7 +873,7 @@ protocols.")
(define-public c-toxcore
(package
(name "c-toxcore")
- (version "0.2.2")
+ (version "0.2.4")
(source
(origin
(method url-fetch)
@@ -882,7 +882,7 @@ protocols.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "18bfqx0ylbas9gs91rkspf04l5fjjcl0mxm1gfs2d59bv65mvcm3"))))
+ "0sdszy079f82ncrgq1wsjpk2374n5hm4las75gj3lrdhljl15izl"))))
(arguments
`(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable
; for now.
@@ -961,14 +961,14 @@ instant messenger with audio and video chat capabilities.")
(define-public qtox
(package
(name "qtox")
- (version "1.16.1")
+ (version "1.16.3")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/qTox/qTox/archive/v"
version ".tar.gz"))
(sha256
(base32
- "11l4klw0g6j4qq95krgyd0npxmmpcgk4vp9jq429sbsqn1s039j4"))
+ "10n3cgw9xaqin9la8wpd8v83bkjmimicgbyp5ninsdgsrgky4hmq"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system cmake-build-system)
(arguments
@@ -990,7 +990,7 @@ instant messenger with audio and video chat capabilities.")
,(list (string-append (assoc-ref inputs "qtsvg")
"/lib/qt5/plugins/"))))))))))
(inputs
- `(("ffmpeg" ,ffmpeg-3.4)
+ `(("ffmpeg" ,ffmpeg)
("filteraudio" ,filteraudio)
("glib" ,glib)
("gtk+" ,gtk+-2)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index bdc6d050a9..0185b8fd9c 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -50,6 +50,7 @@
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system waf)
#:use-module (guix build-system trivial)
+ #:use-module (guix build-system go)
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages apr)
@@ -128,6 +129,8 @@
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
#:use-module (gnu packages xiph)
+ #:use-module (gnu packages golang)
+ #:use-module (gnu packages lua)
#:use-module ((srfi srfi-1) #:select (last)))
(define-public aria-maestosa
@@ -4131,3 +4134,89 @@ at @code{musicbrainz.org}.")
It can be used in daemon mode along with the Music-on-Console (MOC) and cmus
console music players.")
(license license:gpl3+)))
+
+(define-public demlo
+ (let ((commit "fe9ec4c8ac2fa995ec18e6ac86d50d46df06ec01")
+ (revision "0"))
+ (package
+ (name "demlo")
+ (version (git-version "3.8" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url
+ "https://gitlab.com/ambrevar/demlo")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1afkbqhzn6da7zaf5ab7dvyqj1izqhzprwfb4hw448fllda9bdvk"))))
+ (build-system go-build-system)
+ (native-inputs
+ `(("lua" ,lua)
+ ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
+ ("go-github-com-mattn-go-colorable" ,go-github-com-mattn-go-colorable)
+ ("go-github-com-aarzilli-golua" ,go-github-com-aarzilli-golua)
+ ("go-gitlab-com-ambrevar-damerau" ,go-gitlab-com-ambrevar-damerau)
+ ("go-gitlab-com-ambrevar-golua-unicode" ,go-gitlab-com-ambrevar-golua-unicode)
+ ("go-github-com-mgutz-ansi" ,go-github-com-mgutz-ansi)
+ ("go-github-com-michiwend-gomusicbrainz" ,go-github-com-michiwend-gomusicbrainz)
+ ("go-github-com-stevedonovan-luar" ,go-github-com-stevedonovan-luar)
+ ("go-github-com-wtolson-go-taglib" ,go-github-com-wtolson-go-taglib)
+ ("go-github-com-yookoala-realpath" ,go-github-com-yookoala-realpath)))
+ (inputs
+ `(("chromaprint" ,chromaprint)
+ ("ffmpeg" ,ffmpeg)))
+ (arguments
+ `(#:import-path "gitlab.com/ambrevar/demlo"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'wrap-program
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (ffmpeg (assoc-ref inputs "ffmpeg"))
+ (chromaprint (assoc-ref inputs "chromaprint")))
+ (wrap-program (string-append out "/bin/demlo")
+ `("XDG_DATA_DIRS" ":" prefix (,out))
+ `("PATH" ":" prefix
+ ,(map (lambda (dir)
+ (string-append dir "/bin:"
+ dir "/sbin"))
+ (list ffmpeg chromaprint))))
+ #t)))
+ (add-after 'install-source 'install-scripts
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (root (string-append out "/src/gitlab.com/ambrevar/demlo"))
+ (xdg-data-dirs (string-append out "/demlo")))
+ (copy-recursively (string-append root "/actions")
+ (string-append xdg-data-dirs "/actions"))
+ (copy-recursively (string-append root "/scripts")
+ (string-append xdg-data-dirs "/scripts"))
+ (install-file (string-append root "/config.lua") xdg-data-dirs)
+ ;; TODO: Test fish completion.
+ (install-file (string-append root "/completion/demlo.fish")
+ (string-append out "/share/fish/vendor_completions.d"))
+ #t))))))
+ (home-page "https://gitlab.com/ambrevar/demlo")
+ (synopsis "Dynamic and extensible music library organizer")
+ (description "Demlo is a music library organizer. It can encode, fix
+case, change folder hierarchy according to tags or file properties, tag from
+an online database, copy covers while ignoring duplicates or those below a
+quality threshold, and much more. It makes it possible to manage your
+libraries uniformly and dynamically. You can write your own rules to fit your
+needs best.
+
+Demlo can address any of these recurring music library issues (and much more):
+
+@itemize
+@item Fix the lack of folder structure.
+@item Normalize tags, fix their case, chose which tags to keep and which to
+discard.
+@item Handle lossy and lossless audio differently.
+@item Handle mp3 id3tags hell...
+@item Handle multiple covers, whether embedded and/or external, resize covers,
+discard bad quality ones.
+@end itemize\n")
+ (license license:expat))))
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index ebf0e86f12..90967b9b1f 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -534,7 +534,7 @@ and up to 1 Mbit/s downstream.")
(define-public whois
(package
(name "whois")
- (version "5.3.1")
+ (version "5.3.2")
(source
(origin
(method url-fetch)
@@ -542,7 +542,7 @@ and up to 1 Mbit/s downstream.")
name "_" version ".tar.xz"))
(sha256
(base32
- "0gl98l26dcgmlap0pxllbv4b9n2fr5b7zml3ijf8sf3a60qsskpg"))))
+ "0m3352d5b0ragygbqjbaimghrbx4va2rixa34j5a1g3jj6l4nwbr"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no test suite
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 61e203c611..b7e3b320f6 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -101,8 +101,8 @@
;; Note: the 'update-guix-package.scm' script expects this definition to
;; start precisely like this.
(let ((version "0.15.0")
- (commit "4876bc8234095e2af191b0c6470455ce67d9f5f7")
- (revision 1))
+ (commit "8bbb79cf95a07a40950448a8a09d888254404ed4")
+ (revision 2))
(package
(name "guix")
@@ -118,7 +118,7 @@
(commit commit)))
(sha256
(base32
- "0qw0ffrxzxfk76pp38kx222ndpsv9mbhlmfycagyipgypgjdd9lq"))
+ "0h83l91v2cg9bb78c7vqx9wj71ckz22jbjmm2fy4vqs9216jnvc0"))
(file-name (string-append "guix-" version "-checkout"))))
(build-system gnu-build-system)
(arguments
@@ -263,7 +263,10 @@
("sqlite" ,sqlite)
("libgcrypt" ,libgcrypt)
- ("guile" ,guile-2.2)
+
+ ;; Use 2.2.4 to avoid various thread-safety issues while building
+ ;; code in parallel.
+ ("guile" ,guile-2.2.4)
;; Many tests rely on the 'guile-bootstrap' package, which is why we
;; have it here.
@@ -345,7 +348,7 @@ the Nix package manager.")
(let ((out (assoc-ref outputs "out")))
(substitute* (find-files (string-append out "/libexec"))
(("exec \".*/bin/guix\"")
- "exec ~root/.config/current/bin/guix"))
+ "exec ~root/.config/guix/current/bin/guix"))
#t)))
(delete 'wrap-program)))))))
diff --git a/gnu/packages/patches/file-CVE-2017-1000249.patch b/gnu/packages/patches/file-CVE-2017-1000249.patch
deleted file mode 100644
index 505acf1592..0000000000
--- a/gnu/packages/patches/file-CVE-2017-1000249.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-https://github.com/file/file/commit/35c94dc6acc418f1ad7f6241a6680e5327495793.patch
-http://openwall.com/lists/oss-security/2017/09/05/3
-
-The patch is minorly modified to apply to file-5.30
-
-From 35c94dc6acc418f1ad7f6241a6680e5327495793 Mon Sep 17 00:00:00 2001
-From: Christos Zoulas <christos@zoulas.com>
-Date: Sun, 27 Aug 2017 07:55:02 +0000
-Subject: [PATCH] Fix always true condition (Thomas Jarosch)
-
----
- src/readelf.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/readelf.c b/src/readelf.c
-index 81451827..5f425c97 100644
---- a/src/readelf.c
-+++ b/src/readelf.c
-@@ -511,7 +511,7 @@ do_bid_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
- size_t noff, size_t doff, int *flags)
- {
- if (namesz == 4 && strcmp((char *)&nbuf[noff], "GNU") == 0 &&
-- type == NT_GNU_BUILD_ID && (descsz >= 4 || descsz <= 20)) {
-+ type == NT_GNU_BUILD_ID && (descsz >= 4 && descsz <= 20)) {
- uint8_t desc[20];
- const char *btype;
- uint32_t i;
diff --git a/gnu/packages/patches/fltk-shared-lib-defines.patch b/gnu/packages/patches/fltk-shared-lib-defines.patch
deleted file mode 100644
index d36a50ff5e..0000000000
--- a/gnu/packages/patches/fltk-shared-lib-defines.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-This patch from upstream revision 10588.
-
---- fltk-1.3.3/src/Xutf8.h
-+++ fltk-1.3.3/src/Xutf8.h
-@@ -25,6 +25,7 @@
- #include <X11/Xlib.h>
- #include <X11/Xlocale.h>
- #include <X11/Xutil.h>
-+#include <FL/Fl_Export.H>
-
- typedef struct {
- int nb_font;
-@@ -98,8 +99,8 @@
- XUtf8FontStruct *font_set,
- unsigned int ucs);
-
--int
--XGetUtf8FontAndGlyph(
-+FL_EXPORT int
-+fl_XGetUtf8FontAndGlyph(
- XUtf8FontStruct *font_set,
- unsigned int ucs,
- XFontStruct **fnt,
---- fltk-1.3.3/src/gl_draw.cxx
-+++ fltk-1.3.3/src/gl_draw.cxx
-@@ -114,7 +114,7 @@
- for (int i = 0; i < 0x400; i++) {
- XFontStruct *font = NULL;
- unsigned short id;
-- XGetUtf8FontAndGlyph(gl_fontsize->font, ii, &font, &id);
-+ fl_XGetUtf8FontAndGlyph(gl_fontsize->font, ii, &font, &id);
- if (font) glXUseXFont(font->fid, id, 1, gl_fontsize->listbase+ii);
- ii++;
- }
---- fltk-1.3.3/src/xutf8/utf8Wrap.c
-+++ fltk-1.3.3/src/xutf8/utf8Wrap.c
-@@ -816,10 +816,10 @@
- /** get the X font and glyph ID of a UCS char **/
- /*****************************************************************************/
- int
--XGetUtf8FontAndGlyph(XUtf8FontStruct *font_set,
-- unsigned int ucs,
-- XFontStruct **fnt,
-- unsigned short *id) {
-+fl_XGetUtf8FontAndGlyph(XUtf8FontStruct *font_set,
-+ unsigned int ucs,
-+ XFontStruct **fnt,
-+ unsigned short *id) {
-
- /* int x; */
- int *encodings; /* encodings array */
diff --git a/gnu/packages/patches/fltk-xfont-on-demand.patch b/gnu/packages/patches/fltk-xfont-on-demand.patch
deleted file mode 100644
index cdcdd9af05..0000000000
--- a/gnu/packages/patches/fltk-xfont-on-demand.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-Fixes undefined reference to `Fl_XFont_On_Demand::value()'.
-From <http://www.fltk.org/str.php?L3156+P0+S0+C0+I0+E0+V1+QOn_Demand>.
-
-Index: src/fl_font.cxx
-===================================================================
---- fltk-1.3.3/src/fl_font.cxx (revision 10503)
-+++ fltk-1.3.3/src/fl_font.cxx (revision 10504)
-@@ -55,6 +55,12 @@
- # include "fl_font_x.cxx"
- #endif // WIN32
-
-+#if ! (defined(WIN32) || defined(__APPLE__))
-+XFontStruct *fl_X_core_font()
-+{
-+ return fl_xfont.value();
-+}
-+#endif
-
- double fl_width(const char* c) {
- if (c) return fl_width(c, (int) strlen(c));
-Index: src/gl_draw.cxx
-===================================================================
---- fltk-1.3.3/src/gl_draw.cxx (revision 10503)
-+++ fltk-1.3.3/src/gl_draw.cxx (revision 10504)
-@@ -81,7 +81,7 @@
- * then sorting through them at draw time (for normal X rendering) to find which one can
- * render the current glyph... But for now, just use the first font in the list for GL...
- */
-- XFontStruct *font = fl_xfont;
-+ XFontStruct *font = fl_X_core_font();
- int base = font->min_char_or_byte2;
- int count = font->max_char_or_byte2-base+1;
- fl_fontsize->listbase = glGenLists(256);
-Index: FL/x.H
-===================================================================
---- fltk-1.3.3/FL/x.H (revision 10503)
-+++ fltk-1.3.3/FL/x.H (revision 10504)
-@@ -132,6 +132,7 @@
- XFontStruct *ptr;
- };
- extern FL_EXPORT Fl_XFont_On_Demand fl_xfont;
-+extern FL_EXPORT XFontStruct* fl_X_core_font();
-
- // this object contains all X-specific stuff about a window:
- // Warning: this object is highly subject to change!
diff --git a/gnu/packages/patches/ghostscript-CVE-2018-10194.patch b/gnu/packages/patches/ghostscript-CVE-2018-10194.patch
new file mode 100644
index 0000000000..242e57c27c
--- /dev/null
+++ b/gnu/packages/patches/ghostscript-CVE-2018-10194.patch
@@ -0,0 +1,52 @@
+Fix CVE-2018-10194:
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-10194
+https://bugs.ghostscript.com/show_bug.cgi?id=699255
+
+Patch copied from upstream source repository:
+
+https://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=39b1e54b2968620723bf32e96764c88797714879
+
+From 39b1e54b2968620723bf32e96764c88797714879 Mon Sep 17 00:00:00 2001
+From: Ken Sharp <ken.sharp@artifex.com>
+Date: Wed, 18 Apr 2018 15:46:32 +0100
+Subject: [PATCH] pdfwrite - Guard against trying to output an infinite number
+
+Bug #699255 " Buffer overflow on pprintg1 due to mishandle postscript file data to pdf"
+
+The file uses an enormous parameter to xyxhow, causing an overflow in
+the calculation of text positioning (value > 1e39).
+
+Since this is basically a nonsense value, and PostScript only supports
+real values up to 1e38, this patch follows the same approach as for
+a degenerate CTM, and treats it as 0.
+
+Adobe Acrobat Distiller throws a limitcheck error, so we could do that
+instead if this approach proves to be a problem.
+---
+ devices/vector/gdevpdts.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/devices/vector/gdevpdts.c b/devices/vector/gdevpdts.c
+index 848ad781f..172fe6bc3 100644
+--- a/devices/vector/gdevpdts.c
++++ b/devices/vector/gdevpdts.c
+@@ -103,9 +103,14 @@ append_text_move(pdf_text_state_t *pts, double dw)
+ static int
+ set_text_distance(gs_point *pdist, double dx, double dy, const gs_matrix *pmat)
+ {
+- int code = gs_distance_transform_inverse(dx, dy, pmat, pdist);
++ int code;
+ double rounded;
+
++ if (dx > 1e38 || dy > 1e38)
++ code = gs_error_undefinedresult;
++ else
++ code = gs_distance_transform_inverse(dx, dy, pmat, pdist);
++
+ if (code == gs_error_undefinedresult) {
+ /* The CTM is degenerate.
+ Can't know the distance in user space.
+--
+2.18.0
+
diff --git a/gnu/packages/patches/monero-use-system-miniupnpc.patch b/gnu/packages/patches/monero-use-system-miniupnpc.patch
new file mode 100644
index 0000000000..6bc825d121
--- /dev/null
+++ b/gnu/packages/patches/monero-use-system-miniupnpc.patch
@@ -0,0 +1,111 @@
+This reverts commit 1e20d705e7c64d2b17c031f345057d1e8850fafa, so that it's possible to use our own
+miniupnpc, instead of a git submodule.
+---
+ CMakeLists.txt | 8 ++++++++
+ external/CMakeLists.txt | 41 +++++++++++++++++++++++++++++++----------
+ src/p2p/net_node.inl | 13 ++++++++++---
+ 3 files changed, 49 insertions(+), 13 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3b93988e..ef948885 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -430,6 +430,14 @@ include_directories("${CMAKE_CURRENT_BINARY_DIR}/translations")
+
+ add_subdirectory(external)
+
++# Final setup for miniupnpc
++if(UPNP_STATIC OR IOS)
++ add_definitions("-DUPNP_STATIC")
++else()
++ add_definitions("-DUPNP_DYNAMIC")
++ include_directories(${UPNP_INCLUDE})
++endif()
++
+ # Final setup for libunbound
+ include_directories(${UNBOUND_INCLUDE})
+ link_directories(${UNBOUND_LIBRARY_DIRS})
+diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt
+index 1fc4d64c..b4f712ee 100644
+--- a/external/CMakeLists.txt
++++ b/external/CMakeLists.txt
+@@ -34,21 +34,42 @@
+ # We always compile if we are building statically to reduce static dependency issues...
+ # ...except for FreeBSD, because FreeBSD is a special case that doesn't play well with
+ # others.
++if(NOT IOS)
++ find_package(Miniupnpc QUIET)
++endif()
+
+-find_package(Miniupnpc REQUIRED)
++# If we have the correct shared version and we're not building static, use it
++if(STATIC OR IOS)
++ set(USE_SHARED_MINIUPNPC false)
++elseif(MINIUPNP_FOUND AND MINIUPNPC_VERSION_1_7_OR_HIGHER)
++ set(USE_SHARED_MINIUPNPC true)
++endif()
+
+-message(STATUS "Using in-tree miniupnpc")
++if(USE_SHARED_MINIUPNPC)
++ message(STATUS "Using shared miniupnpc found at ${MINIUPNP_INCLUDE_DIR}")
+
+-add_subdirectory(miniupnp/miniupnpc)
++ set(UPNP_STATIC false PARENT_SCOPE)
++ set(UPNP_INCLUDE ${MINIUPNP_INCLUDE_DIR} PARENT_SCOPE)
++ set(UPNP_LIBRARIES ${MINIUPNP_LIBRARY} PARENT_SCOPE)
++else()
++ if(STATIC)
++ message(STATUS "Using miniupnpc from local source tree for static build")
++ else()
++ message(STATUS "Using miniupnpc from local source tree (/external/miniupnp/miniupnpc)")
++ endif()
+
+-set_property(TARGET libminiupnpc-static PROPERTY FOLDER "external")
+-if(MSVC)
+- set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -wd4244 -wd4267")
+-elseif(NOT MSVC)
+- set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-undef -Wno-unused-result -Wno-unused-value")
+-endif()
++ add_subdirectory(miniupnp/miniupnpc)
++
++ set_property(TARGET libminiupnpc-static PROPERTY FOLDER "external")
++ if(MSVC)
++ set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -wd4244 -wd4267")
++ elseif(NOT MSVC)
++ set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-undef -Wno-unused-result -Wno-unused-value")
++ endif()
+
+-set(UPNP_LIBRARIES "libminiupnpc-static" PARENT_SCOPE)
++ set(UPNP_STATIC true PARENT_SCOPE)
++ set(UPNP_LIBRARIES "libminiupnpc-static" PARENT_SCOPE)
++endif()
+
+ find_package(Unbound)
+
+diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl
+index 9b21705e..76340a22 100644
+--- a/src/p2p/net_node.inl
++++ b/src/p2p/net_node.inl
+@@ -49,9 +49,16 @@
+ #include "storages/levin_abstract_invoke2.h"
+ #include "cryptonote_core/cryptonote_core.h"
+
+-#include <miniupnp/miniupnpc/miniupnpc.h>
+-#include <miniupnp/miniupnpc/upnpcommands.h>
+-#include <miniupnp/miniupnpc/upnperrors.h>
++// We have to look for miniupnpc headers in different places, dependent on if its compiled or external
++#ifdef UPNP_STATIC
++ #include <miniupnp/miniupnpc/miniupnpc.h>
++ #include <miniupnp/miniupnpc/upnpcommands.h>
++ #include <miniupnp/miniupnpc/upnperrors.h>
++#else
++ #include "miniupnpc.h"
++ #include "upnpcommands.h"
++ #include "upnperrors.h"
++#endif
+
+ #undef MONERO_DEFAULT_LOG_CATEGORY
+ #define MONERO_DEFAULT_LOG_CATEGORY "net.p2p"
+--
+2.16.2
+
diff --git a/gnu/packages/patches/openbabel-fix-crash-on-nwchem-output.patch b/gnu/packages/patches/openbabel-fix-crash-on-nwchem-output.patch
new file mode 100644
index 0000000000..879df026a1
--- /dev/null
+++ b/gnu/packages/patches/openbabel-fix-crash-on-nwchem-output.patch
@@ -0,0 +1,34 @@
+From 52cea818bf68f8a2d3c48d55d00c2f8b7da25e4c Mon Sep 17 00:00:00 2001
+From: Daniel Hogan <daniel.hogan@usask.ca>
+Date: Tue, 28 Mar 2017 22:21:18 -0600
+Subject: [PATCH] Remove delete statement.
+
+When from_scratch is true, coordinates is not allocated. A separate if
+statement was added to handle the case when from_scratch is true that
+does not try to free coordinates.
+---
+ src/formats/nwchemformat.cpp | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/src/formats/nwchemformat.cpp b/src/formats/nwchemformat.cpp
+index 6f625ad5b..79298555f 100644
+--- a/src/formats/nwchemformat.cpp
++++ b/src/formats/nwchemformat.cpp
+@@ -232,11 +232,14 @@ static const char* OPTIMIZATION_END_PATTERN = " Optimization converged";
+ break;
+ tokenize(vs,buffer);
+ }
+- if ((from_scratch)||(i != natoms))
+- {
++ if (from_scratch)
++ {
++ return;
++ }
++ if (i != natoms) {
+ delete[] coordinates;
+ return;
+- }
++ }
+ molecule->AddConformer(coordinates);
+ }
+
diff --git a/gnu/packages/patches/python-cairocffi-dlopen-path.patch b/gnu/packages/patches/python-cairocffi-dlopen-path.patch
new file mode 100644
index 0000000000..e7a7fe3737
--- /dev/null
+++ b/gnu/packages/patches/python-cairocffi-dlopen-path.patch
@@ -0,0 +1,10 @@
+--- cairocffi-0.8.0/cairocffi/__init__.py.orig 2018-07-16 11:00:59.075664158 +0200
++++ cairocffi-0.8.0/cairocffi/__init__.py 2018-07-16 17:09:42.471958015 +0200
+@@ -35,6 +35,7 @@
+ return lib
+ except OSError:
+ pass
++ return ffi.dlopen(name)
+ raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names))
+
+
diff --git a/gnu/packages/patches/syncthing-fix-crash.patch b/gnu/packages/patches/syncthing-fix-crash.patch
deleted file mode 100644
index d27e543982..0000000000
--- a/gnu/packages/patches/syncthing-fix-crash.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-Avoid a crash:
-
-https://github.com/syncthing/syncthing/issues/5002
-
-Patch copied from upstream source repository:
-
-https://github.com/syncthing/syncthing/commit/35a75a95dc6383b2d73ab645f1407f7907ec1a2c
-
-From 35a75a95dc6383b2d73ab645f1407f7907ec1a2c Mon Sep 17 00:00:00 2001
-From: Jakob Borg <jakob@kastelo.net>
-Date: Wed, 13 Jun 2018 19:07:52 +0200
-Subject: [PATCH] lib/model: Don't panic when rechecking file (fixes #5002)
- (#5003)
-
----
- lib/model/model.go | 2 +-
- lib/model/model_test.go | 26 ++++++++++++++++++++++++++
- 2 files changed, 27 insertions(+), 1 deletion(-)
-
-diff --git a/lib/model/model.go b/lib/model/model.go
-index 5a9146e0..302f06c5 100644
---- a/lib/model/model.go
-+++ b/lib/model/model.go
-@@ -1373,7 +1373,7 @@ func (m *Model) recheckFile(deviceID protocol.DeviceID, folderFs fs.Filesystem,
- return
- }
-
-- if blockIndex > len(cf.Blocks) {
-+ if blockIndex >= len(cf.Blocks) {
- l.Debugf("%v recheckFile: %s: %q / %q i=%d: block index too far", m, deviceID, folder, name, blockIndex)
- return
- }
-diff --git a/lib/model/model_test.go b/lib/model/model_test.go
-index 295eafc1..456bbc4a 100644
---- a/lib/model/model_test.go
-+++ b/lib/model/model_test.go
-@@ -3608,6 +3608,32 @@ func TestIssue4903(t *testing.T) {
- }
- }
-
-+func TestIssue5002(t *testing.T) {
-+ // recheckFile should not panic when given an index equal to the number of blocks
-+
-+ db := db.OpenMemory()
-+ m := NewModel(defaultCfgWrapper, protocol.LocalDeviceID, "syncthing", "dev", db, nil)
-+ m.AddFolder(defaultFolderConfig)
-+ m.StartFolder("default")
-+
-+ m.ServeBackground()
-+ defer m.Stop()
-+
-+ if err := m.ScanFolder("default"); err != nil {
-+ t.Error(err)
-+ }
-+
-+ file, ok := m.CurrentFolderFile("default", "foo")
-+ if !ok {
-+ t.Fatal("test file should exist")
-+ }
-+ nBlocks := len(file.Blocks)
-+
-+ m.recheckFile(protocol.LocalDeviceID, defaultFolderConfig.Filesystem(), "default", "foo", nBlocks-1, []byte{1, 2, 3, 4})
-+ m.recheckFile(protocol.LocalDeviceID, defaultFolderConfig.Filesystem(), "default", "foo", nBlocks, []byte{1, 2, 3, 4}) // panic
-+ m.recheckFile(protocol.LocalDeviceID, defaultFolderConfig.Filesystem(), "default", "foo", nBlocks+1, []byte{1, 2, 3, 4})
-+}
-+
- func addFakeConn(m *Model, dev protocol.DeviceID) *fakeConnection {
- fc := &fakeConnection{id: dev, model: m}
- m.AddConnection(fc, protocol.HelloResult{})
---
-2.18.0
-
diff --git a/gnu/packages/patches/twinkle-include-qregexpvalidator.patch b/gnu/packages/patches/twinkle-include-qregexpvalidator.patch
new file mode 100755
index 0000000000..4096cc8712
--- /dev/null
+++ b/gnu/packages/patches/twinkle-include-qregexpvalidator.patch
@@ -0,0 +1,123 @@
+Copied from upstream:
+
+https://github.com/LubosD/twinkle/commit/4b42755619011c117a76bdf98e417ebedc47e319
+
+From 4b42755619011c117a76bdf98e417ebedc47e319 Mon Sep 17 00:00:00 2001
+From: Michal Kubecek <mkubecek@suse.cz>
+Date: Wed, 6 Jun 2018 10:07:21 +0200
+Subject: [PATCH] Include <QRegExpValidator> explicitly
+
+Since Qt 5.11, generated ui_getprofilename.h no longer includes QHeaderView
+which breaks the chain that included qvalidator.h in getprofilename.cpp.
+As it feels rather fragile to rely on such indirect includes, let's include
+<QRegExpValidator> explicitly in each file using QRegExpValidator class.
+---
+ src/gui/diamondcardprofileform.cpp | 1 +
+ src/gui/getprofilenameform.cpp | 2 +-
+ src/gui/inviteform.cpp | 1 +
+ src/gui/mphoneform.cpp | 1 +
+ src/gui/numberconversionform.cpp | 1 +
+ src/gui/syssettingsform.cpp | 1 +
+ src/gui/userprofileform.cpp | 1 +
+ src/gui/wizardform.cpp | 1 +
+ 8 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/src/gui/diamondcardprofileform.cpp b/src/gui/diamondcardprofileform.cpp
+index 6656909..517180b 100644
+--- a/src/gui/diamondcardprofileform.cpp
++++ b/src/gui/diamondcardprofileform.cpp
+@@ -21,6 +21,7 @@
+
+ #include <QRegExp>
+ #include <QValidator>
++#include <QRegExpValidator>
+ #include "gui.h"
+ #include "diamondcard.h"
+ #include "getprofilenameform.h"
+diff --git a/src/gui/getprofilenameform.cpp b/src/gui/getprofilenameform.cpp
+index 1319e1d..89c715e 100644
+--- a/src/gui/getprofilenameform.cpp
++++ b/src/gui/getprofilenameform.cpp
+@@ -1,7 +1,7 @@
+ #include "getprofilenameform.h"
+-
+ #include <QDir>
+ #include <QMessageBox>
++#include <QRegExpValidator>
+ #include "user.h"
+ #include "protocol.h"
+
+diff --git a/src/gui/inviteform.cpp b/src/gui/inviteform.cpp
+index 433fb22..2a5b68d 100644
+--- a/src/gui/inviteform.cpp
++++ b/src/gui/inviteform.cpp
+@@ -7,6 +7,7 @@
+ #include "sys_settings.h"
+ #include <QRegExp>
+ #include <QValidator>
++#include <QRegExpValidator>
+
+ /*
+ Copyright (C) 2005-2009 Michel de Boer <michel@twinklephone.com>
+diff --git a/src/gui/mphoneform.cpp b/src/gui/mphoneform.cpp
+index 260fda7..c4e3c1d 100644
+--- a/src/gui/mphoneform.cpp
++++ b/src/gui/mphoneform.cpp
+@@ -54,6 +54,7 @@
+ #include <QRegExp>
+ #include <QValidator>
+ #include <QSettings>
++#include <QRegExpValidator>
+ #include "buddyform.h"
+ #include "diamondcardprofileform.h"
+ #include "osd.h"
+diff --git a/src/gui/numberconversionform.cpp b/src/gui/numberconversionform.cpp
+index f8ae64c..8481a9b 100644
+--- a/src/gui/numberconversionform.cpp
++++ b/src/gui/numberconversionform.cpp
+@@ -1,5 +1,6 @@
+ #include "numberconversionform.h"
+
++#include <QRegExpValidator>
+ #include "gui.h"
+
+ /*
+diff --git a/src/gui/syssettingsform.cpp b/src/gui/syssettingsform.cpp
+index 216af54..355df59 100644
+--- a/src/gui/syssettingsform.cpp
++++ b/src/gui/syssettingsform.cpp
+@@ -28,6 +28,7 @@
+ #include "twinkle_config.h"
+ #include <QRegExp>
+ #include <QValidator>
++#include <QRegExpValidator>
+ #include "syssettingsform.h"
+ /*
+ * Constructs a SysSettingsForm as a child of 'parent', with the
+diff --git a/src/gui/userprofileform.cpp b/src/gui/userprofileform.cpp
+index 28700a6..9ed9209 100644
+--- a/src/gui/userprofileform.cpp
++++ b/src/gui/userprofileform.cpp
+@@ -31,6 +31,7 @@
+ #include <QStringList>
+ #include "twinkle_config.h"
+ #include <QListWidget>
++#include <QRegExpValidator>
+ #include "numberconversionform.h"
+ #include "util.h"
+ #include "userprofileform.h"
+diff --git a/src/gui/wizardform.cpp b/src/gui/wizardform.cpp
+index 777aa12..f925875 100644
+--- a/src/gui/wizardform.cpp
++++ b/src/gui/wizardform.cpp
+@@ -23,6 +23,7 @@
+ #include <QTextStream>
+ #include "gui.h"
+ #include <QFile>
++#include <QRegExpValidator>
+ #include "wizardform.h"
+
+ #define PROV_NONE QT_TRANSLATE_NOOP("WizardForm", "None (direct IP to IP calls)")
+--
+2.17.0
+
diff --git a/gnu/packages/patches/xorg-server-rotate-fb.patch b/gnu/packages/patches/xorg-server-rotate-fb.patch
new file mode 100644
index 0000000000..f47036b2a7
--- /dev/null
+++ b/gnu/packages/patches/xorg-server-rotate-fb.patch
@@ -0,0 +1,35 @@
+commit a85e94a50c94b07574c8701a3ff3c1243f4257f4
+Author: Olivier Fourdan <ofourdan@redhat.com>
+Date: Fri Jun 15 08:57:12 2018 +0200
+
+ modesetting: use drmmode_bo_import() for rotate_fb
+
+ drmmode_shadow_allocate() still uses drmModeAddFB() which may fail if
+ the format is not as expected, preventing from using a rotated output.
+
+ Change it to use the new function drmmode_bo_import() which takes care
+ of calling the drmModeAddFB2() API.
+
+ Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106715
+ Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
+ Tested-by: Tomas Pelka <tpelka@redhat.com>
+ Reviewed-by: Lyude Paul <lyude@redhat.com>
+
+diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c
+index 859a21a9d..ec11b3f56 100644
+--- a/hw/xfree86/drivers/modesetting/drmmode_display.c
++++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
+@@ -1794,11 +1794,8 @@ drmmode_shadow_allocate(xf86CrtcPtr crtc, int width, int height)
+ return NULL;
+ }
+
+- ret = drmModeAddFB(drmmode->fd, width, height, crtc->scrn->depth,
+- drmmode->kbpp,
+- drmmode_bo_get_pitch(&drmmode_crtc->rotate_bo),
+- drmmode_bo_get_handle(&drmmode_crtc->rotate_bo),
+- &drmmode_crtc->rotate_fb_id);
++ ret = drmmode_bo_import(drmmode, &drmmode_crtc->rotate_bo,
++ &drmmode_crtc->rotate_fb_id);
+
+ if (ret) {
+ ErrorF("failed to add rotate fb\n");
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 6ac4e76db8..867333031c 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -548,23 +548,26 @@ interaction.")
(define-public podofo
(package
(name "podofo")
- (version "0.9.5")
+ (version "0.9.6")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/podofo/podofo/" version
"/podofo-" version ".tar.gz"))
(sha256
(base32
- "012kgfx5j5n6w4zkc1d290d2cwjk60jhzsjlr2x19g3yi75q2jc5"))))
+ "0wj0y4zcmj4q79wrn3vv3xq4bb0vhhxs8yifafwy9f2sjm83c5p9"))))
(build-system cmake-build-system)
- (inputs ; TODO: Add cppunit for tests
- `(("lua" ,lua-5.1)
- ("libpng" ,libpng)
- ("openssl" ,openssl)
- ("fontconfig" ,fontconfig)
+ (native-inputs
+ `(("cppunit" ,cppunit)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("libjpeg" ,libjpeg)
("libtiff" ,libtiff)
- ("libjpeg" ,libjpeg-8)
+ ("fontconfig" ,fontconfig)
("freetype" ,freetype)
+ ("libpng" ,libpng)
+ ("lua" ,lua-5.1)
+ ("openssl" ,openssl)
("zlib" ,zlib)))
(arguments
`(#:configure-flags '("-DPODOFO_BUILD_SHARED=ON"
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 7bf1d60f7c..88fa1aba68 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2017 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
@@ -81,7 +81,7 @@
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
- `(("libjpeg" ,libjpeg-8))) ;for lossy DNGs and old Kodak cameras
+ `(("libjpeg" ,libjpeg))) ;for lossy DNGs and old Kodak cameras
(propagated-inputs
`(("lcms" ,lcms))) ;for color profiles
(home-page "https://www.libraw.org")
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 1acab0de71..121ffab767 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -62,7 +62,7 @@
(define-public php
(package
(name "php")
- (version "7.2.4")
+ (version "7.2.8")
(home-page "https://secure.php.net/")
(source (origin
(method url-fetch)
@@ -70,7 +70,7 @@
name "-" version ".tar.xz"))
(sha256
(base32
- "123s0lbyz4fxr3kk91r4v658mk899dym36lggxnx9pwd2jyv25kr"))
+ "03zv1y8ygzsir60617hinpji3f4irk79zbp3ar1b8zcapq40gfjk"))
(modules '((guix build utils)))
(snippet
'(with-directory-excursion "ext"
@@ -248,6 +248,9 @@
;; iconv breaks the loop after the first error with Termsig=11.
"ext/iconv/tests/iconv_strpos_variation4.phpt"
"ext/iconv/tests/iconv_strrpos_variation3.phpt"
+ ;; Expects "invalid multibyte sequence" but got
+ ;; "unknown error".
+ "ext/iconv/tests/bug76249.phpt"
;; XXX: These test failures appear legitimate, needs investigation.
;; open_basedir() restriction failure.
@@ -288,7 +291,10 @@
"ext/mbstring/tests/mb_ereg_variation3.phpt"
"ext/mbstring/tests/mb_ereg_replace_variation1.phpt"
"ext/mbstring/tests/bug72994.phpt"
- "ext/ldap/tests/ldap_set_option_error.phpt"))
+ "ext/ldap/tests/ldap_set_option_error.phpt"
+
+ ;; Sometimes cannot start the LDAP server.
+ "ext/ldap/tests/bug76248.phpt"))
;; Skip tests requiring network access.
(setenv "SKIP_ONLINE_TESTS" "1")
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 2d865a92b3..ed8aa836fd 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
-;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
@@ -610,16 +610,17 @@ ECB and OFB).")
(define-public python-asn1crypto
(package
(name "python-asn1crypto")
- (version "0.22.0")
+ (version "0.24.0")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://github.com/wbond/asn1crypto/archive/"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/wbond/asn1crypto.git")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
(base32
- "1kn910896l3knmilla1c9ly20q181s43w1ah08lzkbm1h3j6pcz0"))))
+ "10lai2cs5mnz3gpaffbw1m7b885ls8328q5wxm35vfmcip1f0xmb"))))
(build-system python-build-system)
(home-page "https://github.com/wbond/asn1crypto")
(synopsis "ASN.1 parser and serializer in Python")
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d350990c67..fc1ef3eb2a 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14,7 +14,7 @@
;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
-;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015, 2017 Kyle Meyer <kyle@kyleam.com>
;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
@@ -4210,23 +4210,53 @@ support for Python 3 and PyPy. It is based on cffi.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1rk2dvy3fxrga6bvvxc2fi5lbaynm5h4a0w0aaxyn3bc77rszjg9"))))
+ "1rk2dvy3fxrga6bvvxc2fi5lbaynm5h4a0w0aaxyn3bc77rszjg9"))
+ (patches (search-patches "python-cairocffi-dlopen-path.patch"))))
(build-system python-build-system)
(outputs '("out" "doc"))
(inputs
- `(("gdk-pixbuf" ,gdk-pixbuf)
- ("cairo" ,cairo)))
+ `(("glib" ,glib)
+ ("gtk+" ,gtk+)
+ ("gdk-pixbuf" ,gdk-pixbuf)
+ ("cairo" ,cairo)
+ ("pango" ,pango)))
(native-inputs
`(("pkg-config" ,pkg-config)
+ ("python-pytest" ,python-pytest)
("python-sphinx" ,python-sphinx)
("python-docutils" ,python-docutils)))
(propagated-inputs
`(("python-xcffib" ,python-xcffib))) ; used at run time
(arguments
`(;; FIXME: Tests cannot find 'libcairo.so.2'.
- #:tests? #f
+ #:tests? #t
#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'patch-paths
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (substitute* (find-files "." "\\.py$")
+ (("dlopen\\(ffi, 'cairo'")
+ (string-append "dlopen(ffi, '" (assoc-ref inputs "cairo")
+ "/lib/libcairo.so.2'"))
+ (("dlopen\\(ffi, 'gdk-3'")
+ (string-append "dlopen(ffi, '" (assoc-ref inputs "gtk+")
+ "/lib/libgtk-3.so.0'"))
+ (("dlopen\\(ffi, 'gdk_pixbuf-2.0'")
+ (string-append "dlopen(ffi, '" (assoc-ref inputs "gdk-pixbuf")
+ "/lib/libgdk_pixbuf-2.0.so.0'"))
+ (("dlopen\\(ffi, 'glib-2.0'")
+ (string-append "dlopen(ffi, '" (assoc-ref inputs "glib")
+ "/lib/libglib-2.0.so.0'"))
+ (("dlopen\\(ffi, 'gobject-2.0'")
+ (string-append "dlopen(ffi, '" (assoc-ref inputs "glib")
+ "/lib/libgobject-2.0.so.0'"))
+ (("dlopen\\(ffi, 'pangocairo-1.0'")
+ (string-append "dlopen(ffi, '" (assoc-ref inputs "pango")
+ "/lib/libpangocairo-1.0.so.0'"))
+ (("dlopen\\(ffi, 'pango-1.0'")
+ (string-append "dlopen(ffi, '" (assoc-ref inputs "pango")
+ "/lib/libpango-1.0.so.0'")))
+ #t))
(add-after 'install 'install-doc
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((data (string-append (assoc-ref outputs "doc") "/share"))
@@ -6284,14 +6314,14 @@ designed to efficiently cope with extremely large amounts of data.")
(define-public python-pyasn1
(package
(name "python-pyasn1")
- (version "0.4.2")
+ (version "0.4.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pyasn1" version))
(sha256
(base32
- "05bxnr4wmrg62m4qr1pg1p3z7bhwrv74jll3k42pgxwl36kv0n6j"))))
+ "1z5h38anjzzrxpraa9iq9llffyx2zs8gx0q6dc1g029miwnn50gv"))))
(build-system python-build-system)
(home-page "http://pyasn1.sourceforge.net/")
(synopsis "ASN.1 types and codecs")
@@ -6306,14 +6336,14 @@ suitable for a wide range of protocols based on the ASN.1 specification.")
(define-public python-pyasn1-modules
(package
(name "python-pyasn1-modules")
- (version "0.0.8")
+ (version "0.2.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pyasn1-modules" version))
(sha256
(base32
- "0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh"))))
+ "0ivm850yi7ajjbi8j115qpsj95bgxdsx48nbjzg0zip788c3xkx0"))))
(build-system python-build-system)
(propagated-inputs
`(("python-pyasn1" ,python-pyasn1)))
@@ -12242,14 +12272,14 @@ pure Python module.")
(define-public python-xenon
(package
(name "python-xenon")
- (version "0.5.1")
+ (version "0.5.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "xenon" version))
(sha256
(base32
- "14kby2y48vp3sgwxqlm5d5789yibqwb1qli5fwcmdqg3iayrbklc"))))
+ "029cbhysg2vr5n4jz8gpg2793f8wkwnqpr1qgv6c1dn685vy31mc"))))
(build-system python-build-system)
(native-inputs
`(("python-pyyaml" ,python-pyyaml)
@@ -12261,12 +12291,7 @@ pure Python module.")
`(#:phases
(modify-phases %standard-phases
(add-before 'build 'patch-test-requirements
- (lambda* (#:key inputs #:allow-other-keys)
- ;; Update requirements from dependency==version to
- ;; dependency>=version.
- (substitute* "requirements.txt"
- (("==") ">=")
- ((",<1.5.0") ""))
+ (lambda _
;; Remove httpretty dependency for tests.
(substitute* "setup.py"
(("httpretty") ""))
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 1602fd5d5e..6b85fe68e3 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -446,6 +446,29 @@ outcomes of a code example.")
(propagated-inputs
`(("ruby-diff-lcs" ,ruby-diff-lcs)))))
+(define-public ruby-rspec-its
+ (package
+ (name "ruby-rspec-its")
+ (version "1.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rspec-its" version))
+ (sha256
+ (base32
+ "1pwphny5jawcm1hda3vs9pjv1cybaxy17dc1s75qd7drrvx697p3"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; needs cucumber.
+ (propagated-inputs
+ `(("ruby-rspec-core" ,ruby-rspec-core)
+ ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
+ (synopsis "RSpec extension gem for attribute matching")
+ (description "@code{rspec-its} is an RSpec extension gem for attribute
+matching.")
+ (home-page "https://github.com/rspec/rspec-its")
+ (license license:expat)))
+
(define-public ruby-rspec-mocks
(package
(name "ruby-rspec-mocks")
@@ -883,7 +906,8 @@ complexity.")
(lambda _
;; This is used in the Rakefile, and setting it avoids an issue
;; with running the tests.
- (setenv "LIB" "options"))))))
+ (setenv "LIB" "options")
+ #t)))))
(synopsis "Ruby library to parse options from *args cleanly")
(description
"The @code{options} library helps with parsing keyword options in Ruby
@@ -4982,3 +5006,28 @@ Markdown.")
in standard Ruby syntax.")
(home-page "https://github.com/ruby/rake")
(license license:expat)))
+
+(define-public ruby-childprocess
+ (package
+ (name "ruby-childprocess")
+ (version "0.9.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "childprocess" version))
+ (sha256
+ (base32
+ "0a61922kmvcxyj5l70fycapr87gz1dzzlkfpq85rfqk5vdh3d28p"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rspec" ,ruby-rspec)))
+ (propagated-inputs
+ `(("ruby-ffi" ,ruby-ffi)))
+ (synopsis "Control external programs running in the background, in Ruby")
+ (description "@code{childprocess} provides a gem to control external
+programs running in the background, in Ruby.")
+ (home-page "http://github.com/enkessler/childprocess")
+ (license license:expat)))
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index bb6fea99a0..28bffb44bb 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -167,7 +167,7 @@ in turn be used to build the final Rust.")
(snippet '(begin (delete-file-recursively "src/llvm") #t))
(patches (map search-patch patches))))
-(define-public rust-1.19
+(define rust-1.19
(package
(name "rust")
(version "1.19.0")
@@ -554,14 +554,28 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
((#:phases phases)
`(modify-phases ,phases
(add-after 'patch-cargo-tests 'patch-cargo-index-update
- (lambda* _
+ (lambda _
(substitute* "src/tools/cargo/tests/generate-lockfile.rs"
;; This test wants to update the crate index.
- (("fn no_index_update") "#[ignore]\nfn no_index_update"))))
+ (("fn no_index_update") "#[ignore]\nfn no_index_update"))
+ #t))
(add-after 'configure 'enable-codegen-tests
- (lambda* _
+ (lambda _
(substitute* "config.toml"
- (("codegen-tests = false") ""))))
+ (("codegen-tests = false") ""))
+ #t))
+ (replace 'patch-aarch64-test
+ (lambda _
+ (substitute* "src/librustc_metadata/dynamic_lib.rs"
+ ;; This test is known to fail on aarch64 and powerpc64le:
+ ;; https://github.com/rust-lang/rust/issues/45410
+ (("fn test_loading_cosine") "#[ignore]\nfn test_loading_cosine"))
+ ;; This test fails on aarch64 with llvm@6.0:
+ ;; https://github.com/rust-lang/rust/issues/49807
+ ;; other possible solution:
+ ;; https://github.com/rust-lang/rust/pull/47688
+ (delete-file "src/test/debuginfo/by-value-self-argument-in-trait-impl.rs")
+ #t))
(delete 'ignore-glibc-2.27-incompatible-test))))))))
(define-public rust-1.26
diff --git a/gnu/packages/scanner.scm b/gnu/packages/scanner.scm
index 33a573d531..d030d8ade5 100644
--- a/gnu/packages/scanner.scm
+++ b/gnu/packages/scanner.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -102,7 +103,7 @@ package contains the library, but no drivers.")
(inherit sane-backends-minimal)
(name "sane-backends")
(inputs
- `(("hplip" ,(@ (gnu packages cups) hplip))
+ `(("hplip" ,(@ (gnu packages cups) hplip-minimal))
,@(package-inputs sane-backends-minimal)))
(arguments
(substitute-keyword-arguments (package-arguments sane-backends-minimal)
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index 3e21cde83c..202716365b 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -132,7 +132,7 @@ joystick, and graphics hardware.")
(define-public libmikmod
(package
(name "libmikmod")
- (version "3.3.10")
+ (version "3.3.11.1")
(source (origin
(method url-fetch)
(uri (list
@@ -144,7 +144,7 @@ joystick, and graphics hardware.")
version "/libmikmod-" version ".tar.gz")))
(sha256
(base32
- "0j7g4jpa2zgzw7x6s3rldypa7zlwjvn97rwx0sylx1iihhlzbcq0"))))
+ "06bdnhb0l81srdzg6gn2v2ydhhaazza7rshrcj3q8dpqr3gn97dd"))))
(build-system gnu-build-system)
(arguments
;; By default, libmikmod tries to dlopen libasound etc., which won't work
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 8be3ce1a80..d8c1e6df33 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -5642,6 +5642,26 @@ table made by the command @code{show256Colors()}. You can also set the colors
to any arbitrary string. In this case, it is up to you to set valid values.")
(license license:gpl3+)))
+(define-public r-txtplot
+ (package
+ (name "r-txtplot")
+ (version "1.0-3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "txtplot" version))
+ (sha256
+ (base32
+ "1949ab1bzvysdb79g8x1gaknj0ih3d6g63pv9512h5m5l3a6c31h"))))
+ (build-system r-build-system)
+ (home-page "https://cran.r-project.org/web/packages/txtplot/")
+ (synopsis "Text-based plotting")
+ (description "This package provides functions to produce rudimentary ASCII
+graphics directly in the terminal window. This package provides a basic
+plotting function (and equivalents of curve, density, acf and barplot) as well
+as a boxplot function.")
+ (license license:lgpl3+)))
+
(define-public java-jdistlib
(package
(name "java-jdistlib")
diff --git a/gnu/packages/stb.scm b/gnu/packages/stb.scm
new file mode 100644
index 0000000000..df31bd0f86
--- /dev/null
+++ b/gnu/packages/stb.scm
@@ -0,0 +1,103 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.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 stb)
+ #:use-module (guix packages)
+ #:use-module (guix git-download)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system trivial)
+ #:use-module ((guix licenses) #:select (expat public-domain)))
+
+(define stb
+ ;; stb is a collection of libraries developed within the same repository.
+ ;; When updating this, remember to change versions below as appropriate.
+ (let ((commit "e6afb9cbae4064da8c3e69af3ff5c4629579c1d2")
+ (revision "0"))
+ (package
+ (name "stb")
+ (home-page "https://github.com/nothings/stb")
+ (version (git-version "0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit commit)))
+ (sha256
+ (base32
+ "079nsn9bnb8c0vfq26g5l53q6gzx19a5x9q2nb55mpcljxsgxnmf"))
+ (file-name (git-file-name name version))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:modules ((ice-9 ftw)
+ (ice-9 regex)
+ (srfi srfi-26)
+ ,@%gnu-build-system-modules)
+ #:phases (modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'build)
+ (replace 'check
+ (lambda _
+ (invoke "make" "-C" "tests" "CC=gcc")))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (files (make-regexp "\\.(c|h|md)$")))
+ (for-each (lambda (file)
+ (install-file file out))
+ (scandir "." (cut regexp-exec files <>)))
+ #t))))))
+ (synopsis "Single file libraries for C/C++")
+ (description
+ "This package contains a variety of small independent libraries for
+the C programming language.")
+ ;; The user can choose either license.
+ (license (list expat public-domain)))))
+
+(define (make-stb-header-package name version description)
+ (package
+ (inherit stb)
+ (name name)
+ (version version)
+ (source #f)
+ (inputs `(("stb" ,stb)))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder (begin
+ (use-modules (guix build utils))
+ (let ((stb (assoc-ref %build-inputs "stb"))
+ (lib (string-join (string-split ,name #\-) "_"))
+ (out (assoc-ref %outputs "out")))
+ (install-file (string-append stb "/" lib ".h")
+ (string-append out "/include"))
+ #t))))
+ (description description)))
+
+;; TODO: These descriptions are not translatable! They should be
+;; converted to macros as outlined in <https://bugs.gnu.org/32155>.
+(define-public stb-image
+ (make-stb-header-package
+ "stb-image" "2.19"
+ "stb-image is a small and self-contained library for image loading or
+decoding from file or memory. A variety of formats are supported."))
+
+(define-public stb-image-write
+ (make-stb-header-package
+ "stb-image-write" "1.09"
+ "stb-image-write is a small library for writing image files to the
+C@tie{}@code{stdio} interface."))
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index 4c0bceedf6..58e3f02db8 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -30,16 +30,15 @@
(define-public syncthing
(package
(name "syncthing")
- (version "0.14.48")
+ (version "0.14.49")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/syncthing/syncthing"
"/releases/download/v" version
"/syncthing-source-v" version ".tar.gz"))
- (patches (search-patches "syncthing-fix-crash.patch"))
(sha256
(base32
- "0bxkm5jlj6l4gai23bg0y31brr80r9qllh1rdg29pahjn0c2b4ml"))
+ "06mzzj5iwgqw3yva7azrsqs9zpl84srbamza4gm03grp7v9gf3sj"))
(modules '((guix build utils)))
;; Delete bundled ("vendored") free software source code.
(snippet '(begin
@@ -130,7 +129,6 @@
("go-github-com-golang-groupcache-lru"
,go-github-com-golang-groupcache-lru)
("go-github-com-jackpal-gateway" ,go-github-com-jackpal-gateway)
- ("go-github-com-kardianos-osext" ,go-github-com-kardianos-osext)
("go-github-com-kballard-go-shellquote"
,go-github-com-kballard-go-shellquote)
("go-github-com-lib-pq" ,go-github-com-lib-pq)
@@ -703,11 +701,11 @@ database in Go.")
(license bsd-2))))
(define-public go-github-com-thejerf-suture
- (let ((commit "87e298c9891673c9ae76e10c2c9be589127e5f49")
+ (let ((commit "3f1fb62fe0a3cc6429122d7dc45588a8b59c5bb6")
(revision "0"))
(package
(name "go-github-com-thejerf-suture")
- (version (git-version "2.0.1" revision commit))
+ (version (git-version "2.0.3" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
@@ -716,7 +714,7 @@ database in Go.")
(file-name (git-file-name name version))
(sha256
(base32
- "0srw0g94z6jplvlsjqsr6wf7885alnbb6h4fhvbg2i7q1ia5ldy2"))))
+ "0mp7gz6bp6xhggkgmbl33vpmrq3a6n2dkgcxbkb7csnpv4r4d59k"))))
(build-system go-build-system)
(arguments
`(#:import-path "github.com/thejerf/suture"))
@@ -1088,8 +1086,8 @@ using sh's word-splitting rules.")
(license expat))))
(define-public go-github-com-syncthing-notify
- (let ((commit "b9ceffc925039c77cd9e0d38f248279ccc4399e2")
- (revision "0"))
+ (let ((commit "cdf89c4039d13726e227d0a472053ea19de021b4")
+ (revision "1"))
(package
(name "go-github-com-syncthing-notify")
(version (git-version "0.0.0" revision commit))
@@ -1101,7 +1099,7 @@ using sh's word-splitting rules.")
(file-name (git-file-name name version))
(sha256
(base32
- "1scha9b2r35bvqzqx86sarzjxf72ywvj3g6n9pm3xq4i4xzpylxf"))))
+ "1ra1id9r06i4q8vhrrv1zpybhjxs3361rg35758dxglkyk4pzk6j"))))
(build-system go-build-system)
(arguments
'(#:import-path "github.com/syncthing/notify"))
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 246d85901c..2055034117 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -485,6 +485,8 @@ Mumble consists of two applications for separate usage:
(uri (git-reference
(url "https://github.com/LubosD/twinkle")
(commit commit)))
+ (patches
+ (search-patches "twinkle-include-qregexpvalidator.patch"))
(file-name (git-file-name name version))
(sha256
(base32
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index e89dc85d18..f1dca66552 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -520,13 +520,13 @@ netcat implementation that supports TLS.")
(package
(name "python-acme")
;; Remember to update the hash of certbot when updating python-acme.
- (version "0.25.1")
+ (version "0.26.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "acme" version))
(sha256
(base32
- "0d177dhy8a7472pz9v4blrlk02d8fp6s52li7z8v3dv97pvz7da7"))))
+ "1glhwqj6yyb11820lspgd0gl5dqdfljn43kcy4ar5caccpsbbrw6"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -577,7 +577,7 @@ netcat implementation that supports TLS.")
(uri (pypi-uri name version))
(sha256
(base32
- "0kp56gwn1bnlrag9qidhm1i5ifdp5z6y1ravh3yimfrkc4cfa8sw"))))
+ "0rnayqhdabm0rljxh76blqd11h51dqnwlwvql0j6xwzpccym30s9"))))
(build-system python-build-system)
(arguments
`(,@(substitute-keyword-arguments (package-arguments python-acme)
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 054d1e4029..e897dff639 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
@@ -47,14 +47,14 @@
(define-public tor
(package
(name "tor")
- (version "0.3.3.7")
+ (version "0.3.3.9")
(source (origin
(method url-fetch)
(uri (string-append "https://dist.torproject.org/tor-"
version ".tar.gz"))
(sha256
(base32
- "036ybfvldj7yfci9ipjki8smpzyxdg8c5r12bghc9yxdqh9basza"))))
+ "0vyf5z0dn5jghp2qjp076aq62lsz9g32qv9jiqf08skf096nnd45"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags (list "--enable-gcc-hardening"
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 1cc0d5dfde..24bf5b4ed9 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -26,6 +26,7 @@
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018 Pierre Neidhardt <ambrevar@gmail.com>
;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2018 Brendan Tildesley <brendan.tildesley@openmailbox.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -612,14 +613,14 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
(define-public ffmpeg
(package
(name "ffmpeg")
- (version "4.0.1")
+ (version "4.0.2")
(source (origin
(method url-fetch)
(uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
version ".tar.xz"))
(sha256
(base32
- "1vn04n0n46zdxq14cma3w8ml2ckh5jxwlybsc4xmvcqdqq0mqpv0"))))
+ "15rgzcmdccy4flajs63gkz4n3k24wkkg50r13l1r83lrxg4hqp59"))))
(build-system gnu-build-system)
(inputs
`(("fontconfig" ,fontconfig)
@@ -788,26 +789,26 @@ audio/video codec library.")
(define-public ffmpeg-3.4
(package
(inherit ffmpeg)
- (version "3.4.3")
+ (version "3.4.4")
(source (origin
(method url-fetch)
(uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
version ".tar.xz"))
(sha256
(base32
- "0p45s3h7mg7v0jm77bymw2617i08f086dlcdmaylnk7795yind3b"))))))
+ "1iizgnhjbhar9y1ykqlj1czqanlv24knkfq5vvfnppv5x00pcvrq"))))))
(define-public ffmpeg-2.8
(package
(inherit ffmpeg)
- (version "2.8.14")
+ (version "2.8.15")
(source (origin
(method url-fetch)
(uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
version ".tar.xz"))
(sha256
(base32
- "05m1272r5qa2r0ym5vq4figdfnpvcys1fgb1026n5s6xdjd1s1pg"))))
+ "065xbvnfmxfbfrc14cavpqyd2slil99vcjksw4ndb7w8zdh0wp3v"))))
(arguments
(substitute-keyword-arguments (package-arguments ffmpeg)
((#:configure-flags flags)
@@ -817,18 +818,48 @@ audio/video codec library.")
flag))
,flags))))))
+(define-public ffmpegthumbnailer
+ (package
+ (name "ffmpegthumbnailer")
+ (version "2.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/dirkvdb/"
+ name "/archive/" version ".tar.gz"))
+ (sha256
+ (base32
+ "13qs4iwd4l3iiim30s5051n80z0vgsnikym8vsn321cnm9algiwb"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("ffmpeg" ,ffmpeg)
+ ("libjpeg-turbo" ,libjpeg-turbo)
+ ("libpng" ,libpng)
+ ("gvfs" ,gvfs)))
+ (arguments
+ `(#:configure-flags (list "-DENABLE_GIO=ON" "-DENABLE_THUMBNAILER=ON")))
+ (home-page "https://github.com/dirkvdb/ffmpegthumbnailer")
+ (synopsis "Create thumbnails from video files")
+ (description "FFmpegthumbnailer is a lightweight video thumbnailer that
+can be used by file managers to create thumbnails for your video files. The
+thumbnailer uses ffmpeg to decode frames from the video files, so supported
+videoformats depend on the configuration flags of ffmpeg.")
+ (license license:gpl2+)))
+
(define-public vlc
(package
(name "vlc")
- (version "3.0.3")
+ (version "3.0.3-1")
(source (origin
(method url-fetch)
(uri (string-append
"https://download.videolan.org/pub/videolan/vlc/"
- version "/vlc-" version ".tar.xz"))
+ (car (string-split version #\-))
+ "/vlc-" version ".tar.xz"))
(sha256
(base32
- "0lavzly8l0ll1d9iris9cnirgcs77g48lxj14058dxqkvd5v1a4v"))))
+ "1p7qvdvg9w4lz8vckzhn6bswfkq3qw7fqkgvwjcskdgc266xx7dw"))))
(build-system gnu-build-system)
(native-inputs
`(("flex" ,flex)
@@ -998,7 +1029,7 @@ treaming protocols.")
(inputs
`(("alsa-lib" ,alsa-lib)
("cdparanoia" ,cdparanoia)
- ("ffmpeg" ,ffmpeg)
+ ("ffmpeg" ,ffmpeg-3.4)
("fontconfig" ,fontconfig)
("freetype" ,freetype)
;; ("giflib" ,giflib) ; uses QuantizeBuffer, requires version >= 5
@@ -1075,7 +1106,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
(define-public mpv
(package
(name "mpv")
- (version "0.28.2")
+ (version "0.29.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1083,7 +1114,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
".tar.gz"))
(sha256
(base32
- "15fp4sa5glqhgidd54vs6knf9dp809wszzsqiqz5nyri4ph19nma"))
+ "06bk8836brzik1qmq8kycwg5n35r438sd2176k6msjg5rrwghakp"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system waf-build-system)
(native-inputs
@@ -1224,7 +1255,7 @@ access to mpv's powerful playback capabilities.")
(define-public youtube-dl
(package
(name "youtube-dl")
- (version "2018.06.19")
+ (version "2018.07.10")
(source (origin
(method url-fetch)
(uri (string-append "https://yt-dl.org/downloads/"
@@ -1232,7 +1263,7 @@ access to mpv's powerful playback capabilities.")
version ".tar.gz"))
(sha256
(base32
- "0ys2mc84r7mjpn7rykb57sn3ii1kp3divjdn2ivwqknj8jrzg3z6"))))
+ "1rigah941k2drzx5qz937lk68gw9jrizj5lgd9f9znp0bgi2d0xd"))))
(build-system python-build-system)
(arguments
;; The problem here is that the directory for the man page and completion
@@ -2336,7 +2367,7 @@ supported players in addition to this package.")
(inputs
`(("bzip2" ,bzip2)
("dbus-glib" ,dbus-glib)
- ("ffmpeg" ,ffmpeg)
+ ("ffmpeg" ,ffmpeg-3.4) ;compilation errors with ffmpeg-4
("fontconfig" ,fontconfig)
("freetype" ,freetype)
("glib" ,glib)
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index e36677282a..56bfa6ab28 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -27,12 +27,16 @@
#:use-module (guix packages)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages databases)
#:use-module (gnu packages documentation)
#:use-module (gnu packages fltk)
#:use-module (gnu packages fontutils)
+ #:use-module (gnu packages gtk)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages libevent)
#:use-module (gnu packages libidn)
+ #:use-module (gnu packages lua)
+ #:use-module (gnu packages gnome)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
@@ -41,9 +45,11 @@
#:use-module (gnu packages qt)
#:use-module (gnu packages image)
#:use-module (gnu packages tls)
+ #:use-module (gnu packages webkit)
#:use-module (gnu packages xorg)
#:use-module (guix download)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system python))
(define-public dillo
@@ -128,6 +134,68 @@ features including, tables, builtin image display, bookmarks, SSL and more.")
;; linking of the program with openssl.
(license license:gpl1+)))
+(define-public luakit
+ (package
+ (name "luakit")
+ (version "2017.08.10")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/luakit/luakit/archive/" version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0dwxhnq90whakgdg21lzcf03n2g1c7hqgliwhav8av5na5mqpn93"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (inputs
+ `(("lua-5.1", lua-5.1)
+ ("gtk+" ,gtk+)
+ ("gsettings-desktop-schemas", gsettings-desktop-schemas)
+ ("glib-networking", glib-networking)
+ ("lua5.1-filesystem", lua5.1-filesystem)
+ ("luajit", luajit)
+ ("webkitgtk", webkitgtk)
+ ("sqlite", sqlite)))
+ (native-inputs
+ `(("pkg-config", pkg-config)))
+ (build-system glib-or-gtk-build-system)
+ (arguments
+ '(#:make-flags
+ (let ((out (assoc-ref %outputs "out")))
+ (list
+ "CC=gcc"
+ "LUA_BIN_NAME=lua"
+ "DEVELOPMENT_PATHS=0"
+ (string-append "PREFIX=" out)
+ (string-append "XDGPREFIX=" out "/etc/xdg")))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'lfs-workaround
+ (lambda _
+ (setenv "LUA_CPATH"
+ (string-append
+ (assoc-ref %build-inputs "lua5.1-filesystem")
+ "/lib/lua/5.1/?.so;;"))
+ #t))
+ (delete 'configure)
+ (delete 'check)
+ (add-after 'install 'wrap
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((luakit (assoc-ref outputs "out"))
+ (lua5.1-filesystem (assoc-ref inputs "lua5.1-filesystem") )
+ (gtk (assoc-ref inputs "gtk+"))
+ (gtk-share (string-append gtk "/share")))
+ (wrap-program (string-append luakit "/bin/luakit")
+ `("LUA_CPATH" prefix
+ (,(string-append lua5.1-filesystem
+ "/lib/lua/5.1/?.so;;"))))
+ #t))))))
+ (synopsis "Fast, lightweight, and simple browser based on WebKit")
+ (description "Luakit is a fast, lightweight, and simple to use
+micro-browser framework extensible by Lua using the WebKit web content engine
+and the GTK+ toolkit.")
+ (home-page "https://luakit.github.io/")
+ (license license:gpl3+)))
+
(define-public lynx
(package
(name "lynx")
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 06d0fec0b0..c4b78d0b64 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -122,14 +122,14 @@
(define-public httpd
(package
(name "httpd")
- (version "2.4.33")
+ (version "2.4.34")
(source (origin
(method url-fetch)
(uri (string-append "mirror://apache/httpd/httpd-"
version ".tar.bz2"))
(sha256
(base32
- "01bghiq4pbgjbgd6gic0nb8bbk6mfpwx3gcsbf21f3dhb4c520ny"))))
+ "1w1q2smdgf6ln0x741lk5pv5r0gzrxj2iza1vslhifzy65bcjlzs"))))
(build-system gnu-build-system)
(native-inputs `(("pcre" ,pcre "bin"))) ;for 'pcre-config'
(inputs `(("apr" ,apr)
@@ -719,7 +719,14 @@ current version of any major web browser.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "13nrpvw8f1wx0ga7svbzld7pgrv8l172nangpipnj7jaf0lysz5z"))))
+ "13nrpvw8f1wx0ga7svbzld7pgrv8l172nangpipnj7jaf0lysz5z"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Remove code using the problematic JSON license (see
+ ;; <https://www.gnu.org/licenses/license-list.html#JSON>).
+ (delete-file-recursively "bin/jsonchecker")
+ #t))))
(build-system cmake-build-system)
(arguments
`(,@(if (string-prefix? "aarch64" (or (%current-target-system)
@@ -5705,14 +5712,20 @@ encoder/decoder based on the draft-12 specification for UBJSON.")
(define-public java-tomcat
(package
(name "java-tomcat")
- (version "8.5.28")
+ (version "8.5.32")
(source (origin
(method url-fetch)
(uri (string-append "mirror://apache/tomcat/tomcat-8/v"
version "/src/apache-tomcat-" version "-src.tar.gz"))
(sha256
(base32
- "0q2bc3sajrmcx3z3vhhwp78y47ryc2ky8ssbdmfk24zvqdb76hvl"))))
+ "1qjsr6zmkdciakya4jqz0ssnsk02qlmmd898c05rasfwcrpj0xi6"))
+ (modules '((guix build utils)))
+ ;; Delete bundled jars.
+ (snippet
+ '(begin
+ (for-each delete-file (find-files "." "\\.jar$"))
+ #t))))
(build-system ant-build-system)
(inputs
`(("java-eclipse-jdt-core" ,java-eclipse-jdt-core)))
@@ -5734,6 +5747,14 @@ encoder/decoder based on the draft-12 specification for UBJSON.")
(("depends=\"validate\"") "depends=\"build-prepare\"")
((",download-validate") ""))
#t))
+ (add-after 'unpack 'strip-timestamps
+ (lambda _
+ (substitute* "build.xml"
+ (("<filter token=\"YEAR\" value=.*")
+ "<filter token=\"YEAR\" value=\"1970\"/>")
+ (("<filter token=\"VERSION_BUILT\" value=.*")
+ "<filter token=\"VERSION_BUILT\" value=\"Jan 1 1970 00:00:00 UTC\"/>"))
+ #t))
(add-after 'unpack 'generate-properties
(lambda _
;; This could have been passed to make-flags, but getcwd returns
@@ -5931,7 +5952,7 @@ or embedded instantiation. This package provides utility classes.")
#t)))))
(inputs
`(("slf4j" ,java-slf4j-api)
- ("servlet" ,java-tomcat)
+ ("servlet" ,java-javaee-servletapi)
("util" ,java-eclipse-jetty-util)))
(synopsis "Jetty :: IO Utility")
(description "The Jetty Web Server provides an HTTP server and Servlet
@@ -5974,7 +5995,7 @@ or embedded instantiation. This package provides IO-related utility classes."))
#t)))))
(inputs
`(("slf4j" ,java-slf4j-api)
- ("servlet" ,java-tomcat)
+ ("servlet" ,java-javaee-servletapi)
("io" ,java-eclipse-jetty-io)
("util" ,java-eclipse-jetty-util)))
(synopsis "Jetty :: Http Utility")
@@ -6009,7 +6030,7 @@ or embedded instantiation. This package provides HTTP-related utility classes."
#t)))))
(inputs
`(("slf4j" ,java-slf4j-api)
- ("servlet" ,java-tomcat)
+ ("servlet" ,java-javaee-servletapi)
("util" ,java-eclipse-jetty-util)))
(synopsis "Jetty :: JMX Management")
(description "The Jetty Web Server provides an HTTP server and Servlet
@@ -6090,7 +6111,7 @@ or embedded instantiation. This package provides the JMX management.")))
#t)))))
(inputs
`(("slf4j" ,java-slf4j-api)
- ("servlet" ,java-tomcat)
+ ("servlet" ,java-javaee-servletapi)
("http" ,java-eclipse-jetty-http)
("io" ,java-eclipse-jetty-io)
("jmx" ,java-eclipse-jetty-jmx)
@@ -6286,7 +6307,7 @@ container.")))
("java-eclipse-jetty-servlet" ,java-eclipse-jetty-servlet)
("java-eclipse-jetty-security" ,java-eclipse-jetty-security)
("java-eclipse-jetty-xml" ,java-eclipse-jetty-xml)
- ("java-tomcat" ,java-tomcat)))
+ ("java-javaee-servletapi" ,java-javaee-servletapi)))
(native-inputs
`(("java-eclipse-jetty-io" ,java-eclipse-jetty-io)
,@(package-native-inputs java-eclipse-jetty-util)))))
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index 2de4ff5d94..4562c817cd 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -223,7 +223,7 @@ integrate Windows applications into your desktop.")
(define-public wine-staging-patchset-data
(package
(name "wine-staging-patchset-data")
- (version "3.12")
+ (version "3.13")
(source
(origin
(method url-fetch)
@@ -232,7 +232,7 @@ integrate Windows applications into your desktop.")
(file-name (string-append name "-" version ".zip"))
(sha256
(base32
- "1hjs36jw8k1d22c713wzwvyhfrb8mi85dpk9wpsggnnw2x57hzs0"))))
+ "0h27h4z4m2m77chp3alkv6fagppjhh9ys39d3n21j0yfjknyhdd8"))))
(build-system trivial-build-system)
(native-inputs
`(("bash" ,bash)
@@ -279,7 +279,7 @@ integrate Windows applications into your desktop.")
(file-name (string-append name "-" version ".tar.xz"))
(sha256
(base32
- "0zvqmd0018wvlxz4xbm5sbv7770j3l14q0ilpgs0jy49srcw116v"))))
+ "1m5v854r5wgw68b97j6wim1a8692x5sih25c0xp1yb13a94dg187"))))
(inputs `(("autoconf" ,autoconf) ; for autoreconf
("gtk+" ,gtk+)
("libva" ,libva)
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 3e8f9fe4a7..b238ea4aad 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -3177,46 +3177,28 @@ This driver is intended for the spice qxl virtio device.")
(license license:x11)))
(define-public xf86-video-r128
- ;; We need a newer version than 6.10.2 to build against the latest xorg-server.
- ;; Remove this binding and the bootstrap inputs when >6.10.2 is released.
- (let ((commit "c4c878d2ccb75fa75afe46e0e50ee9975c5c57fc")
- (revision "0"))
- (package
- (name "xf86-video-r128")
- (version (git-version "6.10.2" revision commit))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url (string-append "https://anongit.freedesktop.org/git/xorg"
- "/driver/" name ".git"))
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "01pff30zz4zxjhw28h8bn9x2kq7c6iswgn19b72wnfgl0arxb63j"))))
- (build-system gnu-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-before 'bootstrap 'prevent-configure
- (lambda _
- ;; Prevent autogen from calling "./configure" as part of
- ;; the bootstrap step, which fails due to wrong shebang.
- (setenv "NOCONFIGURE" "1")
- #t)))))
- (inputs `(("mesa" ,mesa)
- ("xorgproto" ,xorgproto)
- ("xorg-server" ,xorg-server)))
- (native-inputs
- `(("pkg-config" ,pkg-config)
- ("autoconf" ,autoconf)
- ("automake" ,automake)
- ("libtool" ,libtool)))
- (home-page "https://www.x.org/wiki/")
- (synopsis "ATI Rage 128 video driver for X server")
- (description
- "xf86-video-r128 is a video driver for the Xorg X server.
+ (package
+ (name "xf86-video-r128")
+ (version "6.11.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/driver/"
+ name "-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "0snvwmrh8dqyyaq7ggicym6yrsg4brygkx9156r0m095m7fp3rav"))))
+ (build-system gnu-build-system)
+ (inputs `(("mesa" ,mesa)
+ ("xorgproto" ,xorgproto)
+ ("xorg-server" ,xorg-server)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (home-page "https://www.x.org/wiki/")
+ (synopsis "ATI Rage 128 video driver for X server")
+ (description
+ "xf86-video-r128 is a video driver for the Xorg X server.
This driver is intended for ATI Rage 128 based cards.")
- (license license:x11))))
+ (license license:x11)))
(define-public xf86-video-savage
(package
@@ -5111,7 +5093,8 @@ over Xlib, including:
(sha256
(base32
"0mm70y058r8s9y9jiv7q2myv0ycnaw3iqzm7d274410s0ik38w7q"))
- (file-name "xorg-server-use-intel-only-on-pre-gen4.diff"))))))
+ (file-name "xorg-server-use-intel-only-on-pre-gen4.diff"))
+ (search-patch "xorg-server-rotate-fb.patch")))))
(build-system gnu-build-system)
(propagated-inputs
`(("libpciaccess" ,libpciaccess)
@@ -5837,7 +5820,7 @@ programs that cannot use the window system directly.")
("xcb-proto" ,xcb-proto)
("xcb-util" ,xcb-util)
("xcb-util-wm" ,xcb-util-wm)))
- (home-page "http://search.cpan.org/dist/X11-XCB")
+ (home-page "https://metacpan.org/release/X11-XCB")
(synopsis "Perl bindings for libxcb")
(description
"These bindings wrap @code{libxcb} (a C library to speak with X11,
@@ -5864,7 +5847,7 @@ interface to its methods (using @code{Mouse}).")
"X11::Protocol is a client-side interface to the X11 Protocol, allowing
perl programs to display windows and graphics on X11 servers.")
(home-page
- (string-append "http://search.cpan.org/~smccam/X11-Protocol-" version))
+ (string-append "https://metacpan.org/release/SMCCAM/X11-Protocol-" version))
;; From the package README: "you can redistribute and/or modify it under
;; the same terms as Perl itself. (As an exception, the file
;; Keysyms.pm,which is derived from a file in the standard X11
@@ -5892,7 +5875,7 @@ perl programs to display windows and graphics on X11 servers.")
("perl-module-util" ,perl-module-util)))
(propagated-inputs
`(("perl-x11-protocol" ,perl-x11-protocol)))
- (home-page "http://search.cpan.org/dist/X11-Protocol-Other/")
+ (home-page "https://metacpan.org/release/X11-Protocol-Other")
(synopsis "Miscellaneous helpers for @code{X11::Protocol} connections")
(description
"@code{X11::Protocol::Other} contains window manager related functions for
diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm
index 4664a36dcf..9c62080629 100644
--- a/gnu/services/cuirass.scm
+++ b/gnu/services/cuirass.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -72,9 +73,7 @@
(one-shot? cuirass-configuration-one-shot? ;boolean
(default #f))
(fallback? cuirass-configuration-fallback? ;boolean
- (default #f))
- (load-path cuirass-configuration-load-path
- (default '())))
+ (default #f)))
(define (cuirass-shepherd-service config)
"Return a <shepherd-service> for the Cuirass service with CONFIG."
@@ -92,8 +91,7 @@
(specs (cuirass-configuration-specifications config))
(use-substitutes? (cuirass-configuration-use-substitutes? config))
(one-shot? (cuirass-configuration-one-shot? config))
- (fallback? (cuirass-configuration-fallback? config))
- (load-path (cuirass-configuration-load-path config)))
+ (fallback? (cuirass-configuration-fallback? config)))
(list (shepherd-service
(documentation "Run Cuirass.")
(provision '(cuirass))
@@ -109,9 +107,7 @@
"--interval" #$(number->string interval)
#$@(if use-substitutes? '("--use-substitutes") '())
#$@(if one-shot? '("--one-shot") '())
- #$@(if fallback? '("--fallback") '())
- #$@(if (null? load-path) '()
- `("--load-path" ,(string-join load-path ":"))))
+ #$@(if fallback? '("--fallback") '()))
#:environment-variables
(list "GIT_SSL_CAINFO=/etc/ssl/certs/ca-certificates.crt"
diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm
index f1d2be3f6b..f158fdf01f 100644
--- a/gnu/services/ssh.scm
+++ b/gnu/services/ssh.scm
@@ -455,7 +455,7 @@ of user-name/file-like tuples."
(list (shepherd-service
(documentation "OpenSSH server.")
- (requirement '(syslogd))
+ (requirement '(syslogd loopback))
(provision '(ssh-daemon))
(start #~(make-forkexec-constructor #$openssh-command
#:pid-file #$pid-file))
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 6a3ae1947b..95661dc973 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -298,6 +298,13 @@ You have been warned. Thanks for being so brave.\x1b[0m
`(("/bin/sh" ,(file-append (canonical-package bash)
"/bin/sh"))))
+ ;; Loopback device, needed by OpenSSH notably.
+ (service static-networking-service-type
+ (list (static-networking (interface "lo")
+ (ip "127.0.0.1")
+ (requirement '())
+ (provision '(loopback)))))
+
;; Keep a reference to BARE-BONES-OS to make sure it can be
;; installed without downloading/building anything. Also keep the
;; things needed by 'profile-derivation' to minimize the amount of
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index b4db69f068..f800c3b546 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -210,7 +210,17 @@ include /run/current-system/profile/share/nano/*.nanorc\n"))
((module-ref module 'activate-readline))))
(else
(display \"Consider installing the 'guile-readline' package for
-convenient interactive line editing and input history.\\n\\n\")))\n"))
+convenient interactive line editing and input history.\\n\\n\")))
+
+ (unless (getenv \"INSIDE_EMACS\")
+ (cond ((false-if-exception (resolve-interface '(ice-9 colorized)))
+ =>
+ (lambda (module)
+ ;; Enable completion and input history at the REPL.
+ ((module-ref module 'activate-colorized))))
+ (else
+ (display \"Consider installing the 'guile-colorized' package
+for a colorful Guile experience.\\n\\n\"))))\n"))
(".guile-wm" ,guile-wm)
(".gdbinit" ,gdbinit))))
diff --git a/guix/build-system/guile.scm b/guix/build-system/guile.scm
new file mode 100644
index 0000000000..77a5f00b01
--- /dev/null
+++ b/guix/build-system/guile.scm
@@ -0,0 +1,202 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix build-system guile)
+ #:use-module (guix store)
+ #:use-module (guix utils)
+ #:use-module (guix packages)
+ #:use-module (guix derivations)
+ #:use-module (guix search-paths)
+ #:use-module (guix build-system)
+ #:use-module (guix build-system gnu)
+ #:use-module (ice-9 match)
+ #:use-module (srfi srfi-26)
+ #:export (%guile-build-system-modules
+ guile-build-system))
+
+(define %guile-build-system-modules
+ ;; Build-side modules imported by default.
+ `((guix build guile-build-system)
+ ,@%gnu-build-system-modules))
+
+(define* (lower name
+ #:key source inputs native-inputs outputs system target
+ #:allow-other-keys
+ #:rest arguments)
+ "Return a bag for NAME."
+
+ ;; Note: There's no #:guile argument (unlike, for instance,
+ ;; 'ocaml-build-system' which has #:ocaml.) This is so we can keep
+ ;; procedures like 'package-for-guile-2.0' unchanged and simple.
+
+ (define private-keywords
+ '(#:target #:inputs #:native-inputs))
+
+ (bag
+ (name name)
+ (system system) (target target)
+ (host-inputs `(
+ ,@inputs))
+ (build-inputs `(,@(if source
+ `(("source" ,source))
+ '())
+ ,@native-inputs
+ ,@(map (cute assoc <> (standard-packages))
+ '("tar" "gzip" "bzip2" "xz" "locales"))))
+ (outputs outputs)
+ (build (if target guile-cross-build guile-build))
+ (arguments (strip-keyword-arguments private-keywords arguments))))
+
+(define %compile-flags
+ ;; Flags passed to 'guild compile' by default. We choose a common
+ ;; denominator between Guile 2.0 and 2.2.
+ ''("-Wunbound-variable" "-Warity-mismatch" "-Wformat"))
+
+(define* (guile-build store name inputs
+ #:key source
+ (guile #f)
+ (phases '%standard-phases)
+ (outputs '("out"))
+ (search-paths '())
+ (system (%current-system))
+ (source-directory ".")
+ (compile-flags %compile-flags)
+ (imported-modules %guile-build-system-modules)
+ (modules '((guix build guile-build-system)
+ (guix build utils))))
+ "Build SOURCE using Guile taken from the native inputs, and with INPUTS."
+ (define builder
+ `(begin
+ (use-modules ,@modules)
+ (guile-build #:name ,name
+ #:source ,(match (assoc-ref inputs "source")
+ (((? derivation? source))
+ (derivation->output-path source))
+ ((source)
+ source)
+ (source
+ source))
+ #:source-directory ,source-directory
+ #:compile-flags ,compile-flags
+ #:phases ,phases
+ #:system ,system
+ #:outputs %outputs
+ #:search-paths ',(map search-path-specification->sexp
+ search-paths)
+ #:inputs %build-inputs)))
+
+ (define guile-for-build
+ (match guile
+ ((? package?)
+ (package-derivation store guile system #:graft? #f))
+ (#f ; the default
+ (let* ((distro (resolve-interface '(gnu packages commencement)))
+ (guile (module-ref distro 'guile-final)))
+ (package-derivation store guile system #:graft? #f)))))
+
+ (build-expression->derivation store name builder
+ #:inputs inputs
+ #:system system
+ #:modules imported-modules
+ #:outputs outputs
+ #:guile-for-build guile-for-build))
+
+(define* (guile-cross-build store name
+ #:key
+ (system (%current-system)) target
+ native-drvs target-drvs
+ (guile #f)
+ source
+ (outputs '("out"))
+ (search-paths '())
+ (native-search-paths '())
+
+ (phases '%standard-phases)
+ (source-directory ".")
+ (compile-flags %compile-flags)
+ (imported-modules %guile-build-system-modules)
+ (modules '((guix build guile-build-system)
+ (guix build utils))))
+ (define builder
+ `(begin
+ (use-modules ,@modules)
+
+ (let ()
+ (define %build-host-inputs
+ ',(map (match-lambda
+ ((name (? derivation? drv) sub ...)
+ `(,name . ,(apply derivation->output-path drv sub)))
+ ((name path)
+ `(,name . ,path)))
+ native-drvs))
+
+ (define %build-target-inputs
+ ',(map (match-lambda
+ ((name (? derivation? drv) sub ...)
+ `(,name . ,(apply derivation->output-path drv sub)))
+ ((name (? package? pkg) sub ...)
+ (let ((drv (package-cross-derivation store pkg
+ target system)))
+ `(,name . ,(apply derivation->output-path drv sub))))
+ ((name path)
+ `(,name . ,path)))
+ target-drvs))
+
+ (guile-build #:source ,(match (assoc-ref native-drvs "source")
+ (((? derivation? source))
+ (derivation->output-path source))
+ ((source)
+ source)
+ (source
+ source))
+ #:system ,system
+ #:target ,target
+ #:outputs %outputs
+ #:source-directory ,source-directory
+ #:compile-flags ,compile-flags
+ #:inputs %build-target-inputs
+ #:native-inputs %build-host-inputs
+ #:search-paths ',(map search-path-specification->sexp
+ search-paths)
+ #:native-search-paths ',(map
+ search-path-specification->sexp
+ native-search-paths)
+ #:phases ,phases))))
+
+ (define guile-for-build
+ (match guile
+ ((? package?)
+ (package-derivation store guile system #:graft? #f))
+ (#f ; the default
+ (let* ((distro (resolve-interface '(gnu packages commencement)))
+ (guile (module-ref distro 'guile-final)))
+ (package-derivation store guile system #:graft? #f)))))
+
+ (build-expression->derivation store name builder
+ #:system system
+ #:inputs (append native-drvs target-drvs)
+ #:outputs outputs
+ #:modules imported-modules
+ #:substitutable? substitutable?
+ #:guile-for-build guile-for-build))
+
+(define guile-build-system
+ (build-system
+ (name 'guile)
+ (description "The build system for simple Guile packages")
+ (lower lower)))
diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm
index 7c833a616f..6be0167063 100644
--- a/guix/build/go-build-system.scm
+++ b/guix/build/go-build-system.scm
@@ -125,17 +125,17 @@ unset. When SOURCE is a directory, copy it instead of unpacking."
(copy-recursively source dest #:keep-mtime? #t)
#t)
(if (string-suffix? ".zip" source)
- (zero? (system* "unzip" "-d" dest source))
- (zero? (system* "tar" "-C" dest "-xvf" source))))))
+ (invoke "unzip" "-d" dest source)
+ (invoke "tar" "-C" dest "-xvf" source)))))
(define* (install-source #:key install-source? outputs #:allow-other-keys)
"Install the source code to the output directory."
(let* ((out (assoc-ref outputs "out"))
(source "src")
(dest (string-append out "/" source)))
- (if install-source?
- (copy-recursively source dest #:keep-mtime? #t)
- #t)))
+ (when install-source?
+ (copy-recursively source dest #:keep-mtime? #t))
+ #t))
(define (go-package? name)
(string-prefix? "go-" name))
@@ -178,24 +178,26 @@ respectively."
(define* (build #:key import-path #:allow-other-keys)
"Build the package named by IMPORT-PATH."
- (or
- (zero? (system* "go" "install"
- "-v" ; print the name of packages as they are compiled
- "-x" ; print each command as it is invoked
- ;; Respectively, strip the symbol table and debug
- ;; information, and the DWARF symbol table.
- "-ldflags=-s -w"
- import-path))
- (begin
+ (with-throw-handler
+ #t
+ (lambda _
+ (invoke "go" "install"
+ "-v" ; print the name of packages as they are compiled
+ "-x" ; print each command as it is invoked
+ ;; Respectively, strip the symbol table and debug
+ ;; information, and the DWARF symbol table.
+ "-ldflags=-s -w"
+ import-path))
+ (lambda (key . args)
(display (string-append "Building '" import-path "' failed.\n"
"Here are the results of `go env`:\n"))
- (system* "go" "env")
- #f)))
+ (invoke "go" "env"))))
(define* (check #:key tests? import-path #:allow-other-keys)
"Run the tests for the package named by IMPORT-PATH."
- (if tests?
- (zero? (system* "go" "test" import-path))))
+ (when tests?
+ (invoke "go" "test" import-path))
+ #t)
(define* (install #:key outputs #:allow-other-keys)
"Install the compiled libraries. `go install` installs these files to
diff --git a/guix/build/guile-build-system.scm b/guix/build/guile-build-system.scm
new file mode 100644
index 0000000000..0bed049436
--- /dev/null
+++ b/guix/build/guile-build-system.scm
@@ -0,0 +1,153 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix build guile-build-system)
+ #:use-module ((guix build gnu-build-system) #:prefix gnu:)
+ #:use-module (guix build utils)
+ #:use-module (srfi srfi-26)
+ #:use-module (ice-9 match)
+ #:use-module (ice-9 popen)
+ #:use-module (ice-9 rdelim)
+ #:use-module (guix build utils)
+ #:export (target-guile-effective-version
+ %standard-phases
+ guile-build))
+
+(define* (target-guile-effective-version #:optional guile)
+ "Return the effective version of GUILE or whichever 'guile' is in $PATH.
+Return #false if it cannot be determined."
+ (let* ((pipe (open-pipe* OPEN_READ
+ (if guile
+ (string-append guile "/bin/guile")
+ "guile")
+ "-c" "(display (effective-version))"))
+ (line (read-line pipe)))
+ (and (zero? (close-pipe pipe))
+ (string? line)
+ line)))
+
+(define (file-sans-extension file) ;TODO: factorize
+ "Return the substring of FILE without its extension, if any."
+ (let ((dot (string-rindex file #\.)))
+ (if dot
+ (substring file 0 dot)
+ file)))
+
+(define %scheme-file-regexp
+ ;; Regexp to match Scheme files.
+ "\\.(scm|sls)$")
+
+(define %documentation-file-regexp
+ ;; Regexp to match README files and the likes.
+ "^(README.*|.*\\.html|.*\\.org|.*\\.md)$")
+
+(define* (set-locale-path #:key inputs native-inputs
+ #:allow-other-keys)
+ "Set 'GUIX_LOCPATH'."
+ (match (assoc-ref (or native-inputs inputs) "locales")
+ (#f #t)
+ (locales
+ (setenv "GUIX_LOCPATH" (string-append locales "/lib/locale"))
+ #t)))
+
+(define* (build #:key outputs inputs native-inputs
+ (source-directory ".")
+ (compile-flags '())
+ (scheme-file-regexp %scheme-file-regexp)
+ target
+ #:allow-other-keys)
+ "Build files in SOURCE-DIRECTORY that match SCHEME-FILE-REGEXP."
+ (let* ((out (assoc-ref outputs "out"))
+ (guile (assoc-ref (or native-inputs inputs) "guile"))
+ (effective (target-guile-effective-version guile))
+ (module-dir (string-append out "/share/guile/site/"
+ effective))
+ (go-dir (string-append out "/lib/guile/"
+ effective "/site-ccache/"))
+ (guild (string-append guile "/bin/guild"))
+ (flags (if target
+ (cons (string-append "--target=" target)
+ compile-flags)
+ compile-flags)))
+ (if target
+ (format #t "Cross-compiling for '~a' with Guile ~a...~%"
+ target effective)
+ (format #t "Compiling with Guile ~a...~%" effective))
+ (format #t "compile flags: ~s~%" flags)
+
+ ;; Make installation directories.
+ (mkdir-p module-dir)
+ (mkdir-p go-dir)
+
+ ;; Compile .scm files and install.
+ (setenv "GUILE_AUTO_COMPILE" "0")
+ (setenv "GUILE_LOAD_COMPILED_PATH"
+ (string-append go-dir
+ (match (getenv "GUILE_LOAD_COMPILED_PATH")
+ (#f "")
+ (path (string-append ":" path)))))
+ (for-each (lambda (file)
+ (let* ((go (string-append go-dir
+ (file-sans-extension file)
+ ".go")))
+ ;; Install source module.
+ (install-file (string-append source-directory "/" file)
+ (string-append module-dir
+ "/" (dirname file)))
+
+ ;; Install and compile module.
+ (apply invoke guild "compile" "-L" source-directory
+ "-o" go
+ (string-append source-directory "/" file)
+ flags)))
+
+ ;; Arrange to strip SOURCE-DIRECTORY from file names.
+ (with-directory-excursion source-directory
+ (find-files "." scheme-file-regexp)))
+ #t))
+
+(define* (install-documentation #:key outputs
+ (documentation-file-regexp
+ %documentation-file-regexp)
+ #:allow-other-keys)
+ "Install files that mactch DOCUMENTATION-FILE-REGEXP."
+ (let* ((out (assoc-ref outputs "out"))
+ (doc (string-append out "/share/doc/"
+ (strip-store-file-name out))))
+ (for-each (cut install-file <> doc)
+ (find-files "." documentation-file-regexp))
+ #t))
+
+(define %standard-phases
+ (modify-phases gnu:%standard-phases
+ (delete 'bootstrap)
+ (delete 'configure)
+ (add-before 'install-locale 'set-locale-path
+ set-locale-path)
+ (replace 'build build)
+ (add-after 'build 'install-documentation
+ install-documentation)
+ (delete 'check)
+ (delete 'strip)
+ (delete 'validate-runpath)
+ (delete 'install)))
+
+(define* (guile-build #:key (phases %standard-phases)
+ #:allow-other-keys #:rest args)
+ "Build the given Guile package, applying all of PHASES in order."
+ (apply gnu:gnu-build #:phases phases args))
diff --git a/guix/build/ruby-build-system.scm b/guix/build/ruby-build-system.scm
index abef6937bc..3a658e2557 100644
--- a/guix/build/ruby-build-system.scm
+++ b/guix/build/ruby-build-system.scm
@@ -52,18 +52,19 @@ directory."
(define* (unpack #:key source #:allow-other-keys)
"Unpack the gem SOURCE and enter the resulting directory."
(if (gem-archive? source)
- (and (zero? (system* "gem" "unpack" source))
- ;; The unpacked gem directory is named the same as the archive,
- ;; sans the ".gem" extension. It is renamed to simply "gem" in an
- ;; effort to keep file names shorter to avoid UNIX-domain socket
- ;; file names and shebangs that exceed the system's fixed maximum
- ;; length when running test suites.
- (let ((dir (match:substring (string-match "^(.*)\\.gem$"
- (basename source))
- 1)))
- (rename-file dir "gem")
- (chdir "gem")
- #t))
+ (begin
+ (invoke "gem" "unpack" source)
+ ;; The unpacked gem directory is named the same as the archive,
+ ;; sans the ".gem" extension. It is renamed to simply "gem" in an
+ ;; effort to keep file names shorter to avoid UNIX-domain socket
+ ;; file names and shebangs that exceed the system's fixed maximum
+ ;; length when running test suites.
+ (let ((dir (match:substring (string-match "^(.*)\\.gem$"
+ (basename source))
+ 1)))
+ (rename-file dir "gem")
+ (chdir "gem"))
+ #t)
;; Use GNU unpack strategy for things that aren't gem archives.
(gnu:unpack #:source source)))
@@ -77,7 +78,8 @@ operation is not deterministic, we replace it with `find`."
(when (not (gem-archive? source))
(let ((gemspec (first-gemspec)))
(substitute* gemspec
- (("`git ls-files`") "`find . -type f |sort`"))))
+ (("`git ls-files`") "`find . -type f |sort`")
+ (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))))
#t)
(define* (extract-gemspec #:key source #:allow-other-keys)
@@ -104,7 +106,8 @@ generate the files list."
(write-char (read-char pipe) out))))
#t)
(lambda ()
- (close-pipe pipe)))))))
+ (close-pipe pipe)))))
+ #t))
(define* (build #:key source #:allow-other-keys)
"Build a new gem using the gemspec from the SOURCE gem."
@@ -112,13 +115,13 @@ generate the files list."
;; Build a new gem from the current working directory. This also allows any
;; dynamic patching done in previous phases to be present in the installed
;; gem.
- (zero? (system* "gem" "build" (first-gemspec))))
+ (invoke "gem" "build" (first-gemspec)))
(define* (check #:key tests? test-target #:allow-other-keys)
"Run the gem's test suite rake task TEST-TARGET. Skip the tests if TESTS?
is #f."
(if tests?
- (zero? (system* "rake" test-target))
+ (invoke "rake" test-target)
#t))
(define* (install #:key inputs outputs (gem-flags '())
@@ -137,43 +140,42 @@ GEM-FLAGS are passed to the 'gem' invokation, if present."
0
(- (string-length gem-file-basename) 4))))
(setenv "GEM_VENDOR" vendor-dir)
- (and (let ((install-succeeded?
- (zero?
- (apply system* "gem" "install" gem-file
- "--local" "--ignore-dependencies" "--vendor"
- ;; Executables should go into /bin, not
- ;; /lib/ruby/gems.
- "--bindir" (string-append out "/bin")
- gem-flags))))
- (or install-succeeded?
- (begin
- (simple-format #t "installation failed\n")
- (let ((failed-output-dir (string-append (getcwd) "/out")))
- (mkdir failed-output-dir)
- (copy-recursively out failed-output-dir))
- #f)))
- (begin
- ;; Remove the cached gem file as this is unnecessary and contains
- ;; timestamped files rendering builds not reproducible.
- (let ((cached-gem (string-append vendor-dir "/cache/" gem-file)))
- (log-file-deletion cached-gem)
- (delete-file cached-gem))
- ;; For gems with native extensions, several Makefile-related files
- ;; are created that contain timestamps or other elements making
- ;; them not reproducible. They are unnecessary so we remove them.
- (if (file-exists? (string-append vendor-dir "/ext"))
- (begin
- (for-each (lambda (file)
- (log-file-deletion file)
- (delete-file file))
- (append
- (find-files (string-append vendor-dir "/doc")
- "page-Makefile.ri")
- (find-files (string-append vendor-dir "/extensions")
- "gem_make.out")
- (find-files (string-append vendor-dir "/ext")
- "Makefile")))))
- #t))))
+
+ (or (zero?
+ (apply system* "gem" "install" gem-file
+ "--local" "--ignore-dependencies" "--vendor"
+ ;; Executables should go into /bin, not
+ ;; /lib/ruby/gems.
+ "--bindir" (string-append out "/bin")
+ gem-flags))
+ (begin
+ (let ((failed-output-dir (string-append (getcwd) "/out")))
+ (mkdir failed-output-dir)
+ (copy-recursively out failed-output-dir))
+ (error "installation failed")))
+
+ ;; Remove the cached gem file as this is unnecessary and contains
+ ;; timestamped files rendering builds not reproducible.
+ (let ((cached-gem (string-append vendor-dir "/cache/" gem-file)))
+ (log-file-deletion cached-gem)
+ (delete-file cached-gem))
+
+ ;; For gems with native extensions, several Makefile-related files
+ ;; are created that contain timestamps or other elements making
+ ;; them not reproducible. They are unnecessary so we remove them.
+ (when (file-exists? (string-append vendor-dir "/ext"))
+ (for-each (lambda (file)
+ (log-file-deletion file)
+ (delete-file file))
+ (append
+ (find-files (string-append vendor-dir "/doc")
+ "page-Makefile.ri")
+ (find-files (string-append vendor-dir "/extensions")
+ "gem_make.out")
+ (find-files (string-append vendor-dir "/ext")
+ "Makefile"))))
+
+ #t))
(define* (wrap-ruby-program prog #:key (gem-clear-paths #t) #:rest vars)
"Make a wrapper for PROG. VARS should look like this:
@@ -301,7 +303,8 @@ extended with definitions for VARS."
(let ((files (list-of-files dir)))
(for-each (cut wrap-ruby-program <> var)
files)))
- bindirs)))
+ bindirs))
+ #t)
(define (log-file-deletion file)
(display (string-append "deleting '" file "' for reproducibility\n")))
diff --git a/guix/gexp.scm b/guix/gexp.scm
index cc3613f6f6..ffc976d61b 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -601,6 +601,12 @@ names and file names suitable for the #:allowed-references argument to
allowed-references disallowed-references
leaked-env-vars
local-build? (substitutable? #t)
+
+ ;; TODO: This parameter is transitional; it's here
+ ;; to avoid a full rebuild. Remove it on the next
+ ;; rebuild cycle.
+ import-creates-derivation?
+
deprecation-warnings
(script-name (string-append name "-builder")))
"Return a derivation NAME that runs EXP (a gexp) with GUILE-FOR-BUILD (a
@@ -695,6 +701,8 @@ The other arguments are as for 'derivation'."
extensions))
(modules (if (pair? %modules)
(imported-modules %modules
+ #:derivation?
+ import-creates-derivation?
#:system system
#:module-path module-path
#:guile guile-for-build
@@ -703,6 +711,8 @@ The other arguments are as for 'derivation'."
(return #f)))
(compiled (if (pair? %modules)
(compiled-modules %modules
+ #:derivation?
+ import-creates-derivation?
#:system system
#:module-path module-path
#:extensions extensions
@@ -735,7 +745,9 @@ The other arguments are as for 'derivation'."
"/bin/guile")
`("--no-auto-compile"
,@(if (pair? %modules)
- `("-L" ,(derivation->output-path modules)
+ `("-L" ,(if (derivation? modules)
+ (derivation->output-path modules)
+ modules)
"-C" ,(derivation->output-path compiled))
'())
,@(append-map extension-flags exts)
@@ -1013,6 +1025,49 @@ execution environment."
;;; Module handling.
;;;
+(define %not-slash
+ (char-set-complement (char-set #\/)))
+
+(define (file-mapping->tree mapping)
+ "Convert MAPPING, an alist like:
+
+ ((\"guix/build/utils.scm\" . \"…/utils.scm\"))
+
+to a tree suitable for 'interned-file-tree'."
+ (let ((mapping (map (match-lambda
+ ((destination . source)
+ (cons (string-tokenize destination
+ %not-slash)
+ source)))
+ mapping)))
+ (fold (lambda (pair result)
+ (match pair
+ ((destination . source)
+ (let loop ((destination destination)
+ (result result))
+ (match destination
+ ((file)
+ (let* ((mode (stat:mode (stat source)))
+ (type (if (zero? (logand mode #o100))
+ 'regular
+ 'executable)))
+ (alist-cons file
+ `(,type (file ,source))
+ result)))
+ ((file rest ...)
+ (let ((directory (assoc-ref result file)))
+ (alist-cons file
+ `(directory
+ ,@(loop rest
+ (match directory
+ (('directory . entries) entries)
+ (#f '()))))
+ (if directory
+ (alist-delete file result)
+ result)))))))))
+ '()
+ mapping)))
+
(define %utils-module
;; This file provides 'mkdir-p', needed to implement 'imported-files' and
;; other primitives below. Note: We give the file name relative to this
@@ -1021,22 +1076,24 @@ execution environment."
(local-file "build/utils.scm"
"build-utils.scm"))
-(define* (imported-files files
- #:key (name "file-import")
- (system (%current-system))
- (guile (%guile-for-build))
-
- ;; XXX: The only reason we have
- ;; #:deprecation-warnings is because (guix build
- ;; utils), which we use here, relies on _IO*, which
- ;; is deprecated in 2.2. On the next full-rebuild
- ;; cycle, we should disable such warnings
- ;; unconditionally.
- (deprecation-warnings #f))
+(define* (imported-files/derivation files
+ #:key (name "file-import")
+ (symlink? #f)
+ (system (%current-system))
+ (guile (%guile-for-build))
+
+ ;; XXX: The only reason we have
+ ;; #:deprecation-warnings is because (guix
+ ;; build utils), which we use here, relies
+ ;; on _IO*, which is deprecated in 2.2. On
+ ;; the next full-rebuild cycle, we should
+ ;; disable such warnings unconditionally.
+ (deprecation-warnings #f))
"Return a derivation that imports FILES into STORE. FILES must be a list
of (FINAL-PATH . FILE) pairs. Each FILE is mapped to FINAL-PATH in the
resulting store path. FILE can be either a file name, or a file-like object,
-as returned by 'local-file' for example."
+as returned by 'local-file' for example. If SYMLINK? is true, create symlinks
+to the source files instead of copying them."
(define file-pair
(match-lambda
((final-path . (? string? file-name))
@@ -1059,7 +1116,8 @@ as returned by 'local-file' for example."
(for-each (match-lambda
((final-path store-path)
(mkdir-p (dirname final-path))
- (symlink store-path final-path)))
+ ((ungexp (if symlink? 'symlink 'copy-file))
+ store-path final-path)))
'(ungexp files)))))
;; TODO: Pass FILES as an environment variable so that BUILD remains
@@ -1081,8 +1139,39 @@ as returned by 'local-file' for example."
(else
'())))))
+(define* (imported-files files
+ #:key (name "file-import")
+
+ ;; TODO: Remove this parameter on the next rebuild
+ ;; cycle.
+ (derivation? #f)
+
+ ;; The following parameters make sense when creating
+ ;; an actual derivation.
+ (system (%current-system))
+ (guile (%guile-for-build))
+ (deprecation-warnings #f))
+ "Import FILES into the store and return the resulting derivation or store
+file name (a derivation is created if and only if some elements of FILES are
+file-like objects and not local file names.) FILES must be a list
+of (FINAL-PATH . FILE) pairs. Each FILE is mapped to FINAL-PATH in the
+resulting store path. FILE can be either a file name, or a file-like object,
+as returned by 'local-file' for example."
+ (if (or derivation?
+ (any (match-lambda
+ ((_ . (? struct? source)) #t)
+ (_ #f))
+ files))
+ (imported-files/derivation files #:name name
+ #:symlink? derivation?
+ #:system system #:guile guile
+ #:deprecation-warnings deprecation-warnings)
+ (interned-file-tree `(,name directory
+ ,@(file-mapping->tree files)))))
+
(define* (imported-modules modules
#:key (name "module-import")
+ (derivation? #f) ;TODO: remove on next rebuild
(system (%current-system))
(guile (%guile-for-build))
(module-path %load-path)
@@ -1098,24 +1187,23 @@ by an arrow followed by a file-like object. For example:
In this example, the first two modules are taken from MODULE-PATH, and the
last one is created from the given <scheme-file> object."
- (mlet %store-monad ((files
- (mapm %store-monad
- (match-lambda
- (((module ...) '=> file)
- (return
- (cons (module->source-file-name module)
- file)))
- ((module ...)
- (let ((f (module->source-file-name module)))
- (return
- (cons f (search-path* module-path f))))))
- modules)))
- (imported-files files #:name name #:system system
+ (let ((files (map (match-lambda
+ (((module ...) '=> file)
+ (cons (module->source-file-name module)
+ file))
+ ((module ...)
+ (let ((f (module->source-file-name module)))
+ (cons f (search-path* module-path f)))))
+ modules)))
+ (imported-files files #:name name
+ #:derivation? derivation?
+ #:system system
#:guile guile
#:deprecation-warnings deprecation-warnings)))
(define* (compiled-modules modules
#:key (name "module-import-compiled")
+ (derivation? #f) ;TODO: remove on next rebuild
(system (%current-system))
(guile (%guile-for-build))
(module-path %load-path)
@@ -1135,6 +1223,7 @@ they can refer to each other."
(not (equal? module-path %load-path))))
(mlet %store-monad ((modules (imported-modules modules
+ #:derivation? derivation?
#:system system
#:guile guile
#:module-path
diff --git a/guix/hash.scm b/guix/hash.scm
index 39834043e1..8d7ba21425 100644
--- a/guix/hash.scm
+++ b/guix/hash.scm
@@ -101,6 +101,7 @@ output port."
(open-sha256-md))
(define digest #f)
+ (define position 0)
(define (finalize!)
(let ((ptr (md-read sha256-md 0)))
@@ -114,14 +115,18 @@ output port."
0)
(let ((ptr (bytevector->pointer bv offset)))
(md-write sha256-md ptr len)
+ (set! position (+ position len))
len)))
+ (define (get-position)
+ position)
+
(define (close)
(unless digest
(finalize!)))
(values (make-custom-binary-output-port "sha256"
- write! #f #f
+ write! get-position #f
close)
(lambda ()
(unless digest
diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm
index 6beab6b010..25560bac46 100644
--- a/guix/import/pypi.scm
+++ b/guix/import/pypi.scm
@@ -51,8 +51,7 @@
(define (pypi-fetch name)
"Return an alist representation of the PyPI metadata for the package NAME,
or #f on failure."
- (json-fetch-alist (string-append "https://pypi.python.org/pypi/"
- name "/json")))
+ (json-fetch-alist (string-append "https://pypi.org/pypi/" name "/json")))
;; For packages found on PyPI that lack a source distribution.
(define-condition-type &missing-source-error &error
@@ -87,7 +86,7 @@ package."
(string-append "python-" (snake-case name))))
(define (guix-package->pypi-name package)
- "Given a Python PACKAGE built from pypi.python.org, return the name of the
+ "Given a Python PACKAGE built from pypi.org, return the name of the
package on PyPI."
(define (url->pypi-name url)
(hyphen-package-name->name+version
@@ -269,7 +268,7 @@ VERSION, SOURCE-URL, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE."
(license ,(license->symbol license)))))))
(define (pypi->guix-package package-name)
- "Fetch the metadata for PACKAGE-NAME from pypi.python.org, and return the
+ "Fetch the metadata for PACKAGE-NAME from pypi.org, and return the
`package' s-expression corresponding to that package, or #f on failure."
(let ((package (pypi-fetch package-name)))
(and package
@@ -304,7 +303,8 @@ VERSION, SOURCE-URL, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE."
"Return true if PACKAGE is a Python package from PyPI."
(define (pypi-url? url)
- (or (string-prefix? "https://pypi.python.org/" url)
+ (or (string-prefix? "https://pypi.org/" url)
+ (string-prefix? "https://pypi.python.org/" url)
(string-prefix? "https://pypi.io/packages" url)))
(let ((source-url (and=> (package-source package) origin-uri))
diff --git a/guix/packages.scm b/guix/packages.scm
index c762fa7c39..a220b9c476 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -646,6 +646,9 @@ specifies modules in scope when evaluating SNIPPET."
(let ((name (tarxz-name original-file-name)))
(gexp->derivation name build
+ ;; TODO: Remove this on the next rebuild cycle.
+ #:import-creates-derivation? #t
+
#:graft? #f
#:system system
#:deprecation-warnings #t ;to avoid a rebuild
diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm
index 6d5d745bc8..729850839b 100644
--- a/guix/scripts/pack.scm
+++ b/guix/scripts/pack.scm
@@ -1,6 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2018 Konrad Hinsen <konrad.hinsen@fastmail.net>
;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
@@ -69,7 +68,7 @@
(compressor "lzip" ".lz"
#~(#+(file-append lzip "/bin/lzip") "-9"))
(compressor "xz" ".xz"
- #~(#+(file-append xz "/bin/xz") "-e -T0"))
+ #~(#+(file-append xz "/bin/xz") "-e"))
(compressor "bzip2" ".bz2"
#~(#+(file-append bzip2 "/bin/bzip2") "-9"))
(compressor "none" "" #f)))
@@ -77,7 +76,7 @@
;; This one is only for use in this module, so don't put it in %compressors.
(define bootstrap-xz
(compressor "bootstrap-xz" ".xz"
- #~(#+(file-append %bootstrap-coreutils&co "/bin/xz") "-e -T0")))
+ #~(#+(file-append %bootstrap-coreutils&co "/bin/xz") "-e")))
(define (lookup-compressor name)
"Return the compressor object called NAME. Error out if it could not be
diff --git a/guix/self.scm b/guix/self.scm
index c9c7138e65..5ad644b1df 100644
--- a/guix/self.scm
+++ b/guix/self.scm
@@ -112,6 +112,27 @@ GUILE-VERSION (\"2.0\" or \"2.2\"), or #f if none of the packages matches."
(dependencies node-dependencies) ;list of nodes
(compiled node-compiled)) ;node -> lowerable object
+;; File mappings are essentially an alist as passed to 'imported-files'.
+(define-record-type <file-mapping>
+ (file-mapping name alist)
+ file-mapping?
+ (name file-mapping-name)
+ (alist file-mapping-alist))
+
+(define-gexp-compiler (file-mapping-compiler (mapping <file-mapping>)
+ system target)
+ ;; Here we use 'imported-files', which can arrange to directly import all
+ ;; the files instead of creating a derivation, when possible.
+ (imported-files (map (match-lambda
+ ((destination (? local-file? file))
+ (cons destination
+ (local-file-absolute-file-name file)))
+ ((destination source)
+ (cons destination source))) ;silliness
+ (file-mapping-alist mapping))
+ #:name (file-mapping-name mapping)
+ #:system system))
+
(define (node-fold proc init nodes)
(let loop ((nodes nodes)
(visited (setq))
@@ -166,8 +187,8 @@ must be present in the search path."
(closure modules
(node-modules/recursive dependencies))))
(module-files (map module->import modules))
- (source (imported-files (string-append name "-source")
- (append module-files extra-files))))
+ (source (file-mapping (string-append name "-source")
+ (append module-files extra-files))))
(node name modules source dependencies
(compiled-modules name source
(map car module-files)
@@ -766,38 +787,6 @@ assumed to be part of MODULES."
;;; Building.
;;;
-(define (imported-files name files)
- ;; This is a non-monadic, simplified version of 'imported-files' from (guix
- ;; gexp).
- (define same-target?
- (match-lambda*
- (((file1 . _) (file2 . _))
- (string=? file1 file2))))
-
- (define build
- (with-imported-modules (source-module-closure
- '((guix build utils)))
- #~(begin
- (use-modules (ice-9 match)
- (guix build utils))
-
- (mkdir (ungexp output)) (chdir (ungexp output))
- (for-each (match-lambda
- ((final-path store-path)
- (mkdir-p (dirname final-path))
-
- ;; Note: We need regular files to be regular files, not
- ;; symlinks, as this makes a difference for
- ;; 'add-to-store'.
- (copy-file store-path final-path)))
- '#$(delete-duplicates files same-target?)))))
-
- ;; We're just copying files around, no need to substitute or offload it.
- (computed-file name build
- #:options '(#:local-build? #t
- #:substitutable? #f
- #:env-vars (("COLUMNS" . "200")))))
-
(define* (compiled-modules name module-tree module-files
#:optional
(dependencies '())
diff --git a/guix/serialization.scm b/guix/serialization.scm
index b41a0a09d1..129374f541 100644
--- a/guix/serialization.scm
+++ b/guix/serialization.scm
@@ -47,6 +47,7 @@
nar-read-error-token
write-file
+ write-file-tree
restore-file))
;;; Comment:
@@ -211,14 +212,19 @@ substitute invalid byte sequences with question marks. This is a
(lambda ()
(close-port port))))))
- (write-string "contents" p)
- (write-long-long size p)
(call-with-binary-input-file file
- ;; Use 'sendfile' when P is a file port.
- (if (file-port? p)
- (cut sendfile p <> size 0)
- (cut dump <> p size)))
- (write-padding size p))
+ (lambda (input)
+ (write-contents-from-port input p size))))
+
+(define (write-contents-from-port input output size)
+ "Write SIZE bytes from port INPUT to port OUTPUT."
+ (write-string "contents" output)
+ (write-long-long size output)
+ ;; Use 'sendfile' when both OUTPUT and INPUT are file ports.
+ (if (and (file-port? output) (file-port? input))
+ (sendfile output input size 0)
+ (dump input output size))
+ (write-padding size output))
(define (read-contents in out)
"Read the contents of a file from the Nar at IN, write it to OUT, and return
@@ -263,47 +269,113 @@ the size in bytes."
sub-directories of FILE as needed. For each directory entry, call (SELECT?
FILE STAT), where FILE is the entry's absolute file name and STAT is the
result of 'lstat'; exclude entries for which SELECT? does not return true."
+ (write-file-tree file port
+ #:file-type+size
+ (lambda (file)
+ (let* ((stat (lstat file))
+ (size (stat:size stat)))
+ (case (stat:type stat)
+ ((directory)
+ (values 'directory size))
+ ((regular)
+ (values (if (zero? (logand (stat:mode stat)
+ #o100))
+ 'regular
+ 'executable)
+ size))
+ (else
+ (values (stat:type stat) size))))) ;bah!
+ #:file-port (cut open-file <> "r0b")
+ #:symlink-target readlink
+
+ #:directory-entries
+ (lambda (directory)
+ ;; 'scandir' defaults to 'string-locale<?' to sort files,
+ ;; but this happens to be case-insensitive (at least in
+ ;; 'en_US' locale on libc 2.18.) Conversely, we want
+ ;; files to be sorted in a case-sensitive fashion.
+ (define basenames
+ (scandir directory (negate (cut member <> '("." "..")))
+ string<?))
+
+ (filter-map (lambda (base)
+ (let ((file (string-append directory
+ "/" base)))
+ (and (not (member base '("." "..")))
+ (select? file (lstat file))
+ base)))
+ basenames))
+
+ ;; The 'scandir' call above gives us filtered and sorted
+ ;; entries, so no post-processing is needed.
+ #:postprocess-entries identity))
+
+(define (filter/sort-directory-entries lst)
+ "Remove dot and dot-dot entries from LST, and sort it in lexicographical
+order."
+ (delete-duplicates
+ (sort (remove (cute member <> '("." "..")) lst)
+ string<?)
+ string=?))
+
+(define* (write-file-tree file port
+ #:key
+ file-type+size
+ file-port
+ symlink-target
+ directory-entries
+ (postprocess-entries filter/sort-directory-entries))
+ "Write the contents of FILE to PORT in Nar format, recursing into
+sub-directories of FILE as needed.
+
+This procedure does not make any file-system I/O calls. Instead, it calls the
+user-provided FILE-TYPE+SIZE, FILE-PORT, SYMLINK-TARGET, and DIRECTORY-ENTRIES
+procedures, which roughly correspond to 'lstat', 'readlink', and 'scandir'.
+POSTPROCESS-ENTRIES ensures that directory entries are valid; leave it as-is
+unless you know that DIRECTORY-ENTRIES provide filtered and sorted entries, in
+which case you can use 'identity'."
(define p port)
(write-string %archive-version-1 p)
- (let dump ((f file) (s (lstat file)))
+ (let dump ((f file))
+ (define-values (type size)
+ (file-type+size f))
+
(write-string "(" p)
- (case (stat:type s)
- ((regular)
+ (case type
+ ((regular executable)
(write-string "type" p)
(write-string "regular" p)
- (if (not (zero? (logand (stat:mode s) #o100)))
- (begin
- (write-string "executable" p)
- (write-string "" p)))
- (write-contents f p (stat:size s)))
+ (when (eq? 'executable type)
+ (write-string "executable" p)
+ (write-string "" p))
+ (let ((input (file-port f)))
+ (dynamic-wind
+ (const #t)
+ (lambda ()
+ (write-contents-from-port input p size))
+ (lambda ()
+ (close-port input)))))
((directory)
(write-string "type" p)
(write-string "directory" p)
- (let ((entries
- ;; 'scandir' defaults to 'string-locale<?' to sort files, but
- ;; this happens to be case-insensitive (at least in 'en_US'
- ;; locale on libc 2.18.) Conversely, we want files to be
- ;; sorted in a case-sensitive fashion.
- (scandir f (negate (cut member <> '("." ".."))) string<?)))
+ (let ((entries (postprocess-entries (directory-entries f))))
(for-each (lambda (e)
- (let* ((f (string-append f "/" e))
- (s (lstat f)))
- (when (select? f s)
- (write-string "entry" p)
- (write-string "(" p)
- (write-string "name" p)
- (write-string e p)
- (write-string "node" p)
- (dump f s)
- (write-string ")" p))))
+ (let* ((f (string-append f "/" e)))
+ (write-string "entry" p)
+ (write-string "(" p)
+ (write-string "name" p)
+ (write-string e p)
+ (write-string "node" p)
+ (dump f)
+ (write-string ")" p)))
entries)))
((symlink)
(write-string "type" p)
(write-string "symlink" p)
(write-string "target" p)
- (write-string (readlink f) p))
+ (write-string (symlink-target f) p))
(else
(raise (condition (&message (message "unsupported file type"))
(&nar-error (file f) (port port))))))
@@ -379,4 +451,8 @@ Restore it as FILE."
(&message (message "unsupported nar entry type"))
(&nar-read-error (port port) (file file) (token x)))))))))
+;;; Local Variables:
+;;; eval: (put 'call-with-binary-input-file 'scheme-indent-function 1)
+;;; End:
+
;;; serialization.scm ends here
diff --git a/guix/store.scm b/guix/store.scm
index cc5c24a77d..f41a1e2690 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -78,6 +78,7 @@
add-data-to-store
add-text-to-store
add-to-store
+ add-file-tree-to-store
binary-file
build-things
build
@@ -137,6 +138,7 @@
set-current-system
text-file
interned-file
+ interned-file-tree
%store-prefix
store-path
@@ -951,6 +953,101 @@ where FILE is the entry's absolute file name and STAT is the result of
(hash-set! cache args path)
path))))))
+(define %not-slash
+ (char-set-complement (char-set #\/)))
+
+(define* (add-file-tree-to-store server tree
+ #:key
+ (hash-algo "sha256")
+ (recursive? #t))
+ "Add the given TREE to the store on SERVER. TREE must be an entry such as:
+
+ (\"my-tree\" directory
+ (\"a\" regular (data \"hello\"))
+ (\"b\" symlink \"a\")
+ (\"c\" directory
+ (\"d\" executable (file \"/bin/sh\"))))
+
+This is a generalized version of 'add-to-store'. It allows you to reproduce
+an arbitrary directory layout in the store without creating a derivation."
+
+ ;; Note: The format of TREE was chosen to allow trees to be compared with
+ ;; 'equal?', which in turn allows us to memoize things.
+
+ (define root
+ ;; TREE is a single entry.
+ (list tree))
+
+ (define basename
+ (match tree
+ ((name . _) name)))
+
+ (define (lookup file)
+ (let loop ((components (string-tokenize file %not-slash))
+ (tree root))
+ (match components
+ ((basename)
+ (assoc basename tree))
+ ((head . rest)
+ (loop rest
+ (match (assoc-ref tree head)
+ (('directory . entries) entries)))))))
+
+ (define (file-type+size file)
+ (match (lookup file)
+ ((_ (and type (or 'directory 'symlink)) . _)
+ (values type 0))
+ ((_ type ('file file))
+ (values type (stat:size (stat file))))
+ ((_ type ('data (? string? data)))
+ (values type (string-length data)))
+ ((_ type ('data (? bytevector? data)))
+ (values type (bytevector-length data)))))
+
+ (define (file-port file)
+ (match (lookup file)
+ ((_ (or 'regular 'executable) content)
+ (match content
+ (('file (? string? file))
+ (open-file file "r0b"))
+ (('data (? string? str))
+ (open-input-string str))
+ (('data (? bytevector? bv))
+ (open-bytevector-input-port bv))))))
+
+ (define (symlink-target file)
+ (match (lookup file)
+ ((_ 'symlink target) target)))
+
+ (define (directory-entries directory)
+ (match (lookup directory)
+ ((_ 'directory (names . _) ...) names)))
+
+ (define cache
+ (nix-server-add-to-store-cache server))
+
+ (or (hash-ref cache tree)
+ (begin
+ ;; We don't use the 'operation' macro so we can use 'write-file-tree'
+ ;; instead of 'write-file'.
+ (record-operation 'add-to-store/tree)
+ (let ((port (nix-server-socket server)))
+ (write-int (operation-id add-to-store) port)
+ (write-string basename port)
+ (write-int 1 port) ;obsolete, must be #t
+ (write-int (if recursive? 1 0) port)
+ (write-string hash-algo port)
+ (write-file-tree basename port
+ #:file-type+size file-type+size
+ #:file-port file-port
+ #:symlink-target symlink-target
+ #:directory-entries directory-entries)
+ (let loop ((done? (process-stderr server)))
+ (or done? (loop (process-stderr server))))
+ (let ((result (read-store-path port)))
+ (hash-set! cache tree result)
+ result)))))
+
(define build-things
(let ((build (operation (build-things (string-list things)
(integer mode))
@@ -1402,6 +1499,9 @@ where FILE is the entry's absolute file name and STAT is the result of
#:select? select?)
store)))
+(define interned-file-tree
+ (store-lift add-file-tree-to-store))
+
(define build
;; Monadic variant of 'build-things'.
(store-lift build-things))
diff --git a/guix/store/database.scm b/guix/store/database.scm
index 8f35b63e37..0879a95d0b 100644
--- a/guix/store/database.scm
+++ b/guix/store/database.scm
@@ -190,12 +190,14 @@ Every store item in REFERENCES must already be registered."
(define (reset-timestamps file)
"Reset the modification time on FILE and on all the files it contains, if
it's a directory. While at it, canonicalize file permissions."
+ ;; Note: We're resetting to one second after the Epoch like 'guix-daemon'
+ ;; has always done.
(let loop ((file file)
(type (stat:type (lstat file))))
(case type
((directory)
(chmod file #o555)
- (utime file 0 0 0 0)
+ (utime file 1 1 0 0)
(let ((parent file))
(for-each (match-lambda
(("." . _) #f)
@@ -209,10 +211,10 @@ it's a directory. While at it, canonicalize file permissions."
(type type))))))
(scandir* parent))))
((symlink)
- (utime file 0 0 0 0 AT_SYMLINK_NOFOLLOW))
+ (utime file 1 1 0 0 AT_SYMLINK_NOFOLLOW))
(else
(chmod file (if (executable-file? file) #o555 #o444))
- (utime file 0 0 0 0)))))
+ (utime file 1 1 0 0)))))
(define* (register-path path
#:key (references '()) deriver prefix
diff --git a/guix/store/deduplication.scm b/guix/store/deduplication.scm
index 6ff4a50de5..8c19d7309e 100644
--- a/guix/store/deduplication.scm
+++ b/guix/store/deduplication.scm
@@ -31,37 +31,39 @@
#:export (nar-sha256
deduplicate))
-;; Would it be better to just make WRITE-FILE give size as well? I question
-;; the general utility of this approach.
+;; XXX: This port is used as a workaround on Guile <= 2.2.4 where
+;; 'port-position' throws to 'out-of-range' when the offset is great than or
+;; equal to 2^32: <https://bugs.gnu.org/32161>.
(define (counting-wrapper-port output-port)
- "Some custom ports don't implement GET-POSITION at all. But if we want to
-figure out how many bytes are being written, we will want to use that. So this
-makes a wrapper around a port which implements GET-POSITION."
+ "Return two values: an output port that wraps OUTPUT-PORT, and a thunk to
+retrieve the number of bytes written to OUTPUT-PORT."
(let ((byte-count 0))
- (make-custom-binary-output-port "counting-wrapper"
- (lambda (bytes offset count)
- (set! byte-count
- (+ byte-count count))
- (put-bytevector output-port bytes
- offset count)
- count)
- (lambda ()
- byte-count)
- #f
- (lambda ()
- (close-port output-port)))))
+ (values (make-custom-binary-output-port "counting-wrapper"
+ (lambda (bytes offset count)
+ (put-bytevector output-port bytes
+ offset count)
+ (set! byte-count
+ (+ byte-count count))
+ count)
+ (lambda ()
+ byte-count)
+ #f
+ (lambda ()
+ (close-port output-port)))
+ (lambda ()
+ byte-count))))
(define (nar-sha256 file)
"Gives the sha256 hash of a file and the size of the file in nar form."
- (let-values (((port get-hash) (open-sha256-port)))
- (let ((wrapper (counting-wrapper-port port)))
- (write-file file wrapper)
- (force-output wrapper)
- (force-output port)
- (let ((hash (get-hash))
- (size (port-position wrapper)))
- (close-port wrapper)
- (values hash size)))))
+ (let*-values (((port get-hash) (open-sha256-port))
+ ((wrapper get-size) (counting-wrapper-port port)))
+ (write-file file wrapper)
+ (force-output wrapper)
+ (force-output port)
+ (let ((hash (get-hash))
+ (size (get-size)))
+ (close-port wrapper)
+ (values hash size))))
(define (tempname-in directory)
"Gives an unused temporary name under DIRECTORY. Not guaranteed to still be
diff --git a/guix/utils.scm b/guix/utils.scm
index 200bb69e03..9bad06d52f 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -5,7 +5,6 @@
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2015 David Thompson <davet@gnu.org>
-;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
;;;
@@ -176,7 +175,7 @@ a symbol such as 'xz."
(match compression
((or #f 'none) (values input '()))
('bzip2 (filtered-port `(,%bzip2 "-dc") input))
- ('xz (filtered-port `(,%xz "-dc" "-T0") input))
+ ('xz (filtered-port `(,%xz "-dc") input))
('gzip (filtered-port `(,%gzip "-dc") input))
(else (error "unsupported compression scheme" compression))))
@@ -186,7 +185,7 @@ a symbol such as 'xz."
(match compression
((or #f 'none) (values input '()))
('bzip2 (filtered-port `(,%bzip2 "-c") input))
- ('xz (filtered-port `(,%xz "-c" "-T0") input))
+ ('xz (filtered-port `(,%xz "-c") input))
('gzip (filtered-port `(,%gzip "-c") input))
(else (error "unsupported compression scheme" compression))))
@@ -243,7 +242,7 @@ program--e.g., '(\"--fast\")."
(match compression
((or #f 'none) (values output '()))
('bzip2 (filtered-output-port `(,%bzip2 "-c" ,@options) output))
- ('xz (filtered-output-port `(,%xz "-c" "-T0" ,@options) output))
+ ('xz (filtered-output-port `(,%xz "-c" ,@options) output))
('gzip (filtered-output-port `(,%gzip "-c" ,@options) output))
(else (error "unsupported compression scheme" compression))))
diff --git a/srfi/srfi-64.scm b/srfi/srfi-64.scm
deleted file mode 100644
index f053443b39..0000000000
--- a/srfi/srfi-64.scm
+++ /dev/null
@@ -1,41 +0,0 @@
-(define-module (srfi srfi-64)
- #:export (test-begin ;; must be listed first, since in Kawa (at least) it is "magic".
- test-end test-assert test-eqv test-eq test-equal
- test-approximate test-assert test-error test-apply test-with-runner
- test-match-nth test-match-all test-match-any test-match-name
- test-skip test-expect-fail test-read-eval-string
- test-runner-group-path test-group test-group-with-cleanup
- test-result-ref test-result-set! test-result-clear test-result-remove
- test-result-kind test-passed?
- test-log-to-file
- ; Misc test-runner functions
- test-runner? test-runner-reset test-runner-null
- test-runner-simple test-runner-current test-runner-factory test-runner-get
- test-runner-create test-runner-test-name
- ;; test-runner field setter and getter functions - see %test-record-define:
- test-runner-pass-count test-runner-pass-count!
- test-runner-fail-count test-runner-fail-count!
- test-runner-xpass-count test-runner-xpass-count!
- test-runner-xfail-count test-runner-xfail-count!
- test-runner-skip-count test-runner-skip-count!
- test-runner-group-stack test-runner-group-stack!
- test-runner-on-test-begin test-runner-on-test-begin!
- test-runner-on-test-end test-runner-on-test-end!
- test-runner-on-group-begin test-runner-on-group-begin!
- test-runner-on-group-end test-runner-on-group-end!
- test-runner-on-final test-runner-on-final!
- test-runner-on-bad-count test-runner-on-bad-count!
- test-runner-on-bad-end-name test-runner-on-bad-end-name!
- test-result-alist test-result-alist!
- test-runner-aux-value test-runner-aux-value!
- ;; default/simple call-back functions, used in default test-runner,
- ;; but can be called to construct more complex ones.
- test-on-group-begin-simple test-on-group-end-simple
- test-on-bad-count-simple test-on-bad-end-name-simple
- test-on-final-simple test-on-test-end-simple
- test-on-final-simple))
-
-(cond-expand-provide (current-module) '(srfi-64))
-
-;; Load Per Bothner's original SRFI-64 implementation.
-(load-from-path "srfi/srfi-64.upstream.scm")
diff --git a/srfi/srfi-64.upstream.scm b/srfi/srfi-64.upstream.scm
deleted file mode 100644
index d686662bfd..0000000000
--- a/srfi/srfi-64.upstream.scm
+++ /dev/null
@@ -1,1040 +0,0 @@
-;; Copyright (c) 2005, 2006, 2007, 2012, 2013 Per Bothner
-;; Added "full" support for Chicken, Gauche, Guile and SISC.
-;; Alex Shinn, Copyright (c) 2005.
-;; Modified for Scheme Spheres by Álvaro Castro-Castilla, Copyright (c) 2012.
-;; Support for Guile 2 by Mark H Weaver <mhw@netris.org>, Copyright (c) 2014.
-;;
-;; Permission is hereby granted, free of charge, to any person
-;; obtaining a copy of this software and associated documentation
-;; files (the "Software"), to deal in the Software without
-;; restriction, including without limitation the rights to use, copy,
-;; modify, merge, publish, distribute, sublicense, and/or sell copies
-;; of the Software, and to permit persons to whom the Software is
-;; furnished to do so, subject to the following conditions:
-;;
-;; The above copyright notice and this permission notice shall be
-;; included in all copies or substantial portions of the Software.
-;;
-;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-;; SOFTWARE.
-
-(cond-expand
- (chicken
- (require-extension syntax-case))
- (guile-2
- (use-modules (srfi srfi-9)
- ;; In 2.0.9, srfi-34 and srfi-35 are not well integrated
- ;; with either Guile's native exceptions or R6RS exceptions.
- ;;(srfi srfi-34) (srfi srfi-35)
- (srfi srfi-39)))
- (guile
- (use-modules (ice-9 syncase) (srfi srfi-9)
- ;;(srfi srfi-34) (srfi srfi-35) - not in Guile 1.6.7
- (srfi srfi-39)))
- (sisc
- (require-extension (srfi 9 34 35 39)))
- (kawa
- (module-compile-options warn-undefined-variable: #t
- warn-invoke-unknown-method: #t)
- (provide 'srfi-64)
- (provide 'testing)
- (require 'srfi-34)
- (require 'srfi-35))
- (else ()
- ))
-
-(cond-expand
- (kawa
- (define-syntax %test-export
- (syntax-rules ()
- ((%test-export test-begin . other-names)
- (module-export %test-begin . other-names)))))
- (else
- (define-syntax %test-export
- (syntax-rules ()
- ((%test-export . names) (if #f #f))))))
-
-;; List of exported names
-(%test-export
- test-begin ;; must be listed first, since in Kawa (at least) it is "magic".
- test-end test-assert test-eqv test-eq test-equal
- test-approximate test-assert test-error test-apply test-with-runner
- test-match-nth test-match-all test-match-any test-match-name
- test-skip test-expect-fail test-read-eval-string
- test-runner-group-path test-group test-group-with-cleanup
- test-result-ref test-result-set! test-result-clear test-result-remove
- test-result-kind test-passed?
- test-log-to-file
- ; Misc test-runner functions
- test-runner? test-runner-reset test-runner-null
- test-runner-simple test-runner-current test-runner-factory test-runner-get
- test-runner-create test-runner-test-name
- ;; test-runner field setter and getter functions - see %test-record-define:
- test-runner-pass-count test-runner-pass-count!
- test-runner-fail-count test-runner-fail-count!
- test-runner-xpass-count test-runner-xpass-count!
- test-runner-xfail-count test-runner-xfail-count!
- test-runner-skip-count test-runner-skip-count!
- test-runner-group-stack test-runner-group-stack!
- test-runner-on-test-begin test-runner-on-test-begin!
- test-runner-on-test-end test-runner-on-test-end!
- test-runner-on-group-begin test-runner-on-group-begin!
- test-runner-on-group-end test-runner-on-group-end!
- test-runner-on-final test-runner-on-final!
- test-runner-on-bad-count test-runner-on-bad-count!
- test-runner-on-bad-end-name test-runner-on-bad-end-name!
- test-result-alist test-result-alist!
- test-runner-aux-value test-runner-aux-value!
- ;; default/simple call-back functions, used in default test-runner,
- ;; but can be called to construct more complex ones.
- test-on-group-begin-simple test-on-group-end-simple
- test-on-bad-count-simple test-on-bad-end-name-simple
- test-on-final-simple test-on-test-end-simple
- test-on-final-simple)
-
-(cond-expand
- (srfi-9
- (define-syntax %test-record-define
- (syntax-rules ()
- ((%test-record-define alloc runner? (name index setter getter) ...)
- (define-record-type test-runner
- (alloc)
- runner?
- (name setter getter) ...)))))
- (else
- (define %test-runner-cookie (list "test-runner"))
- (define-syntax %test-record-define
- (syntax-rules ()
- ((%test-record-define alloc runner? (name index getter setter) ...)
- (begin
- (define (runner? obj)
- (and (vector? obj)
- (> (vector-length obj) 1)
- (eq (vector-ref obj 0) %test-runner-cookie)))
- (define (alloc)
- (let ((runner (make-vector 23)))
- (vector-set! runner 0 %test-runner-cookie)
- runner))
- (begin
- (define (getter runner)
- (vector-ref runner index)) ...)
- (begin
- (define (setter runner value)
- (vector-set! runner index value)) ...)))))))
-
-(%test-record-define
- %test-runner-alloc test-runner?
- ;; Cumulate count of all tests that have passed and were expected to.
- (pass-count 1 test-runner-pass-count test-runner-pass-count!)
- (fail-count 2 test-runner-fail-count test-runner-fail-count!)
- (xpass-count 3 test-runner-xpass-count test-runner-xpass-count!)
- (xfail-count 4 test-runner-xfail-count test-runner-xfail-count!)
- (skip-count 5 test-runner-skip-count test-runner-skip-count!)
- (skip-list 6 %test-runner-skip-list %test-runner-skip-list!)
- (fail-list 7 %test-runner-fail-list %test-runner-fail-list!)
- ;; Normally #t, except when in a test-apply.
- (run-list 8 %test-runner-run-list %test-runner-run-list!)
- (skip-save 9 %test-runner-skip-save %test-runner-skip-save!)
- (fail-save 10 %test-runner-fail-save %test-runner-fail-save!)
- (group-stack 11 test-runner-group-stack test-runner-group-stack!)
- (on-test-begin 12 test-runner-on-test-begin test-runner-on-test-begin!)
- (on-test-end 13 test-runner-on-test-end test-runner-on-test-end!)
- ;; Call-back when entering a group. Takes (runner suite-name count).
- (on-group-begin 14 test-runner-on-group-begin test-runner-on-group-begin!)
- ;; Call-back when leaving a group.
- (on-group-end 15 test-runner-on-group-end test-runner-on-group-end!)
- ;; Call-back when leaving the outermost group.
- (on-final 16 test-runner-on-final test-runner-on-final!)
- ;; Call-back when expected number of tests was wrong.
- (on-bad-count 17 test-runner-on-bad-count test-runner-on-bad-count!)
- ;; Call-back when name in test=end doesn't match test-begin.
- (on-bad-end-name 18 test-runner-on-bad-end-name test-runner-on-bad-end-name!)
- ;; Cumulate count of all tests that have been done.
- (total-count 19 %test-runner-total-count %test-runner-total-count!)
- ;; Stack (list) of (count-at-start . expected-count):
- (count-list 20 %test-runner-count-list %test-runner-count-list!)
- (result-alist 21 test-result-alist test-result-alist!)
- ;; Field can be used by test-runner for any purpose.
- ;; test-runner-simple uses it for a log file.
- (aux-value 22 test-runner-aux-value test-runner-aux-value!)
-)
-
-(define (test-runner-reset runner)
- (test-result-alist! runner '())
- (test-runner-pass-count! runner 0)
- (test-runner-fail-count! runner 0)
- (test-runner-xpass-count! runner 0)
- (test-runner-xfail-count! runner 0)
- (test-runner-skip-count! runner 0)
- (%test-runner-total-count! runner 0)
- (%test-runner-count-list! runner '())
- (%test-runner-run-list! runner #t)
- (%test-runner-skip-list! runner '())
- (%test-runner-fail-list! runner '())
- (%test-runner-skip-save! runner '())
- (%test-runner-fail-save! runner '())
- (test-runner-group-stack! runner '()))
-
-(define (test-runner-group-path runner)
- (reverse (test-runner-group-stack runner)))
-
-(define (%test-null-callback runner) #f)
-
-(define (test-runner-null)
- (let ((runner (%test-runner-alloc)))
- (test-runner-reset runner)
- (test-runner-on-group-begin! runner (lambda (runner name count) #f))
- (test-runner-on-group-end! runner %test-null-callback)
- (test-runner-on-final! runner %test-null-callback)
- (test-runner-on-test-begin! runner %test-null-callback)
- (test-runner-on-test-end! runner %test-null-callback)
- (test-runner-on-bad-count! runner (lambda (runner count expected) #f))
- (test-runner-on-bad-end-name! runner (lambda (runner begin end) #f))
- runner))
-
-;; Not part of the specification. FIXME
-;; Controls whether a log file is generated.
-(define test-log-to-file #t)
-
-(define (test-runner-simple)
- (let ((runner (%test-runner-alloc)))
- (test-runner-reset runner)
- (test-runner-on-group-begin! runner test-on-group-begin-simple)
- (test-runner-on-group-end! runner test-on-group-end-simple)
- (test-runner-on-final! runner test-on-final-simple)
- (test-runner-on-test-begin! runner test-on-test-begin-simple)
- (test-runner-on-test-end! runner test-on-test-end-simple)
- (test-runner-on-bad-count! runner test-on-bad-count-simple)
- (test-runner-on-bad-end-name! runner test-on-bad-end-name-simple)
- runner))
-
-(cond-expand
- (srfi-39
- (define test-runner-current (make-parameter #f))
- (define test-runner-factory (make-parameter test-runner-simple)))
- (else
- (define %test-runner-current #f)
- (define-syntax test-runner-current
- (syntax-rules ()
- ((test-runner-current)
- %test-runner-current)
- ((test-runner-current runner)
- (set! %test-runner-current runner))))
- (define %test-runner-factory test-runner-simple)
- (define-syntax test-runner-factory
- (syntax-rules ()
- ((test-runner-factory)
- %test-runner-factory)
- ((test-runner-factory runner)
- (set! %test-runner-factory runner))))))
-
-;; A safer wrapper to test-runner-current.
-(define (test-runner-get)
- (let ((r (test-runner-current)))
- (if (not r)
- (cond-expand
- (srfi-23 (error "test-runner not initialized - test-begin missing?"))
- (else #t)))
- r))
-
-(define (%test-specifier-matches spec runner)
- (spec runner))
-
-(define (test-runner-create)
- ((test-runner-factory)))
-
-(define (%test-any-specifier-matches list runner)
- (let ((result #f))
- (let loop ((l list))
- (cond ((null? l) result)
- (else
- (if (%test-specifier-matches (car l) runner)
- (set! result #t))
- (loop (cdr l)))))))
-
-;; Returns #f, #t, or 'xfail.
-(define (%test-should-execute runner)
- (let ((run (%test-runner-run-list runner)))
- (cond ((or
- (not (or (eqv? run #t)
- (%test-any-specifier-matches run runner)))
- (%test-any-specifier-matches
- (%test-runner-skip-list runner)
- runner))
- (test-result-set! runner 'result-kind 'skip)
- #f)
- ((%test-any-specifier-matches
- (%test-runner-fail-list runner)
- runner)
- (test-result-set! runner 'result-kind 'xfail)
- 'xfail)
- (else #t))))
-
-(define (%test-begin suite-name count)
- (if (not (test-runner-current))
- (test-runner-current (test-runner-create)))
- (let ((runner (test-runner-current)))
- ((test-runner-on-group-begin runner) runner suite-name count)
- (%test-runner-skip-save! runner
- (cons (%test-runner-skip-list runner)
- (%test-runner-skip-save runner)))
- (%test-runner-fail-save! runner
- (cons (%test-runner-fail-list runner)
- (%test-runner-fail-save runner)))
- (%test-runner-count-list! runner
- (cons (cons (%test-runner-total-count runner)
- count)
- (%test-runner-count-list runner)))
- (test-runner-group-stack! runner (cons suite-name
- (test-runner-group-stack runner)))))
-(cond-expand
- (kawa
- ;; Kawa has test-begin built in, implemented as:
- ;; (begin
- ;; (cond-expand (srfi-64 #!void) (else (require 'srfi-64)))
- ;; (%test-begin suite-name [count]))
- ;; This puts test-begin but only test-begin in the default environment.,
- ;; which makes normal test suites loadable without non-portable commands.
- )
- (else
- (define-syntax test-begin
- (syntax-rules ()
- ((test-begin suite-name)
- (%test-begin suite-name #f))
- ((test-begin suite-name count)
- (%test-begin suite-name count))))))
-
-(define (test-on-group-begin-simple runner suite-name count)
- (if (null? (test-runner-group-stack runner))
- (begin
- (display "%%%% Starting test ")
- (display suite-name)
- (if test-log-to-file
- (let* ((log-file-name
- (if (string? test-log-to-file) test-log-to-file
- (string-append suite-name ".log")))
- (log-file
- (cond-expand (mzscheme
- (open-output-file log-file-name 'truncate/replace))
- (else (open-output-file log-file-name)))))
- (display "%%%% Starting test " log-file)
- (display suite-name log-file)
- (newline log-file)
- (test-runner-aux-value! runner log-file)
- (display " (Writing full log to \"")
- (display log-file-name)
- (display "\")")))
- (newline)))
- (let ((log (test-runner-aux-value runner)))
- (if (output-port? log)
- (begin
- (display "Group begin: " log)
- (display suite-name log)
- (newline log))))
- #f)
-
-(define (test-on-group-end-simple runner)
- (let ((log (test-runner-aux-value runner)))
- (if (output-port? log)
- (begin
- (display "Group end: " log)
- (display (car (test-runner-group-stack runner)) log)
- (newline log))))
- #f)
-
-(define (%test-on-bad-count-write runner count expected-count port)
- (display "*** Total number of tests was " port)
- (display count port)
- (display " but should be " port)
- (display expected-count port)
- (display ". ***" port)
- (newline port)
- (display "*** Discrepancy indicates testsuite error or exceptions. ***" port)
- (newline port))
-
-(define (test-on-bad-count-simple runner count expected-count)
- (%test-on-bad-count-write runner count expected-count (current-output-port))
- (let ((log (test-runner-aux-value runner)))
- (if (output-port? log)
- (%test-on-bad-count-write runner count expected-count log))))
-
-(define (test-on-bad-end-name-simple runner begin-name end-name)
- (let ((msg (string-append (%test-format-line runner) "test-end " begin-name
- " does not match test-begin " end-name)))
- (cond-expand
- (srfi-23 (error msg))
- (else (display msg) (newline)))))
-
-
-(define (%test-final-report1 value label port)
- (if (> value 0)
- (begin
- (display label port)
- (display value port)
- (newline port))))
-
-(define (%test-final-report-simple runner port)
- (%test-final-report1 (test-runner-pass-count runner)
- "# of expected passes " port)
- (%test-final-report1 (test-runner-xfail-count runner)
- "# of expected failures " port)
- (%test-final-report1 (test-runner-xpass-count runner)
- "# of unexpected successes " port)
- (%test-final-report1 (test-runner-fail-count runner)
- "# of unexpected failures " port)
- (%test-final-report1 (test-runner-skip-count runner)
- "# of skipped tests " port))
-
-(define (test-on-final-simple runner)
- (%test-final-report-simple runner (current-output-port))
- (let ((log (test-runner-aux-value runner)))
- (if (output-port? log)
- (%test-final-report-simple runner log))))
-
-(define (%test-format-line runner)
- (let* ((line-info (test-result-alist runner))
- (source-file (assq 'source-file line-info))
- (source-line (assq 'source-line line-info))
- (file (if source-file (cdr source-file) "")))
- (if source-line
- (string-append file ":"
- (number->string (cdr source-line)) ": ")
- "")))
-
-(define (%test-end suite-name line-info)
- (let* ((r (test-runner-get))
- (groups (test-runner-group-stack r))
- (line (%test-format-line r)))
- (test-result-alist! r line-info)
- (if (null? groups)
- (let ((msg (string-append line "test-end not in a group")))
- (cond-expand
- (srfi-23 (error msg))
- (else (display msg) (newline)))))
- (if (and suite-name (not (equal? suite-name (car groups))))
- ((test-runner-on-bad-end-name r) r suite-name (car groups)))
- (let* ((count-list (%test-runner-count-list r))
- (expected-count (cdar count-list))
- (saved-count (caar count-list))
- (group-count (- (%test-runner-total-count r) saved-count)))
- (if (and expected-count
- (not (= expected-count group-count)))
- ((test-runner-on-bad-count r) r group-count expected-count))
- ((test-runner-on-group-end r) r)
- (test-runner-group-stack! r (cdr (test-runner-group-stack r)))
- (%test-runner-skip-list! r (car (%test-runner-skip-save r)))
- (%test-runner-skip-save! r (cdr (%test-runner-skip-save r)))
- (%test-runner-fail-list! r (car (%test-runner-fail-save r)))
- (%test-runner-fail-save! r (cdr (%test-runner-fail-save r)))
- (%test-runner-count-list! r (cdr count-list))
- (if (null? (test-runner-group-stack r))
- ((test-runner-on-final r) r)))))
-
-(define-syntax test-group
- (syntax-rules ()
- ((test-group suite-name . body)
- (let ((r (test-runner-current)))
- ;; Ideally should also set line-number, if available.
- (test-result-alist! r (list (cons 'test-name suite-name)))
- (if (%test-should-execute r)
- (dynamic-wind
- (lambda () (test-begin suite-name))
- (lambda () . body)
- (lambda () (test-end suite-name))))))))
-
-(define-syntax test-group-with-cleanup
- (syntax-rules ()
- ((test-group-with-cleanup suite-name form cleanup-form)
- (test-group suite-name
- (dynamic-wind
- (lambda () #f)
- (lambda () form)
- (lambda () cleanup-form))))
- ((test-group-with-cleanup suite-name cleanup-form)
- (test-group-with-cleanup suite-name #f cleanup-form))
- ((test-group-with-cleanup suite-name form1 form2 form3 . rest)
- (test-group-with-cleanup suite-name (begin form1 form2) form3 . rest))))
-
-(define (test-on-test-begin-simple runner)
- (let ((log (test-runner-aux-value runner)))
- (if (output-port? log)
- (let* ((results (test-result-alist runner))
- (source-file (assq 'source-file results))
- (source-line (assq 'source-line results))
- (source-form (assq 'source-form results))
- (test-name (assq 'test-name results)))
- (display "Test begin:" log)
- (newline log)
- (if test-name (%test-write-result1 test-name log))
- (if source-file (%test-write-result1 source-file log))
- (if source-line (%test-write-result1 source-line log))
- (if source-form (%test-write-result1 source-form log))))))
-
-(define-syntax test-result-ref
- (syntax-rules ()
- ((test-result-ref runner pname)
- (test-result-ref runner pname #f))
- ((test-result-ref runner pname default)
- (let ((p (assq pname (test-result-alist runner))))
- (if p (cdr p) default)))))
-
-(define (test-on-test-end-simple runner)
- (let ((log (test-runner-aux-value runner))
- (kind (test-result-ref runner 'result-kind)))
- (if (memq kind '(fail xpass))
- (let* ((results (test-result-alist runner))
- (source-file (assq 'source-file results))
- (source-line (assq 'source-line results))
- (test-name (assq 'test-name results)))
- (if (or source-file source-line)
- (begin
- (if source-file (display (cdr source-file)))
- (display ":")
- (if source-line (display (cdr source-line)))
- (display ": ")))
- (display (if (eq? kind 'xpass) "XPASS" "FAIL"))
- (if test-name
- (begin
- (display " ")
- (display (cdr test-name))))
- (newline)))
- (if (output-port? log)
- (begin
- (display "Test end:" log)
- (newline log)
- (let loop ((list (test-result-alist runner)))
- (if (pair? list)
- (let ((pair (car list)))
- ;; Write out properties not written out by on-test-begin.
- (if (not (memq (car pair)
- '(test-name source-file source-line source-form)))
- (%test-write-result1 pair log))
- (loop (cdr list)))))))))
-
-(define (%test-write-result1 pair port)
- (display " " port)
- (display (car pair) port)
- (display ": " port)
- (write (cdr pair) port)
- (newline port))
-
-(define (test-result-set! runner pname value)
- (let* ((alist (test-result-alist runner))
- (p (assq pname alist)))
- (if p
- (set-cdr! p value)
- (test-result-alist! runner (cons (cons pname value) alist)))))
-
-(define (test-result-clear runner)
- (test-result-alist! runner '()))
-
-(define (test-result-remove runner pname)
- (let* ((alist (test-result-alist runner))
- (p (assq pname alist)))
- (if p
- (test-result-alist! runner
- (let loop ((r alist))
- (if (eq? r p) (cdr r)
- (cons (car r) (loop (cdr r)))))))))
-
-(define (test-result-kind . rest)
- (let ((runner (if (pair? rest) (car rest) (test-runner-current))))
- (test-result-ref runner 'result-kind)))
-
-(define (test-passed? . rest)
- (let ((runner (if (pair? rest) (car rest) (test-runner-get))))
- (memq (test-result-ref runner 'result-kind) '(pass xpass))))
-
-(define (%test-report-result)
- (let* ((r (test-runner-get))
- (result-kind (test-result-kind r)))
- (case result-kind
- ((pass)
- (test-runner-pass-count! r (+ 1 (test-runner-pass-count r))))
- ((fail)
- (test-runner-fail-count! r (+ 1 (test-runner-fail-count r))))
- ((xpass)
- (test-runner-xpass-count! r (+ 1 (test-runner-xpass-count r))))
- ((xfail)
- (test-runner-xfail-count! r (+ 1 (test-runner-xfail-count r))))
- (else
- (test-runner-skip-count! r (+ 1 (test-runner-skip-count r)))))
- (%test-runner-total-count! r (+ 1 (%test-runner-total-count r)))
- ((test-runner-on-test-end r) r)))
-
-(cond-expand
- (guile
- (define-syntax %test-evaluate-with-catch
- (syntax-rules ()
- ((%test-evaluate-with-catch test-expression)
- (catch #t
- (lambda () test-expression)
- (lambda (key . args)
- (test-result-set! (test-runner-current) 'actual-error
- (cons key args))
- #f))))))
- (kawa
- (define-syntax %test-evaluate-with-catch
- (syntax-rules ()
- ((%test-evaluate-with-catch test-expression)
- (try-catch test-expression
- (ex <java.lang.Throwable>
- (test-result-set! (test-runner-current) 'actual-error ex)
- #f))))))
- (srfi-34
- (define-syntax %test-evaluate-with-catch
- (syntax-rules ()
- ((%test-evaluate-with-catch test-expression)
- (guard (err (else #f)) test-expression)))))
- (chicken
- (define-syntax %test-evaluate-with-catch
- (syntax-rules ()
- ((%test-evaluate-with-catch test-expression)
- (condition-case test-expression (ex () #f))))))
- (else
- (define-syntax %test-evaluate-with-catch
- (syntax-rules ()
- ((%test-evaluate-with-catch test-expression)
- test-expression)))))
-
-(cond-expand
- ((or kawa mzscheme)
- (cond-expand
- (mzscheme
- (define-for-syntax (%test-syntax-file form)
- (let ((source (syntax-source form)))
- (cond ((string? source) file)
- ((path? source) (path->string source))
- (else #f)))))
- (kawa
- (define (%test-syntax-file form)
- (syntax-source form))))
- (define (%test-source-line2 form)
- (let* ((line (syntax-line form))
- (file (%test-syntax-file form))
- (line-pair (if line (list (cons 'source-line line)) '())))
- (cons (cons 'source-form (syntax-object->datum form))
- (if file (cons (cons 'source-file file) line-pair) line-pair)))))
- (guile-2
- (define (%test-source-line2 form)
- (let* ((src-props (syntax-source form))
- (file (and src-props (assq-ref src-props 'filename)))
- (line (and src-props (assq-ref src-props 'line)))
- (file-alist (if file
- `((source-file . ,file))
- '()))
- (line-alist (if line
- `((source-line . ,(+ line 1)))
- '())))
- (datum->syntax (syntax here)
- `((source-form . ,(syntax->datum form))
- ,@file-alist
- ,@line-alist)))))
- (else
- (define (%test-source-line2 form)
- '())))
-
-(define (%test-on-test-begin r)
- (%test-should-execute r)
- ((test-runner-on-test-begin r) r)
- (not (eq? 'skip (test-result-ref r 'result-kind))))
-
-(define (%test-on-test-end r result)
- (test-result-set! r 'result-kind
- (if (eq? (test-result-ref r 'result-kind) 'xfail)
- (if result 'xpass 'xfail)
- (if result 'pass 'fail))))
-
-(define (test-runner-test-name runner)
- (test-result-ref runner 'test-name ""))
-
-(define-syntax %test-comp2body
- (syntax-rules ()
- ((%test-comp2body r comp expected expr)
- (let ()
- (if (%test-on-test-begin r)
- (let ((exp expected))
- (test-result-set! r 'expected-value exp)
- (let ((res (%test-evaluate-with-catch expr)))
- (test-result-set! r 'actual-value res)
- (%test-on-test-end r (comp exp res)))))
- (%test-report-result)))))
-
-(define (%test-approximate= error)
- (lambda (value expected)
- (let ((rval (real-part value))
- (ival (imag-part value))
- (rexp (real-part expected))
- (iexp (imag-part expected)))
- (and (>= rval (- rexp error))
- (>= ival (- iexp error))
- (<= rval (+ rexp error))
- (<= ival (+ iexp error))))))
-
-(define-syntax %test-comp1body
- (syntax-rules ()
- ((%test-comp1body r expr)
- (let ()
- (if (%test-on-test-begin r)
- (let ()
- (let ((res (%test-evaluate-with-catch expr)))
- (test-result-set! r 'actual-value res)
- (%test-on-test-end r res))))
- (%test-report-result)))))
-
-(cond-expand
- ((or kawa mzscheme guile-2)
- ;; Should be made to work for any Scheme with syntax-case
- ;; However, I haven't gotten the quoting working. FIXME.
- (define-syntax test-end
- (lambda (x)
- (syntax-case (list x (list (syntax quote) (%test-source-line2 x))) ()
- (((mac suite-name) line)
- (syntax
- (%test-end suite-name line)))
- (((mac) line)
- (syntax
- (%test-end #f line))))))
- (define-syntax test-assert
- (lambda (x)
- (syntax-case (list x (list (syntax quote) (%test-source-line2 x))) ()
- (((mac tname expr) line)
- (syntax
- (let* ((r (test-runner-get))
- (name tname))
- (test-result-alist! r (cons (cons 'test-name tname) line))
- (%test-comp1body r expr))))
- (((mac expr) line)
- (syntax
- (let* ((r (test-runner-get)))
- (test-result-alist! r line)
- (%test-comp1body r expr)))))))
- (define (%test-comp2 comp x)
- (syntax-case (list x (list (syntax quote) (%test-source-line2 x)) comp) ()
- (((mac tname expected expr) line comp)
- (syntax
- (let* ((r (test-runner-get))
- (name tname))
- (test-result-alist! r (cons (cons 'test-name tname) line))
- (%test-comp2body r comp expected expr))))
- (((mac expected expr) line comp)
- (syntax
- (let* ((r (test-runner-get)))
- (test-result-alist! r line)
- (%test-comp2body r comp expected expr))))))
- (define-syntax test-eqv
- (lambda (x) (%test-comp2 (syntax eqv?) x)))
- (define-syntax test-eq
- (lambda (x) (%test-comp2 (syntax eq?) x)))
- (define-syntax test-equal
- (lambda (x) (%test-comp2 (syntax equal?) x)))
- (define-syntax test-approximate ;; FIXME - needed for non-Kawa
- (lambda (x)
- (syntax-case (list x (list (syntax quote) (%test-source-line2 x))) ()
- (((mac tname expected expr error) line)
- (syntax
- (let* ((r (test-runner-get))
- (name tname))
- (test-result-alist! r (cons (cons 'test-name tname) line))
- (%test-comp2body r (%test-approximate= error) expected expr))))
- (((mac expected expr error) line)
- (syntax
- (let* ((r (test-runner-get)))
- (test-result-alist! r line)
- (%test-comp2body r (%test-approximate= error) expected expr))))))))
- (else
- (define-syntax test-end
- (syntax-rules ()
- ((test-end)
- (%test-end #f '()))
- ((test-end suite-name)
- (%test-end suite-name '()))))
- (define-syntax test-assert
- (syntax-rules ()
- ((test-assert tname test-expression)
- (let* ((r (test-runner-get))
- (name tname))
- (test-result-alist! r '((test-name . tname)))
- (%test-comp1body r test-expression)))
- ((test-assert test-expression)
- (let* ((r (test-runner-get)))
- (test-result-alist! r '())
- (%test-comp1body r test-expression)))))
- (define-syntax %test-comp2
- (syntax-rules ()
- ((%test-comp2 comp tname expected expr)
- (let* ((r (test-runner-get))
- (name tname))
- (test-result-alist! r (list (cons 'test-name tname)))
- (%test-comp2body r comp expected expr)))
- ((%test-comp2 comp expected expr)
- (let* ((r (test-runner-get)))
- (test-result-alist! r '())
- (%test-comp2body r comp expected expr)))))
- (define-syntax test-equal
- (syntax-rules ()
- ((test-equal . rest)
- (%test-comp2 equal? . rest))))
- (define-syntax test-eqv
- (syntax-rules ()
- ((test-eqv . rest)
- (%test-comp2 eqv? . rest))))
- (define-syntax test-eq
- (syntax-rules ()
- ((test-eq . rest)
- (%test-comp2 eq? . rest))))
- (define-syntax test-approximate
- (syntax-rules ()
- ((test-approximate tname expected expr error)
- (%test-comp2 (%test-approximate= error) tname expected expr))
- ((test-approximate expected expr error)
- (%test-comp2 (%test-approximate= error) expected expr))))))
-
-(cond-expand
- (guile
- (define-syntax %test-error
- (syntax-rules ()
- ((%test-error r etype expr)
- (cond ((%test-on-test-begin r)
- (let ((et etype))
- (test-result-set! r 'expected-error et)
- (%test-on-test-end r
- (catch #t
- (lambda ()
- (test-result-set! r 'actual-value expr)
- #f)
- (lambda (key . args)
- ;; TODO: decide how to specify expected
- ;; error types for Guile.
- (test-result-set! r 'actual-error
- (cons key args))
- #t)))
- (%test-report-result))))))))
- (mzscheme
- (define-syntax %test-error
- (syntax-rules ()
- ((%test-error r etype expr)
- (%test-comp1body r (with-handlers (((lambda (h) #t) (lambda (h) #t)))
- (let ()
- (test-result-set! r 'actual-value expr)
- #f)))))))
- (chicken
- (define-syntax %test-error
- (syntax-rules ()
- ((%test-error r etype expr)
- (%test-comp1body r (condition-case expr (ex () #t)))))))
- (kawa
- (define-syntax %test-error
- (syntax-rules ()
- ((%test-error r #t expr)
- (cond ((%test-on-test-begin r)
- (test-result-set! r 'expected-error #t)
- (%test-on-test-end r
- (try-catch
- (let ()
- (test-result-set! r 'actual-value expr)
- #f)
- (ex <java.lang.Throwable>
- (test-result-set! r 'actual-error ex)
- #t)))
- (%test-report-result))))
- ((%test-error r etype expr)
- (if (%test-on-test-begin r)
- (let ((et etype))
- (test-result-set! r 'expected-error et)
- (%test-on-test-end r
- (try-catch
- (let ()
- (test-result-set! r 'actual-value expr)
- #f)
- (ex <java.lang.Throwable>
- (test-result-set! r 'actual-error ex)
- (cond ((and (instance? et <gnu.bytecode.ClassType>)
- (gnu.bytecode.ClassType:isSubclass et <java.lang.Throwable>))
- (instance? ex et))
- (else #t)))))
- (%test-report-result)))))))
- ((and srfi-34 srfi-35)
- (define-syntax %test-error
- (syntax-rules ()
- ((%test-error r etype expr)
- (%test-comp1body r (guard (ex ((condition-type? etype)
- (and (condition? ex) (condition-has-type? ex etype)))
- ((procedure? etype)
- (etype ex))
- ((equal? etype #t)
- #t)
- (else #t))
- expr #f))))))
- (srfi-34
- (define-syntax %test-error
- (syntax-rules ()
- ((%test-error r etype expr)
- (%test-comp1body r (guard (ex (else #t)) expr #f))))))
- (else
- (define-syntax %test-error
- (syntax-rules ()
- ((%test-error r etype expr)
- (begin
- ((test-runner-on-test-begin r) r)
- (test-result-set! r 'result-kind 'skip)
- (%test-report-result)))))))
-
-(cond-expand
- ((or kawa mzscheme guile-2)
-
- (define-syntax test-error
- (lambda (x)
- (syntax-case (list x (list (syntax quote) (%test-source-line2 x))) ()
- (((mac tname etype expr) line)
- (syntax
- (let* ((r (test-runner-get))
- (name tname))
- (test-result-alist! r (cons (cons 'test-name tname) line))
- (%test-error r etype expr))))
- (((mac etype expr) line)
- (syntax
- (let* ((r (test-runner-get)))
- (test-result-alist! r line)
- (%test-error r etype expr))))
- (((mac expr) line)
- (syntax
- (let* ((r (test-runner-get)))
- (test-result-alist! r line)
- (%test-error r #t expr))))))))
- (else
- (define-syntax test-error
- (syntax-rules ()
- ((test-error name etype expr)
- (let ((r (test-runner-get)))
- (test-result-alist! r `((test-name . ,name)))
- (%test-error r etype expr)))
- ((test-error etype expr)
- (let ((r (test-runner-get)))
- (test-result-alist! r '())
- (%test-error r etype expr)))
- ((test-error expr)
- (let ((r (test-runner-get)))
- (test-result-alist! r '())
- (%test-error r #t expr)))))))
-
-(define (test-apply first . rest)
- (if (test-runner? first)
- (test-with-runner first (apply test-apply rest))
- (let ((r (test-runner-current)))
- (if r
- (let ((run-list (%test-runner-run-list r)))
- (cond ((null? rest)
- (%test-runner-run-list! r (reverse run-list))
- (first)) ;; actually apply procedure thunk
- (else
- (%test-runner-run-list!
- r
- (if (eq? run-list #t) (list first) (cons first run-list)))
- (apply test-apply rest)
- (%test-runner-run-list! r run-list))))
- (let ((r (test-runner-create)))
- (test-with-runner r (apply test-apply first rest))
- ((test-runner-on-final r) r))))))
-
-(define-syntax test-with-runner
- (syntax-rules ()
- ((test-with-runner runner form ...)
- (let ((saved-runner (test-runner-current)))
- (dynamic-wind
- (lambda () (test-runner-current runner))
- (lambda () form ...)
- (lambda () (test-runner-current saved-runner)))))))
-
-;;; Predicates
-
-(define (%test-match-nth n count)
- (let ((i 0))
- (lambda (runner)
- (set! i (+ i 1))
- (and (>= i n) (< i (+ n count))))))
-
-(define-syntax test-match-nth
- (syntax-rules ()
- ((test-match-nth n)
- (test-match-nth n 1))
- ((test-match-nth n count)
- (%test-match-nth n count))))
-
-(define (%test-match-all . pred-list)
- (lambda (runner)
- (let ((result #t))
- (let loop ((l pred-list))
- (if (null? l)
- result
- (begin
- (if (not ((car l) runner))
- (set! result #f))
- (loop (cdr l))))))))
-
-(define-syntax test-match-all
- (syntax-rules ()
- ((test-match-all pred ...)
- (%test-match-all (%test-as-specifier pred) ...))))
-
-(define (%test-match-any . pred-list)
- (lambda (runner)
- (let ((result #f))
- (let loop ((l pred-list))
- (if (null? l)
- result
- (begin
- (if ((car l) runner)
- (set! result #t))
- (loop (cdr l))))))))
-
-(define-syntax test-match-any
- (syntax-rules ()
- ((test-match-any pred ...)
- (%test-match-any (%test-as-specifier pred) ...))))
-
-;; Coerce to a predicate function:
-(define (%test-as-specifier specifier)
- (cond ((procedure? specifier) specifier)
- ((integer? specifier) (test-match-nth 1 specifier))
- ((string? specifier) (test-match-name specifier))
- (else
- (error "not a valid test specifier"))))
-
-(define-syntax test-skip
- (syntax-rules ()
- ((test-skip pred ...)
- (let ((runner (test-runner-get)))
- (%test-runner-skip-list! runner
- (cons (test-match-all (%test-as-specifier pred) ...)
- (%test-runner-skip-list runner)))))))
-
-(define-syntax test-expect-fail
- (syntax-rules ()
- ((test-expect-fail pred ...)
- (let ((runner (test-runner-get)))
- (%test-runner-fail-list! runner
- (cons (test-match-all (%test-as-specifier pred) ...)
- (%test-runner-fail-list runner)))))))
-
-(define (test-match-name name)
- (lambda (runner)
- (equal? name (test-runner-test-name runner))))
-
-(define (test-read-eval-string string)
- (let* ((port (open-input-string string))
- (form (read port)))
- (if (eof-object? (read-char port))
- (cond-expand
- (guile (eval form (current-module)))
- (else (eval form)))
- (cond-expand
- (srfi-23 (error "(not at eof)"))
- (else "error")))))
-
diff --git a/tests/gexp.scm b/tests/gexp.scm
index 391a0f8be5..b22e635805 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -635,18 +635,16 @@
"guix/derivations.scm"))
("p/q" . ,(search-path %load-path "guix.scm"))
("p/z" . ,(search-path %load-path "guix/store.scm"))))
- (drv (imported-files files)))
+ (dir (imported-files files)))
(mbegin %store-monad
- (built-derivations (list drv))
- (let ((dir (derivation->output-path drv)))
- (return
- (every (match-lambda
- ((path . source)
- (equal? (call-with-input-file (string-append dir "/" path)
- get-bytevector-all)
- (call-with-input-file source
- get-bytevector-all))))
- files))))))
+ (return
+ (every (match-lambda
+ ((path . source)
+ (equal? (call-with-input-file (string-append dir "/" path)
+ get-bytevector-all)
+ (call-with-input-file source
+ get-bytevector-all))))
+ files)))))
(test-assertm "imported-files with file-like objects"
(mlet* %store-monad ((plain -> (plain-file "foo" "bar!"))
@@ -654,16 +652,19 @@
(files -> `(("a/b/c" . ,q-scm)
("p/q" . ,plain)))
(drv (imported-files files)))
+ (define (file=? file1 file2)
+ ;; Assume deduplication is in place.
+ (= (stat:ino (lstat file1))
+ (stat:ino (lstat file2))))
+
(mbegin %store-monad
(built-derivations (list drv))
(mlet %store-monad ((dir -> (derivation->output-path drv))
(plain* (text-file "foo" "bar!"))
(q-scm* (interned-file q-scm "c")))
(return
- (and (string=? (readlink (string-append dir "/a/b/c"))
- q-scm*)
- (string=? (readlink (string-append dir "/p/q"))
- plain*)))))))
+ (and (file=? (string-append dir "/a/b/c") q-scm*)
+ (file=? (string-append dir "/p/q") plain*)))))))
(test-equal "gexp-modules & ungexp"
'((bar) (foo))
diff --git a/tests/hash.scm b/tests/hash.scm
index da87616eec..47dff3915b 100644
--- a/tests/hash.scm
+++ b/tests/hash.scm
@@ -64,12 +64,12 @@
(get)))
(test-equal "open-sha256-port, hello"
- %hello-sha256
+ (list %hello-sha256 (string-length "hello world"))
(let-values (((port get)
(open-sha256-port)))
(put-bytevector port (string->utf8 "hello world"))
(force-output port)
- (get)))
+ (list (get) (port-position port))))
(test-assert "port-sha256"
(let* ((file (search-path %load-path "ice-9/psyntax.scm"))
diff --git a/tests/nar.scm b/tests/nar.scm
index 61646db964..9b5fb984b4 100644
--- a/tests/nar.scm
+++ b/tests/nar.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -152,6 +152,66 @@
(test-begin "nar")
+(test-assert "write-file-tree + restore-file"
+ (let* ((file1 (search-path %load-path "guix.scm"))
+ (file2 (search-path %load-path "guix/base32.scm"))
+ (file3 "#!/bin/something")
+ (output (string-append %test-dir "/output")))
+ (dynamic-wind
+ (lambda () #t)
+ (lambda ()
+ (define-values (port get-bytevector)
+ (open-bytevector-output-port))
+ (write-file-tree "root" port
+ #:file-type+size
+ (match-lambda
+ ("root"
+ (values 'directory 0))
+ ("root/foo"
+ (values 'regular (stat:size (stat file1))))
+ ("root/lnk"
+ (values 'symlink 0))
+ ("root/dir"
+ (values 'directory 0))
+ ("root/dir/bar"
+ (values 'regular (stat:size (stat file2))))
+ ("root/dir/exe"
+ (values 'executable (string-length file3))))
+ #:file-port
+ (match-lambda
+ ("root/foo" (open-input-file file1))
+ ("root/dir/bar" (open-input-file file2))
+ ("root/dir/exe" (open-input-string file3)))
+ #:symlink-target
+ (match-lambda
+ ("root/lnk" "foo"))
+ #:directory-entries
+ (match-lambda
+ ("root" '("foo" "dir" "lnk"))
+ ("root/dir" '("bar" "exe"))))
+ (close-port port)
+
+ (rm-rf %test-dir)
+ (mkdir %test-dir)
+ (restore-file (open-bytevector-input-port (get-bytevector))
+ output)
+ (and (file=? (string-append output "/foo") file1)
+ (string=? (readlink (string-append output "/lnk"))
+ "foo")
+ (file=? (string-append output "/dir/bar") file2)
+ (string=? (call-with-input-file (string-append output "/dir/exe")
+ get-string-all)
+ file3)
+ (> (logand (stat:mode (lstat (string-append output "/dir/exe")))
+ #o100)
+ 0)
+ (equal? '("." ".." "bar" "exe")
+ (scandir (string-append output "/dir")))
+ (equal? '("." ".." "dir" "foo" "lnk")
+ (scandir output))))
+ (lambda ()
+ (false-if-exception (rm-rf %test-dir))))))
+
(test-assert "write-file supports non-file output ports"
(let ((input (string-append (dirname (search-path %load-path "guix.scm"))
"/guix"))
diff --git a/tests/pypi.scm b/tests/pypi.scm
index 74f13e9662..310c6c8f29 100644
--- a/tests/pypi.scm
+++ b/tests/pypi.scm
@@ -89,7 +89,7 @@ baz > 13.37")
(dummy-package "foo"
(source (dummy-origin
(uri
- "https://pypi.python.org/packages/a2/3b/4756e6a0ceb14e084042a2a65c615d68d25621c6fd446d0fc10d14c4ce7d/certbot-0.8.1.tar.gz"))))))
+ "https://pypi.org/packages/a2/3b/4756e6a0ceb14e084042a2a65c615d68d25621c6fd446d0fc10d14c4ce7d/certbot-0.8.1.tar.gz"))))))
(test-equal "guix-package->pypi-name, several URLs"
"cram"
@@ -120,7 +120,7 @@ baz > 13.37")
(mock ((guix http-client) http-fetch
(lambda (url . rest)
(match url
- ("https://pypi.python.org/pypi/foo/json"
+ ("https://pypi.org/pypi/foo/json"
(values (open-input-string test-json)
(string-length test-json)))
("https://example.com/foo-1.0.0-py2.py3-none-any.whl" #f)
@@ -182,7 +182,7 @@ baz > 13.37")
(mock ((guix http-client) http-fetch
(lambda (url . rest)
(match url
- ("https://pypi.python.org/pypi/foo/json"
+ ("https://pypi.org/pypi/foo/json"
(values (open-input-string test-json)
(string-length test-json)))
("https://example.com/foo-1.0.0-py2.py3-none-any.whl" #f)
diff --git a/tests/store-database.scm b/tests/store-database.scm
index fcae66e2de..4d91884250 100644
--- a/tests/store-database.scm
+++ b/tests/store-database.scm
@@ -32,7 +32,8 @@
(test-begin "store-database")
-(test-assert "register-path"
+(test-equal "register-path"
+ '(1 1)
(let ((file (string-append (%store-prefix) "/" (make-string 32 #\f)
"-fake")))
(when (valid-path? %store file)
@@ -50,7 +51,9 @@
(and (valid-path? %store file)
(equal? (references %store file) (list ref))
(null? (valid-derivers %store file))
- (null? (referrers %store file))))))
+ (null? (referrers %store file))
+ (list (stat:mtime (lstat file))
+ (stat:mtime (lstat ref)))))))
(test-equal "new database"
(list 1 2)
diff --git a/tests/store.scm b/tests/store.scm
index afecec940a..47fab0df18 100644
--- a/tests/store.scm
+++ b/tests/store.scm
@@ -210,6 +210,52 @@
(valid-path? store path)
(file-exists? path)))))
+(test-equal "add-file-tree-to-store"
+ `(42
+ ("." directory #t)
+ ("./bar" directory #t)
+ ("./foo" directory #t)
+ ("./foo/a" regular "file a")
+ ("./foo/b" symlink "a")
+ ("./foo/c" directory #t)
+ ("./foo/c/p" regular "file p")
+ ("./foo/c/q" directory #t)
+ ("./foo/c/q/x" regular "#!/bin/sh\nexit 42")
+ ("./foo/c/q/y" symlink "..")
+ ("./foo/c/q/z" directory #t))
+ (let* ((tree `("file-tree" directory
+ ("foo" directory
+ ("a" regular (data "file a"))
+ ("b" symlink "a")
+ ("c" directory
+ ("p" regular (data ,(string->utf8 "file p")))
+ ("q" directory
+ ("x" executable
+ (data "#!/bin/sh\nexit 42"))
+ ("y" symlink "..")
+ ("z" directory))))
+ ("bar" directory)))
+ (result (add-file-tree-to-store %store tree)))
+ (cons (status:exit-val (system* (string-append result "/foo/c/q/x")))
+ (with-directory-excursion result
+ (map (lambda (file)
+ (let ((type (stat:type (lstat file))))
+ `(,file ,type
+ ,(match type
+ ((or 'regular 'executable)
+ (call-with-input-file file
+ get-string-all))
+ ('symlink (readlink file))
+ ('directory #t)))))
+ (find-files "." #:directories? #t))))))
+
+(test-equal "add-file-tree-to-store, flat"
+ "Hello, world!"
+ (let* ((tree `("flat-file" regular (data "Hello, world!")))
+ (result (add-file-tree-to-store %store tree)))
+ (and (file-exists? result)
+ (call-with-input-file result get-string-all))))
+
(test-assert "references"
(let* ((t1 (add-text-to-store %store "random1"
(random-text)))