Merge branch 'master' into core-updates
This commit is contained in:
		
						commit
						d02bb02f7d
					
				
					 90 changed files with 2008 additions and 1160 deletions
				
			
		| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
 | 
			
		||||
;;; Copyright © 2016, 2018 Ludovic Courtès <ludo@gnu.org>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -19,6 +19,7 @@
 | 
			
		|||
(define-module (run-system-tests)
 | 
			
		||||
  #:use-module (gnu tests)
 | 
			
		||||
  #:use-module (guix store)
 | 
			
		||||
  #:use-module (guix status)
 | 
			
		||||
  #:use-module (guix monads)
 | 
			
		||||
  #:use-module (guix derivations)
 | 
			
		||||
  #:use-module (guix ui)
 | 
			
		||||
| 
						 | 
				
			
			@ -63,25 +64,27 @@
 | 
			
		|||
          (length tests))
 | 
			
		||||
 | 
			
		||||
  (with-store store
 | 
			
		||||
    (run-with-store store
 | 
			
		||||
      (mlet* %store-monad ((drv (mapm %store-monad system-test-value tests))
 | 
			
		||||
                           (out -> (map derivation->output-path drv)))
 | 
			
		||||
        (mbegin %store-monad
 | 
			
		||||
          (show-what-to-build* drv)
 | 
			
		||||
          (set-build-options* #:keep-going? #t #:keep-failed? #t
 | 
			
		||||
                              #:print-build-trace #t
 | 
			
		||||
                              #:fallback? #t)
 | 
			
		||||
          (built-derivations* drv)
 | 
			
		||||
          (mlet %store-monad ((valid  (filterm (store-lift valid-path?)
 | 
			
		||||
                                               out))
 | 
			
		||||
                              (failed (filterm (store-lift
 | 
			
		||||
                                                (negate valid-path?))
 | 
			
		||||
                                               out)))
 | 
			
		||||
            (format #t "TOTAL: ~a\n" (length drv))
 | 
			
		||||
            (for-each (lambda (item)
 | 
			
		||||
                        (format #t "PASS: ~a~%" item))
 | 
			
		||||
                      valid)
 | 
			
		||||
            (for-each (lambda (item)
 | 
			
		||||
                        (format #t "FAIL: ~a~%" item))
 | 
			
		||||
                      failed)
 | 
			
		||||
            (exit (null? failed))))))))
 | 
			
		||||
    (with-status-report print-build-event
 | 
			
		||||
      (run-with-store store
 | 
			
		||||
        (mlet* %store-monad ((drv (mapm %store-monad system-test-value tests))
 | 
			
		||||
                             (out -> (map derivation->output-path drv)))
 | 
			
		||||
          (mbegin %store-monad
 | 
			
		||||
            (show-what-to-build* drv)
 | 
			
		||||
            (set-build-options* #:keep-going? #t #:keep-failed? #t
 | 
			
		||||
                                #:print-build-trace #t
 | 
			
		||||
                                #:print-extended-build-trace? #t
 | 
			
		||||
                                #:fallback? #t)
 | 
			
		||||
            (built-derivations* drv)
 | 
			
		||||
            (mlet %store-monad ((valid  (filterm (store-lift valid-path?)
 | 
			
		||||
                                                 out))
 | 
			
		||||
                                (failed (filterm (store-lift
 | 
			
		||||
                                                  (negate valid-path?))
 | 
			
		||||
                                                 out)))
 | 
			
		||||
              (format #t "TOTAL: ~a\n" (length drv))
 | 
			
		||||
              (for-each (lambda (item)
 | 
			
		||||
                          (format #t "PASS: ~a~%" item))
 | 
			
		||||
                        valid)
 | 
			
		||||
              (for-each (lambda (item)
 | 
			
		||||
                          (format #t "FAIL: ~a~%" item))
 | 
			
		||||
                        failed)
 | 
			
		||||
              (exit (null? failed)))))))))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -87,7 +87,9 @@ dnl We require pkg.m4 (from pkg-config) and guile.m4 (from Guile.)
 | 
			
		|||
dnl Make sure they are available.
 | 
			
		||||
m4_pattern_forbid([PKG_CHECK_MODULES])
 | 
			
		||||
m4_pattern_forbid([GUILE_MODULE_AVAILABLE])
 | 
			
		||||
m4_pattern_forbid([^GUILE_P$])
 | 
			
		||||
m4_pattern_forbid([^GUILE_P])
 | 
			
		||||
m4_pattern_allow([^GUILE_PKG_ERRORS])
 | 
			
		||||
m4_pattern_forbid([^GUIX_])
 | 
			
		||||
 | 
			
		||||
dnl Search for 'guile' and 'guild'.  This macro defines
 | 
			
		||||
dnl 'GUILE_EFFECTIVE_VERSION'.
 | 
			
		||||
| 
						 | 
				
			
			@ -232,8 +234,6 @@ AC_SUBST([LIBGCRYPT])
 | 
			
		|||
AC_SUBST([LIBGCRYPT_PREFIX])
 | 
			
		||||
AC_SUBST([LIBGCRYPT_LIBDIR])
 | 
			
		||||
 | 
			
		||||
GUIX_ASSERT_LIBGCRYPT_USABLE
 | 
			
		||||
 | 
			
		||||
dnl Library name of zlib suitable for 'dynamic-link'.
 | 
			
		||||
GUIX_LIBZ_LIBDIR([libz_libdir])
 | 
			
		||||
if test "x$libz_libdir" = "x"; then
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -468,6 +468,14 @@ Please follow our code formatting rules, possibly running the
 | 
			
		|||
@command{etc/indent-code.el} script to do that automatically for you
 | 
			
		||||
(@pxref{Formatting Code}).
 | 
			
		||||
 | 
			
		||||
@item
 | 
			
		||||
When possible, use mirrors in the source URL (@pxref{Invoking guix download}).
 | 
			
		||||
Use reliable URLs, not generated ones.  For instance, GitHub archives are not
 | 
			
		||||
necessarily identical from one generation to the next, so in this case it's
 | 
			
		||||
often better to clone the repository.  Don't use the @command{name} field in
 | 
			
		||||
the URL: it is not very useful and if the name changes, the URL will probably
 | 
			
		||||
be wrong.
 | 
			
		||||
 | 
			
		||||
@end enumerate
 | 
			
		||||
 | 
			
		||||
When posting a patch to the mailing list, use @samp{[PATCH] @dots{}} as
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2831,7 +2831,7 @@ generation---i.e., the previous Guix---and so on:
 | 
			
		|||
$ guix package -p ~/.config/guix/current --roll-back
 | 
			
		||||
switched from generation 3 to 2
 | 
			
		||||
$ guix package -p ~/.config/guix/current --delete-generations=1
 | 
			
		||||
deleting /home/charlie/.config/guix/current-1-link
 | 
			
		||||
deleting /var/guix/profiles/per-user/charlie/current-guix-1-link
 | 
			
		||||
@end example
 | 
			
		||||
 | 
			
		||||
The @command{guix pull} command is usually invoked with no arguments,
 | 
			
		||||
| 
						 | 
				
			
			@ -6365,9 +6365,8 @@ retrieved using the @option{--log-file} option.
 | 
			
		|||
 | 
			
		||||
@item --file=@var{file}
 | 
			
		||||
@itemx -f @var{file}
 | 
			
		||||
 | 
			
		||||
Build the package or derivation that the code within @var{file}
 | 
			
		||||
evaluates to.
 | 
			
		||||
Build the package, derivation, or other file-like object that the code within
 | 
			
		||||
@var{file} evaluates to (@pxref{G-Expressions, file-like objects}).
 | 
			
		||||
 | 
			
		||||
As an example, @var{file} might contain a package definition like this
 | 
			
		||||
(@pxref{Defining Packages}):
 | 
			
		||||
| 
						 | 
				
			
			@ -11738,19 +11737,36 @@ When true, enable connman's vpn plugin.
 | 
			
		|||
@defvr {Scheme Variable} wpa-supplicant-service-type
 | 
			
		||||
This is the service type to run @url{https://w1.fi/wpa_supplicant/,WPA
 | 
			
		||||
supplicant}, an authentication daemon required to authenticate against
 | 
			
		||||
encrypted WiFi or ethernet networks.  It is configured to listen for
 | 
			
		||||
requests on D-Bus.
 | 
			
		||||
 | 
			
		||||
The value of this service is the @code{wpa-supplicant} package to use.
 | 
			
		||||
Thus, it can be instantiated like this:
 | 
			
		||||
 | 
			
		||||
@lisp
 | 
			
		||||
(use-modules (gnu services networking))
 | 
			
		||||
 | 
			
		||||
(service wpa-supplicant-service-type)
 | 
			
		||||
@end lisp
 | 
			
		||||
encrypted WiFi or ethernet networks.
 | 
			
		||||
@end defvr
 | 
			
		||||
 | 
			
		||||
@deftp {Data Type} wpa-supplicant-configuration
 | 
			
		||||
Data type representing the configuration of WPA Supplicant.
 | 
			
		||||
 | 
			
		||||
It takes the following parameters:
 | 
			
		||||
 | 
			
		||||
@table @asis
 | 
			
		||||
@item @code{wpa-supplicant} (default: @code{wpa-supplicant})
 | 
			
		||||
The WPA Supplicant package to use.
 | 
			
		||||
 | 
			
		||||
@item @code{dbus?} (default: @code{#t})
 | 
			
		||||
Whether to listen for requests on D-Bus.
 | 
			
		||||
 | 
			
		||||
@item @code{pid-file} (default: @code{"/var/run/wpa_supplicant.pid"})
 | 
			
		||||
Where to store the PID file.
 | 
			
		||||
 | 
			
		||||
@item @code{interface} (default: @code{#f})
 | 
			
		||||
If this is set, it must specify the name of a network interface that
 | 
			
		||||
WPA supplicant will control.
 | 
			
		||||
 | 
			
		||||
@item @code{config-file} (default: @code{#f})
 | 
			
		||||
Optional configuration file to use.
 | 
			
		||||
 | 
			
		||||
@item @code{extra-options} (default: @code{'()})
 | 
			
		||||
List of additional command-line arguments to pass to the daemon.
 | 
			
		||||
@end table
 | 
			
		||||
@end deftp
 | 
			
		||||
 | 
			
		||||
@cindex iptables
 | 
			
		||||
@defvr {Scheme Variable} iptables-service-type
 | 
			
		||||
This is the service type to set up an iptables configuration. iptables is a
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -160,6 +160,9 @@ chk_sys_arch()
 | 
			
		|||
        aarch64)
 | 
			
		||||
            local arch=aarch64
 | 
			
		||||
            ;;
 | 
			
		||||
	armv7l)
 | 
			
		||||
	    local arch=armhf
 | 
			
		||||
	    ;;
 | 
			
		||||
        *)
 | 
			
		||||
            _err "${ERR}Unsupported CPU type: ${arch}"
 | 
			
		||||
            exit 1
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,7 +15,9 @@
 | 
			
		|||
                 ((equal yas-text "hg-fetch")  "hg-reference...")
 | 
			
		||||
                 ((equal yas-text "cvs-fetch") "cvs-reference...")
 | 
			
		||||
                 (t "(string-append \\"https://\\" version \\".tar.gz\\")"))}$0)
 | 
			
		||||
 ${1:$(cond ((member yas-text '("git-fetch" "svn-fetch" "hg-fetch" "cvs-fetch"))
 | 
			
		||||
 ${1:$(cond ((equal yas-text "git-fetch")
 | 
			
		||||
             "(file-name (git-file-name name version))")
 | 
			
		||||
            ((member yas-text '("svn-fetch" "hg-fetch" "cvs-fetch"))
 | 
			
		||||
             "(file-name (string-append name \\"-\\" version \\"-checkout\\"))")
 | 
			
		||||
            (t ""))}
 | 
			
		||||
 (sha256
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										14
									
								
								gnu/local.mk
									
										
									
									
									
								
							
							
						
						
									
										14
									
								
								gnu/local.mk
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -622,7 +622,6 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/clementine-fix-sqlite.patch		\
 | 
			
		||||
  %D%/packages/patches/clementine-remove-crypto++-dependency.patch	\
 | 
			
		||||
  %D%/packages/patches/clementine-use-openssl.patch		\
 | 
			
		||||
  %D%/packages/patches/clisp-glibc-2.26.patch			\
 | 
			
		||||
  %D%/packages/patches/clisp-remove-failing-test.patch		\
 | 
			
		||||
  %D%/packages/patches/clucene-pkgconfig.patch			\
 | 
			
		||||
  %D%/packages/patches/clx-remove-demo.patch			\
 | 
			
		||||
| 
						 | 
				
			
			@ -660,7 +659,6 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/elogind-glibc-2.27.patch			\
 | 
			
		||||
  %D%/packages/patches/einstein-build.patch			\
 | 
			
		||||
  %D%/packages/patches/emacs-exec-path.patch			\
 | 
			
		||||
  %D%/packages/patches/emacs-exwm-fix-fullscreen-issue.patch	\
 | 
			
		||||
  %D%/packages/patches/emacs-fix-scheme-indent-function.patch	\
 | 
			
		||||
  %D%/packages/patches/emacs-json-reformat-fix-tests.patch	\
 | 
			
		||||
  %D%/packages/patches/emacs-highlight-stages-add-gexp.patch	\
 | 
			
		||||
| 
						 | 
				
			
			@ -1070,6 +1068,10 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/pygpgme-disable-problematic-tests.patch  \
 | 
			
		||||
  %D%/packages/patches/pyqt-configure.patch			\
 | 
			
		||||
  %D%/packages/patches/pyqt-public-sip.patch			\
 | 
			
		||||
  %D%/packages/patches/python2-CVE-2018-1060.patch		\
 | 
			
		||||
  %D%/packages/patches/python2-CVE-2018-1061.patch		\
 | 
			
		||||
  %D%/packages/patches/python2-CVE-2018-14647.patch		\
 | 
			
		||||
  %D%/packages/patches/python2-CVE-2018-1000802.patch		\
 | 
			
		||||
  %D%/packages/patches/python-2-deterministic-build-info.patch	\
 | 
			
		||||
  %D%/packages/patches/python-2.7-adjust-tests.patch		\
 | 
			
		||||
  %D%/packages/patches/python-2.7-search-paths.patch		\
 | 
			
		||||
| 
						 | 
				
			
			@ -1078,6 +1080,7 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/python-3-deterministic-build-info.patch	\
 | 
			
		||||
  %D%/packages/patches/python-3-search-paths.patch		\
 | 
			
		||||
  %D%/packages/patches/python-3-fix-tests.patch			\
 | 
			
		||||
  %D%/packages/patches/python-CVE-2018-14647.patch		\
 | 
			
		||||
  %D%/packages/patches/python-axolotl-AES-fix.patch		\
 | 
			
		||||
  %D%/packages/patches/python-cairocffi-dlopen-path.patch	\
 | 
			
		||||
  %D%/packages/patches/python-fix-tests.patch			\
 | 
			
		||||
| 
						 | 
				
			
			@ -1232,8 +1235,7 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/wpa-supplicant-fix-nonce-reuse.patch	\
 | 
			
		||||
  %D%/packages/patches/wpa-supplicant-krack-followups.patch	\
 | 
			
		||||
  %D%/packages/patches/wxmaxima-do-not-use-old-gnuplot-parameters.patch	\
 | 
			
		||||
  %D%/packages/patches/x265-arm-asm-primitives.patch		\
 | 
			
		||||
  %D%/packages/patches/x265-fix-ppc64le-build.patch		\
 | 
			
		||||
  %D%/packages/patches/x265-detect512-all-arches.patch		\
 | 
			
		||||
  %D%/packages/patches/xapian-revert-5489fb2f8.patch		\
 | 
			
		||||
  %D%/packages/patches/xboing-CVE-2004-0149.patch		\
 | 
			
		||||
  %D%/packages/patches/xf86-video-ark-remove-mibstore.patch	\
 | 
			
		||||
| 
						 | 
				
			
			@ -1251,9 +1253,7 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/xinetd-CVE-2013-4342.patch		\
 | 
			
		||||
  %D%/packages/patches/xmodmap-asprintf.patch 			\
 | 
			
		||||
  %D%/packages/patches/zathura-pdf-mupdf-link-to-jpeg-libraries.patch \
 | 
			
		||||
  %D%/packages/patches/zathura-plugindir-environment-variable.patch	\
 | 
			
		||||
  %D%/packages/patches/zstd-fix-stdin-list-without-tty.patch	\
 | 
			
		||||
  %D%/packages/patches/zstd-fix-stdin-list-test.patch
 | 
			
		||||
  %D%/packages/patches/zathura-plugindir-environment-variable.patch
 | 
			
		||||
 | 
			
		||||
MISC_DISTRO_FILES =				\
 | 
			
		||||
  %D%/packages/ld-wrapper.in
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2014 Marek Benc <merkur32@gmail.com>
 | 
			
		||||
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 | 
			
		||||
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -62,7 +62,7 @@
 | 
			
		|||
    (build-system glib-or-gtk-build-system)
 | 
			
		||||
    (arguments                   ;; NOTE: rsvg is disabled, since Abiword
 | 
			
		||||
      `(#:configure-flags        ;; supports it directly, and its BS is broken.
 | 
			
		||||
        (list
 | 
			
		||||
        (list                    ;; wmf was removed from Guix for security.
 | 
			
		||||
          "--enable-clipart"     ;; TODO: The following plugins have unresolved
 | 
			
		||||
          "--enable-templates"   ;; dependencies: aiksaurus, grammar, wpg, gda,
 | 
			
		||||
          (string-append         ;; wordperfect, psion, mathview.
 | 
			
		||||
| 
						 | 
				
			
			@ -73,7 +73,7 @@
 | 
			
		|||
              "latex " "loadbindings " "mht " "mif " "mswrite " "opendocument "
 | 
			
		||||
              "openwriter " "openxml " "opml " "ots " "paint " "passepartout "
 | 
			
		||||
              "pdb " "pdf " "presentation " "s5 " "sdw " "t602 " "urldict "
 | 
			
		||||
              "wikipedia " "wmf " "wml " "xslfo"))
 | 
			
		||||
              "wikipedia " "wml " "xslfo"))
 | 
			
		||||
        ;; tests fail with: Gtk-CRITICAL **: gtk_settings_get_for_screen:
 | 
			
		||||
        ;;                  assertion 'GDK_IS_SCREEN (screen)' failed
 | 
			
		||||
        ;;                  GLib-GObject-CRITICAL **: g_object_get_qdata:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,6 +13,7 @@
 | 
			
		|||
;;; Copyright © 2018 okapi <okapi@firemail.cc>
 | 
			
		||||
;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 | 
			
		||||
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 | 
			
		||||
;;; Copyright © 2018 Brett Gilio <brettg@posteo.net>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -417,7 +418,7 @@ engineers, musicians, soundtrack editors and composers.")
 | 
			
		|||
       ;; and fails with various errors.  See
 | 
			
		||||
       ;; <http://sourceforge.net/p/audacity/mailman/message/33524292/>.
 | 
			
		||||
       #:tests? #f))
 | 
			
		||||
    (home-page "http://audacity.sourceforge.net/")
 | 
			
		||||
    (home-page "https://www.audacityteam.org/")
 | 
			
		||||
    (synopsis "Software for recording and editing sounds")
 | 
			
		||||
    (description
 | 
			
		||||
     "Audacity is a multi-track audio editor designed for recording, playing
 | 
			
		||||
| 
						 | 
				
			
			@ -650,7 +651,7 @@ emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
 | 
			
		|||
(define-public csound
 | 
			
		||||
  (package
 | 
			
		||||
    (name "csound")
 | 
			
		||||
    (version "6.09.1")
 | 
			
		||||
    (version "6.11.0")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
| 
						 | 
				
			
			@ -659,7 +660,7 @@ emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
 | 
			
		|||
              (file-name (string-append name "-" version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0xqpqws4jsv7fyawcjzwaw544qbfh29xq164kdf30a9v1n3yklp4"))))
 | 
			
		||||
                "072pk5h9w0vhw0ncc9dn90haw1yv18v04iwwjn8nsp6930w7dvxd"))))
 | 
			
		||||
    (build-system cmake-build-system)
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("alsa-lib" ,alsa-lib)
 | 
			
		||||
| 
						 | 
				
			
			@ -674,7 +675,7 @@ emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
 | 
			
		|||
     `(("bison" ,bison)
 | 
			
		||||
       ("flex" ,flex)
 | 
			
		||||
       ("zlib" ,zlib)))
 | 
			
		||||
    (home-page "http://csound.github.io/")
 | 
			
		||||
    (home-page "https://csound.com/")
 | 
			
		||||
    (synopsis "Sound and music computing system")
 | 
			
		||||
    (description
 | 
			
		||||
     "Csound is a user-programmable and user-extensible sound processing
 | 
			
		||||
| 
						 | 
				
			
			@ -1915,7 +1916,7 @@ lv2-c++-tools.")
 | 
			
		|||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
                    "http://kcat.strangesoft.net/openal-releases/openal-soft-"
 | 
			
		||||
                    "http://openal-soft.org/openal-releases/openal-soft-"
 | 
			
		||||
                    version ".tar.bz2"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
| 
						 | 
				
			
			@ -1952,7 +1953,7 @@ emitters are among the features handled by the API.  More advanced effects,
 | 
			
		|||
including air absorption, occlusion, and environmental reverb, are available
 | 
			
		||||
through the EFX extension.  It also facilitates streaming audio, multi-channel
 | 
			
		||||
buffers, and audio capture.")
 | 
			
		||||
    (home-page "http://kcat.strangesoft.net/openal.html")
 | 
			
		||||
    (home-page "http://openal-soft.org/")
 | 
			
		||||
    (license license:lgpl2.0+)))
 | 
			
		||||
 | 
			
		||||
(define-public freealut
 | 
			
		||||
| 
						 | 
				
			
			@ -3089,7 +3090,7 @@ with support for HD extensions.")
 | 
			
		|||
(define-public bs1770gain
 | 
			
		||||
  (package
 | 
			
		||||
    (name "bs1770gain")
 | 
			
		||||
    (version "0.4.12")
 | 
			
		||||
    (version "0.5.0")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -3097,7 +3098,7 @@ with support for HD extensions.")
 | 
			
		|||
                           version "/bs1770gain-" version ".tar.gz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "0n9skdap1vnl6w52fx0gsrjlk7w3xgdwi62ycyf96h29rx059z6a"))))
 | 
			
		||||
         "0vd7320k7s2zcn2vganclxbr1vav18ghld27rcwskvcc3dm8prii"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (inputs `(("ffmpeg" ,ffmpeg)
 | 
			
		||||
              ("sox" ,sox)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 | 
			
		||||
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
| 
						 | 
				
			
			@ -32,24 +32,14 @@
 | 
			
		|||
(define-public augeas
 | 
			
		||||
  (package
 | 
			
		||||
    (name "augeas")
 | 
			
		||||
    (version "1.10.1")
 | 
			
		||||
    (version "1.11.0")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "http://download.augeas.net/augeas-"
 | 
			
		||||
                                  version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0k9nssn7lk58cl5zv3c8kv2zx9cm2yks3sj7q4fd6qdjz9m2bnsj"))
 | 
			
		||||
              (modules '((guix build utils)))
 | 
			
		||||
              (snippet
 | 
			
		||||
               '(begin
 | 
			
		||||
                  ;; The gnulib test-lock test is prone to writer starvation
 | 
			
		||||
                  ;; with our glibc@2.25, which prefers readers, so disable it.
 | 
			
		||||
                  ;; The gnulib commit b20e8afb0b2 should fix this once
 | 
			
		||||
                  ;; incorporated here.
 | 
			
		||||
                  (substitute* "gnulib/tests/Makefile.in"
 | 
			
		||||
                    (("test-lock\\$\\(EXEEXT\\) ") ""))
 | 
			
		||||
                  #t))))
 | 
			
		||||
                "1c507qj6dfn2dnsl27w94zs9r45xrgm07y8bqba9ry2s0psfhg1r"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    ;; Marked as "required" in augeas.pc
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -862,7 +862,7 @@ is like a time machine for your data. ")
 | 
			
		|||
(define-public restic
 | 
			
		||||
  (package
 | 
			
		||||
    (name "restic")
 | 
			
		||||
    (version "0.9.2")
 | 
			
		||||
    (version "0.9.3")
 | 
			
		||||
    ;; TODO Try packaging the bundled / vendored dependencies in the 'vendor/'
 | 
			
		||||
    ;; directory.
 | 
			
		||||
    (source (origin
 | 
			
		||||
| 
						 | 
				
			
			@ -873,7 +873,7 @@ is like a time machine for your data. ")
 | 
			
		|||
              (file-name (string-append name "-" version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "15bwkydxcg4xhrnqxvxji8wacrsndb1a6frj98wggfaijqzfx3lg"))))
 | 
			
		||||
                "1l1ddnf61pfsrry97qwhhdzywin2mgnbrkhcc9pabsdfk602anmr"))))
 | 
			
		||||
    (build-system go-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:import-path "github.com/restic/restic"
 | 
			
		||||
| 
						 | 
				
			
			@ -887,6 +887,8 @@ is like a time machine for your data. ")
 | 
			
		|||
             (with-directory-excursion (string-append
 | 
			
		||||
                                        "src/github.com/restic/restic-"
 | 
			
		||||
                                        ,version)
 | 
			
		||||
               ;; Disable 'restic self-update'.  It makes little sense in Guix.
 | 
			
		||||
               (substitute* "build.go" (("selfupdate") ""))
 | 
			
		||||
               (invoke "go" "run" "build.go"))))
 | 
			
		||||
 | 
			
		||||
         (replace 'check
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,6 +23,7 @@
 | 
			
		|||
  #:use-module (guix git-download)
 | 
			
		||||
  #:use-module (guix packages)
 | 
			
		||||
  #:use-module (guix build-system ant)
 | 
			
		||||
  #:use-module (guix build utils)
 | 
			
		||||
  #:use-module (gnu packages)
 | 
			
		||||
  #:use-module (gnu packages compression)
 | 
			
		||||
  #:use-module (gnu packages java)
 | 
			
		||||
| 
						 | 
				
			
			@ -139,8 +140,8 @@ public interface EventListenerInitializer {
 | 
			
		|||
    (native-inputs
 | 
			
		||||
     `(("unzip" ,unzip)))
 | 
			
		||||
    (home-page "https://www.w3.org/Style/CSS/SAC/")
 | 
			
		||||
    (synopsis "W3C SVG interface")
 | 
			
		||||
    (description "This package provides a SVG interface.")
 | 
			
		||||
    (synopsis "W3C SVG 1.0 interface")
 | 
			
		||||
    (description "This package provides a SVG 1.0 interface.")
 | 
			
		||||
    (license license:w3c)))
 | 
			
		||||
 | 
			
		||||
(define-public java-w3c-svg
 | 
			
		||||
| 
						 | 
				
			
			@ -155,8 +156,15 @@ public interface EventListenerInitializer {
 | 
			
		|||
        (sha256
 | 
			
		||||
         (base32
 | 
			
		||||
          "0jicqcrxav8ggs37amgvvwgc2f0qp1c5wns4rb2i3si83s2m09ns"))))
 | 
			
		||||
    (arguments
 | 
			
		||||
     (substitute-keyword-arguments (package-arguments java-w3c-svg-1.0)
 | 
			
		||||
       ((#:phases phases)
 | 
			
		||||
       `(modify-phases ,phases
 | 
			
		||||
          (delete 'patch-interface)))))
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `())))
 | 
			
		||||
     `())
 | 
			
		||||
    (synopsis "W3C SVG interface")
 | 
			
		||||
    (description "This package provides a SVG interface.")))
 | 
			
		||||
 | 
			
		||||
(define-public java-w3c-sac
 | 
			
		||||
  (package
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -886,3 +886,30 @@ Time-Course experiments) analyses 4sU-seq and RNA-seq time-course data in
 | 
			
		|||
order to evaluate synthesis, processing and degradation rates and assess via
 | 
			
		||||
modeling the rates that determines changes in mature mRNA levels.")
 | 
			
		||||
    (license license:gpl2)))
 | 
			
		||||
 | 
			
		||||
(define-public r-dnabarcodes
 | 
			
		||||
  (package
 | 
			
		||||
    (name "r-dnabarcodes")
 | 
			
		||||
    (version "1.10.0")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (bioconductor-uri "DNABarcodes" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "0xhna7f0kr7pp2hqwara5i57m9mdr65shflfxiyw6yy3g90pgb5x"))))
 | 
			
		||||
    (properties `((upstream-name . "DNABarcodes")))
 | 
			
		||||
    (build-system r-build-system)
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("r-bh" ,r-bh)
 | 
			
		||||
       ("r-matrix" ,r-matrix)
 | 
			
		||||
       ("r-rcpp" ,r-rcpp)))
 | 
			
		||||
    (home-page "https://bioconductor.org/packages/DNABarcodes")
 | 
			
		||||
    (synopsis "Create and analyze DNA barcodes")
 | 
			
		||||
    (description
 | 
			
		||||
     "This package offers tools to create DNA barcode sets capable of
 | 
			
		||||
correcting insertion, deletion, and substitution errors.  Existing barcodes
 | 
			
		||||
can be analyzed regarding their minimal, maximal and average distances between
 | 
			
		||||
barcodes.  Finally, reads that start with a (possibly mutated) barcode can be
 | 
			
		||||
demultiplexed, i.e. assigned to their original reference barcode.")
 | 
			
		||||
    (license license:gpl2)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11735,19 +11735,39 @@ using nucleotide or amino-acid sequence data.")
 | 
			
		|||
(define-public kallisto
 | 
			
		||||
  (package
 | 
			
		||||
    (name "kallisto")
 | 
			
		||||
    (version "0.43.1")
 | 
			
		||||
    (version "0.44.0")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://github.com/pachterlab/"
 | 
			
		||||
                                  "kallisto/archive/v" version ".tar.gz"))
 | 
			
		||||
              (file-name (string-append name "-" version ".tar.gz"))
 | 
			
		||||
              (method git-fetch)
 | 
			
		||||
              (uri (git-reference
 | 
			
		||||
                    (url "https://github.com/pachterlab/kallisto.git")
 | 
			
		||||
                    (commit (string-append "v" version))))
 | 
			
		||||
              (file-name (git-file-name name version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "03j3iqhvq7ya3c91gidly3k3jvgm97vjq4scihrlxh315j696r11"))))
 | 
			
		||||
                "0nj382jiywqnpgvyhichajpkkh5r0bapn43f4dx40zdaq5v4m40m"))))
 | 
			
		||||
    (build-system cmake-build-system)
 | 
			
		||||
    (arguments `(#:tests? #f))          ; no "check" target
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:tests? #f          ; no "check" target
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-after 'unpack 'do-not-use-bundled-htslib
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (substitute* "CMakeLists.txt"
 | 
			
		||||
               (("^ExternalProject_Add" m)
 | 
			
		||||
                (string-append "if (NEVER)\n" m))
 | 
			
		||||
               (("^\\)")
 | 
			
		||||
                (string-append ")\nendif(NEVER)"))
 | 
			
		||||
               (("include_directories\\(\\$\\{htslib_PREFIX.*" m)
 | 
			
		||||
                (string-append "# " m)))
 | 
			
		||||
             (substitute* "src/CMakeLists.txt"
 | 
			
		||||
               (("target_link_libraries\\(kallisto kallisto_core pthread \
 | 
			
		||||
\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/../ext/htslib/libhts.a\\)")
 | 
			
		||||
                "target_link_libraries(kallisto kallisto_core pthread hts)")
 | 
			
		||||
               (("include_directories\\(\\.\\./ext/htslib\\)") ""))
 | 
			
		||||
             #t)))))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("hdf5" ,hdf5)
 | 
			
		||||
       ("htslib" ,htslib)
 | 
			
		||||
       ("zlib" ,zlib)))
 | 
			
		||||
    (home-page "http://pachterlab.github.io/kallisto/")
 | 
			
		||||
    (synopsis "Near-optimal RNA-Seq quantification")
 | 
			
		||||
| 
						 | 
				
			
			@ -14057,3 +14077,63 @@ absolute GSEA.")
 | 
			
		|||
    (description "Ngless is a domain-specific language for
 | 
			
		||||
@dfn{next-generation sequencing} (NGS) data processing.")
 | 
			
		||||
    (license license:expat)))
 | 
			
		||||
 | 
			
		||||
(define-public filtlong
 | 
			
		||||
  ;; The recommended way to install is to clone the git repository
 | 
			
		||||
  ;; https://github.com/rrwick/Filtlong#installation
 | 
			
		||||
  ;; and the lastest release is more than nine months old
 | 
			
		||||
  (let ((commit "d1bb46dfe8bc7efe6257b5ce222c04bfe8aedaab")
 | 
			
		||||
        (revision "1"))
 | 
			
		||||
    (package
 | 
			
		||||
      (name "filtlong")
 | 
			
		||||
      (version (git-version "0.2.0" revision commit))
 | 
			
		||||
      (source
 | 
			
		||||
       (origin
 | 
			
		||||
         (method git-fetch)
 | 
			
		||||
         (uri (git-reference
 | 
			
		||||
               (url "https://github.com/rrwick/Filtlong.git")
 | 
			
		||||
               (commit commit)))
 | 
			
		||||
         (file-name (git-file-name name version))
 | 
			
		||||
         (sha256
 | 
			
		||||
          (base32 "1xr92r820x8qlkcr3b57iw223yq8vjgyi42jr79w2xgw47qzr575"))))
 | 
			
		||||
      (build-system gnu-build-system)
 | 
			
		||||
      (arguments
 | 
			
		||||
       `(#:tests? #f                    ; no check target
 | 
			
		||||
         #:phases
 | 
			
		||||
         (modify-phases %standard-phases
 | 
			
		||||
           (delete 'configure)
 | 
			
		||||
           (replace 'install
 | 
			
		||||
             (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
               (let* ((out (assoc-ref outputs "out"))
 | 
			
		||||
                      (bin (string-append out "/bin"))
 | 
			
		||||
                      (scripts (string-append out "/share/filtlong/scripts")))
 | 
			
		||||
                 (install-file "bin/filtlong" bin)
 | 
			
		||||
                 (install-file "scripts/histogram.py" scripts)
 | 
			
		||||
                 (install-file "scripts/read_info_histograms.sh" scripts))
 | 
			
		||||
               #t))
 | 
			
		||||
           (add-after 'install 'wrap-program
 | 
			
		||||
             (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
			
		||||
               (let* ((out (assoc-ref outputs "out"))
 | 
			
		||||
                      (path (getenv "PYTHONPATH")))
 | 
			
		||||
                 (wrap-program (string-append out
 | 
			
		||||
                                              "/share/filtlong/scripts/histogram.py")
 | 
			
		||||
                   `("PYTHONPATH" ":" prefix (,path))))
 | 
			
		||||
               #t))
 | 
			
		||||
           (add-before 'check 'patch-tests
 | 
			
		||||
             (lambda _
 | 
			
		||||
               (substitute* "scripts/read_info_histograms.sh"
 | 
			
		||||
                 (("awk") (which "gawk")))
 | 
			
		||||
               #t)))))
 | 
			
		||||
      (inputs
 | 
			
		||||
       `(("gawk" ,gawk)                 ;for read_info_histograms.sh
 | 
			
		||||
         ("python" ,python-2)           ;required for histogram.py
 | 
			
		||||
         ("zlib" ,zlib)))
 | 
			
		||||
      (home-page "https://github.com/rrwick/Filtlong/")
 | 
			
		||||
      (synopsis "Tool for quality filtering of Nanopore and PacBio data")
 | 
			
		||||
      (description
 | 
			
		||||
       "The Filtlong package is a tool for filtering long reads by quality.
 | 
			
		||||
It can take a set of long reads and produce a smaller, better subset.  It uses
 | 
			
		||||
both read length (longer is better) and read identity (higher is better) when
 | 
			
		||||
choosing which reads pass the filter.")
 | 
			
		||||
      (license (list license:gpl3       ;filtlong
 | 
			
		||||
                     license:asl2.0))))) ;histogram.py
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -361,7 +361,7 @@ tree binary files.  These are board description files used by Linux and BSD.")
 | 
			
		|||
(define u-boot
 | 
			
		||||
  (package
 | 
			
		||||
    (name "u-boot")
 | 
			
		||||
    (version "2018.07")
 | 
			
		||||
    (version "2018.09")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
| 
						 | 
				
			
			@ -369,7 +369,7 @@ tree binary files.  These are board description files used by Linux and BSD.")
 | 
			
		|||
                    "u-boot-" version ".tar.bz2"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1m7nw64mxflpc6sqvnz2kb5fxfkb4mrpy8b1wi15dcwipj4dy44z"))))
 | 
			
		||||
                "0s122kyz1svvs2yjzj4j9qravl3ra4vn0fjqgski7rlczqyg56w3"))))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("bc" ,bc)
 | 
			
		||||
       ("bison" ,bison)
 | 
			
		||||
| 
						 | 
				
			
			@ -404,6 +404,12 @@ also initializes the boards (RAM etc).")
 | 
			
		|||
              (("/bin/false") (which "false")))
 | 
			
		||||
             (substitute* "tools/dtoc/fdt_util.py"
 | 
			
		||||
              (("'cc'") "'gcc'"))
 | 
			
		||||
             (substitute* "tools/patman/test_util.py"
 | 
			
		||||
              ;; python-coverage is simply called coverage in guix.
 | 
			
		||||
              (("python-coverage") "coverage")
 | 
			
		||||
              ;; XXX Allow for only 99% test coverage.
 | 
			
		||||
              ;; TODO: Find out why that is needed.
 | 
			
		||||
              (("if coverage != '100%':") "if not int(coverage.rstrip('%')) >= 99:"))
 | 
			
		||||
             (substitute* "test/run"
 | 
			
		||||
              ;; Make it easier to find test failures.
 | 
			
		||||
              (("#!/bin/bash") "#!/bin/bash -x")
 | 
			
		||||
| 
						 | 
				
			
			@ -418,8 +424,6 @@ also initializes the boards (RAM etc).")
 | 
			
		|||
              (("def test_ctrl_c")
 | 
			
		||||
               "@pytest.mark.skip(reason='Guix has problems with SIGINT')
 | 
			
		||||
def test_ctrl_c"))
 | 
			
		||||
             (substitute* "tools/binman/binman.py"
 | 
			
		||||
              (("100%") "99%")) ; TODO: Find out why that is needed.
 | 
			
		||||
             #t))
 | 
			
		||||
         (replace 'configure
 | 
			
		||||
           (lambda* (#:key make-flags #:allow-other-keys)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -96,13 +96,13 @@ data units.")
 | 
			
		|||
(define-public khal
 | 
			
		||||
  (package
 | 
			
		||||
    (name "khal")
 | 
			
		||||
    (version "0.9.9")
 | 
			
		||||
    (version "0.9.10")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (pypi-uri "khal" version))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "0dq9aqb9pqjfqrnfg43mhpb7m0szmychxy1ydb3lwzf3500c9rsh"))))
 | 
			
		||||
               "03h0j0d3xyqh98x5v2gv63wv3g91hip3vsaxvybsn5iz331d23h4"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases (modify-phases %standard-phases
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1728,19 +1728,14 @@ or junctions, and always follows hard links.")
 | 
			
		|||
(define-public zstd
 | 
			
		||||
  (package
 | 
			
		||||
    (name "zstd")
 | 
			
		||||
    (version "1.3.5")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://github.com/facebook/zstd/archive/v"
 | 
			
		||||
                                  version ".tar.gz"))
 | 
			
		||||
              (file-name (string-append name "-" version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1sifbq18p0hc978g0pq8fymrlpzz1fcxqkbxfqk44z6v9jg5bqfn"))
 | 
			
		||||
              ;; Fix a regression that causes the tests to fail.  Both patches
 | 
			
		||||
              ;; have been merged upstream and will be part of the next release.
 | 
			
		||||
              (patches (search-patches "zstd-fix-stdin-list-without-tty.patch"
 | 
			
		||||
                                       "zstd-fix-stdin-list-test.patch"))))
 | 
			
		||||
    (version "1.3.6")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (string-append "https://github.com/facebook/zstd/releases/download/"
 | 
			
		||||
                           "v" version "/zstd-" version ".tar.gz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "1525b31jmbiczjj1n58nckdzky4cdnbwcsil3zgy4cx03v0a0cp8"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2432,13 +2432,13 @@ SQLAlchemy Database Toolkit for Python.")
 | 
			
		|||
(define-public python-pickleshare
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-pickleshare")
 | 
			
		||||
    (version "0.7.4")
 | 
			
		||||
    (version "0.7.5")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (pypi-uri "pickleshare" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "0yvk14dzxk7g6qpr7iw23vzqbsr0dh4ij4xynkhnzpfz4xr2bac4"))))
 | 
			
		||||
        (base32 "1jmghg3c53yp1i8cm6pcrm280ayi8621rwyav9fac7awjr3kss47"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases (modify-phases %standard-phases
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,22 +30,24 @@
 | 
			
		|||
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
(define-module (gnu packages disk)
 | 
			
		||||
  #:use-module ((guix licenses) #:prefix license:)
 | 
			
		||||
  #:use-module (guix packages)
 | 
			
		||||
  #:use-module (guix download)
 | 
			
		||||
  #:use-module (guix git-download)
 | 
			
		||||
  #:use-module (guix build-system gnu)
 | 
			
		||||
  #:use-module (guix build-system trivial)
 | 
			
		||||
  #:use-module (guix build-system python)
 | 
			
		||||
  #:use-module (gnu packages)
 | 
			
		||||
  #:use-module (gnu packages autotools)
 | 
			
		||||
  #:use-module (gnu packages base)
 | 
			
		||||
  #:use-module (gnu packages bash)
 | 
			
		||||
  #:use-module (gnu packages c)
 | 
			
		||||
  #:use-module (gnu packages check)
 | 
			
		||||
  #:use-module (gnu packages compression)
 | 
			
		||||
  #:use-module (gnu packages cryptsetup)
 | 
			
		||||
  #:use-module (gnu packages databases)
 | 
			
		||||
  #:use-module (gnu packages docbook)
 | 
			
		||||
  #:use-module (gnu packages documentation)
 | 
			
		||||
  #:use-module (gnu packages gettext)
 | 
			
		||||
  #:use-module (gnu packages glib)
 | 
			
		||||
  #:use-module (gnu packages gtk)
 | 
			
		||||
  #:use-module (gnu packages gnome)
 | 
			
		||||
  #:use-module (gnu packages gnupg)
 | 
			
		||||
  #:use-module (gnu packages gnuzilla)
 | 
			
		||||
  #:use-module (gnu packages gtk)
 | 
			
		||||
  #:use-module (gnu packages guile)
 | 
			
		||||
  #:use-module (gnu packages linux)
 | 
			
		||||
  #:use-module (gnu packages ncurses)
 | 
			
		||||
  #:use-module (gnu packages perl)
 | 
			
		||||
| 
						 | 
				
			
			@ -53,20 +55,18 @@
 | 
			
		|||
  #:use-module (gnu packages popt)
 | 
			
		||||
  #:use-module (gnu packages python)
 | 
			
		||||
  #:use-module (gnu packages readline)
 | 
			
		||||
  #:use-module (gnu packages guile)
 | 
			
		||||
  #:use-module (gnu packages compression)
 | 
			
		||||
  #:use-module (gnu packages swig)
 | 
			
		||||
  #:use-module (gnu packages vim)
 | 
			
		||||
  #:use-module (gnu packages w3m)
 | 
			
		||||
  #:use-module (gnu packages xml)
 | 
			
		||||
  #:use-module (gnu packages cryptsetup)
 | 
			
		||||
  #:use-module (gnu packages gnuzilla)
 | 
			
		||||
  #:use-module (gnu packages gnupg)
 | 
			
		||||
  #:use-module (gnu packages swig)
 | 
			
		||||
  #:use-module (gnu packages autotools)
 | 
			
		||||
  #:use-module (gnu packages web)
 | 
			
		||||
  #:use-module (gnu packages documentation)
 | 
			
		||||
  #:use-module (gnu packages bash)
 | 
			
		||||
  #:use-module (gnu packages c))
 | 
			
		||||
  #:use-module (gnu packages xml)
 | 
			
		||||
  #:use-module (guix build-system gnu)
 | 
			
		||||
  #:use-module (guix build-system python)
 | 
			
		||||
  #:use-module (guix build-system trivial)
 | 
			
		||||
  #:use-module (guix download)
 | 
			
		||||
  #:use-module (guix git-download)
 | 
			
		||||
  #:use-module ((guix licenses) #:prefix license:)
 | 
			
		||||
  #:use-module (guix packages))
 | 
			
		||||
 | 
			
		||||
(define-public parted
 | 
			
		||||
  (package
 | 
			
		||||
| 
						 | 
				
			
			@ -518,24 +518,25 @@ Duperemove can also take input from the @command{fdupes} program.")
 | 
			
		|||
(define-public ranger
 | 
			
		||||
  (package
 | 
			
		||||
    (name "ranger")
 | 
			
		||||
    (version "1.9.1")
 | 
			
		||||
    (version "1.9.2")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://ranger.github.io/"
 | 
			
		||||
                                  "ranger-" version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1lnzkrxcnlwnyi3z0v8ybyp8d5rm26qm35rr68kbs2lbs06inha0"))))
 | 
			
		||||
                "12kbsqakbxs09y0x8hy66mmaf72rk0p850x7ryk2ghkq7wfin78f"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("w3m" ,w3m)))
 | 
			
		||||
    (native-inputs                      ;for tests
 | 
			
		||||
     `(("python-pytest" ,python-pytest)
 | 
			
		||||
       ("python-pylint" ,python-pylint)
 | 
			
		||||
       ("python-flake8" ,python-flake8)
 | 
			
		||||
       ("which" ,which)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("which" ,which)
 | 
			
		||||
 | 
			
		||||
       ;; For tests.
 | 
			
		||||
       ("python-pytest" ,python-pytest)))
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:test-target "test"
 | 
			
		||||
     '( ;; The 'test' target runs developer tools like pylint, which fail.
 | 
			
		||||
       #:test-target "test_pytest"
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-after 'configure 'wrap-program
 | 
			
		||||
| 
						 | 
				
			
			@ -548,7 +549,11 @@ Duperemove can also take input from the @command{fdupes} program.")
 | 
			
		|||
                                   "/libexec/w3m/w3mimgdisplay")))
 | 
			
		||||
               (wrap-program ranger
 | 
			
		||||
                 `("W3MIMGDISPLAY_PATH" ":" prefix (,w3mimgdisplay)))
 | 
			
		||||
               #t))))))
 | 
			
		||||
               #t)))
 | 
			
		||||
         (replace 'check
 | 
			
		||||
           ;; The default check phase simply prints 'Ran 0 tests in 0.000s'.
 | 
			
		||||
           (lambda* (#:key test-target #:allow-other-keys)
 | 
			
		||||
             (invoke "make" test-target))))))
 | 
			
		||||
    (home-page "https://ranger.github.io/")
 | 
			
		||||
    (synopsis "Console file manager")
 | 
			
		||||
    (description "ranger is a console file manager with Vi key bindings.  It
 | 
			
		||||
| 
						 | 
				
			
			@ -560,28 +565,28 @@ automatically finding out which program to use for what file type.")
 | 
			
		|||
(define-public volume-key
 | 
			
		||||
  (package
 | 
			
		||||
    (name "volume-key")
 | 
			
		||||
    (version "0.3.11")
 | 
			
		||||
    (version "0.3.12")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://releases.pagure.org/volume_key/volume_key-"
 | 
			
		||||
                                  version ".tar.xz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0vaz15rcgdkh5z4yxc22x76wi44gh50jxnrqz5avaxz4bb17kcp6"))))
 | 
			
		||||
                "16rhfz6sjwxlmss1plb2wv2i3jq6wza02rmz1d2jrlnsq67p98vc"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("pkg-config" ,pkg-config)
 | 
			
		||||
       ("util-linux" ,util-linux)
 | 
			
		||||
       ("swig" ,swig)
 | 
			
		||||
       ("python" ,python-3)))           ; Used to generate the Python bindings.
 | 
			
		||||
       ("python" ,python-3)))           ; used to generate the Python bindings
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("cryptsetup" ,cryptsetup)
 | 
			
		||||
       ("nss" ,nss)
 | 
			
		||||
       ("lvm2" ,lvm2)                   ; For "-ldevmapper".
 | 
			
		||||
       ("lvm2" ,lvm2)                   ; for "-ldevmapper"
 | 
			
		||||
       ("glib" ,glib)
 | 
			
		||||
       ("gpgme" ,gpgme)))
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:tests? #f ; Not sure how tests are supposed to pass, even when run manually.
 | 
			
		||||
     `(#:tests? #f ; not sure how tests are supposed to pass, even when run manually
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-before 'configure 'patch-python.h-path
 | 
			
		||||
| 
						 | 
				
			
			@ -601,27 +606,28 @@ passphrases.")
 | 
			
		|||
(define-public ndctl
 | 
			
		||||
  (package
 | 
			
		||||
    (name "ndctl")
 | 
			
		||||
    (version "61.2")
 | 
			
		||||
    (version "63")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method git-fetch)
 | 
			
		||||
              (uri (git-reference
 | 
			
		||||
                    (url "https://github.com/pmem/ndctl")
 | 
			
		||||
                    (url "https://github.com/pmem/ndctl.git")
 | 
			
		||||
                    (commit (string-append "v" version))))
 | 
			
		||||
              (file-name (string-append name "-" version "-checkout"))
 | 
			
		||||
              (file-name (git-file-name name version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0vid78jzhmzh505bpwn8mvlamfhcvl6rlfjc29y4yn7zslpydxl7"))))
 | 
			
		||||
                "060nsza8xic769bxj3pvl70a9885bwrc0myw16l095i3z6w7yzwq"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("asciidoc" ,asciidoc)
 | 
			
		||||
       ("automake" ,automake)
 | 
			
		||||
       ("autoconf" ,autoconf)
 | 
			
		||||
       ("bash-completion" ,bash-completion)
 | 
			
		||||
       ("docbook-xsl" ,docbook-xsl)
 | 
			
		||||
       ("libtool" ,libtool)
 | 
			
		||||
       ("libxml2" ,libxml2)
 | 
			
		||||
       ("pkg-config" ,pkg-config)
 | 
			
		||||
       ("xmlto" ,xmlto)
 | 
			
		||||
       ;; Required for offline docbook generation:
 | 
			
		||||
       ;; Required for offline docbook generation.
 | 
			
		||||
       ("which" ,which)))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("eudev" ,eudev)
 | 
			
		||||
| 
						 | 
				
			
			@ -629,12 +635,13 @@ passphrases.")
 | 
			
		|||
       ("kmod" ,kmod)
 | 
			
		||||
       ("util-linux" ,util-linux)))
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases
 | 
			
		||||
     `(#:configure-flags
 | 
			
		||||
       (list "--disable-asciidoctor"    ; use docbook-xsl instead
 | 
			
		||||
             "--without-systemd")
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-after 'unpack 'patch-FHS-file-names
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (substitute* "autogen.sh"
 | 
			
		||||
               (("/bin/sh") (which "sh")))
 | 
			
		||||
             (substitute* "git-version-gen"
 | 
			
		||||
               (("/bin/sh") (which "sh")))
 | 
			
		||||
             (substitute* "git-version"
 | 
			
		||||
| 
						 | 
				
			
			@ -699,14 +706,15 @@ to create devices with respective mappings for the ATARAID sets discovered.")
 | 
			
		|||
(define-public libblockdev
 | 
			
		||||
  (package
 | 
			
		||||
    (name "libblockdev")
 | 
			
		||||
    (version "2.18")
 | 
			
		||||
    (version "2.20")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://github.com/storaged-project/libblockdev/releases/download/"
 | 
			
		||||
              (uri (string-append "https://github.com/storaged-project/"
 | 
			
		||||
                                  "libblockdev/releases/download/"
 | 
			
		||||
                                  version "-1/libblockdev-" version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1a3kpdr9s6g7nfibazi92i27wbv692b5gm2r24gimis6l6jq4pbh"))))
 | 
			
		||||
                "092snk5jyv48na4d46v1ckiy859zwpb3r0ivnxv3km5vzsp76y7q"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("pkg-config" ,pkg-config)
 | 
			
		||||
| 
						 | 
				
			
			@ -739,6 +747,4 @@ manipulation of block devices.  It has a plugin-based architecture where each
 | 
			
		|||
technology (like LVM, Btrfs, MD RAID, Swap...) is implemented in a separate
 | 
			
		||||
plugin, possibly with multiple implementations (e.g. using LVM CLI or the new
 | 
			
		||||
LVM D-Bus API).")
 | 
			
		||||
    ;; XXX: Copying says LGPL2.1, but the source files with license
 | 
			
		||||
    ;; information are GPL2+.
 | 
			
		||||
    (license license:gpl2+)))
 | 
			
		||||
    (license license:lgpl2.1+)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,6 +39,7 @@
 | 
			
		|||
;;; Copyright © 2018 Jack Hill <jackhill@jackhill.us>
 | 
			
		||||
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
 | 
			
		||||
;;; Copyright © 2018 Alex Branham <alex.branham@gmail.com>
 | 
			
		||||
;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -3033,7 +3034,7 @@ in @code{html-mode}.")
 | 
			
		|||
(define-public emacs-slime
 | 
			
		||||
  (package
 | 
			
		||||
    (name "emacs-slime")
 | 
			
		||||
    (version "2.20")
 | 
			
		||||
    (version "2.22")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (file-name (string-append name "-" version ".tar.gz"))
 | 
			
		||||
| 
						 | 
				
			
			@ -3043,7 +3044,7 @@ in @code{html-mode}.")
 | 
			
		|||
             version ".tar.gz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "086lq5y4pvj9wihy0si02xxvyzpzz8mcg3hz1cvy9zxlyjwzr1gk"))))
 | 
			
		||||
         "07vaib1n4zyh5yy30gdpq0bc5cv6w84piml5b3mfc9ibjhaykkms"))))
 | 
			
		||||
    (build-system emacs-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("texinfo" ,texinfo)))
 | 
			
		||||
| 
						 | 
				
			
			@ -4306,14 +4307,14 @@ strings, and code folding.")
 | 
			
		|||
(define-public emacs-nodejs-repl
 | 
			
		||||
  (package
 | 
			
		||||
    (name "emacs-nodejs-repl")
 | 
			
		||||
    (version "0.1.6")
 | 
			
		||||
    (version "0.2.0")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://github.com/abicky/nodejs-repl.el"
 | 
			
		||||
                                  "/archive/" version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0sphg1jxi3a5l0gqdp27d0qgyjaiq2p293av9zm8ksm0vwqp3fr9"))
 | 
			
		||||
                "0hq2cqdq2668yf48g7qnkci90nhih1gnhacsgz355jnib56lhmkz"))
 | 
			
		||||
              (file-name (string-append name "-" version ".tar.gz"))))
 | 
			
		||||
    (build-system emacs-build-system)
 | 
			
		||||
    (home-page "https://github.com/abicky/nodejs-repl.el")
 | 
			
		||||
| 
						 | 
				
			
			@ -5199,11 +5200,11 @@ extensions.")
 | 
			
		|||
      (license license:gpl3+))))
 | 
			
		||||
 | 
			
		||||
(define-public emacs-evil-collection
 | 
			
		||||
  (let ((commit "b55ae90f367e103e6568ae00779a8a51c68a0104")
 | 
			
		||||
        (revision "3"))
 | 
			
		||||
  (let ((commit "abc9dd60f71ccc1f24803a12d853f84b4a8b258c")
 | 
			
		||||
        (revision "4"))
 | 
			
		||||
    (package
 | 
			
		||||
      (name "emacs-evil-collection")
 | 
			
		||||
      (version (git-version "20180911" revision commit))
 | 
			
		||||
      (version (git-version "0.0.1" revision commit))
 | 
			
		||||
      (source (origin
 | 
			
		||||
                (method git-fetch)
 | 
			
		||||
                (uri (git-reference
 | 
			
		||||
| 
						 | 
				
			
			@ -5212,7 +5213,7 @@ extensions.")
 | 
			
		|||
                (file-name (string-append name "-" version "-checkout"))
 | 
			
		||||
                (sha256
 | 
			
		||||
                 (base32
 | 
			
		||||
                  "0n7bzi5s7rqi78l1424sxvsk2g46z7ksq02xx5jrmqymnij90jml"))))
 | 
			
		||||
                  "0c9l93vrsl6kzx8gg305dq8qkb2dr3s10fww7lh382911pdmsh7v"))))
 | 
			
		||||
      (build-system emacs-build-system)
 | 
			
		||||
      (propagated-inputs
 | 
			
		||||
       `(("emacs-evil" ,emacs-evil)))
 | 
			
		||||
| 
						 | 
				
			
			@ -5928,8 +5929,20 @@ Yasnippet.")
 | 
			
		|||
               (base32
 | 
			
		||||
                "01by0c4lqi2cw8xmbxkjw7m9x78zssm31sx4hdpw5j35s2951j0f"))))
 | 
			
		||||
    (build-system emacs-build-system)
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("recutils" ,recutils)))
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("emacs-helm" ,emacs-helm)))
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-after 'unpack 'configure
 | 
			
		||||
           (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
			
		||||
             (let ((recutils (assoc-ref inputs "recutils")))
 | 
			
		||||
               ;; Specify the absolute file names of the various
 | 
			
		||||
               ;; programs so that everything works out-of-the-box.
 | 
			
		||||
               (substitute* "helm-system-packages-guix.el"
 | 
			
		||||
                 (("recsel") (string-append recutils "/bin/recsel")))))))))
 | 
			
		||||
    (home-page "https://github.com/emacs-helm/helm-system-packages")
 | 
			
		||||
    (synopsis "Helm System Packages is an interface to your package manager")
 | 
			
		||||
    (description "List all available packages in Helm (with installed
 | 
			
		||||
| 
						 | 
				
			
			@ -6575,14 +6588,14 @@ which code derived from Kelvin H's org-page.")
 | 
			
		|||
(define-public emacs-xelb
 | 
			
		||||
  (package
 | 
			
		||||
    (name "emacs-xelb")
 | 
			
		||||
    (version "0.15")
 | 
			
		||||
    (version "0.16")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://elpa.gnu.org/packages/xelb-"
 | 
			
		||||
                                  version ".tar"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "031rvgprsqhf344p9wsczr50vj2qcpwdmhxi80jdbrsm7wyxf3qz"))))
 | 
			
		||||
                "03wsr1jr7f7zfd80h864rd4makwh4widdnj1kjv2xyjwdgap9rl8"))))
 | 
			
		||||
    (build-system emacs-build-system)
 | 
			
		||||
    ;; The following functions and variables needed by emacs-xelb are
 | 
			
		||||
    ;; not included in emacs-minimal:
 | 
			
		||||
| 
						 | 
				
			
			@ -6614,7 +6627,7 @@ It should enable you to implement low-level X11 applications.")
 | 
			
		|||
(define-public emacs-exwm
 | 
			
		||||
  (package
 | 
			
		||||
    (name "emacs-exwm")
 | 
			
		||||
    (version "0.19")
 | 
			
		||||
    (version "0.20")
 | 
			
		||||
    (synopsis "Emacs X window manager")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -6622,8 +6635,7 @@ It should enable you to implement low-level X11 applications.")
 | 
			
		|||
                                  version ".tar"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "11xd2w4h3zdwkdxypvmcz8s7q72cn76lfr9js77jbizyj6b04lr0"))
 | 
			
		||||
              (patches (search-patches "emacs-exwm-fix-fullscreen-issue.patch"))))
 | 
			
		||||
                "0nhhzbkm0mkj7sd1dy2c19cmn56gyaj9nl8kgy86h4fp63hjaz04"))))
 | 
			
		||||
    (build-system emacs-build-system)
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("emacs-xelb" ,emacs-xelb)))
 | 
			
		||||
| 
						 | 
				
			
			@ -11344,27 +11356,25 @@ the GIF result.")
 | 
			
		|||
      (license license:gpl3+))))
 | 
			
		||||
 | 
			
		||||
(define-public emacs-google-translate
 | 
			
		||||
  (let ((commit "d8b84a8359fcc697114d1298840e9a45b111c974"))
 | 
			
		||||
    (package
 | 
			
		||||
      (name "emacs-google-translate")
 | 
			
		||||
      (version (git-version "0.11.14" "1" commit))
 | 
			
		||||
      (source
 | 
			
		||||
       (origin
 | 
			
		||||
         (method git-fetch)
 | 
			
		||||
         (uri (git-reference
 | 
			
		||||
               (url "https://github.com/atykhonov/google-translate")
 | 
			
		||||
               (commit commit)))
 | 
			
		||||
         (file-name (string-append name "-" version "-checkout"))
 | 
			
		||||
         (sha256
 | 
			
		||||
          (base32
 | 
			
		||||
           "1qs4hcg1i2m487z50nnwgs0sa2xj4lpgizbrvi2yda0mf3m75fgc"))))
 | 
			
		||||
      (build-system emacs-build-system)
 | 
			
		||||
      (home-page "https://github.com/atykhonov/google-translate")
 | 
			
		||||
      (synopsis "Emacs interface to Google Translate")
 | 
			
		||||
      (description
 | 
			
		||||
       "This packages provides an Emacs interface to the Google Translate
 | 
			
		||||
  (package
 | 
			
		||||
    (name "emacs-google-translate")
 | 
			
		||||
    (version "0.11.15")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (string-append "https://github.com/atykhonov/google-translate/"
 | 
			
		||||
                           "archive/v" version ".tar.gz"))
 | 
			
		||||
       (file-name (string-append name "-" version ".tar.gz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "1zxvfagbaf5mxi528mz33c8vxdk86wj0xx5y2jfy97wi8dzrwn3g"))))
 | 
			
		||||
    (build-system emacs-build-system)
 | 
			
		||||
    (home-page "https://github.com/atykhonov/google-translate")
 | 
			
		||||
    (synopsis "Emacs interface to Google Translate")
 | 
			
		||||
    (description
 | 
			
		||||
     "This packages provides an Emacs interface to the Google Translate
 | 
			
		||||
on-line service.")
 | 
			
		||||
      (license license:gpl3+))))
 | 
			
		||||
    (license license:gpl3+)))
 | 
			
		||||
 | 
			
		||||
(define-public emacs-helm-company
 | 
			
		||||
  (let ((commit "acc9c7901e094c1591327a0db1ec7a439f67a84d"))
 | 
			
		||||
| 
						 | 
				
			
			@ -12355,3 +12365,24 @@ with a handful of easy tweaks.
 | 
			
		|||
scratch, and you think the Spacemacs theme looks good.
 | 
			
		||||
@end itemize")
 | 
			
		||||
    (license license:gpl3+)))
 | 
			
		||||
 | 
			
		||||
(define-public emacs-column-marker
 | 
			
		||||
  (package
 | 
			
		||||
    (name "emacs-column-marker")
 | 
			
		||||
    (version "9")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri "https://www.emacswiki.org/emacs/download/column-marker.el")
 | 
			
		||||
       (sha256 (base32 "05bv198zhqw5hqq6cr11mhz02dpca74hhp1ycwq369m0yb2naxy9"))))
 | 
			
		||||
    (build-system emacs-build-system)
 | 
			
		||||
    (home-page "https://www.emacswiki.org/emacs/ColumnMarker")
 | 
			
		||||
    (synopsis "Emacs mode for highlighting columns")
 | 
			
		||||
    (description
 | 
			
		||||
     "With @code{column-marker.el} you can highlight any number of text columns.
 | 
			
		||||
Three such highlight column markers are provided by default.  This is
 | 
			
		||||
especially useful for languages like COBOL or Fortran where certain columns
 | 
			
		||||
have special meaning.  It is also handy for aligning text across long vertical
 | 
			
		||||
distances.  Multi-column characters, such as @kbd{TAB} are treated
 | 
			
		||||
correctly.")
 | 
			
		||||
    (license license:gpl2+)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -823,6 +823,30 @@ electrical diagrams), gerbview (viewing Gerber files) and others.")
 | 
			
		|||
render model libraries.")
 | 
			
		||||
      (license license:lgpl2.0+))))
 | 
			
		||||
 | 
			
		||||
(define-public kicad-symbols
 | 
			
		||||
  (package
 | 
			
		||||
    (name "kicad-symbols")
 | 
			
		||||
    (version "5.0.1")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method git-fetch)
 | 
			
		||||
              (uri (git-reference
 | 
			
		||||
                    (url "https://github.com/KiCad/kicad-symbols.git")
 | 
			
		||||
                    (commit version)))
 | 
			
		||||
              (file-name (string-append "kicad-symbols-" version "-checkout"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "18z5vpdq7hy2mpvm5vz1dz3ra3a5iybavvlzi8q2bmmdb6gsvf64"))))
 | 
			
		||||
    (build-system cmake-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:tests? #f)) ; No tests exist
 | 
			
		||||
    (home-page "http://kicad-pcb.org/")
 | 
			
		||||
    (synopsis "Official KiCad schematic symbol libraries for KiCad 5")
 | 
			
		||||
    (description "This package contains the official KiCad schematic symbol
 | 
			
		||||
libraries for KiCad 5.")
 | 
			
		||||
    ;; TODO: Exception: "To the extent that the creation of electronic designs that use 'Licensed Material' can be considered to be 'Adapted Material', then the copyright holder waives article 3 of the license with respect to these designs and any generated files which use data provided as part of the 'Licensed Material'."
 | 
			
		||||
    ;; See <https://github.com/KiCad/kicad-symbols/blob/master/LICENSE.md>.
 | 
			
		||||
    (license license:cc-by-sa4.0)))
 | 
			
		||||
 | 
			
		||||
(define-public linsmith
 | 
			
		||||
  (package
 | 
			
		||||
    (name "linsmith")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2017 Dave Love <fx@gnu.org>
 | 
			
		||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -41,33 +42,38 @@
 | 
			
		|||
(define-public opensm
 | 
			
		||||
  (package
 | 
			
		||||
    (name "opensm")
 | 
			
		||||
    (version "3.3.20")
 | 
			
		||||
    (version "3.3.21")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri
 | 
			
		||||
        (string-append "https://www.openfabrics.org/downloads/management/opensm-"
 | 
			
		||||
                       version ".tar.gz"))
 | 
			
		||||
       (sha256 (base32 "162sg1w7kgy8ayl8a4dcbrfacmnfy2lr9a2yjyq0k65rmd378zg1"))))
 | 
			
		||||
        (string-append "https://github.com/linux-rdma/opensm/releases/download/"
 | 
			
		||||
                       version "/opensm-" version ".tar.gz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "0j4vp118w1l47vs4had46ynybklyacxjlya0r15jg0y01l4j9l2h"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("flex" ,flex)
 | 
			
		||||
       ("bison" ,bison)))
 | 
			
		||||
     `(("bison" ,bison)
 | 
			
		||||
       ("flex" ,flex)
 | 
			
		||||
 | 
			
		||||
       ;; The 3.3.21 'release' tarball isn't properly bootstrapped.
 | 
			
		||||
       ("autoconf" ,autoconf)
 | 
			
		||||
       ("automake" ,automake)
 | 
			
		||||
       ("libtool" ,libtool)))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("rdma-core" ,rdma-core)))
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:configure-flags '("--disable-static")
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-after 'install 'doc
 | 
			
		||||
         (add-after 'install 'install-doc
 | 
			
		||||
           (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
             (let* ((base (assoc-ref outputs "out"))
 | 
			
		||||
                    (doc  (string-append base "/share/doc/"
 | 
			
		||||
                                         ,name "-" ,version)))
 | 
			
		||||
               (for-each (lambda (file)
 | 
			
		||||
                           (install-file file doc))
 | 
			
		||||
                         (append (list "AUTHORS" "COPYING" "ChangeLog")
 | 
			
		||||
                                 (find-files "doc")))
 | 
			
		||||
                         (find-files "doc"))
 | 
			
		||||
               #t))))))
 | 
			
		||||
    (home-page "https://www.openfabrics.org/")
 | 
			
		||||
    (synopsis "OpenIB InfiniBand Subnet Manager and management utilities")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1302,3 +1302,53 @@ Kannada, Malayalam, Manipuri, Oriya, Punjabi, Tamil and Telugu scripts.")
 | 
			
		|||
     "Inria Sans and Inria Serif are the two members of a type family designed
 | 
			
		||||
for Inria, a public research institute in computer science and mathematics.")
 | 
			
		||||
    (license license:silofl1.1)))
 | 
			
		||||
 | 
			
		||||
(define-public font-sil-gentium
 | 
			
		||||
  (package
 | 
			
		||||
    (name "font-sil-gentium")
 | 
			
		||||
    (version "5.000")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
                    "https://software.sil.org/downloads/r/gentium/GentiumPlus-"
 | 
			
		||||
                    version ".zip"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0m7189870hha217n1vgpmf89mwggrxkh679ffi1lxpnjggqi2n9k"))))
 | 
			
		||||
    ;; Note: The zip file provides TTF files only, but the developer release,
 | 
			
		||||
    ;; which contains additional files, has a 'SOURCES.txt' file that says
 | 
			
		||||
    ;; that "the primary source files for the fonts are the fonts themselves".
 | 
			
		||||
    ;; Thus it looks like the TTF can be considered source.
 | 
			
		||||
    (build-system font-build-system)
 | 
			
		||||
    (synopsis "Serif font for the Cyrillic, Greek, and Latin alphabets")
 | 
			
		||||
    (description
 | 
			
		||||
     "Gentium is a typeface family designed to enable the diverse ethnic
 | 
			
		||||
groups around the world who use the Latin, Cyrillic and Greek scripts to
 | 
			
		||||
produce readable, high-quality publications.  The font comes with regular and
 | 
			
		||||
italics shapes.  This package provides only TrueType files (TTF).")
 | 
			
		||||
    (home-page "https://software.sil.org/gentium/")
 | 
			
		||||
    (license license:silofl1.1)))
 | 
			
		||||
 | 
			
		||||
(define-public font-sil-charis
 | 
			
		||||
  (package
 | 
			
		||||
    (name "font-sil-charis")
 | 
			
		||||
    (version "5.000")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
                    "https://software.sil.org/downloads/r/charis/CharisSIL-"
 | 
			
		||||
                    version ".zip"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1zcvw37f1a7gkml3yfm6hxh93844llm7xj4w52600qq3ndrm8gjy"))))
 | 
			
		||||
    ;; As for Gentium (see above), the TTF files are considered source.
 | 
			
		||||
    (build-system font-build-system)
 | 
			
		||||
    (synopsis "Serif font for the Cyrillic and Latin alphabets")
 | 
			
		||||
    (description
 | 
			
		||||
     "Charis SIL is a Unicode-based font family that supports the wide range
 | 
			
		||||
of languages that use the Latin and Cyrillic scripts.  It is specially
 | 
			
		||||
designed to make long texts pleasant and easy to read, even in less than ideal
 | 
			
		||||
reproduction and display environments.  This package provides only TrueType
 | 
			
		||||
files (TTF).")
 | 
			
		||||
    (home-page "https://software.sil.org/charis/")
 | 
			
		||||
    (license license:silofl1.1)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,6 +8,7 @@
 | 
			
		|||
;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
 | 
			
		||||
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 | 
			
		||||
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 | 
			
		||||
;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -194,6 +195,58 @@ TTF (TrueType/OpenType Font) files.")
 | 
			
		|||
    (license license:bsd-2)
 | 
			
		||||
    (home-page "https://github.com/wget/ttf2eot")))
 | 
			
		||||
 | 
			
		||||
(define-public ttf2pt1
 | 
			
		||||
  (package
 | 
			
		||||
    (name "ttf2pt1")
 | 
			
		||||
    (version "3.4.4")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "mirror://sourceforge/ttf2pt1/ttf2pt1/"
 | 
			
		||||
                                  version "/ttf2pt1-" version ".tgz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1l718n4k4widx49xz7qrj4mybzb8q67kp2jw7f47604ips4654mf"))
 | 
			
		||||
              (modules '((guix build utils)))
 | 
			
		||||
              (snippet
 | 
			
		||||
               '(begin
 | 
			
		||||
                  ;; Remove trailing backslashes in the sed expression of the
 | 
			
		||||
                  ;; 'install' rule since sed would otherwise fail.
 | 
			
		||||
                  (substitute* "Makefile"
 | 
			
		||||
                    (("\\|;\\\\[[:space:]]*$") "|; "))
 | 
			
		||||
                  #t))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:tests? #f                                ;no tests
 | 
			
		||||
       #:phases (modify-phases %standard-phases
 | 
			
		||||
                  (replace 'configure
 | 
			
		||||
                    (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
                      (let ((out (assoc-ref outputs "out")))
 | 
			
		||||
                        (substitute* "Makefile"
 | 
			
		||||
                          (("INSTDIR =.*")
 | 
			
		||||
                           (string-append "INSTDIR = " out "\n"))
 | 
			
		||||
                          (("OWNER = .*")
 | 
			
		||||
                           "OWNER = `id -un`\n")
 | 
			
		||||
                          (("GROUP = .*")
 | 
			
		||||
                           "GROUP = `id -g`\n"))
 | 
			
		||||
                        #t)))
 | 
			
		||||
                  (replace 'build
 | 
			
		||||
                    (lambda _
 | 
			
		||||
                      (invoke "make" "-j"
 | 
			
		||||
                              (number->string (parallel-job-count))
 | 
			
		||||
                              "all" "CC=gcc"))))))
 | 
			
		||||
    (inputs `(("perl" ,perl)))
 | 
			
		||||
    (synopsis "Convert TrueType fonts to Postscript Type 1")
 | 
			
		||||
    (description
 | 
			
		||||
     "TTF2PT1 provides tools to convert most TrueType fonts (or other formats
 | 
			
		||||
supported by the FreeType library) to an Adobe Type 1 @file{.pfa} or
 | 
			
		||||
@file{.pfb} file.  Another use is as a hinting engine: feed it an unhinted or
 | 
			
		||||
poorly hinted Adobe Type 1 font through the FreeType library and get it back
 | 
			
		||||
with freshly generated hints.  The files produced by default are in
 | 
			
		||||
human-readable form, which further needs to be encoded with t1utilities to
 | 
			
		||||
work with most software requiring Type 1 fonts.")
 | 
			
		||||
    (home-page "http://ttf2pt1.sourceforge.net/")
 | 
			
		||||
    (license license:bsd-3)))
 | 
			
		||||
 | 
			
		||||
(define-public woff2
 | 
			
		||||
  (let ((commit "4e698b8c6c5e070d53c340db9ddf160e21070ede")
 | 
			
		||||
        (revision "1"))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1080,7 +1080,7 @@ games.")
 | 
			
		|||
(define-public godot
 | 
			
		||||
  (package
 | 
			
		||||
    (name "godot")
 | 
			
		||||
    (version "3.0.4")
 | 
			
		||||
    (version "3.0.6")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method git-fetch)
 | 
			
		||||
              (uri (git-reference
 | 
			
		||||
| 
						 | 
				
			
			@ -1089,7 +1089,7 @@ games.")
 | 
			
		|||
              (file-name (git-file-name name version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0i4ssfb6igga9zwvsmahrnasx9cyqrsd6mlmssjgc482fy9q2kz4"))
 | 
			
		||||
                "0g64h0x8dlv6aa9ggfcidk2mknkfl5li7z1phcav8aqp9srj8avf"))
 | 
			
		||||
              (modules '((guix build utils)))
 | 
			
		||||
              (snippet
 | 
			
		||||
               '(begin
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3658,7 +3658,7 @@ throwing people around in pseudo-randomly generated buildings.")
 | 
			
		|||
(define-public hyperrogue
 | 
			
		||||
  (package
 | 
			
		||||
    (name "hyperrogue")
 | 
			
		||||
    (version "10.4j")
 | 
			
		||||
    (version "10.4t")
 | 
			
		||||
    ;; When updating this package, be sure to update the "hyperrogue-data"
 | 
			
		||||
    ;; origin in native-inputs.
 | 
			
		||||
    (source (origin
 | 
			
		||||
| 
						 | 
				
			
			@ -3669,11 +3669,12 @@ throwing people around in pseudo-randomly generated buildings.")
 | 
			
		|||
                    "-src.tgz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0909p4xvbi1c2jc5rdgrf8b1c60fmsaapabsi6yyglh5znkf0k27"))))
 | 
			
		||||
                "0phqhmnzmc16a23qb4fkil0flzb86kibdckf1r35nc3l0k4193nn"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:tests? #f ; no check target
 | 
			
		||||
       #:make-flags '("CXXFLAGS=-std=c++11")
 | 
			
		||||
       #:make-flags '("HYPERROGUE_USE_GLEW=1"
 | 
			
		||||
                      "HYPERROGUE_USE_PNG=1")
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-after 'set-paths 'set-sdl-paths
 | 
			
		||||
| 
						 | 
				
			
			@ -3696,12 +3697,16 @@ throwing people around in pseudo-randomly generated buildings.")
 | 
			
		|||
                  (string-append dejavu-dir "/" dejavu-font)))
 | 
			
		||||
               (substitute* music-file
 | 
			
		||||
                 (("\\*/")
 | 
			
		||||
                  (string-append share-dir "/sounds/"))))
 | 
			
		||||
             ;; Fix Makefile.
 | 
			
		||||
             (substitute* "Makefile"
 | 
			
		||||
               (("g\\+\\+ langen.cpp")
 | 
			
		||||
                "g++ langen.cpp ${CXXFLAGS}")
 | 
			
		||||
               (("savepng.c") "savepng.cpp"))
 | 
			
		||||
                  (string-append share-dir "/sounds/")))
 | 
			
		||||
               (substitute* "sound.cpp"
 | 
			
		||||
                 (("musicfile = \"\"")
 | 
			
		||||
                  (string-append "musicfile = \""
 | 
			
		||||
                                 share-dir "/" music-file "\"")))
 | 
			
		||||
               ;; Disable build machine CPU optimizations and warnings treated
 | 
			
		||||
               ;; as errors.
 | 
			
		||||
               (substitute* "Makefile"
 | 
			
		||||
                 (("-march=native") "")
 | 
			
		||||
                 (("-Werror") "")))
 | 
			
		||||
             #t))
 | 
			
		||||
         (replace 'install
 | 
			
		||||
           (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
			
		||||
| 
						 | 
				
			
			@ -3709,7 +3714,7 @@ throwing people around in pseudo-randomly generated buildings.")
 | 
			
		|||
                    (bin (string-append out "/bin"))
 | 
			
		||||
                    (share-dir (string-append out "/share/hyperrogue")))
 | 
			
		||||
               (mkdir-p bin)
 | 
			
		||||
               (copy-file "hyper" (string-append bin "/hyperrogue"))
 | 
			
		||||
               (install-file "hyperrogue" bin)
 | 
			
		||||
               (install-file "hyperrogue-music.txt" share-dir))
 | 
			
		||||
             #t))
 | 
			
		||||
         (add-after 'install 'install-data
 | 
			
		||||
| 
						 | 
				
			
			@ -3741,7 +3746,7 @@ throwing people around in pseudo-randomly generated buildings.")
 | 
			
		|||
             "-win.zip"))
 | 
			
		||||
           (sha256
 | 
			
		||||
            (base32
 | 
			
		||||
             "0w61iv2rn93hi0q3hxyyyf9xcr8vi9zd7fjvpz5adpgf94jm3zsc"))))
 | 
			
		||||
             "1xd9v8zzgi8m5ar8g4gy1xx5zqwidz3gn1knz0lwib3kbxx4drpg"))))
 | 
			
		||||
       ("unzip" ,unzip)))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("font-dejavu" ,font-dejavu)
 | 
			
		||||
| 
						 | 
				
			
			@ -4397,7 +4402,7 @@ fish.  The whole game is accompanied by quiet, comforting music.")
 | 
			
		|||
(define-public crawl
 | 
			
		||||
  (package
 | 
			
		||||
    (name "crawl")
 | 
			
		||||
    (version "0.21.0")
 | 
			
		||||
    (version "0.22.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -4411,7 +4416,7 @@ fish.  The whole game is accompanied by quiet, comforting music.")
 | 
			
		|||
                            version "-nodeps.tar.xz")))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "0mmnkch8s9l7dh136yjvcyjr0vmyzv7z370rlcyir91qz6gg82n1"))
 | 
			
		||||
         "1qc90wwbxvjzqq66n8kfr0a2ny7sfvv2n84si67jiv2887d0ws6k"))
 | 
			
		||||
       (patches (search-patches "crawl-upgrade-saves.patch"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (inputs
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,7 @@
 | 
			
		|||
;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 | 
			
		||||
;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
 | 
			
		||||
;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -305,3 +306,67 @@ brushstrokes which is used by MyPaint and GIMP.")
 | 
			
		|||
MyPaint.")
 | 
			
		||||
    (home-page "https://github.com/Jehan/mypaint-brushes")
 | 
			
		||||
    (license license:cc0)))
 | 
			
		||||
 | 
			
		||||
(define-public gimp-resynthesizer
 | 
			
		||||
  ;; GIMP does not respect any plugin search path environment variable, so after
 | 
			
		||||
  ;; installation users have to edit their GIMP settings to include
 | 
			
		||||
  ;; "$HOME/.guix-profile/lib/gimp/2.0/plug-ins/" in
 | 
			
		||||
  ;; “Edit->Preferences->Folders->Plug Ins”.
 | 
			
		||||
  (package
 | 
			
		||||
    (name "gimp-resynthesizer")
 | 
			
		||||
    (version "2.0.3")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (string-append "https://github.com/bootchk/resynthesizer/archive/v"
 | 
			
		||||
			   version ".tar.gz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "0l3404w6rqny7h3djskxf149gzx6x4qhndgbh3403c9lbh4pi1kr"))
 | 
			
		||||
       (file-name (string-append name "-" version ".tar.gz"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `( ;; Turn off tests to avoid:
 | 
			
		||||
       ;; make[1]: *** No rule to make target '../src/resynth-gui.c', needed by 'resynthesizer.pot'.  Stop.
 | 
			
		||||
       #:tests? #f
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
	 (add-after 'unpack 'set-env
 | 
			
		||||
	   (lambda _
 | 
			
		||||
	     (setenv "CONFIG_SHELL" (which "sh"))
 | 
			
		||||
	     #t))
 | 
			
		||||
	 (add-after 'configure 'set-prefix
 | 
			
		||||
           ;; Install plugin under $prefix, not under GIMP's libdir.
 | 
			
		||||
           (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
             (let ((target (string-append (assoc-ref outputs "out")
 | 
			
		||||
                                          "/lib/gimp/"
 | 
			
		||||
                                          ,(version-major
 | 
			
		||||
                                            (package-version gimp))
 | 
			
		||||
                                          ".0")))
 | 
			
		||||
               (substitute* (list "src/resynthesizer/Makefile"
 | 
			
		||||
				  "src/resynthesizer-gui/Makefile")
 | 
			
		||||
		 (("GIMP_LIBDIR = .*")
 | 
			
		||||
                  (string-append "GIMP_LIBDIR = " target "\n")))
 | 
			
		||||
               (mkdir-p target)
 | 
			
		||||
               #t))))))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("autoconf" ,autoconf-wrapper)
 | 
			
		||||
       ("automake" ,automake)
 | 
			
		||||
       ("glib" ,glib "bin")                       ; glib-gettextize
 | 
			
		||||
       ("intltool" ,intltool)
 | 
			
		||||
       ("pkg-config" ,pkg-config)))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("gimp" ,gimp)
 | 
			
		||||
       ("gdk-pixbuf" ,gdk-pixbuf)                 ; needed by gimp-2.0.pc
 | 
			
		||||
       ("cairo" ,cairo)
 | 
			
		||||
       ("gegl" ,gegl)
 | 
			
		||||
       ("gtk+" ,gtk+-2)                           ; needed by gimpui-2.0.pc
 | 
			
		||||
       ("glib" ,glib)))
 | 
			
		||||
    (home-page "https://github.com/bootchk/resynthesizer")
 | 
			
		||||
    (synopsis "GIMP plugins for texture synthesis")
 | 
			
		||||
    (description
 | 
			
		||||
     "This package provides resynthesizer plugins for GIMP, which encompasses
 | 
			
		||||
tools for healing selections (content-aware fill), enlarging the canvas and
 | 
			
		||||
healing the border, increasing the resolution while adding detail, and
 | 
			
		||||
transfering the style of an image.")
 | 
			
		||||
    (license license:gpl3+)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 | 
			
		||||
;;; Copyright © 2013, 2015, 2018 Andreas Enge <andreas@enge.fr>
 | 
			
		||||
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 | 
			
		||||
;;; Copyright © 2014, 2018 Eric Bavier <bavier@member.fsf.org>
 | 
			
		||||
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 | 
			
		||||
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 | 
			
		||||
;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
| 
						 | 
				
			
			@ -67,7 +67,8 @@
 | 
			
		|||
  #:use-module (guix git-download)
 | 
			
		||||
  #:use-module (guix build-system gnu)
 | 
			
		||||
  #:use-module (guix build-system perl)
 | 
			
		||||
  #:use-module (guix build-system python))
 | 
			
		||||
  #:use-module (guix build-system python)
 | 
			
		||||
  #:use-module (srfi srfi-1))
 | 
			
		||||
 | 
			
		||||
(define-public libgpg-error
 | 
			
		||||
  (package
 | 
			
		||||
| 
						 | 
				
			
			@ -458,6 +459,13 @@ strong randomness, and more.  It is implemented using the foreign function
 | 
			
		|||
interface (FFI) of Guile.")
 | 
			
		||||
    (license license:gpl3+)))
 | 
			
		||||
 | 
			
		||||
(define-public guile2.0-gcrypt
 | 
			
		||||
  (package (inherit guile-gcrypt)
 | 
			
		||||
    (name "guile2.0-gcrypt")
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("guile" ,guile-2.0)
 | 
			
		||||
       ,@(alist-delete "guile" (package-inputs guile-gcrypt))))))
 | 
			
		||||
 | 
			
		||||
(define-public python-gpg
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-gpg")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@
 | 
			
		|||
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 | 
			
		||||
;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
 | 
			
		||||
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 | 
			
		||||
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 | 
			
		||||
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 | 
			
		||||
;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
 | 
			
		||||
| 
						 | 
				
			
			@ -620,8 +620,9 @@ security standards.")
 | 
			
		|||
       ("zip" ,zip)
 | 
			
		||||
       ("zlib" ,zlib)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("rust" ,rust)
 | 
			
		||||
       ("cargo" ,rust "cargo")
 | 
			
		||||
      ;; Icecat 60 checkes for rust>=1.24
 | 
			
		||||
     `(("rust" ,rust-1.24)
 | 
			
		||||
       ("cargo" ,rust-1.24 "cargo")
 | 
			
		||||
       ("perl" ,perl)
 | 
			
		||||
       ("python" ,python-2) ; Python 3 not supported
 | 
			
		||||
       ("python2-pysqlite" ,python2-pysqlite)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
 | 
			
		||||
;;; Copyright © 2016 Andy Wingo <wingo@igalia.com>
 | 
			
		||||
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
 | 
			
		||||
| 
						 | 
				
			
			@ -77,6 +77,10 @@
 | 
			
		|||
                  (guix build utils)
 | 
			
		||||
                  (srfi srfi-1))
 | 
			
		||||
       #:tests? #f ; Tests are run by the all.bash script.
 | 
			
		||||
       ,@(if (string-prefix? "aarch64-linux" (or (%current-system)
 | 
			
		||||
                                                 (%current-target-system)))
 | 
			
		||||
             '(#:system "armhf-linux")
 | 
			
		||||
             '())
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (delete 'configure)
 | 
			
		||||
| 
						 | 
				
			
			@ -213,7 +217,7 @@ programming language designed primarily for systems programming.  Go is a
 | 
			
		|||
compiled, statically typed language in the tradition of C and C++, but adds
 | 
			
		||||
garbage collection, various safety features, and concurrent programming features
 | 
			
		||||
in the style of communicating sequential processes (@dfn{CSP}).")
 | 
			
		||||
    (supported-systems '("x86_64-linux" "i686-linux" "armhf-linux"))
 | 
			
		||||
    (supported-systems '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux"))
 | 
			
		||||
    (license license:bsd-3)))
 | 
			
		||||
 | 
			
		||||
(define-public go-1.9
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -705,20 +705,20 @@ and understanding different BRDFs (and other component functions).")
 | 
			
		|||
       (list (string-append "--x-includes=" (assoc-ref %build-inputs "libx11")
 | 
			
		||||
                            "/include")
 | 
			
		||||
             (string-append "--x-libraries=" (assoc-ref %build-inputs "libx11")
 | 
			
		||||
                            "/lib"))
 | 
			
		||||
                            "/lib")
 | 
			
		||||
             "--disable-examples")
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-after 'unpack 'autoreconf
 | 
			
		||||
         (replace 'bootstrap
 | 
			
		||||
           (lambda _
 | 
			
		||||
             ;; let's call configure from configure phase and not now
 | 
			
		||||
             (substitute* "autogen.sh" (("./configure") "# ./configure"))
 | 
			
		||||
             (zero? (system* "sh" "autogen.sh")))))))
 | 
			
		||||
             (invoke "sh" "autogen.sh"))))))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("pkg-config" ,pkg-config)
 | 
			
		||||
       ("libtool" ,libtool)
 | 
			
		||||
       ("autoconf" ,autoconf)
 | 
			
		||||
       ("automake" ,automake)
 | 
			
		||||
       ("bash" ,bash)))
 | 
			
		||||
       ("automake" ,automake)))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("libx11" ,libx11)
 | 
			
		||||
       ("freetype" ,freetype)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -227,6 +227,7 @@ for the GStreamer multimedia library.")
 | 
			
		|||
       ("gdk-pixbuf" ,gdk-pixbuf)
 | 
			
		||||
       ("gst-plugins-base" ,gst-plugins-base)
 | 
			
		||||
       ("jack" ,jack-1)
 | 
			
		||||
       ("lame" ,lame)
 | 
			
		||||
       ("libavc1394" ,libavc1394)
 | 
			
		||||
       ("libcaca" ,libcaca)
 | 
			
		||||
       ("libdv" ,libdv)
 | 
			
		||||
| 
						 | 
				
			
			@ -236,10 +237,12 @@ for the GStreamer multimedia library.")
 | 
			
		|||
       ("libshout" ,libshout)
 | 
			
		||||
       ("libsoup" ,libsoup)
 | 
			
		||||
       ("libvpx" ,libvpx)
 | 
			
		||||
       ("mpg123" ,mpg123)
 | 
			
		||||
       ("orc" ,orc)
 | 
			
		||||
       ("pulseaudio" ,pulseaudio)
 | 
			
		||||
       ("speex" ,speex)
 | 
			
		||||
       ("taglib" ,taglib)
 | 
			
		||||
       ("twolame" ,twolame)
 | 
			
		||||
       ("wavpack" ,wavpack)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("glib:bin" ,glib "bin")
 | 
			
		||||
| 
						 | 
				
			
			@ -320,7 +323,6 @@ developers consider to have good quality code and correct functionality.")
 | 
			
		|||
       ("libxml2" ,libxml2)
 | 
			
		||||
       ("lrdf" ,lrdf)
 | 
			
		||||
       ("mesa" ,mesa)
 | 
			
		||||
       ("mpg123" ,mpg123)
 | 
			
		||||
       ("neon" ,neon)
 | 
			
		||||
       ("openal" ,openal)
 | 
			
		||||
       ("openexr" ,openexr)
 | 
			
		||||
| 
						 | 
				
			
			@ -357,13 +359,10 @@ par compared to the rest.")
 | 
			
		|||
    (inputs
 | 
			
		||||
     `(("gst-plugins-base" ,gst-plugins-base)
 | 
			
		||||
       ("liba52" ,liba52)
 | 
			
		||||
       ("lame" ,lame)
 | 
			
		||||
       ("libcdio" ,libcdio)
 | 
			
		||||
       ("twolame" ,twolame)
 | 
			
		||||
       ("libmpeg2" ,libmpeg2)
 | 
			
		||||
       ("libdvdread" ,libdvdread)
 | 
			
		||||
       ("libx264" ,libx264)
 | 
			
		||||
       ("mpg123" ,mpg123)
 | 
			
		||||
       ;; TODO:
 | 
			
		||||
       ;; * opencore-amr (for the AMR-NB decoder and encoder and the
 | 
			
		||||
       ;;   AMR-WB decoder) <http://sourceforge.net/projects/opencore-amr/>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,7 @@
 | 
			
		|||
;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 | 
			
		||||
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 | 
			
		||||
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
 | 
			
		||||
;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -224,6 +225,20 @@ without requiring the source code to be rewritten.")
 | 
			
		|||
   (home-page "https://www.gnu.org/software/guile/")
 | 
			
		||||
   (license license:lgpl3+)))
 | 
			
		||||
 | 
			
		||||
(define-public guile-2.0.13
 | 
			
		||||
  ;; For testing a "minimal" Guix
 | 
			
		||||
  (hidden-package
 | 
			
		||||
   (package (inherit guile-2.0)
 | 
			
		||||
     (name "guile")
 | 
			
		||||
     (version "2.0.13")
 | 
			
		||||
     (source (origin
 | 
			
		||||
               (method url-fetch)
 | 
			
		||||
               (uri (string-append "mirror://gnu/guile/guile-" version
 | 
			
		||||
                                   ".tar.xz"))
 | 
			
		||||
               (sha256
 | 
			
		||||
                (base32
 | 
			
		||||
                 "12yqkr974y91ylgw6jnmci2v90i90s7h9vxa4zk0sai8vjnz4i1p")))))))
 | 
			
		||||
 | 
			
		||||
(define-public guile-2.2
 | 
			
		||||
  (package (inherit guile-2.0)
 | 
			
		||||
    (name "guile")
 | 
			
		||||
| 
						 | 
				
			
			@ -292,39 +307,14 @@ without requiring the source code to be rewritten.")
 | 
			
		|||
    (package
 | 
			
		||||
      (inherit guile-2.2)
 | 
			
		||||
      (name "guile-next")
 | 
			
		||||
      (version (git-version "2.99" revision commit))
 | 
			
		||||
      (version "2.9.1")
 | 
			
		||||
      (source (origin
 | 
			
		||||
                (method git-fetch)
 | 
			
		||||
                (uri (git-reference
 | 
			
		||||
                      (url "https://git.savannah.gnu.org/git/guile.git")
 | 
			
		||||
                      (commit commit)))
 | 
			
		||||
                (inherit (package-source guile-2.2))
 | 
			
		||||
                (uri (string-append "https://alpha.gnu.org/gnu/guile/guile-"
 | 
			
		||||
                                    version ".tar.xz"))
 | 
			
		||||
                (sha256
 | 
			
		||||
                 (base32
 | 
			
		||||
                  "1c2xy5cflg0hws48914rz3z8mdmf8w3lblfic0kxnymcmdv9cbhv"))
 | 
			
		||||
                (file-name (git-file-name name version))))
 | 
			
		||||
      (native-inputs
 | 
			
		||||
       `(("autoconf", autoconf)
 | 
			
		||||
         ("automake" ,automake)
 | 
			
		||||
         ("libtool" ,libtool)
 | 
			
		||||
         ("gettext" ,gnu-gettext)
 | 
			
		||||
         ("texinfo" ,texinfo)
 | 
			
		||||
         ("flex" ,flex)
 | 
			
		||||
         ,@(package-native-inputs guile-2.2)))
 | 
			
		||||
      (arguments
 | 
			
		||||
       (substitute-keyword-arguments (package-arguments guile-2.2)
 | 
			
		||||
         ((#:phases phases '%standard-phases)
 | 
			
		||||
          ;; XXX: The default 'bootstrap' phase tries to execute the
 | 
			
		||||
          ;; ./bootstrap directory.
 | 
			
		||||
          `(modify-phases ,phases
 | 
			
		||||
             (replace 'bootstrap
 | 
			
		||||
               (lambda _
 | 
			
		||||
                 (patch-shebang "build-aux/git-version-gen")
 | 
			
		||||
                 (invoke "autoreconf" "-vfi")))
 | 
			
		||||
             (add-before 'check 'skip-version-test
 | 
			
		||||
               (lambda _
 | 
			
		||||
                 ;; Remove this test that's bound to fail.
 | 
			
		||||
                 (delete-file "test-suite/tests/version.test")
 | 
			
		||||
                 #t))))))
 | 
			
		||||
                  "0iba93yqn6mvgid0rfsrg4amym36pg9m8cqdplxsy222blrj9gh1"))))
 | 
			
		||||
      (native-search-paths
 | 
			
		||||
       (list (search-path-specification
 | 
			
		||||
              (variable "GUILE_LOAD_PATH")
 | 
			
		||||
| 
						 | 
				
			
			@ -332,7 +322,9 @@ without requiring the source code to be rewritten.")
 | 
			
		|||
             (search-path-specification
 | 
			
		||||
              (variable "GUILE_LOAD_COMPILED_PATH")
 | 
			
		||||
              (files '("lib/guile/3.0/site-ccache"
 | 
			
		||||
                       "share/guile/site/3.0"))))))))
 | 
			
		||||
                       "share/guile/site/3.0")))))
 | 
			
		||||
      (properties '((ftp-server . "alpha.gnu.org")
 | 
			
		||||
                    (upstream-name . "guile"))))))
 | 
			
		||||
 | 
			
		||||
(define (make-guile-readline guile)
 | 
			
		||||
  (package
 | 
			
		||||
| 
						 | 
				
			
			@ -1143,6 +1135,9 @@ Guile's foreign function interface.")
 | 
			
		|||
     "This package provides Guile bindings to the SQLite database system.")
 | 
			
		||||
    (license license:gpl3+)))
 | 
			
		||||
 | 
			
		||||
(define-public guile2.0-sqlite3
 | 
			
		||||
  (package-for-guile-2.0 guile-sqlite3))
 | 
			
		||||
 | 
			
		||||
(define-public haunt
 | 
			
		||||
  (package
 | 
			
		||||
    (name "haunt")
 | 
			
		||||
| 
						 | 
				
			
			@ -1161,13 +1156,15 @@ Guile's foreign function interface.")
 | 
			
		|||
       #:tests? #f ; test suite is non-deterministic :(
 | 
			
		||||
       #:phases (modify-phases %standard-phases
 | 
			
		||||
                  (add-after 'install 'wrap-haunt
 | 
			
		||||
                    (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
                    (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
			
		||||
                      ;; Wrap the 'haunt' command to refer to the right
 | 
			
		||||
                      ;; modules.
 | 
			
		||||
                      (let* ((out  (assoc-ref outputs "out"))
 | 
			
		||||
                             (bin  (string-append out "/bin"))
 | 
			
		||||
                             (site (string-append
 | 
			
		||||
                                    out "/share/guile/site")))
 | 
			
		||||
                                    out "/share/guile/site"))
 | 
			
		||||
                             (deps (list (assoc-ref inputs "guile-reader")
 | 
			
		||||
                                         (assoc-ref inputs "guile-commonmark"))))
 | 
			
		||||
                        (match (scandir site)
 | 
			
		||||
                          (("." ".." version)
 | 
			
		||||
                           (let ((modules (string-append site "/" version))
 | 
			
		||||
| 
						 | 
				
			
			@ -1176,9 +1173,19 @@ Guile's foreign function interface.")
 | 
			
		|||
                                                    "/site-ccache")))
 | 
			
		||||
                             (wrap-program (string-append bin "/haunt")
 | 
			
		||||
                               `("GUILE_LOAD_PATH" ":" prefix
 | 
			
		||||
                                 (,modules))
 | 
			
		||||
                                 (,modules
 | 
			
		||||
                                  ,@(map (lambda (dep)
 | 
			
		||||
                                           (string-append dep
 | 
			
		||||
                                                          "/share/guile/site/"
 | 
			
		||||
                                                          version))
 | 
			
		||||
                                         deps)))
 | 
			
		||||
                               `("GUILE_LOAD_COMPILED_PATH" ":" prefix
 | 
			
		||||
                                 (,compiled-modules)))
 | 
			
		||||
                                 (,compiled-modules
 | 
			
		||||
                                  ,@(map (lambda (dep)
 | 
			
		||||
                                           (string-append dep "/lib/guile/"
 | 
			
		||||
                                                          version
 | 
			
		||||
                                                          "/site-ccache"))
 | 
			
		||||
                                         deps))))
 | 
			
		||||
                             #t)))))))))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("pkg-config" ,pkg-config)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,14 +47,14 @@
 | 
			
		|||
    ;; The 7 release series has an incompatible API, while the 6 series is still
 | 
			
		||||
    ;; maintained. Don't update to 7 until we've made sure that the ImageMagick
 | 
			
		||||
    ;; users are ready for the 7-series API.
 | 
			
		||||
    (version "6.9.10-10")
 | 
			
		||||
    (version "6.9.10-12")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (string-append "mirror://imagemagick/ImageMagick-"
 | 
			
		||||
                                 version ".tar.xz"))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "0b0wwxm6mgaxq0i0hazxcpbk7xd5j1329r1vk9h07iz4v3k8i57h"))))
 | 
			
		||||
               "0ri96yqihdk921k5qx23y2sbhraxbp2avdccxiy6m3srjkirym2l"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,9 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
 | 
			
		||||
;;; Copyright © 2017 Mark Meyer <mark@ofosos.org>
 | 
			
		||||
;;; Copyright © 2017, 2018 Mark Meyer <mark@ofosos.org>
 | 
			
		||||
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 | 
			
		||||
;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -22,6 +23,7 @@
 | 
			
		|||
(define-module (gnu packages kde)
 | 
			
		||||
  #:use-module (guix build-system cmake)
 | 
			
		||||
  #:use-module (guix download)
 | 
			
		||||
  #:use-module (guix git-download)
 | 
			
		||||
  #:use-module ((guix licenses) #:prefix license:)
 | 
			
		||||
  #:use-module (guix packages)
 | 
			
		||||
  #:use-module (guix utils)
 | 
			
		||||
| 
						 | 
				
			
			@ -47,8 +49,87 @@
 | 
			
		|||
  #:use-module (gnu packages tls)
 | 
			
		||||
  #:use-module (gnu packages qt)
 | 
			
		||||
  #:use-module (gnu packages version-control)
 | 
			
		||||
  #:use-module (gnu packages video)
 | 
			
		||||
  #:use-module (gnu packages xorg))
 | 
			
		||||
 | 
			
		||||
(define-public kdenlive
 | 
			
		||||
  (let ((version "18.08.1"))
 | 
			
		||||
    (package
 | 
			
		||||
      (name "kdenlive")
 | 
			
		||||
      (version version)
 | 
			
		||||
      (source
 | 
			
		||||
       (origin
 | 
			
		||||
         (method git-fetch)
 | 
			
		||||
         (uri (git-reference
 | 
			
		||||
               (url "git://anongit.kde.org/kdenlive.git")
 | 
			
		||||
               (commit (string-append "v" version))))
 | 
			
		||||
         (file-name (string-append name "-" version "-checkout"))
 | 
			
		||||
         (sha256
 | 
			
		||||
          (base32
 | 
			
		||||
           "0ifnaclsz7w08mc485i3j1kkcpd1m8q5qamckrfwc375ac13xf4g"))))
 | 
			
		||||
      (build-system cmake-build-system)
 | 
			
		||||
      (native-inputs
 | 
			
		||||
       `(("extra-cmake-modules" ,extra-cmake-modules)
 | 
			
		||||
         ("qttools" ,qttools)))
 | 
			
		||||
      (propagated-inputs
 | 
			
		||||
       `(("mlt" ,mlt)))
 | 
			
		||||
      (inputs
 | 
			
		||||
       `(("shared-mime-info" ,shared-mime-info)
 | 
			
		||||
         ("frei0r-plugins" ,frei0r-plugins)
 | 
			
		||||
         ("qtbase" ,qtbase)
 | 
			
		||||
         ("qtscript" ,qtscript)
 | 
			
		||||
         ("qtsvg" ,qtsvg)
 | 
			
		||||
         ("kparts" ,kparts)
 | 
			
		||||
         ("knotifications" ,knotifications)
 | 
			
		||||
         ("karchive" ,karchive)
 | 
			
		||||
         ("kdbusaddons" ,kdbusaddons)
 | 
			
		||||
         ("kcrash" ,kcrash)
 | 
			
		||||
         ("kguiaddons" ,kguiaddons)
 | 
			
		||||
         ("knewstuff" ,knewstuff)
 | 
			
		||||
         ("knotifyconfig" ,knotifyconfig)
 | 
			
		||||
         ("kfilemetadata" ,kfilemetadata)
 | 
			
		||||
         ("kdoctools" ,kdoctools)
 | 
			
		||||
         ("kdeclarative", kdeclarative)
 | 
			
		||||
         ("qtdeclarative", qtdeclarative)
 | 
			
		||||
         ("qtquickcontrols", qtquickcontrols)
 | 
			
		||||
         ("kiconthemes", kiconthemes)
 | 
			
		||||
         ("qtgraphicaleffects" ,qtgraphicaleffects)
 | 
			
		||||
         ("kplotting", kplotting)))
 | 
			
		||||
      (arguments
 | 
			
		||||
       `(#:phases
 | 
			
		||||
         (modify-phases %standard-phases
 | 
			
		||||
           (add-after 'install 'wrap-executable
 | 
			
		||||
             (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
			
		||||
               (let* ((out (assoc-ref outputs "out"))
 | 
			
		||||
                      (qtquickcontrols (assoc-ref inputs "qtquickcontrols"))
 | 
			
		||||
                      (qtbase (assoc-ref inputs "qtbase"))
 | 
			
		||||
                      (qtdeclarative (assoc-ref inputs "qtdeclarative"))
 | 
			
		||||
                      (frei0r (assoc-ref inputs "frei0r-plugins"))
 | 
			
		||||
                      (qml "/lib/qt5/qml"))
 | 
			
		||||
                 (wrap-program (string-append out "/bin/kdenlive")
 | 
			
		||||
                   `("QT_PLUGIN_PATH" ":" prefix
 | 
			
		||||
                     ,(map (lambda (label)
 | 
			
		||||
                             (string-append (assoc-ref inputs label)
 | 
			
		||||
                                            "/lib/qt5/plugins/"))
 | 
			
		||||
                           '("qtbase", "qtsvg")))
 | 
			
		||||
                   `("FREI0R_PATH" ":" =
 | 
			
		||||
                     (,(string-append frei0r "/lib/frei0r-1/")))
 | 
			
		||||
                   `("QT_QPA_PLATFORM_PLUGIN_PATH" ":" =
 | 
			
		||||
                     (,(string-append qtbase "/lib/qt5/plugins/platforms")))
 | 
			
		||||
                   `("QML2_IMPORT_PATH" ":" prefix
 | 
			
		||||
                     (,(string-append qtquickcontrols qml)
 | 
			
		||||
                      ,(string-append qtdeclarative qml)))))
 | 
			
		||||
               #t)))))
 | 
			
		||||
      (home-page "https://kdenlive.org")
 | 
			
		||||
      (synopsis "Non-linear video editor")
 | 
			
		||||
      (description "Kdenlive is an acronym for KDE Non-Linear Video Editor.
 | 
			
		||||
 | 
			
		||||
Non-linear video editing is much more powerful than beginner's (linear)
 | 
			
		||||
editors, hence it requires a bit more organization before starting.  However,
 | 
			
		||||
it is not reserved to specialists and can be used for small personal
 | 
			
		||||
projects.")
 | 
			
		||||
      (license license:gpl2+))))
 | 
			
		||||
 | 
			
		||||
(define-public kdevelop
 | 
			
		||||
  (package
 | 
			
		||||
    (name "kdevelop")
 | 
			
		||||
| 
						 | 
				
			
			@ -236,7 +317,7 @@ plugins, as well as code to create plugins, or complete applications.")
 | 
			
		|||
(define-public krita
 | 
			
		||||
  (package
 | 
			
		||||
    (name "krita")
 | 
			
		||||
    (version "4.1.3")
 | 
			
		||||
    (version "4.1.5")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
| 
						 | 
				
			
			@ -245,7 +326,7 @@ plugins, as well as code to create plugins, or complete applications.")
 | 
			
		|||
                    "/" name "-" version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0d546dxs552z0pxnaka1jm7ksravw17f777wf593z0pl4ds8dgdx"))))
 | 
			
		||||
                "1by8p8ifdp03f05bhg8ygdd1j036anfpjjnzbx63l2fbmy9k6q10"))))
 | 
			
		||||
    (build-system cmake-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:tests? #f
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -399,8 +399,8 @@ It has been modified to remove all non-free binary blobs.")
 | 
			
		|||
;; supports qemu "virt" machine and possibly a large number of ARM boards.
 | 
			
		||||
;; See : https://wiki.debian.org/DebianKernel/ARMMP.
 | 
			
		||||
 | 
			
		||||
(define %linux-libre-version "4.18.12")
 | 
			
		||||
(define %linux-libre-hash "1mcnb1mm7m6i9s591c3kx0f1vbzhbl3w92w137swcm9zifqpci5r")
 | 
			
		||||
(define %linux-libre-version "4.18.14")
 | 
			
		||||
(define %linux-libre-hash "1gwwx8l283w8v1zylw2haqahvjns5dzqxx9li2586nnl8cfmfnwc")
 | 
			
		||||
 | 
			
		||||
(define %linux-libre-4.18-patches
 | 
			
		||||
  (list %boot-logo-patch
 | 
			
		||||
| 
						 | 
				
			
			@ -430,8 +430,8 @@ It has been modified to remove all non-free binary blobs.")
 | 
			
		|||
                    #:patches %linux-libre-4.18-patches
 | 
			
		||||
                    #:configuration-file kernel-config))
 | 
			
		||||
 | 
			
		||||
(define %linux-libre-4.14-version "4.14.74")
 | 
			
		||||
(define %linux-libre-4.14-hash "0cxyx2yinnc8q0hmhb0swjgdz3s0ry7wxzyqss9f2i74xjjz4rm0")
 | 
			
		||||
(define %linux-libre-4.14-version "4.14.76")
 | 
			
		||||
(define %linux-libre-4.14-hash "1y5zqf84ngb6f5f85xpd4bdy6mlxr52x19bx3mdrp82awc9fvr7q")
 | 
			
		||||
 | 
			
		||||
(define-public linux-libre-4.14
 | 
			
		||||
  (make-linux-libre %linux-libre-4.14-version
 | 
			
		||||
| 
						 | 
				
			
			@ -440,14 +440,14 @@ It has been modified to remove all non-free binary blobs.")
 | 
			
		|||
                    #:configuration-file kernel-config))
 | 
			
		||||
 | 
			
		||||
(define-public linux-libre-4.9
 | 
			
		||||
  (make-linux-libre "4.9.131"
 | 
			
		||||
                    "11pxwl7dmisbf2szg9qzkvhlpk68clh5l478n7b62q7hd8j3hxlv"
 | 
			
		||||
  (make-linux-libre "4.9.133"
 | 
			
		||||
                    "1vr94czdv5alzsgm2k1r6wqm01r2zafrayjn10l6kdr4g7aga488"
 | 
			
		||||
                    %intel-compatible-systems
 | 
			
		||||
                    #:configuration-file kernel-config))
 | 
			
		||||
 | 
			
		||||
(define-public linux-libre-4.4
 | 
			
		||||
  (make-linux-libre "4.4.159"
 | 
			
		||||
                    "12wrhni1ikmakwv55cgzsznx9llzp82irsisbjjs7bc8z2hzwr6l"
 | 
			
		||||
  (make-linux-libre "4.4.161"
 | 
			
		||||
                    "1q6bsndpjgw72mybhl5l8vrxs4mimg6821bjgi1pjkxbc7nd921b"
 | 
			
		||||
                    %intel-compatible-systems
 | 
			
		||||
                    #:configuration-file kernel-config))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -962,6 +962,8 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
 | 
			
		|||
             (substitute* "strace.c"
 | 
			
		||||
               (("/bin/sh") (which "sh")))
 | 
			
		||||
             #t)))
 | 
			
		||||
       ;; Don't fail if the architecture doesn't support different personalities.
 | 
			
		||||
       #:configure-flags '("--enable-mpers=check")
 | 
			
		||||
       ;; See <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32459>.
 | 
			
		||||
       #:parallel-tests? #f))           ; undeterministic failures
 | 
			
		||||
    (native-inputs `(("perl" ,perl)))
 | 
			
		||||
| 
						 | 
				
			
			@ -2667,14 +2669,14 @@ isolation or root privileges.")
 | 
			
		|||
(define-public hdparm
 | 
			
		||||
  (package
 | 
			
		||||
    (name "hdparm")
 | 
			
		||||
    (version "9.55")
 | 
			
		||||
    (version "9.56")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "mirror://sourceforge/" name "/" name "/"
 | 
			
		||||
                                  name "-" version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1ivdvrzimaayiq03by8mcq0mhmdljndj06h012zkdpw34irnpixm"))))
 | 
			
		||||
                "1np42qyhb503khvacnjcl3hb1dqly68gj0a1xip3j5qhbxlyvybg"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:make-flags (let ((out (assoc-ref %outputs "out")))
 | 
			
		||||
| 
						 | 
				
			
			@ -3626,14 +3628,14 @@ The following service daemons are also provided:
 | 
			
		|||
(define-public perftest
 | 
			
		||||
  (package
 | 
			
		||||
    (name "perftest")
 | 
			
		||||
    (version "4.2-0.8")
 | 
			
		||||
    (version "4.4-0.4")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (string-append "https://github.com/linux-rdma/perftest/releases/download/V"
 | 
			
		||||
                           version "/perftest-" version ".g0e24e67.tar.gz"))
 | 
			
		||||
       (uri (string-append "https://github.com/linux-rdma/perftest/releases/download/v"
 | 
			
		||||
                           version "/perftest-" version ".g0927198.tar.gz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "1r3pxn7cx3grb8myb4q1b0pk447pc06cifd0v7ym13xw00372dlx"))))
 | 
			
		||||
        (base32 "11ix4h0rrmqqyi84y55a9xnkvwsmwq0sywr46hvxzm4rqz4ma8vq"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases
 | 
			
		||||
| 
						 | 
				
			
			@ -3737,15 +3739,16 @@ such as frequency and voltage scaling.")
 | 
			
		|||
(define-public haveged
 | 
			
		||||
  (package
 | 
			
		||||
    (name "haveged")
 | 
			
		||||
    (version "1.9.2")
 | 
			
		||||
    (version "1.9.4")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (string-append "http://www.issihosts.com/haveged/haveged-"
 | 
			
		||||
                           version ".tar.gz"))
 | 
			
		||||
       (method git-fetch)
 | 
			
		||||
       (uri (git-reference
 | 
			
		||||
             (url "https://github.com/jirka-h/haveged.git")
 | 
			
		||||
             (commit version)))
 | 
			
		||||
       (file-name (git-file-name name version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "0w5ypz6451msckivjriwyw8djydlwffam7x23xh626s2vzdrlzgp"))))
 | 
			
		||||
        (base32 "1hrwzjd4byq4fdrg8svww3d8x449k80jxxrjy9v6jvzhfv19rvxr"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (home-page "http://www.issihosts.com/haveged")
 | 
			
		||||
    (synopsis "Entropy source for the Linux random number generator")
 | 
			
		||||
| 
						 | 
				
			
			@ -3754,11 +3757,16 @@ such as frequency and voltage scaling.")
 | 
			
		|||
Linux's @file{/dev/random} and @file{/dev/urandom} devices.  The kernel's
 | 
			
		||||
standard mechanisms for filling the entropy pool may not be sufficient for
 | 
			
		||||
systems with high needs or limited user interaction, such as headless servers.
 | 
			
		||||
 | 
			
		||||
@command{haveged} runs as a privileged daemon, harvesting randomness from the
 | 
			
		||||
indirect effects of hardware events on hidden processor state using the HArdware
 | 
			
		||||
Volatile Entropy Gathering and Expansion (HAVEGE) algorithm.  It tunes itself to
 | 
			
		||||
its environment and provides the same built-in test suite for the output stream
 | 
			
		||||
as used on certified hardware security devices.")
 | 
			
		||||
Volatile Entropy Gathering and Expansion (@dfn{HAVEGE}) algorithm.  It tunes
 | 
			
		||||
itself to its environment and provides the same built-in test suite for the
 | 
			
		||||
output stream as used on certified hardware security devices.
 | 
			
		||||
 | 
			
		||||
The quality of the randomness produced by this algorithm has not been proven.
 | 
			
		||||
It is recommended to run it together with another entropy source like rngd, and
 | 
			
		||||
not as a replacement for it.")
 | 
			
		||||
    (license (list (license:non-copyleft "file://nist/mconf.h")
 | 
			
		||||
                   (license:non-copyleft "file://nist/packtest.c")
 | 
			
		||||
                   license:public-domain        ; nist/dfft.c
 | 
			
		||||
| 
						 | 
				
			
			@ -4248,12 +4256,14 @@ Light is the successor of lightscript.")
 | 
			
		|||
               (setenv "TLP_SHCPL"
 | 
			
		||||
                       (string-append out "/share/bash-completion/completions"))
 | 
			
		||||
               (setenv "TLP_MAN" (string-append out "/share/man"))
 | 
			
		||||
               (setenv "TLP_META" (string-append out "/share/metainfo")))))
 | 
			
		||||
               (setenv "TLP_META" (string-append out "/share/metainfo"))
 | 
			
		||||
               #t)))
 | 
			
		||||
         (delete 'check)                ; no tests
 | 
			
		||||
         (add-before 'install 'fix-installation
 | 
			
		||||
           (lambda _
 | 
			
		||||
             ;; Stop the Makefile from trying to create system directories.
 | 
			
		||||
             (substitute* "Makefile" (("\\[ -f \\$\\(_CONF\\) \\]") "#"))))
 | 
			
		||||
             (substitute* "Makefile" (("\\[ -f \\$\\(_CONF\\) \\]") "#"))
 | 
			
		||||
             #t))
 | 
			
		||||
         (replace 'install
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (invoke "make" "install-tlp" "install-man")
 | 
			
		||||
| 
						 | 
				
			
			@ -4287,7 +4297,8 @@ Light is the successor of lightscript.")
 | 
			
		|||
                                                       "pciutils"
 | 
			
		||||
                                                       "rfkill"
 | 
			
		||||
                                                       "wireless-tools"))))))
 | 
			
		||||
                         bin-files)))))))
 | 
			
		||||
                         bin-files)
 | 
			
		||||
               #t))))))
 | 
			
		||||
    (home-page "http://linrunner.de/en/tlp/tlp.html")
 | 
			
		||||
    (synopsis "Power management tool for Linux")
 | 
			
		||||
    (description "TLP is a power management tool for Linux.  It comes with
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,41 +29,38 @@
 | 
			
		|||
  #:use-module (gnu packages)
 | 
			
		||||
  #:use-module ((guix licenses) #:prefix license:)
 | 
			
		||||
  #:use-module (guix packages)
 | 
			
		||||
  #:use-module (gnu packages readline)
 | 
			
		||||
  #:use-module (gnu packages texinfo)
 | 
			
		||||
  #:use-module (gnu packages tex)
 | 
			
		||||
  #:use-module (gnu packages m4)
 | 
			
		||||
  #:use-module (guix download)
 | 
			
		||||
  #:use-module (guix git-download)
 | 
			
		||||
  #:use-module (guix hg-download)
 | 
			
		||||
  #:use-module (guix utils)
 | 
			
		||||
  #:use-module (guix build-system gnu)
 | 
			
		||||
  #:use-module (guix build-system asdf)
 | 
			
		||||
  #:use-module (guix build-system trivial)
 | 
			
		||||
  #:use-module (gnu packages admin)
 | 
			
		||||
  #:use-module (gnu packages base)
 | 
			
		||||
  #:use-module (gnu packages bdw-gc)
 | 
			
		||||
  #:use-module (gnu packages compression)
 | 
			
		||||
  #:use-module (gnu packages ed)
 | 
			
		||||
  #:use-module (gnu packages fontutils)
 | 
			
		||||
  #:use-module (gnu packages gcc)
 | 
			
		||||
  #:use-module (gnu packages gettext)
 | 
			
		||||
  #:use-module (gnu packages gl)
 | 
			
		||||
  #:use-module (gnu packages glib)
 | 
			
		||||
  #:use-module (gnu packages m4)
 | 
			
		||||
  #:use-module (gnu packages maths)
 | 
			
		||||
  #:use-module (gnu packages multiprecision)
 | 
			
		||||
  #:use-module (gnu packages ncurses)
 | 
			
		||||
  #:use-module (gnu packages bdw-gc)
 | 
			
		||||
  #:use-module (gnu packages libffi)
 | 
			
		||||
  #:use-module (gnu packages libffcall)
 | 
			
		||||
  #:use-module (gnu packages readline)
 | 
			
		||||
  #:use-module (gnu packages sdl)
 | 
			
		||||
  #:use-module (gnu packages libffi)
 | 
			
		||||
  #:use-module (gnu packages libsigsegv)
 | 
			
		||||
  #:use-module (gnu packages linux)
 | 
			
		||||
  #:use-module (gnu packages admin)
 | 
			
		||||
  #:use-module (gnu packages ed)
 | 
			
		||||
  #:use-module (gnu packages gl)
 | 
			
		||||
  #:use-module (gnu packages gcc)
 | 
			
		||||
  #:use-module (gnu packages glib)
 | 
			
		||||
  #:use-module (gnu packages gettext)
 | 
			
		||||
  #:use-module (gnu packages m4)
 | 
			
		||||
  #:use-module (gnu packages perl)
 | 
			
		||||
  #:use-module (gnu packages pkg-config)
 | 
			
		||||
  #:use-module (gnu packages readline)
 | 
			
		||||
  #:use-module (gnu packages sdl)
 | 
			
		||||
  #:use-module (gnu packages tex)
 | 
			
		||||
  #:use-module (gnu packages texinfo)
 | 
			
		||||
  #:use-module (gnu packages version-control)
 | 
			
		||||
  #:use-module (gnu packages xorg)
 | 
			
		||||
  #:use-module (gnu packages perl)
 | 
			
		||||
  #:use-module (ice-9 match)
 | 
			
		||||
  #:use-module (srfi srfi-1))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -256,28 +253,31 @@ supporting ASDF, Sockets, Gray streams, MOP, and other useful components.")
 | 
			
		|||
(define-public clisp
 | 
			
		||||
  (package
 | 
			
		||||
    (name "clisp")
 | 
			
		||||
    (version "2.49-60")
 | 
			
		||||
    (version "2.49-92")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method hg-fetch)
 | 
			
		||||
       (uri (hg-reference
 | 
			
		||||
             (url "http://hg.code.sf.net/p/clisp/clisp")
 | 
			
		||||
             (changeset "clisp_2_49_60-2017-06-25")))
 | 
			
		||||
       (file-name (string-append name "-" version "-checkout"))
 | 
			
		||||
       (method git-fetch)
 | 
			
		||||
       (uri (git-reference
 | 
			
		||||
             (url "https://gitlab.com/gnu-clisp/clisp")
 | 
			
		||||
             (commit "clisp-2.49.92-2018-02-18")))
 | 
			
		||||
       (file-name (git-file-name name version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "0qjv3z274rbdmb941hy03hl63f4z7bmci234f8dyz4skgfr82d3i"))
 | 
			
		||||
       (patches (search-patches "clisp-glibc-2.26.patch"
 | 
			
		||||
                                "clisp-remove-failing-test.patch"))))
 | 
			
		||||
        (base32 "0k2dmgl0miz3767iks4p0mvp6xw0ysyxhjpklyh11j010rmh6hqb"))
 | 
			
		||||
       (patches (search-patches "clisp-remove-failing-test.patch"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (inputs `(("libffcall" ,libffcall)
 | 
			
		||||
              ("ncurses" ,ncurses)
 | 
			
		||||
              ("readline" ,readline)
 | 
			
		||||
              ("libsigsegv" ,libsigsegv)))
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:configure-flags '("--enable-portability"
 | 
			
		||||
                           "--with-dynamic-ffi"
 | 
			
		||||
                           "--with-dynamic-modules"
 | 
			
		||||
                           "--with-module=rawsock")
 | 
			
		||||
     `(#:configure-flags '(,@(if (string-prefix? "armhf-linux"
 | 
			
		||||
                                                 (or (%current-system)
 | 
			
		||||
                                                     (%current-target-system)))
 | 
			
		||||
                                 '("CFLAGS=-falign-functions=4")
 | 
			
		||||
                                 '())
 | 
			
		||||
                            "--with-dynamic-ffi"
 | 
			
		||||
                            "--with-dynamic-modules"
 | 
			
		||||
                            "--with-module=rawsock")
 | 
			
		||||
       #:build #f
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
| 
						 | 
				
			
			@ -288,6 +288,10 @@ supporting ASDF, Sockets, Gray streams, MOP, and other useful components.")
 | 
			
		|||
             ;; many places where our automatic patching misses them.  Therefore
 | 
			
		||||
             ;; we do the following, in this early (post-unpack) phase, to solve
 | 
			
		||||
             ;; the problem from its root.
 | 
			
		||||
             (substitute* '("src/clisp-link.in"
 | 
			
		||||
                            "src/unix.d"
 | 
			
		||||
                            "src/makemake.in")
 | 
			
		||||
               (("/bin/sh") (which "sh")))
 | 
			
		||||
             (substitute* (find-files "." "configure|Makefile")
 | 
			
		||||
               (("/bin/sh") "sh"))
 | 
			
		||||
             (substitute* '("src/clisp-link.in")
 | 
			
		||||
| 
						 | 
				
			
			@ -295,7 +299,7 @@ supporting ASDF, Sockets, Gray streams, MOP, and other useful components.")
 | 
			
		|||
             #t)))
 | 
			
		||||
       ;; Makefiles seem to have race conditions.
 | 
			
		||||
       #:parallel-build? #f))
 | 
			
		||||
    (home-page "http://www.clisp.org/")
 | 
			
		||||
    (home-page "https://clisp.sourceforge.io/")
 | 
			
		||||
    (synopsis "A Common Lisp implementation")
 | 
			
		||||
    (description
 | 
			
		||||
     "GNU CLISP is an implementation of ANSI Common Lisp.  Common Lisp is a
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -239,6 +239,50 @@ triangulations.")
 | 
			
		|||
    (license (license:non-copyleft "file://COPYING.txt"
 | 
			
		||||
                                   "See COPYING in the distribution."))))
 | 
			
		||||
 | 
			
		||||
(define-public python-cvxopt
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-cvxopt")
 | 
			
		||||
    (version "1.2.1")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method git-fetch)
 | 
			
		||||
              (uri (git-reference
 | 
			
		||||
                    (url "https://github.com/cvxopt/cvxopt.git")
 | 
			
		||||
                    (commit version)))
 | 
			
		||||
              (file-name (git-file-name name version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "05mnjil9palaa48xafdfh4f5pr4z7aqjr995rwl08qfyxs8y0crf"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-after 'unpack 'find-libraries
 | 
			
		||||
           (lambda* (#:key inputs #:allow-other-keys)
 | 
			
		||||
             (setenv "CVXOPT_BLAS_LIB" "openblas")
 | 
			
		||||
             (setenv "CVXOPT_BUILD_FFTW" "1")
 | 
			
		||||
             (setenv "CVXOPT_BUILD_GLPK" "1")
 | 
			
		||||
             (setenv "CVXOPT_BUILD_GSL" "1")
 | 
			
		||||
             #t)))))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("fftw" ,fftw)
 | 
			
		||||
       ("glpk" ,glpk)
 | 
			
		||||
       ("gsl" ,gsl)
 | 
			
		||||
       ("lapack" ,lapack)
 | 
			
		||||
       ("openblas" ,openblas)
 | 
			
		||||
       ("suitesparse" ,suitesparse)))
 | 
			
		||||
    (home-page "https://www.cvxopt.org")
 | 
			
		||||
    (synopsis "Python library for convex optimization")
 | 
			
		||||
    (description
 | 
			
		||||
     "CVXOPT is a package for convex optimization based on the Python
 | 
			
		||||
programming language.  Its main purpose is to make the development of software
 | 
			
		||||
for convex optimization applications straightforward by building on Python’s
 | 
			
		||||
extensive standard library and on the strengths of Python as a high-level
 | 
			
		||||
programming language.")
 | 
			
		||||
    (license license:gpl3+)))
 | 
			
		||||
 | 
			
		||||
(define-public python2-cvxopt
 | 
			
		||||
  (package-with-python2 python-cvxopt))
 | 
			
		||||
 | 
			
		||||
(define-public units
 | 
			
		||||
  (package
 | 
			
		||||
   (name "units")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -249,14 +249,14 @@ access to servers running the Discord protocol.")
 | 
			
		|||
(define-public hexchat
 | 
			
		||||
  (package
 | 
			
		||||
    (name "hexchat")
 | 
			
		||||
    (version "2.14.1")
 | 
			
		||||
    (version "2.14.2")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://dl.hexchat.net/hexchat/hexchat-"
 | 
			
		||||
                                  version ".tar.xz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "18h3l34zmazjlfx3irg7k7swppa62ad9ffbl0j3ry8p2xfyf8cmh"))))
 | 
			
		||||
                "064nq151nzsljv97dmkifyl162d2738vbgvm1phx7yv04pjvk4kp"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (native-inputs `(("gettext" ,gettext-minimal)
 | 
			
		||||
                     ("perl" ,perl)
 | 
			
		||||
| 
						 | 
				
			
			@ -295,7 +295,7 @@ window shows the list of currently connected networks and their channels, the
 | 
			
		|||
current conversation and the list of users.  It uses colors to differentiate
 | 
			
		||||
between users and to highlight messages.  It checks spelling using available
 | 
			
		||||
dictionaries.  HexChat can be extended with multiple addons.")
 | 
			
		||||
    (home-page "http://hexchat.net/")
 | 
			
		||||
    (home-page "https://hexchat.net/")
 | 
			
		||||
    (license license:gpl2+)))
 | 
			
		||||
 | 
			
		||||
(define-public ngircd
 | 
			
		||||
| 
						 | 
				
			
			@ -873,7 +873,7 @@ protocols.")
 | 
			
		|||
(define-public c-toxcore
 | 
			
		||||
  (package
 | 
			
		||||
    (name "c-toxcore")
 | 
			
		||||
    (version "0.2.7")
 | 
			
		||||
    (version "0.2.8")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -882,7 +882,7 @@ protocols.")
 | 
			
		|||
       (file-name (string-append name "-" version ".tar.gz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "1lcw979zakyb5kzy8yfk87js3bzfz3k2jxidda6ga6ljdnqdpxmy"))))
 | 
			
		||||
         "0qlkimlvbd24nlj7w9b5rpz1r807magqxmfylc1mlxsqhmfi5zj7"))))
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable
 | 
			
		||||
                     ; for now.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1777,6 +1777,42 @@ programming methods as well as for realizing complex systems for large-scale
 | 
			
		|||
projects.")
 | 
			
		||||
    (license license:bsd-3)))
 | 
			
		||||
 | 
			
		||||
(define-public libpd
 | 
			
		||||
  (package
 | 
			
		||||
    (name "libpd")
 | 
			
		||||
    (version "0.11.0")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method git-fetch)
 | 
			
		||||
              (uri (git-reference
 | 
			
		||||
                    (url "https://github.com/libpd/libpd.git")
 | 
			
		||||
                    (commit version)
 | 
			
		||||
                    (recursive? #t)))   ; for the 'pure-data' submodule
 | 
			
		||||
              (file-name (string-append name "-" version "-checkout"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1bcg1d9iyf9n37hwwphmih0c8rd1xcqykil5z1cax6xfs76552nk"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:tests? #f                      ; no tests
 | 
			
		||||
       #:make-flags '("CC=gcc")
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (delete 'configure)            ; no configure script
 | 
			
		||||
         (replace 'install
 | 
			
		||||
           (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
             (let ((out (assoc-ref outputs "out")))
 | 
			
		||||
               (invoke "make" "install"
 | 
			
		||||
                       (string-append "prefix=" out)
 | 
			
		||||
                       ;; XXX: Fix the last 2 lines of 'install' target.
 | 
			
		||||
                       "LIBPD_IMPLIB=NO"
 | 
			
		||||
                       "LIBPD_DEF=NO")))))))
 | 
			
		||||
    (home-page "http://libpd.cc/")
 | 
			
		||||
    (synopsis "Pure Data as an embeddable audio synthesis library")
 | 
			
		||||
    (description
 | 
			
		||||
     "Libpd provides Pure Data as an embeddable audio synthesis library.  Its
 | 
			
		||||
main purpose is to liberate raw audio rendering from audio and MIDI drivers.")
 | 
			
		||||
    (license license:bsd-3)))
 | 
			
		||||
 | 
			
		||||
(define-public portmidi
 | 
			
		||||
  (package
 | 
			
		||||
    (name "portmidi")
 | 
			
		||||
| 
						 | 
				
			
			@ -2429,6 +2465,47 @@ and managing stations, can be controlled remotely via fifo, and can run
 | 
			
		|||
event-based scripts for scrobbling, notifications, etc.")
 | 
			
		||||
    (license license:expat)))
 | 
			
		||||
 | 
			
		||||
(define-public picard
 | 
			
		||||
  (package
 | 
			
		||||
    (name "picard")
 | 
			
		||||
    (version "2.0.4")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
                    "https://musicbrainz.osuosl.org/pub/musicbrainz/"
 | 
			
		||||
                    "picard/picard-" version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0ds3ylpqn717fnzcjrfn05v5xram01bj6n3hwn9igmkd1jgf8vhc"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-after 'unpack 'patch-source
 | 
			
		||||
           (lambda* (#:key inputs #:allow-other-keys)
 | 
			
		||||
             (substitute* "picard/const/__init__.py"
 | 
			
		||||
               (("pyfpcalc")
 | 
			
		||||
                (string-append
 | 
			
		||||
                 "pyfpcalc', '"
 | 
			
		||||
                 (assoc-ref inputs "chromaprint") "/bin/fpcalc")))))
 | 
			
		||||
         (replace 'install
 | 
			
		||||
           (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
             (invoke "python" "setup.py" "install"
 | 
			
		||||
                     (string-append "--prefix=" (assoc-ref outputs "out"))
 | 
			
		||||
                     "--root=/"))))))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("gettext" ,gettext-minimal)))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("chromaprint" ,chromaprint)
 | 
			
		||||
       ("python-pyqt" ,python-pyqt)
 | 
			
		||||
       ("python-mutagen" ,python-mutagen)))
 | 
			
		||||
    (home-page "https://picard.musicbrainz.org/")
 | 
			
		||||
    (synopsis "Graphical music tagging application")
 | 
			
		||||
    (description
 | 
			
		||||
     "MusicBrainz Picard is a music tagging application, supporting multiple
 | 
			
		||||
formats, looking up tracks through metadata and audio fingerprints.")
 | 
			
		||||
    (license license:gpl2+)))
 | 
			
		||||
 | 
			
		||||
(define-public python-mutagen
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-mutagen")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -581,7 +581,7 @@ of the same name.")
 | 
			
		|||
(define-public wireshark
 | 
			
		||||
  (package
 | 
			
		||||
    (name "wireshark")
 | 
			
		||||
    (version "2.6.3")
 | 
			
		||||
    (version "2.6.4")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -589,7 +589,7 @@ of the same name.")
 | 
			
		|||
                           version ".tar.xz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "1v538h02y8avwy3cr11xz6wkyf9xd8qva4ng4sl9f2fw4skahn6i"))))
 | 
			
		||||
         "0qf81dk726sdsmjqa9nd251j1cwvzkyb4hrlp6w4iwa3cdz00sx0"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (inputs `(("c-ares" ,c-ares)
 | 
			
		||||
              ("glib" ,glib)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -820,7 +820,8 @@ libpanel, librsvg and quartz.")
 | 
			
		|||
               (let* ((out (assoc-ref outputs "out"))
 | 
			
		||||
                      (bin (string-append out "/bin")))
 | 
			
		||||
                 ;; 'unison-fsmonitor' is used in "unison -repeat watch" mode.
 | 
			
		||||
                 (install-file "src/unison-fsmonitor" bin))))
 | 
			
		||||
                 (install-file "src/unison-fsmonitor" bin)
 | 
			
		||||
                 #t)))
 | 
			
		||||
           (add-after 'install 'install-doc
 | 
			
		||||
             (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
               (let ((doc (string-append (assoc-ref outputs "doc")
 | 
			
		||||
| 
						 | 
				
			
			@ -829,21 +830,19 @@ libpanel, librsvg and quartz.")
 | 
			
		|||
                 ;; This file needs write-permissions, because it's
 | 
			
		||||
                 ;; overwritten by 'docs' during documentation generation.
 | 
			
		||||
                 (chmod "src/strings.ml" #o600)
 | 
			
		||||
                 (and (zero? (system* "make" "docs"
 | 
			
		||||
                                      "TEXDIRECTIVES=\\\\draftfalse"))
 | 
			
		||||
                      (begin
 | 
			
		||||
                        (for-each (lambda (f)
 | 
			
		||||
                                    (install-file f doc))
 | 
			
		||||
                                  (map (lambda (ext)
 | 
			
		||||
                                         (string-append
 | 
			
		||||
                                          "doc/unison-manual." ext))
 | 
			
		||||
                                       ;; Install only html documentation,
 | 
			
		||||
                                       ;; since the build is currently
 | 
			
		||||
                                       ;; non-reproducible with the ps, pdf,
 | 
			
		||||
                                       ;; and dvi docs.
 | 
			
		||||
                                       '(;;"ps" "pdf" "dvi"
 | 
			
		||||
                                         "html")))
 | 
			
		||||
                        #t))))))))
 | 
			
		||||
                 (invoke "make" "docs"
 | 
			
		||||
                         "TEXDIRECTIVES=\\\\draftfalse")
 | 
			
		||||
                 (for-each (lambda (f)
 | 
			
		||||
                             (install-file f doc))
 | 
			
		||||
                           (map (lambda (ext)
 | 
			
		||||
                                  (string-append "doc/unison-manual." ext))
 | 
			
		||||
                                ;; Install only html documentation,
 | 
			
		||||
                                ;; since the build is currently
 | 
			
		||||
                                ;; non-reproducible with the ps, pdf,
 | 
			
		||||
                                ;; and dvi docs.
 | 
			
		||||
                                '(;; "ps" "pdf" "dvi"
 | 
			
		||||
                                  "html")))
 | 
			
		||||
                 #t))))))
 | 
			
		||||
    (home-page "https://www.cis.upenn.edu/~bcpierce/unison/")
 | 
			
		||||
    (synopsis "File synchronizer")
 | 
			
		||||
    (description
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,6 +8,7 @@
 | 
			
		|||
;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
 | 
			
		||||
;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
 | 
			
		||||
;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
 | 
			
		||||
;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -101,8 +102,8 @@
 | 
			
		|||
  ;; Note: the 'update-guix-package.scm' script expects this definition to
 | 
			
		||||
  ;; start precisely like this.
 | 
			
		||||
  (let ((version "0.15.0")
 | 
			
		||||
        (commit "1d0be47ab680db938ac8da1ee65e1de91e198f67")
 | 
			
		||||
        (revision 5))
 | 
			
		||||
        (commit "f9a8fce10f2d99efec7cb1dd0f6c5f0df9d1b2df")
 | 
			
		||||
        (revision 6))
 | 
			
		||||
    (package
 | 
			
		||||
      (name "guix")
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -118,7 +119,7 @@
 | 
			
		|||
                      (commit commit)))
 | 
			
		||||
                (sha256
 | 
			
		||||
                 (base32
 | 
			
		||||
                  "19cn4ndmr9cqd7qh6w3nchbmdpaawdl9kc6g0v6g680vzcja417k"))
 | 
			
		||||
                  "1733d5id0h44rrkyj9xw4fcqr1wawcfi8igpgk5wsn1iq4qqwv5f"))
 | 
			
		||||
                (file-name (string-append "guix-" version "-checkout"))))
 | 
			
		||||
      (build-system gnu-build-system)
 | 
			
		||||
      (arguments
 | 
			
		||||
| 
						 | 
				
			
			@ -232,13 +233,13 @@
 | 
			
		|||
                                        (map (cut string-append <>
 | 
			
		||||
                                                  "/share/guile/site/"
 | 
			
		||||
                                                  effective)
 | 
			
		||||
                                             deps)
 | 
			
		||||
                                             (delete #f deps))
 | 
			
		||||
                                        ":"))
 | 
			
		||||
                               (gopath (string-join
 | 
			
		||||
                                        (map (cut string-append <>
 | 
			
		||||
                                                  "/lib/guile/" effective
 | 
			
		||||
                                                  "/site-ccache")
 | 
			
		||||
                                             deps)
 | 
			
		||||
                                             (delete #f deps))
 | 
			
		||||
                                        ":")))
 | 
			
		||||
 | 
			
		||||
                          (wrap-program (string-append out "/bin/guix")
 | 
			
		||||
| 
						 | 
				
			
			@ -345,12 +346,14 @@ the Nix package manager.")
 | 
			
		|||
                       "install-nodist_pkglibexecSCRIPTS")
 | 
			
		||||
 | 
			
		||||
               ;; We need to tell 'guix-daemon' which 'guix' command to use.
 | 
			
		||||
               ;; Here we use a questionable hack where we hard-code
 | 
			
		||||
               ;; "~root/.config", which could be wrong (XXX).
 | 
			
		||||
               ;; Here we use a questionable hack where we hard-code root's
 | 
			
		||||
               ;; current guix, which could be wrong (XXX).  Note that scripts
 | 
			
		||||
               ;; like 'guix perform-download' do not run as root so we assume
 | 
			
		||||
               ;; that they have access to /var/guix/profiles/per-user/root.
 | 
			
		||||
               (let ((out (assoc-ref outputs "out")))
 | 
			
		||||
                 (substitute* (find-files (string-append out "/libexec"))
 | 
			
		||||
                   (("exec \".*/bin/guix\"")
 | 
			
		||||
                    "exec ~root/.config/guix/current/bin/guix"))
 | 
			
		||||
                    "exec /var/guix/profiles/per-user/root/current-guix/bin/guix"))
 | 
			
		||||
                 #t)))
 | 
			
		||||
           (delete 'wrap-program)))))))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -363,10 +366,29 @@ the Nix package manager.")
 | 
			
		|||
       ,@(alist-delete "guile" (package-inputs guix))))
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("gnutls" ,gnutls/guile-2.0)
 | 
			
		||||
       ("guile-gcrypt" ,guile2.0-gcrypt)
 | 
			
		||||
       ("guile-json" ,guile2.0-json)
 | 
			
		||||
       ("guile-sqlite3" ,guile2.0-sqlite3)
 | 
			
		||||
       ("guile-ssh" ,guile2.0-ssh)
 | 
			
		||||
       ("guile-git" ,guile2.0-git)))))
 | 
			
		||||
 | 
			
		||||
(define-public guix-minimal
 | 
			
		||||
  ;; A version of Guix which is built with the minimal set of dependencies, as
 | 
			
		||||
  ;; outlined in the README "Requirements" section.  Intended as a CI job, so
 | 
			
		||||
  ;; marked as hidden.
 | 
			
		||||
  (let ((guix guile2.0-guix))
 | 
			
		||||
    (hidden-package
 | 
			
		||||
     (package
 | 
			
		||||
       (inherit guix)
 | 
			
		||||
       (name "guix-minimal")
 | 
			
		||||
       (inputs
 | 
			
		||||
        `(("guile" ,guile-2.0.13)
 | 
			
		||||
          ,@(alist-delete "guile" (package-inputs guix))))
 | 
			
		||||
       (propagated-inputs
 | 
			
		||||
        (fold alist-delete
 | 
			
		||||
              (package-propagated-inputs guix)
 | 
			
		||||
              '("guile-json" "guile-ssh")))))))
 | 
			
		||||
 | 
			
		||||
(define (source-file? file stat)
 | 
			
		||||
  "Return true if FILE is likely a source file, false if it is a typical
 | 
			
		||||
generated file."
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,20 +0,0 @@
 | 
			
		|||
This patch comes from Debian.
 | 
			
		||||
 | 
			
		||||
Description: cfree is not present in glibc-2.26, stop wrapping it
 | 
			
		||||
Author: Adam Conrad <adconrad@ubuntu.com>
 | 
			
		||||
Bug: https://sourceforge.net/p/clisp/bugs/717/
 | 
			
		||||
Bug-Debian: https://bugs.debian.org/880686
 | 
			
		||||
Applied-Upstream: https://sourceforge.net/p/clisp/clisp/ci/3bc928712d150ff1e5f6b2bfb7838655f3ff52fa/
 | 
			
		||||
Reviewed-By: Sébastien Villemot <sebastien@debian.org>
 | 
			
		||||
Last-Update: 2017-11-27
 | 
			
		||||
 | 
			
		||||
--- clisp-2.49.20170913.orig/modules/bindings/glibc/linux.lisp
 | 
			
		||||
+++ clisp-2.49.20170913/modules/bindings/glibc/linux.lisp
 | 
			
		||||
@@ -649,7 +649,6 @@
 | 
			
		||||
 (def-call-out calloc (:arguments (nmemb size_t) (size size_t))
 | 
			
		||||
   (:return-type c-pointer))
 | 
			
		||||
 (def-call-out free (:arguments (ptr c-pointer)) (:return-type nil))
 | 
			
		||||
-(def-call-out cfree (:arguments (ptr c-pointer)) (:return-type nil))
 | 
			
		||||
 (def-call-out valloc (:arguments (size size_t)) (:return-type c-pointer))
 | 
			
		||||
 
 | 
			
		||||
 (def-call-out abort (:arguments) (:return-type nil))
 | 
			
		||||
| 
						 | 
				
			
			@ -5,8 +5,9 @@ By default crawl checks for a mtime difference on files in DATADIR to see if an
 | 
			
		|||
upgrade is required, but guix nulls all file dates,
 | 
			
		||||
and crawl would never upgrade saves.
 | 
			
		||||
 | 
			
		||||
--- a/source/database.cc	2016-05-31 09:56:08.000000000 +0200
 | 
			
		||||
+++ a/source/database.cc	2017-06-05 03:00:19.270632107 +0200
 | 
			
		||||
diff -ur a/source/database.cc b/source/database.cc
 | 
			
		||||
--- a/source/database.cc	2018-08-09 21:49:26.000000000 -0400
 | 
			
		||||
+++ b/source/database.cc	2018-10-07 18:06:41.022445789 -0400
 | 
			
		||||
@@ -25,6 +25,7 @@
 | 
			
		||||
 #include "syscalls.h"
 | 
			
		||||
 #include "threads.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -23,16 +24,16 @@ and crawl would never upgrade saves.
 | 
			
		|||
     TextDB *_parent;
 | 
			
		||||
     const char* lang() { return _parent ? Options.lang_name : 0; }
 | 
			
		||||
 public:
 | 
			
		||||
@@ -165,7 +167,7 @@
 | 
			
		||||
@@ -163,7 +165,7 @@
 | 
			
		||||
 
 | 
			
		||||
 TextDB::TextDB(const char* db_name, const char* dir, ...)
 | 
			
		||||
     : _db_name(db_name), _directory(dir),
 | 
			
		||||
 TextDB::TextDB(const char* db_name, const char* dir, vector<string> files)
 | 
			
		||||
     : _db_name(db_name), _directory(dir), _input_files(files),
 | 
			
		||||
-      _db(nullptr), timestamp(""), _parent(0), translation(0)
 | 
			
		||||
+      _db(nullptr), timestamp(""), version(""),  _parent(0), translation(0)
 | 
			
		||||
 {
 | 
			
		||||
     va_list args;
 | 
			
		||||
     va_start(args, dir);
 | 
			
		||||
@@ -187,7 +189,7 @@
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -171,7 +173,7 @@
 | 
			
		||||
     : _db_name(parent->_db_name),
 | 
			
		||||
       _directory(parent->_directory + Options.lang_name + "/"),
 | 
			
		||||
       _input_files(parent->_input_files), // FIXME: pointless copy
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +42,7 @@ and crawl would never upgrade saves.
 | 
			
		|||
 {
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -202,6 +204,9 @@
 | 
			
		||||
@@ -186,6 +188,9 @@
 | 
			
		||||
         return false;
 | 
			
		||||
 
 | 
			
		||||
     timestamp = _query_database(*this, "TIMESTAMP", false, false, true);
 | 
			
		||||
| 
						 | 
				
			
			@ -51,7 +52,7 @@ and crawl would never upgrade saves.
 | 
			
		|||
     if (timestamp.empty())
 | 
			
		||||
         return false;
 | 
			
		||||
 
 | 
			
		||||
@@ -245,6 +250,9 @@
 | 
			
		||||
@@ -229,6 +234,9 @@
 | 
			
		||||
     string ts;
 | 
			
		||||
     bool no_files = true;
 | 
			
		||||
 
 | 
			
		||||
| 
						 | 
				
			
			@ -61,7 +62,7 @@ and crawl would never upgrade saves.
 | 
			
		|||
     for (const string &file : _input_files)
 | 
			
		||||
     {
 | 
			
		||||
         string full_input_path = _directory + file;
 | 
			
		||||
@@ -261,7 +269,7 @@
 | 
			
		||||
@@ -245,7 +253,7 @@
 | 
			
		||||
         ts += buf;
 | 
			
		||||
     }
 | 
			
		||||
 
 | 
			
		||||
| 
						 | 
				
			
			@ -70,7 +71,7 @@ and crawl would never upgrade saves.
 | 
			
		|||
     {
 | 
			
		||||
         // No point in empty databases, although for simplicity keep ones
 | 
			
		||||
         // for disappeared translations for now.
 | 
			
		||||
@@ -321,7 +329,10 @@
 | 
			
		||||
@@ -313,7 +321,10 @@
 | 
			
		||||
             _store_text_db(full_input_path, _db);
 | 
			
		||||
         }
 | 
			
		||||
     }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,27 +0,0 @@
 | 
			
		|||
From 13a14579cc1bb772735f895dd5b4b90c6812f3ee Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Chris Feng <chris.w.feng@gmail.com>
 | 
			
		||||
Date: Sun, 29 Jul 2018 00:00:00 +0000
 | 
			
		||||
Subject: [PATCH] Fix issues with destroying full screen X windows
 | 
			
		||||
 | 
			
		||||
* exwm-manage.el (exwm-manage--unmanage-window): Set the Emacs window
 | 
			
		||||
of an full screen X window as non-dedicated before killing its buffer
 | 
			
		||||
so as not to cause other side effects.
 | 
			
		||||
---
 | 
			
		||||
 exwm-manage.el | 4 ++++
 | 
			
		||||
 1 file changed, 4 insertions(+)
 | 
			
		||||
 | 
			
		||||
diff --git a/exwm-manage.el b/exwm-manage.el
 | 
			
		||||
index a0a9e05..349157f 100644
 | 
			
		||||
--- a/exwm-manage.el
 | 
			
		||||
+++ b/exwm-manage.el
 | 
			
		||||
@@ -392,6 +392,10 @@ manager is shutting down."
 | 
			
		||||
                                :window window :parent exwm--root :x 0 :y 0))
 | 
			
		||||
             (xcb:+request exwm--connection
 | 
			
		||||
                 (make-instance 'xcb:DestroyWindow :window container))))
 | 
			
		||||
+        (when (exwm-layout--fullscreen-p)
 | 
			
		||||
+          (let ((window (get-buffer-window)))
 | 
			
		||||
+            (when window
 | 
			
		||||
+              (set-window-dedicated-p window nil))))
 | 
			
		||||
         (exwm-manage--set-client-list)
 | 
			
		||||
         (xcb:flush exwm--connection))
 | 
			
		||||
       (let ((kill-buffer-func
 | 
			
		||||
							
								
								
									
										61
									
								
								gnu/packages/patches/python-CVE-2018-14647.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								gnu/packages/patches/python-CVE-2018-14647.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,61 @@
 | 
			
		|||
Fix CVE-2018-14647:
 | 
			
		||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14647
 | 
			
		||||
https://bugs.python.org/issue34623
 | 
			
		||||
 | 
			
		||||
Taken from upstream:
 | 
			
		||||
https://github.com/python/cpython/commit/f7666e828cc3d5873136473ea36ba2013d624fa1
 | 
			
		||||
 | 
			
		||||
diff --git Include/pyexpat.h Include/pyexpat.h
 | 
			
		||||
index 44259bf6d7..07020b5dc9 100644
 | 
			
		||||
--- Include/pyexpat.h
 | 
			
		||||
+++ Include/pyexpat.h
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 
 | 
			
		||||
 /* note: you must import expat.h before importing this module! */
 | 
			
		||||
 
 | 
			
		||||
-#define PyExpat_CAPI_MAGIC  "pyexpat.expat_CAPI 1.0"
 | 
			
		||||
+#define PyExpat_CAPI_MAGIC  "pyexpat.expat_CAPI 1.1"
 | 
			
		||||
 #define PyExpat_CAPSULE_NAME "pyexpat.expat_CAPI"
 | 
			
		||||
 
 | 
			
		||||
 struct PyExpat_CAPI
 | 
			
		||||
@@ -48,6 +48,8 @@ struct PyExpat_CAPI
 | 
			
		||||
     enum XML_Status (*SetEncoding)(XML_Parser parser, const XML_Char *encoding);
 | 
			
		||||
     int (*DefaultUnknownEncodingHandler)(
 | 
			
		||||
         void *encodingHandlerData, const XML_Char *name, XML_Encoding *info);
 | 
			
		||||
+    /* might be none for expat < 2.1.0 */
 | 
			
		||||
+    int (*SetHashSalt)(XML_Parser parser, unsigned long hash_salt);
 | 
			
		||||
     /* always add new stuff to the end! */
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
diff --git Modules/_elementtree.c Modules/_elementtree.c
 | 
			
		||||
index 707ab2912b..53f05f937f 100644
 | 
			
		||||
--- Modules/_elementtree.c
 | 
			
		||||
+++ Modules/_elementtree.c
 | 
			
		||||
@@ -3261,6 +3261,11 @@ _elementtree_XMLParser___init___impl(XMLParserObject *self, PyObject *html,
 | 
			
		||||
         PyErr_NoMemory();
 | 
			
		||||
         return -1;
 | 
			
		||||
     }
 | 
			
		||||
+    /* expat < 2.1.0 has no XML_SetHashSalt() */
 | 
			
		||||
+    if (EXPAT(SetHashSalt) != NULL) {
 | 
			
		||||
+        EXPAT(SetHashSalt)(self->parser,
 | 
			
		||||
+                           (unsigned long)_Py_HashSecret.expat.hashsalt);
 | 
			
		||||
+    }
 | 
			
		||||
 
 | 
			
		||||
     if (target) {
 | 
			
		||||
         Py_INCREF(target);
 | 
			
		||||
diff --git Modules/pyexpat.c Modules/pyexpat.c
 | 
			
		||||
index 47c3e86c20..aa21d93c11 100644
 | 
			
		||||
--- Modules/pyexpat.c
 | 
			
		||||
+++ Modules/pyexpat.c
 | 
			
		||||
@@ -1887,6 +1887,11 @@ MODULE_INITFUNC(void)
 | 
			
		||||
     capi.SetStartDoctypeDeclHandler = XML_SetStartDoctypeDeclHandler;
 | 
			
		||||
     capi.SetEncoding = XML_SetEncoding;
 | 
			
		||||
     capi.DefaultUnknownEncodingHandler = PyUnknownEncodingHandler;
 | 
			
		||||
+#if XML_COMBINED_VERSION >= 20100
 | 
			
		||||
+    capi.SetHashSalt = XML_SetHashSalt;
 | 
			
		||||
+#else
 | 
			
		||||
+    capi.SetHashSalt = NULL;
 | 
			
		||||
+#endif
 | 
			
		||||
 
 | 
			
		||||
     /* export using capsule */
 | 
			
		||||
     capi_object = PyCapsule_New(&capi, PyExpat_CAPSULE_NAME, NULL);
 | 
			
		||||
							
								
								
									
										47
									
								
								gnu/packages/patches/python2-CVE-2018-1000802.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								gnu/packages/patches/python2-CVE-2018-1000802.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,47 @@
 | 
			
		|||
Fix CVE-2018-1000802:
 | 
			
		||||
 | 
			
		||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000802
 | 
			
		||||
 | 
			
		||||
Taken from upstream commit (sans NEWS):
 | 
			
		||||
https://github.com/python/cpython/commit/d8b103b8b3ef9644805341216963a64098642435
 | 
			
		||||
 | 
			
		||||
diff --git a/Lib/shutil.py b/Lib/shutil.py
 | 
			
		||||
index 3462f7c5e9..0ab1a06f52 100644
 | 
			
		||||
--- a/Lib/shutil.py
 | 
			
		||||
+++ b/Lib/shutil.py
 | 
			
		||||
@@ -413,17 +413,21 @@ def _make_tarball(base_name, base_dir, compress="gzip", verbose=0, dry_run=0,
 | 
			
		||||
 
 | 
			
		||||
     return archive_name
 | 
			
		||||
 
 | 
			
		||||
-def _call_external_zip(base_dir, zip_filename, verbose=False, dry_run=False):
 | 
			
		||||
+def _call_external_zip(base_dir, zip_filename, verbose, dry_run, logger):
 | 
			
		||||
     # XXX see if we want to keep an external call here
 | 
			
		||||
     if verbose:
 | 
			
		||||
         zipoptions = "-r"
 | 
			
		||||
     else:
 | 
			
		||||
         zipoptions = "-rq"
 | 
			
		||||
-    from distutils.errors import DistutilsExecError
 | 
			
		||||
-    from distutils.spawn import spawn
 | 
			
		||||
+    cmd = ["zip", zipoptions, zip_filename, base_dir]
 | 
			
		||||
+    if logger is not None:
 | 
			
		||||
+        logger.info(' '.join(cmd))
 | 
			
		||||
+    if dry_run:
 | 
			
		||||
+        return
 | 
			
		||||
+    import subprocess
 | 
			
		||||
     try:
 | 
			
		||||
-        spawn(["zip", zipoptions, zip_filename, base_dir], dry_run=dry_run)
 | 
			
		||||
-    except DistutilsExecError:
 | 
			
		||||
+        subprocess.check_call(cmd)
 | 
			
		||||
+    except subprocess.CalledProcessError:
 | 
			
		||||
         # XXX really should distinguish between "couldn't find
 | 
			
		||||
         # external 'zip' command" and "zip failed".
 | 
			
		||||
         raise ExecError, \
 | 
			
		||||
@@ -458,7 +462,7 @@ def _make_zipfile(base_name, base_dir, verbose=0, dry_run=0, logger=None):
 | 
			
		||||
         zipfile = None
 | 
			
		||||
 
 | 
			
		||||
     if zipfile is None:
 | 
			
		||||
-        _call_external_zip(base_dir, zip_filename, verbose, dry_run)
 | 
			
		||||
+        _call_external_zip(base_dir, zip_filename, verbose, dry_run, logger)
 | 
			
		||||
     else:
 | 
			
		||||
         if logger is not None:
 | 
			
		||||
             logger.info("creating '%s' and adding '%s' to it",
 | 
			
		||||
							
								
								
									
										20
									
								
								gnu/packages/patches/python2-CVE-2018-1060.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								gnu/packages/patches/python2-CVE-2018-1060.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
Fix CVE-2018-1060:
 | 
			
		||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1060
 | 
			
		||||
 | 
			
		||||
Taken from upstream commit (sans test and NEWS):
 | 
			
		||||
https://github.com/python/cpython/commit/e052d40cea15f582b50947f7d906b39744dc62a2
 | 
			
		||||
 | 
			
		||||
diff --git a/Lib/poplib.py b/Lib/poplib.py
 | 
			
		||||
index b91e5f72d2ca..a238510b38fc 100644
 | 
			
		||||
--- a/Lib/poplib.py
 | 
			
		||||
+++ b/Lib/poplib.py
 | 
			
		||||
@@ -274,7 +274,7 @@ def rpop(self, user):
 | 
			
		||||
         return self._shortcmd('RPOP %s' % user)
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
-    timestamp = re.compile(r'\+OK.*(<[^>]+>)')
 | 
			
		||||
+    timestamp = re.compile(br'\+OK.[^<]*(<.*>)')
 | 
			
		||||
 
 | 
			
		||||
     def apop(self, user, secret):
 | 
			
		||||
         """Authorisation
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										20
									
								
								gnu/packages/patches/python2-CVE-2018-1061.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								gnu/packages/patches/python2-CVE-2018-1061.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
Fix CVE-2018-1061:
 | 
			
		||||
 | 
			
		||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1061
 | 
			
		||||
 | 
			
		||||
Taken from upstream commit (sans test and NEWS):
 | 
			
		||||
https://github.com/python/cpython/commit/e052d40cea15f582b50947f7d906b39744dc62a2
 | 
			
		||||
 | 
			
		||||
diff --git a/Lib/difflib.py b/Lib/difflib.py
 | 
			
		||||
index 1c6fbdbedcb7..788a92df3f89 100644
 | 
			
		||||
--- a/Lib/difflib.py
 | 
			
		||||
+++ b/Lib/difflib.py
 | 
			
		||||
@@ -1103,7 +1103,7 @@ def _qformat(self, aline, bline, atags, btags):
 | 
			
		||||
 
 | 
			
		||||
 import re
 | 
			
		||||
 
 | 
			
		||||
-def IS_LINE_JUNK(line, pat=re.compile(r"\s*#?\s*$").match):
 | 
			
		||||
+def IS_LINE_JUNK(line, pat=re.compile(r"\s*(?:#\s*)?$").match):
 | 
			
		||||
     r"""
 | 
			
		||||
     Return 1 for ignorable line: iff `line` is blank or contains a single '#'.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										61
									
								
								gnu/packages/patches/python2-CVE-2018-14647.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								gnu/packages/patches/python2-CVE-2018-14647.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,61 @@
 | 
			
		|||
Fix CVE-2018-14647:
 | 
			
		||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14647
 | 
			
		||||
https://bugs.python.org/issue34623
 | 
			
		||||
 | 
			
		||||
Taken from upstream:
 | 
			
		||||
https://github.com/python/cpython/commit/18b20bad75b4ff0486940fba4ec680e96e70f3a2
 | 
			
		||||
 | 
			
		||||
diff --git a/Include/pyexpat.h b/Include/pyexpat.h
 | 
			
		||||
index 5340ef5fa3..3fc5fa54da 100644
 | 
			
		||||
--- a/Include/pyexpat.h
 | 
			
		||||
+++ b/Include/pyexpat.h
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 
 | 
			
		||||
 /* note: you must import expat.h before importing this module! */
 | 
			
		||||
 
 | 
			
		||||
-#define PyExpat_CAPI_MAGIC  "pyexpat.expat_CAPI 1.0"
 | 
			
		||||
+#define PyExpat_CAPI_MAGIC  "pyexpat.expat_CAPI 1.1"
 | 
			
		||||
 #define PyExpat_CAPSULE_NAME "pyexpat.expat_CAPI"
 | 
			
		||||
 
 | 
			
		||||
 struct PyExpat_CAPI 
 | 
			
		||||
@@ -43,6 +43,8 @@ struct PyExpat_CAPI
 | 
			
		||||
         XML_Parser parser, XML_UnknownEncodingHandler handler,
 | 
			
		||||
         void *encodingHandlerData);
 | 
			
		||||
     void (*SetUserData)(XML_Parser parser, void *userData);
 | 
			
		||||
+    /* might be none for expat < 2.1.0 */
 | 
			
		||||
+    int (*SetHashSalt)(XML_Parser parser, unsigned long hash_salt);
 | 
			
		||||
     /* always add new stuff to the end! */
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c
 | 
			
		||||
index f7f992dd3a..b38e0ab329 100644
 | 
			
		||||
--- a/Modules/_elementtree.c
 | 
			
		||||
+++ b/Modules/_elementtree.c
 | 
			
		||||
@@ -2574,6 +2574,11 @@ xmlparser(PyObject* self_, PyObject* args, PyObject* kw)
 | 
			
		||||
         PyErr_NoMemory();
 | 
			
		||||
         return NULL;
 | 
			
		||||
     }
 | 
			
		||||
+    /* expat < 2.1.0 has no XML_SetHashSalt() */
 | 
			
		||||
+    if (EXPAT(SetHashSalt) != NULL) {
 | 
			
		||||
+        EXPAT(SetHashSalt)(self->parser,
 | 
			
		||||
+                           (unsigned long)_Py_HashSecret.prefix);
 | 
			
		||||
+    }
 | 
			
		||||
 
 | 
			
		||||
     ALLOC(sizeof(XMLParserObject), "create expatparser");
 | 
			
		||||
 
 | 
			
		||||
diff --git a/Modules/pyexpat.c b/Modules/pyexpat.c
 | 
			
		||||
index 2b4d31293c..1f8c0d70a5 100644
 | 
			
		||||
--- a/Modules/pyexpat.c
 | 
			
		||||
+++ b/Modules/pyexpat.c
 | 
			
		||||
@@ -2042,6 +2042,11 @@ MODULE_INITFUNC(void)
 | 
			
		||||
     capi.SetProcessingInstructionHandler = XML_SetProcessingInstructionHandler;
 | 
			
		||||
     capi.SetUnknownEncodingHandler = XML_SetUnknownEncodingHandler;
 | 
			
		||||
     capi.SetUserData = XML_SetUserData;
 | 
			
		||||
+#if XML_COMBINED_VERSION >= 20100
 | 
			
		||||
+    capi.SetHashSalt = XML_SetHashSalt;
 | 
			
		||||
+#else
 | 
			
		||||
+    capi.SetHashSalt = NULL;
 | 
			
		||||
+#endif
 | 
			
		||||
 
 | 
			
		||||
     /* export using capsule */
 | 
			
		||||
     capi_object = PyCapsule_New(&capi, PyExpat_CAPSULE_NAME, NULL);
 | 
			
		||||
| 
						 | 
				
			
			@ -1,360 +0,0 @@
 | 
			
		|||
From <https://git.busybox.net/buildroot/tree/package/x265/0003-arm-asm-primitives.patch?id=57d4a27eaf1a9e59d767c321e7b7500c5060a2ac>.
 | 
			
		||||
This fixes build errors like:
 | 
			
		||||
 | 
			
		||||
  cd /tmp/guix-build-x265-2.8.drv-0/x265_2.8/build/encoder && /gnu/store/cd5q2pni1d95fs3cdabbclyh9hqhw2nq-gcc-5.5.0/bin/c++  -DEXPORT_C_API=1 -DHAVE_ARMV6=1 -DHAVE_INT_TYPES_H=1 -DHAVE_NEON -DHIGH_BIT_DEPTH=0 -DX265_ARCH_ARM=1 -DX265_DEPTH=8 -DX265_NS=x265 -D__STDC_LIMIT_MACROS=1 -I/tmp/guix-build-x265-2.8.drv-0/x265_2.8/source/. -I/tmp/guix-build-x265-2.8.drv-0/x265_2.8/source/common -I/tmp/guix-build-x265-2.8.drv-0/x265_2.8/source/encoder -I/tmp/guix-build-x265-2.8.drv-0/x265_2.8/build  -O2 -g -DNDEBUG   -Wall -Wextra -Wshadow -std=gnu++98 -fPIC -mcpu=native -mfloat-abi=hard -mfpu=neon -marm -fPIC -Wno-array-bounds -ffast-math -fno-exceptions -Wno-uninitialized -o CMakeFiles/encoder.dir/search.cpp.o -c /tmp/guix-build-x265-2.8.drv-0/x265_2.8/source/encoder/search.cpp
 | 
			
		||||
  /tmp/guix-build-x265-2.8.drv-0/x265_2.8/source/common/arm/asm-primitives.cpp:437:38: error: incompatible types in assignment of ?void(const pixel*, intptr_t, int16_t*, intptr_t) {aka void(const unsigned char*, int, short int*, int)}? to ?void (* [2])(const pixel*, intptr_t, int16_t*, intptr_t) {aka void (* [2])(const unsigned char*, int, short int*, int)}?
 | 
			
		||||
	   p.pu[LUMA_64x48].convert_p2s = PFX(filterPixelToShort_64x48_neon);
 | 
			
		||||
					^
 | 
			
		||||
 | 
			
		||||
Downloaded from upstream bug report:
 | 
			
		||||
https://bitbucket.org/multicoreware/x265/issues/406
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
 | 
			
		||||
 | 
			
		||||
--- ./source/common/arm/asm-primitives.cpp.orig	2018-05-21 02:33:10.000000000 -0600
 | 
			
		||||
+++ ./source/common/arm/asm-primitives.cpp	2018-05-28 20:38:37.302378303 -0600
 | 
			
		||||
@@ -48,77 +48,77 @@ void setupAssemblyPrimitives(EncoderPrim
 | 
			
		||||
         p.ssim_4x4x2_core = PFX(ssim_4x4x2_core_neon);
 | 
			
		||||
 
 | 
			
		||||
         // addAvg
 | 
			
		||||
-         p.pu[LUMA_4x4].addAvg   = PFX(addAvg_4x4_neon);
 | 
			
		||||
-         p.pu[LUMA_4x8].addAvg   = PFX(addAvg_4x8_neon);
 | 
			
		||||
-         p.pu[LUMA_4x16].addAvg  = PFX(addAvg_4x16_neon);
 | 
			
		||||
-         p.pu[LUMA_8x4].addAvg   = PFX(addAvg_8x4_neon);
 | 
			
		||||
-         p.pu[LUMA_8x8].addAvg   = PFX(addAvg_8x8_neon);
 | 
			
		||||
-         p.pu[LUMA_8x16].addAvg  = PFX(addAvg_8x16_neon);
 | 
			
		||||
-         p.pu[LUMA_8x32].addAvg  = PFX(addAvg_8x32_neon);
 | 
			
		||||
-         p.pu[LUMA_12x16].addAvg = PFX(addAvg_12x16_neon);
 | 
			
		||||
-         p.pu[LUMA_16x4].addAvg  = PFX(addAvg_16x4_neon);
 | 
			
		||||
-         p.pu[LUMA_16x8].addAvg  = PFX(addAvg_16x8_neon);
 | 
			
		||||
-         p.pu[LUMA_16x12].addAvg = PFX(addAvg_16x12_neon);
 | 
			
		||||
-         p.pu[LUMA_16x16].addAvg = PFX(addAvg_16x16_neon);
 | 
			
		||||
-         p.pu[LUMA_16x32].addAvg = PFX(addAvg_16x32_neon);
 | 
			
		||||
-         p.pu[LUMA_16x64].addAvg = PFX(addAvg_16x64_neon);
 | 
			
		||||
-         p.pu[LUMA_24x32].addAvg = PFX(addAvg_24x32_neon);
 | 
			
		||||
-         p.pu[LUMA_32x8].addAvg  = PFX(addAvg_32x8_neon);
 | 
			
		||||
-         p.pu[LUMA_32x16].addAvg = PFX(addAvg_32x16_neon);
 | 
			
		||||
-         p.pu[LUMA_32x24].addAvg = PFX(addAvg_32x24_neon);
 | 
			
		||||
-         p.pu[LUMA_32x32].addAvg = PFX(addAvg_32x32_neon);
 | 
			
		||||
-         p.pu[LUMA_32x64].addAvg = PFX(addAvg_32x64_neon);
 | 
			
		||||
-         p.pu[LUMA_48x64].addAvg = PFX(addAvg_48x64_neon);
 | 
			
		||||
-         p.pu[LUMA_64x16].addAvg = PFX(addAvg_64x16_neon);
 | 
			
		||||
-         p.pu[LUMA_64x32].addAvg = PFX(addAvg_64x32_neon);
 | 
			
		||||
-         p.pu[LUMA_64x48].addAvg = PFX(addAvg_64x48_neon);
 | 
			
		||||
-         p.pu[LUMA_64x64].addAvg = PFX(addAvg_64x64_neon);
 | 
			
		||||
+         p.pu[LUMA_4x4].addAvg[ALIGNED]   = PFX(addAvg_4x4_neon);
 | 
			
		||||
+         p.pu[LUMA_4x8].addAvg[ALIGNED]   = PFX(addAvg_4x8_neon);
 | 
			
		||||
+         p.pu[LUMA_4x16].addAvg[ALIGNED]  = PFX(addAvg_4x16_neon);
 | 
			
		||||
+         p.pu[LUMA_8x4].addAvg[ALIGNED]   = PFX(addAvg_8x4_neon);
 | 
			
		||||
+         p.pu[LUMA_8x8].addAvg[ALIGNED]   = PFX(addAvg_8x8_neon);
 | 
			
		||||
+         p.pu[LUMA_8x16].addAvg[ALIGNED]  = PFX(addAvg_8x16_neon);
 | 
			
		||||
+         p.pu[LUMA_8x32].addAvg[ALIGNED]  = PFX(addAvg_8x32_neon);
 | 
			
		||||
+         p.pu[LUMA_12x16].addAvg[ALIGNED] = PFX(addAvg_12x16_neon);
 | 
			
		||||
+         p.pu[LUMA_16x4].addAvg[ALIGNED]  = PFX(addAvg_16x4_neon);
 | 
			
		||||
+         p.pu[LUMA_16x8].addAvg[ALIGNED]  = PFX(addAvg_16x8_neon);
 | 
			
		||||
+         p.pu[LUMA_16x12].addAvg[ALIGNED] = PFX(addAvg_16x12_neon);
 | 
			
		||||
+         p.pu[LUMA_16x16].addAvg[ALIGNED] = PFX(addAvg_16x16_neon);
 | 
			
		||||
+         p.pu[LUMA_16x32].addAvg[ALIGNED] = PFX(addAvg_16x32_neon);
 | 
			
		||||
+         p.pu[LUMA_16x64].addAvg[ALIGNED] = PFX(addAvg_16x64_neon);
 | 
			
		||||
+         p.pu[LUMA_24x32].addAvg[ALIGNED] = PFX(addAvg_24x32_neon);
 | 
			
		||||
+         p.pu[LUMA_32x8].addAvg[ALIGNED]  = PFX(addAvg_32x8_neon);
 | 
			
		||||
+         p.pu[LUMA_32x16].addAvg[ALIGNED] = PFX(addAvg_32x16_neon);
 | 
			
		||||
+         p.pu[LUMA_32x24].addAvg[ALIGNED] = PFX(addAvg_32x24_neon);
 | 
			
		||||
+         p.pu[LUMA_32x32].addAvg[ALIGNED] = PFX(addAvg_32x32_neon);
 | 
			
		||||
+         p.pu[LUMA_32x64].addAvg[ALIGNED] = PFX(addAvg_32x64_neon);
 | 
			
		||||
+         p.pu[LUMA_48x64].addAvg[ALIGNED] = PFX(addAvg_48x64_neon);
 | 
			
		||||
+         p.pu[LUMA_64x16].addAvg[ALIGNED] = PFX(addAvg_64x16_neon);
 | 
			
		||||
+         p.pu[LUMA_64x32].addAvg[ALIGNED] = PFX(addAvg_64x32_neon);
 | 
			
		||||
+         p.pu[LUMA_64x48].addAvg[ALIGNED] = PFX(addAvg_64x48_neon);
 | 
			
		||||
+         p.pu[LUMA_64x64].addAvg[ALIGNED] = PFX(addAvg_64x64_neon);
 | 
			
		||||
 
 | 
			
		||||
         // chroma addAvg
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_4x2].addAvg   = PFX(addAvg_4x2_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_4x4].addAvg   = PFX(addAvg_4x4_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_4x8].addAvg   = PFX(addAvg_4x8_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_4x16].addAvg  = PFX(addAvg_4x16_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_6x8].addAvg   = PFX(addAvg_6x8_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x2].addAvg   = PFX(addAvg_8x2_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x4].addAvg   = PFX(addAvg_8x4_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x6].addAvg   = PFX(addAvg_8x6_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x8].addAvg   = PFX(addAvg_8x8_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x16].addAvg  = PFX(addAvg_8x16_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x32].addAvg  = PFX(addAvg_8x32_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_12x16].addAvg = PFX(addAvg_12x16_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x4].addAvg  = PFX(addAvg_16x4_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x8].addAvg  = PFX(addAvg_16x8_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x12].addAvg = PFX(addAvg_16x12_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x16].addAvg = PFX(addAvg_16x16_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x32].addAvg = PFX(addAvg_16x32_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_24x32].addAvg = PFX(addAvg_24x32_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_32x8].addAvg  = PFX(addAvg_32x8_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_32x16].addAvg = PFX(addAvg_32x16_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_32x24].addAvg = PFX(addAvg_32x24_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].pu[CHROMA_420_32x32].addAvg = PFX(addAvg_32x32_neon);
 | 
			
		||||
-
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_4x8].addAvg   = PFX(addAvg_4x8_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_4x16].addAvg  = PFX(addAvg_4x16_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_4x32].addAvg  = PFX(addAvg_4x32_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_6x16].addAvg  = PFX(addAvg_6x16_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x4].addAvg   = PFX(addAvg_8x4_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x8].addAvg   = PFX(addAvg_8x8_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x12].addAvg  = PFX(addAvg_8x12_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x16].addAvg  = PFX(addAvg_8x16_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x32].addAvg  = PFX(addAvg_8x32_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x64].addAvg  = PFX(addAvg_8x64_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_12x32].addAvg = PFX(addAvg_12x32_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x8].addAvg  = PFX(addAvg_16x8_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x16].addAvg = PFX(addAvg_16x16_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x24].addAvg = PFX(addAvg_16x24_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x32].addAvg = PFX(addAvg_16x32_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x64].addAvg = PFX(addAvg_16x64_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_24x64].addAvg = PFX(addAvg_24x64_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_32x16].addAvg = PFX(addAvg_32x16_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_32x32].addAvg = PFX(addAvg_32x32_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_32x48].addAvg = PFX(addAvg_32x48_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].pu[CHROMA_422_32x64].addAvg = PFX(addAvg_32x64_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_4x2].addAvg[ALIGNED]   = PFX(addAvg_4x2_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_4x4].addAvg[ALIGNED]   = PFX(addAvg_4x4_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_4x8].addAvg[ALIGNED]   = PFX(addAvg_4x8_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_4x16].addAvg[ALIGNED]  = PFX(addAvg_4x16_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_6x8].addAvg[ALIGNED]   = PFX(addAvg_6x8_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x2].addAvg[ALIGNED]   = PFX(addAvg_8x2_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x4].addAvg[ALIGNED]   = PFX(addAvg_8x4_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x6].addAvg[ALIGNED]   = PFX(addAvg_8x6_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x8].addAvg[ALIGNED]   = PFX(addAvg_8x8_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x16].addAvg[ALIGNED]  = PFX(addAvg_8x16_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x32].addAvg[ALIGNED]  = PFX(addAvg_8x32_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_12x16].addAvg[ALIGNED] = PFX(addAvg_12x16_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x4].addAvg[ALIGNED]  = PFX(addAvg_16x4_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x8].addAvg[ALIGNED]  = PFX(addAvg_16x8_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x12].addAvg[ALIGNED] = PFX(addAvg_16x12_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x16].addAvg[ALIGNED] = PFX(addAvg_16x16_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x32].addAvg[ALIGNED] = PFX(addAvg_16x32_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_24x32].addAvg[ALIGNED] = PFX(addAvg_24x32_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_32x8].addAvg[ALIGNED]  = PFX(addAvg_32x8_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_32x16].addAvg[ALIGNED] = PFX(addAvg_32x16_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_32x24].addAvg[ALIGNED] = PFX(addAvg_32x24_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].pu[CHROMA_420_32x32].addAvg[ALIGNED] = PFX(addAvg_32x32_neon);
 | 
			
		||||
+
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_4x8].addAvg[ALIGNED]   = PFX(addAvg_4x8_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_4x16].addAvg[ALIGNED]  = PFX(addAvg_4x16_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_4x32].addAvg[ALIGNED]  = PFX(addAvg_4x32_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_6x16].addAvg[ALIGNED]  = PFX(addAvg_6x16_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x4].addAvg[ALIGNED]   = PFX(addAvg_8x4_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x8].addAvg[ALIGNED]   = PFX(addAvg_8x8_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x12].addAvg[ALIGNED]  = PFX(addAvg_8x12_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x16].addAvg[ALIGNED]  = PFX(addAvg_8x16_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x32].addAvg[ALIGNED]  = PFX(addAvg_8x32_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x64].addAvg[ALIGNED]  = PFX(addAvg_8x64_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_12x32].addAvg[ALIGNED] = PFX(addAvg_12x32_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x8].addAvg[ALIGNED]  = PFX(addAvg_16x8_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x16].addAvg[ALIGNED] = PFX(addAvg_16x16_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x24].addAvg[ALIGNED] = PFX(addAvg_16x24_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x32].addAvg[ALIGNED] = PFX(addAvg_16x32_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x64].addAvg[ALIGNED] = PFX(addAvg_16x64_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_24x64].addAvg[ALIGNED] = PFX(addAvg_24x64_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_32x16].addAvg[ALIGNED] = PFX(addAvg_32x16_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_32x32].addAvg[ALIGNED] = PFX(addAvg_32x32_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_32x48].addAvg[ALIGNED] = PFX(addAvg_32x48_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].pu[CHROMA_422_32x64].addAvg[ALIGNED] = PFX(addAvg_32x64_neon);
 | 
			
		||||
 
 | 
			
		||||
         // quant
 | 
			
		||||
          p.quant = PFX(quant_neon);
 | 
			
		||||
@@ -402,7 +402,7 @@ void setupAssemblyPrimitives(EncoderPrim
 | 
			
		||||
         p.scale2D_64to32  = PFX(scale2D_64to32_neon);
 | 
			
		||||
 
 | 
			
		||||
         // scale1D_128to64
 | 
			
		||||
-        p.scale1D_128to64 = PFX(scale1D_128to64_neon);
 | 
			
		||||
+        p.scale1D_128to64[ALIGNED] = PFX(scale1D_128to64_neon);
 | 
			
		||||
 
 | 
			
		||||
         // copy_count
 | 
			
		||||
         p.cu[BLOCK_4x4].copy_cnt     = PFX(copy_cnt_4_neon);
 | 
			
		||||
@@ -411,37 +411,37 @@ void setupAssemblyPrimitives(EncoderPrim
 | 
			
		||||
         p.cu[BLOCK_32x32].copy_cnt   = PFX(copy_cnt_32_neon);
 | 
			
		||||
 
 | 
			
		||||
         // filterPixelToShort
 | 
			
		||||
-        p.pu[LUMA_4x4].convert_p2s   = PFX(filterPixelToShort_4x4_neon);
 | 
			
		||||
-        p.pu[LUMA_4x8].convert_p2s   = PFX(filterPixelToShort_4x8_neon);
 | 
			
		||||
-        p.pu[LUMA_4x16].convert_p2s  = PFX(filterPixelToShort_4x16_neon);
 | 
			
		||||
-        p.pu[LUMA_8x4].convert_p2s   = PFX(filterPixelToShort_8x4_neon);
 | 
			
		||||
-        p.pu[LUMA_8x8].convert_p2s   = PFX(filterPixelToShort_8x8_neon);
 | 
			
		||||
-        p.pu[LUMA_8x16].convert_p2s  = PFX(filterPixelToShort_8x16_neon);
 | 
			
		||||
-        p.pu[LUMA_8x32].convert_p2s  = PFX(filterPixelToShort_8x32_neon);
 | 
			
		||||
-        p.pu[LUMA_12x16].convert_p2s = PFX(filterPixelToShort_12x16_neon);
 | 
			
		||||
-        p.pu[LUMA_16x4].convert_p2s  = PFX(filterPixelToShort_16x4_neon);
 | 
			
		||||
-        p.pu[LUMA_16x8].convert_p2s  = PFX(filterPixelToShort_16x8_neon);
 | 
			
		||||
-        p.pu[LUMA_16x12].convert_p2s = PFX(filterPixelToShort_16x12_neon);
 | 
			
		||||
-        p.pu[LUMA_16x16].convert_p2s = PFX(filterPixelToShort_16x16_neon);
 | 
			
		||||
-        p.pu[LUMA_16x32].convert_p2s = PFX(filterPixelToShort_16x32_neon);
 | 
			
		||||
-        p.pu[LUMA_16x64].convert_p2s = PFX(filterPixelToShort_16x64_neon);
 | 
			
		||||
-        p.pu[LUMA_24x32].convert_p2s = PFX(filterPixelToShort_24x32_neon);
 | 
			
		||||
-        p.pu[LUMA_32x8].convert_p2s  = PFX(filterPixelToShort_32x8_neon);
 | 
			
		||||
-        p.pu[LUMA_32x16].convert_p2s = PFX(filterPixelToShort_32x16_neon);
 | 
			
		||||
-        p.pu[LUMA_32x24].convert_p2s = PFX(filterPixelToShort_32x24_neon);
 | 
			
		||||
-        p.pu[LUMA_32x32].convert_p2s = PFX(filterPixelToShort_32x32_neon);
 | 
			
		||||
-        p.pu[LUMA_32x64].convert_p2s = PFX(filterPixelToShort_32x64_neon);
 | 
			
		||||
-        p.pu[LUMA_48x64].convert_p2s = PFX(filterPixelToShort_48x64_neon);
 | 
			
		||||
-        p.pu[LUMA_64x16].convert_p2s = PFX(filterPixelToShort_64x16_neon);
 | 
			
		||||
-        p.pu[LUMA_64x32].convert_p2s = PFX(filterPixelToShort_64x32_neon);
 | 
			
		||||
-        p.pu[LUMA_64x48].convert_p2s = PFX(filterPixelToShort_64x48_neon);
 | 
			
		||||
-        p.pu[LUMA_64x64].convert_p2s = PFX(filterPixelToShort_64x64_neon);
 | 
			
		||||
+        p.pu[LUMA_4x4].convert_p2s[ALIGNED]   = PFX(filterPixelToShort_4x4_neon);
 | 
			
		||||
+        p.pu[LUMA_4x8].convert_p2s[ALIGNED]   = PFX(filterPixelToShort_4x8_neon);
 | 
			
		||||
+        p.pu[LUMA_4x16].convert_p2s[ALIGNED]  = PFX(filterPixelToShort_4x16_neon);
 | 
			
		||||
+        p.pu[LUMA_8x4].convert_p2s[ALIGNED]   = PFX(filterPixelToShort_8x4_neon);
 | 
			
		||||
+        p.pu[LUMA_8x8].convert_p2s[ALIGNED]   = PFX(filterPixelToShort_8x8_neon);
 | 
			
		||||
+        p.pu[LUMA_8x16].convert_p2s[ALIGNED]  = PFX(filterPixelToShort_8x16_neon);
 | 
			
		||||
+        p.pu[LUMA_8x32].convert_p2s[ALIGNED]  = PFX(filterPixelToShort_8x32_neon);
 | 
			
		||||
+        p.pu[LUMA_12x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_12x16_neon);
 | 
			
		||||
+        p.pu[LUMA_16x4].convert_p2s[ALIGNED]  = PFX(filterPixelToShort_16x4_neon);
 | 
			
		||||
+        p.pu[LUMA_16x8].convert_p2s[ALIGNED]  = PFX(filterPixelToShort_16x8_neon);
 | 
			
		||||
+        p.pu[LUMA_16x12].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x12_neon);
 | 
			
		||||
+        p.pu[LUMA_16x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x16_neon);
 | 
			
		||||
+        p.pu[LUMA_16x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x32_neon);
 | 
			
		||||
+        p.pu[LUMA_16x64].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x64_neon);
 | 
			
		||||
+        p.pu[LUMA_24x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_24x32_neon);
 | 
			
		||||
+        p.pu[LUMA_32x8].convert_p2s[ALIGNED]  = PFX(filterPixelToShort_32x8_neon);
 | 
			
		||||
+        p.pu[LUMA_32x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x16_neon);
 | 
			
		||||
+        p.pu[LUMA_32x24].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x24_neon);
 | 
			
		||||
+        p.pu[LUMA_32x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x32_neon);
 | 
			
		||||
+        p.pu[LUMA_32x64].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x64_neon);
 | 
			
		||||
+        p.pu[LUMA_48x64].convert_p2s[ALIGNED] = PFX(filterPixelToShort_48x64_neon);
 | 
			
		||||
+        p.pu[LUMA_64x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_64x16_neon);
 | 
			
		||||
+        p.pu[LUMA_64x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_64x32_neon);
 | 
			
		||||
+        p.pu[LUMA_64x48].convert_p2s[ALIGNED] = PFX(filterPixelToShort_64x48_neon);
 | 
			
		||||
+        p.pu[LUMA_64x64].convert_p2s[ALIGNED] = PFX(filterPixelToShort_64x64_neon);
 | 
			
		||||
 
 | 
			
		||||
         // Block_fill
 | 
			
		||||
-        p.cu[BLOCK_4x4].blockfill_s   = PFX(blockfill_s_4x4_neon);
 | 
			
		||||
-        p.cu[BLOCK_8x8].blockfill_s   = PFX(blockfill_s_8x8_neon);
 | 
			
		||||
-        p.cu[BLOCK_16x16].blockfill_s = PFX(blockfill_s_16x16_neon);
 | 
			
		||||
-        p.cu[BLOCK_32x32].blockfill_s = PFX(blockfill_s_32x32_neon);
 | 
			
		||||
+        p.cu[BLOCK_4x4].blockfill_s[ALIGNED]   = PFX(blockfill_s_4x4_neon);
 | 
			
		||||
+        p.cu[BLOCK_8x8].blockfill_s[ALIGNED]   = PFX(blockfill_s_8x8_neon);
 | 
			
		||||
+        p.cu[BLOCK_16x16].blockfill_s[ALIGNED] = PFX(blockfill_s_16x16_neon);
 | 
			
		||||
+        p.cu[BLOCK_32x32].blockfill_s[ALIGNED] = PFX(blockfill_s_32x32_neon);
 | 
			
		||||
 
 | 
			
		||||
         // Blockcopy_ss
 | 
			
		||||
         p.cu[BLOCK_4x4].copy_ss   = PFX(blockcopy_ss_4x4_neon);
 | 
			
		||||
@@ -495,21 +495,21 @@ void setupAssemblyPrimitives(EncoderPrim
 | 
			
		||||
         p.chroma[X265_CSP_I422].cu[BLOCK_422_32x64].copy_sp = PFX(blockcopy_sp_32x64_neon);
 | 
			
		||||
 
 | 
			
		||||
         // pixel_add_ps
 | 
			
		||||
-        p.cu[BLOCK_4x4].add_ps   = PFX(pixel_add_ps_4x4_neon);
 | 
			
		||||
-        p.cu[BLOCK_8x8].add_ps   = PFX(pixel_add_ps_8x8_neon);
 | 
			
		||||
-        p.cu[BLOCK_16x16].add_ps = PFX(pixel_add_ps_16x16_neon);
 | 
			
		||||
-        p.cu[BLOCK_32x32].add_ps = PFX(pixel_add_ps_32x32_neon);
 | 
			
		||||
-        p.cu[BLOCK_64x64].add_ps = PFX(pixel_add_ps_64x64_neon);
 | 
			
		||||
+        p.cu[BLOCK_4x4].add_ps[ALIGNED]   = PFX(pixel_add_ps_4x4_neon);
 | 
			
		||||
+        p.cu[BLOCK_8x8].add_ps[ALIGNED]   = PFX(pixel_add_ps_8x8_neon);
 | 
			
		||||
+        p.cu[BLOCK_16x16].add_ps[ALIGNED] = PFX(pixel_add_ps_16x16_neon);
 | 
			
		||||
+        p.cu[BLOCK_32x32].add_ps[ALIGNED] = PFX(pixel_add_ps_32x32_neon);
 | 
			
		||||
+        p.cu[BLOCK_64x64].add_ps[ALIGNED] = PFX(pixel_add_ps_64x64_neon);
 | 
			
		||||
 
 | 
			
		||||
         // chroma add_ps
 | 
			
		||||
-        p.chroma[X265_CSP_I420].cu[BLOCK_420_4x4].add_ps   = PFX(pixel_add_ps_4x4_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].cu[BLOCK_420_8x8].add_ps   = PFX(pixel_add_ps_8x8_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].cu[BLOCK_420_16x16].add_ps = PFX(pixel_add_ps_16x16_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I420].cu[BLOCK_420_32x32].add_ps = PFX(pixel_add_ps_32x32_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].cu[BLOCK_422_4x8].add_ps   = PFX(pixel_add_ps_4x8_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].cu[BLOCK_422_8x16].add_ps  = PFX(pixel_add_ps_8x16_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].cu[BLOCK_422_16x32].add_ps = PFX(pixel_add_ps_16x32_neon);
 | 
			
		||||
-        p.chroma[X265_CSP_I422].cu[BLOCK_422_32x64].add_ps = PFX(pixel_add_ps_32x64_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].cu[BLOCK_420_4x4].add_ps[ALIGNED]   = PFX(pixel_add_ps_4x4_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].cu[BLOCK_420_8x8].add_ps[ALIGNED]   = PFX(pixel_add_ps_8x8_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].cu[BLOCK_420_16x16].add_ps[ALIGNED] = PFX(pixel_add_ps_16x16_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I420].cu[BLOCK_420_32x32].add_ps[ALIGNED] = PFX(pixel_add_ps_32x32_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].cu[BLOCK_422_4x8].add_ps[ALIGNED]   = PFX(pixel_add_ps_4x8_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].cu[BLOCK_422_8x16].add_ps[ALIGNED]  = PFX(pixel_add_ps_8x16_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].cu[BLOCK_422_16x32].add_ps[ALIGNED] = PFX(pixel_add_ps_16x32_neon);
 | 
			
		||||
+        p.chroma[X265_CSP_I422].cu[BLOCK_422_32x64].add_ps[ALIGNED] = PFX(pixel_add_ps_32x64_neon);
 | 
			
		||||
 
 | 
			
		||||
         // cpy2Dto1D_shr
 | 
			
		||||
         p.cu[BLOCK_4x4].cpy2Dto1D_shr   = PFX(cpy2Dto1D_shr_4x4_neon);
 | 
			
		||||
@@ -518,10 +518,10 @@ void setupAssemblyPrimitives(EncoderPrim
 | 
			
		||||
         p.cu[BLOCK_32x32].cpy2Dto1D_shr = PFX(cpy2Dto1D_shr_32x32_neon);
 | 
			
		||||
 
 | 
			
		||||
         // ssd_s
 | 
			
		||||
-        p.cu[BLOCK_4x4].ssd_s   = PFX(pixel_ssd_s_4x4_neon);
 | 
			
		||||
-        p.cu[BLOCK_8x8].ssd_s   = PFX(pixel_ssd_s_8x8_neon);
 | 
			
		||||
-        p.cu[BLOCK_16x16].ssd_s = PFX(pixel_ssd_s_16x16_neon);
 | 
			
		||||
-        p.cu[BLOCK_32x32].ssd_s = PFX(pixel_ssd_s_32x32_neon);
 | 
			
		||||
+        p.cu[BLOCK_4x4].ssd_s[ALIGNED]   = PFX(pixel_ssd_s_4x4_neon);
 | 
			
		||||
+        p.cu[BLOCK_8x8].ssd_s[ALIGNED]   = PFX(pixel_ssd_s_8x8_neon);
 | 
			
		||||
+        p.cu[BLOCK_16x16].ssd_s[ALIGNED] = PFX(pixel_ssd_s_16x16_neon);
 | 
			
		||||
+        p.cu[BLOCK_32x32].ssd_s[ALIGNED] = PFX(pixel_ssd_s_32x32_neon);
 | 
			
		||||
 
 | 
			
		||||
         // sse_ss
 | 
			
		||||
         p.cu[BLOCK_4x4].sse_ss   = PFX(pixel_sse_ss_4x4_neon);
 | 
			
		||||
@@ -548,10 +548,10 @@ void setupAssemblyPrimitives(EncoderPrim
 | 
			
		||||
         p.chroma[X265_CSP_I422].cu[BLOCK_422_32x64].sub_ps = PFX(pixel_sub_ps_32x64_neon);
 | 
			
		||||
 
 | 
			
		||||
         // calc_Residual
 | 
			
		||||
-        p.cu[BLOCK_4x4].calcresidual   = PFX(getResidual4_neon);
 | 
			
		||||
-        p.cu[BLOCK_8x8].calcresidual   = PFX(getResidual8_neon);
 | 
			
		||||
-        p.cu[BLOCK_16x16].calcresidual = PFX(getResidual16_neon);
 | 
			
		||||
-        p.cu[BLOCK_32x32].calcresidual = PFX(getResidual32_neon);
 | 
			
		||||
+        p.cu[BLOCK_4x4].calcresidual[ALIGNED]   = PFX(getResidual4_neon);
 | 
			
		||||
+        p.cu[BLOCK_8x8].calcresidual[ALIGNED]   = PFX(getResidual8_neon);
 | 
			
		||||
+        p.cu[BLOCK_16x16].calcresidual[ALIGNED] = PFX(getResidual16_neon);
 | 
			
		||||
+        p.cu[BLOCK_32x32].calcresidual[ALIGNED] = PFX(getResidual32_neon);
 | 
			
		||||
 
 | 
			
		||||
         // sse_pp
 | 
			
		||||
         p.cu[BLOCK_4x4].sse_pp   = PFX(pixel_sse_pp_4x4_neon);
 | 
			
		||||
@@ -722,31 +722,31 @@ void setupAssemblyPrimitives(EncoderPrim
 | 
			
		||||
         p.pu[LUMA_64x64].sad_x4 = PFX(sad_x4_64x64_neon);
 | 
			
		||||
 
 | 
			
		||||
         // pixel_avg_pp
 | 
			
		||||
-        p.pu[LUMA_4x4].pixelavg_pp   = PFX(pixel_avg_pp_4x4_neon);
 | 
			
		||||
-        p.pu[LUMA_4x8].pixelavg_pp   = PFX(pixel_avg_pp_4x8_neon);
 | 
			
		||||
-        p.pu[LUMA_4x16].pixelavg_pp  = PFX(pixel_avg_pp_4x16_neon);
 | 
			
		||||
-        p.pu[LUMA_8x4].pixelavg_pp   = PFX(pixel_avg_pp_8x4_neon);
 | 
			
		||||
-        p.pu[LUMA_8x8].pixelavg_pp   = PFX(pixel_avg_pp_8x8_neon);
 | 
			
		||||
-        p.pu[LUMA_8x16].pixelavg_pp  = PFX(pixel_avg_pp_8x16_neon);
 | 
			
		||||
-        p.pu[LUMA_8x32].pixelavg_pp  = PFX(pixel_avg_pp_8x32_neon);
 | 
			
		||||
-        p.pu[LUMA_12x16].pixelavg_pp = PFX(pixel_avg_pp_12x16_neon);
 | 
			
		||||
-        p.pu[LUMA_16x4].pixelavg_pp  = PFX(pixel_avg_pp_16x4_neon);
 | 
			
		||||
-        p.pu[LUMA_16x8].pixelavg_pp  = PFX(pixel_avg_pp_16x8_neon);
 | 
			
		||||
-        p.pu[LUMA_16x12].pixelavg_pp = PFX(pixel_avg_pp_16x12_neon);
 | 
			
		||||
-        p.pu[LUMA_16x16].pixelavg_pp = PFX(pixel_avg_pp_16x16_neon);
 | 
			
		||||
-        p.pu[LUMA_16x32].pixelavg_pp = PFX(pixel_avg_pp_16x32_neon);
 | 
			
		||||
-        p.pu[LUMA_16x64].pixelavg_pp = PFX(pixel_avg_pp_16x64_neon);
 | 
			
		||||
-        p.pu[LUMA_24x32].pixelavg_pp = PFX(pixel_avg_pp_24x32_neon);
 | 
			
		||||
-        p.pu[LUMA_32x8].pixelavg_pp  = PFX(pixel_avg_pp_32x8_neon);
 | 
			
		||||
-        p.pu[LUMA_32x16].pixelavg_pp = PFX(pixel_avg_pp_32x16_neon);
 | 
			
		||||
-        p.pu[LUMA_32x24].pixelavg_pp = PFX(pixel_avg_pp_32x24_neon);
 | 
			
		||||
-        p.pu[LUMA_32x32].pixelavg_pp = PFX(pixel_avg_pp_32x32_neon);
 | 
			
		||||
-        p.pu[LUMA_32x64].pixelavg_pp = PFX(pixel_avg_pp_32x64_neon);
 | 
			
		||||
-        p.pu[LUMA_48x64].pixelavg_pp = PFX(pixel_avg_pp_48x64_neon);
 | 
			
		||||
-        p.pu[LUMA_64x16].pixelavg_pp = PFX(pixel_avg_pp_64x16_neon);
 | 
			
		||||
-        p.pu[LUMA_64x32].pixelavg_pp = PFX(pixel_avg_pp_64x32_neon);
 | 
			
		||||
-        p.pu[LUMA_64x48].pixelavg_pp = PFX(pixel_avg_pp_64x48_neon);
 | 
			
		||||
-        p.pu[LUMA_64x64].pixelavg_pp = PFX(pixel_avg_pp_64x64_neon);
 | 
			
		||||
+        p.pu[LUMA_4x4].pixelavg_pp[ALIGNED]   = PFX(pixel_avg_pp_4x4_neon);
 | 
			
		||||
+        p.pu[LUMA_4x8].pixelavg_pp[ALIGNED]   = PFX(pixel_avg_pp_4x8_neon);
 | 
			
		||||
+        p.pu[LUMA_4x16].pixelavg_pp[ALIGNED]  = PFX(pixel_avg_pp_4x16_neon);
 | 
			
		||||
+        p.pu[LUMA_8x4].pixelavg_pp[ALIGNED]   = PFX(pixel_avg_pp_8x4_neon);
 | 
			
		||||
+        p.pu[LUMA_8x8].pixelavg_pp[ALIGNED]   = PFX(pixel_avg_pp_8x8_neon);
 | 
			
		||||
+        p.pu[LUMA_8x16].pixelavg_pp[ALIGNED]  = PFX(pixel_avg_pp_8x16_neon);
 | 
			
		||||
+        p.pu[LUMA_8x32].pixelavg_pp[ALIGNED]  = PFX(pixel_avg_pp_8x32_neon);
 | 
			
		||||
+        p.pu[LUMA_12x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_12x16_neon);
 | 
			
		||||
+        p.pu[LUMA_16x4].pixelavg_pp[ALIGNED]  = PFX(pixel_avg_pp_16x4_neon);
 | 
			
		||||
+        p.pu[LUMA_16x8].pixelavg_pp[ALIGNED]  = PFX(pixel_avg_pp_16x8_neon);
 | 
			
		||||
+        p.pu[LUMA_16x12].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x12_neon);
 | 
			
		||||
+        p.pu[LUMA_16x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x16_neon);
 | 
			
		||||
+        p.pu[LUMA_16x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x32_neon);
 | 
			
		||||
+        p.pu[LUMA_16x64].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x64_neon);
 | 
			
		||||
+        p.pu[LUMA_24x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_24x32_neon);
 | 
			
		||||
+        p.pu[LUMA_32x8].pixelavg_pp[ALIGNED]  = PFX(pixel_avg_pp_32x8_neon);
 | 
			
		||||
+        p.pu[LUMA_32x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x16_neon);
 | 
			
		||||
+        p.pu[LUMA_32x24].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x24_neon);
 | 
			
		||||
+        p.pu[LUMA_32x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x32_neon);
 | 
			
		||||
+        p.pu[LUMA_32x64].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x64_neon);
 | 
			
		||||
+        p.pu[LUMA_48x64].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_48x64_neon);
 | 
			
		||||
+        p.pu[LUMA_64x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_64x16_neon);
 | 
			
		||||
+        p.pu[LUMA_64x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_64x32_neon);
 | 
			
		||||
+        p.pu[LUMA_64x48].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_64x48_neon);
 | 
			
		||||
+        p.pu[LUMA_64x64].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_64x64_neon);
 | 
			
		||||
 
 | 
			
		||||
         // planecopy
 | 
			
		||||
         p.planecopy_cp = PFX(pixel_planecopy_cp_neon);
 | 
			
		||||
							
								
								
									
										37
									
								
								gnu/packages/patches/x265-detect512-all-arches.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								gnu/packages/patches/x265-detect512-all-arches.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,37 @@
 | 
			
		|||
https://sources.debian.org/data/main/x/x265/2.9-3/debian/patches/0003-detect512-is-needed-on-all-architectures.patch
 | 
			
		||||
 | 
			
		||||
From: Adam Sampson <unknown@bitbucket>
 | 
			
		||||
Date: Sun, 14 Oct 2018 14:04:18 +0200
 | 
			
		||||
Subject: detect512 is needed on all architectures
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 source/common/cpu.cpp | 9 +++++----
 | 
			
		||||
 1 file changed, 5 insertions(+), 4 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/source/common/cpu.cpp b/source/common/cpu.cpp
 | 
			
		||||
index 0681ff5..fa687da 100644
 | 
			
		||||
--- a/source/common/cpu.cpp
 | 
			
		||||
+++ b/source/common/cpu.cpp
 | 
			
		||||
@@ -110,6 +110,11 @@ const cpu_name_t cpu_names[] =
 | 
			
		||||
     { "", 0 },
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
+bool detect512()
 | 
			
		||||
+{
 | 
			
		||||
+    return(enable512);
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
 #if X265_ARCH_X86
 | 
			
		||||
 
 | 
			
		||||
 extern "C" {
 | 
			
		||||
@@ -123,10 +128,6 @@ uint64_t PFX(cpu_xgetbv)(int xcr);
 | 
			
		||||
 #pragma warning(disable: 4309) // truncation of constant value
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
-bool detect512()
 | 
			
		||||
-{
 | 
			
		||||
-    return(enable512);
 | 
			
		||||
-}
 | 
			
		||||
 uint32_t cpu_detect(bool benableavx512 )
 | 
			
		||||
 {
 | 
			
		||||
 
 | 
			
		||||
| 
						 | 
				
			
			@ -1,25 +0,0 @@
 | 
			
		|||
https://sources.debian.org/data/main/x/x265/2.8-3/debian/patches/0003-Fix-build-error-on-on-ppc64le.patch
 | 
			
		||||
 | 
			
		||||
This patch also fixes building on armhf-linux and aarch64-linux
 | 
			
		||||
 | 
			
		||||
From: Jayashree <jayashree.c@multicorewareinc.com>
 | 
			
		||||
Date: Fri, 25 May 2018 10:26:05 +0530
 | 
			
		||||
Subject: Fix build error on on ppc64le
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 source/common/param.cpp | 2 +-
 | 
			
		||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/source/common/param.cpp b/source/common/param.cpp
 | 
			
		||||
index 31bcbc7..4a6d0c8 100644
 | 
			
		||||
--- a/source/common/param.cpp
 | 
			
		||||
+++ b/source/common/param.cpp
 | 
			
		||||
@@ -633,7 +633,7 @@ int x265_param_parse(x265_param* p, const char* name, const char* value)
 | 
			
		||||
         if (bValueWasNull)
 | 
			
		||||
             p->cpuid = atobool(value);
 | 
			
		||||
         else
 | 
			
		||||
-            p->cpuid = parseCpuName(value, bError);
 | 
			
		||||
+            p->cpuid = parseCpuName(value, bError, false);
 | 
			
		||||
 #endif
 | 
			
		||||
     }
 | 
			
		||||
     OPT("fps")
 | 
			
		||||
| 
						 | 
				
			
			@ -1,30 +0,0 @@
 | 
			
		|||
From 8e7bdc18d62632adcee029b2f8f5013d11549dd7 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: "W. Felix Handte" <w@felixhandte.com>
 | 
			
		||||
Date: Fri, 29 Jun 2018 16:31:22 -0400
 | 
			
		||||
Subject: [PATCH] Fix Tests of `--list` Behavior with `stdin`
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 tests/playTests.sh | 10 ++++++++--
 | 
			
		||||
 1 file changed, 8 insertions(+), 2 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/tests/playTests.sh b/tests/playTests.sh
 | 
			
		||||
index 09a7377f2..aa5535d59 100755
 | 
			
		||||
--- a/tests/playTests.sh
 | 
			
		||||
+++ b/tests/playTests.sh
 | 
			
		||||
@@ -731,8 +731,14 @@ $ECHO "\n===>  zstd --list/-l error detection tests "
 | 
			
		||||
 ! $ZSTD -lv tmp1*
 | 
			
		||||
 ! $ZSTD --list -v tmp2 tmp12.zst
 | 
			
		||||
 
 | 
			
		||||
-$ECHO "\n===>  zstd --list/-l exits 1 when stdin is piped in"
 | 
			
		||||
-! echo "piped STDIN" | $ZSTD --list
 | 
			
		||||
+$ECHO "\n===>  zstd --list/-l errors when presented with stdin / no files"
 | 
			
		||||
+! $ZSTD -l
 | 
			
		||||
+! $ZSTD -l -
 | 
			
		||||
+! $ZSTD -l < tmp1.zst
 | 
			
		||||
+! $ZSTD -l - < tmp1.zst
 | 
			
		||||
+! $ZSTD -l - tmp1.zst
 | 
			
		||||
+! $ZSTD -l - tmp1.zst < tmp1.zst
 | 
			
		||||
+$ZSTD -l tmp1.zst < tmp1.zst # but doesn't error just because stdin is not a tty
 | 
			
		||||
 
 | 
			
		||||
 $ECHO "\n===>  zstd --list/-l test with null files "
 | 
			
		||||
 ./datagen -g0 > tmp5
 | 
			
		||||
| 
						 | 
				
			
			@ -1,67 +0,0 @@
 | 
			
		|||
From 712a9fd9721c314f4b0238577d803b012845f6d2 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: "W. Felix Handte" <w@felixhandte.com>
 | 
			
		||||
Date: Fri, 29 Jun 2018 15:33:44 -0400
 | 
			
		||||
Subject: [PATCH] Allow Invoking `zstd --list` When `stdin` is not a `tty`
 | 
			
		||||
 | 
			
		||||
Also now returns an error when no inputs are given.
 | 
			
		||||
 | 
			
		||||
New proposed behavior:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
felix@odin:~/prog/zstd (list-stdin-check)$ ./zstd -l; echo $?
 | 
			
		||||
No files given
 | 
			
		||||
1
 | 
			
		||||
felix@odin:~/prog/zstd (list-stdin-check)$ ./zstd -l Makefile.zst; echo $?
 | 
			
		||||
Frames  Skips  Compressed  Uncompressed  Ratio  Check  Filename
 | 
			
		||||
     1      0     3.08 KB      10.92 KB  3.544  XXH64  Makefile.zst
 | 
			
		||||
0
 | 
			
		||||
felix@odin:~/prog/zstd (list-stdin-check)$ ./zstd -l <Makefile.zst; echo $?
 | 
			
		||||
zstd: --list does not support reading from standard input
 | 
			
		||||
No files given
 | 
			
		||||
1
 | 
			
		||||
felix@odin:~/prog/zstd (list-stdin-check)$ ./zstd -l Makefile.zst <Makefile.zst; echo $?
 | 
			
		||||
Frames  Skips  Compressed  Uncompressed  Ratio  Check  Filename
 | 
			
		||||
     1      0     3.08 KB      10.92 KB  3.544  XXH64  Makefile.zst
 | 
			
		||||
0
 | 
			
		||||
felix@odin:~/prog/zstd (list-stdin-check)$
 | 
			
		||||
```
 | 
			
		||||
---
 | 
			
		||||
 programs/fileio.c | 16 ++++++++++------
 | 
			
		||||
 1 file changed, 10 insertions(+), 6 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/programs/fileio.c b/programs/fileio.c
 | 
			
		||||
index 0175b3163..b4eed28d1 100644
 | 
			
		||||
--- a/programs/fileio.c
 | 
			
		||||
+++ b/programs/fileio.c
 | 
			
		||||
@@ -2017,21 +2017,25 @@ static int FIO_listFile(fileInfo_t* total, const char* inFileName, int displayLe
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 int FIO_listMultipleFiles(unsigned numFiles, const char** filenameTable, int displayLevel){
 | 
			
		||||
-
 | 
			
		||||
-    if (!IS_CONSOLE(stdin)) {
 | 
			
		||||
-        DISPLAYOUT("zstd: --list does not support reading from standard input\n");
 | 
			
		||||
-        return 1;
 | 
			
		||||
+    unsigned u;
 | 
			
		||||
+    for (u=0; u<numFiles;u++) {
 | 
			
		||||
+        if (!strcmp (filenameTable[u], stdinmark)) {
 | 
			
		||||
+            DISPLAYOUT("zstd: --list does not support reading from standard input\n");
 | 
			
		||||
+            return 1;
 | 
			
		||||
+        }
 | 
			
		||||
     }
 | 
			
		||||
 
 | 
			
		||||
     if (numFiles == 0) {
 | 
			
		||||
+        if (!IS_CONSOLE(stdin)) {
 | 
			
		||||
+            DISPLAYOUT("zstd: --list does not support reading from standard input\n");
 | 
			
		||||
+        }
 | 
			
		||||
         DISPLAYOUT("No files given\n");
 | 
			
		||||
-        return 0;
 | 
			
		||||
+        return 1;
 | 
			
		||||
     }
 | 
			
		||||
     if (displayLevel <= 2) {
 | 
			
		||||
         DISPLAYOUT("Frames  Skips  Compressed  Uncompressed  Ratio  Check  Filename\n");
 | 
			
		||||
     }
 | 
			
		||||
     {   int error = 0;
 | 
			
		||||
-        unsigned u;
 | 
			
		||||
         fileInfo_t total;
 | 
			
		||||
         memset(&total, 0, sizeof(total));
 | 
			
		||||
         total.usesCheck = 1;
 | 
			
		||||
| 
						 | 
				
			
			@ -26,6 +26,7 @@
 | 
			
		|||
;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
 | 
			
		||||
;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 | 
			
		||||
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
 | 
			
		||||
;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -127,6 +128,85 @@ asynchronous DNS resolutions with a synchronous looking interface by
 | 
			
		|||
using @url{https://github.com/saghul/pycares,pycares}.")
 | 
			
		||||
    (license license:expat)))
 | 
			
		||||
 | 
			
		||||
(define-public python-falcon
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-falcon")
 | 
			
		||||
    (version "1.4.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (pypi-uri "falcon" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "1i0vmqsk24z4biirqhpvas9h28wy7nmpy3jvnb6rz2imq04zd09r"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (replace 'check
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (invoke "pytest"))))))
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("python-mimeparse" ,python-mimeparse)
 | 
			
		||||
       ("python-six" ,python-six)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("python-cython" ,python-cython) ;for faster binaries
 | 
			
		||||
       ("python-pytest" ,python-pytest)
 | 
			
		||||
       ("python-pyyaml" ,python-pyyaml)
 | 
			
		||||
       ("python-requests" ,python-requests)
 | 
			
		||||
       ("python-testtools" ,python-testtools)
 | 
			
		||||
       ("python-jsonschema" ,python-jsonschema)
 | 
			
		||||
       ("python-msgpack" ,python-msgpack)))
 | 
			
		||||
    (home-page "https://falconframework.org")
 | 
			
		||||
    (synopsis
 | 
			
		||||
     "Web framework for building APIs and application backends")
 | 
			
		||||
    (description
 | 
			
		||||
     "Falcon is a web API framework for building microservices, application
 | 
			
		||||
backends and higher-level frameworks.  Among its features are:
 | 
			
		||||
@itemize
 | 
			
		||||
@item Optimized and extensible code base
 | 
			
		||||
@item Routing via URI templates and REST-inspired resource
 | 
			
		||||
classes
 | 
			
		||||
@item Access to headers and bodies through request and response
 | 
			
		||||
classes
 | 
			
		||||
@item Request processing via middleware components and hooks
 | 
			
		||||
@item Idiomatic HTTP error responses
 | 
			
		||||
@item Straightforward exception handling
 | 
			
		||||
@item Unit testing support through WSGI helpers and mocks
 | 
			
		||||
@item Compatible with both CPython and PyPy
 | 
			
		||||
@item Cython support for better performance when used with CPython
 | 
			
		||||
@end itemize")
 | 
			
		||||
    (license license:asl2.0)))
 | 
			
		||||
 | 
			
		||||
(define-public python2-falcon
 | 
			
		||||
  (package-with-python2 python-falcon))
 | 
			
		||||
 | 
			
		||||
(define-public python-falcon-cors
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-falcon-cors")
 | 
			
		||||
    (version "1.1.7")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (pypi-uri "falcon-cors" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "12pym7hwsbd8b0c1azn95nas8gm3f1qpr6lpyx0958xm65ffr20p"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("python-falcon" ,python-falcon)))
 | 
			
		||||
    (home-page
 | 
			
		||||
     "https://github.com/lwcolton/falcon-cors")
 | 
			
		||||
    (synopsis "Falcon @dfn{cross-origin resource sharing} (CORS) library")
 | 
			
		||||
    (description "This middleware provides @dfn{cross-origin resource
 | 
			
		||||
sharing} (CORS) support for Falcon.  It allows applying a specially crafted
 | 
			
		||||
CORS object to the incoming requests, enabling the ability to serve resources
 | 
			
		||||
over a different origin than that of the web application.")
 | 
			
		||||
    (license license:asl2.0)))
 | 
			
		||||
 | 
			
		||||
(define-public python2-falcon-cors
 | 
			
		||||
  (package-with-python2 python-falcon-cors))
 | 
			
		||||
 | 
			
		||||
(define-public python-furl
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-furl")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -149,6 +149,7 @@
 | 
			
		|||
  (package
 | 
			
		||||
    (name "python2")
 | 
			
		||||
    (version "2.7.15")
 | 
			
		||||
    (replacement python-2/fixed)
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
      (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -315,6 +316,18 @@ data types.")
 | 
			
		|||
;; Current 2.x version.
 | 
			
		||||
(define-public python-2 python-2.7)
 | 
			
		||||
 | 
			
		||||
(define python-2/fixed
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit python-2)
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (inherit (package-source python-2))
 | 
			
		||||
              (patches (append
 | 
			
		||||
                        (origin-patches (package-source python-2))
 | 
			
		||||
                        (search-patches "python2-CVE-2018-1060.patch"
 | 
			
		||||
                                        "python2-CVE-2018-1061.patch"
 | 
			
		||||
                                        "python2-CVE-2018-14647.patch"
 | 
			
		||||
                                        "python2-CVE-2018-1000802.patch")))))))
 | 
			
		||||
 | 
			
		||||
(define-public python2-called-python
 | 
			
		||||
  ;; Both 2.x and 3.x used to be called "python".  In commit
 | 
			
		||||
  ;; a7714d42de2c3082f3609d1e63c83d703fb39cf9 (March 2018), we renamed the
 | 
			
		||||
| 
						 | 
				
			
			@ -328,6 +341,7 @@ data types.")
 | 
			
		|||
  (package (inherit python-2)
 | 
			
		||||
    (name "python")
 | 
			
		||||
    (version "3.7.0")
 | 
			
		||||
    (replacement python-3/fixed)
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://www.python.org/ftp/python/"
 | 
			
		||||
| 
						 | 
				
			
			@ -399,6 +413,24 @@ data types.")
 | 
			
		|||
;; Current 3.x version.
 | 
			
		||||
(define-public python-3 python-3.7)
 | 
			
		||||
 | 
			
		||||
(define python-3/fixed
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit python-3)
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (inherit (package-source python-3))
 | 
			
		||||
              (patches (append (origin-patches (package-source python-3))
 | 
			
		||||
                               (search-patches "python-CVE-2018-14647.patch")))))
 | 
			
		||||
    (arguments
 | 
			
		||||
     (substitute-keyword-arguments (package-arguments python-3)
 | 
			
		||||
       ((#:phases phases)
 | 
			
		||||
        `(modify-phases ,phases
 | 
			
		||||
           (add-after 'unpack 'delete-broken-test
 | 
			
		||||
             (lambda _
 | 
			
		||||
               ;; Delete test which fails on recent kernels:
 | 
			
		||||
               ;; <https://bugs.python.org/issue34587>.
 | 
			
		||||
               (delete-file "Lib/test/test_socket.py")
 | 
			
		||||
               #t))))))))
 | 
			
		||||
 | 
			
		||||
;; Current major version.
 | 
			
		||||
(define-public python python-3)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -406,7 +438,7 @@ data types.")
 | 
			
		|||
;; Python (Tk -> libxcb -> Python.)
 | 
			
		||||
 | 
			
		||||
(define-public python2-minimal
 | 
			
		||||
  (package (inherit python-2)
 | 
			
		||||
  (package/inherit python-2
 | 
			
		||||
    (name "python2-minimal")
 | 
			
		||||
    (outputs '("out"))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -417,7 +449,7 @@ data types.")
 | 
			
		|||
              ("zlib" ,zlib)))))
 | 
			
		||||
 | 
			
		||||
(define-public python-minimal
 | 
			
		||||
  (package (inherit python)
 | 
			
		||||
  (package/inherit python
 | 
			
		||||
    (name "python-minimal")
 | 
			
		||||
    (outputs '("out"))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -429,8 +461,7 @@ data types.")
 | 
			
		|||
              ("zlib" ,zlib)))))
 | 
			
		||||
 | 
			
		||||
(define-public python-debug
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit python)
 | 
			
		||||
  (package/inherit python
 | 
			
		||||
    (name "python-debug")
 | 
			
		||||
    (outputs '("out" "debug"))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
| 
						 | 
				
			
			@ -449,7 +480,7 @@ for more information.")))
 | 
			
		|||
(define* (wrap-python3 python
 | 
			
		||||
                       #:optional
 | 
			
		||||
                       (name (string-append (package-name python) "-wrapper")))
 | 
			
		||||
  (package (inherit python)
 | 
			
		||||
  (package/inherit python
 | 
			
		||||
    (name name)
 | 
			
		||||
    (source #f)
 | 
			
		||||
    (build-system trivial-build-system)
 | 
			
		||||
| 
						 | 
				
			
			@ -1653,7 +1684,7 @@ software.")
 | 
			
		|||
(define-public python-mimeparse
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-mimeparse")
 | 
			
		||||
    (version "0.1.4")
 | 
			
		||||
    (version "1.6.0")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -1662,10 +1693,14 @@ software.")
 | 
			
		|||
             version ".tar.gz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "1hyxg09kaj02ri0rmwjqi86wk4nd1akvv7n0dx77azz76wga4s9w"))))
 | 
			
		||||
         "0y2g6cl660bpz11srgqyvvm8gmywpgyx8g0xfvbiyr0af0yv1r3n"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:tests? #f)) ; no setup.py test command
 | 
			
		||||
     '(#:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (replace 'check
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (invoke "./mimeparse_test.py"))))))
 | 
			
		||||
    (home-page
 | 
			
		||||
     "https://github.com/dbtsai/python-mimeparse")
 | 
			
		||||
    (synopsis "Python library for parsing MIME types")
 | 
			
		||||
| 
						 | 
				
			
			@ -7254,9 +7289,7 @@ config files.")
 | 
			
		|||
    (version "0.12.0")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
                    "https://pypi.io/packages/source/C/ConfigArgParse/"
 | 
			
		||||
                    "ConfigArgParse-" version ".tar.gz"))
 | 
			
		||||
              (uri (pypi-uri "ConfigArgParse" version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0fgkiqh6r3rbkdq3k8c48m85g52k96686rw3a6jg4lcncrkpvk98"))))
 | 
			
		||||
| 
						 | 
				
			
			@ -11350,7 +11383,7 @@ editors.")
 | 
			
		|||
(define-public python2-backports-functools-lru-cache
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python2-backports-functools-lru-cache")
 | 
			
		||||
    (version "1.3")
 | 
			
		||||
    (version "1.5")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -11358,7 +11391,7 @@ editors.")
 | 
			
		|||
       (uri (pypi-uri "backports.functools_lru_cache" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "158ysf2hb0q4p4695abfiym9x1ywg0dgh8a3apd7gqaaxjy22jj4"))))
 | 
			
		||||
         "06jgv8gib4fhky0p5cmxdghvsgjyzcdgk48k8pxb1ccf11znk64x"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("python2-setuptools-scm" ,python2-setuptools-scm)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -194,25 +194,6 @@ a focus on simplicity and productivity.")
 | 
			
		|||
               (("/bin/sh") (which "sh")))
 | 
			
		||||
             #t)))))))
 | 
			
		||||
 | 
			
		||||
(define-public ruby-concurrent
 | 
			
		||||
  (package
 | 
			
		||||
    (name "ruby-concurrent")
 | 
			
		||||
    (version "1.0.5")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (rubygems-uri "concurrent-ruby" version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "183lszf5gx84kcpb779v6a2y0mx9sssy8dgppng1z9a505nj1qcf"))))
 | 
			
		||||
    (build-system ruby-build-system)
 | 
			
		||||
    (arguments `(#:tests? #f)); No rakefile
 | 
			
		||||
    (home-page "https://github.com/ruby-concurrency/concurrent-ruby")
 | 
			
		||||
    (synopsis "Concurrency tools for Ruby")
 | 
			
		||||
    (description "This gem provides concurrency tools for Ruby.  It provides
 | 
			
		||||
a library of common thread-safe types and data-structures as well as abstractions
 | 
			
		||||
for concurrency and communication between threads.")
 | 
			
		||||
    (license license:expat)))
 | 
			
		||||
 | 
			
		||||
(define-public ruby-highline
 | 
			
		||||
  (package
 | 
			
		||||
    (name "ruby-highline")
 | 
			
		||||
| 
						 | 
				
			
			@ -3785,7 +3766,7 @@ A modified copy of yajl is used, and included in the package.")
 | 
			
		|||
(define-public ruby-yard
 | 
			
		||||
  (package
 | 
			
		||||
    (name "ruby-yard")
 | 
			
		||||
    (version "0.9.6")
 | 
			
		||||
    (version "0.9.16")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -3795,7 +3776,7 @@ A modified copy of yajl is used, and included in the package.")
 | 
			
		|||
       (file-name (string-append name "-" version ".tar.gz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "0rsz4bghgx7fryzyhlz8wlnd2m9xgyvf1xhrq58mnzfrrfm41bdg"))))
 | 
			
		||||
         "0sqpbayy9sb406jh0zqg6qha1xds863qz9531dh6vp58hc00clfq"))))
 | 
			
		||||
    (build-system ruby-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases
 | 
			
		||||
| 
						 | 
				
			
			@ -5692,27 +5673,6 @@ support the tests found in Prawn, a pure Ruby PDF generation library.")
 | 
			
		|||
functionality from Prawn.")
 | 
			
		||||
    (license license:gpl3+)))
 | 
			
		||||
 | 
			
		||||
(define-public ruby-yard
 | 
			
		||||
  (package
 | 
			
		||||
    (name "ruby-yard")
 | 
			
		||||
    (version "0.9.16")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (rubygems-uri "yard" version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0lmmr1839qgbb3zxfa7jf5mzy17yjl1yirwlgzdhws4452gqhn67"))))
 | 
			
		||||
    (build-system ruby-build-system)
 | 
			
		||||
    (arguments `(#:test-target "spec"))
 | 
			
		||||
    (home-page "https://yardoc.org/")
 | 
			
		||||
    (synopsis "Ruby documentation tool")
 | 
			
		||||
    (description "YARD is a documentation generation tool for the Ruby
 | 
			
		||||
programming language.  It enables the user to generate consistent, usable
 | 
			
		||||
documentation that can be exported to a number of formats very easily, and
 | 
			
		||||
also supports extending for custom Ruby constructs such as custom class level
 | 
			
		||||
definitions.")
 | 
			
		||||
    (license license:expat)))
 | 
			
		||||
 | 
			
		||||
(define-public ruby-prawn
 | 
			
		||||
  (package
 | 
			
		||||
    (name "ruby-prawn")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -735,7 +735,8 @@ measuring and checking the width of strings, with support east asian text.")
 | 
			
		|||
                                 unzip
 | 
			
		||||
                                 "/bin/unzip',")))
 | 
			
		||||
               ;; Makefile is wrong.
 | 
			
		||||
               (chmod config #o644)))))))
 | 
			
		||||
               (chmod config #o644)
 | 
			
		||||
               #t))))))
 | 
			
		||||
    (synopsis "Recover text from @file{.docx} files, with good formatting")
 | 
			
		||||
    (description
 | 
			
		||||
     "@command{docx2txt} is a Perl based command line utility to convert
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,6 +29,8 @@
 | 
			
		|||
;;; Copyright © 2018 Brendan Tildesley <brendan.tildesley@openmailbox.org>
 | 
			
		||||
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 | 
			
		||||
;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 | 
			
		||||
;;; Copyright © 2018 Mark Meyer <mark@ofosos.org>
 | 
			
		||||
;;; Copyright © 2018 Gábor Boskovit <boskovits@gmail.com>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -390,7 +392,7 @@ and creating Matroska files from other media files (@code{mkvmerge}).")
 | 
			
		|||
(define-public x265
 | 
			
		||||
  (package
 | 
			
		||||
    (name "x265")
 | 
			
		||||
    (version "2.8")
 | 
			
		||||
    (version "2.9")
 | 
			
		||||
    (source
 | 
			
		||||
      (origin
 | 
			
		||||
        (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -398,9 +400,8 @@ and creating Matroska files from other media files (@code{mkvmerge}).")
 | 
			
		|||
                            "x265_" version ".tar.gz"))
 | 
			
		||||
        (sha256
 | 
			
		||||
         (base32
 | 
			
		||||
          "0qx8mavwdzdpkkby7n29i9av7zsnklavacwfz537mf62q2pzjnbf"))
 | 
			
		||||
        (patches (search-patches "x265-fix-ppc64le-build.patch"
 | 
			
		||||
                                 "x265-arm-asm-primitives.patch"))
 | 
			
		||||
          "090hp4216isis8q5gb7bwzia8rfyzni54z21jnwm97x3hiy6ibpb"))
 | 
			
		||||
        (patches (search-patches "x265-detect512-all-arches.patch"))
 | 
			
		||||
        (modules '((guix build utils)))
 | 
			
		||||
        (snippet '(begin
 | 
			
		||||
                    (delete-file-recursively "source/compat/getopt")
 | 
			
		||||
| 
						 | 
				
			
			@ -408,12 +409,8 @@ and creating Matroska files from other media files (@code{mkvmerge}).")
 | 
			
		|||
    (build-system cmake-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:tests? #f ; tests are skipped if cpu-optimized code isn't built
 | 
			
		||||
       ;; Currently the source code doesn't check for aarch64.
 | 
			
		||||
       ,@(if (any (cute string-prefix? <> (or (%current-system)
 | 
			
		||||
                                              (%current-target-system)))
 | 
			
		||||
                  '("armhf" "aarch64"))
 | 
			
		||||
           '(#:configure-flags '("-DENABLE_PIC=TRUE"))
 | 
			
		||||
           '())
 | 
			
		||||
       ;; Ensure position independent code for everyone.
 | 
			
		||||
       #:configure-flags '("-DENABLE_PIC=TRUE")
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-before 'configure 'prepare-build
 | 
			
		||||
| 
						 | 
				
			
			@ -1863,41 +1860,36 @@ and custom quantization matrices.")
 | 
			
		|||
    (license license:gpl2+)))
 | 
			
		||||
 | 
			
		||||
(define-public streamlink
 | 
			
		||||
  ;; Release tarball doesn't contain ‘tests/resources/dash/’ directory.
 | 
			
		||||
  (let ((commit "2dca7930a938f60b48d8e23260963ea7c49d979f"))
 | 
			
		||||
    (package
 | 
			
		||||
      (name "streamlink")
 | 
			
		||||
      (version (git-version "0.13.0" "1" commit))
 | 
			
		||||
      (source
 | 
			
		||||
       (origin
 | 
			
		||||
         (method git-fetch)
 | 
			
		||||
         (uri (git-reference
 | 
			
		||||
               (url "https://github.com/streamlink/streamlink.git")
 | 
			
		||||
               (commit commit)))
 | 
			
		||||
         (file-name (git-file-name name version))
 | 
			
		||||
         (sha256
 | 
			
		||||
          (base32
 | 
			
		||||
           "0vq19aspshim63aj8yl2p64ykrbk2mwwlawdx427b3j2djlc5qhw"))))
 | 
			
		||||
      (build-system python-build-system)
 | 
			
		||||
      (home-page "https://github.com/streamlink/streamlink")
 | 
			
		||||
      (native-inputs
 | 
			
		||||
       `(("python-freezegun" ,python-freezegun)
 | 
			
		||||
         ("python-pytest" ,python-pytest)
 | 
			
		||||
         ("python-mock" ,python-mock)
 | 
			
		||||
         ("python-requests-mock" ,python-requests-mock)))
 | 
			
		||||
      (propagated-inputs
 | 
			
		||||
       `(("python-pysocks" ,python-pysocks)
 | 
			
		||||
         ("python-websocket-client" ,python-websocket-client)
 | 
			
		||||
         ("python-iso3166" ,python-iso3166)
 | 
			
		||||
         ("python-iso639" ,python-iso639)
 | 
			
		||||
         ("python-isodate", python-isodate)
 | 
			
		||||
         ("python-pycryptodome" ,python-pycryptodome)
 | 
			
		||||
         ("python-requests" ,python-requests)
 | 
			
		||||
         ("python-urllib3" ,python-urllib3)))
 | 
			
		||||
      (synopsis "Extract streams from various services")
 | 
			
		||||
      (description "Streamlink is command-line utility that extracts streams
 | 
			
		||||
  (package
 | 
			
		||||
    (name "streamlink")
 | 
			
		||||
    (version "0.14.2")
 | 
			
		||||
    (source
 | 
			
		||||
      (origin
 | 
			
		||||
        (method url-fetch)
 | 
			
		||||
        (uri (pypi-uri "streamlink" version))
 | 
			
		||||
        (sha256
 | 
			
		||||
         (base32
 | 
			
		||||
          "0l2145fd60i76afjisfxd48cwhwyir07i7s3bnimdq5db2kzkix8"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (home-page "https://github.com/streamlink/streamlink")
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("python-freezegun" ,python-freezegun)
 | 
			
		||||
       ("python-pytest" ,python-pytest)
 | 
			
		||||
       ("python-mock" ,python-mock)
 | 
			
		||||
       ("python-requests-mock" ,python-requests-mock)))
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("python-pysocks" ,python-pysocks)
 | 
			
		||||
       ("python-websocket-client" ,python-websocket-client)
 | 
			
		||||
       ("python-iso3166" ,python-iso3166)
 | 
			
		||||
       ("python-iso639" ,python-iso639)
 | 
			
		||||
       ("python-isodate", python-isodate)
 | 
			
		||||
       ("python-pycryptodome" ,python-pycryptodome)
 | 
			
		||||
       ("python-requests" ,python-requests)
 | 
			
		||||
       ("python-urllib3" ,python-urllib3)))
 | 
			
		||||
    (synopsis "Extract streams from various services")
 | 
			
		||||
    (description "Streamlink is command-line utility that extracts streams
 | 
			
		||||
from sites like Twitch.tv and pipes them into a video player of choice.")
 | 
			
		||||
      (license license:bsd-2))))
 | 
			
		||||
    (license license:bsd-2)))
 | 
			
		||||
 | 
			
		||||
(define-public livestreamer
 | 
			
		||||
  (deprecated-package "livestreamer" streamlink))
 | 
			
		||||
| 
						 | 
				
			
			@ -1942,7 +1934,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
 | 
			
		|||
(define-public mlt
 | 
			
		||||
  (package
 | 
			
		||||
    (name "mlt")
 | 
			
		||||
    (version "6.4.1")
 | 
			
		||||
    (version "6.10.0")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://github.com/mltframework/mlt/"
 | 
			
		||||
| 
						 | 
				
			
			@ -1950,7 +1942,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
 | 
			
		|||
              (file-name (string-append name "-" version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "10m3ry0b2pvqx3bk34qh5dq337nn8pkc2gzfyhsj4nv9abskln47"))
 | 
			
		||||
                "1zzdj1g3g24q6v8hd0v34lv0pkh37a13fhjpl44h1ffi00mz3577"))
 | 
			
		||||
              (modules '((guix build utils)))
 | 
			
		||||
              (snippet '(begin
 | 
			
		||||
                          ;; As of glibc 2.26, <xlocale.h> no longer is.
 | 
			
		||||
| 
						 | 
				
			
			@ -1960,7 +1952,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
 | 
			
		|||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:tests? #f ; no tests
 | 
			
		||||
       #:make-flags '("CC=gcc")
 | 
			
		||||
       #:make-flags '("CC=gcc" "CXX=g++ -std=gnu++11")
 | 
			
		||||
       #:configure-flags
 | 
			
		||||
       (list "--enable-gpl3"
 | 
			
		||||
             "--enable-gpl")
 | 
			
		||||
| 
						 | 
				
			
			@ -1979,11 +1971,16 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
 | 
			
		|||
     `(("alsa-lib" ,alsa-lib)
 | 
			
		||||
       ("ffmpeg" ,ffmpeg-3.4)
 | 
			
		||||
       ("fftw" ,fftw)
 | 
			
		||||
       ("frei0r-plugins" ,frei0r-plugins)
 | 
			
		||||
       ("gdk-pixbuf" ,gdk-pixbuf)
 | 
			
		||||
       ("gtk+" ,gtk+-2)
 | 
			
		||||
       ("libxml2" ,libxml2)
 | 
			
		||||
       ("jack" ,jack-1)
 | 
			
		||||
       ("ladspa" ,ladspa)
 | 
			
		||||
       ("libsamplerate" ,libsamplerate)
 | 
			
		||||
       ("pulseaudio" ,pulseaudio)
 | 
			
		||||
       ("qtbase" ,qtbase)
 | 
			
		||||
       ("qtsvg" ,qtsvg)
 | 
			
		||||
       ("sdl" ,sdl)
 | 
			
		||||
       ("sox" ,sox)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -346,11 +346,10 @@ shader compilation.")
 | 
			
		|||
      (license license:asl2.0))))
 | 
			
		||||
 | 
			
		||||
(define-public vkd3d
 | 
			
		||||
  (let ((commit "020c119e2da0786d8be0615cff961c190b00d62d") ; Release 1.0.
 | 
			
		||||
        (revision "0"))
 | 
			
		||||
  (let ((commit "ecda316ef54d70bf1b3e860755241bb75873e53f")) ; Release 1.1.
 | 
			
		||||
    (package
 | 
			
		||||
     (name "vkd3d")
 | 
			
		||||
     (version "1.0")
 | 
			
		||||
     (version "1.1")
 | 
			
		||||
     (source
 | 
			
		||||
      (origin
 | 
			
		||||
       (method git-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -359,7 +358,7 @@ shader compilation.")
 | 
			
		|||
             (commit commit)))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "084svxhigs8r0725jv6gs7wwrxb9x4igyg5bgvgpcfw4aq0k69gn"))
 | 
			
		||||
         "05a28kspy8gzng181w28zjqdb3pj2ss83b0lwnppxbcdzsz7rvrf"))
 | 
			
		||||
       (file-name (string-append name "-" version "-checkout"))))
 | 
			
		||||
     (build-system gnu-build-system)
 | 
			
		||||
     (arguments
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -225,7 +225,7 @@ integrate Windows applications into your desktop.")
 | 
			
		|||
(define-public wine-staging-patchset-data
 | 
			
		||||
  (package
 | 
			
		||||
   (name "wine-staging-patchset-data")
 | 
			
		||||
   (version "3.17")
 | 
			
		||||
   (version "3.18")
 | 
			
		||||
   (source
 | 
			
		||||
    (origin
 | 
			
		||||
      (method git-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -235,7 +235,7 @@ integrate Windows applications into your desktop.")
 | 
			
		|||
      (file-name (git-file-name name version))
 | 
			
		||||
      (sha256
 | 
			
		||||
       (base32
 | 
			
		||||
        "1ds9q90xjg59ikic98kqkhmijnqx4yplvwsm6rav4mx72yci7d4w"))))
 | 
			
		||||
        "18g1lmqzkc7ngppynimfvza1gkdhqlnjbvnckmaws847ns4i0kzp"))))
 | 
			
		||||
   (build-system trivial-build-system)
 | 
			
		||||
   (native-inputs
 | 
			
		||||
    `(("bash" ,bash)
 | 
			
		||||
| 
						 | 
				
			
			@ -281,7 +281,7 @@ integrate Windows applications into your desktop.")
 | 
			
		|||
              (file-name (string-append name "-" version ".tar.xz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "08fcziadw40153a9rv630m7iz6ipfzylms5y191z4sj2vvhy5vac"))))
 | 
			
		||||
                "0xqs76hxcym8nb95r7l72xx0msbscp7fhkr1wrv4r0923d5x9s4v"))))
 | 
			
		||||
    (inputs `(("autoconf" ,autoconf) ; for autoreconf
 | 
			
		||||
              ("gtk+" ,gtk+)
 | 
			
		||||
              ("libva" ,libva)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1497,3 +1497,27 @@ before the system goes to sleep.")
 | 
			
		|||
     "Pyperclip is a clipboard module for Python, handling copy/pasting from
 | 
			
		||||
the X11 clipboard")
 | 
			
		||||
    (license license:bsd-3)))
 | 
			
		||||
 | 
			
		||||
(define-public numlockx
 | 
			
		||||
  (package
 | 
			
		||||
    (name "numlockx")
 | 
			
		||||
    (version "1.2")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method git-fetch)
 | 
			
		||||
              (uri (git-reference
 | 
			
		||||
                    ;; It seems that upstream is gone.
 | 
			
		||||
                    (url "https://github.com/rg3/numlockx")
 | 
			
		||||
                    (commit version)))
 | 
			
		||||
              (file-name (git-file-name name version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1w49fayhwzn5rx0z1q2lrvm7z8jrd34lgb89p853a024bixc3cf2"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("xorg-server" ,xorg-server)))
 | 
			
		||||
    (home-page "https://github.com/rg3/numlockx")
 | 
			
		||||
    (synopsis "Turns on the numlock key in X11")
 | 
			
		||||
    (description "@command{numlockx} is a tiny program that lets you turn on
 | 
			
		||||
the numlock key in X11.  It can be called from the user's initialization files
 | 
			
		||||
to automatically turn it on on login.")
 | 
			
		||||
    (license license:expat)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -786,14 +786,14 @@ server, collect the answer, and finally decoding the XML to Perl.")
 | 
			
		|||
(define-public perl-xml-feed
 | 
			
		||||
  (package
 | 
			
		||||
    (name "perl-xml-feed")
 | 
			
		||||
    (version "0.54")
 | 
			
		||||
    (version "0.55")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "mirror://cpan/authors/id/D/DA/DAVECROSS/"
 | 
			
		||||
                                  "XML-Feed-" version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0ydyi7wdhv8325h7j27vrlwiqxll56sn8zy5nbzhpma3nrf61bci"))))
 | 
			
		||||
                "0am345qzy5rxxnzh13l6p18a7drgkzmmlkgrgl4cv3b2j1pwls3i"))))
 | 
			
		||||
    (build-system perl-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:tests? #f))                    ; tests require internet connection
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5910,7 +5910,7 @@ basic eye-candy effects.")
 | 
			
		|||
(define-public xpra
 | 
			
		||||
  (package
 | 
			
		||||
    (name "xpra")
 | 
			
		||||
    (version "2.3.4")
 | 
			
		||||
    (version "2.4")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -5918,7 +5918,7 @@ basic eye-candy effects.")
 | 
			
		|||
                           version ".tar.xz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "0wa3kx54himy3i1b2801hlzfilh3cf4kjk40k1cjl0ds28m5hija"))))
 | 
			
		||||
         "0blzx231sr1ri1zwzpwzf611sq9104bv3ccvnap9pbvfrc05sfwx"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (inputs `(("ffmpeg" ,ffmpeg)
 | 
			
		||||
              ("flac" ,flac)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@
 | 
			
		|||
;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 | 
			
		||||
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 | 
			
		||||
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 | 
			
		||||
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 | 
			
		||||
;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
 | 
			
		||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 | 
			
		||||
;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
 | 
			
		||||
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 | 
			
		||||
| 
						 | 
				
			
			@ -101,6 +101,16 @@
 | 
			
		|||
            modem-manager-configuration
 | 
			
		||||
            modem-manager-configuration?
 | 
			
		||||
            modem-manager-service-type
 | 
			
		||||
 | 
			
		||||
            <wpa-supplicant-configuration>
 | 
			
		||||
            wpa-supplicant-configuration
 | 
			
		||||
            wpa-supplicant-configuration?
 | 
			
		||||
            wpa-supplicant-configuration-wpa-supplicant
 | 
			
		||||
            wpa-supplicant-configuration-pid-file
 | 
			
		||||
            wpa-supplicant-configuration-dbus?
 | 
			
		||||
            wpa-supplicant-configuration-interface
 | 
			
		||||
            wpa-supplicant-configuration-config-file
 | 
			
		||||
            wpa-supplicant-configuration-extra-options
 | 
			
		||||
            wpa-supplicant-service-type
 | 
			
		||||
 | 
			
		||||
            openvswitch-service-type
 | 
			
		||||
| 
						 | 
				
			
			@ -1019,28 +1029,62 @@ networking."))))
 | 
			
		|||
;;; WPA supplicant
 | 
			
		||||
;;;
 | 
			
		||||
 | 
			
		||||
(define-record-type* <wpa-supplicant-configuration>
 | 
			
		||||
  wpa-supplicant-configuration make-wpa-supplicant-configuration
 | 
			
		||||
  wpa-supplicant-configuration?
 | 
			
		||||
  (wpa-supplicant     wpa-supplicant-configuration-wpa-supplicant ;<package>
 | 
			
		||||
                      (default wpa-supplicant))
 | 
			
		||||
  (pid-file           wpa-supplicant-configuration-pid-file       ;string
 | 
			
		||||
                      (default "/var/run/wpa_supplicant.pid"))
 | 
			
		||||
  (dbus?              wpa-supplicant-configuration-dbus?          ;Boolean
 | 
			
		||||
                      (default #t))
 | 
			
		||||
  (interface          wpa-supplicant-configuration-interface      ;#f | string
 | 
			
		||||
                      (default #f))
 | 
			
		||||
  (config-file        wpa-supplicant-configuration-config-file    ;#f | <file-like>
 | 
			
		||||
                      (default #f))
 | 
			
		||||
  (extra-options      wpa-supplicant-configuration-extra-options  ;list of strings
 | 
			
		||||
                      (default '())))
 | 
			
		||||
 | 
			
		||||
(define (wpa-supplicant-shepherd-service wpa-supplicant)
 | 
			
		||||
  "Return a shepherd service for wpa_supplicant"
 | 
			
		||||
  (list (shepherd-service
 | 
			
		||||
         (documentation "Run WPA supplicant with dbus interface")
 | 
			
		||||
         (provision '(wpa-supplicant))
 | 
			
		||||
         (requirement '(user-processes dbus-system loopback))
 | 
			
		||||
         (start #~(make-forkexec-constructor
 | 
			
		||||
                   (list (string-append #$wpa-supplicant
 | 
			
		||||
                                        "/sbin/wpa_supplicant")
 | 
			
		||||
                         "-u" "-B" "-P/var/run/wpa_supplicant.pid")
 | 
			
		||||
                   #:pid-file "/var/run/wpa_supplicant.pid"))
 | 
			
		||||
         (stop #~(make-kill-destructor)))))
 | 
			
		||||
(define wpa-supplicant-shepherd-service
 | 
			
		||||
  (match-lambda
 | 
			
		||||
    (($ <wpa-supplicant-configuration> wpa-supplicant pid-file dbus? interface
 | 
			
		||||
                                       config-file extra-options)
 | 
			
		||||
     (list (shepherd-service
 | 
			
		||||
            (documentation "Run the WPA supplicant daemon")
 | 
			
		||||
            (provision '(wpa-supplicant))
 | 
			
		||||
            (requirement '(user-processes dbus-system loopback))
 | 
			
		||||
            (start #~(make-forkexec-constructor
 | 
			
		||||
                      (list (string-append #$wpa-supplicant
 | 
			
		||||
                                           "/sbin/wpa_supplicant")
 | 
			
		||||
                            (string-append "-P" #$pid-file)
 | 
			
		||||
                            "-B"        ;run in background
 | 
			
		||||
                            #$@(if dbus?
 | 
			
		||||
                                   #~("-u")
 | 
			
		||||
                                   #~())
 | 
			
		||||
                            #$@(if interface
 | 
			
		||||
                                   #~(string-append "-i" #$interface)
 | 
			
		||||
                                   #~())
 | 
			
		||||
                            #$@(if config-file
 | 
			
		||||
                                   #~(string-append "-c" #$config-file)
 | 
			
		||||
                                   #~())
 | 
			
		||||
                            #$@extra-options)
 | 
			
		||||
                      #:pid-file #$pid-file))
 | 
			
		||||
            (stop #~(make-kill-destructor)))))))
 | 
			
		||||
 | 
			
		||||
(define wpa-supplicant-service-type
 | 
			
		||||
  (service-type (name 'wpa-supplicant)
 | 
			
		||||
                (extensions
 | 
			
		||||
                 (list (service-extension shepherd-root-service-type
 | 
			
		||||
                                          wpa-supplicant-shepherd-service)
 | 
			
		||||
                       (service-extension dbus-root-service-type list)
 | 
			
		||||
                       (service-extension profile-service-type list)))
 | 
			
		||||
                (default-value wpa-supplicant)))
 | 
			
		||||
  (let ((config->package
 | 
			
		||||
         (match-lambda
 | 
			
		||||
           (($ <wpa-supplicant-configuration> wpa-supplicant)
 | 
			
		||||
            (list wpa-supplicant)))))
 | 
			
		||||
    (service-type (name 'wpa-supplicant)
 | 
			
		||||
                  (extensions
 | 
			
		||||
                   (list (service-extension shepherd-root-service-type
 | 
			
		||||
                                            wpa-supplicant-shepherd-service)
 | 
			
		||||
                         (service-extension dbus-root-service-type config->package)
 | 
			
		||||
                         (service-extension profile-service-type config->package)))
 | 
			
		||||
                  (description "Run the WPA Supplicant daemon, a service that
 | 
			
		||||
implements authentication, key negotiation and more for wireless networks.")
 | 
			
		||||
                  (default-value (wpa-supplicant-configuration)))))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,4 +47,5 @@ the query."
 | 
			
		|||
(define (json-fetch-alist url)
 | 
			
		||||
  "Return an alist representation of the JSON resource URL, or #f if URL
 | 
			
		||||
returns 403 or 404."
 | 
			
		||||
  (hash-table->alist (json-fetch url)))
 | 
			
		||||
  (and=> (json-fetch url)
 | 
			
		||||
         hash-table->alist))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,7 +28,8 @@
 | 
			
		|||
  #:use-module ((guix config) #:select (%state-directory))
 | 
			
		||||
  #:use-module ((guix utils) #:hide (package-name->name+version))
 | 
			
		||||
  #:use-module ((guix build utils)
 | 
			
		||||
                #:select (package-name->name+version))
 | 
			
		||||
                #:select (package-name->name+version mkdir-p))
 | 
			
		||||
  #:use-module (guix i18n)
 | 
			
		||||
  #:use-module (guix records)
 | 
			
		||||
  #:use-module (guix packages)
 | 
			
		||||
  #:use-module (guix derivations)
 | 
			
		||||
| 
						 | 
				
			
			@ -127,6 +128,7 @@
 | 
			
		|||
            %user-profile-directory
 | 
			
		||||
            %profile-directory
 | 
			
		||||
            %current-profile
 | 
			
		||||
            ensure-profile-directory
 | 
			
		||||
            canonicalize-profile
 | 
			
		||||
            user-friendly-profile))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1249,7 +1251,7 @@ the entries in MANIFEST."
 | 
			
		|||
  (define config.scm
 | 
			
		||||
    (scheme-file "config.scm"
 | 
			
		||||
                 #~(begin
 | 
			
		||||
                     (define-module (guix config)
 | 
			
		||||
                     (define-module #$'(guix config) ;placate Geiser
 | 
			
		||||
                       #:export (%libz))
 | 
			
		||||
 | 
			
		||||
                     (define %libz
 | 
			
		||||
| 
						 | 
				
			
			@ -1610,28 +1612,73 @@ because the NUMBER is zero.)"
 | 
			
		|||
  ;; coexist with Nix profiles.
 | 
			
		||||
  (string-append %profile-directory "/guix-profile"))
 | 
			
		||||
 | 
			
		||||
(define (canonicalize-profile profile)
 | 
			
		||||
  "If PROFILE is %USER-PROFILE-DIRECTORY, return %CURRENT-PROFILE.  Otherwise
 | 
			
		||||
return PROFILE unchanged.  The goal is to treat '-p ~/.guix-profile' as if
 | 
			
		||||
'-p' was omitted."                           ; see <http://bugs.gnu.org/17939>
 | 
			
		||||
(define (ensure-profile-directory)
 | 
			
		||||
  "Attempt to create /…/profiles/per-user/$USER if needed."
 | 
			
		||||
  (let ((s (stat %profile-directory #f)))
 | 
			
		||||
    (unless (and s (eq? 'directory (stat:type s)))
 | 
			
		||||
      (catch 'system-error
 | 
			
		||||
        (lambda ()
 | 
			
		||||
          (mkdir-p %profile-directory))
 | 
			
		||||
        (lambda args
 | 
			
		||||
          ;; Often, we cannot create %PROFILE-DIRECTORY because its
 | 
			
		||||
          ;; parent directory is root-owned and we're running
 | 
			
		||||
          ;; unprivileged.
 | 
			
		||||
          (raise (condition
 | 
			
		||||
                  (&message
 | 
			
		||||
                   (message
 | 
			
		||||
                    (format #f
 | 
			
		||||
                            (G_ "while creating directory `~a': ~a")
 | 
			
		||||
                            %profile-directory
 | 
			
		||||
                            (strerror (system-error-errno args)))))
 | 
			
		||||
                  (&fix-hint
 | 
			
		||||
                   (hint
 | 
			
		||||
                    (format #f (G_ "Please create the @file{~a} directory, \
 | 
			
		||||
with you as the owner.")
 | 
			
		||||
                            %profile-directory))))))))
 | 
			
		||||
 | 
			
		||||
  ;; Trim trailing slashes so that the basename comparison below works as
 | 
			
		||||
  ;; intended.
 | 
			
		||||
    ;; Bail out if it's not owned by the user.
 | 
			
		||||
    (unless (or (not s) (= (stat:uid s) (getuid)))
 | 
			
		||||
      (raise (condition
 | 
			
		||||
              (&message
 | 
			
		||||
               (message
 | 
			
		||||
                (format #f (G_ "directory `~a' is not owned by you")
 | 
			
		||||
                        %profile-directory)))
 | 
			
		||||
              (&fix-hint
 | 
			
		||||
               (hint
 | 
			
		||||
                (format #f (G_ "Please change the owner of @file{~a} \
 | 
			
		||||
to user ~s.")
 | 
			
		||||
                        %profile-directory (or (getenv "USER")
 | 
			
		||||
                                               (getenv "LOGNAME")
 | 
			
		||||
                                               (getuid))))))))))
 | 
			
		||||
 | 
			
		||||
(define (canonicalize-profile profile)
 | 
			
		||||
  "If PROFILE points to a profile in %PROFILE-DIRECTORY, return that.
 | 
			
		||||
Otherwise return PROFILE unchanged.  The goal is to treat '-p ~/.guix-profile'
 | 
			
		||||
as if '-p' was omitted."  ; see <http://bugs.gnu.org/17939>
 | 
			
		||||
  ;; Trim trailing slashes so 'readlink' can do its job.
 | 
			
		||||
  (let ((profile (string-trim-right profile #\/)))
 | 
			
		||||
    (if (and %user-profile-directory
 | 
			
		||||
             (string=? (canonicalize-path (dirname profile))
 | 
			
		||||
                       (dirname %user-profile-directory))
 | 
			
		||||
             (string=? (basename profile) (basename %user-profile-directory)))
 | 
			
		||||
        %current-profile
 | 
			
		||||
        profile)))
 | 
			
		||||
    (catch 'system-error
 | 
			
		||||
      (lambda ()
 | 
			
		||||
        (let ((target (readlink profile)))
 | 
			
		||||
          (if (string=? (dirname target) %profile-directory)
 | 
			
		||||
              target
 | 
			
		||||
              profile)))
 | 
			
		||||
      (const profile))))
 | 
			
		||||
 | 
			
		||||
(define %known-shorthand-profiles
 | 
			
		||||
  ;; Known shorthand forms for profiles that the user manipulates.
 | 
			
		||||
  (list (string-append (config-directory #:ensure? #f) "/current")
 | 
			
		||||
        %user-profile-directory))
 | 
			
		||||
 | 
			
		||||
(define (user-friendly-profile profile)
 | 
			
		||||
  "Return either ~/.guix-profile if that's what PROFILE refers to, directly or
 | 
			
		||||
indirectly, or PROFILE."
 | 
			
		||||
  (if (and %user-profile-directory
 | 
			
		||||
           (false-if-exception
 | 
			
		||||
            (string=? (readlink %user-profile-directory) profile)))
 | 
			
		||||
      %user-profile-directory
 | 
			
		||||
  "Return either ~/.guix-profile or ~/.config/guix/current if that's what
 | 
			
		||||
PROFILE refers to, directly or indirectly, or PROFILE."
 | 
			
		||||
  (or (find (lambda (shorthand)
 | 
			
		||||
              (and shorthand
 | 
			
		||||
                   (let ((target (false-if-exception
 | 
			
		||||
                                  (readlink shorthand))))
 | 
			
		||||
                     (and target (string=? target profile)))))
 | 
			
		||||
            %known-shorthand-profiles)
 | 
			
		||||
      profile))
 | 
			
		||||
 | 
			
		||||
;;; profiles.scm ends here
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,6 +26,7 @@
 | 
			
		|||
  #:use-module (guix monads)
 | 
			
		||||
  #:use-module (guix packages)
 | 
			
		||||
  #:use-module (guix derivations)
 | 
			
		||||
  #:use-module ((guix profiles) #:select (%profile-directory))
 | 
			
		||||
  #:use-module (srfi srfi-1)
 | 
			
		||||
  #:use-module (srfi srfi-19)
 | 
			
		||||
  #:use-module (srfi srfi-37)
 | 
			
		||||
| 
						 | 
				
			
			@ -169,8 +170,7 @@ Show what and how will/would be built."
 | 
			
		|||
 | 
			
		||||
    (define age
 | 
			
		||||
      (match (false-if-not-found
 | 
			
		||||
              (lstat (string-append (config-directory #:ensure? #f)
 | 
			
		||||
                                    "/current")))
 | 
			
		||||
              (lstat (string-append %profile-directory "/current-guix")))
 | 
			
		||||
        (#f    #f)
 | 
			
		||||
        (stat  (- (time-second (current-time time-utc))
 | 
			
		||||
                  (stat:mtime stat)))))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -395,6 +395,8 @@ options handled by 'set-build-options-from-command-line', and listed in
 | 
			
		|||
                     #:print-build-trace (assoc-ref opts 'print-build-trace?)
 | 
			
		||||
                     #:print-extended-build-trace?
 | 
			
		||||
                     (assoc-ref opts 'print-extended-build-trace?)
 | 
			
		||||
                     #:multiplexed-build-output?
 | 
			
		||||
                     (assoc-ref opts 'multiplexed-build-output?)
 | 
			
		||||
                     #:verbosity (assoc-ref opts 'verbosity)))
 | 
			
		||||
 | 
			
		||||
(define set-build-options-from-command-line*
 | 
			
		||||
| 
						 | 
				
			
			@ -505,6 +507,7 @@ options handled by 'set-build-options-from-command-line', and listed in
 | 
			
		|||
    (build-hook? . #t)
 | 
			
		||||
    (print-build-trace? . #t)
 | 
			
		||||
    (print-extended-build-trace? . #t)
 | 
			
		||||
    (multiplexed-build-output? . #t)
 | 
			
		||||
    (verbosity . 0)))
 | 
			
		||||
 | 
			
		||||
(define (show-help)
 | 
			
		||||
| 
						 | 
				
			
			@ -623,7 +626,7 @@ must be one of 'package', 'all', or 'transitive'~%")
 | 
			
		|||
  "Read the arguments from OPTS and return a list of high-level objects to
 | 
			
		||||
build---packages, gexps, derivations, and so on."
 | 
			
		||||
  (define (validate-type x)
 | 
			
		||||
    (unless (or (package? x) (derivation? x) (gexp? x) (procedure? x))
 | 
			
		||||
    (unless (or (derivation? x) (file-like? x) (gexp? x) (procedure? x))
 | 
			
		||||
      (leave (G_ "~s: not something we can build~%") x)))
 | 
			
		||||
 | 
			
		||||
  (define (ensure-list x)
 | 
			
		||||
| 
						 | 
				
			
			@ -700,6 +703,10 @@ package '~a' has no source~%")
 | 
			
		|||
                              (set-guile-for-build (default-guile))
 | 
			
		||||
                              (proc))
 | 
			
		||||
                            #:system system)))
 | 
			
		||||
                   ((? file-like? obj)
 | 
			
		||||
                    (list (run-with-store store
 | 
			
		||||
                            (lower-object obj system
 | 
			
		||||
                                          #:target (assoc-ref opts 'target)))))
 | 
			
		||||
                   ((? gexp? gexp)
 | 
			
		||||
                    (list (run-with-store store
 | 
			
		||||
                            (mbegin %store-monad
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -158,4 +158,4 @@ in the format specified by FMT."
 | 
			
		|||
        (#f
 | 
			
		||||
         (display-checkout-info format))
 | 
			
		||||
        (profile
 | 
			
		||||
         (display-profile-info profile format))))))
 | 
			
		||||
         (display-profile-info (canonicalize-profile profile) format))))))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -176,6 +176,7 @@ COMMAND or an interactive shell in that environment.\n"))
 | 
			
		|||
    (graft? . #t)
 | 
			
		||||
    (print-build-trace? . #t)
 | 
			
		||||
    (print-extended-build-trace? . #t)
 | 
			
		||||
    (multiplexed-build-output? . #t)
 | 
			
		||||
    (verbosity . 0)))
 | 
			
		||||
 | 
			
		||||
(define (tag-package-arg opts arg)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,6 +47,8 @@ Import and convert the CRAN package for PACKAGE-NAME.\n"))
 | 
			
		|||
  (display (G_ "
 | 
			
		||||
  -h, --help             display this help and exit"))
 | 
			
		||||
  (display (G_ "
 | 
			
		||||
  -r, --recursive        import packages recursively"))
 | 
			
		||||
  (display (G_ "
 | 
			
		||||
  -V, --version          display version information and exit"))
 | 
			
		||||
  (newline)
 | 
			
		||||
  (show-bug-report-information))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -541,6 +541,7 @@ please email '~a'~%")
 | 
			
		|||
    (graft? . #t)
 | 
			
		||||
    (print-build-trace? . #t)
 | 
			
		||||
    (print-extended-build-trace? . #t)
 | 
			
		||||
    (multiplexed-build-output? . #t)
 | 
			
		||||
    (verbosity . 0)
 | 
			
		||||
    (symlinks . ())
 | 
			
		||||
    (compressor . ,(first %compressors))))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -68,50 +68,14 @@
 | 
			
		|||
 | 
			
		||||
(define (ensure-default-profile)
 | 
			
		||||
  "Ensure the default profile symlink and directory exist and are writable."
 | 
			
		||||
 | 
			
		||||
  (define (rtfm)
 | 
			
		||||
    (format (current-error-port)
 | 
			
		||||
            (G_ "Try \"info '(guix) Invoking guix package'\" for \
 | 
			
		||||
more information.~%"))
 | 
			
		||||
    (exit 1))
 | 
			
		||||
  (ensure-profile-directory)
 | 
			
		||||
 | 
			
		||||
  ;; Create ~/.guix-profile if it doesn't exist yet.
 | 
			
		||||
  (when (and %user-profile-directory
 | 
			
		||||
             %current-profile
 | 
			
		||||
             (not (false-if-exception
 | 
			
		||||
                   (lstat %user-profile-directory))))
 | 
			
		||||
    (symlink %current-profile %user-profile-directory))
 | 
			
		||||
 | 
			
		||||
  (let ((s (stat %profile-directory #f)))
 | 
			
		||||
    ;; Attempt to create /…/profiles/per-user/$USER if needed.
 | 
			
		||||
    (unless (and s (eq? 'directory (stat:type s)))
 | 
			
		||||
      (catch 'system-error
 | 
			
		||||
        (lambda ()
 | 
			
		||||
          (mkdir-p %profile-directory))
 | 
			
		||||
        (lambda args
 | 
			
		||||
          ;; Often, we cannot create %PROFILE-DIRECTORY because its
 | 
			
		||||
          ;; parent directory is root-owned and we're running
 | 
			
		||||
          ;; unprivileged.
 | 
			
		||||
          (format (current-error-port)
 | 
			
		||||
                  (G_ "error: while creating directory `~a': ~a~%")
 | 
			
		||||
                  %profile-directory
 | 
			
		||||
                  (strerror (system-error-errno args)))
 | 
			
		||||
          (format (current-error-port)
 | 
			
		||||
                  (G_ "Please create the `~a' directory, with you as the owner.~%")
 | 
			
		||||
                  %profile-directory)
 | 
			
		||||
          (rtfm))))
 | 
			
		||||
 | 
			
		||||
    ;; Bail out if it's not owned by the user.
 | 
			
		||||
    (unless (or (not s) (= (stat:uid s) (getuid)))
 | 
			
		||||
      (format (current-error-port)
 | 
			
		||||
              (G_ "error: directory `~a' is not owned by you~%")
 | 
			
		||||
              %profile-directory)
 | 
			
		||||
      (format (current-error-port)
 | 
			
		||||
              (G_ "Please change the owner of `~a' to user ~s.~%")
 | 
			
		||||
              %profile-directory (or (getenv "USER")
 | 
			
		||||
                                     (getenv "LOGNAME")
 | 
			
		||||
                                     (getuid)))
 | 
			
		||||
      (rtfm))))
 | 
			
		||||
    (symlink %current-profile %user-profile-directory)))
 | 
			
		||||
 | 
			
		||||
(define (delete-generations store profile generations)
 | 
			
		||||
  "Delete GENERATIONS from PROFILE.
 | 
			
		||||
| 
						 | 
				
			
			@ -332,7 +296,8 @@ ENTRIES, a list of manifest entries, in the context of PROFILE."
 | 
			
		|||
    (substitutes? . #t)
 | 
			
		||||
    (build-hook? . #t)
 | 
			
		||||
    (print-build-trace? . #t)
 | 
			
		||||
    (print-extended-build-trace? . #t)))
 | 
			
		||||
    (print-extended-build-trace? . #t)
 | 
			
		||||
    (multiplexed-build-output? . #t)))
 | 
			
		||||
 | 
			
		||||
(define (show-help)
 | 
			
		||||
  (display (G_ "Usage: guix package [OPTION]...
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,6 +64,7 @@
 | 
			
		|||
    (build-hook? . #t)
 | 
			
		||||
    (print-build-trace? . #t)
 | 
			
		||||
    (print-extended-build-trace? . #t)
 | 
			
		||||
    (multiplexed-build-output? . #t)
 | 
			
		||||
    (graft? . #t)
 | 
			
		||||
    (verbosity . 0)))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -225,6 +226,60 @@ Download and deploy the latest version of Guix.\n"))
 | 
			
		|||
    (lambda (key err)
 | 
			
		||||
      (report-git-error err))))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
;;;
 | 
			
		||||
;;; Profile.
 | 
			
		||||
;;;
 | 
			
		||||
 | 
			
		||||
(define %current-profile
 | 
			
		||||
  ;; The "real" profile under /var/guix.
 | 
			
		||||
  (string-append %profile-directory "/current-guix"))
 | 
			
		||||
 | 
			
		||||
(define %user-profile-directory
 | 
			
		||||
  ;; The user-friendly name of %CURRENT-PROFILE.
 | 
			
		||||
  (string-append (config-directory #:ensure? #f) "/current"))
 | 
			
		||||
 | 
			
		||||
(define (migrate-generations profile directory)
 | 
			
		||||
  "Migrate the generations of PROFILE to DIRECTORY."
 | 
			
		||||
  (format (current-error-port)
 | 
			
		||||
          (G_ "Migrating profile generations to '~a'...~%")
 | 
			
		||||
          %profile-directory)
 | 
			
		||||
  (let ((current (generation-number profile)))
 | 
			
		||||
    (for-each (lambda (generation)
 | 
			
		||||
                (let ((source (generation-file-name profile generation))
 | 
			
		||||
                      (target (string-append directory "/current-guix-"
 | 
			
		||||
                                             (number->string generation)
 | 
			
		||||
                                             "-link")))
 | 
			
		||||
                  ;; Note: Don't use 'rename-file' as SOURCE and TARGET might
 | 
			
		||||
                  ;; live on different file systems.
 | 
			
		||||
                  (symlink (readlink source) target)
 | 
			
		||||
                  (delete-file source)))
 | 
			
		||||
              (profile-generations profile))
 | 
			
		||||
    (symlink (string-append "current-guix-"
 | 
			
		||||
                            (number->string current) "-link")
 | 
			
		||||
             (string-append directory "/current-guix"))))
 | 
			
		||||
 | 
			
		||||
(define (ensure-default-profile)
 | 
			
		||||
  (ensure-profile-directory)
 | 
			
		||||
 | 
			
		||||
  ;; In 0.15.0+ we'd create ~/.config/guix/current-[0-9]*-link symlinks.  Move
 | 
			
		||||
  ;; them to %PROFILE-DIRECTORY.
 | 
			
		||||
  (unless (string=? %profile-directory
 | 
			
		||||
                    (dirname (canonicalize-profile %user-profile-directory)))
 | 
			
		||||
    (migrate-generations %user-profile-directory %profile-directory))
 | 
			
		||||
 | 
			
		||||
  ;; Make sure ~/.config/guix/current points to /var/guix/profiles/….
 | 
			
		||||
  (let ((link %user-profile-directory))
 | 
			
		||||
    (unless (equal? (false-if-exception (readlink link))
 | 
			
		||||
                    %current-profile)
 | 
			
		||||
      (catch 'system-error
 | 
			
		||||
        (lambda ()
 | 
			
		||||
          (false-if-exception (delete-file link))
 | 
			
		||||
          (symlink %current-profile link))
 | 
			
		||||
        (lambda args
 | 
			
		||||
          (leave (G_ "while creating symlink '~a': ~a~%")
 | 
			
		||||
                 link (strerror (system-error-errno args))))))))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
;;;
 | 
			
		||||
;;; Queries.
 | 
			
		||||
| 
						 | 
				
			
			@ -341,11 +396,8 @@ and ALIST2 differ, display HEADING upfront."
 | 
			
		|||
  (display-new/upgraded-packages (package-alist gen1)
 | 
			
		||||
                                 (package-alist gen2)))
 | 
			
		||||
 | 
			
		||||
(define (process-query opts)
 | 
			
		||||
  "Process any query specified by OPTS."
 | 
			
		||||
  (define profile
 | 
			
		||||
    (string-append (config-directory) "/current"))
 | 
			
		||||
 | 
			
		||||
(define (process-query opts profile)
 | 
			
		||||
  "Process any query on PROFILE specified by OPTS."
 | 
			
		||||
  (match (assoc-ref opts 'query)
 | 
			
		||||
    (('list-generations pattern)
 | 
			
		||||
     (define (list-generations profile numbers)
 | 
			
		||||
| 
						 | 
				
			
			@ -441,11 +493,10 @@ Use '~/.config/guix/channels.scm' instead."))
 | 
			
		|||
                                          (list %default-options)))
 | 
			
		||||
            (cache    (string-append (cache-directory) "/pull"))
 | 
			
		||||
            (channels (channel-list opts))
 | 
			
		||||
            (profile  (or (assoc-ref opts 'profile)
 | 
			
		||||
                          (string-append (config-directory) "/current"))))
 | 
			
		||||
 | 
			
		||||
            (profile  (or (assoc-ref opts 'profile) %current-profile)))
 | 
			
		||||
       (ensure-default-profile)
 | 
			
		||||
       (cond ((assoc-ref opts 'query)
 | 
			
		||||
              (process-query opts))
 | 
			
		||||
              (process-query opts profile))
 | 
			
		||||
             ((assoc-ref opts 'dry-run?)
 | 
			
		||||
              #t)                                 ;XXX: not very useful
 | 
			
		||||
             (else
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1082,6 +1082,7 @@ Some ACTIONS support additional ARGS.\n"))
 | 
			
		|||
    (build-hook? . #t)
 | 
			
		||||
    (print-build-trace? . #t)
 | 
			
		||||
    (print-extended-build-trace? . #t)
 | 
			
		||||
    (multiplexed-build-output? . #t)
 | 
			
		||||
    (graft? . #t)
 | 
			
		||||
    (verbosity . 0)
 | 
			
		||||
    (file-system-type . "ext4")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -904,7 +904,11 @@ is not supported."
 | 
			
		|||
        version))
 | 
			
		||||
 | 
			
		||||
  (define guile
 | 
			
		||||
    (guile-for-build guile-version))
 | 
			
		||||
    ;; When PULL-VERSION >= 1, produce a self-contained Guix and use Guile 2.2
 | 
			
		||||
    ;; unconditionally.
 | 
			
		||||
    (guile-for-build (if (>= pull-version 1)
 | 
			
		||||
                         "2.2"
 | 
			
		||||
                         guile-version)))
 | 
			
		||||
 | 
			
		||||
  (mbegin %store-monad
 | 
			
		||||
    (set-guile-for-build guile)
 | 
			
		||||
| 
						 | 
				
			
			@ -913,7 +917,8 @@ is not supported."
 | 
			
		|||
                               #:name (string-append "guix-"
 | 
			
		||||
                                                     (shorten version))
 | 
			
		||||
                               #:pull-version pull-version
 | 
			
		||||
                               #:guile-version guile-version
 | 
			
		||||
                               #:guile-version (if (>= pull-version 1)
 | 
			
		||||
                                                   "2.2" guile-version)
 | 
			
		||||
                               #:guile-for-build guile)))
 | 
			
		||||
      (if guix
 | 
			
		||||
          (lower-object guix)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										194
									
								
								guix/status.scm
									
										
									
									
									
								
							
							
						
						
									
										194
									
								
								guix/status.scm
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -34,6 +34,7 @@
 | 
			
		|||
  #:use-module (ice-9 match)
 | 
			
		||||
  #:use-module (ice-9 format)
 | 
			
		||||
  #:use-module (ice-9 binary-ports)
 | 
			
		||||
  #:autoload   (ice-9 rdelim) (read-string)
 | 
			
		||||
  #:use-module (rnrs bytevectors)
 | 
			
		||||
  #:use-module ((system foreign)
 | 
			
		||||
                #:select (bytevector->pointer pointer->bytevector))
 | 
			
		||||
| 
						 | 
				
			
			@ -115,7 +116,10 @@
 | 
			
		|||
    (string=? item (download-item download))))
 | 
			
		||||
 | 
			
		||||
(define* (compute-status event status
 | 
			
		||||
                         #:key (current-time current-time))
 | 
			
		||||
                         #:key
 | 
			
		||||
                         (current-time current-time)
 | 
			
		||||
                         (derivation-path->output-path
 | 
			
		||||
                          derivation-path->output-path))
 | 
			
		||||
  "Given EVENT, a tuple like (build-started \"/gnu/store/...-foo.drv\" ...),
 | 
			
		||||
compute a new status based on STATUS."
 | 
			
		||||
  (match event
 | 
			
		||||
| 
						 | 
				
			
			@ -141,8 +145,7 @@ compute a new status based on STATUS."
 | 
			
		|||
      (inherit status)
 | 
			
		||||
      (building (remove (lambda (drv)
 | 
			
		||||
                          (equal? (false-if-exception
 | 
			
		||||
                                   (derivation->output-path
 | 
			
		||||
                                    (read-derivation-from-file drv)))
 | 
			
		||||
                                   (derivation-path->output-path drv))
 | 
			
		||||
                                  item))
 | 
			
		||||
                        (build-status-building status)))
 | 
			
		||||
      (downloading (cons (download item uri #:size size
 | 
			
		||||
| 
						 | 
				
			
			@ -218,6 +221,12 @@ build traces\" such as \"@ download-progress\" traces."
 | 
			
		|||
  (and (current-store-protocol-version)
 | 
			
		||||
       (>= (current-store-protocol-version) #x162)))
 | 
			
		||||
 | 
			
		||||
(define (multiplexed-output-supported?)
 | 
			
		||||
  "Return true if the daemon supports \"multiplexed output\"--i.e., \"@
 | 
			
		||||
build-log\" traces."
 | 
			
		||||
  (and (current-store-protocol-version)
 | 
			
		||||
       (>= (current-store-protocol-version) #x163)))
 | 
			
		||||
 | 
			
		||||
(define spin!
 | 
			
		||||
  (let ((steps (circular-list "\\" "|" "/" "-")))
 | 
			
		||||
    (lambda (port)
 | 
			
		||||
| 
						 | 
				
			
			@ -312,14 +321,16 @@ addition to build events."
 | 
			
		|||
        (lambda (line)
 | 
			
		||||
          (spin! port))))
 | 
			
		||||
 | 
			
		||||
  (display "\r" port)                             ;erase the spinner
 | 
			
		||||
  (unless print-log?
 | 
			
		||||
    (display "\r" port))                          ;erase the spinner
 | 
			
		||||
  (match event
 | 
			
		||||
    (('build-started drv . _)
 | 
			
		||||
     (format port (info (G_ "building ~a...")) drv)
 | 
			
		||||
     (newline port))
 | 
			
		||||
    (('build-succeeded drv . _)
 | 
			
		||||
     (format port (success (G_ "successfully built ~a")) drv)
 | 
			
		||||
     (newline port)
 | 
			
		||||
     (when (or print-log? (not (extended-build-trace-supported?)))
 | 
			
		||||
       (format port (success (G_ "successfully built ~a")) drv)
 | 
			
		||||
       (newline port))
 | 
			
		||||
     (match (build-status-building status)
 | 
			
		||||
       (() #t)
 | 
			
		||||
       (ongoing                                   ;when max-jobs > 1
 | 
			
		||||
| 
						 | 
				
			
			@ -382,21 +393,28 @@ addition to build events."
 | 
			
		|||
  expected hash: ~a
 | 
			
		||||
  actual hash:   ~a~%"))
 | 
			
		||||
             expected actual))
 | 
			
		||||
    (('build-log line)
 | 
			
		||||
     ;; TODO: Better distinguish daemon messages and build log lines.
 | 
			
		||||
     (cond ((string-prefix? "substitute: " line)
 | 
			
		||||
            ;; The daemon prefixes early messages coming with 'guix
 | 
			
		||||
            ;; substitute' with "substitute:".  These are useful ("updating
 | 
			
		||||
            ;; substitutes from URL"), so let them through.
 | 
			
		||||
            (format port line)
 | 
			
		||||
            (force-output port))
 | 
			
		||||
           ((string-prefix? "waiting for locks" line)
 | 
			
		||||
            ;; This is when a derivation is already being built and we're just
 | 
			
		||||
            ;; waiting for the build to complete.
 | 
			
		||||
            (display (info (string-trim-right line)) port)
 | 
			
		||||
            (newline))
 | 
			
		||||
           (else
 | 
			
		||||
            (print-log-line line))))
 | 
			
		||||
    (('build-log pid line)
 | 
			
		||||
     (if (multiplexed-output-supported?)
 | 
			
		||||
         (if (not pid)
 | 
			
		||||
             (begin
 | 
			
		||||
               ;; LINE comes from the daemon, not from builders.  Let it
 | 
			
		||||
               ;; through.
 | 
			
		||||
               (display line port)
 | 
			
		||||
               (force-output port))
 | 
			
		||||
             (print-log-line line))
 | 
			
		||||
         (cond ((string-prefix? "substitute: " line)
 | 
			
		||||
                ;; The daemon prefixes early messages coming with 'guix
 | 
			
		||||
                ;; substitute' with "substitute:".  These are useful ("updating
 | 
			
		||||
                ;; substitutes from URL"), so let them through.
 | 
			
		||||
                (display line port)
 | 
			
		||||
                (force-output port))
 | 
			
		||||
               ((string-prefix? "waiting for locks" line)
 | 
			
		||||
                ;; This is when a derivation is already being built and we're just
 | 
			
		||||
                ;; waiting for the build to complete.
 | 
			
		||||
                (display (info (string-trim-right line)) port)
 | 
			
		||||
                (newline))
 | 
			
		||||
               (else
 | 
			
		||||
                (print-log-line line)))))
 | 
			
		||||
    (_
 | 
			
		||||
     event)))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -426,8 +444,43 @@ ON-CHANGE can display the build status, build events, etc."
 | 
			
		|||
;;; Build port.
 | 
			
		||||
;;;
 | 
			
		||||
 | 
			
		||||
(define %newline
 | 
			
		||||
  (char-set #\return #\newline))
 | 
			
		||||
(define (maybe-utf8->string bv)
 | 
			
		||||
  "Attempt to decode BV as UTF-8 string and return it.  Gracefully handle the
 | 
			
		||||
case where BV does not contain only valid UTF-8."
 | 
			
		||||
  (catch 'decoding-error
 | 
			
		||||
    (lambda ()
 | 
			
		||||
      (utf8->string bv))
 | 
			
		||||
    (lambda _
 | 
			
		||||
      ;; This is the sledgehammer but it's the only safe way we have to
 | 
			
		||||
      ;; properly handle this.  It's expensive but it's rarely needed.
 | 
			
		||||
      (let ((port (open-bytevector-input-port bv)))
 | 
			
		||||
        (set-port-encoding! port "UTF-8")
 | 
			
		||||
        (set-port-conversion-strategy! port 'substitute)
 | 
			
		||||
        (let ((str (read-string port)))
 | 
			
		||||
          (close-port port)
 | 
			
		||||
          str)))))
 | 
			
		||||
 | 
			
		||||
(define (bytevector-index bv number offset count)
 | 
			
		||||
  "Search for NUMBER in BV starting from OFFSET and reading up to COUNT bytes;
 | 
			
		||||
return the offset where NUMBER first occurs or #f if it could not be found."
 | 
			
		||||
  (let loop ((offset offset)
 | 
			
		||||
             (count count))
 | 
			
		||||
    (cond ((zero? count) #f)
 | 
			
		||||
          ((= (bytevector-u8-ref bv offset) number) offset)
 | 
			
		||||
          (else (loop (+ 1 offset) (- count 1))))))
 | 
			
		||||
 | 
			
		||||
(define (split-lines str)
 | 
			
		||||
  "Split STR into lines in a way that preserves newline characters."
 | 
			
		||||
  (let loop ((str str)
 | 
			
		||||
             (result '()))
 | 
			
		||||
    (if (string-null? str)
 | 
			
		||||
        (reverse result)
 | 
			
		||||
        (match (string-index str #\newline)
 | 
			
		||||
          (#f
 | 
			
		||||
           (loop "" (cons str result)))
 | 
			
		||||
          (index
 | 
			
		||||
           (loop (string-drop str (+ index 1))
 | 
			
		||||
                 (cons (string-take str (+ index 1)) result)))))))
 | 
			
		||||
 | 
			
		||||
(define* (build-event-output-port proc #:optional (seed (build-status)))
 | 
			
		||||
  "Return an output port for use as 'current-build-output-port' that calls
 | 
			
		||||
| 
						 | 
				
			
			@ -449,33 +502,83 @@ The second return value is a thunk to retrieve the current state."
 | 
			
		|||
    ;; Current state for PROC.
 | 
			
		||||
    seed)
 | 
			
		||||
 | 
			
		||||
  ;; When true, this represents the current state while reading a
 | 
			
		||||
  ;; "@ build-log" trace: the current builder PID, the previously-read
 | 
			
		||||
  ;; bytevectors, and the number of bytes that remain to be read.
 | 
			
		||||
  (define %build-output-pid #f)
 | 
			
		||||
  (define %build-output '())
 | 
			
		||||
  (define %build-output-left #f)
 | 
			
		||||
 | 
			
		||||
  (define (process-line line)
 | 
			
		||||
    (if (string-prefix? "@ " line)
 | 
			
		||||
        (match (string-tokenize (string-drop line 2))
 | 
			
		||||
          (((= string->symbol event-name) args ...)
 | 
			
		||||
           (set! %state
 | 
			
		||||
             (proc (cons event-name args)
 | 
			
		||||
                   %state))))
 | 
			
		||||
        (set! %state (proc (list 'build-log line)
 | 
			
		||||
                           %state))))
 | 
			
		||||
    (cond ((string-prefix? "@ " line)
 | 
			
		||||
           (match (string-tokenize (string-drop line 2))
 | 
			
		||||
             (("build-log" (= string->number pid) (= string->number len))
 | 
			
		||||
              (set! %build-output-pid pid)
 | 
			
		||||
              (set! %build-output '())
 | 
			
		||||
              (set! %build-output-left len))
 | 
			
		||||
             (((= string->symbol event-name) args ...)
 | 
			
		||||
              (set! %state
 | 
			
		||||
                (proc (cons event-name args)
 | 
			
		||||
                      %state)))))
 | 
			
		||||
          (else
 | 
			
		||||
           (set! %state (proc (list 'build-log #f line)
 | 
			
		||||
                              %state)))))
 | 
			
		||||
 | 
			
		||||
  (define (process-build-output pid output)
 | 
			
		||||
    ;; Transform OUTPUT in 'build-log' events or download events as generated
 | 
			
		||||
    ;; by extended build traces.
 | 
			
		||||
    (define (line->event line)
 | 
			
		||||
      (match (and (string-prefix? "@ " line)
 | 
			
		||||
                  (string-tokenize (string-drop line 2)))
 | 
			
		||||
        ((type . args)
 | 
			
		||||
         (if (or (string-prefix? "download-" type)
 | 
			
		||||
                 (string=? "build-remote" type))
 | 
			
		||||
             (cons (string->symbol type) args)
 | 
			
		||||
             `(build-log ,pid ,line)))
 | 
			
		||||
        (_
 | 
			
		||||
         `(build-log ,pid ,line))))
 | 
			
		||||
 | 
			
		||||
    (let* ((lines  (split-lines output))
 | 
			
		||||
           (events (map line->event lines)))
 | 
			
		||||
      (set! %state (fold proc %state events))))
 | 
			
		||||
 | 
			
		||||
  (define (bytevector-range bv offset count)
 | 
			
		||||
    (let ((ptr (bytevector->pointer bv offset)))
 | 
			
		||||
      (pointer->bytevector ptr count)))
 | 
			
		||||
 | 
			
		||||
  (define (write! bv offset count)
 | 
			
		||||
    (let loop ((str (utf8->string (bytevector-range bv offset count))))
 | 
			
		||||
      (match (string-index str %newline)
 | 
			
		||||
        ((? integer? cr)
 | 
			
		||||
         (let ((tail (string-take str (+ 1 cr))))
 | 
			
		||||
           (process-line (string-concatenate-reverse
 | 
			
		||||
                          (cons tail %fragments)))
 | 
			
		||||
           (set! %fragments '())
 | 
			
		||||
           (loop (string-drop str (+ 1 cr)))))
 | 
			
		||||
        (#f
 | 
			
		||||
         (unless (string-null? str)
 | 
			
		||||
           (set! %fragments (cons str %fragments)))
 | 
			
		||||
         count))))
 | 
			
		||||
    (if %build-output-pid
 | 
			
		||||
        (let ((keep (min count %build-output-left)))
 | 
			
		||||
          (set! %build-output
 | 
			
		||||
            (let ((bv* (make-bytevector keep)))
 | 
			
		||||
              (bytevector-copy! bv offset bv* 0 keep)
 | 
			
		||||
              (cons bv* %build-output)))
 | 
			
		||||
          (set! %build-output-left
 | 
			
		||||
            (- %build-output-left keep))
 | 
			
		||||
 | 
			
		||||
          (when (zero? %build-output-left)
 | 
			
		||||
            (process-build-output %build-output-pid
 | 
			
		||||
                                  (string-concatenate-reverse
 | 
			
		||||
                                   (map maybe-utf8->string %build-output))) ;XXX
 | 
			
		||||
            (set! %build-output '())
 | 
			
		||||
            (set! %build-output-pid #f))
 | 
			
		||||
          keep)
 | 
			
		||||
        (match (bytevector-index bv (char->integer #\newline)
 | 
			
		||||
                                 offset count)
 | 
			
		||||
          ((? integer? cr)
 | 
			
		||||
           (let* ((tail (maybe-utf8->string
 | 
			
		||||
                         (bytevector-range bv offset (- cr -1 offset))))
 | 
			
		||||
                  (line (string-concatenate-reverse
 | 
			
		||||
                         (cons tail %fragments))))
 | 
			
		||||
             (process-line line)
 | 
			
		||||
             (set! %fragments '())
 | 
			
		||||
             (- cr -1 offset)))
 | 
			
		||||
          (#f
 | 
			
		||||
           (unless (zero? count)
 | 
			
		||||
             (let ((str (maybe-utf8->string
 | 
			
		||||
                         (bytevector-range bv offset count))))
 | 
			
		||||
               (set! %fragments (cons str %fragments))))
 | 
			
		||||
           count))))
 | 
			
		||||
 | 
			
		||||
  (define port
 | 
			
		||||
    (make-custom-binary-output-port "filtering-input-port"
 | 
			
		||||
| 
						 | 
				
			
			@ -485,8 +588,9 @@ The second return value is a thunk to retrieve the current state."
 | 
			
		|||
 | 
			
		||||
  ;; The build port actually receives Unicode strings.
 | 
			
		||||
  (set-port-encoding! port "UTF-8")
 | 
			
		||||
  (setvbuf port (cond-expand (guile-2.2 'line) (else _IOLBF)))
 | 
			
		||||
 | 
			
		||||
  (cond-expand
 | 
			
		||||
    ((and guile-2 (not guile-2.2)) #t)
 | 
			
		||||
    (else (setvbuf port 'line)))
 | 
			
		||||
  (values port (lambda () %state)))
 | 
			
		||||
 | 
			
		||||
(define (call-with-status-report on-event thunk)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -155,7 +155,7 @@
 | 
			
		|||
            derivation-log-file
 | 
			
		||||
            log-file))
 | 
			
		||||
 | 
			
		||||
(define %protocol-version #x162)
 | 
			
		||||
(define %protocol-version #x163)
 | 
			
		||||
 | 
			
		||||
(define %worker-magic-1 #x6e697863)               ; "nixc"
 | 
			
		||||
(define %worker-magic-2 #x6478696f)               ; "dxio"
 | 
			
		||||
| 
						 | 
				
			
			@ -709,6 +709,15 @@ encoding conversion errors."
 | 
			
		|||
                            ;; disabled by default.
 | 
			
		||||
                            print-extended-build-trace?
 | 
			
		||||
 | 
			
		||||
                            ;; When true, the daemon prefixes builder output
 | 
			
		||||
                            ;; with "@ build-log" traces so we can
 | 
			
		||||
                            ;; distinguish it from daemon output, and we can
 | 
			
		||||
                            ;; distinguish each builder's output
 | 
			
		||||
                            ;; (PRINT-BUILD-TRACE must be true as well.)  The
 | 
			
		||||
                            ;; latter is particularly useful when
 | 
			
		||||
                            ;; MAX-BUILD-JOBS > 1.
 | 
			
		||||
                            multiplexed-build-output?
 | 
			
		||||
 | 
			
		||||
                            build-cores
 | 
			
		||||
                            (use-substitutes? #t)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -757,6 +766,10 @@ encoding conversion errors."
 | 
			
		|||
                           `(("print-extended-build-trace"
 | 
			
		||||
                              . ,(if print-extended-build-trace? "1" "0")))
 | 
			
		||||
                           '())
 | 
			
		||||
                     ,@(if multiplexed-build-output?
 | 
			
		||||
                           `(("multiplexed-build-output"
 | 
			
		||||
                              . ,(if multiplexed-build-output? "true" "false")))
 | 
			
		||||
                           '())
 | 
			
		||||
                     ,@(if timeout
 | 
			
		||||
                           `(("build-timeout" . ,(number->string timeout)))
 | 
			
		||||
                           '())
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1652,8 +1652,8 @@ HookReply DerivationGoal::tryBuildHook()
 | 
			
		|||
    worker.childStarted(shared_from_this(), hook->pid, fds, false, false);
 | 
			
		||||
 | 
			
		||||
    if (settings.printBuildTrace)
 | 
			
		||||
        printMsg(lvlError, format("@ build-started %1% - %2% %3%")
 | 
			
		||||
            % drvPath % drv.platform % logFile);
 | 
			
		||||
        printMsg(lvlError, format("@ build-started %1% - %2% %3% %4%")
 | 
			
		||||
            % drvPath % drv.platform % logFile % hook->pid);
 | 
			
		||||
 | 
			
		||||
    return rpAccept;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -2038,8 +2038,8 @@ void DerivationGoal::startBuilder()
 | 
			
		|||
    if (!msg.empty()) throw Error(msg);
 | 
			
		||||
 | 
			
		||||
    if (settings.printBuildTrace) {
 | 
			
		||||
        printMsg(lvlError, format("@ build-started %1% - %2% %3%")
 | 
			
		||||
            % drvPath % drv.platform % logFile);
 | 
			
		||||
        printMsg(lvlError, format("@ build-started %1% - %2% %3% %4%")
 | 
			
		||||
            % drvPath % drv.platform % logFile % pid);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -2736,6 +2736,19 @@ void DerivationGoal::deleteTmpDir(bool force)
 | 
			
		|||
 | 
			
		||||
void DerivationGoal::handleChildOutput(int fd, const string & data)
 | 
			
		||||
{
 | 
			
		||||
    string prefix;
 | 
			
		||||
 | 
			
		||||
    if (settings.multiplexedBuildOutput) {
 | 
			
		||||
	/* Print a prefix that allows clients to determine whether a message
 | 
			
		||||
	   comes from the daemon or from a build process, and in the latter
 | 
			
		||||
	   case, which build process it comes from.  The PID here matches the
 | 
			
		||||
	   one given in "@ build-started" traces; it's shorter that the
 | 
			
		||||
	   derivation file name, hence this choice.  */
 | 
			
		||||
	prefix = "@ build-log "
 | 
			
		||||
	    + std::to_string(pid < 0 ? hook->pid : pid)
 | 
			
		||||
	    + " " + std::to_string(data.size()) + "\n";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ((hook && fd == hook->builderOut.readSide) ||
 | 
			
		||||
        (!hook && fd == builderOut.readSide))
 | 
			
		||||
    {
 | 
			
		||||
| 
						 | 
				
			
			@ -2748,7 +2761,7 @@ void DerivationGoal::handleChildOutput(int fd, const string & data)
 | 
			
		|||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        if (verbosity >= settings.buildVerbosity)
 | 
			
		||||
            writeToStderr(data);
 | 
			
		||||
            writeToStderr(prefix + data);
 | 
			
		||||
 | 
			
		||||
	if (gzLogFile) {
 | 
			
		||||
	    if (data.size() > 0) {
 | 
			
		||||
| 
						 | 
				
			
			@ -2767,7 +2780,7 @@ void DerivationGoal::handleChildOutput(int fd, const string & data)
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    if (hook && fd == hook->fromHook.readSide)
 | 
			
		||||
        writeToStderr(data);
 | 
			
		||||
        writeToStderr(prefix + data);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,6 +36,7 @@ Settings::Settings()
 | 
			
		|||
    buildTimeout = 0;
 | 
			
		||||
    useBuildHook = true;
 | 
			
		||||
    printBuildTrace = false;
 | 
			
		||||
    multiplexedBuildOutput = false;
 | 
			
		||||
    reservedSize = 8 * 1024 * 1024;
 | 
			
		||||
    fsyncMetadata = true;
 | 
			
		||||
    useSQLiteWAL = true;
 | 
			
		||||
| 
						 | 
				
			
			@ -120,6 +121,7 @@ void Settings::update()
 | 
			
		|||
    _get(maxBuildJobs, "build-max-jobs");
 | 
			
		||||
    _get(buildCores, "build-cores");
 | 
			
		||||
    _get(thisSystem, "system");
 | 
			
		||||
    _get(multiplexedBuildOutput, "multiplexed-build-output");
 | 
			
		||||
    _get(maxSilentTime, "build-max-silent-time");
 | 
			
		||||
    _get(buildTimeout, "build-timeout");
 | 
			
		||||
    _get(reservedSize, "gc-reserved-space");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -127,7 +127,7 @@ struct Settings {
 | 
			
		|||
       a fixed format to allow its progress to be monitored.  Each
 | 
			
		||||
       line starts with a "@".  The following are defined:
 | 
			
		||||
 | 
			
		||||
       @ build-started <drvpath> <outpath> <system> <logfile>
 | 
			
		||||
       @ build-started <drvpath> <outpath> <system> <logfile> <pid>
 | 
			
		||||
       @ build-failed <drvpath> <outpath> <exitcode> <error text>
 | 
			
		||||
       @ build-succeeded <drvpath> <outpath>
 | 
			
		||||
       @ substituter-started <outpath> <substituter>
 | 
			
		||||
| 
						 | 
				
			
			@ -139,6 +139,13 @@ struct Settings {
 | 
			
		|||
       builders. */
 | 
			
		||||
    bool printBuildTrace;
 | 
			
		||||
 | 
			
		||||
    /* When true, 'buildDerivations' prefixes lines coming from builders so
 | 
			
		||||
       that clients know exactly which line comes from which builder, and
 | 
			
		||||
       which line comes from the daemon itself.  The prefix for data coming
 | 
			
		||||
       from builders is "log:PID:LEN:DATA" where PID uniquely identifies the
 | 
			
		||||
       builder (PID is given in "build-started" traces.)  */
 | 
			
		||||
    bool multiplexedBuildOutput;
 | 
			
		||||
 | 
			
		||||
    /* Amount of reserved space for the garbage collector
 | 
			
		||||
       (/nix/var/nix/db/reserved). */
 | 
			
		||||
    off_t reservedSize;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@ namespace nix {
 | 
			
		|||
#define WORKER_MAGIC_1 0x6e697863
 | 
			
		||||
#define WORKER_MAGIC_2 0x6478696f
 | 
			
		||||
 | 
			
		||||
#define PROTOCOL_VERSION 0x162
 | 
			
		||||
#define PROTOCOL_VERSION 0x163
 | 
			
		||||
#define GET_PROTOCOL_MAJOR(x) ((x) & 0xff00)
 | 
			
		||||
#define GET_PROTOCOL_MINOR(x) ((x) & 0x00ff)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -594,7 +594,7 @@ static void performOp(bool trusted, unsigned int clientVersion,
 | 
			
		|||
                if (name == "build-timeout" || name == "build-max-silent-time"
 | 
			
		||||
                    || name == "build-max-jobs" || name == "build-cores"
 | 
			
		||||
                    || name == "build-repeat"
 | 
			
		||||
                    || name == "use-ssh-substituter")
 | 
			
		||||
                    || name == "multiplexed-build-output")
 | 
			
		||||
                    settings.set(name, value);
 | 
			
		||||
                else
 | 
			
		||||
                    settings.set(trusted ? name : "untrusted-" + name, value);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,4 +41,5 @@ guix/status.scm
 | 
			
		|||
guix/http-client.scm
 | 
			
		||||
guix/nar.scm
 | 
			
		||||
guix/channels.scm
 | 
			
		||||
guix/profiles.scm
 | 
			
		||||
nix/nix-daemon/guix-daemon.cc
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -221,6 +221,10 @@ guix build -e "(begin
 | 
			
		|||
guix build -e '#~(mkdir #$output)' -d
 | 
			
		||||
guix build -e '#~(mkdir #$output)' -d | grep 'gexp\.drv'
 | 
			
		||||
 | 
			
		||||
# Same with a file-like object.
 | 
			
		||||
guix build -e '(computed-file "foo" #~(mkdir #$output))' -d
 | 
			
		||||
guix build -e '(computed-file "foo" #~(mkdir #$output))' -d | grep 'foo\.drv'
 | 
			
		||||
 | 
			
		||||
# Building from a package file.
 | 
			
		||||
cat > "$module_dir/package.scm"<<EOF
 | 
			
		||||
(use-modules (gnu))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,10 @@
 | 
			
		|||
  #:use-module (guix status)
 | 
			
		||||
  #:use-module (srfi srfi-1)
 | 
			
		||||
  #:use-module (srfi srfi-11)
 | 
			
		||||
  #:use-module (srfi srfi-64))
 | 
			
		||||
  #:use-module (srfi srfi-64)
 | 
			
		||||
  #:use-module (rnrs bytevectors)
 | 
			
		||||
  #:use-module (rnrs io ports)
 | 
			
		||||
  #:use-module (ice-9 match))
 | 
			
		||||
 | 
			
		||||
(test-begin "status")
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -112,4 +115,69 @@
 | 
			
		|||
      (display "@ substituter-succeeded baz\n" port)
 | 
			
		||||
      (list first (get-status)))))
 | 
			
		||||
 | 
			
		||||
(test-equal "build-output-port, UTF-8"
 | 
			
		||||
  '((build-log #f "lambda is λ!\n"))
 | 
			
		||||
  (let-values (((port get-status) (build-event-output-port cons '()))
 | 
			
		||||
               ((bv)              (string->utf8 "lambda is λ!\n")))
 | 
			
		||||
    (put-bytevector port bv)
 | 
			
		||||
    (force-output port)
 | 
			
		||||
    (get-status)))
 | 
			
		||||
 | 
			
		||||
(test-equal "current-build-output-port, UTF-8 + garbage"
 | 
			
		||||
  ;; What about a mixture of UTF-8 + garbage?
 | 
			
		||||
  (let ((replacement (cond-expand
 | 
			
		||||
                      ((and guile-2 (not guile-2.2)) "?")
 | 
			
		||||
                      (else "<22>"))))
 | 
			
		||||
    `((build-log #f ,(string-append "garbage: " replacement "lambda: λ\n"))))
 | 
			
		||||
  (let-values (((port get-status) (build-event-output-port cons '())))
 | 
			
		||||
    (display "garbage: " port)
 | 
			
		||||
    (put-bytevector port #vu8(128))
 | 
			
		||||
    (put-bytevector port (string->utf8 "lambda: λ\n"))
 | 
			
		||||
    (force-output port)
 | 
			
		||||
    (get-status)))
 | 
			
		||||
 | 
			
		||||
(test-equal "compute-status, multiplexed build output"
 | 
			
		||||
  (list (build-status
 | 
			
		||||
         (building '("foo.drv"))
 | 
			
		||||
         (downloading (list (download "bar" "http://example.org/bar"
 | 
			
		||||
                                      #:size 999
 | 
			
		||||
                                      #:start 'now))))
 | 
			
		||||
        (build-status
 | 
			
		||||
         (building '("foo.drv"))
 | 
			
		||||
         (downloading (list (download "bar" "http://example.org/bar"
 | 
			
		||||
                                      #:size 999
 | 
			
		||||
                                      #:transferred 42
 | 
			
		||||
                                      #:start 'now))))
 | 
			
		||||
        (build-status
 | 
			
		||||
         ;; XXX: Should "bar.drv" be present twice?
 | 
			
		||||
         (builds-completed '("bar.drv" "foo.drv"))
 | 
			
		||||
         (downloads-completed (list (download "bar" "http://example.org/bar"
 | 
			
		||||
                                              #:size 999
 | 
			
		||||
                                              #:transferred 999
 | 
			
		||||
                                              #:start 'now
 | 
			
		||||
                                              #:end 'now)))))
 | 
			
		||||
  (let-values (((port get-status)
 | 
			
		||||
                (build-event-output-port (lambda (event status)
 | 
			
		||||
                                           (compute-status event status
 | 
			
		||||
                                                           #:current-time
 | 
			
		||||
                                                           (const 'now)
 | 
			
		||||
                                                           #:derivation-path->output-path
 | 
			
		||||
                                                           (match-lambda
 | 
			
		||||
                                                             ("bar.drv" "bar")))))))
 | 
			
		||||
    (display "@ build-started foo.drv 121\n" port)
 | 
			
		||||
    (display "@ build-started bar.drv 144\n" port)
 | 
			
		||||
    (display "@ build-log 121 6\nHello!" port)
 | 
			
		||||
    (display "@ build-log 144 50
 | 
			
		||||
@ download-started bar http://example.org/bar 999\n" port)
 | 
			
		||||
    (let ((first (get-status)))
 | 
			
		||||
      (display "@ build-log 121 30\n@ build-started FAKE!.drv 555\n")
 | 
			
		||||
      (display "@ build-log 144 54
 | 
			
		||||
@ download-progress bar http://example.org/bar 999 42\n"
 | 
			
		||||
               port)
 | 
			
		||||
      (let ((second (get-status)))
 | 
			
		||||
        (display "@ download-succeeded bar http://example.org/bar 999\n" port)
 | 
			
		||||
        (display "@ build-succeeded foo.drv\n" port)
 | 
			
		||||
        (display "@ build-succeeded bar.drv\n" port)
 | 
			
		||||
        (list first second (get-status))))))
 | 
			
		||||
 | 
			
		||||
(test-end "status")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,6 +31,7 @@
 | 
			
		|||
  #:use-module (gnu packages)
 | 
			
		||||
  #:use-module (gnu packages bootstrap)
 | 
			
		||||
  #:use-module (ice-9 match)
 | 
			
		||||
  #:use-module (ice-9 regex)
 | 
			
		||||
  #:use-module (rnrs bytevectors)
 | 
			
		||||
  #:use-module (rnrs io ports)
 | 
			
		||||
  #:use-module (web uri)
 | 
			
		||||
| 
						 | 
				
			
			@ -1021,4 +1022,66 @@
 | 
			
		|||
                 (call-with-input-file (derivation->output-path drv2)
 | 
			
		||||
                   read))))))
 | 
			
		||||
 | 
			
		||||
(test-equal "multiplexed-build-output"
 | 
			
		||||
  '("Hello from first." "Hello from second.")
 | 
			
		||||
  (with-store store
 | 
			
		||||
    (let* ((build  (add-text-to-store store "build.sh"
 | 
			
		||||
                                      "echo Hello from $NAME.; echo > $out"))
 | 
			
		||||
           (bash   (add-to-store store "bash" #t "sha256"
 | 
			
		||||
                                 (search-bootstrap-binary "bash"
 | 
			
		||||
                                                          (%current-system))))
 | 
			
		||||
           (drv1   (derivation store "one" bash
 | 
			
		||||
                               `("-e" ,build)
 | 
			
		||||
                               #:inputs `((,bash) (,build))
 | 
			
		||||
                               #:env-vars `(("NAME" . "first")
 | 
			
		||||
                                            ("x" . ,(random-text)))))
 | 
			
		||||
           (drv2   (derivation store "two" bash
 | 
			
		||||
                               `("-e" ,build)
 | 
			
		||||
                               #:inputs `((,bash) (,build))
 | 
			
		||||
                               #:env-vars `(("NAME" . "second")
 | 
			
		||||
                                            ("x" . ,(random-text))))))
 | 
			
		||||
      (set-build-options store
 | 
			
		||||
                         #:print-build-trace #t
 | 
			
		||||
                         #:multiplexed-build-output? #t
 | 
			
		||||
                         #:max-build-jobs 10)
 | 
			
		||||
      (let ((port (open-output-string)))
 | 
			
		||||
        ;; Send the build log to PORT.
 | 
			
		||||
        (parameterize ((current-build-output-port port))
 | 
			
		||||
          (build-derivations store (list drv1 drv2)))
 | 
			
		||||
 | 
			
		||||
        ;; Retrieve the build log; make sure it contains valid "@ build-log"
 | 
			
		||||
        ;; traces that allow us to retrieve each builder's output (we assume
 | 
			
		||||
        ;; there's exactly one "build-output" trace for each builder, which is
 | 
			
		||||
        ;; reasonable.)
 | 
			
		||||
        (let* ((log     (get-output-string port))
 | 
			
		||||
               (started (fold-matches
 | 
			
		||||
                         (make-regexp "@ build-started ([^ ]+) - ([^ ]+) ([^ ]+) ([0-9]+)")
 | 
			
		||||
                         log '() cons))
 | 
			
		||||
               (done    (fold-matches
 | 
			
		||||
                         (make-regexp "@ build-succeeded (.*) - (.*) (.*) (.*)")
 | 
			
		||||
                         log '() cons))
 | 
			
		||||
               (output  (fold-matches
 | 
			
		||||
                         (make-regexp "@ build-log ([[:digit:]]+) ([[:digit:]]+)\n([A-Za-z .*]+)\n")
 | 
			
		||||
                         log '() cons))
 | 
			
		||||
               (drv-pid (lambda (name)
 | 
			
		||||
                          (lambda (m)
 | 
			
		||||
                            (let ((drv (match:substring m 1))
 | 
			
		||||
                                  (pid (string->number
 | 
			
		||||
                                        (match:substring m 4))))
 | 
			
		||||
                              (and (string-suffix? name drv) pid)))))
 | 
			
		||||
               (pid-log (lambda (pid)
 | 
			
		||||
                          (lambda (m)
 | 
			
		||||
                            (let ((n   (string->number
 | 
			
		||||
                                        (match:substring m 1)))
 | 
			
		||||
                                  (len (string->number
 | 
			
		||||
                                        (match:substring m 2)))
 | 
			
		||||
                                  (str (match:substring m 3)))
 | 
			
		||||
                              (and (= pid n)
 | 
			
		||||
                                   (= (string-length str) (- len 1))
 | 
			
		||||
                                   str)))))
 | 
			
		||||
               (pid1    (any (drv-pid "one.drv") started))
 | 
			
		||||
               (pid2    (any (drv-pid "two.drv") started)))
 | 
			
		||||
          (list (any (pid-log pid1) output)
 | 
			
		||||
                (any (pid-log pid2) output)))))))
 | 
			
		||||
 | 
			
		||||
(test-end "store")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue