diff --git a/Makefile.am b/Makefile.am index 9c29e01452..e2c940ca8d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -446,6 +446,9 @@ dist_zshcompletion_DATA = etc/completion/zsh/_guix # Fish completion file. dist_fishcompletion_DATA = etc/completion/fish/guix.fish +# SELinux policy +dist_selinux_policy_DATA = etc/guix-daemon.cil + EXTRA_DIST = \ HACKING \ ROADMAP \ diff --git a/configure.ac b/configure.ac index f69f796484..398846f64b 100644 --- a/configure.ac +++ b/configure.ac @@ -54,6 +54,13 @@ AC_ARG_WITH([fish-completion-dir], [fishcompletiondir='${datadir}/fish/vendor_completions.d']) AC_SUBST([fishcompletiondir]) +AC_ARG_WITH([selinux-policy-dir], + AC_HELP_STRING([--with-selinux-policy-dir=DIR], + [name of the SELinux policy directory]), + [selinux_policydir="$withval"], + [selinux_policydir='${datadir}/selinux/']) +AC_SUBST([selinux_policydir]) + dnl Better be verbose. AC_MSG_CHECKING([for the store directory]) AC_MSG_RESULT([$storedir]) @@ -272,7 +279,8 @@ esac AC_CONFIG_FILES([Makefile po/guix/Makefile.in po/packages/Makefile.in - guix/config.scm]) + etc/guix-daemon.cil + guix/config.scm]) AC_CONFIG_FILES([test-env:build-aux/test-env.in], [chmod +x test-env]) AC_CONFIG_FILES([pre-inst-env:build-aux/pre-inst-env.in], diff --git a/doc/guix.texi b/doc/guix.texi index 2b27a675cd..68f6c12294 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -21,7 +21,7 @@ Copyright @copyright{} 2015, 2016 Mathieu Lirzin@* Copyright @copyright{} 2014 Pierre-Antoine Rault@* Copyright @copyright{} 2015 Taylan Ulrich Bayırlı/Kammer@* Copyright @copyright{} 2015, 2016, 2017 Leo Famulari@* -Copyright @copyright{} 2015, 2016, 2017 Ricardo Wurmus@* +Copyright @copyright{} 2015, 2016, 2017, 2018 Ricardo Wurmus@* Copyright @copyright{} 2016 Ben Woodcroft@* Copyright @copyright{} 2016, 2017 Chris Marusich@* Copyright @copyright{} 2016, 2017 Efraim Flashner@* @@ -123,6 +123,7 @@ Setting Up the Daemon * Build Environment Setup:: Preparing the isolated build environment. * Daemon Offload Setup:: Offloading builds to remote machines. +* SELinux Support:: Using an SELinux policy for the daemon. Package Management @@ -754,6 +755,7 @@ the daemon to download pre-built binaries. @menu * Build Environment Setup:: Preparing the isolated build environment. * Daemon Offload Setup:: Offloading builds to remote machines. +* SELinux Support:: Using an SELinux policy for the daemon. @end menu @node Build Environment Setup @@ -1081,6 +1083,92 @@ main node: @end example +@node SELinux Support +@subsection SELinux Support + +@cindex SELinux, daemon policy +@cindex mandatory access control, SELinux +@cindex security, guix-daemon +Guix includes an SELinux policy file at @file{etc/guix-daemon.cil} that +can be installed on a system where SELinux is enabled, in order to label +Guix files and to specify the expected behavior of the daemon. Since +GuixSD does not provide an SELinux base policy, the daemon policy cannot +be used on GuixSD. + +@subsubsection Installing the SELinux policy +@cindex SELinux, policy installation +To install the policy run this command as root: + +@example +semodule -i etc/guix-daemon.cil +@end example + +Then relabel the file system with @code{restorecon} or by a different +mechanism provided by your system. + +Once the policy is installed, the file system has been relabeled, and +the daemon has been restarted, it should be running in the +@code{guix_daemon_t} context. You can confirm this with the following +command: + +@example +ps -Zax | grep guix-daemon +@end example + +Monitor the SELinux log files as you run a command like @code{guix build +hello} to convince yourself that SELinux permits all necessary +operations. + +@subsubsection Limitations +@cindex SELinux, limitations + +This policy is not perfect. Here is a list of limitations or quirks +that should be considered when deploying the provided SELinux policy for +the Guix daemon. + +@enumerate +@item +@code{guix_daemon_socket_t} isn’t actually used. None of the socket +operations involve contexts that have anything to do with +@code{guix_daemon_socket_t}. It doesn’t hurt to have this unused label, +but it would be preferrable to define socket rules for only this label. + +@item +@code{guix gc} cannot access arbitrary links to profiles. By design, +the file label of the destination of a symlink is independent of the +file label of the link itself. Although all profiles under +$localstatedir are labelled, the links to these profiles inherit the +label of the directory they are in. For links in the user’s home +directory this will be @code{user_home_t}. But for links from the root +user’s home directory, or @file{/tmp}, or the HTTP server’s working +directory, etc, this won’t work. @code{guix gc} would be prevented from +reading and following these links. + +@item +The daemon’s feature to listen for TCP connections might no longer work. +This might require extra rules, because SELinux treats network sockets +differently from files. + +@item +Currently all files with a name matching the regular expression +@code{/gnu/store/.+-(guix-.+|profile)/bin/guix-daemon} are assigned the +label @code{guix_daemon_exec_t}; this means that @emph{any} file with +that name in any profile would be permitted to run in the +@code{guix_daemon_t} domain. This is not ideal. An attacker could +build a package that provides this executable and convince a user to +install and run it, which lifts it into the @code{guix_daemon_t} domain. +At that point SELinux could not prevent it from accessing files that are +allowed for processes in that domain. + +We could generate a much more restrictive policy at installation time, +so that only the @emph{exact} file name of the currently installed +@code{guix-daemon} executable would be labelled with +@code{guix_daemon_exec_t}, instead of using a broad regular expression. +The downside is that root would have to install or upgrade the policy at +installation time whenever the Guix package that provides the +effectively running @code{guix-daemon} executable is upgraded. +@end enumerate + @node Invoking guix-daemon @section Invoking @command{guix-daemon} @@ -6358,6 +6446,19 @@ are many packages, though, for which it lacks a method to determine whether a new upstream release is available. However, the mechanism is extensible, so feel free to get in touch with us to add a new method! +Sometimes the upstream name differs from the package name used in Guix, +and @command{guix refresh} needs a little help. Most updaters honor the +@code{upstream-name} property in package definitions, which can be used +to that effect: + +@example +(define-public network-manager + (package + (name "network-manager") + ;; @dots{} + (properties '((upstream-name . "NetworkManager"))))) +@end example + When passed @code{--update}, it modifies distribution source files to update the version numbers and source tarball hashes of those package recipes (@pxref{Defining Packages}). This is achieved by downloading @@ -10188,9 +10289,9 @@ caching; when @code{#f}, the number of processors is used. @xref{Invoking guix publish, @option{--workers}}, for more information. @item @code{ttl} (default: @code{#f}) -When it is an integer, this denotes the @dfn{time-to-live} of the -published archives. @xref{Invoking guix publish, @option{--ttl}}, for -more information. +When it is an integer, this denotes the @dfn{time-to-live} in seconds +of the published archives. @xref{Invoking guix publish, @option{--ttl}}, +for more information. @end table @end deftp diff --git a/etc/guix-daemon.cil.in b/etc/guix-daemon.cil.in new file mode 100644 index 0000000000..c0c82d8fbb --- /dev/null +++ b/etc/guix-daemon.cil.in @@ -0,0 +1,285 @@ +; -*- lisp -*- +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2018 Ricardo Wurmus +;;; +;;; 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 . + +;; This is a specification for SELinux 2.7 written in the SELinux Common +;; Intermediate Language (CIL). It refers to types that must be defined in +;; the system's base policy. + +(block guix_daemon + ;; Require existing types + (typeattributeset cil_gen_require init_t) + (typeattributeset cil_gen_require tmp_t) + (typeattributeset cil_gen_require nscd_var_run_t) + (typeattributeset cil_gen_require var_log_t) + (typeattributeset cil_gen_require domain) + + ;; Declare own types + (type guix_daemon_t) + (roletype object_r guix_daemon_t) + (type guix_daemon_conf_t) + (roletype object_r guix_daemon_conf_t) + (type guix_daemon_exec_t) + (roletype object_r guix_daemon_exec_t) + (type guix_daemon_socket_t) + (roletype object_r guix_daemon_socket_t) + (type guix_store_content_t) + (roletype object_r guix_store_content_t) + (type guix_profiles_t) + (roletype object_r guix_profiles_t) + + ;; These types are domains, thereby allowing process rules + (typeattributeset domain (guix_daemon_t guix_daemon_exec_t)) + + (level low (s0)) + + ;; When a process in init_t or guix_store_content_t spawns a + ;; guix_daemon_exec_t process, let it run in the guix_daemon_t context + (typetransition init_t guix_daemon_exec_t + process guix_daemon_t) + (typetransition guix_store_content_t guix_daemon_exec_t + process guix_daemon_t) + + ;; Permit communication with NSCD + (allow guix_daemon_t + nscd_var_run_t + (file (map read))) + (allow guix_daemon_t + nscd_var_run_t + (dir (search))) + (allow guix_daemon_t + nscd_var_run_t + (sock_file (write))) + (allow guix_daemon_t + nscd_t + (fd (use))) + (allow guix_daemon_t + nscd_t + (unix_stream_socket (connectto))) + + ;; Permit logging and temp file access + (allow guix_daemon_t + tmp_t + (lnk_file (setattr unlink))) + (allow guix_daemon_t + tmp_t + (dir (create + rmdir + add_name remove_name + open read write + getattr setattr + search))) + (allow guix_daemon_t + var_log_t + (file (create getattr open write))) + (allow guix_daemon_t + var_log_t + (dir (getattr write add_name))) + (allow guix_daemon_t + var_run_t + (lnk_file (read))) + (allow guix_daemon_t + var_run_t + (dir (search))) + + ;; Spawning processes, execute helpers + (allow guix_daemon_t + self + (process (fork))) + (allow guix_daemon_t + guix_daemon_exec_t + (file (execute execute_no_trans read open))) + + ;; TODO: unknown + (allow guix_daemon_t + root_t + (dir (mounton))) + (allow guix_daemon_t + fs_t + (filesystem (getattr))) + (allow guix_daemon_conf_t + fs_t + (filesystem (associate))) + + ;; Build isolation + (allow guix_daemon_t + guix_store_content_t + (file (mounton))) + (allow guix_store_content_t + fs_t + (filesystem (associate))) + (allow guix_daemon_t + guix_store_content_t + (dir (mounton))) + (allow guix_daemon_t + guix_daemon_t + (capability (net_admin + fsetid fowner + chown setuid setgid + dac_override dac_read_search + sys_chroot))) + (allow guix_daemon_t + fs_t + (filesystem (unmount))) + (allow guix_daemon_t + devpts_t + (filesystem (mount))) + (allow guix_daemon_t + devpts_t + (chr_file (setattr getattr))) + (allow guix_daemon_t + tmpfs_t + (filesystem (mount))) + (allow guix_daemon_t + tmpfs_t + (dir (getattr))) + (allow guix_daemon_t + proc_t + (filesystem (mount))) + (allow guix_daemon_t + null_device_t + (chr_file (getattr open read write))) + (allow guix_daemon_t + kvm_device_t + (chr_file (getattr))) + (allow guix_daemon_t + zero_device_t + (chr_file (getattr))) + (allow guix_daemon_t + urandom_device_t + (chr_file (getattr))) + (allow guix_daemon_t + random_device_t + (chr_file (getattr))) + (allow guix_daemon_t + devtty_t + (chr_file (getattr))) + + ;; Access to store items + (allow guix_daemon_t + guix_store_content_t + (dir (reparent + create + getattr setattr + search rename + add_name remove_name + open write + rmdir))) + (allow guix_daemon_t + guix_store_content_t + (file (create + lock + setattr getattr + execute execute_no_trans + link unlink + map + rename + open read write))) + (allow guix_daemon_t + guix_store_content_t + (lnk_file (create + getattr setattr + link unlink + read + rename))) + + ;; Access to configuration files and directories + (allow guix_daemon_t + guix_daemon_conf_t + (dir (search + setattr getattr + add_name remove_name + open read write))) + (allow guix_daemon_t + guix_daemon_conf_t + (file (create + lock + map + getattr setattr + unlink + open read write))) + (allow guix_daemon_t + guix_daemon_conf_t + (lnk_file (create getattr rename unlink))) + + ;; Access to profiles + (allow guix_daemon_t + guix_profiles_t + (dir (getattr setattr read open))) + (allow guix_daemon_t + guix_profiles_t + (lnk_file (read getattr))) + + ;; Access to profile links in the home directory + ;; TODO: allow access to profile links *anywhere* on the filesystem + (allow guix_daemon_t + user_home_t + (lnk_file (read getattr))) + (allow guix_daemon_t + user_home_t + (dir (search))) + + ;; Socket operations + (allow guix_daemon_t + init_t + (fd (use))) + (allow guix_daemon_t + init_t + (unix_stream_socket (write))) + (allow guix_daemon_t + guix_daemon_conf_t + (unix_stream_socket (listen))) + (allow guix_daemon_t + guix_daemon_conf_t + (sock_file (create unlink))) + (allow guix_daemon_t + self + (unix_stream_socket (create + read write + connect bind accept + getopt setopt))) + (allow guix_daemon_t + self + (fifo_file (write read))) + (allow guix_daemon_t + self + (udp_socket (ioctl create))) + + ;; Label file system + (filecon "@guix_sysconfdir@/guix(/.*)?" + any (system_u object_r guix_daemon_conf_t (low low))) + (filecon "@guix_localstatedir@/guix(/.*)?" + any (system_u object_r guix_daemon_conf_t (low low))) + (filecon "@guix_localstatedir@/guix/profiles(/.*)?" + any (system_u object_r guix_profiles_t (low low))) + (filecon "/gnu" + dir (unconfined_u object_r guix_store_content_t (low low))) + (filecon "@storedir@(/.+)?" + any (unconfined_u object_r guix_store_content_t (low low))) + (filecon "@storedir@/[^/]+/.+" + any (unconfined_u object_r guix_store_content_t (low low))) + (filecon "@prefix@/bin/guix-daemon" + file (system_u object_r guix_daemon_exec_t (low low))) + (filecon "@storedir@/.+-(guix-.+|profile)/bin/guix-daemon" + file (system_u object_r guix_daemon_exec_t (low low))) + (filecon "@storedir@/.+-(guix-.+|profile)/libexec/guix-authenticate" + file (system_u object_r guix_daemon_exec_t (low low))) + (filecon "@storedir@/.+-(guix-.+|profile)/libexec/guix/(.*)?" + any (system_u object_r guix_daemon_exec_t (low low))) + (filecon "@guix_localstatedir@/guix/daemon-socket/socket" + any (system_u object_r guix_daemon_socket_t (low low)))) diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm index c9de4f4b90..18d87260a9 100644 --- a/gnu/build/linux-boot.scm +++ b/gnu/build/linux-boot.scm @@ -42,7 +42,6 @@ (define-module (gnu build linux-boot) make-static-device-nodes configure-qemu-networking - bind-mount device-number boot-system)) diff --git a/gnu/local.mk b/gnu/local.mk index 3da59ec819..f20d1044da 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -9,7 +9,7 @@ # Copyright © 2016 Adonay "adfeno" Felipe Nogueira # Copyright © 2016, 2017 Ricardo Wurmus # Copyright © 2016 Ben Woodcroft -# Copyright © 2016, 2017 Alex Vong +# Copyright © 2016, 2017, 2018 Alex Vong # Copyright © 2016, 2017 Efraim Flashner # Copyright © 2016, 2017 Jan Nieuwenhuizen # Copyright © 2017 Tobias Geerinckx-Rice @@ -720,6 +720,8 @@ dist_patch_DATA = \ %D%/packages/patches/gobject-introspection-cc.patch \ %D%/packages/patches/gobject-introspection-girepository.patch \ %D%/packages/patches/gpm-glibc-2.26.patch \ + %D%/packages/patches/gpsbabel-minizip.patch \ + %D%/packages/patches/gpsbabel-qstring.patch \ %D%/packages/patches/graphite2-ffloat-store.patch \ %D%/packages/patches/grep-timing-sensitive-test.patch \ %D%/packages/patches/groff-source-date-epoch.patch \ @@ -758,6 +760,7 @@ dist_patch_DATA = \ %D%/packages/patches/higan-remove-march-native-flag.patch \ %D%/packages/patches/hubbub-sort-entities.patch \ %D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \ + %D%/packages/patches/hwloc-tests-without-sysfs.patch \ %D%/packages/patches/hydra-disable-darcs-test.patch \ %D%/packages/patches/icecat-avoid-bundled-libraries.patch \ %D%/packages/patches/icecat-bug-1348660-pt5.patch \ @@ -870,7 +873,6 @@ dist_patch_DATA = \ %D%/packages/patches/lua51-pkgconfig.patch \ %D%/packages/patches/lua-liblua-so.patch \ %D%/packages/patches/luajit-no_ldconfig.patch \ - %D%/packages/patches/luajit-symlinks.patch \ %D%/packages/patches/luit-posix.patch \ %D%/packages/patches/luminance-hdr-qt-printer.patch \ %D%/packages/patches/lvm2-static-link.patch \ @@ -890,6 +892,9 @@ dist_patch_DATA = \ %D%/packages/patches/mhash-keygen-test-segfault.patch \ %D%/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch \ %D%/packages/patches/mpc123-initialize-ao.patch \ + %D%/packages/patches/mpv-CVE-2018-6360-1.patch \ + %D%/packages/patches/mpv-CVE-2018-6360-2.patch \ + %D%/packages/patches/mpv-CVE-2018-6360-3.patch \ %D%/packages/patches/module-init-tools-moduledir.patch \ %D%/packages/patches/mongodb-support-unknown-linux-distributions.patch \ %D%/packages/patches/mozjs17-aarch64-support.patch \ @@ -900,6 +905,7 @@ dist_patch_DATA = \ %D%/packages/patches/mozjs38-version-detection.patch \ %D%/packages/patches/mumps-build-parallelism.patch \ %D%/packages/patches/mupdf-build-with-latest-openjpeg.patch \ + %D%/packages/patches/mupdf-CVE-2017-17858.patch \ %D%/packages/patches/mupen64plus-ui-console-notice.patch \ %D%/packages/patches/mutt-store-references.patch \ %D%/packages/patches/net-tools-bitrot.patch \ @@ -937,7 +943,8 @@ dist_patch_DATA = \ %D%/packages/patches/osip-CVE-2017-7853.patch \ %D%/packages/patches/ots-no-include-missing-file.patch \ %D%/packages/patches/owncloud-disable-updatecheck.patch \ - %D%/packages/patches/p7zip-CVE-2016-9296.patch \ + %D%/packages/patches/p7zip-CVE-2016-9296.patch \ + %D%/packages/patches/p7zip-CVE-2017-17969.patch \ %D%/packages/patches/p7zip-remove-unused-code.patch \ %D%/packages/patches/patchelf-page-size.patch \ %D%/packages/patches/patchelf-rework-for-arm.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 7c7c457f50..35e6b202b0 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -19,6 +19,7 @@ ;;; Copyright © 2017 Ethan R. Jones ;;; Copyright © 2017 Christopher Allan Webber ;;; Copyright © 2017 Marius Bakke +;;; Copyright © 2018 Arun Isaac ;;; ;;; This file is part of GNU Guix. ;;; @@ -256,18 +257,20 @@ (define-public dfc (define-public htop (package (name "htop") - (version "2.0.2") + (version "2.1.0") (source (origin (method url-fetch) (uri (string-append "http://hisham.hm/htop/releases/" version "/htop-" version ".tar.gz")) (sha256 (base32 - "11zlwadm6dpkrlfvf3z3xll26yyffa7qrxd1w72y1kl0rgffk6qp")))) + "0j07z0xm2gj1vzvbgh4323k4db9mr7drd7gw95mmpqi61ncvwq1j")))) (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses))) - (home-page "http://htop.sourceforge.net/") + (native-inputs + `(("python" ,python-minimal-wrapper))) ; for scripts/MakeHeader.py + (home-page "https://hisham.hm/htop/") (synopsis "Interactive process viewer") (description "This is htop, an interactive process viewer. It is a text-mode @@ -520,6 +523,50 @@ (define-public netcat would need and has several interesting built-in capabilities.") (license license:gpl2+))) +(define-public sipcalc + (package + (name "sipcalc") + (version "1.1.6") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.routemeister.net/projects" + "/sipcalc/files/sipcalc" "-" version ".tar.gz")) + (sha256 + (base32 + "0mv3wndj4z2bsshh2k8d5sy3j8wxzgf8mzmmkvj1k8gpcz37dm6g")))) + (build-system gnu-build-system) + (home-page "http://www.routemeister.net/projects/sipcalc/") + (synopsis "Command-line IP subnet calculator") + (description + "Sipcalc is an advanced command-line IP subnet calculator. It can take +multiple forms of input (IPv4/IPv6/interface/hostname) and output a multitude +of information about a given subnet. + +Features include: + +@itemize @bullet +@item IPv4 +@itemize +@item Retrieving of address information from interfaces. +@item Classfull and CIDR output. +@item Multiple address and netmask input and output formats (dotted quad, hex, +number of bits). +@item Output of broadcast address, network class, Cisco wildcard, +hosts/range, network range. +@item The ability to split a network based on a smaller netmask, now also with +recursive runs on the generated subnets. (also IPv6) +@end itemize +@item IPv6 +@itemize +@item Compressed and expanded input and output addresses. +@item Standard IPv6 network output. +@item v4 in v6 output. +@item Reverse DNS address generation. +@end itemize +@end itemize\n") + (license license:bsd-3))) + (define-public alive (package (name "alive") @@ -1340,7 +1387,7 @@ (define-public direvent (define-public libcap-ng (package (name "libcap-ng") - (version "0.7.4") + (version "0.7.9") (source (origin (method url-fetch) (uri (string-append @@ -1348,9 +1395,11 @@ (define-public libcap-ng version ".tar.gz")) (sha256 (base32 - "0ssvnh4cvhya0c1j6k6192zvqcq7nc0x01fb5nwhr0prfqr0i8j8")))) + "0a0k484kwv0zilry2mbl9k56cnpdhsjxdxin17jas6kkyfy345aa")))) (build-system gnu-build-system) - (inputs `(("python" ,python))) + (arguments + `(#:configure-flags + (list "--without-python"))) (home-page "https://people.redhat.com/sgrubb/libcap-ng/") (synopsis "Library for more easily working with POSIX capabilities") (description diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index bd3d139efe..eb11d6cc4e 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -280,14 +280,14 @@ (define-public ardour (define-public audacity (package (name "audacity") - (version "2.2.0") + (version "2.2.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/audacity/audacity/archive" "/Audacity-" version ".tar.gz")) (sha256 - (base32 "09xpr4bjnainz1xmc35v3qg3dadjr9wv8bmn1p4y91aqyihnhjry")) + (base32 "1n05r8b4rnf9fas0py0is8cm97s3h65dgvqkk040aym5d1x6wd7z")) (patches (search-patches "audacity-build-with-system-portaudio.patch")) (modules '((guix build utils))) (snippet @@ -1646,6 +1646,33 @@ (define-public liblo implementation of the Open Sound Control (OSC) protocol.") (license license:lgpl2.1+))) +(define-public python-pyaudio + (package + (name "python-pyaudio") + (version "0.2.11") + (source + (origin + (method url-fetch) + (uri + (string-append + "https://pypi.python.org/packages/ab/42/" + "b4f04721c5c5bfc196ce156b3c768998ef8c0ae3654ed29ea5020c749a6b" + "/PyAudio-" version ".tar.gz")) + (sha256 + (base32 + "0x7vdsigm7xgvyg3shd3lj113m8zqj2pxmrgdyj66kmnw0qdxgwk")))) + (build-system python-build-system) + (inputs + `(("portaudio" ,portaudio))) + (home-page "https://people.csail.mit.edu/hubert/pyaudio/") + (synopsis "Bindings for PortAudio v19") + (description "This package provides bindings for PortAudio v19, the +cross-platform audio input/output stream library.") + (license license:expat))) + +(define-public python2-pyaudio + (package-with-python2 python-pyaudio)) + (define-public python-pyliblo (package (name "python-pyliblo") diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm index a2d26c978d..93723d1a01 100644 --- a/gnu/packages/code.scm +++ b/gnu/packages/code.scm @@ -393,7 +393,7 @@ (define-public lcov (define-public rtags (package (name "rtags") - (version "2.16") + (version "2.18") (home-page "https://github.com/Andersbakken/rtags") (source (origin @@ -414,7 +414,7 @@ (define-public rtags (string-append "#include ")))))) (sha256 (base32 - "17rkci3mmiw93qc32b9x76pg57b0lx80avr6wnmh190jx8n3v3wy")))) + "0scjbp1z201q8njvrxqz7lk2m9b6k2rxd5q1shrng6532r7ndif2")))) (build-system cmake-build-system) (arguments '(#:configure-flags diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index f9f6968b73..cd98d525e5 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -1386,6 +1386,7 @@ (define-public p7zip (delete-file-recursively "CPP/7zip/Compress/Rar") #t)) (patches (search-patches "p7zip-CVE-2016-9296.patch" + "p7zip-CVE-2017-17969.patch" "p7zip-remove-unused-code.patch")))) (build-system gnu-build-system) (arguments @@ -1632,7 +1633,7 @@ (define-public zstd speed.") (license (list license:bsd-3 ; the main top-level LICENSE file license:bsd-2 ; many files explicitly state 2-Clause - license:gpl2 ; the mail top-level COPYING file + license:gpl2 ; the main top-level COPYING file license:gpl3+ ; tests/gzip/*.sh license:expat ; lib/dictBuilder/divsufsort.[ch] license:public-domain ; zlibWrapper/examples/fitblk* @@ -1955,14 +1956,14 @@ (define-public java-tukaani-xz (define-public lunzip (package (name "lunzip") - (version "1.9") + (version "1.10") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/lzip/" name "/" name "-" version ".tar.gz")) (sha256 - (base32 "1ax3d9cp66z1qb9q7lfzg5bpx9630xrxgq9a5sw569wm0qqgpg2q")))) + (base32 "1iw59br6nsxs7l1p875h8w3vxwr04xfhg5zyal64crvamhxkj5kl")))) (build-system gnu-build-system) (arguments `(#:configure-flags diff --git a/gnu/packages/conky.scm b/gnu/packages/conky.scm index 2301bfbdf1..22a0427b9a 100644 --- a/gnu/packages/conky.scm +++ b/gnu/packages/conky.scm @@ -34,7 +34,7 @@ (define-module (gnu packages conky) (define-public conky (package (name "conky") - (version "1.10.7") + (version "1.10.8") (source (origin (method url-fetch) @@ -42,7 +42,7 @@ (define-public conky version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1b06rigfjxnaidkabkyf8mdh9k3jm11nj547lb5liwi2ql4rdfr3")))) + (base32 "0mw8xbnxr0a7yq2smzi2nln2b5n0q571vdrq6mhvs5n84xd6bg9f")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; there are no tests diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index cb39772ae5..95e0faf2a0 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus +;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus ;;; Copyright © 2017 Roel Janssen ;;; Copyright © 2017 Tobias Geerinckx-Rice ;;; @@ -1861,3 +1861,214 @@ (define-public r-argparser Rscript front-end and facilitates turning an R script into an executable script.") (license license:gpl3+))) + +(define-public r-debugme + (package + (name "r-debugme") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "debugme" version)) + (sha256 + (base32 + "1c9sg55zvf10h8198jdnpamm6f66lzw3c3jnmdp9ls6na0j0xbjd")))) + (build-system r-build-system) + (propagated-inputs `(("r-crayon" ,r-crayon))) + (home-page "https://github.com/r-lib/debugme#readme") + (synopsis "Debug R packages") + (description + "This package allows the user to specify debug messages as special string +constants, and control debugging of packages via environment variables.") + (license license:expat))) + +(define-public r-processx + (package + (name "r-processx") + (version "2.0.0.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "processx" version)) + (sha256 + (base32 + "0yw23lp9xjvbpswzghkmjiayw7p19hbvmgv58k3i6b8g5nav4qcg")))) + (build-system r-build-system) + (propagated-inputs + `(("r-assertthat" ,r-assertthat) + ("r-crayon" ,r-crayon) + ("r-debugme" ,r-debugme) + ("r-r6" ,r-r6))) + (home-page "https://github.com/r-lib/processx3") + (synopsis "Execute and control system processes") + (description + "This package provides portable tools to run system processes in the +background. It can check if a background process is running; wait on a +background process to finish; get the exit status of finished processes; kill +background processes and their children; restart processes. It can read the +standard output and error of the processes, using non-blocking connections. +@code{processx} can poll a process for standard output or error, with a +timeout. It can also poll several processes at once.") + (license license:expat))) + +(define-public r-tsp + (package + (name "r-tsp") + (version "1.1-5") + (source + (origin + (method url-fetch) + (uri (cran-uri "TSP" version)) + (sha256 + (base32 + "03xxfr5kk4zhzpb1q1pwncdp0dhchm9b48wzhvvxn2dxf3mnby2w")))) + (properties `((upstream-name . "TSP"))) + (build-system r-build-system) + (propagated-inputs `(("r-foreach" ,r-foreach))) + (home-page "https://cran.r-project.org/web/packages/TSP/") + (synopsis "Traveling salesperson problem (TSP)") + (description "This package provides basic infrastructure and some +algorithms for the @dfn{traveling salesperson problem}(TSP) (also known as the +traveling salesman problem).") + (license license:gpl3))) + +(define-public r-qap + (package + (name "r-qap") + (version "0.1-1") + (source + (origin + (method url-fetch) + (uri (cran-uri "qap" version)) + (sha256 + (base32 + "0d2d1ni1camixyi45lfy00f4pn3p063k7bsi8gj5scp6n15mdgb0")))) + (build-system r-build-system) + (native-inputs `(("gfortran" ,gfortran))) + (home-page "http://cran.r-project.org/web/packages/qap/") + (synopsis "Heuristics for the quadratic assignment problem (QAP)") + (description "This package implements heuristics for the @dfn{quadratic +assignment problem} (QAP). Currently only a simulated annealing heuristic is +available.") + (license license:gpl3))) + +(define-public r-gclus + (package + (name "r-gclus") + (version "1.3.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "gclus" version)) + (sha256 + (base32 + "02ba6zj9bjwrzykamjp40ajynx9xjx9h2i85n0ym0r5lcki4x6fn")))) + (build-system r-build-system) + (propagated-inputs `(("r-cluster" ,r-cluster))) + (home-page "http://cran.r-project.org/web/packages/gclus/") + (synopsis "Clustering graphics") + (description "This package orders panels in scatterplot matrices and +parallel coordinate displays by some merit index. It contains various indices +of merit, ordering functions, and enhanced versions of @code{pairs} and +@code{parcoord} which color panels according to their merit level.") + (license license:gpl2+))) + +(define-public r-webshot + (package + (name "r-webshot") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "webshot" version)) + (sha256 + (base32 + "07r71zzmggp4jf92x4ws4wg6v1x98vaj01lsar85bnb30n5vx8gh")))) + (build-system r-build-system) + (propagated-inputs + `(("r-jsonlite" ,r-jsonlite) + ("r-magrittr" ,r-magrittr) + ("r-processx" ,r-processx) + ("r-withr" ,r-withr))) + (home-page "https://github.com/wch/webshot/") + (synopsis "Take screenshots of web pages") + (description + "Webshot makes it easy to take screenshots of web pages from within R. +It can also run Shiny applications locally and take screenshots of the +application; and it can render and screenshot static as well as interactive R +Markdown documents.") + (license license:gpl2))) + +(define-public r-seriation + (package + (name "r-seriation") + (version "1.2-3") + (source + (origin + (method url-fetch) + (uri (cran-uri "seriation" version)) + (sha256 + (base32 + "1q6hw4hjw224b4y0dc0j630v2pgj6sn455nwkilb70w8k31hpk92")))) + (build-system r-build-system) + (propagated-inputs + `(("r-cluster" ,r-cluster) + ("r-colorspace" ,r-colorspace) + ("r-dendextend" ,r-dendextend) + ("r-gclus" ,r-gclus) + ("r-gplots" ,r-gplots) + ("r-mass" ,r-mass) + ("r-qap" ,r-qap) + ("r-registry" ,r-registry) + ("r-tsp" ,r-tsp))) + (native-inputs `(("gfortran" ,gfortran))) + (home-page "http://s2.smu.edu/IDA/seriation/") + (synopsis "Infrastructure for ordering objects using seriation") + (description + "This package provides infrastructure for seriation with an +implementation of several seriation/sequencing techniques to reorder matrices, +dissimilarity matrices, and dendrograms. It also provides (optimally) +reordered heatmaps, color images and clustering visualizations like +dissimilarity plots, and visual assessment of cluster tendency plots (VAT and +iVAT).") + (license license:gpl3))) + +(define-public r-heatmaply + (package + (name "r-heatmaply") + (version "0.14.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "heatmaply" version)) + (sha256 + (base32 + "03p2caclhfgqgpx3wwck5h06jy3mxgs05gjmwkb7hmwghkjh41jc")))) + (build-system r-build-system) + (propagated-inputs + `(("r-assertthat" ,r-assertthat) + ("r-colorspace" ,r-colorspace) + ("r-dendextend" ,r-dendextend) + ("r-ggplot2" ,r-ggplot2) + ("r-gplots" ,r-gplots) + ("r-htmlwidgets" ,r-htmlwidgets) + ("r-magrittr" ,r-magrittr) + ("r-plotly" ,r-plotly) + ("r-rcolorbrewer" ,r-rcolorbrewer) + ("r-reshape2" ,r-reshape2) + ("r-scales" ,r-scales) + ("r-seriation" ,r-seriation) + ("r-viridis" ,r-viridis) + ("r-webshot" ,r-webshot))) + (home-page "https://cran.r-project.org/package=heatmaply") + (synopsis "Interactive cluster heat maps using plotly") + (description "Heatmaps are used in many fields for visualizing +observations, correlations, missing values patterns, and more. Interactive +heatmaps allow the inspection of specific value by hovering the mouse over a +cell, as well as zooming into a region of the heatmap by dragging a rectangle +around the relevant area. This work is based on the @code{ggplot2} and +@code{plotly.js} engine. It produces similar heatmaps as @code{heatmap.2} or +@code{d3heatmap}, with the advantage of speed, the ability to zoom from the +dendrogram panes, and the placing of factor variables in the sides of the +heatmap.") + (license (list license:gpl2 license:gpl3)))) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 8dbca2b8d1..634b3c65ad 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -699,14 +699,14 @@ (define-public mariadb (define-public postgresql (package (name "postgresql") - (version "10.1") + (version "10.2") (source (origin (method url-fetch) (uri (string-append "https://ftp.postgresql.org/pub/source/v" version "/postgresql-" version ".tar.bz2")) (sha256 (base32 - "04z7lm4h94625vbncwv98svycqr942n3q47ailqaczkszqjlxjrw")))) + "1bav2iyi93h866skrrlqlvsp4sfv1sfww1s305zpzffxcadh0cpy")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--with-uuid=e2fs") diff --git a/gnu/packages/dav.scm b/gnu/packages/dav.scm index 3513116f24..0c6c62d5a3 100644 --- a/gnu/packages/dav.scm +++ b/gnu/packages/dav.scm @@ -57,13 +57,13 @@ (define-public radicale (define-public vdirsyncer (package (name "vdirsyncer") - (version "0.16.3") + (version "0.16.4") (source (origin (method url-fetch) (uri (pypi-uri name version)) (sha256 (base32 - "0dpwbfi97ksijqng191659m8k0v215y8ld95w8gb126m4m96qpzw")))) + "03wva48bgv1ad3df6plc9b8xxh6k8bcaxrhlzwh81c9mzn5bspzv")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm index c870084746..eebd38243b 100644 --- a/gnu/packages/documentation.scm +++ b/gnu/packages/documentation.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2016 Thomas Danckaert ;;; Copyright © 2017 Kei Kebreau ;;; Copyright © 2017 Efraim Flashner +;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,6 +30,7 @@ (define-module (gnu packages documentation) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) #:use-module (gnu packages) + #:use-module (gnu packages autotools) #:use-module (gnu packages bash) #:use-module (gnu packages python) #:use-module (gnu packages bison) @@ -43,19 +45,23 @@ (define-module (gnu packages documentation) (define-public asciidoc (package (name "asciidoc") - (version "8.6.9") + (version "8.6.10") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/asciidoc/asciidoc/" - version "/asciidoc-" version ".tar.gz")) + (uri (string-append "https://github.com/asciidoc/asciidoc/" + "archive/" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1w71nk527lq504njmaf0vzr93pgahkgzzxzglrq6bay8cw2rvnvq")))) + "10xrl1iwyvs8aqm0vzkvs3dnsn93wyk942kk4ppyl6w9imbzhlly")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no 'check' target #:phases (modify-phases %standard-phases + (add-after 'unpack 'bootstrap + (lambda _ + (invoke "autoconf"))) ;; Some XML-related binaries are required for asciidoc's proper usage. ;; Without these, asciidoc fails when parsing XML documents, either ;; reporting a missing "xmllint" binary or, when passed the @@ -94,12 +100,14 @@ (define-public asciidoc (string-append (assoc-ref inputs "docbook-xml") "/xml/dtd/docbook/docbookx.dtd"))) #t))))) + (native-inputs + `(("autoconf" ,autoconf))) (inputs `(("python" ,python-2) ("docbook-xml" ,docbook-xml) ("docbook-xsl" ,docbook-xsl) ("libxml2" ,libxml2) ("libxslt" ,libxslt))) - (home-page "http://www.methods.co.nz/asciidoc/") + (home-page "http://asciidoc.org/") (synopsis "Text-based document generation system") (description "AsciiDoc is a text document format for writing notes, documentation, diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 62cc916773..5478376bf0 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -3166,6 +3166,128 @@ (define-public emacs-perspective ;; the Expat license. (license license:gpl3+))) +(define-public emacs-test-simple + (package + (name "emacs-test-simple") + (version "1.3.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/test-simple-" + version ".el")) + (sha256 + (base32 + "1yd61jc9ds95a5n09052kwc5gasy57g4lxr0jsff040brlyi9czz")))) + (build-system emacs-build-system) + (home-page "https://github.com/rocky/emacs-test-simple") + (synopsis "Simple unit test framework for Emacs Lisp") + (description + "Test Simple is a simple unit test framework for Emacs Lisp. It +alleviates the need for context macros, enclosing specifications or required +test tags. It supports both interactive and non-interactive use.") + (license license:gpl3+))) + +(define-public emacs-load-relative + (package + (name "emacs-load-relative") + (version "1.3") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/load-relative-" + version ".el")) + (sha256 + (base32 + "1hfxb2436jdsi9wfmsv47lkkpa5galjf5q81bqabbsv79rv59dps")))) + (build-system emacs-build-system) + (home-page "http://github.com/rocky/emacs-load-relative") + (synopsis "Emacs Lisp relative file loading related functions") + (description + "Provides functions which facilitate writing multi-file Emacs packages +and running from the source tree without having to \"install\" code or fiddle +with @{load-path}. + +The main function, @code{load-relative}, loads an Emacs Lisp file relative to +another (presumably currently running) Emacs Lisp file.") + (license license:gpl3+))) + +(define-public emacs-loc-changes + (package + (name "emacs-loc-changes") + (version "1.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/loc-changes-" + version ".el")) + (sha256 + (base32 + "1x8fn8vqasayf1rb8a6nma9n6nbvkx60krmiahyb05vl5rrsw6r3")))) + (build-system emacs-build-system) + (home-page "https://github.com/rocky/emacs-loc-changes") + (synopsis "Keeps track of positions even after buffer changes") + (description + "This Emacs package provides a mean to track important buffer positions +after buffer changes.") + (license license:gpl3+))) + +(define-public emacs-realgud + (package + (name "emacs-realgud") + (version "1.4.4") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/realgud-" + version ".tar")) + (sha256 + (base32 + "1nc8km339ip90h1j55ahfga03v7x7rh4iycmw6yrxyzir68vwn7c")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-autogen-script + (lambda _ + (substitute* "autogen.sh" + (("./configure") "sh configure")))) + (add-after 'fix-autogen-script 'autogen + (lambda _ + (setenv "CONFIG_SHELL" "sh") + (invoke "sh" "autogen.sh"))) + (add-after 'fix-autogen-script 'set-home + (lambda _ + (setenv "HOME" (getenv "TMPDIR")))) + (add-before 'patch-el-files 'remove-realgud-pkg.el + (lambda _ + ;; XXX: This file is auto-generated at some point and causes + ;; substitute* to crash during the `patch-el-files' phase with: + ;; ERROR: In procedure stat: No such file or directory: + ;; "./realgud-pkg.el" + (delete-file "./realgud-pkg.el") + ;; FIXME: `patch-el-files' crashes on this file with error: + ;; unable to locate "bashdb". + (delete-file "./test/test-regexp-bashdb.el")))) + #:include (cons* ".*\\.el$" %default-include))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("emacs-test-simple" ,emacs-test-simple))) + (propagated-inputs + `(("emacs-load-relative" ,emacs-load-relative) + ("emacs-loc-changes" ,emacs-loc-changes))) + (home-page "https://github.com/realgud/realgud/") + (synopsis + "Modular front-end for interacting with external debuggers") + (description + "RealGUD is a modular, extensible GNU Emacs front-end for interacting +with external debuggers. It integrates various debuggers such as gdb, pdb, +ipdb, jdb, lldb, bashdb, zshdb, etc. and allows to visually step code in the +sources. Unlike GUD, it also supports running multiple debug sessions in +parallel.") + (license license:gpl3+))) + (define-public emacs-request (package (name "emacs-request") @@ -4086,7 +4208,7 @@ (define-public emacs-helm-projectile (license license:gpl3+))) (define-public emacs-helm-make - (let ((commit "21c1bfa01b16b0d656f2b8a0dbb5bc8d47a7641b") + (let ((commit "feae8df22bc4b20705ea08ac9adfc2b43bb348d0") (revision "1")) (package (name "emacs-helm-make") @@ -4100,7 +4222,7 @@ (define-public emacs-helm-make (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "11vzrp63zdc67fg4d0y1alk8z9019sqslh2bd7ispk37s86dlbfw")))) + "1y2v77mmd1bfkkz51cnk1l0dg3lvvxc39wlamnm7wjns66dbvlam")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-helm" ,emacs-helm) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 92a93d5a3d..bb8a2cb34d 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -21,7 +21,7 @@ ;;; Copyright © 2016 Alex Griffin ;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016 David Craven -;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice +;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2017 Thomas Danckaert ;;; Copyright © 2017 Hartmut Goebel ;;; Copyright © 2017, 2018 nee @@ -4422,7 +4422,7 @@ (define-public gexiv2 (define-public shotwell (package (name "shotwell") - (version "0.27.1") + (version "0.27.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -4430,7 +4430,7 @@ (define-public shotwell name "-" version ".tar.xz")) (sha256 (base32 - "1jav7qv0s1v6wvd7x2ri85hjqnbswq883pnd228qhd6bhjbryp89")))) + "0g2vphhpxrljpy9sryfsgaayix807i1i9plj9bay72dk0zphqab2")))) (build-system glib-or-gtk-build-system) (propagated-inputs `(("dconf" ,dconf))) diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm index 7aa429f63d..29bfc8199f 100644 --- a/gnu/packages/gnunet.scm +++ b/gnu/packages/gnunet.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2016 Ricardo Wurmus ;;; Copyright © 2016 Mark H Weaver ;;; Copyright © 2016, 2017, 2018 ng0 +;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. ;;; @@ -144,14 +145,14 @@ (define-public libextractor (define-public libmicrohttpd (package (name "libmicrohttpd") - (version "0.9.58") + (version "0.9.59") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-" version ".tar.gz")) (sha256 (base32 - "1wq17qvizis7bsyvyw1gnfycvivssncngziddnyrbzv2dhvy24bs")))) + "0g4jgnv43yddr9yxrqg11632rip0lg5c53gmy5wy3c0i1dywv74v")))) (build-system gnu-build-system) (inputs `(("curl" ,curl) diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm index 732c073b56..211a33ef89 100644 --- a/gnu/packages/gps.scm +++ b/gnu/packages/gps.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2014, 2015 Ludovic Courtès ;;; Copyright © 2016, 2017 Efraim Flashner ;;; Copyright © 2018 Tobias Geerinckx-Rice +;;; Copyright © 2018 Mathieu Othacehe ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,6 +25,7 @@ (define-module (gnu packages gps) #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages) #:use-module (gnu packages base) #:use-module (gnu packages pkg-config) #:use-module (gnu packages compression) @@ -37,7 +39,7 @@ (define-module (gnu packages gps) (define-public gpsbabel (package (name "gpsbabel") - (version "1.5.2") + (version "1.5.4") (source (origin (method url-fetch) ;; XXX: Downloads from gpsbabel.org are hidden behind a POST, so @@ -47,17 +49,21 @@ (define-public gpsbabel version ".orig.tar.gz")) (sha256 (base32 - "0xf7wmy2m29g2lm8lqc74yf8rf7sxfl3cfwbk7dpf0yf42pb0b6w")) + "19hykxhyl567gf8qcrl33qhv95w0g4vxw9r3h9b8d8plx9bnaf8l")) + (patches (search-patches + "gpsbabel-minizip.patch" + ;; XXX: Remove this patch on the next release. + "gpsbabel-qstring.patch")) (modules '((guix build utils))) (snippet '(begin ;; Delete files under GPL-compatible licences but never used ;; on GNU systems, rather than bloating the LICENSE field. - (with-directory-excursion "gpsbabel" - (delete-file "gui/serial_mac.cc") ; Apple MIT - (delete-file "mingw/include/ddk/hidsdi.h")) ; public domain + (delete-file "gui/serial_mac.cc") ; Apple MIT + (delete-file "mingw/include/ddk/hidsdi.h") ; public domain #t)))) (build-system gnu-build-system) + ;; TODO: "make doc" requires Docbook & co. (arguments `(#:configure-flags '("--with-zlib=system" @@ -65,13 +71,6 @@ (define-public gpsbabel ;; recent binutils: ;; https://codereview.qt-project.org/#/c/111787/ "CXXFLAGS=-std=gnu++11 -fPIC") - #:phases - (modify-phases %standard-phases - (add-before 'configure 'pre-configure - (lambda _ - (chdir "gpsbabel")))) - ;; TODO: "make doc" requires Docbook & co. - ;; On i686, 'raymarine.test' fails because of a rounding error: ;; . As a workaround, disable tests ;; on these platforms. @@ -171,3 +170,51 @@ (define-public gama such as underground. It features the ability to adjust in local Cartesian coordinates as well as partial support for adjustments in global coordinate systems.") (license license:gpl3+))) + +(define-public gpxsee + (package + (name "gpxsee") + (version "4.19") + (source (origin + (method url-fetch) + (uri + (string-append "https://github.com/tumic0/GPXSee/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "00j0gjldw1kn3i45dppld1pz8r4s1g7lw89k7gfvvqbjjyjih1wg")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'configure + ;; Use lrelease to convert TS translation files into QM files. + (lambda* (#:key inputs outputs #:allow-other-keys) + (for-each (lambda (file) + (system* "lrelease" file)) + (find-files "lang" "\\.ts")) + (substitute* "src/config.h" + (("/usr/share/gpxsee") + (string-append + (assoc-ref outputs "out") "/share/gpxsee"))) + (invoke "qmake" + (string-append "PREFIX=" + (assoc-ref outputs "out"))))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (share (string-append out "/share/gpxsee/"))) + (install-file "GPXSee" (string-append out "/bin/GPXSee")) + (install-file "pkg/maps.txt" share)) + #t))))) + (inputs + `(("qtbase" ,qtbase))) + (native-inputs + `(("qttools" ,qttools))) + (home-page "http://www.gpxsee.org") + (synopsis "GPX file viewer and analyzer") + (description + "GPXSee is a Qt-based GPS log file viewer and analyzer that supports GPX, +TCX, KML, FIT, IGC and NMEA files.") + (license license:gpl3))) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 9f1f633444..3283a675a0 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -1188,10 +1188,11 @@ (define-public guile2.2-gdbm-ffi (deprecated-package "guile2.2-gdbm-ffi" guile-gdbm-ffi)) (define-public guile-sqlite3 - (let ((commit "607721fe1174a299e45d457acacf94eefb964071")) + (let ((commit "21f35ca87517194d8fcc7ac166b5e77f5f5348b0") + (revision "2")) (package (name "guile-sqlite3") - (version (string-append "0.0-1." (string-take commit 7))) + (version (git-version "0.0" revision commit)) ;; XXX: This used to be available read-only at ;; but it @@ -1204,7 +1205,7 @@ (define-public guile-sqlite3 (commit commit))) (sha256 (base32 - "09gaffhh5rawz5kdmqx2ahvj1ngvxddp469r18bmjz3sz8p0slj2")) + "0m33di5gz0a6n6q380v1y8apm5hrynzyl4ri8ar4j202hwjqi1y2")) (file-name (string-append name "-" version "-checkout")) (modules '((guix build utils))) (snippet diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm index f6df2817d3..41bbc66dd2 100644 --- a/gnu/packages/julia.scm +++ b/gnu/packages/julia.scm @@ -146,6 +146,12 @@ (define-public julia (lambda* (#:key inputs #:allow-other-keys) (use-modules (ice-9 match)) (substitute* "src/runtime_ccall.cpp" + ;; Patch out invocations of '/sbin/ldconfig' to avoid getting + ;; error messages about missing '/sbin/ldconfig' on GuixSD. + (("popen\\(.*ldconfig.*\\);") + "NULL;\n") + + ;; Populate 'sonameMap'. (("jl_read_sonames.*;") (string-join (map (match-lambda @@ -228,6 +234,12 @@ (define-public julia #t)) (add-before 'check 'disable-broken-tests (lambda _ + ;; Adjust expected error messages to match what current libgit2 + ;; provides. + (substitute* "test/libgit2.jl" + (("Invalid Content-Type") "invalid Content-Type") + (("Failed to resolve path") "failed to resolve path")) + (substitute* "test/choosetests.jl" ;; These tests fail, probably because some of the input ;; binaries have been stripped and thus backtraces don't look diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 0fae825e9b..b0cefeab75 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -382,8 +382,8 @@ (define %linux-compatible-systems '("x86_64-linux" "i686-linux" "armhf-linux")) ;; supports qemu "virt" machine and possibly a large number of ARM boards. ;; See : https://wiki.debian.org/DebianKernel/ARMMP. -(define %linux-libre-version "4.15.1") -(define %linux-libre-hash "1by90ghpk5qh79vgb0cfwab8c6ngciii9mvsya0gj5ijj90i6hwy") +(define %linux-libre-version "4.15.2") +(define %linux-libre-hash "0rzncbk513a8q60z9psb9yz7liadsb7nghj12s1kmwn441z1zv93") (define-public linux-libre (make-linux-libre %linux-libre-version @@ -391,8 +391,8 @@ (define-public linux-libre %linux-compatible-systems #:configuration-file kernel-config)) -(define %linux-libre-4.14-version "4.14.17") -(define %linux-libre-4.14-hash "05z4v1v4aj8hcwgn7iljp8iclk3ikf1b57k8a8baym3dd9js6aan") +(define %linux-libre-4.14-version "4.14.18") +(define %linux-libre-4.14-hash "1kl6zc9dzi02hzxwmzskxb4cqh5lph4afy94677bj5ribanmizn5") (define-public linux-libre-4.14 (make-linux-libre %linux-libre-4.14-version diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm index e6453fa360..0d4bf12817 100644 --- a/gnu/packages/lua.scm +++ b/gnu/packages/lua.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2016 doncatnip ;;; Copyright © 2016, 2017 Clément Lassieur ;;; Copyright © 2016 José Miguel Sánchez García +;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; Copyright © 2018 Fis Trivial ;;; ;;; This file is part of GNU Guix. @@ -116,21 +117,30 @@ (define-public lua-5.1 (define-public luajit (package (name "luajit") - (version "2.1.0-beta2") + (version "2.1.0-beta3") (source (origin (method url-fetch) (uri (string-append "http://luajit.org/download/LuaJIT-" version ".tar.gz")) (sha256 - (base32 "0iyghj1xjlmd9ywa4flf9yszynf3jhbp0yqb9b49k7ab0g528fbi")) - (patches (search-patches "luajit-symlinks.patch" - "luajit-no_ldconfig.patch")))) + (base32 "1hyrhpkwjqsv54hnnx4cl8vk44h9d6c9w0fz1jfjz00w255y7lhs")) + (patches (search-patches "luajit-no_ldconfig.patch")))) (build-system gnu-build-system) (arguments - '(#:tests? #f ;luajit is distributed without tests - #:phases (modify-phases %standard-phases (delete 'configure)) - #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))))) - (home-page "http://www.luajit.org/") + `(#:tests? #f ; luajit is distributed without tests + #:phases + (modify-phases %standard-phases + (delete 'configure) ; no configure script + (add-after 'install 'create-luajit-symlink + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (with-directory-excursion bin + (symlink ,(string-append name "-" version) + ,name) + #t))))) + #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))))) + (home-page "https://www.luajit.org/") (synopsis "Just in time compiler for Lua programming language version 5.1") (description "LuaJIT is a Just-In-Time Compiler (JIT) for the Lua @@ -427,7 +437,7 @@ (define (make-lua-bitop name lua) (modify-phases %standard-phases (delete 'configure)))) (inputs `(("lua", lua))) - (home-page "http://bitop.luajit.org/index.html") + (home-page "https://bitop.luajit.org/index.html") (synopsis "Bitwise operations on numbers for Lua") (description "Lua BitOp is a C extension module for Lua which adds bitwise operations diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index fcb347238a..e085c2dec6 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -24,6 +24,7 @@ ;;; Copyright © 2017 Kyle Meyer ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2017 Rene Saavedra +;;; Copyright © 2018 Pierre Langlois ;;; ;;; This file is part of GNU Guix. ;;; @@ -532,27 +533,27 @@ (define-public emacs-mew (define-public mu (package (name "mu") - (version "0.9.18") + (version "1.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/djcb/mu/releases/" - "download/" version "/mu-" - version ".tar.gz")) + "download/v" version "/mu-" + version ".tar.xz")) (sha256 (base32 - "02g82zvxfgn17wzy846bfxj0izjj7yklhwdnhwxy1y2kin4fqnb5")))) + "04x5azl19gszw2h7argq666gf9xs4hy9q7w9cbqxvy08n56xqsln")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) ("glib" ,glib "bin") ; for gtester - ("emacs" ,emacs-minimal))) + ("emacs" ,emacs-minimal) + ("tzdata" ,tzdata-for-tests))) ;for mu/test/test-mu-query.c ;; TODO: Add webkit and gtk to build the mug GUI. (inputs `(("xapian" ,xapian) ("guile" ,guile-2.2) ("glib" ,glib) - ("gmime" ,gmime) - ("tzdata" ,tzdata))) ;for mu/test/test-mu-query.c + ("gmime" ,gmime))) (arguments `(#:modules ((guix build gnu-build-system) (guix build utils) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 25a0cf670f..0263fc107c 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -22,6 +22,7 @@ ;;; Copyright © 2017 Arun Isaac ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2017 Dave Love +;;; Copyright © 2018 Jan Nieuwenhuizen ;;; ;;; This file is part of GNU Guix. ;;; @@ -93,6 +94,7 @@ (define-module (gnu packages maths) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages python-web) + #:use-module (gnu packages qt) #:use-module (gnu packages readline) #:use-module (gnu packages tbb) #:use-module (gnu packages scheme) @@ -101,6 +103,7 @@ (define-module (gnu packages maths) #:use-module (gnu packages texinfo) #:use-module (gnu packages tex) #:use-module (gnu packages tls) + #:use-module (gnu packages version-control) #:use-module (gnu packages wxwidgets) #:use-module (gnu packages xml) #:use-module (srfi srfi-1)) @@ -3695,3 +3698,34 @@ (define-public elemental dense and sparse-direct linear algebra, conic optimization, and lattice reduction.") (license license:bsd-2))) + +(define-public mcrl2 + (package + (name "mcrl2") + (version "201707.1.15162") + (source (origin + (method url-fetch) + (uri (string-append "http://www.mcrl2.org/download/devel/mcrl2-" + version + ".tar.gz")) + (sha256 + (base32 + "1ziww2fchsklm25hl9p2mngssxfh9w07nc114cncqaxfibqp2p8f")))) + (native-inputs + `(("subversion" ,subversion))) + (inputs + `(("boost" ,boost) + ("glu" ,glu) + ("mesa" ,mesa) + ("qt" ,qt))) + (build-system cmake-build-system) + (synopsis "Toolset for the mCRL2 formal specification language") + (description + "@dfn{mCRL2} (micro Common Representation Language 2) is a formal +specification language for describing concurrent discrete event systems. Its +toolset supports analysis and automatic verification, linearisation, simulation, +state-space exploration and generation, and tools to optimise and analyse +specifications. Also, state spaces can be manipulated, visualised and +analysed.") + (home-page "http://mcrl2.org") + (license license:boost1.0))) diff --git a/gnu/packages/mc.scm b/gnu/packages/mc.scm index 2e13c3201f..6c71f56086 100644 --- a/gnu/packages/mc.scm +++ b/gnu/packages/mc.scm @@ -62,14 +62,25 @@ (define-public mc (modify-phases %standard-phases (add-after 'patch-source-shebangs 'patch-FHS-file-names (lambda _ - ;; Patch files to refer to executables in the store. + ;; Patch files to refer to executables in the store or $PATH. (substitute* "misc/mcedit.menu.in" (("#! /bin/sh") (string-append "#!" (which "sh"))) (("/bin/bash") (which "bash"))) (substitute* "misc/ext.d/misc.sh.in" (("/bin/cat") "cat")) - (substitute* "tests/src/vfs/extfs/helpers-list/Makefile.in" + (substitute* (list "lib/utilunix.c" + "src/usermenu.c" + "src/vfs/fish/fish.c" + "tests/src/vfs/extfs/helpers-list/Makefile.in") (("/bin/sh") (which "sh"))) + (substitute* "src/filemanager/ext.c" + (("/bin/rm") "rm") + (("/bin/sh") (which "sh"))) + + ;; There are other /bin/s hard-coded in this file, but they + ;; are never tried after bash (mc's first choice) is found. + (substitute* "lib/shell.c" + (("/bin/bash") (which "bash"))) #t)) (add-before 'check 'fix-tests (lambda _ diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm index d9a2094bea..442f7c5371 100644 --- a/gnu/packages/mpi.scm +++ b/gnu/packages/mpi.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015 Eric Bavier -;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès +;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès ;;; Copyright © 2014 Ian Denhardt ;;; Copyright © 2016 Andreas Enge ;;; Copyright © 2017 Dave Love @@ -39,9 +39,12 @@ (define-module (gnu packages mpi) #:use-module (gnu packages ncurses) #:use-module (gnu packages pkg-config) #:use-module (gnu packages valgrind) + #:use-module (srfi srfi-1) #:use-module (ice-9 match)) (define-public hwloc + ;; Note: For now we keep 1.x as the default because many packages have yet + ;; to migrate to 2.0. (package (name "hwloc") (version "1.11.8") @@ -110,6 +113,24 @@ (define-public hwloc bind processes, and much more.") (license bsd-3))) +(define-public hwloc-2.0 + ;; Note: 2.0 isn't the default yet, see above. + (package + (inherit hwloc) + (version "2.0.0") + (source (origin + (method url-fetch) + (uri (string-append "https://www.open-mpi.org/software/hwloc/v" + (version-major+minor version) + "/downloads/hwloc-" version ".tar.bz2")) + (sha256 + (base32 + "021765f9y6pxcxrvfpzzwaig16ypfbph5xjpkd29qkhzs9r6zrcr")) + (patches (search-patches "hwloc-tests-without-sysfs.patch")))) + + ;; libnuma is no longer needed. + (inputs (alist-delete "numactl" (package-inputs hwloc))))) + (define-public openmpi (package (name "openmpi") diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 2e8bc17192..2db8ffea30 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -1050,7 +1050,7 @@ (define-public solfege (add-after 'unpack 'fix-configuration (lambda* (#:key inputs #:allow-other-keys) (substitute* "default.config" - (("/usr/bin/aplay" "aplay")) + (("/usr/bin/aplay") "aplay") (("/usr/bin/timidity") "timidity") (("/usr/bin/mpg123") "mpg123") (("/usr/bin/ogg123") "ogg123")) @@ -2317,6 +2317,33 @@ (define-public mod-host socket or command line.") (license license:gpl3+)))) +(define-public curseradio + (let ((commit "1bd4bd0faeec675e0647bac9a100b526cba19f8d") + (revision "1")) + (package + (name "curseradio") + (version (git-version "0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/chronitis/curseradio.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "11bf0jnj8h2fxhpdp498189r4s6b47vy4wripv0z4nx7lxajl88i")))) + (build-system python-build-system) + (propagated-inputs + `(("python-lxml" ,python-lxml) + ("python-requests" ,python-requests) + ("python-pyxdg" ,python-pyxdg) + ("mpv" ,mpv))) + (home-page "https://github.com/chronitis/curseradio") + (synopsis "Command-line Internet radio player") + (description "Curseradio is a Curses-based radio player that uses a +tune-in sender list from @url{http://opml.radiotime.com}.") + (license license:expat)))) + (define-public pianobar (package (name "pianobar") diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 76b069de94..21b158b815 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2015 Mark H Weaver ;;; Copyright © 2015, 2016, 2017 Stefan Reichör ;;; Copyright © 2016 Raimon Grau -;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice +;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2016 John Darrington ;;; Copyright © 2016, 2017 Nicolas Goaziou ;;; Copyright © 2016 Eric Bavier @@ -465,12 +465,12 @@ (define-public whois "08sp2gzv09rar1a5mnfmbc24pqvhpqqmz2hnmv436n7v7d09qy2d")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; Does not exist + `(#:tests? #f ; no test suite #:make-flags (list "CC=gcc" (string-append "prefix=" (assoc-ref %outputs "out"))) #:phases (modify-phases %standard-phases - (delete 'configure) ; No configure + (delete 'configure) ; no configure script (add-before 'build 'setenv (lambda _ (setenv "HAVE_ICONV" "1") @@ -482,11 +482,16 @@ (define-public whois `(("gettext" ,gettext-minimal) ("perl" ,perl) ("pkg-config" ,pkg-config))) - (synopsis "Improved whois client") - (description "This whois client is intelligent and can -automatically select the appropriate whois server for most queries. -Because of historical reasons this also includes a tool called mkpasswd -which can be used to encrypt a password with @code{crypt(3)}.") + (synopsis "Intelligent client for the WHOIS directory service") + (description + "whois searches for an object in a @dfn{WHOIS} (RFC 3912) database. +It is commonly used to look up the registered users or assignees of an Internet +resource, such as a domain name, an IP address block, or an autonomous system. +It can automatically select the appropriate server for most queries. + +For historical reasons, this package also includes @command{mkpasswd}, which +encrypts passwords using @code{crypt(3)} and is unrelated to the Expect command +of the same name.") (home-page "https://github.com/rfc1036/whois") (license license:gpl2+))) diff --git a/gnu/packages/nim.scm b/gnu/packages/nim.scm index 560f10e4ad..5694eae63b 100644 --- a/gnu/packages/nim.scm +++ b/gnu/packages/nim.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 José Miguel Sánchez García ;;; Copyright © 2017 Efraim Flashner +;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,7 +27,7 @@ (define-module (gnu packages nim) (define-public nim (package (name "nim") - (version "0.17.0") + (version "0.17.2") (source (origin (method url-fetch) @@ -34,13 +35,13 @@ (define-public nim name "-" version ".tar.xz")) (sha256 (base32 - "16vsmk4rqnkg9lc9h9jk62ps0x778cdqg6qrs3k6fv2g73cqvq9n")))) + "1gc2xk3ygmz9y4pm75pligssgw995a7gvnfpy445fjpw4d81pzxa")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; No tests. #:phases (modify-phases %standard-phases - (delete 'configure) + (delete 'configure) ; no configure script (add-after 'unpack 'patch-installer (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) @@ -56,11 +57,13 @@ (define-public nim #t)) (replace 'build (lambda _ - (zero? (system* "sh" "build.sh")))) + (invoke "sh" "build.sh") + #t)) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) - (zero? (system* "./install.sh" out)))))))) + (invoke "./install.sh" out) + #t)))))) (home-page "https://nim-lang.org") (synopsis "Statically-typed, imperative programming language") (description "Nim (formerly known as Nimrod) is a statically-typed, diff --git a/gnu/packages/onc-rpc.scm b/gnu/packages/onc-rpc.scm index 5997571462..03d51d9517 100644 --- a/gnu/packages/onc-rpc.scm +++ b/gnu/packages/onc-rpc.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2014, 2017 Ludovic Courtès ;;; Copyright © 2016 John Darrington ;;; Copyright © 2017, 2018 Leo Famulari +;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm index 07197de0d5..dd1ab1c3ef 100644 --- a/gnu/packages/password-utils.scm +++ b/gnu/packages/password-utils.scm @@ -68,14 +68,14 @@ (define-module (gnu packages password-utils) (define-public pwgen (package (name "pwgen") - (version "2.07") + (version "2.08") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/pwgen/pwgen/" version "/pwgen-" version ".tar.gz")) (sha256 - (base32 "0mhmw700kkh238fzivcwnwi94bj9f3h36yfh3k3j2v19b0zmjx7b")))) + (base32 "0yy90pqrr2pszzhb5hxjishq9qc7dqd290amiibqx9fm1b9kvc6s")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; no test suite diff --git a/gnu/packages/patches/gpsbabel-minizip.patch b/gnu/packages/patches/gpsbabel-minizip.patch new file mode 100644 index 0000000000..8f3bb36f57 --- /dev/null +++ b/gnu/packages/patches/gpsbabel-minizip.patch @@ -0,0 +1,13 @@ +Patch taken from https://sources.debian.org/data/main/g/gpsbabel/1.5.3-2/debian/patches/use_minizip. + +--- a/Makefile.in ++++ b/Makefile.in +@@ -120,7 +120,7 @@ LIBOBJS = queue.o route.o waypt.o filter + src/core/usasciicodec.o\ + src/core/ziparchive.o \ + $(GARMIN) $(JEEPS) $(SHAPE) @ZLIB@ $(FMTS) $(FILTERS) +-OBJS = main.o globals.o $(LIBOBJS) @FILEINFO@ ++OBJS = main.o globals.o $(MINIZIP) $(LIBOBJS) @FILEINFO@ + + DEPFILES = $(OBJS:.o=.d) + \ No newline at end of file diff --git a/gnu/packages/patches/gpsbabel-qstring.patch b/gnu/packages/patches/gpsbabel-qstring.patch new file mode 100644 index 0000000000..8ba1a7213b --- /dev/null +++ b/gnu/packages/patches/gpsbabel-qstring.patch @@ -0,0 +1,69 @@ +Extracted from following patch of gpsbabel: +https://github.com/gpsbabel/gpsbabel/commit/604178aa8ad4d3c3ad218df24c1e9a6a1f683bb3 + +From 604178aa8ad4d3c3ad218df24c1e9a6a1f683bb3 Mon Sep 17 00:00:00 2001 +From: Harel Mazor +Date: Tue, 24 Jan 2017 00:35:04 +0200 +Subject: [PATCH] Added geojson read capablity, moved magic strings to + constants, fixed windows compilation issues. + +--- a/tef_xml.cc ++++ b/tef_xml.cc +@@ -72,11 +72,11 @@ tef_start(xg_string args, const QXmlStreamAttributes* attrv) + bool valid = false; + + foreach(QXmlStreamAttribute attr, *attrv) { +- if (attr.name().compare("Comment", Qt::CaseInsensitive) == 0) { +- if (attr.value().compare("TourExchangeFormat", Qt::CaseInsensitive) == 0) { ++ if (attr.name().compare(QString("Comment"), Qt::CaseInsensitive) == 0) { ++ if (attr.value().compare(QString("TourExchangeFormat"), Qt::CaseInsensitive) == 0) { + valid = true; + } +- } else if (attr.name().compare("Version", Qt::CaseInsensitive) == 0) { ++ } else if (attr.name().compare(QString("Version"), Qt::CaseInsensitive) == 0) { + version = attr.value().toString().toDouble(); + } + } +@@ -95,9 +95,9 @@ tef_header(xg_string args, const QXmlStreamAttributes* attrv) + { + route = route_head_alloc(); + foreach(QXmlStreamAttribute attr, *attrv) { +- if (attr.name().compare("Name", Qt::CaseInsensitive) == 0) { ++ if (attr.name().compare(QString("Name"), Qt::CaseInsensitive) == 0) { + route->rte_name = attr.value().toString().trimmed(); +- } else if (attr.name().compare("Software", Qt::CaseInsensitive) == 0) { ++ } else if (attr.name().compare(QString("Software"), Qt::CaseInsensitive) == 0) { + route->rte_desc = attr.value().toString().trimmed(); + } + } +@@ -248,20 +248,20 @@ tef_item_start(xg_string args, const QXmlStreamAttributes* attrv) + QString attrstr = attr.value().toString(); + QByteArray attrtext = attrstr.toUtf8(); + +- if (attr.name().compare("SegDescription", Qt::CaseInsensitive) == 0) { ++ if (attr.name().compare(QString("SegDescription"), Qt::CaseInsensitive) == 0) { + wpt_tmp->shortname = attrstr.trimmed(); +- } else if (attr.name().compare("PointDescription", Qt::CaseInsensitive) == 0) { ++ } else if (attr.name().compare(QString("PointDescription"), Qt::CaseInsensitive) == 0) { + wpt_tmp->description = attrstr.trimmed(); +- } else if (attr.name().compare("ViaStation", Qt::CaseInsensitive) == 0 && +- attr.value().compare("true", Qt::CaseInsensitive) == 0) { ++ } else if (attr.name().compare(QString("ViaStation"), Qt::CaseInsensitive) == 0 && ++ attr.value().compare(QString("true"), Qt::CaseInsensitive) == 0) { + wpt_tmp->wpt_flags.fmt_use = 1; /* only a flag */ + + /* new in TEF V2 */ +- } else if (attr.name().compare("Instruction", Qt::CaseInsensitive) == 0) { ++ } else if (attr.name().compare(QString("Instruction"), Qt::CaseInsensitive) == 0) { + wpt_tmp->description = attrstr.trimmed(); +- } else if (attr.name().compare("Altitude", Qt::CaseInsensitive) == 0) { ++ } else if (attr.name().compare(QString("Altitude"), Qt::CaseInsensitive) == 0) { + wpt_tmp->altitude = attrstr.toDouble(); +- } else if (attr.name().compare("TimeStamp", Qt::CaseInsensitive) == 0) { ++ } else if (attr.name().compare(QString("TimeStamp"), Qt::CaseInsensitive) == 0) { + /* nothing for the moment */ + } + } +-- +2.16.1 + diff --git a/gnu/packages/patches/hwloc-tests-without-sysfs.patch b/gnu/packages/patches/hwloc-tests-without-sysfs.patch new file mode 100644 index 0000000000..ea6ec41616 --- /dev/null +++ b/gnu/packages/patches/hwloc-tests-without-sysfs.patch @@ -0,0 +1,42 @@ +Fix a test failure in the build environment, where /sys is missing. +From . + +From a2cc4f2e2bf4a8bbdd61b578a62e27e7482799cf Mon Sep 17 00:00:00 2001 +From: Brice Goglin +Date: Tue, 6 Feb 2018 17:13:26 +0100 +Subject: [PATCH] linux: honor the filtering cores and packages when reading + topology from cpuinfo + +Caused a make check crash in lstopo --filter all:none in chroot without sysfs. + +Thanks to Ludovic Courtes for the report. + +Signed-off-by: Brice Goglin +--- + hwloc/topology-linux.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/hwloc/topology-linux.c b/hwloc/topology-linux.c +index 290da0d72..e1bbf94e1 100644 +--- a/hwloc/topology-linux.c ++++ b/hwloc/topology-linux.c +@@ -4101,7 +4101,8 @@ look_cpuinfo(struct hwloc_topology *topology, + } + /* create package objects */ + hwloc_debug("%u pkgs%s\n", numpkgs, missingpkg ? ", but some missing package" : ""); +- if (!missingpkg && numpkgs>0) { ++ if (!missingpkg && numpkgs>0 ++ && hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_PACKAGE)) { + for (i = 0; i < numpkgs; i++) { + struct hwloc_obj *obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_PACKAGE, Lpkg_to_Ppkg[i]); + int doneinfos = 0; +@@ -4145,7 +4146,8 @@ look_cpuinfo(struct hwloc_topology *topology, + } + /* create Core objects */ + hwloc_debug("%u cores%s\n", numcores, missingcore ? ", but some missing core" : ""); +- if (!missingcore && numcores>0) { ++ if (!missingcore && numcores>0 ++ && hwloc_filter_check_keep_object_type(topology, HWLOC_OBJ_CORE)) { + for (i = 0; i < numcores; i++) { + struct hwloc_obj *obj = hwloc_alloc_setup_object(topology, HWLOC_OBJ_CORE, Lcore_to_Pcore[i]); + obj->cpuset = hwloc_bitmap_alloc(); diff --git a/gnu/packages/patches/luajit-symlinks.patch b/gnu/packages/patches/luajit-symlinks.patch deleted file mode 100644 index 2466c34144..0000000000 --- a/gnu/packages/patches/luajit-symlinks.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 0a54a8f125d7ab508c7c88d5ad4ed1b0c63cb5b6 Mon Sep 17 00:00:00 2001 -From: =?utf8?q?Tom=C3=A1=C5=A1=20=C4=8Cech?= -Date: Wed, 4 Feb 2015 11:32:55 +0100 -Subject: [PATCH 1/2] Provide two symlinks for dynamic library during install - ---- - Makefile | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Makefile b/Makefile -index 0891b71..343ecb5 100644 ---- a/Makefile -+++ b/Makefile -@@ -56,7 +56,7 @@ INSTALL_PCNAME= luajit.pc - INSTALL_STATIC= $(INSTALL_LIB)/$(INSTALL_ANAME) - INSTALL_DYN= $(INSTALL_LIB)/$(INSTALL_SONAME) - INSTALL_SHORT1= $(INSTALL_LIB)/$(INSTALL_SOSHORT) --INSTALL_SHORT2= $(INSTALL_LIB)/$(INSTALL_SOSHORT) -+INSTALL_SHORT2= $(INSTALL_LIB)/$(INSTALL_SOSHORT).$(MAJVER) - INSTALL_T= $(INSTALL_BIN)/$(INSTALL_TNAME) - INSTALL_TSYM= $(INSTALL_BIN)/$(INSTALL_TSYMNAME) - INSTALL_PC= $(INSTALL_PKGCONFIG)/$(INSTALL_PCNAME) --- -2.2.2 - diff --git a/gnu/packages/patches/mpv-CVE-2018-6360-1.patch b/gnu/packages/patches/mpv-CVE-2018-6360-1.patch new file mode 100644 index 0000000000..55fc7daaf3 --- /dev/null +++ b/gnu/packages/patches/mpv-CVE-2018-6360-1.patch @@ -0,0 +1,138 @@ +Fix CVE-2018-6360: + +https://github.com/mpv-player/mpv/issues/5456 +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6360 +https://security-tracker.debian.org/tracker/CVE-2018-6360 + +Patch copied from upstream source repository: + +https://github.com/mpv-player/mpv/commit/e6e6b0dcc7e9b0dbf35154a179b3dc1fcfcaff43 + +To apply the patch to mpv 0.28.0 release tarball, hunk #4 is removed. Hunk #4 +checks if 'mpd_url' is safe, but the support for 'mpd_url' is not available +for the 0.28.0 release. So it should be safe to remove hunk #4. + +From e6e6b0dcc7e9b0dbf35154a179b3dc1fcfcaff43 Mon Sep 17 00:00:00 2001 +From: Ricardo Constantino +Date: Fri, 26 Jan 2018 01:19:04 +0000 +Subject: [PATCH] ytdl_hook: whitelist protocols from urls retrieved from + youtube-dl + +Not very clean since there's a lot of potential unsafe urls that youtube-dl +can give us, depending on whether it's a single url, split tracks, +playlists, segmented dash, etc. +--- + player/lua/ytdl_hook.lua | 54 +++++++++++++++++++++++++++++++++++++++++------- + 1 file changed, 47 insertions(+), 7 deletions(-) + +diff --git a/player/lua/ytdl_hook.lua b/player/lua/ytdl_hook.lua +index dd96ecc01d..b480c21625 100644 +--- a/player/lua/ytdl_hook.lua ++++ b/player/lua/ytdl_hook.lua +@@ -16,6 +16,18 @@ local ytdl = { + + local chapter_list = {} + ++function Set (t) ++ local set = {} ++ for _, v in pairs(t) do set[v] = true end ++ return set ++end ++ ++local safe_protos = Set { ++ "http", "https", "ftp", "ftps", ++ "rtmp", "rtmps", "rtmpe", "rtmpt", "rtmpts", "rtmpte", ++ "data" ++} ++ + local function exec(args) + local ret = utils.subprocess({args = args}) + return ret.status, ret.stdout, ret +@@ -183,6 +195,9 @@ local function edl_track_joined(fragments, protocol, is_live, base) + + for i = offset, #fragments do + local fragment = fragments[i] ++ if not url_is_safe(join_url(base, fragment)) then ++ return nil ++ end + table.insert(parts, edl_escape(join_url(base, fragment))) + if fragment.duration then + parts[#parts] = +@@ -208,6 +223,15 @@ local function proto_is_dash(json) + or json["protocol"] == "http_dash_segments" + end + ++local function url_is_safe(url) ++ local proto = type(url) == "string" and url:match("^(.+)://") or nil ++ local safe = proto and safe_protos[proto] ++ if not safe then ++ msg.error(("Ignoring potentially unsafe url: '%s'"):format(url)) ++ end ++ return safe ++end ++ + local function add_single_video(json) + local streamurl = "" + local max_bitrate = 0 +@@ -238,14 +264,18 @@ local function add_single_video(json) + edl_track = edl_track_joined(track.fragments, + track.protocol, json.is_live, + track.fragment_base_url) ++ local url = edl_track or track.url ++ if not url_is_safe(url) then ++ return ++ end + if track.acodec and track.acodec ~= "none" then + -- audio track + mp.commandv("audio-add", +- edl_track or track.url, "auto", ++ url, "auto", + track.format_note or "") + elseif track.vcodec and track.vcodec ~= "none" then + -- video track +- streamurl = edl_track or track.url ++ streamurl = url + end + end + +@@ -264,7 +294,13 @@ local function add_single_video(json) + + msg.debug("streamurl: " .. streamurl) + +- mp.set_property("stream-open-filename", streamurl:gsub("^data:", "data://", 1)) ++ streamurl = streamurl:gsub("^data:", "data://", 1) ++ ++ if not url_is_safe(streamurl) then ++ return ++ end ++ ++ mp.set_property("stream-open-filename", streamurl) + + mp.set_property("file-local-options/force-media-title", json.title) + +@@ -526,14 +562,18 @@ mp.add_hook(o.try_ytdl_first and "on_load" or "on_load_fail", 10, function () + site = entry["webpage_url"] + end + +- if not (site:find("https?://") == 1) then +- site = "ytdl://" .. site ++ -- links with only youtube id as returned by --flat-playlist ++ if not site:find("://") then ++ table.insert(playlist, "ytdl://" .. site) ++ elseif url_is_safe(site) then ++ table.insert(playlist, site) + end +- table.insert(playlist, site) + + end + +- mp.set_property("stream-open-filename", "memory://" .. table.concat(playlist, "\n")) ++ if #playlist > 0 then ++ mp.set_property("stream-open-filename", "memory://" .. table.concat(playlist, "\n")) ++ end + end + + else -- probably a video +-- +2.16.1 + diff --git a/gnu/packages/patches/mpv-CVE-2018-6360-2.patch b/gnu/packages/patches/mpv-CVE-2018-6360-2.patch new file mode 100644 index 0000000000..b37e33a641 --- /dev/null +++ b/gnu/packages/patches/mpv-CVE-2018-6360-2.patch @@ -0,0 +1,59 @@ +Fix CVE-2018-6360: + +https://github.com/mpv-player/mpv/issues/5456 +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6360 +https://security-tracker.debian.org/tracker/CVE-2018-6360 + +Patch copied from upstream source repository: + +https://github.com/mpv-player/mpv/commit/f8263e82cc74a9ac6530508bec39c7b0dc02568f + +From f8263e82cc74a9ac6530508bec39c7b0dc02568f Mon Sep 17 00:00:00 2001 +From: Ricardo Constantino +Date: Fri, 26 Jan 2018 11:26:27 +0000 +Subject: [PATCH] ytdl_hook: move url_is_safe earlier in code + +lua isn't javascript. +--- + player/lua/ytdl_hook.lua | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/player/lua/ytdl_hook.lua b/player/lua/ytdl_hook.lua +index b480c21625..458c94af38 100644 +--- a/player/lua/ytdl_hook.lua ++++ b/player/lua/ytdl_hook.lua +@@ -84,6 +84,15 @@ local function edl_escape(url) + return "%" .. string.len(url) .. "%" .. url + end + ++local function url_is_safe(url) ++ local proto = type(url) == "string" and url:match("^(.+)://") or nil ++ local safe = proto and safe_protos[proto] ++ if not safe then ++ msg.error(("Ignoring potentially unsafe url: '%s'"):format(url)) ++ end ++ return safe ++end ++ + local function time_to_secs(time_string) + local ret + +@@ -223,15 +232,6 @@ local function proto_is_dash(json) + or json["protocol"] == "http_dash_segments" + end + +-local function url_is_safe(url) +- local proto = type(url) == "string" and url:match("^(.+)://") or nil +- local safe = proto and safe_protos[proto] +- if not safe then +- msg.error(("Ignoring potentially unsafe url: '%s'"):format(url)) +- end +- return safe +-end +- + local function add_single_video(json) + local streamurl = "" + local max_bitrate = 0 +-- +2.16.1 + diff --git a/gnu/packages/patches/mpv-CVE-2018-6360-3.patch b/gnu/packages/patches/mpv-CVE-2018-6360-3.patch new file mode 100644 index 0000000000..dc3e272d37 --- /dev/null +++ b/gnu/packages/patches/mpv-CVE-2018-6360-3.patch @@ -0,0 +1,84 @@ +Fix CVE-2018-6360: + +https://github.com/mpv-player/mpv/issues/5456 +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6360 +https://security-tracker.debian.org/tracker/CVE-2018-6360 + +Patch copied from upstream source repository: + +https://github.com/mpv-player/mpv/commit/ce42a965330dfeb7d2f6c69ea42d35454105c828 + +From ce42a965330dfeb7d2f6c69ea42d35454105c828 Mon Sep 17 00:00:00 2001 +From: Ricardo Constantino +Date: Fri, 26 Jan 2018 18:54:17 +0000 +Subject: [PATCH] ytdl_hook: fix safe url checking with EDL urls + +--- + player/lua/ytdl_hook.lua | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +diff --git a/player/lua/ytdl_hook.lua b/player/lua/ytdl_hook.lua +index 458c94af38..6c8e78657d 100644 +--- a/player/lua/ytdl_hook.lua ++++ b/player/lua/ytdl_hook.lua +@@ -264,18 +264,17 @@ local function add_single_video(json) + edl_track = edl_track_joined(track.fragments, + track.protocol, json.is_live, + track.fragment_base_url) +- local url = edl_track or track.url +- if not url_is_safe(url) then ++ if not edl_track and not url_is_safe(track.url) then + return + end + if track.acodec and track.acodec ~= "none" then + -- audio track + mp.commandv("audio-add", +- url, "auto", ++ edl_track or track.url, "auto", + track.format_note or "") + elseif track.vcodec and track.vcodec ~= "none" then + -- video track +- streamurl = url ++ streamurl = edl_track or track.url + end + end + +@@ -284,6 +283,9 @@ local function add_single_video(json) + edl_track = edl_track_joined(json.fragments, json.protocol, + json.is_live, json.fragment_base_url) + ++ if not edl_track and not url_is_safe(json.url) then ++ return ++ end + -- normal video or single track + streamurl = edl_track or json.url + set_http_headers(json.http_headers) +@@ -294,13 +296,7 @@ local function add_single_video(json) + + msg.debug("streamurl: " .. streamurl) + +- streamurl = streamurl:gsub("^data:", "data://", 1) +- +- if not url_is_safe(streamurl) then +- return +- end +- +- mp.set_property("stream-open-filename", streamurl) ++ mp.set_property("stream-open-filename", streamurl:gsub("^data:", "data://", 1)) + + mp.set_property("file-local-options/force-media-title", json.title) + +@@ -499,6 +495,10 @@ mp.add_hook(o.try_ytdl_first and "on_load" or "on_load_fail", 10, function () + + msg.debug("EDL: " .. playlist) + ++ if not playlist then ++ return ++ end ++ + -- can't change the http headers for each entry, so use the 1st + if json.entries[1] then + set_http_headers(json.entries[1].http_headers) +-- +2.16.1 + diff --git a/gnu/packages/patches/mupdf-CVE-2017-17858.patch b/gnu/packages/patches/mupdf-CVE-2017-17858.patch new file mode 100644 index 0000000000..66df127509 --- /dev/null +++ b/gnu/packages/patches/mupdf-CVE-2017-17858.patch @@ -0,0 +1,111 @@ +Fix CVE-2017-17858: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-17858 +https://bugs.ghostscript.com/show_bug.cgi?id=698819 +https://github.com/mzet-/Security-Advisories/blob/master/mzet-adv-2017-01.md + +Patch copied from upstream source repository: + +https://git.ghostscript.com/?p=mupdf.git;a=commit;h=55c3f68d638ac1263a386e0aaa004bb6e8bde731 + +From 55c3f68d638ac1263a386e0aaa004bb6e8bde731 Mon Sep 17 00:00:00 2001 +From: Sebastian Rasmussen +Date: Mon, 11 Dec 2017 14:09:15 +0100 +Subject: [PATCH] Bugs 698804/698810/698811: Keep PDF object numbers below + limit. + +This ensures that: + * xref tables with objects pointers do not grow out of bounds. + * other readers, e.g. Adobe Acrobat can parse PDFs written by mupdf. +--- + include/mupdf/pdf/object.h | 3 +++ + source/pdf/pdf-repair.c | 5 +---- + source/pdf/pdf-xref.c | 21 ++++++++++++--------- + 3 files changed, 16 insertions(+), 13 deletions(-) + +diff --git a/include/mupdf/pdf/object.h b/include/mupdf/pdf/object.h +index 21ed8595..4177112b 100644 +--- a/include/mupdf/pdf/object.h ++++ b/include/mupdf/pdf/object.h +@@ -3,6 +3,9 @@ + + typedef struct pdf_document_s pdf_document; + ++/* Defined in PDF 1.7 according to Acrobat limit. */ ++#define PDF_MAX_OBJECT_NUMBER 8388607 ++ + /* + * Dynamic objects. + * The same type of objects as found in PDF and PostScript. +diff --git a/source/pdf/pdf-repair.c b/source/pdf/pdf-repair.c +index ca149bd3..0c29758e 100644 +--- a/source/pdf/pdf-repair.c ++++ b/source/pdf/pdf-repair.c +@@ -6,9 +6,6 @@ + + /* Scan file for objects and reconstruct xref table */ + +-/* Define in PDF 1.7 to be 8388607, but mupdf is more lenient. */ +-#define MAX_OBJECT_NUMBER (10 << 20) +- + struct entry + { + int num; +@@ -436,7 +433,7 @@ pdf_repair_xref(fz_context *ctx, pdf_document *doc) + break; + } + +- if (num <= 0 || num > MAX_OBJECT_NUMBER) ++ if (num <= 0 || num > PDF_MAX_OBJECT_NUMBER) + { + fz_warn(ctx, "ignoring object with invalid object number (%d %d R)", num, gen); + goto have_next_token; +diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c +index 00586dbd..6284e70b 100644 +--- a/source/pdf/pdf-xref.c ++++ b/source/pdf/pdf-xref.c +@@ -868,11 +868,12 @@ pdf_read_old_xref(fz_context *ctx, pdf_document *doc, pdf_lexbuf *buf) + fz_seek(ctx, file, -(2 + (int)strlen(s)), SEEK_CUR); + } + +- if (ofs < 0) +- fz_throw(ctx, FZ_ERROR_GENERIC, "out of range object num in xref: %d", (int)ofs); +- if (ofs > INT64_MAX - len) +- fz_throw(ctx, FZ_ERROR_GENERIC, "xref section object numbers too big"); +- ++ if (ofs < 0 || ofs > PDF_MAX_OBJECT_NUMBER ++ || len < 0 || len > PDF_MAX_OBJECT_NUMBER ++ || ofs + len - 1 > PDF_MAX_OBJECT_NUMBER) ++ { ++ fz_throw(ctx, FZ_ERROR_GENERIC, "xref subsection object numbers are out of range"); ++ } + /* broken pdfs where size in trailer undershoots entries in xref sections */ + if (ofs + len > xref_len) + { +@@ -933,10 +934,8 @@ pdf_read_new_xref_section(fz_context *ctx, pdf_document *doc, fz_stream *stm, in + pdf_xref_entry *table; + int i, n; + +- if (i0 < 0 || i1 < 0 || i0 > INT_MAX - i1) +- fz_throw(ctx, FZ_ERROR_GENERIC, "negative xref stream entry index"); +- //if (i0 + i1 > pdf_xref_len(ctx, doc)) +- // fz_throw(ctx, FZ_ERROR_GENERIC, "xref stream has too many entries"); ++ if (i0 < 0 || i0 > PDF_MAX_OBJECT_NUMBER || i1 < 0 || i1 > PDF_MAX_OBJECT_NUMBER || i0 + i1 - 1 > PDF_MAX_OBJECT_NUMBER) ++ fz_throw(ctx, FZ_ERROR_GENERIC, "xref subsection object numbers are out of range"); + + table = pdf_xref_find_subsection(ctx, doc, i0, i1); + for (i = i0; i < i0 + i1; i++) +@@ -2086,6 +2085,10 @@ pdf_create_object(fz_context *ctx, pdf_document *doc) + /* TODO: reuse free object slots by properly linking free object chains in the ofs field */ + pdf_xref_entry *entry; + int num = pdf_xref_len(ctx, doc); ++ ++ if (num > PDF_MAX_OBJECT_NUMBER) ++ fz_throw(ctx, FZ_ERROR_GENERIC, "too many objects stored in pdf"); ++ + entry = pdf_get_incremental_xref_entry(ctx, doc, num); + entry->type = 'f'; + entry->ofs = -1; +-- +2.16.1 + diff --git a/gnu/packages/patches/p7zip-CVE-2017-17969.patch b/gnu/packages/patches/p7zip-CVE-2017-17969.patch new file mode 100644 index 0000000000..51c24000e5 --- /dev/null +++ b/gnu/packages/patches/p7zip-CVE-2017-17969.patch @@ -0,0 +1,35 @@ +Fix CVE-2017-17969: + +https://sourceforge.net/p/p7zip/bugs/204/ +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-17969 + +Patch copied from Debian. + +Subject: Heap-based buffer overflow in 7zip/Compress/ShrinkDecoder.cpp +Origin: vendor, https://sourceforge.net/p/p7zip/bugs/_discuss/thread/0920f369/27d7/attachment/CVE-2017-17969.patch +Forwarded: https://sourceforge.net/p/p7zip/bugs/_discuss/thread/0920f369/#27d7 +Bug: https://sourceforge.net/p/p7zip/bugs/204/ +Bug-Debian: https://bugs.debian.org/888297 +Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2017-17969 +Author: Antoine Beaupré +Reviewed-by: Salvatore Bonaccorso +Last-Update: 2018-02-01 +Applied-Upstream: 18.00-beta + +--- a/CPP/7zip/Compress/ShrinkDecoder.cpp ++++ b/CPP/7zip/Compress/ShrinkDecoder.cpp +@@ -121,8 +121,13 @@ HRESULT CDecoder::CodeReal(ISequentialIn + { + _stack[i++] = _suffixes[cur]; + cur = _parents[cur]; ++ if (cur >= kNumItems || i >= kNumItems) ++ break; + } +- ++ ++ if (cur >= kNumItems || i >= kNumItems) ++ break; ++ + _stack[i++] = (Byte)cur; + lastChar2 = (Byte)cur; + diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index 5df7385e78..82347f00c5 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -572,7 +572,8 @@ (define-public mupdf (method url-fetch) (uri (string-append "https://mupdf.com/downloads/archive/" name "-" version "-source.tar.xz")) - (patches (search-patches "mupdf-build-with-latest-openjpeg.patch")) + (patches (search-patches "mupdf-build-with-latest-openjpeg.patch" + "mupdf-CVE-2017-17858.patch")) (sha256 (base32 "0b9j0gqbc3jhmx87r6idcsh8lnb30840c3hyx6dk2gdjqqh3hysp")) diff --git a/gnu/packages/perl-check.scm b/gnu/packages/perl-check.scm index cbb2138a6e..c04344a70b 100644 --- a/gnu/packages/perl-check.scm +++ b/gnu/packages/perl-check.scm @@ -975,14 +975,14 @@ (define-public perl-test-sharedfork (define-public perl-test-simple (package (name "perl-test-simple") - (version "1.302120") + (version "1.302122") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/E/EX/EXODIST/" "Test-Simple-" version ".tar.gz")) (sha256 (base32 - "0v1l0hfza9zlw3qj5l2mrzljy1sk02h3yqcb4kixdb2d5l4n08y8")))) + "117m707cbvrh01s3w6g371i9xvpnklifiqpcmky4f49jgck8izgm")))) (build-system perl-build-system) (synopsis "Basic utilities for writing tests") (description diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 40c6077951..8ee85f7db6 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -45,6 +45,7 @@ ;;; Copyright © 2017 Rutger Helling ;;; Copyright © 2017 Muriithi Frederick Muriuki ;;; Copyright © 2017 Brendan Tildesley +;;; Copyright © 2018 Ethan R. Jones ;;; ;;; This file is part of GNU Guix. @@ -5740,15 +5741,13 @@ (define-public python2-appdirs (define-public python-llfuse (package (name "python-llfuse") - (version "1.2") + (version "1.3.2") (source (origin (method url-fetch) - (uri (string-append - "https://bitbucket.org/nikratio/python-llfuse/downloads/" - "llfuse-" version ".tar.bz2")) + (uri (pypi-uri "llfuse" version ".tar.bz2")) (sha256 (base32 - "11hms1x68bf1bqbqy7w3wpffqsd3jkgricmzrc1hrnwkswfzzlr4")))) + "0qxvnbz41bpvpc1vbi8qkhmpr9gj1qrrp5jdj085iqibd8l2l9cn")))) (build-system python-build-system) (inputs `(("fuse" ,fuse) @@ -12502,3 +12501,142 @@ (define-public python-yapf (define-public python2-yapf (package-with-python2 python-yapf)) + +(define-public python-gyp + (let ((commit "5e2b3ddde7cda5eb6bc09a5546a76b00e49d888f") + (revision "0")) + (package + (name "python-gyp") + ;; Google does not release versions, + ;; based on second most recent commit date. + (version (git-version "0.0.0" revision commit)) + (source + (origin + ;; Google does not release tarballs, + ;; git checkout is needed. + (method git-fetch) + (uri (git-reference + (url "https://chromium.googlesource.com/external/gyp") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0fr7nxcrk292djmxzpcjaphnsd123k31gp8jnd91vwknhq6snmv9")))) + (build-system python-build-system) + (home-page "https://gyp.gsrc.io/") + (synopsis "GYP is a Meta-Build system") + (description + "GYP builds build systems for large, cross platform applications. +It can be used to generate XCode projects, Visual Studio projects, Ninja build +files, and Makefiles.") + (license license:bsd-3)))) + +(define-public python2-gyp + (package-with-python2 python-gyp)) + +(define-public python-whatever + (package + (name "python-whatever") + (version "0.5") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/Suor/whatever/archive/" version + ".tar.gz")) + (sha256 + (base32 + "1iqvnaf0zpc6b4rvbqq4xy45mszcscyzpzknv8wg6j84pbp22sap")) + (file-name (string-append name "-" version ".tar.gz")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "py.test")))))) + (native-inputs + `(("python-pytest" ,python-pytest))) + (home-page "http://github.com/Suor/whatever") + (synopsis "Make anonymous functions by partial application of operators") + (description "@code{whatever} provides an easy way to make anonymous +functions by partial application of operators.") + (license license:bsd-3))) + +(define-public python2-whatever + (package-with-python2 python-whatever)) + +(define-public python-funcy + (package + (name "python-funcy") + (version "1.10") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/Suor/funcy/archive/" version + ".tar.gz")) + (sha256 + (base32 + "1fanxivsip29vgarw6dn39xym3q4pbxcpa11plpp548lvxajpahz")) + (file-name (string-append name "-" version ".tar.gz")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "py.test")))))) + (native-inputs + `(("python-pytest" ,python-pytest) + ("python-pytest-warnings" ,python-pytest-warnings) + ("python-whatever" ,python-whatever))) + (home-page "http://github.com/Suor/funcy") + (synopsis "Functional tools") + (description "@code{funcy} is a library that provides functional tools. +Examples are: +@enumerate +@item merge - Merges collections of the same type +@item walk - Type-preserving map +@item select - Selects a part of a collection +@item take - Takes the first n items of a collection +@item first - Takes the first item of a collection +@item remove - Predicated-removes items of a collection +@item concat - Concatenates two collections +@item flatten - Flattens a collection with subcollections +@item distinct - Returns only distinct items +@item split - Predicated-splits a collection +@item split_at - Splits a collection at a given item +@item group_by - Groups items by group +@item pairwise - Pairs off adjacent items +@item partial - Partially-applies a function +@item curry - Curries a function +@item compose - Composes functions +@item complement - Complements a predicate +@item all_fn - \"all\" with predicate +@end enumerate") + (license license:bsd-3))) + +(define-public python2-funcy + (package-with-python2 python-funcy)) + +(define-public python-isoweek + (package + (name "python-isoweek") + (version "1.3.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "isoweek" version)) + (sha256 + (base32 + "1s7zsf0pab0l9gn6456qadnz5i5h90hafcjwnhx5mq23qjxggwvk")))) + (build-system python-build-system) + (home-page "https://github.com/gisle/isoweek") + (synopsis "Objects representing a week") + (description "The @code{isoweek} module provide the class Week that +implements the week definition of ISO 8601. This standard also defines +a notation for identifying weeks; yyyyWww (where the W is a literal). +Week instances stringify to this form.") + (license license:bsd-3))) + +(define-public python2-isoweek + (package-with-python2 python-isoweek)) diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm index 5342dbbffb..4d8b1d1d88 100644 --- a/gnu/packages/rdf.scm +++ b/gnu/packages/rdf.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015 Andreas Enge ;;; Copyright © 2015, 2016 Ricardo Wurmus +;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. ;;; @@ -238,14 +239,14 @@ (define-public redland (define-public serd (package (name "serd") - (version "0.26.0") + (version "0.28.0") (source (origin (method url-fetch) (uri (string-append "http://download.drobilla.net/serd-" version ".tar.bz2")) (sha256 (base32 - "164j43am4hka2vbzw4n52zy7rafgp6kmkgbcbvap368az644mr73")))) + "1v4ai4zyj1q3255nghicns9817jkwb3bh60ssprsjmnjfj41mwhx")))) (build-system waf-build-system) (arguments `(#:tests? #f ; no check target diff --git a/gnu/packages/sawfish.scm b/gnu/packages/sawfish.scm index ebb8c5e1f0..9f9264457d 100644 --- a/gnu/packages/sawfish.scm +++ b/gnu/packages/sawfish.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Sou Bunnbu +;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,14 +38,14 @@ (define-module (gnu packages sawfish) (define-public librep (package (name "librep") - (version "0.92.6") + (version "0.92.7") (source (origin (method url-fetch) (uri (string-append "http://download.tuxfamily.org/" name "/" name "_" version ".tar.xz")) (sha256 (base32 - "1k6c0hmyzxh8459r790slh9vv9vwy9d7w3nlmrqypbx9mk855hgy")))) + "1bmcjl1x1rdh514q9z3hzyjmjmwwwkziipjpjsl301bwmiwrd8a8")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index 33f5a9451b..ca885c690c 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -200,14 +200,14 @@ (define-public mit-scheme (define-public bigloo (package (name "bigloo") - (version "4.3a") + (version "4.3b") (source (origin (method url-fetch) (uri (string-append "ftp://ftp-sop.inria.fr/indes/fp/Bigloo/bigloo" version ".tar.gz")) (sha256 (base32 - "03rcqs6kvy2j5lqk4fidqay5qfyp474qqspbh6wk4qdbds6w599w")) + "1xpzxjlq5g8j3jrb908kfaaa0pkynk4rd083hzvb08amhy68sx07")) ;; Remove bundled libraries. (modules '((guix build utils))) (snippet @@ -229,34 +229,37 @@ (define-public bigloo ((", @DATE@") "")) (substitute* "autoconf/osversion" (("^version.*$") "version=\"\"\n")) + (substitute* "comptime/Makefile" + (("\\$\\(LDCOMPLIBS\\)") + "$(LDCOMPLIBS) $(LDFLAGS)")) ;; The `configure' script doesn't understand options ;; of those of Autoconf. (let ((out (assoc-ref outputs "out"))) - (zero? - (system* "./configure" - (string-append "--prefix=" out) - ; use system libraries - "--customgc=no" - "--customunistring=no" - "--customlibuv=no" - (string-append"--mv=" (which "mv")) - (string-append "--rm=" (which "rm")) - "--cflags=-fPIC" - (string-append "--ldflags=-Wl,-rpath=" - (assoc-ref outputs "out") - "/lib/bigloo/" ,version) - (string-append "--lispdir=" out - "/share/emacs/site-lisp") - "--sharedbde=yes" - "--sharedcompiler=yes"))))) + (invoke "./configure" + (string-append "--prefix=" out) + ; use system libraries + "--customgc=no" + "--customunistring=no" + "--customlibuv=no" + (string-append"--mv=" (which "mv")) + (string-append "--rm=" (which "rm")) + "--cflags=-fPIC" + (string-append "--ldflags=-Wl,-rpath=" + (assoc-ref outputs "out") + "/lib/bigloo/" ,version) + (string-append "--lispdir=" out + "/share/emacs/site-lisp") + "--sharedbde=yes" + "--sharedcompiler=yes" + "--disable-patch")))) (add-after 'install 'install-emacs-modes (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (dir (string-append out "/share/emacs/site-lisp"))) - (zero? (system* "make" "-C" "bmacs" "all" "install" - (string-append "EMACSBRAND=emacs25") - (string-append "EMACSDIR=" dir))))))))) + (invoke "make" "-C" "bmacs" "all" "install" + (string-append "EMACSBRAND=emacs25") + (string-append "EMACSDIR=" dir)))))))) (inputs `(("emacs" ,emacs) ;UDE needs the X version of Emacs ("libgc" ,libgc) diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm index 5df9644dfc..80202e6814 100644 --- a/gnu/packages/shells.scm +++ b/gnu/packages/shells.scm @@ -648,14 +648,14 @@ (define-public mksh (define-public oil-shell (package (name "oil-shell") - (version "0.3.0") + (version "0.4.0") (source (origin (method url-fetch) (uri (string-append "https://www.oilshell.org/download/oil-" version ".tar.xz")) (sha256 (base32 - "0j4fyn6xjaf29xqyzm09ahazmq9v1hkxv4kps7n3lzdfr32a4kk9")))) + "0ca68n46mhibarpfinqfkim6p3xmbz5rrpl4qr3sj9y0q6wm7sa2")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; the tests are not distributed in the tarballs diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index 793dcf8dc5..b439094c26 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès ;;; Copyright © 2013, 2014 Andreas Enge ;;; Copyright © 2014, 2015, 2016 Mark H Weaver ;;; Copyright © 2015, 2016 Efraim Flashner @@ -62,35 +62,40 @@ (define-module (gnu packages ssh) #:use-module (srfi srfi-1)) (define-public libssh - (package - (name "libssh") - (version "0.7.5") - (source (origin - (method url-fetch) - (uri (string-append - "https://red.libssh.org/attachments/download/218/libssh-" - version ".tar.xz")) - (sha256 - (base32 - "15bh6dm9c50ndddzh3gqcgw7axp3ghrspjpkb1z3dr90vkanvs2l")) - (patches (search-patches "libssh-hostname-parser-bug.patch")))) - (build-system cmake-build-system) - (outputs '("out" "debug")) - (arguments - '(#:configure-flags '("-DWITH_GCRYPT=ON") + ;; This commit from the 'v0-7' branch contains 7 memory-management-related + ;; bug fixes that we'd rather have. + (let ((commit "239d0f75b5f909174c2ef7fb08d23bcfa6b20ba0") + (revision "0")) + (package + (name "libssh") + (version (git-version "0.7.5" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.libssh.org/projects/libssh.git") + (commit commit))) + (sha256 + (base32 + "01w72w1jsgs9ilj3n1gp6qkmdxr9n74i5h2nipi3x1vzm7bv8na1")) + (patches (search-patches "libssh-hostname-parser-bug.patch")) + (file-name (git-file-name name version)))) + (build-system cmake-build-system) + (outputs '("out" "debug")) + (arguments + '(#:configure-flags '("-DWITH_GCRYPT=ON") - ;; TODO: Add 'CMockery' and '-DWITH_TESTING=ON' for the test suite. - #:tests? #f)) - (inputs `(("zlib" ,zlib) - ("libgcrypt" ,libgcrypt))) - (synopsis "SSH client library") - (description - "libssh is a C library implementing the SSHv2 and SSHv1 protocol for + ;; TODO: Add 'CMockery' and '-DWITH_TESTING=ON' for the test suite. + #:tests? #f)) + (inputs `(("zlib" ,zlib) + ("libgcrypt" ,libgcrypt))) + (synopsis "SSH client library") + (description + "libssh is a C library implementing the SSHv2 and SSHv1 protocol for client and server implementations. With libssh, you can remotely execute programs, transfer files, and use a secure and transparent tunnel for your remote applications.") - (home-page "https://www.libssh.org") - (license license:lgpl2.1+))) + (home-page "https://www.libssh.org") + (license license:lgpl2.1+)))) (define-public libssh2 (package diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm index 3fb70d13da..f5e5bb85be 100644 --- a/gnu/packages/syncthing.scm +++ b/gnu/packages/syncthing.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Petter -;;; Copyright © 2016, 2017 Leo Famulari +;;; Copyright © 2016, 2017, 2018 Leo Famulari ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,7 +28,7 @@ (define-module (gnu packages syncthing) (define-public syncthing (package (name "syncthing") - (version "0.14.43") + (version "0.14.44") (source (origin (method url-fetch) (uri (string-append "https://github.com/syncthing/syncthing" @@ -36,7 +36,11 @@ (define-public syncthing "/syncthing-source-v" version ".tar.gz")) (sha256 (base32 - "175xkc4i00axxljc5kgkr30lm1s9hfmz0hrzrsl91rpwpbh500mv")))) + "0fxq52w1b05928xp0a333rg23fabj0nykgg7v4gz01f3vrxyydi1")) + (modules '((guix build utils))) + ;; Delete bundled ("vendored") free software source code. + (snippet + '(delete-file-recursively "vendor")))) (build-system go-build-system) ;; The primary Syncthing executable goes to "out", while the auxiliary ;; server programs and utility tools go to "utils". This reduces the size @@ -49,18 +53,6 @@ (define-public syncthing #:install-source? #f #:phases (modify-phases %standard-phases - (add-after 'unpack 'delete-bundled-source-code - (lambda _ - ;; Keep the bundled cznic libraries. There are some "internal" - ;; cznic libraries that complicate the use of non-bundled copies. - (rename-file "src/github.com/syncthing/syncthing/vendor/github.com/cznic" - "cznic") - (delete-file-recursively "src/github.com/syncthing/syncthing/vendor") - (mkdir-p "src/github.com/syncthing/syncthing/vendor/github.com/") - (rename-file "cznic" - "src/github.com/syncthing/syncthing/vendor/github.com/cznic") - #t)) - (add-before 'build 'increase-test-timeout (lambda _ (substitute* "src/github.com/syncthing/syncthing/build.go" @@ -129,11 +121,9 @@ (define-public syncthing ("go-github-com-calmh-xdr" ,go-github-com-calmh-xdr) ("go-github-com-ccding-go-stun" ,go-github-com-ccding-go-stun) + ("go-github-com-prometheus-union" ,(go-github-com-prometheus-union)) ("go-github-com-chmduquesne-rollinghash-adler32" ,go-github-com-chmduquesne-rollinghash-adler32) -; ("go-github-com-cznic-ql" ,go-github-com-cznic-ql) ; bundled - ; Used by bundled ql - ("go-github-com-edsrzf-mmap-go" ,go-github-com-edsrzf-mmap-go) ("go-github-com-gobwas-glob" ,go-github-com-gobwas-glob) ("go-github-com-gogo-protobuf-union" ,(go-github-com-gogo-protobuf-union)) @@ -358,8 +348,8 @@ (define* (go-github-com-gogo-protobuf-union (license (package-license go-github-com-gogo-protobuf)))) (define-public go-github-com-gogo-protobuf - (let ((commit "35b81a066e522fb86ece043a8ef1dbfa10b4fed1") - (revision "1")) + (let ((commit "160de10b2537169b5ae3e7e221d28269ef40d311") + (revision "2")) (package (name "go-github-com-gogo-protobuf") (version (git-version "0.5" revision commit)) @@ -371,7 +361,7 @@ (define-public go-github-com-gogo-protobuf (file-name (git-file-name name version)) (sha256 (base32 - "194k6cls2g654df54x5rzrn5nqrfk8yz1jymm667ajjvzcplidja")))) + "0hxq28sgxym04rv0q40gpwkh4ni359q21hq3g78wwxwx4qfd4zwm")))) (build-system go-build-system) (arguments `(#:import-path "github.com/gogo/protobuf/proto" @@ -1853,8 +1843,8 @@ (define-public go-github-com-tjfoc-gmsm-sm4 (license asl2.0)))) (define-public go-github-com-zillode-notify - (let ((commit "8fff849a2026ce7a59f67ed9747dd9c7adc8bd0b") - (revision "1")) + (let ((commit "a8abcfb1ce88ee8d79a300ed65d94b8fb616ddb3") + (revision "2")) (package (name "go-github-com-zillode-notify") (version (git-version "0.0.0" revision commit)) @@ -1866,7 +1856,7 @@ (define-public go-github-com-zillode-notify (file-name (git-file-name name version)) (sha256 (base32 - "1aazci21y85k1c02dlvdfx926vxb3j4i96fn27s7zxmqjlk7l3ga")))) + "031pmbvm0xj4f4fak7im0ywmyn3hns538zlbdj4f23jj69zqdy7k")))) (build-system go-build-system) (arguments '(#:import-path "github.com/zillode/notify")) @@ -1927,3 +1917,281 @@ (define-public go-github-com-klauspost-reedsolomon Erasure Coding in Go.") (home-page "https://github.com/klauspost/reedsolomon") (license expat)))) + +(define-public go-github-com-beorn7-perks-quantile + (let ((commit "4c0e84591b9aa9e6dcfdf3e020114cd81f89d5f9") + (revision "0")) + (package + (name "go-github-com-beorn7-perks-quantile") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/beorn7/perks.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1hrybsql68xw57brzj805xx2mghydpdiysv3gbhr7f5wlxj2514y")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/beorn7/perks/quantile" + #:unpack-path "github.com/beorn7/perks")) + (synopsis "Compute approximate quantiles over an unbounded data stream") + (description "Perks contains the Go package @code{quantile} that computes +approximate quantiles over an unbounded data stream within low memory and CPU +bounds.") + (home-page "https://github.com/beorn7/perks") + (license expat)))) + +(define-public go-github-com-golang-protobuf-proto + (let ((commit "1e59b77b52bf8e4b449a57e6f79f21226d571845") + (revision "0")) + (package + (name "go-github-com-golang-protobuf-proto") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/golang/protobuf.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "19bkh81wnp6njg3931wky6hsnnl2d1ig20vfjxpv450sd3k6yys8")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/golang/protobuf/proto" + #:unpack-path "github.com/golang/protobuf" + #:tests? #f ; requires unpackaged golang.org/x/sync/errgroup + )) + (synopsis "Go support for Protocol Buffers") + (description "This package provides Go support for the Protocol Buffers +data serialization format.") + (home-page "https://github.com/golang/protobuf") + (license bsd-3)))) + +(define-public go-github-com-prometheus-client-model-go + (let ((commit "99fa1f4be8e564e8a6b613da7fa6f46c9edafc6c") + (revision "0")) + (package + (name "go-github-com-prometheus-client-model-go") + (version (git-version "0.0.2" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/prometheus/client_model.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "19y4ywsivhpxj7ikf2j0gm9k3cmyw37qcbfi78n526jxcc7kw998")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/prometheus/client_model/go" + #:unpack-path "github.com/prometheus/client_model")) + (propagated-inputs + `(("go-github-com-golang-protobuf-proto" + ,go-github-com-golang-protobuf-proto))) + (synopsis "Data model artifacts for Prometheus") + (description "This package provides data model artifacts for Prometheus.") + (home-page "https://github.com/prometheus/client_model") + (license asl2.0)))) + +(define-public go-github-com-matttproud-golang-protobuf-extensions-pbutil + (let ((commit "c12348ce28de40eed0136aa2b644d0ee0650e56c") + (revision "0")) + (package + (name "go-github-com-matttproud-golang-protobuf-extensions-pbutil") + (version (git-version "1.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/matttproud/golang_protobuf_extensions.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/matttproud/golang_protobuf_extensions/pbutil" + #:unpack-path "github.com/matttproud/golang_protobuf_extensions")) + (propagated-inputs + `(("go-github-com-golang-protobuf-proto" + ,go-github-com-golang-protobuf-proto))) + (synopsis "Streaming Protocol Buffers in Go") + (description "This package provides various Protocol Buffer +extensions for the Go language, namely support for record length-delimited +message streaming.") + (home-page "https://github.com/matttproud/golang_protobuf_extensions") + (license asl2.0)))) + +(define-public go-github-com-prometheus-common-expfmt + (let ((commit "2e54d0b93cba2fd133edc32211dcc32c06ef72ca") + (revision "0")) + (package + (name "go-github-com-prometheus-common-expfmt") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/prometheus/common.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "14kn5w7imcxxlfdqxl21fsnlf1ms7200g3ldy29hwamldv8qlm7j")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/prometheus/common/expfmt" + #:unpack-path "github.com/prometheus/common" + #:phases + (modify-phases %standard-phases + (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable + (lambda* (#:key outputs #:allow-other-keys) + (map (lambda (file) + (make-file-writable file)) + (find-files + (string-append (assoc-ref outputs "out") + "/src/github.com/prometheus/common/expfmt/testdata/") + ".*\\.gz$")) + #t))))) + (propagated-inputs + `(("go-github-com-golang-protobuf-proto" + ,go-github-com-golang-protobuf-proto) + ("go-github-com-matttproud-golang-protobuf-extensions-pbutil" + ,go-github-com-matttproud-golang-protobuf-extensions-pbutil) + ("go-github-com-prometheus-client-model-go" + ,go-github-com-prometheus-client-model-go))) + (synopsis "Prometheus metrics") + (description "This package provides tools for reading and writing +Prometheus metrics.") + (home-page "https://github.com/prometheus/common") + (license asl2.0)))) + +(define-public go-github-com-prometheus-procfs + (let ((commit "b15cd069a83443be3154b719d0cc9fe8117f09fb") + (revision "0")) + (package + (name "go-github-com-prometheus-procfs") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/prometheus/procfs.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1cr45wg2m40bj2za8f32mq09rjlcnk5kfam0h0hr8wcb015k4wxj")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/prometheus/procfs")) + (synopsis "Go library for reading @file{/proc}") + (description "This Go package @code{procfs} provides functions to retrieve +system, kernel and process metrics from the pseudo-filesystem @file{/proc}.") + (home-page "https://github.com/prometheus/procfs") + (license asl2.0)))) + +(define-public go-github-com-client-golang-prometheus-promhttp + (let ((commit "180b8fdc22b4ea7750bcb43c925277654a1ea2f3") + (revision "0")) + (package + (name "go-github-com-client-golang-prometheus-promhttp") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/prometheus/client_golang.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1kkfx1j9ka18ydsmdi2cdy3hs39c22b39mbc4laykmj2x93lmbdp")))) + (build-system go-build-system) + (arguments + '(#:tests? #f ; The tests require internet access + #:import-path "github.com/prometheus/client_golang/prometheus/promhttp" + #:unpack-path "github.com/prometheus/client_golang")) + (propagated-inputs + `(("go-github-com-beorn7-perks-quantile" + ,go-github-com-beorn7-perks-quantile) + ("go-github-com-golang-protobuf-proto" + ,go-github-com-golang-protobuf-proto) + ("go-github-com-prometheus-client-model-go" + ,go-github-com-prometheus-client-model-go) + ("go-github-com-prometheus-common-expfmt" + ,go-github-com-prometheus-common-expfmt) + ("go-github-com-prometheus-procfs" ,go-github-com-prometheus-procfs))) + (synopsis "HTTP server and client tools for Prometheus") + (description "This package @code{promhttp} provides HTTP client and +server tools for Prometheus metrics.") + (home-page "https://github.com/prometheus/client_golang") + (license asl2.0)))) + +(define-public go-github-com-client-golang-prometheus + (let ((commit "180b8fdc22b4ea7750bcb43c925277654a1ea2f3") + (revision "0")) + (package + (name "go-github-com-prometheus-client-golang-prometheus") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/prometheus/client_golang.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1kkfx1j9ka18ydsmdi2cdy3hs39c22b39mbc4laykmj2x93lmbdp")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/prometheus/client_golang/prometheus" + #:unpack-path "github.com/prometheus/client_golang")) + (propagated-inputs + `(("go-github-com-beorn7-perks-quantile" + ,go-github-com-beorn7-perks-quantile) + ("go-github-com-golang-protobuf-proto" + ,go-github-com-golang-protobuf-proto) + ("go-github-com-prometheus-client-model-go" + ,go-github-com-prometheus-client-model-go) + ("go-github-com-prometheus-common-expfmt" + ,go-github-com-prometheus-common-expfmt) + ("go-github-com-prometheus-procfs" ,go-github-com-prometheus-procfs) + ("go-github-com-client-golang-prometheus-promhttp" + ,go-github-com-client-golang-prometheus-promhttp))) + (synopsis "Prometheus instrumentation library for Go applications") + (description "This package provides the Go client library for the +Prometheus monitoring and alerting system. It has two separate parts, one for +instrumenting application code, and one for creating clients that talk to the +Prometheus HTTP API.") + (home-page "https://github.com/prometheus/client_golang") + (license asl2.0)))) + +(define* (go-github-com-prometheus-union + #:optional (packages (list go-github-com-client-golang-prometheus + go-github-com-client-golang-prometheus-promhttp))) + (package + (name "go-github-com-prometheus-union") + (version (package-version go-github-com-client-golang-prometheus)) + (source #f) + (build-system trivial-build-system) + (arguments + '(#:modules ((guix build union)) + #:builder (begin + (use-modules (ice-9 match) + (guix build union)) + (match %build-inputs + (((names . directories) ...) + (union-build (assoc-ref %outputs "out") + directories)))))) + (inputs (map (lambda (package) + (list (package-name package) package)) + packages)) + (synopsis "Union of Go Prometheus libraries") + (description "This is a union of Go Prometheus libraries") + (home-page (package-home-page go-github-com-client-golang-prometheus)) + (license (package-license go-github-com-client-golang-prometheus)))) diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm index 5310655ce2..8988cdc3b1 100644 --- a/gnu/packages/tcl.scm +++ b/gnu/packages/tcl.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2016 Efraim Flashner ;;; Copyright © 2016 Jan Nieuwenhuizen ;;; Copyright © 2017 Kei Kebreau +;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. ;;; @@ -86,7 +87,7 @@ (define-public tcl (define-public expect (package (name "expect") - (version "5.45.3") + (version "5.45.4") (source (origin (method url-fetch) @@ -94,7 +95,7 @@ (define-public expect version "/expect" version ".tar.gz")) (sha256 (base32 - "1s9ba7m0bmg6brn4x030y2xg7hqara1fr4hlrrllm54mf5xp2865")))) + "0d1cp5hggjl93xwc8h1y6adbnrvpkk0ywkd00inz9ndxn21xm9s9")))) (build-system gnu-build-system) (inputs `(;; TODO: Add these optional dependencies. diff --git a/gnu/packages/upnp.scm b/gnu/packages/upnp.scm index 41f9411281..5e2c990469 100644 --- a/gnu/packages/upnp.scm +++ b/gnu/packages/upnp.scm @@ -29,14 +29,14 @@ (define-module (gnu packages upnp) (define-public miniupnpc (package (name "miniupnpc") - (version "2.0.20171212") + (version "2.0.20180203") (source (origin (method url-fetch) (uri (string-append "https://miniupnp.tuxfamily.org/files/" name "-" version ".tar.gz")) (sha256 - (base32 "0za7pr6hrr3ajkifirhhxfn3hlhl06f622g8hnj5h8y18sp3bwff")))) + (base32 "1dr0qaf2qz49aawgsnv7l41rda5yvdk3qfz2hd5cv9iwav3sipch")))) (build-system gnu-build-system) (native-inputs `(("python" ,python-2))) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 9234fa8c68..c8e7ce1ee8 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2015, 2016 Mathieu Lirzin ;;; Copyright © 2014, 2015, 2016 Mark H Weaver ;;; Copyright © 2014, 2016 Eric Bavier -;;; Copyright © 2015, 2016, 2017 Efraim Flashner +;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner ;;; Copyright © 2015 Kyle Meyer ;;; Copyright © 2015, 2017 Ricardo Wurmus ;;; Copyright © 2016, 2017 Leo Famulari @@ -1456,7 +1456,7 @@ (define-public findnewest (define-public myrepos (package (name "myrepos") - (version "1.20170129") + (version "1.20171231") (source (origin (method git-fetch) @@ -1465,7 +1465,7 @@ (define-public myrepos (commit version))) (file-name (string-append name "-" version "-checkout")) (sha256 - (base32 "15i9bs2i25l7ibv530ghy8280kklcgm5kr6j86s7iwcqqckd0czp")))) + (base32 "10q7lpx152xnkk701fscn4dq99q9znnmv3bc2482khhjg7z8rps0")))) (build-system gnu-build-system) (inputs `(("perl" ,perl))) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index e224a3d8cf..931e6390c4 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2015, 2016, 2017 Efraim Flashner ;;; Copyright © 2015 Andy Patterson ;;; Copyright © 2015 Ricardo Wurmus -;;; Copyright © 2015, 2016, 2017 Alex Vong +;;; Copyright © 2015, 2016, 2017, 2018 Alex Vong ;;; Copyright © 2016, 2017 Alex Griffin ;;; Copyright © 2016 Kei Kebreau ;;; Copyright © 2016 Dmitry Nikolaev @@ -1018,6 +1018,9 @@ (define-public mpv (sha256 (base32 "1d2p6k3y9lqx8bpdal4grrj8ljy7pvd8qgdq8004fmr38afmbb7f")) + (patches (search-patches "mpv-CVE-2018-6360-1.patch" + "mpv-CVE-2018-6360-2.patch" + "mpv-CVE-2018-6360-3.patch")) (file-name (string-append name "-" version ".tar.gz")))) (build-system waf-build-system) (native-inputs diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 1e54f9b95b..65fc9e40e6 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -177,7 +177,7 @@ (define-public mod-wsgi (define-public nginx (package (name "nginx") - ;; Consider updating the nginx-docs package if the nginx package is + ;; Consider updating the nginx-documentation package if the nginx package is ;; updated. (version "1.13.8") (source (origin @@ -310,13 +310,13 @@ (define nginx-xslscript (license l:bsd-2)))) (define-public nginx-documentation - ;; This documentation should be relevant for nginx-1.12.0 - (let ((revision 1961) - (changeset "dd4b6c564e10")) + ;; This documentation should be relevant for nginx@1.13.8. + (let ((revision 2100) + (changeset "cfb7bd672d77")) (package (name "nginx-documentation") (version - (simple-format #f "2017-04-12-~A-~A" revision changeset)) + (simple-format #f "2018-01-22-~A-~A" revision changeset)) (source (origin (method hg-fetch) (uri (hg-reference @@ -325,13 +325,13 @@ (define-public nginx-documentation (file-name (string-append name "-" version)) (sha256 (base32 - "0rycfnnm2xkm777769h1zib428q45j64mx8nzzfzs4v07jbfc8m5")))) + "096fcsc0wnfr847m7dwp17rivd3alxq7v9hq9s5lkfbhylmh18vm")))) (build-system gnu-build-system) (arguments - '(#:tests? #f ; No test suite + '(#:tests? #f ; no test suite #:phases (modify-phases %standard-phases - (delete 'configure) + (delete 'configure) ; no configure script (replace 'build (lambda* (#:key outputs #:allow-other-keys) (let ((output (assoc-ref outputs "out"))) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 7e80e411dd..8bd8847ad9 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -5923,7 +5923,7 @@ (define-public xcompmgr (define-public xpra (package (name "xpra") - (version "2.2.3") + (version "2.2.4") (source (origin (method url-fetch) @@ -5931,7 +5931,7 @@ (define-public xpra version ".tar.xz")) (sha256 (base32 - "03cq16cfffm5f62g1xc3makr03b5wjjfy6zlwag70pc3g0k6n6jh")))) + "0v8yflvisk94bfj0zg4ggdfwrig0f3ss9kjnws3zflsr33cb2hxy")))) (build-system python-build-system) (inputs `(("ffmpeg" ,ffmpeg) ("flac" ,flac) diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm index 02296829c6..d9f1a8d289 100644 --- a/guix/build-system/emacs.scm +++ b/guix/build-system/emacs.scm @@ -82,7 +82,8 @@ (define private-keywords (define* (emacs-build store name inputs #:key source - (tests? #t) + (tests? #f) + (parallel-tests? #t) (test-target "test") (configure-flags ''()) (phases '(@ (guix build emacs-build-system) diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm index bd0d2e0266..b779847424 100644 --- a/guix/build/emacs-build-system.scm +++ b/guix/build/emacs-build-system.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2015 Federico Beffa ;;; Copyright © 2016 David Thompson ;;; Copyright © 2016 Alex Kost +;;; Copyright © 2018 Maxim Cournoyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -42,7 +43,8 @@ (define-module (guix build emacs-build-system) ;; Directory suffix where we install ELPA packages. We avoid ".../elpa" as ;; Emacs expects to find the ELPA repository 'archive-contents' file and the ;; archive signature. -(define %install-suffix "/share/emacs/site-lisp/guix.d") +(define %legacy-install-suffix "/share/emacs/site-lisp") +(define %install-suffix (string-append %legacy-install-suffix "/guix.d")) ;; These are the default inclusion/exclusion regexps for the install phase. (define %default-include '("^[^/]*\\.el$" "^[^/]*\\.info$" "^doc/.*\\.info$")) @@ -72,38 +74,63 @@ (define* (unpack #:key source #:allow-other-keys) #t) (gnu:unpack #:source source))) +(define* (set-emacs-load-path #:key inputs #:allow-other-keys) + "Set the EMACSLOADPATH environment variable so that dependencies are found." + (let* ((input-elisp-dirs (emacs-inputs-el-directories + (emacs-inputs-directories inputs))) + (emacs-load-path-value (string-join + input-elisp-dirs ":" 'suffix))) + (setenv "EMACSLOADPATH" emacs-load-path-value) + (format #t "environment variable `EMACSLOADPATH' set to ~a\n" + emacs-load-path-value))) + (define* (build #:key outputs inputs #:allow-other-keys) "Compile .el files." (let* ((emacs (string-append (assoc-ref inputs "emacs") "/bin/emacs")) (out (assoc-ref outputs "out")) (elpa-name-ver (store-directory->elpa-name-version out)) - (el-dir (string-append out %install-suffix "/" elpa-name-ver)) - (deps-dirs (emacs-inputs-directories inputs))) + (el-dir (string-append out %install-suffix "/" elpa-name-ver))) (setenv "SHELL" "sh") (parameterize ((%emacs emacs)) - (emacs-byte-compile-directory el-dir - (emacs-inputs-el-directories deps-dirs))))) + (emacs-byte-compile-directory el-dir)))) (define* (patch-el-files #:key outputs #:allow-other-keys) "Substitute the absolute \"/bin/\" directory with the right location in the store in '.el' files." + + (define (file-contains-nul-char? file) + (call-with-input-file file + (lambda (in) + (let loop ((line (read-line in 'concat))) + (cond + ((eof-object? line) #f) + ((string-index line #\nul) #t) + (else (loop (read-line in 'concat)))))) + #:binary #t)) + (let* ((out (assoc-ref outputs "out")) (elpa-name-ver (store-directory->elpa-name-version out)) (el-dir (string-append out %install-suffix "/" elpa-name-ver)) - (substitute-cmd (lambda () - (substitute* (find-files "." "\\.el$") - (("\"/bin/([^.]\\S*)\"" _ cmd-name) - (let ((cmd (which cmd-name))) - (unless cmd - (error - "patch-el-files: unable to locate " cmd-name)) - (string-append "\"" cmd "\""))))))) + + ;; (ice-9 regex) uses libc's regexp routines, which cannot deal with + ;; strings containing NULs. Filter out such files. TODO: Remove + ;; this workaround when is fixed. + (el-files (remove file-contains-nul-char? + (find-files (getcwd) "\\.el$")))) + (define (substitute-program-names) + (substitute* el-files + (("\"/bin/([^.]\\S*)\"" _ cmd-name) + (let ((cmd (which cmd-name))) + (unless cmd + (error "patch-el-files: unable to locate " cmd-name)) + (string-append "\"" cmd "\""))))) + (with-directory-excursion el-dir - ;; Some old '.el' files (e.g., tex-buf.el in AUCTeX) are still encoded - ;; with the "ISO-8859-1" locale. - (unless (false-if-exception (substitute-cmd)) + ;; Some old '.el' files (e.g., tex-buf.el in AUCTeX) are still + ;; ISO-8859-1-encoded. + (unless (false-if-exception (substitute-program-names)) (with-fluids ((%default-port-encoding "ISO-8859-1")) - (substitute-cmd)))) + (substitute-program-names)))) #t)) (define* (install #:key outputs @@ -199,18 +226,27 @@ (define (emacs-inputs-directories inputs) (match inputs (((names . directories) ...) directories)))) +(define (emacs-input->el-directory emacs-input) + "Return the correct Elisp directory location of EMACS-INPUT or #f if none." + (let ((legacy-elisp-dir (string-append emacs-input %legacy-install-suffix)) + (guix-elisp-dir (string-append + emacs-input %install-suffix "/" + (store-directory->elpa-name-version emacs-input)))) + (cond + ((file-exists? guix-elisp-dir) guix-elisp-dir) + ((file-exists? legacy-elisp-dir) legacy-elisp-dir) + (else (format #t "warning: could not locate elisp directory under `~a'\n" + emacs-input) + #f)))) + (define (emacs-inputs-el-directories dirs) "Build the list of Emacs Lisp directories from the Emacs package directory DIRS." - (append-map (lambda (d) - (list (string-append d "/share/emacs/site-lisp") - (string-append d %install-suffix "/" - (store-directory->elpa-name-version d)))) - dirs)) + (filter-map emacs-input->el-directory dirs)) (define (package-name-version->elpa-name-version name-ver) "Convert the Guix package NAME-VER to the corresponding ELPA name-version -format. Essnetially drop the prefix used in Guix." +format. Essentially drop the prefix used in Guix." (if (emacs-package? name-ver) ; checks for "emacs-" prefix (string-drop name-ver (string-length "emacs-")) name-ver)) @@ -224,12 +260,14 @@ (define (store-directory->elpa-name-version store-dir) (define %standard-phases (modify-phases gnu:%standard-phases + (add-after 'set-paths 'set-emacs-load-path set-emacs-load-path) (replace 'unpack unpack) (delete 'configure) - (delete 'check) - (delete 'install) - (replace 'build build) - (add-before 'build 'install install) + ;; Move the build phase after install: the .el files are byte compiled + ;; directly in the store. + (delete 'build) + (replace 'install install) + (add-after 'install 'build build) (add-after 'install 'make-autoloads make-autoloads) (add-after 'make-autoloads 'patch-el-files patch-el-files) (add-after 'make-autoloads 'move-doc move-doc))) diff --git a/guix/build/emacs-utils.scm b/guix/build/emacs-utils.scm index fd06aad7ac..8389ca582f 100644 --- a/guix/build/emacs-utils.scm +++ b/guix/build/emacs-utils.scm @@ -58,14 +58,9 @@ (define (emacs-generate-autoloads name directory) (update-directory-autoloads ,directory)))) (emacs-batch-eval expr))) -(define* (emacs-byte-compile-directory dir #:optional (dependency-dirs '())) - "Byte compile all files in DIR and its sub-directories. Before compiling -the files, add DIR and all directories in DEPENDENCY-DIRS to 'load-path'." - (let ((expr `(progn - (add-to-list 'load-path ,dir) - (when ',dependency-dirs - (setq load-path (append ',dependency-dirs load-path))) - (byte-recompile-directory (file-name-as-directory ,dir) 0)))) +(define* (emacs-byte-compile-directory dir) + "Byte compile all files in DIR and its sub-directories." + (let ((expr `(byte-recompile-directory (file-name-as-directory ,dir) 0))) (emacs-batch-eval expr))) (define-syntax emacs-substitute-sexps