summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am2
-rw-r--r--build-aux/pre-inst-env.in11
-rw-r--r--doc/guix.texi49
-rw-r--r--gnu/build/file-systems.scm121
-rw-r--r--gnu/build/linux-boot.scm20
-rw-r--r--gnu/build/linux-container.scm3
-rw-r--r--gnu/local.mk3
-rw-r--r--gnu/packages/audio.scm28
-rw-r--r--gnu/packages/bioinformatics.scm104
-rw-r--r--gnu/packages/build-tools.scm8
-rw-r--r--gnu/packages/cinnamon.scm86
-rw-r--r--gnu/packages/crypto.scm40
-rw-r--r--gnu/packages/cups.scm10
-rw-r--r--gnu/packages/databases.scm13
-rw-r--r--gnu/packages/disk.scm4
-rw-r--r--gnu/packages/emacs.scm205
-rw-r--r--gnu/packages/embedded.scm97
-rw-r--r--gnu/packages/engineering.scm195
-rw-r--r--gnu/packages/games.scm52
-rw-r--r--gnu/packages/gl.scm6
-rw-r--r--gnu/packages/gnome.scm91
-rw-r--r--gnu/packages/gnucash.scm54
-rw-r--r--gnu/packages/gnunet.scm4
-rw-r--r--gnu/packages/graphviz.scm32
-rw-r--r--gnu/packages/guile.scm21
-rw-r--r--gnu/packages/kde-frameworks.scm160
-rw-r--r--gnu/packages/libffi.scm113
-rw-r--r--gnu/packages/linux.scm40
-rw-r--r--gnu/packages/mail.scm19
-rw-r--r--gnu/packages/maths.scm17
-rw-r--r--gnu/packages/mp3.scm4
-rw-r--r--gnu/packages/networking.scm9
-rw-r--r--gnu/packages/password-utils.scm1
-rw-r--r--gnu/packages/patches/totem-meson-easy-codec.patch65
-rw-r--r--gnu/packages/perl.scm734
-rw-r--r--gnu/packages/python.scm274
-rw-r--r--gnu/packages/qt.scm246
-rw-r--r--gnu/packages/ruby.scm28
-rw-r--r--gnu/packages/sdl.scm28
-rw-r--r--gnu/packages/security-token.scm6
-rw-r--r--gnu/packages/serialization.scm23
-rw-r--r--gnu/packages/statistics.scm26
-rw-r--r--gnu/packages/syncthing.scm1821
-rw-r--r--gnu/packages/tmux.scm4
-rw-r--r--gnu/packages/video.scm4
-rw-r--r--gnu/packages/web.scm19
-rw-r--r--gnu/packages/xorg.scm45
-rw-r--r--gnu/services.scm6
-rw-r--r--gnu/services/base.scm6
-rw-r--r--gnu/services/desktop.scm16
-rw-r--r--gnu/system/examples/lightweight-desktop.tmpl8
-rw-r--r--gnu/system/file-systems.scm10
-rw-r--r--gnu/system/linux-initrd.scm6
-rw-r--r--gnu/system/uuid.scm30
-rw-r--r--guix/build-system/go.scm132
-rw-r--r--guix/build/emacs-build-system.scm8
-rw-r--r--guix/build/go-build-system.scm217
-rw-r--r--guix/import/cpan.scm14
-rw-r--r--guix/import/pypi.scm1
-rw-r--r--guix/scripts/lint.scm78
-rw-r--r--guix/scripts/offload.scm61
-rwxr-xr-xguix/scripts/substitute.scm1
-rw-r--r--guix/tests/http.scm133
-rw-r--r--guix/ui.scm9
-rw-r--r--guix/zlib.scm39
-rw-r--r--tests/derivations.scm8
-rw-r--r--tests/guix-system.sh15
-rw-r--r--tests/lint.scm97
-rw-r--r--tests/zlib.scm11
69 files changed, 4814 insertions, 1037 deletions
diff --git a/Makefile.am b/Makefile.am
index b6b7af3eb7..9bd81c3881 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -80,6 +80,7 @@ MODULES = \
guix/build-system/dub.scm \
guix/build-system/emacs.scm \
guix/build-system/font.scm \
+ guix/build-system/go.scm \
guix/build-system/meson.scm \
guix/build-system/minify.scm \
guix/build-system/asdf.scm \
@@ -111,6 +112,7 @@ MODULES = \
guix/build/meson-build-system.scm \
guix/build/minify-build-system.scm \
guix/build/font-build-system.scm \
+ guix/build/go-build-system.scm \
guix/build/asdf-build-system.scm \
guix/build/git.scm \
guix/build/hg.scm \
diff --git a/build-aux/pre-inst-env.in b/build-aux/pre-inst-env.in
index dca2699687..14315d40d4 100644
--- a/build-aux/pre-inst-env.in
+++ b/build-aux/pre-inst-env.in
@@ -2,6 +2,7 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2012, 2013, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2017 Eric Bavier <bavier@cray.com>
#
# This file is part of GNU Guix.
#
@@ -50,13 +51,9 @@ NIX_LIBEXEC_DIR="@abs_top_builddir@/nix/scripts" # for 'guix-authenticate'
export NIX_ROOT_FINDER NIX_SUBSTITUTERS NIX_LIBEXEC_DIR
NIX_BUILD_HOOK="$abs_top_builddir/nix/scripts/offload"
-if [ -x "$NIX_BUILD_HOOK" ]
-then
- export NIX_BUILD_HOOK
-else
- # No offloading support.
- unset NIX_BUILD_HOOK
-fi
+@BUILD_DAEMON_OFFLOAD_TRUE@export NIX_BUILD_HOOK
+@BUILD_DAEMON_OFFLOAD_FALSE@# No offloading support.
+@BUILD_DAEMON_OFFLOAD_FALSE@unset NIX_BUILD_HOOK
# The 'guix-register' program.
GUIX_REGISTER="$abs_top_builddir/guix-register"
diff --git a/doc/guix.texi b/doc/guix.texi
index 7b5b711793..b7f4f88f92 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -3576,6 +3576,24 @@ debugging information''), which roughly means that code is compiled with
@code{-O2 -g}, as is the case for Autoconf-based packages by default.
@end defvr
+@defvr {Scheme Variable} go-build-system
+This variable is exported by @code{(guix build-system go)}. It
+implements a build procedure for Go packages using the standard
+@url{https://golang.org/cmd/go/#hdr-Compile_packages_and_dependencies,
+Go build mechanisms}.
+
+The user is expected to provide a value for the key @code{#:import-path}
+and, in some cases, @code{#:unpack-path}. The
+@url{https://golang.org/doc/code.html#ImportPaths, import path}
+corresponds to the filesystem path expected by the package's build
+scripts and any referring packages, and provides a unique way to
+refer to a Go package. It is typically based on a combination of the
+package source code's remote URI and filesystem hierarchy structure. In
+some cases, you will need to unpack the package's source code to a
+different directory structure than the one indicated by the import path,
+and @code{#:unpack-path} should be used in such cases.
+@end defvr
+
@defvr {Scheme Variable} glib-or-gtk-build-system
This variable is exported by @code{(guix build-system glib-or-gtk)}. It
is intended for use with packages making use of GLib or GTK+.
@@ -8406,6 +8424,7 @@ management, power management, and more, would look like this:
@include os-config-desktop.texi
@end lisp
+@cindex UEFI
A graphical UEFI system with a choice of lightweight window managers
instead of full-blown desktop environments would look like this:
@@ -8413,6 +8432,10 @@ instead of full-blown desktop environments would look like this:
@include os-config-lightweight-desktop.texi
@end lisp
+This example refers to the @file{/boot/efi} partition by its UUID,
+@code{1234-ABCD}. Replace this UUID with the right UUID on your system,
+as returned by the @command{blkid} command.
+
@xref{Desktop Services}, for the exact list of services provided by
@var{%desktop-services}. @xref{X.509 Certificates}, for background
information about the @code{nss-certs} package that is used here.
@@ -9767,8 +9790,32 @@ Return a service that runs the Guix build daemon according to
@var{config}.
@end deffn
-@deffn {Scheme Procedure} udev-service [#:udev udev]
+@cindex udev-service
+@cindex udev-rule
+@deffn {Scheme Procedure} udev-service [#:udev @var{udev}] [#:rules @var{'()}]
Run @var{udev}, which populates the @file{/dev} directory dynamically.
+Additional udev rules can be provided as a list of files through the
+@var{rules} variable. The procedure @var{udev-rule} simplifies the
+creation of these rule files.
+
+In the following example, a rule for a USB device is defined to be
+stored in the file @file{90-usb-thing.rules}, and the default
+@var{udev-service} is extended with it. The rule runs a script upon
+detecting a USB device with a given product identifier.
+
+@example
+(define %example-udev-rule
+ (udev-rule "90-usb-thing.rules"
+ "ACTION==\"add\", SUBSYSTEM==\"usb\", ATTR@{product@}==\"Example\", RUN+=\"/path/to/script\""))
+
+(operating-system
+ ;; @dots{}
+ (services (modify-services %desktop-services
+ (udev-service-type config =>
+ (udev-configuration (inherit config)
+ (rules (append (udev-configuration-rules config)
+ (list %example-udev-rule))))))))
+@end example
@end deffn
@deffn {Scheme Procedure} urandom-seed-service @var{#f}
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index 140bcb414b..3e516a4d3c 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -20,9 +20,11 @@
(define-module (gnu build file-systems)
#:use-module (gnu system uuid)
+ #:use-module (gnu system file-systems)
#:use-module (guix build utils)
#:use-module (guix build bournish)
- #:use-module (guix build syscalls)
+ #:use-module ((guix build syscalls)
+ #:hide (file-system-type))
#:use-module (rnrs io ports)
#:use-module (rnrs bytevectors)
#:use-module (ice-9 match)
@@ -192,7 +194,7 @@ if DEVICE does not contain a btrfs file system."
Trailing spaces are trimmed."
(string-trim-right (latin1->string (sub-bytevector sblock 71 11) (lambda (c) #f)) #\space))
-(define (check-fat32-file-system device)
+(define (check-fat-file-system device)
"Return the health of a fat file system on DEVICE."
(match (status:exit-val
(system* "fsck.vfat" "-v" "-a" device))
@@ -202,6 +204,33 @@ Trailing spaces are trimmed."
;;;
+;;; FAT16 file systems.
+;;;
+
+(define (fat16-superblock? sblock)
+ "Return #t when SBLOCK is a fat16 boot record."
+ (bytevector=? (sub-bytevector sblock 54 8)
+ (string->utf8 "FAT16 ")))
+
+(define (read-fat16-superblock device)
+ "Return the raw contents of DEVICE's fat16 superblock as a bytevector, or
+#f if DEVICE does not contain a fat16 file system."
+ (read-superblock device 0 62 fat16-superblock?))
+
+(define (fat16-superblock-uuid sblock)
+ "Return the Volume ID of a fat superblock SBLOCK as a 4-byte bytevector."
+ (sub-bytevector sblock 39 4))
+
+(define (fat16-superblock-volume-name sblock)
+ "Return the volume name of SBLOCK as a string of at most 11 characters, or
+#f if SBLOCK has no volume name. The volume name is a latin1 string.
+Trailing spaces are trimmed."
+ (string-trim-right (latin1->string (sub-bytevector sblock 43 11)
+ (lambda (c) #f))
+ #\space))
+
+
+;;;
;;; ISO9660 file systems.
;;;
@@ -384,7 +413,9 @@ partition field reader that returned a value."
(partition-field-reader read-btrfs-superblock
btrfs-superblock-volume-name)
(partition-field-reader read-fat32-superblock
- fat32-superblock-volume-name)))
+ fat32-superblock-volume-name)
+ (partition-field-reader read-fat16-superblock
+ fat16-superblock-volume-name)))
(define %partition-uuid-readers
(list (partition-field-reader read-iso9660-superblock
@@ -394,7 +425,9 @@ partition field reader that returned a value."
(partition-field-reader read-btrfs-superblock
btrfs-superblock-uuid)
(partition-field-reader read-fat32-superblock
- fat32-superblock-uuid)))
+ fat32-superblock-uuid)
+ (partition-field-reader read-fat16-superblock
+ fat16-superblock-uuid)))
(define read-partition-label
(cut read-partition-field <> %partition-label-readers))
@@ -448,8 +481,7 @@ the following:
\"/dev/sda1\";
• 'label', in which case SPEC is known to designate a partition label--e.g.,
\"my-root-part\";
- • 'uuid', in which case SPEC must be a UUID (a 16-byte bytevector)
- designating a partition;
+ • 'uuid', in which case SPEC must be a UUID designating a partition;
• 'any', in which case SPEC can be anything.
"
(define max-trials
@@ -495,9 +527,11 @@ the following:
(resolve find-partition-by-label spec identity))
((uuid)
(resolve find-partition-by-uuid
- (if (string? spec)
- (string->uuid spec)
- spec)
+ (cond ((string? spec)
+ (string->uuid spec))
+ ((uuid? spec)
+ (uuid-bytevector spec))
+ (else spec))
uuid->string))
(else
(error "unknown device title" title))))
@@ -508,7 +542,7 @@ the following:
(cond
((string-prefix? "ext" type) check-ext2-file-system)
((string-prefix? "btrfs" type) check-btrfs-file-system)
- ((string-suffix? "fat" type) check-fat32-file-system)
+ ((string-suffix? "fat" type) check-fat-file-system)
(else #f)))
(if check-procedure
@@ -552,11 +586,8 @@ corresponds to the symbols listed in FLAGS."
(()
0))))
-(define* (mount-file-system spec #:key (root "/root"))
- "Mount the file system described by SPEC under ROOT. SPEC must have the
-form:
-
- (DEVICE TITLE MOUNT-POINT TYPE (FLAGS ...) OPTIONS CHECK?)
+(define* (mount-file-system fs #:key (root "/root"))
+ "Mount the file system described by FS, a <file-system> object, under ROOT.
DEVICE, MOUNT-POINT, and TYPE must be strings; OPTIONS can be a string or #f;
FLAGS must be a list of symbols. CHECK? is a Boolean indicating whether to
@@ -582,34 +613,36 @@ run a file system check."
(if options
(string-append "," options)
"")))))
- (match spec
- ((source title mount-point type (flags ...) options check?)
- (let ((source (canonicalize-device-spec source title))
- (mount-point (string-append root "/" mount-point))
- (flags (mount-flags->bit-mask flags)))
- (when check?
- (check-file-system source type))
-
- ;; Create the mount point. Most of the time this is a directory, but
- ;; in the case of a bind mount, a regular file or socket may be needed.
- (if (and (= MS_BIND (logand flags MS_BIND))
- (not (file-is-directory? source)))
- (unless (file-exists? mount-point)
- (mkdir-p (dirname mount-point))
- (call-with-output-file mount-point (const #t)))
- (mkdir-p mount-point))
-
- (cond
- ((string-prefix? "nfs" type)
- (mount-nfs source mount-point type flags options))
- (else
- (mount source mount-point type flags options)))
-
- ;; For read-only bind mounts, an extra remount is needed, as per
- ;; <http://lwn.net/Articles/281157/>, which still applies to Linux 4.0.
- (when (and (= MS_BIND (logand flags MS_BIND))
- (= MS_RDONLY (logand flags MS_RDONLY)))
- (let ((flags (logior MS_BIND MS_REMOUNT MS_RDONLY)))
- (mount source mount-point type flags #f)))))))
+ (let ((type (file-system-type fs))
+ (options (file-system-options fs))
+ (source (canonicalize-device-spec (file-system-device fs)
+ (file-system-title fs)))
+ (mount-point (string-append root "/"
+ (file-system-mount-point fs)))
+ (flags (mount-flags->bit-mask (file-system-flags fs))))
+ (when (file-system-check? fs)
+ (check-file-system source type))
+
+ ;; Create the mount point. Most of the time this is a directory, but
+ ;; in the case of a bind mount, a regular file or socket may be needed.
+ (if (and (= MS_BIND (logand flags MS_BIND))
+ (not (file-is-directory? source)))
+ (unless (file-exists? mount-point)
+ (mkdir-p (dirname mount-point))
+ (call-with-output-file mount-point (const #t)))
+ (mkdir-p mount-point))
+
+ (cond
+ ((string-prefix? "nfs" type)
+ (mount-nfs source mount-point type flags options))
+ (else
+ (mount source mount-point type flags options)))
+
+ ;; For read-only bind mounts, an extra remount is needed, as per
+ ;; <http://lwn.net/Articles/281157/>, which still applies to Linux 4.0.
+ (when (and (= MS_BIND (logand flags MS_BIND))
+ (= MS_RDONLY (logand flags MS_RDONLY)))
+ (let ((flags (logior MS_BIND MS_REMOUNT MS_RDONLY)))
+ (mount source mount-point type flags #f)))))
;;; file-systems.scm ends here
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index 360ef3faed..3712abe910 100644
--- a/gnu/build/linux-boot.scm
+++ b/gnu/build/linux-boot.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;;
;;; This file is part of GNU Guix.
@@ -27,9 +27,11 @@
#:use-module (ice-9 match)
#:use-module (ice-9 ftw)
#:use-module (guix build utils)
- #:use-module (guix build syscalls)
+ #:use-module ((guix build syscalls)
+ #:hide (file-system-type))
#:use-module (gnu build linux-modules)
#:use-module (gnu build file-systems)
+ #:use-module (gnu system file-systems)
#:export (mount-essential-file-systems
linux-command-line
find-long-option
@@ -349,19 +351,17 @@ supports kernel command-line options '--load', '--root', and '--repl'.
Mount the root file system, specified by the '--root' command-line argument,
if any.
-MOUNTS must be a list suitable for 'mount-file-system'.
+MOUNTS must be a list of <file-system> objects.
When VOLATILE-ROOT? is true, the root file system is writable but any changes
to it are lost."
- (define root-mount-point?
- (match-lambda
- ((device _ "/" _ ...) #t)
- (_ #f)))
+ (define (root-mount-point? fs)
+ (string=? (file-system-mount-point fs) "/"))
(define root-fs-type
- (or (any (match-lambda
- ((device _ "/" type _ ...) type)
- (_ #f))
+ (or (any (lambda (fs)
+ (and (root-mount-point? fs)
+ (file-system-type fs)))
mounts)
"ext4"))
diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm
index 95bfd92dde..70e789403f 100644
--- a/gnu/build/linux-container.scm
+++ b/gnu/build/linux-container.scm
@@ -152,8 +152,7 @@ for the process."
;; Mount user-specified file systems.
(for-each (lambda (file-system)
- (mount-file-system (file-system->spec file-system)
- #:root root))
+ (mount-file-system file-system #:root root))
mounts)
;; Jail the process inside the container's root file system.
diff --git a/gnu/local.mk b/gnu/local.mk
index 8e6551ce2f..50ef1dc874 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -87,6 +87,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/check.scm \
%D%/packages/chez.scm \
%D%/packages/ci.scm \
+ %D%/packages/cinnamon.scm \
%D%/packages/cmake.scm \
%D%/packages/cobol.scm \
%D%/packages/code.scm \
@@ -382,6 +383,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/suckless.scm \
%D%/packages/swig.scm \
%D%/packages/sync.scm \
+ %D%/packages/syncthing.scm \
%D%/packages/synergy.scm \
%D%/packages/syndication.scm \
%D%/packages/task-management.scm \
@@ -1048,6 +1050,7 @@ dist_patch_DATA = \
%D%/packages/patches/ttf2eot-cstddef.patch \
%D%/packages/patches/ttfautohint-source-date-epoch.patch \
%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/unrtf-CVE-2016-10091.patch \
%D%/packages/patches/unzip-CVE-2014-8139.patch \
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 0900630df1..e0aa1705e2 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -961,21 +961,27 @@ follower.")
(define-public fluidsynth
(package
(name "fluidsynth")
- (version "1.1.6")
+ (version "1.1.8")
(source (origin
- (method url-fetch)
- (uri (string-append
- "mirror://sourceforge/fluidsynth/fluidsynth-"
- version "/fluidsynth-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/FluidSynth/fluidsynth.git")
+ (commit (string-append "v" version))))
+ (file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "070pwb7brdcn1mfvplkd56vjc7lbz4iznzkqvfsakvgbv68k71ah"))))
- (build-system gnu-build-system)
+ "12q7hv0zvgylsdj1ipssv5zr7ap2y410dxsd63dz22y05fa2hwwd"))))
+ (build-system cmake-build-system)
(arguments
- `(#:phases
+ '(#:tests? #f ; no check phase
+ #:phases
(modify-phases %standard-phases
- (add-after 'unpack 'remove-broken-symlinks
- (lambda _ (delete-file-recursively "m4") #t)))))
+ (add-after 'unpack 'fix-libdir
+ (lambda _
+ (substitute* "CMakeLists.txt"
+ (("LIB_SUFFIX \\$\\{_init_lib_suffix\\}")
+ "LIB_SUFFIX \"\""))
+ #t)))))
(inputs
`(("libsndfile" ,libsndfile)
("alsa-lib" ,alsa-lib)
@@ -993,7 +999,7 @@ follower.")
specifications. FluidSynth reads and handles MIDI events from the MIDI input
device. It is the software analogue of a MIDI synthesizer. FluidSynth can
also play midifiles using a Soundfont.")
- (license license:gpl2+)))
+ (license license:lgpl2.1+)))
(define-public faad2
(package
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index f2f3b807c3..32603ae57e 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -730,14 +730,14 @@ provide a coordinated and extensible framework to do computational biology.")
(define-public python-biopython
(package
(name "python-biopython")
- (version "1.68")
+ (version "1.70")
(source (origin
(method url-fetch)
;; use PyPi rather than biopython.org to ease updating
(uri (pypi-uri "biopython" version))
(sha256
(base32
- "07qc7nz0k77y8hf8s18rscvibvm91zw0kkq7ylrhisf8vp8hkp6i"))))
+ "0nz4n9d2y2dg849gn1z0vjlkwcpzzkzy3fij7x94a6ixy2c54z2a"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -1774,15 +1774,14 @@ collections of DNA motifs.")
(define-public clustal-omega
(package
(name "clustal-omega")
- (version "1.2.1")
+ (version "1.2.4")
(source (origin
(method url-fetch)
- (uri (string-append
- "http://www.clustal.org/omega/clustal-omega-"
- version ".tar.gz"))
+ (uri (string-append "http://www.clustal.org/omega/clustal-omega-"
+ version ".tar.gz"))
(sha256
(base32
- "02ibkx0m0iwz8nscg998bh41gg251y56cgh86bvyrii5m8kjgwqf"))))
+ "1vm30mzncwdv881vrcwg11vzvrsmwy4wg80j5i0lcfk6dlld50w6"))))
(build-system gnu-build-system)
(inputs
`(("argtable" ,argtable)))
@@ -4890,6 +4889,43 @@ subsequent visualization, annotation and storage of results.")
;; LGPLv2.1+
(license (list license:gpl2 license:lgpl2.1+))))
+(define-public plink-ng
+ (package (inherit plink)
+ (name "plink-ng")
+ (version "1.90b4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/chrchang/plink-ng/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "09ixrds009aczjswxr2alcb774mksq5g0v78dgjjn1h4dky0kf9a"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f ;no "check" target
+ #:make-flags (list "BLASFLAGS=-llapack -lopenblas"
+ "CFLAGS=-Wall -O2 -DDYNAMIC_ZLIB=1"
+ "ZLIB=-lz"
+ "-f" "Makefile.std")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'chdir
+ (lambda _ (chdir "1.9") #t))
+ (delete 'configure) ; no "configure" script
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((bin (string-append (assoc-ref outputs "out")
+ "/bin/")))
+ (install-file "plink" bin)
+ #t))))))
+ (inputs
+ `(("zlib" ,zlib)
+ ("lapack" ,lapack)
+ ("openblas" ,openblas)))
+ (home-page "https://www.cog-genomics.org/plink/")
+ (license license:gpl3+)))
+
(define-public smithlab-cpp
(let ((revision "1")
(commit "728a097bec88c6f4b8528b685932049e660eff2e"))
@@ -8070,7 +8106,7 @@ library implementing most of the pipeline's features.")
(define-public rcas-web
(package
(name "rcas-web")
- (version "0.0.3")
+ (version "0.0.4")
(source
(origin
(method url-fetch)
@@ -8079,7 +8115,7 @@ library implementing most of the pipeline's features.")
"/rcas-web-" version ".tar.gz"))
(sha256
(base32
- "0d3my0g8i7js59n184zzzjdki7hgmhpi4rhfvk7i6jsw01ba04qq"))))
+ "1p16frfys41a8yaa4gkm457nzkqhqs2pc3lkac0ds457w9w5j1gm"))))
(build-system gnu-build-system)
(arguments
`(#:phases
@@ -9977,7 +10013,7 @@ browser.")
(revision "1"))
(package
(name "f-seq")
- (version (string-append "1.1-" revision "." commit))
+ (version (string-append "1.1-" revision "." (string-take commit 7)))
(source (origin
(method git-fetch)
(uri (git-reference
@@ -10086,3 +10122,51 @@ straight away. Its main features are:
and CHH context
@end itemize\n")
(license license:gpl3+)))
+
+(define-public paml
+ (package
+ (name "paml")
+ (version "4.9e")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://abacus.gene.ucl.ac.uk/software/"
+ "paml" version ".tgz"))
+ (sha256
+ (base32
+ "13zf6h9fiqghwhch2h06x1zdr6s42plsnqahflp5g7myr3han3s6"))
+ (modules '((guix build utils)))
+ ;; Remove Windows binaries
+ (snippet
+ '(begin
+ (for-each delete-file (find-files "." "\\.exe$"))
+ #t))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; there are no tests
+ #:make-flags '("CC=gcc")
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda _
+ (substitute* "src/BFdriver.c"
+ (("/bin/bash") (which "bash")))
+ (chdir "src")
+ #t))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((tools '("baseml" "basemlg" "codeml"
+ "pamp" "evolver" "yn00" "chi2"))
+ (bin (string-append (assoc-ref outputs "out") "/bin"))
+ (docdir (string-append (assoc-ref outputs "out")
+ "/share/doc/paml")))
+ (mkdir-p bin)
+ (for-each (lambda (file) (install-file file bin)) tools)
+ (copy-recursively "../doc" docdir)
+ #t))))))
+ (home-page "http://abacus.gene.ucl.ac.uk/software/paml.html")
+ (synopsis "Phylogentic analysis by maximum likelihood")
+ (description "PAML (for Phylogentic Analysis by Maximum Likelihood)
+contains a few programs for model fitting and phylogenetic tree reconstruction
+using nucleotide or amino-acid sequence data.")
+ ;; GPLv3 only
+ (license license:gpl3)))
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index a35ce3b067..00a286150a 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -70,15 +70,15 @@ makes a few sacrifices to acquire fast full and incremental build times.")
(define-public meson
(package
(name "meson")
- (version "0.42.1")
+ (version "0.43.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/mesonbuild/meson/"
- "archive/" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ "releases/download/" version "/meson-"
+ version ".tar.gz"))
(sha256
(base32
- "1494hdnd40g2v6pky34j0f2iwc6kwn51vck37qwz7nl2xr17b18q"))))
+ "0h3k0m45004ay1hzz9r66fkl1kwizaigxahyrlabyw0d1slyq4y5"))))
(build-system python-build-system)
(inputs `(("ninja", ninja)))
(propagated-inputs `(("python" ,python)))
diff --git a/gnu/packages/cinnamon.scm b/gnu/packages/cinnamon.scm
new file mode 100644
index 0000000000..4a6e96291c
--- /dev/null
+++ b/gnu/packages/cinnamon.scm
@@ -0,0 +1,86 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 ng0 <ng0@infotropique.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages cinnamon)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages autotools)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gettext)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages pulseaudio)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages xorg))
+
+(define-public cinnamon-desktop
+ (package
+ (name "cinnamon-desktop")
+ (version "3.4.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/linuxmint/cinnamon-desktop/"
+ "archive/" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1jf24csrbfi9aiza1g70jpvsbjiqwphk0i5wilxq9kpjjsl99maq"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'autoconf
+ (lambda _
+ (mkdir-p "m4")
+ (zero?
+ (and (system* "glib-gettextize" "--force" "--copy")
+ (system* "intltoolize" "--force" "--copy" "--automake")
+ (system* "autoreconf" "--verbose" "--force" "--install"))))))))
+ ;; TODO: package 'libgsystem'.
+ (inputs
+ `(("accountsservice" ,accountsservice)
+ ("gtk+" ,gtk+)
+ ("glib" ,glib)
+ ("gobject-introspection" ,gobject-introspection)
+ ("gnome-common" ,gnome-common)
+ ("libxkbfile" ,libxkbfile)
+ ("libxrandr" ,libxrandr)
+ ("python-2" ,python-2)
+ ("pulseaudio" ,pulseaudio)
+ ("xkeyboard-config" ,xkeyboard-config)))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("gettext" ,gettext-minimal)
+ ("glib" ,glib "bin") ; glib-gettextize
+ ("intltool" ,intltool)
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)))
+ (home-page "https://github.com/linuxmint/cinnamon-desktop/")
+ (synopsis "Library for the Cinnamon Desktop")
+ (description
+ "The cinnamon-desktop package contains the libcinnamon-desktop library,
+as well as some desktop-wide documents.")
+ (license (list license:gpl2+ license:lgpl2.0+
+ license:expat)))) ;display-name.c , edid-parse.c
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 0f017888b2..427318d455 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -4,7 +4,7 @@
;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
;;; Copyright © 2016, 2017 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
@@ -35,10 +35,12 @@
#:use-module (gnu packages image)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages libbsd)
+ #:use-module (gnu packages libffi)
#:use-module (gnu packages linux)
#:use-module (gnu packages nettle)
#:use-module (gnu packages password-utils)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages python)
#:use-module (gnu packages readline)
#:use-module (gnu packages search)
#:use-module (gnu packages serialization)
@@ -594,3 +596,39 @@ or millenia for an attacker to try them all.
data on your platform, so the seed itself will be as random as possible.
@end enumerate\n")
(license license:artistic2.0)))
+
+(define-public python-pynacl
+ (package
+ (name "python-pynacl")
+ (version "1.1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "PyNaCl" version))
+ (modules '((guix build utils)))
+ ;; Remove bundled libsodium
+ (snippet '(delete-file-recursively "src/libsodium"))
+ (sha256
+ (base32
+ "135gz0020fqx8fbr9izpwyq49aww202nkqacq0cw61xz99sjpx9j"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'use-system-sodium
+ (lambda _
+ (setenv "SODIUM_INSTALL" "system")
+ #t)))))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
+ (propagated-inputs
+ `(("python-cffi" ,python-cffi)
+ ("python-six" ,python-six)
+ ("libsodium" ,libsodium)))
+ (home-page "https://github.com/pyca/pynacl/")
+ (synopsis "Python bindings to libsodium")
+ (description
+ "PyNaCl is a Python binding to libsodium, which is a fork of the
+Networking and Cryptography library. These libraries have a stated goal
+of improving usability, security and speed.")
+ (license license:asl2.0)))
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index d629e38032..b3268bee7b 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -61,7 +61,7 @@
(source(origin
(method url-fetch)
(uri
- (string-append "http://openprinting.org/download/cups-filters/"
+ (string-append "https://openprinting.org/download/cups-filters/"
"cups-filters-" version ".tar.xz"))
(sha256
(base32
@@ -226,13 +226,13 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.")
(home-page "https://www.cups.org")
(synopsis "The Common Unix Printing System")
(description
- "CUPS is a printing system that uses the Internet Printing
-Protocol (IPP). It provides System V and BSD command-line interfaces, as well
+ "CUPS is a printing system that uses the Internet Printing Protocol
+(@dfn{IPP}). It provides System V and BSD command-line interfaces, as well
as a Web interface and a C programming interface to manage printers and print
jobs. It supports printing to both local (parallel, serial, USB) and
networked printers, and printers can be shared from one computer to another.
-Internally, CUPS uses PostScript Printer Description (PPD) files to describe
-printer capabilities and features and a wide variety of generic and
+Internally, CUPS uses PostScript Printer Description (@dfn{PPD}) files to
+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)))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 53827dad3c..9359243644 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -646,6 +646,19 @@ TIMESTAMP. It also supports storage of binary large objects, including
pictures, sounds, or video.")
(license (license:x11-style "file://COPYRIGHT"))))
+(define-public postgresql-9.6
+ (package
+ (inherit postgresql)
+ (name "postgresql")
+ (version "9.6.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://ftp.postgresql.org/pub/source/v"
+ version "/postgresql-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "0k3ls2x182jz6djjiqj9kycddabdl2gk1y1ajq1vipnxwfki5nh6"))))))
+
(define-public qdbm
(package
(name "qdbm")
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index d19f8e873e..e4d70ff820 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -319,14 +319,14 @@ and can dramatically shorten the lifespan of the drive if left unchecked.")
(define-public gparted
(package
(name "gparted")
- (version "0.28.1")
+ (version "0.30.0")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/gparted/gparted/gparted-"
version "/gparted-" version ".tar.gz"))
(sha256
- (base32 "0cyk8lpimm6wani8khw0szwqkgw5wpq2mfnfxkbgfm2774a1z2bn"))))
+ (base32 "0jngbsbvg8k8vbpsphqbk8br2cbmxhabbm2c5bmxm2q5zvpr64fk"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; Tests require a network connection.
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index b29436154e..315db18a57 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -361,7 +361,7 @@ when typing parentheses directly or commenting out code line by line.")
(define-public git-modes
(package
(name "git-modes")
- (version "1.2.4")
+ (version "1.2.6")
(source (origin
(method url-fetch)
(uri (string-append
@@ -370,7 +370,7 @@ when typing parentheses directly or commenting out code line by line.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0xxrmf0jnyljxvllc22qa0v8lgi4k1ldnayjm5hf68m25jsr378l"))))
+ "18z04wn5ird9l0h6n6x97v0kyzdj73832bj9qakm3fjjl7vcn0pw"))))
(build-system emacs-build-system)
(home-page "https://github.com/magit/git-modes")
(synopsis "Emacs major modes for Git configuration files")
@@ -382,7 +382,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
(define-public emacs-with-editor
(package
(name "emacs-with-editor")
- (version "2.5.10")
+ (version "2.7.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -391,7 +391,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0lsxa1hghybkzvqhqvvym3hxbyp9vjcnnpb9j800z0vyhbnlka67"))))
+ "0kah7pv211zx9fsb5g4hd51bqcq2bxd1chdykd488ihvfz1l5y14"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-dash" ,emacs-dash)))
@@ -407,7 +407,7 @@ on stdout instead of using a socket as the Emacsclient does.")
(define-public magit
(package
(name "magit")
- (version "2.10.3")
+ (version "2.11.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -415,7 +415,7 @@ on stdout instead of using a socket as the Emacsclient does.")
version "/" name "-" version ".tar.gz"))
(sha256
(base32
- "03ln65ss420gc3h4pi56dayd1p163xfxrxrd9fkb9xnkl8mjglqk"))))
+ "11xly5bma9jc1jhs8fqbqrci8kz1y26yfq7dqjkqfy956wvfg6hz"))))
(build-system gnu-build-system)
(native-inputs `(("texinfo" ,texinfo)
("emacs" ,emacs-minimal)))
@@ -543,7 +543,7 @@ support for Git-SVN.")
(file-name (string-append "magit-popup-" version ".el"))
(sha256
(base32
- "08b6ypfiq8zavjfq0wcdh26xziwq7rqvvv3lfpib9101146kzx6d"))))
+ "0w750kwngq63hi9drad3jxldwkg83sldb9w9r2xl2mqm3hm4l8s6"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-dash" ,emacs-dash)))
@@ -1245,6 +1245,56 @@ written in the Go programming language.")
Maps directly inside Emacs.")
(license license:gpl3+)))
+(define-public emacs-graphviz-dot-mode
+ (let ((commit "fdaabbcc95d9156e3dadc84f81a4750c5b692580")
+ (revision "1"))
+ (package
+ (name "emacs-graphviz-dot-mode")
+ (version (string-append "0.3.10-" revision "."
+ (string-take commit 7)))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ppareit/graphviz-dot-mode.git")
+ (commit commit)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "1s1qh5r0xp6hs0rl5yz5mkmjhpg04bh449c7vgjbb1pjsl1dl714"))))
+ (build-system emacs-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'install 'make-info
+ (lambda* (#:key inputs #:allow-other-keys)
+ (with-directory-excursion "texinfo"
+ (substitute* "Makefile"
+ (("\\/usr\\/bin\\/gzip")
+ (string-append (assoc-ref inputs "gzip") "/bin/gzip")))
+ (zero?
+ (system* "make"
+ "clean"
+ "info"
+ (string-append "TEXINFODIR="
+ (assoc-ref inputs "texinfo")
+ "/bin"))))))
+ (add-after 'install 'install-info
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (info (string-append out "/share/info")))
+ (install-file "texinfo/graphviz-dot-mode.info.gz" info)
+ #t))))))
+ (native-inputs
+ `(("texinfo" ,texinfo)
+ ("gzip" ,gzip)))
+ (home-page "http://ppareit.github.com/graphviz-dot-mode")
+ (synopsis "Major mode for editing Graphviz Dot files")
+ (description
+ "This Emacs packages helps you to create @file{.dot} or @file{.gv}
+files using the dot syntax, and use Graphviz to convert these files to
+diagrams.")
+ (license license:gpl2+))))
+
(define-public emacs-mmm-mode
(package
(name "emacs-mmm-mode")
@@ -2762,14 +2812,14 @@ package provides a light and a dark variant.")
(define-public emacs-ahungry-theme
(package
(name "emacs-ahungry-theme")
- (version "1.4.0")
+ (version "1.6.0")
(source
(origin (method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/ahungry-theme-"
version ".tar"))
(sha256
(base32
- "1n8k12mfn01f20j0pyd7ycj77x0y3a008xc94frklaaqjc0v26s4"))))
+ "1b0x7g753gn7mym8286b937zmxv50jgdish2h6wc05w1g1lygwsz"))))
(build-system emacs-build-system)
(home-page "https://github.com/ahungry/color-theme-ahungry")
(synopsis "Ahungry color theme for Emacs")
@@ -3197,14 +3247,14 @@ The purpose of this library is to wrap all the quirks and hassle of
(define-public emacs-queue
(package
(name "emacs-queue")
- (version "0.1.1")
+ (version "0.2")
(source (origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/queue-"
version ".el"))
(sha256
(base32
- "0jw24fxqnf9qcaf2nh09cnds1kqfk7hal35dw83x1ari95say391"))))
+ "0cx2848sqnnkkr4zisvqadzxngjyhmb36mh0q3if7q19yjjhmrkb"))))
(build-system emacs-build-system)
(home-page "http://www.dr-qubit.org/tags/computing-code-emacs.html")
(synopsis "Queue data structure for Emacs")
@@ -3321,22 +3371,63 @@ that highlights non-conforming text. The subset of the English language called
E-Prime forbids the use of the \"to be\" form to strengthen your writing.")
(license license:gpl3+))))
+(define-public emacs-julia-mode
+ ;; XXX: Upstream version remained stuck at 0.3. See
+ ;; <https://github.com/JuliaEditorSupport/julia-emacs/issues/46>.
+ (let ((commit "115d4dc8a07445301772da8376b232fa8c7168f4")
+ (revision "1"))
+ (package
+ (name "emacs-julia-mode")
+ (version (string-append "0.3-" revision "." (string-take commit 8)))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaEditorSupport/julia-emacs.git")
+ (commit commit)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "1is4dcv6blslpzbjcg8l2jpxi8xj96q4cm0nxjxsyswpm8bw8ki0"))))
+ (build-system emacs-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'install 'check
+ (lambda _
+ (zero? (system* "emacs" "-batch"
+ "-l" "julia-mode.el"
+ "-l" "julia-mode-tests.el"
+ "-f" "ert-run-tests-batch-and-exit")))))))
+ (home-page "https://github.com/JuliaEditorSupport/julia-emacs")
+ (synopsis "Major mode for Julia")
+ (description "This Emacs package provides a mode for the Julia
+programming language.")
+ (license license:expat))))
+
(define-public emacs-ess
(package
(name "emacs-ess")
- (version "16.04")
+ (version "16.10")
(source (origin
(method url-fetch)
(uri (string-append "http://ess.r-project.org/downloads/ess/ess-"
version ".tgz"))
(sha256
(base32
- "0w7mbbajn377gdmvnd21mpyr368b2ia46gq6cb99y4y5rspf9pcg"))))
+ "04m8lwp3ylh2vl7k2bjjs7mxbm64j4sdckqpvnm9k0qhaqf02pjk"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Stop ESS from trying to bundle an external julia-mode.el.
+ (substitute* "lisp/Makefile"
+ (("^\tjulia-mode.elc\\\\\n") "")
+ (("^all: \\$\\(ELC\\) ess-custom.el julia-mode.el")
+ "all: $(ELC) ess-custom.el"))))))
(build-system gnu-build-system)
(arguments
(let ((base-directory "/share/emacs/site-lisp/guix.d/ess"))
- `(#:tests? #f ; There is no test suite.
- #:make-flags (list (string-append "PREFIX=" %output)
+ `(#:make-flags (list (string-append "PREFIX=" %output)
(string-append "ETCDIR=" %output "/"
,base-directory "/etc")
(string-append "LISPDIR=" %output "/"
@@ -3352,7 +3443,10 @@ E-Prime forbids the use of the \"to be\" form to strengthen your writing.")
;; FIXME: the texlive-union insists on regenerating fonts. It stores
;; them in HOME, so it needs to be writeable.
(add-before 'build 'set-HOME
- (lambda _ (setenv "HOME" "/tmp") #t))))))
+ (lambda _ (setenv "HOME" "/tmp") #t))
+ (replace 'check
+ (lambda _
+ (zero? (system* "make" "test"))))))))
(inputs
`(("emacs" ,emacs-minimal)
("r-minimal" ,r-minimal)))
@@ -3717,7 +3811,7 @@ the file buffer.")
(define-public emacs-helm
(package
(name "emacs-helm")
- (version "2.7.1")
+ (version "2.8.5")
(source (origin
(method url-fetch)
(uri (string-append
@@ -3726,7 +3820,7 @@ the file buffer.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0pay8pi3fszykgskfbxsp4byad497cgfz4m886mxnkba1naxf6h7"))))
+ "15xlnjm9rsbn0xq7xc09y52h2kn41zwn7ldryammf6i46wl02kq3"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-async" ,emacs-async)
@@ -3988,14 +4082,14 @@ passive voice.")
(define-public emacs-org
(package
(name "emacs-org")
- (version "20170917")
+ (version "20171016")
(source (origin
(method url-fetch)
(uri (string-append "http://elpa.gnu.org/packages/org-"
version ".tar"))
(sha256
(base32
- "0qyis5ph3h99zn9kx7sgraddz41c1cf6yjkwi4im6ikwxk9x8cgc"))))
+ "1196kv83p953nd9c5gxkn8ndw2kmm2kfw34dldap6m89khqflz5a"))))
(build-system emacs-build-system)
(home-page "http://orgmode.org/")
(synopsis "Outline-based notes management and organizer")
@@ -4005,6 +4099,50 @@ also is an authoring system with unique support for literate programming and
reproducible research.")
(license license:gpl3+)))
+(define-public emacs-org-contrib
+ (package
+ (inherit emacs-org)
+ (name "emacs-org-contrib")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://orgmode.org/elpa/org-plus-contrib-"
+ (package-version emacs-org) ".tar"))
+ (sha256
+ (base32
+ "0xy2xrndlhs4kyvh6mmv24dnh3fn5p63d2gaimnrypf1p8znwzh4"))))
+ (arguments
+ `(#:modules ((guix build emacs-build-system)
+ (guix build utils)
+ (guix build emacs-utils)
+ (ice-9 ftw)
+ (srfi srfi-1))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'delete-org-files
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (org (assoc-ref inputs "emacs-org"))
+ (contrib-files
+ (map basename (find-files out)))
+ (org+contrib-files
+ (map basename (find-files org)))
+ (duplicates (lset-intersection
+ string=? contrib-files org+contrib-files)))
+ (with-directory-excursion
+ (string-append
+ out "/share/emacs/site-lisp/guix.d/org-contrib-"
+ ,(package-version emacs-org))
+ (for-each delete-file duplicates))
+ #t))))))
+ (propagated-inputs
+ `(("emacs-org" ,emacs-org)))
+ (synopsis "Contributed packages to Org-mode")
+ (description "Org is an Emacs mode for keeping notes, maintaining TODO
+lists, and project planning with a fast and effective plain-text system.
+
+This package is equivilent to org-plus-contrib, but only includes additional
+files that you would find in @file{contrib/} from the git repository.")))
+
(define-public emacs-flx
(package
(name "emacs-flx")
@@ -4691,7 +4829,7 @@ consistent and well-integrated user interface.")
(define-public emacs-adaptive-wrap
(package
(name "emacs-adaptive-wrap")
- (version "0.5")
+ (version "0.5.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -4699,7 +4837,7 @@ consistent and well-integrated user interface.")
version ".el"))
(sha256
(base32
- "0frgmp8vrrml4iykm60j4d6cl9rbcivy9yh24q6kd10bcyx59ypy"))))
+ "0qi7gjprcpywk2daivnlavwsx53hl5wcqvpxbwinvigg42vxh3ll"))))
(build-system emacs-build-system)
(home-page "http://elpa.gnu.org/packages/adaptive-wrap.html")
(synopsis "Smart line-wrapping with wrap-prefix")
@@ -5896,14 +6034,14 @@ It supports dired buffers and opens them in tree mode at destination.")
(define-public emacs-tiny
(package
(name "emacs-tiny")
- (version "0.1.1")
+ (version "0.2.1")
(source
(origin
(method url-fetch)
(uri (string-append "http://elpa.gnu.org/packages/tiny-" version ".tar"))
(sha256
(base32
- "1nhg8375qdn457wj0xmfaj72s87xbabk2w1nl6q7rjvwxv08yyn7"))))
+ "1cr73a8gba549ja55x0c2s554f3zywf69zbnd7v82jz5q1k9wd2v"))))
(build-system emacs-build-system)
(home-page "https://github.com/abo-abo/tiny")
(synopsis "Quickly generate linear ranges in Emacs")
@@ -5945,3 +6083,22 @@ an elisp expression.")
"@code{bash-completion} defines dynamic completion hooks for shell-mode
and shell-command prompts that are based on bash completion.")
(license license:gpl2+)))
+
+(define-public emacs-easy-kill
+ (package
+ (name "emacs-easy-kill")
+ (version "0.9.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://elpa.gnu.org/packages/easy-kill-"
+ version ".tar"))
+ (sha256
+ (base32
+ "17nw0mglmg877axwg1d0gs03yc0p04lzmd3pl0nsnqbh3303fnqb"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/leoliu/easy-kill")
+ (synopsis "Kill and mark things easily in Emacs")
+ (description
+ "This package provides commands @code{easy-kill} and @code{easy-mark} to
+let users kill or mark things easily.")
+ (license license:gpl3+)))
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index 91c600353a..e89f5570b0 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -416,13 +416,15 @@ language.")
with a layered architecture of JTAG interface and TAP support.")
(license license:gpl2+)))
-;; The commits for all propeller tools are the latest versions as published
-;; here: https://github.com/dbetz/propeller-gcc
+;; The commits for all propeller tools are the stable versions published at
+;; https://github.com/propellerinc/propgcc in the release_1_0. According to
+;; personal correspondence with the developers in July 2017, more recent
+;; versions are currently incompatible with the "Simple Libraries".
(define propeller-binutils
(let ((xbinutils (cross-binutils "propeller-elf"))
- (commit "3bfba30076f8ce160a2f42914fdb68f24445fd44")
- (revision "1"))
+ (commit "4c46ecbe79ffbecd2ce918497ace5b956736b5a3")
+ (revision "2"))
(package
(inherit xbinutils)
(name "propeller-binutils")
@@ -430,28 +432,24 @@ with a layered architecture of JTAG interface and TAP support.")
(source (origin (inherit (package-source xbinutils))
(method git-fetch)
(uri (git-reference
- (url "https://github.com/totalspectrum/binutils-propeller.git")
+ (url "https://github.com/parallaxinc/propgcc.git")
(commit commit)))
(file-name (string-append name "-" commit "-checkout"))
(sha256
(base32
- "1v3rgxwj7b8817wy5ccf8621v75qcxvcxygk4acr3hbc6yqybr8h"))))
+ "0w0dff3s7wv2d9m78a4jhckiik58q38wx6wpbba5hzbs4yxz35ck"))
+ (patch-flags (list "-p1" "--directory=binutils"))))
(arguments
- `(;; FIXME: For some reason there are many test failures. Some of them
- ;; appear to be due to regular expression mismatch, but it's not
+ `(;; FIXME: For some reason there are many test failures. It's not
;; obvious how to fix the failures.
#:tests? #f
#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'patch-/bin/sh-in-tests
- (lambda _
- (substitute* '("sim/testsuite/Makefile.in"
- "sim/testsuite/mips64el-elf/Makefile.in"
- "sim/testsuite/d10v-elf/Makefile.in"
- "sim/testsuite/sim/cris/asm/badarch1.ms")
- (("/bin/sh") (which "sh")))
- #t)))
- ,@(package-arguments xbinutils)))
+ (add-after 'unpack 'chdir
+ (lambda _ (chdir "binutils") #t)))
+ ,@(substitute-keyword-arguments (package-arguments xbinutils)
+ ((#:configure-flags flags)
+ `(cons "--disable-werror" ,flags)))))
(native-inputs
`(("bison" ,bison)
("flex" ,flex)
@@ -497,26 +495,33 @@ with a layered architecture of JTAG interface and TAP support.")
(define-public propeller-gcc-4
(let ((xgcc propeller-gcc-6)
- (commit "f1b01001b760d691a91ff1db4830d41bb712557f")
- (revision "1"))
+ (commit "4c46ecbe79ffbecd2ce918497ace5b956736b5a3")
+ (revision "2"))
(package (inherit xgcc)
(name "propeller-gcc")
(version (string-append "4.6.1-" revision "." (string-take commit 9)))
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/dbetz/propgcc-gcc.git")
+ (url "https://github.com/parallaxinc/propgcc.git")
(commit commit)))
(file-name (string-append name "-" commit "-checkout"))
(sha256
(base32
- "15mxrhk2v4vqmdkvcqy33ag1wrg9x9q20kx2w33kkw8pkrijknbi"))
+ "0w0dff3s7wv2d9m78a4jhckiik58q38wx6wpbba5hzbs4yxz35ck"))
+ (patch-flags (list "-p1" "--directory=gcc"))
(patches
(append
(origin-patches (package-source gcc-4.7))
(search-patches "gcc-4.6-gnu-inline.patch"
"gcc-cross-environment-variables.patch")))))
- (home-page "https://github.com/dbetz/propgcc-gcc")
+ (arguments
+ (substitute-keyword-arguments (package-arguments propeller-gcc-6)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'unpack 'chdir
+ (lambda _ (chdir "gcc") #t))))))
+ (home-page "https://github.com/parallaxinc/propgcc")
(supported-systems (delete "aarch64-linux" %supported-systems)))))
;; Version 6 is experimental and may not work correctly. This is why we
@@ -524,23 +529,25 @@ with a layered architecture of JTAG interface and TAP support.")
;; provided by Parallax Inc.
(define-public propeller-gcc propeller-gcc-4)
-;; There is no release, so we take the latest version as referenced from here:
-;; https://github.com/dbetz/propeller-gcc
+
+;; FIXME: We do not build the tiny library because that would require C++
+;; headers, which are not available. This may require adding a propeller-elf
+;; variant of the libstdc++ package.
(define-public proplib
- (let ((commit "844741fe0ceb140ab2fdf9d0667f68c1c39c31da")
- (revision "1"))
+ (let ((commit "4c46ecbe79ffbecd2ce918497ace5b956736b5a3")
+ (revision "2"))
(package
(name "proplib")
(version (string-append "0.0.0-" revision "." (string-take commit 9)))
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/totalspectrum/proplib.git")
+ (url "https://github.com/parallaxinc/propgcc.git")
(commit commit)))
(file-name (string-append name "-" commit "-checkout"))
(sha256
(base32
- "0q7irf1x8iqx07n7lzksax9armrdkizs49swsz76nbks0mw67wiv"))))
+ "0w0dff3s7wv2d9m78a4jhckiik58q38wx6wpbba5hzbs4yxz35ck"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no tests
@@ -550,12 +557,11 @@ with a layered architecture of JTAG interface and TAP support.")
#:phases
(modify-phases %standard-phases
(delete 'configure)
- (add-after 'unpack 'fix-Makefile
+ (add-after 'unpack 'chdir
+ (lambda _ (chdir "lib") #t))
+ (add-after 'chdir 'fix-Makefile
(lambda _
(substitute* "Makefile"
- ;; The GCC sources are not part of this package, so we cannot
- ;; install the out-of-tree license file.
- (("cp \\.\\..*") "")
;; Control the installation time of the headers.
((" install-includes") ""))
#t))
@@ -575,23 +581,14 @@ with a layered architecture of JTAG interface and TAP support.")
"/propeller-elf/include:"
(or (getenv "CROSS_C_INCLUDE_PATH") "")))
#t))
- (add-after 'build 'build-tiny
- (lambda* (#:key make-flags #:allow-other-keys)
- (zero? (apply system* "make" "tiny" make-flags))))
- ;; The build of the tiny libraries depends on the includes to be
- ;; available. Since we set CROSS_C_INCLUDE_PATH to the output
- ;; directory, we have to install the includes first.
- (add-before 'build-tiny 'install-includes
+ (add-before 'install 'install-includes
(lambda* (#:key make-flags #:allow-other-keys)
- (zero? (apply system* "make" "install-includes" make-flags))))
- (add-after 'install 'install-tiny
- (lambda* (#:key make-flags #:allow-other-keys)
- (zero? (apply system* "make" "install-tiny" make-flags)))))))
+ (zero? (apply system* "make" "install-includes" make-flags)))))))
(native-inputs
`(("propeller-gcc" ,propeller-gcc)
("propeller-binutils" ,propeller-binutils)
("perl" ,perl)))
- (home-page "https://github.com/totalspectrum/proplib")
+ (home-page "https://github.com/parallaxinc/propgcc")
(synopsis "C library for the Parallax Propeller")
(description "This is a C library for the Parallax Propeller
micro-controller.")
@@ -655,20 +652,20 @@ code.")
(license license:expat)))
(define-public propeller-load
- (let ((commit "ba9c0a7251cf751d8d292ae19ffa03132097c0c0")
- (revision "1"))
+ (let ((commit "4c46ecbe79ffbecd2ce918497ace5b956736b5a3")
+ (revision "2"))
(package
(name "propeller-load")
(version "3.4.0")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/dbetz/propeller-load.git")
+ (url "https://github.com/parallaxinc/propgcc.git")
(commit commit)))
(file-name (string-append name "-" commit "-checkout"))
(sha256
(base32
- "1qv3xaapl9fmj3zn58b60sprp4rnvnlpci8ci0pdrzkw6fhvx3pg"))))
+ "0w0dff3s7wv2d9m78a4jhckiik58q38wx6wpbba5hzbs4yxz35ck"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no tests
@@ -677,11 +674,13 @@ code.")
(string-append "TARGET=" (assoc-ref %outputs "out")))
#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'chdir
+ (lambda _ (chdir "loader") #t))
(delete 'configure))))
(native-inputs
`(("openspin" ,openspin)
("propeller-toolchain" ,propeller-toolchain)))
- (home-page "https://github.com/dbetz/propeller-load")
+ (home-page "https://github.com/parallaxinc/propgcc")
(synopsis "Loader for Parallax Propeller micro-controllers")
(description "This package provides the tool @code{propeller-load} to
upload binaries to a Parallax Propeller micro-controller.")
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 543a166da4..9f9949ef84 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -30,6 +30,7 @@
#:use-module (guix monads)
#:use-module (guix store)
#:use-module (guix utils)
+ #:use-module ((srfi srfi-1) #:hide (zip))
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
@@ -1279,3 +1280,197 @@ an embedded event driven algorithm.")
(inputs
`(("libngspice" ,libngspice)
("readline" ,readline)))))
+
+(define trilinos-serial-xyce
+ ;; Note: This is a Trilinos containing only the packages Xyce needs, so we
+ ;; keep it private. See
+ ;; <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27344#248>.
+ ;; TODO: Remove when we have modular Trilinos packages?
+ (package
+ (name "trilinos-serial-xyce")
+ (version "12.6.3")
+ (source
+ (origin (method url-fetch)
+ (uri (string-append "https://trilinos.org/oldsite/download/files/trilinos-"
+ version "-Source.tar.gz"))
+ (sha256
+ (base32
+ "07jd1qpsbf31cmbyyngr4l67xzwyan24dyx5wlcahgbw7x6my3wn"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:out-of-source? #t
+ #:configure-flags
+ (list "-DCMAKE_CXX_FLAGS=-O3 -fPIC"
+ "-DCMAKE_C_FLAGS=-O3 -fPIC"
+ "-DCMAKE_Fortran_FLAGS=-O3 -fPIC"
+ "-DTrilinos_ENABLE_NOX=ON"
+ "-DNOX_ENABLE_LOCA=ON"
+ "-DTrilinos_ENABLE_EpetraExt=ON"
+ "-DEpetraExt_BUILD_BTF=ON"
+ "-DEpetraExt_BUILD_EXPERIMENTAL=ON"
+ "-DEpetraExt_BUILD_GRAPH_REORDERINGS=ON"
+ "-DTrilinos_ENABLE_TrilinosCouplings=ON"
+ "-DTrilinos_ENABLE_Ifpack=ON"
+ "-DTrilinos_ENABLE_Isorropia=ON"
+ "-DTrilinos_ENABLE_AztecOO=ON"
+ "-DTrilinos_ENABLE_Belos=ON"
+ "-DTrilinos_ENABLE_Teuchos=ON"
+ "-DTeuchos_ENABLE_COMPLEX=ON"
+ "-DTrilinos_ENABLE_Amesos=ON"
+ "-DAmesos_ENABLE_KLU=ON"
+ "-DAmesos_ENABLE_UMFPACK=ON"
+ "-DTrilinos_ENABLE_Sacado=ON"
+ "-DTrilinos_ENABLE_Kokkos=OFF"
+ "-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES=OFF"
+ "-DTPL_ENABLE_AMD=ON"
+ "-DTPL_ENABLE_UMFPACK=ON"
+ "-DTPL_ENABLE_BLAS=ON"
+ "-DTPL_ENABLE_LAPACK=ON")))
+ (native-inputs
+ `(("fortran" ,gfortran)
+ ("swig" ,swig)))
+ (inputs
+ `(("boost" ,boost)
+ ("lapack" ,lapack-3.5)
+ ("suitesparse" ,suitesparse)))
+ (home-page "https://trilinos.org")
+ (synopsis "Engineering and scientific problems algorithms")
+ (description
+ "The Trilinos Project is an effort to develop algorithms and enabling
+technologies within an object-oriented software framework for the solution of
+large-scale, complex multi-physics engineering and scientific problems. A
+unique design feature of Trilinos is its focus on packages.")
+ (license (list license:lgpl2.1+
+ license:bsd-3))))
+
+(define-public xyce-serial
+ (package
+ (name "xyce-serial")
+ (version "6.7")
+ (source
+ (origin (method url-fetch)
+ (uri (string-append "https://archive.org/download/Xyce-"
+ version "/Xyce-" version ".tar.gz"))
+ (sha256
+ (base32
+ "02k952mnvrnc5kv7r65fdrn7khwq1lbyhwyvd7jznafzdpsvgm4x"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f
+ #:configure-flags
+ (list
+ "CXXFLAGS=-O3 -std=c++11"
+ (string-append "ARCHDIR="
+ (assoc-ref %build-inputs "trilinos")))))
+ (native-inputs
+ `(("bison" ,bison)
+ ("flex" ,flex)
+ ("fortran" ,gfortran)))
+ (inputs
+ `(("fftw" ,fftw)
+ ("suitesparse" ,suitesparse)
+ ("lapack" ,lapack-3.5)
+ ("trilinos" ,trilinos-serial-xyce)))
+ (home-page "https://xyce.sandia.gov/")
+ (synopsis "High-performance analog circuit simulator")
+ (description
+ "Xyce is a SPICE-compatible, high-performance analog circuit simulator,
+capable of solving extremely large circuit problems by supporting large-scale
+parallel computing platforms. It also supports serial execution.")
+ (license license:gpl3+)))
+
+(define trilinos-parallel-xyce
+ (package (inherit trilinos-serial-xyce)
+ (name "trilinos-parallel-xyce")
+ (arguments
+ `(,@(substitute-keyword-arguments (package-arguments trilinos-serial-xyce)
+ ((#:configure-flags flags)
+ `(append (list "-DTrilinos_ENABLE_ShyLU=ON"
+ "-DTrilinos_ENABLE_Zoltan=ON"
+ "-DTPL_ENABLE_MPI=ON")
+ ,flags)))))
+ (inputs
+ `(("mpi" ,openmpi)
+ ,@(package-inputs trilinos-serial-xyce)))))
+
+(define-public xyce-parallel
+ (package (inherit xyce-serial)
+ (name "xyce-parallel")
+ (arguments
+ `(,@(substitute-keyword-arguments (package-arguments xyce-serial)
+ ((#:configure-flags flags)
+ `(list "CXXFLAGS=-O3 -std=c++11"
+ "CXX=mpiCC"
+ "CC=mpicc"
+ "F77=mpif77"
+ "--enable-mpi"
+ "--enable-isorropia=no"
+ "--enable-zoltan=no"
+ (string-append
+ "ARCHDIR="
+ (assoc-ref %build-inputs "trilinos")))))))
+ (propagated-inputs
+ `(("mpi" ,openmpi)))
+ (inputs
+ `(("trilinos" ,trilinos-parallel-xyce)
+ ,@(alist-delete "trilinos"
+ (package-inputs xyce-serial))))))
+
+(define-public freehdl
+ (package
+ (name "freehdl")
+ (version "0.0.8")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://downloads.sourceforge.net/qucs/freehdl-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "117dqs0d4pcgbzvr3jn5ppra7n7x2m6c161ywh6laa934pw7h2bz"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'patch-pkg-config
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "freehdl/freehdl-config"
+ (("pkg-config")
+ (string-append (assoc-ref inputs "pkg-config")
+ "/bin/pkg-config"))
+ (("cat")
+ (string-append (assoc-ref inputs "coreutils")
+ "/bin/cat")))
+ #t))
+ (add-after 'configure 'patch-freehdl-pc
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "freehdl.pc"
+ (("=g\\+\\+")
+ (string-append "=" (assoc-ref inputs "gcc")
+ "/bin/g++"))
+ (("=libtool")
+ (string-append "=" (assoc-ref inputs "libtool")
+ "/bin/libtool")))
+ #t))
+ (add-after 'install-scripts 'make-wrapper
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (wrap-program (string-append out "/bin/freehdl-config")
+ `("PKG_CONFIG_PATH" ":" prefix (,(string-append out "/lib/pkgconfig")))))
+ #t)))))
+ (inputs
+ `(("coreutils" ,coreutils)
+ ("gcc" ,gcc)
+ ("perl" ,perl)
+ ("pkg-config" ,pkg-config)
+ ("libtool" ,libtool)))
+ (native-inputs
+ `(("pkg-config-native" ,pkg-config)
+ ("libtool-native" ,libtool)))
+ (home-page "http://www.freehdl.seul.org/")
+ (synopsis "VHDL simulator")
+ (description
+ "FreeHDL is a compiler/simulator suite for the hardware description language VHDL.
+ VHDL'93 as well as VHDL'87 standards are supported.")
+ (license (list license:gpl2+
+ license:lgpl2.0+)))) ; freehdl's libraries
+
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 39cd71aebd..04b7b78d36 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -133,7 +133,7 @@
#:use-module (gnu packages gnuzilla)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages networking)
- #:use-module (guix build utils)
+ #:use-module (gnu packages web)
#:use-module (guix build-system gnu)
#:use-module (guix build-system haskell)
#:use-module (guix build-system python)
@@ -2629,6 +2629,56 @@ Transport Tycoon Deluxe.")
("opensfx" ,openttd-opensfx)
,@(package-native-inputs openttd-engine)))))
+(define-public openrct2
+ (package
+ (name "openrct2")
+ (version "0.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/OpenRCT2/OpenRCT2/archive/v"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1bahkzlf9k92cc4zs4nk4wy59323kiw8d3wm0vjps3kp7iznqyjx"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f ;; no tests available
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'build 'fix-cmake-install-file
+ (lambda _
+ ;; The build system tries to download a file and compare hashes.
+ ;; Since we have no network, remove this so the install doesn't fail.
+ (substitute* "cmake_install.cmake"
+ (("EXPECTED_HASH SHA1=b587d83de508d0b104d14c599b76f8565900fce0")
+ "")))))))
+ (inputs `(("curl", curl)
+ ("fontconfig", fontconfig)
+ ("freetype", freetype)
+ ("jansson", jansson)
+ ("libpng", libpng)
+ ("libzip", libzip)
+ ("mesa", mesa)
+ ("openssl", openssl)
+ ("sdl2", sdl2)
+ ("speexdsp", speexdsp)
+ ("zlib", zlib)))
+ (native-inputs
+ `(("pkg-config", pkg-config)))
+ (home-page "https://github.com/OpenRCT2/OpenRCT2")
+ (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
+ (description "OpenRCT2 is a free software re-implementation of
+RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and
+maintaining an amusement park containing attractions, shops and facilities.
+
+Note that this package does @emph{not} provide the game assets (sounds,
+images, etc.)")
+ ;; See <https://github.com/OpenRCT2/OpenRCT2/wiki/Required-RCT2-files>
+ ;; regarding assets.
+ (license license:gpl3+)))
+
(define-public pinball
(package
(name "pinball")
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 039400851e..5f96ab3038 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -271,10 +271,10 @@ also known as DXTn or DXTC) for Mesa.")
`(#:configure-flags
'(,@(match (%current-system)
("armhf-linux"
- ;; TODO: Add etnaviv when enabled in libdrm.
- '("--with-gallium-drivers=freedreno,imx,nouveau,r300,r600,svga,swrast,vc4,virgl"))
+ ;; TODO: Add etnaviv,imx when libdrm supports etnaviv.
+ '("--with-gallium-drivers=freedreno,nouveau,r300,r600,swrast,vc4,virgl"))
("aarch64-linux"
- ;; TODO: Fix svga driver for aarch64.
+ ;; TODO: Fix svga driver for aarch64 and armhf.
'("--with-gallium-drivers=freedreno,nouveau,r300,r600,swrast,vc4,virgl"))
(_
'("--with-gallium-drivers=i915,nouveau,r300,r600,svga,swrast,virgl")))
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 2e477e9939..52bcedb0aa 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -700,7 +700,7 @@ forgotten when the session ends.")
(define-public evince
(package
(name "evince")
- (version "3.24.1")
+ (version "3.26.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@@ -708,7 +708,7 @@ forgotten when the session ends.")
name "-" version ".tar.xz"))
(sha256
(base32
- "0dqgzwxl0xfr341r5i8j8hn6j6rhv62lmc6xbzjppcq76hhwb84w"))))
+ "1n69lkiagx2x8lrdbvdlz6c051cvzhma73b3ggnw7w1wfkdpnmkr"))))
(build-system glib-or-gtk-build-system)
(arguments
`(#:configure-flags '("--disable-nautilus")
@@ -866,7 +866,7 @@ GNOME and KDE desktops to the icon names proposed in the specification.")
(define-public adwaita-icon-theme
(package (inherit gnome-icon-theme)
(name "adwaita-icon-theme")
- (version "3.24.0")
+ (version "3.26.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@@ -874,7 +874,7 @@ GNOME and KDE desktops to the icon names proposed in the specification.")
name "-" version ".tar.xz"))
(sha256
(base32
- "0ai73gs44yyw276xag6db0rlpvncy23qplp4girm80ilpprrzxyc"))))
+ "04i2s6hkgzxgmq85dynmzih8rw5krc5apkks962mhgri37g8bbcw"))))
(native-inputs
`(("gtk-encode-symbolic-svg" ,gtk+ "bin")))))
@@ -2015,7 +2015,7 @@ libraries written in C.")
(define-public vte
(package
(name "vte")
- (version "0.48.3")
+ (version "0.50.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@@ -2023,7 +2023,7 @@ libraries written in C.")
name "-" version ".tar.xz"))
(sha256
(base32
- "1hsqc7238862mqnva5qqdfxnhpwq3ak6zx6kbjj95cs04wcgpad3"))))
+ "1hm88nn1r38fszz770v6dgzgx208ywz4n087n4fhw5kkwpihh5yg"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
@@ -2681,7 +2681,7 @@ more fun.")
(define-public gnome-terminal
(package
(name "gnome-terminal")
- (version "3.24.2")
+ (version "3.26.1")
(source
(origin
(method url-fetch)
@@ -2690,7 +2690,7 @@ more fun.")
name "-" version ".tar.xz"))
(sha256
(base32
- "03zcvxlzg7n4pz65vrg5xj3qpkqr4bz162mgmaz4bjh71b1xl7i8"))))
+ "0fh7vshhzgypd66sinns5z1vskswl7ybs1ica080pskzyx75db5r"))))
(build-system glib-or-gtk-build-system)
(arguments
'(#:configure-flags
@@ -3581,7 +3581,7 @@ for application developers.")
(define-public totem
(package
(name "totem")
- (version "3.24.0")
+ (version "3.26.0")
(source
(origin
(method url-fetch)
@@ -3590,12 +3590,15 @@ for application developers.")
name "-" version ".tar.xz"))
(sha256
(base32
- "00cdlll5b0wj5ckl1pc0a3g39a0hlq0gxkcsh1f6p20fjixqzmwv"))))
- (build-system glib-or-gtk-build-system)
+ "04zfx47mgyd0f4p3pjrxl6iaw0awgwbvilbsr1smw14ph2kbjbz3"))
+ (patches (search-patches "totem-meson-easy-codec.patch"))))
+ (build-system meson-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
("desktop-file-utils" ,desktop-file-utils)
("gobject-introspection" ,gobject-introspection)
+ ("glib:bin" ,glib "bin") ;for 'glib-mkenums'
+ ("gtk:bin" ,gtk+ "bin") ;for 'gtk-update-icon-cache'
("intltool" ,intltool)
("itstool" ,itstool)
("xmllint" ,libxml2)))
@@ -3636,13 +3639,21 @@ for application developers.")
("nettle" ,nettle)
("vala" ,vala)))
(arguments
- `(;; Disable automatic GStreamer plugin installation via PackageKit and
+ `(#:glib-or-gtk? #t
+
+ ;; Disable parallel builds until
+ ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=28813 is
+ ;; fixed. Try enabling it when updating this package in case
+ ;; upstream has fixed it.
+ #:parallel-build? #f
+
+ ;; Disable automatic GStreamer plugin installation via PackageKit and
;; all that.
- #:configure-flags '("--disable-easy-codec-installation"
+ #:configure-flags '("-D" "enable-easy-codec-installation=no"
;; Do not build .a files for the plugins, it's
;; completely useless. This saves 2 MiB.
- "--disable-static")
+ "--default-library" "shared")
#:phases
(modify-phases %standard-phases
@@ -4034,23 +4045,29 @@ work and the interface is well tested.")
(define-public eolie
(package
(name "eolie")
- (version "0.9.0")
+ (version "0.9.4")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/gnumdk/eolie/"
- "releases/download/"
- (version-major+minor version)
+ "releases/download/" version
"/eolie-" version ".tar.xz"))
(sha256
(base32
- "1lb3rd2as12vq24fcf9nmlhggf8vka3kli2i92i8iylwi7nq5n2a"))))
+ "0zw2zqgnpsvk35nrp4kqkh2hb5kchzpvi684xjv7a9hhrlsxkdqd"))))
(build-system glib-or-gtk-build-system)
(arguments
- `(#:modules ((guix build glib-or-gtk-build-system)
- (guix build utils)
- (ice-9 match))
- #:phases
+ `(#:phases
(modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda* (#:key outputs #:allow-other-keys)
+ (zero? (system* "meson" "build"
+ "--prefix" (assoc-ref outputs "out")))))
+ (replace 'check
+ (lambda _ (zero? (system* "ninja" "-C" "build" "test"))))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (zero? (system* "ninja" "-C" "build" "install"))))
(add-after 'wrap 'wrap-more
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -4071,7 +4088,11 @@ work and the interface is well tested.")
(native-inputs
`(("intltool" ,intltool)
("itstool" ,itstool)
- ("pkg-config" ,pkg-config)))
+ ("pkg-config" ,pkg-config)
+ ("meson" ,meson-for-build)
+ ("ninja" ,ninja)
+ ("python" ,python)
+ ("gtk+" ,gtk+ "bin")))
(inputs
`(("gobject-introspection" ,gobject-introspection)
("glib-networking" ,glib-networking)
@@ -4405,7 +4426,7 @@ share them with others via social networking and more.")
(define-public file-roller
(package
(name "file-roller")
- (version "3.24.1")
+ (version "3.26.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@@ -4413,7 +4434,7 @@ share them with others via social networking and more.")
name "-" version ".tar.xz"))
(sha256
(base32
- "0fkz9h9a6149crmf6311fsqlmv9wyrxk86470vxib941ppl4a581"))))
+ "1bliwib59jrlfpdbpqc4rc3kzv4ns7pfyn8c28ananj3p34y9mgc"))))
(build-system glib-or-gtk-build-system)
(arguments
'(#:phases
@@ -5087,7 +5108,7 @@ to virtual private networks (VPNs) via OpenVPN.")
(define-public mobile-broadband-provider-info
(package
(name "mobile-broadband-provider-info")
- (version "20151214")
+ (version "20170310")
(source (origin
(method url-fetch)
(uri (string-append
@@ -5096,7 +5117,7 @@ to virtual private networks (VPNs) via OpenVPN.")
"mobile-broadband-provider-info-" version ".tar.xz"))
(sha256
(base32
- "1905nab1h8p4hx0m1w0rn4mkg9209x680dcr4l77bngy21pmvr4a"))))
+ "0fxm11x8k9hxjg8l5inaldfmmjnwkay3ibjv899jra03bv4h6kql"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f)) ; No tests
@@ -5694,7 +5715,7 @@ files.")
(define-public baobab
(package
(name "baobab")
- (version "3.24.0")
+ (version "3.26.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -5703,7 +5724,7 @@ files.")
name "-" version ".tar.xz"))
(sha256
(base32
- "0gzwzn8p0agidjq3wnkxcsny6jhqph3yqscqjqd7blgkz5nyk02r"))))
+ "0zkqxyqyxd6j270jf5hbcrb3yh4k31ddh40v4cjhgngm8mcsnnbs"))))
(build-system glib-or-gtk-build-system)
(native-inputs
`(("intltool" ,intltool)
@@ -5726,7 +5747,7 @@ is complete it provides a graphical representation of each selected folder.")
(define-public gnome-backgrounds
(package
(name "gnome-backgrounds")
- (version "3.24.0")
+ (version "3.26.2")
(source
(origin
(method url-fetch)
@@ -5735,7 +5756,7 @@ is complete it provides a graphical representation of each selected folder.")
name "-" version ".tar.xz"))
(sha256
(base32
- "1jkikis9k3psp6rb8axnqy86awdyg5rzfbcp9gx40a99b4hlrnnb"))))
+ "0kzrh5h0cfby3rhsy31d1w1c0rr3wcc845kv6zibqw1x8v9si2rs"))))
(build-system glib-or-gtk-build-system)
(native-inputs
`(("intltool" ,intltool)))
@@ -5785,7 +5806,7 @@ beautifying border effects.")
(define-public dconf-editor
(package
(name "dconf-editor")
- (version "3.22.3")
+ (version "3.26.1")
(source
(origin
(method url-fetch)
@@ -5794,7 +5815,7 @@ beautifying border effects.")
name "-" version ".tar.xz"))
(sha256
(base32
- "1939yq3fl55c2dqkc6nzp6cbpxq9sli74gdj0rj7c50pwvbngwam"))))
+ "0agay5zbhjbfznlwk7n3gg5cn0c7ih4vnmah6kb6m969li120cs9"))))
(build-system glib-or-gtk-build-system)
(arguments
'(#:phases
@@ -6679,7 +6700,7 @@ accessibility infrastructure.")
(define-public orca
(package
(name "orca")
- (version "3.24.0")
+ (version "3.26.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -6688,7 +6709,7 @@ accessibility infrastructure.")
name "-" version ".tar.xz"))
(sha256
(base32
- "1la6f815drykrgqf791jx1dda6716cfv6052frqp7nhjxr75xg97"))))
+ "0xk5k9cbswymma60nrfj00dl97wypx59c107fb1hwi75gm0i07a7"))))
(build-system glib-or-gtk-build-system)
(arguments
'(#:phases
diff --git a/gnu/packages/gnucash.scm b/gnu/packages/gnucash.scm
index ac2dce5768..45f804fa35 100644
--- a/gnu/packages/gnucash.scm
+++ b/gnu/packages/gnucash.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017 Chris Marusich <cmmarusich@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -23,8 +24,11 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system glib-or-gtk)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages docbook)
+ #:use-module (gnu packages documentation)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages glib)
@@ -52,7 +56,7 @@
(base32
"0g2risryfgplxh6cxpsl7fn255vipgsx38b4l081h665nqwmz5nv"))
(patches (search-patches "gnucash-price-quotes-perl.patch"))))
- (build-system gnu-build-system)
+ (build-system glib-or-gtk-build-system)
(inputs
`(("guile" ,guile-2.0)
("icu4c" ,icu4c)
@@ -69,15 +73,25 @@
(native-inputs
`(("glib" ,glib "bin") ; glib-compile-schemas, etc.
("intltool" ,intltool)
+ ("gnucash-docs" ,gnucash-docs)
("pkg-config" ,pkg-config)))
+ (outputs '("out" "doc"))
(arguments
`(#:tests? #f ;FIXME: failing at /qof/gnc-date/qof print date dmy buff
#:configure-flags '("--disable-dbi"
"--enable-aqbanking")
#:phases
(modify-phases %standard-phases
+ ;; There are about 100 megabytes of documentation.
+ (add-after
+ 'install 'install-docs
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((docs (assoc-ref inputs "gnucash-docs"))
+ (doc-output (assoc-ref outputs "doc")))
+ (symlink (string-append docs "/share/gnome")
+ (string-append doc-output "/share/gnome")))))
(add-after
- 'install 'wrap-programs
+ 'install-docs 'wrap-programs
(lambda* (#:key inputs outputs #:allow-other-keys)
(for-each (lambda (prog)
(wrap-program (string-append (assoc-ref outputs "out")
@@ -114,6 +128,42 @@ import and transaction matching. It also automates several tasks, such as
financial calculations or scheduled transactions.")
(license license:gpl3+)))
+;; This package is not public, since we use it to build the "doc" output of
+;; the gnucash package (see above). It would be confusing if it were public.
+(define gnucash-docs
+ (package
+ (name "gnucash-docs")
+ (version (package-version gnucash))
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/gnucash/gnucash-docs/"
+ version "/gnucash-docs-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0dfb4m4084apav9kjsc4mfbj99xsyxm59qhpm1nxvhybn5h6qr3r"))))
+ (build-system gnu-build-system)
+ ;; These are native-inputs because they are only required for building the
+ ;; documentation.
+ (native-inputs
+ `(("libxml2" ,libxml2)
+ ;; The "check" target needs the docbook xml packages for validating the
+ ;; DocBook XML during the tests.
+ ("docbook-xml-4.4" ,docbook-xml-4.4)
+ ("docbook-xml-4.2" ,docbook-xml-4.2)
+ ("docbook-xml-4.1.2" ,docbook-xml-4.1.2)
+ ("libxslt" ,libxslt)
+ ("docbook-xsl" ,docbook-xsl)
+ ("scrollkeeper" ,scrollkeeper)))
+ (home-page "http://www.gnucash.org/")
+ (synopsis "Documentation for GnuCash")
+ (description
+ "User guide and other documentation for GnuCash in various languages.
+This package exists because the GnuCash project maintains its documentation in
+an entirely separate package from the actual GnuCash program. It is intended
+to be read using the GNOME Yelp program.")
+ (license (list license:fdl1.1+ license:gpl3+))))
+
(define-public gwenhywfar
(package
(name "gwenhywfar")
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 9b79dfd9d3..3eb85202e3 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -66,14 +66,14 @@
(define-public libextractor
(package
(name "libextractor")
- (version "1.4")
+ (version "1.6")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/libextractor/libextractor-"
version ".tar.gz"))
(sha256
(base32
- "0v7ns5jhsyp1wzvbaydfgxnva5zd63gkzm9djhckmam9liq824l4"))))
+ "17gnpgspdhfgcr27j8sn9105vb4lw22yqdrhic62l79q5v5avm16"))))
(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/graphviz.scm b/gnu/packages/graphviz.scm
index 8131871db4..5f2fcb8602 100644
--- a/gnu/packages/graphviz.scm
+++ b/gnu/packages/graphviz.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Theodoros Foradis <theodoros@foradis.org>
+;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -39,7 +40,7 @@
#:use-module (gnu packages compression)
#:use-module (gnu packages gd)
#:use-module (gnu packages swig)
- #:use-module ((guix licenses) #:select (lgpl2.0+ epl1.0 lgpl3+)))
+ #:use-module ((guix licenses) #:prefix license:))
(define-public graphviz
(package
@@ -106,7 +107,30 @@ way of representing structural information as diagrams of abstract graphs and
networks. It has important applications in networking, bioinformatics,
software engineering, database and web design, machine learning, and in visual
interfaces for other technical domains.")
- (license epl1.0)))
+ (license license:epl1.0)))
+
+(define-public python-graphviz
+ (package
+ (name "python-graphviz")
+ (version "0.8")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "graphviz" version ".zip"))
+ (sha256
+ (base32
+ "0i738qb32w93hraxzjwkvnxmrfwcalhjd14fdbah9f2mk46p5748"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("unzip" ,unzip)))
+ (home-page "https://github.com/xflr6/graphviz")
+ (synopsis "Simple Python interface for Graphviz")
+ (description
+ "This package provides a simple Python interface for the Graphviz graph
+visualization tool suite.")
+ (license license:expat)))
+
+(define-public python2-graphviz
+ (package-with-python2 python-graphviz))
(define-public gts
(package
@@ -142,7 +166,7 @@ interfaces for other technical domains.")
(description
"Library intended to provide a set of useful functions to deal with
3D surfaces meshed with interconnected triangles.")
- (license lgpl2.0+)))
+ (license license:lgpl2.0+)))
(define-public xdot
(package
@@ -185,4 +209,4 @@ interfaces for other technical domains.")
@code{graphviz}’s dot language. Internally, it uses the xdot output format as
an intermediate format,and @code{gtk} and @code{cairo} for rendering. Xdot can
be used either as a standalone application, or as a python library.")
- (license lgpl3+)))
+ (license license:lgpl3+)))
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index c3045720c5..55aeff172d 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -1346,7 +1346,24 @@ users and in some situations.")
version ".tar.gz"))
(sha256
(base32
- "1svzlbz2vripmyq2kjh0rig16bsrnbkwbsm558pjln9l65mcl4qq"))))
+ "1svzlbz2vripmyq2kjh0rig16bsrnbkwbsm558pjln9l65mcl4qq"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (substitute* "configure"
+ (("_guile_required_version=\"2.0.11\"")
+ "_guile_required_version=\"2\"")
+ (("ac_subst_vars='")
+ "ac_subst_vars='GUILE_EFFECTIVE_VERSION\n"))
+ (substitute* (find-files "." "Makefile.in")
+ (("moddir = .*$")
+ (string-append
+ "moddir = "
+ "$(prefix)/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n"))
+ (("godir = .*$")
+ (string-append
+ "godir = "
+ "$(prefix)/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")))))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags
@@ -1357,7 +1374,7 @@ users and in some situations.")
(native-inputs
`(("pkg-config" ,pkg-config)))
(propagated-inputs
- `(("guile" ,guile-2.0)
+ `(("guile" ,guile-2.2)
("guile-sdl" ,guile-sdl)
("guile-opengl" ,guile-opengl)))
(inputs
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index 58bc742365..5fdf3bc9e9 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -31,6 +31,7 @@
#:use-module (gnu packages admin)
#:use-module (gnu packages aidc)
#:use-module (gnu packages attr)
+ #:use-module (gnu packages avahi)
#:use-module (gnu packages base)
#:use-module (gnu packages boost)
#:use-module (gnu packages bison)
@@ -42,6 +43,7 @@
#:use-module (gnu packages flex)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
+ #:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gnupg)
@@ -92,7 +94,17 @@
(lambda _
;; Always install into /lib and not into /lib64.
(substitute* "kde-modules/KDEInstallDirs.cmake"
- (("\"lib64\"") "\"lib\""))))
+ (("\"lib64\"") "\"lib\"")
+ ;; TODO: Base the following on values taken from Qt
+ ;; Install plugins into lib/qt5/plugins
+ (("_define_relative\\(QTPLUGINDIR LIBDIR \"plugins\"")
+ "_define_relative(QTPLUGINDIR LIBDIR \"qt5/plugins\"")
+ ;; Install imports into lib/qt5/imports
+ (("_define_relative\\(QTQUICKIMPORTSDIR QTPLUGINDIR \"imports\"")
+ "_define_relative(QTQUICKIMPORTSDIR LIBDIR \"qt5/imports\"")
+ ;; Install qml-files into lib/qt5/qml
+ (("_define_relative\\(QMLDIR LIBDIR \"qml\"")
+ "_define_relative(QMLDIR LIBDIR \"qt5/qml\""))))
;; install and check phase are swapped to prevent install from failing
;; after testsuire has run
(add-after 'install 'check-post-install
@@ -128,16 +140,17 @@ common build settings used in software produced by the KDE community.")
"177647r2jqfm32hqcz2nqfqv6v48hn5ab2vc31svba2wz23fkgk7"))))
(build-system cmake-build-system)
(native-inputs
- ;; TODO: Add qttools to build the Qt Designer plugin.
;; TODO: Think about adding pulseaudio. Is it required for sound?
- `(("extra-cmake-modules" ,extra-cmake-modules)))
+ ;; TODO: Add building the super experimental QML support
+ `(("extra-cmake-modules" ,extra-cmake-modules)
+ ("pkg-config" ,pkg-config)
+ ("qttools", qttools)))
(inputs
`(("qtbase" ,qtbase)))
(arguments
`(#:configure-flags
'("-DCMAKE_CXX_FLAGS=-fPIC"
- "-DPHONON_BUILD_PHONON4QT5=ON"
- "-DPHONON_INSTALL_QT_EXTENSIONS_INTO_SYSTEM_QT=ON")
+ "-DPHONON_BUILD_PHONON4QT5=ON")
#:phases
(modify-phases %standard-phases
(add-before 'install 'patch-installdir
@@ -307,8 +320,11 @@ http://freedesktop.org/wiki/Specifications/open-collaboration-services/")
`(("qtbase" ,qtbase)))
(arguments
`(#:configure-flags
- '("-DINSTALL_UDEV_RULE:BOOL=OFF")
- #:tests? #f)) ; DBUS_FATAL_WARNINGS=0 still yields 7/8 tests failing
+ (list (string-append
+ "-DUDEV_RULES_INSTALL_DIR=" %output "/lib/udev/rules.d"))
+ ;; TODO: Make tests pass: DBUS_FATAL_WARNINGS=0 still yields 7/8 tests
+ ;; failing. When running after install, tests hang.
+ #:tests? #f))
(home-page "https://community.kde.org/Frameworks")
(synopsis "QML wrapper for BlueZ")
(description "bluez-qt is a Qt-style library for accessing the bluez
@@ -540,6 +556,8 @@ propagate their changes to their respective configuration files.")
(native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules)
("qttools" ,qttools)
+ ("shared-mime-info" ,shared-mime-info)
+ ;; TODO: FAM: File alteration notification http://oss.sgi.com/projects/fam
("xorg-server" ,xorg-server))) ; for the tests
(inputs
`(("qtbase" ,qtbase)))
@@ -624,7 +642,8 @@ as well as an API to create KDED modules.")
`(("extra-cmake-modules" ,extra-cmake-modules)
("qttools" ,qttools)))
(inputs
- `(("qtbase" ,qtbase)))
+ `(("avahi" ,avahi) ; alternativly dnssd could be used
+ ("qtbase" ,qtbase)))
(home-page "https://community.kde.org/Frameworks")
(synopsis "Network service discovery using Zeroconf")
(description "KDNSSD is a library for handling the DNS-based Service
@@ -729,9 +748,11 @@ translation scripting.")
"01m4q3l2yq83f2dpbv6jry7cjkj6bqdgfpy5b8byaf1gf9w2firs"))))
(build-system cmake-build-system)
(native-inputs
- `(("extra-cmake-modules" ,extra-cmake-modules)))
+ `(("extra-cmake-modules" ,extra-cmake-modules)
+ ("pkg-config" ,pkg-config)))
(inputs
- `(("qtbase" ,qtbase)
+ `(("libxscrnsaver" ,libxscrnsaver) ; X-Screensaver based poller, fallback mode
+ ("qtbase" ,qtbase)
("qtx11extras" ,qtx11extras)))
(home-page "https://community.kde.org/Frameworks")
(synopsis "Reporting of idle time of user and system")
@@ -1042,7 +1063,7 @@ configuration pages, message boxes, and password requests.")
(begin
(let ((out (assoc-ref outputs "out")))
(setenv "QT_PLUGIN_PATH"
- (string-append out "/lib/plugins:"
+ (string-append out "/lib/qt5/plugins:"
(getenv "QT_PLUGIN_PATH"))))
;; The test suite requires a running X server, setting
;; QT_QPA_PLATFORM=offscreen does not suffice and even make
@@ -1213,7 +1234,7 @@ system.")
(define-public prison
(package
(name "prison")
- (version "5.34.0")
+ (version "5.37.0")
(source
(origin
(method url-fetch)
@@ -1221,7 +1242,7 @@ system.")
(version-major+minor version) "/"
name "-" version ".tar.xz"))
(sha256
- (base32 "00wj4yyfhhcq9b54civ5hy1grz70mmi676x50y12crcbbgkxm1lx"))))
+ (base32 "1icsirwfh7zscm8x9g2gp7aqzhs81ahhjflwjcwpz9bh0r9f1wb7"))))
(build-system cmake-build-system)
(native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -1251,6 +1272,7 @@ provides uniform access to generation of barcodes with data.")
(build-system cmake-build-system)
(native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules)
+ ("pkg-config" ,pkg-config)
("qttools" ,qttools)))
(inputs
`(("hunspell" ,hunspell)
@@ -1452,6 +1474,15 @@ application crashes.")
(("^.*xml/docbook/stylesheet.*$")
(string-append "xml/xsl/docbook-xsl-"
,(package-version docbook-xsl) "\n")))
+ #t))
+ (add-after 'install 'add-symlinks
+ ;; Some package(s) (e.g. kdelibs4support) refer to this locale by a
+ ;; different spelling.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((xsl (string-append (assoc-ref outputs "out")
+ "/share/kf5/kdoctools/customization/xsl/")))
+ (symlink (string-append xsl "pt_br.xml")
+ (string-append xsl "pt-BR.xml")))
#t)))))
(home-page "https://community.kde.org/Frameworks")
(synopsis "Create documentation from DocBook")
@@ -1485,23 +1516,26 @@ from DocBook files.")
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(setenv "QT_PLUGIN_PATH"
- (string-append out "/lib/plugins:"
+ (string-append out "/lib/qt5/plugins:"
(getenv "QT_PLUGIN_PATH"))))
#t)))))
(native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules)
+ ("pkg-config" ,pkg-config)
("python-2" ,python-2)))
(inputs
`(("attr" ,attr)
+ ;; TODO: EPub http://sourceforge.net/projects/ebook-tools
("karchive" ,karchive)
("ki18n" ,ki18n)
+ ("qtmultimedia" ,qtmultimedia)
("qtbase" ,qtbase)
;; Required run-time packages
("catdoc" ,catdoc)
;; Optional run-time packages
("exiv2" ,exiv2)
("ffmpeg" ,ffmpeg)
- ("poppler" ,poppler)
+ ("poppler-qt5" ,poppler-qt5)
("taglib" ,taglib)))
(home-page "https://community.kde.org/Frameworks")
(synopsis "Extract metadata from different fileformats")
@@ -1995,7 +2029,8 @@ KCModules can be created with the KConfigWidgets framework.")
("kconfig" ,kconfig)
("kwidgetsaddons" ,kwidgetsaddons)))
(native-inputs
- `(("extra-cmake-modules" ,extra-cmake-modules)))
+ `(("extra-cmake-modules" ,extra-cmake-modules)
+ ("kdoctools" ,kdoctools)))
(inputs
`(("kcoreaddons" ,kcoreaddons)
("kguiaddons" ,kguiaddons)
@@ -2036,6 +2071,7 @@ their settings.")
("kpackage" ,kpackage)))
(native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules)
+ ("pkg-config" ,pkg-config)
("xorg-server" ,xorg-server)))
(inputs
`(("kauth" ,kauth)
@@ -2055,6 +2091,7 @@ their settings.")
("kwidgetsaddons" ,kwidgetsaddons)
("kwindowsystem" ,kwindowsystem)
("kxmlgui" ,kxmlgui)
+ ("libepoxy", libepoxy)
("qtbase" ,qtbase)
("qtdeclarative" ,qtdeclarative)
("solid" ,solid)))
@@ -2132,7 +2169,20 @@ started on demand.")
`(("kconfig" ,kconfig)
("kcoreaddons" ,kcoreaddons)
("kdoctools" ,kdoctools)
- ("qtbase" ,qtbase)))
+ ("qtbase" ,qtbase)
+ ;; optional:
+ ("kcompletion" ,kcompletion)
+ ("kconfigwidgets" ,kconfigwidgets)
+ ("kiconthemes" ,kiconthemes)
+ ("kitemviews" ,kitemviews)
+ ("kio" ,kio)
+ ("kplotting" ,kplotting)
+ ("ktextwidgets" ,ktextwidgets)
+ ("kdewebkit" ,kdewebkit)
+ ("kwidgetsaddons" ,kwidgetsaddons)
+ ("kxmlgui" ,kxmlgui)
+ ("qtwebkit" ,qtwebkit)
+ ("sonnet" ,sonnet)))
(arguments
`(#:phases
(modify-phases %standard-phases
@@ -2237,6 +2287,7 @@ emoticons coming from different providers.")
(build-system cmake-build-system)
(native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules)
+ ("pkg-config" ,pkg-config)
("qttools" ,qttools)))
(inputs
`(("kconfig" ,kconfig)
@@ -2386,7 +2437,7 @@ makes starting KDE applications faster and reduces memory consumption.")
`(("dbus" ,dbus)
("extra-cmake-modules" ,extra-cmake-modules)))
(inputs
- `(("acl" ,acl)
+ `(;; TODO: LibACL , <ftp://oss.sgi.com/projects/xfs/cmd_tars>
("krb5" ,mit-krb5)
("karchive" ,karchive)
("kauth" ,kauth)
@@ -2411,13 +2462,30 @@ makes starting KDE applications faster and reduces memory consumption.")
`(#:tests? #f ; FIXME: 41/50 tests fail.
#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'patch
+ (lambda _
+ ;; Better error message (taken from nix)
+ (substitute* "src/kiod/kiod_main.cpp"
+ (("(^\\s*qCWarning(KIOD_CATEGORY) << \"Error loading plugin:\")( << loader.errorString();)" _ a b)
+ (string-append a "<< name" b)))
+ ;; TODO: samba-search-path.patch from nix: search smbd on $PATH
+ #t))
(add-before 'check 'check-setup
(lambda _
(setenv "HOME" (getcwd))
(setenv "XDG_RUNTIME_DIR" (getcwd))
;; make Qt render "offscreen", required for tests
(setenv "QT_QPA_PLATFORM" "offscreen")
- #t)))))
+ #t))
+ (add-after 'install 'add-symlinks
+ ;; Some package(s) (e.g. bluedevil) refer to these service types by
+ ;; the wrong name. I would prefer to patch those packages, but I
+ ;; cannot find the files!
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((kst5 (string-append (assoc-ref outputs "out")
+ "/share/kservicetypes5/")))
+ (symlink (string-append kst5 "kfileitemactionplugin.desktop")
+ (string-append kst5 "kfileitemaction-plugin.desktop"))))))))
;;(replace 'check
;; (lambda _
;; (setenv "DBUS_FATAL_WARNINGS" "0")
@@ -2551,7 +2619,9 @@ notifications which can be embedded in your application.")
("ktextwidgets" ,ktextwidgets)
("kxmlgui" ,kxmlgui)))
(native-inputs
- `(("extra-cmake-modules" ,extra-cmake-modules)))
+ `(("extra-cmake-modules" ,extra-cmake-modules)
+ ("shared-mime-info" ,shared-mime-info)
+ ))
(inputs
`(("kauth" ,kauth)
("kbookmarks" ,kbookmarks)
@@ -2788,7 +2858,16 @@ types or handled by application specific code.")
(setenv "HOME" (getcwd))
;; make Qt render "offscreen", required for tests
(setenv "QT_QPA_PLATFORM" "offscreen")
- #t)))))
+ #t))
+ (add-after 'install 'add-symlinks
+ ;; Some package(s) (e.g. plasma-sdk) refer to these service types
+ ;; by the wrong name. I would prefer to patch those packages, but
+ ;; I cannot find the files!
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((kst5 (string-append (assoc-ref outputs "out")
+ "/share/kservicetypes5/")))
+ (symlink (string-append kst5 "ktexteditorplugin.desktop")
+ (string-append kst5 "ktexteditor-plugin.desktop"))))))))
(home-page "https://community.kde.org/Frameworks")
(synopsis "Full text editor component")
(description "KTextEditor provides a powerful text editor component that you
@@ -2861,7 +2940,7 @@ It supports rich text as well as plain text.")
(native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules)))
(inputs
- `(("gpgme" ,gpgme) ;; TODO: Add gpgme Qt-bindings
+ `(("gpgme" ,gpgme)
("kauth" ,kauth)
("kcodecs" ,kcodecs)
("kconfig" ,kconfig)
@@ -2877,6 +2956,7 @@ It supports rich text as well as plain text.")
("kwindowsystem" ,kwindowsystem)
("libgcrypt" ,libgcrypt)
("phonon" ,phonon)
+ ("qgpgme" ,qgpgme)
("qtbase" ,qtbase)))
(home-page "https://community.kde.org/Frameworks")
(synopsis "Safe desktop-wide storage for passwords")
@@ -2885,6 +2965,38 @@ desktop-wide storage for passwords and the kwalletd daemon used to safely store
the passwords on KDE work spaces.")
(license license:lgpl2.1+)))
+(define-public kdewebkit
+ (package
+ (name "kdewebkit")
+ (version "5.37.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://kde/stable/frameworks/"
+ (version-major+minor version) "/"
+ name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "1ph3a50wix42hmsbc9jbfxla172aihjx9yzp9rza09j1a7va3hg1"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("extra-cmake-modules" ,extra-cmake-modules)))
+ (inputs
+ `(("kconfig" ,kconfig)
+ ("kcoreaddons" ,kcoreaddons)
+ ("kio" ,kio)
+ ("kjobwidgets" ,kjobwidgets)
+ ("kparts" ,kparts)
+ ("kservice" ,kservice)
+ ("kwallet" ,kwallet)
+ ("qtbase" ,qtbase)
+ ("qtwebkit" ,qtwebkit)))
+ (home-page "https://community.kde.org/Frameworks")
+ (synopsis "KDE Integration for QtWebKit")
+ (description "This library provides KDE integration of the HTML rendering
+engine WebKit via QtWebKit.")
+ (license license:lgpl2.1+)))
+
(define-public kxmlgui
(package
(name "kxmlgui")
@@ -3182,12 +3294,8 @@ workspace.")
(inputs
`(("kcompletion" ,kcompletion)
("kconfig" ,kconfig)
- ("kconfigwidgets" ,kconfigwidgets)
("kded" ,kded)
- ("kdesignerplugin" ,kdesignerplugin)
- ("kdoctools" ,kdoctools)
("kglobalaccel" ,kglobalaccel)
- ("kguiaddons" ,kguiaddons)
("ki18n" ,ki18n)
("kio" ,kio)
("kservice" ,kservice)
diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm
index 16475affe6..2db57ffb85 100644
--- a/gnu/packages/libffi.scm
+++ b/gnu/packages/libffi.scm
@@ -1,6 +1,10 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
+;;; Copyright © 2015 Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
+;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
+;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -22,7 +26,12 @@
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
- #:use-module (guix build-system gnu))
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages ruby)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system python)
+ #:use-module (guix build-system ruby))
(define-public libffi
(let ((post-install-phase
@@ -66,3 +75,103 @@ conversions for values passed between the two languages.")
;; See <https://github.com/atgreen/libffi/blob/master/LICENSE>.
(license expat))))
+(define-public python-cffi
+ (package
+ (name "python-cffi")
+ (version "1.11.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "cffi" version))
+ (sha256
+ (base32 "19h0wwz9cww74gw8cyq0izj8zkhjyzjw2d3ks1c3f1y4q28xv1xb"))))
+ (build-system python-build-system)
+ (outputs '("out" "doc"))
+ (inputs
+ `(("libffi" ,libffi)))
+ (propagated-inputs ; required at run-time
+ `(("python-pycparser" ,python-pycparser)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("python-sphinx" ,python-sphinx)
+ ("python-pytest" ,python-pytest)))
+ (arguments
+ `(#:modules ((ice-9 ftw)
+ (srfi srfi-26)
+ (guix build utils)
+ (guix build python-build-system))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (setenv "PYTHONPATH"
+ (string-append
+ (getenv "PYTHONPATH")
+ ":" (getcwd) "/build/"
+ (car (scandir "build" (cut string-prefix? "lib." <>)))))
+
+ ;; XXX The "normal" approach of setting CC and friends does
+ ;; not work here. Is this the correct way of doing things?
+ (substitute* "testing/embedding/test_basic.py"
+ (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
+ (string-append "c = distutils.ccompiler.new_compiler();"
+ "c.set_executables(compiler='gcc',"
+ "compiler_so='gcc',linker_exe='gcc',"
+ "linker_so='gcc -shared')")))
+ (substitute* "testing/cffi0/test_ownlib.py"
+ (("'cc testownlib") "'gcc testownlib"))
+ (zero? (system* "py.test" "-v" "c/" "testing/"))))
+ (add-before 'check 'disable-failing-test
+ ;; This is assumed to be a libffi issue:
+ ;; https://bitbucket.org/cffi/cffi/issues/312/tests-failed-with-armv8
+ (lambda _
+ (substitute* "testing/cffi0/test_ownlib.py"
+ (("ret.left") "ownlib.left"))
+ #t))
+ (add-after 'install 'install-doc
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
+ (doc (string-append data "/doc/" ,name "-" ,version))
+ (html (string-append doc "/html")))
+ (with-directory-excursion "doc"
+ (system* "make" "html")
+ (mkdir-p html)
+ (copy-recursively "build/html" html))
+ (copy-file "LICENSE" (string-append doc "/LICENSE"))
+ #t))))))
+ (home-page "https://cffi.readthedocs.org")
+ (synopsis "Foreign function interface for Python")
+ (description
+ "Foreign Function Interface for Python calling C code.")
+ (license expat)))
+
+(define-public python2-cffi
+ (package-with-python2 python-cffi))
+
+(define-public ruby-ffi
+ (package
+ (name "ruby-ffi")
+ (version "1.9.18")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "ffi" version))
+ (sha256
+ (base32
+ "034f52xf7zcqgbvwbl20jwdyjwznvqnwpbaps9nk18v9lgb1dpx0"))))
+ (build-system ruby-build-system)
+ ;; FIXME: Before running tests the build system attempts to build libffi
+ ;; from sources.
+ (arguments `(#:tests? #f))
+ (native-inputs
+ `(("ruby-rake-compiler" ,ruby-rake-compiler)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
+ (inputs
+ `(("libffi" ,libffi)))
+ (synopsis "Ruby foreign function interface library")
+ (description "Ruby-FFI is a Ruby extension for programmatically loading
+dynamic libraries, binding functions within them, and calling those functions
+from Ruby code. Moreover, a Ruby-FFI extension works without changes on Ruby
+and JRuby.")
+ (home-page "http://wiki.github.com/ffi/ffi")
+ (license bsd-3)))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index edac75fc17..27ad92e36e 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -367,8 +367,8 @@ It has been modified to remove all non-free binary blobs.")
(define %intel-compatible-systems '("x86_64-linux" "i686-linux"))
-(define %linux-libre-version "4.13.5")
-(define %linux-libre-hash "1crw61x7qrijhpw0azxf9b3fra0cxq87ncni2419p0s23jfdpc4m")
+(define %linux-libre-version "4.13.7")
+(define %linux-libre-hash "1znf2zrhfb6wmlv09c14y6sawl4nb0jr7gzwwnakspvy0yjs95r3")
(define-public linux-libre
(make-linux-libre %linux-libre-version
@@ -377,14 +377,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.53"
- "174i53cd090akbjq34dj4z00h1nyfmy3sl3fk6svcmbx6h34381h"
+ (make-linux-libre "4.9.56"
+ "05wy73yh4jbn1881djs21wl4hws62lyc1frb5di6cg6m3z7j658i"
%intel-compatible-systems
#:configuration-file kernel-config))
(define-public linux-libre-4.4
- (make-linux-libre "4.4.90"
- "1sqzvz8yrcf99vhphkxp1wm2agq6q9nshxb1mkypspm8rhm11vhw"
+ (make-linux-libre "4.4.92"
+ "038mrv36n2521xd1f4nlpn00ar4vwzbwkldf6pk7rflbc3zi0p8g"
%intel-compatible-systems
#:configuration-file kernel-config))
@@ -398,11 +398,11 @@ It has been modified to remove all non-free binary blobs.")
(origin
(method url-fetch)
(uri "\
-https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/patch/?id=4a01092a5fa819397484fe2b50e9518356858156")
+https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/patch/?id=f7ec367c8ea7021517c9c04b0022c225d2d0785a")
(file-name "linux-libre-4.4-CVE-2017-1000251.patch")
(sha256
(base32
- "0zmkw9zvzpwy2ihiyfrw6mrf8qzv77cm23lxadr20qvzqlc1xzb3"))))))
+ "1glnjvs3xkvana2wfdv47dxi7jz2s4dz3v0b8ryglf2vbflm388w"))))))
(define-public linux-libre-arm-generic
(make-linux-libre %linux-libre-version
@@ -3071,6 +3071,16 @@ Bluetooth audio output devices like headphones or loudspeakers.")
(string-append "--with-udevdir=" out "/lib/udev")))
#:phases
(modify-phases %standard-phases
+ ,@(if (string=? (%current-system) "armhf-linux")
+ ;; This test fails unpredictably.
+ ;; TODO: skip it for all architectures.
+ `((add-before 'check 'skip-wonky-test
+ (lambda _
+ (substitute* "unit/test-gatt.c"
+ (("tester_init\\(&argc, &argv\\);") "return 77;"))
+ #t)))
+ `())
+
(add-after 'install 'post-install
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -3089,13 +3099,7 @@ Bluetooth audio output devices like headphones or loudspeakers.")
(string-append out "/lib/udev/hid2hci --method"))
(("/sbin/udevadm")
(string-append (assoc-ref inputs "eudev") "/bin/udevadm")))
- #t))))
-
- ;; FIXME: Skip a test that segfaults on some machines. Seems to be a
- ;; timing issue (discussion on upstream mailing list:
- ;; https://marc.info/?t=149578476300002&r=1&w=2)
- #:make-flags '("XFAIL_TESTS=unit/test-gatt")))
-
+ #t))))))
(native-inputs
`(("pkg-config" ,pkg-config)
("gettext" ,gettext-minimal)))
@@ -3689,14 +3693,14 @@ the default @code{nsswitch} and the experimental @code{umich_ldap}.")
(define-public mcelog
(package
(name "mcelog")
- (version "153")
+ (version "154")
(source (origin
(method url-fetch)
(uri (string-append "https://git.kernel.org/cgit/utils/cpu/mce/"
"mcelog.git/snapshot/v" version ".tar.gz"))
(sha256
(base32
- "0q40d60p1klzg0aznvxhxgjlddwcxfj2q59s4q86sf9ild6rcdhl"))
+ "07628cr05f50m7lsvw26wxlnb7qcl0x6rymdpp5spqzhz91l58p3"))
(file-name (string-append name "-" version ".tar.gz"))
(modules '((guix build utils)))
(snippet
@@ -3715,7 +3719,7 @@ the default @code{nsswitch} and the experimental @code{umich_ldap}.")
;; The tests will only run as root on certain supported CPU models.
#:tests? #f))
(supported-systems (list "i686-linux" "x86_64-linux"))
- (home-page "http://mcelog.org/")
+ (home-page "https://mcelog.org/")
(synopsis "Machine check monitor for x86 Linux systems")
(description
"The mcelog daemon is required by the Linux kernel to log memory, I/O, CPU,
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index b7d5514f8e..a07cb1b004 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -14,7 +14,7 @@
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
-;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
+;;; Copyright © 2016, 2017 Troy Sankey <sankeytms@gmail.com>
;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
@@ -265,7 +265,7 @@ operating systems.")
(package
(inherit mutt)
(name "neomutt")
- (version "20170912")
+ (version "20171013")
(source
(origin
(method url-fetch)
@@ -273,7 +273,7 @@ operating systems.")
"/archive/" name "-" version ".tar.gz"))
(sha256
(base32
- "0mv60kii933hq52mhwrcz29diaajbs5ryqibgsvdvfyvx27i43cz"))))
+ "0mcs5rhlajyxl0bw2hpwcwx14rzrgk6sf8yr0gdj1di3sq166z2s"))))
(inputs
`(("cyrus-sasl" ,cyrus-sasl)
("gdbm" ,gdbm)
@@ -583,7 +583,7 @@ attachments, create new maildirs, and so on.")
(define-public alot
(package
(name "alot")
- (version "0.4")
+ (version "0.5.1")
(source (origin
(method url-fetch)
;; package author intends on distributing via github rather
@@ -594,13 +594,14 @@ attachments, create new maildirs, and so on.")
(file-name (string-append "alot-" version ".tar.gz"))
(sha256
(base32
- "0sl1kl2fhkv208llnbny4blcvrfdk4vx6bcw5pnyh9ylwb0pipi2"))))
+ "0wax30hjzmkqfml7hig1dqw1v1y63yc0cgbzl96x58b9h2ggqx3a"))))
(build-system python-build-system)
(arguments
- `(#:tests? #f ; no tests
- ;; python 3 is currently unsupported, more info:
+ `(;; python 3 is currently unsupported, more info:
;; https://github.com/pazz/alot/blob/master/docs/source/faq.rst
#:python ,python-2))
+ (native-inputs
+ `(("python2-mock" ,python2-mock)))
(inputs
`(("python2-magic" ,python2-magic)
("python2-configobj" ,python2-configobj)
@@ -1096,7 +1097,7 @@ facilities for checking incoming mail.")
(define-public dovecot
(package
(name "dovecot")
- (version "2.2.32")
+ (version "2.2.33.1")
(source
(origin
(method url-fetch)
@@ -1104,7 +1105,7 @@ facilities for checking incoming mail.")
(version-major+minor version) "/"
name "-" version ".tar.gz"))
(sha256 (base32
- "0bmwyvi1crmrca2knvknsf517x53w7gxrclwyrvrhddgw98j22qn"))))
+ "02w932hq8v9889k709gbg94jl983lzwd3nh51vkxq041821a3ng4"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index f183cce8b3..9af6448621 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -473,6 +473,19 @@ problems in numerical linear algebra.")
(license (license:non-copyleft "file://LICENSE"
"See LICENSE in the distribution."))))
+(define-public lapack-3.5
+ (package
+ (inherit lapack)
+ (version "3.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://www.netlib.org/lapack/lapack-"
+ version ".tgz"))
+ (sha256
+ (base32
+ "0lk3f97i9imqascnlf6wr5mjpyxqcdj73pgj97dj2mgvyg9z1n4s"))))))
+
(define-public scalapack
(package
(name "scalapack")
@@ -2374,7 +2387,7 @@ to BMP, JPEG or PNG image formats.")
(define-public maxima
(package
(name "maxima")
- (version "5.40.0")
+ (version "5.41.0")
(source
(origin
(method url-fetch)
@@ -2382,7 +2395,7 @@ to BMP, JPEG or PNG image formats.")
version "-source/" name "-" version ".tar.gz"))
(sha256
(base32
- "15pp35ayglv723bjbqc60gcdv2bm54s6pywsm4i4cwbjsf64dzkl"))
+ "0x0n81z0s4pl8nwpf7ivlsbvsdphm9w42250g7qdkizl0132by6s"))
(patches (search-patches "maxima-defsystem-mkdir.patch"))))
(build-system gnu-build-system)
(inputs
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index 7c8f32175d..579559616e 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -296,7 +296,7 @@ This package contains the binary.")
(define-public mpg123
(package
(name "mpg123")
- (version "1.25.6")
+ (version "1.25.7")
(source (origin
(method url-fetch)
(uri (list (string-append "mirror://sourceforge/mpg123/mpg123/"
@@ -306,7 +306,7 @@ This package contains the binary.")
version ".tar.bz2")))
(sha256
(base32
- "13jsbh1gwypjksim2fxlblj5wc2driwm4igrkcnbr6bpp34mh10g"))))
+ "1ws40fglyyk51jvmz8gfapjkw1g51pkch1rffdsbh4b1yay5xc9i"))))
(build-system gnu-build-system)
(arguments '(#:configure-flags '("--with-default-audio=pulse")))
(native-inputs `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index b39f2875e8..633b8ca43e 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -486,7 +486,7 @@ which can be used to encrypt a password with @code{crypt(3)}.")
(define-public wireshark
(package
(name "wireshark")
- (version "2.4.1")
+ (version "2.4.2")
(source
(origin
(method url-fetch)
@@ -494,7 +494,7 @@ which can be used to encrypt a password with @code{crypt(3)}.")
version ".tar.xz"))
(sha256
(base32
- "1k8zj44pkb2ny2x46f100y7cxddm1kh0zh7f6qggm78gn7wvrp82"))))
+ "0zglapd3sz08p2z9x8a5va3jnz17b3n5a1bskf7f2dgx6m3v5b6i"))))
(build-system gnu-build-system)
(inputs `(("c-ares" ,c-ares)
("glib" ,glib)
@@ -510,12 +510,12 @@ which can be used to encrypt a password with @code{crypt(3)}.")
("openssl" ,openssl)
("portaudio" ,portaudio)
("qtbase" ,qtbase)
- ("qttools" ,qttools)
("sbc" ,sbc)
("zlib" ,zlib)))
(native-inputs `(("perl" ,perl)
("pkg-config" ,pkg-config)
- ("python" ,python-wrapper)))
+ ("python" ,python-wrapper)
+ ("qttools" ,qttools)))
(arguments
`(#:configure-flags
(list (string-append "--with-c-ares=" (assoc-ref %build-inputs "c-ares"))
@@ -529,7 +529,6 @@ which can be used to encrypt a password with @code{crypt(3)}.")
(string-append "--with-sbc=" (assoc-ref %build-inputs "sbc"))
(string-append "--with-ssl=" (assoc-ref %build-inputs "openssl"))
(string-append "--with-zlib=" (assoc-ref %build-inputs "zlib")))))
- (home-page "https://www.wireshark.org/")
(synopsis "Network traffic analyzer")
(description "Wireshark is a network protocol analyzer, or @dfn{packet
sniffer}, that lets you capture and interactively browse the contents of
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index 52689a71d5..df6103f6a1 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -46,6 +46,7 @@
#:use-module (gnu packages gtk)
#:use-module (gnu packages guile)
#:use-module (gnu packages kerberos)
+ #:use-module (gnu packages libffi)
#:use-module (gnu packages linux)
#:use-module (gnu packages man)
#:use-module (gnu packages multiprecision)
diff --git a/gnu/packages/patches/totem-meson-easy-codec.patch b/gnu/packages/patches/totem-meson-easy-codec.patch
new file mode 100644
index 0000000000..b97d555c1a
--- /dev/null
+++ b/gnu/packages/patches/totem-meson-easy-codec.patch
@@ -0,0 +1,65 @@
+Fix a bug whereby the 'have_easy_codec' would be left undefined
+when passing '-D enable-easy-codec-installation=no'. Likewise,
+don't rely on GStreamer's plug-in support when it's disabled.
+
+--- totem-3.26.0/meson.build 2017-10-11 22:29:44.506280919 +0200
++++ totem-3.26.0/meson.build 2017-10-11 22:29:50.902252058 +0200
+@@ -203,6 +203,8 @@ if easy_codec_option != 'no'
+ missing_plugins_deps += gst_pbutils_dep
+ config_h.set('ENABLE_MISSING_PLUGIN_INSTALLATION', have_easy_codec,
+ description: 'Whether we can and want to do installation of missing plugins')
++else
++ have_easy_codec = false
+ endif
+
+ # python support
+
+--- totem-3.26.0/src/backend/bacon-video-widget.c 2017-10-11 22:40:52.531217356 +0200
++++ totem-3.26.0/src/backend/bacon-video-widget.c 2017-10-11 22:45:44.973847231 +0200
+@@ -341,6 +341,22 @@ get_type_name (GType class_type, int typ
+ return value->value_nick;
+ }
+
++#ifndef ENABLE_MISSING_PLUGIN_INSTALLATION
++
++gchar *
++gst_missing_plugin_message_get_installer_detail (GstMessage *message)
++{
++ return NULL;
++}
++
++char *
++gst_missing_plugin_message_get_description (GstMessage *message)
++{
++ return NULL;
++}
++
++#endif
++
+ static gchar **
+ bvw_get_missing_plugins_foo (const GList * missing_plugins, MsgToStrFunc func)
+ {
+@@ -1654,10 +1670,12 @@ bvw_handle_element_message (BaconVideoWi
+ }
+ }
+ goto done;
++#ifdef ENABLE_MISSING_PLUGIN_INSTALLATION
+ } else if (gst_is_missing_plugin_message (msg)) {
+ bvw->priv->missing_plugins =
+ g_list_prepend (bvw->priv->missing_plugins, gst_message_ref (msg));
+ goto done;
++#endif
+ } else if (strcmp (type_name, "not-mounted") == 0) {
+ const GValue *val;
+ GFile *file;
+@@ -6109,7 +6127,9 @@ bacon_video_widget_initable_init (GInita
+ GST_DEBUG ("Initialised %s", version_str);
+ g_free (version_str);
+
++#ifdef ENABLE_MISSING_PLUGIN_INSTALLATION
+ gst_pb_utils_init ();
++#endif
+
+ /* Instantiate all the fallible plugins */
+ bvw->priv->play = element_make_or_warn ("playbin", "play");
+
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 8a765e409b..fd183bc900 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -162,7 +162,7 @@
(base32
"01hlcaxndls86bl92rkd3fvf9pfa3inxqaimv88bxs95803kmkss"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Algorithm-C3")
+ (home-page "http://search.cpan.org/dist/Algorithm-C3/")
(synopsis "Module for merging hierarchies using the C3 algorithm")
(description "This module implements the C3 algorithm, which aims to
provide a sane method resolution order under multiple inheritance.")
@@ -181,7 +181,7 @@ provide a sane method resolution order under multiple inheritance.")
(base32
"0l8pk7ziz72d022hsn4xldhhb9f5649j5cgpjdibch0xng24ms1h"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Algorithm-Diff")
+ (home-page "http://search.cpan.org/dist/Algorithm-Diff/")
(synopsis "Compute differences between two files or lists")
(description "This is a module for computing the difference between two
files, two strings, or any other two lists of things. It uses an intelligent
@@ -204,7 +204,7 @@ differences.")
"1syyqzy462501kn5ma9gl6xbmcahqcn4qpafhsmpz0nd0x2m4l63"))))
(build-system perl-build-system)
(native-inputs `(("perl-module-build" ,perl-module-build)))
- (home-page "http://search.cpan.org/dist/aliased")
+ (home-page "http://search.cpan.org/dist/aliased/")
(synopsis "Use shorter versions of class names")
(description "The alias module loads the class you specify and exports
into your namespace a subroutine that returns the class name. You can
@@ -227,7 +227,7 @@ implicitly.")
(native-inputs
`(("perl-mouse" ,perl-mouse)
("perl-moose" ,perl-moose)))
- (home-page "http://search.cpan.org/dist/Any-Moose")
+ (home-page "http://search.cpan.org/dist/Any-Moose/")
(synopsis "Transparently use Moose or Mouse modules")
(description
"This module facilitates using @code{Moose} or @code{Mouse} modules
@@ -252,7 +252,7 @@ variable ANY_MOOSE to be Moose or Mouse.")
(build-system perl-build-system)
(native-inputs
`(("perl-test-pod" ,perl-test-pod)))
- (home-page "http://search.cpan.org/dist/AppConfig")
+ (home-page "http://search.cpan.org/dist/AppConfig/")
(synopsis "Configuration files and command line parsing")
(description "AppConfig is a bundle of Perl5 modules for reading
configuration files and parsing command line arguments.")
@@ -293,7 +293,7 @@ manipulate, read, and write Zip archive files.")
(base32
"0w1pwvnjdpb0n6k07zbknxwx6v7y75p4jxrs594pjhwvrmzippc9"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Array-Utils")
+ (home-page "http://search.cpan.org/dist/Array-Utils/")
(synopsis "Small utils for array manipulation")
(description "@code{Array::Utils} is a small pure-perl module containing
list manipulation routines.")
@@ -313,7 +313,7 @@ list manipulation routines.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-common-sense" ,perl-common-sense)))
- (home-page "http://search.cpan.org/dist/Async-Interrupt")
+ (home-page "http://search.cpan.org/dist/Async-Interrupt/")
(synopsis "Allow C/XS libraries to interrupt perl asynchronously")
(description
"@code{Async::Interrupt} implements a single feature only of interest
@@ -345,7 +345,7 @@ sometimes even without using a single syscall.")
(base32
"1422kw9fknv7rbjkgdfflg1q3mb69d3yryszp38dn0bgzkqhwkc1"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/autovivification")
+ (home-page "http://search.cpan.org/dist/autovivification/")
(synopsis "Lexically disable autovivification")
(description "When an undefined variable is dereferenced, it gets silently
upgraded to an array or hash reference (depending of the type of the
@@ -372,7 +372,7 @@ error when it would have happened.")
(base32
"01n3l5ifmn2wd0aadpnzya27b75imibj9zdivkfzcpnviqgx5c2m"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/base")
+ (home-page "http://search.cpan.org/dist/base/")
(synopsis "Establish an ISA relationship with base classes at compile time")
(description "Allows you to both load one or more modules, while setting
up inheritance from those modules at the same time. Unless you are using the
@@ -398,7 +398,7 @@ parent.")
("perl-module-implementation" ,perl-module-implementation)
("perl-sub-exporter-progressive" ,perl-sub-exporter-progressive)
("perl-variable-magic" ,perl-variable-magic)))
- (home-page "http://search.cpan.org/dist/B-Hooks-EndOfScope")
+ (home-page "http://search.cpan.org/dist/B-Hooks-EndOfScope/")
(synopsis "Execute code after a scope finished compilation")
(description "This module allows you to execute code when perl finished
compiling the surrounding scope.")
@@ -428,7 +428,7 @@ trials. It is perfect for when you need more precise information about the
running time of portions of your code than the Benchmark module will give you,
but don't want to go all out and profile your code.")
(home-page (string-append "http://search.cpan.org/~dcoppit/"
- "Benchmark-Timer-" version))
+ "Benchmark-Timer-" version "/"))
(license gpl2)))
(define-public perl-bit-vector
@@ -446,7 +446,7 @@ but don't want to go all out and profile your code.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-carp-clan" ,perl-carp-clan)))
- (home-page "http://search.cpan.org/dist/Bit-Vector")
+ (home-page "http://search.cpan.org/dist/Bit-Vector/")
(synopsis "Bit vector library")
(description "Bit::Vector is an efficient C library which allows you to
handle bit vectors, sets (of integers), \"big integer arithmetic\" and boolean
@@ -469,7 +469,7 @@ library can nevertheless be used stand-alone, without Perl.")
(base32
"18hrgldzwnhs0c0r8hxx6r05qvk9p7gwinjwcybixfs2h0n43ypj"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/boolean")
+ (home-page "http://search.cpan.org/dist/boolean/")
(synopsis "Boolean support for Perl")
(description "This module provides basic Boolean support, by defining two
special objects: true and false.")
@@ -488,7 +488,7 @@ special objects: true and false.")
(base32
"1jc5jrjwkr6pqga7998zkgw0yrxgb5n1y7lzgddawxibkf608mn7"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Business-ISBN-Data")
+ (home-page "http://search.cpan.org/dist/Business-ISBN-Data/")
(synopsis "Data files for Business::ISBN")
(description "This package provides a data pack for @code{Business::ISBN}.
These data are generated from the RangeMessage.xml file provided by the ISBN
@@ -511,7 +511,7 @@ Agency.")
(propagated-inputs
`(("perl-business-isbn-data" ,perl-business-isbn-data)
("perl-mojolicious" ,perl-mojolicious)))
- (home-page "http://search.cpan.org/dist/Business-ISBN")
+ (home-page "http://search.cpan.org/dist/Business-ISBN/")
(synopsis "Work with International Standard Book Numbers")
(description "This modules provides tools to deal with International
Standard Book Numbers, including ISBN-10 and ISBN-13.")
@@ -530,7 +530,7 @@ Standard Book Numbers, including ISBN-10 and ISBN-13.")
(base32
"1dfnm7h7lbqj356700ldlmgbr51v6hyjn1qig2bb4ysl1wn1jnzi"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Business-ISSN")
+ (home-page "http://search.cpan.org/dist/Business-ISSN/")
(synopsis "Work with International Standard Serial Numbers")
(description "This modules provides tools to deal with International
Standard Serial Numbers.")
@@ -551,7 +551,7 @@ Standard Serial Numbers.")
(build-system perl-build-system)
(native-inputs
`(("perl-tie-cycle" ,perl-tie-cycle)))
- (home-page "http://search.cpan.org/dist/Business-ISMN")
+ (home-page "http://search.cpan.org/dist/Business-ISMN/")
(synopsis "Work with International Standard Music Numbers")
(description "This modules provides tools to deal with International
Standard Music Numbers.")
@@ -573,7 +573,7 @@ Standard Music Numbers.")
`(("perl-digest-sha1" ,perl-digest-sha1)
("perl-error" ,perl-error)
("perl-ipc-sharelite" ,perl-ipc-sharelite)))
- (home-page "http://search.cpan.org/dist/Cache-Cache")
+ (home-page "http://search.cpan.org/dist/Cache-Cache/")
(synopsis "Cache interface for Perl")
(description "The Cache modules are designed to assist a developer in
persisting data for a specified period of time. Often these modules are used
@@ -597,7 +597,7 @@ easy to use abstraction of the file system or shared memory.")
(base32
"0h3ckr04cdn6dvl40m4m97vl5ybf30v1lwhw3jvkr92kpksvq4hd"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Cache-FastMmap")
+ (home-page "http://search.cpan.org/dist/Cache-FastMmap/")
(synopsis "Shared memory interprocess cache via mmap")
(description "A shared memory cache through an mmap'ed file. It's core is
written in C for performance. It uses fcntl locking to ensure multiple
@@ -619,7 +619,7 @@ algorithm to keep the most used entries in the cache.")
(base32
"05bhlx6d4nzamhkkh0pkckg7wlvaq6mazf7q1fbb5wpp1j1nlyjx"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Capture-Tiny")
+ (home-page "http://search.cpan.org/dist/Capture-Tiny/")
(synopsis "Capture STDOUT and STDERR from Perl, XS or external programs")
(description
"Capture::Tiny provides a simple, portable way to capture almost anything
@@ -640,7 +640,7 @@ is captured while being passed through to the original file handles.")
(base32
"01vih43hvpqy67m6a6fwmlswli91mqpv8n8ccglvlkc33l8hn97x"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Canary-Stability")
+ (home-page "http://search.cpan.org/dist/Canary-Stability/")
(synopsis "Check compatibility with the installed perl version")
(description
"This module is used by Schmorp's modules during configuration stage
@@ -660,7 +660,7 @@ to test the installed perl for compatibility with his modules.")
(base32
"0km5fc6r6whxh6h5yd7g1j0bi96sgk0gkda6cardicrw9qmqwkwj"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Carp-Assert")
+ (home-page "http://search.cpan.org/dist/Carp-Assert/")
(synopsis "Executable comments for Perl")
(description "Carp::Assert is intended for a purpose like the ANSI C
library assert.h.")
@@ -683,7 +683,7 @@ library assert.h.")
`(("perl-test-exception" ,perl-test-exception)))
(propagated-inputs
`(("perl-carp-assert" ,perl-carp-assert)))
- (home-page "http://search.cpan.org/dist/Carp-Assert-More")
+ (home-page "http://search.cpan.org/dist/Carp-Assert-More/")
(synopsis "Convenience wrappers around Carp::Assert")
(description "Carp::Assert::More is a set of handy assertion functions for
Perl.")
@@ -704,7 +704,7 @@ Perl.")
(build-system perl-build-system)
(native-inputs
`(("perl-test-exception" ,perl-test-exception)))
- (home-page "http://search.cpan.org/dist/Carp-Clan")
+ (home-page "http://search.cpan.org/dist/Carp-Clan/")
(synopsis "Report errors from a \"clan\" of modules")
(description "This module allows errors from a clan (or family) of modules
to appear to originate from the caller of the clan. This is necessary in
@@ -725,7 +725,7 @@ the Carp.pm module doesn't help.")
(base32
"1jfrwvfasylcafbvb0jjm94ad4v6k99a7rf5i4qwzhg4m0gvmk5x"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/CDDB_get")
+ (home-page "http://search.cpan.org/dist/CDDB_get/")
(synopsis "Read the CDDB entry for an audio CD in your drive")
(description "This module can retrieve information from the CDDB.")
;; Either GPLv2 or the "Artistic" license.
@@ -748,7 +748,7 @@ the Carp.pm module doesn't help.")
`(("perl-sub-name" ,perl-sub-name)))
(propagated-inputs
`(("perl-base" ,perl-base)))
- (home-page "http://search.cpan.org/dist/Class-Accessor")
+ (home-page "http://search.cpan.org/dist/Class-Accessor/")
(synopsis "Automated accessor generation")
(description "This module automagically generates accessors/mutators for
your class.")
@@ -771,7 +771,7 @@ your class.")
`(("perl-module-build" ,perl-module-build)))
(propagated-inputs
`(("perl-class-accessor" ,perl-class-accessor)))
- (home-page "http://search.cpan.org/dist/Class-Accessor-Chained")
+ (home-page "http://search.cpan.org/dist/Class-Accessor-Chained/")
(synopsis "Faster, but less expandable, chained accessors")
(description "A chained accessor is one that always returns the object
when called with parameters (to set), and the value of the field when called
@@ -799,7 +799,7 @@ the same mk_accessors interface.")
`(("perl-class-xsaccessor" ,perl-class-xsaccessor)
("perl-module-runtime" ,perl-module-runtime)
("perl-sub-name" ,perl-sub-name)))
- (home-page "http://search.cpan.org/dist/Class-Accessor-Grouped")
+ (home-page "http://search.cpan.org/dist/Class-Accessor-Grouped/")
(synopsis "Build groups of accessors")
(description "This class lets you build groups of accessors that will call
different getters and setters.")
@@ -820,7 +820,7 @@ different getters and setters.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-algorithm-c3" ,perl-algorithm-c3)))
- (home-page "http://search.cpan.org/dist/Class-C3")
+ (home-page "http://search.cpan.org/dist/Class-C3/")
(synopsis "Pragma to use the C3 method resolution order algorithm")
(description "This is pragma to change Perl 5's standard method resolution
order from depth-first left-to-right (a.k.a - pre-order) to the more
@@ -845,7 +845,7 @@ sophisticated C3 method resolution order.")
(propagated-inputs
`(("perl-list-moreutils" ,perl-list-moreutils)
("perl-mro-compat" ,perl-mro-compat)))
- (home-page "http://search.cpan.org/dist/Class-C3-Adopt-NEXT")
+ (home-page "http://search.cpan.org/dist/Class-C3-Adopt-NEXT/")
(synopsis "Drop-in replacement for NEXT")
(description "This module is intended as a drop-in replacement for NEXT,
supporting the same interface, but using Class::C3 to do the hard work.")
@@ -871,7 +871,7 @@ supporting the same interface, but using Class::C3 to do the hard work.")
`(("perl-class-c3" ,perl-class-c3)
("perl-class-inspector" ,perl-class-inspector)
("perl-mro-compat" ,perl-mro-compat)))
- (home-page "http://search.cpan.org/dist/Class-C3-Componentised")
+ (home-page "http://search.cpan.org/dist/Class-C3-Componentised/")
(synopsis "Load mix-ins or components to your C3-based class")
(description "This module will inject base classes to your module using
the Class::C3 method resolution order.")
@@ -890,7 +890,7 @@ the Class::C3 method resolution order.")
(base32
"0jpi38wy5xh6p1mg2cbyjjw76vgbccqp46685r27w8hmxb7gwrwr"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Class-Data-Inheritable")
+ (home-page "http://search.cpan.org/dist/Class-Data-Inheritable/")
(synopsis "Inheritable, overridable class data")
(description "Class::Data::Inheritable is for creating accessor/mutators
to class data. That is, if you want to store something about your class as a
@@ -912,7 +912,7 @@ subclasses and can be overridden.")
"0dd707sq8ix2dqbnp7ga77ba69r3vsn0cd6scnkn13s0gm2g4b00"))))
(build-system perl-build-system)
(arguments `(#:tests? #f)) ;timezone tests in chroot
- (home-page "http://search.cpan.org/dist/Class-Date")
+ (home-page "http://search.cpan.org/dist/Class-Date/")
(synopsis "Class for easy date and time manipulation")
(description "This module provides a general-purpose date and datetime
type for perl.")
@@ -930,7 +930,7 @@ type for perl.")
(base32
"00j5f0z4riyq7i95jww291dpmbn0hmmvkcbrh7p0p8lpqz7jsb9l"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Class-ErrorHandler")
+ (home-page "http://search.cpan.org/dist/Class-ErrorHandler/")
(synopsis "Base class for error handling")
(description
"@code{Class::ErrorHandler} provides an error-handling mechanism that is generic
@@ -953,7 +953,7 @@ to the calling program.")
"09ifd6v0c94vr20n9yr1dxgcp7hyscqq851szdip7y24bd26nlbc"))))
(build-system perl-build-system)
(native-inputs `(("perl-module-build" ,perl-module-build)))
- (home-page "http://search.cpan.org/dist/Class-Factory-Util")
+ (home-page "http://search.cpan.org/dist/Class-Factory-Util/")
(synopsis "Utility methods for factory classes")
(description "This module exports methods useful for factory classes.")
(license (package-license perl))))
@@ -971,7 +971,7 @@ to the calling program.")
(base32
"1sqfjgzxx1f951fykc6vgfvys4j8rxaw2zf3jq26yrvs3ygn8pq6"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Class-Inspector")
+ (home-page "http://search.cpan.org/dist/Class-Inspector/")
(synopsis "Get information about a class and its structure")
(description "Class::Inspector allows you to get information about a
loaded class.")
@@ -1000,7 +1000,7 @@ loaded class.")
("perl-namespace-clean" ,perl-namespace-clean)
("perl-module-runtime" ,perl-module-runtime)
("perl-module-implementation" ,perl-module-implementation)))
- (home-page "http://search.cpan.org/dist/Class-Load")
+ (home-page "http://search.cpan.org/dist/Class-Load/")
(synopsis "Working (require \"Class::Name\") and more")
(description "\"require EXPR\" only accepts Class/Name.pm style module
names, not Class::Name. For that, this module provides \"load_class
@@ -1024,7 +1024,7 @@ names, not Class::Name. For that, this module provides \"load_class
`(("perl-test-fatal" ,perl-test-fatal)
("perl-test-requires" ,perl-test-requires)))
(inputs `(("perl-class-load" ,perl-class-load)))
- (home-page "http://search.cpan.org/dist/Class-Load-XS")
+ (home-page "http://search.cpan.org/dist/Class-Load-XS/")
(synopsis "XS implementation of parts of Class::Load")
(description "This module provides an XS implementation for portions of
Class::Load.")
@@ -1044,7 +1044,7 @@ Class::Load.")
(base32
"0a03i4k3a33qqwhykhz5k437ld5mag2vq52vvsy03gbynb65ivsy"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Class-MethodMaker")
+ (home-page "http://search.cpan.org/dist/Class-MethodMaker/")
(synopsis "Create generic methods for OO Perl")
(description "This module solves the problem of having to continually
write accessor methods for your objects that perform standard tasks.")
@@ -1066,7 +1066,7 @@ write accessor methods for your objects that perform standard tasks.")
(native-inputs
`(("perl-test-fatal" ,perl-test-fatal)
("perl-test-requires" ,perl-test-requires)))
- (home-page "http://search.cpan.org/dist/Class-Method-Modifiers")
+ (home-page "http://search.cpan.org/dist/Class-Method-Modifiers/")
(synopsis "Moose-like method modifiers")
(description "Class::Method::Modifiers provides three modifiers: 'before',
'around', and 'after'. 'before' and 'after' are run just before and after the
@@ -1088,7 +1088,7 @@ original method.")
(base32
"0y7ngrjf551bjgmijp5rsidbkq6c8hb5lmy2jcqq0fify020s8iq"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Class-Singleton")
+ (home-page "http://search.cpan.org/dist/Class-Singleton/")
(synopsis "Implementation of a singleton class for Perl")
(description "This module implements a Singleton class from which other
classes can be derived. By itself, the Class::Singleton module does very
@@ -1108,7 +1108,7 @@ little other than manage the instantiation of a single object.")
(base32
"0jll90byj0nl16hwpf28k54i4n53jidjsj1bnlbx72v0n56qfpb2"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Class-Tiny")
+ (home-page "http://search.cpan.org/dist/Class-Tiny/")
(synopsis "Minimalist class construction")
(description "This module offers a minimalist class construction kit. It
uses no non-core modules for any recent Perl.")
@@ -1129,7 +1129,7 @@ uses no non-core modules for any recent Perl.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-class-inspector" ,perl-class-inspector)))
- (home-page "http://search.cpan.org/dist/Class-Unload")
+ (home-page "http://search.cpan.org/dist/Class-Unload/")
(synopsis "Unload a class")
(description "Class:Unload unloads a given class by clearing out its
symbol table and removing it from %INC.")
@@ -1148,7 +1148,7 @@ symbol table and removing it from %INC.")
(base32
"1wm6013il899jnm0vn50a7iv9v6r4nqywbqzj0csyf8jbwwnpicr"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Class-XSAccessor")
+ (home-page "http://search.cpan.org/dist/Class-XSAccessor/")
(synopsis "Generate fast XS accessors without runtime compilation")
(description "Class::XSAccessor implements fast read, write, and
read/write accessors in XS. Additionally, it can provide predicates such as
@@ -1176,7 +1176,7 @@ arrays for their internal representation.")
nested hash, array, scalar and reference types, including tied variables and
objects.")
(home-page (string-append "http://search.cpan.org/~garu/"
- "Clone-" version))
+ "Clone-" version "/"))
(license (package-license perl))))
(define-public perl-common-sense
@@ -1192,7 +1192,7 @@ objects.")
(base32
"1wxv2s0hbjkrnssvxvsds0k213awg5pgdlrpkr6xkpnimc17s7vp"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/common-sense")
+ (home-page "http://search.cpan.org/dist/common-sense/")
(synopsis "Sane defaults for Perl programs")
(description "This module implements some sane defaults for Perl programs,
as defined by two typical specimens of Perl coders.")
@@ -1213,7 +1213,7 @@ as defined by two typical specimens of Perl coders.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-module-pluggable" ,perl-module-pluggable)))
- (home-page "http://search.cpan.org/dist/Config-Any")
+ (home-page "http://search.cpan.org/dist/Config-Any/")
(synopsis "Load configuration from different file formats")
(description "Config::Any provides a facility for Perl applications and
libraries to load configuration data from multiple different file formats. It
@@ -1235,7 +1235,7 @@ supports XML, YAML, JSON, Apache-style configuration, and Perl code.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-capture-tiny" ,perl-capture-tiny)))
- (home-page "http://search.cpan.org/dist/Config-AutoConf")
+ (home-page "http://search.cpan.org/dist/Config-AutoConf/")
(synopsis "Module to implement some AutoConf macros in Perl")
(description "Config::AutoConf is intended to provide the same
opportunities to Perl developers as GNU Autoconf does for Shell developers.")
@@ -1254,7 +1254,7 @@ opportunities to Perl developers as GNU Autoconf does for Shell developers.")
(base32
"0szxxaihz71pr0r2jp9wvbrfc3hrsxi9xrd9vnyrxlrax8sci5h9"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Config-General")
+ (home-page "http://search.cpan.org/dist/Config-General/")
(synopsis "Generic Config Module")
(description "This module opens a config file and parses its contents for
you. The format of config files supported by Config::General is inspired by
@@ -1282,7 +1282,7 @@ options.")
`(("perl-mixin-linewise" ,perl-mixin-linewise)
("perl-perlio-utf8_strict" ,perl-perlio-utf8_strict)
("perl-sub-exporter" ,perl-sub-exporter)))
- (home-page "http://search.cpan.org/dist/Config-INI")
+ (home-page "http://search.cpan.org/dist/Config-INI/")
(synopsis "Simple .ini-file format reader and writer")
(description "@code{Config::INI} is a module that facilates the reading
and writing of @code{.ini}-style configuration files.")
@@ -1304,7 +1304,7 @@ and writing of @code{.ini}-style configuration files.")
(native-inputs
`(("perl-test-exception" ,perl-test-exception)
("perl-test-simple" ,perl-test-simple)))
- (home-page "http://search.cpan.org/dist/Context-Preserve")
+ (home-page "http://search.cpan.org/dist/Context-Preserve/")
(synopsis "Preserve context during subroutine call")
(description "This module runs code after a subroutine call, preserving
the context the subroutine would have seen if it were the last statement in
@@ -1330,7 +1330,7 @@ the caller.")
`(("perl-file-slurp" ,perl-file-slurp)
("perl-test-most" ,perl-test-most)))
(home-page
- "http://search.cpan.org/dist/Convert-BinHex")
+ "http://search.cpan.org/dist/Convert-BinHex/")
(synopsis "Extract data from Macintosh BinHex files")
(description
"BinHex is a format for transporting files safely through electronic
@@ -1354,7 +1354,7 @@ data.")
(build-system perl-build-system)
(native-inputs `(("perl-test-deep" ,perl-test-deep)))
(propagated-inputs `(("perl-cpan-meta" ,perl-cpan-meta)))
- (home-page "http://search.cpan.org/dist/CPAN-Meta-Check")
+ (home-page "http://search.cpan.org/dist/CPAN-Meta-Check/")
(synopsis "Verify requirements in a CPAN::Meta object")
(description "This module verifies if requirements described in a
CPAN::Meta object are present.")
@@ -1375,7 +1375,7 @@ CPAN::Meta object are present.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-common-sense" ,perl-common-sense)))
- (home-page "http://search.cpan.org/dist/Cpanel-JSON-XS")
+ (home-page "http://search.cpan.org/dist/Cpanel-JSON-XS/")
(synopsis "JSON::XS for Cpanel")
(description "This module converts Perl data structures to JSON and vice
versa.")
@@ -1394,7 +1394,7 @@ versa.")
(base32
"0ca8544371wp4vvqsa19lnhl02hczpkbwkgsgm65ziwwim3r1gdi"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Crypt-RandPasswd")
+ (home-page "http://search.cpan.org/dist/Crypt-RandPasswd/")
(synopsis "Random password generator")
(description "Crypt::RandPasswd provides three functions that can be used
to generate random passwords, constructed from words, letters, or characters.
@@ -1420,7 +1420,7 @@ Password Generator\".")
(base32
"1sp099cws0q225h6j4y68hmfd1lnv5877gihjs40f8n2ddf45i2y"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Crypt-RC4")
+ (home-page "http://search.cpan.org/dist/Crypt-RC4/")
(synopsis "Perl implementation of the RC4 encryption algorithm")
(description "A pure Perl implementation of the RC4 algorithm.")
(license (package-license perl))))
@@ -1440,7 +1440,7 @@ Password Generator\".")
(native-inputs
`(("perl-module-build" ,perl-module-build)
("perl-test-requires" ,perl-test-requires)))
- (home-page "http://search.cpan.org/dist/Cwd-Guard")
+ (home-page "http://search.cpan.org/dist/Cwd-Guard/")
(synopsis "Temporarily change working directory")
(description
"@code{Cwd::Guard} changes the current directory using a limited scope.
@@ -1502,7 +1502,7 @@ bioinformatics data.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-file-find-rule" ,perl-file-find-rule)))
- (home-page "http://search.cpan.org/dist/Data-Compare")
+ (home-page "http://search.cpan.org/dist/Data-Compare/")
(synopsis "Compare Perl data structures")
(description "This module compares arbitrary data structures to see if
they are copies of each other.")
@@ -1521,7 +1521,7 @@ they are copies of each other.")
(base32
"1jsc6acmv97pzsvx1fqywz4qvxxpp7kwmb78ygyqpsczkfj9p4dn"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Data-Uniqid")
+ (home-page "http://search.cpan.org/dist/Data-Uniqid/")
(synopsis "Perl extension for generating unique identifiers")
(description "@code{Data::Uniqid} provides three simple routines for
generating unique ids. These ids are coded with a Base62 systen to make them
@@ -1541,7 +1541,7 @@ short and handy (e.g. to use it as part of a URL).")
(base32
"1ciqlwsy1q35s94dry9bjy1pwanbq6b7q4rhxm9z8prgkzbslg2k"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Data-Dump")
+ (home-page "http://search.cpan.org/dist/Data-Dump/")
(synopsis "Pretty printing of data structures")
(description "This module provide functions that takes a list of values as
their argument and produces a string as its result. The string contains Perl
@@ -1561,7 +1561,7 @@ code that, when \"eval\"ed, produces a deep copy of the original arguments.")
(base32
"0lsqbl1mxhkj0qnjfa1jrvx8wwbyi81bgwfyj1si6cdg7h8jzhm6"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Data-Dumper-Concise")
+ (home-page "http://search.cpan.org/dist/Data-Dumper-Concise/")
(synopsis "Concise data dumper")
(description "Data::Dumper::Concise provides a dumper with Less
indentation and newlines plus sub deparsing.")
@@ -1584,7 +1584,7 @@ indentation and newlines plus sub deparsing.")
(propagated-inputs
`(("perl-sub-install" ,perl-sub-install)
("perl-params-util" ,perl-params-util)))
- (home-page "http://search.cpan.org/dist/Data-OptList")
+ (home-page "http://search.cpan.org/dist/Data-OptList/")
(synopsis "Parse and validate simple name/value option pairs")
(description
"Data::OptList provides a simple syntax for name/value option pairs.")
@@ -1608,7 +1608,7 @@ indentation and newlines plus sub deparsing.")
("perl-test-exception" ,perl-test-exception)))
(propagated-inputs
`(("perl-class-accessor-chained" ,perl-class-accessor-chained)))
- (home-page "http://search.cpan.org/dist/Data-Page")
+ (home-page "http://search.cpan.org/dist/Data-Page/")
(synopsis "Help when paging through sets of results")
(description "When searching through large amounts of data, it is often
the case that a result set is returned that is larger than we want to display
@@ -1644,7 +1644,7 @@ The maths behind this is unfortunately fiddly, hence this module.")
(propagated-inputs
`(("perl-list-moreutils" ,perl-list-moreutils)))
(home-page
- "http://search.cpan.org/dist/Data-Perl")
+ "http://search.cpan.org/dist/Data-Perl/")
(synopsis "Base classes wrapping fundamental Perl data types")
(description
"@code{Data::Perl} is a container class for the following classes:
@@ -1674,7 +1674,7 @@ The maths behind this is unfortunately fiddly, hence this module.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-io-string" ,perl-io-string)))
- (home-page "http://search.cpan.org/dist/Data-Stag")
+ (home-page "http://search.cpan.org/dist/Data-Stag/")
(synopsis "Structured tags datastructures")
(description
"This module is for manipulating data as hierarchical tag/value
@@ -1703,7 +1703,7 @@ Perl.")
("perl-namespace-clean" ,perl-namespace-clean)
("perl-path-class" ,perl-path-class)
("perl-sub-exporter" ,perl-sub-exporter)))
- (home-page "http://search.cpan.org/dist/Data-Stream-Bulk")
+ (home-page "http://search.cpan.org/dist/Data-Stream-Bulk/")
(synopsis "N at a time iteration API")
(description "This module tries to find middle ground between one at a
time and all at once processing of data sets. The purpose of this module is
@@ -1729,7 +1729,7 @@ necessary later on.")
`(("perl-test-most" ,perl-test-most)))
(propagated-inputs
`(("perl-file-homedir" ,perl-file-homedir)))
- (home-page "http://search.cpan.org/dist/Data-Tumbler")
+ (home-page "http://search.cpan.org/dist/Data-Tumbler/")
(synopsis "Dynamic generation of nested combinations of variants")
(description "Data::Tumbler - Dynamic generation of nested combinations of
variants.")
@@ -1756,7 +1756,7 @@ variants.")
("perl-namespace-clean" ,perl-namespace-clean)
("perl-task-weaken" ,perl-task-weaken)
("perl-tie-toobject" ,perl-tie-toobject)))
- (home-page "http://search.cpan.org/dist/Data-Visitor")
+ (home-page "http://search.cpan.org/dist/Data-Visitor/")
(synopsis "Visitor style traversal of Perl data structures")
(description "This module is a simple visitor implementation for Perl
values. It has a main dispatcher method, visit, which takes a single perl
@@ -1782,7 +1782,7 @@ structures, and all ref types (hashes, arrays, scalars, code, globs).")
(propagated-inputs
`(("perl-bit-vector" ,perl-bit-vector)
("perl-carp-clan" ,perl-carp-clan)))
- (home-page "http://search.cpan.org/dist/Date-Calc")
+ (home-page "http://search.cpan.org/dist/Date-Calc/")
(synopsis "Gregorian calendar date calculations")
(description "This package consists of a Perl module for date calculations
based on the Gregorian calendar, thereby complying with all relevant norms and
@@ -1807,7 +1807,7 @@ applicable).")
`(("perl-bit-vector" ,perl-bit-vector)
("perl-carp-clan" ,perl-carp-clan)
("perl-date-calc" ,perl-date-calc)))
- (home-page "http://search.cpan.org/dist/Date-Calc-XS")
+ (home-page "http://search.cpan.org/dist/Date-Calc-XS/")
(synopsis "XS wrapper for Date::Calc")
(description "Date::Calc::XS is an XS wrapper and C library plug-in for
Date::Calc.")
@@ -1832,7 +1832,7 @@ Date::Calc.")
;; (gnu packages base) which would create a circular dependency. TODO:
;; Maybe put this package elsewhere so we can turn on tests.
'(#:tests? #f))
- (home-page "http://search.cpan.org/dist/Date-Manip")
+ (home-page "http://search.cpan.org/dist/Date-Manip/")
(synopsis "Date manipulation routines")
(description "Date::Manip is a series of modules for common date/time
operations, such as comparing two times, determining a date a given amount of
@@ -1852,7 +1852,7 @@ time from another, or parsing international times.")
(base32
"016x17r9wi6ffdc4idwirzd1sxqcb4lmq5fn2aiq25nf2iir5899"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Date-Simple")
+ (home-page "http://search.cpan.org/dist/Date-Simple/")
(synopsis "Simple date handling")
(description "Dates are complex enough without times and timezones. This
module may be used to create simple date objects. It handles validation,
@@ -1885,7 +1885,7 @@ hours, minutes, seconds, and time zones.")
("perl-file-sharedir" ,perl-file-sharedir)
("perl-params-validate" ,perl-params-validate)
("perl-try-tiny" ,perl-try-tiny)))
- (home-page "http://search.cpan.org/dist/DateTime")
+ (home-page "http://search.cpan.org/dist/DateTime/")
(synopsis "Date and time object for Perl")
(description "DateTime is a class for the representation of date/time
combinations. It represents the Gregorian calendar, extended backwards in
@@ -1908,7 +1908,7 @@ time before its creation (in 1582).")
;; Only needed for tests
(native-inputs
`(("perl-datetime" ,perl-datetime)))
- (home-page "http://search.cpan.org/dist/DateTime-Calendar-Julian")
+ (home-page "http://search.cpan.org/dist/DateTime-Calendar-Julian/")
(synopsis "Dates in the Julian calendar")
(description "This package is a companion module to @code{DateTime.pm}.
It implements the Julian calendar. It supports everything that
@@ -1935,7 +1935,7 @@ precise.")
`(("perl-datetime" ,perl-datetime)
("perl-params-validate" ,perl-params-validate)
("perl-set-infinite" ,perl-set-infinite)))
- (home-page "http://search.cpan.org/dist/DateTime-Set")
+ (home-page "http://search.cpan.org/dist/DateTime-Set/")
(synopsis "DateTime set objects")
(description "The DateTime::Set module provides a date/time sets
implementation. It allows, for example, the generation of groups of dates,
@@ -1959,7 +1959,7 @@ within a time range.")
(propagated-inputs
`(("perl-datetime" ,perl-datetime)
("perl-datetime-event-recurrence" ,perl-datetime-event-recurrence)))
- (home-page "http://search.cpan.org/dist/DateTime-Event-ICal")
+ (home-page "http://search.cpan.org/dist/DateTime-Event-ICal/")
(synopsis "DateTime rfc2445 recurrences")
(description "This module provides convenience methods that let you easily
create DateTime::Set objects for RFC 2445 style recurrences.")
@@ -1981,7 +1981,7 @@ create DateTime::Set objects for RFC 2445 style recurrences.")
(propagated-inputs
`(("perl-datetime" ,perl-datetime)
("perl-datetime-set" ,perl-datetime-set)))
- (home-page "http://search.cpan.org/dist/DateTime-Event-Recurrence")
+ (home-page "http://search.cpan.org/dist/DateTime-Event-Recurrence/")
(synopsis "DateTime::Set extension for basic recurrences")
(description "This module provides convenience methods that let you easily
create DateTime::Set objects for various recurrences, such as \"once a month\"
@@ -2007,7 +2007,7 @@ or \"every day\". You can also create more complicated recurrences, such as
("perl-datetime" ,perl-datetime)
("perl-datetime-format-strptime" ,perl-datetime-format-strptime)
("perl-params-validate" ,perl-params-validate)))
- (home-page "http://search.cpan.org/dist/DateTime-Format-Builder")
+ (home-page "http://search.cpan.org/dist/DateTime-Format-Builder/")
(synopsis "Create DateTime parser classes and objects")
(description "DateTime::Format::Builder creates DateTime parsers. Many
string formats of dates and times are simple and just require a basic regular
@@ -2035,7 +2035,7 @@ to do this without writing reams of structural code.")
("perl-list-moreutils" ,perl-list-moreutils)
("perl-module-pluggable" ,perl-module-pluggable)
("perl-test-mocktime" ,perl-test-mocktime)))
- (home-page "http://search.cpan.org/dist/DateTime-Format-Flexible")
+ (home-page "http://search.cpan.org/dist/DateTime-Format-Flexible/")
(synopsis "Parse data/time strings")
(description "DateTime::Format::Flexible attempts to take any string you
give it and parse it into a DateTime object.")
@@ -2062,7 +2062,7 @@ give it and parse it into a DateTime object.")
("perl-datetime-set" ,perl-datetime-set)
("perl-datetime-timezone" ,perl-datetime-timezone)
("perl-params-validate" ,perl-params-validate)))
- (home-page "http://search.cpan.org/dist/DateTime-Format-ICal")
+ (home-page "http://search.cpan.org/dist/DateTime-Format-ICal/")
(synopsis "Parse and format iCal datetime and duration strings")
(description "This module understands the ICal date/time and duration
formats, as defined in RFC 2445. It can be used to parse these formats in
@@ -2095,7 +2095,7 @@ order to create the appropriate objects.")
("perl-datetime-timezone" ,perl-datetime-timezone)
("perl-list-moreutils" ,perl-list-moreutils)
("perl-params-validate" ,perl-params-validate)))
- (home-page "http://search.cpan.org/dist/DateTime-Format-Natural")
+ (home-page "http://search.cpan.org/dist/DateTime-Format-Natural/")
(synopsis "Machine-readable date/time with natural parsing")
(description "DateTime::Format::Natural takes a string with a human
readable date/time and creates a machine readable one by applying natural
@@ -2123,7 +2123,7 @@ parsing logic.")
("perl-params-validate" ,perl-params-validate)
("perl-sub-name" ,perl-sub-name)
("perl-test-warnings" ,perl-test-warnings)))
- (home-page "http://search.cpan.org/dist/DateTime-Format-Strptime")
+ (home-page "http://search.cpan.org/dist/DateTime-Format-Strptime/")
(synopsis "Parse and format strp and strf time patterns")
(description "This module implements most of `strptime(3)`, the POSIX
function that is the reverse of `strftime(3)`, for `DateTime`. While
@@ -2156,7 +2156,7 @@ takes a string and a pattern and returns the `DateTime` object associated.")
(propagated-inputs
`(("perl-list-moreutils" ,perl-list-moreutils)
("perl-params-validationcompiler" ,perl-params-validationcompiler)))
- (home-page "http://search.cpan.org/dist/DateTime-Locale")
+ (home-page "http://search.cpan.org/dist/DateTime-Locale/")
(synopsis "Localization support for DateTime.pm")
(description "The DateTime::Locale modules provide localization data for
the DateTime.pm class.")
@@ -2185,7 +2185,7 @@ the DateTime.pm class.")
("perl-namespace-autoclean" ,perl-namespace-autoclean)
("perl-params-validationcompiler" ,perl-params-validationcompiler)
("perl-try-tiny" ,perl-try-tiny)))
- (home-page "http://search.cpan.org/dist/DateTime-TimeZone")
+ (home-page "http://search.cpan.org/dist/DateTime-TimeZone/")
(synopsis "Time zone object for Perl")
(description "This class is the base class for all time zone objects. A
time zone is represented internally as a set of observances, each of which
@@ -2216,7 +2216,7 @@ DateTime::TimeZone methods.")
("perl-datetime-format-ical" ,perl-datetime-format-ical)
("perl-datetime-format-natural" ,perl-datetime-format-natural)
("perl-timedate" ,perl-timedate)))
- (home-page "http://search.cpan.org/dist/DateTimeX-Easy")
+ (home-page "http://search.cpan.org/dist/DateTimeX-Easy/")
(synopsis "Parse date/time strings")
(description "DateTimeX::Easy uses a variety of DateTime::Format packages
to create DateTime objects, with some custom tweaks to smooth out the rough
@@ -2238,7 +2238,7 @@ edges (mainly concerning timezone detection and selection).")
(inputs
`(("perl-datetime" ,perl-datetime)
("perl-params-validate" ,perl-params-validate)))
- (home-page "http://search.cpan.org/dist/DateTime-Format-Mail")
+ (home-page "http://search.cpan.org/dist/DateTime-Format-Mail/")
(synopsis "Convert between DateTime and RFC2822/822 formats")
(description "RFCs 2822 and 822 specify date formats to be used by email.
This module parses and emits such dates.")
@@ -2261,7 +2261,7 @@ This module parses and emits such dates.")
(native-inputs
`(("perl-test-pod" ,perl-test-pod)
("perl-test-pod-coverage" ,perl-test-pod-coverage)))
- (home-page "http://search.cpan.org/dist/DateTime-Format-W3CDTF")
+ (home-page "http://search.cpan.org/dist/DateTime-Format-W3CDTF/")
(synopsis "Parse and format W3CDTF datetime strings")
(description
"This module understands the W3CDTF date/time format, an ISO 8601 profile,
@@ -2285,7 +2285,7 @@ the appropriate objects.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-padwalker" ,perl-padwalker)))
- (home-page "http://search.cpan.org/dist/Devel-Caller")
+ (home-page "http://search.cpan.org/dist/Devel-Caller/")
(synopsis "Meatier version of caller")
(description "Devel::Caller provides meatier version of caller.")
(license (package-license perl))))
@@ -2304,7 +2304,7 @@ the appropriate objects.")
"0g71sma9jy0fjm619hcrcsb9spg2y03vjxx36y8k1xpa2553sr7m"))))
(build-system perl-build-system)
(native-inputs `(("perl-module-build" ,perl-module-build)))
- (home-page "http://search.cpan.org/dist/Devel-CheckBin")
+ (home-page "http://search.cpan.org/dist/Devel-CheckBin/")
(synopsis "Check that a command is available")
(description "Devel::CheckBin is a perl module that checks whether a
particular command is available.")
@@ -2324,7 +2324,7 @@ particular command is available.")
(build-system perl-build-system)
(native-inputs
`(("perl-module-build-tiny" ,perl-module-build-tiny)))
- (home-page "http://search.cpan.org/dist/Devel-CheckCompiler")
+ (home-page "http://search.cpan.org/dist/Devel-CheckCompiler/")
(synopsis "Check compiler availability")
(description "@code{Devel::CheckCompiler} is a tiny module to check
whether a compiler is available. It can test for a C99 compiler, or
@@ -2347,7 +2347,7 @@ you can tell it to compile a C source file with optional linker flags.")
"1hhb77kz3dys8yaik452j22cm3510zald2mpvfyv5clqv326aczx"))))
(build-system perl-build-system)
(home-page
- "http://search.cpan.org/dist/Devel-Cycle")
+ "http://search.cpan.org/dist/Devel-Cycle/")
(synopsis "Find memory cycles in objects")
(description
"@code{Devel::Cycle} This is a tool for finding circular references in
@@ -2370,7 +2370,7 @@ based memory management, circular references will cause memory leaks.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-sub-exporter-progressive" ,perl-sub-exporter-progressive)))
- (home-page "http://search.cpan.org/dist/Devel-GlobalDestruction")
+ (home-page "http://search.cpan.org/dist/Devel-GlobalDestruction/")
(synopsis "Provides equivalent of ${^GLOBAL_PHASE} eq 'DESTRUCT' for older perls")
(description "Devel::GlobalDestruction provides a function returning the
equivalent of \"$@{^GLOBAL_PHASE@} eq 'DESTRUCT'\" for older perls.")
@@ -2391,7 +2391,7 @@ equivalent of \"$@{^GLOBAL_PHASE@} eq 'DESTRUCT'\" for older perls.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-devel-caller" ,perl-devel-caller)))
- (home-page "http://search.cpan.org/dist/Devel-LexAlias")
+ (home-page "http://search.cpan.org/dist/Devel-LexAlias/")
(synopsis "Alias lexical variables")
(description "Devel::LexAlias provides the ability to alias a lexical
variable in a subroutines scope to one of your choosing.")
@@ -2416,7 +2416,7 @@ variable in a subroutines scope to one of your choosing.")
`(("perl-package-stash" ,perl-package-stash)
("perl-sub-identify" ,perl-sub-identify)
("perl-mro-compat" ,perl-mro-compat)))
- (home-page "http://search.cpan.org/dist/Devel-OverloadInfo")
+ (home-page "http://search.cpan.org/dist/Devel-OverloadInfo/")
(synopsis "Introspect overloaded operators")
(description "Devel::OverloadInfo returns information about overloaded
operators for a given class (or object), including where in the inheritance
@@ -2444,7 +2444,7 @@ hierarchy the overloads are declared and where the code implementing it is.")
`(("perl-class-tiny" ,perl-class-tiny)
("perl-sub-exporter" ,perl-sub-exporter)
("perl-namespace-clean" ,perl-namespace-clean)))
- (home-page "http://search.cpan.org/dist/Devel-PartialDump")
+ (home-page "http://search.cpan.org/dist/Devel-PartialDump/")
(synopsis "Partial dumping of data structures")
(description "This module is a data dumper optimized for logging of
arbitrary parameters.")
@@ -2463,7 +2463,7 @@ arbitrary parameters.")
(base32
"1r65iq5i11xh0r0kp3pdycydnd3kxpdmxnp0hq9hx9lr60kygsqx"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Devel-StackTrace")
+ (home-page "http://search.cpan.org/dist/Devel-StackTrace/")
(synopsis "Object representing a stack trace")
(description "The Devel::StackTrace module contains two classes,
Devel::StackTrace and Devel::StackTrace::Frame. These objects encapsulate the
@@ -2486,7 +2486,7 @@ providing a simple interface to this data.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-devel-stacktrace" ,perl-devel-stacktrace)))
- (home-page "http://search.cpan.org/dist/Devel-StackTrace-AsHTML")
+ (home-page "http://search.cpan.org/dist/Devel-StackTrace-AsHTML/")
(synopsis "Displays stack trace in HTML")
(description "Devel::StackTrace::AsHTML adds as_html method to
Devel::StackTrace which displays the stack trace in beautiful HTML, with code
@@ -2508,7 +2508,7 @@ each stack frame.")
(base32
"1h3n0w23camhj20a97nw7v40rqa7xcxx8vkn2qjjlngm0yhq2vw2"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Devel-Symdump")
+ (home-page "http://search.cpan.org/dist/Devel-Symdump/")
(synopsis "Dump symbol names or the symbol table")
(description "Devel::Symdump provides access to the perl symbol table.")
(license (package-license perl))))
@@ -2526,7 +2526,7 @@ each stack frame.")
(base32
"0naavabbm1c9zgn325ndy66da4insdw9l3mrxwxdfi7i7xnjrirv"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Digest-HMAC")
+ (home-page "http://search.cpan.org/dist/Digest-HMAC/")
(synopsis "Keyed-Hashing for Message Authentication")
(description "The Digest::HMAC module follows the common Digest::
interface for the RFC 2104 HMAC mechanism.")
@@ -2552,7 +2552,7 @@ interface for the RFC 2104 HMAC mechanism.")
(lambda _
;; Make MD5.so read-write so it can be stripped.
(chmod "blib/arch/auto/Digest/MD5/MD5.so" #o755))))))
- (home-page "http://search.cpan.org/dist/Digest-MD5")
+ (home-page "http://search.cpan.org/dist/Digest-MD5/")
(synopsis "Perl interface to the MD-5 algorithm")
(description
"The @code{Digest::MD5} module allows you to use the MD5 Message Digest
@@ -2596,7 +2596,7 @@ SHA-1 message digest algorithm for use by Perl programs.")
(native-inputs `(("perl-test-fatal" ,perl-test-fatal)))
(propagated-inputs
`(("perl-module-runtime" ,perl-module-runtime)))
- (home-page "http://search.cpan.org/dist/Dist-CheckConflicts")
+ (home-page "http://search.cpan.org/dist/Dist-CheckConflicts/")
(synopsis "Declare version conflicts for your dist")
(description "This module allows you to specify conflicting versions of
modules separately and deal with them after the module is done installing.")
@@ -2617,7 +2617,7 @@ modules separately and deal with them after the module is done installing.")
(build-system perl-build-system)
(native-inputs
`(("perl-module-build" ,perl-module-build)))
- (home-page "http://search.cpan.org/dist/Encode-Detect")
+ (home-page "http://search.cpan.org/dist/Encode-Detect/")
(synopsis "Detect the encoding of data")
(description "This package provides a class @code{Encode::Detect} to detect
the encoding of data.")
@@ -2636,7 +2636,7 @@ the encoding of data.")
(base32
"0qg8kmi7r9jcf8326b4fyq5sdpqyim2a11h7j77q577xam6x767r"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Encode-EUCJPASCII")
+ (home-page "http://search.cpan.org/dist/Encode-EUCJPASCII/")
(synopsis "ASCII mapping for eucJP encoding")
(description "This package provides an ASCII mapping for the eucJP
encoding.")
@@ -2655,7 +2655,7 @@ encoding.")
(base32
"1k1mdj4rd9m1z4h7qd2dl92ky0r1rk7mmagwsvdb9pirvdr4vj0y"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Encode-JIS2K")
+ (home-page "http://search.cpan.org/dist/Encode-JIS2K/")
(synopsis "JIS X 0212 (aka JIS 2000) encodings")
(description "This package provides encodings for JIS X 0212, which is
also known as JIS 2000.")
@@ -2679,7 +2679,7 @@ also known as JIS 2000.")
(modify-phases %standard-phases
(add-after 'unpack 'set-env
(lambda _ (setenv "PERL_USE_UNSAFE_INC" "1"))))))
- (home-page "http://search.cpan.org/dist/Encode-HanExtra")
+ (home-page "http://search.cpan.org/dist/Encode-HanExtra/")
(synopsis "Additional Chinese encodings")
(description "This Perl module provides Chinese encodings that are not
part of Perl by default, including \"BIG5-1984\", \"BIG5-2003\", \"BIG5PLUS\",
@@ -2702,7 +2702,7 @@ part of Perl by default, including \"BIG5-1984\", \"BIG5-2003\", \"BIG5PLUS\",
(base32
"1qhmj15a66h90pjl2dgnxsb9jj3b1r5mpvnr87cafcl8g69z0jr4"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Env-Path")
+ (home-page "http://search.cpan.org/dist/Env-Path/")
(synopsis "Advanced operations on path variables")
(description "@code{Env::Path} presents an object-oriented interface to
path variables, defined as that subclass of environment variables which name
@@ -2723,7 +2723,7 @@ separator.")
"0dsxic78mxy30qvbbdzfyp501hbkwhnbmafqfxipr0yqfy8f2j5g"))))
(build-system perl-build-system)
(native-inputs `(("perl-module-build" ,perl-module-build)))
- (home-page "http://search.cpan.org/dist/Error")
+ (home-page "http://search.cpan.org/dist/Error/")
(synopsis "OO-ish Error/Exception handling for Perl")
(description "The Error package provides two interfaces. Firstly Error
provides a procedural interface to exception handling. Secondly Error is a
@@ -2749,7 +2749,7 @@ catch, or can simply be recorded.")
("perl-test-requires" ,perl-test-requires)))
(propagated-inputs
`(("perl-devel-lexalias" ,perl-devel-lexalias)))
- (home-page "http://search.cpan.org/dist/Eval-Closure")
+ (home-page "http://search.cpan.org/dist/Eval-Closure/")
(synopsis "Safely and cleanly create closures via string eval")
(description "String eval is often used for dynamic code generation. For
instance, Moose uses it heavily, to generate inlined versions of accessors and
@@ -2779,7 +2779,7 @@ errors are rethrown automatically.")
(propagated-inputs
`(("perl-devel-stacktrace" ,perl-devel-stacktrace)
("perl-class-data-inheritable" ,perl-class-data-inheritable)))
- (home-page "http://search.cpan.org/dist/Exception-Class")
+ (home-page "http://search.cpan.org/dist/Exception-Class/")
(synopsis "Allows you to declare real exception classes in Perl")
(description "Exception::Class allows you to declare exception hierarchies
in your modules in a \"Java-esque\" manner.")
@@ -2802,7 +2802,7 @@ in your modules in a \"Java-esque\" manner.")
"Exporter::Lite is an alternative to Exporter, intended to provide a
lightweight subset of the most commonly-used functionality. It supports
import(), @@EXPORT and @@EXPORT_OK and not a whole lot else.")
- (home-page "http://search.cpan.org/dist/Exporter-Lite")
+ (home-page "http://search.cpan.org/dist/Exporter-Lite/")
(license (package-license perl))))
(define-public perl-exporter-tiny
@@ -2818,7 +2818,7 @@ import(), @@EXPORT and @@EXPORT_OK and not a whole lot else.")
(base32
"0gq2ia8c6n84gdrlc73vab61djs8gs8zf7fqx8cxbg5zxg2j45lg"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Exporter-Tiny")
+ (home-page "http://search.cpan.org/dist/Exporter-Tiny/")
(synopsis "Exporter with the features of Sub::Exporter but only core dependencies")
(description "Exporter::Tiny supports many of Sub::Exporter's
external-facing features including renaming imported functions with the `-as`,
@@ -2842,7 +2842,7 @@ only about 40% as many lines of code and with zero non-core dependencies.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-extutils-config" ,perl-extutils-config)))
- (home-page "http://search.cpan.org/dist/ExtUtils-InstallPaths")
+ (home-page "http://search.cpan.org/dist/ExtUtils-InstallPaths/")
(synopsis "Build.PL install path logic made easy")
(description "This module tries to make install path resolution as easy as
possible.")
@@ -2861,7 +2861,7 @@ possible.")
(base32
"130s5zk4krrymbynqxx62g13jynnb7xi7vdpg65cw3b56kv08ldf"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/ExtUtils-Config")
+ (home-page "http://search.cpan.org/dist/ExtUtils-Config/")
(synopsis "Wrapper for perl's configuration")
(description "ExtUtils::Config is an abstraction around the %Config hash.
By itself it is not a particularly interesting module by any measure, however
@@ -2882,7 +2882,7 @@ it ties together a family of modern toolchain modules.")
(build-system perl-build-system)
(native-inputs
`(("perl-test-number-delta" ,perl-test-number-delta)))
- (home-page "http://search.cpan.org/dist/ExtUtils-Depends")
+ (home-page "http://search.cpan.org/dist/ExtUtils-Depends/")
(synopsis "Easily build XS extensions that depend on XS extensions")
(description
"This module tries to make it easy to build Perl extensions that use
@@ -2904,7 +2904,7 @@ XS interface besides the perl one.")
(base32
"15dalfwmpfmifw312i5pwiai8134pxf7b2804shlqhdk1xqczy6k"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/ExtUtils-Helpers")
+ (home-page "http://search.cpan.org/dist/ExtUtils-Helpers/")
(synopsis "Various portability utilities for module builders")
(description "This module provides various portable helper functions for
module building modules.")
@@ -2925,7 +2925,7 @@ module building modules.")
(build-system perl-build-system)
(native-inputs
`(("perl-module-build" ,perl-module-build)))
- (home-page "http://search.cpan.org/dist/ExtUtils-LibBuilder")
+ (home-page "http://search.cpan.org/dist/ExtUtils-LibBuilder/")
(synopsis "Tool to build C libraries")
(description "Some Perl modules need to ship C libraries together with
their Perl code. Although there are mechanisms to compile and link (or glue)
@@ -2947,7 +2947,7 @@ self-contained C libraries. This module main goal is to help in that task.")
(build-system perl-build-system)
(propagated-inputs
`(("pkg-config" ,pkg-config)))
- (home-page "http://search.cpan.org/dist/ExtUtils-PkgConfig")
+ (home-page "http://search.cpan.org/dist/ExtUtils-PkgConfig/")
(synopsis "Simplistic interface to pkg-config")
(description
"@code{ExtUtils::PkgConfig} is a very simplistic interface to the
@@ -2981,7 +2981,7 @@ It is really just boilerplate code that you would have written yourself.")
("perl-moosex-semiaffordanceaccessor"
,perl-moosex-semiaffordanceaccessor)
("perl-namespace-autoclean" ,perl-namespace-autoclean)))
- (home-page "http://search.cpan.org/dist/File-ChangeNotify")
+ (home-page "http://search.cpan.org/dist/File-ChangeNotify/")
(synopsis "Watch for changes to files")
(description "This module provides a class to monitor a directory for
changes made to any file.")
@@ -3000,7 +3000,7 @@ changes made to any file.")
(base32
"1syyyvylr51iicialdmv0dw06q49xzv8zrkb5cn8ma4l73gvvk44"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/File-Copy-Recursive")
+ (home-page "http://search.cpan.org/dist/File-Copy-Recursive/")
(synopsis "Recursively copy files and directories")
(description "This module has 3 functions: one to copy files only, one to
copy directories only, and one to do either depending on the argument's
@@ -3023,7 +3023,7 @@ type.")
(propagated-inputs
`(("perl-text-glob" ,perl-text-glob)
("perl-number-compare" ,perl-number-compare)))
- (home-page "http://search.cpan.org/dist/File-Find-Rule")
+ (home-page "http://search.cpan.org/dist/File-Find-Rule/")
(synopsis "Alternative interface to File::Find")
(description "File::Find::Rule is a friendlier interface to File::Find.
It allows you to build rules which specify the desired files and
@@ -3047,7 +3047,7 @@ directories.")
`(("perl-file-find-rule" ,perl-file-find-rule)
("perl-params-util" ,perl-params-util)
("perl-parse-cpan-meta" ,perl-parse-cpan-meta)))
- (home-page "http://search.cpan.org/dist/File-Find-Rule-Perl")
+ (home-page "http://search.cpan.org/dist/File-Find-Rule-Perl/")
(synopsis "Common rules for searching for Perl things")
(description "File::Find::Rule::Perl provides methods for finding various
types Perl-related files, or replicating search queries run on a distribution
@@ -3069,7 +3069,7 @@ in various parts of the CPAN ecosystem.")
(base32
"0cjnz3ak7s3x3y3q48xb9ka2q9d7xvch58vy80hqa9xn9qkiabj6"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/File-Grep")
+ (home-page "http://search.cpan.org/dist/File-Grep/")
(synopsis "Matches patterns in a series of files")
(description "@code{File::Grep} provides similar functionality as perl's
builtin @code{grep}, @code{map}, and @code{foreach} commands, but iterating
@@ -3093,7 +3093,7 @@ provide a quick dropin when such functionality is needed.")
(propagated-inputs
`(("perl-file-which" ,perl-file-which)))
(arguments `(#:tests? #f)) ;Not appropriate for chroot
- (home-page "http://search.cpan.org/dist/File-HomeDir")
+ (home-page "http://search.cpan.org/dist/File-HomeDir/")
(synopsis "Find your home and other directories on any platform")
(description "File::HomeDir is a module for locating the directories that
are \"owned\" by a user (typically your user) and to solve the various issues
@@ -3116,7 +3116,7 @@ platforms.")
(base32
"039gc0i5cbdmidl8j8x195yykwcdmzwawmpapnysvljl8l33jqwj"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/File-Path")
+ (home-page "http://search.cpan.org/dist/File-Path/")
(synopsis "Create or remove directory trees")
(description "This module provide a convenient way to create directories
of arbitrary depth and to delete an entire directory subtree from the
@@ -3139,7 +3139,7 @@ file system.")
"02rlqvyy7gly3dsqwaa81aisyy9c791b8xvwzczcbgmcwgzkgaxm"))))
(build-system perl-build-system)
(home-page
- "http://search.cpan.org/dist/File-pushd")
+ "http://search.cpan.org/dist/File-pushd/")
(synopsis
"Change directory temporarily for a limited scope")
(description "@code{File::pushd} does a temporary @code{chdir} that is
@@ -3176,7 +3176,7 @@ lists of files")
"The File::List module crawls the directory tree starting at the
provided base directory and can return files (and/or directories if desired)
matching a regular expression.")
- (home-page "http://search.cpan.org/~dopacki/File-List/")))
+ (home-page "http://search.cpan.org/~dopacki/File-List//")))
(define-public perl-file-remove
(package
@@ -3191,7 +3191,7 @@ matching a regular expression.")
(base32
"1b814lw181kkqh6c1n4p2zlzzsq6ic5pfpr831nphf2w2rhcvgmk"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/File-Remove")
+ (home-page "http://search.cpan.org/dist/File-Remove/")
(synopsis "Remove files and directories in Perl")
(description "File::Remove::remove removes files and directories. It acts
like /bin/rm, for the most part. Although \"unlink\" can be given a list of
@@ -3216,7 +3216,7 @@ accepts wildcards, * and ?, as arguments for file names.")
`(("perl-file-sharedir-install" ,perl-file-sharedir-install)))
(propagated-inputs
`(("perl-class-inspector" ,perl-class-inspector)))
- (home-page "http://search.cpan.org/dist/File-ShareDir")
+ (home-page "http://search.cpan.org/dist/File-ShareDir/")
(synopsis "Locate per-dist and per-module shared files")
(description "The intent of File::ShareDir is to provide a companion to
Class::Inspector and File::HomeDir. Quite often you want or need your Perl
@@ -3239,7 +3239,7 @@ the installation.")
(base32
"028vnjw3fdmwk540w3b07cmr93ap0s13ni2b4c7iv56mgyy6gfc1"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/File-ShareDir-Dist")
+ (home-page "http://search.cpan.org/dist/File-ShareDir-Dist/")
(synopsis "Locate per-dist shared files")
(description "File::ShareDir::Dist finds share directories for
distributions. It is a companion module to File::ShareDir.")
@@ -3260,7 +3260,7 @@ distributions. It is a companion module to File::ShareDir.")
(build-system perl-build-system)
(native-inputs
`(("perl-module-build" ,perl-module-build)))
- (home-page "http://search.cpan.org/dist/File-ShareDir-Install")
+ (home-page "http://search.cpan.org/dist/File-ShareDir-Install/")
(synopsis "Install shared files")
(description "File::ShareDir::Install allows you to install read-only data
files from a distribution. It is a companion module to File::ShareDir, which
@@ -3280,7 +3280,7 @@ allows you to locate these files after installation.")
(base32
"0hrn4nipwx40d6ji8ssgr5nw986z9iqq8cn0kdpbszh9jplynaff"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/File-Slurp")
+ (home-page "http://search.cpan.org/dist/File-Slurp/")
(synopsis "Reading/Writing/Modifying of complete files")
(description "File::Slurp provides subroutines to read or write entire
files with a simple call. It also has a subroutine for reading the list of
@@ -3304,7 +3304,7 @@ file names in a directory.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-perlio-utf8_strict" ,perl-perlio-utf8_strict)))
- (home-page "http://search.cpan.org/dist/File-Slurper")
+ (home-page "http://search.cpan.org/dist/File-Slurper/")
(synopsis "Simple, sane and efficient module to slurp a file")
(description "This module provides functions for fast and correct file
slurping and spewing. All functions are optionally exported.")
@@ -3322,7 +3322,7 @@ slurping and spewing. All functions are optionally exported.")
(base32
"07kzfmibl43dq4c803f022g2rcfv4nkjgipxclz943mzxaz9aaa5"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/File-Slurp-Tiny")
+ (home-page "http://search.cpan.org/dist/File-Slurp-Tiny/")
(synopsis "Simple file reader and writer")
(description
"This module provides functions for fast reading and writing of files.")
@@ -3343,7 +3343,7 @@ slurping and spewing. All functions are optionally exported.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-parent" ,perl-parent)))
- (home-page "http://search.cpan.org/dist/File-Temp")
+ (home-page "http://search.cpan.org/dist/File-Temp/")
(synopsis "Return name and handle of a temporary file safely")
(description "File::Temp can be used to create and open temporary files in
a safe way.")
@@ -3367,7 +3367,7 @@ a safe way.")
"File::Which was created to be able to get the paths to executable
programs on systems under which the `which' program wasn't implemented in the
shell.")
- (home-page (string-append "http://search.cpan.org/~adamk/"
+ (home-page (string-append "http://search.cpan.org/~adamk//"
"File-Which-" version))
(license (package-license perl))))
@@ -3386,7 +3386,7 @@ shell.")
(build-system perl-build-system)
(native-inputs
`(("perl-module-install" ,perl-module-install)))
- (home-page "http://search.cpan.org/dist/File-Zglob")
+ (home-page "http://search.cpan.org/dist/File-Zglob/")
(synopsis "Extended Unix style glob functionality")
(description "@code{File::Zglob} provides a traditional Unix @code{glob}
functionality; it returns a list of file names that match the given pattern.
@@ -3406,7 +3406,7 @@ For instance, it supports the @code{**/*.pm} form.")
(base32
"0bw8gbhj8s5gmkqvs3m7pk9arqhgqssrby4yimh29ah9alix9ylq"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Getopt-Long")
+ (home-page "http://search.cpan.org/dist/Getopt-Long/")
(synopsis "Module to handle parsing command line options")
(description "The @code{Getopt::Long} module implements an extended getopt
function called @code{GetOptions()}. It parses the command line from
@@ -3440,7 +3440,7 @@ single-letter approach, is provided but not enabled by default.")
(propagated-inputs
`(("perl-params-validate" ,perl-params-validate)
("perl-sub-exporter" ,perl-sub-exporter)))
- (home-page "http://search.cpan.org/dist/Getopt-Long-Descriptive")
+ (home-page "http://search.cpan.org/dist/Getopt-Long-Descriptive/")
(synopsis "Getopt::Long, but simpler and more powerful")
(description "Getopt::Long::Descriptive is yet another Getopt library.
It's built atop Getopt::Long, and gets a lot of its features, but tries to
@@ -3464,7 +3464,7 @@ usage (help) messages, data validation, and a few other useful features.")
(description
"Getopt::Tabular is a Perl 5 module for table-driven argument parsing,
vaguely inspired by John Ousterhout's Tk_ParseArgv.")
- (home-page (string-append "http://search.cpan.org/~gward/"
+ (home-page (string-append "http://search.cpan.org/~gward//"
"Getopt-Tabular-" version))
(license (package-license perl))))
@@ -3483,7 +3483,7 @@ vaguely inspired by John Ousterhout's Tk_ParseArgv.")
(base32
"099a1gca0wj5zs0cffncjqp2mjrdlk9i6325ks89ml72gfq8wpij"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Graph")
+ (home-page "http://search.cpan.org/dist/Graph/")
(synopsis "Graph data structures and algorithms")
(description "This is @code{Graph}, a Perl module for dealing with graphs,
the abstract data structures.")
@@ -3501,7 +3501,7 @@ the abstract data structures.")
(base32
"1p6i9mfmbs9cw40jqdv71ihv2xfi0vvlv8bdv2810gf93zwxvi1l"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Guard")
+ (home-page "http://search.cpan.org/dist/Guard/")
(synopsis "Safe cleanup blocks implemented as guards")
(description "@code{Guard} implements so-called @dfn{guards}. A guard is
something (usually an object) that \"guards\" a resource, ensuring that it is
@@ -3538,7 +3538,7 @@ which are tied to the scope exit.")
(native-inputs
`(("perl-module-build" ,perl-module-build)
("perl-test-leaktrace" ,perl-test-leaktrace)))
- (home-page "http://search.cpan.org/dist/Hash-FieldHash")
+ (home-page "http://search.cpan.org/dist/Hash-FieldHash/")
(synopsis "Lightweight field hash for inside-out objects")
(description "@code{Hash::FieldHash} provides the field hash mechanism
which supports the inside-out technique. It is an alternative to
@@ -3559,7 +3559,7 @@ relic support.")
(base32
"0r1a2axz85wn6573zrl9rk8mkfl2cvf1gp9vwya5qndp60rz1ya7"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Hash-Merge")
+ (home-page "http://search.cpan.org/dist/Hash-Merge/")
(synopsis "Merge arbitrarily deep hashes into a single hash")
(description "Hash::Merge merges two arbitrarily deep hashes into a single
hash. That is, at any level, it will add non-conflicting key-value pairs from
@@ -3582,7 +3582,7 @@ merged.")
(base32
"1jc37kwpa1fl88va8bd1p95h0vjv1gsvmn7pc2pxj62ga6x0wpc0"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Hash-MultiValue")
+ (home-page "http://search.cpan.org/dist/Hash-MultiValue/")
(synopsis "Store multiple values per key")
(description "Hash::MultiValue is an object (and a plain hash reference)
that may contain multiple values per key, inspired by MultiDict of WebOb.")
@@ -3601,7 +3601,7 @@ that may contain multiple values per key, inspired by MultiDict of WebOb.")
(base32
"0mx50xds7iphxykbr9b0w2qki92l3gpagsdchm4ncsrnxc67c68x"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Importer/")
+ (home-page "http://search.cpan.org/dist/Importer//")
(synopsis "Alternative but compatible interface to modules that export symbols")
(description "This module acts as a layer between Exporter and modules which
consume exports. It is feature-compatible with Exporter, plus some much needed
@@ -3626,7 +3626,7 @@ variables.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-module-runtime" ,perl-module-runtime)))
- (home-page "http://search.cpan.org/dist/Import-Into")
+ (home-page "http://search.cpan.org/dist/Import-Into/")
(synopsis "Import packages into other packages")
(description "Writing exporters is a pain. Some use Exporter, some use
Sub::Exporter, some use Moose::Exporter, some use Exporter::Declare ... and
@@ -3649,7 +3649,7 @@ compilation. Import::Into provides global methods to make this painless.")
(base32
"04f6qf6ll2hkdsr9aglykg3wlgsnf0w4f264nzg4i9y6cgrhbafs"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/inc-latest")
+ (home-page "http://search.cpan.org/dist/inc-latest/")
(synopsis "Use modules in inc/ if newer than installed")
(description "The inc::latest module helps bootstrap configure-time
dependencies for CPAN distributions. These dependencies get bundled into the
@@ -3671,7 +3671,7 @@ inc directory within a distribution and are used by Makefile.PL or Build.PL.")
(base32
"0c437zvzpqi8f0h3nmblwdi2bvsb92b7g30fndr7my9qnky35izw"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/IO-CaptureOutput")
+ (home-page "http://search.cpan.org/dist/IO-CaptureOutput/")
(synopsis "Capture STDOUT and STDERR from Perl code, subprocesses or XS")
(description "@code{IO::CaptureOutput} provides routines for capturing
@code{STDOUT} and @code{STDERR} from perl subroutines, forked system
@@ -3694,7 +3694,7 @@ try @code{Capture::Tiny} instead.")
(base32
"1303q6rbcf2cag5z08pq3d1y91wls5q51jrpw4kh0l2bv75idh4w"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/IO-Interactive")
+ (home-page "http://search.cpan.org/dist/IO-Interactive/")
(synopsis "Utilities for interactive I/O")
(description "This module provides three utility subroutines that make it
easier to develop interactive applications: is_interactive(), interactive(),
@@ -3714,7 +3714,7 @@ and busy().")
(base32
"18755m410yl70s17rgq3m0hyxl8r5mr47vsq1rw7141d8kc4lgra"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/~gaas/IO-String-1.08/")
+ (home-page "http://search.cpan.org/~gaas/IO-String-1.08//")
(synopsis "Emulate file interface for in-core strings")
(description "IO::String is an IO::File (and IO::Handle) compatible class
that reads or writes data from in-core strings.")
@@ -3733,7 +3733,7 @@ that reads or writes data from in-core strings.")
(base32
"1vh4n0k22hx20rwvf6h7lp25wb7spg0089shrf92d2lkncwg8g3y"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/IO-stringy")
+ (home-page "http://search.cpan.org/dist/IO-stringy/")
(synopsis "IO:: interface for reading/writing an array of lines")
(description "This toolkit primarily provides modules for performing both
traditional and object-oriented i/o) on things *other* than normal
@@ -3752,7 +3752,7 @@ filehandles; in particular, IO::Scalar, IO::ScalarArray, and IO::Lines.")
(base32
"0lgd9xcbi4gf4gw1ka6fj94my3w1f3k1zamb4pfln0qxz45zlxx4"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/~toddr/IO-Tty/")
+ (home-page "http://search.cpan.org/~toddr/IO-Tty//")
(synopsis "Perl interface to pseudo ttys")
(description
"This package provides the 'IO::Pty' and 'IO::Tty' Perl interfaces to
@@ -3772,7 +3772,7 @@ pseudo ttys.")
(base32
"0a2v44x70gj9fd5wa8i08f9z6n14qppj1j49m1hc333wh72mzk6i"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/IPC-Cmd")
+ (home-page "http://search.cpan.org/dist/IPC-Cmd/")
(synopsis "Run interactive command-line programs")
(description "@code{IPC::Cmd} allows for the searching and execution of
any binary on your system. It adheres to verbosity settings and is able to
@@ -3802,7 +3802,7 @@ run interactively. It also has an option to capture output/error buffers.")
;; This test fails, and we're not really interested in
;; it, so disable it.
(delete-file "t/win32_compile.t"))))))
- (home-page "http://search.cpan.org/dist/IPC-Run")
+ (home-page "http://search.cpan.org/dist/IPC-Run/")
(synopsis "Run system() and background procs w/ piping, redirs, ptys")
(description "IPC::Run allows you run and interact with child processes
using files, pipes, and pseudo-ttys. Both system()-style and scripted usages
@@ -3828,7 +3828,7 @@ both supported and may be mixed.")
stdout, and/or stderr to files and perl data structures. It aims to satisfy
99% of the need for using system, qx, and open3 with a simple, extremely
Perlish API and none of the bloat and rarely used features of IPC::Run.")
- (home-page (string-append "http://search.cpan.org/~rjbs/"
+ (home-page (string-append "http://search.cpan.org/~rjbs//"
"IPC-Run3-" version))
;; "You may use this module under the terms of the BSD, Artistic, or GPL
;; licenses, any version."
@@ -3847,7 +3847,7 @@ Perlish API and none of the bloat and rarely used features of IPC::Run.")
(base32
"1gz7dbwxrzbzdsjv11kb49jlf9q6lci2va6is0hnavd93nwhdm0l"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/IPC-ShareLite")
+ (home-page "http://search.cpan.org/dist/IPC-ShareLite/")
(synopsis "Lightweight interface to shared memory")
(description "IPC::ShareLite provides a simple interface to shared memory,
allowing data to be efficiently communicated between processes.")
@@ -3866,7 +3866,7 @@ allowing data to be efficiently communicated between processes.")
(base32
"0fsdb81shjj4hifyyzvj7vpkhq5jrfhlcpw2xbjfi1mqz8fsmdpi"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/IPC-System-Simple")
+ (home-page "http://search.cpan.org/dist/IPC-System-Simple/")
(synopsis "Run commands simply, with detailed diagnostics")
(description "Calling Perl's in-built @code{system} function is easy,
determining if it was successful is hard. Let's face it, @code{$?} isn't the
@@ -3892,7 +3892,7 @@ commands.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-json-xs" ,perl-json-xs))) ;recommended
- (home-page "http://search.cpan.org/dist/JSON")
+ (home-page "http://search.cpan.org/dist/JSON/")
(synopsis "JSON encoder/decoder for Perl")
(description "This module converts Perl data structures to JSON and vice
versa using either JSON::XS or JSON::PP.")
@@ -3918,7 +3918,7 @@ versa using either JSON::XS or JSON::PP.")
("perl-test-without-module" ,perl-test-without-module)))
(propagated-inputs
`(("perl-namespace-clean" ,perl-namespace-clean)))
- (home-page "http://search.cpan.org/dist/JSON-Any")
+ (home-page "http://search.cpan.org/dist/JSON-Any/")
(synopsis "Wrapper for Perl JSON classes")
(description
"This module tries to provide a coherent API to bring together the
@@ -3944,7 +3944,7 @@ installed.")
`(("perl-test-without-module" ,perl-test-without-module)))
(inputs
`(("perl-cpanel-json-xs" ,perl-cpanel-json-xs)))
- (home-page "http://search.cpan.org/dist/JSON-MaybeXS")
+ (home-page "http://search.cpan.org/dist/JSON-MaybeXS/")
(synopsis "Cpanel::JSON::XS with fallback")
(description "This module first checks to see if either Cpanel::JSON::XS
or JSON::XS is already loaded, in which case it uses that module. Otherwise
@@ -3968,7 +3968,7 @@ either uses the first module it finds or throws an error.")
(propagated-inputs
`(("perl-common-sense" ,perl-common-sense)
("perl-types-serialiser" ,perl-types-serialiser)))
- (home-page "http://search.cpan.org/dist/JSON-XS")
+ (home-page "http://search.cpan.org/dist/JSON-XS/")
(synopsis "JSON serialising/deserialising for Perl")
(description "This module converts Perl data structures to JSON and vice
versa.")
@@ -3987,7 +3987,7 @@ versa.")
(base32
"0r1q7cclgwl24gzdnjzvd8y0r7j17dngjk492x35w198zhdj2ncp"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Log-Any")
+ (home-page "http://search.cpan.org/dist/Log-Any/")
(synopsis "Bringing loggers and listeners together")
(description "@code{Log::Any} provides a standard log production API for
modules. @code{Log::Any::Adapter} allows applications to choose the mechanism
@@ -4024,7 +4024,7 @@ logging mechanism.")
`(("perl-log-any" ,perl-log-any)
("perl-log-log4perl" ,perl-log-log4perl)))
(home-page
- "http://search.cpan.org/dist/Log-Any-Adapter-Log4perl")
+ "http://search.cpan.org/dist/Log-Any-Adapter-Log4perl/")
(synopsis "Log::Any adapter for Log::Log4perl")
(description "@code{Log::Any::Adapter::Log4perl} provides a
@code{Log::Any} adapter using @code{Log::Log4perl} for logging.")
@@ -4046,7 +4046,7 @@ logging mechanism.")
"0vxraq9navx5mgf8y8g6l5rbl3dv2ml8bishka5m69hj07nxs0ch"))))
(build-system perl-build-system)
(home-page
- "http://search.cpan.org/dist/Log-Log4perl")
+ "http://search.cpan.org/dist/Log-Log4perl/")
(synopsis "Log4j implementation for Perl")
(description "@code{Log::Log4perl} lets you remote-control and fine-tune
the logging behaviour of your system from the outside. It implements the
@@ -4067,7 +4067,7 @@ widely popular (Java-based) Log4j logging package in pure Perl.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-string-print" ,perl-string-print)))
- (home-page "http://search.cpan.org/dist/Log-Report-Optional")
+ (home-page "http://search.cpan.org/dist/Log-Report-Optional/")
(synopsis "Log::Report in the lightest form")
(description
"This module allows libraries to have a dependency to a small module
@@ -4094,7 +4094,7 @@ version.")
`(("perl-devel-globaldestruction" ,perl-devel-globaldestruction)
("perl-log-report-optional" ,perl-log-report-optional)
("perl-string-print" ,perl-string-print)))
- (home-page "http://search.cpan.org/dist/Log-Report")
+ (home-page "http://search.cpan.org/dist/Log-Report/")
(synopsis "Get messages to users and logs")
(description
"@code{Log::Report} combines three tasks which are closely related in
@@ -4114,7 +4114,7 @@ one: logging, exceptions, and translations.")
(base32
"161589h08kzliga17i2g0hb0yn4cjmb8rdiyadq5bw97974bac14"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Lingua-Translit")
+ (home-page "http://search.cpan.org/dist/Lingua-Translit/")
(synopsis "Transliterate text between writing systems")
(description "@code{Lingua::Translit} can be used to convert text from one
writing system to another, based on national or international transliteration
@@ -4139,7 +4139,7 @@ tables. Where possible a reverse transliteration is supported.")
(propagated-inputs
`(("perl-list-moreutils" ,perl-list-moreutils)
("perl-scalar-list-utils" ,perl-scalar-list-utils)))
- (home-page "http://search.cpan.org/dist/List-AllUtils")
+ (home-page "http://search.cpan.org/dist/List-AllUtils/")
(synopsis "Combination of List::Util and List::MoreUtils")
(description "This module exports all of the functions that either
List::Util or List::MoreUtils defines, with preference to List::Util.")
@@ -4162,7 +4162,7 @@ List::Util or List::MoreUtils defines, with preference to List::Util.")
(build-system perl-build-system)
(native-inputs
`(("perl-io-captureoutput" ,perl-io-captureoutput)))
- (home-page "http://search.cpan.org/dist/List-Compare")
+ (home-page "http://search.cpan.org/dist/List-Compare/")
(synopsis "Compare elements of two or more lists")
(description "@code{List::Compare} provides a module to perform
comparative operations on two or more lists. Provided operations include
@@ -4188,7 +4188,7 @@ intersections, unions, unique elements, complements and many more.")
("perl-test-writevariants" ,perl-test-writevariants)))
(propagated-inputs
`(("perl-exporter-tiny" ,perl-exporter-tiny)))
- (home-page "http://search.cpan.org/dist/List-MoreUtils")
+ (home-page "http://search.cpan.org/dist/List-MoreUtils/")
(synopsis "Provide the stuff missing in List::Util")
(description "List::MoreUtils provides some trivial but commonly needed
functionality on lists which is not going to go into List::Util.")
@@ -4215,7 +4215,7 @@ functionality on lists which is not going to go into List::Util.")
`(("perl-exporter-tiny" ,perl-exporter-tiny)
("perl-module-implementation"
,perl-module-implementation)))
- (home-page "http://search.cpan.org/dist/List-SomeUtils")
+ (home-page "http://search.cpan.org/dist/List-SomeUtils/")
(synopsis "Provide the stuff missing in List::Util")
(description "@code{List::SomeUtils} provides some trivial but commonly
needed functionality on lists which is not going to go into @code{List::Util}.
@@ -4245,7 +4245,7 @@ portions of this module couldn't be compiled on this machine.")
(propagated-inputs
`(("perl-timedate" ,perl-timedate)))
(home-page
- "http://search.cpan.org/dist/MailTools")
+ "http://search.cpan.org/dist/MailTools/")
(synopsis "Bundle of ancient email modules")
(description "MailTools contains the following modules:
@table @asis
@@ -4285,7 +4285,7 @@ Build a Mail::Internet object, and then send it out using Mail::Mailer.
(base32
"0klk0vj78lr259mnv1rbxib8gzf2cfp4zhkhbcxyhadkkl73myvj"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Memoize-ExpireLRU")
+ (home-page "http://search.cpan.org/dist/Memoize-ExpireLRU/")
(synopsis "Expiry plug-in for Memoize that adds LRU cache expiration")
(description "This module implements an expiry policy for Memoize that
follows LRU semantics, that is, the last n results, where n is specified as
@@ -4304,7 +4304,7 @@ the argument to the CACHESIZE parameter, will be cached.")
(base32
"04qxgcg9mvia121i3zcqxgp20y0d9kg0qv6hddk93ian0af7g347"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/MIME-Charset")
+ (home-page "http://search.cpan.org/dist/MIME-Charset/")
(synopsis "Charset information for MIME messages")
(description
"@code{MIME::Charset} provides information about character sets used for
@@ -4333,7 +4333,7 @@ MIME messages on Internet.")
(propagated-inputs
`(("perl-mailtools" ,perl-mailtools)))
(home-page
- "http://search.cpan.org/dist/MIME-tools")
+ "http://search.cpan.org/dist/MIME-tools/")
(synopsis "Tools to manipulate MIME messages")
(description
"MIME-tools is a collection of Perl5 MIME:: modules for parsing,
@@ -4354,7 +4354,7 @@ messages.")
(base32
"0s7s2z9xc1nc2l59rk80iaa04r36k0y95231212kz5p3ln7szk1c"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/MIME-Types")
+ (home-page "http://search.cpan.org/dist/MIME-Types/")
(synopsis "Definition of MIME types")
(description "This module provides a list of known mime-types, combined
from various sources. For instance, it contains all IANA types and the
@@ -4377,7 +4377,7 @@ knowledge of Apache.")
(inputs
`(("perl-perlio-utf8_strict" ,perl-perlio-utf8_strict)
("perl-sub-exporter" ,perl-sub-exporter)))
- (home-page "http://search.cpan.org/dist/Mixin-Linewise")
+ (home-page "http://search.cpan.org/dist/Mixin-Linewise/")
(synopsis "Write your linewise code for handles; this does the rest")
(description "It's boring to deal with opening files for IO, converting
strings to handle-like objects, and all that. With
@@ -4403,7 +4403,7 @@ file names are added for you.")
(native-inputs
`(("perl-module-build" ,perl-module-build)))
(home-page
- "http://search.cpan.org/dist/Modern-Perl")
+ "http://search.cpan.org/dist/Modern-Perl/")
(synopsis
"Enable all of the features of Modern Perl with one import")
(description "@code{Modern::Perl} provides a simple way to enable
@@ -4433,7 +4433,7 @@ multiple, by now, standard libraries in a Perl program.")
("perl-extutils-config" ,perl-extutils-config)
("perl-extutils-helpers" ,perl-extutils-helpers)
("perl-test-harness" ,perl-test-harness)))
- (home-page "http://search.cpan.org/dist/Module-Build-Tiny")
+ (home-page "http://search.cpan.org/dist/Module-Build-Tiny/")
(synopsis "Tiny replacement for Module::Build")
(description "Many Perl distributions use a Build.PL file instead of a
Makefile.PL file to drive distribution configuration, build, test and
@@ -4462,7 +4462,7 @@ has less than 120, yet supports the features needed by most distributions.")
("perl-module-build" ,perl-module-build)))
(propagated-inputs
`(("perl-devel-checkcompiler" ,perl-devel-checkcompiler)))
- (home-page "http://search.cpan.org/dist/Module-Build-XSUtil")
+ (home-page "http://search.cpan.org/dist/Module-Build-XSUtil/")
(synopsis "Module::Build class for building XS modules")
(description
"@code{Module::Build::XSUtil} is subclass of @code{Module::Build}
@@ -4500,7 +4500,7 @@ debug options.
(base32
"1lc33jdv4pgmm7nkr9bff0lhwjhhw91kaf6iiy2n7i7mw8dfv47l"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Module-Find")
+ (home-page "http://search.cpan.org/dist/Module-Find/")
(synopsis "Find and use installed modules in a (sub)category")
(description "Module::Find lets you find and use modules in categories.
This can be useful for auto-detecting driver or plugin modules. You can
@@ -4527,7 +4527,7 @@ subcategories.")
(propagated-inputs
`(("perl-module-runtime" ,perl-module-runtime)
("perl-try-tiny" ,perl-try-tiny)))
- (home-page "http://search.cpan.org/dist/Module-Implementation")
+ (home-page "http://search.cpan.org/dist/Module-Implementation/")
(synopsis "Loads alternate underlying implementations for a module")
(description "This module abstracts out the process of choosing one of
several underlying implementations for a module. This can be used to provide
@@ -4566,7 +4566,7 @@ implementations.")
;; TODO: One test requires Test::More >= 0.99, another fails with unicode
;; character handling.
(arguments `(#:tests? #f))
- (home-page "http://search.cpan.org/dist/Module-Install")
+ (home-page "http://search.cpan.org/dist/Module-Install/")
(synopsis "Standalone, extensible Perl module installer")
(description "Module::Install is a package for writing installers for
CPAN (or CPAN-like) distributions that are clean, simple, minimalist, act in a
@@ -4588,7 +4588,7 @@ installation version 5.005 or newer.")
"1px6qmszmfc69v36vd8d92av4nkrif6xf4nrj3xv647xwi2svwmk"))
(patches (search-patches "perl-module-pluggable-search.patch"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Module-Pluggable")
+ (home-page "http://search.cpan.org/dist/Module-Pluggable/")
(synopsis "Give your Perl module the ability to have plugins")
(description "This module provides a simple but extensible way of having
'plugins' for your Perl module.")
@@ -4608,7 +4608,7 @@ installation version 5.005 or newer.")
"19326f094jmjs6mgpwkyisid54k67w34br8yfh0gvaaml87gwi2c"))))
(build-system perl-build-system)
(native-inputs `(("perl-module-build" ,perl-module-build)))
- (home-page "http://search.cpan.org/dist/Module-Runtime")
+ (home-page "http://search.cpan.org/dist/Module-Runtime/")
(synopsis "Perl runtime module handling")
(description "The functions exported by this module deal with runtime
handling of Perl modules, which are normally handled at compile time.")
@@ -4632,7 +4632,7 @@ handling of Perl modules, which are normally handled at compile time.")
(propagated-inputs
`(("perl-module-runtime" ,perl-module-runtime)
("perl-dist-checkconflicts" ,perl-dist-checkconflicts)))
- (home-page "http://search.cpan.org/dist/Module-Runtime-Conflicts")
+ (home-page "http://search.cpan.org/dist/Module-Runtime-Conflicts/")
(synopsis "Provide information on conflicts for Module::Runtime")
(description "This module provides conflicts checking for Module::Runtime,
which had a recent release that broke some versions of Moose. It is called
@@ -4654,7 +4654,7 @@ from Moose::Conflicts and moose-outdated.")
(build-system perl-build-system)
(native-inputs
`(("perl-test-requires" ,perl-test-requires)))
- (home-page "http://search.cpan.org/dist/Module-ScanDeps")
+ (home-page "http://search.cpan.org/dist/Module-ScanDeps/")
(synopsis "Recursively scan Perl code for dependencies")
(description "Module::ScanDeps is a module to recursively scan Perl
programs for dependencies.")
@@ -4675,7 +4675,7 @@ programs for dependencies.")
(build-system perl-build-system)
(native-inputs
`(("perl-module-build" ,perl-module-build))) ; >= 0.40
- (home-page "http://search.cpan.org/dist/Module-Util")
+ (home-page "http://search.cpan.org/dist/Module-Util/")
(synopsis "Module name tools and transformations")
(description "This module provides a few useful functions for manipulating
module names. Its main aim is to centralise some of the functions commonly
@@ -4706,7 +4706,7 @@ module names to relative paths.")
("perl-module-runtime" ,perl-module-runtime)
("perl-role-tiny" ,perl-role-tiny)
("perl-strictures" ,perl-strictures)))
- (home-page "http://search.cpan.org/dist/Moo")
+ (home-page "http://search.cpan.org/dist/Moo/")
(synopsis "Minimalist Object Orientation (with Moose compatibility)")
(description "Moo is an extremely light-weight Object Orientation system.
It allows one to concisely define objects and roles with a convenient syntax
@@ -4783,7 +4783,7 @@ Moose and is optimised for rapid startup.")
("perl-sub-name" ,perl-sub-name)
("perl-task-weaken" ,perl-task-weaken)
("perl-try-tiny" ,perl-try-tiny)))
- (home-page "http://search.cpan.org/dist/Moose")
+ (home-page "http://search.cpan.org/dist/Moose/")
(synopsis "Postmodern object system for Perl 5")
(description
"Moose is a complete object system for Perl 5. It provides keywords for
@@ -4814,7 +4814,7 @@ sentences.")
("perl-test-exception" ,perl-test-exception)))
(propagated-inputs
`(("perl-moose" ,perl-moose)))
- (home-page "http://search.cpan.org/dist/MooseX-Emulate-Class-Accessor-Fast")
+ (home-page "http://search.cpan.org/dist/MooseX-Emulate-Class-Accessor-Fast/")
(synopsis "Emulate Class::Accessor::Fast behavior using Moose attributes")
(description "This module attempts to emulate the behavior of
Class::Accessor::Fast as accurately as possible using the Moose attribute
@@ -4847,7 +4847,7 @@ private methods are not.")
("perl-moose" ,perl-moose)
("perl-moosex-role-parameterized" ,perl-moosex-role-parameterized)
("perl-namespace-autoclean" ,perl-namespace-autoclean)))
- (home-page "http://search.cpan.org/dist/MooseX-Getopt")
+ (home-page "http://search.cpan.org/dist/MooseX-Getopt/")
(synopsis "Moose role for processing command line options")
(description "This is a Moose role which provides an alternate constructor
for creating objects using parameters passed in from the command line.")
@@ -4869,7 +4869,7 @@ for creating objects using parameters passed in from the command line.")
(inputs
`(("perl-moose" ,perl-moose)
("perl-namespace-autoclean" ,perl-namespace-autoclean)))
- (home-page "http://search.cpan.org/dist/MooseX-MarkAsMethods")
+ (home-page "http://search.cpan.org/dist/MooseX-MarkAsMethods/")
(synopsis "Mark overload code symbols as methods")
(description "MooseX::MarkAsMethods allows one to easily mark certain
functions as Moose methods. This will allow other packages such as
@@ -4900,7 +4900,7 @@ overloads will \"just work\".")
`(("perl-moose" ,perl-moose)
("perl-moosex-types" ,perl-moosex-types)
("perl-namespace-autoclean" ,perl-namespace-autoclean)))
- (home-page "http://search.cpan.org/dist/MooseX-MethodAttributes")
+ (home-page "http://search.cpan.org/dist/MooseX-MethodAttributes/")
(synopsis "Code attribute introspection")
(description "This module allows code attributes of methods to be
introspected using Moose meta method objects.")
@@ -4927,7 +4927,7 @@ introspected using Moose meta method objects.")
("perl-module-runtime" ,perl-module-runtime)
("perl-moose" ,perl-moose)
("perl-try-tiny" ,perl-try-tiny)))
- (home-page "http://search.cpan.org/dist/MooseX-NonMoose")
+ (home-page "http://search.cpan.org/dist/MooseX-NonMoose/")
(synopsis "Subclassing of non-Moose classes")
(description "MooseX::NonMoose allows for easily subclassing non-Moose
classes with Moose, taking care of the details connected with doing this, such
@@ -4957,7 +4957,7 @@ BUILD methods are called. It tries to be as non-intrusive as possible.")
("perl-moose" ,perl-moose)
("perl-params-validate" ,perl-params-validate)
("perl-sub-exporter" ,perl-sub-exporter)))
- (home-page "http://search.cpan.org/dist/MooseX-Params-Validate")
+ (home-page "http://search.cpan.org/dist/MooseX-Params-Validate/")
(synopsis "Extension of Params::Validate using Moose's types")
(description "This module fills a gap in Moose by adding method parameter
validation to Moose.")
@@ -4979,7 +4979,7 @@ validation to Moose.")
(propagated-inputs
`(("perl-moose" ,perl-moose)
("perl-moosex-role-parameterized" ,perl-moosex-role-parameterized)))
- (home-page "http://search.cpan.org/dist/MooseX-RelatedClassRoles")
+ (home-page "http://search.cpan.org/dist/MooseX-RelatedClassRoles/")
(synopsis "Apply roles to a related Perl class")
(description "This module applies roles to make a subclass instead of
manually setting up a subclass.")
@@ -5007,7 +5007,7 @@ manually setting up a subclass.")
(propagated-inputs
`(("perl-moose" ,perl-moose)
("perl-namespace-autoclean" ,perl-namespace-autoclean)))
- (home-page "http://search.cpan.org/dist/MooseX-Role-Parameterized")
+ (home-page "http://search.cpan.org/dist/MooseX-Role-Parameterized/")
(synopsis "Moose roles with composition parameters")
(description "Because Moose roles serve many different masters, they
usually provide only the least common denominator of functionality. To
@@ -5034,7 +5034,7 @@ Parameterized roles offer a solution to these (and other) kinds of problems.")
`(("perl-aliased" ,perl-aliased)
("perl-moose" ,perl-moose)
("perl-namespace-autoclean" ,perl-namespace-autoclean)))
- (home-page "http://search.cpan.org/dist/MooseX-Role-WithOverloading")
+ (home-page "http://search.cpan.org/dist/MooseX-Role-WithOverloading/")
(synopsis "Roles which support overloading")
(description "MooseX::Role::WithOverloading allows you to write a
Moose::Role which defines overloaded operators and allows those overload
@@ -5057,7 +5057,7 @@ where plain Moose::Roles would lose the overloading.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-moose" ,perl-moose)))
- (home-page "http://search.cpan.org/dist/MooseX-SemiAffordanceAccessor")
+ (home-page "http://search.cpan.org/dist/MooseX-SemiAffordanceAccessor/")
(synopsis "Name your accessors foo() and set_foo()")
(description "This module does not provide any methods. Simply loading it
changes the default naming policy for the loading class so that accessors are
@@ -5084,7 +5084,7 @@ accessor, while set methods are prefixed with \"_set_\".")
(propagated-inputs
`(("perl-moose" ,perl-moose)
("perl-namespace-autoclean" ,perl-namespace-autoclean)))
- (home-page "http://search.cpan.org/dist/MooseX-StrictConstructor")
+ (home-page "http://search.cpan.org/dist/MooseX-StrictConstructor/")
(synopsis "Strict object constructors for Moose")
(description "Simply loading this module makes your constructors
\"strict\". If your constructor is called with an attribute init argument
@@ -5113,7 +5113,7 @@ that your class does not declare, then it calls Moose->throw_error().")
("perl-moose" ,perl-moose)
("perl-namespace-autoclean" ,perl-namespace-autoclean)))
(home-page
- "http://search.cpan.org/dist/MooseX-Traits-Pluggable")
+ "http://search.cpan.org/dist/MooseX-Traits-Pluggable/")
(synopsis "Trait loading and resolution for Moose")
(description "Adds support on top of MooseX::Traits for class precedence
search for traits and some extra attributes.")
@@ -5140,7 +5140,7 @@ search for traits and some extra attributes.")
`(("perl-carp-clan" ,perl-carp-clan)
("perl-moose" ,perl-moose)
("perl-namespace-autoclean" ,perl-namespace-autoclean)))
- (home-page "http://search.cpan.org/dist/MooseX-Types")
+ (home-page "http://search.cpan.org/dist/MooseX-Types/")
(synopsis "Organise your Moose types in libraries")
(description "This package lets you declare types using short names, but
behind the scenes it namespaces all your type declarations, effectively
@@ -5172,7 +5172,7 @@ prevent name clashes between packages.")
("perl-moose" ,perl-moose)
("perl-moosex-types" ,perl-moosex-types)
("perl-namespace-clean" ,perl-namespace-clean)))
- (home-page "http://search.cpan.org/dist/MooseX-Types-DateTime")
+ (home-page "http://search.cpan.org/dist/MooseX-Types-DateTime/")
(synopsis "DateTime related constraints and coercions for Moose")
(description "This module packages several Moose::Util::TypeConstraints
with coercions, designed to work with the DateTime suite of objects.")
@@ -5205,7 +5205,7 @@ with coercions, designed to work with the DateTime suite of objects.")
("perl-namespace-clean" ,perl-namespace-clean)
("perl-time-duration-parse" ,perl-time-duration-parse)))
(home-page
- "http://search.cpan.org/dist/MooseX-Types-DateTime-MoreCoercions")
+ "http://search.cpan.org/dist/MooseX-Types-DateTime-MoreCoercions/")
(synopsis "Extensions to MooseX::Types::DateTime")
(description "This module builds on MooseX::Types::DateTime to add
additional custom types and coercions. Since it builds on an existing type,
@@ -5235,7 +5235,7 @@ all coercions and constraints are inherited.")
`(("perl-module-runtime" ,perl-module-runtime)
("perl-moosex-types" ,perl-moosex-types)
("perl-namespace-autoclean" ,perl-namespace-autoclean)))
- (home-page "http://search.cpan.org/dist/MooseX-Types-LoadableClass")
+ (home-page "http://search.cpan.org/dist/MooseX-Types-LoadableClass/")
(synopsis "ClassName type constraints for Moose")
(description "MooseX::Types::LoadableClass provides a ClassName type
constraint with coercion to load the class.")
@@ -5261,7 +5261,7 @@ constraint with coercion to load the class.")
("perl-import-into" ,perl-import-into)
("perl-module-runtime" ,perl-module-runtime)
("perl-moo" ,perl-moo)))
- (home-page "http://search.cpan.org/dist/MooX")
+ (home-page "http://search.cpan.org/dist/MooX/")
(synopsis
"Using Moo and MooX:: packages the most lazy way")
(description "Contains the MooX and MooX::Role packages.")
@@ -5296,7 +5296,7 @@ constraint with coercion to load the class.")
(propagated-inputs
`(("perl-data-perl" ,perl-data-perl)))
(home-page
- "http://search.cpan.org/dist/MooX-HandlesVia")
+ "http://search.cpan.org/dist/MooX-HandlesVia/")
(synopsis "NativeTrait-like behavior for Moo")
(description
"@code{MooX::HandlesVia} is an extension of Moo's @code{handles}
@@ -5329,7 +5329,7 @@ an external class to the given atttribute.")
(propagated-inputs
`(("perl-type-tiny" ,perl-type-tiny)))
(home-page
- "http://search.cpan.org/dist/MooX-late")
+ "http://search.cpan.org/dist/MooX-late/")
(synopsis "Easily translate Moose code to Moo")
(description
"MooX::late does the following:
@@ -5363,7 +5363,7 @@ MooX::HandlesVia.
(propagated-inputs
`(("perl-module-runtime" ,perl-module-runtime)
("perl-strictures" ,perl-strictures)))
- (home-page "http://search.cpan.org/dist/MooX-Types-MooseLike")
+ (home-page "http://search.cpan.org/dist/MooX-Types-MooseLike/")
(synopsis "Moosish types and type builder")
(description "MooX::Types::MooseLike provides a possibility to build your
own set of Moose-like types. These custom types can then be used to describe
@@ -5418,7 +5418,7 @@ subset of the functionality for reduced startup time.")
("perl-test-fatal" ,perl-test-fatal)))
(propagated-inputs
`(("perl-mouse" ,perl-mouse)))
- (home-page "http://search.cpan.org/dist/MouseX-NativeTraits")
+ (home-page "http://search.cpan.org/dist/MouseX-NativeTraits/")
(synopsis "Extend attribute interfaces for Mouse")
(description
"While @code{Mouse} attributes provide a way to name your accessors,
@@ -5440,7 +5440,7 @@ of data.")
(base32
"0aizn08lrdrgjz9vagkjmw2c7sxn46fzz521v9dbcqii4jd0d9r7"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Mozilla-CA")
+ (home-page "http://search.cpan.org/dist/Mozilla-CA/")
(synopsis "Mozilla's CA cert bundle in PEM format")
(description "@code{Mozilla::CA} provides a copy of Mozilla's bundle of
Certificate Authority certificates in a form that can be consumed by modules
@@ -5460,7 +5460,7 @@ and libraries based on OpenSSL.")
(base32
"1y547lr6zccf7919vx01v22zsajy528psanhg5aqschrrin3nb4a"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/MRO-Compat")
+ (home-page "http://search.cpan.org/dist/MRO-Compat/")
(synopsis "MRO interface compatibility for Perls < 5.9.5")
(description "The \"mro\" namespace provides several utilities for dealing
with method resolution order and method caching in general in Perl 5.9.5 and
@@ -5488,7 +5488,7 @@ Perl (back to 5.6.0).")
`(("perl-b-hooks-endofscope" ,perl-b-hooks-endofscope)
("perl-namespace-clean" ,perl-namespace-clean)
("perl-sub-identify" ,perl-sub-identify)))
- (home-page "http://search.cpan.org/dist/namespace-autoclean")
+ (home-page "http://search.cpan.org/dist/namespace-autoclean/")
(synopsis "Keep imports out of your namespace")
(description "The namespace::autoclean pragma will remove all imported
symbols at the end of the current package's compile cycle. Functions called
@@ -5515,7 +5515,7 @@ anything that looks like a method.")
(propagated-inputs
`(("perl-package-stash" ,perl-package-stash)
("perl-b-hooks-endofscope" ,perl-b-hooks-endofscope)))
- (home-page "http://search.cpan.org/dist/namespace-clean")
+ (home-page "http://search.cpan.org/dist/namespace-clean/")
(synopsis "Keep imports and functions out of your namespace")
(description "The namespace::clean pragma will remove all previously
declared or imported symbols at the end of the current package's compile
@@ -5542,7 +5542,7 @@ name, but they won't show up as methods on your class or instances.")
`(("perl-module-build" ,perl-module-build)
("perl-test-nowarnings" ,perl-test-nowarnings)))
(home-page
- "http://search.cpan.org/dist/Net-IDN-Encode")
+ "http://search.cpan.org/dist/Net-IDN-Encode/")
(synopsis
"Internationalizing Domain Names in Applications (IDNA)")
(description
@@ -5571,7 +5571,7 @@ using whatever IDNA standard is the best choice at the moment.")
"0p2nhrwamic2fyj094y583q088ixv9gbb82c3invqrd17mh57r33"))))
(build-system perl-build-system)
(home-page
- "http://search.cpan.org/dist/Net-Statsd")
+ "http://search.cpan.org/dist/Net-Statsd/")
(synopsis "Perl client for Etsy's statsd daemon")
(description "This module implement a UDP client for the statsd statistics
collector daemon in use at Etsy.com.")
@@ -5590,7 +5590,7 @@ collector daemon in use at Etsy.com.")
(base32
"09q8i0mxvr7q9vajwlgawsi0hlpc119gnhq4hc933d03x0vkfac3"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Number-Compare")
+ (home-page "http://search.cpan.org/dist/Number-Compare/")
(synopsis "Numeric comparisons")
(description "Number::Compare compiles a simple comparison to an anonymous
subroutine, which you can call with a value to be tested against.")
@@ -5611,7 +5611,7 @@ subroutine, which you can call with a value to be tested against.")
(build-system perl-build-system)
(native-inputs
`(("perl-module-install" ,perl-module-install)))
- (home-page "http://search.cpan.org/dist/Object-Signature")
+ (home-page "http://search.cpan.org/dist/Object-Signature/")
(synopsis "Generate cryptographic signatures for objects")
(description "Object::Signature is an abstract base class that you can
inherit from in order to allow your objects to generate unique cryptographic
@@ -5633,7 +5633,7 @@ signatures.")
(base32
"179cxwqxb0f9dpx8954nvwjmggxxi5ndnang41yav1dx6mf0abp7"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/OLE-Storage_Lite")
+ (home-page "http://search.cpan.org/dist/OLE-Storage_Lite/")
(synopsis "Read and write OLE storage files")
(description "This module allows you to read and write
an OLE-Structured file. @dfn{OLE} (Object Linking and Embedding) is a
@@ -5657,7 +5657,7 @@ documents within a single file.")
(propagated-inputs
`(("perl-sub-exporter" ,perl-sub-exporter)
("perl-params-util" ,perl-params-util)))
- (home-page "http://search.cpan.org/dist/Package-Anon")
+ (home-page "http://search.cpan.org/dist/Package-Anon/")
(synopsis "Anonymous packages")
(description "This module allows for anonymous packages that are
independent of the main namespace and only available through an object
@@ -5686,7 +5686,7 @@ instance, not by name.")
("perl-params-util" ,perl-params-util)
("perl-sub-install" ,perl-sub-install)))
(arguments `(#:tests? #f)) ;XXX: Failing for some reason...
- (home-page "http://search.cpan.org/dist/Package-DeprecationManager")
+ (home-page "http://search.cpan.org/dist/Package-DeprecationManager/")
(synopsis "Manage deprecation warnings for your distribution")
(description "This module allows you to manage a set of deprecations for
one or more modules.")
@@ -5714,7 +5714,7 @@ one or more modules.")
`(("perl-module-implementation" ,perl-module-implementation)
("perl-dist-checkconflicts" ,perl-dist-checkconflicts)
("perl-package-stash-xs" ,perl-package-stash-xs)))
- (home-page "http://search.cpan.org/dist/Package-Stash")
+ (home-page "http://search.cpan.org/dist/Package-Stash/")
(synopsis "Routines for manipulating stashes")
(description "Manipulating stashes (Perl's symbol tables) is occasionally
necessary, but incredibly messy, and easy to get wrong. This module hides all
@@ -5738,7 +5738,7 @@ of that behind a simple API.")
`(("perl-test-fatal" ,perl-test-fatal)
("perl-test-requires" ,perl-test-requires)
("perl-package-anon" ,perl-package-anon)))
- (home-page "http://search.cpan.org/dist/Package-Stash-XS")
+ (home-page "http://search.cpan.org/dist/Package-Stash-XS/")
(synopsis "Faster implementation of the Package::Stash API")
(description "This is a backend for Package::Stash, which provides the
functionality in a way that's less buggy and much faster. It will be used by
@@ -5759,7 +5759,7 @@ compiler.")
(base32
"058l78rkr6px3rqcv2sdf9sqimdq1nc6py5yb9rrg3wmva7crw84"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/PadWalker")
+ (home-page "http://search.cpan.org/dist/PadWalker/")
(synopsis "Play with other peoples' lexical variables")
(description "PadWalker is a module which allows you to inspect (and even
change) lexical variables in any subroutine which called you. It will only
@@ -5784,7 +5784,7 @@ is particularly useful for debugging.")
(build-system perl-build-system)
(native-inputs
`(("perl-test-warn" ,perl-test-warn)))
- (home-page "http://search.cpan.org/dist/Parallel-ForkManager")
+ (home-page "http://search.cpan.org/dist/Parallel-ForkManager/")
(synopsis "Simple parallel processing fork manager")
(description "@code{Parallel::ForkManager} is intended for use in
operations that can be done in parallel where the number of
@@ -5805,7 +5805,7 @@ processes to be forked off should be limited.")
(base32
"0v67sx93yhn7xa0nh9mnbf8mixf54czk6wzrjsp6dzzr5hzyrw9h"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Params-Util")
+ (home-page "http://search.cpan.org/dist/Params-Util/")
(synopsis "Simple, compact and correct param-checking functions")
(description
"Params::Util provides a basic set of importable functions that makes
@@ -5831,7 +5831,7 @@ checking parameters easier.")
("perl-test-requires" ,perl-test-requires)))
(propagated-inputs
`(("perl-module-implementation" ,perl-module-implementation)))
- (home-page "http://search.cpan.org/dist/Params-Validate")
+ (home-page "http://search.cpan.org/dist/Params-Validate/")
(synopsis "Validate method/function parameters")
(description "The Params::Validate module allows you to validate method or
function call parameters to an arbitrary level of specificity.")
@@ -5880,7 +5880,7 @@ defaults, optional parameters, and extra \"slurpy\" parameters.")
(base32
"078ycyn8pw3rba4k3qwcqrqfcym5c1pivymwa0bvs9sab45j4iwy"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/PAR-Dist")
+ (home-page "http://search.cpan.org/dist/PAR-Dist/")
(synopsis "Create and manipulate PAR distributions")
(description "PAR::Dist is a toolkit to create and manipulate PAR
distributions.")
@@ -5899,7 +5899,7 @@ distributions.")
(base32
"0w0i02y4z8465z050kml57mvhv7c5gl8w8ivplhr3cms0zbaq87b"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/parent")
+ (home-page "http://search.cpan.org/dist/parent/")
(synopsis "Establish an ISA relationship with base classes at compile time")
(description "Allows you to both load one or more modules, while setting
up inheritance from those modules at the same time.")
@@ -5919,7 +5919,7 @@ up inheritance from those modules at the same time.")
"1viaj8jyshcj135la0kgfgzalaw06xnbsg9h54jx09v1342v69lj"))))
(build-system perl-build-system)
(native-inputs `(("perl-module-build" ,perl-module-build)))
- (home-page "http://search.cpan.org/dist/Path-Class")
+ (home-page "http://search.cpan.org/dist/Path-Class/")
(synopsis "Path specification manipulation")
(description "Path::Class is a module for manipulation of file and
directory specifications in a cross-platform manner.")
@@ -5944,7 +5944,7 @@ directory specifications in a cross-platform manner.")
;; ("perl-test-mockrandom" ,perl-test-mockrandom)))
(inputs
`(("perl-unicode-utf8" ,perl-unicode-utf8)))
- (home-page "http://search.cpan.org/dist/Path-Tiny")
+ (home-page "http://search.cpan.org/dist/Path-Tiny/")
(synopsis "File path utility")
(description "This module provides a small, fast utility for working
with file paths.")
@@ -5966,7 +5966,7 @@ with file paths.")
(native-inputs
`(("perl-test-exception" ,perl-test-exception)))
(home-page
- "http://search.cpan.org/dist/PerlIO-utf8_strict")
+ "http://search.cpan.org/dist/PerlIO-utf8_strict/")
(synopsis "Fast and correct UTF-8 IO")
(description "@code{PerlIO::utf8_strict} provides a fast and correct UTF-8
PerlIO layer. Unlike Perl's default @code{:utf8} layer it checks the input
@@ -5988,7 +5988,7 @@ for correctness.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-devel-symdump" ,perl-devel-symdump)))
- (home-page "http://search.cpan.org/dist/Pod-Coverage")
+ (home-page "http://search.cpan.org/dist/Pod-Coverage/")
(synopsis "Check for comprehensive documentation of a module")
(description "This module provides a mechanism for determining if the pod
for a given module is comprehensive.")
@@ -6006,7 +6006,7 @@ for a given module is comprehensive.")
(base32
"04705pcs31s71vpmnpfdy8ds0q700q4cs2dlyssyrdjbvx3ymq3l"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Pod-Simple/")
+ (home-page "http://search.cpan.org/dist/Pod-Simple//")
(synopsis "Parsing library for text in Pod format")
(description "Pod::Simple is a Perl library for parsing text in
the Pod (plain old documentation) markup language that is typically
@@ -6028,7 +6028,7 @@ used for writing documentation for Perl and for Perl modules.")
(build-system perl-build-system)
(native-inputs `(("perl-module-build" ,perl-module-build)))
(arguments `(#:tests? #f)) ;TODO: Timezone test failures
- (home-page "http://search.cpan.org/dist/POSIX-strftime-Compiler")
+ (home-page "http://search.cpan.org/dist/POSIX-strftime-Compiler/")
(synopsis "GNU C library compatible strftime for loggers and servers")
(description "POSIX::strftime::Compiler provides GNU C library compatible
strftime(3). But this module is not affected by the system locale. This
@@ -6053,7 +6053,7 @@ applications.")
"Probe::Perl provides methods for obtaining information about the
currently running perl interpreter. It originally began life as code in the
Module::Build project, but has been externalized here for general use.")
- (home-page (string-append "http://search.cpan.org/~kwilliams/"
+ (home-page (string-append "http://search.cpan.org/~kwilliams//"
"Probe-Perl-" version))
(license (package-license perl))))
@@ -6071,7 +6071,7 @@ Module::Build project, but has been externalized here for general use.")
"165zcf9lpijdpkx82za0g9rx8ckjnhipmcivdkyzshl8jmp1bl4v"))))
(build-system perl-build-system)
(native-inputs `(("perl-module-build" ,perl-module-build)))
- (home-page "http://search.cpan.org/dist/Readonly")
+ (home-page "http://search.cpan.org/dist/Readonly/")
(synopsis "Create read-only scalars, arrays, hashes")
(description "This module provides a facility for creating non-modifiable
variables in Perl. This is useful for configuration files, headers, etc. It
@@ -6092,7 +6092,7 @@ variables that should not be changed.")
(base32
"0l5dzbd71iclv8fdjk7685rq6pbfiiydh0n70br6g9l9iy2smr6f"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Ref-Util-XS")
+ (home-page "http://search.cpan.org/dist/Ref-Util-XS/")
(synopsis "XS implementation for Ref::Util")
(description "@code{Ref::Util::XS} is the XS implementation of
@code{Ref::Util}, which provides several functions to help identify references
@@ -6120,7 +6120,7 @@ balanced parentheses and brackets, delimited text (with escapes), integers and
floating-point numbers in any base (up to 36), comments in 44 languages,
offensive language, lists of any pattern, IPv4 addresses, URIs, and Zip
codes.")
- (home-page (string-append "http://search.cpan.org/~abigail/"
+ (home-page (string-append "http://search.cpan.org/~abigail//"
"Regexp-Common-" version))
;; Quad-licensed: Perl Artistic, Perl Artistic 2.0, X11, and BSD.
(license (list (package-license perl) x11 bsd-3))))
@@ -6138,7 +6138,7 @@ codes.")
(base32
"01n1cggiflsnp9f6adkcxzkc0qpgssz60cwnyyd8mzavh2ximr5a"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Regexp-Util")
+ (home-page "http://search.cpan.org/dist/Regexp-Util/")
(synopsis "Selection of general-utility regexp subroutines")
(description "This package provides a selection of regular expression
subroutines including @code{is_regexp}, @code{regexp_seen_evals},
@@ -6164,7 +6164,7 @@ and @code{deserialize_regexp}.")
("perl-test-fatal" ,perl-test-fatal)))
(propagated-inputs
`(("perl-class-method-modifiers" ,perl-class-method-modifiers)))
- (home-page "http://search.cpan.org/dist/Role-Tiny")
+ (home-page "http://search.cpan.org/dist/Role-Tiny/")
(synopsis "Roles, as a slice of Moose")
(description "Role::Tiny is a minimalist role composition tool.")
(license (package-license perl))))
@@ -6182,7 +6182,7 @@ and @code{deserialize_regexp}.")
(base32
"1vib54cp64dy3ic4n73skadp1pl4gn8s9qpxmzvi078dm3mpnbcw"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Safe-Isa")
+ (home-page "http://search.cpan.org/dist/Safe-Isa/")
(synopsis "Call isa, can, does, and DOES safely")
(description "This module allows you to call isa, can, does, and DOES
safely on things that may not be objects.")
@@ -6201,7 +6201,7 @@ safely on things that may not be objects.")
(base32
"1lsagnz6pli035zvx5c1x4qm9fabi773vns86yd8lzfpldhfv3sv"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Scope-Guard")
+ (home-page "http://search.cpan.org/dist/Scope-Guard/")
(synopsis "Lexically-scoped resource management")
(description "This module provides a convenient way to perform cleanup or
other forms of resource management at the end of a scope. It is particularly
@@ -6225,7 +6225,7 @@ collector.")
(base32
"07vyp0jpndcxkbyjk432nillxxk22wrmm2rs985y8ba96h3qig07"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Set-Infinite")
+ (home-page "http://search.cpan.org/dist/Set-Infinite/")
(synopsis "Infinite sets")
(description "Set::Infinite is a set theory module for infinite sets.")
(license (package-license perl))))
@@ -6246,7 +6246,7 @@ collector.")
(propagated-inputs
`(("perl-moose" ,perl-moose)
("perl-test-leaktrace" ,perl-test-leaktrace)))
- (home-page "http://search.cpan.org/dist/Set-Object")
+ (home-page "http://search.cpan.org/dist/Set-Object/")
(synopsis "Unordered collections of Perl Objects")
(description "Set::Object provides efficient sets, unordered collections
of Perl objects without duplicates for scalars and references.")
@@ -6265,7 +6265,7 @@ of Perl objects without duplicates for scalars and references.")
(base32
"07aiqkyi1p22drpcyrrmv7f8qq6fhrxh007achy2vryxyck1bp53"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Set-Scalar")
+ (home-page "http://search.cpan.org/dist/Set-Scalar/")
(synopsis "Set operations for Perl")
(description "The first priority of Set::Scalar is to be a convenient
interface to sets (as in: unordered collections of Perl scalars). While not
@@ -6286,7 +6286,7 @@ compact.")
(base32
"1kqs10s2plj6c96srk0j8d7xj8dxk1704r7mck8rqk09mg7lqspd"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Sort-Key")
+ (home-page "http://search.cpan.org/dist/Sort-Key/")
(synopsis "Sort arrays by one or multiple calculated keys")
(description "This Perl module provides various functions to quickly sort
arrays by one or multiple calculated keys.")
@@ -6313,7 +6313,7 @@ arrays by one or multiple calculated keys.")
("perl-role-tiny" ,perl-role-tiny)
("perl-test-fatal" ,perl-test-fatal)
("perl-test-needs" ,perl-test-needs)))
- (home-page "http://search.cpan.org/dist/Specio/")
+ (home-page "http://search.cpan.org/dist/Specio//")
(synopsis "Classes for representing type constraints and coercion")
(description "The Specio distribution provides classes for representing type
constraints and coercion, along with syntax sugar for declaring them. Note that
@@ -6337,7 +6337,7 @@ coerce values to that type.")
(base32
"18qxshrjh0ibpzjm2314157mxlibh3smyg64nr4mq990hh564n4g"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Spiffy")
+ (home-page "http://search.cpan.org/dist/Spiffy/")
(synopsis "Spiffy Perl Interface Framework For You")
(description "Spiffy is a framework and methodology for doing object
oriented (OO) programming in Perl. Spiffy combines the best parts of
@@ -6360,7 +6360,7 @@ other OO languages like Python, Ruby, Java and Perl 6.")
(base32
"0fs2n9zw6isfkha2kbqrvl9mwg572x1x0jlfaps0qsyynn846bcv"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Stream-Buffered")
+ (home-page "http://search.cpan.org/dist/Stream-Buffered/")
(synopsis "Temporary buffer to save bytes")
(description "Stream::Buffered is a buffer class to store arbitrary length
of byte strings and then get a seekable filehandle once everything is
@@ -6381,7 +6381,7 @@ on the length of the size.")
(base32
"1bmpv8wr9jbc1lfj634xhq3y42nm28hh01jfsyzxhqhqf6dkdz59"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/strictures")
+ (home-page "http://search.cpan.org/dist/strictures/")
(synopsis "Turn on strict and make all warnings fatal")
(description "Strictures turns on strict and make all warnings fatal when
run from within a source-controlled directory.")
@@ -6410,7 +6410,7 @@ run from within a source-controlled directory.")
(string-append (getcwd) ":"
(getenv "PERL5LIB")))
#t)))))
- (home-page "http://search.cpan.org/dist/String-CamelCase")
+ (home-page "http://search.cpan.org/dist/String-CamelCase/")
(synopsis "Camelcase and de-camelcase")
(description "This module may be used to convert from under_score text to
CamelCase and back again.")
@@ -6431,7 +6431,7 @@ CamelCase and back again.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-sub-exporter" ,perl-sub-exporter)))
- (home-page "http://search.cpan.org/dist/String-RewritePrefix")
+ (home-page "http://search.cpan.org/dist/String-RewritePrefix/")
(synopsis "Rewrite strings based on a set of known prefixes")
(description "This module allows you to rewrite strings based on a set of
known prefixes.")
@@ -6451,7 +6451,7 @@ known prefixes.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-unicode-linebreak" ,perl-unicode-linebreak)))
- (home-page "http://search.cpan.org/dist/String-Print")
+ (home-page "http://search.cpan.org/dist/String-Print/")
(synopsis "String printing alternatives to printf")
(description
"This module inserts values into (translated) strings. It provides
@@ -6476,7 +6476,7 @@ a functional interface.")
(propagated-inputs
`(("perl-data-optlist" ,perl-data-optlist)
("perl-params-util" ,perl-params-util)))
- (home-page "http://search.cpan.org/dist/Sub-Exporter")
+ (home-page "http://search.cpan.org/dist/Sub-Exporter/")
(synopsis "Sophisticated exporter for custom-built routines")
(description
"Sub::Exporter provides a sophisticated alternative to Exporter.pm for
@@ -6497,7 +6497,7 @@ custom-built routines.")
"01kwzbqwdhvadpphnczid03nlyj0h4cxaq3m3v2401bckkkcc606"))))
(build-system perl-build-system)
(native-inputs `(("perl-sub-exporter" ,perl-sub-exporter)))
- (home-page "http://search.cpan.org/dist/Sub-Exporter-Progressive")
+ (home-page "http://search.cpan.org/dist/Sub-Exporter-Progressive/")
(synopsis "Only use Sub::Exporter if you need it")
(description "Sub::Exporter is an incredibly powerful module, but with
that power comes great responsibility, as well as some runtime penalties.
@@ -6520,7 +6520,7 @@ renaming exports, if they try to use them.")
(base32
"087fjcg6w576w47i1slj6mjfd3gl1b0airgddmn3prn0nff6nn2m"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Sub-Identify")
+ (home-page "http://search.cpan.org/dist/Sub-Identify/")
(synopsis "Retrieve names of code references")
(description "Sub::Identify allows you to retrieve the real name of code
references.")
@@ -6541,7 +6541,7 @@ references.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-importer" ,perl-importer)))
- (home-page "http://search.cpan.org/dist/Sub-Info/")
+ (home-page "http://search.cpan.org/dist/Sub-Info//")
(synopsis "Tool to inspect subroutines")
(description "This package provides tools for inspecting subroutines
in Perl.")
@@ -6561,7 +6561,7 @@ in Perl.")
(base32
"03zgk1yh128gciyx3q77zxzxg9kf8yy2gm46gdxqi24mcykngrb1"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Sub-Install")
+ (home-page "http://search.cpan.org/dist/Sub-Install/")
(synopsis "Install subroutines into packages easily")
(description
"Sub::Install makes it easy to install subroutines into packages without
@@ -6584,7 +6584,7 @@ can see them.")
(build-system perl-build-system)
(native-inputs
`(("perl-devel-checkbin" ,perl-devel-checkbin)))
- (home-page "http://search.cpan.org/dist/Sub-Name")
+ (home-page "http://search.cpan.org/dist/Sub-Name/")
(synopsis "(Re)name a sub")
(description "Assigns a new name to referenced sub. If package
specification is omitted in the name, then the current package is used. The
@@ -6604,7 +6604,7 @@ return value is the sub.")
(base32
"1yzxqsim8vpavzqm2wfksh8dpmy6qbr9s3hdqqicp38br3lzd4qg"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Sub-Uplevel")
+ (home-page "http://search.cpan.org/dist/Sub-Uplevel/")
(synopsis "Apparently run a function in a higher stack frame")
(description "Like Tcl's uplevel() function, but not quite so dangerous.
The idea is just to fool caller(). All the really naughty bits of Tcl's
@@ -6624,7 +6624,7 @@ uplevel() are avoided.")
(base32
"12cbncsfxbwg1w3p1qmymfbqdb22kmyajxzdnxnxbq5xjl6yncha"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/SVG")
+ (home-page "http://search.cpan.org/dist/SVG/")
(synopsis "Perl extension for generating SVG documents")
(description "SVG is a Perl module which generates a nested data structure
containing the DOM representation of an SVG (Scalable Vector Graphics) image.
@@ -6646,7 +6646,7 @@ animation content.")
(base32
"0xbdjdgzfj9zwa4j3ipr8bfk7bcici4hk89hq5d27rhg2isljd9i"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Switch")
+ (home-page "http://search.cpan.org/dist/Switch/")
(synopsis "Switch statement for Perl")
(description "Switch is a Perl module which implements a generalized case
mechanism. The module augments the standard Perl syntax with two new
@@ -6669,7 +6669,7 @@ statements: @code{switch} and @code{case}.")
(description
"Sys::CPU is a module for counting the number of CPUs on a system, and
determining their type and clock speed.")
- (home-page (string-append "http://search.cpan.org/~mzsanford/"
+ (home-page (string-append "http://search.cpan.org/~mzsanford//"
"Sys-CPU-" version))
(license (package-license perl))))
@@ -6687,7 +6687,7 @@ determining their type and clock speed.")
"1jv5n8jv48c1p8svjsigyxndv1ygsq8wgwj9c7ypx1vaf3rns679"))))
(build-system perl-build-system)
(arguments `(#:tests? #f)) ;no `hostname' during build
- (home-page "http://search.cpan.org/dist/Sys-Hostname-Long")
+ (home-page "http://search.cpan.org/dist/Sys-Hostname-Long/")
(synopsis "Get full hostname in Perl")
(description "Sys::Hostname::Long tries very hard to get the full hostname
of a system.")
@@ -6715,7 +6715,7 @@ of a system.")
(string-append (getcwd) ":"
(getenv "PERL5LIB")))
#t)))))
- (home-page "http://search.cpan.org/dist/Task-Weaken")
+ (home-page "http://search.cpan.org/dist/Task-Weaken/")
(synopsis "Ensure that a platform has weaken support")
(description "One recurring problem in modules that use Scalar::Util's
weaken function is that it is not present in the pure-perl variant. If
@@ -6741,7 +6741,7 @@ error encouraging the user to seek support.")
(propagated-inputs
`(("perl-appconfig" ,perl-appconfig)
("perl-test-leaktrace" ,perl-test-leaktrace)))
- (home-page "http://search.cpan.org/dist/Template-Toolkit")
+ (home-page "http://search.cpan.org/dist/Template-Toolkit/")
(synopsis "Template processing system for Perl")
(description "The Template Toolkit is a collection of modules which
implement an extensible template processing system. It was originally
@@ -6765,7 +6765,7 @@ documents: HTML, XML, POD, PostScript, LaTeX, and so on.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-template-toolkit" ,perl-template-toolkit)))
- (home-page "http://search.cpan.org/dist/Template-Timer")
+ (home-page "http://search.cpan.org/dist/Template-Timer/")
(synopsis "Profiling for Template Toolkit")
(description "Template::Timer provides inline profiling of the template
processing in Perl code.")
@@ -6786,7 +6786,7 @@ processing in Perl code.")
(build-system perl-build-system)
(native-inputs
`(("perl-module-install" ,perl-module-install)))
- (home-page "http://search.cpan.org/dist/Term-Encoding")
+ (home-page "http://search.cpan.org/dist/Term-Encoding/")
(synopsis "Detect encoding of the current terminal")
(description "Term::Encoding is a simple module to detect the encoding of
the current terminal expects in various ways.")
@@ -6811,7 +6811,7 @@ the current terminal expects in various ways.")
(propagated-inputs
`(("perl-class-methodmaker" ,perl-class-methodmaker)
("perl-term-readkey" ,perl-term-readkey)))
- (home-page "http://search.cpan.org/dist/Term-ProgressBar")
+ (home-page "http://search.cpan.org/dist/Term-ProgressBar/")
(synopsis "Progress meter on a standard terminal")
(description "Term::ProgressBar provides a simple progress bar on the
terminal, to let the user know that something is happening, roughly how much
@@ -6835,7 +6835,7 @@ stuff has been done, and maybe an estimate at how long remains.")
`(("perl-io-interactive" ,perl-io-interactive)
("perl-term-progressbar" ,perl-term-progressbar)
("perl-test-mockobject" ,perl-test-mockobject)))
- (home-page "http://search.cpan.org/dist/Term-ProgressBar-Quiet")
+ (home-page "http://search.cpan.org/dist/Term-ProgressBar-Quiet/")
(synopsis "Progress meter if run interactively")
(description "Term::ProgressBar is a wonderful module for showing progress
bars on the terminal. This module acts very much like that module when it is
@@ -6858,7 +6858,7 @@ a cron job) then it does not show the progress bar.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-term-progressbar-quiet" ,perl-term-progressbar-quiet)))
- (home-page "http://search.cpan.org/dist/Term-ProgressBar-Simple")
+ (home-page "http://search.cpan.org/dist/Term-ProgressBar-Simple/")
(synopsis "Simple progress bars")
(description "Term::ProgressBar::Simple tells you how much work has been
done, how much is left to do, and estimate how long it will take.")
@@ -6877,7 +6877,7 @@ done, how much is left to do, and estimate how long it will take.")
(base32
"0hdj5mldpj3pyprd4hbbalfx9yjgi5p59gg2ixk9808f5v7q74sa"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/TermReadKey")
+ (home-page "http://search.cpan.org/dist/TermReadKey/")
(synopsis "Simple terminal control")
(description "This module, ReadKey, provides ioctl control for terminals
so the input modes can be changed (thus allowing reads of a single character
@@ -6901,7 +6901,7 @@ screen size, and retrieval/modification of the control characters.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-importer" ,perl-importer)))
- (home-page "http://search.cpan.org/dist/Term-Table/")
+ (home-page "http://search.cpan.org/dist/Term-Table//")
(synopsis "Format a header and rows into a table")
(description "This module is able to generically format rows of data
into tables.")
@@ -6950,7 +6950,7 @@ etc built upon the Test2 testing library.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-test2-bundle-extended" ,perl-test2-bundle-extended)))
- (home-page "http://search.cpan.org/dist/Test2-Plugin-NoWarnings/")
+ (home-page "http://search.cpan.org/dist/Test2-Plugin-NoWarnings//")
(synopsis "Fail if tests warn")
(description "Loading this plugin causes your tests to fail if there any
warnings while they run. Each warning generates a new failing test and the
@@ -6976,7 +6976,7 @@ warning content is outputted via diag.")
(propagated-inputs
`(("perl-spiffy" ,perl-spiffy)
("perl-test-deep" ,perl-test-deep)))
- (home-page "http://search.cpan.org/dist/Test-Base")
+ (home-page "http://search.cpan.org/dist/Test-Base/")
(synopsis "Data-driven testing framework for Perl")
(description "Test::Base gives a way to trivially write your own test
framework base class. It concentrates on offering reusable data driven
@@ -7004,7 +7004,7 @@ patterns, so that you can write tests with a minimum of code.")
`(("perl-module-runtime" ,perl-module-runtime)
("perl-mro-compat" ,perl-mro-compat)
("perl-try-tiny" ,perl-try-tiny)))
- (home-page "http://search.cpan.org/dist/Test-Class")
+ (home-page "http://search.cpan.org/dist/Test-Class/")
(synopsis "Easily create test classes in an xUnit/JUnit style")
(description "@code{Test::Class} provides a simple way of creating classes
and objects to test your code in an xUnit style.
@@ -7037,7 +7037,7 @@ Built using @code{Test::Builder}, it was designed to work with other
("perl-module-runtime" ,perl-module-runtime)
("perl-try-tiny" ,perl-try-tiny)
("perl-mro-compat" ,perl-mro-compat)))
- (home-page "http://search.cpan.org/dist/Test-Class-Most")
+ (home-page "http://search.cpan.org/dist/Test-Class-Most/")
(synopsis "Test classes the easy way")
(description "@code{Test::Class::Most} provides some more convenience when
using @code{Test::Class}.")
@@ -7070,7 +7070,7 @@ using @code{Test::Class}.")
("perl-sub-exporter" ,perl-sub-exporter)
("perl-file-find-rule" ,perl-file-find-rule)
("perl-file-find-rule-perl" ,perl-file-find-rule-perl)))
- (home-page "http://search.cpan.org/dist/Test-CleanNamespaces")
+ (home-page "http://search.cpan.org/dist/Test-CleanNamespaces/")
(synopsis "Check for uncleaned imports")
(description "This module lets you check your module's namespaces for
imported functions you might have forgotten to remove with
@@ -7098,7 +7098,7 @@ called as methods, which usually isn't want you want.")
("perl-test-pod" ,perl-test-pod)
("perl-test-pod-coverage" ,perl-test-pod-coverage)))
(home-page
- "http://search.cpan.org/dist/Test-CPAN-Meta")
+ "http://search.cpan.org/dist/Test-CPAN-Meta/")
(synopsis "Validate your CPAN META.yml files")
(description
"This module was written to ensure that a META.yml file meets the
@@ -7126,7 +7126,7 @@ specification.")
(inputs
`(("perl-json" ,perl-json)))
(home-page
- "http://search.cpan.org/dist/Test-CPAN-Meta-JSON")
+ "http://search.cpan.org/dist/Test-CPAN-Meta-JSON/")
(synopsis "Validate your CPAN META.json files")
(description
"This module was written to ensure that a META.json file meets the
@@ -7153,7 +7153,7 @@ specification.")
that the values match, that arrays and hashes have the same elements and that
references are blessed into the correct class. It also handles circular data
structures without getting caught in an infinite loop.")
- (home-page "http://search.cpan.org/dist/Test-Deep")
+ (home-page "http://search.cpan.org/dist/Test-Deep/")
(license gpl1+))) ; or "Artistic License"
(define-public perl-test-differences
@@ -7174,7 +7174,7 @@ structures without getting caught in an infinite loop.")
(propagated-inputs
`(("perl-text-diff" ,perl-text-diff)
("perl-capture-tiny" ,perl-capture-tiny)))
- (home-page "http://search.cpan.org/dist/Test-Differences")
+ (home-page "http://search.cpan.org/dist/Test-Differences/")
(synopsis "Test strings and data structures and show differences")
(description "This module exports three test functions and four diff-style
functions.")
@@ -7196,7 +7196,7 @@ functions.")
"1ncql08cizhicbxwd753b4czns8nlcnlw0zfjcfrbdd41x4j6hqr"))))
(build-system perl-build-system)
(native-inputs `(("perl-test-exception" ,perl-test-exception)))
- (home-page "http://search.cpan.org/dist/Test-Directory")
+ (home-page "http://search.cpan.org/dist/Test-Directory/")
(synopsis "Perl extension for maintaining test directories")
(description "Testing code can involve making sure that files are created
and deleted as expected. Doing this manually can be error prone, as it's easy
@@ -7222,7 +7222,7 @@ files, as well as to verify that there are no missing or unknown files.")
"0l3bxpsw0x7j9nclizcp53mnf9wny25dmg2iglfhzgnk0xfpwzwf"))))
(build-system perl-build-system)
(home-page
- "http://search.cpan.org/dist/Test-EOL")
+ "http://search.cpan.org/dist/Test-EOL/")
(synopsis
"Check the correct line endings in your project")
(description
@@ -7247,7 +7247,7 @@ and/or windows line endings in your perl code.")
`(("perl-module-build" ,perl-module-build)))
(propagated-inputs
`(("perl-sub-uplevel" ,perl-sub-uplevel)))
- (home-page "http://search.cpan.org/dist/Test-Exception")
+ (home-page "http://search.cpan.org/dist/Test-Exception/")
(synopsis "Test exception based code")
(description "This module provides a few convenience methods for testing
exception based code. It is built with Test::Builder and plays happily with
@@ -7268,7 +7268,7 @@ Test::More and friends.")
"1c6bs68mss4q7cyapkv2c0jn66i21050p0faxf3s3417gdffzp5w"))))
(build-system perl-build-system)
(propagated-inputs `(("perl-try-tiny" ,perl-try-tiny)))
- (home-page "http://search.cpan.org/dist/Test-Fatal")
+ (home-page "http://search.cpan.org/dist/Test-Fatal/")
(synopsis "Simple helpers for testing code with exceptions")
(description "Test::Fatal is an alternative to the popular
Test::Exception. It does much less, but should allow greater flexibility in
@@ -7319,7 +7319,7 @@ for testing.")
(propagated-inputs
`(("perl-algorithm-diff" ,perl-algorithm-diff)
("perl-text-diff" ,perl-text-diff)))
- (home-page "http://search.cpan.org/dist/Test-Files")
+ (home-page "http://search.cpan.org/dist/Test-Files/")
(synopsis "Ease software testing with files and directories")
(description "This library provides functions to enable testing of files
and directories. For instance, the @code{file_ok} helper can test whether the
@@ -7351,7 +7351,7 @@ contents of a file is equal to a particular string.")
(string-append "#!" (assoc-ref inputs "perl")
"/bin/perl")))
#t)))))
- (home-page "http://search.cpan.org/dist/Test-Harness")
+ (home-page "http://search.cpan.org/dist/Test-Harness/")
(synopsis "Run Perl standard test scripts with statistics")
(description "Simple test harness which allows tests to be run and results
automatically aggregated and output to STDOUT.")
@@ -7370,7 +7370,7 @@ automatically aggregated and output to STDOUT.")
(base32
"00z4hcjra5nk700f3fgpy8fs036d7ry7glpn8g3wh7jzj7nrw22z"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Test-LeakTrace")
+ (home-page "http://search.cpan.org/dist/Test-LeakTrace/")
(synopsis "Traces memory leaks in Perl")
(description "Test::LeakTrace provides several functions that trace memory
leaks. This module scans arenas, the memory allocation system, so it can
@@ -7390,7 +7390,7 @@ detect any leaked SVs in given blocks.")
(base32
"0kwp7rfr1i2amz4ckigkv13ah7jr30q6l5k4wk0vxl84myg39i5b"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Test-LongString")
+ (home-page "http://search.cpan.org/dist/Test-LongString/")
(synopsis "Tests strings for equality, with more helpful failures")
(description "This module provides some drop-in replacements for the
string comparison functions of Test::More, but which are more suitable when
@@ -7412,7 +7412,7 @@ you test against long strings.")
(native-inputs
`(("perl-test-pod" ,perl-test-pod)
("perl-test-pod-coverage" ,perl-test-pod-coverage)))
- (home-page "http://search.cpan.org/dist/Test-Manifest")
+ (home-page "http://search.cpan.org/dist/Test-Manifest/")
(synopsis "Interact with a t/test_manifest file")
(description "@code{Test::Manifest} overrides the default test file order. Instead of
running all of the t/*.t files in ASCII-betical order, it looks in the t/test_manifest
@@ -7440,7 +7440,7 @@ It constructs the right value for the build system to do the right thing.")
(propagated-inputs
`(("perl-devel-cycle" ,perl-devel-cycle)))
(home-page
- "http://search.cpan.org/dist/Test-Memory-Cycle")
+ "http://search.cpan.org/dist/Test-Memory-Cycle/")
(synopsis
"Verifies code hasn't left circular references")
(description
@@ -7478,7 +7478,7 @@ memory_cycle_ok( $object );
("perl-universal-can" ,perl-universal-can)
("perl-universal-isa" ,perl-universal-isa)))
(arguments `(#:tests? #f)) ;TODO: tests require perl-cgi
- (home-page "http://search.cpan.org/dist/Test-MockObject")
+ (home-page "http://search.cpan.org/dist/Test-MockObject/")
(synopsis "Emulate troublesome interfaces in Perl")
(description "Test::MockObject allows you to create objects that conform
to particular interfaces with very little code. You don't have to reimplement
@@ -7498,7 +7498,7 @@ the behavior, just the input and the output.")
(base32
"0yrqmjg33akannwz2f99rfm7dvvxpzsdj23lsvlvfi4qslrlqfvw"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Test-MockTime")
+ (home-page "http://search.cpan.org/dist/Test-MockTime/")
(synopsis "Replaces actual time with simulated time")
(description "This module was created to enable test suites to test code
at specific points in time. Specifically it overrides localtime, gmtime and
@@ -7526,7 +7526,7 @@ to gmtime,time or localtime.")
("perl-exception-class" ,perl-exception-class)
("perl-test-deep" ,perl-test-deep)
("perl-test-exception" ,perl-test-exception)))
- (home-page "http://search.cpan.org/dist/Test-Most")
+ (home-page "http://search.cpan.org/dist/Test-Most/")
(synopsis "Most commonly needed test functions and features")
(description "This module provides the most commonly used testing
functions, along with automatically turning on strict and warning and gives a
@@ -7549,7 +7549,7 @@ bit more fine-grained control over test suites.")
"16gkgpmr9hvkz382iaqd3500269lk2d44fqaw3dsrvc66nc36kss"))))
(build-system perl-build-system)
(home-page
- "http://search.cpan.org/dist/Test-Needs")
+ "http://search.cpan.org/dist/Test-Needs/")
(synopsis
"Skip tests when modules not available")
(description "@code{Test::Needs} allows you to skip test scripts if
@@ -7577,7 +7577,7 @@ If used in a subtest, the remainder of the subtest will be skipped.")
"127kpl1va267qar2ia4c22xb96jby2jqnda3sj5pjgmxg8si26cg"))))
(build-system perl-build-system)
(home-page
- "http://search.cpan.org/dist/Test-NoTabs")
+ "http://search.cpan.org/dist/Test-NoTabs/")
(synopsis
"Check the presence of tabs in your project")
(description
@@ -7605,7 +7605,7 @@ stored. It automatically adds an extra test that will run when your script
ends to check that there were no warnings. If there were any warnings, the
test will fail and output diagnostics of where, when and what the warning was,
including a stack trace of what was going on when it occurred.")
- (home-page (string-append "http://search.cpan.org/~adamk/"
+ (home-page (string-append "http://search.cpan.org/~adamk//"
"Test-NoWarnings-" version))
(license lgpl2.1)))
@@ -7621,7 +7621,7 @@ including a stack trace of what was going on when it occurred.")
(base32
"0jfhzhpzkc23mkrlbnv085ykpfncmy99hvppbzjnrpvgks8k0m2k"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Test-Number-Delta")
+ (home-page "http://search.cpan.org/dist/Test-Number-Delta/")
(synopsis
"Compare the difference between numbers against a given tolerance")
(description
@@ -7653,7 +7653,7 @@ usually called epsilon. This module provides such a function for use with
"Test::Output provides a simple interface for testing output sent to
STDOUT or STDERR. A number of different utilities are included to try and be
as flexible as possible to the tester.")
- (home-page (string-append "http://search.cpan.org/~bdfoy/"
+ (home-page (string-append "http://search.cpan.org/~bdfoy//"
"Test-Output-" version))
(license (package-license perl))))
@@ -7671,7 +7671,7 @@ as flexible as possible to the tester.")
"1hmwwhabyng4jrnll926b4ab73r40w3pfchlrvs0yx6kh6kwwy14"))))
(build-system perl-build-system)
(native-inputs `(("perl-module-build" ,perl-module-build)))
- (home-page "http://search.cpan.org/dist/Test-Pod")
+ (home-page "http://search.cpan.org/dist/Test-Pod/")
(synopsis "Check for POD errors in files")
(description "Check POD files for errors or warnings in a test file, using
Pod::Simple to do the heavy lifting.")
@@ -7692,7 +7692,7 @@ Pod::Simple to do the heavy lifting.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-pod-coverage" ,perl-pod-coverage)))
- (home-page "http://search.cpan.org/dist/Test-Pod-Coverage")
+ (home-page "http://search.cpan.org/dist/Test-Pod-Coverage/")
(synopsis "Check for pod coverage")
(description "This module adds a test to your Perl distribution which
checks for pod coverage of all appropriate files.")
@@ -7711,7 +7711,7 @@ checks for pod coverage of all appropriate files.")
(base32
"08c29m0dn34384mmmpqqlbb899zpbkkc01c2lsp31mch1frv9cg7"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Test-Requires")
+ (home-page "http://search.cpan.org/dist/Test-Requires/")
(synopsis "Checks to see if the module can be loaded")
(description "Test::Requires checks to see if the module can be loaded.
If this fails, then rather than failing tests this skips all tests.")
@@ -7737,7 +7737,7 @@ If this fails, then rather than failing tests this skips all tests.")
"The intent of the Test::Script module is to provide a series of basic
tests for 80% of the testing you will need to do for scripts in the script (or
bin as is also commonly used) paths of your Perl distribution.")
- (home-page "http://search.cpan.org/dist/Test-Script")
+ (home-page "http://search.cpan.org/dist/Test-Script/")
(license (package-license perl))))
(define-public perl-test-sharedfork
@@ -7755,7 +7755,7 @@ bin as is also commonly used) paths of your Perl distribution.")
(build-system perl-build-system)
(native-inputs
`(("perl-test-requires" ,perl-test-requires)))
- (home-page "http://search.cpan.org/dist/Test-SharedFork")
+ (home-page "http://search.cpan.org/dist/Test-SharedFork/")
(synopsis "Fork test in Perl")
(description "Test::SharedFork is a utility module for Test::Builder. It
makes fork(2) safe to use in test cases.")
@@ -7776,7 +7776,7 @@ makes fork(2) safe to use in test cases.")
(synopsis "Basic utilities for writing tests")
(description
"Test::Simple contains basic utilities for writing tests.")
- (home-page (string-append "http://search.cpan.org/~exodist/"
+ (home-page (string-append "http://search.cpan.org/~exodist//"
"Test-Simple-" version))
(license (package-license perl))))
@@ -7796,7 +7796,7 @@ makes fork(2) safe to use in test cases.")
(description
"Test::Tester allows testing of test modules based on Test::Builder with
a minimum of effort.")
- (home-page (string-append "http://search.cpan.org/~fdaly/"
+ (home-page (string-append "http://search.cpan.org/~fdaly//"
"Test-Tester-" version))
;; "Under the same license as Perl itself"
(license (package-license perl))))
@@ -7820,7 +7820,7 @@ a minimum of effort.")
(propagated-inputs
`(("perl-test-tester" ,perl-test-tester)
("perl-data-dump" ,perl-data-dump)))
- (home-page "http://search.cpan.org/dist/Test-Trap")
+ (home-page "http://search.cpan.org/dist/Test-Trap/")
(synopsis "Trap exit codes, exceptions, output, and so on")
(description "This module is primarily (but not exclusively) for use in
test scripts: A block eval configurable and extensible but by default trapping
@@ -7843,7 +7843,7 @@ from boxed blocks of test code.")
(build-system perl-build-system)
(native-inputs
`(("perl-module-install" ,perl-module-install)))
- (home-page "http://search.cpan.org/dist/Test-utf8")
+ (home-page "http://search.cpan.org/dist/Test-utf8/")
(synopsis "UTF-8 testing in Perl")
(description "This module is a collection of tests useful for dealing with
UTF-8 strings in Perl. This module has two types of tests: The validity tests
@@ -7866,7 +7866,7 @@ will check that string has a given set of characteristics.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-sub-uplevel" ,perl-sub-uplevel)))
- (home-page "http://search.cpan.org/dist/Test-Warn")
+ (home-page "http://search.cpan.org/dist/Test-Warn/")
(synopsis "Perl extension to test methods for warnings")
(description "This module provides a few convenience methods for testing
warning based code.")
@@ -7885,7 +7885,7 @@ warning based code.")
(base32
"024srkwjckp15dxkni9lb1hc8bg4xwc52zz0iich8rv1nnqnhaxf"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Test-Warnings")
+ (home-page "http://search.cpan.org/dist/Test-Warnings/")
(synopsis "Test for warnings and the lack of them")
(description "This module is intended to be used as a drop-in replacement
for Test::NoWarnings. It also adds an extra test, but runs this test before
@@ -7907,7 +7907,7 @@ plan, or not, and things will still Just Work.")
(base32
"0zwc2dk5srd02j4p049w77m89iw5nbff381rmhcbaz8x2w5kdhz2"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Test-Without-Module")
+ (home-page "http://search.cpan.org/dist/Test-Without-Module/")
(synopsis "Test fallback behaviour in absence of modules")
(description "This module allows you to deliberately hide modules from a
program even though they are installed. This is mostly useful for testing
@@ -7935,7 +7935,7 @@ installed.")
`(("perl-data-tumbler" ,perl-data-tumbler)
("perl-file-homedir" ,perl-file-homedir)
("perl-module-pluggable" ,perl-module-pluggable)))
- (home-page "http://search.cpan.org/dist/Test-WriteVariants")
+ (home-page "http://search.cpan.org/dist/Test-WriteVariants/")
(synopsis "Dynamic generation of tests")
(description "The Test::WriteVariants module provides for the dynamic
generation of tests in nested combinations of contexts.")
@@ -7956,7 +7956,7 @@ generation of tests in nested combinations of contexts.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-test-base" ,perl-test-base)))
- (home-page "http://search.cpan.org/dist/Test-YAML")
+ (home-page "http://search.cpan.org/dist/Test-YAML/")
(synopsis "Testing module for YAML implementations")
(description "Test::YAML is a subclass of Test::Base with YAML specific
support.")
@@ -7976,7 +7976,7 @@ support.")
"0a6zkchc0apvzkch6z18cx6h97xfiv50r7n4xhg90x8dvk75qzcs"))))
(build-system perl-build-system)
(native-inputs `(("perl-module-build" ,perl-module-build)))
- (home-page "http://search.cpan.org/dist/Text-Aligner")
+ (home-page "http://search.cpan.org/dist/Text-Aligner/")
(synopsis "Align text")
(description "Text::Aligner exports a single function, align(), which is
used to justify strings to various alignment styles.")
@@ -7995,7 +7995,7 @@ used to justify strings to various alignment styles.")
(base32
"1d3mba2sjpp044h16pkf231cksa34ripaz6rmgxp0ygpl917az57"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Text-Balanced")
+ (home-page "http://search.cpan.org/dist/Text-Balanced/")
(synopsis "Extract delimited text sequences from strings")
(description "The Text::Balanced module can be used to extract delimited
text sequences from strings.")
@@ -8014,7 +8014,7 @@ text sequences from strings.")
(base32
"05a1nayxv04n0hx7y3m8327ijm34k9nhngrbxl18zmgzpawqynww"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Text-CSV")
+ (home-page "http://search.cpan.org/dist/Text-CSV/")
(synopsis "Manipulate comma-separated values")
(description "Text::CSV provides facilities for the composition and
decomposition of comma-separated values. An instance of the Text::CSV class
@@ -8034,7 +8034,7 @@ can combine fields into a CSV string and parse a CSV string into fields.")
(base32
"06zlfbqrwbl0g2g3bhk6046yy5pf2rz80fzcp8aj47rnswz2yx5k"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Text-CSV_XS")
+ (home-page "http://search.cpan.org/dist/Text-CSV_XS/")
(synopsis "Rountines for manipulating CSV files")
(description "@code{Text::CSV_XS} provides facilities for the composition
and decomposition of comma-separated values. An instance of the
@@ -8059,7 +8059,7 @@ and escapes.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-algorithm-diff" ,perl-algorithm-diff)))
- (home-page "http://search.cpan.org/dist/Text-Diff")
+ (home-page "http://search.cpan.org/dist/Text-Diff/")
(synopsis "Perform diffs on files and record sets")
(description "Text::Diff provides a basic set of services akin to the GNU
diff utility. It is not anywhere near as feature complete as GNU diff, but it
@@ -8082,7 +8082,7 @@ generally slower on larger files.")
"0lr76wrsj8wcxrq4wi8z1640w4dmdbkznp06q744rg3g0bd238d5"))))
(build-system perl-build-system)
(native-inputs `(("perl-module-build" ,perl-module-build)))
- (home-page "http://search.cpan.org/dist/Text-Glob")
+ (home-page "http://search.cpan.org/dist/Text-Glob/")
(synopsis "Match globbing patterns against text")
(description "Text::Glob implements glob(3) style matching that can be
used to match against text, rather than fetching names from a file system. If
@@ -8106,7 +8106,7 @@ you want to do full file globbing use the File::Glob module instead.")
(native-inputs
`(("perl-module-build" ,perl-module-build)))
(home-page
- "http://search.cpan.org/dist/Text-NeatTemplate")
+ "http://search.cpan.org/dist/Text-NeatTemplate/")
(synopsis "Fast, middleweight template engine")
(description
"Text::NeatTemplate provides a simple, middleweight but fast
@@ -8127,7 +8127,7 @@ yet need more features than simple variable substitution.")
(base32
"0sh47svzz0wm993ywfgpn0fvhajl2sj5hcnf5zxjz02in6ihhjnb"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Text-Roman")
+ (home-page "http://search.cpan.org/dist/Text-Roman/")
(synopsis "Convert between Roman and Arabic algorisms")
(description "This package provides functions to convert between Roman and
Arabic algorisms. It supports both conventional Roman algorisms (which range
@@ -8148,7 +8148,7 @@ algorism to indicate multiplication by 1000.")
(base32
"15hpry9jwrf1vbjyk21s65rllxrdvp2fdzzv9gsvczggby2yyzfs"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Text-SimpleTable")
+ (home-page "http://search.cpan.org/dist/Text-SimpleTable/")
(synopsis "Simple ASCII tables")
(description "Text::SimpleTable draws simple ASCII tables.")
(license artistic2.0)))
@@ -8170,7 +8170,7 @@ algorism to indicate multiplication by 1000.")
`(("perl-module-build" ,perl-module-build)))
(propagated-inputs
`(("perl-text-aligner" ,perl-text-aligner)))
- (home-page "http://search.cpan.org/dist/Text-Table")
+ (home-page "http://search.cpan.org/dist/Text-Table/")
(synopsis "Organize Data in Tables")
(description "Text::Table renders plaintext tables.")
(license x11)))
@@ -8191,7 +8191,7 @@ algorism to indicate multiplication by 1000.")
"1z781cgz7wbn80lf3kqr2ad0pg6g1wlnim0822h8liw28k3l5msh"))))
(build-system perl-build-system)
(home-page
- "http://search.cpan.org/dist/Text-Template")
+ "http://search.cpan.org/dist/Text-Template/")
(synopsis
"Expand template text with embedded Perl")
(description
@@ -8214,7 +8214,7 @@ evaluate the little programs and replace them with their values.")
(base32
"1mnnq57amh0bs6z2ggkmgnn4hz8mqc9lfhr66xv2bsnlvhg7c7fb"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Text-Unidecode")
+ (home-page "http://search.cpan.org/dist/Text-Unidecode/")
(synopsis "Provide plain ASCII transliterations of Unicode text")
(description "Text::Unidecode provides a function, unidecode(...) that
takes Unicode data and tries to represent it in US-ASCII characters (i.e., the
@@ -8243,7 +8243,7 @@ system.")
`(("perl-devel-stacktrace" ,perl-devel-stacktrace)
("perl-module-runtime" ,perl-module-runtime)
("perl-moo" ,perl-moo)))
- (home-page "http://search.cpan.org/dist/Throwable")
+ (home-page "http://search.cpan.org/dist/Throwable/")
(synopsis "Role for classes that can be thrown")
(description "Throwable is a role for classes that are meant to be thrown
as exceptions to standard program flow.")
@@ -8282,7 +8282,7 @@ approximately follow the suggestions in the Perl Style Guide.")
(base32
"10g6kirf6jfaldckg98y4pl87vrm7grqlg6ymb7a9vhrznyn7qn6"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Tie-Cycle")
+ (home-page "http://search.cpan.org/dist/Tie-Cycle/")
(synopsis "Cycle through a list of values")
(description "You use @code{Tie::Cycle} to go through a list over and over
again. Once you get to the end of the list, you go back to the beginning.")
@@ -8302,7 +8302,7 @@ again. Once you get to the end of the list, you go back to the beginning.")
"0mmg9iyh42syal3z1p2pn9airq65yrkfs66cnqs9nz76jy60pfzs"))))
(build-system perl-build-system)
(native-inputs `(("perl-module-build" ,perl-module-build)))
- (home-page "http://search.cpan.org/dist/Tie-IxHash")
+ (home-page "http://search.cpan.org/dist/Tie-IxHash/")
(synopsis "Ordered associative arrays for Perl")
(description "This Perl module implements Perl hashes that preserve the
order in which the hash elements were added. The order is not affected when
@@ -8326,7 +8326,7 @@ operations can also be performed on the IxHash.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-test-simple" ,perl-test-simple)))
- (home-page "http://search.cpan.org/dist/Tie-ToObject")
+ (home-page "http://search.cpan.org/dist/Tie-ToObject/")
(synopsis "Tie to an existing Perl object")
(description "This class provides a tie constructor that returns the
object it was given as it's first argument. This way side effects of calling
@@ -8350,7 +8350,7 @@ $object->TIEHASH are avoided.")
`(("perl-module-install" ,perl-module-install)
("perl-test-pod" ,perl-test-pod)
("perl-test-pod-coverage" ,perl-test-pod-coverage)))
- (home-page "http://search.cpan.org/dist/Time-Duration")
+ (home-page "http://search.cpan.org/dist/Time-Duration/")
(synopsis "English expression of durations")
(description "This module provides functions for expressing durations in
rounded or exact terms.")
@@ -8373,7 +8373,7 @@ rounded or exact terms.")
`(("perl-time-duration" ,perl-time-duration)))
(propagated-inputs
`(("perl-exporter-lite" ,perl-exporter-lite)))
- (home-page "http://search.cpan.org/dist/Time-Duration-Parse")
+ (home-page "http://search.cpan.org/dist/Time-Duration-Parse/")
(synopsis "Parse time duration strings")
(description "Time::Duration::Parse is a module to parse human readable
duration strings like \"2 minutes\" and \"3 seconds\" to seconds.")
@@ -8392,7 +8392,7 @@ duration strings like \"2 minutes\" and \"3 seconds\" to seconds.")
(base32
"0jgvd6v93hlrcmy56yxbm4yrhzi8yvrq8c3xffpgh28af01wmb5j"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Time-Local")
+ (home-page "http://search.cpan.org/dist/Time-Local/")
(synopsis "Efficiently compute time from local and GMT time")
(description "This module provides functions that are the inverse of
built-in perl functions localtime() and gmtime(). They accept a date as a
@@ -8413,7 +8413,7 @@ the system epoch.")
(base32
"11lf54akr9nbivqkjrhvkmfdgkbhw85sq0q4mak56n6bf542bgbm"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/TimeDate")
+ (home-page "http://search.cpan.org/dist/TimeDate/")
(synopsis "Date parsing/formatting subroutines")
(description "This module provides routines for parsing date string into
time values and formatting dates into ASCII strings.")
@@ -8436,7 +8436,7 @@ time values and formatting dates into ASCII strings.")
`(("perl-module-build" ,perl-module-build)))
(propagated-inputs
`(("perl-timedate" ,perl-timedate))) ;For Date::Parse
- (home-page "http://search.cpan.org/dist/Time-Mock")
+ (home-page "http://search.cpan.org/dist/Time-Mock/")
(synopsis "Shift and scale time")
(description "This module allows you to speed up your sleep(), alarm(),
and time() calls.")
@@ -8460,7 +8460,7 @@ and time() calls.")
("perl-test-exception" ,perl-test-exception)))
(propagated-inputs
`(("perl-scalar-list-utils" ,perl-scalar-list-utils)))
- (home-page "http://search.cpan.org/dist/Tree-Simple")
+ (home-page "http://search.cpan.org/dist/Tree-Simple/")
(synopsis "Simple tree object")
(description "This module in a fully object-oriented implementation of a
simple n-ary tree.")
@@ -8485,7 +8485,7 @@ simple n-ary tree.")
(propagated-inputs
`(("perl-tree-simple" ,perl-tree-simple)
("perl-base" ,perl-base)))
- (home-page "http://search.cpan.org/dist/Tree-Simple-VisitorFactory")
+ (home-page "http://search.cpan.org/dist/Tree-Simple-VisitorFactory/")
(synopsis "Factory object for dispensing Visitor objects")
(description "This module is a factory for dispensing
Tree::Simple::Visitor::* objects.")
@@ -8504,7 +8504,7 @@ Tree::Simple::Visitor::* objects.")
(base32
"068vdbpacfawc3lkfs0b82xxl27h3l0gj14iada3vlwk8rps9yv0"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Try-Tiny")
+ (home-page "http://search.cpan.org/dist/Try-Tiny/")
(synopsis "Minimal try/catch with proper preservation of $@@")
(description "This module provides bare bones try/catch/finally statements
that are designed to minimize common mistakes with eval blocks, and nothing
@@ -8530,7 +8530,7 @@ else.")
(propagated-inputs
`(("perl-exporter-tiny" ,perl-exporter-tiny)
("perl-hash-fieldhash" ,perl-hash-fieldhash)))
- (home-page "http://search.cpan.org/dist/Type-Tie")
+ (home-page "http://search.cpan.org/dist/Type-Tie/")
(synopsis "Tie a variable to a type constraint")
(description "This module exports a single function: @code{ttie}. It ties
a variable to a type constraint, ensuring that whatever values stored in the
@@ -8564,7 +8564,7 @@ variable conform.")
("perl-ref-util-xs" ,perl-ref-util-xs)
("perl-regexp-util" ,perl-regexp-util)
("perl-type-tie" ,perl-type-tie)))
- (home-page "http://search.cpan.org/dist/Type-Tiny")
+ (home-page "http://search.cpan.org/dist/Type-Tiny/")
(synopsis "Tiny, yet Moo(se)-compatible type constraint")
(description "@code{Type::Tiny} is a small class for writing type
constraints, inspired by Moose's type constraint API. It has only one
@@ -8588,7 +8588,7 @@ be used with Moose, Mouse and Moo (or none of the above).")
(build-system perl-build-system)
(propagated-inputs
`(("perl-common-sense" ,perl-common-sense)))
- (home-page "http://search.cpan.org/dist/Types-Serialiser")
+ (home-page "http://search.cpan.org/dist/Types-Serialiser/")
(synopsis "Data types for common serialisation formats")
(description "This module provides some extra datatypes that are used by
common serialisation formats such as JSON or CBOR.")
@@ -8616,7 +8616,7 @@ common serialisation formats such as JSON or CBOR.")
(string-append (getcwd) ":"
(getenv "PERL5LIB")))
#t)))))
- (home-page "http://search.cpan.org/dist/Unicode-Normalize")
+ (home-page "http://search.cpan.org/dist/Unicode-Normalize/")
(synopsis "Unicode normalization forms")
(description "This Perl module provides Unicode normalization forms.")
(license (package-license perl))))
@@ -8646,7 +8646,7 @@ common serialisation formats such as JSON or CBOR.")
#t)))))
(propagated-inputs
`(("perl-unicode-normalize" ,perl-unicode-normalize)))
- (home-page "http://search.cpan.org/dist/Unicode-Collate")
+ (home-page "http://search.cpan.org/dist/Unicode-Collate/")
(synopsis "Unicode collation algorithm")
(description "This package provides tools for sorting and comparing
Unicode data.")
@@ -8668,7 +8668,7 @@ Unicode data.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-mime-charset" ,perl-mime-charset)))
- (home-page "http://search.cpan.org/dist/Unicode-LineBreak")
+ (home-page "http://search.cpan.org/dist/Unicode-LineBreak/")
(synopsis "Unicode line breaking algorithm")
(description
"@code{Unicode::LineBreak} implements the line breaking algorithm
@@ -8693,7 +8693,7 @@ defined by Annex #11 is used to determine breaking positions.")
("perl-test-leaktrace" ,perl-test-leaktrace)
("perl-variable-magic" ,perl-variable-magic)
("perl-test-pod" ,perl-test-pod)))
- (home-page "http://search.cpan.org/dist/Unicode-UTF8")
+ (home-page "http://search.cpan.org/dist/Unicode-UTF8/")
(synopsis "Encoding and decoding of UTF-8 encoding form")
(description
"This module provides functions to encode and decode UTF-8 encoding form
@@ -8713,7 +8713,7 @@ as specified by Unicode and ISO/IEC 10646:2011.")
(base32
"03wr25zznbfn1g8zmmq3g6a6288xr30priwvm75y4vvqfkrajbaj"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/UNIVERSAL-can")
+ (home-page "http://search.cpan.org/dist/UNIVERSAL-can/")
(synopsis "UNIVERSAL::can() reimplementation")
(description "This module attempts to work around people calling
UNIVERSAL::can() as a function, which it is not.")
@@ -8734,7 +8734,7 @@ UNIVERSAL::can() as a function, which it is not.")
(build-system perl-build-system)
(native-inputs
`(("perl-module-build-tiny" ,perl-module-build-tiny)))
- (home-page "http://search.cpan.org/dist/UNIVERSAL-isa")
+ (home-page "http://search.cpan.org/dist/UNIVERSAL-isa/")
(synopsis "UNIVERSAL::isa() reimplementation")
(description "This module attempts to recover from people calling
UNIVERSAL::isa as a function.")
@@ -8753,7 +8753,7 @@ UNIVERSAL::isa as a function.")
(base32
"1mx6z36c3wk61x6lag6kyws5g1cba68cw20vrb92wan7ahpfkbxq"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Variable-Magic")
+ (home-page "http://search.cpan.org/dist/Variable-Magic/")
(synopsis "Associate user-defined magic to variables from Perl")
(description "Magic is Perl's way of enhancing variables. This mechanism
lets the user add extra data to any variable and hook syntactical
@@ -8777,7 +8777,7 @@ having to write a single line of XS.")
(base32
"1gjzs570i67ywbv967g8ylb5sg59clwmyrl2yix3jl70dhn55070"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/XML-Writer")
+ (home-page "http://search.cpan.org/dist/XML-Writer/")
(synopsis "Easily generate well-formed, namespace-aware XML")
(description "@code{XML::Writer} is a simple Perl module for writing XML
documents: it takes care of constructing markup and escaping data correctly.
@@ -8805,7 +8805,7 @@ attribute names.")
`(("perl-extutils-depends" ,perl-extutils-depends)
("perl-module-install" ,perl-module-install)
("perl-test-fatal" ,perl-test-fatal)))
- (home-page "http://search.cpan.org/dist/XS-Object-Magic")
+ (home-page "http://search.cpan.org/dist/XS-Object-Magic/")
(synopsis "Opaque, extensible XS pointer backed objects using sv_magic")
(description
"This way of associating structs with Perl space objects is designed to
@@ -8829,7 +8829,7 @@ neither visible nor modifiable from Perl space).")
(build-system perl-build-system)
(native-inputs
`(("perl-test-yaml" ,perl-test-yaml)))
- (home-page "http://search.cpan.org/dist/YAML")
+ (home-page "http://search.cpan.org/dist/YAML/")
(synopsis "YAML for Perl")
(description "The YAML.pm module implements a YAML Loader and Dumper based
on the YAML 1.0 specification.")
@@ -8851,7 +8851,7 @@ on the YAML 1.0 specification.")
"0izhvz8f29x1f50hhwfgm0iq1lz7apjjvg77lmky949jr07hnwfv"))))
(build-system perl-build-system)
(home-page
- "http://search.cpan.org/dist/YAML-LibYAML")
+ "http://search.cpan.org/dist/YAML-LibYAML/")
(synopsis
"Perl YAML Serialization using XS and libyaml")
(description
@@ -8877,7 +8877,7 @@ best YAML support to date.")
("perl-module-build-tiny" ,perl-module-build-tiny)))
(arguments
`(#:tests? #f)) ;requires Test::More >= 0.99
- (home-page "http://search.cpan.org/dist/YAML-Tiny")
+ (home-page "http://search.cpan.org/dist/YAML-Tiny/")
(synopsis "Read/Write YAML files")
(description "YAML::Tiny is a perl class for reading and writing
YAML-style files, written with as little code as possible, reducing load time
@@ -8902,7 +8902,7 @@ and memory overhead.")
(native-inputs
`(("perl-module-build" ,perl-module-build)))
(home-page
- "http://search.cpan.org/dist/Parse-RecDescent")
+ "http://search.cpan.org/dist/Parse-RecDescent/")
(synopsis "Generate recursive-descent parsers")
(description
"@code{Parse::RecDescent} can incrementally generate top-down
@@ -8924,7 +8924,7 @@ recursive-descent text parsers from simple yacc-like grammar specifications.")
(base32
"16p4qgqg28cy76ylcf4wq1r693gqpx8xq0w32b3564i67h49zljb"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Parse-Yapp")
+ (home-page "http://search.cpan.org/dist/Parse-Yapp/")
(synopsis "Generate and use LALR parsers")
(description "This package compiles yacc-like @dfn{Look Ahead LR} (LALR)
grammars to generate Perl object oriented parser modules.")
@@ -8951,7 +8951,7 @@ grammars to generate Perl object oriented parser modules.")
`(("perl-cpan-meta-requirements" ,perl-cpan-meta-requirements)
("perl-cpan-meta-yaml" ,perl-cpan-meta-yaml)
("perl-parse-cpan-meta" ,perl-parse-cpan-meta)))
- (home-page "http://search.cpan.org/dist/CPAN-Meta")
+ (home-page "http://search.cpan.org/dist/CPAN-Meta/")
(synopsis "Distribution metadata for a CPAN dist")
(description "Software distributions released to the CPAN include a
META.json or, for older distributions, META.yml, which describes the
@@ -8975,7 +8975,7 @@ methods for interrogating that data.")
(base32
"1a8zflgaayycmn3zvd3n64yypa4jyl1va0h51wpr5w46irg69608"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/CPAN-Meta-Requirements")
+ (home-page "http://search.cpan.org/dist/CPAN-Meta-Requirements/")
(synopsis "Set of version requirements for a CPAN dist")
(description "A CPAN::Meta::Requirements object models a set of version
constraints like those specified in the META.yml or META.json files in CPAN
@@ -8999,7 +8999,7 @@ representation.")
(build-system perl-build-system)
(arguments
`(#:tests? #f)) ;Tests require Test::More >= 0.99
- (home-page "http://search.cpan.org/dist/CPAN-Meta-YAML")
+ (home-page "http://search.cpan.org/dist/CPAN-Meta-YAML/")
(synopsis "Read and write a subset of YAML for CPAN Meta files")
(description "This module implements a subset of the YAML specification
for use in reading and writing CPAN metadata files like META.yml and
@@ -9021,7 +9021,7 @@ MYMETA.yml.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-cpan-meta" ,perl-cpan-meta)))
- (home-page "http://search.cpan.org/dist/Module-Build")
+ (home-page "http://search.cpan.org/dist/Module-Build/")
(synopsis "Build and install Perl modules")
(description "@code{Module::Build} is a system for building, testing, and
installing Perl modules; it used to be part of Perl itself until version 5.22,
@@ -9048,7 +9048,7 @@ system---most of the @code{Module::Build} code is pure-Perl.")
(build-system perl-build-system)
(propagated-inputs
`(("perl-cpan-meta-yaml" ,perl-cpan-meta-yaml)))
- (home-page "http://search.cpan.org/dist/Parse-CPAN-Meta")
+ (home-page "http://search.cpan.org/dist/Parse-CPAN-Meta/")
(synopsis "Parse META.yml and META.json CPAN metadata files")
(description "Parse::CPAN::Meta is a parser for META.json and META.yml
files, using JSON::PP and/or CPAN::Meta::YAML.")
@@ -9067,7 +9067,7 @@ files, using JSON::PP and/or CPAN::Meta::YAML.")
(base32
"1qgg6zxqwziva5j1k5gjks4xmhmgklm551ni3zb74sd9f9rk90y4"))))
(build-system perl-build-system)
- (home-page "http://search.cpan.org/dist/Scalar-List-Utils")
+ (home-page "http://search.cpan.org/dist/Scalar-List-Utils/")
(synopsis "Common Scalar and List utility subroutines")
(description "This package contains a selection of subroutines that people
have expressed would be nice to have in the perl core, but the usage would not
@@ -9091,7 +9091,7 @@ such that being individual extensions would be wasteful.")
"1lgc2rb3b5a4lxvbq0cbg08qk0n2i88srxbsz93bwi3razpxxr7k"))))
(build-system perl-build-system)
(home-page
- "http://search.cpan.org/dist/Shell-Command")
+ "http://search.cpan.org/dist/Shell-Command/")
(synopsis
"Cross-platform functions emulating common shell commands")
(description
@@ -9120,7 +9120,7 @@ such that being individual extensions would be wasteful.")
(inputs
`(("perl-class-xsaccessor" ,perl-class-xsaccessor)))
(home-page
- "http://search.cpan.org/dist/File-Find-Object")
+ "http://search.cpan.org/dist/File-Find-Object/")
(synopsis
"Object-oriented File::Find replacement in Perl")
(description "File::Find::Object is an object-oriented
@@ -9150,7 +9150,7 @@ File::Find replacement in Perl.")
("perl-number-compare" ,perl-number-compare)
("perl-text-glob" ,perl-text-glob)))
(home-page
- "http://search.cpan.org/dist/File-Find-Object-Rule")
+ "http://search.cpan.org/dist/File-Find-Object-Rule/")
(synopsis
"Alternative interface to File::Find::Object")
(description "File::Find::Object::Rule is an alternative Perl
@@ -9181,7 +9181,7 @@ interface to File::Find::Object.")
("perl-text-glob" ,perl-text-glob)
("perl-number-compare" ,perl-number-compare)))
(home-page
- "http://search.cpan.org/dist/Test-TrailingSpace")
+ "http://search.cpan.org/dist/Test-TrailingSpace/")
(synopsis
"Test for trailing space in Perl source files")
(description "Test::TrailingSpace tests for trailing spaces
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3f1328ddf0..c555d8072a 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -22,8 +22,8 @@
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
-;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
-;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
+;;; Copyright © 2016, 2017 Troy Sankey <sankeytms@gmail.com>
+;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
@@ -4512,7 +4512,8 @@ operators such as union, intersection, and difference.")
(scandir (string-append cwd "/build")))
":"
(getenv "PYTHONPATH"))))
- (zero? (system* "python" "-m" "rpy2.tests" "-v")))))))
+ ;; FIXME: Even when all tests pass, the check phase will fail.
+ (system* "python" "-m" "rpy2.tests" "-v"))))))
(propagated-inputs
`(("python-six" ,python-six)
("python-jinja2" ,python-jinja2)
@@ -5133,72 +5134,6 @@ a front-end for C compilers or analysis tools.")
(define-public python2-pycparser
(package-with-python2 python-pycparser))
-(define-public python-cffi
- (package
- (name "python-cffi")
- (version "1.10.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cffi" version))
- (sha256
- (base32 "1mffyilq4qycm8gs4wkgb18rnqil8a9blqq77chdlshzxc8jkc5k"))))
- (build-system python-build-system)
- (outputs '("out" "doc"))
- (inputs
- `(("libffi" ,libffi)))
- (propagated-inputs ; required at run-time
- `(("python-pycparser" ,python-pycparser)))
- (native-inputs
- `(("pkg-config" ,pkg-config)
- ("python-sphinx" ,python-sphinx)
- ("python-pytest" ,python-pytest)))
- (arguments
- `(#:modules ((ice-9 ftw)
- (srfi srfi-26)
- (guix build utils)
- (guix build python-build-system))
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (setenv "PYTHONPATH"
- (string-append
- (getenv "PYTHONPATH")
- ":" (getcwd) "/build/"
- (car (scandir "build" (cut string-prefix? "lib." <>)))))
-
- ;; XXX The "normal" approach of setting CC and friends does
- ;; not work here. Is this the correct way of doing things?
- (substitute* "testing/embedding/test_basic.py"
- (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
- (string-append "c = distutils.ccompiler.new_compiler();"
- "c.set_executables(compiler='gcc',"
- "compiler_so='gcc',linker_exe='gcc',"
- "linker_so='gcc -shared')")))
- (substitute* "testing/cffi0/test_ownlib.py"
- (("'cc testownlib") "'gcc testownlib"))
- (zero? (system* "py.test" "-v" "c/" "testing/"))))
- (add-after 'install 'install-doc
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
- (doc (string-append data "/doc/" ,name "-" ,version))
- (html (string-append doc "/html")))
- (with-directory-excursion "doc"
- (system* "make" "html")
- (mkdir-p html)
- (copy-recursively "build/html" html))
- (copy-file "LICENSE" (string-append doc "/LICENSE"))
- #t))))))
- (home-page "http://cffi.readthedocs.org")
- (synopsis "Foreign function interface for Python")
- (description
- "Foreign Function Interface for Python calling C code.")
- (license license:expat)))
-
-(define-public python2-cffi
- (package-with-python2 python-cffi))
-
(define-public python-xcffib
(package
(name "python-xcffib")
@@ -5854,6 +5789,12 @@ tools for mocking system commands and recording calls to those.")
("python-numpy" ,python-numpy)
("python-numpydoc" ,python-numpydoc)
("python-jinja2" ,python-jinja2)
+ ("python-jupyter-console"
+ ;; The python-ipython and python-jupyter-console require each
+ ;; other. To get the functionality in both packages working, strip
+ ;; down the python-jupyter-console package when using it as an input
+ ;; to python-ipython.
+ ,python-jupyter-console-minimal)
("python-mistune" ,python-mistune)
("python-pexpect" ,python-pexpect)
("python-pickleshare" ,python-pickleshare)
@@ -6607,6 +6548,26 @@ providing a clean and modern domain specific specification language (DSL) in
Python style, together with a fast and comfortable execution environment.")
(license license:expat)))
+(define-public python-pyqrcode
+ (package
+ (name "python-pyqrcode")
+ (version "1.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "PyQRCode" version))
+ (sha256
+ (base32
+ "1m9ln8k9v7dfbh1i81225hx5mdsh8mpf9g7r4wpbfmiyfcs7dgzx"))))
+ (build-system python-build-system)
+ (home-page
+ "https://github.com/mnooner256/pyqrcode")
+ (synopsis "QR code generator")
+ (description
+ "Pyqrcode is a QR code generator written purely in Python with
+SVG, EPS, PNG and terminal output.")
+ (license license:bsd-3)))
+
(define-public python-seaborn
(package
(name "python-seaborn")
@@ -7415,15 +7376,13 @@ add functionality and customization to your projects with their own plugins.")
(define-public python-fonttools
(package
(name "python-fonttools")
- (version "2.5")
+ (version "3.15.1")
(source (origin
(method url-fetch)
- (uri (string-append
- "https://pypi.python.org/packages/source/F/FontTools/"
- "fonttools-" version ".tar.gz"))
+ (uri (pypi-uri "fonttools" version ".zip"))
(sha256
(base32
- "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
+ "1hhj97izwliy0vybmza72d90l5d4mcn50y8akq7kyccfl82vdx4d"))))
(build-system python-build-system)
(arguments
'(#:test-target "check"
@@ -7437,6 +7396,8 @@ add functionality and customization to your projects with their own plugins.")
(substitute* "setup.py"
(("^[ \t]*extra_path *= *'FontTools',") ""))
#t)))))
+ (native-inputs
+ `(("unzip" ,unzip)))
(home-page "https://github.com/behdad/fonttools")
(synopsis "Tools to manipulate font files")
(description
@@ -8560,6 +8521,31 @@ Jupyter kernels such as IJulia and IRKernel.")
(define-public python2-jupyter-console
(package-with-python2 python-jupyter-console))
+;; The python-ipython and python-jupyter-console require each other. To get
+;; the functionality in both packages working, strip down the
+;; python-jupyter-console package when using it as an input to python-ipython.
+(define python-jupyter-console-minimal
+ (package
+ (inherit python-jupyter-console)
+ (arguments
+ (substitute-keyword-arguments
+ (package-arguments python-jupyter-console)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'install 'delete-bin
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Delete the bin files, to avoid conflicts in profiles
+ ;; where python-ipython and python-jupyter-console are
+ ;; both present.
+ (delete-file-recursively
+ (string-append
+ (assoc-ref outputs "out") "/bin"))))))))
+ ;; Remove the python-ipython propagated input, to avoid the cycle
+ (propagated-inputs
+ (alist-delete
+ "python-ipython"
+ (package-propagated-inputs python-jupyter-console)))))
+
(define-public jupyter
(package
(name "jupyter")
@@ -10784,14 +10770,14 @@ introspection of @code{zope.interface} instances in code.")
(define-public python-psycopg2
(package
(name "python-psycopg2")
- (version "2.6.2")
+ (version "2.7.3.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "psycopg2" version))
(sha256
(base32
- "0p60z2gwfcal30y2w8gprflchp1kcg9qblc5rn782p4wxl90wjbh"))))
+ "0rda1j02ds6s28752fhmpwg761sh6jsxi1gpczqkrd28cki1cywv"))))
(build-system python-build-system)
(arguments
;; Tests would require a postgresql database "psycopg2_test"
@@ -11746,13 +11732,13 @@ format.")
(define-public python-twisted
(package
(name "python-twisted")
- (version "16.2.0")
+ (version "17.1.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "Twisted" version ".tar.bz2"))
(sha256
(base32
- "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450"))))
+ "1p245mg15hkxp7hy5cyq2fgvlgjkb4cg0gwkwd148nzy1bbi3wnv"))))
(build-system python-build-system)
(arguments
'(#:tests? #f)) ; FIXME: Some tests are failing.
@@ -11762,7 +11748,10 @@ format.")
;; (lambda _
;; (zero? (system* "./bin/trial" "twisted")))))
(propagated-inputs
- `(("python-zope-interface" ,python-zope-interface)))
+ `(("python-zope-interface" ,python-zope-interface)
+ ("python-incremental" ,python-incremental)
+ ("python-constantly" ,python-constantly)
+ ("python-automat" ,python-automat)))
(home-page "https://twistedmatrix.com/")
(synopsis "Asynchronous networking framework written in Python")
(description
@@ -14229,6 +14218,133 @@ Python. It is based on Parsing Expression Grammars, PEG. With pyPEG you can
parse many formal languages.")
(license license:gpl2)))
+(define-public python-incremental
+ (package
+ (name "python-incremental")
+ (version "17.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "incremental" version))
+ (sha256
+ (base32
+ "1cylxdz1cnkm5g3pklna3h2n0i0rks95ir1pnpxfnvpkmab1cxbv"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/hawkowl/incremental")
+ (synopsis "Library for versioning Python projects")
+ (description "Incremental is a small library that versions your Python
+projects.")
+ (license license:expat)))
+
+(define-public python2-incremental
+ (package-with-python2 python-incremental))
+
+(define-public python-automat
+ (package
+ (name "python-automat")
+ (version "0.6.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "Automat" version))
+ (sha256
+ (base32
+ "1a7nsrljysfmdqmpn2apfa1gg6rfah4y9sizvns8gb08rx7d07rw"))))
+ (build-system python-build-system)
+ ;; We disable the tests because they require python-twisted, while
+ ;; python-twisted depends on python-automat. Twisted is optional, but the
+ ;; tests fail if it is not available. Also see
+ ;; <https://github.com/glyph/automat/issues/71>.
+ (arguments '(#:tests? #f))
+ (native-inputs
+ `(("python-m2r" ,python-m2r)
+ ("python-setuptools-scm" ,python-setuptools-scm)
+ ("python-graphviz" ,python-graphviz)))
+ (propagated-inputs
+ `(("python-six" ,python-six)
+ ("python-attrs" ,python-attrs)))
+ (home-page "https://github.com/glyph/Automat")
+ (synopsis "Self-service finite-state machines")
+ (description "Automat is a library for concise, idiomatic Python
+expression of finite-state automata (particularly deterministic finite-state
+transducers).")
+ (license license:expat)))
+
+(define-public python2-automat
+ (package-with-python2 python-automat))
+
+(define-public python-m2r
+ (package
+ (name "python-m2r")
+ (version "0.1.12")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "m2r" version))
+ (sha256
+ (base32
+ "1axrwnf425sz4qz3c0qc7yhhki4myzb8rki7pczcsgzznzmqdyxd"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-docutils" ,python-docutils)
+ ("python-mistune" ,python-mistune)))
+ (native-inputs
+ `(("python-pygments" ,python-pygments)
+ ("python-mock" ,python-mock)))
+ (home-page "https://github.com/miyakogi/m2r")
+ (synopsis "Markdown to reStructuredText converter")
+ (description "M2R converts a markdown file including reST markups to valid
+reST format.")
+ (license license:expat)))
+
+(define-public python2-m2r
+ (package-with-python2 python-m2r))
+
+(define-public python-constantly
+ (package
+ (name "python-constantly")
+ (version "15.1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "constantly" version))
+ (sha256
+ (base32
+ "0dgwdla5kfpqz83hfril716inm41hgn9skxskvi77605jbmp4qsq"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/twisted/constantly")
+ (synopsis "Symbolic constants in Python")
+ (description "Constantly is a Python library that provides symbolic
+constant support. It includes collections and constants with text, numeric,
+and bit flag values.")
+ (license license:expat)))
+
+(define-public python2-constantly
+ (package-with-python2 python-constantly))
+
+(define-public python-attrs
+ (package
+ (name "python-attrs")
+ (version "17.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "attrs" version))
+ (sha256
+ (base32
+ "04gx08ikpk26wnq22f7l42gapcvk8iz1512r927k6sadz6cinkax"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-pytest" ,python-pytest)
+ ("python-hypothesis" ,python-hypothesis)
+ ("python-zope-interface" ,python-zope-interface)
+ ("python-six" ,python-six)))
+ (home-page "https://github.com/python-attrs/attrs/")
+ (synopsis "Attributes without boilerplate")
+ (description "@code{attrs} is a Python package with class decorators that
+ease the chores of implementing the most common attribute-related object
+protocols.")
+ (license license:expat)))
+
+(define-public python2-attrs
+ (package-with-python2 python-attrs))
+
(define-public python2-cliapp
(package
(name "python2-cliapp")
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 8edef9c703..a74ea01796 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -78,6 +78,7 @@
(sha256
(base32 "1lf9rkv0i0kd7fvpgg5l8jb87zw8dzcwd1liv6hji7g4wlpmfdiq"))))
(native-inputs
+ ;; Optional: lcov and cccc, both are for code coverage
`(("doxygen" ,doxygen)))
(inputs
`(("qtbase" ,qtbase)
@@ -86,10 +87,11 @@
(arguments
`(#:phases
(modify-phases %standard-phases
- (replace 'check
- (lambda _
- (zero? (system* "ctest" ;; exclude 2 tests which require a display
- "-E" "htmlbuildertest|plainmarkupbuildertest")))))))
+ (add-before 'check 'check-setup
+ (lambda _
+ ;; make Qt render "offscreen", required for tests
+ (setenv "QT_QPA_PLATFORM" "offscreen")
+ #t)))))
(home-page "https://github.com/steveire/grantlee")
(synopsis "Libraries for text templating with Qt")
(description "Grantlee Templates can be used for theming and generation of
@@ -100,7 +102,8 @@ system, and the core design of Django is reused in Grantlee.")
(define-public qt
(package
(name "qt")
- (version "5.6.2")
+ (version "5.9.2")
+ (outputs '("out" "examples"))
(source (origin
(method url-fetch)
(uri
@@ -112,7 +115,7 @@ system, and the core design of Django is reused in Grantlee.")
version ".tar.xz"))
(sha256
(base32
- "1cw93mrlkqbwndfqyjpsvjzkpzi39px2is040xvk18mvg3y1prl3"))
+ "1zr0hvhryn2ada53ln7cycymh602cncli86n291bsgzas6j72qbc"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -124,32 +127,52 @@ system, and the core design of Django is reused in Grantlee.")
;; Alternatively, we could use the "-skip qtwebengine"
;; configuration option.
(delete-file-recursively "qtwebengine")
- ;; Remove one of the two bundled harfbuzz copies in addition
- ;; to passing "-system-harfbuzz".
- (delete-file-recursively "qtbase/src/3rdparty/harfbuzz-ng")
- ;; Remove the bundled sqlite copy in addition to
- ;; passing "-system-sqlite".
- (delete-file-recursively "qtbase/src/3rdparty/sqlite")))))
+ ;; The following snippets are copied from their mondular-qt counterparts.
+ (for-each
+ (lambda (dir)
+ (delete-file-recursively (string-append "qtbase/src/3rdparty/" dir)))
+ (list "double-conversion" "freetype" "harfbuzz-ng"
+ "libpng" "libjpeg" "pcre2" "sqlite" "xcb"
+ "xkbcommon" "zlib"))
+ (for-each
+ (lambda (dir)
+ (delete-file-recursively dir))
+ (list "qtimageformats/src/3rdparty"
+ "qtmultimedia/examples/multimedia/spectrum/3rdparty"
+ "qtwayland/examples"
+ "qtcanvas3d/examples/canvas3d/3rdparty"))
+ ;; Tests depend on this example, which depends on the 3rd party code.
+ (substitute* "qtmultimedia/examples/multimedia/multimedia.pro"
+ (("spectrum") "#"))))))
(build-system gnu-build-system)
(propagated-inputs
`(("mesa" ,mesa)))
(inputs
`(("alsa-lib" ,alsa-lib)
- ("dbus" ,dbus)
+ ("bluez" ,bluez)
("cups" ,cups)
+ ("dbus" ,dbus)
+ ("double-conversion" ,double-conversion)
("expat" ,expat)
("fontconfig" ,fontconfig)
("freetype" ,freetype)
("glib" ,glib)
+ ("gstreamer" ,gstreamer)
+ ("gst-plugins-base" ,gst-plugins-base)
("harfbuzz" ,harfbuzz)
("icu4c" ,icu4c)
+ ("jasper" ,jasper)
+ ("libinput" ,libinput-minimal)
("libjpeg" ,libjpeg)
("libmng" ,libmng)
("libpci" ,pciutils)
("libpng" ,libpng)
+ ("libtiff" ,libtiff)
+ ("libwebp" ,libwebp)
("libx11" ,libx11)
("libxcomposite" ,libxcomposite)
("libxcursor" ,libxcursor)
+ ("libxext" ,libxext)
("libxfixes" ,libxfixes)
("libxi" ,libxi)
("libxinerama" ,libxinerama)
@@ -165,10 +188,11 @@ system, and the core design of Django is reused in Grantlee.")
("openssl" ,openssl)
("postgresql" ,postgresql)
("pulseaudio" ,pulseaudio)
- ("pcre" ,pcre)
+ ("pcre2" ,pcre2)
("sqlite" ,sqlite)
("udev" ,eudev)
("unixodbc" ,unixodbc)
+ ("wayland" ,wayland)
("xcb-util" ,xcb-util)
("xcb-util-image" ,xcb-util-image)
("xcb-util-keysyms" ,xcb-util-keysyms)
@@ -185,24 +209,19 @@ system, and the core design of Django is reused in Grantlee.")
("ruby" ,ruby)
("which" ,(@ (gnu packages base) which))))
(arguments
- `(;; FIXME: Disabling parallel building is a quick hack to avoid the
- ;; failure described in
- ;; https://lists.gnu.org/archive/html/guix-devel/2016-01/msg00837.html
- ;; A more structural fix is needed.
- #:parallel-build? #f
- #:phases
+ `(#:phases
(modify-phases %standard-phases
(add-after 'configure 'patch-bin-sh
(lambda _
- (substitute* '("qtbase/config.status"
- "qtbase/configure"
+ (substitute* '("qtbase/configure"
"qtbase/mkspecs/features/qt_functions.prf"
"qtbase/qmake/library/qmakebuiltins.cpp")
(("/bin/sh") (which "sh")))
#t))
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
+ (let ((out (assoc-ref outputs "out"))
+ (examples (assoc-ref outputs "examples")))
(substitute* '("configure" "qtbase/configure")
(("/bin/pwd") (which "pwd")))
(substitute* "qtbase/src/corelib/global/global.pri"
@@ -213,12 +232,12 @@ system, and the core design of Django is reused in Grantlee.")
"./configure"
"-verbose"
"-prefix" out
+ "-examplesdir" examples ; 89MiB
"-opensource"
"-confirm-license"
- ;; Do not build examples; if desired, these could go
- ;; into a separate output, but for the time being, we
+ ;; Do not build examples; for the time being, we
;; prefer to save the space and build time.
- "-nomake" "examples"
+ "-no-compile-examples"
;; Most "-system-..." are automatic, but some use
;; the bundled copy by default.
"-system-sqlite"
@@ -227,6 +246,8 @@ system, and the core design of Django is reused in Grantlee.")
"-openssl-linked"
;; explicitly link with dbus instead of dlopening it
"-dbus-linked"
+ ;; don't use the precompiled headers
+ "-no-pch"
;; drop special machine instructions not supported
;; on all instances of the target
,@(if (string-prefix? "x86_64"
@@ -234,12 +255,6 @@ system, and the core design of Django is reused in Grantlee.")
(%current-system)))
'()
'("-no-sse2"))
- "-no-sse3"
- "-no-ssse3"
- "-no-sse4.1"
- "-no-sse4.2"
- "-no-avx"
- "-no-avx2"
"-no-mips_dsp"
"-no-mips_dspr2"))))))))
(home-page "https://www.qt.io/")
@@ -376,7 +391,8 @@ developers using C++ or QML, a CSS & JavaScript like language.")
#t))))
(build-system gnu-build-system)
(propagated-inputs
- `(("mesa" ,mesa)))
+ `(("mesa" ,mesa)
+ ("which" ,(@ (gnu packages base) which))))
(inputs
`(("alsa-lib" ,alsa-lib)
("cups" ,cups)
@@ -427,8 +443,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
("perl" ,perl)
("pkg-config" ,pkg-config)
("python" ,python-2)
- ("ruby" ,ruby)
- ("which" ,(@ (gnu packages base) which))))
+ ("ruby" ,ruby)))
(arguments
`(#:phases
(modify-phases %standard-phases
@@ -460,6 +475,12 @@ developers using C++ or QML, a CSS & JavaScript like language.")
"./configure"
"-verbose"
"-prefix" out
+ "-docdir" (string-append out "/share/doc/qt5")
+ "-headerdir" (string-append out "/include/qt5")
+ "-archdatadir" (string-append out "/lib/qt5")
+ "-datadir" (string-append out "/share/qt5")
+ "-examplesdir" (string-append
+ out "/share/doc/qt5/examples")
"-opensource"
"-confirm-license"
;; Do not build examples; if desired, these could go
@@ -486,41 +507,49 @@ developers using C++ or QML, a CSS & JavaScript like language.")
'("-no-sse2"))
"-no-mips_dsp"
"-no-mips_dspr2")))))
- (add-after 'install 'patch-qt_config.prf
+ (add-after 'install 'patch-mkspecs
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
+ (archdata (string-append out "/lib/qt5"))
+ (mkspecs (string-append archdata "/mkspecs"))
(qt_config.prf (string-append
- out "/mkspecs/features/qt_config.prf")))
+ mkspecs "/features/qt_config.prf")))
;; For each Qt module, let `qmake' uses search paths in the
;; module directory instead of all in QT_INSTALL_PREFIX.
(substitute* qt_config.prf
(("\\$\\$\\[QT_INSTALL_HEADERS\\]")
- "$$replace(dir, mkspecs/modules, include)")
+ "$$clean_path($$replace(dir, mkspecs/modules, ../../include/qt5))")
(("\\$\\$\\[QT_INSTALL_LIBS\\]")
- "$$replace(dir, mkspecs/modules, lib)")
+ "$$clean_path($$replace(dir, mkspecs/modules, ../../lib))")
(("\\$\\$\\[QT_HOST_LIBS\\]")
- "$$replace(dir, mkspecs/modules, lib)")
- (("\\$\\$\\[QT_INSTALL_PLUGINS\\]")
- "$$replace(dir, mkspecs/modules, plugins)")
- (("\\$\\$\\[QT_INSTALL_LIBEXECS\\]")
- "$$replace(dir, mkspecs/modules, libexec)")
+ "$$clean_path($$replace(dir, mkspecs/modules, ../../lib))")
(("\\$\\$\\[QT_INSTALL_BINS\\]")
- "$$replace(dir, mkspecs/modules, bin)")
- (("\\$\\$\\[QT_INSTALL_IMPORTS\\]")
- "$$replace(dir, mkspecs/modules, imports)")
- (("\\$\\$\\[QT_INSTALL_QML\\]")
- "$$replace(dir, mkspecs/modules, qml)"))
+ "$$clean_path($$replace(dir, mkspecs/modules, ../../bin))"))
+
+ ;; Searches Qt tools in the current PATH instead of QT_HOST_BINS.
+ (substitute* (string-append mkspecs "/features/qt_functions.prf")
+ (("cmd = \\$\\$\\[QT_HOST_BINS\\]/\\$\\$2")
+ "cmd = $$system(which $${2}.pl 2>/dev/null || which $${2})"))
+
+ ;; Resolve qmake spec files within qtbase by absolute paths.
+ (substitute*
+ (map (lambda (file)
+ (string-append mkspecs "/features/" file))
+ '("device_config.prf" "moc.prf" "qt_build_config.prf"
+ "qt_config.prf" "winrt/package_manifest.prf"))
+ (("\\$\\$\\[QT_HOST_DATA/get\\]") archdata)
+ (("\\$\\$\\[QT_HOST_DATA/src\\]") archdata))
#t))))))
(native-search-paths
(list (search-path-specification
(variable "QMAKEPATH")
- (files '("")))
+ (files '("lib/qt5")))
(search-path-specification
(variable "QML2_IMPORT_PATH")
- (files '("qml")))
+ (files '("lib/qt5/qml")))
(search-path-specification
(variable "QT_PLUGIN_PATH")
- (files '("plugins")))
+ (files '("lib/qt5/plugins")))
(search-path-specification
(variable "XDG_DATA_DIRS")
(files '("share")))
@@ -555,26 +584,51 @@ developers using C++ or QML, a CSS & JavaScript like language.")
(arguments
`(#:phases
(modify-phases %standard-phases
- (replace 'configure
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- ;; Valid QT_BUILD_PARTS variables are:
- ;; libs tools tests examples demos docs translations
- (zero? (system* "qmake" "QT_BUILD_PARTS = libs tools tests"
- (string-append "PREFIX=" out))))))
- (add-before 'install 'fix-Makefiles
+ (add-before 'configure 'configure-qmake
(lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (qtbase (assoc-ref inputs "qtbase")))
- (substitute* (find-files "." "Makefile")
- (((string-append "INSTALL_ROOT)" qtbase))
- (string-append "INSTALL_ROOT)" out)))
+ (let* ((out (assoc-ref outputs "out"))
+ (qtbase (assoc-ref inputs "qtbase"))
+ (tmpdir (string-append (getenv "TMPDIR")))
+ (qmake (string-append tmpdir "/qmake"))
+ (qt.conf (string-append tmpdir "/qt.conf")))
+ ;; Use qmake with a customized qt.conf to override install
+ ;; paths to $out.
+ (symlink (which "qmake") qmake)
+ (setenv "PATH" (string-append tmpdir ":" (getenv "PATH")))
+ (with-output-to-file qt.conf
+ (lambda ()
+ (format #t "[Paths]
+Prefix=~a
+ArchData=lib/qt5
+Data=share/qt5
+Documentation=share/doc/qt5
+Headers=include/qt5
+Libraries=lib
+LibraryExecutables=lib/qt5/libexec
+Binaries=bin
+Tests=tests
+Plugins=lib/qt5/plugins
+Imports=lib/qt5/imports
+Qml2Imports=lib/qt5/qml
+Translations=share/qt5/translations
+Settings=etc/xdg
+Examples=share/doc/qt5/examples
+HostPrefix=~a
+HostData=lib/qt5
+HostBinaries=bin
+HostLibraries=lib
+" out out)))
#t)))
- (add-before 'check 'set-display
- (lambda _
- ;; make Qt render "offscreen", required for tests
- (setenv "QT_QPA_PLATFORM" "offscreen")
- #t)))))
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; Valid QT_BUILD_PARTS variables are:
+ ;; libs tools tests examples demos docs translations
+ (zero? (system* "qmake" "QT_BUILD_PARTS = libs tools tests"))))
+ (add-before 'check 'set-display
+ (lambda _
+ ;; make Qt render "offscreen", required for tests
+ (setenv "QT_QPA_PLATFORM" "offscreen")
+ #t)))))
(synopsis "Qt module for displaying SVGs")
(description "The QtSvg module provides classes for displaying the
contents of SVG files.")))
@@ -853,6 +907,18 @@ set of plugins for interacting with pulseaudio and GStreamer.")))
(snippet
;; The examples try to build and cause the build to fail
'(delete-file-recursively "examples"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments qtsvg)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-before 'check 'set-ld-library-path
+ ;; <https://lists.gnu.org/archive/html/guix-devel/2017-09/msg00019.html>
+ ;;
+ ;; Make the uninstalled libQt5WaylandClient.so.5 available to the
+ ;; wayland platform plugin.
+ (lambda _
+ (setenv "LD_LIBRARY_PATH" (string-append (getcwd) "/lib"))
+ #t))))))
(native-inputs
`(("glib" ,glib)
("perl" ,perl)
@@ -1609,8 +1675,10 @@ contain over 620 classes.")
(string-append out "/include"))
(("\\$\\$\\[QT_INSTALL_TRANSLATIONS\\]")
(string-append out "/translations"))
- (("\\$\\$\\[QT_INSTALL_DATA\\]") out)
- (("\\$\\$\\[QT_HOST_DATA\\]") out))
+ (("\\$\\$\\[QT_INSTALL_DATA\\]")
+ (string-append out "/lib/qt$${QT_MAJOR_VERSION}"))
+ (("\\$\\$\\[QT_HOST_DATA\\]")
+ (string-append out "/lib/qt$${QT_MAJOR_VERSION}")))
(zero? (system* "qmake"))))))))
(native-inputs `(("qtbase" ,qtbase)))
(home-page "http://www.riverbankcomputing.co.uk/software/qscintilla/intro")
@@ -1699,7 +1767,8 @@ This package provides the Python bindings.")))
(base32 "0bxi5pfhxdvwk8yxa06lk2d7lcibmfqhahbin82bqf3m341zd4ml"))))
(build-system cmake-build-system)
(native-inputs
- `(("qttools" ,qttools)))
+ `(("pkg-config" ,pkg-config)
+ ("qttools" ,qttools)))
(inputs
`(("qtbase" ,qtbase)))
(arguments
@@ -1742,11 +1811,27 @@ securely. It will not store any data unencrypted unless explicitly requested.")
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
+ (let* ((out (assoc-ref outputs "out"))
+ (docdir (string-append out "/share/doc/qwt"))
+ (incdir (string-append out "/include/qwt"))
+ (pluginsdir (string-append out "/lib/qt5/plugins/designer"))
+ (featuresdir (string-append out "/lib/qt5/mkspecs/features")))
(substitute* '("qwtconfig.pri")
- (("/usr/local/qwt-\\$\\$QWT\\_VERSION") out))
+ (("^(\\s*QWT_INSTALL_PREFIX)\\s*=.*" _ x)
+ (format #f "~a = ~a\n" x out))
+ (("^(QWT_INSTALL_DOCS)\\s*=.*" _ x)
+ (format #f "~a = ~a\n" x docdir))
+ (("^(QWT_INSTALL_HEADERS)\\s*=.*" _ x)
+ (format #f "~a = ~a\n" x incdir))
+ (("^(QWT_INSTALL_PLUGINS)\\s*=.*" _ x)
+ (format #f "~a = ~a\n" x pluginsdir))
+ (("^(QWT_INSTALL_FEATURES)\\s*=.*" _ x)
+ (format #f "~a = ~a\n" x featuresdir)))
+ (substitute* '("doc/doc.pro")
+ ;; We'll install them in the 'install-man-pages' phase.
+ (("^unix:doc\\.files.*") ""))
(zero? (system* "qmake")))))
- (add-after 'install 'install-documentation
+ (add-after 'install 'install-man-pages
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(man (string-append out "/share/man")))
@@ -1810,6 +1895,15 @@ different kinds of sliders, and much more.")
(arguments
`(#:phases
(modify-phases %standard-phases
+ (add-before 'configure 'fix-qmlwebkit-plugins-rpath
+ (lambda _
+ (substitute* "Source/WebKit/qt/declarative/experimental/experimental.pri"
+ (("RPATHDIR_RELATIVE_TO_DESTDIR = \\.\\./\\.\\./lib")
+ "RPATHDIR_RELATIVE_TO_DESTDIR = ../../../../../lib"))
+ (substitute* "Source/WebKit/qt/declarative/public.pri"
+ (("RPATHDIR_RELATIVE_TO_DESTDIR = \\.\\./\\.\\./lib")
+ "RPATHDIR_RELATIVE_TO_DESTDIR = ../../../../lib"))
+ #t))
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index c6b500bb16..5a7548df68 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -1021,34 +1021,6 @@ Ruby Gems.")
(home-page "http://github.com/rubyzip/rubyzip")
(license license:bsd-2)))
-(define-public ruby-ffi
- (package
- (name "ruby-ffi")
- (version "1.9.18")
- (source (origin
- (method url-fetch)
- (uri (rubygems-uri "ffi" version))
- (sha256
- (base32
- "034f52xf7zcqgbvwbl20jwdyjwznvqnwpbaps9nk18v9lgb1dpx0"))))
- (build-system ruby-build-system)
- ;; FIXME: Before running tests the build system attempts to build libffi
- ;; from sources.
- (arguments `(#:tests? #f))
- (native-inputs
- `(("ruby-rake-compiler" ,ruby-rake-compiler)
- ("ruby-rspec" ,ruby-rspec)
- ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
- (inputs
- `(("libffi" ,libffi)))
- (synopsis "Ruby foreign function interface library")
- (description "Ruby-FFI is a Ruby extension for programmatically loading
-dynamic libraries, binding functions within them, and calling those functions
-from Ruby code. Moreover, a Ruby-FFI extension works without changes on Ruby
-and JRuby.")
- (home-page "http://wiki.github.com/ffi/ffi")
- (license license:bsd-3)))
-
(define-public ruby-simplecov-html
(package
(name "ruby-simplecov-html")
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index 0962ffe985..d3edac14ff 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -403,13 +403,18 @@ directory.")
("xorg-server" ,xorg-server)
("libjpeg" ,libjpeg)))
(inputs
- `(("guile" ,guile-2.0)
+ `(("guile" ,guile-2.2)
("sdl-union" ,(sdl-union))))
(arguments
'(#:configure-flags
(list (string-append "--with-sdl-prefix="
(assoc-ref %build-inputs "sdl-union")))
+ #:modules ((ice-9 popen)
+ (guix build utils)
+ (guix build gnu-build-system))
+
#:parallel-build? #f ; parallel build fails
+
#:phases
(modify-phases %standard-phases
(add-before 'configure 'fix-env-and-patch
@@ -418,9 +423,16 @@ directory.")
;; SDL_image needs to dlopen libjpeg in the test suite.
(setenv "LD_LIBRARY_PATH"
(string-append (assoc-ref inputs "libjpeg") "/lib"))
- ;; Change the site directory /site/2.0 like Guile expects.
+
+ ;; Change the site directory /site/X.Y like Guile expects.
(substitute* "build-aux/guile-baux/re-prefixed-site-dirs"
- (("\"/site\"") "\"/site/2.0\""))
+ (("\"/site\"")
+ (let ((effective
+ (read
+ (open-pipe* OPEN_READ
+ "guile" "-c"
+ "(write (effective-version))"))))
+ (string-append "\"/site/" effective "\""))))
;; Skip tests that rely on sound support, which is unavailable in
;; the build environment.
@@ -434,6 +446,16 @@ directory.")
(system (format #f "~a/bin/Xvfb :1 &"
(assoc-ref inputs "xorg-server")))
(setenv "DISPLAY" ":1")
+ #t))
+ (add-before 'check 'skip-cursor-test
+ (lambda _
+ ;; XXX: This test sometimes enters an endless loop, and sometimes
+ ;; crashes with:
+ ;; guile: xcb_io.c:147: append_pending_request: Assertion `!xcb_xlib_unknown_seq_number' failed.
+ ;; Skip it.
+ (substitute* "test/cursor.scm"
+ (("\\(SDL:init .*" all)
+ (string-append "(exit 77) ;" all "\n")))
#t)))))
(synopsis "Guile interface for SDL (Simple DirectMedia Layer)")
(description "Guile-SDL is a set of bindings to the Simple DirectMedia
diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index c6e3d6b355..ba7c09a438 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -44,15 +44,15 @@
(define-public ccid
(package
(name "ccid")
- (version "1.4.27")
+ (version "1.4.28")
(source (origin
(method url-fetch)
(uri (string-append
- "https://alioth.debian.org/frs/download.php/file/4218/"
+ "https://alioth.debian.org/frs/download.php/file/4230/"
"ccid-" version ".tar.bz2"))
(sha256
(base32
- "0dyikpmhsph36ndgd61bs4yx437v5y0bmm8ahjacp1k9c1ly4q56"))))
+ "1q5dz1l049m3hmr370adhrqicdkldrr3l98svi02p5cxbnn3cn47"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags (list (string-append "--enable-usbdropdir=" %output
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 1866926129..7d25e0d919 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -7,6 +7,7 @@
;;; Copyright © 2017 Corentin Bocquillon <corentin@nybble.fr>
;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
+;;; Copyright © 2017 ng0 <ng0@infotropique.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -385,3 +386,25 @@ style and key ordering are kept, so you can diff the source.")
(define-public python2-ruamel.yaml
(package-with-python2 python-ruamel.yaml))
+
+(define-public python-cbor
+ (package
+ (name "python-cbor")
+ (version "1.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "cbor" version))
+ (sha256
+ (base32
+ "1dmv163cnslyqccrybkxn0c9s1jk1mmafmgxv75iamnz5lk5l8hk"))))
+ (build-system python-build-system)
+ (home-page "https://bitbucket.org/bodhisnarkva/cbor")
+ (synopsis "Implementation of the Concise Binary Object Representation")
+ (description
+ "Python-cbor provides an implementation of the Concise Binary Object
+Representation (CBOR). CBOR is comparable to JSON, has a superset of JSON's
+ability, but serializes to a binary format which is smaller and faster to
+generate and parse. The two primary functions are @code{cbor.loads} and
+@code{cbor.dumps}.")
+ (license license:asl2.0)))
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index f0ad6cffb7..2b640645c4 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -1057,6 +1057,32 @@ multidimensional conditioning system and a consistent interface to map data to
aesthetic attributes.")
(license license:gpl2+)))
+(define-public r-ggdendro
+ (package
+ (name "r-ggdendro")
+ (version "0.1-20")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "ggdendro" version))
+ (sha256
+ (base32
+ "1zzq1hxd0d1qa5hrzwfkdw6fzscpcafbwbpkrb62dm559y8awp0j"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-ggplot2" ,r-ggplot2)
+ ("r-mass" ,r-mass)
+ ("r-knitr" ,r-knitr)))
+ (home-page "https://github.com/andrie/ggdendro")
+ (synopsis "Create Dendrograms and Tree Diagrams Using ggplot2")
+ (description "This is a set of tools for dendrograms and tree plots using
+ggplot2. The ggplot2 philosophy is to clearly separate data from the
+presentation. Unfortunately the plot method for dendrograms plots directly
+to a plot device with out exposing the data. The ggdendro package resolves
+this by making available functions that extract the dendrogram plot data.
+The package provides implementations for tree, rpart, as well as diana and
+agnes cluster diagrams.")
+ (license license:gpl2+)))
+
(define-public r-gdtools
(package
(name "r-gdtools")
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
new file mode 100644
index 0000000000..b4bc1e0a8a
--- /dev/null
+++ b/gnu/packages/syncthing.scm
@@ -0,0 +1,1821 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Petter <petter@mykolab.ch>
+;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages syncthing)
+ #:use-module (guix build-system go)
+ #:use-module (guix build-system trivial)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module (guix licenses))
+
+(define-public syncthing
+ (package
+ (name "syncthing")
+ (version "0.14.39")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/syncthing/syncthing"
+ "/releases/download/v" version
+ "/syncthing-source-v" version ".tar.gz"))
+ (sha256
+ (base32
+ "07mrvd3vq0p4f550dpq73xg1vpa2h7xxz7vq07sjw0whapknkw9f"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/syncthing/syncthing"
+ #:unpack-path "github.com/syncthing"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'delete-bundled-source-code
+ (lambda _
+ ;; Keep the bundled cznic libraries. There are some "internal"
+ ;; cznic libraries that complicate the use of non-bundled copies.
+ (rename-file "src/github.com/syncthing/syncthing/vendor/github.com/cznic"
+ "cznic")
+ (delete-file-recursively "src/github.com/syncthing/syncthing/vendor")
+ (mkdir-p "src/github.com/syncthing/syncthing/vendor/github.com/")
+ (rename-file "cznic"
+ "src/github.com/syncthing/syncthing/vendor/github.com/cznic")
+ #t))
+
+ ;; We don't need to install the source code for end-user applications.
+ (delete 'install-source)
+
+ (add-before 'build 'increase-test-timeout
+ (lambda _
+ (substitute* "src/github.com/syncthing/syncthing/build.go"
+ (("60s") "999s"))
+ #t))
+
+ (replace 'build
+ (lambda* (#:key inputs #:allow-other-keys)
+ (with-directory-excursion "src/github.com/syncthing/syncthing"
+ (zero? (system* "go" "run" "build.go" "-no-upgrade")))))
+
+ (replace 'check
+ (lambda _
+ (with-directory-excursion "src/github.com/syncthing/syncthing"
+ (zero? (system* "go" "run" "build.go" "test")))))
+
+ (replace 'install
+ (lambda _
+ (copy-recursively "src/github.com/syncthing/syncthing/bin/"
+ (string-append (assoc-ref %outputs "out") "/bin"))
+ #t))
+
+ (add-after 'install 'install-docs
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (man (string-append out "/share/man/man"))
+ (src "src/github.com/syncthing/syncthing/man/"))
+ (for-each
+ (lambda (file)
+ (install-file file
+ (string-append man (string-take-right file 1))))
+ (find-files src "\\.[1-9]"))
+ #t))))))
+ ;; When updating Syncthing, check 'vendor/manifest' in the source
+ ;; distribution to ensure we are using the correct versions of these
+ ;; dependencies.
+ (inputs
+ `(("go-github-com-audriusbutkevicius-cli"
+ ,go-github-com-audriusbutkevicius-cli)
+ ("go-github-com-audriusbutkevicius-kcp-go"
+ ,go-github-com-audriusbutkevicius-kcp-go)
+ ("go-github-com-audriusbutkevicius-go-nat-pmp"
+ ,go-github-com-audriusbutkevicius-go-nat-pmp)
+ ("go-github-com-audriusbutkevicius-pfilter"
+ ,go-github-com-audriusbutkevicius-pfilter)
+ ("go-github-com-bkaradzic-go-lz4" ,go-github-com-bkaradzic-go-lz4)
+ ("go-github-com-calmh-du" ,go-github-com-calmh-du)
+ ("go-github-com-calmh-xdr" ,go-github-com-calmh-xdr)
+ ("go-github-com-ccding-go-stun"
+ ,go-github-com-ccding-go-stun)
+ ("go-github-com-chmduquesne-rollinghash-adler32"
+ ,go-github-com-chmduquesne-rollinghash-adler32)
+; ("go-github-com-cznic-ql" ,go-github-com-cznic-ql) ; bundled
+ ; Used by bundled ql
+ ("go-github-com-edsrzf-mmap-go" ,go-github-com-edsrzf-mmap-go)
+ ("go-github-com-gobwas-glob" ,go-github-com-gobwas-glob)
+ ("go-github-com-gogo-protobuf-union"
+ ,(go-github-com-gogo-protobuf-union))
+ ("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)
+ ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
+ ("go-github-com-oschwald-geoip2-golang"
+ ,go-github-com-oschwald-geoip2-golang)
+ ("go-github-com-rcrowley-go-metrics" ,go-github-com-rcrowley-go-metrics)
+ ("go-github-com-sasha-s-go-deadlock" ,go-github-com-sasha-s-go-deadlock)
+ ("go-github-com-syndtr-goleveldb" ,go-github-com-syndtr-goleveldb)
+ ("go-github-com-thejerf-suture" ,go-github-com-thejerf-suture)
+ ("go-github-com-vitrun-qart" ,(go-github-com-vitrun-qart-union))
+ ("go-github-com-xtaci-smux" ,go-github-com-xtaci-smux)
+ ("go-golang-org-x-crypto" ,(go-golang-org-x-crypto-union))
+ ("go-golang-org-x-net-union" ,(go-golang-org-x-net-union))
+ ("go-golang-org-x-text" ,(go-golang-org-x-text-union))
+ ("go-golang-org-x-time-rate" ,go-golang-org-x-time-rate)
+ ("go-github-com-d4l3k-messagediff"
+ ,go-github-com-d4l3k-messagediff)))
+ (synopsis "Decentralized continuous filesystem synchronization")
+ (description "Syncthing is a peer-to-peer file synchronization tool that
+supports a wide variety of computing platforms. It uses the Block Exchange
+Protocol.")
+ (home-page "https://github.com/syncthing/syncthing")
+ (license mpl2.0)))
+
+(define-public go-github-com-audriusbutkevicius-go-nat-pmp
+ (let ((commit "452c97607362b2ab5a7839b8d1704f0396b640ca")
+ (revision "0"))
+ (package
+ (name "go-github-com-audriusbutkevicius-go-nat-pmp")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/AudriusButkevicius/go-nat-pmp")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1accmpl1llk16a19nlyy991fqrgfay6l53gb64hgmdfmqljdvbk7"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/AudriusButkevicius/go-nat-pmp"))
+ (synopsis "Port mapping and discovery of external IP address")
+ (description "This packages provides a Go client for the NAT-PMP internet
+protocol for port mapping and discovering the external IP address of a
+firewall.")
+ (home-page "https://github.com/AudriusButkevicius/go-nat-pmp")
+ (license asl2.0))))
+
+(define-public go-github-com-bkaradzic-go-lz4
+ (let ((commit "7224d8d8f27ef618c0a95f1ae69dbb0488abc33a")
+ (revision "0"))
+ (package
+ (name "go-github-com-bkaradzic-go-lz4")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/bkaradzic/go-lz4")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "10lmya17vdqg2pvqni0p73iahni48s1v11ya9a0hcz4jh5vw4dkb"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/bkaradzic/go-lz4"))
+ (synopsis "LZ4 compression algorithm")
+ (description "This package provides @code{go-lz4}, a Go implementation of
+the LZ4 compression algorithm.")
+ (home-page "https://github.com/bkaradzic/go-lz4")
+ (license bsd-2))))
+
+(define-public go-github-com-calmh-du
+ (package
+ (name "go-github-com-calmh-du")
+ (version "1.0.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/calmh/du")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0qb3a6y3p9nkyn3s66k6zcm16y8n8578qh23ddj14cxf2scrr2n2"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/calmh/du"))
+ (synopsis "Get total and available disk space of a given volume")
+ (description "This is a Go implementation of `du`. It provides disk usage
+information, such as how much storage space is available, free, and used.")
+ (home-page "https://github.com/calmh/du")
+ (license public-domain)))
+
+(define-public go-github-com-calmh-xdr
+ (let ((commit "08e072f9cb164f943a92eb59f90f3abc64ac6e8f")
+ (revision "0"))
+ (package
+ (name "go-github-com-calmh-xdr")
+ (version (git-version "2.0.1" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/calmh/xdr")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "072wqdncz3nd4a3zkhvzzx1y3in1lm29wfvl0d8wrnqs5pyqh0mh"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/calmh/xdr"))
+ (synopsis "XDR marshalling and unmarshalling")
+ (description "XDR is an External Data Representation (XDR)
+marshalling and unmarshalling library in Go. It uses code generation and not
+reflection.")
+ (home-page "https://github.com/calmh/xdr")
+ (license expat))))
+
+(define-public go-github-com-d4l3k-messagediff
+ (let ((commit "29f32d820d112dbd66e58492a6ffb7cc3106312b")
+ (revision "0"))
+ (package
+ (name "go-github-com-d4l3k-messagediff")
+ (version (git-version "1.1.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/d4l3k/messagediff")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "104hl8x57ciaz7mzafg1vp9qggxcyfm8hsv9bmlihbz9ml3nyr8v"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/d4l3k/messagediff"))
+ (synopsis "Diff arbitrary Go structs")
+ (description "Messagediff is a library for calculating diffs of arbitrary
+structs in the Go programming language.")
+ (home-page "https://github.com/d4l3k/messagediff")
+ (license expat))))
+
+(define-public go-github-com-edsrzf-mmap-go
+ (let ((commit "0bce6a6887123b67a60366d2c9fe2dfb74289d2e")
+ (revision "0"))
+ (package
+ (name "go-github-com-edsrzf-mmap-go")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/edsrzf/mmap-go")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1am4m2k451bksnbiqj6lxknk4lsgmrhv0q3ajqac818vj0cpfgs9"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/edsrzf/mmap-go"))
+ (synopsis "Go implementation of mmap")
+ (description "This packages provides a Go implementation of mmap.")
+ (home-page "https://github.com/edsrzf/mmap-go")
+ (license bsd-3))))
+
+(define-public go-github-com-gobwas-glob
+ (let ((commit "51eb1ee00b6d931c66d229ceeb7c31b985563420")
+ (revision "0"))
+ (package
+ (name "go-github-com-gobwas-glob")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/gobwas/glob")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "090wzpwsjana1qas8ipwh1pj959gvc4b7vwybzi01f3bmd79jwlp"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/gobwas/glob"))
+ (synopsis "Go globbing library")
+ (description "This packages provides a Go implementation of globs.")
+ (home-page "https://github.com/gobwas/glob")
+ (license expat))))
+
+(define* (go-github-com-gogo-protobuf-union
+ #:optional (packages (list go-github-com-gogo-protobuf
+ go-github-com-gogo-protobuf-protoc-gen-gogo)))
+ (package
+ (name "go-github-com-gogo-protobuf-union")
+ (version (package-version go-github-com-gogo-protobuf))
+ (source #f)
+ (build-system trivial-build-system)
+ (arguments
+ '(#:modules ((guix build union))
+ #:builder (begin
+ (use-modules (ice-9 match)
+ (guix build union))
+ (match %build-inputs
+ (((names . directories) ...)
+ (union-build (assoc-ref %outputs "out")
+ directories))))))
+ (inputs (map (lambda (package)
+ (list (package-name package) package))
+ packages))
+ (synopsis "Union of Go protobuf libraries")
+ (description "This is a union of Go protobuf libraries")
+ (home-page (package-home-page go-github-com-gogo-protobuf))
+ (license (package-license go-github-com-gogo-protobuf))))
+
+(define-public go-github-com-gogo-protobuf
+ (let ((commit "efccd33a0c20aa078705571d5ddbfa14c8395a63")
+ (revision "0"))
+ (package
+ (name "go-github-com-gogo-protobuf")
+ (version (git-version "0.2" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/gogo/protobuf")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "09kfa3aqmhh7p0rc6wd4fw5cjccidsk9vgcy13albv0g8vnbmmgw"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/gogo/protobuf/proto"
+ #:unpack-path "github.com/gogo/protobuf"))
+ (propagated-inputs
+ `(("go-github-com-gogo-protobuf-protoc-gen-gogo"
+ ,go-github-com-gogo-protobuf-protoc-gen-gogo)))
+ (synopsis "Protocol Buffers for Go with Gadgets")
+ (description "Gogoprotobuf is a fork of golang/protobuf with extra code
+generation features. This code generation is used to achieve:
+@itemize
+@item fast marshalling and unmarshalling
+@item more canonical Go structures
+@item goprotobuf compatibility
+@item less typing by optionally generating extra helper code
+@item peace of mind by optionally generating test and benchmark code
+@item other serialization formats
+@end itemize")
+ (home-page "https://github.com/gogo/protobuf")
+ (license bsd-3))))
+
+(define-public go-github-com-gogo-protobuf-protoc-gen-gogo
+ (let ((commit "efccd33a0c20aa078705571d5ddbfa14c8395a63")
+ (revision "0"))
+ (package
+ (name "go-github-com-gogo-protobuf-protoc-gen-gogo")
+ (version (git-version "0.2" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/gogo/protobuf")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "09kfa3aqmhh7p0rc6wd4fw5cjccidsk9vgcy13albv0g8vnbmmgw"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/gogo/protobuf/protoc-gen-gogo"
+ #:unpack-path "github.com/gogo/protobuf"))
+ (synopsis "Protocol Buffers for Go with Gadgets")
+ (description "Gogoprotobuf is a fork of golang/protobuf with extra code
+generation features. This code generation is used to achieve:
+@itemize
+@item fast marshalling and unmarshalling
+@item more canonical Go structures
+@item goprotobuf compatibility
+@item less typing by optionally generating extra helper code
+@item peace of mind by optionally generating test and benchmark code
+@item other serialization formats
+@end itemize")
+ (home-page "https://github.com/gogo/protobuf")
+ (license bsd-3))))
+
+(define-public go-github-com-golang-groupcache-lru
+ (let ((commit "72d04f9fcdec7d3821820cc4a6f150eae553639a")
+ (revision "0"))
+ (package
+ (name "go-github-com-golang-groupcache-lru")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/golang/groupcache")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1l3ryh7bq1f2mhr3sd3x1wav99pd27r8l3ydgqh375wn4x7v5qd6"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/golang/groupcache/lru"
+ #:unpack-path "github.com/golang/groupcache"))
+ (synopsis "Groupcache is a caching and cache-filling library")
+ (description "Groupcache is a caching and cache-filling library, intended
+as a replacement for memcached in many cases. It provides a data loading
+mechanism with caching and de-duplication that works across a set of peer
+processes.")
+ (home-page "https://github.com/golang/groupcache")
+ (license asl2.0))))
+
+(define-public go-github-com-golang-snappy
+ (let ((commit "553a641470496b2327abcac10b36396bd98e45c9")
+ (revision "0"))
+ (package
+ (name "go-github-com-golang-snappy")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/golang/snappy")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0kssxnih1l722hx9219c7javganjqkqhvl3i0hp0hif6xm6chvqk"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/golang/snappy"))
+ (synopsis "Snappy compression format in the Go programming language")
+ (description "This package provides a Go implementation of the Snappy
+compression format.")
+ (home-page "https://github.com/golang/snappy")
+ (license bsd-3))))
+
+(define-public go-github-com-jackpal-gateway
+ (let ((commit "5795ac81146e01d3fab7bcf21c043c3d6a32b006")
+ (revision "0"))
+ (package
+ (name "go-github-com-jackpal-gateway")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/jackpal/gateway")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0fkwkwmhfadwk3cha8616bhqxfkr9gjjnynhhxyldlphixgs3f25"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/jackpal/gateway"))
+ (synopsis "Discover the address of a LAN gateway")
+ (description "@code{gateway} is a Go library for discovering the IP
+address of the default LAN gateway.")
+ (home-page "https://github.com/jackpal/gateway")
+ (license bsd-3))))
+
+(define-public go-github-com-kardianos-osext
+ (let ((commit "9d302b58e975387d0b4d9be876622c86cefe64be")
+ (revision "0"))
+ (package
+ (name "go-github-com-kardianos-osext")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/kardianos/osext")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0r6f727s16g4f66k8c2z1xh8ga1p53hg9g2v95pmhd1i60fhy47a"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/kardianos/osext"))
+ (synopsis "Find the running executable")
+ (description "Osext provides a method for finding the current executable
+file that is running. This can be used for upgrading the current executable or
+finding resources located relative to the executable file.")
+ (home-page "https://github.com/kardianos/osext")
+ (license bsd-3))))
+
+(define-public go-github-com-lib-pq
+ (let ((commit "2704adc878c21e1329f46f6e56a1c387d788ff94")
+ (revision "0"))
+ (package
+ (name "go-github-com-lib-pq")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/lib/pq")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "160fmvi7bczxw3i3h5s821hv029ph5ld8x3c36b4cz2sr30wp110"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/lib/pq"
+ ;; The tests seem to fail without access to the network or a running
+ ;; Postgres instance.
+ #:tests? #f))
+ (synopsis "Golang Postgres driver for Go's database/sql")
+ (description "This packages provides a pure Go Postgres driver for Go's
+database/sql package.")
+ (home-page "https://github.com/lib/pq")
+ (license expat))))
+
+(define-public go-github-com-minio-sha256-simd
+ (let ((commit "6124d070eb4e7001c244b6ccc282620a5dce44a0")
+ (revision "0"))
+ (package
+ (name "go-github-com-minio-sha256-simd")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/minio/sha256-simd")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1azrdp7x7vl9ngkxs890blspz0345xhadvssdlb0435hdqa0gkll"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/minio/sha256-simd"))
+ (synopsis "Hardware-accelerated SHA256 in Go using SIMD")
+ (description "This packages provides a pure Go implementation of SHA256
+using SIMD (Single instruction, multiple data) instructions for Intel and ARM
+architectures.")
+ (home-page "https://github.com/minio/sha256-simd")
+ (license asl2.0))))
+
+(define-public go-github-com-oschwald-geoip2-golang
+ (let ((commit "0fd242da7906550802871efe101abfdb1cc550a8")
+ (revision "0"))
+ (package
+ (name "go-github-com-oschwald-geoip2-golang")
+ (version (git-version "0.1.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/oschwald/geoip2-golang")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0kglnix0r5sjkk346ip30l7dwq1gv2g4wjy2cjmgjvb8x778hnww"))))
+ (build-system go-build-system)
+ (propagated-inputs
+ `(("go-github-com-oschwald-maxminddb-golang"
+ ,go-github-com-oschwald-maxminddb-golang)
+ ("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
+ (arguments
+ `(#:import-path "github.com/oschwald/geoip2-golang"
+ #:tests? #f)) ; Requires some unpackaged software and test data
+ (synopsis "MaxMind GeoIP2 reader")
+ (description "This packages provides a library for reading MaxMind
+GeoLite2 and GeoIP2 databases in Go.")
+ (home-page "https://github.com/oschwald/geoip2-golang")
+ (license isc))))
+
+(define-public go-github-com-oschwald-maxminddb-golang
+ (let ((commit "697da8075d2061aa8ed639346443f5d3e8c80b30")
+ (revision "0"))
+ (package
+ (name "go-github-com-oschwald-maxminddb-golang")
+ (version (git-version "0.2.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/oschwald/maxminddb-golang")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "00kkxzlvra0kcbkl56wp0dp1yw3cmfjqqlwbqy7bq5r34s7iavq0"))))
+ (build-system go-build-system)
+ (propagated-inputs
+ `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
+ (arguments
+ `(#:import-path "github.com/oschwald/maxminddb-golang"
+ #:tests? #f)) ; Requires some unpackaged software and test data
+ (synopsis "MaxMind DB Reader for Go")
+ (description "This is a Go reader for the MaxMind DB format. Although
+this can be used to read GeoLite2 and GeoIP2 databases, @code{geoip2} provides a
+higher-level API for doing so.")
+ (home-page "https://github.com/oschwald/maxminddb-golang")
+ (license isc))))
+
+(define-public go-github-com-stathat-go
+ (let ((commit "74669b9f388d9d788c97399a0824adbfee78400e")
+ (revision "0"))
+ (package
+ (name "go-github-com-stathat-go")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/stathat/go")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1zzlsl24dyr202qkr2pay22m6d0gb7ssms77wgdx0r0clgm7dihw"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/stathat/go"))
+ (synopsis "Post statistics to StatHat")
+ (description "This is a Go package for posting to a StatHat account.")
+ (home-page "https://github.com/stathat/go")
+ (license expat))))
+
+(define-public go-github-com-rcrowley-go-metrics
+ (let ((commit "1f30fe9094a513ce4c700b9a54458bbb0c96996c")
+ (revision "0"))
+ (package
+ (name "go-github-com-rcrowley-go-metrics")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/rcrowley/go-metrics")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1hvbiaq4b6dqgjz6jkkxglfh9gf71zin6qsg508sh0r0ixfavrzj"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/rcrowley/go-metrics"))
+ (propagated-inputs
+ `(("go-github-com-stathat-go" ,go-github-com-stathat-go)))
+ (synopsis "Go port of Coda Hale's Metrics library")
+ (description "This package provides a Go implementation of Coda Hale's
+Metrics library.")
+ (home-page "https://github.com/rcrowley/go-metrics")
+ (license bsd-2))))
+
+(define-public go-github-com-sasha-s-go-deadlock
+ (let ((commit "341000892f3dd25f440e6231e8533eb3688ed7ec")
+ (revision "0"))
+ (package
+ (name "go-github-com-sasha-s-go-deadlock")
+ (version (git-version "0.1.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/sasha-s/go-deadlock")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1bcdyxwm5qpqynxahwaahbqi7ghgdajmg7b4276pdalkxkxkhsv8"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/sasha-s/go-deadlock"))
+ (propagated-inputs
+ `(("go-github-com-petermattis-goid" ,go-github-com-petermattis-goid)))
+ (synopsis "Deadlock detection in go")
+ (description "This package provides tools for detecting deadlocks at
+run-time in Go.")
+ (home-page "https://github.com/sasha-s/go-deadlock")
+ (license asl2.0))))
+
+(define-public go-github-com-syndtr-goleveldb
+ (let ((commit "3c5717caf1475fd25964109a0fc640bd150fce43")
+ (revision "0"))
+ (package
+ (name "go-github-com-syndtr-goleveldb")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/syndtr/goleveldb")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0wng25bw885ppiny9rz42kq0a7ddkym5zl0glb8rfk0m8dpvi1dd"))))
+ (build-system go-build-system)
+ (propagated-inputs
+ `(("go-github-com-golang-snappy" ,go-github-com-golang-snappy)))
+ (arguments
+ `(#:import-path "github.com/syndtr/goleveldb/leveldb"
+ #:unpack-path "github.com/syndtr/goleveldb"
+ #:tests? #f)) ; XXX needs 'github.com/onsi/gomega' package
+ (synopsis "LevelDB key/value database")
+ (description "This is an implementation of the LevelDB key / value
+database in Go.")
+ (home-page "https://github.com/syndtr/goleveldb")
+ (license bsd-2))))
+
+(define-public go-github-com-thejerf-suture
+ (let ((commit "0ac47afae95ad5bc5184ed346bc945168e883f5d")
+ (revision "0"))
+ (package
+ (name "go-github-com-thejerf-suture")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/thejerf/suture")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0f860fkaibnnkmh4q6q9yn3r26sraaj8wx9irwm76cmsp48zcxfy"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/thejerf/suture"))
+ (synopsis "Supervisor trees for Go")
+ (description "Suture provides Erlang-ish supervisor trees for Go.
+\"Supervisor trees\" -> \"sutree\" -> \"suture\" -> holds your code together
+when it's trying to die.
+
+It is intended to deal gracefully with the real failure cases that can occur
+with supervision trees (such as burning all your CPU time endlessly restarting
+dead services), while also making no unnecessary demands on the \"service\"
+code, and providing hooks to perform adequate logging with in a production
+environment")
+ (home-page "https://github.com/thejerf/suture")
+ (license expat))))
+
+(define* (go-github-com-vitrun-qart-union
+ #:optional (packages (list go-github-com-vitrun-qart-coding
+ go-github-com-vitrun-qart-gf256
+ go-github-com-vitrun-qart-qr)))
+ (package
+ (name "go-github-com-vitrun-qart")
+ (version (package-version go-github-com-vitrun-qart-qr))
+ (source #f)
+ (build-system trivial-build-system)
+ (arguments
+ '(#:modules ((guix build union))
+ #:builder (begin
+ (use-modules (ice-9 match)
+ (guix build union))
+ (match %build-inputs
+ (((names . directories) ...)
+ (union-build (assoc-ref %outputs "out")
+ directories))))))
+ (inputs (map (lambda (package)
+ (list (package-name package) package))
+ packages))
+ (synopsis "Union of qart libraries")
+ (description "This is a union of qart libraries.")
+ (home-page (package-home-page go-github-com-vitrun-qart-qr))
+ (license (package-license go-github-com-vitrun-qart-qr))))
+
+(define-public go-github-com-vitrun-qart-coding
+ (let ((commit "bf64b92db6b05651d6c25a3dabf2d543b360c0aa")
+ (revision "0"))
+ (package
+ (name "go-github-com-vitrun-qart-coding")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/vitrun/qart")
+ (commit commit)))
+ (file-name (string-append "go-github-com-vitrun-qart-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "1xk7qki703xmay9ghi3kq2bjf1iw9dz8wik55739d6i7sn77vvkc"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/vitrun/qart/coding"
+ #:unpack-path "github.com/vitrun/qart"))
+ (synopsis "Low-level QR coding library")
+ (description "This package provides a library for embedding
+human-meaningful graphics in QR codes. However, instead of scribbling on
+redundant pieces and relying on error correction to preserve the meaning,
+@code{qart} engineers the encoded values to create the picture in a code with no
+inherent errors. This @code{qart} component, @code{coding}, implements
+low-level QR coding details.")
+ (home-page "https://github.com/vitrun/qart/")
+ (license bsd-3))))
+
+(define-public go-github-com-vitrun-qart-gf256
+ (let ((commit "bf64b92db6b05651d6c25a3dabf2d543b360c0aa")
+ (revision "0"))
+ (package
+ (name "go-github-com-vitrun-qart-gf256")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/vitrun/qart")
+ (commit commit)))
+ (file-name (string-append "go-github-com-vitrun-qart-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "1xk7qki703xmay9ghi3kq2bjf1iw9dz8wik55739d6i7sn77vvkc"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/vitrun/qart/gf256"
+ #:unpack-path "github.com/vitrun/qart"))
+ (synopsis "Qart library for Galois Field GF(256) math")
+ (description "This package, a component of @code{qart}, provides @code{gf256},
+implements arithmetic over the Galois Field GF(256).")
+ (home-page "https://github.com/vitrun/qart")
+ (license bsd-3))))
+
+(define-public go-github-com-vitrun-qart-qr
+ (let ((commit "bf64b92db6b05651d6c25a3dabf2d543b360c0aa")
+ (revision "0"))
+ (package
+ (name "go-github-com-vitrun-qart-qr")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/vitrun/qart")
+ (commit commit)))
+ (file-name (string-append "go-github-com-vitrun-qart-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "1xk7qki703xmay9ghi3kq2bjf1iw9dz8wik55739d6i7sn77vvkc"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/vitrun/qart/qr"
+ #:unpack-path "github.com/vitrun/qart"))
+ (synopsis "Qart component for generating QR codes")
+ (description "This package, a component of @code{qart}, provides
+@code{qr}, for QR code generation.")
+ (description "This package provides a library for embedding
+human-meaningful graphics in QR codes. However, instead of scribbling on
+redundant pieces and relying on error correction to preserve the meaning,
+@code{qart} engineers the encoded values to create the picture in a code with no
+inherent errors. This @code{qart} component, @code{qr}, provides QR code
+generation.")
+ (home-page "https://github.com/vitrun/qart")
+ (license bsd-3))))
+
+;; Go searches for library modules by looking in the GOPATH environment
+;; variable. This variable is a list of paths. However, Go does not
+;; keep searching on GOPATH if it tries and fails to import a module.
+;; So, we use a union for packages sharing a namespace.
+(define* (go-golang-org-x-crypto-union #:optional
+ (packages (list go-golang-org-x-crypto-blowfish
+ go-golang-org-x-crypto-bcrypt
+ go-golang-org-x-crypto-tea
+ go-golang-org-x-crypto-xtea
+ go-golang-org-x-crypto-pbkdf2
+ go-golang-org-x-crypto-twofish
+ go-golang-org-x-crypto-cast5
+ go-golang-org-x-crypto-salsa20)))
+ (package
+ (name "go-golang-org-x-crypto")
+ (version (package-version go-golang-org-x-crypto-bcrypt))
+ (source #f)
+ (build-system trivial-build-system)
+ (arguments
+ '(#:modules ((guix build union))
+ #:builder (begin
+ (use-modules (ice-9 match)
+ (guix build union))
+ (match %build-inputs
+ (((names . directories) ...)
+ (union-build (assoc-ref %outputs "out")
+ directories))))))
+ (inputs (map (lambda (package)
+ (list (package-name package) package))
+ packages))
+ (synopsis "Union of the Go x crypto libraries")
+ (description "A union of the Golang cryptographic libraries. A
+union is required because `go build` assumes that all of the headers and
+libraries are in the same directory.")
+ (home-page (package-home-page go-golang-org-x-crypto-bcrypt))
+ (license (package-license go-golang-org-x-crypto-bcrypt))))
+
+(define-public go-golang-org-x-crypto-bcrypt
+ (let ((commit "c78caca803c95773f48a844d3dcab04b9bc4d6dd")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-crypto-bcrypt")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/crypto")
+ (commit commit)))
+ (file-name (string-append "go.googlesource.com-crypto-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "0vxlfxr9y681yn2cfh6dbqmq35vvq4f45ay0mm31ffkny9cms0y4"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/crypto/bcrypt"
+ #:unpack-path "golang.org/x/crypto"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
+ (lambda* (#:key outputs #:allow-other-keys)
+ (map (lambda (file)
+ (make-file-writable file))
+ (find-files
+ (string-append (assoc-ref outputs "out")
+ "/src/golang.org/x/crypto/ed25519/testdata")
+ ".*\\.gz$"))
+ #t)))))
+ (synopsis "Bcrypt in Go")
+ (description "This package provides a Go implementation of the bcrypt
+password hashing function.")
+ (home-page "https://go.googlesource.com/crypto/")
+ (license bsd-3))))
+
+(define-public go-golang-org-x-crypto-blowfish
+ (let ((commit "c78caca803c95773f48a844d3dcab04b9bc4d6dd")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-crypto-blowfish")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/crypto")
+ (commit commit)))
+ (file-name (string-append "go.googlesource.com-crypto-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "0vxlfxr9y681yn2cfh6dbqmq35vvq4f45ay0mm31ffkny9cms0y4"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/crypto/blowfish"
+ #:unpack-path "golang.org/x/crypto"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
+ (lambda* (#:key outputs #:allow-other-keys)
+ (map (lambda (file)
+ (make-file-writable file))
+ (find-files
+ (string-append (assoc-ref outputs "out")
+ "/src/golang.org/x/crypto/ed25519/testdata")
+ ".*\\.gz$"))
+ #t)))))
+ (synopsis "Blowfish in Go")
+ (description "This package provides a Go implementation of the Blowfish
+symmetric-key block cipher.")
+ (home-page "https://go.googlesource.com/crypto/")
+ (license bsd-3))))
+
+(define-public go-golang-org-x-crypto-pbkdf2
+ (let ((commit "c78caca803c95773f48a844d3dcab04b9bc4d6dd")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-crypto-pbkdf2")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/crypto")
+ (commit commit)))
+ (file-name (string-append "go.googlesource.com-crypto-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "0vxlfxr9y681yn2cfh6dbqmq35vvq4f45ay0mm31ffkny9cms0y4"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/crypto/pbkdf2"
+ #:unpack-path "golang.org/x/crypto"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
+ (lambda* (#:key outputs #:allow-other-keys)
+ (map (lambda (file)
+ (make-file-writable file))
+ (find-files
+ (string-append (assoc-ref outputs "out")
+ "/src/golang.org/x/crypto/ed25519/testdata")
+ ".*\\.gz$"))
+ #t)))))
+ (synopsis "PBKDF2 in Go")
+ (description "This package provides a Go implementation of the PBKDF2 key
+derivation function.")
+ (home-page "https://go.googlesource.com/crypto/")
+ (license bsd-3))))
+
+(define-public go-golang-org-x-crypto-tea
+ (let ((commit "c78caca803c95773f48a844d3dcab04b9bc4d6dd")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-crypto-tea")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/crypto")
+ (commit commit)))
+ (file-name (string-append "go.googlesource.com-crypto-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "0vxlfxr9y681yn2cfh6dbqmq35vvq4f45ay0mm31ffkny9cms0y4"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/crypto/tea"
+ #:unpack-path "golang.org/x/crypto"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
+ (lambda* (#:key outputs #:allow-other-keys)
+ (map (lambda (file)
+ (make-file-writable file))
+ (find-files
+ (string-append (assoc-ref outputs "out")
+ "/src/golang.org/x/crypto/ed25519/testdata")
+ ".*\\.gz$"))
+ #t)))))
+ (synopsis "Tiny Encryption Algorithm (TEA) in Go")
+ (description "This packages a Go implementation of the Tiny Encryption
+Algorithm (TEA) block cipher.")
+ (home-page "https://go.googlesource.com/crypto/")
+ (license bsd-3))))
+
+(define-public go-golang-org-x-crypto-salsa20
+ (let ((commit "c78caca803c95773f48a844d3dcab04b9bc4d6dd")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-crypto-salsa20")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/crypto")
+ (commit commit)))
+ (file-name (string-append "go.googlesource.com-crypto-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "0vxlfxr9y681yn2cfh6dbqmq35vvq4f45ay0mm31ffkny9cms0y4"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/crypto/salsa20"
+ #:unpack-path "golang.org/x/crypto"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
+ (lambda* (#:key outputs #:allow-other-keys)
+ (map (lambda (file)
+ (make-file-writable file))
+ (find-files
+ (string-append (assoc-ref outputs "out")
+ "/src/golang.org/x/crypto/ed25519/testdata")
+ ".*\\.gz$"))
+ #t)))))
+ (synopsis "Salsa20 in Go")
+ (description "This packages provides a Go implementation of the Salsa20
+stream cipher.")
+ (home-page "https://go.googlesource.com/crypto/")
+ (license bsd-3))))
+
+(define-public go-golang-org-x-crypto-cast5
+ (let ((commit "c78caca803c95773f48a844d3dcab04b9bc4d6dd")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-crypto-cast5")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/crypto")
+ (commit commit)))
+ (file-name (string-append "go.googlesource.com-crypto-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "0vxlfxr9y681yn2cfh6dbqmq35vvq4f45ay0mm31ffkny9cms0y4"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/crypto/cast5"
+ #:unpack-path "golang.org/x/crypto"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
+ (lambda* (#:key outputs #:allow-other-keys)
+ (map (lambda (file)
+ (make-file-writable file))
+ (find-files
+ (string-append (assoc-ref outputs "out")
+ "/src/golang.org/x/crypto/ed25519/testdata")
+ ".*\\.gz$"))
+ #t)))))
+ (synopsis "Cast5 in Go")
+ (description "This packages provides a Go implementation of the Cast5
+symmetric-key block cipher.")
+ (home-page "https://go.googlesource.com/crypto/")
+ (license bsd-3))))
+
+(define-public go-golang-org-x-crypto-twofish
+ (let ((commit "c78caca803c95773f48a844d3dcab04b9bc4d6dd")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-crypto-twofish")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/crypto")
+ (commit commit)))
+ (file-name (string-append "go.googlesource.com-crypto-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "0vxlfxr9y681yn2cfh6dbqmq35vvq4f45ay0mm31ffkny9cms0y4"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/crypto/twofish"
+ #:unpack-path "golang.org/x/crypto"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
+ (lambda* (#:key outputs #:allow-other-keys)
+ (map (lambda (file)
+ (make-file-writable file))
+ (find-files
+ (string-append (assoc-ref outputs "out")
+ "/src/golang.org/x/crypto/ed25519/testdata")
+ ".*\\.gz$"))
+ #t)))))
+ (synopsis "Twofish in Go")
+ (description "This packages provides a Go implementation of the Twofish
+symmetric-key block cipher.")
+ (home-page "https://go.googlesource.com/crypto/")
+ (license bsd-3))))
+
+(define-public go-golang-org-x-crypto-xtea
+ (let ((commit "c78caca803c95773f48a844d3dcab04b9bc4d6dd")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-crypto-xtea")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/crypto")
+ (commit commit)))
+ (file-name (string-append "go.googlesource.com-crypto-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "0vxlfxr9y681yn2cfh6dbqmq35vvq4f45ay0mm31ffkny9cms0y4"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/crypto/xtea"
+ #:unpack-path "golang.org/x/crypto"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
+ (lambda* (#:key outputs #:allow-other-keys)
+ (map (lambda (file)
+ (make-file-writable file))
+ (find-files
+ (string-append (assoc-ref outputs "out")
+ "/src/golang.org/x/crypto/ed25519/testdata")
+ ".*\\.gz$"))
+ #t)))))
+ (synopsis "eXtended Tiny Encryption Algorithm (XTEA) in Go")
+ (description "This package provides a Go implementation of the eXtended
+Tiny Encryption Algorithm (XTEA) block cipher.")
+ (home-page "https://go.googlesource.com/crypto/")
+ (license bsd-3))))
+
+(define* (go-golang-org-x-net-union #:optional
+ (packages (list go-golang-org-x-net-ipv4
+ go-golang-org-x-net-bpf
+ go-golang-org-x-net-context
+ go-golang-org-x-net-ipv6
+ go-golang-org-x-net-proxy
+ go-golang-org-x-net-internal-iana)))
+ (package
+ (name "go-golang-org-x-net")
+ (version (package-version go-golang-org-x-net-ipv4))
+ (source #f)
+ (build-system trivial-build-system)
+ (arguments
+ '(#:modules ((guix build union))
+ #:builder (begin
+ (use-modules (ice-9 match)
+ (guix build union))
+ (match %build-inputs
+ (((names . directories) ...)
+ (union-build (assoc-ref %outputs "out")
+ directories))))))
+ (inputs (map (lambda (package)
+ (list (package-name package) package))
+ packages))
+ (synopsis "Union of the Go net libraries")
+ (description "A union of the Golang net libraries.")
+ (home-page (package-home-page go-golang-org-x-net-ipv4))
+ (license (package-license go-golang-org-x-net-ipv4))))
+
+(define-public go-golang-org-x-net-ipv4
+ (let ((commit "ffcf1bedda3b04ebb15a168a59800a73d6dc0f4d")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-net-ipv4")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/net")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1ifqw09pj9q23mza1d0im99yy3jp72dvq9dcx2bs1n1m11cjdjzp"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/net/ipv4"
+ #:unpack-path "golang.org/x/net"))
+ (synopsis "Go IPv4 support")
+ (description "This package provides @code{ipv4}, which implements IP-level
+socket options for the Internet Protocol version 4.")
+ (home-page "https://go.googlesource.com/net")
+ (license bsd-3))))
+
+(define-public go-golang-org-x-net-bpf
+ (let ((commit "ffcf1bedda3b04ebb15a168a59800a73d6dc0f4d")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-net-bpf")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/net")
+ (commit commit)))
+ (file-name (string-append "go.googlesource.com-net-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "1ifqw09pj9q23mza1d0im99yy3jp72dvq9dcx2bs1n1m11cjdjzp"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/net/bpf"
+ #:unpack-path "golang.org/x/net"))
+ (synopsis "Berkeley Packet Filters (BPF) in Go")
+ (description "This packages provides a Go implementation of the Berkeley
+Packet Filter (BPF) virtual machine.")
+ (home-page "https://go.googlesource.com/net/")
+ (license bsd-3))))
+
+(define-public go-golang-org-x-net-context
+ (let ((commit "ffcf1bedda3b04ebb15a168a59800a73d6dc0f4d")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-net-context")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/net")
+ (commit commit)))
+ (file-name (string-append "go.googlesource.com-net-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "1ifqw09pj9q23mza1d0im99yy3jp72dvq9dcx2bs1n1m11cjdjzp"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/net/context"
+ #:unpack-path "golang.org/x/net"))
+ (synopsis "Golang Context type")
+ (description "This packages provides @code{context}, which defines the
+Context type, which carries deadlines, cancelation signals, and other
+request-scoped values across API boundaries and between processes.")
+ (home-page "https://go.googlesource.com/net/")
+ (license bsd-3))))
+
+(define-public go-golang-org-x-net-internal-iana
+ (let ((commit "ffcf1bedda3b04ebb15a168a59800a73d6dc0f4d")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-net-internal-iana")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/net")
+ (commit commit)))
+ (file-name (string-append "go.googlesource.com-net-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "1ifqw09pj9q23mza1d0im99yy3jp72dvq9dcx2bs1n1m11cjdjzp"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/net/internal/iana"
+ #:unpack-path "golang.org/x/net"))
+ (synopsis "Go support for assigned numbers (IANA)")
+ (description "This packages provides @code{iana}, which provides protocol
+number resources managed by the Internet Assigned Numbers Authority (IANA).")
+ (home-page "https://go.googlesource.com/net/")
+ (license bsd-3))))
+
+(define-public go-golang-org-x-net-ipv6
+ (let ((commit "ffcf1bedda3b04ebb15a168a59800a73d6dc0f4d")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-net-ipv6")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/net")
+ (commit commit)))
+ (file-name (string-append "go.googlesource.com-net-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "1ifqw09pj9q23mza1d0im99yy3jp72dvq9dcx2bs1n1m11cjdjzp"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/net/ipv6"
+ #:unpack-path "golang.org/x/net"))
+ (synopsis "Go IPv6 support")
+ (description "This packages provides @code{ipv6}, which implements
+IP-level socket options for the Internet Protocol version 6.")
+ (home-page "https://go.googlesource.com/net")
+ (license bsd-3))))
+
+(define-public go-golang-org-x-net-proxy
+ (let ((commit "ffcf1bedda3b04ebb15a168a59800a73d6dc0f4d")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-net-proxy")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/net")
+ (commit commit)))
+ (file-name (string-append "go.googlesource.com-net-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "1ifqw09pj9q23mza1d0im99yy3jp72dvq9dcx2bs1n1m11cjdjzp"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/net/proxy"
+ #:unpack-path "golang.org/x/net/"))
+ (synopsis "Go support for network proxies")
+ (description "This packages provides @code{proxy}, which provides support
+for a variety of protocols to proxy network data.")
+ (home-page "https://go.googlesource.com/net")
+ (license bsd-3))))
+
+(define-public go-golang-org-x-sys-unix
+ (let ((commit "f3918c30c5c2cb527c0b071a27c35120a6c0719a")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-sys-unix")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/sys")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "02967mw0nq7hp39bcf8rdbid4jgz2fn6hd1x03mmavvca03scxbh"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/sys/unix"
+ #:unpack-path "golang.org/x/sys"))
+ (synopsis "Go support for low-level system interaction")
+ (description "This package provides @code{unix}, which offers Go support
+for low-level interaction with the operating system.")
+ (home-page "https://go.googlesource.com/sys")
+ (license bsd-3))))
+
+(define* (go-golang-org-x-text-union #:optional
+ (packages (list go-golang-org-x-text-transform
+ go-golang-org-x-text-unicode-norm)))
+ (package
+ (name "go-golang-org-x-text")
+ (version (package-version go-golang-org-x-text-transform))
+ (source #f)
+ (build-system trivial-build-system)
+ (arguments
+ '(#:modules ((guix build union))
+ #:builder (begin
+ (use-modules (ice-9 match)
+ (guix build union))
+ (match %build-inputs
+ (((names . directories) ...)
+ (union-build (assoc-ref %outputs "out")
+ directories))))))
+ (inputs (map (lambda (package)
+ (list (package-name package) package))
+ packages))
+ (synopsis "Union of the Go text libraries")
+ (description "A union of the Golang text libraries.")
+ (home-page (package-home-page go-golang-org-x-text-transform))
+ (license (package-license go-golang-org-x-text-transform))))
+
+(define-public go-golang-org-x-text-transform
+ (let ((commit "f4b4367115ec2de254587813edaa901bc1c723a8")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-text-transform")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/text")
+ (commit commit)))
+ (file-name (string-append "go.googlesource.com-text-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "1a5m97y7sdxks02p4swg8ffp8bgr95aaf5fhfw511p7h3xg1dm0d"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/text/transform"
+ #:unpack-path "golang.org/x/text"))
+ (synopsis "Go text transformation")
+ (description "This package provides @code{transform}, which provides
+reader and writer wrappers that transform the bytes passing through. Example
+transformations provided by other packages include normalization and conversion
+between character sets.")
+ (home-page "https://go.googlesource.com/text")
+ (license bsd-3))))
+
+(define-public go-golang-org-x-text-unicode-norm
+ (let ((commit "f4b4367115ec2de254587813edaa901bc1c723a8")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-text-unicode-norm")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/text")
+ (commit commit)))
+ (file-name (string-append "go.googlesource.com-text-"
+ version "-checkout"))
+ (sha256
+ (base32
+ "1a5m97y7sdxks02p4swg8ffp8bgr95aaf5fhfw511p7h3xg1dm0d"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/text/unicode/norm"
+ #:unpack-path "golang.org/x/text"))
+ (synopsis "Unicode normalization in Go")
+ (description "This package provides @code{norm}, which contains types and
+functions for normalizing Unicode strings.")
+ (home-page "https://go.googlesource.com/text")
+ (license bsd-3))))
+
+(define-public go-github-com-audriusbutkevicius-pfilter
+ (let ((commit "09b3cfdd04de89f0196caecb0b335d7149a6593a")
+ (revision "0"))
+ (package
+ (name "go-github-com-audriusbutkevicius-pfilter")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/AudriusButkevicius/pfilter.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "176g8dmi2i94bxpnpgvj3dv5y9hripi45kbrfvy2bk884hwbp1zq"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/AudriusButkevicius/pfilter"))
+ (synopsis "Filter packets into mulitple virtual connections")
+ (description "Pfilter is a Go package for filtering packets into multiple
+virtual connections from a single physical connection.")
+ (home-page "https://github.com/AudriusButkevicius/pfilter")
+ (license expat))))
+
+(define-public go-github-com-ccding-go-stun
+ (let ((commit "04a4eed61c57ecc9903f8983d1d2c17b88d2e9e1")
+ (revision "0"))
+ (package
+ (name "go-github-com-ccding-go-stun")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ccding/go-stun.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "09fgmkvm0vzinl3ifrixyyxk2c9hbahrja7i0ir400harzq3my10"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/ccding/go-stun"))
+ (synopsis "STUN client implementation")
+ (description "Go-stun is a go implementation of the STUN client (RFC 3489
+and RFC 5389).")
+ (home-page "https://github.com/ccding/go-stun")
+ (license asl2.0))))
+
+(define-public go-github-com-chmduquesne-rollinghash-adler32
+ (let ((commit "043b8fdecc9816f0011a056f6d92f9a091ab63dd")
+ (revision "0"))
+ (package
+ (name "go-github-com-chmduquesne-rollinghash-adler32")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/chmduquesne/rollinghash.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0pc87laxgydqv03bdirfv32y9k0bdk2cwjxn28yh42nvay9p6y0k"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/chmduquesne/rollinghash/adler32"
+ #:unpack-path "github.com/chmduquesne/rollinghash"))
+ (synopsis "Adler-32 rolling hash in Go")
+ (description "This package provides a Go implementation of the Adler-32
+rolling hash.")
+ (home-page "https://github.com/chmduquesne/rollinghash")
+ (license expat))))
+
+(define-public go-github-com-audriusbutkevicius-kcp-go
+ (let ((commit "02298ef4d96d48912e016f5fb36dcc0cd93c257f")
+ (revision "0"))
+ (package
+ (name "go-github-com-audriusbutkevicius-kcp-go")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/AudriusButkevicius/kcp-go")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1xanidjz8rhk28ybxnfk55nsd3h0a707dsq7mmxpjmycdacbm0j0"))))
+ (build-system go-build-system)
+ (propagated-inputs
+ `(("go-golang-org-x-net-ipv4" ,go-golang-org-x-net-ipv4)
+ ("go-github-com-templexxx-reedsolomon"
+ ,go-github-com-templexxx-reedsolomon)
+ ("go-github-com-pkg-errors" ,go-github-com-pkg-errors)
+ ("go-golang-org-x-crypto" ,(go-golang-org-x-crypto-union))
+ ("go-github-com-templexxx-xor" ,go-github-com-templexxx-xor)))
+ (arguments
+ '(#:import-path "github.com/AudriusButkevicius/kcp-go"
+ ;; 'TestListenerClose' is known to fail. It seems that the test suite
+ ;; is not being used upstream:
+ ;; https://github.com/AudriusButkevicius/kcp-go/pull/1
+ #:tests? #f))
+ (synopsis "Reliable UDP connections in Go")
+ (description "This package provides @code{kcp-go}, a reliable UDP library
+written in Go. It offers fast, ordered and error-checked delivery of streams
+over UDP packets.")
+ (home-page "https://github.com/xtaci/kcp-go")
+ (license expat))))
+
+(define-public go-github-com-templexxx-xor
+ (let ((commit "42f9c041c330b560afb991153bf183c25444bcdc")
+ (revision "0"))
+ (package
+ (name "go-github-com-templexxx-xor")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/templexxx/xor.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0ixzk64nyyzas4lyqxdih824xg5f5vph18vyiibmnflwd61m0i78"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/templexxx/xor"))
+ (synopsis "XOR in Go")
+ (description "This packages provides a Go implementation of XOR.")
+ (home-page "https://github.com/templexxx/xor")
+ (license expat))))
+
+(define-public go-github-com-xtaci-smux
+ (let ((commit "0f6b9aaecaaf354357adc7def9239011ad276776")
+ (revision "0"))
+ (package
+ (name "go-github-com-xtaci-smux")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/xtaci/smux.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0wx9j0id2f5iqvyalhm4i80fr9k25klr7qqj8sd9acwp5vfl5fas"))))
+ (build-system go-build-system)
+ (propagated-inputs
+ `(("go-github-com-pkg-errors" ,go-github-com-pkg-errors)))
+ (arguments
+ '(#:import-path "github.com/xtaci/smux"))
+ (synopsis "Network multiplexing in Go")
+ (description "Smux ( Simple MUltipleXing) is a multiplexing library for
+Golang. It relies on an underlying connection to provide reliability and
+ordering, such as TCP or KCP, and provides stream-oriented multiplexing.")
+ (home-page "https://github.com/xtaci/smux")
+ (license expat))))
+
+(define-public go-github-com-pkg-errors
+ (let ((commit "ff09b135c25aae272398c51a07235b90a75aa4f0")
+ (revision "0"))
+ (package
+ (name "go-github-com-pkg-errors")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pkg/errors.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0pwl6v3hmc22zp32gkyqykl4kg69xk1mlp0vmhgd1f44difd5fvz"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/pkg/errors"))
+ (synopsis "Go error handling primitives")
+ (description "This packages provides @code{error}, which offers simple
+error handling primitives in Go.")
+ (home-page "https://github.com/pkg/errors")
+ (license bsd-2))))
+
+(define-public go-golang-org-x-time-rate
+ (let ((commit "f51c12702a4d776e4c1fa9b0fabab841babae631")
+ (revision "0"))
+ (package
+ (name "go-golang-org-x-time-rate")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/time")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "07wc6g2fvafkr6djsscm0jpbpl4135khhb6kpyx1953hi5d1jvyy"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "golang.org/x/time/rate"
+ #:unpack-path "golang.org/x/time"))
+ (propagated-inputs
+ `(("go-golang-org-x-net-context" ,go-golang-org-x-net-context)))
+ (synopsis "Rate limiting in Go")
+ (description "This package provides @{rate}, which implements rate
+limiting in Go.")
+ (home-page "https://godoc.org/golang.org/x/time/rate")
+ (license bsd-3))))
+
+(define-public go-github-com-petermattis-goid
+ (let ((commit "3db12ebb2a599ba4a96bea1c17b61c2f78a40e02")
+ (revision "0"))
+ (package
+ (name "go-github-com-petermattis-goid")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/petermattis/goid.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+
+ (base32
+ "0z18a3mr72c52g7g94n08gxw0ksnaafbfwdl5p5jav2sffirb0kd"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/petermattis/goid"))
+ (synopsis "Identify the running goroutine")
+ (description "This package offers a method of programatically retrieving
+the current goroutine's ID.")
+ (home-page "https://github.com/petermattis/goid")
+ (license asl2.0))))
+
+(define-public go-github-com-audriusbutkevicius-cli
+ (let ((commit "7f561c78b5a4aad858d9fd550c92b5da6d55efbb")
+ (revision "0"))
+ (package
+ (name "go-github-com-audriusbutkevicius-cli")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/AudriusButkevicius/cli.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0bg26pfg25vr16jmczig2m493mja2nxjxyswz3hha7avxw20rpi5"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/AudriusButkevicius/cli"))
+ (synopsis "Library for building command-line interfaces in Go")
+ (description "This package provides a library for building command-line
+interfaces in Go.")
+ (home-page "https://github.com/AudriusButkevicius/cli")
+ (license expat))))
+
+(define-public go-github-com-kballard-go-shellquote
+ (let ((commit "cd60e84ee657ff3dc51de0b4f55dd299a3e136f2")
+ (revision "0"))
+ (package
+ (name "go-github-com-kballard-go-shellquote")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/kballard/go-shellquote.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1xjpin4jq1zl84dcn96xhjmn9bsfyszf6g9aqyj2dc0xfi6c88y0"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/kballard/go-shellquote"))
+ (synopsis "Shell-style string joins and splits")
+ (description "Shellquote provides utilities for joining/splitting strings
+using sh's word-splitting rules.")
+ (home-page "https://github.com/kballard/go-shellquote")
+ (license expat))))
+
+(define-public go-github-com-templexxx-reedsolomon
+ (package
+ (name "go-github-com-templexxx-reedsolomon")
+ (version "0.1.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/templexxx/reedsolomon.git")
+ (commit version)))
+ (sha256
+ (base32
+ "05yfi6dq2mwaw6jf9vq2qhpw8vb9y94b3zi6mpfcpma262rxdkg4"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/templexxx/reedsolomon"))
+ (propagated-inputs
+ `(("go-github-com-templexxx-cpufeat"
+ ,go-github-com-templexxx-cpufeat)))
+ (synopsis "Reed-Solomon Erasure Coding in Go")
+ (description "This package provides and implemenation of Reed-Solomon
+Erasure Coding in Go.")
+ (home-page "https://github.com/templexxx/reedsolomon")
+ (license expat)))
+
+(define-public go-github-com-templexxx-cpufeat
+ (let ((commit "3794dfbfb04749f896b521032f69383f24c3687e")
+ (revision "0"))
+ (package
+ (name "go-github-com-templexxx-cpufeat")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/templexxx/cpufeat.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0b9f5p6nsiv907rz5d66qzgxnsz4k68r2f45vxi2hwdbnkjfxz8j"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/templexxx/cpufeat"))
+ (synopsis "CPU feature identification for Go")
+ (description "This package provides @code{cpu}, which implements
+processor feature detection used by the Go standard libary.")
+ (home-page "https://github.com/templexxx/cpufeat")
+ (license bsd-3))))
diff --git a/gnu/packages/tmux.scm b/gnu/packages/tmux.scm
index d6f06e94b0..4456e73bc8 100644
--- a/gnu/packages/tmux.scm
+++ b/gnu/packages/tmux.scm
@@ -34,7 +34,7 @@
(define-public tmux
(package
(name "tmux")
- (version "2.5")
+ (version "2.6")
(source (origin
(method url-fetch)
(uri (string-append
@@ -42,7 +42,7 @@
version "/tmux-" version ".tar.gz"))
(sha256
(base32
- "1pwm5nqm3by8452h6gll0sl3646rjdga7qw419svgxhvgk1mw4xf"))))
+ "1s6pgk63ar1swpvhs8r5fk26vav3ybsf2ll7d705hysdm5qd2z5i"))))
(build-system gnu-build-system)
(inputs
`(("libevent" ,libevent)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 08ebb2080e..c1856b62f3 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1115,7 +1115,7 @@ access to mpv's powerful playback capabilities.")
(define-public youtube-dl
(package
(name "youtube-dl")
- (version "2017.10.07")
+ (version "2017.10.15.1")
(source (origin
(method url-fetch)
(uri (string-append "https://yt-dl.org/downloads/"
@@ -1123,7 +1123,7 @@ access to mpv's powerful playback capabilities.")
version ".tar.gz"))
(sha256
(base32
- "10xs3d3ksfhalmvacpw2drkzi84y3rgy2jjr0wrzmqn1hx897a6r"))))
+ "0zr9sx0nxk36si8xbvhlnazb69xzlygrhsxcyiydm0dy5y5ycsns"))))
(build-system python-build-system)
(arguments
;; The problem here is that the directory for the man page and completion
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 0d2a247e12..41e52756e3 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -5365,3 +5365,22 @@ file links.")
file upload, download, on-screen display, namespace operations (move/copy),
collection creation and deletion, and locking operations.")
(license l:gpl2)))
+
+(define-public python-py-ubjson
+ (package
+ (name "python-py-ubjson")
+ (version "0.10.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "py-ubjson" version))
+ (sha256
+ (base32
+ "03l9m9w5ip4hw0y69wlys5gzsfb7zcq3a77blj88grgiqhn5vm5n"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/Iotic-Labs/py-ubjson")
+ (synopsis "Universal Binary JSON encoder/decoder")
+ (description
+ "Py-ubjson is a Python module providing an Universal Binary JSON
+encoder/decoder based on the draft-12 specification for UBJSON.")
+ (license l:asl2.0)))
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 051a2aa049..1a2bf80004 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -138,7 +138,7 @@
(string-append "SHELL=" (which "bash"))
(string-append "--prefix=" out)))
(zero? (system* "make" "install"))))))))))
- (home-page "http://www.x.org")
+ (home-page "https://www.x.org/")
(synopsis "Source code configuration and build system")
(description
"Imake is a deprecated source code configuration and build system which
@@ -167,7 +167,7 @@ autotools system.")
`(("pkg-config" ,pkg-config)))
(inputs
`(("xproto" ,xproto)))
- (home-page "http://www.x.org")
+ (home-page "https://www.x.org/")
(synopsis "Symlink directory into tree")
(description "Create a shadow directory of symbolic links to another
directory tree.")
@@ -1037,7 +1037,7 @@ of new capabilities and controls for text keyboards.")
(build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("xproto" ,xproto)))
- (home-page "http://xorg.freedesktop.org")
+ (home-page "https://www.x.org/")
(synopsis "Xorg shared memory fences library")
(description
"This library provides an interface to shared-memory fences for
@@ -4454,7 +4454,7 @@ formatted dump file, such as produced by xwd.")
`(("xproto" ,xproto)))
(native-inputs
`(("pkg-config" ,pkg-config)))
- (home-page "http://www.x.org/wiki/")
+ (home-page "https://www.x.org/wiki/")
(synopsis "X color name database")
(description
"This package provides the X color name database.")
@@ -5070,7 +5070,7 @@ over Xlib, including:
(define-public xorg-server
(package
(name "xorg-server")
- (version "1.19.4")
+ (version "1.19.5")
(source
(origin
(method url-fetch)
@@ -5079,7 +5079,7 @@ over Xlib, including:
name "-" version ".tar.bz2"))
(sha256
(base32
- "1a690fzv5l5ks45g9zhlzdskdq8q73mcbpb9a3wz3shxm778lxda"))
+ "0iql4pgsgpyqcrd3256pv227cdadvz01ych61n0d41ixp67gmzqq"))
(patches
(list
;; See:
@@ -5205,20 +5205,23 @@ draggable titlebars and borders.")
(license license:x11)))
;; This package is intended to be used when building GTK+.
+;; Note: It's currently marked as "hidden" to avoid having two non-eq?
+;; packages with the same name and version.
(define-public xorg-server-1.19.3
- (package
- (inherit xorg-server)
- (name "xorg-server")
- (version "1.19.3")
- (source
- (origin
- (method url-fetch)
- (uri (string-append
- "mirror://xorg/individual/xserver/"
- name "-" version ".tar.bz2"))
- (sha256
- (base32
- "162s1v901djr57gxmmk4airk8hiwcz79dqyz72972x1lw1k82yk7"))))))
+ (hidden-package
+ (package
+ (inherit xorg-server)
+ (name "xorg-server")
+ (version "1.19.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://xorg/individual/xserver/"
+ name "-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "162s1v901djr57gxmmk4airk8hiwcz79dqyz72972x1lw1k82yk7")))))))
(define-public xorg-server-xwayland
(package
@@ -5630,7 +5633,7 @@ The XCB util-wm module provides the following libraries:
`(("pkg-config" ,pkg-config)))
(propagated-inputs
`(("xauth" ,xauth)))
- (home-page "http://x.org")
+ (home-page "https://www.x.org/")
(synopsis "Commands to start the X Window server")
(description
"The xinit program is used to start the X Window System server and a
@@ -5764,7 +5767,7 @@ to answer a question. Xmessage can also exit after a specified time.")
("libXt" ,libxt)
("xproto" ,xproto)
("libXaw" ,libxaw)))
- (home-page "http://invisible-island.net/xterm")
+ (home-page "http://invisible-island.net/xterm/")
(synopsis "Terminal emulator for the X Window System")
(description
"The xterm program is a terminal emulator for the X Window System. It
diff --git a/gnu/services.scm b/gnu/services.scm
index 329b7b1513..0bd3620852 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -368,6 +368,12 @@ boot."
#t))))
;; Ignore I/O errors so the system can boot.
(fail-safe
+ ;; Remove stale Shadow lock files as they would lead to
+ ;; failures of 'useradd' & co.
+ (delete-file "/etc/group.lock")
+ (delete-file "/etc/passwd.lock")
+ (delete-file "/etc/.pwd.lock") ;from 'lckpwdf'
+
(delete-file-recursively "/tmp")
(delete-file-recursively "/var/run")
(mkdir "/tmp")
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 64620a9b0a..541ca76f14 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -307,7 +307,8 @@ FILE-SYSTEM."
'#$packages))))
(lambda ()
(mount-file-system
- '#$(file-system->spec file-system)
+ (spec->file-system
+ '#$(file-system->spec file-system))
#:root "/"))
(lambda ()
(setenv "PATH" $PATH)))
@@ -322,9 +323,10 @@ FILE-SYSTEM."
(umount #$target)
#f))
- ;; We need an additional module.
+ ;; We need additional modules.
(modules `(((gnu build file-systems)
#:select (mount-file-system))
+ (gnu system file-systems)
,@%default-modules)))))))
(define (file-system-shepherd-services file-systems)
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 527a3101cf..4b5100c27a 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -780,15 +780,23 @@ accountsservice web site} for more information."
gnome-desktop-configuration
(gnome-package gnome-package (default gnome)))
+(define (gnome-polkit-settings config)
+ "Return the list of GNOME dependencies that provide polkit actions and
+rules."
+ (let ((gnome (gnome-package config)))
+ (map (lambda (name)
+ ((package-direct-input-selector name) gnome))
+ '("gnome-settings-daemon"
+ "gnome-control-center"
+ "gnome-system-monitor"
+ "gvfs"))))
+
(define gnome-desktop-service-type
(service-type
(name 'gnome-desktop)
(extensions
(list (service-extension polkit-service-type
- (compose list
- (package-direct-input-selector
- "gnome-settings-daemon")
- gnome-package))
+ gnome-polkit-settings)
(service-extension profile-service-type
(compose list
gnome-package))))))
diff --git a/gnu/system/examples/lightweight-desktop.tmpl b/gnu/system/examples/lightweight-desktop.tmpl
index fb7cfebf6d..d13c04c76c 100644
--- a/gnu/system/examples/lightweight-desktop.tmpl
+++ b/gnu/system/examples/lightweight-desktop.tmpl
@@ -17,16 +17,16 @@
(bootloader grub-efi-bootloader)
(target "/boot/efi")))
- ;; Assume the target root file system is labelled "my-root".
+ ;; Assume the target root file system is labelled "my-root",
+ ;; and the EFI System Partition has UUID 1234-ABCD.
(file-systems (cons* (file-system
(device "my-root")
(title 'label)
(mount-point "/")
(type "ext4"))
(file-system
- ;; Specify partition here since FAT
- ;; labels are currently unsupported.
- (device "/dev/sda1")
+ (device (uuid "1234-ABCD" 'fat))
+ (title 'uuid)
(mount-point "/boot/efi")
(type "vfat"))
%base-file-systems))
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index 92f040425d..27734e892a 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -18,6 +18,7 @@
(define-module (gnu system file-systems)
#:use-module (ice-9 match)
+ #:use-module (rnrs bytevectors)
#:use-module (srfi srfi-1)
#:use-module (guix records)
#:use-module (gnu system uuid)
@@ -161,7 +162,7 @@ initrd code."
(match fs
(($ <file-system> device title mount-point type flags options _ _ check?)
(list (if (uuid? device)
- (uuid-bytevector device)
+ `(uuid ,(uuid-type device) ,(uuid-bytevector device))
device)
title mount-point type flags options check?))))
@@ -170,7 +171,12 @@ initrd code."
(match sexp
((device title mount-point type flags options check?)
(file-system
- (device device) (title title)
+ (device (match device
+ (('uuid (? symbol? type) (? bytevector? bv))
+ (bytevector->uuid bv type))
+ (_
+ device)))
+ (title title)
(mount-point mount-point) (type type)
(flags flags) (options options)
(check? check?)))))
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index 969a89266c..948c543a15 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -187,9 +187,11 @@ to it are lost."
'((gnu build linux-boot)
(guix build utils)
(guix build bournish)
+ (gnu system file-systems)
(gnu build file-systems)))
#~(begin
(use-modules (gnu build linux-boot)
+ (gnu system file-systems)
(guix build utils)
(guix build bournish) ;add the 'bournish' meta-command
(srfi srfi-26)
@@ -206,7 +208,9 @@ to it are lost."
(set-path-environment-variable "PATH" '("bin" "sbin")
'#$helper-packages)))
- (boot-system #:mounts '#$(map file-system->spec file-systems)
+ (boot-system #:mounts
+ (map spec->file-system
+ '#$(map file-system->spec file-systems))
#:pre-mount (lambda ()
(and #$@device-mapping-commands))
#:linux-modules '#$linux-modules
diff --git a/gnu/system/uuid.scm b/gnu/system/uuid.scm
index e422e06a6d..eaddfaed05 100644
--- a/gnu/system/uuid.scm
+++ b/gnu/system/uuid.scm
@@ -42,7 +42,7 @@
string->ext3-uuid
string->ext4-uuid
string->btrfs-uuid
- string->fat32-uuid
+ string->fat-uuid
iso9660-uuid->string
;; XXX: For lack of a better place.
@@ -164,25 +164,25 @@ ISO9660 UUID representation."
;;;
-;;; FAT32.
+;;; FAT32/FAT16.
;;;
-(define-syntax %fat32-endianness
- ;; Endianness of FAT file systems.
+(define-syntax %fat-endianness
+ ;; Endianness of FAT32/FAT16 file systems.
(identifier-syntax (endianness little)))
-(define (fat32-uuid->string uuid)
- "Convert fat32 UUID, a 4-byte bytevector, to its string representation."
- (let ((high (bytevector-uint-ref uuid 0 %fat32-endianness 2))
- (low (bytevector-uint-ref uuid 2 %fat32-endianness 2)))
+(define (fat-uuid->string uuid)
+ "Convert FAT32/FAT16 UUID, a 4-byte bytevector, to its string representation."
+ (let ((high (bytevector-uint-ref uuid 0 %fat-endianness 2))
+ (low (bytevector-uint-ref uuid 2 %fat-endianness 2)))
(format #f "~:@(~x-~x~)" low high)))
-(define %fat32-uuid-rx
+(define %fat-uuid-rx
(make-regexp "^([[:xdigit:]]{4})-([[:xdigit:]]{4})$"))
-(define (string->fat32-uuid str)
- "Parse STR, which is in FAT32 format, and return a bytevector or #f."
- (match (regexp-exec %fat32-uuid-rx str)
+(define (string->fat-uuid str)
+ "Parse STR, which is in FAT32/FAT16 format, and return a bytevector or #f."
+ (match (regexp-exec %fat-uuid-rx str)
(#f
#f)
(rx-match
@@ -190,7 +190,7 @@ ISO9660 UUID representation."
(match:substring rx-match 2) 16)
(string->number
(match:substring rx-match 1) 16))
- %fat32-endianness
+ %fat-endianness
2))))
@@ -216,14 +216,14 @@ ISO9660 UUID representation."
(define %uuid-parsers
(vhashq
('dce 'ext2 'ext3 'ext4 'btrfs 'luks => string->dce-uuid)
- ('fat32 'fat => string->fat32-uuid)
+ ('fat32 'fat16 'fat => string->fat-uuid)
('iso9660 => string->iso9660-uuid)))
(define %uuid-printers
(vhashq
('dce 'ext2 'ext3 'ext4 'btrfs 'luks => dce-uuid->string)
('iso9660 => iso9660-uuid->string)
- ('fat32 'fat => fat32-uuid->string)))
+ ('fat32 'fat16 'fat => fat-uuid->string)))
(define* (string->uuid str #:optional (type 'dce))
"Parse STR as a UUID of the given TYPE. On success, return the
diff --git a/guix/build-system/go.scm b/guix/build-system/go.scm
new file mode 100644
index 0000000000..43599df6f4
--- /dev/null
+++ b/guix/build-system/go.scm
@@ -0,0 +1,132 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Petter <petter@mykolab.ch>
+;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix build-system go)
+ #:use-module (guix utils)
+ #:use-module (guix derivations)
+ #:use-module (guix search-paths)
+ #:use-module (guix build-system)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix packages)
+ #:use-module (ice-9 match)
+ #:export (%go-build-system-modules
+ go-build
+ go-build-system))
+
+;; Commentary:
+;;
+;; Standard build procedure for packages using the Go build system. It is
+;; implemented as an extension of 'gnu-build-system'.
+;;
+;; Code:
+
+(define %go-build-system-modules
+ ;; Build-side modules imported and used by default.
+ `((guix build go-build-system)
+ ,@%gnu-build-system-modules))
+
+(define (default-go)
+ ;; Lazily resolve the binding to avoid a circular dependency.
+ (let ((go (resolve-interface '(gnu packages golang))))
+ (module-ref go 'go)))
+
+(define* (lower name
+ #:key source inputs native-inputs outputs system target
+ (go (default-go))
+ #:allow-other-keys
+ #:rest arguments)
+ "Return a bag for NAME."
+ (define private-keywords
+ '(#:source #:target #:go #:inputs #:native-inputs))
+
+ (and (not target) ;XXX: no cross-compilation
+ (bag
+ (name name)
+ (system system)
+ (host-inputs `(,@(if source
+ `(("source" ,source))
+ '())
+ ,@inputs
+
+ ;; Keep the standard inputs of 'gnu-build-system'.
+ ,@(standard-packages)))
+ (build-inputs `(("go" ,go)
+ ,@native-inputs))
+ (outputs outputs)
+ (build go-build)
+ (arguments (strip-keyword-arguments private-keywords arguments)))))
+
+(define* (go-build store name inputs
+ #:key
+ (phases '(@ (guix build go-build-system)
+ %standard-phases))
+ (outputs '("out"))
+ (search-paths '())
+ (import-path "")
+ (unpack-path "")
+ (tests? #t)
+ (system (%current-system))
+ (guile #f)
+ (imported-modules %go-build-system-modules)
+ (modules '((guix build go-build-system)
+ (guix build utils))))
+ (define builder
+ `(begin
+ (use-modules ,@modules)
+ (go-build #:name ,name
+ #:source ,(match (assoc-ref inputs "source")
+ (((? derivation? source))
+ (derivation->output-path source))
+ ((source)
+ source)
+ (source
+ source))
+ #:system ,system
+ #:phases ,phases
+ #:outputs %outputs
+ #:search-paths ',(map search-path-specification->sexp
+ search-paths)
+ #:import-path ,import-path
+ #:unpack-path ,unpack-path
+ #:tests? ,tests?
+ #: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 go-build-system
+ (build-system
+ (name 'go)
+ (description
+ "Build system for Go programs")
+ (lower lower)))
diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm
index 2404dbddb4..bd0d2e0266 100644
--- a/guix/build/emacs-build-system.scm
+++ b/guix/build/emacs-build-system.scm
@@ -92,8 +92,12 @@ store in '.el' files."
(el-dir (string-append out %install-suffix "/" elpa-name-ver))
(substitute-cmd (lambda ()
(substitute* (find-files "." "\\.el$")
- (("\"/bin/([^.].*)\"" _ cmd)
- (string-append "\"" (which cmd) "\""))))))
+ (("\"/bin/([^.]\\S*)\"" _ cmd-name)
+ (let ((cmd (which cmd-name)))
+ (unless cmd
+ (error
+ "patch-el-files: unable to locate " cmd-name))
+ (string-append "\"" cmd "\"")))))))
(with-directory-excursion el-dir
;; Some old '.el' files (e.g., tex-buf.el in AUCTeX) are still encoded
;; with the "ISO-8859-1" locale.
diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm
new file mode 100644
index 0000000000..7f04e3db8c
--- /dev/null
+++ b/guix/build/go-build-system.scm
@@ -0,0 +1,217 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Petter <petter@mykolab.ch>
+;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix build go-build-system)
+ #:use-module ((guix build gnu-build-system) #:prefix gnu:)
+ #:use-module (guix build utils)
+ #:use-module (ice-9 match)
+ #:use-module (srfi srfi-1)
+ #:export (%standard-phases
+ go-build))
+
+;; Commentary:
+;;
+;; Build procedures for Go packages. This is the builder-side code.
+;;
+;; Software written in Go is either a 'package' (i.e. library) or 'command'
+;; (i.e. executable). Both types can be built with either the `go build` or `go
+;; install` commands. However, `go build` discards the result of the build
+;; process for Go libraries, so we use `go install`, which preserves the
+;; results. [0]
+
+;; Go software is developed and built within a particular filesystem hierarchy
+;; structure called a 'workspace' [1]. This workspace is found by Go
+;; via the GOPATH environment variable. Typically, all Go source code
+;; and compiled objects are kept in a single workspace, but it is
+;; possible for GOPATH to contain a list of directories, and that is
+;; what we do in this go-build-system. [2]
+;;
+;; Go software, whether a package or a command, is uniquely named using
+;; an 'import path'. The import path is based on the URL of the
+;; software's source. Since most source code is provided over the
+;; internet, the import path is typically a combination of the remote
+;; URL and the source repository's filesystem structure. For example,
+;; the Go port of the common `du` command is hosted on github.com, at
+;; <https://github.com/calmh/du>. Thus, the import path is
+;; <github.com/calmh/du>. [3]
+;;
+;; It may be possible to programatically guess a package's import path
+;; based on the source URL, but we don't try that in this revision of
+;; the go-build-system.
+;;
+;; Modules of modular Go libraries are named uniquely with their
+;; filesystem paths. For example, the supplemental but "standardized"
+;; libraries developed by the Go upstream developers are available at
+;; <https://golang.org/x/{net,text,crypto, et cetera}>. The Go IPv4
+;; library's import path is <golang.org/x/net/ipv4>. The source of
+;; such modular libraries must be unpacked at the top-level of the
+;; filesystem structure of the library. So the IPv4 library should be
+;; unpacked to <golang.org/x/net>. This is handled in the
+;; go-build-system with the optional #:unpack-path key.
+;;
+;; In general, Go software is built using a standardized build mechanism
+;; that does not require any build scripts like Makefiles. This means
+;; that all modules of modular libraries cannot be built with a single
+;; command. Each module must be built individually. This complicates
+;; certain cases, and these issues are currently resolved by creating a
+;; filesystem union of the required modules of such libraries. I think
+;; this could be improved in future revisions of the go-build-system.
+;;
+;; [0] `go build`:
+;; https://golang.org/cmd/go/#hdr-Compile_packages_and_dependencies
+;; `go install`:
+;; https://golang.org/cmd/go/#hdr-Compile_and_install_packages_and_dependencies
+;; [1] Go workspace example, from <https://golang.org/doc/code.html#Workspaces>:
+;; bin/
+;; hello # command executable
+;; outyet # command executable
+;; pkg/
+;; linux_amd64/
+;; github.com/golang/example/
+;; stringutil.a # package object
+;; src/
+;; github.com/golang/example/
+;; .git/ # Git repository metadata
+;; hello/
+;; hello.go # command source
+;; outyet/
+;; main.go # command source
+;; main_test.go # test source
+;; stringutil/
+;; reverse.go # package source
+;; reverse_test.go # test source
+;; golang.org/x/image/
+;; .git/ # Git repository metadata
+;; bmp/
+;; reader.go # package source
+;; writer.go # package source
+;; ... (many more repositories and packages omitted) ...
+;;
+;; [2] https://golang.org/doc/code.html#GOPATH
+;; [3] https://golang.org/doc/code.html#ImportPaths
+;;
+;; Code:
+
+(define* (unpack #:key source import-path unpack-path #:allow-other-keys)
+ "Unpack SOURCE in the UNPACK-PATH, or the IMPORT-PATH is the UNPACK-PATH is
+unset. When SOURCE is a directory, copy it instead of unpacking."
+ (if (string-null? import-path)
+ ((display "WARNING: The Go import path is unset.\n")))
+ (if (string-null? unpack-path)
+ (set! unpack-path import-path))
+ (mkdir "src")
+ (let ((dest (string-append "src/" unpack-path)))
+ (mkdir-p dest)
+ (if (file-is-directory? source)
+ (begin
+ (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))))))
+
+(define* (install-source #:key 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)))
+ (copy-recursively source dest #:keep-mtime? #t)
+ #t))
+
+(define (go-package? name)
+ (string-prefix? "go-" name))
+
+(define (go-inputs inputs)
+ "Return the alist of INPUTS that are Go software."
+ ;; XXX This should not check the file name of the store item. Instead we
+ ;; should pass, from the host side, the list of inputs that are packages using
+ ;; the go-build-system.
+ (alist-delete "go" ; Exclude the Go compiler
+ (alist-delete "source" ; Exclude the source code of the package being built
+ (filter (match-lambda
+ ((label . directory)
+ (go-package? ((compose package-name->name+version
+ strip-store-file-name)
+ directory)))
+ (_ #f))
+ inputs))))
+
+(define* (setup-environment #:key inputs outputs #:allow-other-keys)
+ "Export the variables GOPATH and GOBIN, which are based on INPUTS and OUTPUTS,
+respectively."
+ (let ((out (assoc-ref outputs "out")))
+ ;; GOPATH is where Go looks for the source code of the build's dependencies.
+ (set-path-environment-variable "GOPATH"
+ ;; XXX Matching "." hints that we could do
+ ;; something simpler here...
+ (list ".")
+ (match (go-inputs inputs)
+ (((_ . dir) ...)
+ dir)))
+
+ ;; Add the source code of the package being built to GOPATH.
+ (if (getenv "GOPATH")
+ (setenv "GOPATH" (string-append (getcwd) ":" (getenv "GOPATH")))
+ (setenv "GOPATH" (getcwd)))
+ ;; Where to install compiled executable files ('commands' in Go parlance').
+ (setenv "GOBIN" out)
+ #t))
+
+(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
+ import-path))
+ (begin
+ (display (string-append "Building '" import-path "' failed.\n"
+ "Here are the results of `go env`:\n"))
+ (system* "go" "env")
+ #f)))
+
+(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))))
+
+(define* (install #:key outputs #:allow-other-keys)
+ "Install the compiled libraries. `go install` installs these files to
+$GOPATH/pkg, so we have to copy them into the output direcotry manually.
+Compiled executable files should have already been installed to the store based
+on $GOBIN in the build phase."
+ (when (file-exists? "pkg")
+ (copy-recursively "pkg" (string-append (assoc-ref outputs "out") "/pkg")))
+ #t)
+
+(define %standard-phases
+ (modify-phases gnu:%standard-phases
+ (delete 'configure)
+ (delete 'patch-generated-file-shebangs)
+ (replace 'unpack unpack)
+ (add-after 'unpack 'install-source install-source)
+ (add-before 'build 'setup-environment setup-environment)
+ (replace 'build build)
+ (replace 'check check)
+ (replace 'install install)))
+
+(define* (go-build #:key inputs (phases %standard-phases)
+ #:allow-other-keys #:rest args)
+ "Build the given Go package, applying all of PHASES in order."
+ (apply gnu:gnu-build #:inputs inputs #:phases phases args))
diff --git a/guix/import/cpan.scm b/guix/import/cpan.scm
index 01acc6f36e..6261e3e924 100644
--- a/guix/import/cpan.scm
+++ b/guix/import/cpan.scm
@@ -38,7 +38,6 @@
#:use-module (guix packages)
#:use-module (guix upstream)
#:use-module (guix derivations)
- #:use-module (gnu packages perl)
#:export (cpan->guix-package
%cpan-updater))
@@ -133,21 +132,28 @@ or #f on failure. MODULE should be e.g. \"Test::Script\""
(number->string version))
(version version)))
+(define (perl-package)
+ "Return the 'perl' package. This is a lazy reference so that we don't
+depend on (gnu packages perl)."
+ (module-ref (resolve-interface '(gnu packages perl)) 'perl))
+
(define %corelist
(delay
(let* ((perl (with-store store
(derivation->output-path
- (package-derivation store perl))))
+ (package-derivation store (perl-package)))))
(core (string-append perl "/bin/corelist")))
(and (access? core X_OK)
core))))
(define core-module?
- (let ((perl-version (package-version perl))
- (rx (make-regexp
+ (let ((rx (make-regexp
(string-append "released with perl v?([0-9\\.]*)"
"(.*and removed from v?([0-9\\.]*))?"))))
(lambda (name)
+ (define perl-version
+ (package-version (perl-package)))
+
(define (version-between? lower version upper)
(and (version>=? version lower)
(or (not upper)
diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm
index 90dbe56128..bb0db1ba85 100644
--- a/guix/import/pypi.scm
+++ b/guix/import/pypi.scm
@@ -44,7 +44,6 @@
#:use-module (guix upstream)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system python)
- #:use-module (gnu packages python)
#:export (guix-package->pypi-name
pypi->guix-package
%pypi-updater))
diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm
index fc61f0b547..a26f92f49c 100644
--- a/guix/scripts/lint.scm
+++ b/guix/scripts/lint.scm
@@ -414,8 +414,7 @@ for connections to complete; when TIMEOUT is #f, wait as long as needed."
(close-connection port))))
(case (response-code response)
- ((301 ; moved permanently
- 302 ; found (redirection)
+ ((302 ; found (redirection)
303 ; see other
307 ; temporary redirection
308) ; permanent redirection
@@ -423,6 +422,22 @@ for connections to complete; when TIMEOUT is #f, wait as long as needed."
(if (or (not location) (member location visited))
(values 'http-response response)
(loop location (cons location visited))))) ;follow the redirect
+ ((301) ; moved permanently
+ (let ((location (response-location response)))
+ ;; Return RESPONSE, unless the final response as we follow
+ ;; redirects is not 200.
+ (if location
+ (let-values (((status response2)
+ (loop location (cons location visited))))
+ (case status
+ ((http-response)
+ (values 'http-response
+ (if (= 200 (response-code response2))
+ response
+ response2)))
+ (else
+ (values status response2))))
+ (values 'http-response response)))) ;invalid redirect
(else
(values 'http-response response)))))
(lambda (key . args)
@@ -474,31 +489,46 @@ warning for PACKAGE mentionning the FIELD."
(probe-uri uri #:timeout 3))) ;wait at most 3 seconds
(case status
((http-response)
- (if (= 200 (response-code argument))
- (match (response-content-length argument)
- ((? number? length)
- ;; As of July 2016, SourceForge returns 200 (instead of 404)
- ;; with a small HTML page upon failure. Attempt to detect such
- ;; malicious behavior.
- (or (> length 1000)
+ (cond ((= 200 (response-code argument))
+ (match (response-content-length argument)
+ ((? number? length)
+ ;; As of July 2016, SourceForge returns 200 (instead of 404)
+ ;; with a small HTML page upon failure. Attempt to detect
+ ;; such malicious behavior.
+ (or (> length 1000)
+ (begin
+ (emit-warning package
+ (format #f
+ (G_ "URI ~a returned \
+suspiciously small file (~a bytes)")
+ (uri->string uri)
+ length))
+ #f)))
+ (_ #t)))
+ ((= 301 (response-code argument))
+ (if (response-location argument)
(begin
(emit-warning package
- (format #f
- (G_ "URI ~a returned \
-suspiciously small file (~a bytes)")
+ (format #f (G_ "permanent redirect from ~a to ~a")
(uri->string uri)
- length))
+ (uri->string
+ (response-location argument))))
+ #t)
+ (begin
+ (emit-warning package
+ (format #f (G_ "invalid permanent redirect \
+from ~a")
+ (uri->string uri)))
#f)))
- (_ #t))
- (begin
- (emit-warning package
- (format #f
- (G_ "URI ~a not reachable: ~a (~s)")
- (uri->string uri)
- (response-code argument)
- (response-reason-phrase argument))
- field)
- #f)))
+ (else
+ (emit-warning package
+ (format #f
+ (G_ "URI ~a not reachable: ~a (~s)")
+ (uri->string uri)
+ (response-code argument)
+ (response-reason-phrase argument))
+ field)
+ #f)))
((ftp-response)
(match argument
(('ok) #t)
@@ -534,7 +564,7 @@ suspiciously small file (~a bytes)")
((invalid-http-response gnutls-error)
;; Probably a misbehaving server; ignore.
#f)
- ((unknown-protocol) ;nothing we can do
+ ((unknown-protocol) ;nothing we can do
#f)
(else
(error "internal linter error" status)))))
diff --git a/guix/scripts/offload.scm b/guix/scripts/offload.scm
index d3cb64d604..6a2485a007 100644
--- a/guix/scripts/offload.scm
+++ b/guix/scripts/offload.scm
@@ -428,6 +428,23 @@ allowed on MACHINE. Return +∞ if MACHINE is unreachable."
"Return the name of the file used as a lock when choosing a build machine."
(string-append %state-directory "/offload/machine-choice.lock"))
+(define (random-seed)
+ (logxor (getpid) (car (gettimeofday))))
+
+(define shuffle
+ (let ((state (seed->random-state (random-seed))))
+ (lambda (lst)
+ "Return LST shuffled (using the Fisher-Yates algorithm.)"
+ (define vec (list->vector lst))
+ (let loop ((result '())
+ (i (vector-length vec)))
+ (if (zero? i)
+ result
+ (let* ((j (random i state))
+ (val (vector-ref vec j)))
+ (vector-set! vec j (vector-ref vec (- i 1)))
+ (loop (cons val result) (- i 1))))))))
+
(define (choose-build-machine machines)
"Return two values: the best machine among MACHINES and its build
slot (which must later be released with 'release-build-slot'), or #f and #f."
@@ -441,39 +458,35 @@ slot (which must later be released with 'release-build-slot'), or #f and #f."
;; 5. Release the global machine-choice lock.
(with-file-lock (machine-choice-lock-file)
- (define machines+slots+loads
+ (define machines+slots
(filter-map (lambda (machine)
- ;; Call 'machine-load' from here to make sure it is called
- ;; only once per machine (it is expensive).
(let ((slot (acquire-build-slot machine)))
- (and slot
- (list machine slot (machine-load machine)))))
- machines))
+ (and slot (list machine slot))))
+ (shuffle machines)))
(define (undecorate pred)
(lambda (a b)
(match a
- ((machine1 slot1 load1)
+ ((machine1 slot1)
(match b
- ((machine2 slot2 load2)
- (pred machine1 load1 machine2 load2)))))))
-
- (define (machine-less-loaded-or-faster? m1 l1 m2 l2)
- ;; Return #t if M1 is either less loaded or faster than M2, with L1
- ;; being the load of M1 and L2 the load of M2. (This relation defines a
- ;; total order on machines.)
- (> (/ (build-machine-speed m1) (+ 1 l1))
- (/ (build-machine-speed m2) (+ 1 l2))))
-
- (let loop ((machines+slots+loads
- (sort machines+slots+loads
- (undecorate machine-less-loaded-or-faster?))))
- (match machines+slots+loads
- (((best slot load) others ...)
+ ((machine2 slot2)
+ (pred machine1 machine2)))))))
+
+ (define (machine-faster? m1 m2)
+ ;; Return #t if M1 is faster than M2.
+ (> (build-machine-speed m1)
+ (build-machine-speed m2)))
+
+ (let loop ((machines+slots
+ (sort machines+slots (undecorate machine-faster?))))
+ (match machines+slots
+ (((best slot) others ...)
;; Return the best machine unless it's already overloaded.
- (if (< load 2.)
+ ;; Note: We call 'machine-load' only as a last resort because it is
+ ;; too costly to call it once for every machine.
+ (if (< (machine-load best) 2.)
(match others
- (((machines slots loads) ...)
+ (((machines slots) ...)
;; Release slots from the uninteresting machines.
(for-each release-build-slot slots)
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 3dcf42d0d1..921a7c6790 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -962,6 +962,7 @@ DESTINATION as a nar file. Verify the substitute against ACL."
;; Unpack the Nar at INPUT into DESTINATION.
(restore-file input destination)
(close-port input)
+ (close-port progress)
;; Skip a line after what 'progress-reporter/file' printed, and another
;; one to visually separate substitutions.
diff --git a/guix/tests/http.scm b/guix/tests/http.scm
index fe1e120c5d..a56d6f213d 100644
--- a/guix/tests/http.scm
+++ b/guix/tests/http.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -25,7 +25,7 @@
#:export (with-http-server
call-with-http-server
%http-server-port
- %http-server-socket
+ http-server-can-listen?
%local-url))
;;; Commentary:
@@ -38,75 +38,85 @@
;; TCP port to use for the stub HTTP server.
(make-parameter 9999))
+(define (open-http-server-socket)
+ "Return a listening socket for the web server. It is useful to export it so
+that tests can check whether we succeeded opening the socket and tests skip if
+needed."
+ (catch 'system-error
+ (lambda ()
+ (let ((sock (socket PF_INET SOCK_STREAM 0)))
+ (setsockopt sock SOL_SOCKET SO_REUSEADDR 1)
+ (bind sock
+ (make-socket-address AF_INET INADDR_LOOPBACK
+ (%http-server-port)))
+ sock))
+ (lambda args
+ (let ((err (system-error-errno args)))
+ (format (current-error-port)
+ "warning: cannot run Web server for tests: ~a~%"
+ (strerror err))
+ #f))))
+
+(define (http-server-can-listen?)
+ "Return #t if we managed to open a listening socket."
+ (and=> (open-http-server-socket)
+ (lambda (socket)
+ (close-port socket)
+ #t)))
+
(define (%local-url)
;; URL to use for 'home-page' tests.
(string-append "http://localhost:" (number->string (%http-server-port))
"/foo/bar"))
-(define %http-server-socket
- ;; Listening socket for the web server. It is useful to export it so that
- ;; tests can check whether we succeeded opening the socket and tests skip if
- ;; needed.
- (delay
- (catch 'system-error
- (lambda ()
- (let ((sock (socket PF_INET SOCK_STREAM 0)))
- (setsockopt sock SOL_SOCKET SO_REUSEADDR 1)
- (bind sock
- (make-socket-address AF_INET INADDR_LOOPBACK
- (%http-server-port)))
- sock))
- (lambda args
- (let ((err (system-error-errno args)))
- (format (current-error-port)
- "warning: cannot run Web server for tests: ~a~%"
- (strerror err))
- #f)))))
-
-(define (http-write server client response body)
- "Write RESPONSE."
- (let* ((response (write-response response client))
- (port (response-port response)))
- (cond
- ((not body)) ;pass
- (else
- (write-response-body response body)))
- (close-port port)
- (quit #t) ;exit the server thread
- (values)))
+(define* (call-with-http-server code data thunk
+ #:key (headers '()))
+ "Call THUNK with an HTTP server running and returning CODE and DATA (a
+string) on HTTP requests."
+ (define (http-write server client response body)
+ "Write RESPONSE."
+ (let* ((response (write-response response client))
+ (port (response-port response)))
+ (cond
+ ((not body)) ;pass
+ (else
+ (write-response-body response body)))
+ (close-port port)
+ (quit #t) ;exit the server thread
+ (values)))
-;; Mutex and condition variable to synchronize with the HTTP server.
-(define %http-server-lock (make-mutex))
-(define %http-server-ready (make-condition-variable))
+ ;; Mutex and condition variable to synchronize with the HTTP server.
+ (define %http-server-lock (make-mutex))
+ (define %http-server-ready (make-condition-variable))
-(define (http-open . args)
- "Start listening for HTTP requests and signal %HTTP-SERVER-READY."
- (with-mutex %http-server-lock
- (let ((result (apply (@@ (web server http) http-open) args)))
- (signal-condition-variable %http-server-ready)
- result)))
+ (define (http-open . args)
+ "Start listening for HTTP requests and signal %HTTP-SERVER-READY."
+ (with-mutex %http-server-lock
+ (let ((result (apply (@@ (web server http) http-open) args)))
+ (signal-condition-variable %http-server-ready)
+ result)))
-(define-server-impl stub-http-server
- ;; Stripped-down version of Guile's built-in HTTP server.
- http-open
- (@@ (web server http) http-read)
- http-write
- (@@ (web server http) http-close))
+ (define-server-impl stub-http-server
+ ;; Stripped-down version of Guile's built-in HTTP server.
+ http-open
+ (@@ (web server http) http-read)
+ http-write
+ (@@ (web server http) http-close))
-(define (call-with-http-server code data thunk)
- "Call THUNK with an HTTP server running and returning CODE and DATA (a
-string) on HTTP requests."
(define (server-body)
(define (handle request body)
(values (build-response #:code code
- #:reason-phrase "Such is life")
+ #:reason-phrase "Such is life"
+ #:headers headers)
data))
- (catch 'quit
- (lambda ()
- (run-server handle stub-http-server
- `(#:socket ,(force %http-server-socket))))
- (const #t)))
+ (let ((socket (open-http-server-socket)))
+ (catch 'quit
+ (lambda ()
+ (run-server handle stub-http-server
+ `(#:socket ,socket)))
+ (lambda _
+ (close-port socket)))))
(with-mutex %http-server-lock
(let ((server (make-thread server-body)))
@@ -114,7 +124,12 @@ string) on HTTP requests."
;; Normally SERVER exits automatically once it has received a request.
(thunk))))
-(define-syntax-rule (with-http-server code data body ...)
- (call-with-http-server code data (lambda () body ...)))
+(define-syntax with-http-server
+ (syntax-rules ()
+ ((_ (code headers) data body ...)
+ (call-with-http-server code data (lambda () body ...)
+ #:headers headers))
+ ((_ code data body ...)
+ (call-with-http-server code data (lambda () body ...)))))
;;; http.scm ends here
diff --git a/guix/ui.scm b/guix/ui.scm
index 6dfc8c7a5b..3c8734a7d5 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -257,6 +257,15 @@ ARGS is the list of arguments received by the 'throw' handler."
(('system-error . rest)
(let ((err (system-error-errno args)))
(report-error (G_ "failed to load '~a': ~a~%") file (strerror err))))
+ (('read-error "scm_i_lreadparen" message _ ...)
+ ;; Guile's missing-paren messages are obscure so we make them more
+ ;; intelligible here.
+ (if (string-suffix? "end of file" message)
+ (let ((location (string-drop-right message
+ (string-length "end of file"))))
+ (format (current-error-port) (G_ "~amissing closing parenthesis~%")
+ location))
+ (apply throw args)))
(('syntax-error proc message properties form . rest)
(let ((loc (source-properties->location properties)))
(format (current-error-port) (G_ "~a: error: ~a~%")
diff --git a/guix/zlib.scm b/guix/zlib.scm
index 3d830ef84e..955589ab48 100644
--- a/guix/zlib.scm
+++ b/guix/zlib.scm
@@ -149,6 +149,31 @@ the number of uncompressed bytes written, a strictly positive integer."
;; Z_DEFAULT_COMPRESSION.
-1)
+(define (close-procedure gzfile port)
+ "Return a procedure that closes GZFILE, ensuring its underlying PORT is
+closed even if closing GZFILE triggers an exception."
+ (let-syntax ((ignore-EBADF
+ (syntax-rules ()
+ ((_ exp)
+ (catch 'system-error
+ (lambda ()
+ exp)
+ (lambda args
+ (unless (= EBADF (system-error-errno args))
+ (apply throw args))))))))
+
+ (lambda ()
+ (catch 'zlib-error
+ (lambda ()
+ ;; 'gzclose' closes the underlying file descriptor. 'close-port'
+ ;; calls close(2) and gets EBADF, which we swallow.
+ (gzclose gzfile)
+ (ignore-EBADF (close-port port)))
+ (lambda args
+ ;; Make sure PORT is closed despite the zlib error.
+ (ignore-EBADF (close-port port))
+ (apply throw args))))))
+
(define* (make-gzip-input-port port #:key (buffer-size %default-buffer-size))
"Return an input port that decompresses data read from PORT, a file port.
PORT is automatically closed when the resulting port is closed. BUFFER-SIZE
@@ -158,11 +183,7 @@ buffered input, which would be lost (and is lost anyway)."
(define gzfile
(match (drain-input port)
("" ;PORT's buffer is empty
- ;; Since 'gzclose' will eventually close the file descriptor beneath
- ;; PORT, we increase PORT's revealed count and never call 'close-port'
- ;; on PORT since we would get EBADF if 'gzclose' already closed it (on
- ;; 2.0 EBADF is swallowed by 'fport_close' but on 2.2 it is raised).
- (gzdopen (port->fdes port) "r"))
+ (gzdopen (fileno port) "r"))
(_
;; This is unrecoverable but it's better than having the buffered input
;; be lost, leading to unclear end-of-file or corrupt-data errors down
@@ -177,8 +198,7 @@ buffered input, which would be lost (and is lost anyway)."
(gzbuffer! gzfile buffer-size))
(make-custom-binary-input-port "gzip-input" read! #f #f
- (lambda ()
- (gzclose gzfile))))
+ (close-procedure gzfile port)))
(define* (make-gzip-output-port port
#:key
@@ -190,7 +210,7 @@ port is closed."
(define gzfile
(begin
(force-output port) ;empty PORT's buffer
- (gzdopen (port->fdes port)
+ (gzdopen (fileno port)
(string-append "w" (number->string level)))))
(define (write! bv start count)
@@ -200,8 +220,7 @@ port is closed."
(gzbuffer! gzfile buffer-size))
(make-custom-binary-output-port "gzip-output" write! #f #f
- (lambda ()
- (gzclose gzfile))))
+ (close-procedure gzfile port)))
(define* (call-with-gzip-input-port port proc
#:key (buffer-size %default-buffer-size))
diff --git a/tests/derivations.scm b/tests/derivations.scm
index f3aad1b906..36afd42d05 100644
--- a/tests/derivations.scm
+++ b/tests/derivations.scm
@@ -222,7 +222,7 @@
(build-derivations %store (list drv))
#f)))
-(unless (force %http-server-socket)
+(unless (http-server-can-listen?)
(test-skip 1))
(test-assert "'download' built-in builder"
(let ((text (random-text)))
@@ -238,7 +238,7 @@
get-string-all)
text))))))
-(unless (force %http-server-socket)
+(unless (http-server-can-listen?)
(test-skip 1))
(test-assert "'download' built-in builder, invalid hash"
(with-http-server 200 "hello, world!"
@@ -253,7 +253,7 @@
(build-derivations %store (list drv))
#f))))
-(unless (force %http-server-socket)
+(unless (http-server-can-listen?)
(test-skip 1))
(test-assert "'download' built-in builder, not found"
(with-http-server 404 "not found"
@@ -279,7 +279,7 @@
(build-derivations %store (list drv))
#f)))
-(unless (force %http-server-socket)
+(unless (http-server-can-listen?)
(test-skip 1))
(test-assert "'download' built-in builder, check mode"
;; Make sure rebuilding the 'builtin:download' derivation in check mode
diff --git a/tests/guix-system.sh b/tests/guix-system.sh
index d575795ea0..31ee637133 100644
--- a/tests/guix-system.sh
+++ b/tests/guix-system.sh
@@ -53,6 +53,21 @@ else
fi
+cat > "$tmpfile"<<EOF
+;; This is line 1, and the next one is line 2.
+ (operating-system
+;; This is line 3, and there is no closing paren!
+EOF
+
+if guix system vm "$tmpfile" 2> "$errorfile"
+then
+ # This must not succeed.
+ exit 1
+else
+ grep "$tmpfile:4:1: missing closing paren" "$errorfile"
+fi
+
+
# Reporting of unbound variables.
cat > "$tmpfile" <<EOF
diff --git a/tests/lint.scm b/tests/lint.scm
index 7610a91fd3..1d0fc4708c 100644
--- a/tests/lint.scm
+++ b/tests/lint.scm
@@ -37,6 +37,7 @@
#:use-module (gnu packages glib)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
+ #:use-module (web uri)
#:use-module (web server)
#:use-module (web server http)
#:use-module (web response)
@@ -388,7 +389,7 @@
(check-home-page pkg)))
"domain not found")))
-(test-skip (if (force %http-server-socket) 0 1))
+(test-skip (if (http-server-can-listen?) 0 1))
(test-assert "home-page: Connection refused"
(->bool
(string-contains
@@ -399,7 +400,7 @@
(check-home-page pkg)))
"Connection refused")))
-(test-skip (if (force %http-server-socket) 0 1))
+(test-skip (if (http-server-can-listen?) 0 1))
(test-equal "home-page: 200"
""
(with-warnings
@@ -409,7 +410,7 @@
(home-page (%local-url)))))
(check-home-page pkg)))))
-(test-skip (if (force %http-server-socket) 0 1))
+(test-skip (if (http-server-can-listen?) 0 1))
(test-assert "home-page: 200 but short length"
(->bool
(string-contains
@@ -421,7 +422,7 @@
(check-home-page pkg))))
"suspiciously small")))
-(test-skip (if (force %http-server-socket) 0 1))
+(test-skip (if (http-server-can-listen?) 0 1))
(test-assert "home-page: 404"
(->bool
(string-contains
@@ -433,6 +434,52 @@
(check-home-page pkg))))
"not reachable: 404")))
+(test-skip (if (http-server-can-listen?) 0 1))
+(test-assert "home-page: 301, invalid"
+ (->bool
+ (string-contains
+ (with-warnings
+ (with-http-server 301 %long-string
+ (let ((pkg (package
+ (inherit (dummy-package "x"))
+ (home-page (%local-url)))))
+ (check-home-page pkg))))
+ "invalid permanent redirect")))
+
+(test-skip (if (http-server-can-listen?) 0 1))
+(test-assert "home-page: 301 -> 200"
+ (->bool
+ (string-contains
+ (with-warnings
+ (with-http-server 200 %long-string
+ (let ((initial-url (%local-url)))
+ (parameterize ((%http-server-port (+ 1 (%http-server-port))))
+ (with-http-server (301 `((location
+ . ,(string->uri initial-url))))
+ ""
+ (let ((pkg (package
+ (inherit (dummy-package "x"))
+ (home-page (%local-url)))))
+ (check-home-page pkg)))))))
+ "permanent redirect")))
+
+(test-skip (if (http-server-can-listen?) 0 1))
+(test-assert "home-page: 301 -> 404"
+ (->bool
+ (string-contains
+ (with-warnings
+ (with-http-server 404 "booh!"
+ (let ((initial-url (%local-url)))
+ (parameterize ((%http-server-port (+ 1 (%http-server-port))))
+ (with-http-server (301 `((location
+ . ,(string->uri initial-url))))
+ ""
+ (let ((pkg (package
+ (inherit (dummy-package "x"))
+ (home-page (%local-url)))))
+ (check-home-page pkg)))))))
+ "not reachable: 404")))
+
(test-assert "source-file-name"
(->bool
(string-contains
@@ -510,7 +557,7 @@
(check-source-file-name pkg)))
"file name should contain the package name"))))
-(test-skip (if (force %http-server-socket) 0 1))
+(test-skip (if (http-server-can-listen?) 0 1))
(test-equal "source: 200"
""
(with-warnings
@@ -523,7 +570,7 @@
(sha256 %null-sha256))))))
(check-source pkg)))))
-(test-skip (if (force %http-server-socket) 0 1))
+(test-skip (if (http-server-can-listen?) 0 1))
(test-assert "source: 200 but short length"
(->bool
(string-contains
@@ -538,7 +585,7 @@
(check-source pkg))))
"suspiciously small")))
-(test-skip (if (force %http-server-socket) 0 1))
+(test-skip (if (http-server-can-listen?) 0 1))
(test-assert "source: 404"
(->bool
(string-contains
@@ -553,6 +600,42 @@
(check-source pkg))))
"not reachable: 404")))
+(test-skip (if (http-server-can-listen?) 0 1))
+(test-equal "source: 301 -> 200"
+ ""
+ (with-warnings
+ (with-http-server 200 %long-string
+ (let ((initial-url (%local-url)))
+ (parameterize ((%http-server-port (+ 1 (%http-server-port))))
+ (with-http-server (301 `((location . ,(string->uri initial-url))))
+ ""
+ (let ((pkg (package
+ (inherit (dummy-package "x"))
+ (source (origin
+ (method url-fetch)
+ (uri (%local-url))
+ (sha256 %null-sha256))))))
+ (check-source pkg))))))))
+
+(test-skip (if (http-server-can-listen?) 0 1))
+(test-assert "source: 301 -> 404"
+ (->bool
+ (string-contains
+ (with-warnings
+ (with-http-server 404 "booh!"
+ (let ((initial-url (%local-url)))
+ (parameterize ((%http-server-port (+ 1 (%http-server-port))))
+ (with-http-server (301 `((location . ,(string->uri initial-url))))
+ ""
+ (let ((pkg (package
+ (inherit (dummy-package "x"))
+ (source (origin
+ (method url-fetch)
+ (uri (%local-url))
+ (sha256 %null-sha256))))))
+ (check-source pkg)))))))
+ "not reachable: 404")))
+
(test-assert "mirror-url"
(string-null?
(with-warnings
diff --git a/tests/zlib.scm b/tests/zlib.scm
index f71609b7c5..5455240a71 100644
--- a/tests/zlib.scm
+++ b/tests/zlib.scm
@@ -57,16 +57,7 @@
(match (waitpid pid)
((_ . status)
(and (zero? status)
-
- ;; PORT itself isn't closed but its underlying file
- ;; descriptor must have been closed by 'gzclose'.
- (catch 'system-error
- (lambda ()
- (seek (fileno parent) 0 SEEK_CUR)
- #f)
- (lambda args
- (= EBADF (system-error-errno args))))
-
+ (port-closed? parent)
(bytevector=? received data))))))))))))
(test-end)