summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/contributing.texi6
-rw-r--r--doc/guix.texi88
-rw-r--r--gnu/bootloader/extlinux.scm20
-rw-r--r--gnu/local.mk23
-rw-r--r--gnu/packages/abiword.scm5
-rw-r--r--gnu/packages/admin.scm10
-rw-r--r--gnu/packages/adns.scm4
-rw-r--r--gnu/packages/algebra.scm4
-rw-r--r--gnu/packages/assembly.scm12
-rw-r--r--gnu/packages/astronomy.scm4
-rw-r--r--gnu/packages/audio.scm1
-rw-r--r--gnu/packages/avr.scm4
-rw-r--r--gnu/packages/base.scm52
-rw-r--r--gnu/packages/bioinformatics.scm180
-rw-r--r--gnu/packages/bootloaders.scm14
-rw-r--r--gnu/packages/busybox.scm52
-rw-r--r--gnu/packages/cdrom.scm1
-rw-r--r--gnu/packages/ci.scm1
-rw-r--r--gnu/packages/commencement.scm6
-rw-r--r--gnu/packages/compression.scm188
-rw-r--r--gnu/packages/databases.scm60
-rw-r--r--gnu/packages/dns.scm186
-rw-r--r--gnu/packages/docbook.scm3
-rw-r--r--gnu/packages/documentation.scm3
-rw-r--r--gnu/packages/ebook.scm14
-rw-r--r--gnu/packages/electronics.scm253
-rw-r--r--gnu/packages/emacs.scm80
-rw-r--r--gnu/packages/embedded.scm9
-rw-r--r--gnu/packages/engineering.scm172
-rw-r--r--gnu/packages/enlightenment.scm5
-rw-r--r--gnu/packages/fonts.scm58
-rw-r--r--gnu/packages/fpga.scm2
-rw-r--r--gnu/packages/game-development.scm96
-rw-r--r--gnu/packages/games.scm177
-rw-r--r--gnu/packages/gl.scm1
-rw-r--r--gnu/packages/gnome.scm50
-rw-r--r--gnu/packages/gnuzilla.scm1
-rw-r--r--gnu/packages/graphics.scm3
-rw-r--r--gnu/packages/gstreamer.scm28
-rw-r--r--gnu/packages/guile.scm2
-rw-r--r--gnu/packages/haskell.scm5
-rw-r--r--gnu/packages/image-viewers.scm8
-rw-r--r--gnu/packages/image.scm47
-rw-r--r--gnu/packages/imagemagick.scm4
-rw-r--r--gnu/packages/irc.scm4
-rw-r--r--gnu/packages/java.scm1
-rw-r--r--gnu/packages/javascript.scm51
-rw-r--r--gnu/packages/julia.scm53
-rw-r--r--gnu/packages/kodi.scm3
-rw-r--r--gnu/packages/ldc.scm3
-rw-r--r--gnu/packages/libffcall.scm16
-rw-r--r--gnu/packages/libreoffice.scm3
-rw-r--r--gnu/packages/linux.scm117
-rw-r--r--gnu/packages/mail.scm2
-rw-r--r--gnu/packages/markup.scm4
-rw-r--r--gnu/packages/maths.scm17
-rw-r--r--gnu/packages/mc.scm2
-rw-r--r--gnu/packages/monitoring.scm3
-rw-r--r--gnu/packages/mpd.scm3
-rw-r--r--gnu/packages/music.scm18
-rw-r--r--gnu/packages/nano.scm4
-rw-r--r--gnu/packages/networking.scm40
-rw-r--r--gnu/packages/openstack.scm29
-rw-r--r--gnu/packages/password-utils.scm46
-rw-r--r--gnu/packages/patches/abiword-wmf-version-lookup-fix.patch28
-rw-r--r--gnu/packages/patches/calibre-dont-load-remote-icons.patch45
-rw-r--r--gnu/packages/patches/glibc-CVE-2017-1000366-pt1.patch36
-rw-r--r--gnu/packages/patches/glibc-CVE-2017-1000366-pt2.patch124
-rw-r--r--gnu/packages/patches/glibc-CVE-2017-1000366-pt3.patch206
-rw-r--r--gnu/packages/patches/glibc-vectorized-strcspn-guards.patch23
-rw-r--r--gnu/packages/patches/libwmf-CAN-2004-0941.patch21
-rw-r--r--gnu/packages/patches/libwmf-CVE-2006-3376.patch30
-rw-r--r--gnu/packages/patches/libwmf-CVE-2007-0455.patch15
-rw-r--r--gnu/packages/patches/libwmf-CVE-2007-2756.patch20
-rw-r--r--gnu/packages/patches/libwmf-CVE-2007-3472.patch63
-rw-r--r--gnu/packages/patches/libwmf-CVE-2007-3473.patch17
-rw-r--r--gnu/packages/patches/libwmf-CVE-2007-3477.patch42
-rw-r--r--gnu/packages/patches/libwmf-CVE-2009-1364.patch13
-rw-r--r--gnu/packages/patches/libwmf-CVE-2009-3546.patch17
-rw-r--r--gnu/packages/patches/libwmf-CVE-2015-0848+CVE-2015-4588.patch122
-rw-r--r--gnu/packages/patches/libwmf-CVE-2015-4695.patch60
-rw-r--r--gnu/packages/patches/libwmf-CVE-2015-4696.patch27
-rw-r--r--gnu/packages/patches/qemu-CVE-2017-9524.patch287
-rw-r--r--gnu/packages/photo.scm103
-rw-r--r--gnu/packages/php.scm1
-rw-r--r--gnu/packages/pretty-print.scm30
-rw-r--r--gnu/packages/python.scm162
-rw-r--r--gnu/packages/qemu.scm40
-rw-r--r--gnu/packages/qt.scm9
-rw-r--r--gnu/packages/rust.scm35
-rw-r--r--gnu/packages/scheme.scm1
-rw-r--r--gnu/packages/smalltalk.scm4
-rw-r--r--gnu/packages/statistics.scm1
-rw-r--r--gnu/packages/synergy.scm2
-rw-r--r--gnu/packages/tex.scm1
-rw-r--r--gnu/packages/textutils.scm34
-rw-r--r--gnu/packages/tls.scm4
-rw-r--r--gnu/packages/tor.scm4
-rw-r--r--gnu/packages/version-control.scm24
-rw-r--r--gnu/packages/video.scm7
-rw-r--r--gnu/packages/vpn.scm4
-rw-r--r--gnu/packages/web-browsers.scm1
-rw-r--r--gnu/packages/web.scm13
-rw-r--r--gnu/packages/webkit.scm4
-rw-r--r--gnu/packages/wine.scm13
-rw-r--r--gnu/packages/wm.scm9
-rw-r--r--gnu/packages/wv.scm5
-rw-r--r--gnu/packages/xdisorg.scm7
-rw-r--r--gnu/packages/xiph.scm12
-rw-r--r--gnu/packages/xml.scm1
-rw-r--r--gnu/packages/xorg.scm104
-rw-r--r--gnu/packages/zip.scm183
-rw-r--r--gnu/services/dns.scm20
-rw-r--r--gnu/services/networking.scm3
-rw-r--r--gnu/tests/install.scm92
-rw-r--r--guix/build-system/ant.scm2
-rw-r--r--guix/build-system/font.scm2
-rw-r--r--guix/download.scm2
-rw-r--r--guix/packages.scm2
-rw-r--r--guix/profiles.scm266
-rw-r--r--guix/scripts/environment.scm7
-rw-r--r--guix/scripts/package.scm9
-rw-r--r--guix/scripts/refresh.scm35
-rw-r--r--guix/store.scm16
-rw-r--r--guix/ui.scm27
-rw-r--r--nix/nix-daemon/guix-daemon.cc152
-rw-r--r--nix/nix-daemon/nix-daemon.cc297
-rw-r--r--po/packages/POTFILES.in1
-rw-r--r--tests/guix-daemon.sh12
-rw-r--r--tests/guix-environment.sh4
-rw-r--r--tests/profiles.scm112
131 files changed, 3982 insertions, 1454 deletions
diff --git a/doc/contributing.texi b/doc/contributing.texi
index 925c584e42..0073f24518 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -334,6 +334,12 @@ updates for a given software package in a single place and have them
affect the whole system---something that bundled copies prevent.
@item
+If the authors of the packaged software provide a cryptographic
+signature for the release tarball, make an effort to verify the
+authenticity of the archive. For a detached GPG signature file this
+would be done with the @code{gpg --verify} command.
+
+@item
Take a look at the profile reported by @command{guix size}
(@pxref{Invoking guix size}). This will allow you to notice references
to other packages unwillingly retained. It may also help determine
diff --git a/doc/guix.texi b/doc/guix.texi
index 4933a98ddb..729ec081be 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -1258,12 +1258,47 @@ Assume @var{system} as the current system type. By default it is the
architecture/kernel pair found at configure time, such as
@code{x86_64-linux}.
-@item --listen=@var{socket}
-Listen for connections on @var{socket}, the file name of a Unix-domain
-socket. The default socket is
-@file{@var{localstatedir}/daemon-socket/socket}. This option is only
-useful in exceptional circumstances, such as if you need to run several
-daemons on the same machine.
+@item --listen=@var{endpoint}
+Listen for connections on @var{endpoint}. @var{endpoint} is interpreted
+as the file name of a Unix-domain socket if it starts with
+@code{/} (slash sign). Otherwise, @var{endpoint} is interpreted as a
+host name or host name and port to listen to. Here are a few examples:
+
+@table @code
+@item --listen=/gnu/var/daemon
+Listen for connections on the @file{/gnu/var/daemon} Unix-domain socket,
+creating it if needed.
+
+@item --listen=localhost
+@cindex daemon, remote access
+@cindex remote access to the daemon
+@cindex daemon, cluster setup
+@cindex clusters, daemon setup
+Listen for TCP connections on the network interface corresponding to
+@code{localhost}, on port 44146.
+
+@item --listen=128.0.0.42:1234
+Listen for TCP connections on the network interface corresponding to
+@code{128.0.0.42}, on port 1234.
+@end table
+
+This option can be repeated multiple times, in which case
+@command{guix-daemon} accepts connections on all the specified
+endpoints. Users can tell client commands what endpoint to connect to
+by setting the @code{GUIX_DAEMON_SOCKET} environment variable
+(@pxref{The Store, @code{GUIX_DAEMON_SOCKET}}).
+
+@quotation Note
+The daemon protocol is @emph{unauthenticated and unencrypted}. Using
+@code{--listen=@var{host}} is suitable on local networks, such as
+clusters, where only trusted nodes may connect to the build daemon. In
+other cases where remote access to the daemon is needed, we recommend
+using Unix-domain sockets along with SSH.
+@end quotation
+
+When @code{--listen} is omitted, @command{guix-daemon} listens for
+connections on the Unix-domain socket located at
+@file{@var{localstatedir}/daemon-socket/socket}.
@end table
@@ -3769,9 +3804,13 @@ These are for Unix-domain sockets.
@file{/var/guix/daemon-socket/socket}.
@item guix
+@cindex daemon, remote access
+@cindex remote access to the daemon
+@cindex daemon, cluster setup
+@cindex clusters, daemon setup
These URIs denote connections over TCP/IP, without encryption nor
-authentication of the remote host. The URI must always specify both the
-host name and port number:
+authentication of the remote host. The URI must specify the host name
+and optionally a port number (by default port 44146 is used):
@example
guix://master.guix.example.org:1234
@@ -3781,6 +3820,10 @@ This setup is suitable on local networks, such as clusters, where only
trusted nodes may connect to the build daemon at
@code{master.guix.example.org}.
+The @code{--listen} option of @command{guix-daemon} can be used to
+instruct it to listen for TCP connections (@pxref{Invoking guix-daemon,
+@code{--listen}}).
+
@item ssh
@cindex SSH access to build daemons
These URIs allow you to connect to a remote daemon over
@@ -13907,26 +13950,21 @@ The serial number of the zone. As this is used to keep track of changes by
both slaves and resolvers, it is mandatory that it @emph{never} decreases.
Always increment it when you make a change in your zone.
-@item @code{refresh} (default: @code{"2d"})
-The frequency at which slaves will do a zone transfer. This value can be
-a number of seconds or a number of some unit between:
-@itemize
-@item m: minute
-@item h: hour
-@item d: day
-@item w: week
-@end itemize
+@item @code{refresh} (default: @code{(* 2 24 3600)})
+The frequency at which slaves will do a zone transfer. This value is a number
+of seconds. It can be computed by multiplications or with
+@code{(string->duration)}.
-@item @code{retry} (default: @code{"15m"})
+@item @code{retry} (default: @code{(* 15 60)})
The period after which a slave will retry to contact its master when it fails
to do so a first time.
-@item @code{expiry} (default: @code{"2w"})
+@item @code{expiry} (default: @code{(* 14 24 3600)})
Default TTL of records. Existing records are considered correct for at most
this amount of time. After this period, resolvers will invalidate their cache
and check again that it still exists.
-@item @code{nx} (default: @code{"1h"})
+@item @code{nx} (default: @code{3600})
Default TTL of inexistant records. This delay is usually short because you want
your new domains to reach everyone quickly.
@@ -14029,17 +14067,17 @@ algorithm, but would be unsecure for other algorithms.
The TTL value for DNSKEY records added into zone apex. The special
@code{'default} value means same as the zone SOA TTL.
-@item @code{zsk-lifetime} (default: @code{"30d"})
+@item @code{zsk-lifetime} (default: @code{(* 30 24 3600)})
The period between ZSK publication and the next rollover initiation.
-@item @code{propagation-delay} (default: @code{"1d"})
+@item @code{propagation-delay} (default: @code{(* 24 3600)})
An extra delay added for each key rollover step. This value should be high
enough to cover propagation of data from the master server to all slaves.
-@item @code{rrsig-lifetime} (default: @code{"14d"})
+@item @code{rrsig-lifetime} (default: @code{(* 14 24 3600)})
A validity period of newly issued signatures.
-@item @code{rrsig-refresh} (default: @code{"7d"})
+@item @code{rrsig-refresh} (default: @code{(* 7 24 3600)})
A period how long before a signature expiration the signature will be refreshed.
@item @code{nsec3?} (default: @code{#f})
@@ -14052,7 +14090,7 @@ The number of additional times the hashing is performed.
The length of a salt field in octets, which is appended to the original owner
name before hashing.
-@item @code{nsec3-salt-lifetime} (default: @code{"30d"})
+@item @code{nsec3-salt-lifetime} (default: @code{(* 30 24 3600)})
The validity period of newly issued salt field.
@end table
diff --git a/gnu/bootloader/extlinux.scm b/gnu/bootloader/extlinux.scm
index 0a1263aed7..219b058e53 100644
--- a/gnu/bootloader/extlinux.scm
+++ b/gnu/bootloader/extlinux.scm
@@ -25,7 +25,8 @@
#:use-module (guix monads)
#:use-module (guix records)
#:use-module (guix utils)
- #:export (extlinux-bootloader))
+ #:export (extlinux-bootloader
+ extlinux-bootloader-gpt))
(define* (extlinux-configuration-file config entries
#:key
@@ -93,7 +94,7 @@ TIMEOUT ~a~%"
(string-append "if=" if)
(string-append "of=" of)))))
-(define install-extlinux
+(define (install-extlinux mbr)
#~(lambda (bootloader device mount-point)
(let ((extlinux (string-append bootloader "/sbin/extlinux"))
(install-dir (string-append mount-point "/boot/extlinux"))
@@ -103,9 +104,15 @@ TIMEOUT ~a~%"
(find-files syslinux-dir "\\.c32$"))
(unless (and (zero? (system* extlinux "--install" install-dir))
- (#$dd 440 1 (string-append syslinux-dir "/mbr.bin") device))
+ (#$dd 440 1 (string-append syslinux-dir "/" #$mbr) device))
(error "failed to install SYSLINUX")))))
+(define install-extlinux-mbr
+ (install-extlinux "mbr.bin"))
+
+(define install-extlinux-gpt
+ (install-extlinux "gptmbr.bin"))
+
;;;
@@ -116,6 +123,11 @@ TIMEOUT ~a~%"
(bootloader
(name 'extlinux)
(package syslinux)
- (installer install-extlinux)
+ (installer install-extlinux-mbr)
(configuration-file "/boot/extlinux/extlinux.conf")
(configuration-file-generator extlinux-configuration-file)))
+
+(define extlinux-bootloader-gpt
+ (bootloader
+ (inherit extlinux-bootloader)
+ (installer install-extlinux-gpt)))
diff --git a/gnu/local.mk b/gnu/local.mk
index 1ae2a2d264..5328a80637 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -126,6 +126,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/ebook.scm \
%D%/packages/ed.scm \
%D%/packages/education.scm \
+ %D%/packages/electronics.scm \
%D%/packages/elf.scm \
%D%/packages/elixir.scm \
%D%/packages/embedded.scm \
@@ -416,7 +417,6 @@ GNU_SYSTEM_MODULES = \
%D%/packages/xorg.scm \
%D%/packages/xfce.scm \
%D%/packages/zile.scm \
- %D%/packages/zip.scm \
\
%D%/services.scm \
%D%/services/admin.scm \
@@ -493,7 +493,6 @@ dist_patch_DATA = \
%D%/packages/patches/a2ps-CVE-2001-1593.patch \
%D%/packages/patches/a2ps-CVE-2014-0466.patch \
%D%/packages/patches/abiword-explictly-cast-bools.patch \
- %D%/packages/patches/abiword-wmf-version-lookup-fix.patch \
%D%/packages/patches/abiword-black-drawing-with-gtk322.patch \
%D%/packages/patches/acl-hurd-path-max.patch \
%D%/packages/patches/aegis-constness-error.patch \
@@ -522,7 +521,6 @@ dist_patch_DATA = \
%D%/packages/patches/byobu-writable-status.patch \
%D%/packages/patches/cairo-CVE-2016-9082.patch \
%D%/packages/patches/calibre-drop-unrar.patch \
- %D%/packages/patches/calibre-dont-load-remote-icons.patch \
%D%/packages/patches/calibre-no-updates-dialog.patch \
%D%/packages/patches/calibre-use-packaged-feedparser.patch \
%D%/packages/patches/cdparanoia-fpic.patch \
@@ -622,11 +620,15 @@ dist_patch_DATA = \
%D%/packages/patches/ghostscript-runpath.patch \
%D%/packages/patches/glib-networking-ssl-cert-file.patch \
%D%/packages/patches/glib-tests-timer.patch \
+ %D%/packages/patches/glibc-CVE-2017-1000366-pt1.patch \
+ %D%/packages/patches/glibc-CVE-2017-1000366-pt2.patch \
+ %D%/packages/patches/glibc-CVE-2017-1000366-pt3.patch \
%D%/packages/patches/glibc-bootstrap-system.patch \
%D%/packages/patches/glibc-ldd-x86_64.patch \
%D%/packages/patches/glibc-locales.patch \
%D%/packages/patches/glibc-memchr-overflow-i686.patch \
%D%/packages/patches/glibc-o-largefile.patch \
+ %D%/packages/patches/glibc-vectorized-strcspn-guards.patch \
%D%/packages/patches/glibc-versioned-locpath.patch \
%D%/packages/patches/glog-gcc-5-demangling.patch \
%D%/packages/patches/gmp-arm-asm-nothumb.patch \
@@ -649,7 +651,7 @@ dist_patch_DATA = \
%D%/packages/patches/guile-present-coding.patch \
%D%/packages/patches/guile-relocatable.patch \
%D%/packages/patches/guile-rsvg-pkgconfig.patch \
- gnu/packages/patches/guile-ssh-channel-finalization.patch \
+ %D%/packages/patches/guile-ssh-channel-finalization.patch \
%D%/packages/patches/guile-ssh-double-free.patch \
%D%/packages/patches/guile-ssh-rexec-bug.patch \
%D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch \
@@ -753,18 +755,6 @@ dist_patch_DATA = \
%D%/packages/patches/libunwind-CVE-2015-3239.patch \
%D%/packages/patches/libunistring-gnulib-multi-core.patch \
%D%/packages/patches/libvpx-CVE-2016-2818.patch \
- %D%/packages/patches/libwmf-CAN-2004-0941.patch \
- %D%/packages/patches/libwmf-CVE-2006-3376.patch \
- %D%/packages/patches/libwmf-CVE-2007-0455.patch \
- %D%/packages/patches/libwmf-CVE-2007-2756.patch \
- %D%/packages/patches/libwmf-CVE-2007-3472.patch \
- %D%/packages/patches/libwmf-CVE-2007-3473.patch \
- %D%/packages/patches/libwmf-CVE-2007-3477.patch \
- %D%/packages/patches/libwmf-CVE-2009-1364.patch \
- %D%/packages/patches/libwmf-CVE-2009-3546.patch \
- %D%/packages/patches/libwmf-CVE-2015-0848+CVE-2015-4588.patch \
- %D%/packages/patches/libwmf-CVE-2015-4695.patch \
- %D%/packages/patches/libwmf-CVE-2015-4696.patch \
%D%/packages/patches/libxcb-python-3.5-compat.patch \
%D%/packages/patches/libxml2-CVE-2016-4658.patch \
%D%/packages/patches/libxml2-CVE-2016-5131.patch \
@@ -941,6 +931,7 @@ dist_patch_DATA = \
%D%/packages/patches/qemu-CVE-2017-8309.patch \
%D%/packages/patches/qemu-CVE-2017-8379.patch \
%D%/packages/patches/qemu-CVE-2017-8380.patch \
+ %D%/packages/patches/qemu-CVE-2017-9524.patch \
%D%/packages/patches/qt4-ldflags.patch \
%D%/packages/patches/qtscript-disable-tests.patch \
%D%/packages/patches/quickswitch-fix-dmenu-check.patch \
diff --git a/gnu/packages/abiword.scm b/gnu/packages/abiword.scm
index 9a4acdc384..b00dac9a63 100644
--- a/gnu/packages/abiword.scm
+++ b/gnu/packages/abiword.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2014 Marek Benc <merkur32@gmail.com>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -55,8 +56,7 @@
(sha256
(base32 "08imry821g81apdwym3gcs4nss0l9j5blqk31j5rv602zmcd9gxg"))
(patches
- (search-patches "abiword-wmf-version-lookup-fix.patch"
- "abiword-explictly-cast-bools.patch"
+ (search-patches "abiword-explictly-cast-bools.patch"
"abiword-black-drawing-with-gtk322.patch"))))
(build-system glib-or-gtk-build-system)
@@ -97,7 +97,6 @@
("libjpeg" ,libjpeg)
("libpng" ,libpng)
("librsvg" ,librsvg)
- ("libwmf" ,libwmf)
("libxml2" ,libxml2)
("libxslt" ,libxslt)
("ots" ,ots)
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 3f960812a6..b9d68fc244 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -481,9 +481,9 @@ connection alive.")
(define-public isc-dhcp
(let* ((bind-major-version "9")
(bind-minor-version "9")
- (bind-patch-version "9")
+ (bind-patch-version "10")
(bind-release-type "-P") ; for patch release, use "-P"
- (bind-release-version "8") ; for patch release, e.g. "6"
+ (bind-release-version "1") ; for patch release, e.g. "6"
(bind-version (string-append bind-major-version
"."
bind-minor-version
@@ -599,7 +599,7 @@ connection alive.")
"/bind-" bind-version ".tar.gz"))
(sha256
(base32
- "1f5i64f6y4rmy61y63r5if1lifw8dw8r8dh6ns3x4002hanzrpgz"))))
+ "1ibbparr9k52rbs0qf0ar8jwvhhx6lja7ylxzpf32swklmhz629c"))))
;; When cross-compiling, we need the cross Coreutils and sed.
;; Otherwise just use those from %FINAL-INPUTS.
@@ -2126,7 +2126,7 @@ tool for remote execution and deployment.")
(define-public neofetch
(package
(name "neofetch")
- (version "3.1.0")
+ (version "3.2.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/dylanaraps/neofetch/"
@@ -2134,7 +2134,7 @@ tool for remote execution and deployment.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1rgznkl7a5q7lnc6zxlwvinq20b7k46n949l1hiwifarv0jgwynv"))))
+ "07a32rzmch51znxspzyc7zyaldmr383v70b49wmnjdjs2qfdbv3a"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; there are no tests
diff --git a/gnu/packages/adns.scm b/gnu/packages/adns.scm
index eece884e58..cb37635bcd 100644
--- a/gnu/packages/adns.scm
+++ b/gnu/packages/adns.scm
@@ -59,7 +59,7 @@ scripts.")
(define-public c-ares
(package
(name "c-ares")
- (version "1.12.0")
+ (version "1.13.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -67,7 +67,7 @@ scripts.")
".tar.gz"))
(sha256
(base32
- "1yv5ygkd813glz8hbagykgp1hlb6450chig061hr7pyw7i0gk4l6"))))
+ "19qxhv9aiw903fr808y77r6l9js0fq9m3gcaqckan9jan7qhixq3"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index a6960ae79b..52a4028f46 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -207,7 +207,7 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.")
(define-public giac-xcas
(package
(name "giac-xcas")
- (version "1.2.3-37")
+ (version "1.2.3-51")
(source (origin
(method url-fetch)
;; "~parisse/giac" is not used because the maintainer regularly
@@ -219,7 +219,7 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.")
"source/giac_" version ".tar.gz"))
(sha256
(base32
- "180146rm8fxlbd6x25x81yscf6q8qjpzr35k203r25c2xkcb7h2x"))))
+ "1w7d4sdjbvqiibnfkhrqy9np3smsysilfba9pry3q1qn5g5y6nrp"))))
(build-system gnu-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm
index 3f77dd756c..27db8fc559 100644
--- a/gnu/packages/assembly.scm
+++ b/gnu/packages/assembly.scm
@@ -34,14 +34,14 @@
(define-public nasm
(package
(name "nasm")
- (version "2.12.02")
+ (version "2.13.01")
(source (origin
(method url-fetch)
(uri (string-append "http://www.nasm.us/pub/nasm/releasebuilds/"
version "/" name "-" version ".tar.xz"))
(sha256
(base32
- "08a3ah791cl7xdyrlz33mwv4xzs08rxh0p902p3ypi5iq1h6p1jc"))))
+ "0plsvcwxc7q3llr3bz10prwq1gn4ll38aqmv0yzfqcq4iw0160ma"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl) ;for doc and test target
("texinfo" ,texinfo)))
@@ -52,10 +52,10 @@
(add-after 'unpack 'dont-build-ps-pdf-outputs
(lambda _
(substitute* "doc/Makefile.in"
- (("info html nasmdoc.txt nasmdoc.ps nasmdoc.pdf")
- "info html nasmdoc.txt")
- (("nasmdoc.ps nasmdoc.pdf nasmdoc.txt \\$\\(INSTALLROOT\\)\\$\\(docdir\\)")
- "nasmdoc.txt $(INSTALLROOT)$(docdir)"))
+ (("html nasmdoc.txt nasmdoc.pdf")
+ "html nasmdoc.txt")
+ (("\\$\\(INSTALL_DATA\\) nasmdoc.pdf")
+ "$(INSTALL_DATA)"))
#t))
(add-after 'install 'install-info
(lambda _
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index 879c6ba6a6..f5509dab10 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -108,6 +108,10 @@ systems in a FITS image header.")
("libjpeg" ,libjpeg-8)
("wcslib" ,wcslib)))
(build-system gnu-build-system)
+ (arguments
+ ;; Reduce the number of required type conversions by enabling arithmetic
+ ;; with all the supported types.
+ `(#:configure-flags '("--enable-bin-op-alltypes")))
(home-page "https://www.gnu.org/software/gnuastro/")
(synopsis "Astronomy utilities")
(description "The GNU Astronomy Utilities (Gnuastro) is a suite of
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index dc668ce131..3e4b998b1b 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -79,7 +79,6 @@
#:use-module (gnu packages xiph)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
- #:use-module (gnu packages zip)
#:use-module (srfi srfi-1))
(define-public alsa-modular-synth
diff --git a/gnu/packages/avr.scm b/gnu/packages/avr.scm
index 916f7983fa..aaa0428041 100644
--- a/gnu/packages/avr.scm
+++ b/gnu/packages/avr.scm
@@ -27,11 +27,11 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (gnu packages)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages cross-base)
#:use-module (gnu packages flashing-tools)
#:use-module (gnu packages gcc)
- #:use-module (gnu packages vim)
- #:use-module (gnu packages zip))
+ #:use-module (gnu packages vim))
(define-public avr-binutils
(package
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index b9364f81f5..e81516d23e 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -514,6 +514,7 @@ store.")
(package
(name "glibc")
(version "2.25")
+ (replacement glibc-2.25-patched)
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/glibc/glibc-"
@@ -768,6 +769,20 @@ GLIBC/HURD for a Hurd host"
(define-syntax glibc
(identifier-syntax (glibc-for-target)))
+(define glibc-2.25-patched
+ (package
+ (inherit glibc)
+ (replacement #f)
+ (source (origin
+ (inherit (package-source glibc))
+ (patches (search-patches "glibc-ldd-x86_64.patch"
+ "glibc-versioned-locpath.patch"
+ "glibc-o-largefile.patch"
+ "glibc-vectorized-strcspn-guards.patch"
+ "glibc-CVE-2017-1000366-pt1.patch"
+ "glibc-CVE-2017-1000366-pt2.patch"
+ "glibc-CVE-2017-1000366-pt3.patch"))))))
+
;; Below are old libc versions, which we use mostly to build locale data in
;; the old format (which the new libc cannot cope with.)
@@ -775,30 +790,47 @@ GLIBC/HURD for a Hurd host"
(package
(inherit glibc)
(version "2.24")
+ (replacement #f)
(source (origin
(inherit (package-source glibc))
(uri (string-append "mirror://gnu/glibc/glibc-"
version ".tar.xz"))
(sha256
(base32
- "1lxmprg9gm73gvafxd503x70z32phwjzcy74i0adfi6ixzla7m4r"))))))
+ "1lxmprg9gm73gvafxd503x70z32phwjzcy74i0adfi6ixzla7m4r"))
+ (patches (search-patches "glibc-ldd-x86_64.patch"
+ "glibc-versioned-locpath.patch"
+ "glibc-o-largefile.patch"
+ "glibc-vectorized-strcspn-guards.patch"
+ "glibc-CVE-2017-1000366-pt1.patch"
+ "glibc-CVE-2017-1000366-pt2.patch"
+ "glibc-CVE-2017-1000366-pt3.patch"))))))
(define-public glibc-2.23
(package
(inherit glibc)
(version "2.23")
+ (replacement #f)
(source (origin
(inherit (package-source glibc))
(uri (string-append "mirror://gnu/glibc/glibc-"
version ".tar.xz"))
(sha256
(base32
- "1s8krs3y2n6pzav7ic59dz41alqalphv7vww4138ag30wh0fpvwl"))))))
+ "1s8krs3y2n6pzav7ic59dz41alqalphv7vww4138ag30wh0fpvwl"))
+ (patches (search-patches "glibc-ldd-x86_64.patch"
+ "glibc-versioned-locpath.patch"
+ "glibc-o-largefile.patch"
+ "glibc-vectorized-strcspn-guards.patch"
+ "glibc-CVE-2017-1000366-pt1.patch"
+ "glibc-CVE-2017-1000366-pt2.patch"
+ "glibc-CVE-2017-1000366-pt3.patch"))))))
(define-public glibc-2.22
(package
(inherit glibc)
(version "2.22")
+ (replacement #f)
(source (origin
(inherit (package-source glibc))
(uri (string-append "mirror://gnu/glibc/glibc-"
@@ -806,7 +838,11 @@ GLIBC/HURD for a Hurd host"
(sha256
(base32
"0j49682pm2nh4qbdw35bas82p1pgfnz4d2l7iwfyzvrvj0318wzb"))
- (patches (search-patches "glibc-ldd-x86_64.patch"))))
+ (patches (search-patches "glibc-ldd-x86_64.patch"
+ "glibc-vectorized-strcspn-guards.patch"
+ "glibc-CVE-2017-1000366-pt1.patch"
+ "glibc-CVE-2017-1000366-pt2.patch"
+ "glibc-CVE-2017-1000366-pt3.patch"))))
(arguments
(substitute-keyword-arguments (package-arguments glibc)
((#:phases phases)
@@ -815,25 +851,27 @@ GLIBC/HURD for a Hurd host"
(lambda _
;; Use `pwd' instead of `/bin/pwd' for glibc-2.21
(substitute* "configure"
- (("/bin/pwd") "pwd"))))))))))
+ (("/bin/pwd") "pwd"))
+ #t))))))))
(define-public glibc-2.21
(package
(inherit glibc-2.22)
(version "2.21")
+ (replacement #f)
(source (origin
- (inherit (package-source glibc))
+ (inherit (package-source glibc-2.22))
(uri (string-append "mirror://gnu/glibc/glibc-"
version ".tar.xz"))
(sha256
(base32
- "1f135546j34s9bfkydmx2nhh9vwxlx60jldi80zmsnln6wj3dsxf"))
- (patches (search-patches "glibc-ldd-x86_64.patch"))))))
+ "1f135546j34s9bfkydmx2nhh9vwxlx60jldi80zmsnln6wj3dsxf"))))))
(define-public glibc-locales
(package
(inherit glibc)
(name "glibc-locales")
+ (replacement #f)
(source (origin (inherit (package-source glibc))
(patches (cons (search-patch "glibc-locales.patch")
(origin-patches (package-source glibc))))))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index b9d641ec34..3db67f5427 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -50,6 +50,7 @@
#:use-module (gnu packages cpio)
#:use-module (gnu packages curl)
#:use-module (gnu packages documentation)
+ #:use-module (gnu packages databases)
#:use-module (gnu packages datastructures)
#:use-module (gnu packages file)
#:use-module (gnu packages flex)
@@ -84,6 +85,7 @@
#:use-module (gnu packages readline)
#:use-module (gnu packages ruby)
#:use-module (gnu packages serialization)
+ #:use-module (gnu packages shells)
#:use-module (gnu packages statistics)
#:use-module (gnu packages swig)
#:use-module (gnu packages tbb)
@@ -96,7 +98,6 @@
#:use-module (gnu packages web)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
- #:use-module (gnu packages zip)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26))
@@ -1384,15 +1385,13 @@ well as many of the command line options.")
(define-public python2-bx-python
(package
(name "python2-bx-python")
- (version "0.7.2")
+ (version "0.7.3")
(source (origin
(method url-fetch)
- (uri (string-append
- "https://pypi.python.org/packages/source/b/bx-python/bx-python-"
- version ".tar.gz"))
+ (uri (pypi-uri "bx-python" version))
(sha256
(base32
- "0ld49idhc5zjdvbhvjq1a2qmpjj7h5v58rqr25dzmfq7g34b50xh"))
+ "15z2w3bvnc0n4qmb9bd6d8ylc2h2nj883x2w9iixf4x3vki9b22i"))
(modules '((guix build utils)))
(snippet
'(substitute* "setup.py"
@@ -3697,7 +3696,7 @@ trimming, pruning, condensing, drawing (ASCII graphics or SVG).")
(define-public orfm
(package
(name "orfm")
- (version "0.6.1")
+ (version "0.7.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -3705,7 +3704,7 @@ trimming, pruning, condensing, drawing (ASCII graphics or SVG).")
version "/orfm-" version ".tar.gz"))
(sha256
(base32
- "19hwp13n82isdvk16710l9m35cmzf0q3fsrcn3r8c5r67biiz39s"))))
+ "16iigyr2gd8x0imzkk1dr3k5xsds9bpmwg31ayvjg0f4pir9rwqr"))))
(build-system gnu-build-system)
(inputs `(("zlib" ,zlib)))
(native-inputs
@@ -9540,3 +9539,168 @@ correct interaction matrices, identify and compare the so-called
interaction matrices, and finally, extract structural properties from the
models. TADbit is complemented by TADkit for visualizing 3D models.")
(license license:gpl3+)))
+
+(define-public kentutils
+ (package
+ (name "kentutils")
+ ;; 302.1.0 is out, but the only difference is the inclusion of
+ ;; pre-built binaries.
+ (version "302.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/ENCODE-DCC/kentUtils/"
+ "archive/v" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "134aja3k1cj32kbk1nnw0q9gxjb2krr15q6sga8qldzvc0585rmm"))
+ (modules '((guix build utils)
+ (srfi srfi-26)
+ (ice-9 ftw)))
+ (snippet
+ '(begin
+ ;; Only the contents of the specified directories are free
+ ;; for all uses, so we remove the rest. "hg/autoSql" and
+ ;; "hg/autoXml" are nominally free, but they depend on a
+ ;; library that is built from the sources in "hg/lib",
+ ;; which is nonfree.
+ (let ((free (list "." ".."
+ "utils" "lib" "inc" "tagStorm"
+ "parasol" "htslib"))
+ (directory? (lambda (file)
+ (eq? 'directory (stat:type (stat file))))))
+ (for-each (lambda (file)
+ (and (directory? file)
+ (delete-file-recursively file)))
+ (map (cut string-append "src/" <>)
+ (scandir "src"
+ (lambda (file)
+ (not (member file free)))))))
+ ;; Only make the utils target, not the userApps target,
+ ;; because that requires libraries we won't build.
+ (substitute* "Makefile"
+ ((" userApps") " utils"))
+ ;; Only build libraries that are free.
+ (substitute* "src/makefile"
+ (("DIRS =.*") "DIRS =\n")
+ (("cd jkOwnLib.*") "")
+ ((" hgLib") "")
+ (("cd hg.*") ""))
+ (substitute* "src/utils/makefile"
+ ;; These tools depend on "jkhgap.a", which is part of the
+ ;; nonfree "src/hg/lib" directory.
+ (("raSqlQuery") "")
+ (("pslLiftSubrangeBlat") "")
+
+ ;; Do not build UCSC tools, which may require nonfree
+ ;; components.
+ (("ALL_APPS =.*") "ALL_APPS = $(UTILS_APPLIST)\n"))
+ #t))))
+ (build-system gnu-build-system)
+ (arguments
+ `( ;; There is no global test target and the test target for
+ ;; individual tools depends on input files that are not
+ ;; included.
+ #:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda _
+ (substitute* "Makefile"
+ (("/bin/echo") (which "echo")))
+ #t))
+ (add-after 'unpack 'prepare-samtabix
+ (lambda* (#:key inputs #:allow-other-keys)
+ (copy-recursively (assoc-ref inputs "samtabix")
+ "samtabix")
+ #t))
+ (delete 'configure)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((bin (string-append (assoc-ref outputs "out")
+ "/bin")))
+ (copy-recursively "bin" bin))
+ #t)))))
+ (native-inputs
+ `(("samtabix"
+ ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "http://genome-source.cse.ucsc.edu/samtabix.git")
+ (commit "10fd107909c1ac4d679299908be4262a012965ba")))
+ (sha256
+ (base32
+ "0c1nj64l42v395sa84n7az43xiap4i6f9n9dfz4058aqiwkhkmma"))))))
+ (inputs
+ `(("zlib" ,zlib)
+ ("tcsh" ,tcsh)
+ ("perl" ,perl)
+ ("libpng" ,libpng)
+ ("mysql" ,mysql)
+ ("openssl" ,openssl)))
+ (home-page "http://genome.cse.ucsc.edu/index.html")
+ (synopsis "Assorted bioinformatics utilities")
+ (description "This package provides the kentUtils, a selection of
+bioinformatics utilities used in combination with the UCSC genome
+browser.")
+ ;; Only a subset of the sources are released under a non-copyleft
+ ;; free software license. All other sources are removed in a
+ ;; snippet. See this bug report for an explanation of how the
+ ;; license statements apply:
+ ;; https://github.com/ENCODE-DCC/kentUtils/issues/12
+ (license (license:non-copyleft
+ "http://genome.ucsc.edu/license/"
+ "The contents of this package are free for all uses."))))
+
+(define-public f-seq
+ (let ((commit "6ccded34cff38cf432deed8503648b4a66953f9b")
+ (revision "1"))
+ (package
+ (name "f-seq")
+ (version (string-append "1.1-" revision "." commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/aboyle/F-seq.git")
+ (commit commit)))
+ (file-name (string-append name "-" version))
+ (sha256
+ (base32
+ "1nk33k0yajg2id4g59bc4szr58r2q6pdq42vgcw054m8ip9wv26h"))
+ (modules '((guix build utils)))
+ ;; Remove bundled Java library archives.
+ (snippet
+ '(begin
+ (for-each delete-file (find-files "lib" ".*"))
+ #t))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:tests? #f ; no tests included
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((target (assoc-ref outputs "out"))
+ (doc (string-append target "/share/doc/f-seq/")))
+ (mkdir-p target)
+ (mkdir-p doc)
+ (substitute* "bin/linux/fseq"
+ (("java") (which "java")))
+ (install-file "README.txt" doc)
+ (install-file "bin/linux/fseq" (string-append target "/bin"))
+ (install-file "build~/fseq.jar" (string-append target "/lib"))
+ (copy-recursively "lib" (string-append target "/lib"))
+ #t))))))
+ (inputs
+ `(("perl" ,perl)
+ ("java-commons-cli" ,java-commons-cli)))
+ (home-page "http://fureylab.web.unc.edu/software/fseq/")
+ (synopsis "Feature density estimator for high-throughput sequence tags")
+ (description
+ "F-Seq is a software package that generates a continuous tag sequence
+density estimation allowing identification of biologically meaningful sites
+such as transcription factor binding sites (ChIP-seq) or regions of open
+chromatin (DNase-seq). Output can be displayed directly in the UCSC Genome
+Browser.")
+ (license license:gpl3+))))
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index c4be211f1a..2d8d89f754 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -91,11 +91,15 @@
;; Make the font visible.
(copy-file (assoc-ref inputs "unifont") "unifont.bdf.gz")
(system* "gunzip" "unifont.bdf.gz")
- #t)))
-
- ;; We suspect there are race conditions when running tests in parallel:
- ;; <https://bugs.gnu.org/26936>.
- #:parallel-tests? #f))
+ #t))
+ (add-before 'check 'disable-flaky-test
+ (lambda _
+ ;; This test is unreliable. For more information, see:
+ ;; <https://bugs.gnu.org/26936>.
+ (substitute* "Makefile.in"
+ (("grub_cmd_date grub_cmd_set_date grub_cmd_sleep")
+ "grub_cmd_date grub_cmd_sleep"))
+ #t)))))
(inputs
`(("gettext" ,gettext-minimal)
diff --git a/gnu/packages/busybox.scm b/gnu/packages/busybox.scm
index 988154eed4..6ef7200f9d 100644
--- a/gnu/packages/busybox.scm
+++ b/gnu/packages/busybox.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 John Darrington <jmd@gnu.org>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -24,13 +24,13 @@
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages admin)
- #:use-module (gnu packages perl)
- #:use-module (gnu packages zip))
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages perl))
(define-public busybox
(package
(name "busybox")
- (version "1.26.0")
+ (version "1.26.2")
(source (origin
(method url-fetch)
(uri (string-append
@@ -38,44 +38,44 @@
version ".tar.bz2"))
(sha256
(base32
- "0k0g3hk58m99c2sfq97ngnixb2rv2wzyhv3z00lxaw78bqvjglis"))))
+ "05mg6rh5smkzfwqfcazkpwy6h6555llsazikqnvwkaf17y8l8gns"))))
(build-system gnu-build-system)
(arguments
- `(#:phases
+ '(#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda _ (zero? (system* "make" "defconfig"))))
(replace 'check
(lambda _
- (substitute* '("testsuite/du/du-s-works"
- "testsuite/du/du-works")
+ (substitute* '("testsuite/du/du-s-works"
+ "testsuite/du/du-works")
(("/bin") "/etc")) ; there is no /bin but there is a /etc
- ;; There is no /usr/bin or /bin - replace it with /gnu/store
- (substitute* "testsuite/cpio.tests"
+ ;; There is no /usr/bin or /bin - replace it with /gnu/store
+ (substitute* "testsuite/cpio.tests"
(("/usr/bin") (%store-directory))
(("usr") (car (filter (negate string-null?)
- (string-split (%store-directory) #\/)))))
+ (string-split (%store-directory) #\/)))))
- (substitute* "testsuite/date/date-works-1"
+ (substitute* "testsuite/date/date-works-1"
(("/bin/date") (which "date")))
- ;; The pidof tests assume that pid 1 is called "init" but that is not
- ;; true in guix build environment
- (substitute* "testsuite/pidof.tests"
+ ;; The pidof tests assume that pid 1 is called "init" but that is not
+ ;; true in guix build environment
+ (substitute* "testsuite/pidof.tests"
(("-s init") "-s $(cat /proc/1/comm)"))
+
+ ;; This test cannot possibly pass.
+ ;; It is trying to test that "which ls" returns "/bin/ls" when PATH is not set.
+ ;; However, this relies on /bin/ls existing. Which it does not in guix.
+ (delete-file "testsuite/which/which-uses-default-path")
+ (rmdir "testsuite/which")
- ;; This test cannot possibly pass.
- ;; It is trying to test that "which ls" returns "/bin/ls" when PATH is not set.
- ;; However, this relies on /bin/ls existing. Which it does not in guix.
- (delete-file "testsuite/which/which-uses-default-path")
- (rmdir "testsuite/which")
-
- (zero? (system* "make"
- ;; "V=1"
- "SKIP_KNOWN_BUGS=1"
- "SKIP_INTERNET_TESTS=1"
- "check"))))
+ (zero? (system* "make"
+ ;; "V=1"
+ "SKIP_KNOWN_BUGS=1"
+ "SKIP_INTERNET_TESTS=1"
+ "check"))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 15329b3109..704e8ad36d 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -37,7 +37,6 @@
#:use-module (gnu packages audio)
#:use-module (gnu packages bison)
#:use-module (gnu packages compression)
- #:use-module (gnu packages zip)
#:use-module (gnu packages flex)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages gettext)
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index c26d02f175..e2cb712bf1 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -39,7 +39,6 @@
#:use-module (gnu packages version-control)
#:use-module (gnu packages web)
#:use-module (gnu packages xml)
- #:use-module (gnu packages zip)
#:use-module (guix build-system gnu))
(define-public hydra
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index f672ef45eb..a15484643b 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -467,7 +467,7 @@ the bootstrap environment."
;; built just below; the only difference is that this one uses the
;; bootstrap Bash.
(package-with-bootstrap-guile
- (package (inherit glibc)
+ (package/inherit glibc
(name "glibc-intermediate")
(arguments
`(#:guile ,%bootstrap-guile
@@ -633,7 +633,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
(define glibc-final
;; The final glibc, which embeds the statically-linked Bash built above.
- (package (inherit glibc-final-with-bootstrap-bash)
+ (package/inherit glibc-final-with-bootstrap-bash
(name "glibc")
(inputs `(("static-bash" ,static-bash-for-glibc)
,@(alist-delete
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index c7b6ccc8ab..a4d922b743 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -16,6 +16,7 @@
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
+;;; Copyright © 2017 Theodoros Foradis <theodoros.for@openmailbox.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -54,7 +55,6 @@
#:use-module (gnu packages python)
#:use-module (gnu packages tls)
#:use-module (gnu packages valgrind)
- #:use-module (gnu packages zip)
#:use-module (ice-9 match)
#:use-module ((srfi srfi-1) #:select (last)))
@@ -1331,3 +1331,189 @@ as is the decompression of data compressed in this manner. Data compressed by
other implementations will only be decompressed by two threads: one performing
the actual decompression, the other input and output.")
(license (package-license zstd))))
+
+(define-public zip
+ (package
+ (name "zip")
+ (version "3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/infozip"
+ "/Zip%203.x%20%28latest%29/3.0/zip30.tar.gz"))
+ (sha256
+ (base32
+ "0sb3h3067pzf3a7mlxn1hikpcjrsvycjcnj9hl9b1c3ykcgvps7h"))))
+ (build-system gnu-build-system)
+ (inputs `(("bzip2" ,bzip2)))
+ (arguments
+ `(#:tests? #f ; no test target
+ #:make-flags (let ((out (assoc-ref %outputs "out")))
+ (list "-f" "unix/Makefile"
+ (string-append "prefix=" out)
+ (string-append "MANDIR=" out "/share/man/man1")))
+ #:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (srfi srfi-1))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'build
+ (lambda* (#:key (make-flags '()) #:allow-other-keys)
+ (zero? (apply system* "make" "generic_gcc" make-flags))))
+ (delete 'configure))))
+ (home-page "http://www.info-zip.org/Zip.html")
+ (synopsis "Compression and file packing utility")
+ (description
+ "Zip is a compression and file packaging/archive utility. Zip is useful
+for packaging a set of files for distribution, for archiving files, and for
+saving disk space by temporarily compressing unused files or directories.
+Zip puts one or more compressed files into a single ZIP archive, along with
+information about the files (name, path, date, time of last modification,
+protection, and check information to verify file integrity). An entire
+directory structure can be packed into a ZIP archive with a single command.
+
+Zip has one compression method (deflation) and can also store files without
+compression. Zip automatically chooses the better of the two for each file.
+Compression ratios of 2:1 to 3:1 are common for text files.")
+ (license (license:non-copyleft "file://LICENSE"
+ "See LICENSE in the distribution."))))
+
+(define-public unzip
+ (package (inherit zip)
+ (name "unzip")
+ (version "6.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/infozip"
+ "/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip60.tar.gz"))
+ (sha256
+ (base32
+ "0dxx11knh3nk95p2gg2ak777dd11pr7jx5das2g49l262scrcv83"))
+ (patches (search-patches "unzip-CVE-2014-8139.patch"
+ "unzip-CVE-2014-8140.patch"
+ "unzip-CVE-2014-8141.patch"
+ "unzip-CVE-2014-9636.patch"
+ "unzip-CVE-2015-7696.patch"
+ "unzip-CVE-2015-7697.patch"
+ "unzip-allow-greater-hostver-values.patch"
+ "unzip-initialize-symlink-flag.patch"
+ "unzip-remove-build-date.patch"
+ "unzip-attribs-overflow.patch"
+ "unzip-overflow-on-invalid-input.patch"
+ "unzip-format-secure.patch"
+ "unzip-overflow-long-fsize.patch"))))
+ (build-system gnu-build-system)
+ ;; no inputs; bzip2 is not supported, since not compiled with BZ_NO_STDIO
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda* (#:key make-flags #:allow-other-keys)
+ (zero? (apply system* "make"
+ `("-j" ,(number->string
+ (parallel-job-count))
+ ,@make-flags
+ "generic_gcc"))))))
+ #:make-flags (list "-f" "unix/Makefile"
+ (string-append "prefix=" %output)
+ (string-append "MANDIR=" %output "/share/man/man1"))))
+ (home-page "http://www.info-zip.org/UnZip.html")
+ (synopsis "Decompression and file extraction utility")
+ (description
+ "UnZip is an extraction utility for archives compressed in .zip format,
+also called \"zipfiles\".
+
+UnZip lists, tests, or extracts files from a .zip archive. The default
+behaviour (with no options) is to extract into the current directory, and
+subdirectories below it, all files from the specified zipfile. UnZip
+recreates the stored directory structure by default.")
+ (license (license:non-copyleft "file://LICENSE"
+ "See LICENSE in the distribution."))))
+
+(define-public zziplib
+ (package
+ (name "zziplib")
+ (version "0.13.62")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/zziplib/zziplib13/"
+ version "/zziplib-"
+ version ".tar.bz2"))
+ (patches (search-patches "zziplib-CVE-2017-5974.patch"
+ "zziplib-CVE-2017-5975.patch"
+ "zziplib-CVE-2017-5976.patch"
+ "zziplib-CVE-2017-5978.patch"
+ "zziplib-CVE-2017-5979.patch"
+ "zziplib-CVE-2017-5981.patch"))
+ (sha256
+ (base32
+ "0nsjqxw017hiyp524p9316283jlf5piixc1091gkimhz38zh7f51"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("zlib" ,zlib)))
+ (native-inputs `(("perl" ,perl) ; for the documentation
+ ("pkg-config" ,pkg-config)
+ ;; for the documentation; Python 3 not supported,
+ ;; http://forums.gentoo.org/viewtopic-t-863161-start-0.html
+ ("python" ,python-2)
+ ("zip" ,zip))) ; to create test files
+ (arguments
+ `(#:parallel-tests? #f)) ; since test files are created on the fly
+ (home-page "http://zziplib.sourceforge.net/")
+ (synopsis "Library for accessing zip files")
+ (description
+ "ZZipLib is a library based on zlib for accessing zip files.")
+ (license license:lgpl2.0+)))
+
+(define-public perl-zip
+ (package
+ (name "perl-zip")
+ (version "1.59")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/A/AD/ADAMK/Archive-Zip-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0m31qlppg65vh32pwxkwjby02q70abx49d2yk6vfd4585fqb27cx"))))
+ (build-system perl-build-system)
+ (synopsis "Provides an interface to ZIP archive files")
+ (description "The Archive::Zip module allows a Perl program to create,
+manipulate, read, and write Zip archive files.")
+ (home-page "http://search.cpan.org/~adamk/Archive-Zip-1.30/")
+ (license license:perl-license)))
+
+(define-public libzip
+ (package
+ (name "libzip")
+ (version "1.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://nih.at/libzip/libzip-" version ".tar.gz"))
+ (sha256
+ (base32
+ "17vxj2ffsxwh8lkc6801ppmwj15jp8q58rin76znxfbx88789ybc"))))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'patch-perl
+ (lambda _
+ (substitute* "regress/runtest.in"
+ (("/usr/bin/env perl") (which "perl"))))))))
+ (native-inputs
+ `(("perl" ,perl)))
+ (inputs
+ `(("zlib" ,zlib)))
+ (build-system gnu-build-system)
+ (home-page "https://nih.at/libzip/index.html")
+ (synopsis "C library for reading, creating, and modifying zip archives")
+ (description "Libzip is a C library for reading, creating, and modifying
+zip archives. Files can be added from data buffers, files, or compressed data
+copied directly from other zip archives. Changes made without closing the
+archive can be reverted.")
+ (license license:bsd-3)))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index a05ba6b726..dcaba0a866 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -16,6 +16,7 @@
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1356,8 +1357,17 @@ trees (LSM), for sustained throughput under random insert workloads.")
(("/usr/local") (assoc-ref outputs "out")))
#t)))))
(home-page "https://symas.com/products/lightning-memory-mapped-database")
- (synopsis "Lightning memory-mapped database library")
- (description "Lightning memory-mapped database library.")
+ (synopsis "Lightning Memory-Mapped Database library")
+ (description
+ "The @dfn{Lightning Memory-Mapped Database} (LMDB) is a high-performance
+transactional database. Unlike more complex relational databases, LMDB handles
+only key-value pairs (stored as arbitrary byte arrays) and relies on the
+underlying operating system for caching and locking, keeping the code small and
+simple.
+The use of ‘zero-copy’ memory-mapped files combines the persistence of classic
+disk-based databases with high read performance that scales linearly over
+multiple cores. The size of each database is limited only by the size of the
+virtual address space — not physical RAM.")
(license license:openldap2.8)))
(define-public libpqxx
@@ -1539,3 +1549,49 @@ file format to other databases such as MySQL, Oracle, Sybase, PostgreSQL,
etc., and an SQL engine for performing simple SQL queries.")
(license (list license:lgpl2.0
license:gpl2+))))
+
+(define-public python-lmdb
+ (package
+ (name "python-lmdb")
+ (version "0.92")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "lmdb" version))
+ (sha256
+ (base32
+ "01nw6r08jkipx6v92kw49z34wmwikrpvc5j9xawdiyg1n2526wrx"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Delete bundled lmdb source files.
+ '(for-each delete-file (list "lib/lmdb.h"
+ "lib/mdb.c"
+ "lib/midl.c"
+ "lib/midl.h")))))
+ (build-system python-build-system)
+ (inputs
+ `(("lmdb" ,lmdb)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'use-system-lmdb
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((lmdb (assoc-ref inputs "lmdb")))
+ (setenv "LMDB_FORCE_SYSTEM" "set")
+ (setenv "LMDB_INCLUDEDIR" (string-append lmdb "/include"))
+ (setenv "LMDB_LIBDIR" (string-append lmdb "/lib"))
+ #t))))
+ ;; Tests fail with: ‘lmdb.tool: Please specify environment (--env)’.
+ #:tests? #f))
+ (home-page "https://github.com/dw/py-lmdb")
+ (synopsis "Python binding for the ‘Lightning’ database (LMDB)")
+ (description
+ "python-lmdb or py-lmdb is a Python binding for the @dfn{Lightning
+Memory-Mapped Database} (LMDB), a high-performance key-value store.")
+ (license
+ (list license:openldap2.8
+ ;; ‘lib/win32/inttypes.h’ and ‘lib/win32-stdint/stdint.h’ are BSD-3,
+ ;; but not actually needed on platforms currently supported by Guix.
+ license:bsd-3))))
+
+(define-public python2-lmdb
+ (package-with-python2 python-lmdb))
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 2e4d8fd18e..514acee271 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -8,6 +8,7 @@
;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
+;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -31,6 +32,7 @@
#:use-module (gnu packages databases)
#:use-module (gnu packages crypto)
#:use-module (gnu packages datastructures)
+ #:use-module (gnu packages flex)
#:use-module (gnu packages glib)
#:use-module (gnu packages groff)
#:use-module (gnu packages groff)
@@ -42,12 +44,16 @@
#:use-module (gnu packages nettle)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages protobuf)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages swig)
#:use-module (gnu packages tls)
#:use-module (gnu packages web)
#:use-module (gnu packages xml)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix utils)
#:use-module (guix build-system gnu))
(define-public dnsmasq
@@ -275,6 +281,165 @@ asynchronous fashion.")
(license:non-copyleft "file://LICENSE") ; includes.h
license:openssl))))
+(define-public unbound
+ (package
+ (name "unbound")
+ (version "1.6.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.unbound.net/downloads/unbound-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0pw4m4z5qspsagxzbjb61xq5bhd57amw26xqvqzi6b8d3mf6azjc"))))
+ (build-system gnu-build-system)
+ (outputs '("out" "python"))
+ (native-inputs
+ `(("flex" ,flex)
+ ("swig" ,swig)))
+ (inputs
+ `(("expat" ,expat)
+ ("libevent" ,libevent)
+ ("protobuf" ,protobuf)
+ ("python" ,python-3)
+ ("python-wrapper" ,python-wrapper)
+ ("openssl" ,openssl)))
+ (arguments
+ `(#:configure-flags
+ (list "--disable-static" ;save space and non-determinism in libunbound.a
+ (string-append
+ "--with-ssl=" (assoc-ref %build-inputs "openssl"))
+ (string-append
+ "--with-libevent=" (assoc-ref %build-inputs "libevent"))
+ (string-append
+ "--with-libexpat=" (assoc-ref %build-inputs "expat"))
+ "--with-pythonmodule" "--with-pyunbound")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'configure 'fix-python-site-package-path
+ ;; Move python modules into their own output.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((pyout (assoc-ref outputs "python"))
+ (ver ,(version-major+minor (package-version python))))
+ (substitute* "Makefile"
+ (("^PYTHON_SITE_PKG=.*$")
+ (string-append
+ "PYTHON_SITE_PKG="
+ pyout "/lib/python-" ver "/site-packages\n"))))
+ #t))
+ (add-before 'check 'fix-missing-nss-for-tests
+ ;; Unfortunately, the package's unittests involve some checks
+ ;; looking up protocols and services which are not provided
+ ;; by the minimalistic build environment, in particular,
+ ;; /etc/protocols and /etc/services are missing.
+ ;; Also, after plain substitution of protocol and service names
+ ;; in the test data, the tests still fail because the
+ ;; corresponding Resource Records have been signed by
+ ;; RRSIG records.
+ ;; The following LD_PRELOAD library overwrites the glibc
+ ;; functions ‘get{proto,serv}byname’, ‘getprotobynumber’ and
+ ;; ‘getservbyport’ providing the few records required for the
+ ;; unit tests to pass.
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((source (assoc-ref %build-inputs "source"))
+ (gcc (assoc-ref %build-inputs "gcc")))
+ (call-with-output-file "/tmp/nss_preload.c"
+ (lambda (port)
+ (display "#include <stdlib.h>
+#include <string.h>
+#include <strings.h>
+
+#include <netdb.h>
+
+struct protoent *getprotobyname(const char *name) {
+ struct protoent *p = malloc(sizeof(struct protoent));
+ p->p_aliases = malloc(sizeof(char*));
+ if (strcasecmp(name, \"tcp\") == 0) {
+ p->p_name = \"tcp\";
+ p->p_proto = 6;
+ p->p_aliases[0] = \"TCP\";
+ } else if (strcasecmp(name, \"udp\") == 0) {
+ p->p_name = \"udp\";
+ p->p_proto = 17;
+ p->p_aliases[0] = \"UDP\";
+ } else
+ p = NULL;
+ return p;
+}
+
+struct protoent *getprotobynumber(int proto) {
+ struct protoent *p = malloc(sizeof(struct protoent));
+ p->p_aliases = malloc(sizeof(char*));
+ switch(proto) {
+ case 6:
+ p->p_name = \"tcp\";
+ p->p_proto = 6;
+ p->p_aliases[0] = \"TCP\";
+ break;
+ case 17:
+ p->p_name = \"udp\";
+ p->p_proto = 17;
+ p->p_aliases[0] = \"UDP\";
+ break;
+ default:
+ p = NULL;
+ break;
+ }
+ return p;
+}
+
+struct servent *getservbyname(const char *name, const char *proto) {
+ struct servent *s = malloc(sizeof(struct servent));
+ char* buf = malloc((strlen(proto)+1)*sizeof(char));
+ strcpy(buf, proto);
+ s->s_aliases = malloc(sizeof(char*));
+ s->s_aliases[0] = NULL;
+ if (strcasecmp(name, \"domain\") == 0) {
+ s->s_name = \"domain\";
+ s->s_port = htons(53);
+ s->s_proto = buf;
+ } else
+ s = NULL;
+ return s;
+}
+
+struct servent *getservbyport(int port, const char *proto) {
+ char buf[32];
+ struct servent *s = malloc(sizeof(struct servent));
+ strcpy(buf, proto);
+ s->s_aliases = malloc(sizeof(char*));
+ s->s_aliases[0] = NULL;
+ switch(port) {
+ case 53:
+ s->s_name = \"domain\";
+ s->s_port = 53;
+ s->s_proto = \"udp\";
+ break;
+ default:
+ s = NULL;
+ break;
+ }
+ return s;
+}" port)))
+ (system* (string-append gcc "/bin/gcc")
+ "-shared" "-fPIC" "-o" "/tmp/nss_preload.so"
+ "/tmp/nss_preload.c")
+ ;; The preload library only affects the unittests.
+ (substitute* "Makefile"
+ (("./unittest")
+ "LD_PRELOAD=/tmp/nss_preload.so ./unittest")))
+ #t)))))
+ (home-page "https://www.unbound.net")
+ (synopsis "Validating, recursive, and caching DNS resolver")
+ (description
+ "Unbound is a recursive-only caching DNS server which can perform DNSSEC
+validation of results. It implements only a minimal amount of authoritative
+service to prevent leakage to the root nameservers: forward lookups for
+localhost, reverse for @code{127.0.0.1} and @code{::1}, and NXDOMAIN for zones
+served by AS112. Stub and forward zones are supported.")
+ (license license:bsd-4)))
+
(define-public yadifa
(package
(name "yadifa")
@@ -321,14 +486,14 @@ Extensions} (DNSSEC).")
(define-public knot
(package
(name "knot")
- (version "2.4.4")
+ (version "2.5.2")
(source (origin
(method url-fetch)
(uri (string-append "https://secure.nic.cz/files/knot-dns/"
name "-" version ".tar.xz"))
(sha256
(base32
- "0g2n5r2n03bqz322xlwdw4bqhj8l4n8q0hzrqngi4rgmk4rp97ly"))
+ "1sgmw8k9qccc7bgxbwrvahdinj1bjq90iza55rxj199mxsj72ri8"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -353,7 +518,11 @@ Extensions} (DNSSEC).")
("liburcu" ,liburcu)
("lmdb" ,lmdb)
("ncurses" ,ncurses)
- ("nettle" ,nettle)))
+ ("nettle" ,nettle)
+
+ ;; For ‘pykeymgr’, needed to migrate keys from versions <= 2.4.
+ ("python" ,python-2)
+ ("python-lmdb" ,python2-lmdb)))
(arguments
`(#:phases
(modify-phases %standard-phases
@@ -370,11 +539,18 @@ Extensions} (DNSSEC).")
(zero?
(system* "make"
(string-append "config_dir=" etc)
- "install"))))))
+ "install")))))
+ (add-after 'install 'wrap-python-scripts
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (path (getenv "PYTHONPATH")))
+ (wrap-program (string-append out "/sbin/pykeymgr")
+ `("PYTHONPATH" ":" prefix (,path))))
+ #t)))
#:configure-flags
(list "--sysconfdir=/etc"
"--localstatedir=/var"
- "--enable-rosedb" ; serve static records from a database
+ "--with-module-rosedb=yes" ; serve static records from a database
(string-append "--with-bash-completions="
(assoc-ref %outputs "out")
"/etc/bash_completion.d"))))
diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm
index 067ad1c3b0..7a309b0bc9 100644
--- a/gnu/packages/docbook.scm
+++ b/gnu/packages/docbook.scm
@@ -31,8 +31,7 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system trivial)
- #:use-module (guix build-system python)
- #:autoload (gnu packages zip) (unzip))
+ #:use-module (guix build-system python))
(define-public docbook-xml
(package
diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm
index ba8eea3931..5d3d6f170b 100644
--- a/gnu/packages/documentation.scm
+++ b/gnu/packages/documentation.scm
@@ -37,8 +37,7 @@
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
#:use-module (gnu packages perl)
- #:use-module (gnu packages xml)
- #:autoload (gnu packages zip) (unzip))
+ #:use-module (gnu packages xml))
(define-public asciidoc
(package
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index 1d64e9b69f..bbb127a7d9 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2017 Brendan Tildesley <brendan.tildesley@openmailbox.org>
+;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -65,7 +66,7 @@
(define-public calibre
(package
(name "calibre")
- (version "2.85.1")
+ (version "3.0.0")
(source
(origin
(method url-fetch)
@@ -74,7 +75,7 @@
version ".tar.xz"))
(sha256
(base32
- "1g8s0kp1gj05yysfgqpp2lgrxvzc0fsny1hwzx5jh9hvqn0b53cc"))
+ "1zhk7bvgr973dd18x4wp48kzai29qqqi5qcy72sxc4wcbk2sbnkw"))
;; Remove non-free or doubtful code, see
;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html
(modules '((guix build utils)))
@@ -84,13 +85,11 @@
(delete-file-recursively "src/unrar")
(delete-file "src/odf/thumbnail.py")
(delete-file-recursively "resources/fonts/liberation")
- (delete-file-recursively "src/chardet")
(substitute* (find-files "." "\\.py")
(("calibre\\.ebooks\\.markdown") "markdown"))
#t))
(patches (search-patches "calibre-drop-unrar.patch"
"calibre-use-packaged-feedparser.patch"
- "calibre-dont-load-remote-icons.patch"
"calibre-no-updates-dialog.patch"))))
(build-system python-build-system)
(native-inputs
@@ -132,6 +131,7 @@
("python2-pygments" ,python2-pygments)
("python2-pyqt" ,python2-pyqt)
("python2-sip" ,python2-sip)
+ ("python2-regex" ,python2-regex)
("sqlite" ,sqlite)))
(arguments
`(#:python ,python-2
@@ -148,6 +148,12 @@
;; We can't use the uninstaller in Guix. Don't build it.
(("self\\.create_uninstaller()") ""))
#t))
+ (add-after 'unpack 'dont-load-remote-icons
+ (lambda _
+ (substitute* "setup/plugins_mirror.py"
+ (("href=\"//calibre-ebook.com/favicon.ico\"")
+ "href=\"favicon.ico\""))
+ #t))
(add-before 'build 'configure
(lambda* (#:key inputs #:allow-other-keys)
(let ((podofo (assoc-ref inputs "podofo"))
diff --git a/gnu/packages/electronics.scm b/gnu/packages/electronics.scm
new file mode 100644
index 0000000000..8a9f625dc5
--- /dev/null
+++ b/gnu/packages/electronics.scm
@@ -0,0 +1,253 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 Theodoros Foradis <theodoros.for@openmailbox.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 electronics)
+ #:use-module (guix utils)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system cmake)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages boost)
+ #:use-module (gnu packages check)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages documentation)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages graphviz)
+ #:use-module (gnu packages libftdi)
+ #:use-module (gnu packages libusb)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages qt)
+ #:use-module (gnu packages sdcc))
+
+(define-public libserialport
+ (package
+ (name "libserialport")
+ (version "0.1.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://sigrok.org/download/source/libserialport/libserialport-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "17ajlwgvyyrap8z7f16zcs59pksvncwbmd3mzf98wj7zqgczjaja"))))
+ (build-system gnu-build-system)
+ (home-page "http://sigrok.org/wiki/Libserialport")
+ (synopsis "Library for using serial ports")
+ (description "Libserialport is a minimal shared library written in C that is intended
+to take care of the OS-specific details when writing software that uses serial ports.")
+ (license license:lgpl3+)))
+
+(define-public libsigrokdecode
+ (package
+ (name "libsigrokdecode")
+ (version "0.5.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://sigrok.org/download/source/libsigrokdecode/libsigrokdecode-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1hfigfj1976qk11kfsgj75l20qvyq8c9p2h4mjw23d59rsg5ga2a"))))
+ (outputs '("out" "doc"))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'build 'build-doc
+ (lambda _
+ (zero? (system* "doxygen"))))
+ (add-after 'install 'install-doc
+ (lambda* (#:key outputs #:allow-other-keys)
+ (copy-recursively "doxy/html-api"
+ (string-append (assoc-ref outputs "doc")
+ "/share/doc/libsigrokdecode"))
+ #t)))))
+ (native-inputs
+ `(("check" ,check)
+ ("doxygen" ,doxygen)
+ ("graphviz" ,graphviz)
+ ("pkg-config" ,pkg-config)))
+ ;; libsigrokdecode.pc lists "python" in Requires.private, and "glib" in Requires.
+ (propagated-inputs
+ `(("glib" ,glib)
+ ("python" ,python)))
+ (build-system gnu-build-system)
+ (home-page "http://www.sigrok.org/wiki/Libsigrokdecode")
+ (synopsis "Library providing (streaming) protocol decoding functionality")
+ (description "Libsigrokdecode is a shared library written in C, which provides
+(streaming) protocol decoding functionality.")
+ (license license:gpl3+)))
+
+(define-public sigrok-firmware-fx2lafw
+ (package
+ (name "sigrok-firmware-fx2lafw")
+ (version "0.1.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://sigrok.org/download/source/sigrok-firmware-fx2lafw/"
+ "sigrok-firmware-fx2lafw-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0bbdgy4rpc00jl0l0744m2ibjlqi26bhrkjr7vplivdsjdmhjx6a"))))
+ (native-inputs
+ `(("sdcc" ,sdcc)))
+ (build-system gnu-build-system)
+ (home-page "http://www.sigrok.org/wiki/Fx2lafw")
+ (synopsis "Firmware for Cypress FX2 chips")
+ (description "Fx2lafw is free firmware for Cypress FX2 chips which makes them usable
+as simple logic analyzer and/or oscilloscope hardware.")
+ (license license:gpl2+)))
+
+(define-public libsigrok
+ (package
+ (name "libsigrok")
+ (version "0.5.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://sigrok.org/download/source/libsigrok/libsigrok-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "197kr5ip98lxn7rv10zs35d1w0j7265s0xvckx0mq2l8kdvqd32c"))))
+ (outputs '("out" "doc"))
+ (arguments
+ `(#:tests? #f ; tests need usb access
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'change-udev-group
+ (lambda _
+ (let ((file "contrib/z60_libsigrok.rules"))
+ (substitute* file
+ (("plugdev") "dialout"))
+ (rename-file file "contrib/60-libsigrok.rules")
+ #t)))
+ (add-after 'build 'build-doc
+ (lambda _
+ (zero? (system* "doxygen"))))
+ (add-after 'install 'install-doc
+ (lambda* (#:key outputs #:allow-other-keys)
+ (copy-recursively "doxy/html-api"
+ (string-append (assoc-ref outputs "doc")
+ "/share/doc/libsigrok"))
+ #t))
+ (add-after 'install-doc 'install-udev-rules
+ (lambda* (#:key outputs #:allow-other-keys)
+ (install-file "contrib/60-libsigrok.rules"
+ (string-append
+ (assoc-ref outputs "out")
+ "/lib/udev/rules.d/"))))
+ (add-after 'install-udev-rules 'install-fw
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((fx2lafw (assoc-ref inputs "sigrok-firmware-fx2lafw"))
+ (out (assoc-ref outputs "out"))
+ (dir-suffix "/share/sigrok-firmware/")
+ (input-dir (string-append fx2lafw dir-suffix))
+ (output-dir (string-append out dir-suffix)))
+ (mkdir-p output-dir)
+ (for-each
+ (lambda (file)
+ (install-file file output-dir))
+ (find-files input-dir ".")))
+ #t)))))
+ (native-inputs
+ `(("check" ,check)
+ ("doxygen" ,doxygen)
+ ("graphviz" ,graphviz)
+ ("sigrok-firmware-fx2lafw" ,sigrok-firmware-fx2lafw)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("python" ,python)
+ ("zlib" ,zlib)))
+ ;; libsigrokcxx.pc lists "glibmm" in Requires
+ ;; libsigrok.pc lists "libserialport", "libusb", "libftdi" and "libzip" in
+ ;; Requires.private and "glib" in Requires
+ (propagated-inputs
+ `(("glib" ,glib)
+ ("glibmm" ,glibmm)
+ ("libserialport" ,libserialport)
+ ("libusb" ,libusb)
+ ("libftdi" ,libftdi)
+ ("libzip" ,libzip)))
+ (build-system gnu-build-system)
+ (home-page "http://www.sigrok.org/wiki/Libsigrok")
+ (synopsis "Library which provides the basic hardware access drivers for logic
+analyzers")
+ (description "@code{libsigrok} is a shared library written in C which provides the basic hardware
+access drivers for logic analyzers and other supported devices, as well as input/output file
+format support.")
+ (license license:gpl3+)))
+
+(define-public sigrok-cli
+ (package
+ (name "sigrok-cli")
+ (version "0.7.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://sigrok.org/download/source/sigrok-cli/sigrok-cli-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "072ylscp0ppgii1k5j07hhv7dfmni4vyhxnsvxmgqgfyq9ldjsan"))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("glib" ,glib)
+ ("libsigrok" ,libsigrok)
+ ("libsigrokdecode" ,libsigrokdecode)))
+ (build-system gnu-build-system)
+ (home-page "http://sigrok.org/wiki/Sigrok-cli")
+ (synopsis "Command-line frontend for sigrok")
+ (description "Sigrok-cli is a command-line frontend for sigrok.")
+ (license license:gpl3+)))
+
+(define-public pulseview
+ (package
+ (name "pulseview")
+ (version "0.4.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://sigrok.org/download/source/pulseview/pulseview-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1f8f2342d5yam98mmcb8f9g2vslcwv486bmi4x45pxn68l82ky3q"))))
+ (arguments
+ `(#:configure-flags '("-DCMAKE_CXX_FLAGS=-fext-numeric-literals")))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("boost" ,boost)
+ ("glib" ,glib)
+ ("glibmm" ,glibmm)
+ ("qt" ,qt)
+ ("libsigrok" ,libsigrok)
+ ("libsigrokdecode" ,libsigrokdecode)))
+ (build-system cmake-build-system)
+ (home-page "http://www.sigrok.org/wiki/PulseView")
+ (synopsis "Qt based logic analyzer, oscilloscope and MSO GUI for sigrok")
+ (description "PulseView is a Qt based logic analyzer, oscilloscope and MSO GUI
+for sigrok.")
+ (license license:gpl3+)))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 99b9b06011..ecb6fed6aa 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -26,6 +26,7 @@
;;; Copyright © 2017 George Clemmer <myglc2@gmail.com>
;;; Copyright © 2017 Feng Shu <tumashu@163.com>
;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -3641,14 +3642,14 @@ passive voice.")
(define-public emacs-org
(package
(name "emacs-org")
- (version "20170606")
+ (version "20170622")
(source (origin
(method url-fetch)
(uri (string-append "http://elpa.gnu.org/packages/org-"
version ".tar"))
(sha256
(base32
- "0m2gln3wz9v3aflyxxy2317808yy05rrzrjx35spw2d90d10hmkz"))))
+ "0922lcbr2r7bkswljqzbm5y3ny1n67qfrmf7h7z9hsw2wy0505dp"))))
(build-system emacs-build-system)
(home-page "http://orgmode.org/")
(synopsis "Outline-based notes management and organizer")
@@ -4896,3 +4897,78 @@ running a customisable handler command (@code{ignore} by default). ")
from within Emacs. Restclient runs queries from a plan-text query sheet,
displays results pretty-printed in XML or JSON with @code{restclient-mode}")
(license license:public-domain))))
+
+(define-public emacs-dired-hacks
+ (let ((commit "eda68006ce73bbf6b9b995bfd70d08bec8cade36")
+ (revision "1"))
+ (package
+ (name "emacs-dired-hacks")
+ (version (string-append "0.0.1-" revision "."
+ (string-take commit 7)))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Fuco1/dired-hacks.git")
+ (commit commit)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "1w7ssl9zssn5rcha6apf4h8drkd02k4xgvs203bdbqyqp9wz9brx"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-dash" ,emacs-dash)
+ ("emacs-f" ,emacs-f)
+ ("emacs-s" ,emacs-s)))
+ (home-page "https://github.com/Fuco1/dired-hacks")
+ (synopsis
+ "Collection of useful dired additions")
+ (description
+ "Collection of Emacs dired mode additions:
+@itemize
+@item dired-avfs
+@item dired-columns
+@item dired-filter
+@item dired-hacks-utils
+@item dired-images
+@item dired-list
+@item dired-narrow
+@item dired-open
+@item dired-rainbow
+@item dired-ranger
+@item dired-subtree
+@item dired-tagsistant
+@end itemize\n")
+ (license license:gpl3+))))
+
+(define-public emacs-which-key
+ (package
+ (name "emacs-which-key")
+ (version "3.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/justbur/emacs-which-key/archive/v"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0zc9yivdkbxmcllhlbbcvsbj8g8nzzgs0xib488s08p4s0l7xs8m"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system emacs-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'install 'check
+ (lambda _
+ (zero? (system* "emacs" "--batch" "-L" "."
+ "-l" "which-key-tests.el"
+ "-f" "ert-run-tests-batch-and-exit")))))))
+ (home-page "https://github.com/justbur/emacs-which-key")
+ (synopsis "Display available key bindings in popup")
+ (description "@code{emacs-which-key} is a minor mode for Emacs that
+displays the key bindings following your currently entered incomplete command
+(a prefix) in a popup. For example, after enabling the minor mode if you
+enter C-x and wait for the default of 1 second, the minibuffer will expand
+with all of the available key bindings that follow C-x (or as many as space
+allows given your settings).")
+ (license license:gpl3+)))
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index e0e1793db1..29a3e543e5 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -452,7 +452,7 @@ with a layered architecture of JTAG interface and TAP support.")
("dejagnu" ,dejagnu)
,@(package-native-inputs xbinutils))))))
-(define-public propeller-gcc
+(define-public propeller-gcc-6
(let ((xgcc (cross-gcc "propeller-elf"
#:xbinutils propeller-binutils))
(commit "b4f45a4725e0b6d0af59e594c4e3e35ca4105867")
@@ -489,7 +489,7 @@ with a layered architecture of JTAG interface and TAP support.")
(synopsis "GCC for the Parallax Propeller"))))
(define-public propeller-gcc-4
- (let ((xgcc propeller-gcc)
+ (let ((xgcc propeller-gcc-6)
(commit "f1b01001b760d691a91ff1db4830d41bb712557f")
(revision "1"))
(package (inherit xgcc)
@@ -511,6 +511,11 @@ with a layered architecture of JTAG interface and TAP support.")
"gcc-cross-environment-variables.patch")))))
(home-page "https://github.com/dbetz/propgcc-gcc"))))
+;; Version 6 is experimental and may not work correctly. This is why we
+;; default to version 4, which is also used in the binary toolchain bundle
+;; 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
(define-public proplib
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index c171e2629a..650ac2b89c 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -4,7 +4,7 @@
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 David Thompson <davet@gnu.org>
;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016 Theodoros Foradis <theodoros.for@openmailbox.org>
+;;; Copyright © 2016, 2017 Theodoros Foradis <theodoros.for@openmailbox.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -45,6 +45,7 @@
#:use-module (gnu packages flex)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages gd)
#:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
@@ -63,6 +64,7 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages qt)
+ #:use-module (gnu packages readline)
#:use-module (gnu packages swig)
#:use-module (gnu packages tcl)
#:use-module (gnu packages tls)
@@ -843,3 +845,171 @@ interface to select the best such procedures to use on a given system.")
(synopsis "Serial terminal emulator")
(description "@code{minicom} is a serial terminal emulator.")
(license license:gpl2+)))
+
+(define-public harminv
+ (package
+ (name "harminv")
+ (version "1.4")
+ (source (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "http://ab-initio.mit.edu/harminv/harminv-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1pmm8d6fx9ahhnk7w12bfa6zx3afbkg4gkvlvgwhpjxbcrvrp3jk"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'fix-tests
+ (lambda _
+ (substitute* "./sines-test.sh"
+ ; change test frequency range - default fails
+ (("0\\.15") "0.16"))
+ #t)))))
+ (native-inputs
+ `(("fortran" ,gfortran)))
+ (inputs
+ `(("lapack" ,lapack)))
+ (home-page "http://ab-initio.mit.edu/wiki/index.php/Harminv")
+ (synopsis "Harmonic inversion solver")
+ (description
+ "Harminv is a free program (and accompanying library) to solve the problem of
+harmonic inversion — given a discrete-time, finite-length signal that consists of a sum
+of finitely-many sinusoids (possibly exponentially decaying) in a given bandwidth, it
+determines the frequencies, decay constants, amplitudes, and phases of those sinusoids.")
+ (license license:gpl2+)))
+
+(define-public guile-libctl
+ (package
+ (name "guile-libctl")
+ (version "3.2.2")
+ (source (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "http://ab-initio.mit.edu/libctl/libctl-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1g7gqybq20jhdnw5vg18bgbj9jz0408gfmjvs8b4xs30pic8pgca"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("fortran" ,gfortran)))
+ (inputs
+ `(("guile" ,guile-2.2)))
+ (home-page "http://ab-initio.mit.edu/wiki/index.php/Libctl")
+ (synopsis "Flexible control files implementation for scientific simulations")
+ (description
+ "Libctl is a Guile-based library implementing flexible control files
+for scientific simulations.")
+ (license license:gpl2+)))
+
+(define-public mpb
+ (package
+ (name "mpb")
+ (version "1.5")
+ (source (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "http://ab-initio.mit.edu/mpb/mpb-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1mqb2d8jq957nksayjygq58iy8i42vjryzg9iy5fpfay31wzxsix"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list (string-append "--with-libctl="
+ (assoc-ref %build-inputs "libctl")
+ "/share/libctl"))))
+ (native-inputs
+ `(("fortran" ,gfortran)
+ ("pkg-config" ,pkg-config)
+ ("swig" ,swig)))
+ (inputs
+ `(("fftw" ,fftw)
+ ("gsl" ,gsl)
+ ("guile" ,guile-2.2)
+ ("hdf5" ,hdf5)
+ ("lapack" ,lapack)
+ ("libctl" ,guile-libctl)
+ ("readline" ,readline)
+ ("zlib" ,zlib)))
+ (home-page "http://ab-initio.mit.edu/wiki/index.php/MIT_Photonic_Bands")
+ (synopsis "Computes band structures and electromagnetic modes of dielectric
+structures")
+ (description
+ "MIT Photonic-Bands (MPB) computes definite-frequency eigenstates (harmonic modes)
+of Maxwell's equations in periodic dielectric structures for arbitrary wavevectors, using
+fully-vectorial and three-dimensional methods.")
+ (license license:gpl2+)))
+
+(define-public meep
+ (package
+ (name "meep")
+ (version "1.3")
+ (source (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "http://ab-initio.mit.edu/meep/meep-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0f6lbw2hrksg7xscwdqs78jc9nmzx9fs8j0hz1y4i8qknkqiyk2n"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list (string-append "--with-libctl="
+ (assoc-ref %build-inputs "libctl")
+ "/share/libctl"))))
+ (native-inputs
+ `(("fortran" ,gfortran)
+ ("pkg-config" ,pkg-config)
+ ("swig" ,swig)))
+ (inputs
+ `(("fftw" ,fftw)
+ ("gsl" ,gsl)
+ ("guile" ,guile-2.0) ; doesn't build with guile-2.2
+ ("harminv" ,harminv)
+ ("hdf5" ,hdf5)
+ ("lapack" ,lapack)
+ ("libctl" ,guile-libctl)
+ ("mpb" ,mpb)
+ ("zlib" ,zlib)))
+ (home-page "http://ab-initio.mit.edu/wiki/index.php/Meep")
+ (synopsis "Finite-difference time-domain (FDTD) simulation software")
+ (description
+ "Meep is a finite-difference time-domain (FDTD) simulation software package
+developed at MIT to model electromagnetic systems.")
+ (license license:gpl2+)))
+
+(define-public adms
+ (package
+ (name "adms")
+ (version "2.3.6")
+ (source (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "mirror://sourceforge/mot-adms/adms-source/"
+ (version-major+minor version) "/adms-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1rn98l6jxcjhi6ai5f7p588khra9z80m0m0lql4n4sb7773fh1vk"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("flex" ,flex)
+ ("bison" ,bison)))
+ (home-page "https://sourceforge.net/projects/mot-adms")
+ (synopsis "Automatic device model synthesizer")
+ (description
+ "ADMS is a code generator that converts electrical compact device models
+specified in high-level description language into ready-to-compile C code for
+the API of spice simulators. Based on transformations specified in XML
+language, ADMS transforms Verilog-AMS code into other target languages.")
+ (license license:gpl3)))
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index 50da8c8d2f..866db9687c 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -86,15 +86,18 @@
("libtiff" ,libtiff)
("libwebp" ,libwebp)
("libx11" ,libx11)
+ ("libxau" ,libxau)
("libxcomposite" ,libxcomposite)
("libxcursor" ,libxcursor)
+ ("libxdamage" ,libxdamage)
("libxdmcp" ,libxdmcp)
("libxext" ,libxext)
("libxi" ,libxi)
- ("libxkbfile" ,libxkbfile)
+ ("libxfixes" ,libxfixes)
("libxinerama" ,libxinerama)
("libxp" ,libxp)
("libxrandr" ,libxrandr)
+ ("libxrender" ,libxrender)
("libxscrnsaver" ,libxscrnsaver)
("libxtst" ,libxtst)
("lz4" ,lz4)
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 4d61f0fccf..297094ce06 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -53,8 +53,7 @@
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
- #:use-module (gnu packages xorg)
- #:use-module (gnu packages zip))
+ #:use-module (gnu packages xorg))
(define-public font-inconsolata
(package
@@ -1045,51 +1044,28 @@ monospace, slab-serif fonts.")
(define-public font-google-material-design-icons
(package
- (name "font-google-material-design-icons")
- (version "3.0.1")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/google/material-design-icons/archive/"
+ (name "font-google-material-design-icons")
+ (version "3.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/google/material-design-icons/archive/"
version ".tar.gz"))
- (sha256
- (base32
- "183n0qv3q8w6n27libarq1fhc4mqv2d3sasbfmbn7x9r5pw9c6ga"))
- (file-name (string-append name "-" version ".tar.gz"))))
- (build-system trivial-build-system)
- (native-inputs
- `(("tar" ,tar)
- ("gzip" ,gzip)))
- (arguments
- `(#:modules ((guix build utils))
- #:builder (begin
- (use-modules (guix build utils))
- (let* ((font-dir (string-append %output
- "/share/fonts/truetype"))
- (source (assoc-ref %build-inputs "source"))
- (font-filename "MaterialIcons-Regular.ttf")
- (src-ttf-file (string-append "material-design-icons-"
- ,version
- "/iconfont/"
- font-filename))
- (dest-ttf-file (string-append font-dir font-filename))
- (gzip (assoc-ref %build-inputs "gzip"))
- (tar (assoc-ref %build-inputs "tar")))
- (setenv "PATH" (string-append gzip "/bin:"
- tar "/bin:"))
- (system* "tar" "xf" source)
- (mkdir-p font-dir)
- (copy-file src-ttf-file dest-ttf-file)))))
- (home-page "http://google.github.io/material-design-icons")
- (synopsis "Icon font of Google Material Design icons")
- (description
- "Material design system icons are simple, modern, friendly, and sometimes
+ (sha256
+ (base32
+ "183n0qv3q8w6n27libarq1fhc4mqv2d3sasbfmbn7x9r5pw9c6ga"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system font-build-system)
+ (home-page "http://google.github.io/material-design-icons")
+ (synopsis "Icon font of Google Material Design icons")
+ (description
+ "Material design system icons are simple, modern, friendly, and sometimes
quirky. Each icon is created using our design guidelines to depict in simple
and minimal forms the universal concepts used commonly throughout a UI.
Ensuring readability and clarity at both large and small sizes, these icons
have been optimized for beautiful display on all common platforms and display
resolutions.")
- (license license:asl2.0)))
+ (license license:asl2.0)))
(define-public font-mathjax
(package
diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm
index 0b98e2db0d..420d0aff28 100644
--- a/gnu/packages/fpga.scm
+++ b/gnu/packages/fpga.scm
@@ -25,6 +25,7 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake)
#:use-module (gnu packages)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages tcl)
#:use-module (gnu packages readline)
@@ -35,7 +36,6 @@
#:use-module (gnu packages graphviz)
#:use-module (gnu packages libffi)
#:use-module (gnu packages linux)
- #:use-module (gnu packages zip)
#:use-module (gnu packages perl)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gperf)
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 18ce2ae4a4..b8b110c9aa 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -35,6 +35,7 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module (gnu packages)
+ #:use-module (gnu packages boost)
#:use-module (gnu packages curl)
#:use-module (gnu packages databases)
#:use-module (gnu packages documentation)
@@ -51,7 +52,6 @@
#:use-module (gnu packages qt)
#:use-module (gnu packages video)
#:use-module (gnu packages compression)
- #:use-module (gnu packages zip)
#:use-module (gnu packages gl)
#:use-module (gnu packages linux)
#:use-module (gnu packages xorg)
@@ -147,6 +147,65 @@ conversions (for example, from PPM to Doom picture format). In addition,
DeuTex has functions such as merging wads, etc.")
(license license:gpl2+)))
+(define-public grfcodec
+ (package
+ (name "grfcodec")
+ (version "6.0.6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://binaries.openttd.org/extra/"
+ name "/" version "/" name "-" version
+ "-source.tar.xz"))
+ (sha256
+ (base32
+ "08admgnpqcsifpicbm56apgv360fxapqpbbsp10qyk8i22w1ivsk"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f ; no check target
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure) ; no configure script
+ (replace 'install ; no install target
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (doc (string-append out "/share/doc"))
+ (man (string-append out "/share/man/man1")))
+ (for-each (lambda (file)
+ (install-file file bin))
+ '("grfcodec" "grfid" "grfstrip" "nforenum"))
+ (install-file "COPYING" doc)
+ (with-directory-excursion "docs"
+ (for-each (lambda (file)
+ (install-file (string-append file ".txt") doc))
+ '("auto_correct" "commands" "grf" "grfcodec" "grftut"
+ "readme" "readme.rpn"))
+ (for-each (lambda (file)
+ (install-file file man))
+ (find-files "." "\\.1"))))
+ #t)))))
+ (inputs
+ `(("boost" ,boost)
+ ("libpng" ,libpng)
+ ("zlib" ,zlib)))
+ (synopsis "GRF development tools")
+ (description
+ "The @dfn{Graphics Resource File} (GRF) development tools are a set of
+tools for developing (New)GRFs. It includes a number of smaller programs, each
+with a specific task:
+@enumerate
+@item @code{grfcodec} decodes and encodes GRF files for OpenTTD.
+@item @code{grfid} extracts the so-called \"GRF ID\" from a GRF.
+@item @code{grfstrip} strips all sprites from a GRF.
+@item @code{nforenum} checks NFO code for errors, making corrections when
+necessary.
+@end enumerate")
+ (home-page "http://dev.openttdcoop.org/projects/grfcodec")
+ ;; GRFCodec, GRFID, and GRFStrip are exclusively under the GPL2.
+ ;; NFORenum is under the GPL2+.
+ ;; The MD5 implementation contained in GRFID is under the zlib license.
+ (license (list license:gpl2 license:gpl2+ license:zlib))))
+
(define-public gzochi
(package
(name "gzochi")
@@ -189,21 +248,46 @@ and network communications. A very thin client library can be embedded to
provide connectivity for client applications written in any language.")
(license license:gpl3+)))
+(define-public nml
+ (package
+ (name "nml")
+ (version "0.4.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://bundles.openttdcoop.org/nml/releases/"
+ version "/nml-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0wk9ls5qyjwkra54rkj1gg94xbwzi7b84a5fh1ma1q7pbimi8rmg"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-pillow" ,python-pillow)
+ ("python-ply" ,python-ply)))
+ (home-page "http://dev.openttdcoop.org/projects/nml")
+ (synopsis "NML compiler")
+ (description
+ "@dfn{NewGRF Meta Language} (NML) is a python-based compiler, capable of
+compiling NML files (along with their associated language, sound and graphic
+files) into @file{.grf} and/or @file{.nfo} files.")
+ (license license:gpl2+)))
+
(define-public python-sge-pygame
(package
(name "python-sge-pygame")
- (version "1.4.4")
+ (version "1.5")
(source
(origin
(method url-fetch)
(uri (pypi-uri "sge-pygame" version))
(sha256
(base32
- "1qhrcja1igqkjjn1w425ni5f41mijdq5dpq0ymkhl29xxrf8hnx8"))))
+ "0g0n722md6nfayiqzadwf0dh821hzqv0alp4by0vjfwr1xzv49mc"))))
(build-system python-build-system)
(propagated-inputs
`(("python-pygame" ,python-pygame)
- ("python-six" ,python-six)))
+ ("python-six" ,python-six)
+ ("python-uniseg" ,python-uniseg)))
(home-page "http://stellarengine.nongnu.org")
(synopsis "2D game engine for Python")
(description
@@ -255,14 +339,14 @@ levels.")
(define-public python-xsge
(package
(name "python-xsge")
- (version "2017.04.10")
+ (version "2017.06.09")
(source (origin
(method url-fetch)
(uri (string-append "mirror://savannah/xsge/xsge-"
version ".tar.gz"))
(sha256
(base32
- "04il5yx0py6kchxxw6ydbbx0wpiyjf9dgkwsdynirpkczlnid3am"))))
+ "1vy7c2y7ihvmggs93zgfv2h3049s384wid8a5snzrrba8bhbb89p"))))
(build-system python-build-system)
(arguments
'(#:phases
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 2c5294737f..603687d08f 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -31,6 +31,7 @@
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -73,6 +74,7 @@
#:use-module (gnu packages game-development)
#:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
+ #:use-module (gnu packages gimp)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
@@ -110,7 +112,6 @@
#:use-module (gnu packages compression)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages linux)
- #:use-module (gnu packages zip)
#:use-module (gnu packages xiph)
#:use-module (gnu packages curl)
#:use-module (gnu packages lua)
@@ -136,6 +137,35 @@
#:use-module (guix build-system cmake)
#:use-module (guix build-system trivial))
+(define-public armagetronad
+ (package
+ (name "armagetronad")
+ (version "0.2.8.3.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/" name "/stable/"
+ version "/" name "-" version ".src.tar.gz"))
+ (sha256
+ (base32
+ "1pgy0r80z702qdv94aw3ywdn4ynnr4cdi86ml558pljfc5ygasj4"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("libxml2" ,libxml2)
+ ("sdl" ,sdl)
+ ("sdl-image" ,sdl-image)
+ ("freeglut" ,freeglut)
+ ("libpng" ,libpng)
+ ("libjpeg-turbo" ,libjpeg-turbo)))
+ (home-page "http://www.armagetronad.org")
+ (synopsis "Tron clone in 3D")
+ (description "Armagetron is a multiplayer game in 3d that attempts to
+emulate and expand on the lightcycle sequence from the movie Tron. It's
+an old school arcade game slung into the 21st century. Highlights include
+a customizable playing arena, HUD, unique graphics, and AI bots. For the
+more advanced player there are new game modes and a wide variety of physics
+settings to tweak as well.")
+ (license license:gpl2+)))
+
(define-public cataclysm-dda
(package
(name "cataclysm-dda")
@@ -409,6 +439,64 @@ Chess). It is similar to standard chess but this variant is far more complicate
"PrBoom+ is a Doom source port developed from the original PrBoom project.")
(license license:gpl2+)))
+(define-public retux
+ (package
+ (name "retux")
+ (version "1.3.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://savannah/retux/"
+ (version-major+minor version) "/retux-"
+ version "-src.tar.gz"))
+ (sha256
+ (base32
+ "1wgvh3q96kfgymb2jpd58xsms9hmckhhc4fq7v2k61gh2l11cvdj"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f ; no check target
+ #:phases
+ (modify-phases %standard-phases
+ ;; no setup.py script
+ (delete 'build)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (data (string-append out "/share/retux"))
+ (doc (string-append out "/share/doc/retux")))
+ (mkdir-p bin)
+
+ (substitute* "retux.py"
+ ;; Use the correct data directory.
+ (("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),")
+ (string-append "\"" data "\","))
+ ;; Use Python 3 so the patch-shebangs phase works properly.
+ ((".*python2.*") "#!/usr/bin/python3"))
+
+ (copy-file "retux.py" (string-append bin "/retux"))
+
+ (copy-recursively "data" data)
+
+ (install-file "COPYING" doc)))))))
+ (inputs
+ `(("python-sge-pygame" ,python-sge-pygame)
+ ("python-six" ,python-six)
+ ("python-xsge" ,python-xsge)))
+ (home-page "http://retux.nongnu.org")
+ (synopsis "Action platformer game")
+ (description
+ "ReTux is an action platformer loosely inspired by the Mario games,
+utilizing the art assets from the @code{SuperTux} project.")
+ ;; GPL version 3 or later is the license for the code and some art.
+ ;; The rest of the licenses are for the art exclusively, as listed in
+ ;; data/LICENSES.
+ (license (list license:cc0
+ license:cc-by3.0
+ license:cc-by-sa3.0
+ license:cc-by-sa4.0
+ license:gpl2+
+ license:gpl3+))))
+
(define-public xshogi
(package
(name "xshogi")
@@ -1175,7 +1263,7 @@ either by Infocom or created using the Inform compiler.")
(define-public retroarch
(package
(name "retroarch")
- (version "1.6.0")
+ (version "1.6.1")
(source
(origin
(method url-fetch)
@@ -1183,7 +1271,7 @@ either by Infocom or created using the Inform compiler.")
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "01h9mswlfjk3zpdxwk1ciy5qkq6xq925gvk6wrh8k066b2wx8f8k"))))
+ (base32 "121h9j57gvjr155vvm4f7ybphfvqrdz2ib059kfi444xcxz19sl0"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no tests
@@ -1219,7 +1307,7 @@ either by Infocom or created using the Inform compiler.")
(native-inputs
`(("pkg-config" ,pkg-config)
("which" ,which)))
- (home-page "http://www.libretro.com/")
+ (home-page "https://www.libretro.com/")
(synopsis "Reference frontend for the libretro API")
(description
"Libretro is a simple but powerful development interface that allows for
@@ -2299,10 +2387,85 @@ engine. When you start it you will be prompted to download a graphics set.")
;; 'openttd' a wrapper around them. The engine is playable by itself,
;; but it asks a user to download graphics if it's not found.
+(define openttd-opengfx
+ (package
+ (name "openttd-opengfx")
+ (version "0.5.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://binaries.openttd.org/extra/opengfx/"
+ version "/opengfx-" version "-source.tar.xz"))
+ (sha256
+ (base32
+ "0iz66q7p1mf00njfjbc4vibh3jaybki7armkl18iz7p6x4chp9zv"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:make-flags (list "CC=gcc"
+ (string-append "INSTALL_DIR="
+ (assoc-ref %outputs "out")
+ "/share/openttd/baseset"))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda _
+ ;; Make sure HOME is writable for GIMP.
+ (setenv "HOME" (getcwd))
+
+ ;; Redirect stdout, not stderr, to /dev/null. This prevents
+ ;; dos2unix from receiving its version information as a flag.
+ (substitute* "Makefile"
+ (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
+ "$(UNIX2DOS) -q --version 1>/dev/null")))))
+ ;; The check phase for this package only checks the md5sums of the built
+ ;; GRF files against the md5sums of the release versions. Because we use
+ ;; different software versions than upstream does, some of the md5sums
+ ;; are different. However, the package is still reproducible, it's safe
+ ;; to disable this test.
+ #:tests? #f))
+ (native-inputs `(("dos2unix" ,dos2unix)
+ ("gimp" ,gimp)
+ ("grfcodec" ,grfcodec)
+ ("nml" ,nml)
+ ("python" ,python-2)))
+ (home-page "http://dev.openttdcoop.org/projects/opengfx")
+ (synopsis "Base graphics set for OpenTTD")
+ (description
+ "The OpenGFX projects is an implementation of the OpenTTD base grahics
+set that aims to ensure the best possible out-of-the-box experience.
+
+OpenGFX provides you with...
+@enumerate
+@item All graphics you need to enjoy OpenTTD.
+@item Uniquely drawn rail vehicles for every climate.
+@item Completely snow-aware rivers.
+@item Different river and sea water.
+@item Snow-aware buoys.
+@end enumerate")
+ (license license:gpl2)))
+
(define-public openttd
(package
(inherit openttd-engine)
- (name "openttd")))
+ (name "openttd")
+ (arguments
+ (substitute-keyword-arguments (package-arguments openttd-engine)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'install 'install-data
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let*
+ ((opengfx (assoc-ref inputs "opengfx"))
+ (out (assoc-ref outputs "out"))
+ (gfx-dir
+ (string-append out
+ "/share/games/openttd/baseset/opengfx")))
+ (mkdir-p gfx-dir)
+ (copy-recursively opengfx gfx-dir))
+ #t))))))
+ (native-inputs
+ `(("opengfx" ,openttd-opengfx)
+ ,@(package-native-inputs openttd-engine)))))
(define-public pinball
(package
@@ -2626,7 +2789,7 @@ Red Eclipse provides fast paced and accessible gameplay.")
(define-public higan
(package
(name "higan")
- (version "101")
+ (version "103")
(source
(origin
(method url-fetch)
@@ -2635,7 +2798,7 @@ Red Eclipse provides fast paced and accessible gameplay.")
version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0qavwkmzc63p6qplmxii4gc541z5mcs8gjwh3m4y7i576r7rcbk9"))
+ (base32 "013r0lcm0qw8zwavz977mqk2clg80gngkjijr3n0q8snpc1727r7"))
(patches (search-patches "higan-remove-march-native-flag.patch"))))
(build-system gnu-build-system)
(native-inputs
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index edb26247a3..ed5eaf09af 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -45,7 +45,6 @@
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
- #:use-module (gnu packages zip)
#:use-module (guix download)
#:use-module (guix build utils)
#:use-module (guix build-system gnu)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 32e3e37562..322611858d 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -132,7 +132,6 @@
#:use-module (gnu packages readline)
#:use-module (gnu packages fonts)
#:use-module (gnu packages qemu)
- #:use-module (gnu packages zip)
#:use-module (gnu packages speech)
#:use-module (srfi srfi-1))
@@ -920,6 +919,9 @@ some form of information without getting in the user's way.")
("glib:bin" ,glib "bin")
("gobject-introspection" ,gobject-introspection)
("intltool" ,intltool)))
+ (propagated-inputs
+ ;; The .pc file "Requires" gobject-introspection.
+ `(("gobject-introspection" ,gobject-introspection)))
(home-page "https://wiki.gnome.org/Libpeas")
(synopsis "GObject plugin system")
(description
@@ -3648,6 +3650,51 @@ supports playlists, song ratings, and any codecs installed through gstreamer.")
supports image conversion, rotation, and slideshows.")
(license license:gpl2+)))
+(define-public eog-plugins
+ ;; Note: EOG looks for its plugins (via libpeas) in ~/.local as well as
+ ;; $DATA/lib/eog/plugins, where DATA is one of the entries in
+ ;; $XDG_DATA_DIRS. Thus, for EOG to find these, you have to have
+ ;; 'XDG_DATA_DIRS' appropriately set.
+ (package
+ (name "eog-plugins")
+ (version "3.25.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnome/sources/" name "/"
+ (version-major+minor version) "/"
+ name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "0an04z8v83qa6j950rbwdzf1s86y7zd8h1r4p2x36fwbkk1m617q"))))
+ (build-system gnu-build-system)
+ (home-page "https://wiki.gnome.org/Apps/EyeOfGnome/Plugins")
+ (synopsis "Extensions for the Eye of GNOME image viewer")
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("gettext" ,gnu-gettext)))
+ (inputs
+ `(("eog" ,eog)
+ ("glib" ,glib)
+ ("gtk+" ,gtk+)
+ ("libpeas" ,libpeas)
+ ("libexif" ,libexif)
+ ("libchamplain" ,libchamplain)))
+ (description
+ "This package provides plugins for the Eye of GNOME (EOG) image viewer,
+notably:
+
+@itemize
+@item @dfn{EXIF Display}, which displays camera (EXIF) information;
+@item @dfn{Map}, which displays a map of where the picture was taken on the
+side panel;
+@item @dfn{Slideshow Shuffle}, to shuffle images in slideshow mode.
+@end itemize\n")
+
+ ;; XXX: eog-postasa-plugin-resources.c (which we don't build) contains a
+ ;; long suspicious byte stream that goes to a
+ ;; ".gresource.eog_postasa_plugin" ELF section.
+ (license license:gpl2+)))
+
(define-public libgudev
(package
(name "libgudev")
@@ -3859,6 +3906,7 @@ work and the interface is well tested.")
(inputs
`(("avahi" ,avahi)
("gcr" ,gcr)
+ ("gdk-pixbuf" ,gdk-pixbuf) ; for loading SVG files
("glib-networking" ,glib-networking)
("gnome-desktop" ,gnome-desktop)
("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 6809a696a0..37adc3bbd6 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -58,7 +58,6 @@
#:use-module (gnu packages icu4c)
#:use-module (gnu packages video)
#:use-module (gnu packages xdisorg)
- #:use-module (gnu packages zip)
#:use-module (gnu packages readline))
(define-public mozjs
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 4fa4033246..6c813e8a37 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -62,8 +62,7 @@
#:use-module (gnu packages sdl)
#:use-module (gnu packages video)
#:use-module (gnu packages xml)
- #:use-module (gnu packages xorg)
- #:use-module (gnu packages zip))
+ #:use-module (gnu packages xorg))
(define-public blender
(package
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 5c3b3c5f3b..6c0eda99c8 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -98,7 +98,7 @@ arrays of data.")
(define-public gstreamer
(package
(name "gstreamer")
- (version "1.12.0")
+ (version "1.12.1")
(source
(origin
(method url-fetch)
@@ -107,7 +107,7 @@ arrays of data.")
version ".tar.xz"))
(sha256
(base32
- "00j3zwm22582fwyzh316mnh6ghicv4ya93yk52kz4avx57wfxm8l"))))
+ "1lm6lcr0rv0mzsdl9vjdnf3vb136qmcslvz3m5zlai7zngcbji4h"))))
(build-system gnu-build-system)
(outputs '("out" "doc"))
(arguments
@@ -146,7 +146,7 @@ This package provides the core library and elements.")
(define-public gst-plugins-base
(package
(name "gst-plugins-base")
- (version "1.12.0")
+ (version "1.12.1")
(source
(origin
(method url-fetch)
@@ -154,7 +154,7 @@ This package provides the core library and elements.")
name "-" version ".tar.xz"))
(sha256
(base32
- "0k9nckvzk2hhhg7w4gzmd7is0lbswdmrkwmcgblvdf2lgy3wcprl"))))
+ "0r84krn8dpimp6kk9cf38danrbbsypx6j6ykr6rl1a3lnnnrzkhc"))))
(build-system gnu-build-system)
(outputs '("out" "doc"))
(propagated-inputs
@@ -201,7 +201,7 @@ for the GStreamer multimedia library.")
(define-public gst-plugins-good
(package
(name "gst-plugins-good")
- (version "1.12.0")
+ (version "1.12.1")
(source
(origin
(method url-fetch)
@@ -210,7 +210,7 @@ for the GStreamer multimedia library.")
name "-" version ".tar.xz"))
(sha256
(base32
- "1g1f6xyj0f06nmsl01xhr32x2rwyb857yjkrig1013iknx6p67ca"))))
+ "0jzm5jp22238y3rb0j1dsxyp77dq0wk03gn9kvq25rphlx38w7hj"))))
(build-system gnu-build-system)
(inputs
`(("aalib" ,aalib)
@@ -266,14 +266,14 @@ developers consider to have good quality code and correct functionality.")
(define-public gst-plugins-bad
(package
(name "gst-plugins-bad")
- (version "1.12.0")
+ (version "1.12.1")
(source (origin
(method url-fetch)
(uri (string-append "https://gstreamer.freedesktop.org/src/"
name "/" name "-" version ".tar.xz"))
(sha256
(base32
- "0d45zgdnflwpwvlb1fmgj35yfds9m1g46mhppvlsh5dky7zkrdqi"))))
+ "15svf3d4n13r1c18mx9ya3ymibv0vbx9s593j0cm0kn4s54q1vvx"))))
(outputs '("out" "doc"))
(build-system gnu-build-system)
(arguments
@@ -343,7 +343,7 @@ par compared to the rest.")
(define-public gst-plugins-ugly
(package
(name "gst-plugins-ugly")
- (version "1.12.0")
+ (version "1.12.1")
(source
(origin
(method url-fetch)
@@ -351,7 +351,7 @@ par compared to the rest.")
name "/" name "-" version ".tar.xz"))
(sha256
(base32
- "1mhasi20kvi9p72kh4qyfzync509wqqkk8fp2xxyhgp88r8bls2y"))))
+ "0s8hiv4asqd6nwnksqv6cwpzan41zd0nd8nhlm7s64wp0lyi5hlg"))))
(build-system gnu-build-system)
(inputs
`(("gst-plugins-base" ,gst-plugins-base)
@@ -382,7 +382,7 @@ distribution problems in some jurisdictions, e.g. due to patent threats.")
(define-public gst-libav
(package
(name "gst-libav")
- (version "1.12.0")
+ (version "1.12.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -390,7 +390,7 @@ distribution problems in some jurisdictions, e.g. due to patent threats.")
name "-" version ".tar.xz"))
(sha256
(base32
- "1i2h0ymh9jy0rnkcan2rdsdfq7l02rmp33g712q81s9fcizlgl9r"))))
+ "0xshib0hsn8yjmd12ipsrbrvxa5qnhnz7zmdj7lms6b3vwzq5msm"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--with-system-libav")
@@ -420,7 +420,7 @@ compression formats through the use of the libav library.")
(define-public python-gst
(package
(name "python-gst")
- (version "1.12.0")
+ (version "1.12.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -428,7 +428,7 @@ compression formats through the use of the libav library.")
"gst-python-" version ".tar.xz"))
(sha256
(base32
- "01wwbn6z3771ad55ljl9gs6irrs9a8p186zrgrkmzs91kxmxwcxy"))))
+ "18bq03xdc0jgrza4114lrcj82yai4azkjzfxflqagc0y417vw88p"))))
(build-system gnu-build-system)
(arguments
;; XXX: Factorize python-sitedir with python-build-system.
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 85faec6c47..1fb759fc20 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -36,6 +36,7 @@
#:use-module (gnu packages aspell)
#:use-module (gnu packages bash)
#:use-module (gnu packages bdw-gc)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages gawk)
#:use-module (gnu packages gperf)
#:use-module (gnu packages libffi)
@@ -62,7 +63,6 @@
#:use-module (gnu packages version-control)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg)
- #:use-module (gnu packages zip)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 9d03e5600f..a672092342 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -46,7 +46,6 @@
#:use-module (gnu packages sdl)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
- #:use-module (gnu packages zip)
#:use-module (guix build-system gnu)
#:use-module (guix build-system haskell)
#:use-module (guix download)
@@ -1633,14 +1632,14 @@ environment variables.")
(define-public ghc-x11
(package
(name "ghc-x11")
- (version "1.6.1.2")
+ (version "1.8")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/X11/"
"X11-" version ".tar.gz"))
(sha256
- (base32 "1kzjcynm3rr83ihqx2y2d852jc49da4p18gv6jzm7g87z22x85jj"))))
+ (base32 "13lxq36856fzp61y4api78vssykyh8fm2aplr0nsj18ymdm1c6sl"))))
(build-system haskell-build-system)
(inputs
`(("libx11" ,libx11)
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 7a0080b27b..da7b780162 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -104,14 +104,18 @@ actions.")
"0gzc82sy66pbsmq7lnmq4y37zqad1zfwfls3ik3dmfm8s5nmcvsb"))))
(build-system gnu-build-system)
(arguments
- `(#:phases
+ `(;; Enable support for a "map" pane using GPS data.
+ #:configure-flags '("--enable-map")
+
+ #:phases
(modify-phases %standard-phases
(add-after 'unpack 'autogen
(lambda _
(setenv "NOCONFIGURE" "true")
(zero? (system* "sh" "autogen.sh")))))))
(inputs
- `(;; ("libchamplain" ,libchamplain)
+ `(("clutter" ,clutter)
+ ("libchamplain" ,libchamplain)
("lcms" ,lcms)
("exiv2" ,exiv2)
("libpng" ,libpng)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 7c4a18a4af..149b45de56 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -55,7 +55,6 @@
#:use-module (gnu packages python)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
- #:use-module (gnu packages zip)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
@@ -366,52 +365,6 @@ collection of tools for doing simple manipulations of TIFF images.")
"See COPYRIGHT in the distribution."))
(home-page "http://www.simplesystems.org/libtiff/")))
-(define-public libwmf
- (package
- (name "libwmf")
- (version "0.2.8.4")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "mirror://sourceforge/wvware/"
- name "/" version
- "/" name "-" version ".tar.gz"))
- (sha256
- (base32 "1y3wba4q8pl7kr51212jwrsz1x6nslsx1gsjml1x0i8549lmqd2v"))
- (patches
- (search-patches "libwmf-CAN-2004-0941.patch"
- "libwmf-CVE-2006-3376.patch"
- "libwmf-CVE-2007-0455.patch"
- "libwmf-CVE-2007-2756.patch"
- "libwmf-CVE-2007-3472.patch"
- "libwmf-CVE-2007-3473.patch"
- "libwmf-CVE-2007-3477.patch"
- "libwmf-CVE-2009-1364.patch"
- "libwmf-CVE-2009-3546.patch"
- "libwmf-CVE-2015-0848+CVE-2015-4588.patch"
- "libwmf-CVE-2015-4695.patch"
- "libwmf-CVE-2015-4696.patch"))))
-
- (build-system gnu-build-system)
- (inputs
- `(("freetype" ,freetype)
- ("libjpeg" ,libjpeg)
- ("libpng",libpng)
- ("libxml2" ,libxml2)
- ("zlib" ,zlib)))
- (native-inputs
- `(("pkg-config" ,pkg-config)))
- (synopsis "Library for reading images in the Microsoft WMF format")
- (description
- "libwmf is a library for reading vector images in Microsoft's native
-Windows Metafile Format (WMF) and for either (a) displaying them in, e.g., an X
-window; or (b) converting them to more standard/free file formats such as, e.g.,
-the W3C's XML-based Scaleable Vector Graphic (SVG) format.")
- (home-page "http://wvware.sourceforge.net/libwmf.html")
-
- ;; 'COPYING' is the GPLv2, but file headers say LGPLv2.0+.
- (license license:lgpl2.0+)))
-
(define-public leptonica
(package
(name "leptonica")
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index a0ca4528f9..c543655fb8 100644
--- a/gnu/packages/imagemagick.scm
+++ b/gnu/packages/imagemagick.scm
@@ -46,14 +46,14 @@
;; The 7 release series has an incompatible API, while the 6 series is still
;; maintained. Don't update to 7 until we've made sure that the ImageMagick
;; users are ready for the 7-series API.
- (version "6.9.8-9")
+ (version "6.9.8-10")
(source (origin
(method url-fetch)
(uri (string-append "mirror://imagemagick/ImageMagick-"
version ".tar.xz"))
(sha256
(base32
- "0wr6wcmvaw62f6pkgnpqnjmp331wfwmds9wmqzr4zv53s9k1lkzn"))))
+ "040qs7nwcm84bjd9wryvd58zqfykbmn3y3qfc90lnldww7v6ihlg"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch")
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index ad167a6e99..896e993a9a 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -142,14 +142,14 @@ SILC and ICB protocols via plugins.")
(define-public weechat
(package
(name "weechat")
- (version "1.8")
+ (version "1.9")
(source (origin
(method url-fetch)
(uri (string-append "https://weechat.org/files/src/weechat-"
version ".tar.xz"))
(sha256
(base32
- "05z0qmlmdm0zgkzhi6cy6snxdz37h1n5z2s460df76akjr7capxn"))
+ "1zvxz98krq98y7jh3yrjbardg3yxp6y2031rvb7rp5ssk8lyp1fc"))
(patches (search-patches "weechat-python.patch"))))
(build-system gnu-build-system)
(native-inputs `(("autoconf" ,autoconf)
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 7bdf97f98a..e81ee40d38 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -60,7 +60,6 @@
#:use-module (gnu packages kerberos)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
- #:use-module (gnu packages zip)
#:use-module (gnu packages texinfo)
#:use-module ((srfi srfi-1) #:select (fold alist-delete))
#:use-module (srfi srfi-11)
diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index 6746ad1d22..43bc0bbf6d 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -83,3 +84,53 @@ and AsciiMath notation that works in all modern browsers. It requires no
plugins or software to be installed on the browser. So the page author can
write web documents that include mathematics and be confident that readers will
be able to view it naturally and easily.")))
+
+(define-public js-respond
+ (package
+ (name "js-respond")
+ (version "1.4.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/scottjehl/Respond/"
+ "archive/" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0ds1ya2a185jp93mdn07159c2x8zczwi960ykrawpp62bwk2n93d"))))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils)
+ (ice-9 match)
+ (ice-9 popen)
+ (srfi srfi-26))
+ (set-path-environment-variable
+ "PATH" '("bin") (map (match-lambda
+ ((_ . input)
+ input))
+ %build-inputs))
+ (let ((install-directory (string-append %output
+ "/share/javascript/respond/")))
+ (system* "tar" "xvf"
+ (assoc-ref %build-inputs "source")
+ "--strip" "1")
+ (mkdir-p install-directory)
+ (let* ((file "src/respond.js")
+ (installed (string-append install-directory "respond.min.js")))
+ (let ((minified (open-pipe* OPEN_READ "uglify-js" file)))
+ (call-with-output-file installed
+ (cut dump-port minified <>)))))
+ #t)))
+ (home-page "https://github.com/scottjehl/Respond")
+ (native-inputs
+ `(("uglify-js" ,uglify-js)
+ ("source" ,source)
+ ("gzip" ,gzip)
+ ("tar" ,tar)))
+ (synopsis "Polyfill for min/max-width CSS3 Media Queries")
+ (description "The goal of this script is to provide a fast and lightweight
+script to enable responsive web designs in browsers that don't support CSS3
+Media Queries.")
+ (license license:expat)))
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 722e3ed138..4a0e13afa3 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -46,8 +46,8 @@
#:use-module (ice-9 match))
(define libuv-julia
- (let ((commit "8d5131b6c1595920dd30644cd1435b4f344b46c8")
- (revision "4"))
+ (let ((commit "52d72a52cc7ccd570929990f010ed16e2ec604c8")
+ (revision "5"))
(package (inherit libuv)
(name "libuv-julia")
(version (string-append "1.9.0-" revision "." (string-take commit 8)))
@@ -59,7 +59,7 @@
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "1fq0vhiprdryw8iisxxwyld3xdr5za6y8458p22ff56al98h22fv"))))
+ "1daxh6ci6q7znxxajr3bm16dd53ragm0d681wf4kzg542qnjq3lh"))))
(build-system gnu-build-system)
(arguments
(substitute-keyword-arguments (package-arguments libuv)
@@ -83,7 +83,7 @@
(define-public julia
(package
(name "julia")
- (version "0.5.1")
+ (version "0.6.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -91,7 +91,7 @@
version "/julia-" version ".tar.gz"))
(sha256
(base32
- "1a9m7hzzrwk71gvwwrd1p45s64yid61i41n95gm5pzbry6p9fpl0"))))
+ "0rd6lcc9sic10q1j3c6f9qr901i1c4554m93n2sz5b3mh37byqhw"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
@@ -122,12 +122,19 @@
(copy-file (string-append (assoc-ref inputs "virtualenv")
"/bin/virtualenv")
"julia-env")
+ (copy-file (assoc-ref inputs "unicode-data")
+ "doc/UnicodeData.txt")
#t))
- (add-after 'unpack 'fix-llvm-flag
+ ;; FIXME: Building the documentation requires Julia packages that
+ ;; would be downloaded from the Internet. We should build them in a
+ ;; separate build phase.
+ (add-after 'unpack 'disable-documentation
(lambda _
- (substitute* "src/Makefile"
- (("-lLLVM-\\$\\(shell \\$\\(LLVM_CONFIG_HOST\\) --version\\)")
- "$(shell $(LLVM_CONFIG_HOST) --libs)"))
+ (substitute* "Makefile"
+ (("(install: .*) \\$\\(BUILDROOT\\)/doc/_build/html/en/index.html" _ line)
+ (string-append line "\n"))
+ (("src ui doc deps")
+ "src ui deps"))
#t))
(add-before 'check 'set-home
;; Some tests require a home directory to be set.
@@ -156,16 +163,16 @@
("gmp" "libgmp" "libgmp.so")
("openlibm" "libopenlibm" "libopenlibm.so")
("openspecfun" "libopenspecfun" "libopenspecfun.so")
- ("fftw" "libfftw3" "libfftw3.so")
- ("fftwf" "libfftw3f" "libfftw3f.so"))))))
+ ("fftw" "libfftw3" "libfftw3_threads.so")
+ ("fftwf" "libfftw3f" "libfftw3f_threads.so"))))))
(substitute* "base/fft/FFTW.jl"
(("const libfftw = Base.libfftw_name")
(string-append "const libfftw = \""
- (assoc-ref inputs "fftw") "/lib/libfftw3.so"
+ (assoc-ref inputs "fftw") "/lib/libfftw3_threads.so"
"\""))
(("const libfftwf = Base.libfftwf_name")
(string-append "const libfftwf = \""
- (assoc-ref inputs "fftwf") "/lib/libfftw3f.so"
+ (assoc-ref inputs "fftwf") "/lib/libfftw3f_threads.so"
"\"")))
(substitute* "base/math.jl"
(("const libm = Base.libm_name")
@@ -228,7 +235,14 @@
(("\"backtrace\",") "")
(("\"compile\",") "")
(("\"replutil\",") "")
- (("\"cmdlineargs\",") ""))
+ (("\"cmdlineargs\",") "")
+ ;; FIXME: This test fails with the following error:
+ ;; Error in testset file:
+ ;; Test Failed
+ ;; Expression: download("ba\0d", "good")
+ ;; Expected: ArgumentError
+ ;; Thrown: Base.UVError
+ (("\"file\",") ""))
#t)))
#:make-flags
(list
@@ -268,6 +282,8 @@
(assoc-ref %build-inputs "utf8proc")
"/include")
"USE_SYSTEM_LLVM=1"
+ "USE_LLVM_SHLIB=0" ; FIXME: fails when set to 1
+
"USE_SYSTEM_LIBUNWIND=1"
"USE_SYSTEM_LIBUV=1"
(string-append "LIBUV="
@@ -339,7 +355,14 @@
("perl" ,perl)
("patchelf" ,patchelf)
("pkg-config" ,pkg-config)
- ("python" ,python-2)))
+ ("python" ,python-2)
+ ("unicode-data"
+ ,(origin
+ (method url-fetch)
+ (uri "http://www.unicode.org/Public/9.0.0/ucd/UnicodeData.txt")
+ (sha256
+ (base32
+ "13zfannnr6sa6s27ggvcvzmh133ndi38pfyxsssvjmw2s8ac9pv8"))))))
;; Julia is not officially released for ARM and MIPS.
;; See https://github.com/JuliaLang/julia/issues/10639
(supported-systems '("i686-linux" "x86_64-linux"))
diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm
index 061d5f1b2e..c8a65af790 100644
--- a/gnu/packages/kodi.scm
+++ b/gnu/packages/kodi.scm
@@ -68,8 +68,7 @@
#:use-module (gnu packages xiph)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
- #:use-module (gnu packages assembly)
- #:use-module (gnu packages zip))
+ #:use-module (gnu packages assembly))
(define-public crossguid
(let ((commit "8f399e8bd4252be9952f3dfa8199924cc8487ca4"))
diff --git a/gnu/packages/ldc.scm b/gnu/packages/ldc.scm
index 5707b9476b..918843c077 100644
--- a/gnu/packages/ldc.scm
+++ b/gnu/packages/ldc.scm
@@ -35,8 +35,7 @@
#:use-module (gnu packages libedit)
#:use-module (gnu packages llvm)
#:use-module (gnu packages python)
- #:use-module (gnu packages textutils)
- #:use-module (gnu packages zip))
+ #:use-module (gnu packages textutils))
(define-public rdmd
(package
diff --git a/gnu/packages/libffcall.scm b/gnu/packages/libffcall.scm
index e4babfed2c..a8b4135caf 100644
--- a/gnu/packages/libffcall.scm
+++ b/gnu/packages/libffcall.scm
@@ -20,27 +20,22 @@
(define-module (gnu packages libffcall)
#:use-module ((guix licenses) #:prefix l:)
- #:use-module (guix utils) ; string-replace-substring
#:use-module (guix packages)
#:use-module (guix download)
- #:use-module (guix git-download)
#:use-module (guix build-system gnu))
(define-public libffcall
(package
(name "libffcall")
- (version "1.12")
+ (version "1.13")
(source
(origin
- (method git-fetch)
- (uri (git-reference
- (url "https://git.savannah.gnu.org/r/libffcall.git")
- (commit (string-append
- "ffcall-" (string-replace-substring version "." "-")))))
- (file-name (string-append name "-" version "-checkout"))
+ (method url-fetch)
+ (uri (string-append
+ "mirror://gnu/libffcall/libffcall-" version ".tar.gz"))
(sha256
(base32
- "0p7gg5k4ifcqpmrmdfmr2r4x909cn35g87iff539p6i8891fdfxf"))))
+ "1rxwkfr0p7vdv6q6x8nmn13611nsq0lnk9cspqdpzxdvgmqcw1qp"))))
(build-system gnu-build-system)
(arguments `(#:parallel-build? #f))
(synopsis "Foreign function calls from interpreters")
@@ -48,5 +43,4 @@
"GNU Libffcall is a collection of libraries that can be used to build
foreign function call interfaces in embedded interpreters.")
(home-page "https://www.gnu.org/software/libffcall/")
- (supported-systems (delete "aarch64-linux" %supported-systems))
(license l:gpl2+)))
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index 809e28e27b..bdbf3f850c 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -65,8 +65,7 @@
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
#:use-module (gnu packages xml)
- #:use-module (gnu packages xorg)
- #:use-module (gnu packages zip))
+ #:use-module (gnu packages xorg))
(define-public ixion
(package
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 93b29ed781..73e376fdd3 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -25,6 +25,7 @@
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2017 nee <nee-git@hidamari.blue>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -62,6 +63,7 @@
#:use-module (gnu packages documentation)
#:use-module (gnu packages elf)
#:use-module (gnu packages flex)
+ #:use-module (gnu packages file)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gettext)
@@ -420,7 +422,17 @@ https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/patch
%linux-libre-hash
'("armhf-linux")
#:defconfig "multi_v7_defconfig"
- #:extra-version "arm-generic"))
+ #:extra-version "arm-generic"
+ #:patches
+ (list %boot-logo-patch
+ (origin
+ (method url-fetch)
+ (uri "\
+https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/patch/?id=167ec8235f978d7af78c73e9490dae1af3fee67f")
+ (file-name "linux-libre-4.11-CVE-2017-1000364.patch")
+ (sha256
+ (base32
+ "0hv3lxjgpssvsldkydg5q7znnzxv5ncpzrk6g11q01k3gkl0q689"))))))
;;;
@@ -595,6 +607,27 @@ block devices, UUIDs, TTYs, and many other tools.")
(license (list license:gpl3+ license:gpl2+ license:gpl2 license:lgpl2.0+
license:bsd-4 license:public-domain))))
+(define-public ddate
+ (package
+ (name "ddate")
+ (version "0.2.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/bo0ts/ddate/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1bbqqq8mswj4bp9083gxjaky5ysfznax4cynsqwmy125z053yg6m"))))
+ (build-system cmake-build-system)
+ (arguments '(#:tests? #f))
+ (home-page "https://github.com/bo0ts/ddate")
+ (synopsis "PERPETUAL DATE CONVERTER FROM GREGORIAN TO POEE CALENDAR")
+ (description
+ "ddate displays the Discordian date and holidays of a given date.
+The Discordian calendar was made popular by the \"Illuminatus!\" trilogy
+by Robert Shea and Robert Anton Wilson.")
+ (license license:public-domain)))
+
(define-public procps
(package
(name "procps")
@@ -1061,6 +1094,61 @@ package also includes ip6tables. ip6tables is used for configuring the IPv6
packet filter.")
(license license:gpl2+)))
+(define-public ebtables
+ (package
+ (name "ebtables")
+ (version "2.0.10-4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://netfilter.org/ebtables/ebtables-v"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0pa5ljlk970yfyhpf3iqwfpbc30j8mgn90fapw9cfz909x47nvyw"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f ; no test suite
+ #:make-flags
+ (let* ((out (assoc-ref %outputs "out"))
+ (bin (string-append out "/sbin"))
+ (lib (string-append out "/lib"))
+ (man (string-append out "/share/man"))
+ (iptables (assoc-ref %build-inputs "iptables"))
+ (ethertypes (string-append iptables "/etc/ethertypes")))
+ (list (string-append "LIBDIR=" lib)
+ (string-append "MANDIR=" man)
+ (string-append "BINDIR=" bin)
+ (string-append "ETHERTYPESFILE=" ethertypes)
+ ;; With the default CFLAGS, it falis with:
+ ;; communication.c:259:58: error: variable ‘ret’ set but not
+ ;; used [-Werror=unused-but-set-variable]
+ "CFLAGS=-Wall"))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ ;; no configure script
+ (lambda _
+ (substitute* "Makefile"
+ ;; Remove user and group options from install commands,
+ ;; otherwise it fails with: invalid user 'root'.
+ (("-o root -g root") "")
+ ;; Remove 'ethertypes' from the install target.
+ (("install: .*")
+ "install: $(MANDIR)/man8/ebtables.8 exec scripts\n"))
+ #t)))))
+ (inputs
+ `(("perl" ,perl)
+ ("iptables" ,iptables)))
+ (synopsis "Ethernet bridge frame table administration")
+ (home-page "http://ebtables.netfilter.org/")
+ (description
+ "ebtables is an application program used to set up and maintain the
+tables of rules (inside the Linux kernel) that inspect Ethernet frames. It is
+analogous to the iptables application, but less complicated, due to the fact
+that the Ethernet protocol is much simpler than the IP protocol.")
+ (license license:gpl2+)))
+
(define-public iproute
(package
(name "iproute2")
@@ -4061,3 +4149,30 @@ from the CPUID instruction, and also determines the exact model of CPU(s). It
supports Intel, AMD, and VIA CPUs, as well as older Transmeta, Cyrix, UMC,
NexGen, Rise, and SiS CPUs.")
(license license:gpl2+)))
+
+(define-public jmtpfs
+ (package
+ (name "jmtpfs")
+ (version "0.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/JasonFerrara/jmtpfs/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "10v8d7mmx8b8123x5f9y9zaaa428ms6wkngwn2ra71n5a53wrjn0"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("file" ,file)
+ ("fuse" ,fuse)
+ ("libmtp" ,libmtp)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (home-page "https://github.com/JasonFerrara/jmtpfs")
+ (synopsis "Use a FUSE filesystem to access data over MTP")
+ (description "jmtpfs uses FUSE (filesystem in userspace) to provide access
+to data over the Media Transfer Protocol (MTP). Unprivileged users can mount
+the MTP device as a filesystem.")
+ (license license:gpl3)))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 4f16853a97..019b556c9c 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -2335,5 +2335,5 @@ tools and applications:
(description "Balsa is a highly configurable and robust mail client for
the GNOME desktop. It supports both POP3 and IMAP servers as well as the
mbox, maildir and mh local mailbox formats. Balsa also supports SMTP and/or
-the use of a local MTA such as Sendemail.")
+the use of a local MTA such as Sendmail.")
(license gpl3+)))
diff --git a/gnu/packages/markup.scm b/gnu/packages/markup.scm
index cd883b23ec..4afe8c3c0e 100644
--- a/gnu/packages/markup.scm
+++ b/gnu/packages/markup.scm
@@ -26,10 +26,10 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (guix build-system cmake)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages perl)
#:use-module (gnu packages python)
- #:use-module (gnu packages web)
- #:use-module (gnu packages zip))
+ #:use-module (gnu packages web))
(define-public hoedown
(package
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 014ad5d7d5..e7205655c3 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -96,7 +96,6 @@
#:use-module (gnu packages tls)
#:use-module (gnu packages wxwidgets)
#:use-module (gnu packages xml)
- #:use-module (gnu packages zip)
#:use-module (srfi srfi-1))
(define-public aris
@@ -259,19 +258,18 @@ semiconductors.")
(define-public gsl
(package
(name "gsl")
- (version "2.3")
+ (version "2.4")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gsl/gsl-"
version ".tar.gz"))
(sha256
(base32
- "1yxdzqjwmi2aid650fa9zyr8llw069x7lm489wx9nnfdi6vh09an"))
+ "16yfs5n444s03np1naj6yp1fsysd42kdscxzkg0k2yvfjixx0ijd"))
(patches (search-patches "gsl-test-i686.patch"))))
(build-system gnu-build-system)
(arguments
- `(#:parallel-tests? #f
- ;; Currently there are numerous tests that fail on "exotic"
+ `(;; Currently there are numerous tests that fail on "exotic"
;; architectures such as aarch64 and ppc64le.
,@(if (string-prefix? "aarch64-linux"
(or (%current-target-system) (%current-system)))
@@ -610,12 +608,13 @@ incompatible with HDF5.")
(define-public hdf5
(package
(name "hdf5")
- (version "1.8.18")
+ (version "1.8.19")
(source
(origin
(method url-fetch)
- (uri (list (string-append "http://www.hdfgroup.org/ftp/HDF5/releases/"
- "hdf5-" version "/src/hdf5-"
+ (uri (list (string-append "https://support.hdfgroup.org/ftp/HDF5/releases/"
+ "hdf5-" (version-major+minor version)
+ "/hdf5-" version "/src/hdf5-"
version ".tar.bz2")
(string-append "https://support.hdfgroup.org/ftp/HDF5/"
"current"
@@ -623,7 +622,7 @@ incompatible with HDF5.")
(take (string-split version #\.) 2))
"/src/hdf5-" version ".tar.bz2")))
(sha256
- (base32 "13542vrnl1p35n8vbq0wzk40vddmm33q5nh04j98c7r1yjnxxih1"))
+ (base32 "0f3jfbqpaaq21ighi40qzs52nb52kc2d2yjk541rjmsx20b3ih2r"))
(patches (list (search-patch "hdf5-config-date.patch")))))
(build-system gnu-build-system)
(inputs
diff --git a/gnu/packages/mc.scm b/gnu/packages/mc.scm
index bae12439f1..0770304a28 100644
--- a/gnu/packages/mc.scm
+++ b/gnu/packages/mc.scm
@@ -31,7 +31,7 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages check)
#:use-module (gnu packages perl)
- #:use-module (gnu packages zip))
+ #:use-module (gnu packages compression))
(define-public mc
(package
diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm
index ac80a6bb9d..c136265c52 100644
--- a/gnu/packages/monitoring.scm
+++ b/gnu/packages/monitoring.scm
@@ -27,8 +27,7 @@
#:use-module (gnu packages gd)
#:use-module (gnu packages image)
#:use-module (gnu packages mail)
- #:use-module (gnu packages perl)
- #:use-module (gnu packages zip))
+ #:use-module (gnu packages perl))
(define-public nagios
(package
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 11ca2d1979..5692ff6766 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -117,8 +117,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
("pulseaudio" ,pulseaudio)
("sqlite" ,sqlite)
("zlib" ,zlib)))
- (native-inputs `(("gcc" ,gcc-5) ; Fails to build with GCC@4.
- ("pkg-config" ,pkg-config)))
+ (native-inputs `(("pkg-config" ,pkg-config)))
;; Missing optional inputs:
;; libyajl
;; libcdio_paranoia
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 186dc276be..b62d953067 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -105,7 +105,6 @@
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
#:use-module (gnu packages xiph)
- #:use-module (gnu packages zip)
#:use-module ((srfi srfi-1) #:select (last)))
(define-public aria-maestosa
@@ -1080,7 +1079,7 @@ users to select LV2 plugins and run them with jalv.")
(define-public synthv1
(package
(name "synthv1")
- (version "0.8.2")
+ (version "0.8.3")
(source (origin
(method url-fetch)
(uri
@@ -1088,7 +1087,7 @@ users to select LV2 plugins and run them with jalv.")
"/synthv1-" version ".tar.gz"))
(sha256
(base32
- "0lmblhk0728bxi7cixc2j9p6gisicy6alybga9vwmg453snrsybr"))))
+ "1yqh7jx431q01f15b3h4dh038yvmc4jcsr3vn2175kqgwfj9jqcg"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; There are no tests.
@@ -1098,9 +1097,12 @@ users to select LV2 plugins and run them with jalv.")
`(("jack" ,jack-1)
("lv2" ,lv2)
("alsa-lib" ,alsa-lib)
+ ("non-session-manager" ,non-session-manager)
("liblo" ,liblo)
("qtbase" ,qtbase)
("qttools" ,qttools)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
(home-page "http://synthv1.sourceforge.net")
(synopsis "Polyphonic subtractive synthesizer")
(description
@@ -1111,7 +1113,7 @@ oscillators and stereo effects.")
(define-public drumkv1
(package
(name "drumkv1")
- (version "0.8.2")
+ (version "0.8.3")
(source (origin
(method url-fetch)
(uri
@@ -1119,7 +1121,7 @@ oscillators and stereo effects.")
"/drumkv1-" version ".tar.gz"))
(sha256
(base32
- "0lf9x99gmmk64xq73lcwpwqznh8s79qy2fjjjzzw6sbw99w8qyz4"))))
+ "0rvdvc81j4b4n64i7jmk58khry28al8p73g71srdv1kw7j65f2zv"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; There are no tests.
@@ -1130,6 +1132,7 @@ oscillators and stereo effects.")
("lv2" ,lv2)
("libsndfile" ,libsndfile)
("alsa-lib" ,alsa-lib)
+ ("non-session-manager" ,non-session-manager)
("liblo" ,liblo)
("qtbase" ,qtbase)))
(native-inputs
@@ -1145,7 +1148,7 @@ effects.")
(define-public samplv1
(package
(name "samplv1")
- (version "0.8.2")
+ (version "0.8.3")
(source (origin
(method url-fetch)
(uri
@@ -1153,7 +1156,7 @@ effects.")
"/samplv1-" version ".tar.gz"))
(sha256
(base32
- "11mxn3ff9g0x1rl4jl5rngmwlb8dmkbzsjhxb8gqhmlpfj24wl7l"))))
+ "1lbxrn24fg1z659zbaakzq6z8gbax6z16di9v9bhhslk8w2mndik"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; There are no tests.
@@ -1164,6 +1167,7 @@ effects.")
("lv2" ,lv2)
("libsndfile" ,libsndfile)
("alsa-lib" ,alsa-lib)
+ ("non-session-manager" ,non-session-manager)
("liblo" ,liblo)
("qtbase" ,qtbase)))
(native-inputs
diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm
index 61ff3ced06..093adaae0a 100644
--- a/gnu/packages/nano.scm
+++ b/gnu/packages/nano.scm
@@ -29,7 +29,7 @@
(define-public nano
(package
(name "nano")
- (version "2.8.4")
+ (version "2.8.5")
(source
(origin
(method url-fetch)
@@ -37,7 +37,7 @@
version ".tar.xz"))
(sha256
(base32
- "04bvmimrw40cbcnm3xm5l5lir0qy7cncfkmwrlzg8jiy1x7jdky7"))))
+ "1hl9gni3qmblr062a7w6vz16gvxbswgc5c19c923ja0bk48vyhyb"))))
(build-system gnu-build-system)
(inputs
`(("gettext" ,gettext-minimal)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index ed0420b422..06a2c8be6e 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -15,6 +15,7 @@
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -66,6 +67,7 @@
#:use-module (gnu packages textutils)
#:use-module (gnu packages tls)
#:use-module (gnu packages valgrind)
+ #:use-module (gnu packages xml)
#:use-module (ice-9 match))
(define-public macchanger
@@ -1095,6 +1097,44 @@ which PID is causing this. This makes it easy to identify programs that have
gone wild and are suddenly taking up your bandwidth.")
(license license:gpl2+)))
+(define-public nzbget
+ (package
+ (name "nzbget")
+ (version "18.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/nzbget/nzbget/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1a8wmbhc1si1n8axzrr8ysmrd3gr643lbh6pvzmr0hnd65fixmx5"))))
+ (arguments
+ `(#:configure-flags
+ (list
+ (string-append "--with-libcurses-includes=" (assoc-ref
+%build-inputs "ncurses") "/include")
+ (string-append "--with-libcurses-libraries=" (assoc-ref
+%build-inputs "ncurses") "/lib")
+ (string-append "--with-tlslib=GnuTLS"))))
+ (build-system gnu-build-system)
+ (inputs `(("gnutls", gnutls)
+ ("libxml2", libxml2)
+ ("ncurses", ncurses)
+ ("zlib", zlib)))
+ (native-inputs `(("pkg-config", pkg-config)))
+ (home-page "https://github.com/nzbget/nzbget")
+ (synopsis "Usenet binary file downloader")
+ (description
+ "NZBGet is a binary newsgrabber, which downloads files from Usenet based
+on information given in @code{nzb} files. NZBGet can be used in standalone
+and in server/client modes. In standalone mode, you pass NZBGet @command{nzb}
+files as command-line parameters and it downloads them and exits. NZBGet also
+contains a Web interface. Its server can be controlled through remote
+procedure calls (RPCs).")
+ (license license:gpl2+)))
+
(define-public openvswitch
(package
(name "openvswitch")
diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm
index 23859b85c2..86d1ce9978 100644
--- a/gnu/packages/openstack.scm
+++ b/gnu/packages/openstack.scm
@@ -113,32 +113,33 @@ manner.")
(define-public python-hacking
(package
(name "python-hacking")
- (version "0.10.2")
+ (version "0.13.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "hacking" version))
(sha256
(base32
- "1a310k3dv04jg7zvmk37h2ql7y9kf4hvdxb74bjlwdxgmy6h4wap"))))
+ "1s1wq2sds6fjp8rwz31vkp33kjl9nyk5y2g2pri8shic75dr00h4"))))
(build-system python-build-system)
- (arguments
- ;; TODO: Requires unpackaged 'eventlet'.
- '(#:tests? #f))
(propagated-inputs
- `(("python-flake8-2.2.4" ,python-flake8-2.2.4)
- ("python-mccabe-0.2.1" ,python-mccabe-0.2.1)
- ("python-pbr" ,python-pbr)
- ("python-pep8-1.5.7" ,python-pep8-1.5.7)
- ("python-pyflakes-0.8.1" ,python-pyflakes-0.8.1)
- ("python-six" ,python-six)))
+ `(("python-flake8" ,python-flake8)
+ ("python-mccabe-0.2.1" ,python-mccabe-0.2.1)
+ ("python-pbr" ,python-pbr)
+ ("python-pep8-1.5.7" ,python-pep8-1.5.7)
+ ("python-pyflakes-0.8.1" ,python-pyflakes-0.8.1)
+ ("python-six" ,python-six)))
(native-inputs
- `(;; Tests
- ("python-testscenarios" ,python-testscenarios)))
+ `( ;; Tests
+ ("python-eventlet" ,python-eventlet)
+ ("python-mock" ,python-mock)
+ ("python-reno" ,python-reno)
+ ("python-testrepository" ,python-testrepository)
+ ("python-testscenarios" ,python-testscenarios)))
(home-page "https://github.com/openstack-dev/hacking")
(synopsis "OpenStack hacking guideline enforcement")
(description
- "Python-hacking is a set of flake8 plugins that test and enforce the
+ "Python-hacking is a set of flake8 plugins that test and enforce the
@uref{http://docs.openstack.org/developer/hacking/, OpenStack style
guidelines}.")
(license asl2.0)))
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index f6af6a6519..08591d1086 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -9,6 +9,8 @@
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -36,6 +38,7 @@
#:use-module (gnu packages aidc)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages freedesktop)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages gtk)
@@ -186,14 +189,15 @@ and vice versa.")
(home-page "https://github.com/cracklib/cracklib")
(description
"CrackLib is a library containing a C function which may be used in a
-passwd like program. The idea is simple: try to prevent users from choosing
-passwords that could be guessed by crack by filtering them out, at source.")
+@command{passwd}-like program. The idea is simple: try to prevent users from
+choosing passwords that could easily be guessed (or \"cracked\") by filtering
+them out, at the source.")
(license license:lgpl2.1)))
(define-public libpwquality
(package
(name "libpwquality")
- (version "1.3.0")
+ (version "1.4.0")
(source (origin
(method url-fetch)
(uri (list
@@ -205,7 +209,7 @@ passwords that could be guessed by crack by filtering them out, at source.")
name "-" version ".tar.bz2")))
(sha256
(base32
- "0aidriag6h0syfm33nzdfdsqgrnsgihwjv3a5lgkqch3w68fmlkl"))))
+ "0syyz8r54l8mqmbb0mw19qz4z2cx8gdgidicb8k2s5zjdh2gzrhx"))))
(build-system gnu-build-system)
(arguments
;; XXX: have RUNPATH issue.
@@ -408,3 +412,37 @@ Password Scheme\"} by Niels Provos and David Mazieres.")
(define-public python2-bcrypt
(package-with-python2 python-bcrypt))
+
+(define-public pass-git-helper
+ (package
+ (name "pass-git-helper")
+ (version "0.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/languitar/pass-git-helper/archive/release-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0lz5ncy44pz7z1j2nnyildx8sq33zi3xvg5nkwg25n11nasqh2xn"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'patch-pass-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let* ((password-store (assoc-ref inputs "password-store"))
+ (pass (string-append password-store "/bin/pass")))
+ (substitute* "pass-git-helper"
+ (("'pass'") (string-append "'" pass "'")))
+ #t))))))
+ (inputs
+ `(("python-pyxdg" ,python-pyxdg)
+ ("password-store" ,password-store)))
+ (home-page "https://github.com/languitar/pass-git-helper")
+ (synopsis "Git credential helper interfacing with pass")
+ (description "pass-git-helper is a git credential helper which allows to
+use pass, the standard unix password manager, as the credential backend for
+your git repositories. This is achieved by explicitly defining mappings
+between hosts and entries in the password store.")
+ (license license:lgpl3+)))
diff --git a/gnu/packages/patches/abiword-wmf-version-lookup-fix.patch b/gnu/packages/patches/abiword-wmf-version-lookup-fix.patch
deleted file mode 100644
index f27f32f30b..0000000000
--- a/gnu/packages/patches/abiword-wmf-version-lookup-fix.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-The way the configure script determines the version of libwmf is by temporarily
-making dots separator characters, but since the file name of the program which
-returns the version contains dots in Guix (the version in the store entry name),
-doing it this way will always fail.
-
-This is a simple guix-specific fix for the problem.
-
---- a/configure 2010-06-13 23:17:37.000000000 +0200
-+++ b/configure 2014-09-08 17:31:52.102371800 +0200
-@@ -21140,13 +21140,11 @@
- $as_echo "$as_me: WARNING: wmf plugin: program libwmf-config not found in path" >&2;}
- fi
- else
-- IFS_old="$IFS"
-- IFS='.'
-- set -- `$libwmfconfig --version`
-- libwmf_major_found="${1}"
-- libwmf_minor_found="${2}"
-- libwmf_micro_found="${3}"
-- IFS="$IFS_old"
-+ libwmf_fullver_found=`$libwmfconfig --version`
-+ libwmf_major_found=$(echo $libwmf_fullver_found | cut -d . -f 1)
-+ libwmf_minor_found=$(echo $libwmf_fullver_found | cut -d . -f 2)
-+ libwmf_micro_found=$(echo $libwmf_fullver_found | cut -d . -f 3)
-+
- if test "$libwmf_major_found" -gt "$libwmf_major_req"; then
- wmf_deps="yes"
- elif test "$libwmf_major_found" -eq "$libwmf_major_req" &&
diff --git a/gnu/packages/patches/calibre-dont-load-remote-icons.patch b/gnu/packages/patches/calibre-dont-load-remote-icons.patch
deleted file mode 100644
index 2168263072..0000000000
--- a/gnu/packages/patches/calibre-dont-load-remote-icons.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From: Martin Pitt <mpitt@debian.org>
-Date: Mon, 14 Nov 2016 22:41:24 +0100
-Subject: content-server: Don't load external URLs for privacy
-
-Spotted by lintian.
----
- resources/content_server/browse/browse.html | 4 +---
- resources/content_server/index.html | 2 +-
- 2 files changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/resources/content_server/browse/browse.html b/resources/content_server/browse/browse.html
-index 36f7199..e615707 100644
---- a/resources/content_server/browse/browse.html
-+++ b/resources/content_server/browse/browse.html
-@@ -7,7 +7,7 @@
- <title>..:: calibre {library} ::.. {title}</title>
- <meta http-equiv="X-UA-Compatible" content="IE=100" />
- <meta name="robots" content="noindex" />
-- <link rel="icon" type="image/x-icon" href="//calibre-ebook.com/favicon.ico" />
-+ <link rel="icon" type="image/x-icon" href="favicon.ico" />
-
- <link rel="stylesheet" type="text/css" href="{prefix}/static/browse/browse.css" />
- <link type="text/css" href="{prefix}/static/jquery_ui/css/humanity-custom/jquery-ui-1.8.5.custom.css" rel="stylesheet" />
-@@ -63,8 +63,6 @@
- <input type="image"
- src="{prefix}/static/button-donate.png"
- name="submit"></input>
-- <img alt="" src="https://www.paypal.com/en_US/i/scr/pixel.gif"
-- width="1" height="1"></img>
- </div>
- </form>
- <div id="calibre-home-link" title="Go to the calibre website"></div>
-diff --git a/resources/content_server/index.html b/resources/content_server/index.html
-index 51cc33a..e71d0e8 100644
---- a/resources/content_server/index.html
-+++ b/resources/content_server/index.html
-@@ -9,7 +9,7 @@
- <script type="text/javascript" src="{prefix}/static/date.js" charset="utf-8"></script>
- <script type="text/javascript" src="{prefix}/static/jquery.js" charset="utf-8"></script>
- <script type="text/javascript" src="{prefix}/static/gui.js" charset="utf-8"></script>
-- <link rel="icon" href="//calibre-ebook.com/favicon.ico" type="image/x-icon" />
-+ <link rel="icon" href="favicon.ico" type="image/x-icon" />
- </head>
- <body>
- <div id="banner">
diff --git a/gnu/packages/patches/glibc-CVE-2017-1000366-pt1.patch b/gnu/packages/patches/glibc-CVE-2017-1000366-pt1.patch
new file mode 100644
index 0000000000..71e80968be
--- /dev/null
+++ b/gnu/packages/patches/glibc-CVE-2017-1000366-pt1.patch
@@ -0,0 +1,36 @@
+From f6110a8fee2ca36f8e2d2abecf3cba9fa7b8ea7d Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Mon, 19 Jun 2017 17:09:55 +0200
+Subject: [PATCH] CVE-2017-1000366: Ignore LD_LIBRARY_PATH for AT_SECURE=1
+ programs [BZ #21624]
+
+LD_LIBRARY_PATH can only be used to reorder system search paths, which
+is not useful functionality.
+
+This makes an exploitable unbounded alloca in _dl_init_paths unreachable
+for AT_SECURE=1 programs.
+
+patch from:
+https://sourceware.org/git/?p=glibc.git;a=commit;h=f6110a8fee2ca36f8e2d2abecf3cba9fa7b8ea7d
+---
+ ChangeLog | 7 +++++++
+ elf/rtld.c | 3 ++-
+ 2 files changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/elf/rtld.c b/elf/rtld.c
+index 2446a87..2269dbe 100644
+--- a/elf/rtld.c
++++ b/elf/rtld.c
+@@ -2422,7 +2422,8 @@ process_envvars (enum mode *modep)
+
+ case 12:
+ /* The library search path. */
+- if (memcmp (envline, "LIBRARY_PATH", 12) == 0)
++ if (!__libc_enable_secure
++ && memcmp (envline, "LIBRARY_PATH", 12) == 0)
+ {
+ library_path = &envline[13];
+ break;
+--
+2.9.3
+
diff --git a/gnu/packages/patches/glibc-CVE-2017-1000366-pt2.patch b/gnu/packages/patches/glibc-CVE-2017-1000366-pt2.patch
new file mode 100644
index 0000000000..4b859c4bfd
--- /dev/null
+++ b/gnu/packages/patches/glibc-CVE-2017-1000366-pt2.patch
@@ -0,0 +1,124 @@
+From 6d0ba622891bed9d8394eef1935add53003b12e8 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Mon, 19 Jun 2017 22:31:04 +0200
+Subject: [PATCH] ld.so: Reject overly long LD_PRELOAD path elements
+
+patch from:
+https://sourceware.org/git/?p=glibc.git;a=patch;h=6d0ba622891bed9d8394eef1935add53003b12e8
+
+---
+ ChangeLog | 7 ++++++
+ elf/rtld.c | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++------------
+ 2 files changed, 73 insertions(+), 16 deletions(-)
+
+diff --git a/elf/rtld.c b/elf/rtld.c
+index 2269dbe..86ae20c 100644
+--- a/elf/rtld.c
++++ b/elf/rtld.c
+@@ -99,6 +99,35 @@ uintptr_t __pointer_chk_guard_local
+ strong_alias (__pointer_chk_guard_local, __pointer_chk_guard)
+ #endif
+
++/* Length limits for names and paths, to protect the dynamic linker,
++ particularly when __libc_enable_secure is active. */
++#ifdef NAME_MAX
++# define SECURE_NAME_LIMIT NAME_MAX
++#else
++# define SECURE_NAME_LIMIT 255
++#endif
++#ifdef PATH_MAX
++# define SECURE_PATH_LIMIT PATH_MAX
++#else
++# define SECURE_PATH_LIMIT 1024
++#endif
++
++/* Check that AT_SECURE=0, or that the passed name does not contain
++ directories and is not overly long. Reject empty names
++ unconditionally. */
++static bool
++dso_name_valid_for_suid (const char *p)
++{
++ if (__glibc_unlikely (__libc_enable_secure))
++ {
++ /* Ignore pathnames with directories for AT_SECURE=1
++ programs, and also skip overlong names. */
++ size_t len = strlen (p);
++ if (len >= SECURE_NAME_LIMIT || memchr (p, '/', len) != NULL)
++ return false;
++ }
++ return *p != '\0';
++}
+
+ /* List of auditing DSOs. */
+ static struct audit_list
+@@ -718,6 +747,42 @@ static const char *preloadlist attribute_relro;
+ /* Nonzero if information about versions has to be printed. */
+ static int version_info attribute_relro;
+
++/* The LD_PRELOAD environment variable gives list of libraries
++ separated by white space or colons that are loaded before the
++ executable's dependencies and prepended to the global scope list.
++ (If the binary is running setuid all elements containing a '/' are
++ ignored since it is insecure.) Return the number of preloads
++ performed. */
++unsigned int
++handle_ld_preload (const char *preloadlist, struct link_map *main_map)
++{
++ unsigned int npreloads = 0;
++ const char *p = preloadlist;
++ char fname[SECURE_PATH_LIMIT];
++
++ while (*p != '\0')
++ {
++ /* Split preload list at space/colon. */
++ size_t len = strcspn (p, " :");
++ if (len > 0 && len < sizeof (fname))
++ {
++ memcpy (fname, p, len);
++ fname[len] = '\0';
++ }
++ else
++ fname[0] = '\0';
++
++ /* Skip over the substring and the following delimiter. */
++ p += len;
++ if (*p != '\0')
++ ++p;
++
++ if (dso_name_valid_for_suid (fname))
++ npreloads += do_preload (fname, main_map, "LD_PRELOAD");
++ }
++ return npreloads;
++}
++
+ static void
+ dl_main (const ElfW(Phdr) *phdr,
+ ElfW(Word) phnum,
+@@ -1464,23 +1529,8 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
+
+ if (__glibc_unlikely (preloadlist != NULL))
+ {
+- /* The LD_PRELOAD environment variable gives list of libraries
+- separated by white space or colons that are loaded before the
+- executable's dependencies and prepended to the global scope
+- list. If the binary is running setuid all elements
+- containing a '/' are ignored since it is insecure. */
+- char *list = strdupa (preloadlist);
+- char *p;
+-
+ HP_TIMING_NOW (start);
+-
+- /* Prevent optimizing strsep. Speed is not important here. */
+- while ((p = (strsep) (&list, " :")) != NULL)
+- if (p[0] != '\0'
+- && (__builtin_expect (! __libc_enable_secure, 1)
+- || strchr (p, '/') == NULL))
+- npreloads += do_preload (p, main_map, "LD_PRELOAD");
+-
++ npreloads += handle_ld_preload (preloadlist, main_map);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_DIFF (diff, start, stop);
+ HP_TIMING_ACCUM_NT (load_time, diff);
+--
+2.9.3
+
diff --git a/gnu/packages/patches/glibc-CVE-2017-1000366-pt3.patch b/gnu/packages/patches/glibc-CVE-2017-1000366-pt3.patch
new file mode 100644
index 0000000000..3d8f6d2bf8
--- /dev/null
+++ b/gnu/packages/patches/glibc-CVE-2017-1000366-pt3.patch
@@ -0,0 +1,206 @@
+From 81b82fb966ffbd94353f793ad17116c6088dedd9 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Mon, 19 Jun 2017 22:32:12 +0200
+Subject: [PATCH] ld.so: Reject overly long LD_AUDIT path elements
+
+Also only process the last LD_AUDIT entry.
+
+patch from:
+https://sourceware.org/git/?p=glibc.git;a=commit;h=81b82fb966ffbd94353f793ad17116c6088dedd9
+
+---
+ ChangeLog | 11 +++++++
+ elf/rtld.c | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++---------
+ 2 files changed, 106 insertions(+), 15 deletions(-)
+
+diff --git a/elf/rtld.c b/elf/rtld.c
+index 86ae20c..65647fb 100644
+--- a/elf/rtld.c
++++ b/elf/rtld.c
+@@ -129,13 +129,91 @@ dso_name_valid_for_suid (const char *p)
+ return *p != '\0';
+ }
+
+-/* List of auditing DSOs. */
++/* LD_AUDIT variable contents. Must be processed before the
++ audit_list below. */
++const char *audit_list_string;
++
++/* Cyclic list of auditing DSOs. audit_list->next is the first
++ element. */
+ static struct audit_list
+ {
+ const char *name;
+ struct audit_list *next;
+ } *audit_list;
+
++/* Iterator for audit_list_string followed by audit_list. */
++struct audit_list_iter
++{
++ /* Tail of audit_list_string still needing processing, or NULL. */
++ const char *audit_list_tail;
++
++ /* The list element returned in the previous iteration. NULL before
++ the first element. */
++ struct audit_list *previous;
++
++ /* Scratch buffer for returning a name which is part of
++ audit_list_string. */
++ char fname[SECURE_NAME_LIMIT];
++};
++
++/* Initialize an audit list iterator. */
++static void
++audit_list_iter_init (struct audit_list_iter *iter)
++{
++ iter->audit_list_tail = audit_list_string;
++ iter->previous = NULL;
++}
++
++/* Iterate through both audit_list_string and audit_list. */
++static const char *
++audit_list_iter_next (struct audit_list_iter *iter)
++{
++ if (iter->audit_list_tail != NULL)
++ {
++ /* First iterate over audit_list_string. */
++ while (*iter->audit_list_tail != '\0')
++ {
++ /* Split audit list at colon. */
++ size_t len = strcspn (iter->audit_list_tail, ":");
++ if (len > 0 && len < sizeof (iter->fname))
++ {
++ memcpy (iter->fname, iter->audit_list_tail, len);
++ iter->fname[len] = '\0';
++ }
++ else
++ /* Do not return this name to the caller. */
++ iter->fname[0] = '\0';
++
++ /* Skip over the substring and the following delimiter. */
++ iter->audit_list_tail += len;
++ if (*iter->audit_list_tail == ':')
++ ++iter->audit_list_tail;
++
++ /* If the name is valid, return it. */
++ if (dso_name_valid_for_suid (iter->fname))
++ return iter->fname;
++ /* Otherwise, wrap around and try the next name. */
++ }
++ /* Fall through to the procesing of audit_list. */
++ }
++
++ if (iter->previous == NULL)
++ {
++ if (audit_list == NULL)
++ /* No pre-parsed audit list. */
++ return NULL;
++ /* Start of audit list. The first list element is at
++ audit_list->next (cyclic list). */
++ iter->previous = audit_list->next;
++ return iter->previous->name;
++ }
++ if (iter->previous == audit_list)
++ /* Cyclic list wrap-around. */
++ return NULL;
++ iter->previous = iter->previous->next;
++ return iter->previous->name;
++}
++
+ #ifndef HAVE_INLINED_SYSCALLS
+ /* Set nonzero during loading and initialization of executable and
+ libraries, cleared before the executable's entry point runs. This
+@@ -1305,11 +1383,13 @@ of this helper program; chances are you did not intend to run this program.\n\
+ GL(dl_rtld_map).l_tls_modid = _dl_next_tls_modid ();
+
+ /* If we have auditing DSOs to load, do it now. */
+- if (__glibc_unlikely (audit_list != NULL))
++ bool need_security_init = true;
++ if (__glibc_unlikely (audit_list != NULL)
++ || __glibc_unlikely (audit_list_string != NULL))
+ {
+- /* Iterate over all entries in the list. The order is important. */
+ struct audit_ifaces *last_audit = NULL;
+- struct audit_list *al = audit_list->next;
++ struct audit_list_iter al_iter;
++ audit_list_iter_init (&al_iter);
+
+ /* Since we start using the auditing DSOs right away we need to
+ initialize the data structures now. */
+@@ -1320,9 +1400,14 @@ of this helper program; chances are you did not intend to run this program.\n\
+ use different values (especially the pointer guard) and will
+ fail later on. */
+ security_init ();
++ need_security_init = false;
+
+- do
++ while (true)
+ {
++ const char *name = audit_list_iter_next (&al_iter);
++ if (name == NULL)
++ break;
++
+ int tls_idx = GL(dl_tls_max_dtv_idx);
+
+ /* Now it is time to determine the layout of the static TLS
+@@ -1331,7 +1416,7 @@ of this helper program; chances are you did not intend to run this program.\n\
+ no DF_STATIC_TLS bit is set. The reason is that we know
+ glibc will use the static model. */
+ struct dlmopen_args dlmargs;
+- dlmargs.fname = al->name;
++ dlmargs.fname = name;
+ dlmargs.map = NULL;
+
+ const char *objname;
+@@ -1344,7 +1429,7 @@ of this helper program; chances are you did not intend to run this program.\n\
+ not_loaded:
+ _dl_error_printf ("\
+ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
+- al->name, err_str);
++ name, err_str);
+ if (malloced)
+ free ((char *) err_str);
+ }
+@@ -1448,10 +1533,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
+ goto not_loaded;
+ }
+ }
+-
+- al = al->next;
+ }
+- while (al != audit_list->next);
+
+ /* If we have any auditing modules, announce that we already
+ have two objects loaded. */
+@@ -1715,7 +1797,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
+ if (tcbp == NULL)
+ tcbp = init_tls ();
+
+- if (__glibc_likely (audit_list == NULL))
++ if (__glibc_likely (need_security_init))
+ /* Initialize security features. But only if we have not done it
+ earlier. */
+ security_init ();
+@@ -2346,9 +2428,7 @@ process_dl_audit (char *str)
+ char *p;
+
+ while ((p = (strsep) (&str, ":")) != NULL)
+- if (p[0] != '\0'
+- && (__builtin_expect (! __libc_enable_secure, 1)
+- || strchr (p, '/') == NULL))
++ if (dso_name_valid_for_suid (p))
+ {
+ /* This is using the local malloc, not the system malloc. The
+ memory can never be freed. */
+@@ -2412,7 +2492,7 @@ process_envvars (enum mode *modep)
+ break;
+ }
+ if (memcmp (envline, "AUDIT", 5) == 0)
+- process_dl_audit (&envline[6]);
++ audit_list_string = &envline[6];
+ break;
+
+ case 7:
+--
+2.9.3
+
diff --git a/gnu/packages/patches/glibc-vectorized-strcspn-guards.patch b/gnu/packages/patches/glibc-vectorized-strcspn-guards.patch
new file mode 100644
index 0000000000..3d6c7749d4
--- /dev/null
+++ b/gnu/packages/patches/glibc-vectorized-strcspn-guards.patch
@@ -0,0 +1,23 @@
+Copied from Debian.
+
+2017-06-14 Florian Weimer <fweimer@redhat.com>
+
+ * sysdeps/i386/i686/multiarch/strcspn-c.c: Add IS_IN (libc) guard.
+ * sysdeps/i386/i686/multiarch/varshift.c: Likewise.
+
+--- a/sysdeps/i386/i686/multiarch/strcspn-c.c
++++ b/sysdeps/i386/i686/multiarch/strcspn-c.c
+@@ -1,2 +1,4 @@
+-#define __strcspn_sse2 __strcspn_ia32
+-#include <sysdeps/x86_64/multiarch/strcspn-c.c>
++#if IS_IN (libc)
++# define __strcspn_sse2 __strcspn_ia32
++# include <sysdeps/x86_64/multiarch/strcspn-c.c>
++#endif
+--- a/sysdeps/i386/i686/multiarch/varshift.c
++++ b/sysdeps/i386/i686/multiarch/varshift.c
+@@ -1 +1,3 @@
+-#include <sysdeps/x86_64/multiarch/varshift.c>
++#if IS_IN (libc)
++# include <sysdeps/x86_64/multiarch/varshift.c>
++#endif
diff --git a/gnu/packages/patches/libwmf-CAN-2004-0941.patch b/gnu/packages/patches/libwmf-CAN-2004-0941.patch
deleted file mode 100644
index 84dd9baee6..0000000000
--- a/gnu/packages/patches/libwmf-CAN-2004-0941.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Copied from Fedora.
-
-http://pkgs.fedoraproject.org/cgit/libwmf.git/tree/libwmf-0.2.8.4-CAN-2004-0941.patch
-
---- libwmf-0.2.8.4/src/extra/gd/gd_png.c 2004-11-11 14:02:37.407589824 -0500
-+++ libwmf-0.2.8.4/src/extra/gd/gd_png.c 2004-11-11 14:04:29.672522960 -0500
-@@ -188,6 +188,14 @@
-
- png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
- &interlace_type, NULL, NULL);
-+ if (overflow2(sizeof (int), width))
-+ {
-+ return NULL;
-+ }
-+ if (overflow2(sizeof (int) * width, height))
-+ {
-+ return NULL;
-+ }
- if ((color_type == PNG_COLOR_TYPE_RGB) ||
- (color_type == PNG_COLOR_TYPE_RGB_ALPHA))
- {
diff --git a/gnu/packages/patches/libwmf-CVE-2006-3376.patch b/gnu/packages/patches/libwmf-CVE-2006-3376.patch
deleted file mode 100644
index 1e0e1ecfa8..0000000000
--- a/gnu/packages/patches/libwmf-CVE-2006-3376.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-Copied from Debian.
-
---- libwmf-0.2.8.4.orig/src/player.c
-+++ libwmf-0.2.8.4/src/player.c
-@@ -23,6 +23,7 @@
-
- #include <stdio.h>
- #include <stdlib.h>
-+#include <stdint.h>
- #include <string.h>
- #include <math.h>
-
-@@ -132,8 +133,14 @@
- }
- }
-
--/* P->Parameters = (unsigned char*) wmf_malloc (API,(MAX_REC_SIZE(API)-3) * 2 * sizeof (unsigned char));
-- */ P->Parameters = (unsigned char*) wmf_malloc (API,(MAX_REC_SIZE(API) ) * 2 * sizeof (unsigned char));
-+ if (MAX_REC_SIZE(API) > UINT32_MAX / 2)
-+ {
-+ API->err = wmf_E_InsMem;
-+ WMF_DEBUG (API,"bailing...");
-+ return (API->err);
-+ }
-+
-+ P->Parameters = (unsigned char*) wmf_malloc (API,(MAX_REC_SIZE(API) ) * 2 * sizeof (unsigned char));
-
- if (ERR (API))
- { WMF_DEBUG (API,"bailing...");
-
diff --git a/gnu/packages/patches/libwmf-CVE-2007-0455.patch b/gnu/packages/patches/libwmf-CVE-2007-0455.patch
deleted file mode 100644
index ceefc75bf2..0000000000
--- a/gnu/packages/patches/libwmf-CVE-2007-0455.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Copied from Fedora.
-
-http://pkgs.fedoraproject.org/cgit/libwmf.git/tree/libwmf-0.2.8.4-CVE-2007-0455.patch
-
---- libwmf-0.2.8.4/src/extra/gd/gdft.c 2010-12-06 11:18:26.000000000 +0000
-+++ libwmf-0.2.8.4/src/extra/gd/gdft.c 2010-12-06 11:21:09.000000000 +0000
-@@ -811,7 +811,7 @@
- {
- ch = c & 0xFF; /* don't extend sign */
- }
-- next++;
-+ if (*next) next++;
- }
- else
- {
diff --git a/gnu/packages/patches/libwmf-CVE-2007-2756.patch b/gnu/packages/patches/libwmf-CVE-2007-2756.patch
deleted file mode 100644
index feafac535a..0000000000
--- a/gnu/packages/patches/libwmf-CVE-2007-2756.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Copied from Fedora.
-
-http://pkgs.fedoraproject.org/cgit/libwmf.git/tree/libwmf-0.2.8.4-CVE-2007-2756.patch
-
---- libwmf-0.2.8.4/src/extra/gd/gd_png.c 1 Apr 2007 20:41:01 -0000 1.21.2.1
-+++ libwmf-0.2.8.4/src/extra/gd/gd_png.c 16 May 2007 19:06:11 -0000
-@@ -78,8 +78,11 @@
- gdPngReadData (png_structp png_ptr,
- png_bytep data, png_size_t length)
- {
-- gdGetBuf (data, length, (gdIOCtx *)
-- png_get_io_ptr (png_ptr));
-+ int check;
-+ check = gdGetBuf (data, length, (gdIOCtx *) png_get_io_ptr (png_ptr));
-+ if (check != length) {
-+ png_error(png_ptr, "Read Error: truncated data");
-+ }
- }
-
- static void
diff --git a/gnu/packages/patches/libwmf-CVE-2007-3472.patch b/gnu/packages/patches/libwmf-CVE-2007-3472.patch
deleted file mode 100644
index 180bdb5fc2..0000000000
--- a/gnu/packages/patches/libwmf-CVE-2007-3472.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-Based on a patch from Fedora.
-
-http://pkgs.fedoraproject.org/cgit/libwmf.git/tree/libwmf-0.2.8.4-CVE-2007-3472.patch
-
---- libwmf-0.2.8.4/src/extra/gd/gd.c
-+++ libwmf-0.2.8.4/src/extra/gd/gd.c
-@@ -106,6 +106,18 @@
- gdImagePtr im;
- unsigned long cpa_size;
-
-+ if (overflow2(sx, sy)) {
-+ return NULL;
-+ }
-+
-+ if (overflow2(sizeof (int *), sy)) {
-+ return NULL;
-+ }
-+
-+ if (overflow2(sizeof(int), sx)) {
-+ return NULL;
-+ }
-+
- im = (gdImage *) gdMalloc (sizeof (gdImage));
- if (im == 0) return 0;
- memset (im, 0, sizeof (gdImage));
---- libwmf-0.2.8.4/src/extra/gd/gdhelpers.c 2010-12-06 11:47:31.000000000 +0000
-+++ libwmf-0.2.8.4/src/extra/gd/gdhelpers.c 2010-12-06 11:48:04.000000000 +0000
-@@ -2,6 +2,7 @@
- #include "gdhelpers.h"
- #include <stdlib.h>
- #include <string.h>
-+#include <limits.h>
-
- /* TBB: gd_strtok_r is not portable; provide an implementation */
-
-@@ -94,3 +95,18 @@
- {
- free (ptr);
- }
-+
-+int overflow2(int a, int b)
-+{
-+ if(a < 0 || b < 0) {
-+ fprintf(stderr, "gd warning: one parameter to a memory allocation multiplication is negative, failing operation gracefully\n");
-+ return 1;
-+ }
-+ if(b == 0)
-+ return 0;
-+ if(a > INT_MAX / b) {
-+ fprintf(stderr, "gd warning: product of memory allocation multiplication would exceed INT_MAX, failing operation gracefully\n");
-+ return 1;
-+ }
-+ return 0;
-+}
---- libwmf-0.2.8.4/src/extra/gd/gdhelpers.h 2010-12-06 11:47:17.000000000 +0000
-+++ libwmf-0.2.8.4/src/extra/gd/gdhelpers.h 2010-12-06 11:48:36.000000000 +0000
-@@ -15,4 +15,6 @@
- void *gdMalloc(size_t size);
- void *gdRealloc(void *ptr, size_t size);
-
-+int overflow2(int a, int b);
-+
- #endif /* GDHELPERS_H */
diff --git a/gnu/packages/patches/libwmf-CVE-2007-3473.patch b/gnu/packages/patches/libwmf-CVE-2007-3473.patch
deleted file mode 100644
index cb96c94a47..0000000000
--- a/gnu/packages/patches/libwmf-CVE-2007-3473.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Copied from Fedora.
-
-http://pkgs.fedoraproject.org/cgit/libwmf.git/tree/libwmf-0.2.8.4-CVE-2007-3473.patch
-
---- libwmf-0.2.8.4/src/extra/gd/gd.c
-+++ libwmf-0.2.8.4/src/extra/gd/gd.c
-@@ -2483,6 +2483,10 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromXbm (FILE * fd)
- }
- bytes = (w * h / 8) + 1;
- im = gdImageCreate (w, h);
-+ if (!im) {
-+ return 0;
-+ }
-+
- gdImageColorAllocate (im, 255, 255, 255);
- gdImageColorAllocate (im, 0, 0, 0);
- x = 0;
diff --git a/gnu/packages/patches/libwmf-CVE-2007-3477.patch b/gnu/packages/patches/libwmf-CVE-2007-3477.patch
deleted file mode 100644
index e9f6f4278b..0000000000
--- a/gnu/packages/patches/libwmf-CVE-2007-3477.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-Copied from Fedora.
-
-http://pkgs.fedoraproject.org/cgit/libwmf.git/tree/libwmf-0.2.8.4-CVE-2007-3477.patch
-
---- libwmf-0.2.8.4/src/extra/gd/gd.c
-+++ libwmf-0.2.8.4/src/extra/gd/gd.c
-@@ -1335,10 +1335,31 @@
- int w2, h2;
- w2 = w / 2;
- h2 = h / 2;
-- while (e < s)
-- {
-- e += 360;
-- }
-+
-+ if ((s % 360) == (e % 360)) {
-+ s = 0; e = 360;
-+ } else {
-+ if (s > 360) {
-+ s = s % 360;
-+ }
-+
-+ if (e > 360) {
-+ e = e % 360;
-+ }
-+
-+ while (s < 0) {
-+ s += 360;
-+ }
-+
-+ while (e < s) {
-+ e += 360;
-+ }
-+
-+ if (s == e) {
-+ s = 0; e = 360;
-+ }
-+ }
-+
- for (i = s; (i <= e); i++)
- {
- int x, y;
diff --git a/gnu/packages/patches/libwmf-CVE-2009-1364.patch b/gnu/packages/patches/libwmf-CVE-2009-1364.patch
deleted file mode 100644
index 254b821596..0000000000
--- a/gnu/packages/patches/libwmf-CVE-2009-1364.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Copied from Debian.
-
---- libwmf-0.2.8.4.orig/src/extra/gd/gd_clip.c
-+++ libwmf-0.2.8.4/src/extra/gd/gd_clip.c
-@@ -70,6 +70,7 @@
- { more = gdRealloc (im->clip->list,(im->clip->max + 8) * sizeof (gdClipRectangle));
- if (more == 0) return;
- im->clip->max += 8;
-+ im->clip->list = more;
- }
- im->clip->list[im->clip->count] = (*rect);
- im->clip->count++;
-
diff --git a/gnu/packages/patches/libwmf-CVE-2009-3546.patch b/gnu/packages/patches/libwmf-CVE-2009-3546.patch
deleted file mode 100644
index ef76fe0736..0000000000
--- a/gnu/packages/patches/libwmf-CVE-2009-3546.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Copied from Fedora.
-
-http://pkgs.fedoraproject.org/cgit/libwmf.git/tree/libwmf-0.2.8.4-CVE-2009-3546.patch
-
---- libwmf-0.2.8.4/src/extra/gd/gd_gd.c 2010-12-06 14:56:06.000000000 +0000
-+++ libwmf-0.2.8.4/src/extra/gd/gd_gd.c 2010-12-06 14:57:04.000000000 +0000
-@@ -42,6 +42,10 @@
- {
- goto fail1;
- }
-+ if (&im->colorsTotal > gdMaxColors)
-+ {
-+ goto fail1;
-+ }
- }
- /* Int to accommodate truecolor single-color transparency */
- if (!gdGetInt (&im->transparent, in))
diff --git a/gnu/packages/patches/libwmf-CVE-2015-0848+CVE-2015-4588.patch b/gnu/packages/patches/libwmf-CVE-2015-0848+CVE-2015-4588.patch
deleted file mode 100644
index 871be1d267..0000000000
--- a/gnu/packages/patches/libwmf-CVE-2015-0848+CVE-2015-4588.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-Copied from Fedora.
-
-http://pkgs.fedoraproject.org/cgit/libwmf.git/tree/libwmf-0.2.8.4-CVE-2015-0848+CVE-2015-4588.patch
-
---- libwmf-0.2.8.4/src/ipa/ipa/bmp.h 2015-06-08 14:46:24.591876404 +0100
-+++ libwmf-0.2.8.4/src/ipa/ipa/bmp.h 2015-06-08 14:46:35.345993247 +0100
-@@ -859,7 +859,7 @@
- %
- %
- */
--static void DecodeImage (wmfAPI* API,wmfBMP* bmp,BMPSource* src,unsigned int compression,unsigned char* pixels)
-+static int DecodeImage (wmfAPI* API,wmfBMP* bmp,BMPSource* src,unsigned int compression,unsigned char* pixels)
- { int byte;
- int count;
- int i;
-@@ -870,12 +870,14 @@
- U32 u;
-
- unsigned char* q;
-+ unsigned char* end;
-
- for (u = 0; u < ((U32) bmp->width * (U32) bmp->height); u++) pixels[u] = 0;
-
- byte = 0;
- x = 0;
- q = pixels;
-+ end = pixels + bmp->width * bmp->height;
-
- for (y = 0; y < bmp->height; )
- { count = ReadBlobByte (src);
-@@ -884,7 +886,10 @@
- { /* Encoded mode. */
- byte = ReadBlobByte (src);
- for (i = 0; i < count; i++)
-- { if (compression == 1)
-+ {
-+ if (q == end)
-+ return 0;
-+ if (compression == 1)
- { (*(q++)) = (unsigned char) byte;
- }
- else
-@@ -896,13 +901,15 @@
- else
- { /* Escape mode. */
- count = ReadBlobByte (src);
-- if (count == 0x01) return;
-+ if (count == 0x01) return 1;
- switch (count)
- {
- case 0x00:
- { /* End of line. */
- x = 0;
- y++;
-+ if (y >= bmp->height)
-+ return 0;
- q = pixels + y * bmp->width;
- break;
- }
-@@ -910,13 +917,20 @@
- { /* Delta mode. */
- x += ReadBlobByte (src);
- y += ReadBlobByte (src);
-+ if (y >= bmp->height)
-+ return 0;
-+ if (x >= bmp->width)
-+ return 0;
- q = pixels + y * bmp->width + x;
- break;
- }
- default:
- { /* Absolute mode. */
- for (i = 0; i < count; i++)
-- { if (compression == 1)
-+ {
-+ if (q == end)
-+ return 0;
-+ if (compression == 1)
- { (*(q++)) = ReadBlobByte (src);
- }
- else
-@@ -943,7 +957,7 @@
- byte = ReadBlobByte (src); /* end of line */
- byte = ReadBlobByte (src);
-
-- return;
-+ return 1;
- }
-
- /*
-@@ -1143,8 +1157,18 @@
- }
- }
- else
-- { /* Convert run-length encoded raster pixels. */
-- DecodeImage (API,bmp,src,(unsigned int) bmp_info.compression,data->image);
-+ {
-+ if (bmp_info.bits_per_pixel == 8) /* Convert run-length encoded raster pixels. */
-+ {
-+ if (!DecodeImage (API,bmp,src,(unsigned int) bmp_info.compression,data->image))
-+ { WMF_ERROR (API,"corrupt bmp");
-+ API->err = wmf_E_BadFormat;
-+ }
-+ }
-+ else
-+ { WMF_ERROR (API,"Unexpected pixel depth");
-+ API->err = wmf_E_BadFormat;
-+ }
- }
-
- if (ERR (API))
---- libwmf-0.2.8.4/src/ipa/ipa.h 2015-06-08 14:46:24.590876393 +0100
-+++ libwmf-0.2.8.4/src/ipa/ipa.h 2015-06-08 14:46:35.345993247 +0100
-@@ -48,7 +48,7 @@
- static unsigned short ReadBlobLSBShort (BMPSource*);
- static unsigned long ReadBlobLSBLong (BMPSource*);
- static long TellBlob (BMPSource*);
--static void DecodeImage (wmfAPI*,wmfBMP*,BMPSource*,unsigned int,unsigned char*);
-+static int DecodeImage (wmfAPI*,wmfBMP*,BMPSource*,unsigned int,unsigned char*);
- static void ReadBMPImage (wmfAPI*,wmfBMP*,BMPSource*);
- static int ExtractColor (wmfAPI*,wmfBMP*,wmfRGB*,unsigned int,unsigned int);
- static void SetColor (wmfAPI*,wmfBMP*,wmfRGB*,unsigned char,unsigned int,unsigned int);
diff --git a/gnu/packages/patches/libwmf-CVE-2015-4695.patch b/gnu/packages/patches/libwmf-CVE-2015-4695.patch
deleted file mode 100644
index 42c4d55f40..0000000000
--- a/gnu/packages/patches/libwmf-CVE-2015-4695.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-Copied from Fedora.
-
-http://pkgs.fedoraproject.org/cgit/libwmf.git/tree/libwmf-0.2.8.4-CVE-2015-4695.patch
-
---- libwmf-0.2.8.4/src/player/meta.h
-+++ libwmf-0.2.8.4/src/player/meta.h
-@@ -1565,7 +1565,7 @@ static int meta_rgn_create (wmfAPI* API,
- objects = P->objects;
-
- i = 0;
-- while (objects[i].type && (i < NUM_OBJECTS (API))) i++;
-+ while ((i < NUM_OBJECTS (API)) && objects[i].type) i++;
-
- if (i == NUM_OBJECTS (API))
- { WMF_ERROR (API,"Object out of range!");
-@@ -2142,7 +2142,7 @@ static int meta_dib_brush (wmfAPI* API,w
- objects = P->objects;
-
- i = 0;
-- while (objects[i].type && (i < NUM_OBJECTS (API))) i++;
-+ while ((i < NUM_OBJECTS (API)) && objects[i].type) i++;
-
- if (i == NUM_OBJECTS (API))
- { WMF_ERROR (API,"Object out of range!");
-@@ -3067,7 +3067,7 @@ static int meta_pen_create (wmfAPI* API,
- objects = P->objects;
-
- i = 0;
-- while (objects[i].type && (i < NUM_OBJECTS (API))) i++;
-+ while ((i < NUM_OBJECTS (API)) && objects[i].type) i++;
-
- if (i == NUM_OBJECTS (API))
- { WMF_ERROR (API,"Object out of range!");
-@@ -3181,7 +3181,7 @@ static int meta_brush_create (wmfAPI* AP
- objects = P->objects;
-
- i = 0;
-- while (objects[i].type && (i < NUM_OBJECTS (API))) i++;
-+ while ((i < NUM_OBJECTS (API)) && objects[i].type) i++;
-
- if (i == NUM_OBJECTS (API))
- { WMF_ERROR (API,"Object out of range!");
-@@ -3288,7 +3288,7 @@ static int meta_font_create (wmfAPI* API
- objects = P->objects;
-
- i = 0;
-- while (objects[i].type && (i < NUM_OBJECTS (API))) i++;
-+ while ((i < NUM_OBJECTS (API)) && objects[i].type) i++;
-
- if (i == NUM_OBJECTS (API))
- { WMF_ERROR (API,"Object out of range!");
-@@ -3396,7 +3396,7 @@ static int meta_palette_create (wmfAPI*
- objects = P->objects;
-
- i = 0;
-- while (objects[i].type && (i < NUM_OBJECTS (API))) i++;
-+ while ((i < NUM_OBJECTS (API)) && objects[i].type) i++;
-
- if (i == NUM_OBJECTS (API))
- { WMF_ERROR (API,"Object out of range!");
diff --git a/gnu/packages/patches/libwmf-CVE-2015-4696.patch b/gnu/packages/patches/libwmf-CVE-2015-4696.patch
deleted file mode 100644
index 3674458c98..0000000000
--- a/gnu/packages/patches/libwmf-CVE-2015-4696.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Copied from Fedora.
-
-http://pkgs.fedoraproject.org/cgit/libwmf.git/tree/libwmf-0.2.8.4-CVE-2015-4696.patch
-
---- libwmf-0.2.8.4/src/player/meta.h
-+++ libwmf-0.2.8.4/src/player/meta.h
-@@ -2585,6 +2585,8 @@
- polyrect.BR[i] = clip->rects[i].BR;
- }
-
-+ if (FR->region_clip) FR->region_clip (API,&polyrect);
-+
- wmf_free (API,polyrect.TL);
- wmf_free (API,polyrect.BR);
- }
-@@ -2593,9 +2595,10 @@
- polyrect.BR = 0;
-
- polyrect.count = 0;
-+
-+ if (FR->region_clip) FR->region_clip (API,&polyrect);
- }
-
-- if (FR->region_clip) FR->region_clip (API,&polyrect);
-
- return (changed);
- }
diff --git a/gnu/packages/patches/qemu-CVE-2017-9524.patch b/gnu/packages/patches/qemu-CVE-2017-9524.patch
new file mode 100644
index 0000000000..57160055e3
--- /dev/null
+++ b/gnu/packages/patches/qemu-CVE-2017-9524.patch
@@ -0,0 +1,287 @@
+Fix CVE-2017-9524:
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9524
+http://seclists.org/oss-sec/2017/q2/454
+
+Patches copied from upstream source repository:
+
+http://git.qemu.org/?p=qemu.git;a=commitdiff;h=df8ad9f128c15aa0a0ebc7b24e9a22c9775b67af
+http://git.qemu.org/?p=qemu.git;a=commitdiff;h=0c9390d978cbf61e8f16c9f580fa96b305c43568
+
+From df8ad9f128c15aa0a0ebc7b24e9a22c9775b67af Mon Sep 17 00:00:00 2001
+From: Eric Blake <eblake@redhat.com>
+Date: Fri, 26 May 2017 22:04:21 -0500
+Subject: [PATCH] nbd: Fully initialize client in case of failed negotiation
+
+If a non-NBD client connects to qemu-nbd, we would end up with
+a SIGSEGV in nbd_client_put() because we were trying to
+unregister the client's association to the export, even though
+we skipped inserting the client into that list. Easy trigger
+in two terminals:
+
+$ qemu-nbd -p 30001 --format=raw file
+$ nmap 127.0.0.1 -p 30001
+
+nmap claims that it thinks it connected to a pago-services1
+server (which probably means nmap could be updated to learn the
+NBD protocol and give a more accurate diagnosis of the open
+port - but that's not our problem), then terminates immediately,
+so our call to nbd_negotiate() fails. The fix is to reorder
+nbd_co_client_start() to ensure that all initialization occurs
+before we ever try talking to a client in nbd_negotiate(), so
+that the teardown sequence on negotiation failure doesn't fault
+while dereferencing a half-initialized object.
+
+While debugging this, I also noticed that nbd_update_server_watch()
+called by nbd_client_closed() was still adding a channel to accept
+the next client, even when the state was no longer RUNNING. That
+is fixed by making nbd_can_accept() pay attention to the current
+state.
+
+Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1451614
+
+Signed-off-by: Eric Blake <eblake@redhat.com>
+Message-Id: <20170527030421.28366-1-eblake@redhat.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+---
+ nbd/server.c | 8 +++-----
+ qemu-nbd.c | 2 +-
+ 2 files changed, 4 insertions(+), 6 deletions(-)
+
+diff --git a/nbd/server.c b/nbd/server.c
+index ee59e5d234..49b55f6ede 100644
+--- a/nbd/server.c
++++ b/nbd/server.c
+@@ -1358,16 +1358,14 @@ static coroutine_fn void nbd_co_client_start(void *opaque)
+
+ if (exp) {
+ nbd_export_get(exp);
++ QTAILQ_INSERT_TAIL(&exp->clients, client, next);
+ }
++ qemu_co_mutex_init(&client->send_lock);
++
+ if (nbd_negotiate(data)) {
+ client_close(client);
+ goto out;
+ }
+- qemu_co_mutex_init(&client->send_lock);
+-
+- if (exp) {
+- QTAILQ_INSERT_TAIL(&exp->clients, client, next);
+- }
+
+ nbd_client_receive_next_request(client);
+
+diff --git a/qemu-nbd.c b/qemu-nbd.c
+index f60842fd86..651f85ecc1 100644
+--- a/qemu-nbd.c
++++ b/qemu-nbd.c
+@@ -325,7 +325,7 @@ out:
+
+ static int nbd_can_accept(void)
+ {
+- return nb_fds < shared;
++ return state == RUNNING && nb_fds < shared;
+ }
+
+ static void nbd_export_closed(NBDExport *exp)
+--
+2.13.1
+
+From 0c9390d978cbf61e8f16c9f580fa96b305c43568 Mon Sep 17 00:00:00 2001
+From: Eric Blake <eblake@redhat.com>
+Date: Thu, 8 Jun 2017 17:26:17 -0500
+Subject: [PATCH] nbd: Fix regression on resiliency to port scan
+
+Back in qemu 2.5, qemu-nbd was immune to port probes (a transient
+server would not quit, regardless of how many probe connections
+came and went, until a connection actually negotiated). But we
+broke that in commit ee7d7aa when removing the return value to
+nbd_client_new(), although that patch also introduced a bug causing
+an assertion failure on a client that fails negotiation. We then
+made it worse during refactoring in commit 1a6245a (a segfault
+before we could even assert); the (masked) assertion was cleaned
+up in d3780c2 (still in 2.6), and just recently we finally fixed
+the segfault ("nbd: Fully intialize client in case of failed
+negotiation"). But that still means that ever since we added
+TLS support to qemu-nbd, we have been vulnerable to an ill-timed
+port-scan being able to cause a denial of service by taking down
+qemu-nbd before a real client has a chance to connect.
+
+Since negotiation is now handled asynchronously via coroutines,
+we no longer have a synchronous point of return by re-adding a
+return value to nbd_client_new(). So this patch instead wires
+things up to pass the negotiation status through the close_fn
+callback function.
+
+Simple test across two terminals:
+$ qemu-nbd -f raw -p 30001 file
+$ nmap 127.0.0.1 -p 30001 && \
+ qemu-io -c 'r 0 512' -f raw nbd://localhost:30001
+
+Note that this patch does not change what constitutes successful
+negotiation (thus, a client must enter transmission phase before
+that client can be considered as a reason to terminate the server
+when the connection ends). Perhaps we may want to tweak things
+in a later patch to also treat a client that uses NBD_OPT_ABORT
+as being a 'successful' negotiation (the client correctly talked
+the NBD protocol, and informed us it was not going to use our
+export after all), but that's a discussion for another day.
+
+Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1451614
+
+Signed-off-by: Eric Blake <eblake@redhat.com>
+Message-Id: <20170608222617.20376-1-eblake@redhat.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+---
+ blockdev-nbd.c | 6 +++++-
+ include/block/nbd.h | 2 +-
+ nbd/server.c | 24 +++++++++++++++---------
+ qemu-nbd.c | 4 ++--
+ 4 files changed, 23 insertions(+), 13 deletions(-)
+
+diff --git a/blockdev-nbd.c b/blockdev-nbd.c
+index dd0860f4a6..28f551a7b0 100644
+--- a/blockdev-nbd.c
++++ b/blockdev-nbd.c
+@@ -27,6 +27,10 @@ typedef struct NBDServerData {
+
+ static NBDServerData *nbd_server;
+
++static void nbd_blockdev_client_closed(NBDClient *client, bool ignored)
++{
++ nbd_client_put(client);
++}
+
+ static gboolean nbd_accept(QIOChannel *ioc, GIOCondition condition,
+ gpointer opaque)
+@@ -46,7 +50,7 @@ static gboolean nbd_accept(QIOChannel *ioc, GIOCondition condition,
+ qio_channel_set_name(QIO_CHANNEL(cioc), "nbd-server");
+ nbd_client_new(NULL, cioc,
+ nbd_server->tlscreds, NULL,
+- nbd_client_put);
++ nbd_blockdev_client_closed);
+ object_unref(OBJECT(cioc));
+ return TRUE;
+ }
+diff --git a/include/block/nbd.h b/include/block/nbd.h
+index 416257abca..8fa5ce51f3 100644
+--- a/include/block/nbd.h
++++ b/include/block/nbd.h
+@@ -162,7 +162,7 @@ void nbd_client_new(NBDExport *exp,
+ QIOChannelSocket *sioc,
+ QCryptoTLSCreds *tlscreds,
+ const char *tlsaclname,
+- void (*close)(NBDClient *));
++ void (*close_fn)(NBDClient *, bool));
+ void nbd_client_get(NBDClient *client);
+ void nbd_client_put(NBDClient *client);
+
+diff --git a/nbd/server.c b/nbd/server.c
+index 49b55f6ede..f2b1aa47ce 100644
+--- a/nbd/server.c
++++ b/nbd/server.c
+@@ -81,7 +81,7 @@ static QTAILQ_HEAD(, NBDExport) exports = QTAILQ_HEAD_INITIALIZER(exports);
+
+ struct NBDClient {
+ int refcount;
+- void (*close)(NBDClient *client);
++ void (*close_fn)(NBDClient *client, bool negotiated);
+
+ bool no_zeroes;
+ NBDExport *exp;
+@@ -778,7 +778,7 @@ void nbd_client_put(NBDClient *client)
+ }
+ }
+
+-static void client_close(NBDClient *client)
++static void client_close(NBDClient *client, bool negotiated)
+ {
+ if (client->closing) {
+ return;
+@@ -793,8 +793,8 @@ static void client_close(NBDClient *client)
+ NULL);
+
+ /* Also tell the client, so that they release their reference. */
+- if (client->close) {
+- client->close(client);
++ if (client->close_fn) {
++ client->close_fn(client, negotiated);
+ }
+ }
+
+@@ -975,7 +975,7 @@ void nbd_export_close(NBDExport *exp)
+
+ nbd_export_get(exp);
+ QTAILQ_FOREACH_SAFE(client, &exp->clients, next, next) {
+- client_close(client);
++ client_close(client, true);
+ }
+ nbd_export_set_name(exp, NULL);
+ nbd_export_set_description(exp, NULL);
+@@ -1337,7 +1337,7 @@ done:
+
+ out:
+ nbd_request_put(req);
+- client_close(client);
++ client_close(client, true);
+ nbd_client_put(client);
+ }
+
+@@ -1363,7 +1363,7 @@ static coroutine_fn void nbd_co_client_start(void *opaque)
+ qemu_co_mutex_init(&client->send_lock);
+
+ if (nbd_negotiate(data)) {
+- client_close(client);
++ client_close(client, false);
+ goto out;
+ }
+
+@@ -1373,11 +1373,17 @@ out:
+ g_free(data);
+ }
+
++/*
++ * Create a new client listener on the given export @exp, using the
++ * given channel @sioc. Begin servicing it in a coroutine. When the
++ * connection closes, call @close_fn with an indication of whether the
++ * client completed negotiation.
++ */
+ void nbd_client_new(NBDExport *exp,
+ QIOChannelSocket *sioc,
+ QCryptoTLSCreds *tlscreds,
+ const char *tlsaclname,
+- void (*close_fn)(NBDClient *))
++ void (*close_fn)(NBDClient *, bool))
+ {
+ NBDClient *client;
+ NBDClientNewData *data = g_new(NBDClientNewData, 1);
+@@ -1394,7 +1400,7 @@ void nbd_client_new(NBDExport *exp,
+ object_ref(OBJECT(client->sioc));
+ client->ioc = QIO_CHANNEL(sioc);
+ object_ref(OBJECT(client->ioc));
+- client->close = close_fn;
++ client->close_fn = close_fn;
+
+ data->client = client;
+ data->co = qemu_coroutine_create(nbd_co_client_start, data);
+diff --git a/qemu-nbd.c b/qemu-nbd.c
+index 651f85ecc1..9464a0461c 100644
+--- a/qemu-nbd.c
++++ b/qemu-nbd.c
+@@ -336,10 +336,10 @@ static void nbd_export_closed(NBDExport *exp)
+
+ static void nbd_update_server_watch(void);
+
+-static void nbd_client_closed(NBDClient *client)
++static void nbd_client_closed(NBDClient *client, bool negotiated)
+ {
+ nb_fds--;
+- if (nb_fds == 0 && !persistent && state == RUNNING) {
++ if (negotiated && nb_fds == 0 && !persistent && state == RUNNING) {
+ state = TERMINATE;
+ }
+ nbd_update_server_watch();
+--
+2.13.1
+
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 92513822ce..3effc181d3 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015, 2017 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
;;;
@@ -28,12 +28,14 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix utils)
+ #:use-module (gnu packages algebra)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages boost)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages databases)
+ #:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gl)
#:use-module (gnu packages gnome)
@@ -53,7 +55,9 @@
#:use-module (gnu packages readline)
#:use-module (gnu packages tex)
#:use-module (gnu packages web)
+ #:use-module (gnu packages wxwidgets)
#:use-module (gnu packages xfig)
+ #:use-module (gnu packages xorg)
#:use-module (gnu packages xml)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26))
@@ -173,7 +177,7 @@ MTP, and much more.")
(define-public perl-image-exiftool
(package
(name "perl-image-exiftool")
- (version "10.40")
+ (version "10.55")
(source (origin
(method url-fetch)
(uri (string-append
@@ -181,20 +185,20 @@ MTP, and much more.")
version ".tar.gz"))
(sha256
(base32
- "1p05d9k94win8a24cr7lsllb6wjl3dagsmdbcxzv6f68z7i1jdly"))))
+ "0z8zwjjfvyllnhsafhddbybywpgqv0pl1dbn1g034cs27yj836q2"))))
(build-system perl-build-system)
(arguments
- '(#:phases (alist-cons-after
- 'install 'post-install
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Make sure the 'exiftool' commands finds the library.
- ;; XXX: Shouldn't it be handled by PERL-BUILD-SYSTEM?
- (let* ((out (assoc-ref outputs "out"))
- (pm (find-files out "^ExifTool\\.pm$"))
- (lib (dirname (dirname (car pm)))))
- (wrap-program (string-append out "/bin/exiftool")
- `("PERL5LIB" prefix (,lib)))))
- %standard-phases)))
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'post-install
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Make sure the 'exiftool' commands finds the library.
+ ;; XXX: Shouldn't it be handled by PERL-BUILD-SYSTEM?
+ (let* ((out (assoc-ref outputs "out"))
+ (pm (find-files out "^ExifTool\\.pm$"))
+ (lib (dirname (dirname (car pm)))))
+ (wrap-program (string-append out "/bin/exiftool")
+ `("PERL5LIB" prefix (,lib)))))))))
(home-page "http://search.cpan.org/dist/Image-ExifTool")
(synopsis "Program and Perl library to manipulate EXIF and other metadata")
(description "This package provides the @code{exiftool} command and the
@@ -383,3 +387,74 @@ developer. It manages your digital negatives in a database, lets you view
them through a zoomable lighttable and enables you to develop raw images
and enhance them.")
(license license:gpl3+)))
+
+(define-public hugin
+ (package
+ (name "hugin")
+ (version "2016.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/hugin/hugin/hugin-"
+ (version-major+minor version)
+ "/hugin-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "058zd63vx29yrx2pphbbll7kzcxkai22q26lpw13rn4lvp41pasl"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("gettext" ,gnu-gettext)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("boost" ,boost)
+ ("enblend-enfuse" ,enblend-enfuse)
+ ("exiv2" ,exiv2)
+ ("fftw" ,fftw)
+ ("flann" ,flann)
+ ("freeglut" ,freeglut)
+ ("glew" ,glew)
+ ("lcms" ,lcms)
+ ("libjpeg" ,libjpeg)
+ ("libpano13" ,libpano13)
+ ("libpng" ,libpng)
+ ("libtiff" ,libtiff)
+ ("libxi" ,libxi)
+ ("libxmu" ,libxmu)
+ ("mesa" ,mesa)
+ ("openexr" ,openexr)
+ ("sqlite" ,sqlite)
+ ("vigra" ,vigra)
+ ("wxwidgets" ,wxwidgets)
+ ("zlib" ,zlib)))
+ (arguments
+ `(#:tests? #f ; no check target
+ #:configure-flags
+ (list
+ ;; The header files of ilmbase (propagated by openexr) are not found
+ ;; when included by the header files of openexr, and an explicit
+ ;; flag needs to be set.
+ (string-append "-DCMAKE_CXX_FLAGS=-I"
+ (assoc-ref %build-inputs "ilmbase")
+ "/include/OpenEXR")
+ ;; Disable installation of the Python scripting interface.
+ ;; It would require the additional inputs python and swig.
+ ;; Installation would need to be tweaked, as it tries to install
+ ;; into the python directory.
+ "-DBUILD_HSI=OFF")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'substitute
+ (lambda _
+ (substitute* "src/hugin1/base_wx/StitchingExecutor.cpp"
+ (("wxT\\(\"enblend\"\\)")
+ (string-append "wxT(\"" (which "enblend") "\")"))
+ (("wxT\\(\"enfuse\"\\)")
+ (string-append "wxT(\"" (which "enfuse") "\")")))
+ #t)))))
+ (home-page "http://hugin.sourceforge.net/")
+ (synopsis "Panorama photo stitcher")
+ (description
+ "Hugin is an easy to use panoramic imaging toolchain with a graphical
+user interface. It can be used to assemble a mosaic of photographs into
+a complete panorama and stitch any series of overlapping pictures.")
+ (license license:gpl2+)))
+
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index b6f64bc0ef..7d569eef3e 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -44,7 +44,6 @@
#:use-module (gnu packages web)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
- #:use-module (gnu packages zip)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index a11c34330d..9de2819749 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -37,23 +38,28 @@
#:use-module (gnu packages lua)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
- #:use-module (gnu packages zip))
+ #:use-module (gnu packages compression))
(define-public a2ps
(package
(name "a2ps")
(version "4.14")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "mirror://gnu/a2ps/a2ps-"
- version ".tar.gz"))
- (sha256
- (base32
- "195k78m1h03m961qn7jr120z815iyb93gwi159p1p9348lyqvbpk"))
- (patches (search-patches
- "a2ps-CVE-2001-1593.patch"
- "a2ps-CVE-2014-0466.patch"))))
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/a2ps/a2ps-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "195k78m1h03m961qn7jr120z815iyb93gwi159p1p9348lyqvbpk"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Remove timestamp from the installed 'README' file.
+ '(substitute* "etc/README.in"
+ (("@date@")
+ "1st of some month, sometime after 1970")))
+ (patches (search-patches
+ "a2ps-CVE-2001-1593.patch"
+ "a2ps-CVE-2014-0466.patch"))))
(build-system gnu-build-system)
(inputs
`(("psutils" ,psutils)
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 911cf2dc12..cbef0e6812 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7,7 +7,7 @@
;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com>
;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu>
-;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
@@ -40,6 +40,9 @@
;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
+;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2017 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -110,7 +113,6 @@
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
#:use-module (gnu packages xdisorg)
- #:use-module (gnu packages zip)
#:use-module (gnu packages tcl)
#:use-module (gnu packages bdw-gc)
#:use-module (guix packages)
@@ -990,6 +992,42 @@ Python 3 support.")
(define-public python2-setuptools
(package-with-python2 python-setuptools))
+(define-public python-uniseg
+ (package
+ (name "python-uniseg")
+ (version "0.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://bitbucket.org/emptypage/uniseg-python/"
+ "get/rel-" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1df4gddnj2a0v8z35wb2ra5vvh1f1qyxs8fgd25c8g64031mna6x"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:tests? #f)) ; The test suite requires network access.
+ (home-page
+ "https://bitbucket.org/emptypage/uniseg-python")
+ (synopsis
+ "Python library to determine Unicode text segmentations")
+ (description
+ "Uniseg is a Python package used to determine Unicode text segmentations.
+Supported segmentations include:
+@enumerate
+@item @dfn{Code point} (any value in the Unicode codespace)
+@item @dfn{Grapheme cluster} (user-perceived character made of a single or
+multiple Unicode code points, e.g. \"G\" + acute-accent)
+@item Word break
+@item Sentence break
+@item Line break
+@end enumerate")
+ (license license:expat)))
+
+(define-public python2-uniseg
+ (package-with-python2 python-uniseg))
+
;;; Pycrypto is abandoned upstream:
;;;
;;; https://github.com/dlitz/pycrypto/issues/173
@@ -1050,6 +1088,9 @@ etc.). The package is structured to make adding new modules easy.")
(build-system python-build-system)
(propagated-inputs
`(("python-greenlet" ,python-greenlet)))
+ (arguments
+ ;; TODO: Requires unpackaged 'enum-compat'.
+ '(#:tests? #f))
(home-page "http://eventlet.net")
(synopsis "Concurrent networking library for Python")
(description
@@ -4357,14 +4398,14 @@ simple and Pythonic domain language.")
(define-public python-pycodestyle
(package
(name "python-pycodestyle")
- (version "2.0.0")
+ (version "2.3.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pycodestyle" version))
(sha256
(base32
- "1rz2v8506mdjdyxcnv9ygiw6v0d4dqx8z5sjyjm0w2v32h5l5w1p"))))
+ "0rk78b66p57ala26mdldl9lafr48blv5s659sah9q50qnfjmc8k8"))))
(build-system python-build-system)
(home-page "https://pycodestyle.readthedocs.io/")
(synopsis "Python style guide checker")
@@ -4901,9 +4942,7 @@ etc. The core of this module is a decorator factory.")
(source
(origin
(method url-fetch)
- (uri (string-append
- "https://pypi.python.org/packages/source/d/drmaa/drmaa-"
- version ".tar.gz"))
+ (uri (pypi-uri "drmaa" version))
(sha256
(base32 "0xzqriqyvk5b8hszbavsyxd29wm3sxirm8zvvdm73rs2iq7w4hkx"))))
(build-system python-build-system)
@@ -6521,40 +6560,6 @@ complexity of Python source code.")
(define-public python2-flake8
(package-with-python2 python-flake8))
-;; This will only be needed by the python-hacking package and will not be
-;; necessary once python-hacking > 0.10.2 is released.
-(define-public python-flake8-2.2.4
- (package (inherit python-flake8)
- (propagated-inputs
- `(("python-pep8" ,python-pep8-1.5.7)
- ("python-pyflakes" ,python-pyflakes-0.8.1)
- ("python-mccabe" ,python-mccabe-0.2.1)))
- (native-inputs
- `(("python-mock" ,python-mock)
- ("python-nose" ,python-nose)))
- (version "2.2.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flake8" version))
- (sha256
- (base32
- "1r9wsry4va45h1rck5hxd3vzsg2q3y6lnl6pym1bxvz8ry19jwx8"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Remove pre-compiled .pyc files from source.
- (for-each delete-file-recursively
- (find-files "." "__pycache__" #:directories? #t))
- (for-each delete-file (find-files "." "\\.pyc$"))
- #t))))
- (arguments
- ;; XXX Fails with Python 3.5.
- '(#:tests? #f))))
-
-(define-public python2-flake8-2.2.4
- (package-with-python2 python-flake8-2.2.4))
-
(define-public python-flake8-polyfill
(package
(name "python-flake8-polyfill")
@@ -10200,13 +10205,13 @@ introspection of @code{zope.interface} instances in code.")
(define-public python-vobject
(package
(name "python-vobject")
- (version "0.9.2")
+ (version "0.9.4.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "vobject" version))
(sha256
(base32
- "1qfnwlx8qwkgr6nf5wvl6ff1r3kll53dh3z6nyp173nmlhhhqccb"))))
+ "0741h2cf743sbk89dpfm1yca26l4s159nzvy6vv8xg72nd7pvsps"))))
(build-system python-build-system)
(arguments
'(;; The test suite relies on some non-portable Windows interfaces.
@@ -15423,3 +15428,74 @@ window memory map manager.")
(define-public python2-smmap2
(package-with-python2 python-smmap2))
+
+(define-public python-regex
+ (package
+ (name "python-regex")
+ (version "2017.06.07")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "regex" version))
+ (sha256
+ (base32
+ "06r6b7yigikbj3a72whl85r2b64pj1r0ypmw9yalmkm0wnxq8mz4"))))
+ (build-system python-build-system)
+ (home-page "https://bitbucket.org/mrabarnett/mrab-regex")
+ (synopsis "Alternative regular expression module")
+ (description "This regular expression implementation is backwards-
+compatible with the standard @code{re} module, but offers additional
+functionality like full case-folding for case-insensitive matches in Unicode.")
+ (license license:psfl)))
+
+(define-public python2-regex
+ (package-with-python2 python-regex))
+
+(define-public python2-pyopengl
+ (package
+ (name "python2-pyopengl")
+ (version "3.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "PyOpenGL" version))
+ (sha256
+ (base32
+ "1byxjj6a8rwzhxhjqlc588zdad2qwxdd7vlam2653ylll31waiwv"))))
+ (arguments
+ `(#:python ,python-2))
+ (build-system python-build-system)
+ (home-page "http://pyopengl.sourceforge.net")
+ (synopsis "Standard OpenGL bindings for Python")
+ (description
+ "PyOpenGL is the most common cross platform Python binding to OpenGL and
+related APIs. The binding is created using the standard @code{ctypes}
+library.")
+ (license license:bsd-3)))
+
+(define-public python-rencode
+ (package
+ (name "python-rencode")
+ (version "1.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "rencode" version))
+ (sha256
+ (base32
+ "08if5yax1xn5yfp8p3765ccjmfcv9di7i4m5jckgnwvdsgznwkbj"))))
+ (build-system python-build-system)
+ (native-inputs `(("pkg-config" ,pkg-config)
+ ("python-cython", python-cython)))
+ (home-page "https://github.com/aresch/rencode")
+ (synopsis "Serialization of heterogeneous data structures")
+ (description
+ "The @code{rencode} module is a data structure serialization library,
+similar to @code{bencode} from the BitTorrent project. For complex,
+heterogeneous data structures with many small elements, r-encoding stake up
+significantly less space than b-encodings. This version of rencode is a
+complete rewrite in Cython to attempt to increase the performance over the
+pure Python module.")
+ (license license:bsd-3)))
+
+(define-public python2-rencode
+ (package-with-python2 python-rencode))
diff --git a/gnu/packages/qemu.scm b/gnu/packages/qemu.scm
index 31354b25d7..f898c420a9 100644
--- a/gnu/packages/qemu.scm
+++ b/gnu/packages/qemu.scm
@@ -29,6 +29,7 @@
#:use-module (gnu packages curl)
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages disk)
+ #:use-module (gnu packages dns)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
@@ -78,7 +79,8 @@
"qemu-CVE-2017-8112.patch"
"qemu-CVE-2017-8309.patch"
"qemu-CVE-2017-8379.patch"
- "qemu-CVE-2017-8380.patch"))
+ "qemu-CVE-2017-8380.patch"
+ "qemu-CVE-2017-9524.patch"))
(sha256
(base32
"08mhfs0ndbkyqgw7fjaa9vjxf4dinrly656f6hjzvmaz7hzc677h"))))
@@ -267,14 +269,14 @@ all common programming languages. Vala bindings are also provided.")
(define-public libvirt
(package
(name "libvirt")
- (version "3.2.0")
+ (version "3.4.0")
(source (origin
(method url-fetch)
(uri (string-append "http://libvirt.org/sources/libvirt-"
version ".tar.xz"))
(sha256
(base32
- "17i08v3836c9w4dwcklvbgzin3aw1gbksm9ry8kpk837nn1s10cl"))))
+ "13945hrijybfh634c4x9cbkfazvpzajgv55ll2nx412r4bv6l622"))))
(build-system gnu-build-system)
(arguments
`(;; FAIL: virshtest
@@ -288,6 +290,7 @@ all common programming languages. Vala bindings are also provided.")
#:tests? #f
#:configure-flags
(list "--with-polkit"
+ "--sysconfdir=/etc"
"--localstatedir=/var")
#:phases
(modify-phases %standard-phases
@@ -298,16 +301,14 @@ all common programming languages. Vala bindings are also provided.")
"gnulib/tests/test-posix_spawn2.c")
(("/bin/sh") (which "sh")))
#t))
- (add-after 'unpack 'do-not-mkdir-in-/var
- ;; Since the localstatedir should be /var at runtime, we must
- ;; prevent writing to /var at installation time.
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (localstatedir (string-append out "/var")))
- (substitute* '("src/Makefile.in"
- "daemon/Makefile.in")
- (("\\$\\(DESTDIR\\)\\$\\(localstatedir)") localstatedir)))
- #t)))))
+ (replace 'install
+ ;; Since the sysconfdir and localstatedir should be /etc and /var
+ ;; at runtime, we must prevent writing to them at installation
+ ;; time.
+ (lambda _
+ (zero? (system* "make" "install"
+ "sysconfdir=/tmp/etc"
+ "localstatedir=/tmp/var")))))))
(inputs
`(("libxml2" ,libxml2)
("gnutls" ,gnutls)
@@ -324,7 +325,12 @@ all common programming languages. Vala bindings are also provided.")
("perl" ,perl)
("python" ,python-2)
("libyajl" ,libyajl)
- ("audit" ,audit)))
+ ("audit" ,audit)
+ ("dmidecode" ,dmidecode)
+ ("dnsmasq" ,dnsmasq)
+ ("ebtables" ,ebtables)
+ ("iproute" ,iproute)
+ ("iptables" ,iptables)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(home-page "http://libvirt.org")
@@ -386,13 +392,13 @@ three libraries:
(define-public python-libvirt
(package
(name "python-libvirt")
- (version "3.2.0")
+ (version "3.4.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "libvirt-python" version))
(sha256
(base32
- "0g80vhjss1a48w60zw0pd5fhpwfjw2dqhh0fbs730brkxj6xv1dc"))))
+ "04dma3979171p9yf0cg7m03shk038hc9vyfm9lb8z60qyn0pg9xg"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -472,9 +478,11 @@ virtualization library.")
#t)))))
(inputs
`(("gtk+" ,gtk+)
+ ("gtk-vnc" ,gtk-vnc)
("libvirt" ,libvirt)
("libvirt-glib" ,libvirt-glib)
("libosinfo" ,libosinfo)
+ ("vte" ,vte)
("gobject-introspection" ,gobject-introspection)
("python2-libvirt" ,python2-libvirt)
("python2-requests" ,python2-requests)
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index e9cc4ce87e..06102a0873 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -736,6 +736,15 @@ developers using C++ or QML, a CSS & JavaScript like language.")
(sha256
(base32
"0jdaw0i6rirs66x4cjh8l24fsyp020x1mv1psyf3ffbkdq1pngjx"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments qtsvg)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'unpack 'lengthen-test-timeout
+ (lambda _
+ (substitute* "tests/auto/qsensorgestures_gestures/tst_sensorgestures_gestures.cpp"
+ (("2000") "5000"))
+ #t))))))
(native-inputs
`(("perl" ,perl)
("qtdeclarative" ,qtdeclarative)))
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 1217ec71ff..652686e06e 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -21,13 +21,16 @@
(define-module (gnu packages rust)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bison)
#:use-module (gnu packages bootstrap)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages elf)
+ #:use-module (gnu packages flex)
#:use-module (gnu packages gcc)
#:use-module (gnu packages jemalloc)
+ #:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
@@ -205,22 +208,27 @@ rustc-bootstrap and cargo-bootstrap packages.")
"rustc-" version "-src.tar.gz"))
(sha256
(base32
- "1d78jq7mc34n265by68amr9r4nzbiqrilfbwh7gx56ydn4gb6rpr"))))
+ "1d78jq7mc34n265by68amr9r4nzbiqrilfbwh7gx56ydn4gb6rpr"))
+ (modules '((guix build utils)))
+ (snippet
+ `(begin
+ (delete-file-recursively "src/llvm")
+ #t))))
(build-system gnu-build-system)
(native-inputs
- `(("cmake" ,cmake)
+ `(("bison" ,bison) ; For the tests
+ ("cmake" ,cmake)
+ ("flex" ,flex) ; For the tests
("git" ,git)
+ ("procps" ,procps) ; For the tests
("python-2" ,python-2)
("rust-bootstrap" ,rust-bootstrap)
("which" ,which)))
(inputs
`(("jemalloc" ,jemalloc)
- ("llvm" ,llvm)))
+ ("llvm" ,llvm-3.9.1)))
(arguments
- ;; FIXME: Test failure with llvm 3.8; Update llvm.
- ;; https://github.com/rust-lang/rust/issues/36835
- `(#:tests? #f
- #:phases
+ `(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-configure
(lambda _
@@ -254,7 +262,18 @@ rustc-bootstrap and cargo-bootstrap packages.")
(substitute* "src/tools/tidy/src/main.rs"
(("^.*cargo.*::check.*$") ""))
(substitute* "src/libstd/process.rs"
- (("\"/bin/sh\"") (string-append "\"" bash "/bin/sh\"")))
+ ;; The newline is intentional.
+ ;; There's a line length "tidy" check in Rust which would
+ ;; fail otherwise.
+ (("\"/bin/sh\"") (string-append "
+\"" bash "/bin/sh\"")))
+ ;; See <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00222.html>.
+ (substitute* "src/libstd/sys/unix/process/process_common.rs"
+ (("fn test_process_mask") "#[cfg_attr(target_os = \"linux\", ignore)]
+fn test_process_mask"))
+ ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH.
+ ;; See <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>.
+ (delete-file-recursively "src/test/run-make/linker-output-non-utf8")
#t)))
(replace 'configure
(lambda* (#:key inputs outputs #:allow-other-keys)
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index eacfd733db..bcb715327c 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -59,7 +59,6 @@
#:use-module (gnu packages xorg)
#:use-module (gnu packages tls)
#:use-module (gnu packages gl)
- #:use-module (gnu packages zip)
#:use-module (ice-9 match))
(define (mit-scheme-source-directory system version)
diff --git a/gnu/packages/smalltalk.scm b/gnu/packages/smalltalk.scm
index 675ca0ce5e..f4a50ded22 100644
--- a/gnu/packages/smalltalk.scm
+++ b/gnu/packages/smalltalk.scm
@@ -28,6 +28,7 @@
#:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
@@ -36,8 +37,7 @@
#:use-module (gnu packages linux)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
- #:use-module (gnu packages xorg)
- #:use-module (gnu packages zip))
+ #:use-module (gnu packages xorg))
(define-public smalltalk
(package
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 91b91beae1..832b8dc7c5 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -58,7 +58,6 @@
#:use-module (gnu packages web)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
- #:use-module (gnu packages zip)
#:use-module (srfi srfi-1))
diff --git a/gnu/packages/synergy.scm b/gnu/packages/synergy.scm
index b971cbe3a9..79f7ca0816 100644
--- a/gnu/packages/synergy.scm
+++ b/gnu/packages/synergy.scm
@@ -25,10 +25,10 @@
#:use-module (guix build-system cmake)
#:use-module (gnu packages)
#:use-module (gnu packages curl)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages python)
#:use-module (gnu packages tls)
#:use-module (gnu packages xorg)
- #:use-module (gnu packages zip)
#:use-module (srfi srfi-26))
(define-public synergy
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 21af9d7df4..eb69547a1c 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -58,7 +58,6 @@
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
#:use-module (gnu packages xdisorg)
- #:use-module (gnu packages zip)
#:autoload (gnu packages texinfo) (texinfo)
#:use-module (ice-9 ftw)
#:use-module (ice-9 match)
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 7bc2fc47fa..e8ae30cd6d 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -11,6 +11,7 @@
;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2017 Kei Kebreau <kei@openmailbox.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -38,14 +39,43 @@
#:use-module (guix build-system trivial)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages gettext)
#:use-module (gnu packages java)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages readline)
- #:use-module (gnu packages slang)
- #:use-module (gnu packages zip))
+ #:use-module (gnu packages slang))
+
+(define-public dos2unix
+ (package
+ (name "dos2unix")
+ (version "7.3.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://waterlan.home.xs4all.nl/" name "/"
+ name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1i9hbxn0br7xa18z4bjpkdv7mrzmbfxhm44mzpd07yd2qnxsgkcc"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:make-flags (list "CC=gcc"
+ (string-append "prefix=" (assoc-ref %outputs "out")))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)))) ; no configure script
+ (native-inputs
+ `(("gettext" ,gettext-minimal)
+ ("perl" ,perl)))
+ (home-page "https://waterlan.home.xs4all.nl/dos2unix.html")
+ (synopsis "DOS/Mac to Unix and vice versa text file format converter")
+ (description
+ "dos2unix is a tool to convert line breaks in a text file from Unix format
+to DOS format and vice versa.")
+ (license license:bsd-2)))
(define-public recode
(package
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index f2c949ad69..869d0a7036 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -751,7 +751,7 @@ then ported to the GNU / Linux environment.")
(define-public mbedtls-apache
(package
(name "mbedtls-apache")
- (version "2.4.2")
+ (version "2.5.1")
(source
(origin
(method url-fetch)
@@ -761,7 +761,7 @@ then ported to the GNU / Linux environment.")
version "-apache.tgz"))
(sha256
(base32
- "065hn5zibzflivabdh9p41dknda7wicl2zhc936dmakqfjprip8p"))))
+ "1yc1rj0izjihj9hbzvskpa4gjzqf4dm2i84nmmm2s9j1i66fp6jm"))))
(build-system cmake-build-system)
(native-inputs
`(("perl" ,perl)))
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 819092cb72..bcb5aacbdf 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -61,7 +62,8 @@
(inputs
`(("zlib" ,zlib)
("openssl" ,openssl)
- ("libevent" ,libevent)))
+ ("libevent" ,libevent)
+ ("libseccomp", libseccomp)))
(home-page "https://www.torproject.org/")
(synopsis "Anonymous network router to improve privacy on the Internet")
(description
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 4b78704537..fd73f8f347 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -118,14 +118,14 @@ as well as the classic centralized workflow.")
(define-public git
(package
(name "git")
- (version "2.13.1")
+ (version "2.13.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
- "1zl88rlga9nhgaqc9d04vp1l1g4x6qj1d02698asnxrzk36vxh9v"))))
+ "1rfx2gj7dw9rw0w22ihi940zv3wdrj1xmjv25djq2vs6a4vsq40d"))))
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
@@ -138,7 +138,7 @@ as well as the classic centralized workflow.")
version ".tar.xz"))
(sha256
(base32
- "0w7z6mis1x1skhg08qj95yczdsh1qipqnimfj60nsky40ryhkpg3"))))))
+ "0vlbjsnksv5law813av03aa06dx3b0vhira8wgq83sq060qy3q9h"))))))
(inputs
`(("curl" ,curl)
("expat" ,expat)
@@ -904,17 +904,29 @@ RCS, PRCS, and Aegis packages.")
(define-public cvs-fast-export
(package
(name "cvs-fast-export")
- (version "1.33")
+ (version "1.43")
(source (origin
(method url-fetch)
(uri (string-append "http://www.catb.org/~esr/"
name "/" name "-" version ".tar.gz"))
(sha256
(base32
- "1c3s4nacbwlaaccx1fr7hf72kxxrzy49y2rdz5hhqbk8r29vm8w1"))))
+ "17xp5q4cxmd6z0ii1fdr4j1djb9mz1qv7hzr6fawdapjzahi65m3"))))
(build-system gnu-build-system)
(arguments
- `(#:phases (modify-phases %standard-phases (delete 'configure))
+ '(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'unpack 'remove-optimizations
+ (lambda _
+ ;; Don't optimize for a specific processor architecture.
+ (substitute* "Makefile"
+ (("CFLAGS \\+= -march=native") ""))
+ ;; This code runs with Python2 or Python3
+ (substitute* "cvsreduce"
+ (("python3") "python"))
+ #t)))
+ #:parallel-build? #f ; parallel a2x commands fail spectacularly
#:make-flags
(list "CC=gcc" (string-append "prefix?=" (assoc-ref %outputs "out")))))
(inputs `(("git" ,git)))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 4acfb24220..32f09db751 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -106,8 +106,7 @@
#:use-module (gnu packages xiph)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
- #:use-module (gnu packages assembly)
- #:use-module (gnu packages zip))
+ #:use-module (gnu packages assembly))
(define-public aalib
(package
@@ -1002,7 +1001,7 @@ access to mpv's powerful playback capabilities.")
(define-public youtube-dl
(package
(name "youtube-dl")
- (version "2017.06.12")
+ (version "2017.06.23")
(source (origin
(method url-fetch)
(uri (string-append "https://yt-dl.org/downloads/"
@@ -1010,7 +1009,7 @@ access to mpv's powerful playback capabilities.")
version ".tar.gz"))
(sha256
(base32
- "1p4d8g44v8vgr4xwvmbvzkjz6zakl2r89spaak6yw1zxmymd9b1w"))))
+ "09x11k69imfx6j2dj3p8bckk8f59q276hy65q5qr8qc41s80j8b3"))))
(build-system python-build-system)
(arguments
;; The problem here is that the directory for the man page and completion
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 98d8bd115d..87fea4a47a 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -153,7 +153,7 @@ and probably others.")
(define-public openvpn
(package
(name "openvpn")
- (version "2.4.2")
+ (version "2.4.3")
(source (origin
(method url-fetch)
(uri (string-append
@@ -161,7 +161,7 @@ and probably others.")
version ".tar.xz"))
(sha256
(base32
- "1ydzy5i7yaifz0v1ivrckksvm0nkkx5sia3g5y5b1xkx9cw4yp6z"))))
+ "1yrnvvnap2ghqas10l8jfg3njx57b8swh3n9wyp556qqgz4mzq8m"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--enable-iproute2=yes")))
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index a10b1367ef..146f3a1fa2 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -39,7 +39,6 @@
#:use-module (gnu packages image)
#:use-module (gnu packages tls)
#:use-module (gnu packages xorg)
- #:use-module (gnu packages zip)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python))
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index fba0d99f4a..7f4b487728 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -13,7 +13,7 @@
;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
+;;; Copyright © 2016, 2017 ng0 <ng0@no-reply.pragmatique.xyz>
;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016 Bake Timmons <b3timmons@speedymail.org>
@@ -4266,6 +4266,17 @@ handling many of the web standards in use today.")
(base32
"1fy4ph5h9kp0jzj1m6pfylxnnmgdk0mmdppw76z9jhna4jndk5xa"))))
(build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'compress-elvi.1sr
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; The manpages of the elvis are symlinks to elvi.1sr.gz
+ ;; but elvi.1sr does not get compressed by our manpage phase.
+ (let* ((out (assoc-ref %outputs "out"))
+ (man (string-append out "/share/man/man1")))
+ (with-directory-excursion man
+ (zero? (system* "gzip" "elvi.1sr")))))))))
(inputs
`(("perl" ,perl)
("perl-www-opensearch" ,perl-www-opensearch)
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 71f1e9dc7f..567d696eac 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -53,14 +53,14 @@
(define-public webkitgtk
(package
(name "webkitgtk")
- (version "2.16.3")
+ (version "2.16.4")
(source (origin
(method url-fetch)
(uri (string-append "https://www.webkitgtk.org/releases/"
name "-" version ".tar.xz"))
(sha256
(base32
- "04mmfxm8284zrlkrhkcn9gq1l4lpm1q6wwb5hyybj081v8qr2ki0"))))
+ "0a2ikwiw1wn8w11y9ci6nn6dq9w0iki48l9lhnbm7g8rhcrs9azr"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f ; no tests
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index ec3e96a8aa..63dba8a8bc 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -146,3 +146,16 @@ integrate Windows applications into your desktop.")
;; It really only supports IA32, but building on x86_64 will have the same
;; effect as building on i686 anyway.
(supported-systems '("i686-linux" "x86_64-linux"))))
+
+(define-public wine64
+ (package
+ (inherit wine)
+ (name "wine64")
+ (arguments
+ `(#:configure-flags
+ (list "--enable-win64"
+ (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib64"))
+ ,@(strip-keyword-arguments '(#:configure-flags #:system)
+ (package-arguments wine))))
+ (synopsis "Implementation of the Windows API (64-bit version)")
+ (supported-systems '("x86_64-linux"))))
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 28921f190a..f901fc1d55 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -335,7 +335,7 @@ prompt.")
(define-public xmonad
(package
(name "xmonad")
- (version "0.12")
+ (version "0.13")
(synopsis "Tiling window manager")
(source (origin
(method url-fetch)
@@ -343,7 +343,7 @@ prompt.")
name "-" version ".tar.gz"))
(sha256
(base32
- "1mzx3p17ppgmi30q3phaj58x6kxn73pbbkn9v9gzgmd8skdlkxp8"))))
+ "1jh3lcs20qpna36fa5a0r174xqrsxhj10x1rm5vwf64zariipy7r"))))
(build-system haskell-build-system)
(inputs
`(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
@@ -351,6 +351,7 @@ prompt.")
("ghc-quickcheck" ,ghc-quickcheck)
("ghc-setlocale" ,ghc-setlocale)
("ghc-utf8-string" ,ghc-utf8-string)
+ ("ghc-directory" ,ghc-directory)
("ghc-x11" ,ghc-x11)))
(arguments
`(#:phases
@@ -384,7 +385,7 @@ tiled on several screens.")
(define-public ghc-xmonad-contrib
(package
(name "ghc-xmonad-contrib")
- (version "0.12")
+ (version "0.13")
(source
(origin
(method url-fetch)
@@ -392,7 +393,7 @@ tiled on several screens.")
"xmonad-contrib-" version ".tar.gz"))
(sha256
(base32
- "04gk449dxwmimmb6y2d2hvvmv91r91xlj879qzlyq0mcf723278k"))))
+ "0vj72jhfng6y7hv5frx2v99jvl3jn9rbpk2j7xw9vydiwmzq4q57"))))
(build-system haskell-build-system)
(propagated-inputs
`(("ghc-mtl" ,ghc-mtl)
diff --git a/gnu/packages/wv.scm b/gnu/packages/wv.scm
index a7f294462b..12201faa3a 100644
--- a/gnu/packages/wv.scm
+++ b/gnu/packages/wv.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Marek Benc <merkur32@gmail.com>
+;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -39,16 +40,12 @@
(sha256
(base32
"1mn2ax6qjy3pvixlnvbkn6ymy6y4l2wxrr4brjaczm121s8hjcb7"))))
-
(build-system gnu-build-system)
- (arguments
- `(#:configure-flags '("--with-libwmf")))
(inputs
`(("glib" ,glib)
("libgsf" ,libgsf)
("libjpeg" ,libjpeg)
("libpng" ,libpng)
- ("libwmf" ,libwmf)
("zlib" ,zlib)))
(native-inputs
`(("glib" ,glib "bin")
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index ca8b951bf4..2beef4c1ce 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -18,6 +18,7 @@
;;; Copyright © 2016 Petter <petter@mykolab.ch>
;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1050,9 +1051,9 @@ connectivity of the X server running on a particular @code{DISPLAY}.")
(("~") "")
(("g_get_home_dir \\(\\)") "\"/\"")))))))
(home-page "https://davedavenport.github.io/rofi/")
- (synopsis "Application Launcher")
- (description "Rofi is a minimalist Application Launcher. It memorizes which
-applications you regularily use and also allows you to search for an application
+ (synopsis "Application launcher")
+ (description "Rofi is a minimalist application launcher. It memorizes which
+applications you regularly use and also allows you to search for an application
by name.")
(license license:expat)))
diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm
index 7b02980159..5f6f47f305 100644
--- a/gnu/packages/xiph.scm
+++ b/gnu/packages/xiph.scm
@@ -322,7 +322,7 @@ ogginfo, to obtain information (tags, bitrate, length, etc.) about
(define opus
(package
(name "opus")
- (version "1.1.4")
+ (version "1.2")
(source (origin
(method url-fetch)
(uri (string-append
@@ -330,7 +330,7 @@ ogginfo, to obtain information (tags, bitrate, length, etc.) about
".tar.gz"))
(sha256
(base32
- "14l6kpapmcnvl7p9hrmbqcnzj13zfzyppyc9a5kd4788h2rvc8li"))))
+ "1ad9q2g9vivx409jdsslv1hrh5r616qz2pjm96y8ymsigfl4bnvp"))))
(build-system gnu-build-system)
(synopsis "Versatile audio codec")
(description
@@ -340,12 +340,12 @@ but is also intended for storage and streaming applications. It is
standardized by the Internet Engineering Task Force (IETF) as RFC 6716 which
incorporated technology from Skype's SILK codec and Xiph.Org's CELT codec.")
(license license:bsd-3)
- (home-page "http://www.opus-codec.org")))
+ (home-page "https://www.opus-codec.org")))
(define opus-tools
(package
(name "opus-tools")
- (version "0.1.9")
+ (version "0.1.10")
(source (origin
(method url-fetch)
(uri (string-append
@@ -353,7 +353,7 @@ incorporated technology from Skype's SILK codec and Xiph.Org's CELT codec.")
version ".tar.gz"))
(sha256
(base32
- "0fk4nknvl111k89j5yckmyrh6b2wvgyhrqfncp7rig3zikbkv1xi"))))
+ "135jfb9ny3xvd27idsxj7j5ns90lslbyrq70cq3bfwcls4r7add2"))))
(build-system gnu-build-system)
(arguments
;; The package developers misuse pkg-config such that it doesn't work
@@ -373,7 +373,7 @@ incorporated technology from Skype's SILK codec and Xiph.Org's CELT codec.")
Opus-tools provide command line utilities for creating, inspecting and
decoding .opus files.")
(license license:bsd-3)
- (home-page "http://www.opus-codec.org")))
+ (home-page "https://www.opus-codec.org")))
(define opusfile
(package
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 4ed45508fd..287d5a728d 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -40,7 +40,6 @@
#:use-module (gnu packages python)
#:use-module (gnu packages tls)
#:use-module (gnu packages web)
- #:use-module (gnu packages zip)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 41598eb68d..910857d121 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -12,6 +12,7 @@
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016, 2017 John Darrington <jmd@gnu.org>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -35,6 +36,7 @@
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system perl)
+ #:use-module (guix build-system python)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
@@ -48,6 +50,7 @@
#:use-module (gnu packages glib)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages gperf)
+ #:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module (gnu packages libbsd)
#:use-module (gnu packages linux)
@@ -58,6 +61,8 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages spice)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages xiph)
#:use-module (gnu packages xml)
#:use-module (gnu packages xdisorg))
@@ -2812,10 +2817,10 @@ X server.")
(define-public xf86-video-intel
- (let ((commit "b57abe20e81f4b8e4dd203b6a9eda7ff441bc8ce"))
+ (let ((commit "6babcf15dd605ef40de53f5c34f95b7fd195edbe"))
(package
(name "xf86-video-intel")
- (version (string-append "2.99.917-5-" (string-take commit 7)))
+ (version (string-append "2.99.917-6-" (string-take commit 7)))
(source
(origin
;; there's no current tarball
@@ -2825,7 +2830,7 @@ X server.")
(commit commit)))
(sha256
(base32
- "1l08jdrqrpaj2168hlz0hwlx27bm7n7lnv82jjyvy884v47gn2ay"))
+ "055v4z26r00h3mxsd084n3aq8b5h0h3jkv52xss76zgbsq3n2354"))
(file-name (string-append name "-" version))))
(build-system gnu-build-system)
(inputs `(("mesa" ,mesa)
@@ -5790,3 +5795,96 @@ basic eye-candy effects.")
(home-page "https://cgit.freedesktop.org/xorg/app/xcompmgr/")
(license (license:x11-style
"https://cgit.freedesktop.org/xorg/app/xcompmgr/tree/COPYING"))))
+
+(define-public xpra
+ (package
+ (name "xpra")
+ (version "2.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.xpra.org/src/xpra-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "09hzgbsj9v5qyh41rbz968ipi7016jk66b60vm6piryna9kbnha3"))))
+ (build-system python-build-system)
+ (inputs `(("ffmpeg", ffmpeg)
+ ("flac", flac)
+ ("gtk+-2" ,gtk+-2) ;; no full GTK3 support yet
+ ("libjpeg", libjpeg)
+ ("libpng", libpng)
+ ("libvpx", libvpx)
+ ("libx264", libx264)
+ ("libxcomposite", libxcomposite)
+ ("libxdamage", libxdamage)
+ ("libxkbfile", libxkbfile)
+ ("libxrandr", libxrandr)
+ ("libxtst", libxtst)
+ ("lzo", lzo)
+ ("python2-cryptography", python2-cryptography)
+ ("python2-dbus", python2-dbus)
+ ("python2-lz4", python2-lz4)
+ ("python2-lzo", python2-lzo)
+ ("python2-numpy", python2-numpy)
+ ("python2-pillow" ,python2-pillow)
+ ("python2-pycairo", python2-pycairo)
+ ("python2-pycrypto", python2-pycrypto)
+ ("python2-pygobject", python2-pygobject)
+ ("python2-pyopengl", python2-pyopengl)
+ ("python2-pygtk", python2-pygtk)
+ ("python2-rencode", python2-rencode)
+ ("xorg-server", xorg-server)))
+ (native-inputs `(("pkg-config" ,pkg-config)
+ ("python2-cython", python2-cython)))
+ (arguments
+ `(#:python ,python-2 ;; no full Python 3 support yet
+ #:configure-flags '("--with-tests"
+ "--with-bundle_tests"
+ "--without-strict")
+ #:modules ((guix build python-build-system)
+ (guix build utils))
+
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'build)
+ (delete 'check) ;; There's no test suite at the moment.
+
+ ;; Remove BUILD_CPU, BUILD_DATE, BUILD_TIME from build info to
+ ;; prevent deterministic issues. Also correct some directories and
+ ;; use the xvfb binary instead of xorg-server (which doesn't seem to
+ ;; work).
+ (add-before 'install 'remove-timestamps&set-file-names
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (substitute* "add_build_info.py"
+ ((".*\"BUILD_CPU\", get_cpuinfo.*") ""))
+ (substitute* "add_build_info.py"
+ ((".*\"BUILD_DATE\", datetime.*") ""))
+ (substitute* "add_build_info.py"
+ ((".*\"BUILD_TIME\", datetime.*") ""))
+ (substitute* "setup.py"
+ (("/etc/init.d/")
+ (string-append (assoc-ref outputs "out")
+ "/etc/init.d/")))
+ (substitute* "setup.py"
+ (("/usr/lib/")
+ (string-append (assoc-ref outputs "out") "/lib/")))
+ (substitute* "./etc/xpra/conf.d/55_server_x11.conf.in"
+ (("xvfb = %.*")
+ (string-append "xvfb = "
+ (assoc-ref inputs "xorg-server")
+ "/bin/Xvfb +extension Composite -nolisten tcp"
+ " -noreset -auth $XAUTHORITY"
+ " -screen 0 5760x2560x24+32")))
+ #t)))))
+ (home-page "https://www.xpra.org/")
+ (synopsis "Remote access to individual applications or full desktops")
+ (description "Xpra is a persistent remote display server and client for
+forwarding applications and desktop screens. It gives you remote access to
+individual applications or full desktops. On X11, it is also known as
+``@command{screen} for X11'': it allows you to run programs, usually on a
+remote host, direct their display to your local machine, and then to
+disconnect from these programs and reconnect from the same or another machine,
+without losing any state. It can also be used to forward full desktops from
+X11 servers, Windows, or macOS.")
+ (license license:gpl2+)))
diff --git a/gnu/packages/zip.scm b/gnu/packages/zip.scm
deleted file mode 100644
index 018891359b..0000000000
--- a/gnu/packages/zip.scm
+++ /dev/null
@@ -1,183 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.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 zip)
- #:use-module ((guix licenses) #:prefix license:)
- #:use-module (guix packages)
- #:use-module (guix download)
- #:use-module (guix build-system gnu)
- #:use-module (gnu packages)
- #:use-module (gnu packages compression)
- #:use-module (gnu packages perl)
- #:use-module (guix build-system perl)
- #:use-module (gnu packages pkg-config)
- #:use-module (gnu packages python))
-
-(define-public zip
- (package
- (name "zip")
- (version "3.0")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "mirror://sourceforge/infozip/Zip%203.x%20%28latest%29/3.0/zip30.tar.gz"))
- (sha256
- (base32
- "0sb3h3067pzf3a7mlxn1hikpcjrsvycjcnj9hl9b1c3ykcgvps7h"))))
- (build-system gnu-build-system)
- (inputs `(("bzip2" ,bzip2)))
- (arguments
- `(#:tests? #f ; no test target
- #:make-flags (let ((out (assoc-ref %outputs "out")))
- (list "-f" "unix/Makefile"
- (string-append "prefix=" out)
- (string-append "MANDIR=" out "/share/man/man1")))
- #:modules ((guix build gnu-build-system)
- (guix build utils)
- (srfi srfi-1))
- #:phases
- (modify-phases %standard-phases
- (replace 'build
- (lambda* (#:key (make-flags '()) #:allow-other-keys)
- (zero? (apply system* "make" "generic_gcc" make-flags))))
- (delete 'configure))))
- (home-page "http://www.info-zip.org/Zip.html")
- (synopsis "Compression and file packing utility")
- (description
- "Zip is a compression and file packaging/archive utility. Zip is useful
-for packaging a set of files for distribution, for archiving files, and for
-saving disk space by temporarily compressing unused files or directories.
-Zip puts one or more compressed files into a single ZIP archive, along with
-information about the files (name, path, date, time of last modification,
-protection, and check information to verify file integrity). An entire
-directory structure can be packed into a ZIP archive with a single command.
-
-Zip has one compression method (deflation) and can also store files without
-compression. Zip automatically chooses the better of the two for each file.
-Compression ratios of 2:1 to 3:1 are common for text files.")
- (license (license:non-copyleft "file://LICENSE"
- "See LICENSE in the distribution."))))
-
-(define-public unzip
- (package (inherit zip)
- (name "unzip")
- (version "6.0")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "mirror://sourceforge/infozip/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip60.tar.gz"))
- (sha256
- (base32
- "0dxx11knh3nk95p2gg2ak777dd11pr7jx5das2g49l262scrcv83"))
- (patches (search-patches "unzip-CVE-2014-8139.patch"
- "unzip-CVE-2014-8140.patch"
- "unzip-CVE-2014-8141.patch"
- "unzip-CVE-2014-9636.patch"
- "unzip-CVE-2015-7696.patch"
- "unzip-CVE-2015-7697.patch"
- "unzip-allow-greater-hostver-values.patch"
- "unzip-initialize-symlink-flag.patch"
- "unzip-remove-build-date.patch"
- "unzip-attribs-overflow.patch"
- "unzip-overflow-on-invalid-input.patch"
- "unzip-format-secure.patch"
- "unzip-overflow-long-fsize.patch"))))
- (build-system gnu-build-system)
- ;; no inputs; bzip2 is not supported, since not compiled with BZ_NO_STDIO
- (arguments
- `(#:phases (modify-phases %standard-phases
- (delete 'configure)
- (replace 'build
- (lambda* (#:key make-flags #:allow-other-keys)
- (zero? (apply system* "make"
- `("-j" ,(number->string
- (parallel-job-count))
- ,@make-flags
- "generic_gcc"))))))
- #:make-flags (list "-f" "unix/Makefile"
- (string-append "prefix=" %output)
- (string-append "MANDIR=" %output "/share/man/man1"))))
- (home-page "http://www.info-zip.org/UnZip.html")
- (synopsis "Decompression and file extraction utility")
- (description
- "UnZip is an extraction utility for archives compressed in .zip format,
-also called \"zipfiles\".
-
-UnZip lists, tests, or extracts files from a .zip archive. The default
-behaviour (with no options) is to extract into the current directory, and
-subdirectories below it, all files from the specified zipfile. UnZip
-recreates the stored directory structure by default.")
- (license (license:non-copyleft "file://LICENSE"
- "See LICENSE in the distribution."))))
-
-(define-public zziplib
- (package
- (name "zziplib")
- (version "0.13.62")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "mirror://sourceforge/zziplib/zziplib13/"
- version "/zziplib-"
- version ".tar.bz2"))
- (patches (search-patches "zziplib-CVE-2017-5974.patch"
- "zziplib-CVE-2017-5975.patch"
- "zziplib-CVE-2017-5976.patch"
- "zziplib-CVE-2017-5978.patch"
- "zziplib-CVE-2017-5979.patch"
- "zziplib-CVE-2017-5981.patch"))
- (sha256
- (base32
- "0nsjqxw017hiyp524p9316283jlf5piixc1091gkimhz38zh7f51"))))
- (build-system gnu-build-system)
- (inputs
- `(("zlib" ,zlib)))
- (native-inputs `(("perl" ,perl) ; for the documentation
- ("pkg-config" ,pkg-config)
- ("python" ,python-2) ; for the documentation; Python 3 not supported,
- ; http://forums.gentoo.org/viewtopic-t-863161-start-0.html
- ("zip" ,zip))) ; to create test files
- (arguments
- `(#:parallel-tests? #f)) ; since test files are created on the fly
- (home-page "http://zziplib.sourceforge.net/")
- (synopsis "Library for accessing zip files")
- (description
- "ZZipLib is a library based on zlib for accessing zip files.")
- (license license:lgpl2.0+)))
-
-
-(define-public perl-zip
- (package
- (name "perl-zip")
- (version "1.59")
- (source
- (origin
- (method url-fetch)
- (uri (string-append
- "mirror://cpan/authors/id/A/AD/ADAMK/Archive-Zip-"
- version ".tar.gz"))
- (sha256
- (base32
- "0m31qlppg65vh32pwxkwjby02q70abx49d2yk6vfd4585fqb27cx"))))
- (build-system perl-build-system)
- (synopsis "Provides an interface to ZIP archive files")
- (description "The Archive::Zip module allows a Perl program to create,
-manipulate, read, and write Zip archive files.")
- (home-page "http://search.cpan.org/~adamk/Archive-Zip-1.30/")
- (license license:perl-license)))
diff --git a/gnu/services/dns.scm b/gnu/services/dns.scm
index 2ed7b9e22f..673ab1a98d 100644
--- a/gnu/services/dns.scm
+++ b/gnu/services/dns.scm
@@ -99,13 +99,13 @@
(serial zone-file-serial
(default 1))
(refresh zone-file-refresh
- (default "2d"))
+ (default (* 2 24 3600)))
(retry zone-file-retry
- (default "15m"))
+ (default (* 15 60)))
(expiry zone-file-expiry
- (default "2w"))
+ (default (* 2 7 24 3600)))
(nx zone-file-nx
- (default "1h")))
+ (default 3600)))
(define-record-type* <knot-keystore-configuration>
knot-keystore-configuration make-knot-keystore-configuration
knot-keystore-configuration?
@@ -136,13 +136,13 @@
(dnskey-ttl knot-policy-configuration-dnskey-ttl
(default 'default))
(zsk-lifetime knot-policy-configuration-zsk-lifetime
- (default "30d"))
+ (default (* 30 24 3600)))
(propagation-delay knot-policy-configuration-propagation-delay
- (default "1d"))
+ (default (* 24 3600)))
(rrsig-lifetime knot-policy-configuration-rrsig-lifetime
- (default "14d"))
+ (default (* 14 24 3600)))
(rrsig-refresh knot-policy-configuration-rrsig-refresh
- (default "7d"))
+ (default (* 7 24 3600)))
(nsec3? knot-policy-configuration-nsec3?
(default #f))
(nsec3-iterations knot-policy-configuration-nsec3-iterations
@@ -150,7 +150,7 @@
(nsec3-salt-length knot-policy-configuration-nsec3-salt-length
(default 8))
(nsec3-salt-lifetime knot-policy-configuration-nsec3-salt-lifetime
- (default "30d")))
+ (default (* 30 24 3600))))
(define-record-type* <knot-zone-configuration>
knot-zone-configuration make-knot-zone-configuration
@@ -248,7 +248,7 @@
(error-out "backend must be one of: 'pem or 'pkcs11")))
(define (verify-knot-policy-configuration policy)
- (unless (knot-keystore-configuration? policy)
+ (unless (knot-policy-configuration? policy)
(error-out "policies must be a list of only knot-policy-configuration."))
(let ((id (knot-policy-configuration-id policy)))
(unless (and (string? id) (not (equal? id "")))
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 99a3d493c5..c381581896 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -927,7 +927,8 @@ dns=" dns "
(service-extension activation-service-type
(const %network-manager-activation))
;; Add network-manager to the system profile.
- (service-extension profile-service-type config->package))))))
+ (service-extension profile-service-type config->package)))
+ (default-value (network-manager-configuration)))))
;;;
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index b104efcfd5..7c5d48104e 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -18,12 +18,14 @@
(define-module (gnu tests install)
#:use-module (gnu)
+ #:use-module (gnu bootloader extlinux)
#:use-module (gnu tests)
#:use-module (gnu tests base)
#:use-module (gnu system)
#:use-module (gnu system install)
#:use-module (gnu system vm)
#:use-module ((gnu build vm) #:select (qemu-command))
+ #:use-module (gnu packages bootloaders)
#:use-module (gnu packages ocr)
#:use-module (gnu packages qemu)
#:use-module (gnu packages package-management)
@@ -34,6 +36,7 @@
#:use-module (guix gexp)
#:use-module (guix utils)
#:export (%test-installed-os
+ %test-installed-extlinux-os
%test-separate-store-os
%test-separate-home-os
%test-raid-root-os
@@ -77,6 +80,38 @@
(guix combinators)))))
%base-services))))
+(define (operating-system-add-packages os packages)
+ "Append PACKAGES to OS packages list."
+ (operating-system
+ (inherit os)
+ (packages (append packages (operating-system-packages os)))))
+
+(define-os-with-source (%minimal-extlinux-os
+ %minimal-extlinux-os-source)
+ (use-modules (gnu) (gnu tests) (gnu bootloader extlinux)
+ (srfi srfi-1))
+
+ (operating-system
+ (host-name "liberigilo")
+ (timezone "Europe/Paris")
+ (locale "en_US.UTF-8")
+
+ (bootloader (bootloader-configuration
+ (bootloader extlinux-bootloader-gpt)
+ (device "/dev/vdb")))
+ (kernel-arguments '("console=ttyS0"))
+ (file-systems (cons (file-system
+ (device "my-root")
+ (title 'label)
+ (mount-point "/")
+ (type "ext4"))
+ %base-file-systems))
+ (services (cons (service marionette-service-type
+ (marionette-configuration
+ (imported-modules '((gnu services herd)
+ (guix combinators)))))
+ %base-services))))
+
(define (operating-system-with-current-guix os)
"Return a variant of OS that uses the current Guix."
(operating-system
@@ -121,23 +156,51 @@ guix system init /mnt/etc/config.scm /mnt --no-substitutes
sync
reboot\n")
+(define %extlinux-gpt-installation-script
+ ;; Shell script of a simple installation.
+ ;; As syslinux 6.0.3 does not handle 64bits ext4 partitions,
+ ;; we make sure to pass -O '^64bit' to mkfs.
+ "\
+. /etc/profile
+set -e -x
+guix --version
+
+export GUIX_BUILD_OPTIONS=--no-grafts
+guix build isc-dhcp
+parted --script /dev/vdb mklabel gpt \\
+ mkpart ext2 1M 1G \\
+ set 1 legacy_boot on
+mkfs.ext4 -L my-root -O '^64bit' /dev/vdb1
+mount /dev/vdb1 /mnt
+df -h /mnt
+herd start cow-store /mnt
+mkdir /mnt/etc
+cp /etc/target-config.scm /mnt/etc/config.scm
+guix system init /mnt/etc/config.scm /mnt --no-substitutes
+sync
+reboot\n")
+
(define* (run-install target-os target-os-source
#:key
(script %simple-installation-script)
+ (packages '())
(os (marionette-operating-system
- ;; Since the image has no network access, use the
- ;; current Guix so the store items we need are in
- ;; the image.
(operating-system
- (inherit (operating-system-with-current-guix
- installation-os))
+ ;; Since the image has no network access, use the
+ ;; current Guix so the store items we need are in
+ ;; the image and add packages provided.
+ (inherit (operating-system-add-packages
+ (operating-system-with-current-guix
+ installation-os)
+ packages))
(kernel-arguments '("console=ttyS0")))
#:imported-modules '((gnu services herd)
(guix combinators))))
(target-size (* 1200 MiB)))
"Run SCRIPT (a shell script following the GuixSD installation procedure) in
OS to install TARGET-OS. Return a VM image of TARGET-SIZE bytes containing
-the installed system."
+the installed system. The packages specified in PACKAGES will be appended to
+packages defined in installation-os."
(mlet* %store-monad ((_ (set-grafting #f))
(system (current-system))
@@ -232,6 +295,23 @@ build (current-guix) and then store a couple of full system images.")
(run-basic-test %minimal-os command
"installed-os")))))
+(define %test-installed-extlinux-os
+ (system-test
+ (name "installed-extlinux-os")
+ (description
+ "Test basic functionality of an OS booted with an extlinux bootloader. As
+per %test-installed-os, this test is expensive in terms of CPU and storage.")
+ (value
+ (mlet* %store-monad ((image (run-install %minimal-extlinux-os
+ %minimal-extlinux-os-source
+ #:packages
+ (list syslinux)
+ #:script
+ %extlinux-gpt-installation-script))
+ (command (qemu-command/writable-image image)))
+ (run-basic-test %minimal-extlinux-os command
+ "installed-extlinux-os")))))
+
;;;
;;; Separate /home.
diff --git a/guix/build-system/ant.scm b/guix/build-system/ant.scm
index 228b4e60d2..e0870a605c 100644
--- a/guix/build-system/ant.scm
+++ b/guix/build-system/ant.scm
@@ -58,7 +58,7 @@
(define (default-zip)
"Return the default ZIP package."
;; Lazily resolve the binding to avoid a circular dependency.
- (let ((zip-mod (resolve-interface '(gnu packages zip))))
+ (let ((zip-mod (resolve-interface '(gnu packages compression))))
(module-ref zip-mod 'zip)))
(define* (lower name
diff --git a/guix/build-system/font.scm b/guix/build-system/font.scm
index f448c302c2..d40a4985f8 100644
--- a/guix/build-system/font.scm
+++ b/guix/build-system/font.scm
@@ -56,13 +56,13 @@
'())
,@inputs
,(list "tar" (module-ref (resolve-interface '(gnu packages base)) 'tar))
- ,(list "unzip" (module-ref (resolve-interface '(gnu packages zip)) 'unzip))
,@(let ((compression (resolve-interface '(gnu packages compression))))
(map (match-lambda
((name package)
(list name (module-ref compression package))))
`(("gzip" gzip)
("bzip2" bzip2)
+ ("unzip" unzip)
("xz" xz))))))
(build-inputs native-inputs)
(outputs outputs)
diff --git a/guix/download.scm b/guix/download.scm
index bed1f502cf..c1da515477 100644
--- a/guix/download.scm
+++ b/guix/download.scm
@@ -528,7 +528,7 @@ own. This helper makes it easier to deal with \"zip bombs\"."
(_
(basename url))))
(define unzip
- (module-ref (resolve-interface '(gnu packages zip)) 'unzip))
+ (module-ref (resolve-interface '(gnu packages compression)) 'unzip))
(mlet %store-monad ((drv (url-fetch url hash-algo hash
(string-append "zipbomb-"
diff --git a/guix/packages.scm b/guix/packages.scm
index cea3a7472f..75e53a2046 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -401,7 +401,7 @@ object."
("bzip2" ,(ref '(gnu packages compression) 'bzip2))
("gzip" ,(ref '(gnu packages compression) 'gzip))
("lzip" ,(ref '(gnu packages compression) 'lzip))
- ("unzip" ,(ref '(gnu packages zip) 'unzip))
+ ("unzip" ,(ref '(gnu packages compression) 'unzip))
("patch" ,(ref '(gnu packages base) 'patch))
("locales" ,(ref '(gnu packages base) 'glibc-utf8-locales)))))
diff --git a/guix/profiles.scm b/guix/profiles.scm
index 6733f105e3..dcb5186c7a 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -35,6 +35,8 @@
#:use-module (guix gexp)
#:use-module (guix monads)
#:use-module (guix store)
+ #:use-module (guix sets)
+ #:use-module (ice-9 vlist)
#:use-module (ice-9 match)
#:use-module (ice-9 regex)
#:use-module (ice-9 ftw)
@@ -51,6 +53,10 @@
profile-error-profile
&profile-not-found-error
profile-not-found-error?
+ &profile-collistion-error
+ profile-collision-error?
+ profile-collision-error-entry
+ profile-collision-error-conflict
&missing-generation-error
missing-generation-error?
missing-generation-error-generation
@@ -58,6 +64,7 @@
manifest make-manifest
manifest?
manifest-entries
+ manifest-transitive-entries
<manifest-entry> ; FIXME: eventually make it internal
manifest-entry
@@ -68,6 +75,7 @@
manifest-entry-item
manifest-entry-dependencies
manifest-entry-search-paths
+ manifest-entry-parent
manifest-pattern
manifest-pattern?
@@ -129,6 +137,11 @@
(define-condition-type &profile-not-found-error &profile-error
profile-not-found-error?)
+(define-condition-type &profile-collision-error &error
+ profile-collision-error?
+ (entry profile-collision-error-entry) ;<manifest-entry>
+ (conflict profile-collision-error-conflict)) ;<manifest-entry>
+
(define-condition-type &missing-generation-error &profile-error
missing-generation-error?
(generation missing-generation-error-generation))
@@ -154,10 +167,12 @@
(output manifest-entry-output ; string
(default "out"))
(item manifest-entry-item) ; package | store path
- (dependencies manifest-entry-dependencies ; (store path | package)*
+ (dependencies manifest-entry-dependencies ; <manifest-entry>*
(default '()))
(search-paths manifest-entry-search-paths ; search-path-specification*
- (default '())))
+ (default '()))
+ (parent manifest-entry-parent ; promise (#f | <manifest-entry>)
+ (default (delay #f))))
(define-record-type* <manifest-pattern> manifest-pattern
make-manifest-pattern
@@ -168,6 +183,23 @@
(output manifest-pattern-output ; string | #f
(default "out")))
+(define (manifest-transitive-entries manifest)
+ "Return the entries of MANIFEST along with their propagated inputs,
+recursively."
+ (let loop ((entries (manifest-entries manifest))
+ (result '())
+ (visited (set))) ;compare with 'equal?'
+ (match entries
+ (()
+ (reverse result))
+ ((head . tail)
+ (if (set-contains? visited head)
+ (loop tail result visited)
+ (loop (append (manifest-entry-dependencies head)
+ tail)
+ (cons head result)
+ (set-insert head visited)))))))
+
(define (profile-manifest profile)
"Return the PROFILE's manifest."
(let ((file (string-append profile "/manifest")))
@@ -175,21 +207,92 @@
(call-with-input-file file read-manifest)
(manifest '()))))
-(define* (package->manifest-entry package #:optional (output "out"))
+(define (manifest-entry-lookup manifest)
+ "Return a lookup procedure for the entries of MANIFEST. The lookup
+procedure takes two arguments: the entry name and output."
+ (define mapping
+ (let loop ((entries (manifest-entries manifest))
+ (mapping vlist-null))
+ (fold (lambda (entry result)
+ (vhash-cons (cons (manifest-entry-name entry)
+ (manifest-entry-output entry))
+ entry
+ (loop (manifest-entry-dependencies entry)
+ result)))
+ mapping
+ entries)))
+
+ (lambda (name output)
+ (match (vhash-assoc (cons name output) mapping)
+ ((_ . entry) entry)
+ (#f #f))))
+
+(define* (lower-manifest-entry entry system #:key target)
+ "Lower ENTRY for SYSTEM and TARGET such that its 'item' field is a store
+file name."
+ (let ((item (manifest-entry-item entry)))
+ (if (string? item)
+ (with-monad %store-monad
+ (return entry))
+ (mlet %store-monad ((drv (lower-object item system
+ #:target target))
+ (output -> (manifest-entry-output entry)))
+ (return (manifest-entry
+ (inherit entry)
+ (item (derivation->output-path drv output))))))))
+
+(define* (check-for-collisions manifest system #:key target)
+ "Check whether the entries of MANIFEST conflict with one another; raise a
+'&profile-collision-error' when a conflict is encountered."
+ (define lookup
+ (manifest-entry-lookup manifest))
+
+ (with-monad %store-monad
+ (foldm %store-monad
+ (lambda (entry result)
+ (match (lookup (manifest-entry-name entry)
+ (manifest-entry-output entry))
+ ((? manifest-entry? second) ;potential conflict
+ (mlet %store-monad ((first (lower-manifest-entry entry system
+ #:target
+ target))
+ (second (lower-manifest-entry second system
+ #:target
+ target)))
+ (if (string=? (manifest-entry-item first)
+ (manifest-entry-item second))
+ (return result)
+ (raise (condition
+ (&profile-collision-error
+ (entry first)
+ (conflict second)))))))
+ (#f ;no conflict
+ (return result))))
+ #t
+ (manifest-transitive-entries manifest))))
+
+(define* (package->manifest-entry package #:optional (output "out")
+ #:key (parent (delay #f)))
"Return a manifest entry for the OUTPUT of package PACKAGE."
- (let ((deps (map (match-lambda
- ((label package)
- (gexp-input package))
- ((label package output)
- (gexp-input package output)))
- (package-transitive-propagated-inputs package))))
- (manifest-entry
- (name (package-name package))
- (version (package-version package))
- (output output)
- (item package)
- (dependencies (delete-duplicates deps))
- (search-paths (package-transitive-native-search-paths package)))))
+ ;; For each dependency, keep a promise pointing to its "parent" entry.
+ (letrec* ((deps (map (match-lambda
+ ((label package)
+ (package->manifest-entry package
+ #:parent (delay entry)))
+ ((label package output)
+ (package->manifest-entry package output
+ #:parent (delay entry))))
+ (package-propagated-inputs package)))
+ (entry (manifest-entry
+ (name (package-name package))
+ (version (package-version package))
+ (output output)
+ (item package)
+ (dependencies (delete-duplicates deps))
+ (search-paths
+ (package-transitive-native-search-paths package))
+ (parent parent))))
+ entry))
(define (packages->manifest packages)
"Return a list of manifest entries, one for each item listed in PACKAGES.
@@ -210,20 +313,20 @@ denoting a specific output of a package."
(($ <manifest-entry> name version output (? string? path)
(deps ...) (search-paths ...))
#~(#$name #$version #$output #$path
- (propagated-inputs #$deps)
+ (propagated-inputs #$(map entry->gexp deps))
(search-paths #$(map search-path-specification->sexp
search-paths))))
(($ <manifest-entry> name version output (? package? package)
(deps ...) (search-paths ...))
#~(#$name #$version #$output
(ungexp package (or output "out"))
- (propagated-inputs #$deps)
+ (propagated-inputs #$(map entry->gexp deps))
(search-paths #$(map search-path-specification->sexp
search-paths))))))
(match manifest
(($ <manifest> (entries ...))
- #~(manifest (version 2)
+ #~(manifest (version 3)
(packages #$(map entry->gexp entries))))))
(define (find-package name version)
@@ -254,17 +357,48 @@ procedure is here for backward-compatibility and will eventually vanish."
(package-native-search-paths package)
'())))
+ (define (infer-dependency item parent)
+ ;; Return a <manifest-entry> for ITEM.
+ (let-values (((name version)
+ (package-name->name+version
+ (store-path-package-name item))))
+ (manifest-entry
+ (name name)
+ (version version)
+ (item item)
+ (parent parent))))
+
+ (define* (sexp->manifest-entry sexp #:optional (parent (delay #f)))
+ (match sexp
+ ((name version output path
+ ('propagated-inputs deps)
+ ('search-paths search-paths)
+ extra-stuff ...)
+ ;; For each of DEPS, keep a promise pointing to ENTRY.
+ (letrec* ((deps* (map (cut sexp->manifest-entry <> (delay entry))
+ deps))
+ (entry (manifest-entry
+ (name name)
+ (version version)
+ (output output)
+ (item path)
+ (dependencies deps*)
+ (search-paths (map sexp->search-path-specification
+ search-paths))
+ (parent parent))))
+ entry))))
+
(match sexp
(('manifest ('version 0)
('packages ((name version output path) ...)))
(manifest
(map (lambda (name version output path)
(manifest-entry
- (name name)
- (version version)
- (output output)
- (item path)
- (search-paths (infer-search-paths name version))))
+ (name name)
+ (version version)
+ (output output)
+ (item path)
+ (search-paths (infer-search-paths name version))))
name version output path)))
;; Version 1 adds a list of propagated inputs to the
@@ -281,13 +415,17 @@ procedure is here for backward-compatibility and will eventually vanish."
directories)
((directories ...)
directories))))
- (manifest-entry
- (name name)
- (version version)
- (output output)
- (item path)
- (dependencies deps)
- (search-paths (infer-search-paths name version)))))
+ (letrec* ((deps* (map (cute infer-dependency <> (delay entry))
+ deps))
+ (entry (manifest-entry
+ (name name)
+ (version version)
+ (output output)
+ (item path)
+ (dependencies deps*)
+ (search-paths
+ (infer-search-paths name version)))))
+ entry)))
name version output path deps)))
;; Version 2 adds search paths and is slightly more verbose.
@@ -299,15 +437,24 @@ procedure is here for backward-compatibility and will eventually vanish."
...)))
(manifest
(map (lambda (name version output path deps search-paths)
- (manifest-entry
- (name name)
- (version version)
- (output output)
- (item path)
- (dependencies deps)
- (search-paths (map sexp->search-path-specification
- search-paths))))
+ (letrec* ((deps* (map (cute infer-dependency <> (delay entry))
+ deps))
+ (entry (manifest-entry
+ (name name)
+ (version version)
+ (output output)
+ (item path)
+ (dependencies deps*)
+ (search-paths
+ (map sexp->search-path-specification
+ search-paths)))))
+ entry))
name version output path deps search-paths)))
+
+ ;; Version 3 represents DEPS as full-blown manifest entries.
+ (('manifest ('version 3 minor-version ...)
+ ('packages (entries ...)))
+ (manifest (map sexp->manifest-entry entries)))
(_
(raise (condition
(&message (message "unsupported manifest format")))))))
@@ -471,12 +618,15 @@ replace it."
(define (manifest-inputs manifest)
"Return a list of <gexp-input> objects for MANIFEST."
- (append-map (match-lambda
- (($ <manifest-entry> name version output thing deps)
- ;; THING may be a package or a file name. In the latter case,
- ;; assume it's already valid. Ditto for DEPS.
- (cons (gexp-input thing output) deps)))
- (manifest-entries manifest)))
+ (define entry->input
+ (match-lambda
+ (($ <manifest-entry> name version output thing deps)
+ ;; THING may be a package or a file name. In the latter case, assume
+ ;; it's already valid.
+ (cons (gexp-input thing output)
+ (append-map entry->input deps)))))
+
+ (append-map entry->input (manifest-entries manifest)))
(define* (manifest-lookup-package manifest name #:optional version)
"Return as a monadic value the first package or store path referenced by
@@ -1049,25 +1199,33 @@ the entries in MANIFEST."
#:key
(hooks %default-profile-hooks)
(locales? #t)
+ (allow-collisions? #f)
system target)
"Return a derivation that builds a profile (aka. 'user environment') with
the given MANIFEST. The profile includes additional derivations returned by
the monadic procedures listed in HOOKS--such as an Info 'dir' file, etc.
+Unless ALLOW-COLLISIONS? is true, a '&profile-collision-error' is raised if
+entries in MANIFEST collide (for instance if there are two same-name packages
+with a different version number.)
When LOCALES? is true, the build is performed under a UTF-8 locale; this adds
a dependency on the 'glibc-utf8-locales' package.
When TARGET is true, it must be a GNU triplet, and the packages in MANIFEST
are cross-built for TARGET."
- (mlet %store-monad ((system (if system
- (return system)
- (current-system)))
- (extras (if (null? (manifest-entries manifest))
- (return '())
- (sequence %store-monad
- (map (lambda (hook)
- (hook manifest))
- hooks)))))
+ (mlet* %store-monad ((system (if system
+ (return system)
+ (current-system)))
+ (ok? (if allow-collisions?
+ (return #t)
+ (check-for-collisions manifest system
+ #:target target)))
+ (extras (if (null? (manifest-entries manifest))
+ (return '())
+ (sequence %store-monad
+ (map (lambda (hook)
+ (hook manifest))
+ hooks)))))
(define inputs
(append (filter-map (lambda (drv)
(and (derivation? drv)
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index af69e2b730..0abc509a35 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -323,6 +323,13 @@ BOOTSTRAP? specifies whether to use the bootstrap Guile to build the
profile."
(profile-derivation (packages->manifest inputs)
#:system system
+
+ ;; Packages can have conflicting inputs, or explicit
+ ;; inputs that conflict with implicit inputs (e.g., gcc,
+ ;; gzip, etc.). Thus, do not error out when we
+ ;; encounter collision.
+ #:allow-collisions? #t
+
#:hooks (if bootstrap?
'()
%default-profile-hooks)
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index a6bfb03ae4..1f835ca5a5 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -312,12 +312,16 @@ of relevance scores."
((=)
(let ((candidate-path (derivation->output-path
(package-derivation (%store) pkg))))
- (if (string=? path candidate-path)
+ ;; XXX: When there are propagated inputs, assume we need to
+ ;; upgrade the whole entry.
+ (if (and (string=? path candidate-path)
+ (null? (package-propagated-inputs pkg)))
transaction
(manifest-transaction-install-entry
(package->manifest-entry pkg output)
transaction))))))))
(#f
+ (warning (G_ "package '~a' no longer exists~%") name)
transaction)))))
@@ -786,7 +790,8 @@ processed, #f otherwise."
(('search-paths kind)
(let* ((manifests (map profile-manifest profiles))
- (entries (append-map manifest-entries manifests))
+ (entries (append-map manifest-transitive-entries
+ manifests))
(profiles (map user-friendly-profile profiles))
(settings (search-path-environment-variables entries profiles
(const #f)
diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm
index dd93e7d3e7..5add64d8e8 100644
--- a/guix/scripts/refresh.scm
+++ b/guix/scripts/refresh.scm
@@ -253,15 +253,32 @@ downloaded and authenticated; not updating~%")
WARN? is true and no updater exists for PACKAGE, print a warning."
(match (package-latest-release package updaters)
((? upstream-source? source)
- (when (version>? (upstream-source-version source)
- (package-version package))
- (let ((loc (or (package-field-location package 'version)
- (package-location package))))
- (format (current-error-port)
- (G_ "~a: ~a would be upgraded from ~a to ~a~%")
- (location->string loc)
- (package-name package) (package-version package)
- (upstream-source-version source)))))
+ (let ((loc (or (package-field-location package 'version)
+ (package-location package))))
+ (case (version-compare (upstream-source-version source)
+ (package-version package))
+ ((>)
+ (format (current-error-port)
+ (G_ "~a: ~a would be upgraded from ~a to ~a~%")
+ (location->string loc)
+ (package-name package) (package-version package)
+ (upstream-source-version source)))
+ ((=)
+ (when warn?
+ (format (current-error-port)
+ (G_ "~a: info: ~a is already the latest version of ~a~%")
+ (location->string loc)
+ (package-version package)
+ (package-name package))))
+ (else
+ (when warn?
+ (format (current-error-port)
+ (G_ "~a: warning: ~a is greater than \
+the latest known version of ~a (~a)~%")
+ (location->string loc)
+ (package-version package)
+ (package-name package)
+ (upstream-source-version source)))))))
(#f
(when warn?
(warn-no-updater package)))))
diff --git a/guix/store.scm b/guix/store.scm
index b584caa073..d1a4c67ae8 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -383,6 +383,10 @@
(connect s a)
s)))
+(define %default-guix-port
+ ;; Default port when connecting to a daemon over TCP/IP.
+ 44146)
+
(define (open-inet-socket host port)
"Connect to the Unix-domain socket at HOST:PORT and return it. Raise a
'&nix-connection-error' upon error."
@@ -399,7 +403,9 @@
(if (number? port) (number->string port) port)
(if (number? port)
(logior AI_ADDRCONFIG AI_NUMERICSERV)
- AI_ADDRCONFIG)))
+ AI_ADDRCONFIG)
+ 0 ;any address family
+ SOCK_STREAM)) ;TCP only
(let loop ((addresses addresses))
(match addresses
@@ -444,12 +450,8 @@ name."
(open-unix-domain-socket (uri-path uri))))
('guix
(lambda (_)
- (unless (uri-port uri)
- (raise (condition (&nix-connection-error
- (file (uri->string uri))
- (errno EBADR))))) ;bah!
-
- (open-inet-socket (uri-host uri) (uri-port uri))))
+ (open-inet-socket (uri-host uri)
+ (or (uri-port uri) %default-guix-port))))
((? symbol? scheme)
;; Try to dynamically load a module for SCHEME.
;; XXX: Errors are swallowed.
diff --git a/guix/ui.scm b/guix/ui.scm
index 889c9d0228..c141880316 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -476,6 +476,33 @@ interpreted."
(leave (G_ "generation ~a of profile '~a' does not exist~%")
(missing-generation-error-generation c)
(profile-error-profile c)))
+ ((profile-collision-error? c)
+ (let ((entry (profile-collision-error-entry c))
+ (conflict (profile-collision-error-conflict c)))
+ (define (report-parent-entries entry)
+ (let ((parent (force (manifest-entry-parent entry))))
+ (when (manifest-entry? parent)
+ (report-error (G_ " ... propagated from ~a@~a~%")
+ (manifest-entry-name parent)
+ (manifest-entry-version parent))
+ (report-parent-entries parent))))
+
+ (report-error (G_ "profile contains conflicting entries for ~a:~a~%")
+ (manifest-entry-name entry)
+ (manifest-entry-output entry))
+ (report-error (G_ " first entry: ~a@~a:~a ~a~%")
+ (manifest-entry-name entry)
+ (manifest-entry-version entry)
+ (manifest-entry-output entry)
+ (manifest-entry-item entry))
+ (report-parent-entries entry)
+ (report-error (G_ " second entry: ~a@~a:~a ~a~%")
+ (manifest-entry-name conflict)
+ (manifest-entry-version conflict)
+ (manifest-entry-output conflict)
+ (manifest-entry-item conflict))
+ (report-parent-entries conflict)
+ (exit 1)))
((nar-error? c)
(let ((file (nar-error-file c))
(port (nar-error-port c)))
diff --git a/nix/nix-daemon/guix-daemon.cc b/nix/nix-daemon/guix-daemon.cc
index 0d9c33d1d2..7963358202 100644
--- a/nix/nix-daemon/guix-daemon.cc
+++ b/nix/nix-daemon/guix-daemon.cc
@@ -1,5 +1,6 @@
/* GNU Guix --- Functional package management for GNU
Copyright (C) 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+ Copyright (C) 2006, 2010, 2012, 2014 Eelco Dolstra <e.dolstra@tudelft.nl>
This file is part of GNU Guix.
@@ -30,8 +31,12 @@
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <netdb.h>
#include <strings.h>
#include <exception>
+#include <iostream>
#include <libintl.h>
#include <locale.h>
@@ -43,7 +48,7 @@ char **argvSaved;
using namespace nix;
/* Entry point in `nix-daemon.cc'. */
-extern void run (Strings args);
+extern void run (const std::vector<int> &);
/* Command-line options. */
@@ -149,6 +154,12 @@ to live outputs") },
};
+/* Default port for '--listen' on TCP/IP. */
+#define DEFAULT_GUIX_PORT "44146"
+
+/* List of '--listen' options. */
+static std::list<std::string> listen_options;
+
/* Convert ARG to a Boolean value, or throw an error if it does not denote a
Boolean. */
static bool
@@ -217,15 +228,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
settings.keepLog = false;
break;
case GUIX_OPT_LISTEN:
- try
- {
- settings.nixDaemonSocketFile = canonPath (arg);
- }
- catch (std::exception &e)
- {
- fprintf (stderr, _("error: %s\n"), e.what ());
- exit (EXIT_FAILURE);
- }
+ listen_options.push_back (arg);
break;
case GUIX_OPT_SUBSTITUTE_URLS:
settings.set ("substitute-urls", arg);
@@ -276,13 +279,134 @@ static const struct argp argp =
guix_textdomain
};
+
+static int
+open_unix_domain_socket (const char *file)
+{
+ /* Create and bind to a Unix domain socket. */
+ AutoCloseFD fdSocket = socket (PF_UNIX, SOCK_STREAM, 0);
+ if (fdSocket == -1)
+ throw SysError (_("cannot create Unix domain socket"));
+
+ createDirs (dirOf (file));
+
+ /* Urgh, sockaddr_un allows path names of only 108 characters.
+ So chdir to the socket directory so that we can pass a
+ relative path name. */
+ if (chdir (dirOf (file).c_str ()) == -1)
+ throw SysError (_("cannot change current directory"));
+ Path fileRel = "./" + baseNameOf (file);
+
+ struct sockaddr_un addr;
+ addr.sun_family = AF_UNIX;
+ if (fileRel.size () >= sizeof (addr.sun_path))
+ throw Error (format (_("socket file name '%1%' is too long")) % fileRel);
+ strcpy (addr.sun_path, fileRel.c_str ());
+
+ unlink (file);
+
+ /* Make sure that the socket is created with 0666 permission
+ (everybody can connect --- provided they have access to the
+ directory containing the socket). */
+ mode_t oldMode = umask (0111);
+ int res = bind (fdSocket, (struct sockaddr *) &addr, sizeof addr);
+ umask (oldMode);
+ if (res == -1)
+ throw SysError (format (_("cannot bind to socket '%1%'")) % file);
+
+ if (chdir ("/") == -1) /* back to the root */
+ throw SysError (_("cannot change current directory"));
+
+ if (listen (fdSocket, 5) == -1)
+ throw SysError (format (_("cannot listen on socket '%1%'")) % file);
+
+ return fdSocket.borrow ();
+}
+
+/* Return a listening socket for ADDRESS, which has the given LENGTH. */
+static int
+open_inet_socket (const struct sockaddr *address, socklen_t length)
+{
+ AutoCloseFD fd = socket (address->sa_family, SOCK_STREAM, 0);
+ if (fd == -1)
+ throw SysError (_("cannot create TCP socket"));
+
+ int res = bind (fd, address, length);
+ if (res == -1)
+ throw SysError (_("cannot bind TCP socket"));
+
+ if (listen (fd, 5) == -1)
+ throw SysError (format (_("cannot listen on TCP socket")));
+
+ return fd.borrow ();
+}
+
+/* Return a list of file descriptors of listening sockets. */
+static std::vector<int>
+listening_sockets (const std::list<std::string> &options)
+{
+ std::vector<int> result;
+
+ if (options.empty ())
+ {
+ /* Open the default Unix-domain socket. */
+ auto fd = open_unix_domain_socket (settings.nixDaemonSocketFile.c_str ());
+ result.push_back (fd);
+ return result;
+ }
+
+ /* Open the user-specified sockets. */
+ for (const std::string& option: options)
+ {
+ if (option[0] == '/')
+ {
+ /* Assume OPTION is the file name of a Unix-domain socket. */
+ settings.nixDaemonSocketFile = canonPath (option);
+ int fd =
+ open_unix_domain_socket (settings.nixDaemonSocketFile.c_str ());
+ result.push_back (fd);
+ }
+ else
+ {
+ /* Assume OPTIONS has the form "HOST" or "HOST:PORT". */
+ auto colon = option.find_last_of (":");
+ auto host = colon == std::string::npos
+ ? option : option.substr (0, colon);
+ auto port = colon == std::string::npos
+ ? DEFAULT_GUIX_PORT
+ : option.substr (colon + 1, option.size () - colon - 1);
+
+ struct addrinfo *res, hints;
+
+ memset (&hints, '\0', sizeof hints);
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_flags = AI_NUMERICSERV | AI_ADDRCONFIG;
+
+ int err = getaddrinfo (host.c_str(), port.c_str (),
+ &hints, &res);
+
+ if (err != 0)
+ throw Error(format ("failed to look up '%1%': %2%")
+ % option % gai_strerror (err));
+
+ printMsg (lvlDebug, format ("listening on '%1%', port '%2%'")
+ % host % port);
+
+ /* XXX: Pick the first result, RES. */
+ result.push_back (open_inet_socket (res->ai_addr,
+ res->ai_addrlen));
+
+ freeaddrinfo (res);
+ }
+ }
+
+ return result;
+}
int
main (int argc, char *argv[])
{
- static const Strings nothing;
-
setlocale (LC_ALL, "");
bindtextdomain (guix_textdomain, LOCALEDIR);
textdomain (guix_textdomain);
@@ -359,6 +483,8 @@ main (int argc, char *argv[])
argp_parse (&argp, argc, argv, 0, 0, 0);
+ auto sockets = listening_sockets (listen_options);
+
/* Effect all the changes made via 'settings.set'. */
settings.update ();
@@ -402,7 +528,7 @@ using `--build-users-group' is highly recommended\n"));
printMsg (lvlDebug,
format ("listening on `%1%'") % settings.nixDaemonSocketFile);
- run (nothing);
+ run (sockets);
}
catch (std::exception &e)
{
diff --git a/nix/nix-daemon/nix-daemon.cc b/nix/nix-daemon/nix-daemon.cc
index 79580ffb48..b20225b3b0 100644
--- a/nix/nix-daemon/nix-daemon.cc
+++ b/nix/nix-daemon/nix-daemon.cc
@@ -18,6 +18,10 @@
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/un.h>
+#include <arpa/inet.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+
#include <fcntl.h>
#include <errno.h>
#include <pwd.h>
@@ -809,151 +813,102 @@ static void setSigChldAction(bool autoReap)
}
-bool matchUser(const string & user, const string & group, const Strings & users)
-{
- if (find(users.begin(), users.end(), "*") != users.end())
- return true;
-
- if (find(users.begin(), users.end(), user) != users.end())
- return true;
-
- for (auto & i : users)
- if (string(i, 0, 1) == "@") {
- if (group == string(i, 1)) return true;
- struct group * gr = getgrnam(i.c_str() + 1);
- if (!gr) continue;
- for (char * * mem = gr->gr_mem; *mem; mem++)
- if (user == string(*mem)) return true;
- }
-
- return false;
-}
-
-
-#define SD_LISTEN_FDS_START 3
-
-
-static void daemonLoop()
+/* Accept a connection on FDSOCKET and fork a server process to process the
+ new connection. */
+static void acceptConnection(int fdSocket)
{
- if (chdir("/") == -1)
- throw SysError("cannot change current directory");
-
- /* Get rid of children automatically; don't let them become
- zombies. */
- setSigChldAction(true);
-
- AutoCloseFD fdSocket;
-
- /* Handle socket-based activation by systemd. */
- if (getEnv("LISTEN_FDS") != "") {
- if (getEnv("LISTEN_PID") != std::to_string(getpid()) || getEnv("LISTEN_FDS") != "1")
- throw Error("unexpected systemd environment variables");
- fdSocket = SD_LISTEN_FDS_START;
- }
-
- /* Otherwise, create and bind to a Unix domain socket. */
- else {
-
- /* Create and bind to a Unix domain socket. */
- fdSocket = socket(PF_UNIX, SOCK_STREAM, 0);
- if (fdSocket == -1)
- throw SysError("cannot create Unix domain socket");
-
- string socketPath = settings.nixDaemonSocketFile;
-
- createDirs(dirOf(socketPath));
-
- /* Urgh, sockaddr_un allows path names of only 108 characters.
- So chdir to the socket directory so that we can pass a
- relative path name. */
- if (chdir(dirOf(socketPath).c_str()) == -1)
- throw SysError("cannot change current directory");
- Path socketPathRel = "./" + baseNameOf(socketPath);
-
- struct sockaddr_un addr;
- addr.sun_family = AF_UNIX;
- if (socketPathRel.size() >= sizeof(addr.sun_path))
- throw Error(format("socket path `%1%' is too long") % socketPathRel);
- strcpy(addr.sun_path, socketPathRel.c_str());
-
- unlink(socketPath.c_str());
-
- /* Make sure that the socket is created with 0666 permission
- (everybody can connect --- provided they have access to the
- directory containing the socket). */
- mode_t oldMode = umask(0111);
- int res = bind(fdSocket, (struct sockaddr *) &addr, sizeof(addr));
- umask(oldMode);
- if (res == -1)
- throw SysError(format("cannot bind to socket `%1%'") % socketPath);
-
- if (chdir("/") == -1) /* back to the root */
- throw SysError("cannot change current directory");
-
- if (listen(fdSocket, 5) == -1)
- throw SysError(format("cannot listen on socket `%1%'") % socketPath);
- }
-
- closeOnExec(fdSocket);
-
- /* Loop accepting connections. */
- while (1) {
+ uid_t clientUid = (uid_t) -1;
+ gid_t clientGid = (gid_t) -1;
- try {
- /* Important: the server process *cannot* open the SQLite
- database, because it doesn't like forks very much. */
- assert(!store);
-
- /* Accept a connection. */
- struct sockaddr_un remoteAddr;
- socklen_t remoteAddrLen = sizeof(remoteAddr);
-
- AutoCloseFD remote = accept(fdSocket,
- (struct sockaddr *) &remoteAddr, &remoteAddrLen);
- checkInterrupt();
- if (remote == -1) {
- if (errno == EINTR)
- continue;
- else
- throw SysError("accepting connection");
- }
-
- closeOnExec(remote);
+ try {
+ /* Important: the server process *cannot* open the SQLite
+ database, because it doesn't like forks very much. */
+ assert(!store);
+
+ /* Accept a connection. */
+ struct sockaddr_storage remoteAddr;
+ socklen_t remoteAddrLen = sizeof(remoteAddr);
+
+ try_again:
+ AutoCloseFD remote = accept(fdSocket,
+ (struct sockaddr *) &remoteAddr, &remoteAddrLen);
+ checkInterrupt();
+ if (remote == -1) {
+ if (errno == EINTR)
+ goto try_again;
+ else
+ throw SysError("accepting connection");
+ }
+
+ closeOnExec(remote);
+
+ {
+ int enabled = 1;
+
+ /* If we're on a TCP connection, disable Nagle's algorithm so that
+ data is sent as soon as possible. */
+ (void) setsockopt(remote, SOL_TCP, TCP_NODELAY,
+ &enabled, sizeof enabled);
+
+#if defined(TCP_QUICKACK)
+ /* Enable TCP quick-ack if applicable; this might help a little. */
+ (void) setsockopt(remote, SOL_TCP, TCP_QUICKACK,
+ &enabled, sizeof enabled);
+#endif
+ }
- bool trusted = false;
- pid_t clientPid = -1;
+ pid_t clientPid = -1;
+ bool trusted = false;
+ /* Get the identity of the caller, if possible. */
+ if (remoteAddr.ss_family == AF_UNIX) {
#if defined(SO_PEERCRED)
- /* Get the identity of the caller, if possible. */
- ucred cred;
- socklen_t credLen = sizeof(cred);
- if (getsockopt(remote, SOL_SOCKET, SO_PEERCRED, &cred, &credLen) == -1)
- throw SysError("getting peer credentials");
+ ucred cred;
+ socklen_t credLen = sizeof(cred);
+ if (getsockopt(remote, SOL_SOCKET, SO_PEERCRED,
+ &cred, &credLen) == -1)
+ throw SysError("getting peer credentials");
- clientPid = cred.pid;
+ clientPid = cred.pid;
+ clientUid = cred.uid;
+ clientGid = cred.gid;
+ trusted = clientUid == 0;
struct passwd * pw = getpwuid(cred.uid);
string user = pw ? pw->pw_name : std::to_string(cred.uid);
- struct group * gr = getgrgid(cred.gid);
- string group = gr ? gr->gr_name : std::to_string(cred.gid);
-
- Strings trustedUsers = settings.get("trusted-users", Strings({"root"}));
- Strings allowedUsers = settings.get("allowed-users", Strings({"*"}));
-
- if (matchUser(user, group, trustedUsers))
- trusted = true;
-
- if (!trusted && !matchUser(user, group, allowedUsers))
- throw Error(format("user `%1%' is not allowed to connect to the Nix daemon") % user);
-
- printMsg(lvlInfo, format((string) "accepted connection from pid %1%, user %2%"
- + (trusted ? " (trusted)" : "")) % clientPid % user);
+ printMsg(lvlInfo,
+ format((string) "accepted connection from pid %1%, user %2%")
+ % clientPid % user);
#endif
-
- /* Fork a child to handle the connection. */
- startProcess([&]() {
- fdSocket.close();
+ } else {
+ char address_str[128];
+ const char *result;
+
+ if (remoteAddr.ss_family == AF_INET) {
+ struct sockaddr_in *addr = (struct sockaddr_in *) &remoteAddr;
+ struct in_addr inaddr = { addr->sin_addr };
+ result = inet_ntop(AF_INET, &inaddr,
+ address_str, sizeof address_str);
+ } else if (remoteAddr.ss_family == AF_INET6) {
+ struct sockaddr_in6 *addr = (struct sockaddr_in6 *) &remoteAddr;
+ struct in6_addr inaddr = { addr->sin6_addr };
+ result = inet_ntop(AF_INET6, &inaddr,
+ address_str, sizeof address_str);
+ } else {
+ result = NULL;
+ }
+
+ if (result != NULL) {
+ printMsg(lvlInfo,
+ format("accepted connection from %1%")
+ % address_str);
+ }
+ }
+
+ /* Fork a child to handle the connection. */
+ startProcess([&]() {
+ close(fdSocket);
/* Background the daemon. */
if (setsid() == -1)
@@ -968,17 +923,11 @@ static void daemonLoop()
strncpy(argvSaved[1], processName.c_str(), strlen(argvSaved[1]));
}
-#if defined(SO_PEERCRED)
/* Store the client's user and group for this connection. This
has to be done in the forked process since it is per
- connection. */
- settings.clientUid = cred.uid;
- settings.clientGid = cred.gid;
-#else
- /* Setting these to -1 means: do not change */
- settings.clientUid = (uid_t) -1;
- settings.clientGid = (gid_t) -1;
-#endif
+ connection. Setting these to -1 means: do not change. */
+ settings.clientUid = clientUid;
+ settings.clientGid = clientGid;
/* Handle the connection. */
from.fd = remote;
@@ -988,23 +937,63 @@ static void daemonLoop()
exit(0);
}, false, "unexpected Nix daemon error: ", true);
- } catch (Interrupted & e) {
- throw;
- } catch (Error & e) {
- printMsg(lvlError, format("error processing connection: %1%") % e.msg());
- }
+ } catch (Interrupted & e) {
+ throw;
+ } catch (Error & e) {
+ printMsg(lvlError, format("error processing connection: %1%") % e.msg());
}
}
-
-void run(Strings args)
+static void daemonLoop(const std::vector<int>& sockets)
{
- for (Strings::iterator i = args.begin(); i != args.end(); ) {
- string arg = *i++;
- if (arg == "--daemon") /* ignored for backwards compatibility */;
+ if (chdir("/") == -1)
+ throw SysError("cannot change current directory");
+
+ /* Get rid of children automatically; don't let them become
+ zombies. */
+ setSigChldAction(true);
+
+ /* Mark sockets as close-on-exec. */
+ for(int fd: sockets) {
+ closeOnExec(fd);
}
- daemonLoop();
+ /* Prepare the FD set corresponding to SOCKETS. */
+ auto initializeFDSet = [&](fd_set *set) {
+ FD_ZERO(set);
+ for (int fd: sockets) {
+ FD_SET(fd, set);
+ }
+ };
+
+ /* Loop accepting connections. */
+ while (1) {
+ fd_set readfds;
+
+ initializeFDSet(&readfds);
+ int count =
+ select(*std::max_element(sockets.begin(), sockets.end()) + 1,
+ &readfds, NULL, NULL,
+ NULL);
+ if (count < 0) {
+ int err = errno;
+ if (err == EINTR)
+ continue;
+ throw SysError(format("select error: %1%") % strerror(err));
+ }
+
+ for (unsigned int i = 0; i < sockets.size(); i++) {
+ if (FD_ISSET(sockets[i], &readfds)) {
+ acceptConnection(sockets[i]);
+ }
+ }
+ }
+}
+
+
+void run(const std::vector<int>& sockets)
+{
+ daemonLoop(sockets);
}
diff --git a/po/packages/POTFILES.in b/po/packages/POTFILES.in
index 749bd1b24e..1eafdcb4b8 100644
--- a/po/packages/POTFILES.in
+++ b/po/packages/POTFILES.in
@@ -57,4 +57,3 @@ gnu/packages/webkit.scm
gnu/packages/web.scm
gnu/packages/wordnet.scm
gnu/packages/xiph.scm
-gnu/packages/zip.scm
diff --git a/tests/guix-daemon.sh b/tests/guix-daemon.sh
index 9186ffd585..7212e3eb68 100644
--- a/tests/guix-daemon.sh
+++ b/tests/guix-daemon.sh
@@ -81,6 +81,18 @@ guile -c "
kill "$daemon_pid"
+# Pass several '--listen' options, and make sure they are all honored.
+guix-daemon --disable-chroot --listen="$socket" --listen="$socket-second" \
+ --listen="localhost" --listen="localhost:9876" &
+daemon_pid=$!
+
+for uri in "$socket" "$socket-second" \
+ "guix://localhost" "guix://localhost:9876"
+do
+ GUIX_DAEMON_SOCKET="$uri" guix build guile-bootstrap
+done
+
+kill "$daemon_pid"
# Check the failed build cache.
diff --git a/tests/guix-environment.sh b/tests/guix-environment.sh
index 9115949123..bf5ca17fa5 100644
--- a/tests/guix-environment.sh
+++ b/tests/guix-environment.sh
@@ -105,6 +105,10 @@ else
test $? = 42
fi
+# Make sure we can build the environment of 'guix'. There may be collisions
+# in its profile (e.g., for 'gzip'), but we have to accept them.
+guix environment guix --bootstrap -n
+
if guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null
then
# Compute the build environment for the initial GNU Make.
diff --git a/tests/profiles.scm b/tests/profiles.scm
index 093422792f..f731807e8c 100644
--- a/tests/profiles.scm
+++ b/tests/profiles.scm
@@ -35,6 +35,7 @@
#:use-module (rnrs io ports)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
+ #:use-module (srfi srfi-34)
#:use-module (srfi srfi-64))
;; Test the (guix profiles) module.
@@ -288,6 +289,117 @@
(manifest-entry-search-paths
(package->manifest-entry mpl)))))
+(test-equal "packages->manifest, propagated inputs"
+ (map (match-lambda
+ ((label package)
+ (list (package-name package) (package-version package)
+ package)))
+ (package-propagated-inputs packages:guile-2.2))
+ (map (lambda (entry)
+ (list (manifest-entry-name entry)
+ (manifest-entry-version entry)
+ (manifest-entry-item entry)))
+ (manifest-entry-dependencies
+ (package->manifest-entry packages:guile-2.2))))
+
+(test-assert "manifest-entry-parent"
+ (let ((entry (package->manifest-entry packages:guile-2.2)))
+ (match (manifest-entry-dependencies entry)
+ ((dependencies ..1)
+ (and (every (lambda (parent)
+ (eq? entry (force parent)))
+ (map manifest-entry-parent dependencies))
+ (not (force (manifest-entry-parent entry))))))))
+
+(test-assertm "read-manifest"
+ (mlet* %store-monad ((manifest -> (packages->manifest
+ (list (package
+ (inherit %bootstrap-guile)
+ (native-search-paths
+ (package-native-search-paths
+ packages:guile-2.0))))))
+ (drv (profile-derivation manifest
+ #:hooks '()
+ #:locales? #f))
+ (out -> (derivation->output-path drv)))
+ (define (entry->sexp entry)
+ (list (manifest-entry-name entry)
+ (manifest-entry-version entry)
+ (manifest-entry-search-paths entry)
+ (manifest-entry-dependencies entry)
+ (force (manifest-entry-parent entry))))
+
+ (mbegin %store-monad
+ (built-derivations (list drv))
+ (let ((manifest2 (profile-manifest out)))
+ (return (equal? (map entry->sexp (manifest-entries manifest))
+ (map entry->sexp (manifest-entries manifest2))))))))
+
+(test-equal "collision"
+ '(("guile-bootstrap" "2.0") ("guile-bootstrap" "42"))
+ (guard (c ((profile-collision-error? c)
+ (let ((entry1 (profile-collision-error-entry c))
+ (entry2 (profile-collision-error-conflict c)))
+ (list (list (manifest-entry-name entry1)
+ (manifest-entry-version entry1))
+ (list (manifest-entry-name entry2)
+ (manifest-entry-version entry2))))))
+ (run-with-store %store
+ (mlet* %store-monad ((p0 -> (package
+ (inherit %bootstrap-guile)
+ (version "42")))
+ (p1 -> (dummy-package "p1"
+ (propagated-inputs `(("p0" ,p0)))))
+ (manifest -> (packages->manifest
+ (list %bootstrap-guile p1)))
+ (drv (profile-derivation manifest
+ #:hooks '()
+ #:locales? #f)))
+ (return #f)))))
+
+(test-equal "collision of propagated inputs"
+ '(("guile-bootstrap" "2.0") ("guile-bootstrap" "42"))
+ (guard (c ((profile-collision-error? c)
+ (let ((entry1 (profile-collision-error-entry c))
+ (entry2 (profile-collision-error-conflict c)))
+ (list (list (manifest-entry-name entry1)
+ (manifest-entry-version entry1))
+ (list (manifest-entry-name entry2)
+ (manifest-entry-version entry2))))))
+ (run-with-store %store
+ (mlet* %store-monad ((p0 -> (package
+ (inherit %bootstrap-guile)
+ (version "42")))
+ (p1 -> (dummy-package "p1"
+ (propagated-inputs
+ `(("guile" ,%bootstrap-guile)))))
+ (p2 -> (dummy-package "p2"
+ (propagated-inputs
+ `(("guile" ,p0)))))
+ (manifest -> (packages->manifest (list p1 p2)))
+ (drv (profile-derivation manifest
+ #:hooks '()
+ #:locales? #f)))
+ (return #f)))))
+
+(test-assertm "no collision"
+ ;; Here we have an entry that is "lowered" (its 'item' field is a store file
+ ;; name) and another entry (its 'item' field is a package) that is
+ ;; equivalent.
+ (mlet* %store-monad ((p -> (dummy-package "p"
+ (propagated-inputs
+ `(("guile" ,%bootstrap-guile)))))
+ (guile (package->derivation %bootstrap-guile))
+ (entry -> (manifest-entry
+ (inherit (package->manifest-entry
+ %bootstrap-guile))
+ (item (derivation->output-path guile))))
+ (manifest -> (manifest
+ (list entry
+ (package->manifest-entry p))))
+ (drv (profile-derivation manifest)))
+ (return (->bool drv))))
+
(test-assertm "etc/profile"
;; Make sure we get an 'etc/profile' file that at least defines $PATH.
(mlet* %store-monad