Merge branch 'master' into core-updates
This commit is contained in:
		
						commit
						09ec508a4c
					
				
					 184 changed files with 27612 additions and 1722 deletions
				
			
		
							
								
								
									
										15
									
								
								Makefile.am
									
										
									
									
									
								
							
							
						
						
									
										15
									
								
								Makefile.am
									
										
									
									
									
								
							| 
						 | 
					@ -56,6 +56,7 @@ MODULES =					\
 | 
				
			||||||
  guix/graph.scm				\
 | 
					  guix/graph.scm				\
 | 
				
			||||||
  guix/cve.scm					\
 | 
					  guix/cve.scm					\
 | 
				
			||||||
  guix/build-system.scm				\
 | 
					  guix/build-system.scm				\
 | 
				
			||||||
 | 
					  guix/build-system/ant.scm			\
 | 
				
			||||||
  guix/build-system/cmake.scm			\
 | 
					  guix/build-system/cmake.scm			\
 | 
				
			||||||
  guix/build-system/emacs.scm			\
 | 
					  guix/build-system/emacs.scm			\
 | 
				
			||||||
  guix/build-system/glib-or-gtk.scm		\
 | 
					  guix/build-system/glib-or-gtk.scm		\
 | 
				
			||||||
| 
						 | 
					@ -75,6 +76,7 @@ MODULES =					\
 | 
				
			||||||
  guix/cvs-download.scm				\
 | 
					  guix/cvs-download.scm				\
 | 
				
			||||||
  guix/svn-download.scm				\
 | 
					  guix/svn-download.scm				\
 | 
				
			||||||
  guix/ui.scm					\
 | 
					  guix/ui.scm					\
 | 
				
			||||||
 | 
					  guix/build/ant-build-system.scm		\
 | 
				
			||||||
  guix/build/download.scm			\
 | 
					  guix/build/download.scm			\
 | 
				
			||||||
  guix/build/cmake-build-system.scm		\
 | 
					  guix/build/cmake-build-system.scm		\
 | 
				
			||||||
  guix/build/emacs-build-system.scm		\
 | 
					  guix/build/emacs-build-system.scm		\
 | 
				
			||||||
| 
						 | 
					@ -109,7 +111,6 @@ MODULES =					\
 | 
				
			||||||
  guix/import/cran.scm				\
 | 
					  guix/import/cran.scm				\
 | 
				
			||||||
  guix/import/hackage.scm			\
 | 
					  guix/import/hackage.scm			\
 | 
				
			||||||
  guix/import/elpa.scm   			\
 | 
					  guix/import/elpa.scm   			\
 | 
				
			||||||
  guix/import/github.scm   			\
 | 
					 | 
				
			||||||
  guix/scripts.scm				\
 | 
					  guix/scripts.scm				\
 | 
				
			||||||
  guix/scripts/download.scm			\
 | 
					  guix/scripts/download.scm			\
 | 
				
			||||||
  guix/scripts/build.scm			\
 | 
					  guix/scripts/build.scm			\
 | 
				
			||||||
| 
						 | 
					@ -143,6 +144,7 @@ MODULES =					\
 | 
				
			||||||
if HAVE_GUILE_JSON
 | 
					if HAVE_GUILE_JSON
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MODULES +=					\
 | 
					MODULES +=					\
 | 
				
			||||||
 | 
					  guix/import/github.scm   			\
 | 
				
			||||||
  guix/import/json.scm				\
 | 
					  guix/import/json.scm				\
 | 
				
			||||||
  guix/import/pypi.scm				\
 | 
					  guix/import/pypi.scm				\
 | 
				
			||||||
  guix/scripts/import/pypi.scm			\
 | 
					  guix/scripts/import/pypi.scm			\
 | 
				
			||||||
| 
						 | 
					@ -171,8 +173,10 @@ dist_noinst_DATA = guix/tests.scm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Linux-Libre configurations.
 | 
					# Linux-Libre configurations.
 | 
				
			||||||
KCONFIGS =					\
 | 
					KCONFIGS =					\
 | 
				
			||||||
  gnu/packages/linux-libre-i686.conf		\
 | 
					  gnu/packages/linux-libre-4.5-i686.conf	\
 | 
				
			||||||
  gnu/packages/linux-libre-x86_64.conf		\
 | 
					  gnu/packages/linux-libre-4.5-x86_64.conf	\
 | 
				
			||||||
 | 
					  gnu/packages/linux-libre-4.4-i686.conf	\
 | 
				
			||||||
 | 
					  gnu/packages/linux-libre-4.4-x86_64.conf	\
 | 
				
			||||||
  gnu/packages/linux-libre-4.1-i686.conf	\
 | 
					  gnu/packages/linux-libre-4.1-i686.conf	\
 | 
				
			||||||
  gnu/packages/linux-libre-4.1-x86_64.conf
 | 
					  gnu/packages/linux-libre-4.1-x86_64.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -225,6 +229,7 @@ SCM_TESTS =					\
 | 
				
			||||||
  tests/grafts.scm				\
 | 
					  tests/grafts.scm				\
 | 
				
			||||||
  tests/ui.scm					\
 | 
					  tests/ui.scm					\
 | 
				
			||||||
  tests/records.scm				\
 | 
					  tests/records.scm				\
 | 
				
			||||||
 | 
					  tests/upstream.scm				\
 | 
				
			||||||
  tests/utils.scm				\
 | 
					  tests/utils.scm				\
 | 
				
			||||||
  tests/build-utils.scm				\
 | 
					  tests/build-utils.scm				\
 | 
				
			||||||
  tests/packages.scm				\
 | 
					  tests/packages.scm				\
 | 
				
			||||||
| 
						 | 
					@ -416,7 +421,11 @@ include daemon.am
 | 
				
			||||||
endif BUILD_DAEMON
 | 
					endif BUILD_DAEMON
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ACLOCAL_AMFLAGS = -I m4
 | 
					ACLOCAL_AMFLAGS = -I m4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Pass an explicit '--localstatedir' so that configure does not error out if
 | 
				
			||||||
 | 
					# it finds an existing installation with a different localstatedir.
 | 
				
			||||||
AM_DISTCHECK_CONFIGURE_FLAGS =			\
 | 
					AM_DISTCHECK_CONFIGURE_FLAGS =			\
 | 
				
			||||||
 | 
					  --localstatedir="$$dc_install_base/var"	\
 | 
				
			||||||
  --with-libgcrypt-prefix="$(LIBGCRYPT_PREFIX)"	\
 | 
					  --with-libgcrypt-prefix="$(LIBGCRYPT_PREFIX)"	\
 | 
				
			||||||
  --with-libgcrypt-libdir="$(LIBGCRYPT_LIBDIR)"	\
 | 
					  --with-libgcrypt-libdir="$(LIBGCRYPT_LIBDIR)"	\
 | 
				
			||||||
  --with-nix-prefix="$(NIX_PREFIX)"		\
 | 
					  --with-nix-prefix="$(NIX_PREFIX)"		\
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										17
									
								
								NEWS
									
										
									
									
									
								
							
							
						
						
									
										17
									
								
								NEWS
									
										
									
									
									
								
							| 
						 | 
					@ -14,18 +14,30 @@ Please send Guix bug reports to bug-guix@gnu.org.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
** Package management
 | 
					** Package management
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*** New syntax for separating package names and version numbers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Use ‘@’ instead of ‘-’ as a separator, as in ‘gnupg@2.0’.  This new separator
 | 
				
			||||||
 | 
					is a reserved character which is not allowed both in package names and version
 | 
				
			||||||
 | 
					numbers.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The old syntax to specify a package’s version—e.g., as “gnupg-2.0”—is obsolete
 | 
				
			||||||
 | 
					and support for it will be removed in the future.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*** Emacs interface for licenses
 | 
					*** Emacs interface for licenses
 | 
				
			||||||
*** Emacs interface for system generations
 | 
					*** Emacs interface for system generations
 | 
				
			||||||
*** Emacs interface for hydra.gnu.org
 | 
					*** Emacs interface for hydra.gnu.org
 | 
				
			||||||
*** Changes in Emacs interface variables and faces
 | 
					*** Changes in Emacs interface variables and faces
 | 
				
			||||||
 | 
					
 | 
				
			||||||
In the following names, BUFFER-TYPE means "info" or "list";
 | 
					In the following names, BUFFER-TYPE means "info" or "list";
 | 
				
			||||||
ENTRY-TYPE means "package", "output" or "generation".
 | 
					ENTRY-TYPE means "package", "output" or "generation".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**** Removed
 | 
					**** Removed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- guix-info-fill-column
 | 
					- guix-info-fill-column
 | 
				
			||||||
- guix-info-insert-ENTRY-TYPE-function
 | 
					- guix-info-insert-ENTRY-TYPE-function
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**** Renamed
 | 
					**** Renamed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- guix-info-ignore-empty-vals -> guix-info-ignore-empty-values
 | 
					- guix-info-ignore-empty-vals -> guix-info-ignore-empty-values
 | 
				
			||||||
- guix-output-name-width -> guix-generation-output-name-width
 | 
					- guix-output-name-width -> guix-generation-output-name-width
 | 
				
			||||||
- guix-buffer-name-function -> guix-ui-buffer-name-function
 | 
					- guix-buffer-name-function -> guix-ui-buffer-name-function
 | 
				
			||||||
| 
						 | 
					@ -34,6 +46,7 @@ ENTRY-TYPE means "package", "output" or "generation".
 | 
				
			||||||
- guix-BUFFER-TYPE-file-path (face) -> guix-BUFFER-TYPE-file-name
 | 
					- guix-BUFFER-TYPE-file-path (face) -> guix-BUFFER-TYPE-file-name
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**** Replaced
 | 
					**** Replaced
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- guix-list-column-format, guix-list-column-value-methods ->
 | 
					- guix-list-column-format, guix-list-column-value-methods ->
 | 
				
			||||||
  guix-ENTRY-TYPE-list-format
 | 
					  guix-ENTRY-TYPE-list-format
 | 
				
			||||||
- guix-info-displayed-params, guix-info-insert-methods,
 | 
					- guix-info-displayed-params, guix-info-insert-methods,
 | 
				
			||||||
| 
						 | 
					@ -44,6 +57,10 @@ ENTRY-TYPE means "package", "output" or "generation".
 | 
				
			||||||
  guix-ENTRY-TYPE-list-describe-warning-count
 | 
					  guix-ENTRY-TYPE-list-describe-warning-count
 | 
				
			||||||
- guix-package-info-fill-heading -> guix-info-fill
 | 
					- guix-package-info-fill-heading -> guix-info-fill
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					** Noteworthy bug fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*** Numbers in package names are correctly handled (http://bugs.gnu.org/19219)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Changes in 0.9.0 (since 0.8.3)
 | 
					* Changes in 0.9.0 (since 0.8.3)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
** Package management
 | 
					** Package management
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					;;; GNU Guix --- Functional package management for GNU
 | 
				
			||||||
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 | 
					;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -21,6 +21,7 @@
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(use-modules (guix store)
 | 
					(use-modules (guix store)
 | 
				
			||||||
 | 
					             (guix grafts)
 | 
				
			||||||
             (guix packages)
 | 
					             (guix packages)
 | 
				
			||||||
             (guix derivations)
 | 
					             (guix derivations)
 | 
				
			||||||
             (gnu packages emacs)
 | 
					             (gnu packages emacs)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					;;; GNU Guix --- Functional package management for GNU
 | 
				
			||||||
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 | 
					;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -21,6 +21,7 @@
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(use-modules (guix store)
 | 
					(use-modules (guix store)
 | 
				
			||||||
 | 
					             (guix grafts)
 | 
				
			||||||
             (guix packages)
 | 
					             (guix packages)
 | 
				
			||||||
             (guix derivations)
 | 
					             (guix derivations)
 | 
				
			||||||
             (guix ui)
 | 
					             (guix ui)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,6 +38,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(use-modules (guix config)
 | 
					(use-modules (guix config)
 | 
				
			||||||
             (guix store)
 | 
					             (guix store)
 | 
				
			||||||
 | 
					             (guix grafts)
 | 
				
			||||||
             (guix packages)
 | 
					             (guix packages)
 | 
				
			||||||
             (guix derivations)
 | 
					             (guix derivations)
 | 
				
			||||||
             (guix monads)
 | 
					             (guix monads)
 | 
				
			||||||
| 
						 | 
					@ -248,27 +249,35 @@ valid."
 | 
				
			||||||
                       %packages-to-cross-build))
 | 
					                       %packages-to-cross-build))
 | 
				
			||||||
                (remove (either from-32-to-64? same?) %cross-targets)))
 | 
					                (remove (either from-32-to-64? same?) %cross-targets)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ;; Return one job for each package, except bootstrap packages.
 | 
					  ;; Turn off grafts.  Grafting is meant to happen on the user's machines.
 | 
				
			||||||
  (append-map (lambda (system)
 | 
					  (parameterize ((%graft? #f))
 | 
				
			||||||
                (case subset
 | 
					    ;; Return one job for each package, except bootstrap packages.
 | 
				
			||||||
                  ((all)
 | 
					    (append-map (lambda (system)
 | 
				
			||||||
                   ;; Build everything.
 | 
					                  (case subset
 | 
				
			||||||
                   (fold-packages (lambda (package result)
 | 
					                    ((all)
 | 
				
			||||||
                                    (let ((job (package->job store package
 | 
					                     ;; Build everything, including replacements.
 | 
				
			||||||
                                                             system)))
 | 
					                     (let ((all (fold-packages
 | 
				
			||||||
                                      (if job
 | 
					                                 (lambda (package result)
 | 
				
			||||||
                                          (cons job result)
 | 
					                                   (if (package-replacement package)
 | 
				
			||||||
                                          result)))
 | 
					                                       (cons* package
 | 
				
			||||||
                                  (append (qemu-jobs store system)
 | 
					                                              (package-replacement package)
 | 
				
			||||||
                                          (tarball-jobs store system)
 | 
					                                              result)
 | 
				
			||||||
                                          (cross-jobs system))))
 | 
					                                       (cons package result)))
 | 
				
			||||||
                  ((core)
 | 
					                                 '()))
 | 
				
			||||||
                   ;; Build core packages only.
 | 
					                           (job (lambda (package)
 | 
				
			||||||
                   (append (map (lambda (package)
 | 
					                                  (package->job store package
 | 
				
			||||||
                                  (package-job store (job-name package)
 | 
					                                                system))))
 | 
				
			||||||
                                               package system))
 | 
					                       (append (filter-map job all)
 | 
				
			||||||
                                %core-packages)
 | 
					                               (qemu-jobs store system)
 | 
				
			||||||
                           (cross-jobs system)))
 | 
					                               (tarball-jobs store system)
 | 
				
			||||||
                  (else
 | 
					                               (cross-jobs system))))
 | 
				
			||||||
                   (error "unknown subset" subset))))
 | 
					                    ((core)
 | 
				
			||||||
              %hydra-supported-systems))
 | 
					                     ;; Build core packages only.
 | 
				
			||||||
 | 
					                     (append (map (lambda (package)
 | 
				
			||||||
 | 
					                                    (package-job store (job-name package)
 | 
				
			||||||
 | 
					                                                 package system))
 | 
				
			||||||
 | 
					                                  %core-packages)
 | 
				
			||||||
 | 
					                             (cross-jobs system)))
 | 
				
			||||||
 | 
					                    (else
 | 
				
			||||||
 | 
					                     (error "unknown subset" subset))))
 | 
				
			||||||
 | 
					                %hydra-supported-systems)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -110,6 +110,20 @@ if test "x$guix_build_daemon" = "xyes"; then
 | 
				
			||||||
  dnl Check for <linux/fs.h> (for immutable file support).
 | 
					  dnl Check for <linux/fs.h> (for immutable file support).
 | 
				
			||||||
  AC_CHECK_HEADERS([linux/fs.h])
 | 
					  AC_CHECK_HEADERS([linux/fs.h])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  dnl Determine the appropriate default list of substitute URLs.
 | 
				
			||||||
 | 
					  GUILE_MODULE_AVAILABLE([have_gnutls], [(gnutls)])
 | 
				
			||||||
 | 
					  if test "x$have_gnutls" = "xyes"; then
 | 
				
			||||||
 | 
					    guix_substitute_urls="https://mirror.hydra.gnu.org https://hydra.gnu.org"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    AC_MSG_WARN([GnuTLS is missing, substitutes will be downloaded in the clear])
 | 
				
			||||||
 | 
					    guix_substitute_urls="http://mirror.hydra.gnu.org http://hydra.gnu.org"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  AC_MSG_CHECKING([for default substitute URLs])
 | 
				
			||||||
 | 
					  AC_MSG_RESULT([$guix_substitute_urls])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  AC_DEFINE_UNQUOTED([GUIX_SUBSTITUTE_URLS], ["$guix_substitute_urls"],
 | 
				
			||||||
 | 
					    [Default list of substitute URLs used by 'guix-daemon'.])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  dnl Check whether the 'offload' build hook can be built (uses
 | 
					  dnl Check whether the 'offload' build hook can be built (uses
 | 
				
			||||||
  dnl 'restore-file-set', which requires unbuffered custom binary input
 | 
					  dnl 'restore-file-set', which requires unbuffered custom binary input
 | 
				
			||||||
  dnl ports from Guile >= 2.0.10.)
 | 
					  dnl ports from Guile >= 2.0.10.)
 | 
				
			||||||
| 
						 | 
					@ -126,6 +140,8 @@ if test "x$guix_build_daemon" = "xyes"; then
 | 
				
			||||||
  GUIX_TEST_ROOT="$ac_cv_guix_test_root"
 | 
					  GUIX_TEST_ROOT="$ac_cv_guix_test_root"
 | 
				
			||||||
  AC_SUBST([GUIX_TEST_ROOT])
 | 
					  AC_SUBST([GUIX_TEST_ROOT])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  GUIX_CHECK_LOCALSTATEDIR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  AC_CONFIG_FILES([nix/scripts/list-runtime-roots],
 | 
					  AC_CONFIG_FILES([nix/scripts/list-runtime-roots],
 | 
				
			||||||
    [chmod +x nix/scripts/list-runtime-roots])
 | 
					    [chmod +x nix/scripts/list-runtime-roots])
 | 
				
			||||||
  AC_CONFIG_FILES([nix/scripts/substitute],
 | 
					  AC_CONFIG_FILES([nix/scripts/substitute],
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										61
									
								
								doc.am
									
										
									
									
									
								
							
							
						
						
									
										61
									
								
								doc.am
									
										
									
									
									
								
							| 
						 | 
					@ -98,45 +98,48 @@ dvi-local: ps-local
 | 
				
			||||||
##  Man pages. ##
 | 
					##  Man pages. ##
 | 
				
			||||||
## ----------- ##
 | 
					## ----------- ##
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The man pages are generated using GNU Help2man.  In makefiles rules they
 | 
				
			||||||
 | 
					# depend not on the binary, but on the source files.  This usage allows a
 | 
				
			||||||
 | 
					# manual page to be generated by the maintainer and included in the
 | 
				
			||||||
 | 
					# distribution without requiring the end-user to have 'help2man' installed.
 | 
				
			||||||
 | 
					# They are built in $(srcdir) like info manuals.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub_commands_mans =				\
 | 
					sub_commands_mans =				\
 | 
				
			||||||
  doc/guix-archive.1				\
 | 
					  $(srcdir)/doc/guix-archive.1			\
 | 
				
			||||||
  doc/guix-build.1				\
 | 
					  $(srcdir)/doc/guix-build.1			\
 | 
				
			||||||
  doc/guix-challenge.1				\
 | 
					  $(srcdir)/doc/guix-challenge.1		\
 | 
				
			||||||
  doc/guix-download.1				\
 | 
					  $(srcdir)/doc/guix-download.1			\
 | 
				
			||||||
  doc/guix-edit.1				\
 | 
					  $(srcdir)/doc/guix-edit.1			\
 | 
				
			||||||
  doc/guix-environment.1			\
 | 
					  $(srcdir)/doc/guix-environment.1		\
 | 
				
			||||||
  doc/guix-gc.1					\
 | 
					  $(srcdir)/doc/guix-gc.1			\
 | 
				
			||||||
  doc/guix-hash.1				\
 | 
					  $(srcdir)/doc/guix-hash.1			\
 | 
				
			||||||
  doc/guix-import.1				\
 | 
					  $(srcdir)/doc/guix-import.1			\
 | 
				
			||||||
  doc/guix-lint.1				\
 | 
					  $(srcdir)/doc/guix-lint.1			\
 | 
				
			||||||
  doc/guix-package.1				\
 | 
					  $(srcdir)/doc/guix-package.1			\
 | 
				
			||||||
  doc/guix-publish.1				\
 | 
					  $(srcdir)/doc/guix-publish.1			\
 | 
				
			||||||
  doc/guix-pull.1				\
 | 
					  $(srcdir)/doc/guix-pull.1			\
 | 
				
			||||||
  doc/guix-refresh.1				\
 | 
					  $(srcdir)/doc/guix-refresh.1			\
 | 
				
			||||||
  doc/guix-size.1				\
 | 
					  $(srcdir)/doc/guix-size.1			\
 | 
				
			||||||
  doc/guix-system.1
 | 
					  $(srcdir)/doc/guix-system.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dist_man1_MANS =				\
 | 
					dist_man1_MANS =				\
 | 
				
			||||||
  doc/guix.1					\
 | 
					  $(srcdir)/doc/guix.1				\
 | 
				
			||||||
  $(sub_commands_mans)
 | 
					  $(sub_commands_mans)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Man pages are generated using GNU help2man.
 | 
					 | 
				
			||||||
gen_man =						\
 | 
					gen_man =						\
 | 
				
			||||||
  LANGUAGE= $(top_builddir)/pre-inst-env $(HELP2MAN)	\
 | 
					  LANGUAGE= $(top_builddir)/pre-inst-env $(HELP2MAN)	\
 | 
				
			||||||
  $(HELP2MANFLAGS)
 | 
					  $(HELP2MANFLAGS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP2MANFLAGS = --source=GNU --info-page=$(PACKAGE_TARNAME)
 | 
					HELP2MANFLAGS = --source=GNU --info-page=$(PACKAGE_TARNAME)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Note: Do not depend on 'scripts/guix' since that would trigger a rebuild
 | 
					$(srcdir)/doc/guix.1: scripts/guix.in $(sub_commands_mans)
 | 
				
			||||||
# even for people building from a tarball.
 | 
					 | 
				
			||||||
doc/guix.1: $(sub_commands_mans)
 | 
					 | 
				
			||||||
	-$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1`
 | 
						-$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Note: The dependency on $(GOBJECTS) is meant to force these docs to be made
 | 
					# The 'case' ensures the man pages are only generated if the corresponding
 | 
				
			||||||
# only after all Guile modules have been compiled.  The 'case' ensures the man
 | 
					# source script (the first prerequisite) has been changed.  The $(GOBJECTS)
 | 
				
			||||||
# pages are only generated if the corresponding script source has been
 | 
					# prerequisite is solely meant to force these docs to be made only after all
 | 
				
			||||||
# changed.
 | 
					# Guile modules have been compiled.
 | 
				
			||||||
doc/guix-%.1: guix/scripts/%.scm $(GOBJECTS)
 | 
					$(srcdir)/doc/guix-%.1: guix/scripts/%.scm $(GOBJECTS)
 | 
				
			||||||
	-@case '$?' in \
 | 
						-@case '$?' in \
 | 
				
			||||||
	  *$<*) $(AM_V_P) && set -x || echo "  HELP2MAN $@"; \
 | 
						  *$<*) $(AM_V_P) && set -x || echo "  HELP2MAN $@"; \
 | 
				
			||||||
	        $(gen_man) --output="$@" "guix $*";; \
 | 
						        $(gen_man) --output="$@" "guix $*";; \
 | 
				
			||||||
| 
						 | 
					@ -145,11 +148,9 @@ doc/guix-%.1: guix/scripts/%.scm $(GOBJECTS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if BUILD_DAEMON
 | 
					if BUILD_DAEMON
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dist_man1_MANS += doc/guix-daemon.1
 | 
					dist_man1_MANS += $(srcdir)/doc/guix-daemon.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Note: Do not depend on 'guix-daemon' since that would trigger a rebuild even
 | 
					$(srcdir)/doc/guix-daemon.1: nix/nix-daemon/guix-daemon.cc
 | 
				
			||||||
# for people building from a tarball.
 | 
					 | 
				
			||||||
doc/guix-daemon.1: nix/nix-daemon/guix-daemon.cc
 | 
					 | 
				
			||||||
	-$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1`
 | 
						-$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -140,7 +140,13 @@ necessary to support this, including @env{PATH} and @env{GUILE_LOAD_PATH}.
 | 
				
			||||||
Note that @command{./pre-inst-env guix pull} does @emph{not} upgrade the
 | 
					Note that @command{./pre-inst-env guix pull} does @emph{not} upgrade the
 | 
				
			||||||
local source tree; it simply updates the @file{~/.config/guix/latest}
 | 
					local source tree; it simply updates the @file{~/.config/guix/latest}
 | 
				
			||||||
symlink (@pxref{Invoking guix pull}).  Run @command{git pull} instead if
 | 
					symlink (@pxref{Invoking guix pull}).  Run @command{git pull} instead if
 | 
				
			||||||
you want to upgrade your local source tree.
 | 
					you want to upgrade your local source tree.@footnote{If you would like
 | 
				
			||||||
 | 
					to set up @command{guix} to use your Git checkout, you can point the
 | 
				
			||||||
 | 
					@file{~/.config/guix/latest} symlink to your Git checkout directory.
 | 
				
			||||||
 | 
					If you are the sole user of your system, you may also consider pointing
 | 
				
			||||||
 | 
					the @file{/root/.config/guix/latest} symlink to point to
 | 
				
			||||||
 | 
					@file{~/.config/guix/latest}; this way it will always use the same
 | 
				
			||||||
 | 
					@command{guix} as your user does.}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@node The Perfect Setup
 | 
					@node The Perfect Setup
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										689
									
								
								doc/guix.texi
									
										
									
									
									
								
							
							
						
						
									
										689
									
								
								doc/guix.texi
									
										
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										2
									
								
								emacs.am
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								emacs.am
									
										
									
									
									
								
							| 
						 | 
					@ -64,7 +64,7 @@ $(AUTOLOADS): $(ELFILES)
 | 
				
			||||||
	$(AM_V_EMACS)$(EMACS) --batch --eval				\
 | 
						$(AM_V_EMACS)$(EMACS) --batch --eval				\
 | 
				
			||||||
	  "(let ((backup-inhibited t)					\
 | 
						  "(let ((backup-inhibited t)					\
 | 
				
			||||||
	         (generated-autoload-file				\
 | 
						         (generated-autoload-file				\
 | 
				
			||||||
	          (expand-file-name \"$(AUTOLOADS)\" \"$(srcdir)\")))	\
 | 
						          (expand-file-name \"$(AUTOLOADS)\" \"$(builddir)\")))	\
 | 
				
			||||||
	     (update-directory-autoloads				\
 | 
						     (update-directory-autoloads				\
 | 
				
			||||||
	      (expand-file-name \"emacs\" \"$(srcdir)\")))"
 | 
						      (expand-file-name \"emacs\" \"$(srcdir)\")))"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -44,7 +44,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(defun guix-package-name-specification (name version &optional output)
 | 
					(defun guix-package-name-specification (name version &optional output)
 | 
				
			||||||
  "Return Guix package specification by its NAME, VERSION and OUTPUT."
 | 
					  "Return Guix package specification by its NAME, VERSION and OUTPUT."
 | 
				
			||||||
  (concat name "-" version
 | 
					  (concat name "@" version
 | 
				
			||||||
          (when output (concat ":" output))))
 | 
					          (when output (concat ":" output))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,6 +36,10 @@
 | 
				
			||||||
  (concat ".*\\." (regexp-opt guix-help-system-types) "\\'")
 | 
					  (concat ".*\\." (regexp-opt guix-help-system-types) "\\'")
 | 
				
			||||||
  "Regexp matching a full name of Hydra job (including system).")
 | 
					  "Regexp matching a full name of Hydra job (including system).")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(defun guix-hydra-job-name-specification (name version)
 | 
				
			||||||
 | 
					  "Return Hydra's job name specification by NAME and VERSION."
 | 
				
			||||||
 | 
					  (concat name "-" version))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(defun guix-hydra-message (entries search-type &rest _)
 | 
					(defun guix-hydra-message (entries search-type &rest _)
 | 
				
			||||||
  "Display a message after showing Hydra ENTRIES."
 | 
					  "Display a message after showing Hydra ENTRIES."
 | 
				
			||||||
  ;; XXX Add more messages maybe.
 | 
					  ;; XXX Add more messages maybe.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -86,13 +86,13 @@
 | 
				
			||||||
(define (full-name->name+version spec)
 | 
					(define (full-name->name+version spec)
 | 
				
			||||||
  "Given package specification SPEC with or without output,
 | 
					  "Given package specification SPEC with or without output,
 | 
				
			||||||
return two values: name and version.  For example, for SPEC
 | 
					return two values: name and version.  For example, for SPEC
 | 
				
			||||||
\"foo-0.9.1b:lib\", return \"foo\" and \"0.9.1b\"."
 | 
					\"foo@0.9.1b:lib\", return \"foo\" and \"0.9.1b\"."
 | 
				
			||||||
  (let-values (((name version output)
 | 
					  (let-values (((name version output)
 | 
				
			||||||
                (package-specification->name+version+output spec)))
 | 
					                (package-specification->name+version+output spec)))
 | 
				
			||||||
    (values name version)))
 | 
					    (values name version)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define (name+version->full-name name version)
 | 
					(define (name+version->full-name name version)
 | 
				
			||||||
  (string-append name "-" version))
 | 
					  (string-append name "@" version))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define* (make-package-specification name #:optional version output)
 | 
					(define* (make-package-specification name #:optional version output)
 | 
				
			||||||
  (let ((full-name (if version
 | 
					  (let ((full-name (if version
 | 
				
			||||||
| 
						 | 
					@ -263,7 +263,8 @@ Example:
 | 
				
			||||||
  "Return a list of full names of the packages from package INPUTS."
 | 
					  "Return a list of full names of the packages from package INPUTS."
 | 
				
			||||||
  (filter-map (match-lambda
 | 
					  (filter-map (match-lambda
 | 
				
			||||||
               ((_ (? package? package))
 | 
					               ((_ (? package? package))
 | 
				
			||||||
                (package-full-name package))
 | 
					                (make-package-specification (package-name package)
 | 
				
			||||||
 | 
					                                            (package-version package)))
 | 
				
			||||||
               ((_ (? package? package) output)
 | 
					               ((_ (? package? package) output)
 | 
				
			||||||
                (make-package-specification (package-name package)
 | 
					                (make-package-specification (package-name package)
 | 
				
			||||||
                                            (package-version package)
 | 
					                                            (package-version package)
 | 
				
			||||||
| 
						 | 
					@ -953,10 +954,11 @@ GENERATIONS is a list of generation numbers."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define (package-location-string id-or-name)
 | 
					(define (package-location-string id-or-name)
 | 
				
			||||||
  "Return a location string of a package with ID-OR-NAME."
 | 
					  "Return a location string of a package with ID-OR-NAME."
 | 
				
			||||||
  (and-let* ((package  (or (package-by-id id-or-name)
 | 
					  (and=> (or (package-by-id id-or-name)
 | 
				
			||||||
                           (first (packages-by-name id-or-name))))
 | 
					             (match (packages-by-name id-or-name)
 | 
				
			||||||
             (location (package-location package)))
 | 
					               (()              #f)
 | 
				
			||||||
    (location->string location)))
 | 
					               ((package _ ...) package)))
 | 
				
			||||||
 | 
					         (compose location->string package-location)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define (package-source-derivation->store-path derivation)
 | 
					(define (package-source-derivation->store-path derivation)
 | 
				
			||||||
  "Return a store path of the package source DERIVATION."
 | 
					  "Return a store path of the package source DERIVATION."
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,6 +34,7 @@
 | 
				
			||||||
(require 'guix-guile)
 | 
					(require 'guix-guile)
 | 
				
			||||||
(require 'guix-entry)
 | 
					(require 'guix-entry)
 | 
				
			||||||
(require 'guix-utils)
 | 
					(require 'guix-utils)
 | 
				
			||||||
 | 
					(require 'guix-hydra)
 | 
				
			||||||
(require 'guix-hydra-build)
 | 
					(require 'guix-hydra-build)
 | 
				
			||||||
(require 'guix-read)
 | 
					(require 'guix-read)
 | 
				
			||||||
(require 'guix-license)
 | 
					(require 'guix-license)
 | 
				
			||||||
| 
						 | 
					@ -388,7 +389,7 @@ formatted with this string, an action button is inserted.")
 | 
				
			||||||
                          :system (button-label btn))))
 | 
					                          :system (button-label btn))))
 | 
				
			||||||
               (apply #'guix-hydra-build-get-display
 | 
					               (apply #'guix-hydra-build-get-display
 | 
				
			||||||
                      'latest args)))
 | 
					                      'latest args)))
 | 
				
			||||||
   'job-name (guix-package-name-specification
 | 
					   'job-name (guix-hydra-job-name-specification
 | 
				
			||||||
              (guix-entry-value entry 'name)
 | 
					              (guix-entry-value entry 'name)
 | 
				
			||||||
              (guix-entry-value entry 'version))))
 | 
					              (guix-entry-value entry 'version))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -776,7 +777,7 @@ for all ARGS."
 | 
				
			||||||
  (interactive
 | 
					  (interactive
 | 
				
			||||||
   (let ((entry (guix-list-current-entry)))
 | 
					   (let ((entry (guix-list-current-entry)))
 | 
				
			||||||
     (guix-hydra-build-latest-prompt-args
 | 
					     (guix-hydra-build-latest-prompt-args
 | 
				
			||||||
      :job (guix-package-name-specification
 | 
					      :job (guix-hydra-job-name-specification
 | 
				
			||||||
            (guix-entry-value entry 'name)
 | 
					            (guix-entry-value entry 'name)
 | 
				
			||||||
            (guix-entry-value entry 'version)))))
 | 
					            (guix-entry-value entry 'version)))))
 | 
				
			||||||
  (apply #'guix-hydra-latest-builds number args))
 | 
					  (apply #'guix-hydra-latest-builds number args))
 | 
				
			||||||
| 
						 | 
					@ -945,7 +946,7 @@ See `guix-find-location' for the meaning of DIRECTORY."
 | 
				
			||||||
(defun guix-packages-by-name (name &optional profile)
 | 
					(defun guix-packages-by-name (name &optional profile)
 | 
				
			||||||
  "Display Guix packages with NAME.
 | 
					  "Display Guix packages with NAME.
 | 
				
			||||||
NAME is a string with name specification.  It may optionally contain
 | 
					NAME is a string with name specification.  It may optionally contain
 | 
				
			||||||
a version number.  Examples: \"guile\", \"guile-2.0.11\".
 | 
					a version number.  Examples: \"guile\", \"guile@2.0.11\".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If PROFILE is nil, use `guix-current-profile'.
 | 
					If PROFILE is nil, use `guix-current-profile'.
 | 
				
			||||||
Interactively with prefix, prompt for PROFILE."
 | 
					Interactively with prefix, prompt for PROFILE."
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -166,12 +166,13 @@ GNU_SYSTEM_MODULES =				\
 | 
				
			||||||
  gnu/packages/indent.scm			\
 | 
					  gnu/packages/indent.scm			\
 | 
				
			||||||
  gnu/packages/inklingreader.scm		\
 | 
					  gnu/packages/inklingreader.scm		\
 | 
				
			||||||
  gnu/packages/inkscape.scm			\
 | 
					  gnu/packages/inkscape.scm			\
 | 
				
			||||||
  gnu/packages/irssi.scm			\
 | 
					  gnu/packages/irc.scm  			\
 | 
				
			||||||
  gnu/packages/iso-codes.scm			\
 | 
					  gnu/packages/iso-codes.scm			\
 | 
				
			||||||
  gnu/packages/java.scm				\
 | 
					  gnu/packages/java.scm				\
 | 
				
			||||||
  gnu/packages/jemalloc.scm			\
 | 
					  gnu/packages/jemalloc.scm			\
 | 
				
			||||||
  gnu/packages/jrnl.scm				\
 | 
					  gnu/packages/jrnl.scm				\
 | 
				
			||||||
  gnu/packages/julia.scm			\
 | 
					  gnu/packages/julia.scm			\
 | 
				
			||||||
 | 
					  gnu/packages/kde.scm              \
 | 
				
			||||||
  gnu/packages/kde-frameworks.scm		\
 | 
					  gnu/packages/kde-frameworks.scm		\
 | 
				
			||||||
  gnu/packages/key-mon.scm			\
 | 
					  gnu/packages/key-mon.scm			\
 | 
				
			||||||
  gnu/packages/kodi.scm				\
 | 
					  gnu/packages/kodi.scm				\
 | 
				
			||||||
| 
						 | 
					@ -336,7 +337,6 @@ GNU_SYSTEM_MODULES =				\
 | 
				
			||||||
  gnu/packages/wdiff.scm			\
 | 
					  gnu/packages/wdiff.scm			\
 | 
				
			||||||
  gnu/packages/web.scm				\
 | 
					  gnu/packages/web.scm				\
 | 
				
			||||||
  gnu/packages/webkit.scm			\
 | 
					  gnu/packages/webkit.scm			\
 | 
				
			||||||
  gnu/packages/weechat.scm			\
 | 
					 | 
				
			||||||
  gnu/packages/wget.scm				\
 | 
					  gnu/packages/wget.scm				\
 | 
				
			||||||
  gnu/packages/wicd.scm				\
 | 
					  gnu/packages/wicd.scm				\
 | 
				
			||||||
  gnu/packages/wine.scm				\
 | 
					  gnu/packages/wine.scm				\
 | 
				
			||||||
| 
						 | 
					@ -426,7 +426,6 @@ dist_patch_DATA =						\
 | 
				
			||||||
  gnu/packages/patches/bigloo-gc-shebangs.patch			\
 | 
					  gnu/packages/patches/bigloo-gc-shebangs.patch			\
 | 
				
			||||||
  gnu/packages/patches/binutils-ld-new-dtags.patch		\
 | 
					  gnu/packages/patches/binutils-ld-new-dtags.patch		\
 | 
				
			||||||
  gnu/packages/patches/binutils-loongson-workaround.patch	\
 | 
					  gnu/packages/patches/binutils-loongson-workaround.patch	\
 | 
				
			||||||
  gnu/packages/patches/bitlbee-configure-doc-fix.patch		\
 | 
					 | 
				
			||||||
  gnu/packages/patches/byobu-writable-status.patch		\
 | 
					  gnu/packages/patches/byobu-writable-status.patch		\
 | 
				
			||||||
  gnu/packages/patches/calibre-drop-unrar.patch			\
 | 
					  gnu/packages/patches/calibre-drop-unrar.patch			\
 | 
				
			||||||
  gnu/packages/patches/calibre-no-updates-dialog.patch		\
 | 
					  gnu/packages/patches/calibre-no-updates-dialog.patch		\
 | 
				
			||||||
| 
						 | 
					@ -455,6 +454,7 @@ dist_patch_DATA =						\
 | 
				
			||||||
  gnu/packages/patches/duplicity-piped-password.patch		\
 | 
					  gnu/packages/patches/duplicity-piped-password.patch		\
 | 
				
			||||||
  gnu/packages/patches/duplicity-test_selection-tmp.patch	\
 | 
					  gnu/packages/patches/duplicity-test_selection-tmp.patch	\
 | 
				
			||||||
  gnu/packages/patches/elfutils-tests-ptrace.patch		\
 | 
					  gnu/packages/patches/elfutils-tests-ptrace.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/einstein-build.patch			\
 | 
				
			||||||
  gnu/packages/patches/emacs-constants-lisp-like.patch		\
 | 
					  gnu/packages/patches/emacs-constants-lisp-like.patch		\
 | 
				
			||||||
  gnu/packages/patches/emacs-exec-path.patch			\
 | 
					  gnu/packages/patches/emacs-exec-path.patch			\
 | 
				
			||||||
  gnu/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch	\
 | 
					  gnu/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch	\
 | 
				
			||||||
| 
						 | 
					@ -484,7 +484,6 @@ dist_patch_DATA =						\
 | 
				
			||||||
  gnu/packages/patches/geoclue-config.patch			\
 | 
					  gnu/packages/patches/geoclue-config.patch			\
 | 
				
			||||||
  gnu/packages/patches/ghostscript-CVE-2015-3228.patch		\
 | 
					  gnu/packages/patches/ghostscript-CVE-2015-3228.patch		\
 | 
				
			||||||
  gnu/packages/patches/ghostscript-runpath.patch		\
 | 
					  gnu/packages/patches/ghostscript-runpath.patch		\
 | 
				
			||||||
  gnu/packages/patches/gitolite-openssh-6.8-compat.patch	\
 | 
					 | 
				
			||||||
  gnu/packages/patches/glib-networking-ssl-cert-file.patch	\
 | 
					  gnu/packages/patches/glib-networking-ssl-cert-file.patch	\
 | 
				
			||||||
  gnu/packages/patches/glib-tests-desktop.patch			\
 | 
					  gnu/packages/patches/glib-tests-desktop.patch			\
 | 
				
			||||||
  gnu/packages/patches/glib-tests-homedir.patch			\
 | 
					  gnu/packages/patches/glib-tests-homedir.patch			\
 | 
				
			||||||
| 
						 | 
					@ -526,10 +525,29 @@ dist_patch_DATA =						\
 | 
				
			||||||
  gnu/packages/patches/hydra-disable-darcs-test.patch		\
 | 
					  gnu/packages/patches/hydra-disable-darcs-test.patch		\
 | 
				
			||||||
  gnu/packages/patches/icecat-avoid-bundled-includes.patch	\
 | 
					  gnu/packages/patches/icecat-avoid-bundled-includes.patch	\
 | 
				
			||||||
  gnu/packages/patches/icecat-update-graphite2.patch		\
 | 
					  gnu/packages/patches/icecat-update-graphite2.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-update-graphite2-pt2.patch	\
 | 
				
			||||||
  gnu/packages/patches/icecat-re-enable-DHE-cipher-suites.patch	\
 | 
					  gnu/packages/patches/icecat-re-enable-DHE-cipher-suites.patch	\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-CVE-2015-4477.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-CVE-2015-7207.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-CVE-2016-1952-pt01.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-CVE-2016-1952-pt02.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-CVE-2016-1952-pt03.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-CVE-2016-1952-pt04.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-CVE-2016-1952-pt05.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-CVE-2016-1952-pt06.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-CVE-2016-1954.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-CVE-2016-1960.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-CVE-2016-1961.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-CVE-2016-1962.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-CVE-2016-1964.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-CVE-2016-1965.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-CVE-2016-1966.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-CVE-2016-1974.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/icecat-bug-1248851.patch			\
 | 
				
			||||||
  gnu/packages/patches/icu4c-CVE-2014-6585.patch		\
 | 
					  gnu/packages/patches/icu4c-CVE-2014-6585.patch		\
 | 
				
			||||||
  gnu/packages/patches/icu4c-CVE-2015-1270.patch		\
 | 
					  gnu/packages/patches/icu4c-CVE-2015-1270.patch		\
 | 
				
			||||||
  gnu/packages/patches/icu4c-CVE-2015-4760.patch		\
 | 
					  gnu/packages/patches/icu4c-CVE-2015-4760.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/ilmbase-fix-tests.patch			\
 | 
				
			||||||
  gnu/packages/patches/imagemagick-test-segv.patch		\
 | 
					  gnu/packages/patches/imagemagick-test-segv.patch		\
 | 
				
			||||||
  gnu/packages/patches/irrlicht-mesa-10.patch			\
 | 
					  gnu/packages/patches/irrlicht-mesa-10.patch			\
 | 
				
			||||||
  gnu/packages/patches/jasper-CVE-2007-2721.patch		\
 | 
					  gnu/packages/patches/jasper-CVE-2007-2721.patch		\
 | 
				
			||||||
| 
						 | 
					@ -541,7 +559,10 @@ dist_patch_DATA =						\
 | 
				
			||||||
  gnu/packages/patches/jasper-CVE-2014-8157.patch		\
 | 
					  gnu/packages/patches/jasper-CVE-2014-8157.patch		\
 | 
				
			||||||
  gnu/packages/patches/jasper-CVE-2014-8158.patch		\
 | 
					  gnu/packages/patches/jasper-CVE-2014-8158.patch		\
 | 
				
			||||||
  gnu/packages/patches/jasper-CVE-2014-9029.patch		\
 | 
					  gnu/packages/patches/jasper-CVE-2014-9029.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/jasper-CVE-2016-1577.patch		\
 | 
				
			||||||
  gnu/packages/patches/jasper-CVE-2016-1867.patch		\
 | 
					  gnu/packages/patches/jasper-CVE-2016-1867.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/jasper-CVE-2016-2089.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/jasper-CVE-2016-2116.patch		\
 | 
				
			||||||
  gnu/packages/patches/jbig2dec-ignore-testtest.patch		\
 | 
					  gnu/packages/patches/jbig2dec-ignore-testtest.patch		\
 | 
				
			||||||
  gnu/packages/patches/kmod-module-directory.patch		\
 | 
					  gnu/packages/patches/kmod-module-directory.patch		\
 | 
				
			||||||
  gnu/packages/patches/ldc-disable-tests.patch			\
 | 
					  gnu/packages/patches/ldc-disable-tests.patch			\
 | 
				
			||||||
| 
						 | 
					@ -561,6 +582,7 @@ dist_patch_DATA =						\
 | 
				
			||||||
  gnu/packages/patches/libevent-dns-tests.patch			\
 | 
					  gnu/packages/patches/libevent-dns-tests.patch			\
 | 
				
			||||||
  gnu/packages/patches/libmtp-devices.patch			\
 | 
					  gnu/packages/patches/libmtp-devices.patch			\
 | 
				
			||||||
  gnu/packages/patches/liboop-mips64-deplibs-fix.patch		\
 | 
					  gnu/packages/patches/liboop-mips64-deplibs-fix.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/libotr-test-auth-fix.patch		\
 | 
				
			||||||
  gnu/packages/patches/liblxqt-include.patch			\
 | 
					  gnu/packages/patches/liblxqt-include.patch			\
 | 
				
			||||||
  gnu/packages/patches/libmad-armv7-thumb-pt1.patch		\
 | 
					  gnu/packages/patches/libmad-armv7-thumb-pt1.patch		\
 | 
				
			||||||
  gnu/packages/patches/libmad-armv7-thumb-pt2.patch		\
 | 
					  gnu/packages/patches/libmad-armv7-thumb-pt2.patch		\
 | 
				
			||||||
| 
						 | 
					@ -614,7 +636,6 @@ dist_patch_DATA =						\
 | 
				
			||||||
  gnu/packages/patches/module-init-tools-moduledir.patch	\
 | 
					  gnu/packages/patches/module-init-tools-moduledir.patch	\
 | 
				
			||||||
  gnu/packages/patches/mumps-build-parallelism.patch		\
 | 
					  gnu/packages/patches/mumps-build-parallelism.patch		\
 | 
				
			||||||
  gnu/packages/patches/mupen64plus-ui-console-notice.patch	\
 | 
					  gnu/packages/patches/mupen64plus-ui-console-notice.patch	\
 | 
				
			||||||
  gnu/packages/patches/mupdf-buildsystem-fix.patch		\
 | 
					 | 
				
			||||||
  gnu/packages/patches/mutt-store-references.patch		\
 | 
					  gnu/packages/patches/mutt-store-references.patch		\
 | 
				
			||||||
  gnu/packages/patches/net-tools-bitrot.patch			\
 | 
					  gnu/packages/patches/net-tools-bitrot.patch			\
 | 
				
			||||||
  gnu/packages/patches/ngircd-handle-zombies.patch		\
 | 
					  gnu/packages/patches/ngircd-handle-zombies.patch		\
 | 
				
			||||||
| 
						 | 
					@ -632,6 +653,7 @@ dist_patch_DATA =						\
 | 
				
			||||||
  gnu/packages/patches/openjpeg-use-after-free-fix.patch	\
 | 
					  gnu/packages/patches/openjpeg-use-after-free-fix.patch	\
 | 
				
			||||||
  gnu/packages/patches/openssl-runpath.patch			\
 | 
					  gnu/packages/patches/openssl-runpath.patch			\
 | 
				
			||||||
  gnu/packages/patches/openssl-c-rehash.patch			\
 | 
					  gnu/packages/patches/openssl-c-rehash.patch			\
 | 
				
			||||||
 | 
					  gnu/packages/patches/openssl-c-rehash-in.patch		\
 | 
				
			||||||
  gnu/packages/patches/orpheus-cast-errors-and-includes.patch	\
 | 
					  gnu/packages/patches/orpheus-cast-errors-and-includes.patch	\
 | 
				
			||||||
  gnu/packages/patches/ots-no-include-missing-file.patch	\
 | 
					  gnu/packages/patches/ots-no-include-missing-file.patch	\
 | 
				
			||||||
  gnu/packages/patches/patchelf-page-size.patch			\
 | 
					  gnu/packages/patches/patchelf-page-size.patch			\
 | 
				
			||||||
| 
						 | 
					@ -639,6 +661,7 @@ dist_patch_DATA =						\
 | 
				
			||||||
  gnu/packages/patches/patchutils-xfail-gendiff-tests.patch	\
 | 
					  gnu/packages/patches/patchutils-xfail-gendiff-tests.patch	\
 | 
				
			||||||
  gnu/packages/patches/patch-hurd-path-max.patch		\
 | 
					  gnu/packages/patches/patch-hurd-path-max.patch		\
 | 
				
			||||||
  gnu/packages/patches/perl-CVE-2015-8607.patch			\
 | 
					  gnu/packages/patches/perl-CVE-2015-8607.patch			\
 | 
				
			||||||
 | 
					  gnu/packages/patches/perl-CVE-2016-2381.patch			\
 | 
				
			||||||
  gnu/packages/patches/perl-autosplit-default-time.patch	\
 | 
					  gnu/packages/patches/perl-autosplit-default-time.patch	\
 | 
				
			||||||
  gnu/packages/patches/perl-deterministic-ordering.patch	\
 | 
					  gnu/packages/patches/perl-deterministic-ordering.patch	\
 | 
				
			||||||
  gnu/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \
 | 
					  gnu/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \
 | 
				
			||||||
| 
						 | 
					@ -661,6 +684,7 @@ dist_patch_DATA =						\
 | 
				
			||||||
  gnu/packages/patches/plotutils-libpng-jmpbuf.patch		\
 | 
					  gnu/packages/patches/plotutils-libpng-jmpbuf.patch		\
 | 
				
			||||||
  gnu/packages/patches/polkit-drop-test.patch			\
 | 
					  gnu/packages/patches/polkit-drop-test.patch			\
 | 
				
			||||||
  gnu/packages/patches/portaudio-audacity-compat.patch		\
 | 
					  gnu/packages/patches/portaudio-audacity-compat.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/procmail-ambiguous-getline-debian.patch  \
 | 
				
			||||||
  gnu/packages/patches/pt-scotch-build-parallelism.patch	\
 | 
					  gnu/packages/patches/pt-scotch-build-parallelism.patch	\
 | 
				
			||||||
  gnu/packages/patches/pulseaudio-fix-mult-test.patch		\
 | 
					  gnu/packages/patches/pulseaudio-fix-mult-test.patch		\
 | 
				
			||||||
  gnu/packages/patches/pulseaudio-longer-test-timeout.patch	\
 | 
					  gnu/packages/patches/pulseaudio-longer-test-timeout.patch	\
 | 
				
			||||||
| 
						 | 
					@ -677,6 +701,7 @@ dist_patch_DATA =						\
 | 
				
			||||||
  gnu/packages/patches/python-disable-ssl-test.patch		\
 | 
					  gnu/packages/patches/python-disable-ssl-test.patch		\
 | 
				
			||||||
  gnu/packages/patches/python-fix-tests.patch			\
 | 
					  gnu/packages/patches/python-fix-tests.patch			\
 | 
				
			||||||
  gnu/packages/patches/python-ipython-inputhook-ctype.patch	\
 | 
					  gnu/packages/patches/python-ipython-inputhook-ctype.patch	\
 | 
				
			||||||
 | 
					  gnu/packages/patches/python-rarfile-fix-tests.patch		\
 | 
				
			||||||
  gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch	\
 | 
					  gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch	\
 | 
				
			||||||
  gnu/packages/patches/python-configobj-setuptools.patch	\
 | 
					  gnu/packages/patches/python-configobj-setuptools.patch	\
 | 
				
			||||||
  gnu/packages/patches/python-paste-remove-website-test.patch	\
 | 
					  gnu/packages/patches/python-paste-remove-website-test.patch	\
 | 
				
			||||||
| 
						 | 
					@ -702,7 +727,6 @@ dist_patch_DATA =						\
 | 
				
			||||||
  gnu/packages/patches/sed-hurd-path-max.patch			\
 | 
					  gnu/packages/patches/sed-hurd-path-max.patch			\
 | 
				
			||||||
  gnu/packages/patches/scheme48-tests.patch			\
 | 
					  gnu/packages/patches/scheme48-tests.patch			\
 | 
				
			||||||
  gnu/packages/patches/scotch-test-threading.patch		\
 | 
					  gnu/packages/patches/scotch-test-threading.patch		\
 | 
				
			||||||
  gnu/packages/patches/scribus-qobject.patch			\
 | 
					 | 
				
			||||||
  gnu/packages/patches/sdl-libx11-1.6.patch			\
 | 
					  gnu/packages/patches/sdl-libx11-1.6.patch			\
 | 
				
			||||||
  gnu/packages/patches/serf-comment-style-fix.patch		\
 | 
					  gnu/packages/patches/serf-comment-style-fix.patch		\
 | 
				
			||||||
  gnu/packages/patches/serf-deflate-buckets-test-fix.patch	\
 | 
					  gnu/packages/patches/serf-deflate-buckets-test-fix.patch	\
 | 
				
			||||||
| 
						 | 
					@ -746,6 +770,7 @@ dist_patch_DATA =						\
 | 
				
			||||||
  gnu/packages/patches/util-linux-tests.patch			\
 | 
					  gnu/packages/patches/util-linux-tests.patch			\
 | 
				
			||||||
  gnu/packages/patches/upower-builddir.patch			\
 | 
					  gnu/packages/patches/upower-builddir.patch			\
 | 
				
			||||||
  gnu/packages/patches/valgrind-enable-arm.patch		\
 | 
					  gnu/packages/patches/valgrind-enable-arm.patch		\
 | 
				
			||||||
 | 
					  gnu/packages/patches/vorbis-tools-CVE-2015-6749.patch		\
 | 
				
			||||||
  gnu/packages/patches/vpnc-script.patch			\
 | 
					  gnu/packages/patches/vpnc-script.patch			\
 | 
				
			||||||
  gnu/packages/patches/vtk-mesa-10.patch			\
 | 
					  gnu/packages/patches/vtk-mesa-10.patch			\
 | 
				
			||||||
  gnu/packages/patches/w3m-libgc.patch				\
 | 
					  gnu/packages/patches/w3m-libgc.patch				\
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					;;; GNU Guix --- Functional package management for GNU
 | 
				
			||||||
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 | 
					;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 | 
				
			||||||
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 | 
					;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
| 
						 | 
					@ -91,7 +91,8 @@
 | 
				
			||||||
    (mkdir-p home)
 | 
					    (mkdir-p home)
 | 
				
			||||||
    (for-each (lambda (file)
 | 
					    (for-each (lambda (file)
 | 
				
			||||||
                (let ((target (string-append home "/" file)))
 | 
					                (let ((target (string-append home "/" file)))
 | 
				
			||||||
                  (copy-file (string-append directory "/" file) target)
 | 
					                  (copy-recursively (string-append directory "/" file)
 | 
				
			||||||
 | 
					                                    target)
 | 
				
			||||||
                  (make-file-writable target)))
 | 
					                  (make-file-writable target)))
 | 
				
			||||||
              files)))
 | 
					              files)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -159,7 +159,7 @@ as created and modified at the Epoch."
 | 
				
			||||||
                ;; read-only store.
 | 
					                ;; read-only store.
 | 
				
			||||||
                (unless (eq? (stat:type s) 'symlink)
 | 
					                (unless (eq? (stat:type s) 'symlink)
 | 
				
			||||||
                  (utime file 0 0 0 0))))
 | 
					                  (utime file 0 0 0 0))))
 | 
				
			||||||
            (find-files directory "")))
 | 
					            (find-files directory #:directories? #t)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define* (register-closure store closure
 | 
					(define* (register-closure store closure
 | 
				
			||||||
                           #:key (deduplicate? #t))
 | 
					                           #:key (deduplicate? #t))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,8 +1,9 @@
 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					;;; GNU Guix --- Functional package management for GNU
 | 
				
			||||||
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 | 
					;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 | 
				
			||||||
;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
 | 
					;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
 | 
				
			||||||
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 | 
					;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 | 
				
			||||||
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 | 
					;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -23,6 +24,9 @@
 | 
				
			||||||
  #:use-module (guix packages)
 | 
					  #:use-module (guix packages)
 | 
				
			||||||
  #:use-module (guix ui)
 | 
					  #:use-module (guix ui)
 | 
				
			||||||
  #:use-module (guix utils)
 | 
					  #:use-module (guix utils)
 | 
				
			||||||
 | 
					  #:use-module ((guix build utils)
 | 
				
			||||||
 | 
					                #:select ((package-name->name+version
 | 
				
			||||||
 | 
					                           . hyphen-separated-name->name+version)))
 | 
				
			||||||
  #:use-module (ice-9 ftw)
 | 
					  #:use-module (ice-9 ftw)
 | 
				
			||||||
  #:use-module (ice-9 vlist)
 | 
					  #:use-module (ice-9 vlist)
 | 
				
			||||||
  #:use-module (ice-9 match)
 | 
					  #:use-module (ice-9 match)
 | 
				
			||||||
| 
						 | 
					@ -276,56 +280,63 @@ return its return value."
 | 
				
			||||||
                    (lambda (k signum)
 | 
					                    (lambda (k signum)
 | 
				
			||||||
                      (handler signum))))
 | 
					                      (handler signum))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define (specification->package spec)
 | 
					
 | 
				
			||||||
  "Return a package matching SPEC.  SPEC may be a package name, or a package
 | 
					;;;
 | 
				
			||||||
name followed by a hyphen and a version number.  If the version number is not
 | 
					;;; Package specification.
 | 
				
			||||||
present, return the preferred newest version."
 | 
					;;;
 | 
				
			||||||
  (let-values (((name version)
 | 
					
 | 
				
			||||||
                (package-name->name+version spec)))
 | 
					(define* (%find-package spec name version #:key fallback?)
 | 
				
			||||||
    (match (find-best-packages-by-name name version)
 | 
					  (match (find-best-packages-by-name name version)
 | 
				
			||||||
      ((p)                                      ; one match
 | 
					    ((pkg . pkg*)
 | 
				
			||||||
       p)
 | 
					     (unless (null? pkg*)
 | 
				
			||||||
      ((p x ...)                                ; several matches
 | 
					 | 
				
			||||||
       (warning (_ "ambiguous package specification `~a'~%") spec)
 | 
					       (warning (_ "ambiguous package specification `~a'~%") spec)
 | 
				
			||||||
       (warning (_ "choosing ~a from ~a~%")
 | 
					       (warning (_ "choosing ~a from ~a~%")
 | 
				
			||||||
                (package-full-name p)
 | 
					                (package-full-name pkg)
 | 
				
			||||||
                (location->string (package-location p)))
 | 
					                (location->string (package-location pkg))))
 | 
				
			||||||
       p)
 | 
					     (when fallback?
 | 
				
			||||||
      (_                                        ; no matches
 | 
					       (warning (_ "deprecated NAME-VERSION syntax; \
 | 
				
			||||||
       (if version
 | 
					use NAME@VERSION instead~%")))
 | 
				
			||||||
           (leave (_ "~A: package not found for version ~a~%")
 | 
					     pkg)
 | 
				
			||||||
                  name version)
 | 
					    (_
 | 
				
			||||||
           (leave (_ "~A: unknown package~%") name))))))
 | 
					     (if version
 | 
				
			||||||
 | 
					         (leave (_ "~A: package not found for version ~a~%") name version)
 | 
				
			||||||
 | 
					         (if (not fallback?)
 | 
				
			||||||
 | 
					             ;; XXX: Fallback to the older specification style with an hyphen
 | 
				
			||||||
 | 
					             ;; between NAME and VERSION, for backward compatibility.
 | 
				
			||||||
 | 
					             (call-with-values
 | 
				
			||||||
 | 
					                 (lambda ()
 | 
				
			||||||
 | 
					                   (hyphen-separated-name->name+version name))
 | 
				
			||||||
 | 
					               (cut %find-package spec <> <> #:fallback? #t))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             ;; The fallback case didn't find anything either, so bail out.
 | 
				
			||||||
 | 
					             (leave (_ "~A: unknown package~%") name))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define (specification->package spec)
 | 
				
			||||||
 | 
					  "Return a package matching SPEC.  SPEC may be a package name, or a package
 | 
				
			||||||
 | 
					name followed by an at-sign and a version number.  If the version number is not
 | 
				
			||||||
 | 
					present, return the preferred newest version."
 | 
				
			||||||
 | 
					  (let-values (((name version) (package-name->name+version spec)))
 | 
				
			||||||
 | 
					    (%find-package spec name version)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define* (specification->package+output spec #:optional (output "out"))
 | 
					(define* (specification->package+output spec #:optional (output "out"))
 | 
				
			||||||
  "Return the package and output specified by SPEC, or #f and #f; SPEC may
 | 
					  "Return the package and output specified by SPEC, or #f and #f; SPEC may
 | 
				
			||||||
optionally contain a version number and an output name, as in these examples:
 | 
					optionally contain a version number and an output name, as in these examples:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  guile
 | 
					  guile
 | 
				
			||||||
  guile-2.0.9
 | 
					  guile@2.0.9
 | 
				
			||||||
  guile:debug
 | 
					  guile:debug
 | 
				
			||||||
  guile-2.0.9:debug
 | 
					  guile@2.0.9:debug
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If SPEC does not specify a version number, return the preferred newest
 | 
					If SPEC does not specify a version number, return the preferred newest
 | 
				
			||||||
version; if SPEC does not specify an output, return OUTPUT."
 | 
					version; if SPEC does not specify an output, return OUTPUT."
 | 
				
			||||||
  (define (ensure-output p sub-drv)
 | 
					 | 
				
			||||||
    (if (member sub-drv (package-outputs p))
 | 
					 | 
				
			||||||
        sub-drv
 | 
					 | 
				
			||||||
        (leave (_ "package `~a' lacks output `~a'~%")
 | 
					 | 
				
			||||||
               (package-full-name p)
 | 
					 | 
				
			||||||
               sub-drv)))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  (let-values (((name version sub-drv)
 | 
					  (let-values (((name version sub-drv)
 | 
				
			||||||
                (package-specification->name+version+output spec output)))
 | 
					                (package-specification->name+version+output spec output)))
 | 
				
			||||||
    (match (find-best-packages-by-name name version)
 | 
					    (match (%find-package spec name version)
 | 
				
			||||||
      ((p)
 | 
					      (#f
 | 
				
			||||||
       (values p (ensure-output p sub-drv)))
 | 
					       (values #f #f))
 | 
				
			||||||
      ((p p* ...)
 | 
					      (package
 | 
				
			||||||
       (warning (_ "ambiguous package specification `~a'~%")
 | 
					       (if (member sub-drv (package-outputs package))
 | 
				
			||||||
                spec)
 | 
					           (values package sub-drv)
 | 
				
			||||||
       (warning (_ "choosing ~a from ~a~%")
 | 
					           (leave (_ "package `~a' lacks output `~a'~%")
 | 
				
			||||||
                (package-full-name p)
 | 
					                  (package-full-name package)
 | 
				
			||||||
                (location->string (package-location p)))
 | 
					                  sub-drv))))))
 | 
				
			||||||
       (values p (ensure-output p sub-drv)))
 | 
					 | 
				
			||||||
      (()
 | 
					 | 
				
			||||||
       (leave (_ "~a: package not found~%") spec)))))
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,6 +9,7 @@
 | 
				
			||||||
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 | 
					;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 | 
				
			||||||
;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
 | 
					;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
 | 
				
			||||||
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 | 
					;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -424,7 +425,7 @@ connection alive.")
 | 
				
			||||||
         (bind-minor-version "9")
 | 
					         (bind-minor-version "9")
 | 
				
			||||||
         (bind-patch-version "8")
 | 
					         (bind-patch-version "8")
 | 
				
			||||||
         (bind-release-type "-P")
 | 
					         (bind-release-type "-P")
 | 
				
			||||||
         (bind-release-version "3")
 | 
					         (bind-release-version "4")
 | 
				
			||||||
         (bind-version (string-append bind-major-version
 | 
					         (bind-version (string-append bind-major-version
 | 
				
			||||||
                                      "."
 | 
					                                      "."
 | 
				
			||||||
                                      bind-minor-version
 | 
					                                      bind-minor-version
 | 
				
			||||||
| 
						 | 
					@ -540,7 +541,7 @@ connection alive.")
 | 
				
			||||||
                                        "/bind-" bind-version ".tar.gz"))
 | 
					                                        "/bind-" bind-version ".tar.gz"))
 | 
				
			||||||
                    (sha256
 | 
					                    (sha256
 | 
				
			||||||
                     (base32
 | 
					                     (base32
 | 
				
			||||||
                      "01qa17479jghy90lb2j8b1bpg3ay6k6aaajpigyirwzsvyc9yj3a"))))
 | 
					                      "1wl9kl0630dc1qjrf7fnp8cscagfm5qgmisi0zhr1p6iwi9bil2y"))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                ;; When cross-compiling, we need the cross Coreutils and sed.
 | 
					                ;; When cross-compiling, we need the cross Coreutils and sed.
 | 
				
			||||||
                ;; Otherwise just use those from %FINAL-INPUTS.
 | 
					                ;; Otherwise just use those from %FINAL-INPUTS.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -67,7 +67,7 @@ multiplication routines such as Toom–Cook and the FFT.")
 | 
				
			||||||
(define-public cm
 | 
					(define-public cm
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
   (name "cm")
 | 
					   (name "cm")
 | 
				
			||||||
   (version "0.2.1")
 | 
					   (version "0.3")
 | 
				
			||||||
   (source (origin
 | 
					   (source (origin
 | 
				
			||||||
            (method url-fetch)
 | 
					            (method url-fetch)
 | 
				
			||||||
            (uri (string-append
 | 
					            (uri (string-append
 | 
				
			||||||
| 
						 | 
					@ -75,7 +75,7 @@ multiplication routines such as Toom–Cook and the FFT.")
 | 
				
			||||||
                  version ".tar.gz"))
 | 
					                  version ".tar.gz"))
 | 
				
			||||||
            (sha256
 | 
					            (sha256
 | 
				
			||||||
             (base32
 | 
					             (base32
 | 
				
			||||||
              "1r5dx5qy0ka2sq26n9jll9iy4sjqg0jp5r3jnbjhpgxvmj8jbhq8"))))
 | 
					              "1nf5kr0nqmhbzrsrinky18z0ighjpsmb5cr8zyg8jf04bfbyrfmc"))))
 | 
				
			||||||
   (build-system gnu-build-system)
 | 
					   (build-system gnu-build-system)
 | 
				
			||||||
   (propagated-inputs
 | 
					   (propagated-inputs
 | 
				
			||||||
     `(("mpfrcx" ,mpfrcx)
 | 
					     `(("mpfrcx" ,mpfrcx)
 | 
				
			||||||
| 
						 | 
					@ -89,7 +89,7 @@ imaginary quadratic number fields and of elliptic curves with complex
 | 
				
			||||||
multiplication via floating point approximations.  It consists of libraries
 | 
					multiplication via floating point approximations.  It consists of libraries
 | 
				
			||||||
that can be called from within a C program and of executable command
 | 
					that can be called from within a C program and of executable command
 | 
				
			||||||
line applications.")
 | 
					line applications.")
 | 
				
			||||||
   (license license:gpl2+)
 | 
					   (license license:gpl3+)
 | 
				
			||||||
   (home-page "http://cm.multiprecision.org/")))
 | 
					   (home-page "http://cm.multiprecision.org/")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public fplll
 | 
					(define-public fplll
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -139,3 +139,11 @@ dictionaries, including personal ones.")
 | 
				
			||||||
                     #:sha256
 | 
					                     #:sha256
 | 
				
			||||||
                     (base32
 | 
					                     (base32
 | 
				
			||||||
                      "1gdf7bc1a0kmxsmphdqq8pl01h667mjsj6hihy6kqy14k5qdq69v")))
 | 
					                      "1gdf7bc1a0kmxsmphdqq8pl01h667mjsj6hihy6kqy14k5qdq69v")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public aspell-dict-nl
 | 
				
			||||||
 | 
					  (aspell-dictionary "nl" "Dutch"
 | 
				
			||||||
 | 
					                     #:version "0.50-2"
 | 
				
			||||||
 | 
					                     #:prefix "aspell-"
 | 
				
			||||||
 | 
					                     #:sha256
 | 
				
			||||||
 | 
					                     (base32
 | 
				
			||||||
 | 
					                      "0ffb87yjsh211hllpc4b9khqqrblial4pzi1h9r3v465z1yhn3j4")))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -80,6 +80,17 @@
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "1azbrhpfk4nnybr7kgmc7w6al6xnzppg853vas8gmkh185kk11l0"))))
 | 
					                "1azbrhpfk4nnybr7kgmc7w6al6xnzppg853vas8gmkh185kk11l0"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:configure-flags '("--enable-qt5")
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         ;; Insert an extra space between linker flags.
 | 
				
			||||||
 | 
					         (add-before 'configure 'add-missing-space
 | 
				
			||||||
 | 
					           (lambda _
 | 
				
			||||||
 | 
					             (substitute* "configure"
 | 
				
			||||||
 | 
					               (("LIBS\\+=\\$LIBSsave") "LIBS+=\" $LIBSsave\"")
 | 
				
			||||||
 | 
					               (("CFLAGS\\+=\\$CFLAGSsave") "CFLAGS+=\" $CFLAGSsave\""))
 | 
				
			||||||
 | 
					             #t)))))
 | 
				
			||||||
    (inputs
 | 
					    (inputs
 | 
				
			||||||
     `(("alsa-lib" ,alsa-lib)
 | 
					     `(("alsa-lib" ,alsa-lib)
 | 
				
			||||||
       ;; We cannot use zita-alsa-pcmi (the successor of clalsadrv) due to
 | 
					       ;; We cannot use zita-alsa-pcmi (the successor of clalsadrv) due to
 | 
				
			||||||
| 
						 | 
					@ -89,7 +100,7 @@
 | 
				
			||||||
       ("jack" ,jack-1)
 | 
					       ("jack" ,jack-1)
 | 
				
			||||||
       ("ladspa" ,ladspa)
 | 
					       ("ladspa" ,ladspa)
 | 
				
			||||||
       ("liblo" ,liblo)
 | 
					       ("liblo" ,liblo)
 | 
				
			||||||
       ("qt" ,qt-4)))
 | 
					       ("qt" ,qt)))
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
     `(("pkg-config" ,pkg-config)))
 | 
					     `(("pkg-config" ,pkg-config)))
 | 
				
			||||||
    (home-page "http://alsamodular.sourceforge.net/")
 | 
					    (home-page "http://alsamodular.sourceforge.net/")
 | 
				
			||||||
| 
						 | 
					@ -395,6 +406,319 @@ language and software synthesizer.")
 | 
				
			||||||
ALSA PCM devices.")
 | 
					ALSA PCM devices.")
 | 
				
			||||||
    (license license:gpl2+)))
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public amb-plugins
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "amb-plugins")
 | 
				
			||||||
 | 
					    (version "0.8.1")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append
 | 
				
			||||||
 | 
					                    "http://kokkinizita.linuxaudio.org"
 | 
				
			||||||
 | 
					                    "/linuxaudio/downloads/AMB-plugins-"
 | 
				
			||||||
 | 
					                    version ".tar.bz2"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "0x4blm4visjqj0ndqr0cg776v3b7lvplpc8cgi9n51llhavn0jpl"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:tests? #f ; no "check" target
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         ;; no configure script
 | 
				
			||||||
 | 
					         (delete 'configure)
 | 
				
			||||||
 | 
					         (add-before 'install 'prepare-target-directory
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
 | 
				
			||||||
 | 
					             #t))
 | 
				
			||||||
 | 
					         (add-after 'unpack 'override-target-directory-and-tool-paths
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (substitute* "Makefile"
 | 
				
			||||||
 | 
					               (("/usr/lib/ladspa")
 | 
				
			||||||
 | 
					                (string-append (assoc-ref outputs "out") "/lib/ladspa"))
 | 
				
			||||||
 | 
					               (("/usr/bin/install") (which "install"))
 | 
				
			||||||
 | 
					               (("/bin/rm") "#"))
 | 
				
			||||||
 | 
					             #t)))))
 | 
				
			||||||
 | 
					    (home-page "http://kokkinizita.linuxaudio.org")
 | 
				
			||||||
 | 
					    (synopsis "LADSPA ambisonics plugins")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "The AMB plugins are a set of LADSPA ambisonics plugins, mainly to be
 | 
				
			||||||
 | 
					used within Ardour.  Features include: mono and stereo to B-format panning,
 | 
				
			||||||
 | 
					horizontal rotator, square, hexagon and cube decoders.")
 | 
				
			||||||
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public mcp-plugins
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "mcp-plugins")
 | 
				
			||||||
 | 
					    (version "0.4.0")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append
 | 
				
			||||||
 | 
					                    "http://kokkinizita.linuxaudio.org"
 | 
				
			||||||
 | 
					                    "/linuxaudio/downloads/MCP-plugins-"
 | 
				
			||||||
 | 
					                    version ".tar.bz2"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "06a9r1l85jmg7l1cvc3788mk8ra0xagjfy1rmhw3b80y4n0vlnvc"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:tests? #f ; no "check" target
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         ;; no configure script
 | 
				
			||||||
 | 
					         (delete 'configure)
 | 
				
			||||||
 | 
					         (add-before 'install 'prepare-target-directory
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
 | 
				
			||||||
 | 
					             #t))
 | 
				
			||||||
 | 
					         (add-after 'unpack 'override-target-directory
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (substitute* "Makefile"
 | 
				
			||||||
 | 
					               (("/usr") (assoc-ref outputs "out")))
 | 
				
			||||||
 | 
					             #t)))))
 | 
				
			||||||
 | 
					    (home-page "http://kokkinizita.linuxaudio.org")
 | 
				
			||||||
 | 
					    (synopsis "Chorus, phaser, and vintage high-pass and low-pass filters")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "This package provides various LADSPA plugins.  @code{cs_chorus} and
 | 
				
			||||||
 | 
					@code{cs_phaser} provide chorus and phaser effects, respectively;
 | 
				
			||||||
 | 
					@code{mvclpf24} provides four implementations of the low-pass filter used in
 | 
				
			||||||
 | 
					vintage Moog synthesizers; @code{mvchpf24} is based on the voltage-controlled
 | 
				
			||||||
 | 
					high-pass filter by Robert Moog.  The filters attempt to accurately emulate
 | 
				
			||||||
 | 
					the non-linear circuit elements of their original analog counterparts.")
 | 
				
			||||||
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public rev-plugins
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "rev-plugins")
 | 
				
			||||||
 | 
					    (version "0.7.1")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append
 | 
				
			||||||
 | 
					                    "http://kokkinizita.linuxaudio.org"
 | 
				
			||||||
 | 
					                    "/linuxaudio/downloads/REV-plugins-"
 | 
				
			||||||
 | 
					                    version ".tar.bz2"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "1ikpinxm00pkfi259bnkzhsy3miagrjgdihaaf5x4v7zac29j3g7"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:tests? #f ; no "check" target
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         ;; no configure script
 | 
				
			||||||
 | 
					         (delete 'configure)
 | 
				
			||||||
 | 
					         (add-before 'install 'prepare-target-directory
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
 | 
				
			||||||
 | 
					             #t))
 | 
				
			||||||
 | 
					         (add-after 'unpack 'override-target-directory
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (substitute* "Makefile"
 | 
				
			||||||
 | 
					               (("/usr") (assoc-ref outputs "out")))
 | 
				
			||||||
 | 
					             #t)))))
 | 
				
			||||||
 | 
					    (home-page "http://kokkinizita.linuxaudio.org")
 | 
				
			||||||
 | 
					    (synopsis "LADSPA reverb plugin")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "This package provides a stereo reverb LADSPA plugin based on the
 | 
				
			||||||
 | 
					well-known greverb.")
 | 
				
			||||||
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public fil-plugins
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "fil-plugins")
 | 
				
			||||||
 | 
					    (version "0.3.0")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append
 | 
				
			||||||
 | 
					                    "http://kokkinizita.linuxaudio.org"
 | 
				
			||||||
 | 
					                    "/linuxaudio/downloads/FIL-plugins-"
 | 
				
			||||||
 | 
					                    version ".tar.bz2"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "1scfv9j7jrp50r565haa4rvxn1vk2ss86xssl5qgcr8r45qz42qw"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:tests? #f ; no "check" target
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         ;; no configure script
 | 
				
			||||||
 | 
					         (delete 'configure)
 | 
				
			||||||
 | 
					         (add-before 'install 'prepare-target-directory
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
 | 
				
			||||||
 | 
					             #t))
 | 
				
			||||||
 | 
					         (add-after 'unpack 'override-target-directory
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (substitute* "Makefile"
 | 
				
			||||||
 | 
					               (("/usr") (assoc-ref outputs "out")))
 | 
				
			||||||
 | 
					             #t)))))
 | 
				
			||||||
 | 
					    (home-page "http://kokkinizita.linuxaudio.org")
 | 
				
			||||||
 | 
					    (synopsis "LADSPA four-band parametric equalizer plugin")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "This package provides a LADSPA plugin for a four-band parametric
 | 
				
			||||||
 | 
					equalizer.  Each section has an active/bypass switch, frequency, bandwidth and
 | 
				
			||||||
 | 
					gain controls.  There is also a global bypass switch and gain control.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The 2nd order resonant filters are implemented using a Mitra-Regalia style
 | 
				
			||||||
 | 
					lattice filter, which is stable even while parameters are being changed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					All switches and controls are internally smoothed, so they can be used 'live'
 | 
				
			||||||
 | 
					without any clicks or zipper noises.  This makes this plugin suitable for use
 | 
				
			||||||
 | 
					in systems that allow automation of plugin control ports, such as Ardour, or
 | 
				
			||||||
 | 
					for stage use.")
 | 
				
			||||||
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public ste-plugins
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "ste-plugins")
 | 
				
			||||||
 | 
					    (version "0.0.2")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append
 | 
				
			||||||
 | 
					                    "http://kokkinizita.linuxaudio.org"
 | 
				
			||||||
 | 
					                    "/linuxaudio/downloads/STE-plugins-"
 | 
				
			||||||
 | 
					                    version ".tar.bz2"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "0s3c9w5xihs87cnd1lh9xgj3maabjdyh6bl766qp5lhkg3ax8zy6"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:tests? #f ; no "check" target
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         ;; no configure script
 | 
				
			||||||
 | 
					         (delete 'configure)
 | 
				
			||||||
 | 
					         (add-before 'install 'prepare-target-directory
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
 | 
				
			||||||
 | 
					             #t))
 | 
				
			||||||
 | 
					         (add-after 'unpack 'override-target-directory
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (substitute* "Makefile"
 | 
				
			||||||
 | 
					               (("/usr") (assoc-ref outputs "out")))
 | 
				
			||||||
 | 
					             #t)))))
 | 
				
			||||||
 | 
					    (home-page "http://kokkinizita.linuxaudio.org")
 | 
				
			||||||
 | 
					    (synopsis "LADSPA stereo width plugin")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "This package provides a LADSPA plugin to manipulate the stereo width of
 | 
				
			||||||
 | 
					audio signals.")
 | 
				
			||||||
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public vco-plugins
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "vco-plugins")
 | 
				
			||||||
 | 
					    (version "0.3.0")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append
 | 
				
			||||||
 | 
					                    "http://kokkinizita.linuxaudio.org"
 | 
				
			||||||
 | 
					                    "/linuxaudio/downloads/VCO-plugins-"
 | 
				
			||||||
 | 
					                    version ".tar.bz2"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "1xzqdg3b07r7zww05y9bb737l9dxvfkv28m3fyak1aazaci3rsgl"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:tests? #f ; no "check" target
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         ;; no configure script
 | 
				
			||||||
 | 
					         (delete 'configure)
 | 
				
			||||||
 | 
					         (add-before 'install 'prepare-target-directory
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
 | 
				
			||||||
 | 
					             #t))
 | 
				
			||||||
 | 
					         (add-after 'unpack 'override-target-directory
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (substitute* "Makefile"
 | 
				
			||||||
 | 
					               (("/usr") (assoc-ref outputs "out"))
 | 
				
			||||||
 | 
					               (("/bin/cp") (which "cp")))
 | 
				
			||||||
 | 
					             #t)))))
 | 
				
			||||||
 | 
					    (home-page "http://kokkinizita.linuxaudio.org")
 | 
				
			||||||
 | 
					    (synopsis "LADSPA plugin for synthesizer oscillators")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "The @code{blvco} LADSPA plugin provides three anti-aliased oscillators:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@enumerate
 | 
				
			||||||
 | 
					@item Pulse-VCO, a dirac pulse oscillator with flat amplitude spectrum
 | 
				
			||||||
 | 
					@item Saw-VCO, a sawtooth oscillator with 1/F amplitude spectrum
 | 
				
			||||||
 | 
					@item Rec-VCO, a square / rectange oscillator
 | 
				
			||||||
 | 
					@end enumerate\n
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					All oscillators are low-pass filtered to provide waveforms similar to the
 | 
				
			||||||
 | 
					output of analog synthesizers such as the Moog Voyager.")
 | 
				
			||||||
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public wah-plugins
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "wah-plugins")
 | 
				
			||||||
 | 
					    (version "0.1.0")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append
 | 
				
			||||||
 | 
					                    "http://kokkinizita.linuxaudio.org"
 | 
				
			||||||
 | 
					                    "/linuxaudio/downloads/WAH-plugins-"
 | 
				
			||||||
 | 
					                    version ".tar.bz2"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "1wkbjarxdhjixkh7d5abralj11dj2xxg644fz3ycd7qyfgfvjfgd"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:tests? #f ; no "check" target
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         ;; no configure script
 | 
				
			||||||
 | 
					         (delete 'configure)
 | 
				
			||||||
 | 
					         (add-before 'install 'prepare-target-directory
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
 | 
				
			||||||
 | 
					             #t))
 | 
				
			||||||
 | 
					         (add-after 'unpack 'override-target-directory
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (substitute* "Makefile"
 | 
				
			||||||
 | 
					               (("/usr") (assoc-ref outputs "out")))
 | 
				
			||||||
 | 
					             #t)))))
 | 
				
			||||||
 | 
					    (home-page "http://kokkinizita.linuxaudio.org")
 | 
				
			||||||
 | 
					    (synopsis "LADSPA Autowah effect plugin")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "This package provides a LADSPA plugin for a Wah effect with envelope
 | 
				
			||||||
 | 
					follower.")
 | 
				
			||||||
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public g2reverb
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "g2reverb")
 | 
				
			||||||
 | 
					    (version "0.7.1")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append
 | 
				
			||||||
 | 
					                    "http://kokkinizita.linuxaudio.org"
 | 
				
			||||||
 | 
					                    "/linuxaudio/downloads/g2reverb-"
 | 
				
			||||||
 | 
					                    version ".tar.bz2"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "18wb8vj1kky5glr76s34awbi8qzplsmf3wjbd7a12hfv4j0bkwrj"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:tests? #f ; no "check" target
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         ;; no configure script
 | 
				
			||||||
 | 
					         (delete 'configure)
 | 
				
			||||||
 | 
					         (add-before 'install 'prepare-target-directory
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
 | 
				
			||||||
 | 
					             #t))
 | 
				
			||||||
 | 
					         (add-after 'unpack 'override-target-directory
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (substitute* "Makefile"
 | 
				
			||||||
 | 
					               (("/usr") (assoc-ref outputs "out")))
 | 
				
			||||||
 | 
					             #t)))))
 | 
				
			||||||
 | 
					    (home-page "http://kokkinizita.linuxaudio.org")
 | 
				
			||||||
 | 
					    (synopsis "LADSPA stereo reverb plugin")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "This package provides a LADSPA plugin for a stereo reverb effect.")
 | 
				
			||||||
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public fluidsynth
 | 
					(define-public fluidsynth
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "fluidsynth")
 | 
					    (name "fluidsynth")
 | 
				
			||||||
| 
						 | 
					@ -803,7 +1127,6 @@ synchronous execution of all clients, and low latency operation.")
 | 
				
			||||||
       ("suil" ,suil)
 | 
					       ("suil" ,suil)
 | 
				
			||||||
       ("gtk" ,gtk+-2)
 | 
					       ("gtk" ,gtk+-2)
 | 
				
			||||||
       ("gtkmm" ,gtkmm-2)
 | 
					       ("gtkmm" ,gtkmm-2)
 | 
				
			||||||
       ("qt" ,qt-4)
 | 
					 | 
				
			||||||
       ("jack" ,jack-1)))
 | 
					       ("jack" ,jack-1)))
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
     `(("pkg-config" ,pkg-config)))
 | 
					     `(("pkg-config" ,pkg-config)))
 | 
				
			||||||
| 
						 | 
					@ -2063,3 +2386,38 @@ module to handle that particular file type.")
 | 
				
			||||||
    (home-page "http://etree.org/shnutils/shntool/")
 | 
					    (home-page "http://etree.org/shnutils/shntool/")
 | 
				
			||||||
    ;; 'install-sh' bears the x11 license
 | 
					    ;; 'install-sh' bears the x11 license
 | 
				
			||||||
    (license (list license:gpl2+ license:x11))))
 | 
					    (license (list license:gpl2+ license:x11))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public dcadec
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "dcadec")
 | 
				
			||||||
 | 
					    (version "0.2.0")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append "https://github.com/foo86/dcadec/archive/v"
 | 
				
			||||||
 | 
					                                  version ".tar.gz"))
 | 
				
			||||||
 | 
					              (file-name (string-append name "-" version ".tar.gz"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "0i0dpypgqkhhi4v1fmsp2way6w9kbcix3c7q79pmg39yvrzj17gd"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     ;; Test files are missing: https://github.com/foo86/dcadec/issues/53
 | 
				
			||||||
 | 
					     '(#:tests? #f
 | 
				
			||||||
 | 
					       #:make-flags
 | 
				
			||||||
 | 
					       (list "CC=gcc"
 | 
				
			||||||
 | 
					             ;; Build shared library.
 | 
				
			||||||
 | 
					             "CONFIG_SHARED=1"
 | 
				
			||||||
 | 
					             (string-append "PREFIX=" (assoc-ref %outputs "out"))
 | 
				
			||||||
 | 
					             ;; Set proper runpath.
 | 
				
			||||||
 | 
					             (string-append "LDFLAGS=-Wl,-rpath="
 | 
				
			||||||
 | 
					                            (assoc-ref %outputs "out")
 | 
				
			||||||
 | 
					                            "/lib"))
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         ;; No configure script, just a hand-written Makefile.
 | 
				
			||||||
 | 
					         (delete 'configure))))
 | 
				
			||||||
 | 
					    (synopsis "DTS Coherent Acoustics decoder")
 | 
				
			||||||
 | 
					    (description "Dcadec is a DTS Coherent Acoustics surround sound decoder
 | 
				
			||||||
 | 
					with support for HD extensions.")
 | 
				
			||||||
 | 
					    (home-page "https://github.com/foo86/dcadec")
 | 
				
			||||||
 | 
					    (license license:lgpl2.1+)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,9 @@
 | 
				
			||||||
 | 
					 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					;;; GNU Guix --- Functional package management for GNU
 | 
				
			||||||
;;; Copyright © 2014, 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
 | 
					;;; Copyright © 2014, 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
 | 
				
			||||||
;;; Copyright © 2015, 2016 Ben Woodcroft <donttrustben@gmail.com>
 | 
					;;; Copyright © 2015, 2016 Ben Woodcroft <donttrustben@gmail.com>
 | 
				
			||||||
;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl>
 | 
					;;; Copyright © 2015, 2016 Pjotr Prins <pjotr.guix@thebird.nl>
 | 
				
			||||||
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 | 
					;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -26,6 +26,7 @@
 | 
				
			||||||
  #:use-module (guix utils)
 | 
					  #:use-module (guix utils)
 | 
				
			||||||
  #:use-module (guix download)
 | 
					  #:use-module (guix download)
 | 
				
			||||||
  #:use-module (guix git-download)
 | 
					  #:use-module (guix git-download)
 | 
				
			||||||
 | 
					  #:use-module (guix build-system ant)
 | 
				
			||||||
  #:use-module (guix build-system gnu)
 | 
					  #:use-module (guix build-system gnu)
 | 
				
			||||||
  #:use-module (guix build-system cmake)
 | 
					  #:use-module (guix build-system cmake)
 | 
				
			||||||
  #:use-module (guix build-system perl)
 | 
					  #:use-module (guix build-system perl)
 | 
				
			||||||
| 
						 | 
					@ -37,11 +38,13 @@
 | 
				
			||||||
  #:use-module (gnu packages autotools)
 | 
					  #:use-module (gnu packages autotools)
 | 
				
			||||||
  #:use-module (gnu packages algebra)
 | 
					  #:use-module (gnu packages algebra)
 | 
				
			||||||
  #:use-module (gnu packages base)
 | 
					  #:use-module (gnu packages base)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages bison)
 | 
				
			||||||
  #:use-module (gnu packages boost)
 | 
					  #:use-module (gnu packages boost)
 | 
				
			||||||
  #:use-module (gnu packages compression)
 | 
					  #:use-module (gnu packages compression)
 | 
				
			||||||
  #:use-module (gnu packages cpio)
 | 
					  #:use-module (gnu packages cpio)
 | 
				
			||||||
  #:use-module (gnu packages curl)
 | 
					  #:use-module (gnu packages curl)
 | 
				
			||||||
  #:use-module (gnu packages doxygen)
 | 
					  #:use-module (gnu packages doxygen)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages datastructures)
 | 
				
			||||||
  #:use-module (gnu packages file)
 | 
					  #:use-module (gnu packages file)
 | 
				
			||||||
  #:use-module (gnu packages gawk)
 | 
					  #:use-module (gnu packages gawk)
 | 
				
			||||||
  #:use-module (gnu packages gcc)
 | 
					  #:use-module (gnu packages gcc)
 | 
				
			||||||
| 
						 | 
					@ -247,6 +250,47 @@ intervals from multiple files in widely-used genomic file formats such as BAM,
 | 
				
			||||||
BED, GFF/GTF, VCF.")
 | 
					BED, GFF/GTF, VCF.")
 | 
				
			||||||
    (license license:gpl2)))
 | 
					    (license license:gpl2)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public bioawk
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "bioawk")
 | 
				
			||||||
 | 
					    (version "1.0")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					      (method url-fetch)
 | 
				
			||||||
 | 
					      (uri (string-append "https://github.com/lh3/bioawk/archive/v"
 | 
				
			||||||
 | 
					                          version ".tar.gz"))
 | 
				
			||||||
 | 
					      (file-name (string-append name "-" version ".tar.gz"))
 | 
				
			||||||
 | 
					      (sha256
 | 
				
			||||||
 | 
					       (base32 "1daizxsk17ahi9n58fj8vpgwyhzrzh54bzqhanjanp88kgrz7gjw"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("zlib" ,zlib)))
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("bison" ,bison)))
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:tests? #f ; There are no tests to run.
 | 
				
			||||||
 | 
					       ;; Bison must generate files, before other targets can build.
 | 
				
			||||||
 | 
					       #:parallel-build? #f
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         (delete 'configure) ; There is no configure phase.
 | 
				
			||||||
 | 
					         (replace 'install
 | 
				
			||||||
 | 
					          (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					            (let* ((out (assoc-ref outputs "out"))
 | 
				
			||||||
 | 
					                   (bin  (string-append out "/bin"))
 | 
				
			||||||
 | 
					                   (man (string-append out "/share/man/man1")))
 | 
				
			||||||
 | 
					              (mkdir-p man)
 | 
				
			||||||
 | 
					              (copy-file "awk.1" (string-append man "/bioawk.1"))
 | 
				
			||||||
 | 
					              (install-file "bioawk" bin)))))))
 | 
				
			||||||
 | 
					    (home-page "https://github.com/lh3/bioawk")
 | 
				
			||||||
 | 
					    (synopsis "AWK with bioinformatics extensions")
 | 
				
			||||||
 | 
					    (description "Bioawk is an extension to Brian Kernighan's awk, adding the
 | 
				
			||||||
 | 
					support of several common biological data formats, including optionally gzip'ed
 | 
				
			||||||
 | 
					BED, GFF, SAM, VCF, FASTA/Q and TAB-delimited formats with column names.  It
 | 
				
			||||||
 | 
					also adds a few built-in functions and a command line option to use TAB as the
 | 
				
			||||||
 | 
					input/output delimiter.  When the new functionality is not used, bioawk is
 | 
				
			||||||
 | 
					intended to behave exactly the same as the original BWK awk.")
 | 
				
			||||||
 | 
					    (license license:x11)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public python2-pybedtools
 | 
					(define-public python2-pybedtools
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "python2-pybedtools")
 | 
					    (name "python2-pybedtools")
 | 
				
			||||||
| 
						 | 
					@ -535,10 +579,11 @@ confidence to have in an alignment.")
 | 
				
			||||||
              (snippet
 | 
					              (snippet
 | 
				
			||||||
               `(begin
 | 
					               `(begin
 | 
				
			||||||
                  ;; Remove bundled boost, pigz, zlib, and .git directory
 | 
					                  ;; Remove bundled boost, pigz, zlib, and .git directory
 | 
				
			||||||
                  ;; FIXME: also remove bundled sources for google-sparsehash,
 | 
					                  ;; FIXME: also remove bundled sources for murmurhash3 and
 | 
				
			||||||
                  ;; murmurhash3, kmc once packaged.
 | 
					                  ;; kmc once packaged.
 | 
				
			||||||
                  (delete-file-recursively "boost")
 | 
					                  (delete-file-recursively "boost")
 | 
				
			||||||
                  (delete-file-recursively "pigz")
 | 
					                  (delete-file-recursively "pigz")
 | 
				
			||||||
 | 
					                  (delete-file-recursively "google-sparsehash")
 | 
				
			||||||
                  (delete-file-recursively "zlib")
 | 
					                  (delete-file-recursively "zlib")
 | 
				
			||||||
                  (delete-file-recursively ".git")
 | 
					                  (delete-file-recursively ".git")
 | 
				
			||||||
                  #t))))
 | 
					                  #t))))
 | 
				
			||||||
| 
						 | 
					@ -588,6 +633,7 @@ confidence to have in an alignment.")
 | 
				
			||||||
    (inputs
 | 
					    (inputs
 | 
				
			||||||
     `(("openmpi" ,openmpi)
 | 
					     `(("openmpi" ,openmpi)
 | 
				
			||||||
       ("boost" ,boost)
 | 
					       ("boost" ,boost)
 | 
				
			||||||
 | 
					       ("sparsehash" ,sparsehash)
 | 
				
			||||||
       ("pigz" ,pigz)
 | 
					       ("pigz" ,pigz)
 | 
				
			||||||
       ("zlib" ,zlib)))
 | 
					       ("zlib" ,zlib)))
 | 
				
			||||||
    (supported-systems '("x86_64-linux"))
 | 
					    (supported-systems '("x86_64-linux"))
 | 
				
			||||||
| 
						 | 
					@ -774,6 +820,35 @@ and more accurate.  BWA-MEM also has better performance than BWA-backtrack for
 | 
				
			||||||
70-100bp Illumina reads.")
 | 
					70-100bp Illumina reads.")
 | 
				
			||||||
    (license license:gpl3+)))
 | 
					    (license license:gpl3+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public bwa-pssm
 | 
				
			||||||
 | 
					  (package (inherit bwa)
 | 
				
			||||||
 | 
					    (name "bwa-pssm")
 | 
				
			||||||
 | 
					    (version "0.5.11")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append "https://github.com/pkerpedjiev/bwa-pssm/"
 | 
				
			||||||
 | 
					                                  "archive/" version ".tar.gz"))
 | 
				
			||||||
 | 
					              (file-name (string-append name "-" version ".tar.gz"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "02p7mpbs4mlxmn84g2x4ghak638vbj4lqix2ipx5g84pz9bhdavg"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("gdsl" ,gdsl)
 | 
				
			||||||
 | 
					       ("zlib" ,zlib)
 | 
				
			||||||
 | 
					       ("perl" ,perl)))
 | 
				
			||||||
 | 
					    (home-page "http://bwa-pssm.binf.ku.dk/")
 | 
				
			||||||
 | 
					    (synopsis "Burrows-Wheeler transform-based probabilistic short read mapper")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "BWA-PSSM is a probabilistic short genomic sequence read aligner based on
 | 
				
			||||||
 | 
					the use of @dfn{position specific scoring matrices} (PSSM).  Like many of the
 | 
				
			||||||
 | 
					existing aligners it is fast and sensitive.  Unlike most other aligners,
 | 
				
			||||||
 | 
					however, it is also adaptible in the sense that one can direct the alignment
 | 
				
			||||||
 | 
					based on known biases within the data set.  It is coded as a modification of
 | 
				
			||||||
 | 
					the original BWA alignment program and shares the genome index structure as
 | 
				
			||||||
 | 
					well as many of the command line options.")
 | 
				
			||||||
 | 
					    (license license:gpl3+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public python2-bx-python
 | 
					(define-public python2-bx-python
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "python2-bx-python")
 | 
					    (name "python2-bx-python")
 | 
				
			||||||
| 
						 | 
					@ -809,6 +884,91 @@ and more accurate.  BWA-MEM also has better performance than BWA-backtrack for
 | 
				
			||||||
multiple sequence alignments.")
 | 
					multiple sequence alignments.")
 | 
				
			||||||
    (license license:expat)))
 | 
					    (license license:expat)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public python-pysam
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "python-pysam")
 | 
				
			||||||
 | 
					    (version "0.8.4")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (pypi-uri "pysam" version))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "1slx5mb94mzm5qzk52q270sab0sar95j67w1g1k452nz3s9j7krh"))))
 | 
				
			||||||
 | 
					    (build-system python-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:tests? #f ; tests are excluded in the manifest
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (alist-cons-before
 | 
				
			||||||
 | 
					        'build 'set-flags
 | 
				
			||||||
 | 
					        (lambda _
 | 
				
			||||||
 | 
					          (setenv "LDFLAGS" "-lncurses")
 | 
				
			||||||
 | 
					          (setenv "CFLAGS" "-D_CURSES_LIB=1"))
 | 
				
			||||||
 | 
					        %standard-phases)))
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("ncurses"           ,ncurses)
 | 
				
			||||||
 | 
					       ("zlib"              ,zlib)))
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("python-cython"     ,python-cython)
 | 
				
			||||||
 | 
					       ("python-setuptools" ,python-setuptools)))
 | 
				
			||||||
 | 
					    (home-page "https://github.com/pysam-developers/pysam")
 | 
				
			||||||
 | 
					    (synopsis "Python bindings to the SAMtools C API")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "Pysam is a Python module for reading and manipulating files in the
 | 
				
			||||||
 | 
					SAM/BAM format.  Pysam is a lightweight wrapper of the SAMtools C API.  It
 | 
				
			||||||
 | 
					also includes an interface for tabix.")
 | 
				
			||||||
 | 
					    (license license:expat)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public python2-pysam
 | 
				
			||||||
 | 
					  (package-with-python2 python-pysam))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public cd-hit
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "cd-hit")
 | 
				
			||||||
 | 
					    (version "4.6.5")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append "https://github.com/weizhongli/cdhit"
 | 
				
			||||||
 | 
					                                  "/releases/download/V" version
 | 
				
			||||||
 | 
					                                  "/cd-hit-v" version "-2016-0304.tar.gz"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "15db0hq38yyifwqx9b6l34z14jcq576dmjavhj8a426c18lvnhp3"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:tests? #f ; there are no tests
 | 
				
			||||||
 | 
					       #:make-flags
 | 
				
			||||||
 | 
					       ;; Executables are copied directly to the PREFIX.
 | 
				
			||||||
 | 
					       (list (string-append "PREFIX=" (assoc-ref %outputs "out") "/bin"))
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         ;; No "configure" script
 | 
				
			||||||
 | 
					         (delete 'configure)
 | 
				
			||||||
 | 
					         ;; Remove sources of non-determinism
 | 
				
			||||||
 | 
					         (add-after 'unpack 'be-timeless
 | 
				
			||||||
 | 
					           (lambda _
 | 
				
			||||||
 | 
					             (substitute* "cdhit-utility.c++"
 | 
				
			||||||
 | 
					               ((" \\(built on \" __DATE__ \"\\)") ""))
 | 
				
			||||||
 | 
					             (substitute* "cdhit-common.c++"
 | 
				
			||||||
 | 
					               (("__DATE__") "\"0\"")
 | 
				
			||||||
 | 
					               (("\", %s, \" __TIME__ \"\\\\n\", date") ""))
 | 
				
			||||||
 | 
					             #t))
 | 
				
			||||||
 | 
					         ;; The "install" target does not create the target directory
 | 
				
			||||||
 | 
					         (add-before 'install 'create-target-dir
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (mkdir-p (string-append (assoc-ref outputs "out") "/bin"))
 | 
				
			||||||
 | 
					             #t)))))
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("perl" ,perl)))
 | 
				
			||||||
 | 
					    (home-page "http://weizhongli-lab.org/cd-hit/")
 | 
				
			||||||
 | 
					    (synopsis "Cluster and compare protein or nucleotide sequences")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "CD-HIT is a program for clustering and comparing protein or nucleotide
 | 
				
			||||||
 | 
					sequences.  CD-HIT is designed to be fast and handle extremely large
 | 
				
			||||||
 | 
					databases.")
 | 
				
			||||||
 | 
					    ;; The manual says: "It can be copied under the GNU General Public License
 | 
				
			||||||
 | 
					    ;; version 2 (GPLv2)."
 | 
				
			||||||
 | 
					    (license license:gpl2)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public clipper
 | 
					(define-public clipper
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "clipper")
 | 
					    (name "clipper")
 | 
				
			||||||
| 
						 | 
					@ -848,6 +1008,46 @@ multiple sequence alignments.")
 | 
				
			||||||
     "CLIPper is a tool to define peaks in CLIP-seq datasets.")
 | 
					     "CLIPper is a tool to define peaks in CLIP-seq datasets.")
 | 
				
			||||||
    (license license:gpl2)))
 | 
					    (license license:gpl2)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public codingquarry
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "codingquarry")
 | 
				
			||||||
 | 
					    (version "2.0")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append
 | 
				
			||||||
 | 
					                    "mirror://sourceforge/codingquarry/CodingQuarry_v"
 | 
				
			||||||
 | 
					                    version ".tar.gz"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "0115hkjflsnfzn36xppwf9h9avfxlavr43djqmshkkzbgjzsz60i"))))
 | 
				
			||||||
 | 
					    (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"))
 | 
				
			||||||
 | 
					                    (doc (string-append out "/share/doc/codingquarry")))
 | 
				
			||||||
 | 
					               (install-file "INSTRUCTIONS.pdf" doc)
 | 
				
			||||||
 | 
					               (copy-recursively "QuarryFiles"
 | 
				
			||||||
 | 
					                                 (string-append out "/QuarryFiles"))
 | 
				
			||||||
 | 
					               (install-file "CodingQuarry" bin)
 | 
				
			||||||
 | 
					               (install-file "CufflinksGTF_to_CodingQuarryGFF3.py" bin)))))))
 | 
				
			||||||
 | 
					    (inputs `(("openmpi" ,openmpi)))
 | 
				
			||||||
 | 
					    (native-search-paths
 | 
				
			||||||
 | 
					     (list (search-path-specification
 | 
				
			||||||
 | 
					            (variable "QUARRY_PATH")
 | 
				
			||||||
 | 
					            (files '("QuarryFiles")))))
 | 
				
			||||||
 | 
					    (native-inputs `(("python" ,python-2))) ; Only Python 2 is supported
 | 
				
			||||||
 | 
					    (synopsis "Fungal gene predictor")
 | 
				
			||||||
 | 
					    (description "CodingQuarry is a highly accurate, self-training GHMM fungal
 | 
				
			||||||
 | 
					gene predictor designed to work with assembled, aligned RNA-seq transcripts.")
 | 
				
			||||||
 | 
					    (home-page "https://sourceforge.net/projects/codingquarry/")
 | 
				
			||||||
 | 
					    (license license:gpl3+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public couger
 | 
					(define-public couger
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "couger")
 | 
					    (name "couger")
 | 
				
			||||||
| 
						 | 
					@ -1129,28 +1329,70 @@ other types of unwanted sequence from high-throughput sequencing reads.")
 | 
				
			||||||
files.")
 | 
					files.")
 | 
				
			||||||
    (license license:expat)))
 | 
					    (license license:expat)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public python-pybigwig
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "python-pybigwig")
 | 
				
			||||||
 | 
					    (version "0.2.5")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (pypi-uri "pyBigWig" version))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "0yrpdxg3y0sny25x4w22lv1k47jzccqjmg7j4bp0hywklvp0hg7d"))
 | 
				
			||||||
 | 
					              (modules '((guix build utils)))
 | 
				
			||||||
 | 
					              (snippet
 | 
				
			||||||
 | 
					               '(begin
 | 
				
			||||||
 | 
					                  ;; Delete bundled libBigWig sources
 | 
				
			||||||
 | 
					                  (delete-file-recursively "libBigWig")))))
 | 
				
			||||||
 | 
					    (build-system python-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         (add-after 'unpack 'link-with-libBigWig
 | 
				
			||||||
 | 
					           (lambda* (#:key inputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (substitute* "setup.py"
 | 
				
			||||||
 | 
					               (("libs=\\[") "libs=[\"BigWig\", "))
 | 
				
			||||||
 | 
					             #t)))))
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("libbigwig" ,libbigwig)
 | 
				
			||||||
 | 
					       ("zlib" ,zlib)
 | 
				
			||||||
 | 
					       ("curl" ,curl)))
 | 
				
			||||||
 | 
					    (home-page "https://github.com/dpryan79/pyBigWig")
 | 
				
			||||||
 | 
					    (synopsis "Access bigWig files in Python using libBigWig")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "This package provides Python bindings to the libBigWig library for
 | 
				
			||||||
 | 
					accessing bigWig files.")
 | 
				
			||||||
 | 
					    (license license:expat)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public python2-pybigwig
 | 
				
			||||||
 | 
					  (let ((pybigwig (package-with-python2 python-pybigwig)))
 | 
				
			||||||
 | 
					    (package (inherit pybigwig)
 | 
				
			||||||
 | 
					      (native-inputs
 | 
				
			||||||
 | 
					       `(("python-setuptools" ,python2-setuptools))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public deeptools
 | 
					(define-public deeptools
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "deeptools")
 | 
					    (name "deeptools")
 | 
				
			||||||
    (version "1.5.11")
 | 
					    (version "2.1.1")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append
 | 
					              (uri (string-append "https://github.com/fidelram/deepTools/"
 | 
				
			||||||
                    "https://github.com/fidelram/deepTools/archive/"
 | 
					                                  "archive/" version ".tar.gz"))
 | 
				
			||||||
                    version ".tar.gz"))
 | 
					 | 
				
			||||||
              (file-name (string-append name "-" version ".tar.gz"))
 | 
					              (file-name (string-append name "-" version ".tar.gz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "1kaagygcbvjs9sxd9cqmskd02wcfp9imvb735r087w7hwqpvz6fs"))))
 | 
					                "1nmfin0zjdby3vay3r4flvz94dr6qjhj41ax4yz3vx13j6wz8izd"))))
 | 
				
			||||||
    (build-system python-build-system)
 | 
					    (build-system python-build-system)
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     `(#:python ,python-2))
 | 
					     `(#:python ,python-2))
 | 
				
			||||||
    (propagated-inputs
 | 
					    (inputs
 | 
				
			||||||
     `(("python-scipy" ,python2-scipy)
 | 
					     `(("python-scipy" ,python2-scipy)
 | 
				
			||||||
       ("python-numpy" ,python2-numpy)
 | 
					       ("python-numpy" ,python2-numpy)
 | 
				
			||||||
 | 
					       ("python-numpydoc" ,python2-numpydoc)
 | 
				
			||||||
       ("python-matplotlib" ,python2-matplotlib)
 | 
					       ("python-matplotlib" ,python2-matplotlib)
 | 
				
			||||||
       ("python-bx-python" ,python2-bx-python)
 | 
					       ("python-bx-python" ,python2-bx-python)
 | 
				
			||||||
       ("python-pysam" ,python2-pysam)))
 | 
					       ("python-pysam" ,python2-pysam)
 | 
				
			||||||
 | 
					       ("python-pybigwig" ,python2-pybigwig)))
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
     `(("python-mock" ,python2-mock) ;for tests
 | 
					     `(("python-mock" ,python2-mock) ;for tests
 | 
				
			||||||
       ("python-pytz" ,python2-pytz) ;for tests
 | 
					       ("python-pytz" ,python2-pytz) ;for tests
 | 
				
			||||||
| 
						 | 
					@ -1851,24 +2093,17 @@ from high-throughput sequencing assays.")
 | 
				
			||||||
              (snippet '(substitute* "build.xml"
 | 
					              (snippet '(substitute* "build.xml"
 | 
				
			||||||
                          (("failifexecutionfails=\"true\"")
 | 
					                          (("failifexecutionfails=\"true\"")
 | 
				
			||||||
                           "failifexecutionfails=\"false\"")))))
 | 
					                           "failifexecutionfails=\"false\"")))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system ant-build-system)
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     `(#:modules ((srfi srfi-1)
 | 
					     `(#:tests? #f ; test require Internet access
 | 
				
			||||||
                  (guix build gnu-build-system)
 | 
					       #:make-flags
 | 
				
			||||||
                  (guix build utils))
 | 
					       (list (string-append "-Ddist=" (assoc-ref %outputs "out")
 | 
				
			||||||
       #:phases (alist-replace
 | 
					                            "/share/java/htsjdk/"))
 | 
				
			||||||
                 'build
 | 
					       #:build-target "all"
 | 
				
			||||||
                 (lambda _
 | 
					       #:phases
 | 
				
			||||||
                   (setenv "JAVA_HOME" (assoc-ref %build-inputs "jdk"))
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
                   (zero? (system* "ant" "all"
 | 
					         ;; The build phase also installs the jars
 | 
				
			||||||
                                   (string-append "-Ddist="
 | 
					         (delete 'install))))
 | 
				
			||||||
                                                  (assoc-ref %outputs "out")
 | 
					 | 
				
			||||||
                                                  "/share/java/htsjdk/"))))
 | 
					 | 
				
			||||||
                 (fold alist-delete %standard-phases
 | 
					 | 
				
			||||||
                       '(configure install check)))))
 | 
					 | 
				
			||||||
    (native-inputs
 | 
					 | 
				
			||||||
     `(("ant" ,ant)
 | 
					 | 
				
			||||||
       ("jdk" ,icedtea "jdk")))
 | 
					 | 
				
			||||||
    (home-page "http://samtools.github.io/htsjdk/")
 | 
					    (home-page "http://samtools.github.io/htsjdk/")
 | 
				
			||||||
    (synopsis "Java API for high-throughput sequencing data (HTS) formats")
 | 
					    (synopsis "Java API for high-throughput sequencing data (HTS) formats")
 | 
				
			||||||
    (description
 | 
					    (description
 | 
				
			||||||
| 
						 | 
					@ -2405,6 +2640,44 @@ the phenotype as it models the data.")
 | 
				
			||||||
generated using the PacBio Iso-Seq protocol.")
 | 
					generated using the PacBio Iso-Seq protocol.")
 | 
				
			||||||
      (license license:bsd-3))))
 | 
					      (license license:bsd-3))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public pyicoteo
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "pyicoteo")
 | 
				
			||||||
 | 
					    (version "2.0.7")
 | 
				
			||||||
 | 
					    (source
 | 
				
			||||||
 | 
					     (origin
 | 
				
			||||||
 | 
					       (method url-fetch)
 | 
				
			||||||
 | 
					       (uri (string-append "https://bitbucket.org/regulatorygenomicsupf/"
 | 
				
			||||||
 | 
					                           "pyicoteo/get/v" version ".tar.bz2"))
 | 
				
			||||||
 | 
					       (file-name (string-append name "-" version ".tar.bz2"))
 | 
				
			||||||
 | 
					       (sha256
 | 
				
			||||||
 | 
					        (base32
 | 
				
			||||||
 | 
					         "0d6087f29xp8wxwlj111c3sylli98n0l8ry58c51ixzq0zfm50wa"))))
 | 
				
			||||||
 | 
					    (build-system python-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:python ,python-2 ; does not work with Python 3
 | 
				
			||||||
 | 
					       #:tests? #f))      ; there are no tests
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("python2-matplotlib" ,python2-matplotlib)))
 | 
				
			||||||
 | 
					    (home-page "https://bitbucket.org/regulatorygenomicsupf/pyicoteo")
 | 
				
			||||||
 | 
					    (synopsis "Analyze high-throughput genetic sequencing data")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "Pyicoteo is a suite of tools for the analysis of high-throughput genetic
 | 
				
			||||||
 | 
					sequencing data.  It works with genomic coordinates.  There are currently six
 | 
				
			||||||
 | 
					different command-line tools:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@enumerate
 | 
				
			||||||
 | 
					@item pyicoregion: for generating exploratory regions automatically;
 | 
				
			||||||
 | 
					@item pyicoenrich: for differential enrichment between two conditions;
 | 
				
			||||||
 | 
					@item pyicoclip: for calling CLIP-Seq peaks without a control;
 | 
				
			||||||
 | 
					@item pyicos: for genomic coordinates manipulation;
 | 
				
			||||||
 | 
					@item pyicoller: for peak calling on punctuated ChIP-Seq;
 | 
				
			||||||
 | 
					@item pyicount: to count how many reads from N experiment files overlap in a
 | 
				
			||||||
 | 
					  region file;
 | 
				
			||||||
 | 
					@item pyicotrocol: to combine operations from pyicoteo.
 | 
				
			||||||
 | 
					@end enumerate\n")
 | 
				
			||||||
 | 
					    (license license:gpl3+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public prodigal
 | 
					(define-public prodigal
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "prodigal")
 | 
					    (name "prodigal")
 | 
				
			||||||
| 
						 | 
					@ -3664,16 +3937,38 @@ barplots or heatmaps.")
 | 
				
			||||||
packages.")
 | 
					packages.")
 | 
				
			||||||
    (license license:artistic2.0)))
 | 
					    (license license:artistic2.0)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public r-dnacopy
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "r-dnacopy")
 | 
				
			||||||
 | 
					    (version "1.44.0")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (bioconductor-uri "DNAcopy" version))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "1c1px4rbr36xx929hp59k7ca9k5ab66qmn8k63fk13278ncm6h66"))))
 | 
				
			||||||
 | 
					    (properties
 | 
				
			||||||
 | 
					     `((upstream-name . "DNAcopy")))
 | 
				
			||||||
 | 
					    (build-system r-build-system)
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("gfortran" ,gfortran)))
 | 
				
			||||||
 | 
					    (home-page "https://bioconductor.org/packages/DNAcopy")
 | 
				
			||||||
 | 
					    (synopsis "Implementation of a circular binary segmentation algorithm")
 | 
				
			||||||
 | 
					    (description "This package implements the circular binary segmentation (CBS)
 | 
				
			||||||
 | 
					algorithm to segment DNA copy number data and identify genomic regions with
 | 
				
			||||||
 | 
					abnormal copy number.")
 | 
				
			||||||
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public r-s4vectors
 | 
					(define-public r-s4vectors
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "r-s4vectors")
 | 
					    (name "r-s4vectors")
 | 
				
			||||||
    (version "0.8.5")
 | 
					    (version "0.8.11")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (bioconductor-uri "S4Vectors" version))
 | 
					              (uri (bioconductor-uri "S4Vectors" version))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "10f4jxwlwsiy7zhb3kgp6anid0d7wkvrrljl80r3nhx38yr24l5k"))))
 | 
					                "12iibcs63m9iy7f45wgjcqsna2dnqwckphk682389grshz0g4x66"))))
 | 
				
			||||||
    (properties
 | 
					    (properties
 | 
				
			||||||
     `((upstream-name . "S4Vectors")
 | 
					     `((upstream-name . "S4Vectors")
 | 
				
			||||||
       (r-repository . bioconductor)))
 | 
					       (r-repository . bioconductor)))
 | 
				
			||||||
| 
						 | 
					@ -3695,13 +3990,13 @@ S4Vectors package itself.")
 | 
				
			||||||
(define-public r-iranges
 | 
					(define-public r-iranges
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "r-iranges")
 | 
					    (name "r-iranges")
 | 
				
			||||||
    (version "2.4.6")
 | 
					    (version "2.4.8")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (bioconductor-uri "IRanges" version))
 | 
					              (uri (bioconductor-uri "IRanges" version))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "00x0266sys1fc5ipa639y84p6m6mgspk2xb099vcwmd3w4hypj9d"))))
 | 
					                "0hi5k1j5jm4xrg1l506g279qw1xkvp1gg1zgsjzpbng4vx4k4iyl"))))
 | 
				
			||||||
    (properties
 | 
					    (properties
 | 
				
			||||||
     `((upstream-name . "IRanges")
 | 
					     `((upstream-name . "IRanges")
 | 
				
			||||||
       (r-repository . bioconductor)))
 | 
					       (r-repository . bioconductor)))
 | 
				
			||||||
| 
						 | 
					@ -4141,7 +4436,9 @@ extracting the desired features in a convenient format.")
 | 
				
			||||||
    (version "3.2.2")
 | 
					    (version "3.2.2")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (bioconductor-uri "GO.db" version))
 | 
					              (uri (string-append "http://www.bioconductor.org/packages/"
 | 
				
			||||||
 | 
					                                  "release/data/annotation/src/contrib/GO.db_"
 | 
				
			||||||
 | 
					                                  version ".tar.gz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "00gariag9ampz82dh0xllrc26r85d7vdcwc0vca5zdy147rwxr7f"))))
 | 
					                "00gariag9ampz82dh0xllrc26r85d7vdcwc0vca5zdy147rwxr7f"))))
 | 
				
			||||||
| 
						 | 
					@ -4453,3 +4750,44 @@ Using a hidden Markov model, R/qtl allows to estimate genetic maps, to
 | 
				
			||||||
identify genotyping errors, and to perform single-QTL and two-QTL,
 | 
					identify genotyping errors, and to perform single-QTL and two-QTL,
 | 
				
			||||||
two-dimensional genome scans.")
 | 
					two-dimensional genome scans.")
 | 
				
			||||||
  (license license:gpl3)))
 | 
					  (license license:gpl3)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public pepr
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "pepr")
 | 
				
			||||||
 | 
					    (version "1.0.9")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append "https://pypi.python.org/packages/source/P"
 | 
				
			||||||
 | 
					                                  "/PePr/PePr-" version ".tar.gz"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "0qxjfdpl1b1y53nccws2d85f6k74zwmx8y8sd9rszcqhfayx6gdx"))))
 | 
				
			||||||
 | 
					    (build-system python-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:python ,python-2 ; python2 only
 | 
				
			||||||
 | 
					       #:tests? #f ; no tests included
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         ;; When setuptools is used a ".egg" archive is generated and
 | 
				
			||||||
 | 
					         ;; installed.  This makes it hard to actually run PePr.  This issue
 | 
				
			||||||
 | 
					         ;; has been reported upstream:
 | 
				
			||||||
 | 
					         ;; https://github.com/shawnzhangyx/PePr/issues/9
 | 
				
			||||||
 | 
					         (add-after 'unpack 'disable-egg-generation
 | 
				
			||||||
 | 
					           (lambda _
 | 
				
			||||||
 | 
					             (substitute* "setup.py"
 | 
				
			||||||
 | 
					               (("from setuptools import setup")
 | 
				
			||||||
 | 
					                "from distutils.core import setup"))
 | 
				
			||||||
 | 
					             #t)))))
 | 
				
			||||||
 | 
					    (propagated-inputs
 | 
				
			||||||
 | 
					     `(("python2-numpy" ,python2-numpy)
 | 
				
			||||||
 | 
					       ("python2-scipy" ,python2-scipy)
 | 
				
			||||||
 | 
					       ("python2-pysam" ,python2-pysam)))
 | 
				
			||||||
 | 
					    (home-page "https://code.google.com/p/pepr-chip-seq/")
 | 
				
			||||||
 | 
					    (synopsis "Peak-calling and prioritization pipeline for ChIP-Seq data")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "PePr is a ChIP-Seq peak calling or differential binding analysis tool
 | 
				
			||||||
 | 
					that is primarily designed for data with biological replicates.  It uses a
 | 
				
			||||||
 | 
					negative binomial distribution to model the read counts among the samples in
 | 
				
			||||||
 | 
					the same group, and look for consistent differences between ChIP and control
 | 
				
			||||||
 | 
					group or two ChIP groups run under different conditions.")
 | 
				
			||||||
 | 
					    (license license:gpl3+)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -202,7 +202,7 @@ interface, for the Transmission BitTorrent daemon.")
 | 
				
			||||||
(define-public aria2
 | 
					(define-public aria2
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "aria2")
 | 
					    (name "aria2")
 | 
				
			||||||
    (version "1.20.0")
 | 
					    (version "1.21.0")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "https://github.com/tatsuhiro-t/aria2/"
 | 
					              (uri (string-append "https://github.com/tatsuhiro-t/aria2/"
 | 
				
			||||||
| 
						 | 
					@ -210,7 +210,7 @@ interface, for the Transmission BitTorrent daemon.")
 | 
				
			||||||
                                  name "-" version ".tar.xz"))
 | 
					                                  name "-" version ".tar.xz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "1l4gzz3yr0cl6a9xdy7843c5sb7afyq0i80wi2hasfpfdx5k95mz"))))
 | 
					                "1035rzx9y7qv4p7cv04f461343dxha7ikprch059x2fci8n5yp12"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     `(#:configure-flags '("--enable-libaria2")
 | 
					     `(#:configure-flags '("--enable-libaria2")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,7 @@
 | 
				
			||||||
;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
 | 
					;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
 | 
				
			||||||
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 | 
					;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 | 
				
			||||||
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 | 
					;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 | 
				
			||||||
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
 | 
					;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -44,14 +44,14 @@
 | 
				
			||||||
(define-public libcddb
 | 
					(define-public libcddb
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "libcddb")
 | 
					    (name "libcddb")
 | 
				
			||||||
    (version "1.3.0")
 | 
					    (version "1.3.2")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
             (method url-fetch)
 | 
					             (method url-fetch)
 | 
				
			||||||
             (uri (string-append "mirror://sourceforge/libcddb/libcddb-"
 | 
					             (uri (string-append "mirror://sourceforge/libcddb/libcddb-"
 | 
				
			||||||
                                 version ".tar.bz2"))
 | 
					                                 version ".tar.bz2"))
 | 
				
			||||||
             (sha256
 | 
					             (sha256
 | 
				
			||||||
              (base32
 | 
					              (base32
 | 
				
			||||||
               "1y8bfy12dwm41m1jahayn3v47dm34fmz7m9cjxyh7xcw6fp3lzaf"))))
 | 
					               "0fr21a7vprdyy1bq6s99m0x420c9jm5fipsd63pqv8qyfkhhxkim"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (arguments '(#:tests? #f))      ; tests rely on access to external servers
 | 
					    (arguments '(#:tests? #f))      ; tests rely on access to external servers
 | 
				
			||||||
    (home-page "http://libcddb.sourceforge.net/")
 | 
					    (home-page "http://libcddb.sourceforge.net/")
 | 
				
			||||||
| 
						 | 
					@ -189,14 +189,14 @@ reconstruction capability.")
 | 
				
			||||||
(define-public dvdisaster
 | 
					(define-public dvdisaster
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "dvdisaster")
 | 
					    (name "dvdisaster")
 | 
				
			||||||
    (version "0.72.6")
 | 
					    (version "0.79.5")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
             (method url-fetch)
 | 
					             (method url-fetch)
 | 
				
			||||||
             (uri (string-append "http://dvdisaster.net/downloads/dvdisaster-"
 | 
					             (uri (string-append "http://dvdisaster.net/downloads/dvdisaster-"
 | 
				
			||||||
                                 version ".tar.bz2"))
 | 
					                                 version ".tar.bz2"))
 | 
				
			||||||
             (sha256
 | 
					             (sha256
 | 
				
			||||||
              (base32
 | 
					              (base32
 | 
				
			||||||
               "0sqrprc5rh3shnfli25m2wy0i5f83db54iv04s5s7bxf77m7sy79"))))
 | 
					               "0f8gjnia2fxcbmhl8b3qkr5b7idl8m855dw7xw2fnmbqwvcm6k4w"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (inputs
 | 
					    (inputs
 | 
				
			||||||
     `(("gtk+" ,gtk+-2)))
 | 
					     `(("gtk+" ,gtk+-2)))
 | 
				
			||||||
| 
						 | 
					@ -208,14 +208,7 @@ reconstruction capability.")
 | 
				
			||||||
     `(;; Parallel builds appear to be unsafe, see
 | 
					     `(;; Parallel builds appear to be unsafe, see
 | 
				
			||||||
       ;; <http://hydra.gnu.org/build/49331/nixlog/1/raw>.
 | 
					       ;; <http://hydra.gnu.org/build/49331/nixlog/1/raw>.
 | 
				
			||||||
       #:parallel-build? #f
 | 
					       #:parallel-build? #f
 | 
				
			||||||
       #:tests? #f ; no check target
 | 
					       #:tests? #f)) ; no check target
 | 
				
			||||||
       #:phases
 | 
					 | 
				
			||||||
         (alist-cons-before
 | 
					 | 
				
			||||||
          'patch-source-shebangs 'sanitise
 | 
					 | 
				
			||||||
          (lambda _
 | 
					 | 
				
			||||||
            ;; delete dangling symlink
 | 
					 | 
				
			||||||
            (delete-file ".#GNUmakefile"))
 | 
					 | 
				
			||||||
          %standard-phases)))
 | 
					 | 
				
			||||||
    (home-page "http://dvdisaster.net/en/index.html")
 | 
					    (home-page "http://dvdisaster.net/en/index.html")
 | 
				
			||||||
    (synopsis "Error correcting codes for optical media images")
 | 
					    (synopsis "Error correcting codes for optical media images")
 | 
				
			||||||
    (description "Optical media (CD,DVD,BD) keep their data only for a
 | 
					    (description "Optical media (CD,DVD,BD) keep their data only for a
 | 
				
			||||||
| 
						 | 
					@ -240,9 +233,8 @@ capacity is user-selectable.")
 | 
				
			||||||
    (version "1.4.0")
 | 
					    (version "1.4.0")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
             (method url-fetch)
 | 
					             (method url-fetch)
 | 
				
			||||||
             (uri (string-append "https://github.com/lipnitsk/libcue/releases"
 | 
					             (uri (string-append "https://github.com/lipnitsk/libcue/archive/v"
 | 
				
			||||||
                                 "/download/v" version
 | 
					                                 version ".tar.bz2"))
 | 
				
			||||||
                                 "/libcue-" version ".tar.bz2"))
 | 
					 | 
				
			||||||
             (sha256
 | 
					             (sha256
 | 
				
			||||||
              (base32
 | 
					              (base32
 | 
				
			||||||
               "17kjd7rjz1bvfn44n3n2bjb7a1ywd0yc0g4sqp5ihf9b5bn7cwlb"))))
 | 
					               "17kjd7rjz1bvfn44n3n2bjb7a1ywd0yc0g4sqp5ihf9b5bn7cwlb"))))
 | 
				
			||||||
| 
						 | 
					@ -287,15 +279,15 @@ from an audio CD.")
 | 
				
			||||||
(define-public abcde
 | 
					(define-public abcde
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "abcde")
 | 
					    (name "abcde")
 | 
				
			||||||
    (version "2.7")
 | 
					    (version "2.7.1")
 | 
				
			||||||
    (home-page "http://abcde.einval.com/")
 | 
					    (home-page "https://abcde.einval.com/")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append home-page "/download/abcde-"
 | 
					              (uri (string-append home-page "/download/abcde-"
 | 
				
			||||||
                                  version ".tar.gz"))
 | 
					                                  version ".tar.gz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "0ikpffzvacadh6vj9qlary8126j1zrd2knp9gvivmp7y1656jj01"))
 | 
					                "0l7j0nk8p30s97285i418rv9ym9bgns7bn6l8gldw3mjhnby609l"))
 | 
				
			||||||
              (modules '((guix build utils)))
 | 
					              (modules '((guix build utils)))
 | 
				
			||||||
              (snippet
 | 
					              (snippet
 | 
				
			||||||
               '(substitute* "Makefile"
 | 
					               '(substitute* "Makefile"
 | 
				
			||||||
| 
						 | 
					@ -305,37 +297,36 @@ from an audio CD.")
 | 
				
			||||||
                   (string-append "etcdir = $(prefix)/etc\n"))))))
 | 
					                   (string-append "etcdir = $(prefix)/etc\n"))))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     '(#:phases (alist-replace
 | 
					     '(#:phases
 | 
				
			||||||
                 'configure
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
                 (lambda* (#:key outputs inputs #:allow-other-keys)
 | 
					         (replace 'configure
 | 
				
			||||||
                   (substitute* "Makefile"
 | 
					           (lambda* (#:key outputs inputs #:allow-other-keys)
 | 
				
			||||||
                     (("^prefix = .*$")
 | 
					             (substitute* "Makefile"
 | 
				
			||||||
                      (string-append "prefix = "
 | 
					               (("^prefix = .*$")
 | 
				
			||||||
                                     (assoc-ref outputs "out")
 | 
					                (string-append "prefix = "
 | 
				
			||||||
                                     "\n"))))
 | 
					                               (assoc-ref outputs "out")
 | 
				
			||||||
                 (alist-cons-after
 | 
					                               "\n")))))
 | 
				
			||||||
                  'install 'wrap
 | 
					         (add-after 'install 'wrap
 | 
				
			||||||
                  (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
					           (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
				
			||||||
                    (let ((wget   (assoc-ref inputs "wget"))
 | 
					             (let ((wget   (assoc-ref inputs "wget"))
 | 
				
			||||||
                          (vorbis (assoc-ref inputs "vorbis-tools"))
 | 
					                   (vorbis (assoc-ref inputs "vorbis-tools"))
 | 
				
			||||||
                          (parano (assoc-ref inputs "cdparanoia"))
 | 
					                   (parano (assoc-ref inputs "cdparanoia"))
 | 
				
			||||||
                          (which  (assoc-ref inputs "which"))
 | 
					                   (which  (assoc-ref inputs "which"))
 | 
				
			||||||
                          (discid (assoc-ref inputs "cd-discid"))
 | 
					                   (discid (assoc-ref inputs "cd-discid"))
 | 
				
			||||||
                          (out    (assoc-ref outputs "out")))
 | 
					                   (out    (assoc-ref outputs "out")))
 | 
				
			||||||
                      (define (wrap file)
 | 
					               (define (wrap file)
 | 
				
			||||||
                        (wrap-program file
 | 
					                 (wrap-program file
 | 
				
			||||||
                                      `("PATH" ":" prefix
 | 
					                               `("PATH" ":" prefix
 | 
				
			||||||
                                        (,(string-append out "/bin:"
 | 
					                                 (,(string-append out "/bin:"
 | 
				
			||||||
                                                         wget "/bin:"
 | 
					                                                  wget "/bin:"
 | 
				
			||||||
                                                         which "/bin:"
 | 
					                                                  which "/bin:"
 | 
				
			||||||
                                                         vorbis "/bin:"
 | 
					                                                  vorbis "/bin:"
 | 
				
			||||||
                                                         discid "/bin:"
 | 
					                                                  discid "/bin:"
 | 
				
			||||||
                                                         parano "/bin")))))
 | 
					                                                  parano "/bin")))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                      (for-each wrap
 | 
					               (for-each wrap
 | 
				
			||||||
                                (find-files (string-append out "/bin")
 | 
					                         (find-files (string-append out "/bin")
 | 
				
			||||||
                                            ".*"))))
 | 
					                                     ".*"))))))
 | 
				
			||||||
                  %standard-phases))
 | 
					 | 
				
			||||||
       #:tests? #f))
 | 
					       #:tests? #f))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    (inputs `(("wget" ,wget)
 | 
					    (inputs `(("wget" ,wget)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,7 @@
 | 
				
			||||||
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 | 
					;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 | 
				
			||||||
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 | 
					;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 | 
				
			||||||
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
					;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -89,15 +90,14 @@ with a flexible variety of user interfaces.")
 | 
				
			||||||
(define-public cppunit
 | 
					(define-public cppunit
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "cppunit")
 | 
					    (name "cppunit")
 | 
				
			||||||
    (version "1.12.1")
 | 
					    (version "1.13.2")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
             (method url-fetch)
 | 
					             (method url-fetch)
 | 
				
			||||||
              (uri (string-append "mirror://sourceforge/cppunit/" name "/"
 | 
					              (uri (string-append "http://dev-www.libreoffice.org/src/"
 | 
				
			||||||
                                  name "-"
 | 
					                                  name "-" version ".tar.gz"))
 | 
				
			||||||
                                  version ".tar.gz"))
 | 
					 | 
				
			||||||
             (sha256
 | 
					             (sha256
 | 
				
			||||||
              (base32
 | 
					              (base32
 | 
				
			||||||
               "0jm49v5rmc5qw34vqs56gy8xja1dhci73bmh23cig4kcir6a0a5c"))))
 | 
					               "17s2kzmkw3kfjhpp72rfppyd7syr7bdq5s69syj2nvrlwd3d4irz"))))
 | 
				
			||||||
    ;; Explicitly link with libdl. This is expected to be done by packages
 | 
					    ;; Explicitly link with libdl. This is expected to be done by packages
 | 
				
			||||||
    ;; relying on cppunit for their tests. However, not all of them do.
 | 
					    ;; relying on cppunit for their tests. However, not all of them do.
 | 
				
			||||||
    ;; If we added the linker flag to such packages, we would pollute all
 | 
					    ;; If we added the linker flag to such packages, we would pollute all
 | 
				
			||||||
| 
						 | 
					@ -105,7 +105,7 @@ with a flexible variety of user interfaces.")
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     `(#:make-flags '("LDFLAGS=-ldl")))
 | 
					     `(#:make-flags '("LDFLAGS=-ldl")))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (home-page "http://sourceforge.net/projects/cppunit/")
 | 
					    (home-page "https://wiki.freedesktop.org/www/Software/cppunit/")
 | 
				
			||||||
    (synopsis "Unit testing framework for C++")
 | 
					    (synopsis "Unit testing framework for C++")
 | 
				
			||||||
    (description "CppUnit is the C++ port of the famous JUnit framework for
 | 
					    (description "CppUnit is the C++ port of the famous JUnit framework for
 | 
				
			||||||
unit testing.  Test output is in XML for automatic testing and GUI based for
 | 
					unit testing.  Test output is in XML for automatic testing and GUI based for
 | 
				
			||||||
| 
						 | 
					@ -115,17 +115,17 @@ supervised tests.")
 | 
				
			||||||
(define-public catch-framework
 | 
					(define-public catch-framework
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "catch")
 | 
					    (name "catch")
 | 
				
			||||||
    (version "1.1.3")                  ;Sub-minor is the build number
 | 
					    (version "1.3.5")                  ;Sub-minor is the build number
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method git-fetch)
 | 
					              (method git-fetch)
 | 
				
			||||||
              (uri (git-reference
 | 
					              (uri (git-reference
 | 
				
			||||||
                    (url "https://github.com/philsquared/Catch")
 | 
					                    (url "https://github.com/philsquared/Catch")
 | 
				
			||||||
                    ;; Semi-arbitrary.
 | 
					                    ;; Semi-arbitrary.
 | 
				
			||||||
                    (commit "c51e86819d")))
 | 
					                    (commit "ae5ee2cf63d6d67bd1369b512d2a7b60b571c907")))
 | 
				
			||||||
              (file-name (string-append name "-" version))
 | 
					              (file-name (string-append name "-" version))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "0kgi7wxxysgjbpisqfj4dj0k19cyyai92f001zi8gzkybd4fkgv5"))))
 | 
					                "1yfb3lxv929szqy1nw9xw3d45wzkppziqshkjxvrb1fdmf46x564"))))
 | 
				
			||||||
    (build-system trivial-build-system)
 | 
					    (build-system trivial-build-system)
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     `(#:modules ((guix build utils))
 | 
					     `(#:modules ((guix build utils))
 | 
				
			||||||
| 
						 | 
					@ -172,3 +172,24 @@ different compilers.  Cmocka supports several different message output formats
 | 
				
			||||||
like Test Anything Protocol, Subunit, xUnit XML or the original cmockery output
 | 
					like Test Anything Protocol, Subunit, xUnit XML or the original cmockery output
 | 
				
			||||||
format.")
 | 
					format.")
 | 
				
			||||||
    (license asl2.0)))
 | 
					    (license asl2.0)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public cppcheck
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "cppcheck")
 | 
				
			||||||
 | 
					    (version "1.72")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					      (method url-fetch)
 | 
				
			||||||
 | 
					      (uri (string-append "https://github.com/danmar/cppcheck/archive/"
 | 
				
			||||||
 | 
					                          version ".tar.gz"))
 | 
				
			||||||
 | 
					      (sha256
 | 
				
			||||||
 | 
					       (base32 "0zxaixhqi4vmj7xj56gzadggcbjhbjjm6abyr86qlan23sg98667"))
 | 
				
			||||||
 | 
					      (file-name (string-append name "-" version ".tar.gz"))))
 | 
				
			||||||
 | 
					    (build-system cmake-build-system)
 | 
				
			||||||
 | 
					    (home-page "http://cppcheck.sourceforge.net")
 | 
				
			||||||
 | 
					    (synopsis "Static C/C++ code analyzer")
 | 
				
			||||||
 | 
					    (description "Cppcheck is a static code analyzer for C and C++.  Unlike
 | 
				
			||||||
 | 
					C/C++ compilers and many other analysis tools it does not detect syntax errors
 | 
				
			||||||
 | 
					in the code.  Cppcheck primarily detects the types of bugs that the compilers
 | 
				
			||||||
 | 
					normally do not detect.  The goal is to detect only real errors in the code
 | 
				
			||||||
 | 
					(i.e. have zero false positives).")
 | 
				
			||||||
 | 
					    (license gpl3+)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -68,14 +68,14 @@ a major mode for Emacs for examining the flowcharts that it produces.")
 | 
				
			||||||
(define-public complexity
 | 
					(define-public complexity
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "complexity")
 | 
					    (name "complexity")
 | 
				
			||||||
    (version "1.3")
 | 
					    (version "1.10")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "mirror://gnu/complexity/complexity-"
 | 
					              (uri (string-append "mirror://gnu/complexity/complexity-"
 | 
				
			||||||
                                  version ".tar.gz"))
 | 
					                                  version ".tar.xz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "19bc64sxpqd5rqylqaa7dijz2x7qp2b0dg3ah3fb3qbcvd8b4wgy"))))
 | 
					                "0lr0l9kj2w3jilz9h9y4np9pf9i9ccpy6331lanki2fnz4z8ldvd"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
     `(("texinfo" ,texinfo)
 | 
					     `(("texinfo" ,texinfo)
 | 
				
			||||||
| 
						 | 
					@ -190,7 +190,7 @@ COCOMO model or user-provided parameters.")
 | 
				
			||||||
(define-public the-silver-searcher
 | 
					(define-public the-silver-searcher
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "the-silver-searcher")
 | 
					    (name "the-silver-searcher")
 | 
				
			||||||
    (version "0.29.1")
 | 
					    (version "0.31.0")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append
 | 
					              (uri (string-append
 | 
				
			||||||
| 
						 | 
					@ -198,7 +198,7 @@ COCOMO model or user-provided parameters.")
 | 
				
			||||||
                    version ".tar.gz"))
 | 
					                    version ".tar.gz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "0ah7vcqprl9hhafi68bvzaiywy7dfm28zf7kpw3xrlqzfn0vg7kp"))
 | 
					                "1a3xncsq3x8pci194k484s5mdqij2sirpz6dj6711n2p8mzq5g31"))
 | 
				
			||||||
              (file-name (string-append name "-" version ".tar.gz"))))
 | 
					              (file-name (string-append name "-" version ".tar.gz"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
| 
						 | 
					@ -284,14 +284,14 @@ stack traces.")
 | 
				
			||||||
(define-public lcov
 | 
					(define-public lcov
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "lcov")
 | 
					    (name "lcov")
 | 
				
			||||||
    (version "1.10")
 | 
					    (version "1.12")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "mirror://sourceforge/ltp/lcov-"
 | 
					              (uri (string-append "mirror://sourceforge/ltp/lcov-"
 | 
				
			||||||
                                  version ".tar.gz"))
 | 
					                                  version ".tar.gz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "13xq2ln4jjasslqzzhr5g11q1c19gwpng1jphzbzmylmrjz62ila"))))
 | 
					                "19wfifdpxxivhq9adbphanjfga9bg9spms9v7c3589wndjff8x5l"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     '(#:make-flags (let ((out (assoc-ref %outputs "out")))
 | 
					     '(#:make-flags (let ((out (assoc-ref %outputs "out")))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -268,6 +268,7 @@
 | 
				
			||||||
  (let ((perl (package
 | 
					  (let ((perl (package
 | 
				
			||||||
                (inherit perl)
 | 
					                (inherit perl)
 | 
				
			||||||
                (name "perl-boot0")
 | 
					                (name "perl-boot0")
 | 
				
			||||||
 | 
					                (replacement #f)
 | 
				
			||||||
                (arguments
 | 
					                (arguments
 | 
				
			||||||
                 (substitute-keyword-arguments (package-arguments perl)
 | 
					                 (substitute-keyword-arguments (package-arguments perl)
 | 
				
			||||||
                   ((#:phases phases)
 | 
					                   ((#:phases phases)
 | 
				
			||||||
| 
						 | 
					@ -870,10 +871,10 @@ and binaries, plus debugging symbols in the 'debug' output), and Binutils.")
 | 
				
			||||||
              ("libc-debug" ,glibc-final "debug")))))
 | 
					              ("libc-debug" ,glibc-final "debug")))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public gcc-toolchain-4.8
 | 
					(define-public gcc-toolchain-4.8
 | 
				
			||||||
  (gcc-toolchain gcc-final))
 | 
					  (gcc-toolchain gcc-4.8))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public gcc-toolchain-4.9
 | 
					(define-public gcc-toolchain-4.9
 | 
				
			||||||
  (gcc-toolchain gcc-4.9))
 | 
					  (gcc-toolchain gcc-final))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public gcc-toolchain-5
 | 
					(define-public gcc-toolchain-5
 | 
				
			||||||
  (gcc-toolchain gcc-5))
 | 
					  (gcc-toolchain gcc-5))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -54,16 +54,7 @@
 | 
				
			||||||
   (inputs `(("gnutls" ,gnutls)
 | 
					   (inputs `(("gnutls" ,gnutls)
 | 
				
			||||||
             ("gss" ,gss)
 | 
					             ("gss" ,gss)
 | 
				
			||||||
             ("libidn" ,libidn)
 | 
					             ("libidn" ,libidn)
 | 
				
			||||||
 | 
					             ("libssh2" ,libssh2)
 | 
				
			||||||
             ;; XXX libssh2-1.4 is a temporary package for use only by curl,
 | 
					 | 
				
			||||||
             ;; to allow most users of libssh2 to get the security update for
 | 
					 | 
				
			||||||
             ;; CVE-2016-7087 while postponing the large number of rebuilds
 | 
					 | 
				
			||||||
             ;; entailed by updating curl.  Soon, curl should be updated to
 | 
					 | 
				
			||||||
             ;; use the latest libssh2 and libssh2-1.4 should be removed.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
             ;; XXX libssh2-1.4 is vulnerable to CVE-2016-0787.
 | 
					 | 
				
			||||||
             ("libssh2" ,libssh2-1.4)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
             ("openldap" ,openldap)
 | 
					             ("openldap" ,openldap)
 | 
				
			||||||
             ("zlib" ,zlib)))
 | 
					             ("zlib" ,zlib)))
 | 
				
			||||||
   (native-inputs
 | 
					   (native-inputs
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,6 +28,7 @@
 | 
				
			||||||
(define-module (gnu packages databases)
 | 
					(define-module (gnu packages databases)
 | 
				
			||||||
  #:use-module (gnu packages)
 | 
					  #:use-module (gnu packages)
 | 
				
			||||||
  #:use-module (gnu packages bash)
 | 
					  #:use-module (gnu packages bash)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages boost)
 | 
				
			||||||
  #:use-module (gnu packages perl)
 | 
					  #:use-module (gnu packages perl)
 | 
				
			||||||
  #:use-module (gnu packages language)
 | 
					  #:use-module (gnu packages language)
 | 
				
			||||||
  #:use-module (gnu packages linux)
 | 
					  #:use-module (gnu packages linux)
 | 
				
			||||||
| 
						 | 
					@ -132,16 +133,19 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
 | 
				
			||||||
(define-public mysql
 | 
					(define-public mysql
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "mysql")
 | 
					    (name "mysql")
 | 
				
			||||||
    (version "5.6.25")
 | 
					    (version "5.7.11")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
             (method url-fetch)
 | 
					             (method url-fetch)
 | 
				
			||||||
             (uri (string-append
 | 
					             (uri (list (string-append
 | 
				
			||||||
                   "http://dev.mysql.com/get/Downloads/MySQL-"
 | 
					                          "http://dev.mysql.com/get/Downloads/MySQL-"
 | 
				
			||||||
                   (version-major+minor version) "/"
 | 
					                          (version-major+minor version) "/"
 | 
				
			||||||
                   name "-" version ".tar.gz"))
 | 
					                          name "-" version ".tar.gz")
 | 
				
			||||||
 | 
					                        (string-append
 | 
				
			||||||
 | 
					                          "http://downloads.mysql.com/archives/get/file/"
 | 
				
			||||||
 | 
					                          name "-" version ".tar.gz")))
 | 
				
			||||||
             (sha256
 | 
					             (sha256
 | 
				
			||||||
              (base32
 | 
					              (base32
 | 
				
			||||||
               "1gbz5i1z3nswpq3q8f477vrx7g15j8n41pyb94k0jfnkhc5rq1qm"))))
 | 
					               "03hzd2ikabxhh5ch2yvml2nks2wpv3qbkqmx3520in6khypwgy2l"))))
 | 
				
			||||||
    (build-system cmake-build-system)
 | 
					    (build-system cmake-build-system)
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     '(#:configure-flags
 | 
					     '(#:configure-flags
 | 
				
			||||||
| 
						 | 
					@ -167,16 +171,11 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
 | 
				
			||||||
         "-DINSTALL_SQLBENCHDIR=")
 | 
					         "-DINSTALL_SQLBENCHDIR=")
 | 
				
			||||||
       #:phases (modify-phases %standard-phases
 | 
					       #:phases (modify-phases %standard-phases
 | 
				
			||||||
                  (add-after
 | 
					                  (add-after
 | 
				
			||||||
                   'install 'strip-extra-references
 | 
					                   'unpack 'patch-boost-version
 | 
				
			||||||
                   (lambda* (#:key outputs #:allow-other-keys)
 | 
					                   (lambda _
 | 
				
			||||||
                     ;; Strip references to GCC and other build-time
 | 
					                     ;; Mysql wants boost-1.59.0 specifically
 | 
				
			||||||
                     ;; dependencies.
 | 
					                     (substitute* "cmake/boost.cmake"
 | 
				
			||||||
                     (let ((out (assoc-ref outputs "out")))
 | 
					                                  (("59") "60"))))
 | 
				
			||||||
                       (for-each remove-store-references
 | 
					 | 
				
			||||||
                                 (list (string-append out "/bin/mysqlbug")
 | 
					 | 
				
			||||||
                                       (string-append
 | 
					 | 
				
			||||||
                                        out "/share/mysql/docs/INFO_BIN")))
 | 
					 | 
				
			||||||
                       #t)))
 | 
					 | 
				
			||||||
                  (add-after
 | 
					                  (add-after
 | 
				
			||||||
                   'install 'remove-extra-binaries
 | 
					                   'install 'remove-extra-binaries
 | 
				
			||||||
                   (lambda* (#:key outputs #:allow-other-keys)
 | 
					                   (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
| 
						 | 
					@ -191,10 +190,11 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
 | 
				
			||||||
     `(("bison" ,bison)
 | 
					     `(("bison" ,bison)
 | 
				
			||||||
       ("perl" ,perl)))
 | 
					       ("perl" ,perl)))
 | 
				
			||||||
    (inputs
 | 
					    (inputs
 | 
				
			||||||
     `(("libaio" ,libaio)
 | 
					     `(("boost" ,boost)
 | 
				
			||||||
 | 
					       ("libaio" ,libaio)
 | 
				
			||||||
 | 
					       ("ncurses" ,ncurses)
 | 
				
			||||||
       ("openssl" ,openssl)
 | 
					       ("openssl" ,openssl)
 | 
				
			||||||
       ("zlib" ,zlib)
 | 
					       ("zlib" ,zlib)))
 | 
				
			||||||
       ("ncurses" ,ncurses)))
 | 
					 | 
				
			||||||
    (home-page "http://www.mysql.com/")
 | 
					    (home-page "http://www.mysql.com/")
 | 
				
			||||||
    (synopsis "Fast, easy to use, and popular database")
 | 
					    (synopsis "Fast, easy to use, and popular database")
 | 
				
			||||||
    (description
 | 
					    (description
 | 
				
			||||||
| 
						 | 
					@ -206,7 +206,7 @@ Language.")
 | 
				
			||||||
(define-public mariadb
 | 
					(define-public mariadb
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "mariadb")
 | 
					    (name "mariadb")
 | 
				
			||||||
    (version "10.0.23")
 | 
					    (version "10.1.12")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "https://downloads.mariadb.org/f/"
 | 
					              (uri (string-append "https://downloads.mariadb.org/f/"
 | 
				
			||||||
| 
						 | 
					@ -214,7 +214,7 @@ Language.")
 | 
				
			||||||
                                  name "-" version ".tar.gz"))
 | 
					                                  name "-" version ".tar.gz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "0x52gfxk7zr84al83x62s4gh7mbngahy1svafdkbwd18i5lysvhm"))))
 | 
					                "1rzlc2ns84x540asbkgdp9562haxhlszfpdqh64i9pz4q1m4cpvr"))))
 | 
				
			||||||
    (build-system cmake-build-system)
 | 
					    (build-system cmake-build-system)
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     '(#:configure-flags
 | 
					     '(#:configure-flags
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					;;; GNU Guix --- Functional package management for GNU
 | 
				
			||||||
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 | 
					;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -23,6 +23,29 @@
 | 
				
			||||||
  #:use-module (guix download)
 | 
					  #:use-module (guix download)
 | 
				
			||||||
  #:use-module (guix build-system gnu))
 | 
					  #:use-module (guix build-system gnu))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public gdsl
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "gdsl")
 | 
				
			||||||
 | 
					    (version "1.8")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append "http://download.gna.org/gdsl/"
 | 
				
			||||||
 | 
					                                  "gdsl-" version ".tar.gz"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "1v64jvlnj8jfpphphgjgb36p0kv50kwfyqncf0y12f16v8ydyiaw"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (home-page "http://home.gna.org/gdsl/")
 | 
				
			||||||
 | 
					    (synopsis "Generic data structures library")
 | 
				
			||||||
 | 
					    (description "The Generic Data Structures Library (GDSL) is a collection
 | 
				
			||||||
 | 
					of routines for generic data structures manipulation.  It is a re-entrant
 | 
				
			||||||
 | 
					library fully written from scratch in pure ANSI C.  It is designed to offer
 | 
				
			||||||
 | 
					for C programmers common data structures with powerful algorithms, and hidden
 | 
				
			||||||
 | 
					implementation.  Available structures are lists, queues, stacks, hash tables,
 | 
				
			||||||
 | 
					binary trees, binary search trees, red-black trees, 2D arrays, permutations
 | 
				
			||||||
 | 
					and heaps.")
 | 
				
			||||||
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public sparsehash
 | 
					(define-public sparsehash
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "sparsehash")
 | 
					    (name "sparsehash")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -52,21 +52,16 @@ clients.")
 | 
				
			||||||
(define-public vdirsyncer
 | 
					(define-public vdirsyncer
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "vdirsyncer")
 | 
					    (name "vdirsyncer")
 | 
				
			||||||
    (version "0.9.0")
 | 
					    (version "0.9.2")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
             (method url-fetch)
 | 
					             (method url-fetch)
 | 
				
			||||||
             (uri (pypi-uri "vdirsyncer" version))
 | 
					             (uri (pypi-uri "vdirsyncer" version))
 | 
				
			||||||
             (sha256
 | 
					             (sha256
 | 
				
			||||||
              (base32
 | 
					              (base32
 | 
				
			||||||
               "0s9awjr9v60rr80xcpwmdhkf4v1yqnydahjmxwvxmh64565is465"))))
 | 
					               "1g1107cz4sk41d2z6k6pn9n2fzd26m72j8aj33zn483vfvmyrc4q"))))
 | 
				
			||||||
    (build-system python-build-system)
 | 
					    (build-system python-build-system)
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
      `(#:phases (modify-phases %standard-phases
 | 
					      `(#:phases (modify-phases %standard-phases
 | 
				
			||||||
         (replace 'check
 | 
					 | 
				
			||||||
           (lambda _
 | 
					 | 
				
			||||||
             (setenv "DAV_SERVER" "radicale")
 | 
					 | 
				
			||||||
             (setenv "REMOTESTORAGE_SERVER" "skip")
 | 
					 | 
				
			||||||
             (zero? (system* "py.test"))))
 | 
					 | 
				
			||||||
         ;; vdirsyncer requires itself to be installed in order to build
 | 
					         ;; vdirsyncer requires itself to be installed in order to build
 | 
				
			||||||
         ;; the manpage.
 | 
					         ;; the manpage.
 | 
				
			||||||
         (add-after 'install 'manpage
 | 
					         (add-after 'install 'manpage
 | 
				
			||||||
| 
						 | 
					@ -80,17 +75,24 @@ clients.")
 | 
				
			||||||
               "docs/_build/man/vdirsyncer.1"
 | 
					               "docs/_build/man/vdirsyncer.1"
 | 
				
			||||||
               (string-append
 | 
					               (string-append
 | 
				
			||||||
                 (assoc-ref outputs "out")
 | 
					                 (assoc-ref outputs "out")
 | 
				
			||||||
                 "/share/man/man1")))))))
 | 
					                 "/share/man/man1"))))
 | 
				
			||||||
 | 
					         ;; vdirsyncer requires itself to be installed in order to run the test
 | 
				
			||||||
 | 
					         ;; suite.
 | 
				
			||||||
 | 
					         (delete 'check)
 | 
				
			||||||
 | 
					         (add-after 'install 'check-later
 | 
				
			||||||
 | 
					           (lambda _
 | 
				
			||||||
 | 
					             (setenv "DETERMINISTIC_TESTS" "true")
 | 
				
			||||||
 | 
					             (setenv "DAV_SERVER" "radicale")
 | 
				
			||||||
 | 
					             (setenv "REMOTESTORAGE_SERVER" "skip")
 | 
				
			||||||
 | 
					             (zero? (system* "make" "test")))))))
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
     `(("python-oauthlib" ,python-oauthlib)
 | 
					     `(("python-setuptools-scm" ,python-setuptools-scm)
 | 
				
			||||||
       ("python-setuptools-scm" ,python-setuptools-scm)
 | 
					 | 
				
			||||||
       ("python-sphinx" ,python-sphinx)
 | 
					       ("python-sphinx" ,python-sphinx)
 | 
				
			||||||
       ;; Required for testing
 | 
					       ;; Required for testing
 | 
				
			||||||
       ("python-hypothesis" ,python-hypothesis)
 | 
					       ("python-hypothesis" ,python-hypothesis)
 | 
				
			||||||
       ("python-pytest" ,python-pytest)
 | 
					       ("python-pytest" ,python-pytest)
 | 
				
			||||||
       ("python-pytest-localserver" ,python-pytest-localserver)
 | 
					       ("python-pytest-localserver" ,python-pytest-localserver)
 | 
				
			||||||
       ("python-pytest-subtesthack" ,python-pytest-subtesthack)
 | 
					       ("python-pytest-subtesthack" ,python-pytest-subtesthack)
 | 
				
			||||||
       ("python-pytest-xprocess" ,python-pytest-xprocess)
 | 
					 | 
				
			||||||
       ("python-wsgi-intercept" ,python-wsgi-intercept)
 | 
					       ("python-wsgi-intercept" ,python-wsgi-intercept)
 | 
				
			||||||
       ("radicale" ,radicale)))
 | 
					       ("radicale" ,radicale)))
 | 
				
			||||||
    (propagated-inputs
 | 
					    (propagated-inputs
 | 
				
			||||||
| 
						 | 
					@ -98,7 +100,7 @@ clients.")
 | 
				
			||||||
       ("python-click" ,python-click)
 | 
					       ("python-click" ,python-click)
 | 
				
			||||||
       ("python-click-log" ,python-click-log)
 | 
					       ("python-click-log" ,python-click-log)
 | 
				
			||||||
       ("python-click-threading" ,python-click-threading)
 | 
					       ("python-click-threading" ,python-click-threading)
 | 
				
			||||||
       ("python-lxml" ,python-lxml) ; which one?
 | 
					       ("python-lxml" ,python-lxml)
 | 
				
			||||||
       ("python-requests-toolbelt" ,python-requests-toolbelt)))
 | 
					       ("python-requests-toolbelt" ,python-requests-toolbelt)))
 | 
				
			||||||
    (synopsis "Synchronize calendars and contacts")
 | 
					    (synopsis "Synchronize calendars and contacts")
 | 
				
			||||||
    (description "Vdirsyncer synchronizes your calendars and addressbooks
 | 
					    (description "Vdirsyncer synchronizes your calendars and addressbooks
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,7 @@
 | 
				
			||||||
;;; Copyright © 2015 Mathieu Lirzin <mthl@gnu.org>
 | 
					;;; Copyright © 2015 Mathieu Lirzin <mthl@gnu.org>
 | 
				
			||||||
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 | 
					;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 | 
				
			||||||
;;; Copyright © 2016 Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com>
 | 
					;;; Copyright © 2016 Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -99,7 +100,7 @@ tables, and it understands a variety of different formats.")
 | 
				
			||||||
(define-public ddrescue
 | 
					(define-public ddrescue
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "ddrescue")
 | 
					    (name "ddrescue")
 | 
				
			||||||
    (version "1.20")
 | 
					    (version "1.21")
 | 
				
			||||||
    (source
 | 
					    (source
 | 
				
			||||||
     (origin
 | 
					     (origin
 | 
				
			||||||
      (method url-fetch)
 | 
					      (method url-fetch)
 | 
				
			||||||
| 
						 | 
					@ -107,7 +108,7 @@ tables, and it understands a variety of different formats.")
 | 
				
			||||||
                          version ".tar.lz"))
 | 
					                          version ".tar.lz"))
 | 
				
			||||||
      (sha256
 | 
					      (sha256
 | 
				
			||||||
       (base32
 | 
					       (base32
 | 
				
			||||||
        "1gb0ak2c47nass7qdf9pnfrshcb38c318z1fx5v5v1k7l6qr7yc3"))))
 | 
					        "1b71hb42lh33y9843nd1mxlwkk9qh9ajvnz6ivzd1jq9lav4x7ph"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (home-page "http://www.gnu.org/software/ddrescue/ddrescue.html")
 | 
					    (home-page "http://www.gnu.org/software/ddrescue/ddrescue.html")
 | 
				
			||||||
    (synopsis "Data recovery utility")
 | 
					    (synopsis "Data recovery utility")
 | 
				
			||||||
| 
						 | 
					@ -171,3 +172,35 @@ transport), SCSI and ATAPI tape drives, and SCSI enclosures.  This utility can
 | 
				
			||||||
also send commands associated with starting and stopping the media, loading
 | 
					also send commands associated with starting and stopping the media, loading
 | 
				
			||||||
and unloading removable media and some other housekeeping functions.")
 | 
					and unloading removable media and some other housekeeping functions.")
 | 
				
			||||||
    (license bsd-3)))
 | 
					    (license bsd-3)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public idle3-tools
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "idle3-tools")
 | 
				
			||||||
 | 
					    (version "0.9.1")
 | 
				
			||||||
 | 
					    (source
 | 
				
			||||||
 | 
					     (origin
 | 
				
			||||||
 | 
					       (method url-fetch)
 | 
				
			||||||
 | 
					       (uri (string-append "mirror://sourceforge/idle3-tools/idle3-tools-"
 | 
				
			||||||
 | 
					                           version ".tgz"))
 | 
				
			||||||
 | 
					       (sha256
 | 
				
			||||||
 | 
					        (base32
 | 
				
			||||||
 | 
					         "00ia7xq9yldxyl9gz0mr4xa568nav14p0fnv82f2rbbkg060cy4p"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:tests? #f ;no test suite
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         (delete 'configure))
 | 
				
			||||||
 | 
					       #:make-flags (list "CC=gcc"
 | 
				
			||||||
 | 
					                          (string-append "manprefix=")
 | 
				
			||||||
 | 
					                          (string-append "DESTDIR="
 | 
				
			||||||
 | 
					                                         (assoc-ref %outputs "out")))))
 | 
				
			||||||
 | 
					    (home-page "http://idle3-tools.sourceforge.net")
 | 
				
			||||||
 | 
					    (synopsis "Change or disable Western Digital hard drives' Idle3 timer")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "Idle3-tools provides a utility to get, set, or disable the Idle3 timer
 | 
				
			||||||
 | 
					present in many Western Digital hard drives.  This timer is part of the
 | 
				
			||||||
 | 
					\"IntelliPark\" feature that stops the disk when not in use.  Unfortunately,
 | 
				
			||||||
 | 
					the default timer setting is not well suited to Linux or other *nix systems,
 | 
				
			||||||
 | 
					and can dramatically shorten the lifespan of the drive if left unchecked.")
 | 
				
			||||||
 | 
					    (license gpl3+)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,7 @@
 | 
				
			||||||
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 | 
					;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 | 
				
			||||||
;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
 | 
					;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
 | 
				
			||||||
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 | 
					;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -65,14 +66,14 @@ and BOOTP/TFTP for network booting of diskless machines.")
 | 
				
			||||||
(define-public bind-utils
 | 
					(define-public bind-utils
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "bind-utils")
 | 
					    (name "bind-utils")
 | 
				
			||||||
    (version "9.10.3-P3")
 | 
					    (version "9.10.3-P4")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "http://ftp.isc.org/isc/bind9/" version
 | 
					              (uri (string-append "http://ftp.isc.org/isc/bind9/" version
 | 
				
			||||||
                                  "/bind-" version ".tar.gz"))
 | 
					                                  "/bind-" version ".tar.gz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "10yblk8qbb85qxakzdjy5qmqvqj4rlcqsqvlkriglampzg8i0239"))))
 | 
					                "0giys46ifypysf799w9v58kbaz1v3fbdzw3s212znifzzfsl9h1a"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (inputs
 | 
					    (inputs
 | 
				
			||||||
     ;; it would be nice to add GeoIP and gssapi once there is package
 | 
					     ;; it would be nice to add GeoIP and gssapi once there is package
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -308,7 +308,7 @@ when typing parentheses directly or commenting out code line by line.")
 | 
				
			||||||
(define-public git-modes
 | 
					(define-public git-modes
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "git-modes")
 | 
					    (name "git-modes")
 | 
				
			||||||
    (version "1.2.0")
 | 
					    (version "1.2.1")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append
 | 
					              (uri (string-append
 | 
				
			||||||
| 
						 | 
					@ -317,7 +317,7 @@ when typing parentheses directly or commenting out code line by line.")
 | 
				
			||||||
              (file-name (string-append name "-" version ".tar.gz"))
 | 
					              (file-name (string-append name "-" version ".tar.gz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "09dv7ikbj2bi4y3lmvjfzqpdmx2f9bd4w7jkp10bkap62d05iqhk"))))
 | 
					                "088wyddh8y0yw77i0hx449n9zg4wzyc90h63wlmxba1ijg4dzm0p"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     `(#:modules ((guix build gnu-build-system)
 | 
					     `(#:modules ((guix build gnu-build-system)
 | 
				
			||||||
| 
						 | 
					@ -1018,44 +1018,47 @@ single buffer.")
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     `(#:tests? #f ; there are no tests
 | 
					     `(#:tests? #f ; there are no tests
 | 
				
			||||||
       #:modules ((guix build gnu-build-system)
 | 
					       #:modules ((guix build gnu-build-system)
 | 
				
			||||||
 | 
					                  ((guix build emacs-build-system) #:prefix emacs:)
 | 
				
			||||||
                  (guix build utils)
 | 
					                  (guix build utils)
 | 
				
			||||||
                  (guix build emacs-utils))
 | 
					                  (guix build emacs-utils))
 | 
				
			||||||
       #:imported-modules (,@%gnu-build-system-modules
 | 
					       #:imported-modules (,@%gnu-build-system-modules
 | 
				
			||||||
 | 
					                           (guix build emacs-build-system)
 | 
				
			||||||
                           (guix build emacs-utils))
 | 
					                           (guix build emacs-utils))
 | 
				
			||||||
       #:phases
 | 
					       #:phases
 | 
				
			||||||
       (modify-phases %standard-phases
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
         (add-after 'unpack 'enter-dir (lambda _ (chdir "server") #t))
 | 
					         ;; Build server side using 'gnu-build-system'.
 | 
				
			||||||
         (add-before
 | 
					         (add-after 'unpack 'enter-server-dir
 | 
				
			||||||
          'configure 'autogen
 | 
					           (lambda _ (chdir "server") #t))
 | 
				
			||||||
          (lambda _
 | 
					         (add-before 'configure 'autogen
 | 
				
			||||||
            (zero? (system* "bash" "autogen.sh"))))
 | 
					           (lambda _
 | 
				
			||||||
         (add-before
 | 
					             (zero? (system* "bash" "autogen.sh"))))
 | 
				
			||||||
          'build 'patch-variables
 | 
					
 | 
				
			||||||
          (lambda* (#:key outputs #:allow-other-keys)
 | 
					         ;; Build emacs side using 'emacs-build-system'.
 | 
				
			||||||
            (with-directory-excursion "../lisp"
 | 
					         (add-after 'compress-documentation 'enter-lisp-dir
 | 
				
			||||||
              ;; Set path to epdfinfo program.
 | 
					           (lambda _ (chdir "../lisp") #t))
 | 
				
			||||||
              (emacs-substitute-variables "pdf-info.el"
 | 
					         (add-after 'enter-lisp-dir 'emacs-patch-variables
 | 
				
			||||||
                ("pdf-info-epdfinfo-program"
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
                 (string-append (assoc-ref outputs "out")
 | 
					             ;; Set path to epdfinfo program.
 | 
				
			||||||
                                "/bin/epdfinfo")))
 | 
					             (emacs-substitute-variables "pdf-info.el"
 | 
				
			||||||
              ;; Set 'pdf-tools-handle-upgrades' to nil to avoid "auto
 | 
					               ("pdf-info-epdfinfo-program"
 | 
				
			||||||
              ;; upgrading" that pdf-tools tries to perform.
 | 
					                (string-append (assoc-ref outputs "out")
 | 
				
			||||||
              (emacs-substitute-variables "pdf-tools.el"
 | 
					                               "/bin/epdfinfo")))
 | 
				
			||||||
                ("pdf-tools-handle-upgrades" '())))))
 | 
					             ;; Set 'pdf-tools-handle-upgrades' to nil to avoid "auto
 | 
				
			||||||
         (add-after
 | 
					             ;; upgrading" that pdf-tools tries to perform.
 | 
				
			||||||
          'install 'install-lisp
 | 
					             (emacs-substitute-variables "pdf-tools.el"
 | 
				
			||||||
          (lambda* (#:key outputs #:allow-other-keys)
 | 
					               ("pdf-tools-handle-upgrades" '()))))
 | 
				
			||||||
            (let ((target (string-append (assoc-ref outputs "out")
 | 
					         (add-after 'emacs-patch-variables 'emacs-install
 | 
				
			||||||
                                         "/share/emacs/site-lisp/")))
 | 
					           (assoc-ref emacs:%standard-phases 'install))
 | 
				
			||||||
              (for-each (lambda (file)
 | 
					         (add-after 'emacs-install 'emacs-build
 | 
				
			||||||
                          (install-file file target))
 | 
					           (assoc-ref emacs:%standard-phases 'build))
 | 
				
			||||||
                        (find-files "../lisp" "^(pdf|tab).*\\.elc?"))
 | 
					         (add-after 'emacs-install 'emacs-make-autoloads
 | 
				
			||||||
              (emacs-byte-compile-directory target)
 | 
					           (assoc-ref emacs:%standard-phases 'make-autoloads)))))
 | 
				
			||||||
              (emacs-generate-autoloads "pdf-tools" target)))))))
 | 
					 | 
				
			||||||
    (native-inputs `(("autoconf" ,autoconf)
 | 
					    (native-inputs `(("autoconf" ,autoconf)
 | 
				
			||||||
                     ("automake" ,automake)
 | 
					                     ("automake" ,automake)
 | 
				
			||||||
                     ("pkg-config" ,pkg-config)
 | 
					                     ("pkg-config" ,pkg-config)
 | 
				
			||||||
                     ("emacs" ,emacs-no-x)))
 | 
					                     ("emacs" ,emacs-no-x)))
 | 
				
			||||||
 | 
					    (propagated-inputs
 | 
				
			||||||
 | 
					     `(("let-alist" ,let-alist)))
 | 
				
			||||||
    (inputs `(("poppler" ,poppler)
 | 
					    (inputs `(("poppler" ,poppler)
 | 
				
			||||||
              ("cairo" ,cairo)
 | 
					              ("cairo" ,cairo)
 | 
				
			||||||
              ("glib" ,glib)
 | 
					              ("glib" ,glib)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -273,7 +273,7 @@ Libraries with some extra bells and whistles.")
 | 
				
			||||||
(define-public enlightenment
 | 
					(define-public enlightenment
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "enlightenment")
 | 
					    (name "enlightenment")
 | 
				
			||||||
    (version "0.20.5")
 | 
					    (version "0.20.6")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri
 | 
					              (uri
 | 
				
			||||||
| 
						 | 
					@ -281,7 +281,7 @@ Libraries with some extra bells and whistles.")
 | 
				
			||||||
                              name "/" name "-" version ".tar.xz"))
 | 
					                              name "/" name "-" version ".tar.xz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                 "1l02m2d7d5r0vnfgn44glhvqhc8ygbjxjkf6cdd2vxpxsa29ax12"))))
 | 
					                 "11ahll68nlci214ka05whp5l32hy9lznmcdfqx3hxsmq2p7bl7zj"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     `(#:configure-flags '("--enable-mount-eeze")))
 | 
					     `(#:configure-flags '("--enable-mount-eeze")))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					;;; GNU Guix --- Functional package management for GNU
 | 
				
			||||||
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 | 
					;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 | 
				
			||||||
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 | 
					;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 | 
				
			||||||
;;; Copyright © 2014 Joshua Grant <tadni@riseup.net>
 | 
					;;; Copyright © 2014 Joshua Grant <tadni@riseup.net>
 | 
				
			||||||
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
 | 
					;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
 | 
				
			||||||
| 
						 | 
					@ -7,6 +7,7 @@
 | 
				
			||||||
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 | 
					;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 | 
				
			||||||
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 | 
					;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 | 
				
			||||||
;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net>
 | 
					;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Jookia <166291@gmail.com>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -24,6 +25,7 @@
 | 
				
			||||||
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 | 
					;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-module (gnu packages fonts)
 | 
					(define-module (gnu packages fonts)
 | 
				
			||||||
 | 
					  #:use-module (guix utils)
 | 
				
			||||||
  #:use-module ((guix licenses) #:prefix license:)
 | 
					  #:use-module ((guix licenses) #:prefix license:)
 | 
				
			||||||
  #:use-module (guix packages)
 | 
					  #:use-module (guix packages)
 | 
				
			||||||
  #:use-module (guix download)
 | 
					  #:use-module (guix download)
 | 
				
			||||||
| 
						 | 
					@ -67,14 +69,15 @@ in print.  With attention to detail for high resolution rendering.")
 | 
				
			||||||
(define-public font-ubuntu
 | 
					(define-public font-ubuntu
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "font-ubuntu")
 | 
					    (name "font-ubuntu")
 | 
				
			||||||
    (version "0.80")
 | 
					    (version "0.83")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "http://font.ubuntu.com/download/ubuntu-font-family-"
 | 
					              (uri (string-append
 | 
				
			||||||
                                  version ".zip"))
 | 
					                    "http://font.ubuntu.com/download/ubuntu-font-family-"
 | 
				
			||||||
 | 
					                    version ".zip"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "0k4f548riq23gmw4zhn30qqkcpaj4g2ab5rbc3lflfxwkc4p0w8h"))))
 | 
					                "0hjvq2x758dx0sfwqhzflns0ns035qm7h6ygskbx1svzg517sva5"))))
 | 
				
			||||||
    (build-system trivial-build-system)
 | 
					    (build-system trivial-build-system)
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     `(#:modules ((guix build utils))
 | 
					     `(#:modules ((guix build utils))
 | 
				
			||||||
| 
						 | 
					@ -235,6 +238,25 @@ package provides the TrueType (TTF) files.")
 | 
				
			||||||
     (license:x11-style
 | 
					     (license:x11-style
 | 
				
			||||||
      "http://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts"))))
 | 
					      "http://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts"))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public font-cantarell
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "font-abattis-cantarell")
 | 
				
			||||||
 | 
					    (version "0.0.24")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append "mirror://gnome/sources/cantarell-fonts/"
 | 
				
			||||||
 | 
					                                  (version-major+minor version)
 | 
				
			||||||
 | 
					                                  "/cantarell-fonts-" version ".tar.xz"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "0r4jnc2x9yncf40lixjb1pqgpq8rzbi2fz33pshlqzjgx2d69bcw"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (home-page "https://wiki.gnome.org/Projects/CantarellFonts")
 | 
				
			||||||
 | 
					    (synopsis "Cantarell sans-serif typeface")
 | 
				
			||||||
 | 
					    (description "The Cantarell font family is a contemporary Humanist
 | 
				
			||||||
 | 
					sans-serif designed for on-screen reading.  It is used by GNOME@tie{}3.")
 | 
				
			||||||
 | 
					    (license license:silofl1.1)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public font-gnu-freefont-ttf
 | 
					(define-public font-gnu-freefont-ttf
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "font-gnu-freefont-ttf")
 | 
					    (name "font-gnu-freefont-ttf")
 | 
				
			||||||
| 
						 | 
					@ -628,3 +650,113 @@ Unicode's Basic Multilingual Plane.  The package also includes
 | 
				
			||||||
utilities to ease adding new glyphs to the font.")
 | 
					utilities to ease adding new glyphs to the font.")
 | 
				
			||||||
    (home-page "http://unifoundry.com/unifont.html")
 | 
					    (home-page "http://unifoundry.com/unifont.html")
 | 
				
			||||||
    (license license:gpl2+)))
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public font-google-noto
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "font-google-noto")
 | 
				
			||||||
 | 
					    (version "20150929")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append "https://noto-website-2.storage.googleapis.com/"
 | 
				
			||||||
 | 
					                                  "pkgs/Noto-hinted.zip"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "13jhpqzhsqhyby8n0ksqg155a3jyaif3nzj9anzbq8s2gn1xjyd9"))))
 | 
				
			||||||
 | 
					    (build-system trivial-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:modules ((guix build utils))
 | 
				
			||||||
 | 
					       #:builder (begin
 | 
				
			||||||
 | 
					                   (use-modules (guix build utils)
 | 
				
			||||||
 | 
					                                (srfi srfi-26))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                   (let ((PATH     (string-append (assoc-ref %build-inputs
 | 
				
			||||||
 | 
					                                                             "unzip")
 | 
				
			||||||
 | 
					                                                  "/bin"))
 | 
				
			||||||
 | 
					                         (font-dir (string-append %output
 | 
				
			||||||
 | 
					                                                  "/share/fonts/truetype")))
 | 
				
			||||||
 | 
					                     (setenv "PATH" PATH)
 | 
				
			||||||
 | 
					                     (system* "unzip" (assoc-ref %build-inputs "source"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                     (mkdir-p font-dir)
 | 
				
			||||||
 | 
					                     (for-each (lambda (ttf)
 | 
				
			||||||
 | 
					                                 (copy-file ttf
 | 
				
			||||||
 | 
					                                            (string-append font-dir "/" ttf)))
 | 
				
			||||||
 | 
					                               (find-files "." "\\.ttf$"))
 | 
				
			||||||
 | 
					                     (for-each (lambda (otf)
 | 
				
			||||||
 | 
					                                 (copy-file otf
 | 
				
			||||||
 | 
					                                            (string-append font-dir "/" otf)))
 | 
				
			||||||
 | 
					                               (find-files "." "\\.otf$"))))))
 | 
				
			||||||
 | 
					    (native-inputs `(("unzip" ,unzip)))
 | 
				
			||||||
 | 
					    (home-page "https://www.google.com/get/noto/")
 | 
				
			||||||
 | 
					    (synopsis "Fonts aimed to cover all languages")
 | 
				
			||||||
 | 
					    (description "Googe Noto Fonts is a family of fonts aimed to support all
 | 
				
			||||||
 | 
					languages with a consistent look and aesthetic.  It's goal is to have no Unicode
 | 
				
			||||||
 | 
					symbols unable to be displayed properly.")
 | 
				
			||||||
 | 
					    (license license:silofl1.1)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public font-un
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "font-un")
 | 
				
			||||||
 | 
					    (version "1.0.2-080608")
 | 
				
			||||||
 | 
					    ;; The upstream server at kldp.net is serving us broken MIME.
 | 
				
			||||||
 | 
					    ;; See <http://bugs.gnu.org/22908>.
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (list
 | 
				
			||||||
 | 
					                    (string-append
 | 
				
			||||||
 | 
					                     "http://krosos.sdf.org/static/unix/"
 | 
				
			||||||
 | 
					                     "un-fonts-core-" version ".tar.gz")
 | 
				
			||||||
 | 
					                    ;; XXX: The upstream server at kldp.net
 | 
				
			||||||
 | 
					                    (string-append
 | 
				
			||||||
 | 
					                     "https://kldp.net/projects/unfonts/download/4695?filename="
 | 
				
			||||||
 | 
					                     "un-fonts-core-" version ".tar.gz")))
 | 
				
			||||||
 | 
					              (file-name (string-append name "-" version ".tar.gz"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "13liaz2pmww3aqabm55la5npd08m1skh334ky7qfidxaz5s742iv"))))
 | 
				
			||||||
 | 
					    (build-system trivial-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:modules ((guix build utils))
 | 
				
			||||||
 | 
					       #:builder
 | 
				
			||||||
 | 
					       (begin
 | 
				
			||||||
 | 
					         (use-modules (guix build utils))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         (let ((tar      (string-append (assoc-ref %build-inputs "tar")
 | 
				
			||||||
 | 
					                                        "/bin/tar"))
 | 
				
			||||||
 | 
					               (PATH     (string-append (assoc-ref %build-inputs "gzip")
 | 
				
			||||||
 | 
					                                        "/bin"))
 | 
				
			||||||
 | 
					               (font-dir (string-append %output "/share/fonts/truetype"))
 | 
				
			||||||
 | 
					               (doc-dir  (string-append %output "/share/doc/" ,name)))
 | 
				
			||||||
 | 
					           (setenv "PATH" PATH)
 | 
				
			||||||
 | 
					           (system* tar "xvf" (assoc-ref %build-inputs "source"))
 | 
				
			||||||
 | 
					           (mkdir-p font-dir)
 | 
				
			||||||
 | 
					           (mkdir-p doc-dir)
 | 
				
			||||||
 | 
					           (chdir (string-append "un-fonts"))
 | 
				
			||||||
 | 
					           (for-each (lambda (ttf)
 | 
				
			||||||
 | 
					                       (copy-file ttf
 | 
				
			||||||
 | 
					                                  (string-append font-dir "/"
 | 
				
			||||||
 | 
					                                                 (basename ttf))))
 | 
				
			||||||
 | 
					                     (find-files "." "\\.ttf$"))
 | 
				
			||||||
 | 
					           (for-each (lambda (doc)
 | 
				
			||||||
 | 
					                       (copy-file doc
 | 
				
			||||||
 | 
					                                  (string-append doc-dir "/"
 | 
				
			||||||
 | 
					                                                 (basename doc))))
 | 
				
			||||||
 | 
					                     '("COPYING" "README"))))))
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("tar" ,tar)
 | 
				
			||||||
 | 
					       ("gzip" ,gzip)))
 | 
				
			||||||
 | 
					    (home-page "https://kldp.net/projects/unfonts/")
 | 
				
			||||||
 | 
					    (synopsis "Collection of Korean fonts")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "Un-fonts is a family of mainly Korean fonts.
 | 
				
			||||||
 | 
					It contains the following fonts and styles:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@enumerate
 | 
				
			||||||
 | 
					@item UnBatang, UnBatangBold: serif;
 | 
				
			||||||
 | 
					@item UnDotum, UnDotumBold: sans-serif;
 | 
				
			||||||
 | 
					@item UnGraphic, UnGraphicBold: sans-serif style;
 | 
				
			||||||
 | 
					@item UnDinaru, UnDinaruBold, UnDinaruLight;
 | 
				
			||||||
 | 
					@item UnPilgi, UnPilgiBold: script;
 | 
				
			||||||
 | 
					@item UnGungseo: cursive, brush-stroke.
 | 
				
			||||||
 | 
					@end enumerate\n")
 | 
				
			||||||
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,7 @@
 | 
				
			||||||
;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 | 
					;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 | 
				
			||||||
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 | 
					;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 | 
				
			||||||
;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
 | 
					;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -93,8 +94,12 @@ anti-aliased glyph bitmap generation with 256 gray levels.")
 | 
				
			||||||
            (string-append "--with-default-fonts="
 | 
					            (string-append "--with-default-fonts="
 | 
				
			||||||
                           (assoc-ref %build-inputs "gs-fonts")
 | 
					                           (assoc-ref %build-inputs "gs-fonts")
 | 
				
			||||||
                           "/share/fonts")
 | 
					                           "/share/fonts")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ;; register fonts from user profile
 | 
					            ;; register fonts from user profile
 | 
				
			||||||
 | 
					            ;; TODO: Add /run/current-system/profile/share/fonts and remove
 | 
				
			||||||
 | 
					            ;; the skeleton that works around it from 'default-skeletons'.
 | 
				
			||||||
            "--with-add-fonts=~/.guix-profile/share/fonts"
 | 
					            "--with-add-fonts=~/.guix-profile/share/fonts"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ;; python is not actually needed
 | 
					            ;; python is not actually needed
 | 
				
			||||||
            "PYTHON=false")
 | 
					            "PYTHON=false")
 | 
				
			||||||
      #:phases
 | 
					      #:phases
 | 
				
			||||||
| 
						 | 
					@ -203,6 +208,7 @@ applications should be.")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public graphite2
 | 
					(define-public graphite2
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
 | 
					   (replacement graphite2-1.3.6)
 | 
				
			||||||
   (name "graphite2")
 | 
					   (name "graphite2")
 | 
				
			||||||
   (version "1.3.5")
 | 
					   (version "1.3.5")
 | 
				
			||||||
   (source
 | 
					   (source
 | 
				
			||||||
| 
						 | 
					@ -229,6 +235,21 @@ and returns a sequence of positioned glyphids from the font.")
 | 
				
			||||||
   (license license:lgpl2.1+)
 | 
					   (license license:lgpl2.1+)
 | 
				
			||||||
   (home-page "https://github.com/silnrsi/graphite")))
 | 
					   (home-page "https://github.com/silnrsi/graphite")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define graphite2-1.3.6
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (inherit graphite2)
 | 
				
			||||||
 | 
					    (replacement #f)
 | 
				
			||||||
 | 
					    (source
 | 
				
			||||||
 | 
					     (let ((name "graphite2") (version "1.3.6"))
 | 
				
			||||||
 | 
					       (origin
 | 
				
			||||||
 | 
					         (method url-fetch)
 | 
				
			||||||
 | 
					         (uri (string-append "https://github.com/silnrsi/graphite/archive/"
 | 
				
			||||||
 | 
					                             version ".tar.gz"))
 | 
				
			||||||
 | 
					         (file-name (string-append name "-" version ".tar.gz"))
 | 
				
			||||||
 | 
					         (sha256
 | 
				
			||||||
 | 
					          (base32
 | 
				
			||||||
 | 
					           "1frd9mjaqzvh9gs74ngc43igi53vzjzlwr5chbrs6ii1hc4aa23s")))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public potrace
 | 
					(define-public potrace
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "potrace")
 | 
					    (name "potrace")
 | 
				
			||||||
| 
						 | 
					@ -305,7 +326,7 @@ smooth contours with constant curvature at the spline joins.")
 | 
				
			||||||
(define-public libuninameslist
 | 
					(define-public libuninameslist
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "libuninameslist")
 | 
					    (name "libuninameslist")
 | 
				
			||||||
    (version "0.4.20140731")
 | 
					    (version "0.5.20150701")
 | 
				
			||||||
    (source
 | 
					    (source
 | 
				
			||||||
     (origin
 | 
					     (origin
 | 
				
			||||||
       (method url-fetch)
 | 
					       (method url-fetch)
 | 
				
			||||||
| 
						 | 
					@ -314,7 +335,7 @@ smooth contours with constant curvature at the spline joins.")
 | 
				
			||||||
       (file-name (string-append name "-" version ".tar.gz"))
 | 
					       (file-name (string-append name "-" version ".tar.gz"))
 | 
				
			||||||
       (sha256
 | 
					       (sha256
 | 
				
			||||||
        (base32
 | 
					        (base32
 | 
				
			||||||
         "016zxffpc8iwpxxmnjkdirn6dsbcvdb2wjdrp123sf79f4nsynyj"))))
 | 
					         "1j6147l100rppw7axlrkdx0p35fax6bz2zh1xgpg7a3b4pmqaj3v"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (native-inputs `(("autoconf" ,autoconf)
 | 
					    (native-inputs `(("autoconf" ,autoconf)
 | 
				
			||||||
                     ("automake" ,automake)
 | 
					                     ("automake" ,automake)
 | 
				
			||||||
| 
						 | 
					@ -336,37 +357,51 @@ definitions.")
 | 
				
			||||||
(define-public fontforge
 | 
					(define-public fontforge
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
   (name "fontforge")
 | 
					   (name "fontforge")
 | 
				
			||||||
   (version "20120731-b")               ;aka 1.0
 | 
					   (version "20150824")
 | 
				
			||||||
   (source (origin
 | 
					   (source (origin
 | 
				
			||||||
            (method url-fetch)
 | 
					            (method url-fetch)
 | 
				
			||||||
            (uri (string-append "mirror://sourceforge/fontforge/fontforge_full-"
 | 
					            (uri (string-append
 | 
				
			||||||
                                version ".tar.bz2"))
 | 
					                  "https://github.com/fontforge/fontforge/releases/download/"
 | 
				
			||||||
 | 
					                  version "/fontforge-" version ".tar.gz"))
 | 
				
			||||||
            (sha256 (base32
 | 
					            (sha256 (base32
 | 
				
			||||||
                     "1dhg0i2pf76j40cb9g1wzpag21fgarpjaad0hdbk27i1zz588q8v"))))
 | 
					                     "0gfcm8yn1d30giqhdwbchnfnspcqypqdzrxlhqhwy1i18wgl0v2v"))
 | 
				
			||||||
 | 
					            (modules '((guix build utils)))
 | 
				
			||||||
 | 
					            (snippet
 | 
				
			||||||
 | 
					             ;; Make builds bit-reproducible by using fixed date strings.
 | 
				
			||||||
 | 
					             '(substitute* "configure"
 | 
				
			||||||
 | 
					                (("^FONTFORGE_MODTIME=.*$")
 | 
				
			||||||
 | 
					                 "FONTFORGE_MODTIME=\"1458399002\"\n")
 | 
				
			||||||
 | 
					                (("^FONTFORGE_MODTIME_STR=.*$")
 | 
				
			||||||
 | 
					                 "FONTFORGE_MODTIME_STR=\"15:50 CET 19-Mar-2016\"\n")
 | 
				
			||||||
 | 
					                (("^FONTFORGE_VERSIONDATE=.*$")
 | 
				
			||||||
 | 
					                 "FONTFORGE_VERSIONDATE=\"20160319\"\n")))))
 | 
				
			||||||
   (build-system gnu-build-system)
 | 
					   (build-system gnu-build-system)
 | 
				
			||||||
   ;; TODO: Add python for scripting support.
 | 
					   (native-inputs
 | 
				
			||||||
   (inputs `(("gettext"         ,gnu-gettext)
 | 
					    `(("pkg-config" ,pkg-config)))
 | 
				
			||||||
             ("libtiff"         ,libtiff)
 | 
					   (inputs `(("cairo"           ,cairo)
 | 
				
			||||||
             ("libjpeg"         ,libjpeg)
 | 
					             ("fontconfig"      ,fontconfig) ;dlopen'd
 | 
				
			||||||
             ("libpng"          ,libpng)
 | 
					             ("freetype"        ,freetype)
 | 
				
			||||||
 | 
					             ("gettext"         ,gnu-gettext)
 | 
				
			||||||
             ("giflib"          ,giflib) ;needs giflib 4.*
 | 
					             ("giflib"          ,giflib) ;needs giflib 4.*
 | 
				
			||||||
             ("libxml2"         ,libxml2)
 | 
					             ("glib"            ,glib) ;needed for pango detection
 | 
				
			||||||
             ("libX11"          ,libx11)
 | 
					 | 
				
			||||||
             ("libXi"           ,libxi)
 | 
					 | 
				
			||||||
             ("libICE"          ,libice)
 | 
					             ("libICE"          ,libice)
 | 
				
			||||||
             ("libSM"           ,libsm)
 | 
					             ("libSM"           ,libsm)
 | 
				
			||||||
             ("freetype"        ,freetype)
 | 
					             ("libX11"          ,libx11)
 | 
				
			||||||
             ("potrace"         ,potrace)
 | 
					             ("libXi"           ,libxi)
 | 
				
			||||||
 | 
					             ("libjpeg"         ,libjpeg)
 | 
				
			||||||
 | 
					             ("libltdl"         ,libltdl)
 | 
				
			||||||
 | 
					             ("libpng"          ,libpng)
 | 
				
			||||||
             ("libspiro"        ,libspiro)
 | 
					             ("libspiro"        ,libspiro)
 | 
				
			||||||
             ("zlib"            ,zlib)
 | 
					             ("libtiff"         ,libtiff)
 | 
				
			||||||
             ("cairo"           ,cairo)
 | 
					 | 
				
			||||||
             ("fontconfig"      ,fontconfig) ;dlopen'd
 | 
					 | 
				
			||||||
             ("libuninameslist" ,libuninameslist)
 | 
					             ("libuninameslist" ,libuninameslist)
 | 
				
			||||||
 | 
					             ("libxft"          ,libxft)
 | 
				
			||||||
 | 
					             ("libxml2"         ,libxml2)
 | 
				
			||||||
             ("pango"           ,pango)
 | 
					             ("pango"           ,pango)
 | 
				
			||||||
             ("glib"            ,glib))) ;needed for pango detection
 | 
					             ("potrace"         ,potrace)
 | 
				
			||||||
 | 
					             ("python"          ,python)
 | 
				
			||||||
 | 
					             ("zlib"            ,zlib)))
 | 
				
			||||||
   (arguments
 | 
					   (arguments
 | 
				
			||||||
    '(#:configure-flags `("--enable-double")
 | 
					    '(#:tests? #f
 | 
				
			||||||
      #:tests? #f
 | 
					 | 
				
			||||||
      #:phases
 | 
					      #:phases
 | 
				
			||||||
      (alist-cons-before
 | 
					      (alist-cons-before
 | 
				
			||||||
       'configure 'patch-configure
 | 
					       'configure 'patch-configure
 | 
				
			||||||
| 
						 | 
					@ -406,5 +441,5 @@ definitions.")
 | 
				
			||||||
    "FontForge allows you to create and modify postscript, truetype and
 | 
					    "FontForge allows you to create and modify postscript, truetype and
 | 
				
			||||||
opentype fonts.  You can save fonts in many different outline formats, and
 | 
					opentype fonts.  You can save fonts in many different outline formats, and
 | 
				
			||||||
generate bitmaps.")
 | 
					generate bitmaps.")
 | 
				
			||||||
   (license license:bsd-3)
 | 
					   (license license:gpl3+)
 | 
				
			||||||
   (home-page "http://fontforge.org/")))
 | 
					   (home-page "http://fontforge.org/")))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,7 @@
 | 
				
			||||||
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 | 
					;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 | 
				
			||||||
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 | 
					;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 | 
				
			||||||
;;; Copyright © 2015 Andy Wingo <wingo@pobox.com>
 | 
					;;; Copyright © 2015 Andy Wingo <wingo@pobox.com>
 | 
				
			||||||
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
 | 
					;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 | 
				
			||||||
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 | 
					;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 | 
				
			||||||
;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
 | 
					;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
 | 
				
			||||||
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
					;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
| 
						 | 
					@ -82,14 +82,14 @@ freedesktop.org project.")
 | 
				
			||||||
(define-public libinput
 | 
					(define-public libinput
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "libinput")
 | 
					    (name "libinput")
 | 
				
			||||||
    (version "1.1.902")
 | 
					    (version "1.2.0")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "https://freedesktop.org/software/libinput/"
 | 
					              (uri (string-append "https://freedesktop.org/software/libinput/"
 | 
				
			||||||
                                  name "-" version ".tar.xz"))
 | 
					                                  name "-" version ".tar.xz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "19wa5yizc3nfq3gibyqb3ygdvcs7v7bz1m5ifv0f4va3igxc3nk3"))))
 | 
					                "0b3f67xsy1s84cvzw22mjfkbcv6pj4p4yns4h3m0fmb7zqbvjm0p"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
     `(("pkg-config" ,pkg-config)))
 | 
					     `(("pkg-config" ,pkg-config)))
 | 
				
			||||||
| 
						 | 
					@ -142,14 +142,14 @@ the freedesktop.org XDG Base Directory specification.")
 | 
				
			||||||
(define-public elogind
 | 
					(define-public elogind
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "elogind")
 | 
					    (name "elogind")
 | 
				
			||||||
    (version "219.12")
 | 
					    (version "219.14")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "https://wingolog.org/pub/" name "/"
 | 
					              (uri (string-append "https://wingolog.org/pub/" name "/"
 | 
				
			||||||
                                  name "-" version ".tar.xz"))
 | 
					                                  name "-" version ".tar.xz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "13qc4f0dl7ynnfp1y565z2k0jjizly5w3dqhiqkdk7v6jr4pksb7"))
 | 
					                "1jckc4wx199n1q4r4fv43ibjs6nlq91s39w9r78ilk1z383m1hcx"))
 | 
				
			||||||
              (modules '((guix build utils)))
 | 
					              (modules '((guix build utils)))
 | 
				
			||||||
              (snippet
 | 
					              (snippet
 | 
				
			||||||
               '(begin
 | 
					               '(begin
 | 
				
			||||||
| 
						 | 
					@ -165,11 +165,17 @@ the freedesktop.org XDG Base Directory specification.")
 | 
				
			||||||
                            (assoc-ref %build-inputs "libcap"))
 | 
					                            (assoc-ref %build-inputs "libcap"))
 | 
				
			||||||
             (string-append "--with-udevrulesdir="
 | 
					             (string-append "--with-udevrulesdir="
 | 
				
			||||||
                            (assoc-ref %outputs "out")
 | 
					                            (assoc-ref %outputs "out")
 | 
				
			||||||
                            "/lib/udev/rules.d")
 | 
					                            "/lib/udev/rules.d"))
 | 
				
			||||||
             ;; XXX: fail with:
 | 
					       #:make-flags '("PKTTYAGENT=/run/current-system/profile/bin/pkttyagent")
 | 
				
			||||||
             ;;  src/shared/clean-ipc.c:315: undefined reference to `mq_unlink'
 | 
					       #:phases (modify-phases %standard-phases
 | 
				
			||||||
             "LDFLAGS=-lrt")
 | 
					                  (add-before 'build 'fix-service-file
 | 
				
			||||||
       #:make-flags '("PKTTYAGENT=/run/current-system/profile/bin/pkttyagent")))
 | 
					                    (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					                      ;; Fix the file name of the 'elogind' binary in the D-Bus
 | 
				
			||||||
 | 
					                      ;; '.service' file.
 | 
				
			||||||
 | 
					                      (substitute* "src/login/org.freedesktop.login1.service"
 | 
				
			||||||
 | 
					                        (("^Exec=.*")
 | 
				
			||||||
 | 
					                         (string-append "Exec=" (assoc-ref %outputs "out")
 | 
				
			||||||
 | 
					                                        "/libexec/elogind/elogind\n"))))))))
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
     `(("intltool" ,intltool)
 | 
					     `(("intltool" ,intltool)
 | 
				
			||||||
       ("gettext" ,gnu-gettext)
 | 
					       ("gettext" ,gnu-gettext)
 | 
				
			||||||
| 
						 | 
					@ -188,7 +194,7 @@ the freedesktop.org XDG Base Directory specification.")
 | 
				
			||||||
                                             ;when pressing the power button
 | 
					                                             ;when pressing the power button
 | 
				
			||||||
       ("dbus" ,dbus)
 | 
					       ("dbus" ,dbus)
 | 
				
			||||||
       ("eudev" ,eudev)))
 | 
					       ("eudev" ,eudev)))
 | 
				
			||||||
    (home-page "https://github.com/andywingo/elogind")
 | 
					    (home-page "https://github.com/wingo/elogind")
 | 
				
			||||||
    (synopsis "User, seat, and session management service")
 | 
					    (synopsis "User, seat, and session management service")
 | 
				
			||||||
    (description "Elogind is the systemd project's \"logind\" service,
 | 
					    (description "Elogind is the systemd project's \"logind\" service,
 | 
				
			||||||
extracted out as a separate project.  Elogind integrates with PAM to provide
 | 
					extracted out as a separate project.  Elogind integrates with PAM to provide
 | 
				
			||||||
| 
						 | 
					@ -247,15 +253,16 @@ Python.")
 | 
				
			||||||
(define-public wayland
 | 
					(define-public wayland
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "wayland")
 | 
					    (name "wayland")
 | 
				
			||||||
    (version "1.9.0")
 | 
					    (version "1.10.0")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "https://wayland.freedesktop.org/releases/"
 | 
					              (uri (string-append "https://wayland.freedesktop.org/releases/"
 | 
				
			||||||
                                  name "-" version ".tar.xz"))
 | 
					                                  name "-" version ".tar.xz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "1yhy62vkbq8j8c9zaa6yzvn75cd99kfa8n2zfdwl80x019r711ww"))))
 | 
					                "1p307ly1yyqjnzn9dbv78yffql2qszn84qk74lwanl3gma8fgxjb"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments `(#:parallel-tests? #f))
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
     `(("doxygen" ,doxygen)
 | 
					     `(("doxygen" ,doxygen)
 | 
				
			||||||
       ("graphviz" ,graphviz)
 | 
					       ("graphviz" ,graphviz)
 | 
				
			||||||
| 
						 | 
					@ -268,7 +275,7 @@ Python.")
 | 
				
			||||||
       ("expat" ,expat)
 | 
					       ("expat" ,expat)
 | 
				
			||||||
       ("libffi" ,libffi)
 | 
					       ("libffi" ,libffi)
 | 
				
			||||||
       ("libxml2" ,libxml2))) ; for XML_CATALOG_FILES
 | 
					       ("libxml2" ,libxml2))) ; for XML_CATALOG_FILES
 | 
				
			||||||
    (home-page "http://wayland.freedesktop.org/")
 | 
					    (home-page "https://wayland.freedesktop.org/")
 | 
				
			||||||
    (synopsis "Display server protocol")
 | 
					    (synopsis "Display server protocol")
 | 
				
			||||||
    (description
 | 
					    (description
 | 
				
			||||||
     "Wayland is a protocol for a compositor to talk to its clients as well as
 | 
					     "Wayland is a protocol for a compositor to talk to its clients as well as
 | 
				
			||||||
| 
						 | 
					@ -358,6 +365,7 @@ Analysis and Reporting Technology) functionality.")
 | 
				
			||||||
               "doc"))                            ;5 MiB of gtk-doc HTML
 | 
					               "doc"))                            ;5 MiB of gtk-doc HTML
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     `(#:tests? #f ; requiring system message dbus
 | 
					     `(#:tests? #f ; requiring system message dbus
 | 
				
			||||||
 | 
					       #:disallowed-references ("doc")            ;enforce separation of "doc"
 | 
				
			||||||
       #:configure-flags
 | 
					       #:configure-flags
 | 
				
			||||||
       (list "--disable-man"
 | 
					       (list "--disable-man"
 | 
				
			||||||
             "--localstatedir=/var"
 | 
					             "--localstatedir=/var"
 | 
				
			||||||
| 
						 | 
					@ -404,7 +412,7 @@ message bus.")
 | 
				
			||||||
    (version "0.6.40")
 | 
					    (version "0.6.40")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "http://www.freedesktop.org/software/"
 | 
					              (uri (string-append "https://www.freedesktop.org/software/"
 | 
				
			||||||
                                  name "/" name "-" version ".tar.xz"))
 | 
					                                  name "/" name "-" version ".tar.xz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
| 
						 | 
					@ -444,7 +452,7 @@ interfaces, based on the useradd, usermod and userdel commands.")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append
 | 
					              (uri (string-append
 | 
				
			||||||
                    "http://www.freedesktop.org/software/" name "/"
 | 
					                    "https://www.freedesktop.org/software/" name "/"
 | 
				
			||||||
                    name "-" version ".tar.xz"))
 | 
					                    name "-" version ".tar.xz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
| 
						 | 
					@ -471,15 +479,15 @@ which speak the Mobile Interface Broadband Model (MBIM) protocol.")
 | 
				
			||||||
(define-public libqmi
 | 
					(define-public libqmi
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "libqmi")
 | 
					    (name "libqmi")
 | 
				
			||||||
    (version "1.12.6")
 | 
					    (version "1.12.8")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append
 | 
					              (uri (string-append
 | 
				
			||||||
                    "http://www.freedesktop.org/software/" name "/"
 | 
					                    "https://www.freedesktop.org/software/" name "/"
 | 
				
			||||||
                    name "-" version ".tar.xz"))
 | 
					                    name "-" version ".tar.xz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "101ppan2q1h4pyp2zbn9b8sdwy2c7fk9rp91yykxz3afrvzbymq8"))))
 | 
					                "19w2zkm5xl6i3vm1xhjjclks4awas17gfbb2k5y66gwnkiykjfnj"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
     `(("glib:bin" ,glib "bin") ; for glib-mkenums
 | 
					     `(("glib:bin" ,glib "bin") ; for glib-mkenums
 | 
				
			||||||
| 
						 | 
					@ -488,7 +496,7 @@ which speak the Mobile Interface Broadband Model (MBIM) protocol.")
 | 
				
			||||||
    (propagated-inputs
 | 
					    (propagated-inputs
 | 
				
			||||||
     `(("glib" ,glib))) ; required by qmi-glib.pc
 | 
					     `(("glib" ,glib))) ; required by qmi-glib.pc
 | 
				
			||||||
    (synopsis "Library to communicate with QMI-powered modems")
 | 
					    (synopsis "Library to communicate with QMI-powered modems")
 | 
				
			||||||
    (home-page "http://www.freedesktop.org/wiki/Software/libqmi/")
 | 
					    (home-page "https://www.freedesktop.org/wiki/Software/libqmi/")
 | 
				
			||||||
    (description
 | 
					    (description
 | 
				
			||||||
     "Libqmi is a GLib-based library for talking to WWAN modems and devices
 | 
					     "Libqmi is a GLib-based library for talking to WWAN modems and devices
 | 
				
			||||||
which speak the Qualcomm MSM Interface (QMI) protocol.")
 | 
					which speak the Qualcomm MSM Interface (QMI) protocol.")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,7 @@
 | 
				
			||||||
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
 | 
					;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
 | 
				
			||||||
;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
 | 
					;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
 | 
				
			||||||
;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
 | 
					;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -127,7 +128,7 @@ provide connectivity for client applications written in any language.")
 | 
				
			||||||
(define-public tiled
 | 
					(define-public tiled
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "tiled")
 | 
					    (name "tiled")
 | 
				
			||||||
    (version "0.13.1")
 | 
					    (version "0.15.1")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "https://github.com/bjorn/tiled/archive/v"
 | 
					              (uri (string-append "https://github.com/bjorn/tiled/archive/v"
 | 
				
			||||||
| 
						 | 
					@ -135,19 +136,18 @@ provide connectivity for client applications written in any language.")
 | 
				
			||||||
              (file-name (string-append name "-" version ".tar.gz"))
 | 
					              (file-name (string-append name "-" version ".tar.gz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "057a5cna3vhznpl9hyql2sxz995aprv43r8wva89x4vdphxv04lm"))))
 | 
					                "10bbjdv5r36229r1dqg32bxcj9yvpkx9jgs9v4s1qb71v856b15h"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (inputs `(("qt" ,qt)
 | 
					    (inputs `(("qt" ,qt)
 | 
				
			||||||
              ("zlib" ,zlib)))
 | 
					              ("zlib" ,zlib)))
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     '(#:phases
 | 
					     '(#:phases
 | 
				
			||||||
       (alist-replace
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
        'configure
 | 
					         (replace 'configure
 | 
				
			||||||
        (lambda* (#:key outputs #:allow-other-keys)
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
          (let ((out (assoc-ref outputs "out")))
 | 
					             (let ((out (assoc-ref outputs "out")))
 | 
				
			||||||
            (system* "qmake"
 | 
					               (system* "qmake"
 | 
				
			||||||
                     (string-append "PREFIX=" out))))
 | 
					                        (string-append "PREFIX=" out))))))))
 | 
				
			||||||
        %standard-phases)))
 | 
					 | 
				
			||||||
    (home-page "http://www.mapeditor.org/")
 | 
					    (home-page "http://www.mapeditor.org/")
 | 
				
			||||||
    (synopsis "Tile map editor")
 | 
					    (synopsis "Tile map editor")
 | 
				
			||||||
    (description
 | 
					    (description
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@
 | 
				
			||||||
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 | 
					;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 | 
				
			||||||
;;; Copyright © 2014, 2015 Sou Bunnbu <iyzsong@gmail.com>
 | 
					;;; Copyright © 2014, 2015 Sou Bunnbu <iyzsong@gmail.com>
 | 
				
			||||||
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 | 
					;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 | 
				
			||||||
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 | 
					;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
 | 
				
			||||||
;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
 | 
					;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
 | 
				
			||||||
;;; Copyright © 2015 Christopher Allan Webber <cwebber@dustycloud.org>
 | 
					;;; Copyright © 2015 Christopher Allan Webber <cwebber@dustycloud.org>
 | 
				
			||||||
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 | 
					;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,8 @@
 | 
				
			||||||
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 | 
					;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 | 
				
			||||||
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 | 
					;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 | 
				
			||||||
;;; Copyright © 2016 Rodger Fox <thylakoid@openmailbox.org>
 | 
					;;; Copyright © 2016 Rodger Fox <thylakoid@openmailbox.org>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -69,6 +71,7 @@
 | 
				
			||||||
  #:use-module (gnu packages sdl)
 | 
					  #:use-module (gnu packages sdl)
 | 
				
			||||||
  #:use-module (gnu packages texinfo)
 | 
					  #:use-module (gnu packages texinfo)
 | 
				
			||||||
  #:use-module (gnu packages check)
 | 
					  #:use-module (gnu packages check)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages fonts)
 | 
				
			||||||
  #:use-module (gnu packages fontutils)
 | 
					  #:use-module (gnu packages fontutils)
 | 
				
			||||||
  #:use-module (gnu packages gstreamer)
 | 
					  #:use-module (gnu packages gstreamer)
 | 
				
			||||||
  #:use-module (gnu packages bash)
 | 
					  #:use-module (gnu packages bash)
 | 
				
			||||||
| 
						 | 
					@ -1182,7 +1185,7 @@ is programmed in Haskell.")
 | 
				
			||||||
(define-public manaplus
 | 
					(define-public manaplus
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "manaplus")
 | 
					    (name "manaplus")
 | 
				
			||||||
    (version "1.6.1.16")
 | 
					    (version "1.6.3.12")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append
 | 
					              (uri (string-append
 | 
				
			||||||
| 
						 | 
					@ -1190,7 +1193,7 @@ is programmed in Haskell.")
 | 
				
			||||||
                    version "/manaplus-" version ".tar.xz"))
 | 
					                    version "/manaplus-" version ".tar.xz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "1vrsjvdbdzbnqmr8sp110b2d93kp5yfnifsn6zjm60kdvvbphdir"))))
 | 
					                "02bnd4nk1qzrfqckqkwb6sbjzsmacv968ih74cdgcykslpsr684d"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     '(#:configure-flags
 | 
					     '(#:configure-flags
 | 
				
			||||||
| 
						 | 
					@ -1917,3 +1920,109 @@ Catan.  It can be played on a local network, on the internet, and with AI
 | 
				
			||||||
players.")
 | 
					players.")
 | 
				
			||||||
    (home-page "http://pio.sourceforge.net/")
 | 
					    (home-page "http://pio.sourceforge.net/")
 | 
				
			||||||
    (license license:gpl2+)))
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public desmume
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "desmume")
 | 
				
			||||||
 | 
					    (version "0.9.11")
 | 
				
			||||||
 | 
					    (source
 | 
				
			||||||
 | 
					     (origin
 | 
				
			||||||
 | 
					       (method url-fetch)
 | 
				
			||||||
 | 
					       (uri (string-append
 | 
				
			||||||
 | 
					             "mirror://sourceforge/desmume/desmume/"
 | 
				
			||||||
 | 
					             version "/desmume-" version ".tar.gz"))
 | 
				
			||||||
 | 
					       (sha256
 | 
				
			||||||
 | 
					        (base32
 | 
				
			||||||
 | 
					         "15l8wdw3q61fniy3h93d84dnm6s4pyadvh95a0j6d580rjk4pcrs"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     ;; Enable support for WiFi and microphone.
 | 
				
			||||||
 | 
					     `(#:configure-flags '("--enable-wifi"
 | 
				
			||||||
 | 
					                           "--enable-openal")))
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("pkg-config" ,pkg-config)
 | 
				
			||||||
 | 
					       ("intltool" ,intltool)))
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("zlib" ,zlib)
 | 
				
			||||||
 | 
					       ("sdl" ,sdl)
 | 
				
			||||||
 | 
					       ("glib" ,glib)
 | 
				
			||||||
 | 
					       ("gtk+" ,gtk+-2)
 | 
				
			||||||
 | 
					       ("glu" ,glu)))
 | 
				
			||||||
 | 
					    (home-page "http://desmume.org/")
 | 
				
			||||||
 | 
					    (synopsis "Nintendo DS emulator")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "DeSmuME is an emulator for the Nintendo DS handheld gaming console.")
 | 
				
			||||||
 | 
					    (license license:gpl2)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public einstein
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "einstein")
 | 
				
			||||||
 | 
					    (version "2.0")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append "http://http.debian.net/debian/pool/main/e/"
 | 
				
			||||||
 | 
					                                  "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
 | 
				
			||||||
 | 
					              (patches (list (search-patch "einstein-build.patch")))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("freetype" ,freetype)
 | 
				
			||||||
 | 
					       ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
 | 
				
			||||||
 | 
					       ("zlib" ,zlib)))
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("font-dejavu" ,font-dejavu)))
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:tests? #f ; no check target
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					        (modify-phases %standard-phases
 | 
				
			||||||
 | 
					          (replace 'configure
 | 
				
			||||||
 | 
					          (lambda* (#:key outputs inputs #:allow-other-keys)
 | 
				
			||||||
 | 
					            (let ((out (assoc-ref outputs "out"))
 | 
				
			||||||
 | 
					                  (dejavu (string-append (assoc-ref inputs "font-dejavu")
 | 
				
			||||||
 | 
					                                         "/share/fonts/truetype/DejaVuSans.ttf")))
 | 
				
			||||||
 | 
					              (substitute* "Makefile"
 | 
				
			||||||
 | 
					                (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
 | 
				
			||||||
 | 
					              ;; The patch above registers a free font for use by the binary,
 | 
				
			||||||
 | 
					              ;; but the font is copied during the compile phase into a
 | 
				
			||||||
 | 
					              ;; resources file, so we need to make the ttf file available.
 | 
				
			||||||
 | 
					              (symlink dejavu "res/DejaVuSans.ttf")
 | 
				
			||||||
 | 
					              #t))))))
 | 
				
			||||||
 | 
					    (synopsis "Logic puzzle game")
 | 
				
			||||||
 | 
					    (description "The goal of this logic game is to open all cards in a 6x6
 | 
				
			||||||
 | 
					grid, using a number of hints as to their relative position.  The game idea
 | 
				
			||||||
 | 
					is attributed to Albert Einstein.")
 | 
				
			||||||
 | 
					    ;; The original home page has disappeared.
 | 
				
			||||||
 | 
					    (home-page (string-append "http://web.archive.org/web/20120521062745/"
 | 
				
			||||||
 | 
					                              "http://games.flowix.com/en/index.html"))
 | 
				
			||||||
 | 
					    ;; License according to
 | 
				
			||||||
 | 
					    ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
 | 
				
			||||||
 | 
					    ;; The source code is a DFSG-sanitized tarball and does not contain any
 | 
				
			||||||
 | 
					    ;; license information.
 | 
				
			||||||
 | 
					    (license license:gpl3+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public powwow
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "powwow")
 | 
				
			||||||
 | 
					    (version "1.2.17")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append
 | 
				
			||||||
 | 
					                    "http://www.hoopajoo.net/static/projects/powwow-"
 | 
				
			||||||
 | 
					                    version ".tar.gz"))
 | 
				
			||||||
 | 
					              (file-name (string-append name "-" version ".tar.gz"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "1xmsg2y7qcvj67i9ilnih0mvfxcpni7fzrz343x9rdfnkkzf3pp8"))))
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("ncurses" ,ncurses)))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (home-page "http://www.hoopajoo.net/projects/powwow.html")
 | 
				
			||||||
 | 
					    (synopsis "MUD and telnet client")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "POWWOW is a client software which can be used for telnet as well as for
 | 
				
			||||||
 | 
					@dfn{Multi-User Dungeon} (MUD).  Additionally it can serve as a nice client for
 | 
				
			||||||
 | 
					the chat server psyced with the specific config located at
 | 
				
			||||||
 | 
					http://lavachat.symlynx.com/unix/")
 | 
				
			||||||
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					;;; GNU Guix --- Functional package management for GNU
 | 
				
			||||||
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 | 
					;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 | 
				
			||||||
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 | 
					;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 | 
				
			||||||
;;; Copyright © 2014, 2015 Ricardo Wurmus <rekado@elephly.net>
 | 
					;;; Copyright © 2014, 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
 | 
				
			||||||
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 | 
					;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 | 
				
			||||||
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
 | 
					;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -354,6 +354,8 @@ Go.  It also includes runtime support libraries for these languages.")
 | 
				
			||||||
                "1ny4smkp5bzs3cp8ss7pl6lk8yss0d9m4av1mvdp72r1x695akxq"))
 | 
					                "1ny4smkp5bzs3cp8ss7pl6lk8yss0d9m4av1mvdp72r1x695akxq"))
 | 
				
			||||||
              (patches (list (search-patch "gcc-5.0-libvtv-runpath.patch")))))))
 | 
					              (patches (list (search-patch "gcc-5.0-libvtv-runpath.patch")))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Note: When changing the default gcc version, update
 | 
				
			||||||
 | 
					;;       the gcc-toolchain-* definitions accordingly.
 | 
				
			||||||
(define-public gcc gcc-4.9)
 | 
					(define-public gcc gcc-4.9)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public (make-libstdc++ gcc)
 | 
					(define-public (make-libstdc++ gcc)
 | 
				
			||||||
| 
						 | 
					@ -440,7 +442,15 @@ as the 'native-search-paths' field."
 | 
				
			||||||
        `(cons (string-append "--enable-languages="
 | 
					        `(cons (string-append "--enable-languages="
 | 
				
			||||||
                              ,(string-join languages ","))
 | 
					                              ,(string-join languages ","))
 | 
				
			||||||
               (remove (cut string-match "--enable-languages.*" <>)
 | 
					               (remove (cut string-match "--enable-languages.*" <>)
 | 
				
			||||||
                       ,flags)))))))
 | 
					                       ,flags)))
 | 
				
			||||||
 | 
					       ((#:phases phases)
 | 
				
			||||||
 | 
					        `(modify-phases ,phases
 | 
				
			||||||
 | 
					           (add-after 'install 'remove-broken-or-conflicting-files
 | 
				
			||||||
 | 
					             (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					               (for-each delete-file
 | 
				
			||||||
 | 
					                         (find-files (string-append (assoc-ref outputs "out") "/bin")
 | 
				
			||||||
 | 
					                                     ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc.*)"))
 | 
				
			||||||
 | 
					               #t))))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define %generic-search-paths
 | 
					(define %generic-search-paths
 | 
				
			||||||
  ;; This is the language-neutral search path for GCC.  Entries in $CPATH are
 | 
					  ;; This is the language-neutral search path for GCC.  Entries in $CPATH are
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -144,7 +144,7 @@ catalogs.  Nearly all GNU packages use Gettext.")
 | 
				
			||||||
       ("perl-module-build" ,perl-module-build)
 | 
					       ("perl-module-build" ,perl-module-build)
 | 
				
			||||||
       ("docbook-xsl" ,docbook-xsl)
 | 
					       ("docbook-xsl" ,docbook-xsl)
 | 
				
			||||||
       ("docbook-xml" ,docbook-xml) ;for tests
 | 
					       ("docbook-xml" ,docbook-xml) ;for tests
 | 
				
			||||||
       ("texlive-bin" ,texlive-bin) ;for tests
 | 
					       ("texlive" ,texlive-minimal) ;for tests
 | 
				
			||||||
       ("libxml2" ,libxml2)
 | 
					       ("libxml2" ,libxml2)
 | 
				
			||||||
       ("xsltproc" ,libxslt)))
 | 
					       ("xsltproc" ,libxslt)))
 | 
				
			||||||
    (home-page "http://po4a.alioth.debian.org/")
 | 
					    (home-page "http://po4a.alioth.debian.org/")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -524,9 +524,11 @@ useful for C++.")
 | 
				
			||||||
       ("pkg-config" ,pkg-config)))
 | 
					       ("pkg-config" ,pkg-config)))
 | 
				
			||||||
    (inputs
 | 
					    (inputs
 | 
				
			||||||
     `(("python" ,python)
 | 
					     `(("python" ,python)
 | 
				
			||||||
       ("glib"   ,glib)
 | 
					 | 
				
			||||||
       ("python-pycairo" ,python-pycairo)
 | 
					       ("python-pycairo" ,python-pycairo)
 | 
				
			||||||
       ("gobject-introspection" ,gobject-introspection)
 | 
					       ("gobject-introspection" ,gobject-introspection)))
 | 
				
			||||||
 | 
					    (propagated-inputs
 | 
				
			||||||
 | 
					     ;; pygobject-3.0.pc refers to all these.
 | 
				
			||||||
 | 
					     `(("glib" ,glib)
 | 
				
			||||||
       ("libffi" ,libffi)))
 | 
					       ("libffi" ,libffi)))
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     ;; TODO: failing tests: test_native_calls_async
 | 
					     ;; TODO: failing tests: test_native_calls_async
 | 
				
			||||||
| 
						 | 
					@ -538,6 +540,8 @@ useful for C++.")
 | 
				
			||||||
     ;; test_callback_user_data_middle_single
 | 
					     ;; test_callback_user_data_middle_single
 | 
				
			||||||
     ;; test_callback_user_data_middle_tuple
 | 
					     ;; test_callback_user_data_middle_tuple
 | 
				
			||||||
     '(#:tests? #f))
 | 
					     '(#:tests? #f))
 | 
				
			||||||
 | 
					    ;; For finding typelib files, since gobject-introscpetion isn't propagated.
 | 
				
			||||||
 | 
					    (native-search-paths (package-native-search-paths gobject-introspection))
 | 
				
			||||||
    (home-page "https://live.gnome.org/PyGObject")
 | 
					    (home-page "https://live.gnome.org/PyGObject")
 | 
				
			||||||
    (synopsis "Python bindings for GObject")
 | 
					    (synopsis "Python bindings for GObject")
 | 
				
			||||||
    (description
 | 
					    (description
 | 
				
			||||||
| 
						 | 
					@ -550,10 +554,8 @@ useful for C++.")
 | 
				
			||||||
    (name "python2-pygobject")
 | 
					    (name "python2-pygobject")
 | 
				
			||||||
    (inputs
 | 
					    (inputs
 | 
				
			||||||
     `(("python" ,python-2)
 | 
					     `(("python" ,python-2)
 | 
				
			||||||
       ("glib" ,glib)
 | 
					 | 
				
			||||||
       ("python-pycairo" ,python2-pycairo)
 | 
					       ("python-pycairo" ,python2-pycairo)
 | 
				
			||||||
       ("gobject-introspection" ,gobject-introspection)
 | 
					       ("gobject-introspection" ,gobject-introspection)))))
 | 
				
			||||||
       ("libffi" ,libffi)))))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define telepathy-glib
 | 
					(define telepathy-glib
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,6 +34,7 @@
 | 
				
			||||||
  #:use-module ((guix licenses) #:prefix license:)
 | 
					  #:use-module ((guix licenses) #:prefix license:)
 | 
				
			||||||
  #:use-module (guix packages)
 | 
					  #:use-module (guix packages)
 | 
				
			||||||
  #:use-module (guix download)
 | 
					  #:use-module (guix download)
 | 
				
			||||||
 | 
					  #:use-module (guix git-download)
 | 
				
			||||||
  #:use-module (guix utils)
 | 
					  #:use-module (guix utils)
 | 
				
			||||||
  #:use-module (guix build-system gnu)
 | 
					  #:use-module (guix build-system gnu)
 | 
				
			||||||
  #:use-module (guix build-system glib-or-gtk)
 | 
					  #:use-module (guix build-system glib-or-gtk)
 | 
				
			||||||
| 
						 | 
					@ -107,6 +108,7 @@
 | 
				
			||||||
  #:use-module (gnu packages cdrom)
 | 
					  #:use-module (gnu packages cdrom)
 | 
				
			||||||
  #:use-module (gnu packages samba)
 | 
					  #:use-module (gnu packages samba)
 | 
				
			||||||
  #:use-module (gnu packages readline)
 | 
					  #:use-module (gnu packages readline)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages fonts)
 | 
				
			||||||
  #:use-module (srfi srfi-1))
 | 
					  #:use-module (srfi srfi-1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public brasero
 | 
					(define-public brasero
 | 
				
			||||||
| 
						 | 
					@ -1463,7 +1465,7 @@ Hints specification (EWMH).")
 | 
				
			||||||
    (license license:lgpl2.0+)))
 | 
					    (license license:lgpl2.0+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; stable version for gtk2, required by xfwm4.
 | 
					;; stable version for gtk2, required by xfwm4.
 | 
				
			||||||
(define-public libwnck-1
 | 
					(define-public libwnck-2
 | 
				
			||||||
  (package (inherit libwnck)
 | 
					  (package (inherit libwnck)
 | 
				
			||||||
    (name "libwnck")
 | 
					    (name "libwnck")
 | 
				
			||||||
    (version "2.30.7")
 | 
					    (version "2.30.7")
 | 
				
			||||||
| 
						 | 
					@ -3381,7 +3383,7 @@ USB transfers with your high-level application or system daemon.")
 | 
				
			||||||
(define-public simple-scan
 | 
					(define-public simple-scan
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "simple-scan")
 | 
					    (name "simple-scan")
 | 
				
			||||||
    (version "3.17.4")
 | 
					    (version "3.19.91")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "https://launchpad.net/simple-scan/"
 | 
					              (uri (string-append "https://launchpad.net/simple-scan/"
 | 
				
			||||||
| 
						 | 
					@ -3390,7 +3392,7 @@ USB transfers with your high-level application or system daemon.")
 | 
				
			||||||
                                  version ".tar.xz"))
 | 
					                                  version ".tar.xz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "1pslbv45g01g039zj2b01k08f763kkhzqw8wwz7yh27m7bjllnx6"))))
 | 
					                "1c5glf5vxgld41w4jxfqcv17q76qnh43fawpv33hncgh8d283xkf"))))
 | 
				
			||||||
    (build-system glib-or-gtk-build-system)
 | 
					    (build-system glib-or-gtk-build-system)
 | 
				
			||||||
    (inputs
 | 
					    (inputs
 | 
				
			||||||
     `(("gtk" ,gtk+)
 | 
					     `(("gtk" ,gtk+)
 | 
				
			||||||
| 
						 | 
					@ -3408,6 +3410,21 @@ USB transfers with your high-level application or system daemon.")
 | 
				
			||||||
       ("pkg-config" ,pkg-config)
 | 
					       ("pkg-config" ,pkg-config)
 | 
				
			||||||
       ("vala" ,vala)
 | 
					       ("vala" ,vala)
 | 
				
			||||||
       ("xmllint" ,libxml2)))
 | 
					       ("xmllint" ,libxml2)))
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     '(#:configure-flags '("--disable-packagekit")
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         (add-after 'unpack 'clean
 | 
				
			||||||
 | 
					                    (lambda _
 | 
				
			||||||
 | 
					                      ;; Remove a left-over reference to PackageKit.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                      ;; https://bugs.launchpad.net/simple-scan/+bug/1462769
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                      ;; There are some generated C files erroneously
 | 
				
			||||||
 | 
					                      ;; included in the source distribution, and this
 | 
				
			||||||
 | 
					                      ;; one breaks the build by referring to a
 | 
				
			||||||
 | 
					                      ;; non-existent header (packagekit.h)
 | 
				
			||||||
 | 
					                      (delete-file "src/ui.c"))))))
 | 
				
			||||||
    (home-page "https://launchpad.net/simple-scan")
 | 
					    (home-page "https://launchpad.net/simple-scan")
 | 
				
			||||||
    (synopsis "Document and image scanner")
 | 
					    (synopsis "Document and image scanner")
 | 
				
			||||||
    (description "Simple Scan is an easy-to-use application, designed to let
 | 
					    (description "Simple Scan is an easy-to-use application, designed to let
 | 
				
			||||||
| 
						 | 
					@ -3778,6 +3795,46 @@ such as gzip tarballs.")
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "0icajbzqf5llvp5s8nafwkhwz6a6jmwn4hhs81bk0bpzawyq4zdk"))))
 | 
					                "0icajbzqf5llvp5s8nafwkhwz6a6jmwn4hhs81bk0bpzawyq4zdk"))))
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     '(#:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         (add-before 'configure 'pre-configure
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             ;; Use elogind instead of systemd.
 | 
				
			||||||
 | 
					             (substitute* "configure"
 | 
				
			||||||
 | 
					               (("libsystemd-login >= 183 libsystemd-daemon libsystemd-journal")
 | 
				
			||||||
 | 
					                "libelogind")
 | 
				
			||||||
 | 
					               (("systemd") "elogind"))
 | 
				
			||||||
 | 
					             (substitute* "gnome-session/gsm-systemd.c"
 | 
				
			||||||
 | 
					               (("#include <systemd/sd-login.h>")
 | 
				
			||||||
 | 
					                "#include <elogind/sd-login.h>"))
 | 
				
			||||||
 | 
					             ;; Remove uses of the systemd journal.
 | 
				
			||||||
 | 
					             (substitute* "gnome-session/main.c"
 | 
				
			||||||
 | 
					               (("#ifdef HAVE_SYSTEMD") "#if 0"))
 | 
				
			||||||
 | 
					             (substitute* "gnome-session/gsm-manager.c"
 | 
				
			||||||
 | 
					               (("#ifdef HAVE_SYSTEMD") "#if 0"))
 | 
				
			||||||
 | 
					             #t))
 | 
				
			||||||
 | 
					         (add-after 'install 'wrap-gnome-session
 | 
				
			||||||
 | 
					           (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             ;; Make sure 'gnome-session' finds the 'gsettings' program.
 | 
				
			||||||
 | 
					             (let ((glib (assoc-ref inputs "glib:bin"))
 | 
				
			||||||
 | 
					                   (out  (assoc-ref outputs "out")))
 | 
				
			||||||
 | 
					               (wrap-program (string-append out "/bin/gnome-session")
 | 
				
			||||||
 | 
					                 `("PATH" ":" prefix (,(string-append glib "/bin"))))
 | 
				
			||||||
 | 
					               #t)))
 | 
				
			||||||
 | 
					         (add-after 'install 'disable-hardware-acceleration-check
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             ;; Do not abort if hardware acceleration is missing.  This allows
 | 
				
			||||||
 | 
					             ;; GNOME to run in QEMU and on low-end devices.
 | 
				
			||||||
 | 
					             (let ((out (assoc-ref outputs "out")))
 | 
				
			||||||
 | 
					               (substitute* (string-append out
 | 
				
			||||||
 | 
					                                           "/share/xsessions/gnome.desktop")
 | 
				
			||||||
 | 
					                 (("gnome-session")
 | 
				
			||||||
 | 
					                  "gnome-session --disable-acceleration-check"))
 | 
				
			||||||
 | 
					               #t))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       #:configure-flags
 | 
				
			||||||
 | 
					       '("--enable-elogind")))
 | 
				
			||||||
    (build-system glib-or-gtk-build-system)
 | 
					    (build-system glib-or-gtk-build-system)
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
     `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
 | 
					     `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
 | 
				
			||||||
| 
						 | 
					@ -3785,7 +3842,8 @@ such as gzip tarballs.")
 | 
				
			||||||
       ("intltool" ,intltool)
 | 
					       ("intltool" ,intltool)
 | 
				
			||||||
       ("xsltproc" ,libxslt)))
 | 
					       ("xsltproc" ,libxslt)))
 | 
				
			||||||
    (inputs
 | 
					    (inputs
 | 
				
			||||||
     `(("gnome-desktop" ,gnome-desktop)
 | 
					     `(("elogind" ,elogind)
 | 
				
			||||||
 | 
					       ("gnome-desktop" ,gnome-desktop)
 | 
				
			||||||
       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
 | 
					       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
 | 
				
			||||||
       ("gtk+" ,gtk+)
 | 
					       ("gtk+" ,gtk+)
 | 
				
			||||||
       ("json-glib" ,json-glib)
 | 
					       ("json-glib" ,json-glib)
 | 
				
			||||||
| 
						 | 
					@ -4147,22 +4205,10 @@ Evolution (hence the name), but is now used by other packages as well.")
 | 
				
			||||||
users.")
 | 
					users.")
 | 
				
			||||||
    (license license:lgpl2.1)))
 | 
					    (license license:lgpl2.1)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define %network-manager-glib-duplicate-test-patch
 | 
					 | 
				
			||||||
  (origin
 | 
					 | 
				
			||||||
    (method url-fetch)
 | 
					 | 
				
			||||||
    (uri (string-append
 | 
					 | 
				
			||||||
          "http://cgit.freedesktop.org/NetworkManager/NetworkManager/"
 | 
					 | 
				
			||||||
          "patch/libnm-core/tests/test-general.c"
 | 
					 | 
				
			||||||
          "?id=874f455d6d47c5a34ed9861a6710f4b78202e0d6"))
 | 
					 | 
				
			||||||
    (file-name "network-manager-glib-duplicate-test.patch")
 | 
					 | 
				
			||||||
    (sha256
 | 
					 | 
				
			||||||
     (base32
 | 
					 | 
				
			||||||
      "1v0vpxzf0p0b1y5lmq8w7rjndp216gr60nbf2dpdz5rgxx3p3ml6"))))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(define-public network-manager
 | 
					(define-public network-manager
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "network-manager")
 | 
					    (name "network-manager")
 | 
				
			||||||
    (version "1.0.6")
 | 
					    (version "1.0.10")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "mirror://gnome/sources/NetworkManager/"
 | 
					              (uri (string-append "mirror://gnome/sources/NetworkManager/"
 | 
				
			||||||
| 
						 | 
					@ -4170,8 +4216,7 @@ users.")
 | 
				
			||||||
                                  "NetworkManager-" version ".tar.xz"))
 | 
					                                  "NetworkManager-" version ".tar.xz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "1galh9j95yw33iv1jj8zz0h88ahx8gm5mqmam7zq9f730cj01siq"))
 | 
					                "1g4z2wg036n0njqp8fycrisj46l3yda6pl00l4rg9nfz862cxkqv"))))
 | 
				
			||||||
              (patches (list %network-manager-glib-duplicate-test-patch))))
 | 
					 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (outputs '("out"
 | 
					    (outputs '("out"
 | 
				
			||||||
               "doc")) ; 8 MiB of gtk-doc HTML
 | 
					               "doc")) ; 8 MiB of gtk-doc HTML
 | 
				
			||||||
| 
						 | 
					@ -4194,6 +4239,19 @@ users.")
 | 
				
			||||||
               (string-append "--with-dhclient=" dhclient)))
 | 
					               (string-append "--with-dhclient=" dhclient)))
 | 
				
			||||||
       #:phases
 | 
					       #:phases
 | 
				
			||||||
       (modify-phases %standard-phases
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         (add-before 'configure 'pre-configure
 | 
				
			||||||
 | 
					           (lambda _
 | 
				
			||||||
 | 
					             ;; These tests try to test aspects of network-manager's
 | 
				
			||||||
 | 
					             ;; functionality within restricted containers, but they don't
 | 
				
			||||||
 | 
					             ;; cope with being already in the Guix build jail as that jail
 | 
				
			||||||
 | 
					             ;; lacks some features that they would like to proxy over (like
 | 
				
			||||||
 | 
					             ;; a /sys mount).
 | 
				
			||||||
 | 
					             (substitute* '("src/platform/Makefile.in")
 | 
				
			||||||
 | 
					               (("SUBDIRS = tests") ""))
 | 
				
			||||||
 | 
					             (substitute* '("src/tests/Makefile.in")
 | 
				
			||||||
 | 
					               (("\ttest-route-manager-linux") "\t")
 | 
				
			||||||
 | 
					               (("\ttest-route-manager-fake") "\t"))
 | 
				
			||||||
 | 
					             #t))
 | 
				
			||||||
         (add-before 'check 'pre-check
 | 
					         (add-before 'check 'pre-check
 | 
				
			||||||
           (lambda _
 | 
					           (lambda _
 | 
				
			||||||
             ;; For the missing /etc/machine-id.
 | 
					             ;; For the missing /etc/machine-id.
 | 
				
			||||||
| 
						 | 
					@ -4242,7 +4300,7 @@ services.")
 | 
				
			||||||
(define-public network-manager-applet
 | 
					(define-public network-manager-applet
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "network-manager-applet")
 | 
					    (name "network-manager-applet")
 | 
				
			||||||
    (version "1.0.6")
 | 
					    (version "1.0.10")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "mirror://gnome/sources/" name "/"
 | 
					              (uri (string-append "mirror://gnome/sources/" name "/"
 | 
				
			||||||
| 
						 | 
					@ -4250,7 +4308,7 @@ services.")
 | 
				
			||||||
                                  name "-" version ".tar.xz"))
 | 
					                                  name "-" version ".tar.xz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "1yj0m6fb9v12d0di0rfmk3hx1vmygjkiff2c476rf792sbh56kax"))))
 | 
					                "1szh5jyijxm6z55irkp5s44pwah0nikss40mx7pvpk38m8zaqidh"))))
 | 
				
			||||||
    (build-system glib-or-gtk-build-system)
 | 
					    (build-system glib-or-gtk-build-system)
 | 
				
			||||||
    (arguments '(#:configure-flags '("--disable-migration")))
 | 
					    (arguments '(#:configure-flags '("--disable-migration")))
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
| 
						 | 
					@ -4634,13 +4692,17 @@ as SASL, TLS and VeNCrypt.  Additionally it supports encoding extensions.")
 | 
				
			||||||
       ("gobject-introspection" ,gobject-introspection)
 | 
					       ("gobject-introspection" ,gobject-introspection)
 | 
				
			||||||
       ("intltool" ,intltool)
 | 
					       ("intltool" ,intltool)
 | 
				
			||||||
       ("pkg-config" ,pkg-config)))
 | 
					       ("pkg-config" ,pkg-config)))
 | 
				
			||||||
    (propagated-inputs
 | 
					 | 
				
			||||||
     `(("gtk+" ,gtk+))) ; required by libnautilus-extension.pc
 | 
					 | 
				
			||||||
    (inputs
 | 
					    (inputs
 | 
				
			||||||
     ;; TODO: add gvfs support.
 | 
					     ;; TODO: add gvfs support.
 | 
				
			||||||
     `(("dconf" ,dconf)
 | 
					     `(("dconf" ,dconf)
 | 
				
			||||||
       ("exempi" ,exempi)
 | 
					       ("exempi" ,exempi)
 | 
				
			||||||
       ("gnome-desktop" ,gnome-desktop)
 | 
					       ("gnome-desktop" ,gnome-desktop)
 | 
				
			||||||
 | 
					       ;; XXX: gtk+ is required by libnautilus-extension.pc
 | 
				
			||||||
 | 
					       ;;
 | 
				
			||||||
 | 
					       ;; Don't propagate it to reduces "profile pollution" of the 'gnome' meta
 | 
				
			||||||
 | 
					       ;; package.  See:
 | 
				
			||||||
 | 
					       ;; <http://lists.gnu.org/archive/html/guix-devel/2016-03/msg00283.html>.
 | 
				
			||||||
 | 
					       ("gtk+" ,gtk+)
 | 
				
			||||||
       ("libexif" ,libexif)
 | 
					       ("libexif" ,libexif)
 | 
				
			||||||
       ("libxml2" ,libxml2)))
 | 
					       ("libxml2" ,libxml2)))
 | 
				
			||||||
    (synopsis "File manager for GNOME")
 | 
					    (synopsis "File manager for GNOME")
 | 
				
			||||||
| 
						 | 
					@ -4783,6 +4845,7 @@ software that do not provide their own configuration interface.")
 | 
				
			||||||
     ;; TODO: Add more packages according to:
 | 
					     ;; TODO: Add more packages according to:
 | 
				
			||||||
     ;;       <https://packages.debian.org/jessie/gnome-core>.
 | 
					     ;;       <https://packages.debian.org/jessie/gnome-core>.
 | 
				
			||||||
     `(("adwaita-icon-theme"        ,adwaita-icon-theme)
 | 
					     `(("adwaita-icon-theme"        ,adwaita-icon-theme)
 | 
				
			||||||
 | 
					       ("font-cantarell"            ,font-cantarell)
 | 
				
			||||||
       ("at-spi2-core"              ,at-spi2-core)
 | 
					       ("at-spi2-core"              ,at-spi2-core)
 | 
				
			||||||
       ("dbus"                      ,dbus)
 | 
					       ("dbus"                      ,dbus)
 | 
				
			||||||
       ("dconf"                     ,dconf)
 | 
					       ("dconf"                     ,dconf)
 | 
				
			||||||
| 
						 | 
					@ -4805,9 +4868,63 @@ software that do not provide their own configuration interface.")
 | 
				
			||||||
       ("totem"                     ,totem)
 | 
					       ("totem"                     ,totem)
 | 
				
			||||||
       ("yelp"                      ,yelp)
 | 
					       ("yelp"                      ,yelp)
 | 
				
			||||||
       ("zenity"                    ,zenity)))
 | 
					       ("zenity"                    ,zenity)))
 | 
				
			||||||
    (synopsis "Desktop environment (meta-package)")
 | 
					    (synopsis "The GNU desktop environment")
 | 
				
			||||||
    (home-page "https://www.gnome.org/")
 | 
					    (home-page "https://www.gnome.org/")
 | 
				
			||||||
    (description
 | 
					    (description
 | 
				
			||||||
     "GNOME is an intutive and attractive desktop environment.  It aims to be
 | 
					     "GNOME is the graphical desktop for GNU.  It includes a wide variety of
 | 
				
			||||||
an easy and elegant way to use your computer.")
 | 
					applications for browsing the web, editing text and images, creating
 | 
				
			||||||
 | 
					documents and diagrams, playing media, scanning, and much more.")
 | 
				
			||||||
    (license license:gpl2+)))
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public byzanz
 | 
				
			||||||
 | 
					  ;; The last stable release of Byzanz was in 2011, but there have been many
 | 
				
			||||||
 | 
					  ;; useful commits made to the Byzanz repository since then that it would be
 | 
				
			||||||
 | 
					  ;; silly to use such an old release.
 | 
				
			||||||
 | 
					  (let ((commit "f7af3a5bd252db84af8365bd059c117a7aa5c4af"))
 | 
				
			||||||
 | 
					    (package
 | 
				
			||||||
 | 
					      (name "byzanz")
 | 
				
			||||||
 | 
					      (version (string-append "0.2-1." (string-take commit 7)))
 | 
				
			||||||
 | 
					      (source (origin
 | 
				
			||||||
 | 
					                (method git-fetch)
 | 
				
			||||||
 | 
					                (uri (git-reference
 | 
				
			||||||
 | 
					                      (url "git://git.gnome.org/byzanz")
 | 
				
			||||||
 | 
					                      (commit commit)))
 | 
				
			||||||
 | 
					                (sha256
 | 
				
			||||||
 | 
					                 (base32
 | 
				
			||||||
 | 
					                  "1l60myzxf9cav27v5v3nsijlslz9r7ip6d5kiirfpkf9k0w26hz3"))))
 | 
				
			||||||
 | 
					      (build-system glib-or-gtk-build-system)
 | 
				
			||||||
 | 
					      (arguments
 | 
				
			||||||
 | 
					       '(#:phases
 | 
				
			||||||
 | 
					         (modify-phases %standard-phases
 | 
				
			||||||
 | 
					           (add-after 'unpack 'bootstrap
 | 
				
			||||||
 | 
					             (lambda _
 | 
				
			||||||
 | 
					               ;; The build system cleverly detects that we're not building from
 | 
				
			||||||
 | 
					               ;; a release tarball and turns on -Werror for GCC.
 | 
				
			||||||
 | 
					               ;; Unsurprisingly, there is a warning during compilation that
 | 
				
			||||||
 | 
					               ;; causes the build to fail unnecessarily, so we remove the flag.
 | 
				
			||||||
 | 
					               (substitute* '("configure.ac")
 | 
				
			||||||
 | 
					                 (("-Werror") ""))
 | 
				
			||||||
 | 
					               ;; The autogen.sh script in gnome-common will run ./configure
 | 
				
			||||||
 | 
					               ;; by default, which is problematic because source shebangs
 | 
				
			||||||
 | 
					               ;; have not yet been patched.
 | 
				
			||||||
 | 
					               (setenv "NOCONFIGURE" "t")
 | 
				
			||||||
 | 
					               (zero? (system* "sh" "autogen.sh")))))))
 | 
				
			||||||
 | 
					      (native-inputs
 | 
				
			||||||
 | 
					       `(("autoconf" ,autoconf)
 | 
				
			||||||
 | 
					         ("automake" ,automake)
 | 
				
			||||||
 | 
					         ("gnome-common" ,gnome-common)
 | 
				
			||||||
 | 
					         ("intltool" ,intltool)
 | 
				
			||||||
 | 
					         ("libtool" ,libtool)
 | 
				
			||||||
 | 
					         ("pkg-config" ,pkg-config)
 | 
				
			||||||
 | 
					         ("which" ,which)))
 | 
				
			||||||
 | 
					      (inputs
 | 
				
			||||||
 | 
					       `(("glib" ,glib)
 | 
				
			||||||
 | 
					         ("gstreamer" ,gstreamer)
 | 
				
			||||||
 | 
					         ("gst-plugins-base" ,gst-plugins-base)
 | 
				
			||||||
 | 
					         ("gtk+" ,gtk+)))
 | 
				
			||||||
 | 
					      (synopsis "Desktop recording program")
 | 
				
			||||||
 | 
					      (description "Byzanz is a simple desktop recording program with a
 | 
				
			||||||
 | 
					command-line interface.  It can record part or all of an X display for a
 | 
				
			||||||
 | 
					specified duration and save it as a GIF encoded animated image file.")
 | 
				
			||||||
 | 
					      (home-page "https://git.gnome.org/browse/byzanz")
 | 
				
			||||||
 | 
					      (license license:gpl2+))))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -177,7 +177,7 @@ in the Mozilla clients.")
 | 
				
			||||||
(define-public nss
 | 
					(define-public nss
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "nss")
 | 
					    (name "nss")
 | 
				
			||||||
    (version "3.21")
 | 
					    (version "3.21.1")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (let ((version-with-underscores
 | 
					              (uri (let ((version-with-underscores
 | 
				
			||||||
| 
						 | 
					@ -188,7 +188,7 @@ in the Mozilla clients.")
 | 
				
			||||||
                      "nss-" version ".tar.gz")))
 | 
					                      "nss-" version ".tar.gz")))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "0fbjx3xsdm4gjc1gyzy2z315cvyw7yilsm7p9w75rpbwgl15nyiz"))
 | 
					                "0knr99yc8sba2ga6x1gwhg9gr1dmgcl344g3bmxm8c364i2vpxns"))
 | 
				
			||||||
              ;; Create nss.pc and nss-config.
 | 
					              ;; Create nss.pc and nss-config.
 | 
				
			||||||
              (patches (list (search-patch "nss-pkgconfig.patch")))))
 | 
					              (patches (list (search-patch "nss-pkgconfig.patch")))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
| 
						 | 
					@ -290,7 +290,25 @@ standards.")
 | 
				
			||||||
      (patches (map search-patch
 | 
					      (patches (map search-patch
 | 
				
			||||||
                    '("icecat-avoid-bundled-includes.patch"
 | 
					                    '("icecat-avoid-bundled-includes.patch"
 | 
				
			||||||
                      "icecat-re-enable-DHE-cipher-suites.patch"
 | 
					                      "icecat-re-enable-DHE-cipher-suites.patch"
 | 
				
			||||||
                      "icecat-update-graphite2.patch")))
 | 
					                      "icecat-update-graphite2.patch"
 | 
				
			||||||
 | 
					                      "icecat-update-graphite2-pt2.patch"
 | 
				
			||||||
 | 
					                      "icecat-CVE-2015-4477.patch"
 | 
				
			||||||
 | 
					                      "icecat-CVE-2015-7207.patch"
 | 
				
			||||||
 | 
					                      "icecat-CVE-2016-1952-pt01.patch"
 | 
				
			||||||
 | 
					                      "icecat-CVE-2016-1952-pt02.patch"
 | 
				
			||||||
 | 
					                      "icecat-CVE-2016-1952-pt03.patch"
 | 
				
			||||||
 | 
					                      "icecat-CVE-2016-1952-pt04.patch"
 | 
				
			||||||
 | 
					                      "icecat-CVE-2016-1952-pt05.patch"
 | 
				
			||||||
 | 
					                      "icecat-CVE-2016-1952-pt06.patch"
 | 
				
			||||||
 | 
					                      "icecat-CVE-2016-1954.patch"
 | 
				
			||||||
 | 
					                      "icecat-CVE-2016-1960.patch"
 | 
				
			||||||
 | 
					                      "icecat-CVE-2016-1961.patch"
 | 
				
			||||||
 | 
					                      "icecat-CVE-2016-1962.patch"
 | 
				
			||||||
 | 
					                      "icecat-CVE-2016-1964.patch"
 | 
				
			||||||
 | 
					                      "icecat-CVE-2016-1965.patch"
 | 
				
			||||||
 | 
					                      "icecat-CVE-2016-1966.patch"
 | 
				
			||||||
 | 
					                      "icecat-CVE-2016-1974.patch"
 | 
				
			||||||
 | 
					                      "icecat-bug-1248851.patch")))
 | 
				
			||||||
      (modules '((guix build utils)))
 | 
					      (modules '((guix build utils)))
 | 
				
			||||||
      (snippet
 | 
					      (snippet
 | 
				
			||||||
       '(begin
 | 
					       '(begin
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,8 @@
 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					;;; GNU Guix --- Functional package management for GNU
 | 
				
			||||||
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
 | 
					;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
 | 
				
			||||||
;;; Copyright © 2015 Tomáš Čech <sleep_walker@gnu.org>
 | 
					;;; Copyright © 2015 Tomáš Čech <sleep_walker@gnu.org>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -25,6 +27,8 @@
 | 
				
			||||||
  #:use-module (guix build-system cmake)
 | 
					  #:use-module (guix build-system cmake)
 | 
				
			||||||
  #:use-module ((guix licenses) #:prefix license:)
 | 
					  #:use-module ((guix licenses) #:prefix license:)
 | 
				
			||||||
  #:use-module (gnu packages)
 | 
					  #:use-module (gnu packages)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages algebra)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages audio)
 | 
				
			||||||
  #:use-module (gnu packages autotools)
 | 
					  #:use-module (gnu packages autotools)
 | 
				
			||||||
  #:use-module (gnu packages bash)
 | 
					  #:use-module (gnu packages bash)
 | 
				
			||||||
  #:use-module (gnu packages boost)
 | 
					  #:use-module (gnu packages boost)
 | 
				
			||||||
| 
						 | 
					@ -32,14 +36,96 @@
 | 
				
			||||||
  #:use-module (gnu packages python)
 | 
					  #:use-module (gnu packages python)
 | 
				
			||||||
  #:use-module (gnu packages fontutils)
 | 
					  #:use-module (gnu packages fontutils)
 | 
				
			||||||
  #:use-module (gnu packages pkg-config)
 | 
					  #:use-module (gnu packages pkg-config)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages pulseaudio)  ;libsndfile, libsamplerate
 | 
				
			||||||
  #:use-module (gnu packages compression)
 | 
					  #:use-module (gnu packages compression)
 | 
				
			||||||
  #:use-module (gnu packages multiprecision)
 | 
					  #:use-module (gnu packages multiprecision)
 | 
				
			||||||
  #:use-module (gnu packages boost)
 | 
					  #:use-module (gnu packages boost)
 | 
				
			||||||
  #:use-module (gnu packages gl)
 | 
					  #:use-module (gnu packages gl)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages image)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages jemalloc)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages photo)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages python)
 | 
				
			||||||
  #:use-module (gnu packages qt)
 | 
					  #:use-module (gnu packages qt)
 | 
				
			||||||
  #:use-module (gnu packages sdl)
 | 
					  #:use-module (gnu packages sdl)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages video)
 | 
				
			||||||
  #:use-module (gnu packages xorg))
 | 
					  #:use-module (gnu packages xorg))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public blender
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "blender")
 | 
				
			||||||
 | 
					    (version "2.76b")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append "http://download.blender.org/source/"
 | 
				
			||||||
 | 
					                                  "blender-" version ".tar.gz"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "0pb0mlj4vj0iir528ifqq67nsh3ca1942933d9cwlbpcja2jm1dx"))))
 | 
				
			||||||
 | 
					    (build-system cmake-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(;; Test files are very large and not included in the release tarball.
 | 
				
			||||||
 | 
					       #:tests? #f
 | 
				
			||||||
 | 
					       #:configure-flags
 | 
				
			||||||
 | 
					       (list "-DWITH_CODEC_FFMPEG=ON"
 | 
				
			||||||
 | 
					             "-DWITH_CODEC_SNDFILE=ON"
 | 
				
			||||||
 | 
					             "-DWITH_CYCLES=ON"
 | 
				
			||||||
 | 
					             "-DWITH_DOC_MANPAGE=ON"
 | 
				
			||||||
 | 
					             "-DWITH_FFTW3=ON"
 | 
				
			||||||
 | 
					             "-DWITH_GAMEENGINE=ON"
 | 
				
			||||||
 | 
					             "-DWITH_IMAGE_OPENJPEG=ON"
 | 
				
			||||||
 | 
					             "-DWITH_INPUT_NDOF=ON"
 | 
				
			||||||
 | 
					             "-DWITH_INSTALL_PORTABLE=OFF"
 | 
				
			||||||
 | 
					             "-DWITH_JACK=ON"
 | 
				
			||||||
 | 
					             "-DWITH_MOD_OCEANSIM=ON"
 | 
				
			||||||
 | 
					             "-DWITH_PLAYER=ON"
 | 
				
			||||||
 | 
					             "-DWITH_PYTHON_INSTALL=OFF"
 | 
				
			||||||
 | 
					             "-DWITH_SYSTEM_OPENJPEG=ON")
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         (add-after 'unpack 'fix-broken-import
 | 
				
			||||||
 | 
					           (lambda _
 | 
				
			||||||
 | 
					             (substitute* "release/scripts/addons/io_scene_fbx/json2fbx.py"
 | 
				
			||||||
 | 
					               (("import encode_bin") "from . import encode_bin"))
 | 
				
			||||||
 | 
					             #t))
 | 
				
			||||||
 | 
					         (add-after 'set-paths 'add-ilmbase-include-path
 | 
				
			||||||
 | 
					           (lambda* (#:key inputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             ;; OpenEXR propagates ilmbase, but its include files do not appear
 | 
				
			||||||
 | 
					             ;; in the CPATH, so we need to add "$ilmbase/include/OpenEXR/" to
 | 
				
			||||||
 | 
					             ;; the CPATH to satisfy the dependency on "half.h".
 | 
				
			||||||
 | 
					             (setenv "CPATH"
 | 
				
			||||||
 | 
					                     (string-append (assoc-ref inputs "ilmbase")
 | 
				
			||||||
 | 
					                                    "/include/OpenEXR"
 | 
				
			||||||
 | 
					                                    ":" (or (getenv "CPATH") "")))
 | 
				
			||||||
 | 
					             #t)))))
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("boost" ,boost)
 | 
				
			||||||
 | 
					       ("jemalloc" ,jemalloc)
 | 
				
			||||||
 | 
					       ("libx11" ,libx11)
 | 
				
			||||||
 | 
					       ("openimageio" ,openimageio)
 | 
				
			||||||
 | 
					       ("openexr" ,openexr)
 | 
				
			||||||
 | 
					       ("ilmbase" ,ilmbase)
 | 
				
			||||||
 | 
					       ("openjpeg" ,openjpeg-1)
 | 
				
			||||||
 | 
					       ("libjpeg" ,libjpeg)
 | 
				
			||||||
 | 
					       ("libpng" ,libpng)
 | 
				
			||||||
 | 
					       ("libtiff" ,libtiff)
 | 
				
			||||||
 | 
					       ("ffmpeg" ,ffmpeg)
 | 
				
			||||||
 | 
					       ("fftw" ,fftw)
 | 
				
			||||||
 | 
					       ("jack" ,jack-1)
 | 
				
			||||||
 | 
					       ("libsndfile" ,libsndfile)
 | 
				
			||||||
 | 
					       ("freetype" ,freetype)
 | 
				
			||||||
 | 
					       ("glew" ,glew)
 | 
				
			||||||
 | 
					       ("openal" ,openal)
 | 
				
			||||||
 | 
					       ("python" ,python-wrapper)
 | 
				
			||||||
 | 
					       ("zlib" ,zlib)))
 | 
				
			||||||
 | 
					    (home-page "http://blender.org/")
 | 
				
			||||||
 | 
					    (synopsis "3D graphics creation suite")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "Blender is a 3D graphics creation suite.  It supports the entirety of
 | 
				
			||||||
 | 
					the 3D pipeline—modeling, rigging, animation, simulation, rendering,
 | 
				
			||||||
 | 
					compositing and motion tracking, even video editing and game creation.  The
 | 
				
			||||||
 | 
					application can be customized via its API for Python scripting.")
 | 
				
			||||||
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public cgal
 | 
					(define-public cgal
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "cgal")
 | 
					    (name "cgal")
 | 
				
			||||||
| 
						 | 
					@ -89,7 +175,8 @@ many more.")
 | 
				
			||||||
                                  version ".tar.gz"))
 | 
					                                  version ".tar.gz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "1izddjwbh1grs8080vmaix72z469qy29wrvkphgmqmcm0sv1by7c"))))
 | 
					                "1izddjwbh1grs8080vmaix72z469qy29wrvkphgmqmcm0sv1by7c"))
 | 
				
			||||||
 | 
					              (patches (map search-patch '("ilmbase-fix-tests.patch")))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (home-page "http://www.openexr.com/")
 | 
					    (home-page "http://www.openexr.com/")
 | 
				
			||||||
    (synopsis "Utility C++ libraries for threads, maths, and exceptions")
 | 
					    (synopsis "Utility C++ libraries for threads, maths, and exceptions")
 | 
				
			||||||
| 
						 | 
					@ -119,6 +206,20 @@ exception-handling library.")
 | 
				
			||||||
                   "\"/tmp/\"")))
 | 
					                   "\"/tmp/\"")))
 | 
				
			||||||
              (patches (list (search-patch "openexr-missing-samples.patch")))))
 | 
					              (patches (list (search-patch "openexr-missing-samples.patch")))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     '(#:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         (add-after 'unpack 'disable-broken-test
 | 
				
			||||||
 | 
					           ;; This test fails on i686. Upstream developers suggest that
 | 
				
			||||||
 | 
					           ;; this test is broken on i686 and can be safely disabled:
 | 
				
			||||||
 | 
					           ;; https://github.com/openexr/openexr/issues/67#issuecomment-21169748
 | 
				
			||||||
 | 
					           (lambda _
 | 
				
			||||||
 | 
					             (substitute* "IlmImfTest/main.cpp"
 | 
				
			||||||
 | 
					               (("#include \"testOptimizedInterleavePatterns.h\"")
 | 
				
			||||||
 | 
					                 "//#include \"testOptimizedInterleavePatterns.h\"")
 | 
				
			||||||
 | 
					               (("TEST \\(testOptimizedInterleavePatterns")
 | 
				
			||||||
 | 
					                 "//TEST (testOptimizedInterleavePatterns"))
 | 
				
			||||||
 | 
					             #t)))))
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
     `(("pkg-config" ,pkg-config)))
 | 
					     `(("pkg-config" ,pkg-config)))
 | 
				
			||||||
    (propagated-inputs
 | 
					    (propagated-inputs
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					;;; GNU Guix --- Functional package management for GNU
 | 
				
			||||||
;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 | 
					;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 | 
				
			||||||
;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 | 
					;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 | 
				
			||||||
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 | 
					;;; Copyright © 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
 | 
				
			||||||
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 | 
					;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
| 
						 | 
					@ -20,10 +20,11 @@
 | 
				
			||||||
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 | 
					;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-module (gnu packages gstreamer)
 | 
					(define-module (gnu packages gstreamer)
 | 
				
			||||||
  #:use-module ((guix licenses) #:select (lgpl2.0+ bsd-2 bsd-3 gpl2+))
 | 
					  #:use-module ((guix licenses) #:select (lgpl2.0+ lgpl2.1+ bsd-2 bsd-3 gpl2+))
 | 
				
			||||||
  #:use-module (guix packages)
 | 
					  #:use-module (guix packages)
 | 
				
			||||||
  #:use-module (guix download)
 | 
					  #:use-module (guix download)
 | 
				
			||||||
  #:use-module (guix build-system gnu)
 | 
					  #:use-module (guix build-system gnu)
 | 
				
			||||||
 | 
					  #:use-module (guix utils)
 | 
				
			||||||
  #:use-module (gnu packages)
 | 
					  #:use-module (gnu packages)
 | 
				
			||||||
  #:use-module (gnu packages audio)
 | 
					  #:use-module (gnu packages audio)
 | 
				
			||||||
  #:use-module (gnu packages bison)
 | 
					  #:use-module (gnu packages bison)
 | 
				
			||||||
| 
						 | 
					@ -61,14 +62,14 @@
 | 
				
			||||||
(define-public orc
 | 
					(define-public orc
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "orc")
 | 
					    (name "orc")
 | 
				
			||||||
    (version "0.4.24")
 | 
					    (version "0.4.25")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "https://gstreamer.freedesktop.org/data/src/"
 | 
					              (uri (string-append "https://gstreamer.freedesktop.org/data/src/"
 | 
				
			||||||
                                  "orc/orc-" version ".tar.xz"))
 | 
					                                  "orc/orc-" version ".tar.xz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "16ykgdrgxr6pfpy931p979cs68klvwmk3ii1k0a00wr4nn9x931k"))))
 | 
					                "1lak3hyvvb0w9avzmf0a8vayb7vqhj4m709q1czlhvgjb15dbcf1"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (arguments `(#:phases
 | 
					    (arguments `(#:phases
 | 
				
			||||||
                 (alist-cons-before
 | 
					                 (alist-cons-before
 | 
				
			||||||
| 
						 | 
					@ -400,3 +401,54 @@ distribution problems in some jurisdictions, e.g. due to patent threats.")
 | 
				
			||||||
     "This GStreamer plugin supports a large number of audio and video
 | 
					     "This GStreamer plugin supports a large number of audio and video
 | 
				
			||||||
compression formats through the use of the libav library.")
 | 
					compression formats through the use of the libav library.")
 | 
				
			||||||
    (license gpl2+)))
 | 
					    (license gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public python-gst
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "python-gst")
 | 
				
			||||||
 | 
					    (version "1.6.2")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append
 | 
				
			||||||
 | 
					                    "https://gstreamer.freedesktop.org/src/gst-python/"
 | 
				
			||||||
 | 
					                    "gst-python-" version ".tar.xz"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "09ci5zvr7lms7mvgbjgsjwaxcl4nq45n1g9pdwnqmx3rf0qkwxjf"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     ;; XXX: Factorize python-sitedir with python-build-system.
 | 
				
			||||||
 | 
					     `(#:imported-modules (,@%gnu-build-system-modules
 | 
				
			||||||
 | 
					                           (guix build python-build-system))
 | 
				
			||||||
 | 
					       #:configure-flags
 | 
				
			||||||
 | 
					       (let* ((python (assoc-ref %build-inputs "python"))
 | 
				
			||||||
 | 
					              (python-version ((@@ (guix build python-build-system)
 | 
				
			||||||
 | 
					                                   get-python-version)
 | 
				
			||||||
 | 
					                               python))
 | 
				
			||||||
 | 
					              (python-sitedir (string-append
 | 
				
			||||||
 | 
					                               "lib/python" python-version "/site-packages")))
 | 
				
			||||||
 | 
					         (list (string-append
 | 
				
			||||||
 | 
					                "--with-pygi-overrides-dir=" %output "/" python-sitedir
 | 
				
			||||||
 | 
					                "/gi/overrides")))))
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("pkg-config" ,pkg-config)
 | 
				
			||||||
 | 
					       ("python" ,python)))
 | 
				
			||||||
 | 
					    (propagated-inputs
 | 
				
			||||||
 | 
					     `(("gst-plugins-base" ,gst-plugins-base)
 | 
				
			||||||
 | 
					       ("python-pygobject" ,python-pygobject)))
 | 
				
			||||||
 | 
					    (home-page "http://gstreamer.freedesktop.org/")
 | 
				
			||||||
 | 
					    (synopsis "GStreamer GObject Introspection overrides for Python")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "This package contains GObject Introspection overrides for Python that can
 | 
				
			||||||
 | 
					be used by Python applications using GStreamer.")
 | 
				
			||||||
 | 
					    (license lgpl2.1+)
 | 
				
			||||||
 | 
					    (properties `((python2-variant . ,(delay python2-gst))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public python2-gst
 | 
				
			||||||
 | 
					  (package (inherit python-gst)
 | 
				
			||||||
 | 
					    (name "python2-gst")
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("pkg-config" ,pkg-config)
 | 
				
			||||||
 | 
					       ("python" ,python-2)))
 | 
				
			||||||
 | 
					    (propagated-inputs
 | 
				
			||||||
 | 
					     `(("gst-plugins-base" ,gst-plugins-base)
 | 
				
			||||||
 | 
					       ("python-pygobject" ,python2-pygobject)))))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -433,6 +433,35 @@ in the GNOME project.")
 | 
				
			||||||
   (license license:lgpl2.0+)
 | 
					   (license license:lgpl2.0+)
 | 
				
			||||||
   (home-page "https://developer.gnome.org/gdk-pixbuf/")))
 | 
					   (home-page "https://developer.gnome.org/gdk-pixbuf/")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; To build gdk-pixbuf with SVG support, we need librsvg, and librsvg depends
 | 
				
			||||||
 | 
					;; on gdk-pixbuf, so this new varibale.  Also, librsvg adds 90MiB to the
 | 
				
			||||||
 | 
					;; closure size.
 | 
				
			||||||
 | 
					(define-public gdk-pixbuf+svg
 | 
				
			||||||
 | 
					  (package (inherit gdk-pixbuf)
 | 
				
			||||||
 | 
					    (name "gdk-pixbuf+svg")
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("librsvg" ,librsvg)
 | 
				
			||||||
 | 
					       ,@(package-inputs gdk-pixbuf)))
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     '(#:configure-flags '("--with-x11")
 | 
				
			||||||
 | 
					       #:tests? #f ; tested by the gdk-pixbuf package already
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         (add-after 'install 'register-svg-loader
 | 
				
			||||||
 | 
					           (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (let* ((out     (assoc-ref outputs "out"))
 | 
				
			||||||
 | 
					                    (librsvg (assoc-ref inputs "librsvg"))
 | 
				
			||||||
 | 
					                    (loaders
 | 
				
			||||||
 | 
					                     (append
 | 
				
			||||||
 | 
					                      (find-files out "^libpixbufloader-.*\\.so$")
 | 
				
			||||||
 | 
					                      (find-files librsvg "^libpixbufloader-.*\\.so$")))
 | 
				
			||||||
 | 
					                    (gdk-pixbuf-query-loaders
 | 
				
			||||||
 | 
					                     (string-append out "/bin/gdk-pixbuf-query-loaders")))
 | 
				
			||||||
 | 
					               (zero? (apply system* `(,gdk-pixbuf-query-loaders
 | 
				
			||||||
 | 
					                                       "--update-cache" ,@loaders)))))))))
 | 
				
			||||||
 | 
					    (synopsis
 | 
				
			||||||
 | 
					     "GNOME image loading and manipulation library, with SVG support")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public at-spi2-core
 | 
					(define-public at-spi2-core
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
   (name "at-spi2-core")
 | 
					   (name "at-spi2-core")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,7 @@
 | 
				
			||||||
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 | 
					;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 | 
				
			||||||
;;; Copyright © 2015 Christopher Allan Webber <cwebber@dustycloud.org>
 | 
					;;; Copyright © 2015 Christopher Allan Webber <cwebber@dustycloud.org>
 | 
				
			||||||
;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
 | 
					;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -255,7 +256,16 @@ without requiring the source code to be rewritten.")
 | 
				
			||||||
       ("flex" ,flex)
 | 
					       ("flex" ,flex)
 | 
				
			||||||
       ("texinfo" ,texinfo)
 | 
					       ("texinfo" ,texinfo)
 | 
				
			||||||
       ("gettext" ,gnu-gettext)
 | 
					       ("gettext" ,gnu-gettext)
 | 
				
			||||||
       ,@(package-native-inputs guile-next)))))
 | 
					       ,@(package-native-inputs guile-next)))
 | 
				
			||||||
 | 
					    ;; Same as in guile-2.0
 | 
				
			||||||
 | 
					    (native-search-paths
 | 
				
			||||||
 | 
					     (list (search-path-specification
 | 
				
			||||||
 | 
					            (variable "GUILE_LOAD_PATH")
 | 
				
			||||||
 | 
					            (files '("share/guile/site/2.0")))
 | 
				
			||||||
 | 
					           (search-path-specification
 | 
				
			||||||
 | 
					            (variable "GUILE_LOAD_COMPILED_PATH")
 | 
				
			||||||
 | 
					            (files '("lib/guile/2.0/ccache"
 | 
				
			||||||
 | 
					                     "share/guile/site/2.0")))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					;;; GNU Guix --- Functional package management for GNU
 | 
				
			||||||
;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 | 
					;;; Copyright © 2013, 2015, 2016 Andreas Enge <andreas@enge.fr>
 | 
				
			||||||
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 | 
					;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 | 
				
			||||||
;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
 | 
					;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
 | 
				
			||||||
;;; Copyright © 2014 Ricardo Wurmus <rekado@elephly.net>
 | 
					;;; Copyright © 2014 Ricardo Wurmus <rekado@elephly.net>
 | 
				
			||||||
| 
						 | 
					@ -7,6 +7,7 @@
 | 
				
			||||||
;;; Copyright © 2015 Amirouche Boubekki <amirouche@hypermove.net>
 | 
					;;; Copyright © 2015 Amirouche Boubekki <amirouche@hypermove.net>
 | 
				
			||||||
;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 | 
					;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 | 
				
			||||||
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 | 
					;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -547,14 +548,15 @@ graphics image formats like PNG, BMP, JPEG, TIFF and others.")
 | 
				
			||||||
(define-public vigra
 | 
					(define-public vigra
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
   (name "vigra")
 | 
					   (name "vigra")
 | 
				
			||||||
   (version "1.10.0")
 | 
					   (version "1.11.0")
 | 
				
			||||||
   (source
 | 
					   (source
 | 
				
			||||||
     (origin
 | 
					    (origin
 | 
				
			||||||
       (method url-fetch)
 | 
					      (method url-fetch)
 | 
				
			||||||
       (uri (string-append "https://hci.iwr.uni-heidelberg.de/vigra/vigra-"
 | 
					      (uri (string-append "https://github.com/ukoethe/vigra/releases/download/"
 | 
				
			||||||
                           version "-src.tar.gz"))
 | 
					                          "Version-1-11-0/vigra-"
 | 
				
			||||||
       (sha256 (base32
 | 
					                          version "-src.tar.gz"))
 | 
				
			||||||
                 "16d0jvz3k49niljg9qvvlyxxl15yk0300xkymvyznlmvn1hs7m22"))))
 | 
					      (sha256 (base32
 | 
				
			||||||
 | 
					                "1jzm79kqiiilvys3b8mlzy9cvmiirrcwsrlg19qd9rza8zipsqb8"))))
 | 
				
			||||||
   (build-system cmake-build-system)
 | 
					   (build-system cmake-build-system)
 | 
				
			||||||
   (inputs
 | 
					   (inputs
 | 
				
			||||||
    `(("boost" ,boost)
 | 
					    `(("boost" ,boost)
 | 
				
			||||||
| 
						 | 
					@ -576,6 +578,7 @@ graphics image formats like PNG, BMP, JPEG, TIFF and others.")
 | 
				
			||||||
      ("python2-sphinx" ,python2-sphinx)))
 | 
					      ("python2-sphinx" ,python2-sphinx)))
 | 
				
			||||||
   (arguments
 | 
					   (arguments
 | 
				
			||||||
    `(#:test-target "check"
 | 
					    `(#:test-target "check"
 | 
				
			||||||
 | 
					      #:parallel-build? #f ; parallel builds trigger an ICE
 | 
				
			||||||
      #:configure-flags
 | 
					      #:configure-flags
 | 
				
			||||||
        (list "-Wno-dev" ; suppress developer mode with lots of warnings
 | 
					        (list "-Wno-dev" ; suppress developer mode with lots of warnings
 | 
				
			||||||
              (string-append "-DVIGRANUMPY_INSTALL_DIR="
 | 
					              (string-append "-DVIGRANUMPY_INSTALL_DIR="
 | 
				
			||||||
| 
						 | 
					@ -731,7 +734,10 @@ convert, manipulate, filter and display a wide variety of image formats.")
 | 
				
			||||||
                  (search-patch "jasper-CVE-2014-8157.patch")
 | 
					                  (search-patch "jasper-CVE-2014-8157.patch")
 | 
				
			||||||
                  (search-patch "jasper-CVE-2014-8158.patch")
 | 
					                  (search-patch "jasper-CVE-2014-8158.patch")
 | 
				
			||||||
                  (search-patch "jasper-CVE-2014-9029.patch")
 | 
					                  (search-patch "jasper-CVE-2014-9029.patch")
 | 
				
			||||||
                  (search-patch "jasper-CVE-2016-1867.patch")))))
 | 
					                  (search-patch "jasper-CVE-2016-1577.patch")
 | 
				
			||||||
 | 
					                  (search-patch "jasper-CVE-2016-1867.patch")
 | 
				
			||||||
 | 
					                  (search-patch "jasper-CVE-2016-2089.patch")
 | 
				
			||||||
 | 
					                  (search-patch "jasper-CVE-2016-2116.patch")))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
     `(("unzip" ,unzip)))
 | 
					     `(("unzip" ,unzip)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,8 @@
 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					;;; GNU Guix --- Functional package management for GNU
 | 
				
			||||||
 | 
					;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 | 
				
			||||||
;;; Copyright © 2014 Kevin Lemonnier <lemonnierk@ulrar.net>
 | 
					;;; Copyright © 2014 Kevin Lemonnier <lemonnierk@ulrar.net>
 | 
				
			||||||
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
 | 
					;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
 | 
				
			||||||
 | 
					;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -17,32 +19,117 @@
 | 
				
			||||||
;;; You should have received a copy of the GNU General Public License
 | 
					;;; You should have received a copy of the GNU General Public License
 | 
				
			||||||
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 | 
					;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; TODO: Add ruby
 | 
					(define-module (gnu packages irc)
 | 
				
			||||||
 | 
					  #:use-module ((guix licenses) #:prefix license:)
 | 
				
			||||||
(define-module (gnu packages weechat)
 | 
					  #:use-module (guix download)
 | 
				
			||||||
 | 
					  #:use-module (guix packages)
 | 
				
			||||||
 | 
					  #:use-module (guix build-system cmake)
 | 
				
			||||||
 | 
					  #:use-module (guix build-system gnu)
 | 
				
			||||||
  #:use-module (gnu packages)
 | 
					  #:use-module (gnu packages)
 | 
				
			||||||
  #:use-module (gnu packages ncurses)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages base)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages gettext)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages gnupg)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages file)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages compression)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages lua)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages python)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages perl)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages tcl)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages aspell)
 | 
					  #:use-module (gnu packages aspell)
 | 
				
			||||||
  #:use-module (gnu packages curl)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages guile)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages cyrus-sasl)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages autogen)
 | 
					  #:use-module (gnu packages autogen)
 | 
				
			||||||
  #:use-module (gnu packages autotools)
 | 
					  #:use-module (gnu packages autotools)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages base)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages compression)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages curl)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages cyrus-sasl)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages file)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages gettext)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages glib)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages gnupg)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages guile)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages lua)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages ncurses)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages kde)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages kde-frameworks)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages perl)
 | 
				
			||||||
  #:use-module (gnu packages pkg-config)
 | 
					  #:use-module (gnu packages pkg-config)
 | 
				
			||||||
  #:use-module (gnu packages tls)
 | 
					  #:use-module (gnu packages python)
 | 
				
			||||||
  #:use-module (guix packages)
 | 
					  #:use-module (gnu packages qt)
 | 
				
			||||||
  #:use-module (guix download)
 | 
					  #:use-module (gnu packages tcl)
 | 
				
			||||||
  #:use-module (guix build-system gnu)
 | 
					  #:use-module (gnu packages tls))
 | 
				
			||||||
  #:use-module ((guix licenses) #:select (gpl3)))
 | 
					
 | 
				
			||||||
 | 
					(define-public quassel
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "quassel")
 | 
				
			||||||
 | 
					    (version "0.12.3")
 | 
				
			||||||
 | 
					    (source
 | 
				
			||||||
 | 
					      (origin
 | 
				
			||||||
 | 
					        (method url-fetch)
 | 
				
			||||||
 | 
					        (uri (string-append "http://quassel-irc.org/pub/quassel-"
 | 
				
			||||||
 | 
					                            version ".tar.bz2"))
 | 
				
			||||||
 | 
					        (sha256
 | 
				
			||||||
 | 
					         (base32
 | 
				
			||||||
 | 
					          "0d6lwf6qblj1ia5j9mjy112zrmpbbg9mmxgscbgxiqychldyjgjd"))))
 | 
				
			||||||
 | 
					    (build-system cmake-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					      ;; The three binaries are not mutually exlusive, and are all built
 | 
				
			||||||
 | 
					      ;; by default.
 | 
				
			||||||
 | 
					     `(#:configure-flags '(;;"-DWANT_QTCLIENT=OFF" ; 5.0 MiB
 | 
				
			||||||
 | 
					                           ;;"-DWANT_CORE=OFF" ; 2.3 MiB
 | 
				
			||||||
 | 
					                           ;;"-DWANT_MONO=OFF" ; 6.3 MiB
 | 
				
			||||||
 | 
					                           "-DUSE_QT5=ON" ; default is qt4
 | 
				
			||||||
 | 
					                           "-DWITH_KDE=OFF" ; no to integration
 | 
				
			||||||
 | 
					                           "-DWITH_OXYGEN=ON" ; on=embed icons
 | 
				
			||||||
 | 
					                           "-DWITH_WEBKIT=ON") ; wants qtwebkit, in qt5
 | 
				
			||||||
 | 
					       #:tests? #f)) ; no test target
 | 
				
			||||||
 | 
					    (native-inputs `(("pkg-config" ,pkg-config)))
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("extra-cmake-modules" ,extra-cmake-modules)
 | 
				
			||||||
 | 
					       ("oxygen-icons" ,oxygen-icons)
 | 
				
			||||||
 | 
					       ("qca" ,qca)
 | 
				
			||||||
 | 
					       ("qt", qt)
 | 
				
			||||||
 | 
					       ("snorenotify" ,snorenotify)
 | 
				
			||||||
 | 
					       ("zlib" ,zlib)))
 | 
				
			||||||
 | 
					    (home-page "http://quassel-irc.org/")
 | 
				
			||||||
 | 
					    (synopsis "Distributed IRC client")
 | 
				
			||||||
 | 
					    (description "Quassel is a distributed IRC client, meaning that one or more
 | 
				
			||||||
 | 
					clients can attach to and detach from the central core.  It resembles the
 | 
				
			||||||
 | 
					popular combination of screen and a text-based IRC client such as WeeChat or
 | 
				
			||||||
 | 
					irssi, but graphical.")
 | 
				
			||||||
 | 
					    (license (list license:gpl2 license:gpl3)))) ;; dual licensed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public irssi
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "irssi")
 | 
				
			||||||
 | 
					    (version "0.8.18")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					             (method url-fetch)
 | 
				
			||||||
 | 
					             (uri (string-append "https://github.com/irssi/irssi/"
 | 
				
			||||||
 | 
					                                 "releases/download/" version "/irssi-"
 | 
				
			||||||
 | 
					                                 version ".tar.xz"))
 | 
				
			||||||
 | 
					             (sha256
 | 
				
			||||||
 | 
					              (base32
 | 
				
			||||||
 | 
					               "0h3q0p5rnm6h0hcv06m8vrs97kyr1l7snjdy3qbjsz3m97vpg8f0"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         (replace 'configure
 | 
				
			||||||
 | 
					           (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (let ((out (assoc-ref outputs "out"))
 | 
				
			||||||
 | 
					                   (ncurses (assoc-ref inputs "ncurses")))
 | 
				
			||||||
 | 
					               (setenv "CONFIG_SHELL" (which "bash"))
 | 
				
			||||||
 | 
					               (zero?
 | 
				
			||||||
 | 
					                (system* "./configure"
 | 
				
			||||||
 | 
					                         (string-append "--prefix=" out)
 | 
				
			||||||
 | 
					                         (string-append "--with-ncurses=" ncurses)
 | 
				
			||||||
 | 
					                         (string-append "--with-proxy")
 | 
				
			||||||
 | 
					                         (string-append "--with-socks")
 | 
				
			||||||
 | 
					                         (string-append "--with-bot")))))))))
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("glib" ,glib)
 | 
				
			||||||
 | 
					       ("ncurses" ,ncurses)
 | 
				
			||||||
 | 
					       ("openssl" ,openssl)))
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("pkg-config" ,pkg-config)
 | 
				
			||||||
 | 
					       ("perl" ,perl)))
 | 
				
			||||||
 | 
					    (home-page "http://www.irssi.org/")
 | 
				
			||||||
 | 
					    (synopsis "Terminal-based IRC client")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "Irssi is a terminal based IRC client for UNIX systems.  It also supports
 | 
				
			||||||
 | 
					SILC and ICB protocols via plugins.")
 | 
				
			||||||
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public weechat
 | 
					(define-public weechat
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
| 
						 | 
					@ -103,4 +190,4 @@ for Web, Qt, Android and Emacs.  In WeeChat everything can be done
 | 
				
			||||||
with a keyboard, though it also supports mouse.  It is customizable
 | 
					with a keyboard, though it also supports mouse.  It is customizable
 | 
				
			||||||
and extensible with plugins and scripts.")
 | 
					and extensible with plugins and scripts.")
 | 
				
			||||||
    (home-page "http://www.weechat.org/")
 | 
					    (home-page "http://www.weechat.org/")
 | 
				
			||||||
    (license gpl3)))
 | 
					    (license license:gpl3)))
 | 
				
			||||||
| 
						 | 
					@ -1,70 +0,0 @@
 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					 | 
				
			||||||
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 | 
					 | 
				
			||||||
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
 | 
					 | 
				
			||||||
;;;
 | 
					 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					 | 
				
			||||||
;;;
 | 
					 | 
				
			||||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
 | 
					 | 
				
			||||||
;;; under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
;;; the Free Software Foundation; either version 3 of the License, or (at
 | 
					 | 
				
			||||||
;;; your option) any later version.
 | 
					 | 
				
			||||||
;;;
 | 
					 | 
				
			||||||
;;; GNU Guix is distributed in the hope that it will be useful, but
 | 
					 | 
				
			||||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
;;; GNU General Public License for more details.
 | 
					 | 
				
			||||||
;;;
 | 
					 | 
				
			||||||
;;; You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(define-module (gnu packages irssi)
 | 
					 | 
				
			||||||
  #:use-module ((guix licenses) #:prefix license:)
 | 
					 | 
				
			||||||
  #:use-module (guix packages)
 | 
					 | 
				
			||||||
  #:use-module (guix download)
 | 
					 | 
				
			||||||
  #:use-module (guix build-system gnu)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages glib)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages ncurses)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages perl)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages pkg-config)
 | 
					 | 
				
			||||||
  #:use-module (gnu packages tls))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(define-public irssi
 | 
					 | 
				
			||||||
  (package
 | 
					 | 
				
			||||||
    (name "irssi")
 | 
					 | 
				
			||||||
    (version "0.8.17")
 | 
					 | 
				
			||||||
    (source (origin
 | 
					 | 
				
			||||||
             (method url-fetch)
 | 
					 | 
				
			||||||
             (uri (string-append "https://github.com/irssi-import/irssi/"
 | 
					 | 
				
			||||||
                                 "releases/download/0.8.17/irssi-"
 | 
					 | 
				
			||||||
                                 version ".tar.bz2"))
 | 
					 | 
				
			||||||
             (sha256
 | 
					 | 
				
			||||||
              (base32
 | 
					 | 
				
			||||||
               "01v82q2pfiimx6lh271kdvgp8hl4pahc3srg04fqzxgdsb5015iw"))))
 | 
					 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					 | 
				
			||||||
    (arguments
 | 
					 | 
				
			||||||
     `(#:phases
 | 
					 | 
				
			||||||
       (alist-replace
 | 
					 | 
				
			||||||
        'configure
 | 
					 | 
				
			||||||
        (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
					 | 
				
			||||||
          (let ((out (assoc-ref outputs "out"))
 | 
					 | 
				
			||||||
                (ncurses (assoc-ref inputs "ncurses")))
 | 
					 | 
				
			||||||
            (setenv "CONFIG_SHELL" (which "bash"))
 | 
					 | 
				
			||||||
            (zero?
 | 
					 | 
				
			||||||
             (system* "./configure"
 | 
					 | 
				
			||||||
                      (string-append "--prefix=" out)
 | 
					 | 
				
			||||||
                      (string-append "--with-ncurses=" ncurses)))))
 | 
					 | 
				
			||||||
        %standard-phases)))
 | 
					 | 
				
			||||||
    (inputs
 | 
					 | 
				
			||||||
     `(("glib" ,glib)
 | 
					 | 
				
			||||||
       ("ncurses" ,ncurses)
 | 
					 | 
				
			||||||
       ("openssl" ,openssl)))
 | 
					 | 
				
			||||||
    (native-inputs
 | 
					 | 
				
			||||||
     `(("pkg-config" ,pkg-config)
 | 
					 | 
				
			||||||
       ("perl" ,perl)))
 | 
					 | 
				
			||||||
    (home-page "http://www.irssi.org/")
 | 
					 | 
				
			||||||
    (synopsis "Terminal-based IRC client")
 | 
					 | 
				
			||||||
    (description
 | 
					 | 
				
			||||||
     "Irssi is a terminal based IRC client for UNIX systems.  It also supports
 | 
					 | 
				
			||||||
SILC and ICB protocols via plugins.")
 | 
					 | 
				
			||||||
    (license license:gpl2+)))
 | 
					 | 
				
			||||||
| 
						 | 
					@ -139,9 +139,8 @@ is implemented.")
 | 
				
			||||||
    (version "1.9.6")
 | 
					    (version "1.9.6")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append
 | 
					              (uri (string-append "mirror://apache/ant/source/apache-ant-"
 | 
				
			||||||
                    "https://www.apache.org/dist/ant/source/apache-ant-"
 | 
					                                  version "-src.tar.gz"))
 | 
				
			||||||
                    version "-src.tar.gz"))
 | 
					 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "1396wflczyxjxl603dhxjvd559f289lha9y2f04f71c7hapjl3am"))))
 | 
					                "1396wflczyxjxl603dhxjvd559f289lha9y2f04f71c7hapjl3am"))))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					;;; GNU Guix --- Functional package management for GNU
 | 
				
			||||||
;;; Copyright © 2014 Eric Bavier <address@hidden>
 | 
					;;; Copyright © 2014 Eric Bavier <address@hidden>
 | 
				
			||||||
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 | 
					;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -27,7 +28,7 @@
 | 
				
			||||||
(define-public jrnl
 | 
					(define-public jrnl
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "jrnl")
 | 
					    (name "jrnl")
 | 
				
			||||||
    (version "1.8.4")
 | 
					    (version "1.9.7")
 | 
				
			||||||
    (source
 | 
					    (source
 | 
				
			||||||
     (origin
 | 
					     (origin
 | 
				
			||||||
      (method url-fetch)
 | 
					      (method url-fetch)
 | 
				
			||||||
| 
						 | 
					@ -36,11 +37,10 @@
 | 
				
			||||||
      (file-name (string-append name "-" version ".tar.gz"))
 | 
					      (file-name (string-append name "-" version ".tar.gz"))
 | 
				
			||||||
      (sha256
 | 
					      (sha256
 | 
				
			||||||
       (base32
 | 
					       (base32
 | 
				
			||||||
        "019ky09sj5i7frmca0imv4jm46mn3f4lzah2wmiwxh22cisj7ksn"))))
 | 
					        "0mfq7hhw5np2dj9jlxpyyk2cg9i0xgz2brb894d928hczszy97bq"))))
 | 
				
			||||||
    (build-system python-build-system)
 | 
					    (build-system python-build-system)
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
     `(("python-setuptools" ,python-setuptools)
 | 
					     `(("behave" ,behave)))
 | 
				
			||||||
       ("behave" ,behave)))
 | 
					 | 
				
			||||||
    (inputs
 | 
					    (inputs
 | 
				
			||||||
     `(("python" ,python)
 | 
					     `(("python" ,python)
 | 
				
			||||||
       ("python-keyring" ,python-keyring)
 | 
					       ("python-keyring" ,python-keyring)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -91,3 +91,27 @@ lower level classes for interaction with the X Windowing System.")
 | 
				
			||||||
    ;; Some source files mention lgpl2.0+, but the included license is
 | 
					    ;; Some source files mention lgpl2.0+, but the included license is
 | 
				
			||||||
    ;; the lgpl2.1. Some source files are under non-copyleft licenses.
 | 
					    ;; the lgpl2.1. Some source files are under non-copyleft licenses.
 | 
				
			||||||
    (license license:lgpl2.1+)))
 | 
					    (license license:lgpl2.1+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public oxygen-icons
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "oxygen-icons")
 | 
				
			||||||
 | 
					    (version kde-frameworks-version)
 | 
				
			||||||
 | 
					    (source
 | 
				
			||||||
 | 
					      (origin
 | 
				
			||||||
 | 
					        (method url-fetch)
 | 
				
			||||||
 | 
					        (uri (string-append "http://download.kde.org/stable/frameworks/"
 | 
				
			||||||
 | 
					                            (version-major+minor version) "/"
 | 
				
			||||||
 | 
					                            name "5-"version ".tar.xz"))
 | 
				
			||||||
 | 
					        (sha256
 | 
				
			||||||
 | 
					         (base32
 | 
				
			||||||
 | 
					          "09vfwcyidj3bl0qr4sq78bkc69zp9x8dwp8bsay5y05q8591dkg0"))))
 | 
				
			||||||
 | 
					    (build-system cmake-build-system)
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("pkg-config" ,pkg-config)))
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("extra-cmake-modules" ,extra-cmake-modules)
 | 
				
			||||||
 | 
					       ("qt" ,qt)))
 | 
				
			||||||
 | 
					    (home-page "https://community.kde.org/Frameworks")
 | 
				
			||||||
 | 
					    (synopsis "Oxygen provides the standard icon theme for the KDE desktop.")
 | 
				
			||||||
 | 
					    (description "Oxygen icon theme for the KDE desktop")
 | 
				
			||||||
 | 
					    (license license:lgpl3+)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										79
									
								
								gnu/packages/kde.scm
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								gnu/packages/kde.scm
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,79 @@
 | 
				
			||||||
 | 
					;;; GNU Guix --- Functional package management for GNU
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
 | 
					;;;
 | 
				
			||||||
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
 | 
					;;;
 | 
				
			||||||
 | 
					;;; GNU Guix is free software; you can redistribute it and/or modify it
 | 
				
			||||||
 | 
					;;; under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					;;; the Free Software Foundation; either version 3 of the License, or (at
 | 
				
			||||||
 | 
					;;; your option) any later version.
 | 
				
			||||||
 | 
					;;;
 | 
				
			||||||
 | 
					;;; GNU Guix is distributed in the hope that it will be useful, but
 | 
				
			||||||
 | 
					;;; WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					;;; GNU General Public License for more details.
 | 
				
			||||||
 | 
					;;;
 | 
				
			||||||
 | 
					;;; You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-module (gnu packages kde)
 | 
				
			||||||
 | 
					  #:use-module (guix build-system cmake)
 | 
				
			||||||
 | 
					  #:use-module (guix download)
 | 
				
			||||||
 | 
					  #:use-module ((guix licenses) #:prefix license:)
 | 
				
			||||||
 | 
					  #:use-module (guix packages)
 | 
				
			||||||
 | 
					  #:use-module (guix utils)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages kde-frameworks)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages pkg-config)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages tls)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages qt))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public qca
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "qca")
 | 
				
			||||||
 | 
					    (version "2.1.1")
 | 
				
			||||||
 | 
					    (source
 | 
				
			||||||
 | 
					      (origin
 | 
				
			||||||
 | 
					        (method url-fetch)
 | 
				
			||||||
 | 
					        (uri (string-append "http://download.kde.org/stable/qca/" version
 | 
				
			||||||
 | 
					                            "/src/qca-" version ".tar.xz"))
 | 
				
			||||||
 | 
					        (sha256
 | 
				
			||||||
 | 
					         (base32
 | 
				
			||||||
 | 
					          "10z9icq28fww4qbzwra8d9z55ywbv74qk68nhiqfrydm21wkxplm"))))
 | 
				
			||||||
 | 
					    (build-system cmake-build-system)
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("pkg-config" ,pkg-config)))
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("openssl" ,openssl)
 | 
				
			||||||
 | 
					       ("qt" ,qt)))
 | 
				
			||||||
 | 
					    (home-page "http://delta.affinix.com/qca/")
 | 
				
			||||||
 | 
					    (synopsis "Libraries for the Qt Cryptographic Architecture")
 | 
				
			||||||
 | 
					    (description "The Qt Cryptographic Architecture (QCA) provides a
 | 
				
			||||||
 | 
					straightforward and cross-platform API for a range of cryptographic features,
 | 
				
			||||||
 | 
					including SSL/TLS, X.509 certificates, SASL, OpenPGP, S/MIME CMS, and smart
 | 
				
			||||||
 | 
					cards.")
 | 
				
			||||||
 | 
					    (license license:lgpl2.1)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public snorenotify
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "snorenotify")
 | 
				
			||||||
 | 
					    (version "0.7.0")
 | 
				
			||||||
 | 
					    (source
 | 
				
			||||||
 | 
					      (origin
 | 
				
			||||||
 | 
					        (method url-fetch)
 | 
				
			||||||
 | 
					        (uri (string-append "http://download.kde.org/stable/snorenotify/"
 | 
				
			||||||
 | 
					                            version "/src/snorenotify-" version ".tar.xz"))
 | 
				
			||||||
 | 
					        (sha256
 | 
				
			||||||
 | 
					         (base32
 | 
				
			||||||
 | 
					          "0jz6ivk90h7iwgyxar7xzzj8yvzn6s1my6cqs9bdnwqswfk1nhbd"))))
 | 
				
			||||||
 | 
					    (build-system cmake-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:tests? #f)) ; both tests fail, require display
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("extra-cmake-modules" ,extra-cmake-modules)
 | 
				
			||||||
 | 
					       ("qt" ,qt)))
 | 
				
			||||||
 | 
					    (home-page "https://techbase.kde.org/Projects/Snorenotify")
 | 
				
			||||||
 | 
					    (synopsis "Qt notification framework")
 | 
				
			||||||
 | 
					    (description "Snorenotify is a multi platform Qt notification framework.
 | 
				
			||||||
 | 
					Using a plugin system it is possible to create notifications with many
 | 
				
			||||||
 | 
					different notification systems.")
 | 
				
			||||||
 | 
					    (license license:lgpl3)))
 | 
				
			||||||
| 
						 | 
					@ -21,6 +21,7 @@
 | 
				
			||||||
  #:use-module (guix utils)
 | 
					  #:use-module (guix utils)
 | 
				
			||||||
  #:use-module (guix packages)
 | 
					  #:use-module (guix packages)
 | 
				
			||||||
  #:use-module (guix download)
 | 
					  #:use-module (guix download)
 | 
				
			||||||
 | 
					  #:use-module (guix git-download)
 | 
				
			||||||
  #:use-module (guix build-system gnu)
 | 
					  #:use-module (guix build-system gnu)
 | 
				
			||||||
  #:use-module (gnu packages algebra)
 | 
					  #:use-module (gnu packages algebra)
 | 
				
			||||||
  #:use-module (gnu packages audio)
 | 
					  #:use-module (gnu packages audio)
 | 
				
			||||||
| 
						 | 
					@ -68,18 +69,67 @@
 | 
				
			||||||
  #:use-module (gnu packages yasm)
 | 
					  #:use-module (gnu packages yasm)
 | 
				
			||||||
  #:use-module (gnu packages zip))
 | 
					  #:use-module (gnu packages zip))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public crossguid
 | 
				
			||||||
 | 
					  (let ((commit "8f399e8bd4252be9952f3dfa8199924cc8487ca4"))
 | 
				
			||||||
 | 
					    (package
 | 
				
			||||||
 | 
					      (name "crossguid")
 | 
				
			||||||
 | 
					      (version (string-append "0.0-1." (string-take commit 7)))
 | 
				
			||||||
 | 
					      ;; There's no official release.  Just a Git repository.
 | 
				
			||||||
 | 
					      (source (origin
 | 
				
			||||||
 | 
					                (method git-fetch)
 | 
				
			||||||
 | 
					                (uri (git-reference
 | 
				
			||||||
 | 
					                      (url "https://github.com/graeme-hill/crossguid.git")
 | 
				
			||||||
 | 
					                      (commit commit)))
 | 
				
			||||||
 | 
					                (sha256
 | 
				
			||||||
 | 
					                 (base32
 | 
				
			||||||
 | 
					                  "1i29y207qqddvaxbn39pk2fbh3gx8zvdprfp35wasj9rw2wjk3s9"))))
 | 
				
			||||||
 | 
					      (build-system gnu-build-system)
 | 
				
			||||||
 | 
					      (arguments
 | 
				
			||||||
 | 
					       '(#:phases
 | 
				
			||||||
 | 
					         (modify-phases %standard-phases
 | 
				
			||||||
 | 
					           (delete 'configure) ; no configure script
 | 
				
			||||||
 | 
					           ;; There's no build system here, so we have to do it ourselves.
 | 
				
			||||||
 | 
					           (replace 'build
 | 
				
			||||||
 | 
					             (lambda _
 | 
				
			||||||
 | 
					               (and (zero? (system* "g++" "-c" "guid.cpp" "-o" "guid.o"
 | 
				
			||||||
 | 
					                                    "-std=c++11" "-DGUID_LIBUUID"))
 | 
				
			||||||
 | 
					                    (zero? (system* "ar" "rvs" "libcrossguid.a" "guid.o")))))
 | 
				
			||||||
 | 
					           (replace 'check
 | 
				
			||||||
 | 
					             (lambda _
 | 
				
			||||||
 | 
					               (and (zero? (system* "g++" "-c" "test.cpp" "-o" "test.o"
 | 
				
			||||||
 | 
					                                    "-std=c++11"))
 | 
				
			||||||
 | 
					                    (zero? (system* "g++" "-c" "testmain.cpp" "-o" "testmain.o"
 | 
				
			||||||
 | 
					                                    "-std=c++11"))
 | 
				
			||||||
 | 
					                    (zero? (system* "g++" "test.o" "guid.o" "testmain.o"
 | 
				
			||||||
 | 
					                                    "-o" "test" "-luuid"))
 | 
				
			||||||
 | 
					                    (zero? (system* (string-append (getcwd) "/test"))))))
 | 
				
			||||||
 | 
					           (replace 'install
 | 
				
			||||||
 | 
					             (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					               (let ((out (assoc-ref outputs "out")))
 | 
				
			||||||
 | 
					                 (install-file "guid.h" (string-append out "/include"))
 | 
				
			||||||
 | 
					                 (install-file "libcrossguid.a"
 | 
				
			||||||
 | 
					                               (string-append out "/lib"))
 | 
				
			||||||
 | 
					                 #t))))))
 | 
				
			||||||
 | 
					      (inputs
 | 
				
			||||||
 | 
					       `(("util-linux" ,util-linux)))
 | 
				
			||||||
 | 
					      (synopsis "Lightweight universal identifier library")
 | 
				
			||||||
 | 
					      (description "CrossGuid is a minimal GUID/UUID
 | 
				
			||||||
 | 
					generator library for C++.")
 | 
				
			||||||
 | 
					      (home-page "https://github.com/graeme-hill/crossguid")
 | 
				
			||||||
 | 
					      (license license:expat))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public kodi
 | 
					(define-public kodi
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "kodi")
 | 
					    (name "kodi")
 | 
				
			||||||
    (version "15.2")
 | 
					    (version "16.0")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "http://mirrors.kodi.tv/releases/source/"
 | 
					              (uri (string-append "http://mirrors.kodi.tv/releases/source/"
 | 
				
			||||||
                                  version "-Isengard.tar.gz"))
 | 
					                                  version "-Jarvis.tar.gz"))
 | 
				
			||||||
              (file-name (string-append name "-" version ".tar.gz"))
 | 
					              (file-name (string-append name "-" version ".tar.gz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "043i0f1crx9glwxil4xm45z5kxpkrx316gi4ir4d3rbd5safp2nx"))
 | 
					                "0iirspvv7czf785l2lqf232dvdaj87srbn9ni97ngvnd6w9yl884"))
 | 
				
			||||||
              (snippet
 | 
					              (snippet
 | 
				
			||||||
               ;; Delete bundled ffmpeg.
 | 
					               ;; Delete bundled ffmpeg.
 | 
				
			||||||
               ;; TODO: Delete every other bundled library.
 | 
					               ;; TODO: Delete every other bundled library.
 | 
				
			||||||
| 
						 | 
					@ -161,7 +211,9 @@
 | 
				
			||||||
       ("bluez" ,bluez)
 | 
					       ("bluez" ,bluez)
 | 
				
			||||||
       ("boost" ,boost)
 | 
					       ("boost" ,boost)
 | 
				
			||||||
       ("bzip2" ,bzip2)
 | 
					       ("bzip2" ,bzip2)
 | 
				
			||||||
 | 
					       ("crossguid" ,crossguid)
 | 
				
			||||||
       ("curl" ,curl)
 | 
					       ("curl" ,curl)
 | 
				
			||||||
 | 
					       ("dcadec" ,dcadec)
 | 
				
			||||||
       ("dbus" ,dbus)
 | 
					       ("dbus" ,dbus)
 | 
				
			||||||
       ("enca" ,enca)
 | 
					       ("enca" ,enca)
 | 
				
			||||||
       ("eudev" ,eudev)
 | 
					       ("eudev" ,eudev)
 | 
				
			||||||
| 
						 | 
					@ -213,6 +265,7 @@
 | 
				
			||||||
       ("taglib" ,taglib)
 | 
					       ("taglib" ,taglib)
 | 
				
			||||||
       ("tinyxml" ,tinyxml)
 | 
					       ("tinyxml" ,tinyxml)
 | 
				
			||||||
       ("unzip" ,unzip)
 | 
					       ("unzip" ,unzip)
 | 
				
			||||||
 | 
					       ("util-linux" ,util-linux)
 | 
				
			||||||
       ("zip" ,zip)
 | 
					       ("zip" ,zip)
 | 
				
			||||||
       ("zlib" ,zlib)))
 | 
					       ("zlib" ,zlib)))
 | 
				
			||||||
    (synopsis "Media center for home theater computers")
 | 
					    (synopsis "Media center for home theater computers")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					;;; GNU Guix --- Functional package management for GNU
 | 
				
			||||||
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 | 
					;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 | 
				
			||||||
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 | 
					;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 | 
				
			||||||
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 | 
					;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -32,16 +32,15 @@
 | 
				
			||||||
(define-public libevent
 | 
					(define-public libevent
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "libevent")
 | 
					    (name "libevent")
 | 
				
			||||||
    (version "2.0.21")
 | 
					    (version "2.0.22")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
             (method url-fetch)
 | 
					             (method url-fetch)
 | 
				
			||||||
             (uri (string-append
 | 
					             (uri (string-append
 | 
				
			||||||
                   "https://github.com/downloads/libevent/libevent/libevent-"
 | 
					                   "https://github.com/libevent/libevent/releases/download/release-"
 | 
				
			||||||
                   version
 | 
					                   version "-stable/libevent-" version "-stable.tar.gz"))
 | 
				
			||||||
                   "-stable.tar.gz"))
 | 
					 | 
				
			||||||
             (sha256
 | 
					             (sha256
 | 
				
			||||||
              (base32
 | 
					              (base32
 | 
				
			||||||
               "1xblymln9vihdmf1aqkp8chwvnhpdch3786bh30bj75slnl31992"))
 | 
					               "18qz9qfwrkakmazdlwxvjmw8p76g70n3faikwvdwznns1agw9hki"))
 | 
				
			||||||
             (patches (list (search-patch "libevent-dns-tests.patch")))))
 | 
					             (patches (list (search-patch "libevent-dns-tests.patch")))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (inputs
 | 
					    (inputs
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
;;; GNU Guix --- Functional package management for GNU
 | 
					;;; GNU Guix --- Functional package management for GNU
 | 
				
			||||||
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 | 
					 | 
				
			||||||
;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 | 
					;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 | 
				
			||||||
 | 
					;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -21,7 +22,7 @@
 | 
				
			||||||
  #:use-module (guix build-system gnu)
 | 
					  #:use-module (guix build-system gnu)
 | 
				
			||||||
  #:use-module (guix download)
 | 
					  #:use-module (guix download)
 | 
				
			||||||
  #:use-module ((guix licenses)
 | 
					  #:use-module ((guix licenses)
 | 
				
			||||||
                #:select (gpl2+ lgpl2.1+ mpl1.1 mpl2.0
 | 
					                #:select (gpl2+ lgpl2.1+ lgpl3+ mpl1.1 mpl2.0
 | 
				
			||||||
                          non-copyleft x11-style))
 | 
					                          non-copyleft x11-style))
 | 
				
			||||||
  #:use-module (guix packages)
 | 
					  #:use-module (guix packages)
 | 
				
			||||||
  #:use-module (guix utils)
 | 
					  #:use-module (guix utils)
 | 
				
			||||||
| 
						 | 
					@ -373,6 +374,33 @@ CorelDRAW documents of all versions.")
 | 
				
			||||||
Apple Keynote documents.  It currently supports Keynote versions 2 to 5.")
 | 
					Apple Keynote documents.  It currently supports Keynote versions 2 to 5.")
 | 
				
			||||||
    (license mpl2.0)))
 | 
					    (license mpl2.0)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public liblangtag
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "liblangtag")
 | 
				
			||||||
 | 
					    (version "0.5.8")
 | 
				
			||||||
 | 
					    (source
 | 
				
			||||||
 | 
					      (origin
 | 
				
			||||||
 | 
					        (method url-fetch)
 | 
				
			||||||
 | 
					        (uri (string-append "https://bitbucket.org/tagoh/liblangtag/downloads/"
 | 
				
			||||||
 | 
					                            name "-" version ".tar.bz2"))
 | 
				
			||||||
 | 
					        (sha256
 | 
				
			||||||
 | 
					         (base32
 | 
				
			||||||
 | 
					          "1akf0d7yp29pv3j2pw2riii4n5kyjr9szc0y77khnx9zzr5zdqh8"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("libtool" ,libtool)
 | 
				
			||||||
 | 
					       ("pkg-config" ,pkg-config)))
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("libxml2" ,libxml2)))
 | 
				
			||||||
 | 
					    (home-page "http://tagoh.bitbucket.org/liblangtag/")
 | 
				
			||||||
 | 
					    (synopsis "Library to access tags for identifying languages")
 | 
				
			||||||
 | 
					    (description "Liblangtag implements an interface to work with tags
 | 
				
			||||||
 | 
					for identifying languages as described in RFC 5646.  It supports the
 | 
				
			||||||
 | 
					extensions described in RFC6067 and RFC6497, and Extension T for
 | 
				
			||||||
 | 
					language/locale identifiers as described in the Unicode CLDR
 | 
				
			||||||
 | 
					standard 21.0.2.")
 | 
				
			||||||
 | 
					    (license (list lgpl3+ mpl2.0)))) ; dual license
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public libexttextcat
 | 
					(define-public libexttextcat
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "libexttextcat")
 | 
					    (name "libexttextcat")
 | 
				
			||||||
| 
						 | 
					@ -681,7 +709,7 @@ and to return information on pronunciations, meanings and synonyms.")
 | 
				
			||||||
(define-public libreoffice
 | 
					(define-public libreoffice
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "libreoffice")
 | 
					    (name "libreoffice")
 | 
				
			||||||
    (version "5.0.3.2")
 | 
					    (version "5.0.5.2")
 | 
				
			||||||
    (source
 | 
					    (source
 | 
				
			||||||
     (origin
 | 
					     (origin
 | 
				
			||||||
      (method url-fetch)
 | 
					      (method url-fetch)
 | 
				
			||||||
| 
						 | 
					@ -690,7 +718,7 @@ and to return information on pronunciations, meanings and synonyms.")
 | 
				
			||||||
          "http://download.documentfoundation.org/libreoffice/src/"
 | 
					          "http://download.documentfoundation.org/libreoffice/src/"
 | 
				
			||||||
          (version-prefix version 3) "/libreoffice-" version ".tar.xz"))
 | 
					          (version-prefix version 3) "/libreoffice-" version ".tar.xz"))
 | 
				
			||||||
      (sha256 (base32
 | 
					      (sha256 (base32
 | 
				
			||||||
               "1gflcsnw7bx02jbb2x5darf56x0qgia03ylaycadk68ikibckybp"))))
 | 
					               "120vcxpxzs0za76fyfry281ysv6d1ianb37d1yq8py8chkdjkrqy"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
     `(;; autoreconf is run by the LibreOffice build system, since after
 | 
					     `(;; autoreconf is run by the LibreOffice build system, since after
 | 
				
			||||||
| 
						 | 
					@ -762,8 +790,7 @@ and to return information on pronunciations, meanings and synonyms.")
 | 
				
			||||||
       ("xmlsec-src" ,xmlsec-src-libreoffice)
 | 
					       ("xmlsec-src" ,xmlsec-src-libreoffice)
 | 
				
			||||||
       ("zip" ,zip)))
 | 
					       ("zip" ,zip)))
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     `(#:parallel-build? #f ; Otherwise the build fails.
 | 
					     `(#:tests? #f ; Building the tests already fails.
 | 
				
			||||||
       #:tests? #f ; Building the tests already fails.
 | 
					 | 
				
			||||||
       #:make-flags '("build-nocheck") ; Do not build unit tests, which fails.
 | 
					       #:make-flags '("build-nocheck") ; Do not build unit tests, which fails.
 | 
				
			||||||
       #:phases
 | 
					       #:phases
 | 
				
			||||||
         (modify-phases %standard-phases
 | 
					         (modify-phases %standard-phases
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										8729
									
								
								gnu/packages/linux-libre-4.5-i686.conf
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8729
									
								
								gnu/packages/linux-libre-4.5-i686.conf
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										8541
									
								
								gnu/packages/linux-libre-4.5-x86_64.conf
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8541
									
								
								gnu/packages/linux-libre-4.5-x86_64.conf
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
					@ -220,7 +220,7 @@ for SYSTEM and optionally VARIANT, or #f if there is no such configuration."
 | 
				
			||||||
    (search-path %load-path file)))
 | 
					    (search-path %load-path file)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public linux-libre
 | 
					(define-public linux-libre
 | 
				
			||||||
  (let* ((version "4.4.3")
 | 
					  (let* ((version "4.5")
 | 
				
			||||||
         (build-phase
 | 
					         (build-phase
 | 
				
			||||||
          '(lambda* (#:key system inputs #:allow-other-keys #:rest args)
 | 
					          '(lambda* (#:key system inputs #:allow-other-keys #:rest args)
 | 
				
			||||||
             ;; Apply the neat patch.
 | 
					             ;; Apply the neat patch.
 | 
				
			||||||
| 
						 | 
					@ -294,7 +294,7 @@ for SYSTEM and optionally VARIANT, or #f if there is no such configuration."
 | 
				
			||||||
             (uri (linux-libre-urls version))
 | 
					             (uri (linux-libre-urls version))
 | 
				
			||||||
             (sha256
 | 
					             (sha256
 | 
				
			||||||
              (base32
 | 
					              (base32
 | 
				
			||||||
               "06wl6gvhds6j6aaryzpz4jngdf3v70spvp1xb7k2c03kvm9v5f4v"))))
 | 
					               "0km863vwy557flpygkr869yshpjs1v11ni78p8k9p9nm31ai6yn3"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (supported-systems '("x86_64-linux" "i686-linux"))
 | 
					    (supported-systems '("x86_64-linux" "i686-linux"))
 | 
				
			||||||
    (native-inputs `(("perl" ,perl)
 | 
					    (native-inputs `(("perl" ,perl)
 | 
				
			||||||
| 
						 | 
					@ -303,8 +303,10 @@ for SYSTEM and optionally VARIANT, or #f if there is no such configuration."
 | 
				
			||||||
                     ("module-init-tools" ,module-init-tools)
 | 
					                     ("module-init-tools" ,module-init-tools)
 | 
				
			||||||
                     ("patch/freedo+gnu" ,%boot-logo-patch)
 | 
					                     ("patch/freedo+gnu" ,%boot-logo-patch)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                     ,@(let ((conf (kernel-config (or (%current-target-system)
 | 
					                     ,@(let ((conf (kernel-config
 | 
				
			||||||
                                                      (%current-system)))))
 | 
					                                    (or (%current-target-system)
 | 
				
			||||||
 | 
					                                        (%current-system))
 | 
				
			||||||
 | 
					                                    #:variant (version-major+minor version))))
 | 
				
			||||||
                         (if conf
 | 
					                         (if conf
 | 
				
			||||||
                             `(("kconfig" ,conf))
 | 
					                             `(("kconfig" ,conf))
 | 
				
			||||||
                             '()))))
 | 
					                             '()))))
 | 
				
			||||||
| 
						 | 
					@ -326,16 +328,33 @@ It has been modified to remove all non-free binary blobs.")
 | 
				
			||||||
    (license license:gpl2)
 | 
					    (license license:gpl2)
 | 
				
			||||||
    (home-page "http://www.gnu.org/software/linux-libre/"))))
 | 
					    (home-page "http://www.gnu.org/software/linux-libre/"))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public linux-libre-4.1
 | 
					(define-public linux-libre-4.4
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (inherit linux-libre)
 | 
					    (inherit linux-libre)
 | 
				
			||||||
    (version "4.1.18")
 | 
					    (version "4.4.6")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (linux-libre-urls version))
 | 
					              (uri (linux-libre-urls version))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "1bddh2rg645lavhjkk9z75vflba5y0g73z2fjwgbfrj5jb44x9i7"))))
 | 
					                "0sf623knc4j23p96r0w1ng725kj45ra50bwix01z5nvl5aqpnsrp"))))
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     (let ((conf (kernel-config (or (%current-target-system)
 | 
				
			||||||
 | 
					                                    (%current-system))
 | 
				
			||||||
 | 
					                                #:variant "4.4")))
 | 
				
			||||||
 | 
					       `(,@(alist-delete "kconfig" (package-native-inputs linux-libre))
 | 
				
			||||||
 | 
					         ("kconfig" ,conf))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public linux-libre-4.1
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (inherit linux-libre)
 | 
				
			||||||
 | 
					    (version "4.1.19")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (linux-libre-urls version))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "0xkj94xmnmxr768qp6n68r1g68ix1sds95nv6zfg4x8fc7fzn8km"))))
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
     (let ((conf (kernel-config (or (%current-target-system)
 | 
					     (let ((conf (kernel-config (or (%current-target-system)
 | 
				
			||||||
                                    (%current-system))
 | 
					                                    (%current-system))
 | 
				
			||||||
| 
						 | 
					@ -2472,7 +2491,7 @@ and copy/paste text in the console and in xterm.")
 | 
				
			||||||
(define-public btrfs-progs
 | 
					(define-public btrfs-progs
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "btrfs-progs")
 | 
					    (name "btrfs-progs")
 | 
				
			||||||
    (version "4.4")
 | 
					    (version "4.4.1")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "mirror://kernel.org/linux/kernel/"
 | 
					              (uri (string-append "mirror://kernel.org/linux/kernel/"
 | 
				
			||||||
| 
						 | 
					@ -2480,7 +2499,7 @@ and copy/paste text in the console and in xterm.")
 | 
				
			||||||
                                  "btrfs-progs-v" version ".tar.xz"))
 | 
					                                  "btrfs-progs-v" version ".tar.xz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "0jssv1ys4nw2jf7mkp58c19yspaa8ybf48fxsrhhp0683mzpr73p"))))
 | 
					                "1z5882zx9jx02vyg067siws0irsl8pg37myx17hr4imn9ypf6r4r"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     '(#:test-target "test"
 | 
					     '(#:test-target "test"
 | 
				
			||||||
| 
						 | 
					@ -2505,3 +2524,35 @@ easy administration.")
 | 
				
			||||||
    ;; GPL2+: crc32.c, radix-tree.c, raid6.c, rbtree.c.
 | 
					    ;; GPL2+: crc32.c, radix-tree.c, raid6.c, rbtree.c.
 | 
				
			||||||
    ;; GPL2: Everything else.
 | 
					    ;; GPL2: Everything else.
 | 
				
			||||||
    (license (list license:gpl2 license:gpl2+))))
 | 
					    (license (list license:gpl2 license:gpl2+))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public freefall
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "freefall")
 | 
				
			||||||
 | 
					    (version (package-version linux-libre))
 | 
				
			||||||
 | 
					    (source (package-source linux-libre))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     '(#:phases (modify-phases %standard-phases
 | 
				
			||||||
 | 
					                  (add-after 'unpack 'enter-subdirectory
 | 
				
			||||||
 | 
					                    (lambda _
 | 
				
			||||||
 | 
					                      (chdir "tools/laptop/freefall")))
 | 
				
			||||||
 | 
					                  (delete 'configure)
 | 
				
			||||||
 | 
					                  (add-before 'build 'increase-timeout
 | 
				
			||||||
 | 
					                    (lambda _
 | 
				
			||||||
 | 
					                      ;; The default of 2 seconds is too low: it assumes an
 | 
				
			||||||
 | 
					                      ;; open lid and AC power without actually checking.
 | 
				
			||||||
 | 
					                      (substitute* "freefall.c"
 | 
				
			||||||
 | 
					                        (("alarm\\(2\\)") "alarm(5)")))))
 | 
				
			||||||
 | 
					       #:make-flags (list (string-append "PREFIX="
 | 
				
			||||||
 | 
					                                         (assoc-ref %outputs "out")))
 | 
				
			||||||
 | 
					       #:tests? #f)) ;no tests
 | 
				
			||||||
 | 
					    (home-page (package-home-page linux-libre))
 | 
				
			||||||
 | 
					    (synopsis "Free-fall protection for spinning laptop hard drives")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "Prevents shock damage to the internal spinning hard drive(s) of some
 | 
				
			||||||
 | 
					HP and Dell laptops.  When sudden movement is detected, all input/output
 | 
				
			||||||
 | 
					operations on the drive are suspended and its heads are parked on the ramp,
 | 
				
			||||||
 | 
					where they are less likely to cause damage to the spinning disc.  Requires a
 | 
				
			||||||
 | 
					drive that supports the ATA/ATAPI-7 IDLE IMMEDIATE command with unload
 | 
				
			||||||
 | 
					feature, and a laptop with an accelerometer.  It has no effect on SSDs.")
 | 
				
			||||||
 | 
					    (license license:gpl2)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,8 @@
 | 
				
			||||||
;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
					;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 | 
					;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 | 
				
			||||||
;;; Copyright © 2016 Al McElrath <hello@yrns.org>
 | 
					;;; Copyright © 2016 Al McElrath <hello@yrns.org>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -69,8 +71,8 @@
 | 
				
			||||||
  #:use-module (gnu packages xml)
 | 
					  #:use-module (gnu packages xml)
 | 
				
			||||||
  #:use-module (gnu packages xorg)
 | 
					  #:use-module (gnu packages xorg)
 | 
				
			||||||
  #:use-module ((guix licenses)
 | 
					  #:use-module ((guix licenses)
 | 
				
			||||||
                #:select (gpl2 gpl2+ gpl3+ lgpl2.1 lgpl2.1+ lgpl3+ non-copyleft
 | 
					                #:select (gpl2 gpl2+ gpl3 gpl3+ lgpl2.1 lgpl2.1+ lgpl3+
 | 
				
			||||||
                          (expat . license:expat)))
 | 
					                           non-copyleft (expat . license:expat)))
 | 
				
			||||||
  #:use-module (guix packages)
 | 
					  #:use-module (guix packages)
 | 
				
			||||||
  #:use-module (guix download)
 | 
					  #:use-module (guix download)
 | 
				
			||||||
  #:use-module (guix git-download)
 | 
					  #:use-module (guix git-download)
 | 
				
			||||||
| 
						 | 
					@ -287,7 +289,7 @@ and corrections.  It is based on a Bayesian filter.")
 | 
				
			||||||
(define-public offlineimap
 | 
					(define-public offlineimap
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "offlineimap")
 | 
					    (name "offlineimap")
 | 
				
			||||||
    (version "6.6.1")
 | 
					    (version "6.7.0")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "https://github.com/OfflineIMAP/offlineimap/"
 | 
					              (uri (string-append "https://github.com/OfflineIMAP/offlineimap/"
 | 
				
			||||||
| 
						 | 
					@ -295,7 +297,7 @@ and corrections.  It is based on a Bayesian filter.")
 | 
				
			||||||
              (file-name (string-append name "-" version ".tar.gz"))
 | 
					              (file-name (string-append name "-" version ".tar.gz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "1c2b03856a78ripkpl9jjzj6yzyfb3rlrdnjx300s647l1xx8gxg"))))
 | 
					                "0462mal2fxvavxhwjk1a6vsnspx07yniifa687dwg46aplqznin4"))))
 | 
				
			||||||
    (build-system python-build-system)
 | 
					    (build-system python-build-system)
 | 
				
			||||||
    (native-inputs `(("python" ,python-2)))
 | 
					    (native-inputs `(("python" ,python-2)))
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
| 
						 | 
					@ -629,7 +631,19 @@ which can add many functionalities to the base client.")
 | 
				
			||||||
    (arguments
 | 
					    (arguments
 | 
				
			||||||
     `(#:configure-flags (list "--with-libgsasl"
 | 
					     `(#:configure-flags (list "--with-libgsasl"
 | 
				
			||||||
                               "--with-libidn"
 | 
					                               "--with-libidn"
 | 
				
			||||||
                               "--with-tls=gnutls")))
 | 
					                               "--with-tls=gnutls")
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         (add-after 'install 'install-msmtpq
 | 
				
			||||||
 | 
					           (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					             (let* ((out (assoc-ref outputs "out"))
 | 
				
			||||||
 | 
					                    (bin (string-append out "/bin"))
 | 
				
			||||||
 | 
					                    (doc (string-append out "/share/doc/msmtp"))
 | 
				
			||||||
 | 
					                    (msmtpq (string-append "scripts/msmtpq")))
 | 
				
			||||||
 | 
					               (install-file (string-append msmtpq "/msmtpq") bin)
 | 
				
			||||||
 | 
					               (install-file (string-append msmtpq "/msmtp-queue") bin)
 | 
				
			||||||
 | 
					               (install-file (string-append msmtpq "/README.msmtpq") doc)
 | 
				
			||||||
 | 
					               #t))))))
 | 
				
			||||||
    (synopsis
 | 
					    (synopsis
 | 
				
			||||||
     "Simple and easy to use SMTP client with decent sendmail compatibility")
 | 
					     "Simple and easy to use SMTP client with decent sendmail compatibility")
 | 
				
			||||||
    (description
 | 
					    (description
 | 
				
			||||||
| 
						 | 
					@ -641,7 +655,7 @@ delivery.")
 | 
				
			||||||
(define-public exim
 | 
					(define-public exim
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "exim")
 | 
					    (name "exim")
 | 
				
			||||||
    (version "4.86")
 | 
					    (version "4.86.2")
 | 
				
			||||||
    (source
 | 
					    (source
 | 
				
			||||||
     (origin
 | 
					     (origin
 | 
				
			||||||
       (method url-fetch)
 | 
					       (method url-fetch)
 | 
				
			||||||
| 
						 | 
					@ -651,7 +665,7 @@ delivery.")
 | 
				
			||||||
                                 version ".tar.bz2")))
 | 
					                                 version ".tar.bz2")))
 | 
				
			||||||
       (sha256
 | 
					       (sha256
 | 
				
			||||||
        (base32
 | 
					        (base32
 | 
				
			||||||
         "0mn4bxih9slrmll5262ayhf41ji43pjf1rv0y6xpy6x55v7g5k7i"))))
 | 
					         "1cvfcc1hi60lydv8h3a2rxlfc0v2nflwpvzjj7h7cdsqs2pxwmkp"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (inputs
 | 
					    (inputs
 | 
				
			||||||
     `(("bdb" ,bdb)
 | 
					     `(("bdb" ,bdb)
 | 
				
			||||||
| 
						 | 
					@ -1085,4 +1099,97 @@ deliver it in various ways.")
 | 
				
			||||||
     ;; with that information.
 | 
					     ;; with that information.
 | 
				
			||||||
     (non-copyleft "https://github.com/nicm/fdm/blob/master/command.c"))))
 | 
					     (non-copyleft "https://github.com/nicm/fdm/blob/master/command.c"))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;;; mail.scm ends here
 | 
					
 | 
				
			||||||
 | 
					(define-public procmail
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "procmail")
 | 
				
			||||||
 | 
					    (version "3.22")
 | 
				
			||||||
 | 
					    (source
 | 
				
			||||||
 | 
					     (origin
 | 
				
			||||||
 | 
					       (method url-fetch)
 | 
				
			||||||
 | 
					       (uri (string-append
 | 
				
			||||||
 | 
					             "ftp://ftp.fu-berlin.de/pub/unix/mail/procmail/procmail-"
 | 
				
			||||||
 | 
					             version
 | 
				
			||||||
 | 
					             ".tar.gz"))
 | 
				
			||||||
 | 
					       (sha256
 | 
				
			||||||
 | 
					        (base32
 | 
				
			||||||
 | 
					         "05z1c803n5cppkcq99vkyd5myff904lf9sdgynfqngfk9nrpaz08"))
 | 
				
			||||||
 | 
					       ;; The following patch fixes an ambiguous definition of
 | 
				
			||||||
 | 
					       ;; getline() in formail.c.  The patch is provided by Debian as
 | 
				
			||||||
 | 
					       ;; patch 24.
 | 
				
			||||||
 | 
					       (patches
 | 
				
			||||||
 | 
					        (list
 | 
				
			||||||
 | 
					         (search-patch "procmail-ambiguous-getline-debian.patch")))))
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:phases (modify-phases %standard-phases
 | 
				
			||||||
 | 
					                  (replace 'configure
 | 
				
			||||||
 | 
					                    (lambda _
 | 
				
			||||||
 | 
					                      (substitute* "Makefile"
 | 
				
			||||||
 | 
					                        (("/bin/sh")
 | 
				
			||||||
 | 
					                         (which "sh"))
 | 
				
			||||||
 | 
					                        (("/usr")
 | 
				
			||||||
 | 
					                         (assoc-ref %outputs "out"))
 | 
				
			||||||
 | 
					                        (("/bin/rm")
 | 
				
			||||||
 | 
					                         (which "rm")))
 | 
				
			||||||
 | 
					                      #t)))
 | 
				
			||||||
 | 
					       #:tests? #f)) ;; There are no tests indicating a successful
 | 
				
			||||||
 | 
					    ;; build.  Some tests of basic locking mechanisms provided by the
 | 
				
			||||||
 | 
					    ;; filesystem are performed during 'make install'.  However, these
 | 
				
			||||||
 | 
					    ;; are performed before the actual build process.
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (inputs `(("glibc" ,glibc)
 | 
				
			||||||
 | 
					              ("exim" ,exim)))
 | 
				
			||||||
 | 
					    (home-page "http://www.procmail.org/")
 | 
				
			||||||
 | 
					    (synopsis "Versatile mail delivery agent (MDA)")
 | 
				
			||||||
 | 
					    (description "Procmail is a mail delivery agent (MDA) featuring support
 | 
				
			||||||
 | 
					for a variety of mailbox formats such as mbox, mh and maildir.  Incoming mail
 | 
				
			||||||
 | 
					can be sorted into separate files/directories and arbitrary commands can be
 | 
				
			||||||
 | 
					executed on mail arrival.  Procmail is considered stable, but is no longer
 | 
				
			||||||
 | 
					maintained.")
 | 
				
			||||||
 | 
					    (license gpl2+))) ;; procmail allows to choose the
 | 
				
			||||||
 | 
					                      ;; nonfree Artistic License 1.0
 | 
				
			||||||
 | 
					                      ;; as alternative to the GPL2+.
 | 
				
			||||||
 | 
					                      ;; This option is not listed here.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public khard
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "khard")
 | 
				
			||||||
 | 
					    (version "0.8.1")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (pypi-uri name version))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "098gs94qmnspdfn6ar8lycx7dbsz9bcff90aps0cmn47mw7llch0"))))
 | 
				
			||||||
 | 
					    (build-system python-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					      `(#:python ,python-2 ; only python-2 is supported.
 | 
				
			||||||
 | 
					        #:phases
 | 
				
			||||||
 | 
					        (modify-phases %standard-phases
 | 
				
			||||||
 | 
					          (add-before 'build 'disable-egg-compression
 | 
				
			||||||
 | 
					            ;; Do not compress the egg.
 | 
				
			||||||
 | 
					            (lambda _
 | 
				
			||||||
 | 
					              (let ((port (open-file "setup.cfg" "a")))
 | 
				
			||||||
 | 
					                (display "\n[easy_install]\nzip_ok = 0\n"
 | 
				
			||||||
 | 
					                         port)
 | 
				
			||||||
 | 
					                (close-port port)
 | 
				
			||||||
 | 
					                #t)))
 | 
				
			||||||
 | 
					          (add-after 'install 'install-doc
 | 
				
			||||||
 | 
					            (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					              (let* ((out (assoc-ref outputs "out"))
 | 
				
			||||||
 | 
					                     (doc (string-append out "/share/doc/khard")))
 | 
				
			||||||
 | 
					                (copy-recursively "misc/khard" doc)))))))
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("python2-setuptools" ,python2-setuptools)))
 | 
				
			||||||
 | 
					    (propagated-inputs
 | 
				
			||||||
 | 
					     `(("python2-vobject" ,python2-vobject)
 | 
				
			||||||
 | 
					       ("python2-pyyaml" ,python2-pyyaml)
 | 
				
			||||||
 | 
					       ("python2-atomicwrites" ,python2-atomicwrites)
 | 
				
			||||||
 | 
					       ("python2-configobj" ,python2-configobj)))
 | 
				
			||||||
 | 
					    (synopsis "Console address book using CardDAV")
 | 
				
			||||||
 | 
					    (description "Khard is an address book for the console.  It creates, reads,
 | 
				
			||||||
 | 
					modifies and removes CardDAV address book entries at your local machine.  For
 | 
				
			||||||
 | 
					synchronizing with a remote address book, @command{vdirsyncer} is recommended.
 | 
				
			||||||
 | 
					Khard can also be used from within the email client @command{mutt}.")
 | 
				
			||||||
 | 
					    (home-page "https://github.com/scheibler/khard")
 | 
				
			||||||
 | 
					    (license gpl3+)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,7 @@
 | 
				
			||||||
;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 | 
					;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 | 
				
			||||||
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 | 
					;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 | 
				
			||||||
;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 | 
					;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 | 
				
			||||||
;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
 | 
					;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org>
 | 
				
			||||||
;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
 | 
					;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
 | 
				
			||||||
;;; Copyright © 2014 Mathieu Lirzin <mathieu.lirzin@openmailbox.org>
 | 
					;;; Copyright © 2014 Mathieu Lirzin <mathieu.lirzin@openmailbox.org>
 | 
				
			||||||
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 | 
					;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 | 
				
			||||||
| 
						 | 
					@ -177,7 +177,7 @@ numbers.")
 | 
				
			||||||
(define-public glpk
 | 
					(define-public glpk
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "glpk")
 | 
					    (name "glpk")
 | 
				
			||||||
    (version "4.58")
 | 
					    (version "4.59")
 | 
				
			||||||
    (source
 | 
					    (source
 | 
				
			||||||
     (origin
 | 
					     (origin
 | 
				
			||||||
      (method url-fetch)
 | 
					      (method url-fetch)
 | 
				
			||||||
| 
						 | 
					@ -185,7 +185,7 @@ numbers.")
 | 
				
			||||||
                          version ".tar.gz"))
 | 
					                          version ".tar.gz"))
 | 
				
			||||||
      (sha256
 | 
					      (sha256
 | 
				
			||||||
       (base32
 | 
					       (base32
 | 
				
			||||||
        "1jmrya04hgwnrxrqqs40i6m9cqka3q601cx3nh9ijyvlg90zlq24"))))
 | 
					        "1bpbp5z0378kaj5bqmc5m2j5h9c7553p0s2j6a28badqghpbx673"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (inputs
 | 
					    (inputs
 | 
				
			||||||
     `(("gmp" ,gmp)))
 | 
					     `(("gmp" ,gmp)))
 | 
				
			||||||
| 
						 | 
					@ -354,9 +354,7 @@ singular value problems.")
 | 
				
			||||||
              ("pango" ,pango)
 | 
					              ("pango" ,pango)
 | 
				
			||||||
              ("gd" ,gd)))
 | 
					              ("gd" ,gd)))
 | 
				
			||||||
    (native-inputs `(("pkg-config" ,pkg-config)
 | 
					    (native-inputs `(("pkg-config" ,pkg-config)
 | 
				
			||||||
                     ;; Need 'tex', 'latex', 'pdflatex', 'kpsexand', and
 | 
					                     ("texlive" ,texlive-minimal)))
 | 
				
			||||||
                     ;; 'texhash' binaries.
 | 
					 | 
				
			||||||
                     ("texlive" ,texlive-bin)))
 | 
					 | 
				
			||||||
    (home-page "http://www.gnuplot.info")
 | 
					    (home-page "http://www.gnuplot.info")
 | 
				
			||||||
    (synopsis "Command-line driven graphing utility")
 | 
					    (synopsis "Command-line driven graphing utility")
 | 
				
			||||||
    (description "Gnuplot is a portable command-line driven graphing
 | 
					    (description "Gnuplot is a portable command-line driven graphing
 | 
				
			||||||
| 
						 | 
					@ -567,16 +565,15 @@ ASCII text files using Gmsh's own scripting language.")
 | 
				
			||||||
          'install 'clean-install
 | 
					          'install 'clean-install
 | 
				
			||||||
          ;; Try to keep installed files from leaking build directory names.
 | 
					          ;; Try to keep installed files from leaking build directory names.
 | 
				
			||||||
          (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
					          (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
				
			||||||
            (let ((out     (assoc-ref outputs "out"))
 | 
					            (let ((out     (assoc-ref outputs "out")))
 | 
				
			||||||
                  (fortran (assoc-ref inputs  "gfortran")))
 | 
					 | 
				
			||||||
              (substitute* (map (lambda (file)
 | 
					              (substitute* (map (lambda (file)
 | 
				
			||||||
                                  (string-append out "/lib/petsc/conf/" file))
 | 
					                                  (string-append out "/lib/petsc/conf/" file))
 | 
				
			||||||
                                '("petscvariables" "PETScConfig.cmake"))
 | 
					                                '("petscvariables" "PETScConfig.cmake"))
 | 
				
			||||||
                (((getcwd)) out))
 | 
					                (((getcwd)) out))
 | 
				
			||||||
              ;; Make compiler references point to the store
 | 
					              ;; Make compiler references point to the store
 | 
				
			||||||
              (substitute* (string-append out "/lib/petsc/conf/petscvariables")
 | 
					              (substitute* (string-append out "/lib/petsc/conf/petscvariables")
 | 
				
			||||||
                (("= g(cc|\\+\\+|fortran)" _ suffix)
 | 
					                (("= (gcc|g\\+\\+|gfortran)" _ compiler)
 | 
				
			||||||
                 (string-append "= " fortran "/bin/g" suffix)))
 | 
					                 (string-append "= " (which compiler))))
 | 
				
			||||||
              ;; PETSc installs some build logs, which aren't necessary.
 | 
					              ;; PETSc installs some build logs, which aren't necessary.
 | 
				
			||||||
              (for-each (lambda (file)
 | 
					              (for-each (lambda (file)
 | 
				
			||||||
                          (let ((f (string-append out "/lib/petsc/conf/" file)))
 | 
					                          (let ((f (string-append out "/lib/petsc/conf/" file)))
 | 
				
			||||||
| 
						 | 
					@ -643,6 +640,7 @@ scientific applications modeled by partial differential equations.")
 | 
				
			||||||
       (method url-fetch)
 | 
					       (method url-fetch)
 | 
				
			||||||
       (uri (string-append "http://slepc.upv.es/download/download.php?"
 | 
					       (uri (string-append "http://slepc.upv.es/download/download.php?"
 | 
				
			||||||
                           "filename=slepc-" version ".tar.gz"))
 | 
					                           "filename=slepc-" version ".tar.gz"))
 | 
				
			||||||
 | 
					       (file-name (string-append name "-" version ".tar.gz"))
 | 
				
			||||||
       (sha256
 | 
					       (sha256
 | 
				
			||||||
        (base32
 | 
					        (base32
 | 
				
			||||||
         "1pv5iqz2kc8sj49zsabyz4arnfpana8mjrhq31vzgk16xldk3d1a"))))
 | 
					         "1pv5iqz2kc8sj49zsabyz4arnfpana8mjrhq31vzgk16xldk3d1a"))))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -63,17 +63,21 @@
 | 
				
			||||||
(define-public libotr
 | 
					(define-public libotr
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "libotr")
 | 
					    (name "libotr")
 | 
				
			||||||
    (version "4.1.0")
 | 
					    (version "4.1.1")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "https://otr.cypherpunks.ca/libotr-"
 | 
					              (uri (string-append "https://otr.cypherpunks.ca/libotr-"
 | 
				
			||||||
                                  version ".tar.gz"))
 | 
					                                  version ".tar.gz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32 "0c6rkh58s6wqzcrpccwdik5qs91qj6dgd60a340d72gc80cqknsg"))))
 | 
					               (base32
 | 
				
			||||||
 | 
					                "1x8rliydhbibmzwdbyr7pd7n87m2jmxnqkpvaalnf4154hj1hfwb"))
 | 
				
			||||||
 | 
					              (patches
 | 
				
			||||||
 | 
					               (list (search-patch "libotr-test-auth-fix.patch")))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (propagated-inputs
 | 
					    (propagated-inputs
 | 
				
			||||||
     `(("libgcrypt" ,libgcrypt)))  ; libotr headers include gcrypt.h
 | 
					     `(("libgcrypt" ,libgcrypt)))  ; libotr headers include gcrypt.h
 | 
				
			||||||
    (inputs `(("libgpg-error" ,libgpg-error)))
 | 
					    (inputs `(("libgpg-error" ,libgpg-error)))
 | 
				
			||||||
 | 
					    (native-inputs `(("perl" ,perl))) ; for the test suite
 | 
				
			||||||
    (synopsis "Off-the-Record (OTR) Messaging Library and Toolkit")
 | 
					    (synopsis "Off-the-Record (OTR) Messaging Library and Toolkit")
 | 
				
			||||||
    (description
 | 
					    (description
 | 
				
			||||||
     "OTR allows you to have private conversations over instant messaging by
 | 
					     "OTR allows you to have private conversations over instant messaging by
 | 
				
			||||||
| 
						 | 
					@ -88,27 +92,16 @@ keys, no previous conversation is compromised.")
 | 
				
			||||||
    (home-page "https://otr.cypherpunks.ca/")
 | 
					    (home-page "https://otr.cypherpunks.ca/")
 | 
				
			||||||
    (license (list lgpl2.1 gpl2))))
 | 
					    (license (list lgpl2.1 gpl2))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public libotr-3
 | 
					 | 
				
			||||||
  (package (inherit libotr)
 | 
					 | 
				
			||||||
    (version "3.2.1")
 | 
					 | 
				
			||||||
    (source (origin
 | 
					 | 
				
			||||||
              (method url-fetch)
 | 
					 | 
				
			||||||
              (uri (string-append "https://otr.cypherpunks.ca/libotr-"
 | 
					 | 
				
			||||||
                                  version ".tar.gz"))
 | 
					 | 
				
			||||||
              (sha256
 | 
					 | 
				
			||||||
               (base32 "1x6dd4rh499hdraiqfhz81igrj0a5rs0gjhc8l4sljwqhjjyla6l"))))))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(define-public bitlbee
 | 
					(define-public bitlbee
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "bitlbee")
 | 
					    (name "bitlbee")
 | 
				
			||||||
    (version "3.4")
 | 
					    (version "3.4.1")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "http://get.bitlbee.org/src/bitlbee-"
 | 
					              (uri (string-append "https://get.bitlbee.org/src/bitlbee-"
 | 
				
			||||||
                                  version ".tar.gz"))
 | 
					                                  version ".tar.gz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32 "0plx4dryf8i6hz7vghg84z5f6w6rkw1l8ckl4c4wh5zxpd3ddfnf"))
 | 
					               (base32 "1qf0ypa9ba5jvsnpg9slmaran16hcc5fnfzbb1sdch1hjhchn2jh"))))
 | 
				
			||||||
              (patches (list (search-patch "bitlbee-configure-doc-fix.patch")))))
 | 
					 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (native-inputs `(("pkg-config" ,pkg-config)
 | 
					    (native-inputs `(("pkg-config" ,pkg-config)
 | 
				
			||||||
                     ("check" ,check)))
 | 
					                     ("check" ,check)))
 | 
				
			||||||
| 
						 | 
					@ -327,14 +320,14 @@ chat protocols.")
 | 
				
			||||||
(define-public pidgin-otr
 | 
					(define-public pidgin-otr
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "pidgin-otr")
 | 
					    (name "pidgin-otr")
 | 
				
			||||||
    (version "4.0.1")
 | 
					    (version "4.0.2")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append "https://otr.cypherpunks.ca/"
 | 
					              (uri (string-append "https://otr.cypherpunks.ca/"
 | 
				
			||||||
                                  name "-" version ".tar.gz"))
 | 
					                                  name "-" version ".tar.gz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "02pkkf86fh5jvzsdn9y78impsgzj1n0p81kc2girvk3vq941yy0v"))))
 | 
					                "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (native-inputs
 | 
					    (native-inputs
 | 
				
			||||||
     `(("pkg-config" ,pkg-config)
 | 
					     `(("pkg-config" ,pkg-config)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,6 +28,7 @@
 | 
				
			||||||
  #:use-module (guix download)
 | 
					  #:use-module (guix download)
 | 
				
			||||||
  #:use-module (guix utils)
 | 
					  #:use-module (guix utils)
 | 
				
			||||||
  #:use-module (guix build-system gnu)
 | 
					  #:use-module (guix build-system gnu)
 | 
				
			||||||
 | 
					  #:use-module (guix build-system python)
 | 
				
			||||||
  #:use-module (gnu packages avahi)
 | 
					  #:use-module (gnu packages avahi)
 | 
				
			||||||
  #:use-module (gnu packages boost)
 | 
					  #:use-module (gnu packages boost)
 | 
				
			||||||
  #:use-module (gnu packages icu4c)
 | 
					  #:use-module (gnu packages icu4c)
 | 
				
			||||||
| 
						 | 
					@ -40,6 +41,7 @@
 | 
				
			||||||
  #:use-module (gnu packages mp3)
 | 
					  #:use-module (gnu packages mp3)
 | 
				
			||||||
  #:use-module (gnu packages ncurses)
 | 
					  #:use-module (gnu packages ncurses)
 | 
				
			||||||
  #:use-module (gnu packages pkg-config)
 | 
					  #:use-module (gnu packages pkg-config)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages python)
 | 
				
			||||||
  #:use-module (gnu packages autotools)
 | 
					  #:use-module (gnu packages autotools)
 | 
				
			||||||
  #:use-module (gnu packages pulseaudio)
 | 
					  #:use-module (gnu packages pulseaudio)
 | 
				
			||||||
  #:use-module (gnu packages databases)
 | 
					  #:use-module (gnu packages databases)
 | 
				
			||||||
| 
						 | 
					@ -240,3 +242,34 @@ information about tracks being played to a scrobbler, such as Libre.FM.")
 | 
				
			||||||
    ;; instead.
 | 
					    ;; instead.
 | 
				
			||||||
    (home-page "http://mpd.wikia.com/wiki/Client:Mpdscribble")
 | 
					    (home-page "http://mpd.wikia.com/wiki/Client:Mpdscribble")
 | 
				
			||||||
    (license license:gpl2+)))
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public python-mpd2
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "python-mpd2")
 | 
				
			||||||
 | 
					    (version "0.5.5")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (pypi-uri "python-mpd2" version))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "0laypd7h1j14b4vrmiayqlzdsh2j5hc3zv4l0fqvbrbw9y6763ii"))))
 | 
				
			||||||
 | 
					    (build-system python-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     '(#:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         (replace 'check
 | 
				
			||||||
 | 
					           (lambda _ (zero? (system* "python" "mpd_test.py")))))))
 | 
				
			||||||
 | 
					    (native-inputs `(("python-mock" ,python-mock)))
 | 
				
			||||||
 | 
					    (home-page "https://github.com/Mic92/python-mpd2")
 | 
				
			||||||
 | 
					    (synopsis "Python MPD client library")
 | 
				
			||||||
 | 
					    (description "Python-mpd2 is a Python library which provides a client
 | 
				
			||||||
 | 
					interface for the Music Player Daemon.")
 | 
				
			||||||
 | 
					    (license license:lgpl3+)
 | 
				
			||||||
 | 
					    (properties `((python2-variant . ,(delay python2-mpd2))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public python2-mpd2
 | 
				
			||||||
 | 
					  (let ((mpd2 (package-with-python2
 | 
				
			||||||
 | 
					               (strip-python2-variant python-mpd2))))
 | 
				
			||||||
 | 
					    (package (inherit mpd2)
 | 
				
			||||||
 | 
					      (native-inputs `(("python2-setuptools" ,python2-setuptools)
 | 
				
			||||||
 | 
					                       ,@(package-native-inputs mpd2))))))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,7 @@
 | 
				
			||||||
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 | 
					;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 | 
				
			||||||
;;; Copyright © 2016 Al McElrath <hello@yrns.org>
 | 
					;;; Copyright © 2016 Al McElrath <hello@yrns.org>
 | 
				
			||||||
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
					;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -49,6 +50,7 @@
 | 
				
			||||||
  #:use-module (gnu packages fltk)
 | 
					  #:use-module (gnu packages fltk)
 | 
				
			||||||
  #:use-module (gnu packages fonts)
 | 
					  #:use-module (gnu packages fonts)
 | 
				
			||||||
  #:use-module (gnu packages fontutils)
 | 
					  #:use-module (gnu packages fontutils)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages freedesktop)
 | 
				
			||||||
  #:use-module (gnu packages gcc)
 | 
					  #:use-module (gnu packages gcc)
 | 
				
			||||||
  #:use-module (gnu packages gnupg)
 | 
					  #:use-module (gnu packages gnupg)
 | 
				
			||||||
  #:use-module (gnu packages gettext)
 | 
					  #:use-module (gnu packages gettext)
 | 
				
			||||||
| 
						 | 
					@ -64,6 +66,7 @@
 | 
				
			||||||
  #:use-module (gnu packages linux) ; for alsa-utils
 | 
					  #:use-module (gnu packages linux) ; for alsa-utils
 | 
				
			||||||
  #:use-module (gnu packages man)
 | 
					  #:use-module (gnu packages man)
 | 
				
			||||||
  #:use-module (gnu packages mp3)
 | 
					  #:use-module (gnu packages mp3)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages mpd)
 | 
				
			||||||
  #:use-module (gnu packages ncurses)
 | 
					  #:use-module (gnu packages ncurses)
 | 
				
			||||||
  #:use-module (gnu packages netpbm)
 | 
					  #:use-module (gnu packages netpbm)
 | 
				
			||||||
  #:use-module (gnu packages pdf)
 | 
					  #:use-module (gnu packages pdf)
 | 
				
			||||||
| 
						 | 
					@ -817,7 +820,7 @@ projects.")
 | 
				
			||||||
(define-public frescobaldi
 | 
					(define-public frescobaldi
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "frescobaldi")
 | 
					    (name "frescobaldi")
 | 
				
			||||||
    (version "2.18.1")
 | 
					    (version "2.18.2")
 | 
				
			||||||
    (source (origin
 | 
					    (source (origin
 | 
				
			||||||
              (method url-fetch)
 | 
					              (method url-fetch)
 | 
				
			||||||
              (uri (string-append
 | 
					              (uri (string-append
 | 
				
			||||||
| 
						 | 
					@ -825,7 +828,7 @@ projects.")
 | 
				
			||||||
                    version "/frescobaldi-" version ".tar.gz"))
 | 
					                    version "/frescobaldi-" version ".tar.gz"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "1hflc6gck6dn17czc2ldai5j0ynfg3df8lqcggdry06qxsdbnns7"))))
 | 
					                "1yns7nq2a2hz5rv4xjp21bgcdi1xj6fq48lqjrld7ypqqi5nfjp5"))))
 | 
				
			||||||
    (build-system python-build-system)
 | 
					    (build-system python-build-system)
 | 
				
			||||||
    (inputs
 | 
					    (inputs
 | 
				
			||||||
     `(("lilypond" ,lilypond)
 | 
					     `(("lilypond" ,lilypond)
 | 
				
			||||||
| 
						 | 
					@ -1134,3 +1137,167 @@ personalized online radio pandora.com.  It has configurable keys for playing
 | 
				
			||||||
and managing stations, can be controlled remotely via fifo, and can run
 | 
					and managing stations, can be controlled remotely via fifo, and can run
 | 
				
			||||||
event-based scripts for scrobbling, notifications, etc.")
 | 
					event-based scripts for scrobbling, notifications, etc.")
 | 
				
			||||||
    (license license:expat)))
 | 
					    (license license:expat)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public python-mutagen
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "python-mutagen")
 | 
				
			||||||
 | 
					    (version "1.31")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (pypi-uri "mutagen" version))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "16fnnhspniac2i7qswxafawsh2x2a803hmc6bn9k1zl5fxq1380a"))))
 | 
				
			||||||
 | 
					    (build-system python-build-system)
 | 
				
			||||||
 | 
					    (home-page "https://bitbucket.org/lazka/mutagen")
 | 
				
			||||||
 | 
					    (synopsis "Read and write audio tags")
 | 
				
			||||||
 | 
					    (description "Mutagen is a Python module to handle audio metadata.  It
 | 
				
			||||||
 | 
					supports ASF, FLAC, M4A, Monkey’s Audio, MP3, Musepack, Ogg FLAC, Ogg Speex, Ogg
 | 
				
			||||||
 | 
					Theora, Ogg Vorbis, True Audio, WavPack and OptimFROG audio files.  All versions
 | 
				
			||||||
 | 
					of ID3v2 are supported, and all standard ID3v2.4 frames are parsed.  It can read
 | 
				
			||||||
 | 
					Xing headers to accurately calculate the bitrate and length of MP3s.  ID3 and
 | 
				
			||||||
 | 
					APEv2 tags can be edited regardless of audio format.  It can also manipulate Ogg
 | 
				
			||||||
 | 
					streams on an individual packet/page level.")
 | 
				
			||||||
 | 
					    (license license:gpl2))) ; "later version" never mentioned
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public python2-mutagen
 | 
				
			||||||
 | 
					  (package-with-python2 python-mutagen))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public python-musicbrainzngs
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "python-musicbrainzngs")
 | 
				
			||||||
 | 
					    (version "0.5")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (pypi-uri "musicbrainzngs" version))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "12f48llmdf5rkiqxcb70k2k1dmhm8byq0ifazvlrca8dfnmqh4r8"))))
 | 
				
			||||||
 | 
					    (build-system python-build-system)
 | 
				
			||||||
 | 
					    (home-page "https://python-musicbrainzngs.readthedocs.org/")
 | 
				
			||||||
 | 
					    (synopsis "Python bindings for MusicBrainz NGS webservice")
 | 
				
			||||||
 | 
					    (description "Musicbrainzngs implements Python bindings of the MusicBrainz
 | 
				
			||||||
 | 
					web service.  This library can be used to retrieve music metadata from the
 | 
				
			||||||
 | 
					MusicBrainz database.")
 | 
				
			||||||
 | 
					    ;; 'musicbrainzngs/compat.py' is ISC licensed.
 | 
				
			||||||
 | 
					    (license (list license:bsd-2 license:isc))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public python2-musicbrainzngs
 | 
				
			||||||
 | 
					  (package-with-python2 python-musicbrainzngs))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public python-pyechonest
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "python-pyechonest")
 | 
				
			||||||
 | 
					    (version "9.0.0")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (pypi-uri "pyechonest" version))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "1584nira3rkiman9dm81kdshihmkj21s8navndz2l8spnjwb790x"))))
 | 
				
			||||||
 | 
					    (build-system python-build-system)
 | 
				
			||||||
 | 
					    (home-page "https://github.com/echonest/pyechonest")
 | 
				
			||||||
 | 
					    (synopsis "Python interface to The Echo Nest APIs")
 | 
				
			||||||
 | 
					    (description "Pyechonest is an open source Python library for the Echo Nest
 | 
				
			||||||
 | 
					API.  With Pyechonest you have Python access to the entire set of API methods
 | 
				
			||||||
 | 
					including:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@enumerate
 | 
				
			||||||
 | 
					@item artist - search for artists by name, description, or attribute, and get
 | 
				
			||||||
 | 
					back detailed information about any artist including audio, similar artists,
 | 
				
			||||||
 | 
					blogs, familiarity, hotttnesss, news, reviews, urls and video.
 | 
				
			||||||
 | 
					@item song - search songs by artist, title, description, or attribute (tempo,
 | 
				
			||||||
 | 
					duration, etc) and get detailed information back about each song, such as
 | 
				
			||||||
 | 
					hotttnesss, audio_summary, or tracks.
 | 
				
			||||||
 | 
					@item track - upload a track to the Echo Nest and receive summary information
 | 
				
			||||||
 | 
					about the track including key, duration, mode, tempo, time signature along with
 | 
				
			||||||
 | 
					detailed track info including timbre, pitch, rhythm and loudness information.
 | 
				
			||||||
 | 
					@end enumerate\n")
 | 
				
			||||||
 | 
					    (license license:bsd-3)
 | 
				
			||||||
 | 
					    (properties `((python2-variant . ,(delay python2-pyechonest))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public python2-pyechonest
 | 
				
			||||||
 | 
					  (package (inherit (package-with-python2
 | 
				
			||||||
 | 
					                     (strip-python2-variant python-pyechonest)))
 | 
				
			||||||
 | 
					    (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public python-pylast
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "python-pylast")
 | 
				
			||||||
 | 
					    (version "1.5.1")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (pypi-uri "pylast" version))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "10znd9xr1vs2ix519jkz3ccm90zciaddcdr2w2wrrh2jyy3bc59a"))))
 | 
				
			||||||
 | 
					    (build-system python-build-system)
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("python-coverage" ,python-coverage)
 | 
				
			||||||
 | 
					       ("python-mock" ,python-mock)
 | 
				
			||||||
 | 
					       ("python-pep8" ,python-pep8)
 | 
				
			||||||
 | 
					       ("python-pytest" ,python-pytest)
 | 
				
			||||||
 | 
					       ("python-pyflakes" ,python-pyflakes)
 | 
				
			||||||
 | 
					       ("python-pyyaml" ,python-pyyaml)))
 | 
				
			||||||
 | 
					    (propagated-inputs
 | 
				
			||||||
 | 
					     `(("python-six" ,python-six)))
 | 
				
			||||||
 | 
					    (home-page "https://github.com/pylast/pylast")
 | 
				
			||||||
 | 
					    (synopsis "Python interface to Last.fm and Libre.fm")
 | 
				
			||||||
 | 
					    (description "A Python interface to Last.fm and other API-compatible
 | 
				
			||||||
 | 
					websites such as Libre.fm.")
 | 
				
			||||||
 | 
					    (license license:asl2.0)
 | 
				
			||||||
 | 
					    (properties `((python2-variant . ,(delay python2-pylast))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public python2-pylast
 | 
				
			||||||
 | 
					  (let ((pylast (package-with-python2
 | 
				
			||||||
 | 
					                 (strip-python2-variant python-pylast))))
 | 
				
			||||||
 | 
					    (package (inherit pylast)
 | 
				
			||||||
 | 
					      (native-inputs
 | 
				
			||||||
 | 
					       `(("python2-setuptools" ,python2-setuptools)
 | 
				
			||||||
 | 
					         ,@(package-native-inputs pylast))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public beets
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "beets")
 | 
				
			||||||
 | 
					    (version "1.3.17")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (pypi-uri name version))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "0yg7sp18sdpszkinhb0bi6yinbn316jy1baxrwiw0m4byrj3rr6c"))))
 | 
				
			||||||
 | 
					    (build-system python-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:python ,python-2 ; only Python 2 is supported
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         (add-after 'unpack 'set-HOME
 | 
				
			||||||
 | 
					           (lambda _ (setenv "HOME" (string-append (getcwd) "/tmp")))))))
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("python2-beautifulsoup4" ,python2-beautifulsoup4)
 | 
				
			||||||
 | 
					       ("python2-flask" ,python2-flask)
 | 
				
			||||||
 | 
					       ("python2-setuptools" ,python2-setuptools)
 | 
				
			||||||
 | 
					       ("python2-mock" ,python2-mock)
 | 
				
			||||||
 | 
					       ("python2-mpd2" ,python2-mpd2)
 | 
				
			||||||
 | 
					       ("python2-pathlib" ,python2-pathlib)
 | 
				
			||||||
 | 
					       ("python2-pyxdg" ,python2-pyxdg)
 | 
				
			||||||
 | 
					       ("python2-pyechonest" ,python2-pyechonest)
 | 
				
			||||||
 | 
					       ("python2-pylast" ,python2-pylast)
 | 
				
			||||||
 | 
					       ("python2-rarfile" ,python2-rarfile)
 | 
				
			||||||
 | 
					       ("python2-responses" ,python2-responses)))
 | 
				
			||||||
 | 
					    ;; TODO: Install optional plugins and dependencies.
 | 
				
			||||||
 | 
					    (propagated-inputs
 | 
				
			||||||
 | 
					     `(("python2-enum34" ,python2-enum34)
 | 
				
			||||||
 | 
					       ("python2-jellyfish" ,python2-jellyfish)
 | 
				
			||||||
 | 
					       ("python2-munkres" ,python2-munkres)
 | 
				
			||||||
 | 
					       ("python2-musicbrainzngs" ,python2-musicbrainzngs)
 | 
				
			||||||
 | 
					       ("python2-mutagen" ,python2-mutagen)
 | 
				
			||||||
 | 
					       ("python2-pyyaml" ,python2-pyyaml)
 | 
				
			||||||
 | 
					       ("python2-unidecode" ,python2-unidecode)))
 | 
				
			||||||
 | 
					    (home-page "http://beets.io")
 | 
				
			||||||
 | 
					    (synopsis "Music organizer")
 | 
				
			||||||
 | 
					    (description "The purpose of beets is to get your music collection right
 | 
				
			||||||
 | 
					once and for all.  It catalogs your collection, automatically improving its
 | 
				
			||||||
 | 
					metadata as it goes using the MusicBrainz database.  Then it provides a variety
 | 
				
			||||||
 | 
					of tools for manipulating and accessing your music.")
 | 
				
			||||||
 | 
					    (license license:expat)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,7 +28,7 @@
 | 
				
			||||||
(define-public nano
 | 
					(define-public nano
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "nano")
 | 
					    (name "nano")
 | 
				
			||||||
    (version "2.5.2")
 | 
					    (version "2.5.3")
 | 
				
			||||||
    (source
 | 
					    (source
 | 
				
			||||||
     (origin
 | 
					     (origin
 | 
				
			||||||
      (method url-fetch)
 | 
					      (method url-fetch)
 | 
				
			||||||
| 
						 | 
					@ -36,7 +36,7 @@
 | 
				
			||||||
                          version ".tar.gz"))
 | 
					                          version ".tar.gz"))
 | 
				
			||||||
      (sha256
 | 
					      (sha256
 | 
				
			||||||
       (base32
 | 
					       (base32
 | 
				
			||||||
        "0hgbmqzjy1pashb1g3qby75pqb7r5g9bmn1iajlx50082b2nmgc9"))))
 | 
					        "1vhjrcydcfxqq1719vcsvqqnbjbq2523m00dhzag5vwzkc961c5j"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (inputs
 | 
					    (inputs
 | 
				
			||||||
     `(("gettext" ,gnu-gettext)
 | 
					     `(("gettext" ,gnu-gettext)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,7 @@
 | 
				
			||||||
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 | 
					;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 | 
				
			||||||
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 | 
					;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 | 
				
			||||||
;;; Copyright © 2015 Stefan Reichör <stefan@xsteve.at>
 | 
					;;; Copyright © 2015 Stefan Reichör <stefan@xsteve.at>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -187,3 +188,25 @@ needed/wanted real-time traffic statistics of multiple network
 | 
				
			||||||
interfaces, with a simple and efficient view on the command line.  It is
 | 
					interfaces, with a simple and efficient view on the command line.  It is
 | 
				
			||||||
intended as a substitute for the PPPStatus and EthStatus projects.")
 | 
					intended as a substitute for the PPPStatus and EthStatus projects.")
 | 
				
			||||||
    (license license:gpl2+)))
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public nload
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "nload")
 | 
				
			||||||
 | 
					    (version "0.7.4")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append "mirror://sourceforge/nload/nload-"
 | 
				
			||||||
 | 
					                                  version ".tar.gz"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "1rb9skch2kgqzigf19x8bzk211jdfjfdkrcvaqyj89jy2pkm3h61"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (inputs `(("ncurses" ,ncurses)))
 | 
				
			||||||
 | 
					    (home-page "http://www.roland-riegel.de/nload/")
 | 
				
			||||||
 | 
					    (synopsis "Realtime console network usage monitor")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "Nload is a console application which monitors network traffic and
 | 
				
			||||||
 | 
					bandwidth usage in real time.  It visualizes the in- and outgoing traffic using
 | 
				
			||||||
 | 
					two graphs and provides additional info like total amount of transfered data
 | 
				
			||||||
 | 
					and min/max network usage.")
 | 
				
			||||||
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -195,7 +195,7 @@ the Nix package manager.")
 | 
				
			||||||
  ;;
 | 
					  ;;
 | 
				
			||||||
  ;; Note: use a short commit id; when using the long one, the limit on socket
 | 
					  ;; Note: use a short commit id; when using the long one, the limit on socket
 | 
				
			||||||
  ;; file names is exceeded while running the tests.
 | 
					  ;; file names is exceeded while running the tests.
 | 
				
			||||||
  (let ((commit "c3f29bc928d5900971f65965feaae59e1272a3f7"))
 | 
					  (let ((commit "71e2065a38cf2641b7eb8c557b0f043f5a42a649"))
 | 
				
			||||||
    (package (inherit guix-0.9.0)
 | 
					    (package (inherit guix-0.9.0)
 | 
				
			||||||
      (version (string-append "0.9.0." (string-take commit 7)))
 | 
					      (version (string-append "0.9.0." (string-take commit 7)))
 | 
				
			||||||
      (source (origin
 | 
					      (source (origin
 | 
				
			||||||
| 
						 | 
					@ -205,7 +205,7 @@ the Nix package manager.")
 | 
				
			||||||
                      (commit commit)))
 | 
					                      (commit commit)))
 | 
				
			||||||
                (sha256
 | 
					                (sha256
 | 
				
			||||||
                 (base32
 | 
					                 (base32
 | 
				
			||||||
                  "1mbikn6awgx3h08bzk3nz8xrqvxdjsbvzrbn26d6m8nrz96ya53a"))
 | 
					                  "0wrrywfdc27yxjns55qdz5si49c8zcb9q5557g2kx48dbm7p0dzw"))
 | 
				
			||||||
                (file-name (string-append "guix-" version "-checkout"))))
 | 
					                (file-name (string-append "guix-" version "-checkout"))))
 | 
				
			||||||
      (arguments
 | 
					      (arguments
 | 
				
			||||||
       (substitute-keyword-arguments (package-arguments guix-0.9.0)
 | 
					       (substitute-keyword-arguments (package-arguments guix-0.9.0)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,7 +42,7 @@
 | 
				
			||||||
(define-public parallel
 | 
					(define-public parallel
 | 
				
			||||||
  (package
 | 
					  (package
 | 
				
			||||||
    (name "parallel")
 | 
					    (name "parallel")
 | 
				
			||||||
    (version "20160122")
 | 
					    (version "20160222")
 | 
				
			||||||
    (source
 | 
					    (source
 | 
				
			||||||
     (origin
 | 
					     (origin
 | 
				
			||||||
      (method url-fetch)
 | 
					      (method url-fetch)
 | 
				
			||||||
| 
						 | 
					@ -50,7 +50,7 @@
 | 
				
			||||||
                          version ".tar.bz2"))
 | 
					                          version ".tar.bz2"))
 | 
				
			||||||
      (sha256
 | 
					      (sha256
 | 
				
			||||||
       (base32
 | 
					       (base32
 | 
				
			||||||
        "1xs8y8jh7wyjs27079xz0ja7xfi4dywz8d6hbkl44mafdnnfjfiy"))))
 | 
					        "1sjmvinwr9j2a0jdk9y9nf2x4hhzcbl529slkwpz0vva0cwybywd"))))
 | 
				
			||||||
    (build-system gnu-build-system)
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
    (inputs `(("perl" ,perl)))
 | 
					    (inputs `(("perl" ,perl)))
 | 
				
			||||||
    (home-page "http://www.gnu.org/software/parallel/")
 | 
					    (home-page "http://www.gnu.org/software/parallel/")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,8 @@
 | 
				
			||||||
;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
					;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
				
			||||||
;;; Copyright © 2015 Aljosha Papsch <misc@rpapsch.de>
 | 
					;;; Copyright © 2015 Aljosha Papsch <misc@rpapsch.de>
 | 
				
			||||||
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 | 
					;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Jessica Tallon <tsyesika@tsyesika.se>
 | 
				
			||||||
 | 
					;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
| 
						 | 
					@ -25,16 +27,20 @@
 | 
				
			||||||
  #:use-module (guix build-system gnu)
 | 
					  #:use-module (guix build-system gnu)
 | 
				
			||||||
  #:use-module (guix download)
 | 
					  #:use-module (guix download)
 | 
				
			||||||
  #:use-module (guix packages)
 | 
					  #:use-module (guix packages)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages admin)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages base)
 | 
				
			||||||
  #:use-module (gnu packages compression)
 | 
					  #:use-module (gnu packages compression)
 | 
				
			||||||
  #:use-module (gnu packages gnupg)
 | 
					  #:use-module (gnu packages gnupg)
 | 
				
			||||||
  #:use-module (gnu packages gtk)
 | 
					  #:use-module (gnu packages gtk)
 | 
				
			||||||
  #:use-module (gnu packages guile)
 | 
					  #:use-module (gnu packages guile)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages linux)
 | 
				
			||||||
  #:use-module (gnu packages man)
 | 
					  #:use-module (gnu packages man)
 | 
				
			||||||
  #:use-module (gnu packages ncurses)
 | 
					  #:use-module (gnu packages ncurses)
 | 
				
			||||||
  #:use-module (gnu packages pkg-config)
 | 
					  #:use-module (gnu packages pkg-config)
 | 
				
			||||||
  #:use-module (gnu packages python)
 | 
					  #:use-module (gnu packages python)
 | 
				
			||||||
  #:use-module (gnu packages tls)
 | 
					  #:use-module (gnu packages tls)
 | 
				
			||||||
  #:use-module (gnu packages qt)
 | 
					  #:use-module (gnu packages qt)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages version-control)
 | 
				
			||||||
  #:use-module (gnu packages xdisorg)
 | 
					  #:use-module (gnu packages xdisorg)
 | 
				
			||||||
  #:use-module (gnu packages xorg)
 | 
					  #:use-module (gnu packages xorg)
 | 
				
			||||||
  #:use-module (guix build-system python))
 | 
					  #:use-module (guix build-system python))
 | 
				
			||||||
| 
						 | 
					@ -241,3 +247,51 @@ JSON files.  It has a command line interface as well as a very simple
 | 
				
			||||||
graphical interface, which can even \"type\" your passwords into
 | 
					graphical interface, which can even \"type\" your passwords into
 | 
				
			||||||
any X11 window.")
 | 
					any X11 window.")
 | 
				
			||||||
    (license license:gpl3+)))
 | 
					    (license license:gpl3+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public password-store
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "password-store")
 | 
				
			||||||
 | 
					    (version "1.6.5")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri
 | 
				
			||||||
 | 
					               (string-append "https://git.zx2c4.com/password-store/snapshot/"
 | 
				
			||||||
 | 
					                              name "-" version ".tar.xz"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "05bk3lrp5jwg0v338lvylp7glpliydzz4jf5pjr6k3kagrv3jyik"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     '(#:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         (delete 'configure)
 | 
				
			||||||
 | 
					         (add-after
 | 
				
			||||||
 | 
					          ;; The script requires 'getopt' at run-time, and this allows
 | 
				
			||||||
 | 
					          ;; the user to not install the providing package 'util-linux'
 | 
				
			||||||
 | 
					          ;; in their profile.
 | 
				
			||||||
 | 
					          'unpack 'patch-path
 | 
				
			||||||
 | 
					          (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					            (let ((getopt (string-append (assoc-ref inputs "getopt")
 | 
				
			||||||
 | 
					                                         "/bin/getopt")))
 | 
				
			||||||
 | 
					              (substitute* "src/password-store.sh"
 | 
				
			||||||
 | 
					                (("GETOPT=\"getopt\"")
 | 
				
			||||||
 | 
					                 (string-append "GETOPT=\"" getopt "\"")))
 | 
				
			||||||
 | 
					              #t))))
 | 
				
			||||||
 | 
					       #:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
 | 
				
			||||||
 | 
					       #:test-target "test"))
 | 
				
			||||||
 | 
					    (native-inputs `(("getopt" ,util-linux))) ; getopt for the tests
 | 
				
			||||||
 | 
					    (inputs `(("gnupg" ,gnupg)
 | 
				
			||||||
 | 
					              ("pwgen" ,pwgen)
 | 
				
			||||||
 | 
					              ("xclip" ,xclip)
 | 
				
			||||||
 | 
					              ("git" ,git)
 | 
				
			||||||
 | 
					              ("tree" ,tree)
 | 
				
			||||||
 | 
					              ("which" ,which)))
 | 
				
			||||||
 | 
					    (home-page "http://www.passwordstore.org/")
 | 
				
			||||||
 | 
					    (synopsis "Encrypted password manager")
 | 
				
			||||||
 | 
					    (description "Password-store is a password manager which uses GnuPG to
 | 
				
			||||||
 | 
					store and retrieve passwords.  The tool stores each password in its own
 | 
				
			||||||
 | 
					GnuPG-encrypted file, allowing the program to be simple yet secure.
 | 
				
			||||||
 | 
					Synchronization is possible using the integrated git support, which commits
 | 
				
			||||||
 | 
					changes to your password database to a git repository that can be managed
 | 
				
			||||||
 | 
					through the pass command.")
 | 
				
			||||||
 | 
					    (license license:gpl2+)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,15 +0,0 @@
 | 
				
			||||||
Fix the check for the prebuilt helpfile when xsltproc is not available.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- bitlbee-3.4/configure.orig	2015-03-25 18:09:10.000000000 -0400
 | 
					 | 
				
			||||||
+++ bitlbee-3.4/configure	2015-05-20 14:51:33.627975970 -0400
 | 
					 | 
				
			||||||
@@ -650,8 +650,8 @@
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 if [ "$doc" = "1" ]; then
 | 
					 | 
				
			||||||
 	if [ ! -e doc/user-guide/help.txt ] && \
 | 
					 | 
				
			||||||
-	     ! type xmlto > /dev/null 2> /dev/null || \
 | 
					 | 
				
			||||||
-	     ! type xsltproc > /dev/null 2> /dev/null
 | 
					 | 
				
			||||||
+	     (! type xmlto > /dev/null 2> /dev/null || \
 | 
					 | 
				
			||||||
+	      ! type xsltproc > /dev/null 2> /dev/null)
 | 
					 | 
				
			||||||
 	then
 | 
					 | 
				
			||||||
 		echo
 | 
					 | 
				
			||||||
 		echo 'WARNING: Building from an unreleased source tree without prebuilt helpfile.'
 | 
					 | 
				
			||||||
							
								
								
									
										401
									
								
								gnu/packages/patches/einstein-build.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										401
									
								
								gnu/packages/patches/einstein-build.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,401 @@
 | 
				
			||||||
 | 
					These patches are required to build with a modern GCC; most of them
 | 
				
			||||||
 | 
					are taken from the Debian package. Upstream has disappeared.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/convert.h einstein-2.0/convert.h
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/convert.h	2005-08-14 04:40:58.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/convert.h	2016-03-05 18:25:08.488917021 +0100
 | 
				
			||||||
 | 
					@@ -5,6 +5,7 @@
 | 
				
			||||||
 | 
					 #include <iostream>
 | 
				
			||||||
 | 
					 #include <sstream>
 | 
				
			||||||
 | 
					 #include <string>
 | 
				
			||||||
 | 
					+#include <typeinfo>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #include "exceptions.h"
 | 
				
			||||||
 | 
					 #include "unicode.h"
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/descr.cpp einstein-2.0/descr.cpp
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/descr.cpp	2005-08-17 15:42:29.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/descr.cpp	2016-03-05 18:29:27.960352230 +0100
 | 
				
			||||||
 | 
					@@ -139,9 +139,9 @@
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     currentPage = 0;
 | 
				
			||||||
 | 
					     //area.add(parentArea, false);
 | 
				
			||||||
 | 
					-    titleFont = new Font(L"nova.ttf", 26);
 | 
				
			||||||
 | 
					-    buttonFont = new Font(L"laudcn2.ttf", 14);
 | 
				
			||||||
 | 
					-    textFont = new Font(L"laudcn2.ttf", 16);
 | 
				
			||||||
 | 
					+    titleFont = new Font(L"DejaVuSans.ttf", 26);
 | 
				
			||||||
 | 
					+    buttonFont = new Font(L"DejaVuSans.ttf", 14);
 | 
				
			||||||
 | 
					+    textFont = new Font(L"DejaVuSans.ttf", 16);
 | 
				
			||||||
 | 
					     textHeight = (int)(textFont->getHeight(L"A") * 1.0);
 | 
				
			||||||
 | 
					     text = new TextParser(msg(L"rulesText"), *textFont, START_X, START_Y, 
 | 
				
			||||||
 | 
					                 CLIENT_WIDTH, CLIENT_HEIGHT);
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/font.h einstein-2.0/font.h
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/font.h	2005-08-16 00:33:17.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/font.h	2016-03-05 18:22:05.563794039 +0100
 | 
				
			||||||
 | 
					@@ -3,7 +3,7 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #include <string>
 | 
				
			||||||
 | 
					-#include <SDL_ttf.h>
 | 
				
			||||||
 | 
					+#include <SDL/SDL_ttf.h>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 class Font
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/formatter.cpp einstein-2.0/formatter.cpp
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/formatter.cpp	2005-08-14 04:40:58.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/formatter.cpp	2016-03-05 18:18:41.146882565 +0100
 | 
				
			||||||
 | 
					@@ -58,7 +58,7 @@
 | 
				
			||||||
 | 
					             if ((c.type == INT_ARG) || (c.type == STRING_ARG) ||
 | 
				
			||||||
 | 
					                     (c.type == FLOAT_ARG) || (c.type == DOUBLE_ARG))
 | 
				
			||||||
 | 
					             {
 | 
				
			||||||
 | 
					-                int no = (int)c.data;
 | 
				
			||||||
 | 
					+                long no = (long)c.data;
 | 
				
			||||||
 | 
					                 args[no - 1] = c.type;
 | 
				
			||||||
 | 
					             }
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					@@ -123,7 +123,7 @@
 | 
				
			||||||
 | 
					 std::wstring Formatter::format(std::vector<ArgValue*> &argValues) const
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     std::wstring s;
 | 
				
			||||||
 | 
					-    int no;
 | 
				
			||||||
 | 
					+    long no;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     for (int i = 0; i < commandsCnt; i++) {
 | 
				
			||||||
 | 
					         Command *cmd = &commands[i];
 | 
				
			||||||
 | 
					@@ -135,8 +135,8 @@
 | 
				
			||||||
 | 
					                 
 | 
				
			||||||
 | 
					             case STRING_ARG:
 | 
				
			||||||
 | 
					             case INT_ARG:
 | 
				
			||||||
 | 
					-                no = (int)cmd->data - 1;
 | 
				
			||||||
 | 
					-                if (no < (int)argValues.size())
 | 
				
			||||||
 | 
					+                no = (long)cmd->data - 1;
 | 
				
			||||||
 | 
					+                if (no < (long)argValues.size())
 | 
				
			||||||
 | 
					                     s += argValues[no]->format(cmd);
 | 
				
			||||||
 | 
					                 break;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/game.cpp einstein-2.0/game.cpp
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/game.cpp	2005-08-23 00:44:54.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/game.cpp	2016-03-05 18:29:27.960352230 +0100
 | 
				
			||||||
 | 
					@@ -33,7 +33,7 @@
 | 
				
			||||||
 | 
					     screen.draw(8, 10, tile);
 | 
				
			||||||
 | 
					     SDL_FreeSurface(tile);
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					-    Font titleFont(L"nova.ttf", 28);
 | 
				
			||||||
 | 
					+    Font titleFont(L"DejaVuSans.ttf", 28);
 | 
				
			||||||
 | 
					     titleFont.draw(screen.getSurface(), 20, 20, 255,255,0, true, 
 | 
				
			||||||
 | 
					             msg(L"einsteinPuzzle"));
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					@@ -89,7 +89,7 @@
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     lastRun = elapsed = lastUpdate = 0;
 | 
				
			||||||
 | 
					     stop();
 | 
				
			||||||
 | 
					-    font = new Font(L"luximb.ttf", 16);
 | 
				
			||||||
 | 
					+    font = new Font(L"DejaVuSans.ttf", 16);
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 Watch::Watch(std::istream &stream)
 | 
				
			||||||
 | 
					@@ -97,7 +97,7 @@
 | 
				
			||||||
 | 
					     elapsed = readInt(stream);
 | 
				
			||||||
 | 
					     lastUpdate = 0;
 | 
				
			||||||
 | 
					     stop();
 | 
				
			||||||
 | 
					-    font = new Font(L"luximb.ttf", 16);
 | 
				
			||||||
 | 
					+    font = new Font(L"DejaVuSans.ttf", 16);
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 Watch::~Watch()
 | 
				
			||||||
 | 
					@@ -178,7 +178,7 @@
 | 
				
			||||||
 | 
					             watch->stop();
 | 
				
			||||||
 | 
					             Area area;
 | 
				
			||||||
 | 
					             area.add(background, false);
 | 
				
			||||||
 | 
					-            Font font(L"laudcn2.ttf", 16);
 | 
				
			||||||
 | 
					+            Font font(L"DejaVuSans.ttf", 16);
 | 
				
			||||||
 | 
					             area.add(new Window(280, 275, 240, 50, L"greenpattern.bmp", 6));
 | 
				
			||||||
 | 
					             area.add(new Label(&font, 280, 275, 240, 50, Label::ALIGN_CENTER,
 | 
				
			||||||
 | 
					                 Label::ALIGN_MIDDLE, 255,255,0, msg(L"paused")));
 | 
				
			||||||
 | 
					@@ -209,7 +209,7 @@
 | 
				
			||||||
 | 
					         virtual void doAction() {
 | 
				
			||||||
 | 
					             sound->play(L"applause.wav");
 | 
				
			||||||
 | 
					             watch->stop();
 | 
				
			||||||
 | 
					-            Font font(L"laudcn2.ttf", 20);
 | 
				
			||||||
 | 
					+            Font font(L"DejaVuSans.ttf", 20);
 | 
				
			||||||
 | 
					             showMessageWindow(gameArea, L"marble1.bmp", 
 | 
				
			||||||
 | 
					                     500, 70, &font, 255,0,0, msg(L"won"));
 | 
				
			||||||
 | 
					             gameArea->draw();
 | 
				
			||||||
 | 
					@@ -257,8 +257,8 @@
 | 
				
			||||||
 | 
					             sound->play(L"glasbk2.wav");
 | 
				
			||||||
 | 
					             bool restart = false;
 | 
				
			||||||
 | 
					             bool newGame = false;
 | 
				
			||||||
 | 
					-            Font font(L"laudcn2.ttf", 24);
 | 
				
			||||||
 | 
					-            Font btnFont(L"laudcn2.ttf", 14);
 | 
				
			||||||
 | 
					+            Font font(L"DejaVuSans.ttf", 24);
 | 
				
			||||||
 | 
					+            Font btnFont(L"DejaVuSans.ttf", 14);
 | 
				
			||||||
 | 
					             Area area;
 | 
				
			||||||
 | 
					             area.add(gameArea);
 | 
				
			||||||
 | 
					             area.add(new Window(220, 240, 360, 140, L"redpattern.bmp", 6));
 | 
				
			||||||
 | 
					@@ -329,7 +329,7 @@
 | 
				
			||||||
 | 
					         CheatCommand(Area *a) { gameArea = a; };
 | 
				
			||||||
 | 
					         
 | 
				
			||||||
 | 
					         virtual void doAction() {
 | 
				
			||||||
 | 
					-            Font font(L"nova.ttf", 30);
 | 
				
			||||||
 | 
					+            Font font(L"DejaVuSans.ttf", 30);
 | 
				
			||||||
 | 
					             showMessageWindow(gameArea, L"darkpattern.bmp", 
 | 
				
			||||||
 | 
					                     500, 100, &font, 255,255,255, 
 | 
				
			||||||
 | 
					                     msg(L"iddqd"));
 | 
				
			||||||
 | 
					@@ -475,7 +475,7 @@
 | 
				
			||||||
 | 
					     drawWallpaper(L"rain.bmp");
 | 
				
			||||||
 | 
					     Window window(230, 260, 340, 80, L"greenpattern.bmp", 6);
 | 
				
			||||||
 | 
					     window.draw();
 | 
				
			||||||
 | 
					-    Font font(L"laudcn2.ttf", 16);
 | 
				
			||||||
 | 
					+    Font font(L"DejaVuSans.ttf", 16);
 | 
				
			||||||
 | 
					     Label label(&font, 280, 275, 240, 50, Label::ALIGN_CENTER,
 | 
				
			||||||
 | 
					                 Label::ALIGN_MIDDLE, 255,255,0, msg(L"loading"));
 | 
				
			||||||
 | 
					     label.draw();
 | 
				
			||||||
 | 
					@@ -533,7 +533,7 @@
 | 
				
			||||||
 | 
					 void Game::run()
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     Area area;
 | 
				
			||||||
 | 
					-    Font btnFont(L"laudcn2.ttf", 14);
 | 
				
			||||||
 | 
					+    Font btnFont(L"DejaVuSans.ttf", 14);
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					     area.setTimer(300, watch);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/main.cpp einstein-2.0/main.cpp
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/main.cpp	2005-09-26 12:32:54.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/main.cpp	2016-03-05 18:29:27.960352230 +0100
 | 
				
			||||||
 | 
					@@ -2,7 +2,7 @@
 | 
				
			||||||
 | 
					 #include <iostream>
 | 
				
			||||||
 | 
					 #include <SDL.h>
 | 
				
			||||||
 | 
					 #include <SDL_main.h>
 | 
				
			||||||
 | 
					-#include <SDL_ttf.h>
 | 
				
			||||||
 | 
					+#include <SDL/SDL_ttf.h>
 | 
				
			||||||
 | 
					 #include "main.h"
 | 
				
			||||||
 | 
					 #include "utils.h"
 | 
				
			||||||
 | 
					 #include "storage.h"
 | 
				
			||||||
 | 
					@@ -78,7 +78,7 @@
 | 
				
			||||||
 | 
					 /*static void checkBetaExpire()
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     if (1124832535L + 60L*60L*24L*40L < time(NULL)) {
 | 
				
			||||||
 | 
					-        Font font(L"laudcn2.ttf", 16);
 | 
				
			||||||
 | 
					+        Font font(L"DejaVuSans.ttf", 16);
 | 
				
			||||||
 | 
					         Area area;
 | 
				
			||||||
 | 
					         showMessageWindow(&area, L"darkpattern.bmp", 
 | 
				
			||||||
 | 
					                 700, 100, &font, 255,255,255, 
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/Makefile einstein-2.0/Makefile
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/Makefile	2005-09-25 23:20:30.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/Makefile	2016-03-05 18:14:22.365450608 +0100
 | 
				
			||||||
 | 
					@@ -49,10 +49,14 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 $(TARGET): $(OBJECTS)
 | 
				
			||||||
 | 
					+	cd mkres && make
 | 
				
			||||||
 | 
					+	cd res && ../mkres/mkres --source resources.descr --output ../einstein.res
 | 
				
			||||||
 | 
					 	$(CXX) $(LNFLAGS) $(OBJECTS) -o $(TARGET)
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 clean:
 | 
				
			||||||
 | 
					 	rm -f $(OBJECTS) core* *core $(TARGET) *~
 | 
				
			||||||
 | 
					+	cd res && rm -f einstein.res
 | 
				
			||||||
 | 
					+	cd mkres && make clean
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 depend:
 | 
				
			||||||
 | 
					 	@makedepend $(SOURCES) 2> /dev/null
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/menu.cpp einstein-2.0/menu.cpp
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/menu.cpp	2005-09-25 22:51:00.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/menu.cpp	2016-03-05 18:29:27.960352230 +0100
 | 
				
			||||||
 | 
					@@ -23,11 +23,11 @@
 | 
				
			||||||
 | 
					     SDL_Surface *title = loadImage(L"nova.bmp");
 | 
				
			||||||
 | 
					     screen.draw(0, 0, title);
 | 
				
			||||||
 | 
					     SDL_FreeSurface(title);
 | 
				
			||||||
 | 
					-    Font font(L"nova.ttf", 28);
 | 
				
			||||||
 | 
					+    Font font(L"DejaVuSans.ttf", 28);
 | 
				
			||||||
 | 
					     std::wstring s(msg(L"einsteinFlowix"));
 | 
				
			||||||
 | 
					     int width = font.getWidth(s);
 | 
				
			||||||
 | 
					     font.draw((screen.getWidth() - width) / 2, 30, 255,255,255, true, s);
 | 
				
			||||||
 | 
					-    Font urlFont(L"luximb.ttf", 16);
 | 
				
			||||||
 | 
					+    Font urlFont(L"DejaVuSans.ttf", 16);
 | 
				
			||||||
 | 
					     s = L"http://games.flowix.com";
 | 
				
			||||||
 | 
					     width = urlFont.getWidth(s);
 | 
				
			||||||
 | 
					     urlFont.draw((screen.getWidth() - width) / 2, 60, 255,255,0, true, s);
 | 
				
			||||||
 | 
					@@ -133,9 +133,9 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					         virtual void doAction() {
 | 
				
			||||||
 | 
					             Area area;
 | 
				
			||||||
 | 
					-            Font titleFont(L"nova.ttf", 26);
 | 
				
			||||||
 | 
					-            Font font(L"laudcn2.ttf", 14);
 | 
				
			||||||
 | 
					-            Font urlFont(L"luximb.ttf", 16);
 | 
				
			||||||
 | 
					+            Font titleFont(L"DejaVuSans.ttf", 26);
 | 
				
			||||||
 | 
					+            Font font(L"DejaVuSans.ttf", 14);
 | 
				
			||||||
 | 
					+            Font urlFont(L"DejaVuSans.ttf", 16);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #define LABEL(pos, c, f, text) area.add(new Label(&f, 220, pos, 360, 20, \
 | 
				
			||||||
 | 
					             Label::ALIGN_CENTER, Label::ALIGN_MIDDLE, 255,255,c, text));
 | 
				
			||||||
 | 
					@@ -171,7 +171,7 @@
 | 
				
			||||||
 | 
					 void menu()
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     Area area;
 | 
				
			||||||
 | 
					-    Font font(L"laudcn2.ttf", 20);
 | 
				
			||||||
 | 
					+    Font font(L"DejaVuSans.ttf", 20);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     area.add(new MenuBackground());
 | 
				
			||||||
 | 
					     area.draw();
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/mkres/compressor.cpp einstein-2.0/mkres/compressor.cpp
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/mkres/compressor.cpp	2005-08-14 04:40:58.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/mkres/compressor.cpp	2016-03-05 18:26:13.194264129 +0100
 | 
				
			||||||
 | 
					@@ -2,6 +2,7 @@
 | 
				
			||||||
 | 
					 #include <zlib.h>
 | 
				
			||||||
 | 
					 #include "convert.h"
 | 
				
			||||||
 | 
					 #include "exceptions.h"
 | 
				
			||||||
 | 
					+#include "string.h"
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 ResourceCompressor::ResourceCompressor() 
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/mkres/convert.h einstein-2.0/mkres/convert.h
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/mkres/convert.h	2005-08-14 04:40:58.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/mkres/convert.h	2016-03-05 18:25:21.479990669 +0100
 | 
				
			||||||
 | 
					@@ -5,6 +5,7 @@
 | 
				
			||||||
 | 
					 #include <iostream>
 | 
				
			||||||
 | 
					 #include <sstream>
 | 
				
			||||||
 | 
					 #include <string>
 | 
				
			||||||
 | 
					+#include <typeinfo>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #include "exceptions.h"
 | 
				
			||||||
 | 
					 #include "unicode.h"
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/mkres/main.cpp einstein-2.0/mkres/main.cpp
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/mkres/main.cpp	2005-08-14 04:40:58.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/mkres/main.cpp	2016-03-05 18:25:55.062765900 +0100
 | 
				
			||||||
 | 
					@@ -1,5 +1,6 @@
 | 
				
			||||||
 | 
					 #include "compressor.h"
 | 
				
			||||||
 | 
					 #include "exceptions.h"
 | 
				
			||||||
 | 
					+#include "string.h"
 | 
				
			||||||
 | 
					 #include "unicode.h"
 | 
				
			||||||
 | 
					 #include "table.h"
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/mkres/unicode.cpp einstein-2.0/mkres/unicode.cpp
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/mkres/unicode.cpp	2005-08-14 04:40:58.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/mkres/unicode.cpp	2016-03-05 18:26:28.065492890 +0100
 | 
				
			||||||
 | 
					@@ -5,6 +5,7 @@
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					 #include "unicode.h"
 | 
				
			||||||
 | 
					 #include "exceptions.h"
 | 
				
			||||||
 | 
					+#include "string.h"
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 /// Returns length of wide character in utf-8
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/opensave.cpp einstein-2.0/opensave.cpp
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/opensave.cpp	2005-08-14 23:33:36.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/opensave.cpp	2016-03-05 18:29:27.960352230 +0100
 | 
				
			||||||
 | 
					@@ -160,7 +160,7 @@
 | 
				
			||||||
 | 
					 static void showListWindow(SavesList &list, Command **commands,
 | 
				
			||||||
 | 
					         const std::wstring &title, Area &area, Font *font)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-    Font titleFont(L"nova.ttf", 26);
 | 
				
			||||||
 | 
					+    Font titleFont(L"DejaVuSans.ttf", 26);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     area.add(new Window(250, 90, 300, 420, L"blue.bmp"));
 | 
				
			||||||
 | 
					     area.add(new Label(&titleFont, 250, 95, 300, 40, Label::ALIGN_CENTER,
 | 
				
			||||||
 | 
					@@ -189,7 +189,7 @@
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					     Area area;
 | 
				
			||||||
 | 
					     area.add(parentArea, false);
 | 
				
			||||||
 | 
					-    Font font(L"laudcn2.ttf", 14);
 | 
				
			||||||
 | 
					+    Font font(L"DejaVuSans.ttf", 14);
 | 
				
			||||||
 | 
					     bool saved = false;
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					     SavesList list;
 | 
				
			||||||
 | 
					@@ -258,7 +258,7 @@
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					     Area area;
 | 
				
			||||||
 | 
					     area.add(parentArea, false);
 | 
				
			||||||
 | 
					-    Font font(L"laudcn2.ttf", 14);
 | 
				
			||||||
 | 
					+    Font font(L"DejaVuSans.ttf", 14);
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					     Game *newGame = NULL;
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/options.cpp einstein-2.0/options.cpp
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/options.cpp	2005-09-26 12:33:18.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/options.cpp	2016-03-05 18:29:27.960352230 +0100
 | 
				
			||||||
 | 
					@@ -53,8 +53,8 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 void showOptionsWindow(Area *parentArea)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-    Font titleFont(L"nova.ttf", 26);
 | 
				
			||||||
 | 
					-    Font font(L"laudcn2.ttf", 14);
 | 
				
			||||||
 | 
					+    Font titleFont(L"DejaVuSans.ttf", 26);
 | 
				
			||||||
 | 
					+    Font font(L"DejaVuSans.ttf", 14);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     bool fullscreen = (getStorage()->get(L"fullscreen", 1) != 0);
 | 
				
			||||||
 | 
					     bool niceCursor = (getStorage()->get(L"niceCursor", 1) != 0);
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/res/resources.descr einstein-2.0/res/resources.descr
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/res/resources.descr	2005-09-25 22:51:14.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/res/resources.descr	2016-03-05 18:30:08.563704873 +0100
 | 
				
			||||||
 | 
					@@ -89,13 +89,11 @@
 | 
				
			||||||
 | 
					     { name = "title.bmp" }
 | 
				
			||||||
 | 
					     { name = "marble1.bmp" }
 | 
				
			||||||
 | 
					     { name = "blue.bmp" }
 | 
				
			||||||
 | 
					-    { name = "luximb.ttf" }
 | 
				
			||||||
 | 
					     { name = "redpattern.bmp" }
 | 
				
			||||||
 | 
					     { name = "greenpattern.bmp" }
 | 
				
			||||||
 | 
					     { name = "darkpattern.bmp" }
 | 
				
			||||||
 | 
					     { name = "nova.bmp" }
 | 
				
			||||||
 | 
					-    { name = "nova.ttf" }
 | 
				
			||||||
 | 
					-    { name = "laudcn2.ttf" }
 | 
				
			||||||
 | 
					+    { name = "DejaVuSans.ttf" }
 | 
				
			||||||
 | 
					     { name = "btn.bmp" }
 | 
				
			||||||
 | 
					     { name = "rules.txt", format = "messages" group = "messages" }
 | 
				
			||||||
 | 
					     { name = "rules_ru.txt", format = "messages" group = "messages" }
 | 
				
			||||||
 | 
					Only in einstein-2.0/res: resources.descr.orig
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/sound.h einstein-2.0/sound.h
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/sound.h	2005-09-24 08:24:20.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/sound.h	2016-03-05 18:22:19.314931225 +0100
 | 
				
			||||||
 | 
					@@ -4,7 +4,7 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #include <string>
 | 
				
			||||||
 | 
					 #include <map>
 | 
				
			||||||
 | 
					-#include <SDL_mixer.h>
 | 
				
			||||||
 | 
					+#include <SDL/SDL_mixer.h>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 class Sound
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/topscores.cpp einstein-2.0/topscores.cpp
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/topscores.cpp	2005-08-14 23:08:43.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/topscores.cpp	2016-03-05 18:29:27.970353055 +0100
 | 
				
			||||||
 | 
					@@ -103,9 +103,9 @@
 | 
				
			||||||
 | 
					 ScoresWindow::ScoresWindow(int x, int y, TopScores *scores, int highlight): 
 | 
				
			||||||
 | 
					                 Window(x, y, 320, 350, L"blue.bmp")
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-    Font titleFont(L"nova.ttf", 26);
 | 
				
			||||||
 | 
					-    Font entryFont(L"laudcn2.ttf", 14);
 | 
				
			||||||
 | 
					-    Font timeFont(L"luximb.ttf", 14);
 | 
				
			||||||
 | 
					+    Font titleFont(L"DejaVuSans.ttf", 26);
 | 
				
			||||||
 | 
					+    Font entryFont(L"DejaVuSans.ttf", 14);
 | 
				
			||||||
 | 
					+    Font timeFont(L"DejaVuSans.ttf", 14);
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					     std::wstring txt = msg(L"topScores");
 | 
				
			||||||
 | 
					     int w = titleFont.getWidth(txt);
 | 
				
			||||||
 | 
					@@ -139,7 +139,7 @@
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     Area area;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    Font font(L"laudcn2.ttf", 16);
 | 
				
			||||||
 | 
					+    Font font(L"DejaVuSans.ttf", 16);
 | 
				
			||||||
 | 
					     area.add(parentArea);
 | 
				
			||||||
 | 
					     area.add(new ScoresWindow(240, 125, scores, highlight));
 | 
				
			||||||
 | 
					     ExitCommand exitCmd(area);
 | 
				
			||||||
 | 
					@@ -154,7 +154,7 @@
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     Area area;
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					-    Font font(L"laudcn2.ttf", 16);
 | 
				
			||||||
 | 
					+    Font font(L"DejaVuSans.ttf", 16);
 | 
				
			||||||
 | 
					     area.add(parentArea);
 | 
				
			||||||
 | 
					     area.add(new Window(170, 280, 460, 100, L"blue.bmp"));
 | 
				
			||||||
 | 
					     Storage *storage = getStorage();
 | 
				
			||||||
 | 
					diff -r -u einstein-2.0.orig/unicode.cpp einstein-2.0/unicode.cpp
 | 
				
			||||||
 | 
					--- einstein-2.0.orig/unicode.cpp	2005-08-14 04:40:58.000000000 +0200
 | 
				
			||||||
 | 
					+++ einstein-2.0/unicode.cpp	2016-03-05 18:26:55.747780024 +0100
 | 
				
			||||||
 | 
					@@ -5,6 +5,7 @@
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					 #include "unicode.h"
 | 
				
			||||||
 | 
					 #include "exceptions.h"
 | 
				
			||||||
 | 
					+#include "string.h"
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 /// Returns length of wide character in utf-8
 | 
				
			||||||
| 
						 | 
					@ -1,25 +0,0 @@
 | 
				
			||||||
From ed807a40c6683960e357bc995b3acf721ec088b4 Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Sitaram Chamarty <sitaram@atc.tcs.com>
 | 
					 | 
				
			||||||
Date: Thu, 19 Mar 2015 05:17:59 +0530
 | 
					 | 
				
			||||||
Subject: [PATCH] openssh 6.8 compat
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 src/triggers/post-compile/ssh-authkeys | 2 +-
 | 
					 | 
				
			||||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff --git a/src/triggers/post-compile/ssh-authkeys b/src/triggers/post-compile/ssh-authkeys
 | 
					 | 
				
			||||||
index 84dda73..d5f5d8b 100755
 | 
					 | 
				
			||||||
--- a/src/triggers/post-compile/ssh-authkeys
 | 
					 | 
				
			||||||
+++ b/src/triggers/post-compile/ssh-authkeys
 | 
					 | 
				
			||||||
@@ -115,7 +115,7 @@ sub fp_file {
 | 
					 | 
				
			||||||
     my $f  = shift;
 | 
					 | 
				
			||||||
     my $fp = `ssh-keygen -l -f '$f'`;
 | 
					 | 
				
			||||||
     chomp($fp);
 | 
					 | 
				
			||||||
-    _die "fingerprinting failed for '$f'" unless $fp =~ /([0-9a-f][0-9a-f](:[0-9a-f][0-9a-f])+)/;
 | 
					 | 
				
			||||||
+    _die "fingerprinting failed for '$f'" unless $fp =~ /([0-9a-f][0-9a-f](:[0-9a-f][0-9a-f])+)/ or $fp =~ m(SHA256:([A-ZA-z0-9+/]+));
 | 
					 | 
				
			||||||
     $fp = $1;
 | 
					 | 
				
			||||||
     return $fp;
 | 
					 | 
				
			||||||
 }
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
2.2.1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
							
								
								
									
										37
									
								
								gnu/packages/patches/icecat-CVE-2015-4477.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								gnu/packages/patches/icecat-CVE-2015-4477.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,37 @@
 | 
				
			||||||
 | 
					Copied from upstream:
 | 
				
			||||||
 | 
					https://hg.mozilla.org/releases/mozilla-esr38/raw-rev/beae8783b8c2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HG changeset patch
 | 
				
			||||||
 | 
					# User Paul Adenot <paul@paul.cx>
 | 
				
			||||||
 | 
					# Date 1456422965 0
 | 
				
			||||||
 | 
					# Node ID beae8783b8c2c672da12a95c70ae663cbd0d5016
 | 
				
			||||||
 | 
					# Parent  3a606f8182c82480f8f350b622ab55a170ec1eb6
 | 
				
			||||||
 | 
					Bug 1179484. r=roc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MozReview-Commit-ID: HNaYLyMe3sM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/dom/media/webaudio/MediaStreamAudioDestinationNode.cpp b/dom/media/webaudio/MediaStreamAudioDestinationNode.cpp
 | 
				
			||||||
 | 
					--- a/dom/media/webaudio/MediaStreamAudioDestinationNode.cpp
 | 
				
			||||||
 | 
					+++ b/dom/media/webaudio/MediaStreamAudioDestinationNode.cpp
 | 
				
			||||||
 | 
					@@ -69,16 +69,20 @@ MediaStreamAudioDestinationNode::MediaSt
 | 
				
			||||||
 | 
					               ChannelInterpretation::Speakers)
 | 
				
			||||||
 | 
					   , mDOMStream(DOMAudioNodeMediaStream::CreateTrackUnionStream(GetOwner(),
 | 
				
			||||||
 | 
					                                                                this))
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					   TrackUnionStream* tus = static_cast<TrackUnionStream*>(mDOMStream->GetStream());
 | 
				
			||||||
 | 
					   MOZ_ASSERT(tus == mDOMStream->GetStream()->AsProcessedStream());
 | 
				
			||||||
 | 
					   tus->SetTrackIDFilter(FilterAudioNodeStreamTrack);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+  if (aContext->Graph() != tus->Graph()) {
 | 
				
			||||||
 | 
					+    return;
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					   MediaStreamDestinationEngine* engine = new MediaStreamDestinationEngine(this, tus);
 | 
				
			||||||
 | 
					   mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::INTERNAL_STREAM);
 | 
				
			||||||
 | 
					   mPort = tus->AllocateInputPort(mStream, 0);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   nsIDocument* doc = aContext->GetParentObject()->GetExtantDoc();
 | 
				
			||||||
 | 
					   if (doc) {
 | 
				
			||||||
 | 
					     mDOMStream->CombineWithPrincipal(doc->NodePrincipal());
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										1140
									
								
								gnu/packages/patches/icecat-CVE-2015-7207.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1140
									
								
								gnu/packages/patches/icecat-CVE-2015-7207.patch
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										356
									
								
								gnu/packages/patches/icecat-CVE-2016-1952-pt01.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										356
									
								
								gnu/packages/patches/icecat-CVE-2016-1952-pt01.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,356 @@
 | 
				
			||||||
 | 
					Copied from upstream:
 | 
				
			||||||
 | 
					https://hg.mozilla.org/releases/mozilla-esr38/raw-rev/c1d67bd4c993
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HG changeset patch
 | 
				
			||||||
 | 
					# User Timothy Nikkel <tnikkel@gmail.com>
 | 
				
			||||||
 | 
					# Date 1454023801 21600
 | 
				
			||||||
 | 
					# Node ID c1d67bd4c993b9e344c68954e6f0392c82b81e38
 | 
				
			||||||
 | 
					# Parent  530559abe159d3c23f078d673d30ff03d9c244e2
 | 
				
			||||||
 | 
					Bug 1224979 - Check if we compute usable filters for the downscaler, and if not put the downscaler in error state so it's not used. r=edwin, a=al
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/image/Downscaler.cpp b/image/Downscaler.cpp
 | 
				
			||||||
 | 
					new file mode 100644
 | 
				
			||||||
 | 
					--- /dev/null
 | 
				
			||||||
 | 
					+++ b/image/Downscaler.cpp
 | 
				
			||||||
 | 
					@@ -0,0 +1,340 @@
 | 
				
			||||||
 | 
					+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 | 
				
			||||||
 | 
					+ *
 | 
				
			||||||
 | 
					+ * This Source Code Form is subject to the terms of the Mozilla Public
 | 
				
			||||||
 | 
					+ * License, v. 2.0. If a copy of the MPL was not distributed with this
 | 
				
			||||||
 | 
					+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+#include "Downscaler.h"
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+#include <algorithm>
 | 
				
			||||||
 | 
					+#include <ctime>
 | 
				
			||||||
 | 
					+#include "gfxPrefs.h"
 | 
				
			||||||
 | 
					+#include "image_operations.h"
 | 
				
			||||||
 | 
					+#include "mozilla/SSE.h"
 | 
				
			||||||
 | 
					+#include "convolver.h"
 | 
				
			||||||
 | 
					+#include "skia/include/core/SkTypes.h"
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+using std::max;
 | 
				
			||||||
 | 
					+using std::swap;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+namespace mozilla {
 | 
				
			||||||
 | 
					+namespace image {
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+Downscaler::Downscaler(const nsIntSize& aTargetSize)
 | 
				
			||||||
 | 
					+  : mTargetSize(aTargetSize)
 | 
				
			||||||
 | 
					+  , mOutputBuffer(nullptr)
 | 
				
			||||||
 | 
					+  , mXFilter(MakeUnique<skia::ConvolutionFilter1D>())
 | 
				
			||||||
 | 
					+  , mYFilter(MakeUnique<skia::ConvolutionFilter1D>())
 | 
				
			||||||
 | 
					+  , mWindowCapacity(0)
 | 
				
			||||||
 | 
					+  , mHasAlpha(true)
 | 
				
			||||||
 | 
					+  , mFlipVertically(false)
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(gfxPrefs::ImageDownscaleDuringDecodeEnabled(),
 | 
				
			||||||
 | 
					+             "Downscaling even though downscale-during-decode is disabled?");
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(mTargetSize.width > 0 && mTargetSize.height > 0,
 | 
				
			||||||
 | 
					+             "Invalid target size");
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+Downscaler::~Downscaler()
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+  ReleaseWindow();
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+void
 | 
				
			||||||
 | 
					+Downscaler::ReleaseWindow()
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+  if (!mWindow) {
 | 
				
			||||||
 | 
					+    return;
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  for (int32_t i = 0; i < mWindowCapacity; ++i) {
 | 
				
			||||||
 | 
					+    delete[] mWindow[i];
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  mWindow = nullptr;
 | 
				
			||||||
 | 
					+  mWindowCapacity = 0;
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+nsresult
 | 
				
			||||||
 | 
					+Downscaler::BeginFrame(const nsIntSize& aOriginalSize,
 | 
				
			||||||
 | 
					+                       const Maybe<nsIntRect>& aFrameRect,
 | 
				
			||||||
 | 
					+                       uint8_t* aOutputBuffer,
 | 
				
			||||||
 | 
					+                       bool aHasAlpha,
 | 
				
			||||||
 | 
					+                       bool aFlipVertically /* = false */)
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(aOutputBuffer);
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(mTargetSize != aOriginalSize,
 | 
				
			||||||
 | 
					+             "Created a downscaler, but not downscaling?");
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(mTargetSize.width <= aOriginalSize.width,
 | 
				
			||||||
 | 
					+             "Created a downscaler, but width is larger");
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(mTargetSize.height <= aOriginalSize.height,
 | 
				
			||||||
 | 
					+             "Created a downscaler, but height is larger");
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(aOriginalSize.width > 0 && aOriginalSize.height > 0,
 | 
				
			||||||
 | 
					+             "Invalid original size");
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  mFrameRect = aFrameRect.valueOr(nsIntRect(nsIntPoint(), aOriginalSize));
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(mFrameRect.x >= 0 && mFrameRect.y >= 0 &&
 | 
				
			||||||
 | 
					+             mFrameRect.width >= 0 && mFrameRect.height >= 0,
 | 
				
			||||||
 | 
					+             "Frame rect must have non-negative components");
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(nsIntRect(0, 0, aOriginalSize.width, aOriginalSize.height)
 | 
				
			||||||
 | 
					+               .Contains(mFrameRect),
 | 
				
			||||||
 | 
					+             "Frame rect must fit inside image");
 | 
				
			||||||
 | 
					+  MOZ_ASSERT_IF(!nsIntRect(0, 0, aOriginalSize.width, aOriginalSize.height)
 | 
				
			||||||
 | 
					+                  .IsEqualEdges(mFrameRect),
 | 
				
			||||||
 | 
					+                aHasAlpha);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  mOriginalSize = aOriginalSize;
 | 
				
			||||||
 | 
					+  mScale = gfxSize(double(mOriginalSize.width) / mTargetSize.width,
 | 
				
			||||||
 | 
					+                   double(mOriginalSize.height) / mTargetSize.height);
 | 
				
			||||||
 | 
					+  mOutputBuffer = aOutputBuffer;
 | 
				
			||||||
 | 
					+  mHasAlpha = aHasAlpha;
 | 
				
			||||||
 | 
					+  mFlipVertically = aFlipVertically;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  ReleaseWindow();
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  auto resizeMethod = skia::ImageOperations::RESIZE_LANCZOS3;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  skia::resize::ComputeFilters(resizeMethod,
 | 
				
			||||||
 | 
					+                               mOriginalSize.width, mTargetSize.width,
 | 
				
			||||||
 | 
					+                               0, mTargetSize.width,
 | 
				
			||||||
 | 
					+                               mXFilter.get());
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  if (mXFilter->max_filter() <= 0 || mXFilter->num_values() != mTargetSize.width) {
 | 
				
			||||||
 | 
					+    NS_WARNING("Failed to compute filters for image downscaling");
 | 
				
			||||||
 | 
					+    return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  skia::resize::ComputeFilters(resizeMethod,
 | 
				
			||||||
 | 
					+                               mOriginalSize.height, mTargetSize.height,
 | 
				
			||||||
 | 
					+                               0, mTargetSize.height,
 | 
				
			||||||
 | 
					+                               mYFilter.get());
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  if (mYFilter->max_filter() <= 0 || mYFilter->num_values() != mTargetSize.height) {
 | 
				
			||||||
 | 
					+    NS_WARNING("Failed to compute filters for image downscaling");
 | 
				
			||||||
 | 
					+    return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  // Allocate the buffer, which contains scanlines of the original image.
 | 
				
			||||||
 | 
					+  // pad by 15 to handle overreads by the simd code
 | 
				
			||||||
 | 
					+  size_t bufferLen = mOriginalSize.width * sizeof(uint32_t) + 15;
 | 
				
			||||||
 | 
					+  mRowBuffer.reset(new (fallible) uint8_t[bufferLen]);
 | 
				
			||||||
 | 
					+  if (MOZ_UNLIKELY(!mRowBuffer)) {
 | 
				
			||||||
 | 
					+    return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  // Zero buffer to keep valgrind happy.
 | 
				
			||||||
 | 
					+  memset(mRowBuffer.get(), 0, bufferLen);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  // Allocate the window, which contains horizontally downscaled scanlines. (We
 | 
				
			||||||
 | 
					+  // can store scanlines which are already downscale because our downscaling
 | 
				
			||||||
 | 
					+  // filter is separable.)
 | 
				
			||||||
 | 
					+  mWindowCapacity = mYFilter->max_filter();
 | 
				
			||||||
 | 
					+  mWindow.reset(new (fallible) uint8_t*[mWindowCapacity]);
 | 
				
			||||||
 | 
					+  if (MOZ_UNLIKELY(!mWindow)) {
 | 
				
			||||||
 | 
					+    return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  bool anyAllocationFailed = false;
 | 
				
			||||||
 | 
					+  // pad by 15 to handle overreads by the simd code
 | 
				
			||||||
 | 
					+  const int rowSize = mTargetSize.width * sizeof(uint32_t) + 15;
 | 
				
			||||||
 | 
					+  for (int32_t i = 0; i < mWindowCapacity; ++i) {
 | 
				
			||||||
 | 
					+    mWindow[i] = new (fallible) uint8_t[rowSize];
 | 
				
			||||||
 | 
					+    anyAllocationFailed = anyAllocationFailed || mWindow[i] == nullptr;
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  if (MOZ_UNLIKELY(anyAllocationFailed)) {
 | 
				
			||||||
 | 
					+    // We intentionally iterate through the entire array even if an allocation
 | 
				
			||||||
 | 
					+    // fails, to ensure that all the pointers in it are either valid or nullptr.
 | 
				
			||||||
 | 
					+    // That in turn ensures that ReleaseWindow() can clean up correctly.
 | 
				
			||||||
 | 
					+    return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  ResetForNextProgressivePass();
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  return NS_OK;
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+void
 | 
				
			||||||
 | 
					+Downscaler::SkipToRow(int32_t aRow)
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+  if (mCurrentInLine < aRow) {
 | 
				
			||||||
 | 
					+    ClearRow();
 | 
				
			||||||
 | 
					+    do {
 | 
				
			||||||
 | 
					+      CommitRow();
 | 
				
			||||||
 | 
					+    } while (mCurrentInLine < aRow);
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+void
 | 
				
			||||||
 | 
					+Downscaler::ResetForNextProgressivePass()
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+  mPrevInvalidatedLine = 0;
 | 
				
			||||||
 | 
					+  mCurrentOutLine = 0;
 | 
				
			||||||
 | 
					+  mCurrentInLine = 0;
 | 
				
			||||||
 | 
					+  mLinesInBuffer = 0;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  if (mFrameRect.IsEmpty()) {
 | 
				
			||||||
 | 
					+    // Our frame rect is zero size; commit rows until the end of the image.
 | 
				
			||||||
 | 
					+    SkipToRow(mOriginalSize.height - 1);
 | 
				
			||||||
 | 
					+  } else {
 | 
				
			||||||
 | 
					+    // If we have a vertical offset, commit rows to shift us past it.
 | 
				
			||||||
 | 
					+    SkipToRow(mFrameRect.y);
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+static void
 | 
				
			||||||
 | 
					+GetFilterOffsetAndLength(UniquePtr<skia::ConvolutionFilter1D>& aFilter,
 | 
				
			||||||
 | 
					+                         int32_t aOutputImagePosition,
 | 
				
			||||||
 | 
					+                         int32_t* aFilterOffsetOut,
 | 
				
			||||||
 | 
					+                         int32_t* aFilterLengthOut)
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(aOutputImagePosition < aFilter->num_values());
 | 
				
			||||||
 | 
					+  aFilter->FilterForValue(aOutputImagePosition,
 | 
				
			||||||
 | 
					+                          aFilterOffsetOut,
 | 
				
			||||||
 | 
					+                          aFilterLengthOut);
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+void
 | 
				
			||||||
 | 
					+Downscaler::ClearRow(uint32_t aStartingAtCol)
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(int64_t(mOriginalSize.width) > int64_t(aStartingAtCol));
 | 
				
			||||||
 | 
					+  uint32_t bytesToClear = (mOriginalSize.width - aStartingAtCol)
 | 
				
			||||||
 | 
					+                        * sizeof(uint32_t);
 | 
				
			||||||
 | 
					+  memset(mRowBuffer.get() + (aStartingAtCol * sizeof(uint32_t)),
 | 
				
			||||||
 | 
					+         0, bytesToClear);
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+void
 | 
				
			||||||
 | 
					+Downscaler::CommitRow()
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(mOutputBuffer, "Should have a current frame");
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(mCurrentInLine < mOriginalSize.height, "Past end of input");
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  if (mCurrentOutLine < mTargetSize.height) {
 | 
				
			||||||
 | 
					+    int32_t filterOffset = 0;
 | 
				
			||||||
 | 
					+    int32_t filterLength = 0;
 | 
				
			||||||
 | 
					+    GetFilterOffsetAndLength(mYFilter, mCurrentOutLine,
 | 
				
			||||||
 | 
					+                             &filterOffset, &filterLength);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    int32_t inLineToRead = filterOffset + mLinesInBuffer;
 | 
				
			||||||
 | 
					+    MOZ_ASSERT(mCurrentInLine <= inLineToRead, "Reading past end of input");
 | 
				
			||||||
 | 
					+    if (mCurrentInLine == inLineToRead) {
 | 
				
			||||||
 | 
					+      skia::ConvolveHorizontally(mRowBuffer.get(), *mXFilter,
 | 
				
			||||||
 | 
					+                                 mWindow[mLinesInBuffer++], mHasAlpha,
 | 
				
			||||||
 | 
					+                                 supports_sse2());
 | 
				
			||||||
 | 
					+    }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    MOZ_ASSERT(mCurrentOutLine < mTargetSize.height,
 | 
				
			||||||
 | 
					+               "Writing past end of output");
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    while (mLinesInBuffer == filterLength) {
 | 
				
			||||||
 | 
					+      DownscaleInputLine();
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+      if (mCurrentOutLine == mTargetSize.height) {
 | 
				
			||||||
 | 
					+        break;  // We're done.
 | 
				
			||||||
 | 
					+      }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+      GetFilterOffsetAndLength(mYFilter, mCurrentOutLine,
 | 
				
			||||||
 | 
					+                               &filterOffset, &filterLength);
 | 
				
			||||||
 | 
					+    }
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  mCurrentInLine += 1;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  // If we're at the end of the part of the original image that has data, commit
 | 
				
			||||||
 | 
					+  // rows to shift us to the end.
 | 
				
			||||||
 | 
					+  if (mCurrentInLine == (mFrameRect.y + mFrameRect.height)) {
 | 
				
			||||||
 | 
					+    SkipToRow(mOriginalSize.height - 1);
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+bool
 | 
				
			||||||
 | 
					+Downscaler::HasInvalidation() const
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+  return mCurrentOutLine > mPrevInvalidatedLine;
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+DownscalerInvalidRect
 | 
				
			||||||
 | 
					+Downscaler::TakeInvalidRect()
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+  if (MOZ_UNLIKELY(!HasInvalidation())) {
 | 
				
			||||||
 | 
					+    return DownscalerInvalidRect();
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  DownscalerInvalidRect invalidRect;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  // Compute the target size invalid rect.
 | 
				
			||||||
 | 
					+  if (mFlipVertically) {
 | 
				
			||||||
 | 
					+    // We need to flip it. This will implicitly flip the original size invalid
 | 
				
			||||||
 | 
					+    // rect, since we compute it by scaling this rect.
 | 
				
			||||||
 | 
					+    invalidRect.mTargetSizeRect =
 | 
				
			||||||
 | 
					+      IntRect(0, mTargetSize.height - mCurrentOutLine,
 | 
				
			||||||
 | 
					+              mTargetSize.width, mCurrentOutLine - mPrevInvalidatedLine);
 | 
				
			||||||
 | 
					+  } else {
 | 
				
			||||||
 | 
					+    invalidRect.mTargetSizeRect =
 | 
				
			||||||
 | 
					+      IntRect(0, mPrevInvalidatedLine,
 | 
				
			||||||
 | 
					+              mTargetSize.width, mCurrentOutLine - mPrevInvalidatedLine);
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  mPrevInvalidatedLine = mCurrentOutLine;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  // Compute the original size invalid rect.
 | 
				
			||||||
 | 
					+  invalidRect.mOriginalSizeRect = invalidRect.mTargetSizeRect;
 | 
				
			||||||
 | 
					+  invalidRect.mOriginalSizeRect.ScaleRoundOut(mScale.width, mScale.height);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  return invalidRect;
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+void
 | 
				
			||||||
 | 
					+Downscaler::DownscaleInputLine()
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+  typedef skia::ConvolutionFilter1D::Fixed FilterValue;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(mOutputBuffer);
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(mCurrentOutLine < mTargetSize.height,
 | 
				
			||||||
 | 
					+             "Writing past end of output");
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  int32_t filterOffset = 0;
 | 
				
			||||||
 | 
					+  int32_t filterLength = 0;
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(mCurrentOutLine < mYFilter->num_values());
 | 
				
			||||||
 | 
					+  auto filterValues =
 | 
				
			||||||
 | 
					+    mYFilter->FilterForValue(mCurrentOutLine, &filterOffset, &filterLength);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  int32_t currentOutLine = mFlipVertically
 | 
				
			||||||
 | 
					+                         ? mTargetSize.height - (mCurrentOutLine + 1)
 | 
				
			||||||
 | 
					+                         : mCurrentOutLine;
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(currentOutLine >= 0);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  uint8_t* outputLine =
 | 
				
			||||||
 | 
					+    &mOutputBuffer[currentOutLine * mTargetSize.width * sizeof(uint32_t)];
 | 
				
			||||||
 | 
					+  skia::ConvolveVertically(static_cast<const FilterValue*>(filterValues),
 | 
				
			||||||
 | 
					+                           filterLength, mWindow.get(), mXFilter->num_values(),
 | 
				
			||||||
 | 
					+                           outputLine, mHasAlpha, supports_sse2());
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  mCurrentOutLine += 1;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  if (mCurrentOutLine == mTargetSize.height) {
 | 
				
			||||||
 | 
					+    // We're done.
 | 
				
			||||||
 | 
					+    return;
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  int32_t newFilterOffset = 0;
 | 
				
			||||||
 | 
					+  int32_t newFilterLength = 0;
 | 
				
			||||||
 | 
					+  GetFilterOffsetAndLength(mYFilter, mCurrentOutLine,
 | 
				
			||||||
 | 
					+                           &newFilterOffset, &newFilterLength);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  int diff = newFilterOffset - filterOffset;
 | 
				
			||||||
 | 
					+  MOZ_ASSERT(diff >= 0, "Moving backwards in the filter?");
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  // Shift the buffer. We're just moving pointers here, so this is cheap.
 | 
				
			||||||
 | 
					+  mLinesInBuffer -= diff;
 | 
				
			||||||
 | 
					+  mLinesInBuffer = max(mLinesInBuffer, 0);
 | 
				
			||||||
 | 
					+  for (int32_t i = 0; i < mLinesInBuffer; ++i) {
 | 
				
			||||||
 | 
					+    swap(mWindow[i], mWindow[filterLength - mLinesInBuffer + i]);
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+} // namespace image
 | 
				
			||||||
 | 
					+} // namespace mozilla
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										58
									
								
								gnu/packages/patches/icecat-CVE-2016-1952-pt02.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								gnu/packages/patches/icecat-CVE-2016-1952-pt02.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,58 @@
 | 
				
			||||||
 | 
					Copied from upstream:
 | 
				
			||||||
 | 
					https://hg.mozilla.org/releases/mozilla-esr38/raw-rev/9719b71d72dd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HG changeset patch
 | 
				
			||||||
 | 
					# User Byron Campen [:bwc] <docfaraday@gmail.com>
 | 
				
			||||||
 | 
					# Date 1454100887 21600
 | 
				
			||||||
 | 
					# Node ID 9719b71d72dd2a3c5ee12ace156af2a63d9595ac
 | 
				
			||||||
 | 
					# Parent  b68673d974a10f65390f80b36d4307eb31e44669
 | 
				
			||||||
 | 
					Bug 1234578 - Assert if PCM is destroyed improperly. r=rjesup, a=sylvestre
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/media/webrtc/signaling/src/peerconnection/PeerConnectionMedia.cpp b/media/webrtc/signaling/src/peerconnection/PeerConnectionMedia.cpp
 | 
				
			||||||
 | 
					--- a/media/webrtc/signaling/src/peerconnection/PeerConnectionMedia.cpp
 | 
				
			||||||
 | 
					+++ b/media/webrtc/signaling/src/peerconnection/PeerConnectionMedia.cpp
 | 
				
			||||||
 | 
					@@ -712,16 +712,18 @@ PeerConnectionMedia::SelfDestruct_m()
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					   CSFLogDebug(logTag, "%s: ", __FUNCTION__);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   ASSERT_ON_THREAD(mMainThread);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   mLocalSourceStreams.Clear();
 | 
				
			||||||
 | 
					   mRemoteSourceStreams.Clear();
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+  mMainThread = nullptr;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					   // Final self-destruct.
 | 
				
			||||||
 | 
					   this->Release();
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 void
 | 
				
			||||||
 | 
					 PeerConnectionMedia::ShutdownMediaTransport_s()
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					   ASSERT_ON_THREAD(mSTSThread);
 | 
				
			||||||
 | 
					diff --git a/media/webrtc/signaling/src/peerconnection/PeerConnectionMedia.h b/media/webrtc/signaling/src/peerconnection/PeerConnectionMedia.h
 | 
				
			||||||
 | 
					--- a/media/webrtc/signaling/src/peerconnection/PeerConnectionMedia.h
 | 
				
			||||||
 | 
					+++ b/media/webrtc/signaling/src/peerconnection/PeerConnectionMedia.h
 | 
				
			||||||
 | 
					@@ -210,17 +210,20 @@ class RemoteSourceStreamInfo : public So
 | 
				
			||||||
 | 
					   std::vector<std::string> mTrackIdMap;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   // True iff SetPullEnabled(true) has been called on the DOMMediaStream. This
 | 
				
			||||||
 | 
					   // happens when offer/answer concludes.
 | 
				
			||||||
 | 
					   bool mReceiving;
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 class PeerConnectionMedia : public sigslot::has_slots<> {
 | 
				
			||||||
 | 
					-  ~PeerConnectionMedia() {}
 | 
				
			||||||
 | 
					+  ~PeerConnectionMedia()
 | 
				
			||||||
 | 
					+  {
 | 
				
			||||||
 | 
					+    MOZ_RELEASE_ASSERT(!mMainThread);
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					  public:
 | 
				
			||||||
 | 
					   explicit PeerConnectionMedia(PeerConnectionImpl *parent);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   PeerConnectionImpl* GetPC() { return mParent; }
 | 
				
			||||||
 | 
					   nsresult Init(const std::vector<NrIceStunServer>& stun_servers,
 | 
				
			||||||
 | 
					                 const std::vector<NrIceTurnServer>& turn_servers);
 | 
				
			||||||
 | 
					   // WARNING: This destroys the object!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										60
									
								
								gnu/packages/patches/icecat-CVE-2016-1952-pt03.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								gnu/packages/patches/icecat-CVE-2016-1952-pt03.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,60 @@
 | 
				
			||||||
 | 
					Copied from upstream:
 | 
				
			||||||
 | 
					https://hg.mozilla.org/releases/mozilla-esr38/raw-rev/2839062f84fb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HG changeset patch
 | 
				
			||||||
 | 
					# User Jan de Mooij <jdemooij@mozilla.com>
 | 
				
			||||||
 | 
					# Date 1455119320 -3600
 | 
				
			||||||
 | 
					# Node ID 2839062f84fb6cba2781ea8d59150f13d4813ddc
 | 
				
			||||||
 | 
					# Parent  185b233ea03f3811404e3979b65ec86b29d13555
 | 
				
			||||||
 | 
					Bug 1242279 - r=bhackett1024 a=sylvestre
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/js/src/vm/TypeInference.cpp b/js/src/vm/TypeInference.cpp
 | 
				
			||||||
 | 
					--- a/js/src/vm/TypeInference.cpp
 | 
				
			||||||
 | 
					+++ b/js/src/vm/TypeInference.cpp
 | 
				
			||||||
 | 
					@@ -3961,16 +3961,22 @@ JSScript::maybeSweepTypes(AutoClearTypeI
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     unsigned num = TypeScript::NumTypeSets(this);
 | 
				
			||||||
 | 
					     StackTypeSet* typeArray = types_->typeArray();
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     // Remove constraints and references to dead objects from stack type sets.
 | 
				
			||||||
 | 
					     for (unsigned i = 0; i < num; i++)
 | 
				
			||||||
 | 
					         typeArray[i].sweep(zone(), *oom);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+    if (oom->hadOOM()) {
 | 
				
			||||||
 | 
					+        // It's possible we OOM'd while copying freeze constraints, so they
 | 
				
			||||||
 | 
					+        // need to be regenerated.
 | 
				
			||||||
 | 
					+        hasFreezeConstraints_ = false;
 | 
				
			||||||
 | 
					+    }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					     // Update the recompile indexes in any IonScripts still on the script.
 | 
				
			||||||
 | 
					     if (hasIonScript())
 | 
				
			||||||
 | 
					         ionScript()->recompileInfoRef().shouldSweep(types);
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 void
 | 
				
			||||||
 | 
					 TypeScript::destroy()
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					diff --git a/js/src/vm/TypeInference.h b/js/src/vm/TypeInference.h
 | 
				
			||||||
 | 
					--- a/js/src/vm/TypeInference.h
 | 
				
			||||||
 | 
					+++ b/js/src/vm/TypeInference.h
 | 
				
			||||||
 | 
					@@ -566,16 +566,19 @@ class AutoClearTypeInferenceStateOnOOM
 | 
				
			||||||
 | 
					       : zone(zone), oom(false)
 | 
				
			||||||
 | 
					     {}
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     ~AutoClearTypeInferenceStateOnOOM();
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     void setOOM() {
 | 
				
			||||||
 | 
					         oom = true;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					+    bool hadOOM() const {
 | 
				
			||||||
 | 
					+        return oom;
 | 
				
			||||||
 | 
					+    }
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 /* Superclass common to stack and heap type sets. */
 | 
				
			||||||
 | 
					 class ConstraintTypeSet : public TypeSet
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					   public:
 | 
				
			||||||
 | 
					     /* Chain of constraints which propagate changes out from this type set. */
 | 
				
			||||||
 | 
					     TypeConstraint* constraintList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										53
									
								
								gnu/packages/patches/icecat-CVE-2016-1952-pt04.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								gnu/packages/patches/icecat-CVE-2016-1952-pt04.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,53 @@
 | 
				
			||||||
 | 
					Copied from upstream:
 | 
				
			||||||
 | 
					https://hg.mozilla.org/releases/mozilla-esr38/raw-rev/9dd60e798819
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HG changeset patch
 | 
				
			||||||
 | 
					# User Olli Pettay <bugs@pettay.fi>
 | 
				
			||||||
 | 
					# Date 1455204078 -3600
 | 
				
			||||||
 | 
					# Node ID 9dd60e798819fe2ebf1e5bd36aa9006ecd2f82c9
 | 
				
			||||||
 | 
					# Parent  c1d67bd4c993b9e344c68954e6f0392c82b81e38
 | 
				
			||||||
 | 
					Bug 1244250 - r=mats, a=al
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/layout/style/nsAnimationManager.cpp b/layout/style/nsAnimationManager.cpp
 | 
				
			||||||
 | 
					--- a/layout/style/nsAnimationManager.cpp
 | 
				
			||||||
 | 
					+++ b/layout/style/nsAnimationManager.cpp
 | 
				
			||||||
 | 
					@@ -715,16 +715,17 @@ nsAnimationManager::FlushAnimations(Flus
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   DispatchEvents(); // may destroy us
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 void
 | 
				
			||||||
 | 
					 nsAnimationManager::DoDispatchEvents()
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					+  nsRefPtr<nsAnimationManager> kungFuDeathGrip(this);
 | 
				
			||||||
 | 
					   EventArray events;
 | 
				
			||||||
 | 
					   mPendingEvents.SwapElements(events);
 | 
				
			||||||
 | 
					   for (uint32_t i = 0, i_end = events.Length(); i < i_end; ++i) {
 | 
				
			||||||
 | 
					     AnimationEventInfo &info = events[i];
 | 
				
			||||||
 | 
					     EventDispatcher::Dispatch(info.mElement, mPresContext, &info.mEvent);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     if (!mPresContext) {
 | 
				
			||||||
 | 
					       break;
 | 
				
			||||||
 | 
					diff --git a/layout/style/nsTransitionManager.cpp b/layout/style/nsTransitionManager.cpp
 | 
				
			||||||
 | 
					--- a/layout/style/nsTransitionManager.cpp
 | 
				
			||||||
 | 
					+++ b/layout/style/nsTransitionManager.cpp
 | 
				
			||||||
 | 
					@@ -753,16 +753,17 @@ nsTransitionManager::FlushTransitions(Fl
 | 
				
			||||||
 | 
					       }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   if (didThrottle) {
 | 
				
			||||||
 | 
					     mPresContext->Document()->SetNeedStyleFlush();
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+  nsRefPtr<nsTransitionManager> kungFuDeathGrip(this);
 | 
				
			||||||
 | 
					   for (uint32_t i = 0, i_end = events.Length(); i < i_end; ++i) {
 | 
				
			||||||
 | 
					     TransitionEventInfo &info = events[i];
 | 
				
			||||||
 | 
					     EventDispatcher::Dispatch(info.mElement, mPresContext, &info.mEvent);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     if (!mPresContext) {
 | 
				
			||||||
 | 
					       break;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										32
									
								
								gnu/packages/patches/icecat-CVE-2016-1952-pt05.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								gnu/packages/patches/icecat-CVE-2016-1952-pt05.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,32 @@
 | 
				
			||||||
 | 
					Copied from upstream:
 | 
				
			||||||
 | 
					https://hg.mozilla.org/releases/mozilla-esr38/raw-rev/1dd0ca8e70bd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HG changeset patch
 | 
				
			||||||
 | 
					# User Nicolas B. Pierron <nicolas.b.pierron@mozilla.com>
 | 
				
			||||||
 | 
					# Date 1456161361 0
 | 
				
			||||||
 | 
					# Node ID 1dd0ca8e70bd77b6fd93f36cc4e9c2cebfe8ba0a
 | 
				
			||||||
 | 
					# Parent  95ff874886905ef46a7bbc760981d15ad0831096
 | 
				
			||||||
 | 
					Bug 1221872 - ValueNumbering: Set the dominator index of fixup blocks when they are created. r=sunfish, a=ritu
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/js/src/jit/ValueNumbering.cpp b/js/src/jit/ValueNumbering.cpp
 | 
				
			||||||
 | 
					--- a/js/src/jit/ValueNumbering.cpp
 | 
				
			||||||
 | 
					+++ b/js/src/jit/ValueNumbering.cpp
 | 
				
			||||||
 | 
					@@ -433,16 +433,17 @@ ValueNumberer::fixupOSROnlyLoop(MBasicBl
 | 
				
			||||||
 | 
					     MBasicBlock* fake = MBasicBlock::NewAsmJS(graph_, block->info(),
 | 
				
			||||||
 | 
					                                               nullptr, MBasicBlock::NORMAL);
 | 
				
			||||||
 | 
					     if (fake == nullptr)
 | 
				
			||||||
 | 
					         return false;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     graph_.insertBlockBefore(block, fake);
 | 
				
			||||||
 | 
					     fake->setImmediateDominator(fake);
 | 
				
			||||||
 | 
					     fake->addNumDominated(1);
 | 
				
			||||||
 | 
					+    fake->setDomIndex(fake->id());
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     // Create zero-input phis to use as inputs for any phis in |block|.
 | 
				
			||||||
 | 
					     // Again, this is a little odd, but it's the least-odd thing we can do
 | 
				
			||||||
 | 
					     // without significant complexity.
 | 
				
			||||||
 | 
					     for (MPhiIterator iter(block->phisBegin()), end(block->phisEnd()); iter != end; ++iter) {
 | 
				
			||||||
 | 
					         MPhi* phi = *iter;
 | 
				
			||||||
 | 
					         MPhi* fakePhi = MPhi::New(graph_.alloc(), phi->type());
 | 
				
			||||||
 | 
					         fake->addPhi(fakePhi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										103
									
								
								gnu/packages/patches/icecat-CVE-2016-1952-pt06.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								gnu/packages/patches/icecat-CVE-2016-1952-pt06.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,103 @@
 | 
				
			||||||
 | 
					Copied from upstream:
 | 
				
			||||||
 | 
					https://hg.mozilla.org/releases/mozilla-esr38/raw-rev/6f4d51302387
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HG changeset patch
 | 
				
			||||||
 | 
					# User Andrew McCreight <continuation@gmail.com>
 | 
				
			||||||
 | 
					# Date 1456273423 28800
 | 
				
			||||||
 | 
					# Node ID 6f4d5130238790fa5810c76ffeb9eccc65efa8c9
 | 
				
			||||||
 | 
					# Parent  70f6c59d9d73a5edefd216b48ca74a931da12cf1
 | 
				
			||||||
 | 
					Bug 1249685 - Use more nsCOMPtrs for stack variables in DOM code. r=smaug, a=ritu
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/dom/base/nsRange.cpp b/dom/base/nsRange.cpp
 | 
				
			||||||
 | 
					--- a/dom/base/nsRange.cpp
 | 
				
			||||||
 | 
					+++ b/dom/base/nsRange.cpp
 | 
				
			||||||
 | 
					@@ -1985,17 +1985,17 @@ nsRange::CutContents(DocumentFragment** 
 | 
				
			||||||
 | 
					       rv = closestAncestor ? PrependChild(closestAncestor, nodeToResult)
 | 
				
			||||||
 | 
					                            : PrependChild(commonCloneAncestor, nodeToResult);
 | 
				
			||||||
 | 
					       NS_ENSURE_SUCCESS(rv, rv);
 | 
				
			||||||
 | 
					       NS_ENSURE_STATE(!guard.Mutated(parent ? 2 : 1) ||
 | 
				
			||||||
 | 
					                       ValidateCurrentNode(this, iter));
 | 
				
			||||||
 | 
					     } else if (nodeToResult) {
 | 
				
			||||||
 | 
					       nsMutationGuard guard;
 | 
				
			||||||
 | 
					       nsCOMPtr<nsINode> node = nodeToResult;
 | 
				
			||||||
 | 
					-      nsINode* parent = node->GetParentNode();
 | 
				
			||||||
 | 
					+      nsCOMPtr<nsINode> parent = node->GetParentNode();
 | 
				
			||||||
 | 
					       if (parent) {
 | 
				
			||||||
 | 
					         mozilla::ErrorResult error;
 | 
				
			||||||
 | 
					         parent->RemoveChild(*node, error);
 | 
				
			||||||
 | 
					         NS_ENSURE_FALSE(error.Failed(), error.ErrorCode());
 | 
				
			||||||
 | 
					       }
 | 
				
			||||||
 | 
					       NS_ENSURE_STATE(!guard.Mutated(1) ||
 | 
				
			||||||
 | 
					                       ValidateCurrentNode(this, iter));
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					diff --git a/dom/base/nsTreeSanitizer.cpp b/dom/base/nsTreeSanitizer.cpp
 | 
				
			||||||
 | 
					--- a/dom/base/nsTreeSanitizer.cpp
 | 
				
			||||||
 | 
					+++ b/dom/base/nsTreeSanitizer.cpp
 | 
				
			||||||
 | 
					@@ -1423,18 +1423,18 @@ nsTreeSanitizer::SanitizeChildren(nsINod
 | 
				
			||||||
 | 
					                              mAllowStyles,
 | 
				
			||||||
 | 
					                              false);
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					         node = node->GetNextNonChildNode(aRoot);
 | 
				
			||||||
 | 
					         continue;
 | 
				
			||||||
 | 
					       }
 | 
				
			||||||
 | 
					       if (MustFlatten(ns, localName)) {
 | 
				
			||||||
 | 
					         RemoveAllAttributes(node);
 | 
				
			||||||
 | 
					-        nsIContent* next = node->GetNextNode(aRoot);
 | 
				
			||||||
 | 
					-        nsIContent* parent = node->GetParent();
 | 
				
			||||||
 | 
					+        nsCOMPtr<nsIContent> next = node->GetNextNode(aRoot);
 | 
				
			||||||
 | 
					+        nsCOMPtr<nsIContent> parent = node->GetParent();
 | 
				
			||||||
 | 
					         nsCOMPtr<nsIContent> child; // Must keep the child alive during move
 | 
				
			||||||
 | 
					         ErrorResult rv;
 | 
				
			||||||
 | 
					         while ((child = node->GetFirstChild())) {
 | 
				
			||||||
 | 
					           parent->InsertBefore(*child, node, rv);
 | 
				
			||||||
 | 
					           if (rv.Failed()) {
 | 
				
			||||||
 | 
					             break;
 | 
				
			||||||
 | 
					           }
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					diff --git a/dom/html/HTMLSelectElement.cpp b/dom/html/HTMLSelectElement.cpp
 | 
				
			||||||
 | 
					--- a/dom/html/HTMLSelectElement.cpp
 | 
				
			||||||
 | 
					+++ b/dom/html/HTMLSelectElement.cpp
 | 
				
			||||||
 | 
					@@ -624,17 +624,17 @@ HTMLSelectElement::Add(nsGenericHTMLElem
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					   if (!aBefore) {
 | 
				
			||||||
 | 
					     Element::AppendChild(aElement, aError);
 | 
				
			||||||
 | 
					     return;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   // Just in case we're not the parent, get the parent of the reference
 | 
				
			||||||
 | 
					   // element
 | 
				
			||||||
 | 
					-  nsINode* parent = aBefore->Element::GetParentNode();
 | 
				
			||||||
 | 
					+  nsCOMPtr<nsINode> parent = aBefore->Element::GetParentNode();
 | 
				
			||||||
 | 
					   if (!parent || !nsContentUtils::ContentIsDescendantOf(parent, this)) {
 | 
				
			||||||
 | 
					     // NOT_FOUND_ERR: Raised if before is not a descendant of the SELECT
 | 
				
			||||||
 | 
					     // element.
 | 
				
			||||||
 | 
					     aError.Throw(NS_ERROR_DOM_NOT_FOUND_ERR);
 | 
				
			||||||
 | 
					     return;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   // If the before parameter is not null, we are equivalent to the
 | 
				
			||||||
 | 
					diff --git a/dom/html/HTMLTableElement.cpp b/dom/html/HTMLTableElement.cpp
 | 
				
			||||||
 | 
					--- a/dom/html/HTMLTableElement.cpp
 | 
				
			||||||
 | 
					+++ b/dom/html/HTMLTableElement.cpp
 | 
				
			||||||
 | 
					@@ -516,18 +516,18 @@ HTMLTableElement::InsertRow(int32_t aInd
 | 
				
			||||||
 | 
					   if (rowCount > 0) {
 | 
				
			||||||
 | 
					     if (refIndex == rowCount || aIndex == -1) {
 | 
				
			||||||
 | 
					       // we set refIndex to the last row so we can get the last row's
 | 
				
			||||||
 | 
					       // parent we then do an AppendChild below if (rowCount<aIndex)
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					       refIndex = rowCount - 1;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    Element* refRow = rows->Item(refIndex);
 | 
				
			||||||
 | 
					-    nsINode* parent = refRow->GetParentNode();
 | 
				
			||||||
 | 
					+    RefPtr<Element> refRow = rows->Item(refIndex);
 | 
				
			||||||
 | 
					+    nsCOMPtr<nsINode> parent = refRow->GetParentNode();
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     // create the row
 | 
				
			||||||
 | 
					     nsRefPtr<mozilla::dom::NodeInfo> nodeInfo;
 | 
				
			||||||
 | 
					     nsContentUtils::NameChanged(mNodeInfo, nsGkAtoms::tr,
 | 
				
			||||||
 | 
					                                 getter_AddRefs(nodeInfo));
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     newRow = NS_NewHTMLTableRowElement(nodeInfo.forget());
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										32
									
								
								gnu/packages/patches/icecat-CVE-2016-1954.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								gnu/packages/patches/icecat-CVE-2016-1954.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,32 @@
 | 
				
			||||||
 | 
					Copied from upstream:
 | 
				
			||||||
 | 
					https://hg.mozilla.org/releases/mozilla-esr38/raw-rev/a5c4c18849b4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HG changeset patch
 | 
				
			||||||
 | 
					# User Christoph Kerschbaumer <mozilla@christophkerschbaumer.com>
 | 
				
			||||||
 | 
					# Date 1456157874 28800
 | 
				
			||||||
 | 
					# Node ID a5c4c18849b486ef8693e20421b69239a2cbe574
 | 
				
			||||||
 | 
					# Parent  e93aeb25e2a44df8d22f5a065b4410620e2c8730
 | 
				
			||||||
 | 
					Bug 1243178: CSP - Skip sending reports for non http schemes (r=dveditz) a=ritu
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/dom/security/nsCSPContext.cpp b/dom/security/nsCSPContext.cpp
 | 
				
			||||||
 | 
					--- a/dom/security/nsCSPContext.cpp
 | 
				
			||||||
 | 
					+++ b/dom/security/nsCSPContext.cpp
 | 
				
			||||||
 | 
					@@ -798,16 +798,17 @@ nsCSPContext::SendReports(nsISupports* a
 | 
				
			||||||
 | 
					       (NS_SUCCEEDED(reportURI->SchemeIs("https", &isHttpScheme)) && isHttpScheme);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     if (!isHttpScheme) {
 | 
				
			||||||
 | 
					       const char16_t* params[] = { reportURIs[r].get() };
 | 
				
			||||||
 | 
					       CSP_LogLocalizedStr(NS_LITERAL_STRING("reportURInotHttpsOrHttp2").get(),
 | 
				
			||||||
 | 
					                           params, ArrayLength(params),
 | 
				
			||||||
 | 
					                           aSourceFile, aScriptSample, aLineNum, 0,
 | 
				
			||||||
 | 
					                           nsIScriptError::errorFlag, "CSP", mInnerWindowID);
 | 
				
			||||||
 | 
					+      continue;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     // make sure this is an anonymous request (no cookies) so in case the
 | 
				
			||||||
 | 
					     // policy URI is injected, it can't be abused for CSRF.
 | 
				
			||||||
 | 
					     nsLoadFlags flags;
 | 
				
			||||||
 | 
					     rv = reportChannel->GetLoadFlags(&flags);
 | 
				
			||||||
 | 
					     NS_ENSURE_SUCCESS(rv, rv);
 | 
				
			||||||
 | 
					     flags |= nsIRequest::LOAD_ANONYMOUS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										55
									
								
								gnu/packages/patches/icecat-CVE-2016-1960.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								gnu/packages/patches/icecat-CVE-2016-1960.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,55 @@
 | 
				
			||||||
 | 
					Copied from upstream:
 | 
				
			||||||
 | 
					https://hg.mozilla.org/releases/mozilla-esr38/raw-rev/185b233ea03f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HG changeset patch
 | 
				
			||||||
 | 
					# User Henri Sivonen <hsivonen@hsivonen.fi>
 | 
				
			||||||
 | 
					# Date 1455100746 -7200
 | 
				
			||||||
 | 
					# Node ID 185b233ea03f3811404e3979b65ec86b29d13555
 | 
				
			||||||
 | 
					# Parent  271e3a5a53d96871141e89271f611033b512e3e4
 | 
				
			||||||
 | 
					Bug 1246014. r=wchen. a=sylvestre
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/parser/html/javasrc/TreeBuilder.java b/parser/html/javasrc/TreeBuilder.java
 | 
				
			||||||
 | 
					--- a/parser/html/javasrc/TreeBuilder.java
 | 
				
			||||||
 | 
					+++ b/parser/html/javasrc/TreeBuilder.java
 | 
				
			||||||
 | 
					@@ -4437,17 +4437,17 @@ public abstract class TreeBuilder<T> imp
 | 
				
			||||||
 | 
					         return TreeBuilder.NOT_FOUND_ON_STACK;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     private void clearStackBackTo(int eltPos) throws SAXException {
 | 
				
			||||||
 | 
					         int eltGroup = stack[eltPos].getGroup();
 | 
				
			||||||
 | 
					         while (currentPtr > eltPos) { // > not >= intentional
 | 
				
			||||||
 | 
					             if (stack[currentPtr].ns == "http://www.w3.org/1999/xhtml"
 | 
				
			||||||
 | 
					                     && stack[currentPtr].getGroup() == TEMPLATE
 | 
				
			||||||
 | 
					-                    && (eltGroup == TABLE || eltGroup == TBODY_OR_THEAD_OR_TFOOT|| eltGroup == TR || eltGroup == HTML)) {
 | 
				
			||||||
 | 
					+                    && (eltGroup == TABLE || eltGroup == TBODY_OR_THEAD_OR_TFOOT|| eltGroup == TR || eltPos == 0)) {
 | 
				
			||||||
 | 
					                 return;
 | 
				
			||||||
 | 
					             }
 | 
				
			||||||
 | 
					             pop();
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     private void resetTheInsertionMode() {
 | 
				
			||||||
 | 
					         StackNode<T> node;
 | 
				
			||||||
 | 
					diff --git a/parser/html/nsHtml5TreeBuilder.cpp b/parser/html/nsHtml5TreeBuilder.cpp
 | 
				
			||||||
 | 
					--- a/parser/html/nsHtml5TreeBuilder.cpp
 | 
				
			||||||
 | 
					+++ b/parser/html/nsHtml5TreeBuilder.cpp
 | 
				
			||||||
 | 
					@@ -3301,17 +3301,17 @@ nsHtml5TreeBuilder::findLastInTableScope
 | 
				
			||||||
 | 
					   return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 void 
 | 
				
			||||||
 | 
					 nsHtml5TreeBuilder::clearStackBackTo(int32_t eltPos)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					   int32_t eltGroup = stack[eltPos]->getGroup();
 | 
				
			||||||
 | 
					   while (currentPtr > eltPos) {
 | 
				
			||||||
 | 
					-    if (stack[currentPtr]->ns == kNameSpaceID_XHTML && stack[currentPtr]->getGroup() == NS_HTML5TREE_BUILDER_TEMPLATE && (eltGroup == NS_HTML5TREE_BUILDER_TABLE || eltGroup == NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT || eltGroup == NS_HTML5TREE_BUILDER_TR || eltGroup == NS_HTML5TREE_BUILDER_HTML)) {
 | 
				
			||||||
 | 
					+    if (stack[currentPtr]->ns == kNameSpaceID_XHTML && stack[currentPtr]->getGroup() == NS_HTML5TREE_BUILDER_TEMPLATE && (eltGroup == NS_HTML5TREE_BUILDER_TABLE || eltGroup == NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT || eltGroup == NS_HTML5TREE_BUILDER_TR || !eltPos)) {
 | 
				
			||||||
 | 
					       return;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     pop();
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 void 
 | 
				
			||||||
 | 
					 nsHtml5TreeBuilder::resetTheInsertionMode()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										33
									
								
								gnu/packages/patches/icecat-CVE-2016-1961.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								gnu/packages/patches/icecat-CVE-2016-1961.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					Copied from upstream:
 | 
				
			||||||
 | 
					https://hg.mozilla.org/releases/mozilla-esr38/raw-rev/e93aeb25e2a4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HG changeset patch
 | 
				
			||||||
 | 
					# User Andrew McCreight <continuation@gmail.com>
 | 
				
			||||||
 | 
					# Date 1455891967 28800
 | 
				
			||||||
 | 
					# Node ID e93aeb25e2a44df8d22f5a065b4410620e2c8730
 | 
				
			||||||
 | 
					# Parent  221de852fda32714a9e484774ceafafb450ea73c
 | 
				
			||||||
 | 
					Bug 1249377 - Hold a strong reference to |root| in nsHTMLDocument::SetBody. r=bz, a=sylvestre
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/dom/html/nsHTMLDocument.cpp b/dom/html/nsHTMLDocument.cpp
 | 
				
			||||||
 | 
					--- a/dom/html/nsHTMLDocument.cpp
 | 
				
			||||||
 | 
					+++ b/dom/html/nsHTMLDocument.cpp
 | 
				
			||||||
 | 
					@@ -1044,17 +1044,17 @@ nsHTMLDocument::SetBody(nsIDOMHTMLElemen
 | 
				
			||||||
 | 
					   ErrorResult rv;
 | 
				
			||||||
 | 
					   SetBody(static_cast<nsGenericHTMLElement*>(newBody.get()), rv);
 | 
				
			||||||
 | 
					   return rv.ErrorCode();
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 void
 | 
				
			||||||
 | 
					 nsHTMLDocument::SetBody(nsGenericHTMLElement* newBody, ErrorResult& rv)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-  Element* root = GetRootElement();
 | 
				
			||||||
 | 
					+  nsCOMPtr<Element> root = GetRootElement();
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   // The body element must be either a body tag or a frameset tag. And we must
 | 
				
			||||||
 | 
					   // have a html root tag, otherwise GetBody will not return the newly set
 | 
				
			||||||
 | 
					   // body.
 | 
				
			||||||
 | 
					   if (!newBody || !(newBody->Tag() == nsGkAtoms::body ||
 | 
				
			||||||
 | 
					                     newBody->Tag() == nsGkAtoms::frameset) ||
 | 
				
			||||||
 | 
					       !root || !root->IsHTML() ||
 | 
				
			||||||
 | 
					       root->Tag() != nsGkAtoms::html) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										107
									
								
								gnu/packages/patches/icecat-CVE-2016-1962.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								gnu/packages/patches/icecat-CVE-2016-1962.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,107 @@
 | 
				
			||||||
 | 
					Copied from upstream:
 | 
				
			||||||
 | 
					https://hg.mozilla.org/releases/mozilla-esr38/raw-rev/221de852fda3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HG changeset patch
 | 
				
			||||||
 | 
					# User Randell Jesup <rjesup@jesup.org>
 | 
				
			||||||
 | 
					# Date 1455862087 18000
 | 
				
			||||||
 | 
					# Node ID 221de852fda32714a9e484774ceafafb450ea73c
 | 
				
			||||||
 | 
					# Parent  b03db72e32f6e3acdc9f8705371cb222d7e6c456
 | 
				
			||||||
 | 
					Bug 1240760: Update DataChannel::Close() r=mcmanus, a=ritu
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MozReview-Commit-ID: 7nN9h3M3O8w
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/netwerk/sctp/datachannel/DataChannel.cpp b/netwerk/sctp/datachannel/DataChannel.cpp
 | 
				
			||||||
 | 
					--- a/netwerk/sctp/datachannel/DataChannel.cpp
 | 
				
			||||||
 | 
					+++ b/netwerk/sctp/datachannel/DataChannel.cpp
 | 
				
			||||||
 | 
					@@ -1771,17 +1771,17 @@ DataChannelConnection::HandleStreamReset
 | 
				
			||||||
 | 
					           }
 | 
				
			||||||
 | 
					           NS_DispatchToMainThread(new DataChannelOnMessageAvailable(
 | 
				
			||||||
 | 
					                                     DataChannelOnMessageAvailable::ON_CHANNEL_CLOSED, this,
 | 
				
			||||||
 | 
					                                     channel));
 | 
				
			||||||
 | 
					           mStreams[channel->mStream] = nullptr;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					           LOG(("Disconnected DataChannel %p from connection %p",
 | 
				
			||||||
 | 
					                (void *) channel.get(), (void *) channel->mConnection.get()));
 | 
				
			||||||
 | 
					-          channel->Destroy();
 | 
				
			||||||
 | 
					+          channel->DestroyLocked();
 | 
				
			||||||
 | 
					           // At this point when we leave here, the object is a zombie held alive only by the DOM object
 | 
				
			||||||
 | 
					         } else {
 | 
				
			||||||
 | 
					           LOG(("Can't find incoming channel %d",i));
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					       }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -2498,17 +2498,17 @@ DataChannelConnection::CloseInt(DataChan
 | 
				
			||||||
 | 
					       mStreams[channel->mStream] = nullptr;
 | 
				
			||||||
 | 
					     } else {
 | 
				
			||||||
 | 
					       SendOutgoingStreamReset();
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					   aChannel->mState = CLOSING;
 | 
				
			||||||
 | 
					   if (mState == CLOSED) {
 | 
				
			||||||
 | 
					     // we're not going to hang around waiting
 | 
				
			||||||
 | 
					-    channel->Destroy();
 | 
				
			||||||
 | 
					+    channel->DestroyLocked();
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					   // At this point when we leave here, the object is a zombie held alive only by the DOM object
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 void DataChannelConnection::CloseAll()
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					   LOG(("Closing all channels (connection %p)", (void*) this));
 | 
				
			||||||
 | 
					   // Don't need to lock here
 | 
				
			||||||
 | 
					@@ -2552,23 +2552,25 @@ DataChannel::~DataChannel()
 | 
				
			||||||
 | 
					   // wrong, nothing bad happens.  A worst it's a leak.
 | 
				
			||||||
 | 
					   NS_ASSERTION(mState == CLOSED || mState == CLOSING, "unexpected state in ~DataChannel");
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 void
 | 
				
			||||||
 | 
					 DataChannel::Close()
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					   ENSURE_DATACONNECTION;
 | 
				
			||||||
 | 
					+  RefPtr<DataChannelConnection> connection(mConnection);
 | 
				
			||||||
 | 
					   mConnection->Close(this);
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 // Used when disconnecting from the DataChannelConnection
 | 
				
			||||||
 | 
					 void
 | 
				
			||||||
 | 
					-DataChannel::Destroy()
 | 
				
			||||||
 | 
					+DataChannel::DestroyLocked()
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					+  mConnection->mLock.AssertCurrentThreadOwns();
 | 
				
			||||||
 | 
					   ENSURE_DATACONNECTION;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   LOG(("Destroying Data channel %u", mStream));
 | 
				
			||||||
 | 
					   MOZ_ASSERT_IF(mStream != INVALID_STREAM,
 | 
				
			||||||
 | 
					                 !mConnection->FindChannelByStream(mStream));
 | 
				
			||||||
 | 
					   mStream = INVALID_STREAM;
 | 
				
			||||||
 | 
					   mState = CLOSED;
 | 
				
			||||||
 | 
					   mConnection = nullptr;
 | 
				
			||||||
 | 
					diff --git a/netwerk/sctp/datachannel/DataChannel.h b/netwerk/sctp/datachannel/DataChannel.h
 | 
				
			||||||
 | 
					--- a/netwerk/sctp/datachannel/DataChannel.h
 | 
				
			||||||
 | 
					+++ b/netwerk/sctp/datachannel/DataChannel.h
 | 
				
			||||||
 | 
					@@ -331,19 +331,20 @@ public:
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					       NS_ASSERTION(mConnection,"NULL connection");
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 private:
 | 
				
			||||||
 | 
					   ~DataChannel();
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 public:
 | 
				
			||||||
 | 
					-  void Destroy(); // when we disconnect from the connection after stream RESET
 | 
				
			||||||
 | 
					+  NS_INLINE_DECL_THREADSAFE_REFCOUNTING(DataChannel)
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-  NS_INLINE_DECL_THREADSAFE_REFCOUNTING(DataChannel)
 | 
				
			||||||
 | 
					+  // when we disconnect from the connection after stream RESET
 | 
				
			||||||
 | 
					+  void DestroyLocked();
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   // Close this DataChannel.  Can be called multiple times.  MUST be called
 | 
				
			||||||
 | 
					   // before destroying the DataChannel (state must be CLOSED or CLOSING).
 | 
				
			||||||
 | 
					   void Close();
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   // Set the listener (especially for channels created from the other side)
 | 
				
			||||||
 | 
					   void SetListener(DataChannelListener *aListener, nsISupports *aContext);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										54
									
								
								gnu/packages/patches/icecat-CVE-2016-1964.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								gnu/packages/patches/icecat-CVE-2016-1964.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,54 @@
 | 
				
			||||||
 | 
					Copied from upstream:
 | 
				
			||||||
 | 
					https://hg.mozilla.org/releases/mozilla-esr38/raw-rev/a653013e7b50
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HG changeset patch
 | 
				
			||||||
 | 
					# User Peter Van der Beken <peterv@propagandism.org>
 | 
				
			||||||
 | 
					# Date 1454340035 -3600
 | 
				
			||||||
 | 
					# Node ID a653013e7b503912a32621e8da64a37171316588
 | 
				
			||||||
 | 
					# Parent  0d0d7e8292f7ecf5f1149d528c0524f04447c4ad
 | 
				
			||||||
 | 
					Bug 1243335 - report bad QName. r=sicking, a=sylvestre
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/dom/xslt/xslt/txInstructions.cpp b/dom/xslt/xslt/txInstructions.cpp
 | 
				
			||||||
 | 
					--- a/dom/xslt/xslt/txInstructions.cpp
 | 
				
			||||||
 | 
					+++ b/dom/xslt/xslt/txInstructions.cpp
 | 
				
			||||||
 | 
					@@ -93,16 +93,19 @@ txAttribute::txAttribute(nsAutoPtr<Expr>
 | 
				
			||||||
 | 
					                          txNamespaceMap* aMappings)
 | 
				
			||||||
 | 
					     : mName(Move(aName)), mNamespace(Move(aNamespace)), mMappings(aMappings)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 nsresult
 | 
				
			||||||
 | 
					 txAttribute::execute(txExecutionState& aEs)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					+    nsAutoPtr<txTextHandler> handler(
 | 
				
			||||||
 | 
					+        static_cast<txTextHandler*>(aEs.popResultHandler()));
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					     nsAutoString name;
 | 
				
			||||||
 | 
					     nsresult rv = mName->evaluateToString(aEs.getEvalContext(), name);
 | 
				
			||||||
 | 
					     NS_ENSURE_SUCCESS(rv, rv);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     const char16_t* colon;
 | 
				
			||||||
 | 
					     if (!XMLUtils::isValidQName(name, &colon) ||
 | 
				
			||||||
 | 
					         TX_StringEqualsAtom(name, nsGkAtoms::xmlns)) {
 | 
				
			||||||
 | 
					         return NS_OK;
 | 
				
			||||||
 | 
					@@ -125,19 +128,16 @@ txAttribute::execute(txExecutionState& a
 | 
				
			||||||
 | 
					         if (!nspace.IsEmpty()) {
 | 
				
			||||||
 | 
					             nsId = txNamespaceManager::getNamespaceID(nspace);
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     else if (colon) {
 | 
				
			||||||
 | 
					         nsId = mMappings->lookupNamespace(prefix);
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    nsAutoPtr<txTextHandler> handler(
 | 
				
			||||||
 | 
					-        static_cast<txTextHandler*>(aEs.popResultHandler()));
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					     // add attribute if everything was ok
 | 
				
			||||||
 | 
					     return nsId != kNameSpaceID_Unknown ?
 | 
				
			||||||
 | 
					            aEs.mResultHandler->attribute(prefix, Substring(name, lnameStart),
 | 
				
			||||||
 | 
					                                          nsId, handler->mValue) :
 | 
				
			||||||
 | 
					            NS_OK;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 txCallTemplate::txCallTemplate(const txExpandedName& aName)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										44
									
								
								gnu/packages/patches/icecat-CVE-2016-1965.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								gnu/packages/patches/icecat-CVE-2016-1965.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,44 @@
 | 
				
			||||||
 | 
					Copied from upstream:
 | 
				
			||||||
 | 
					https://hg.mozilla.org/releases/mozilla-esr38/raw-rev/b4467681abd6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HG changeset patch
 | 
				
			||||||
 | 
					# User Gijs Kruitbosch <gijskruitbosch@gmail.com>
 | 
				
			||||||
 | 
					# Date 1455276061 0
 | 
				
			||||||
 | 
					# Node ID b4467681abd676cd5575cbdf922927f8f54d2ad9
 | 
				
			||||||
 | 
					# Parent  8c1d40e45a72c6432e879137a0afa519dc6c9841
 | 
				
			||||||
 | 
					Bug 1245264 - r=bz, r=ritu
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MozReview-Commit-ID: I0sVdritpD3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/dom/base/nsLocation.cpp b/dom/base/nsLocation.cpp
 | 
				
			||||||
 | 
					--- a/dom/base/nsLocation.cpp
 | 
				
			||||||
 | 
					+++ b/dom/base/nsLocation.cpp
 | 
				
			||||||
 | 
					@@ -735,16 +735,27 @@ nsLocation::SetProtocol(const nsAString&
 | 
				
			||||||
 | 
					     return rv;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   rv = uri->SetScheme(NS_ConvertUTF16toUTF8(aProtocol));
 | 
				
			||||||
 | 
					   if (NS_WARN_IF(NS_FAILED(rv))) {
 | 
				
			||||||
 | 
					     return rv;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+  nsAutoCString newSpec;
 | 
				
			||||||
 | 
					+  rv = uri->GetSpec(newSpec);
 | 
				
			||||||
 | 
					+  if (NS_FAILED(rv)) {
 | 
				
			||||||
 | 
					+    return rv;
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+  // We may want a new URI class for the new URI, so recreate it:
 | 
				
			||||||
 | 
					+  rv = NS_NewURI(getter_AddRefs(uri), newSpec);
 | 
				
			||||||
 | 
					+  if (NS_FAILED(rv)) {
 | 
				
			||||||
 | 
					+    return rv;
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					   return SetURI(uri);
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 void
 | 
				
			||||||
 | 
					 nsLocation::GetUsername(nsAString& aUsername, ErrorResult& aError)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					   if (!CallerSubsumes()) {
 | 
				
			||||||
 | 
					     aError.Throw(NS_ERROR_DOM_SECURITY_ERR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										36
									
								
								gnu/packages/patches/icecat-CVE-2016-1966.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								gnu/packages/patches/icecat-CVE-2016-1966.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,36 @@
 | 
				
			||||||
 | 
					Copied from upstream:
 | 
				
			||||||
 | 
					https://hg.mozilla.org/releases/mozilla-esr38/raw-rev/291c2f31c48c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HG changeset patch
 | 
				
			||||||
 | 
					# User Nicholas Nethercote <nnethercote@mozilla.com>
 | 
				
			||||||
 | 
					# Date 1454650565 -39600
 | 
				
			||||||
 | 
					# Node ID 291c2f31c48c7e96b1884b55273355970fa0fc30
 | 
				
			||||||
 | 
					# Parent  11e6614756551cfd7291e73eefb90c52873a8480
 | 
				
			||||||
 | 
					Bug 1246054 - Fix an erroneous nsNPObjWrapper assertion. r=froydnj. a=ritu
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/dom/plugins/base/nsJSNPRuntime.cpp b/dom/plugins/base/nsJSNPRuntime.cpp
 | 
				
			||||||
 | 
					--- a/dom/plugins/base/nsJSNPRuntime.cpp
 | 
				
			||||||
 | 
					+++ b/dom/plugins/base/nsJSNPRuntime.cpp
 | 
				
			||||||
 | 
					@@ -1915,18 +1915,19 @@ nsNPObjWrapper::GetNewOrUsed(NPP npp, JS
 | 
				
			||||||
 | 
					   // No existing JSObject, create one.
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   JS::Rooted<JSObject*> obj(cx, ::JS_NewObject(cx, js::Jsvalify(&sNPObjectJSWrapperClass)));
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   if (generation != sNPObjWrappers.Generation()) {
 | 
				
			||||||
 | 
					       // Reload entry if the JS_NewObject call caused a GC and reallocated
 | 
				
			||||||
 | 
					       // the table (see bug 445229). This is guaranteed to succeed.
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-      NS_ASSERTION(PL_DHashTableSearch(&sNPObjWrappers, npobj),
 | 
				
			||||||
 | 
					-                   "Hashtable didn't find what we just added?");
 | 
				
			||||||
 | 
					+      entry = static_cast<NPObjWrapperHashEntry*>
 | 
				
			||||||
 | 
					+        (PL_DHashTableSearch(&sNPObjWrappers, npobj));
 | 
				
			||||||
 | 
					+      NS_ASSERTION(entry, "Hashtable didn't find what we just added?");
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   if (!obj) {
 | 
				
			||||||
 | 
					     // OOM? Remove the stale entry from the hash.
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     PL_DHashTableRawRemove(&sNPObjWrappers, entry);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     return nullptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										530
									
								
								gnu/packages/patches/icecat-CVE-2016-1974.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										530
									
								
								gnu/packages/patches/icecat-CVE-2016-1974.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,530 @@
 | 
				
			||||||
 | 
					Copied from upstream:
 | 
				
			||||||
 | 
					https://hg.mozilla.org/releases/mozilla-esr38/raw-rev/271e3a5a53d9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HG changeset patch
 | 
				
			||||||
 | 
					# User Henri Sivonen <hsivonen@hsivonen.fi>
 | 
				
			||||||
 | 
					# Date 1455014759 -7200
 | 
				
			||||||
 | 
					# Node ID 271e3a5a53d96871141e89271f611033b512e3e4
 | 
				
			||||||
 | 
					# Parent  9719b71d72dd2a3c5ee12ace156af2a63d9595ac
 | 
				
			||||||
 | 
					Bug 1228103. r=smaug. a=sylvestre
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/parser/htmlparser/nsExpatDriver.cpp b/parser/htmlparser/nsExpatDriver.cpp
 | 
				
			||||||
 | 
					--- a/parser/htmlparser/nsExpatDriver.cpp
 | 
				
			||||||
 | 
					+++ b/parser/htmlparser/nsExpatDriver.cpp
 | 
				
			||||||
 | 
					@@ -1127,22 +1127,28 @@ nsExpatDriver::ConsumeToken(nsScanner& a
 | 
				
			||||||
 | 
					       XML_Size lastLineLength = XML_GetCurrentColumnNumber(mExpatParser);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					       if (lastLineLength <= consumed) {
 | 
				
			||||||
 | 
					         // The length of the last line was less than what expat consumed, so
 | 
				
			||||||
 | 
					         // there was at least one line break in the consumed data. Store the
 | 
				
			||||||
 | 
					         // last line until the point where we stopped parsing.
 | 
				
			||||||
 | 
					         nsScannerIterator startLastLine = currentExpatPosition;
 | 
				
			||||||
 | 
					         startLastLine.advance(-((ptrdiff_t)lastLineLength));
 | 
				
			||||||
 | 
					-        CopyUnicodeTo(startLastLine, currentExpatPosition, mLastLine);
 | 
				
			||||||
 | 
					+        if (!CopyUnicodeTo(startLastLine, currentExpatPosition, mLastLine)) {
 | 
				
			||||||
 | 
					+          return (mInternalState = NS_ERROR_OUT_OF_MEMORY);
 | 
				
			||||||
 | 
					+        }
 | 
				
			||||||
 | 
					       }
 | 
				
			||||||
 | 
					       else {
 | 
				
			||||||
 | 
					         // There was no line break in the consumed data, append the consumed
 | 
				
			||||||
 | 
					         // data.
 | 
				
			||||||
 | 
					-        AppendUnicodeTo(oldExpatPosition, currentExpatPosition, mLastLine);
 | 
				
			||||||
 | 
					+        if (!AppendUnicodeTo(oldExpatPosition,
 | 
				
			||||||
 | 
					+                             currentExpatPosition,
 | 
				
			||||||
 | 
					+                             mLastLine)) {
 | 
				
			||||||
 | 
					+          return (mInternalState = NS_ERROR_OUT_OF_MEMORY);
 | 
				
			||||||
 | 
					+        }
 | 
				
			||||||
 | 
					       }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     mExpatBuffered += length - consumed;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     if (BlockedOrInterrupted()) {
 | 
				
			||||||
 | 
					       PR_LOG(GetExpatDriverLog(), PR_LOG_DEBUG,
 | 
				
			||||||
 | 
					              ("Blocked or interrupted parser (probably for loading linked "
 | 
				
			||||||
 | 
					diff --git a/parser/htmlparser/nsParser.cpp b/parser/htmlparser/nsParser.cpp
 | 
				
			||||||
 | 
					--- a/parser/htmlparser/nsParser.cpp
 | 
				
			||||||
 | 
					+++ b/parser/htmlparser/nsParser.cpp
 | 
				
			||||||
 | 
					@@ -1508,17 +1508,19 @@ nsParser::ResumeParse(bool allowIteratio
 | 
				
			||||||
 | 
					                 DidBuildModel(mStreamStatus);
 | 
				
			||||||
 | 
					                 return NS_OK;
 | 
				
			||||||
 | 
					               }
 | 
				
			||||||
 | 
					             } else {
 | 
				
			||||||
 | 
					               CParserContext* theContext = PopContext();
 | 
				
			||||||
 | 
					               if (theContext) {
 | 
				
			||||||
 | 
					                 theIterationIsOk = allowIteration && theContextIsStringBased;
 | 
				
			||||||
 | 
					                 if (theContext->mCopyUnused) {
 | 
				
			||||||
 | 
					-                  theContext->mScanner->CopyUnusedData(mUnusedInput);
 | 
				
			||||||
 | 
					+                  if (!theContext->mScanner->CopyUnusedData(mUnusedInput)) {
 | 
				
			||||||
 | 
					+                    mInternalState = NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+                  }
 | 
				
			||||||
 | 
					                 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					                 delete theContext;
 | 
				
			||||||
 | 
					               }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					               result = mInternalState;
 | 
				
			||||||
 | 
					               aIsFinalChunk = mParserContext &&
 | 
				
			||||||
 | 
					                               mParserContext->mStreamListenerState == eOnStop;
 | 
				
			||||||
 | 
					diff --git a/parser/htmlparser/nsScanner.cpp b/parser/htmlparser/nsScanner.cpp
 | 
				
			||||||
 | 
					--- a/parser/htmlparser/nsScanner.cpp
 | 
				
			||||||
 | 
					+++ b/parser/htmlparser/nsScanner.cpp
 | 
				
			||||||
 | 
					@@ -379,17 +379,19 @@ nsresult nsScanner::Peek(nsAString& aStr
 | 
				
			||||||
 | 
					   if (mCountRemaining < uint32_t(aNumChars + aOffset)) {
 | 
				
			||||||
 | 
					     end = mEndPosition;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					   else {
 | 
				
			||||||
 | 
					     end = start;
 | 
				
			||||||
 | 
					     end.advance(aNumChars);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-  CopyUnicodeTo(start, end, aStr);
 | 
				
			||||||
 | 
					+  if (!CopyUnicodeTo(start, end, aStr)) {
 | 
				
			||||||
 | 
					+    return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   return NS_OK;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 /**
 | 
				
			||||||
 | 
					  *  Skip whitespace on scanner input stream
 | 
				
			||||||
 | 
					  *  
 | 
				
			||||||
 | 
					@@ -542,17 +544,19 @@ nsresult nsScanner::ReadTagIdentifier(ns
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     if (!found) {
 | 
				
			||||||
 | 
					       ++current;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   // Don't bother appending nothing.
 | 
				
			||||||
 | 
					   if (current != mCurrentPosition) {
 | 
				
			||||||
 | 
					-    AppendUnicodeTo(mCurrentPosition, current, aString);
 | 
				
			||||||
 | 
					+    if (!AppendUnicodeTo(mCurrentPosition, current, aString)) {
 | 
				
			||||||
 | 
					+      return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+    }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   SetPosition(current);  
 | 
				
			||||||
 | 
					   if (current == end) {
 | 
				
			||||||
 | 
					     result = kEOF;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   //DoErrTest(aString);
 | 
				
			||||||
 | 
					@@ -597,26 +601,30 @@ nsresult nsScanner::ReadEntityIdentifier
 | 
				
			||||||
 | 
					         default:
 | 
				
			||||||
 | 
					           found = ('a'<=theChar && theChar<='z') ||
 | 
				
			||||||
 | 
					                   ('A'<=theChar && theChar<='Z') ||
 | 
				
			||||||
 | 
					                   ('0'<=theChar && theChar<='9');
 | 
				
			||||||
 | 
					           break;
 | 
				
			||||||
 | 
					       }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					       if(!found) {
 | 
				
			||||||
 | 
					-        AppendUnicodeTo(mCurrentPosition, current, aString);
 | 
				
			||||||
 | 
					+        if (!AppendUnicodeTo(mCurrentPosition, current, aString)) {
 | 
				
			||||||
 | 
					+          return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+        }
 | 
				
			||||||
 | 
					         break;
 | 
				
			||||||
 | 
					       }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     ++current;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					   SetPosition(current);
 | 
				
			||||||
 | 
					   if (current == end) {
 | 
				
			||||||
 | 
					-    AppendUnicodeTo(origin, current, aString);
 | 
				
			||||||
 | 
					+    if (!AppendUnicodeTo(origin, current, aString)) {
 | 
				
			||||||
 | 
					+      return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+    }
 | 
				
			||||||
 | 
					     return kEOF;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   //DoErrTest(aString);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   return result;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -646,26 +654,30 @@ nsresult nsScanner::ReadNumber(nsString&
 | 
				
			||||||
 | 
					   while(current != end) {
 | 
				
			||||||
 | 
					     theChar=*current;
 | 
				
			||||||
 | 
					     if(theChar) {
 | 
				
			||||||
 | 
					       done = (theChar < '0' || theChar > '9') && 
 | 
				
			||||||
 | 
					              ((aBase == 16)? (theChar < 'A' || theChar > 'F') &&
 | 
				
			||||||
 | 
					                              (theChar < 'a' || theChar > 'f')
 | 
				
			||||||
 | 
					                              :true);
 | 
				
			||||||
 | 
					       if(done) {
 | 
				
			||||||
 | 
					-        AppendUnicodeTo(origin, current, aString);
 | 
				
			||||||
 | 
					+        if (!AppendUnicodeTo(origin, current, aString)) {
 | 
				
			||||||
 | 
					+          return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+        }
 | 
				
			||||||
 | 
					         break;
 | 
				
			||||||
 | 
					       }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     ++current;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   SetPosition(current);
 | 
				
			||||||
 | 
					   if (current == end) {
 | 
				
			||||||
 | 
					-    AppendUnicodeTo(origin, current, aString);
 | 
				
			||||||
 | 
					+    if (!AppendUnicodeTo(origin, current, aString)) {
 | 
				
			||||||
 | 
					+      return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+    }
 | 
				
			||||||
 | 
					     return kEOF;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   //DoErrTest(aString);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   return result;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -712,37 +724,43 @@ nsresult nsScanner::ReadWhitespace(nsSca
 | 
				
			||||||
 | 
					           char16_t thePrevChar = theChar;
 | 
				
			||||||
 | 
					           theChar = (++current != end) ? *current : '\0';
 | 
				
			||||||
 | 
					           if ((thePrevChar == '\r' && theChar == '\n') ||
 | 
				
			||||||
 | 
					               (thePrevChar == '\n' && theChar == '\r')) {
 | 
				
			||||||
 | 
					             theChar = (++current != end) ? *current : '\0'; // CRLF == LFCR => LF
 | 
				
			||||||
 | 
					             haveCR = true;
 | 
				
			||||||
 | 
					           } else if (thePrevChar == '\r') {
 | 
				
			||||||
 | 
					             // Lone CR becomes CRLF; callers should know to remove extra CRs
 | 
				
			||||||
 | 
					-            AppendUnicodeTo(origin, current, aString);
 | 
				
			||||||
 | 
					+            if (!AppendUnicodeTo(origin, current, aString)) {
 | 
				
			||||||
 | 
					+              return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+            }
 | 
				
			||||||
 | 
					             aString.writable().Append(char16_t('\n'));
 | 
				
			||||||
 | 
					             origin = current;
 | 
				
			||||||
 | 
					             haveCR = true;
 | 
				
			||||||
 | 
					           }
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					         break;
 | 
				
			||||||
 | 
					       case ' ' :
 | 
				
			||||||
 | 
					       case '\t':
 | 
				
			||||||
 | 
					         theChar = (++current != end) ? *current : '\0';
 | 
				
			||||||
 | 
					         break;
 | 
				
			||||||
 | 
					       default:
 | 
				
			||||||
 | 
					         done = true;
 | 
				
			||||||
 | 
					-        AppendUnicodeTo(origin, current, aString);
 | 
				
			||||||
 | 
					+        if (!AppendUnicodeTo(origin, current, aString)) {
 | 
				
			||||||
 | 
					+          return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+        }
 | 
				
			||||||
 | 
					         break;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   SetPosition(current);
 | 
				
			||||||
 | 
					   if (current == end) {
 | 
				
			||||||
 | 
					-    AppendUnicodeTo(origin, current, aString);
 | 
				
			||||||
 | 
					+    if (!AppendUnicodeTo(origin, current, aString)) {
 | 
				
			||||||
 | 
					+      return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+    }
 | 
				
			||||||
 | 
					     result = kEOF;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   aHaveCR = haveCR;
 | 
				
			||||||
 | 
					   return result;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 //XXXbz callers of this have to manage their lone '\r' themselves if they want
 | 
				
			||||||
 | 
					@@ -846,34 +864,38 @@ nsresult nsScanner::ReadUntil(nsAString&
 | 
				
			||||||
 | 
					     if(!(theChar & aEndCondition.mFilter)) {
 | 
				
			||||||
 | 
					       // They were. Do a thorough check.
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					       setcurrent = setstart;
 | 
				
			||||||
 | 
					       while (*setcurrent) {
 | 
				
			||||||
 | 
					         if (*setcurrent == theChar) {
 | 
				
			||||||
 | 
					           if(addTerminal)
 | 
				
			||||||
 | 
					             ++current;
 | 
				
			||||||
 | 
					-          AppendUnicodeTo(origin, current, aString);
 | 
				
			||||||
 | 
					+          if (!AppendUnicodeTo(origin, current, aString)) {
 | 
				
			||||||
 | 
					+            return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+          }
 | 
				
			||||||
 | 
					           SetPosition(current);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					           //DoErrTest(aString);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					           return NS_OK;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					         ++setcurrent;
 | 
				
			||||||
 | 
					       }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					     ++current;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   // If we are here, we didn't find any terminator in the string and
 | 
				
			||||||
 | 
					   // current = mEndPosition
 | 
				
			||||||
 | 
					   SetPosition(current);
 | 
				
			||||||
 | 
					-  AppendUnicodeTo(origin, current, aString);
 | 
				
			||||||
 | 
					+  if (!AppendUnicodeTo(origin, current, aString)) {
 | 
				
			||||||
 | 
					+    return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					   return kEOF;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 nsresult nsScanner::ReadUntil(nsScannerSharedSubstring& aString,
 | 
				
			||||||
 | 
					                               const nsReadEndCondition& aEndCondition,
 | 
				
			||||||
 | 
					                               bool addTerminal)
 | 
				
			||||||
 | 
					 {  
 | 
				
			||||||
 | 
					   if (!mSlidingBuffer) {
 | 
				
			||||||
 | 
					@@ -906,34 +928,38 @@ nsresult nsScanner::ReadUntil(nsScannerS
 | 
				
			||||||
 | 
					     if(!(theChar & aEndCondition.mFilter)) {
 | 
				
			||||||
 | 
					       // They were. Do a thorough check.
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					       setcurrent = setstart;
 | 
				
			||||||
 | 
					       while (*setcurrent) {
 | 
				
			||||||
 | 
					         if (*setcurrent == theChar) {
 | 
				
			||||||
 | 
					           if(addTerminal)
 | 
				
			||||||
 | 
					             ++current;
 | 
				
			||||||
 | 
					-          AppendUnicodeTo(origin, current, aString);
 | 
				
			||||||
 | 
					+          if (!AppendUnicodeTo(origin, current, aString)) {
 | 
				
			||||||
 | 
					+            return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+          }
 | 
				
			||||||
 | 
					           SetPosition(current);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					           //DoErrTest(aString);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					           return NS_OK;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					         ++setcurrent;
 | 
				
			||||||
 | 
					       }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					     ++current;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   // If we are here, we didn't find any terminator in the string and
 | 
				
			||||||
 | 
					   // current = mEndPosition
 | 
				
			||||||
 | 
					   SetPosition(current);
 | 
				
			||||||
 | 
					-  AppendUnicodeTo(origin, current, aString);
 | 
				
			||||||
 | 
					+  if (!AppendUnicodeTo(origin, current, aString)) {
 | 
				
			||||||
 | 
					+    return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					   return kEOF;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 nsresult nsScanner::ReadUntil(nsScannerIterator& aStart, 
 | 
				
			||||||
 | 
					                               nsScannerIterator& aEnd,
 | 
				
			||||||
 | 
					                               const nsReadEndCondition &aEndCondition,
 | 
				
			||||||
 | 
					                               bool addTerminal)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					@@ -1025,26 +1051,30 @@ nsresult nsScanner::ReadUntil(nsAString&
 | 
				
			||||||
 | 
					     if (theChar == '\0') {
 | 
				
			||||||
 | 
					       ReplaceCharacter(current, sInvalid);
 | 
				
			||||||
 | 
					       theChar = sInvalid;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     if (aTerminalChar == theChar) {
 | 
				
			||||||
 | 
					       if(addTerminal)
 | 
				
			||||||
 | 
					         ++current;
 | 
				
			||||||
 | 
					-      AppendUnicodeTo(origin, current, aString);
 | 
				
			||||||
 | 
					+      if (!AppendUnicodeTo(origin, current, aString)) {
 | 
				
			||||||
 | 
					+        return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+      }
 | 
				
			||||||
 | 
					       SetPosition(current);
 | 
				
			||||||
 | 
					       return NS_OK;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     ++current;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   // If we are here, we didn't find any terminator in the string and
 | 
				
			||||||
 | 
					   // current = mEndPosition
 | 
				
			||||||
 | 
					-  AppendUnicodeTo(origin, current, aString);
 | 
				
			||||||
 | 
					+  if (!AppendUnicodeTo(origin, current, aString)) {
 | 
				
			||||||
 | 
					+    return NS_ERROR_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					+  }
 | 
				
			||||||
 | 
					   SetPosition(current);
 | 
				
			||||||
 | 
					   return kEOF;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 void nsScanner::BindSubstring(nsScannerSubstring& aSubstring, const nsScannerIterator& aStart, const nsScannerIterator& aEnd)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					   aSubstring.Rebind(*mSlidingBuffer, aStart, aEnd);
 | 
				
			||||||
 | 
					@@ -1142,29 +1172,29 @@ bool nsScanner::AppendToBuffer(nsScanner
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 /**
 | 
				
			||||||
 | 
					  *  call this to copy bytes out of the scanner that have not yet been consumed
 | 
				
			||||||
 | 
					  *  by the tokenization process.
 | 
				
			||||||
 | 
					  *  
 | 
				
			||||||
 | 
					  *  @update  gess 5/12/98
 | 
				
			||||||
 | 
					  *  @param   aCopyBuffer is where the scanner buffer will be copied to
 | 
				
			||||||
 | 
					- *  @return  nada
 | 
				
			||||||
 | 
					+ *  @return  true if OK or false on OOM
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					-void nsScanner::CopyUnusedData(nsString& aCopyBuffer) {
 | 
				
			||||||
 | 
					+bool nsScanner::CopyUnusedData(nsString& aCopyBuffer) {
 | 
				
			||||||
 | 
					   if (!mSlidingBuffer) {
 | 
				
			||||||
 | 
					     aCopyBuffer.Truncate();
 | 
				
			||||||
 | 
					-    return;
 | 
				
			||||||
 | 
					+    return true;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   nsScannerIterator start, end;
 | 
				
			||||||
 | 
					   start = mCurrentPosition;
 | 
				
			||||||
 | 
					   end = mEndPosition;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-  CopyUnicodeTo(start, end, aCopyBuffer);
 | 
				
			||||||
 | 
					+  return CopyUnicodeTo(start, end, aCopyBuffer);
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 /**
 | 
				
			||||||
 | 
					  *  Retrieve the name of the file that the scanner is reading from.
 | 
				
			||||||
 | 
					  *  In some cases, it's just a given name, because the scanner isn't
 | 
				
			||||||
 | 
					  *  really reading from a file.
 | 
				
			||||||
 | 
					  *  
 | 
				
			||||||
 | 
					  *  @update  gess 5/12/98
 | 
				
			||||||
 | 
					diff --git a/parser/htmlparser/nsScanner.h b/parser/htmlparser/nsScanner.h
 | 
				
			||||||
 | 
					--- a/parser/htmlparser/nsScanner.h
 | 
				
			||||||
 | 
					+++ b/parser/htmlparser/nsScanner.h
 | 
				
			||||||
 | 
					@@ -204,19 +204,19 @@ class nsScanner {
 | 
				
			||||||
 | 
					                       nsIRequest *aRequest);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					       /**
 | 
				
			||||||
 | 
					        *  Call this to copy bytes out of the scanner that have not yet been consumed
 | 
				
			||||||
 | 
					        *  by the tokenization process.
 | 
				
			||||||
 | 
					        *  
 | 
				
			||||||
 | 
					        *  @update  gess 5/12/98
 | 
				
			||||||
 | 
					        *  @param   aCopyBuffer is where the scanner buffer will be copied to
 | 
				
			||||||
 | 
					-       *  @return  nada
 | 
				
			||||||
 | 
					+       *  @return  true if OK or false on OOM
 | 
				
			||||||
 | 
					        */
 | 
				
			||||||
 | 
					-      void CopyUnusedData(nsString& aCopyBuffer);
 | 
				
			||||||
 | 
					+      bool CopyUnusedData(nsString& aCopyBuffer);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					       /**
 | 
				
			||||||
 | 
					        *  Retrieve the name of the file that the scanner is reading from.
 | 
				
			||||||
 | 
					        *  In some cases, it's just a given name, because the scanner isn't
 | 
				
			||||||
 | 
					        *  really reading from a file.
 | 
				
			||||||
 | 
					        *  
 | 
				
			||||||
 | 
					        *  @update  gess 5/12/98
 | 
				
			||||||
 | 
					        *  @return  
 | 
				
			||||||
 | 
					diff --git a/parser/htmlparser/nsScannerString.cpp b/parser/htmlparser/nsScannerString.cpp
 | 
				
			||||||
 | 
					--- a/parser/htmlparser/nsScannerString.cpp
 | 
				
			||||||
 | 
					+++ b/parser/htmlparser/nsScannerString.cpp
 | 
				
			||||||
 | 
					@@ -461,61 +461,63 @@ copy_multifragment_string( nsScannerIter
 | 
				
			||||||
 | 
					         sink_traits::write(result, source_traits::read(first), distance);
 | 
				
			||||||
 | 
					         NS_ASSERTION(distance > 0, "|copy_multifragment_string| will never terminate");
 | 
				
			||||||
 | 
					         source_traits::advance(first, distance);
 | 
				
			||||||
 | 
					       }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     return result;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-void
 | 
				
			||||||
 | 
					+bool
 | 
				
			||||||
 | 
					 CopyUnicodeTo( const nsScannerIterator& aSrcStart,
 | 
				
			||||||
 | 
					                const nsScannerIterator& aSrcEnd,
 | 
				
			||||||
 | 
					                nsAString& aDest )
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					     nsAString::iterator writer;
 | 
				
			||||||
 | 
					     if (!aDest.SetLength(Distance(aSrcStart, aSrcEnd), mozilla::fallible)) {
 | 
				
			||||||
 | 
					       aDest.Truncate();
 | 
				
			||||||
 | 
					-      return; // out of memory
 | 
				
			||||||
 | 
					+      return false; // out of memory
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     aDest.BeginWriting(writer);
 | 
				
			||||||
 | 
					     nsScannerIterator fromBegin(aSrcStart);
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					     copy_multifragment_string(fromBegin, aSrcEnd, writer);
 | 
				
			||||||
 | 
					+    return true;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-void
 | 
				
			||||||
 | 
					+bool
 | 
				
			||||||
 | 
					 AppendUnicodeTo( const nsScannerIterator& aSrcStart,
 | 
				
			||||||
 | 
					                  const nsScannerIterator& aSrcEnd,
 | 
				
			||||||
 | 
					                  nsScannerSharedSubstring& aDest )
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					     // Check whether we can just create a dependent string.
 | 
				
			||||||
 | 
					     if (aDest.str().IsEmpty()) {
 | 
				
			||||||
 | 
					       // We can just make |aDest| point to the buffer.
 | 
				
			||||||
 | 
					       // This will take care of copying if the buffer spans fragments.
 | 
				
			||||||
 | 
					       aDest.Rebind(aSrcStart, aSrcEnd);
 | 
				
			||||||
 | 
					-    } else {
 | 
				
			||||||
 | 
					-      // The dest string is not empty, so it can't be a dependent substring.
 | 
				
			||||||
 | 
					-      AppendUnicodeTo(aSrcStart, aSrcEnd, aDest.writable());
 | 
				
			||||||
 | 
					+      return true;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					+    // The dest string is not empty, so it can't be a dependent substring.
 | 
				
			||||||
 | 
					+    return AppendUnicodeTo(aSrcStart, aSrcEnd, aDest.writable());
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-void
 | 
				
			||||||
 | 
					+bool
 | 
				
			||||||
 | 
					 AppendUnicodeTo( const nsScannerIterator& aSrcStart,
 | 
				
			||||||
 | 
					                  const nsScannerIterator& aSrcEnd,
 | 
				
			||||||
 | 
					                  nsAString& aDest )
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					     nsAString::iterator writer;
 | 
				
			||||||
 | 
					     uint32_t oldLength = aDest.Length();
 | 
				
			||||||
 | 
					     if (!aDest.SetLength(oldLength + Distance(aSrcStart, aSrcEnd), mozilla::fallible))
 | 
				
			||||||
 | 
					-      return; // out of memory
 | 
				
			||||||
 | 
					+      return false; // out of memory
 | 
				
			||||||
 | 
					     aDest.BeginWriting(writer).advance(oldLength);
 | 
				
			||||||
 | 
					     nsScannerIterator fromBegin(aSrcStart);
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					     copy_multifragment_string(fromBegin, aSrcEnd, writer);
 | 
				
			||||||
 | 
					+    return true;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 bool
 | 
				
			||||||
 | 
					 FindCharInReadable( char16_t aChar,
 | 
				
			||||||
 | 
					                     nsScannerIterator& aSearchStart,
 | 
				
			||||||
 | 
					                     const nsScannerIterator& aSearchEnd )
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					     while ( aSearchStart != aSearchEnd )
 | 
				
			||||||
 | 
					diff --git a/parser/htmlparser/nsScannerString.h b/parser/htmlparser/nsScannerString.h
 | 
				
			||||||
 | 
					--- a/parser/htmlparser/nsScannerString.h
 | 
				
			||||||
 | 
					+++ b/parser/htmlparser/nsScannerString.h
 | 
				
			||||||
 | 
					@@ -539,43 +539,43 @@ nsScannerBufferList::Position::operator=
 | 
				
			||||||
 | 
					 inline
 | 
				
			||||||
 | 
					 size_t
 | 
				
			||||||
 | 
					 Distance( const nsScannerIterator& aStart, const nsScannerIterator& aEnd )
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					     typedef nsScannerBufferList::Position Position;
 | 
				
			||||||
 | 
					     return Position::Distance(Position(aStart), Position(aEnd));
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-void
 | 
				
			||||||
 | 
					+bool
 | 
				
			||||||
 | 
					 CopyUnicodeTo( const nsScannerIterator& aSrcStart,
 | 
				
			||||||
 | 
					                const nsScannerIterator& aSrcEnd,
 | 
				
			||||||
 | 
					                nsAString& aDest );
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 inline
 | 
				
			||||||
 | 
					-void
 | 
				
			||||||
 | 
					+bool
 | 
				
			||||||
 | 
					 CopyUnicodeTo( const nsScannerSubstring& aSrc, nsAString& aDest )
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					     nsScannerIterator begin, end;
 | 
				
			||||||
 | 
					-    CopyUnicodeTo(aSrc.BeginReading(begin), aSrc.EndReading(end), aDest);
 | 
				
			||||||
 | 
					+    return CopyUnicodeTo(aSrc.BeginReading(begin), aSrc.EndReading(end), aDest);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-void
 | 
				
			||||||
 | 
					+bool
 | 
				
			||||||
 | 
					 AppendUnicodeTo( const nsScannerIterator& aSrcStart,
 | 
				
			||||||
 | 
					                  const nsScannerIterator& aSrcEnd,
 | 
				
			||||||
 | 
					                  nsAString& aDest );
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 inline
 | 
				
			||||||
 | 
					-void
 | 
				
			||||||
 | 
					+bool
 | 
				
			||||||
 | 
					 AppendUnicodeTo( const nsScannerSubstring& aSrc, nsAString& aDest )
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					     nsScannerIterator begin, end;
 | 
				
			||||||
 | 
					-    AppendUnicodeTo(aSrc.BeginReading(begin), aSrc.EndReading(end), aDest);
 | 
				
			||||||
 | 
					+    return AppendUnicodeTo(aSrc.BeginReading(begin), aSrc.EndReading(end), aDest);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-void
 | 
				
			||||||
 | 
					+bool
 | 
				
			||||||
 | 
					 AppendUnicodeTo( const nsScannerIterator& aSrcStart,
 | 
				
			||||||
 | 
					                  const nsScannerIterator& aSrcEnd,
 | 
				
			||||||
 | 
					                  nsScannerSharedSubstring& aDest );
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 bool
 | 
				
			||||||
 | 
					 FindCharInReadable( char16_t aChar,
 | 
				
			||||||
 | 
					                     nsScannerIterator& aStart,
 | 
				
			||||||
 | 
					                     const nsScannerIterator& aEnd );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										37
									
								
								gnu/packages/patches/icecat-bug-1248851.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								gnu/packages/patches/icecat-bug-1248851.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,37 @@
 | 
				
			||||||
 | 
					Copied from upstream:
 | 
				
			||||||
 | 
					https://hg.mozilla.org/releases/mozilla-esr38/raw-rev/8c1d40e45a72
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HG changeset patch
 | 
				
			||||||
 | 
					# User Xidorn Quan <quanxunzhen@gmail.com>
 | 
				
			||||||
 | 
					# Date 1456199544 -28800
 | 
				
			||||||
 | 
					# Node ID 8c1d40e45a72c6432e879137a0afa519dc6c9841
 | 
				
			||||||
 | 
					# Parent  1dd0ca8e70bd77b6fd93f36cc4e9c2cebfe8ba0a
 | 
				
			||||||
 | 
					Bug 1248851 - r=sicking, a=ritu
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/dom/indexedDB/ActorsParent.cpp b/dom/indexedDB/ActorsParent.cpp
 | 
				
			||||||
 | 
					--- a/dom/indexedDB/ActorsParent.cpp
 | 
				
			||||||
 | 
					+++ b/dom/indexedDB/ActorsParent.cpp
 | 
				
			||||||
 | 
					@@ -14823,22 +14823,19 @@ ObjectStoreAddOrPutRequestOp::DoDatabase
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     snappy::RawCompress(uncompressed, uncompressedLength, compressed,
 | 
				
			||||||
 | 
					                         &compressedLength);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     uint8_t* dataBuffer = reinterpret_cast<uint8_t*>(compressed);
 | 
				
			||||||
 | 
					     size_t dataBufferLength = compressedLength;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    // If this call succeeds, | compressed | is now owned by the statement, and
 | 
				
			||||||
 | 
					-    // we are no longer responsible for it.
 | 
				
			||||||
 | 
					     rv = stmt->BindAdoptedBlobByName(NS_LITERAL_CSTRING("data"), dataBuffer,
 | 
				
			||||||
 | 
					                                      dataBufferLength);
 | 
				
			||||||
 | 
					     if (NS_WARN_IF(NS_FAILED(rv))) {
 | 
				
			||||||
 | 
					-      moz_free(compressed);
 | 
				
			||||||
 | 
					       return rv;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   nsCOMPtr<nsIFile> fileDirectory;
 | 
				
			||||||
 | 
					   nsCOMPtr<nsIFile> journalDirectory;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   if (mFileManager) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										861
									
								
								gnu/packages/patches/icecat-update-graphite2-pt2.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										861
									
								
								gnu/packages/patches/icecat-update-graphite2-pt2.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,861 @@
 | 
				
			||||||
 | 
					Copied from upstream:
 | 
				
			||||||
 | 
					https://hg.mozilla.org/releases/mozilla-esr38/raw-rev/ec9cff7bb543
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HG changeset patch
 | 
				
			||||||
 | 
					# User Jonathan Kew <jkew@mozilla.com>
 | 
				
			||||||
 | 
					# Date 1456760339 0
 | 
				
			||||||
 | 
					# Node ID ec9cff7bb5439b2b4c1249ff9376d07a80172c27
 | 
				
			||||||
 | 
					# Parent  6f4d5130238790fa5810c76ffeb9eccc65efa8c9
 | 
				
			||||||
 | 
					Bug 1248876 - Update graphite2 to upstream release 1.3.6. r=jrmuizel a=sledru
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/gfx/graphite2/README.mozilla b/gfx/graphite2/README.mozilla
 | 
				
			||||||
 | 
					--- a/gfx/graphite2/README.mozilla
 | 
				
			||||||
 | 
					+++ b/gfx/graphite2/README.mozilla
 | 
				
			||||||
 | 
					@@ -1,7 +1,3 @@
 | 
				
			||||||
 | 
					-This directory contains the Graphite2 library release 1.3.5 from
 | 
				
			||||||
 | 
					-https://github.com/silnrsi/graphite/releases/download/1.3.5/graphite2-minimal-1.3.5.tgz
 | 
				
			||||||
 | 
					+This directory contains the Graphite2 library release 1.3.6 from
 | 
				
			||||||
 | 
					+https://github.com/silnrsi/graphite/releases/download/1.3.6/graphite-minimal-1.3.6.tgz
 | 
				
			||||||
 | 
					 See gfx/graphite2/moz-gr-update.sh for update procedure.
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-Also includes two post-1.3.5 fixes:
 | 
				
			||||||
 | 
					-a8b3ac2aed0eb132cd80efe7de88f8153e73c829
 | 
				
			||||||
 | 
					-e569e28d83491fedb31b9220493f3c07f6ec6d80
 | 
				
			||||||
 | 
					diff --git a/gfx/graphite2/include/graphite2/Font.h b/gfx/graphite2/include/graphite2/Font.h
 | 
				
			||||||
 | 
					--- a/gfx/graphite2/include/graphite2/Font.h
 | 
				
			||||||
 | 
					+++ b/gfx/graphite2/include/graphite2/Font.h
 | 
				
			||||||
 | 
					@@ -25,17 +25,17 @@
 | 
				
			||||||
 | 
					     either version 2 of the License or (at your option) any later version.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					 #pragma once
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #include "graphite2/Types.h"
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #define GR2_VERSION_MAJOR   1
 | 
				
			||||||
 | 
					 #define GR2_VERSION_MINOR   3
 | 
				
			||||||
 | 
					-#define GR2_VERSION_BUGFIX  5
 | 
				
			||||||
 | 
					+#define GR2_VERSION_BUGFIX  6
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #ifdef __cplusplus
 | 
				
			||||||
 | 
					 extern "C"
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 typedef struct gr_face          gr_face;
 | 
				
			||||||
 | 
					 typedef struct gr_font          gr_font;
 | 
				
			||||||
 | 
					diff --git a/gfx/graphite2/moz-gr-update.sh b/gfx/graphite2/moz-gr-update.sh
 | 
				
			||||||
 | 
					--- a/gfx/graphite2/moz-gr-update.sh
 | 
				
			||||||
 | 
					+++ b/gfx/graphite2/moz-gr-update.sh
 | 
				
			||||||
 | 
					@@ -14,17 +14,17 @@
 | 
				
			||||||
 | 
					 RELEASE=$1
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 if [ "x$RELEASE" == "x" ]
 | 
				
			||||||
 | 
					 then
 | 
				
			||||||
 | 
					     echo "Must provide the version number to be used."
 | 
				
			||||||
 | 
					     exit 1
 | 
				
			||||||
 | 
					 fi
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-TARBALL="https://github.com/silnrsi/graphite/releases/download/$RELEASE/graphite2-minimal-$RELEASE.tgz"
 | 
				
			||||||
 | 
					+TARBALL="https://github.com/silnrsi/graphite/releases/download/$RELEASE/graphite-minimal-$RELEASE.tgz"
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 foo=`basename $0`
 | 
				
			||||||
 | 
					 TMPFILE=`mktemp -t ${foo}` || exit 1
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 curl -L "$TARBALL" -o "$TMPFILE"
 | 
				
			||||||
 | 
					 tar -x -z -C gfx/graphite2/ --strip-components 1 -f "$TMPFILE" || exit 1
 | 
				
			||||||
 | 
					 rm "$TMPFILE"
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					diff --git a/gfx/graphite2/src/CmapCache.cpp b/gfx/graphite2/src/CmapCache.cpp
 | 
				
			||||||
 | 
					--- a/gfx/graphite2/src/CmapCache.cpp
 | 
				
			||||||
 | 
					+++ b/gfx/graphite2/src/CmapCache.cpp
 | 
				
			||||||
 | 
					@@ -33,43 +33,43 @@ of the License or (at your option) any l
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 using namespace graphite2;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 const void * bmp_subtable(const Face::Table & cmap)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     const void * stbl;
 | 
				
			||||||
 | 
					     if (!cmap.size()) return 0;
 | 
				
			||||||
 | 
					-    if (TtfUtil::CheckCmapSubtable4(stbl = TtfUtil::FindCmapSubtable(cmap, 3, 1, cmap.size()), cmap.size())
 | 
				
			||||||
 | 
					-     || TtfUtil::CheckCmapSubtable4(stbl = TtfUtil::FindCmapSubtable(cmap, 0, 3, cmap.size()), cmap.size())
 | 
				
			||||||
 | 
					-     || TtfUtil::CheckCmapSubtable4(stbl = TtfUtil::FindCmapSubtable(cmap, 0, 2, cmap.size()), cmap.size())
 | 
				
			||||||
 | 
					-     || TtfUtil::CheckCmapSubtable4(stbl = TtfUtil::FindCmapSubtable(cmap, 0, 1, cmap.size()), cmap.size())
 | 
				
			||||||
 | 
					-     || TtfUtil::CheckCmapSubtable4(stbl = TtfUtil::FindCmapSubtable(cmap, 0, 0, cmap.size()), cmap.size()))
 | 
				
			||||||
 | 
					+    if (TtfUtil::CheckCmapSubtable4(stbl = TtfUtil::FindCmapSubtable(cmap, 3, 1, cmap.size()), cmap + cmap.size())
 | 
				
			||||||
 | 
					+     || TtfUtil::CheckCmapSubtable4(stbl = TtfUtil::FindCmapSubtable(cmap, 0, 3, cmap.size()), cmap + cmap.size())
 | 
				
			||||||
 | 
					+     || TtfUtil::CheckCmapSubtable4(stbl = TtfUtil::FindCmapSubtable(cmap, 0, 2, cmap.size()), cmap + cmap.size())
 | 
				
			||||||
 | 
					+     || TtfUtil::CheckCmapSubtable4(stbl = TtfUtil::FindCmapSubtable(cmap, 0, 1, cmap.size()), cmap + cmap.size())
 | 
				
			||||||
 | 
					+     || TtfUtil::CheckCmapSubtable4(stbl = TtfUtil::FindCmapSubtable(cmap, 0, 0, cmap.size()), cmap + cmap.size()))
 | 
				
			||||||
 | 
					         return stbl;
 | 
				
			||||||
 | 
					     return 0;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 const void * smp_subtable(const Face::Table & cmap)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     const void * stbl;
 | 
				
			||||||
 | 
					     if (!cmap.size()) return 0;
 | 
				
			||||||
 | 
					-    if (TtfUtil::CheckCmapSubtable12(stbl = TtfUtil::FindCmapSubtable(cmap, 3, 10, cmap.size()), cmap.size())
 | 
				
			||||||
 | 
					-     || TtfUtil::CheckCmapSubtable12(stbl = TtfUtil::FindCmapSubtable(cmap, 0, 4, cmap.size()), cmap.size()))
 | 
				
			||||||
 | 
					+    if (TtfUtil::CheckCmapSubtable12(stbl = TtfUtil::FindCmapSubtable(cmap, 3, 10, cmap.size()), cmap + cmap.size())
 | 
				
			||||||
 | 
					+     || TtfUtil::CheckCmapSubtable12(stbl = TtfUtil::FindCmapSubtable(cmap, 0, 4, cmap.size()), cmap + cmap.size()))
 | 
				
			||||||
 | 
					         return stbl;
 | 
				
			||||||
 | 
					     return 0;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 template <unsigned int (*NextCodePoint)(const void *, unsigned int, int *),
 | 
				
			||||||
 | 
					           uint16 (*LookupCodePoint)(const void *, unsigned int, int)>
 | 
				
			||||||
 | 
					 bool cache_subtable(uint16 * blocks[], const void * cst, const unsigned int limit)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     int rangeKey = 0;
 | 
				
			||||||
 | 
					     uint32          codePoint = NextCodePoint(cst, 0, &rangeKey),
 | 
				
			||||||
 | 
					                     prevCodePoint = 0;
 | 
				
			||||||
 | 
					-    while (codePoint != limit)
 | 
				
			||||||
 | 
					+    while (codePoint < limit)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					         unsigned int block = codePoint >> 8;
 | 
				
			||||||
 | 
					         if (!blocks[block])
 | 
				
			||||||
 | 
					         {
 | 
				
			||||||
 | 
					             blocks[block] = grzeroalloc<uint16>(0x100);
 | 
				
			||||||
 | 
					             if (!blocks[block])
 | 
				
			||||||
 | 
					                 return false;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					diff --git a/gfx/graphite2/src/Code.cpp b/gfx/graphite2/src/Code.cpp
 | 
				
			||||||
 | 
					--- a/gfx/graphite2/src/Code.cpp
 | 
				
			||||||
 | 
					+++ b/gfx/graphite2/src/Code.cpp
 | 
				
			||||||
 | 
					@@ -79,18 +79,19 @@ struct context
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 class Machine::Code::decoder
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					 public:
 | 
				
			||||||
 | 
					     struct limits;
 | 
				
			||||||
 | 
					     struct analysis
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					+        static const int NUMCONTEXTS = 256;
 | 
				
			||||||
 | 
					         uint8     slotref;
 | 
				
			||||||
 | 
					-        context   contexts[256];
 | 
				
			||||||
 | 
					+        context   contexts[NUMCONTEXTS];
 | 
				
			||||||
 | 
					         byte      max_ref;
 | 
				
			||||||
 | 
					         
 | 
				
			||||||
 | 
					         analysis() : slotref(0), max_ref(0) {};
 | 
				
			||||||
 | 
					         void set_ref(int index, bool incinsert=false) throw();
 | 
				
			||||||
 | 
					         void set_noref(int index) throw();
 | 
				
			||||||
 | 
					         void set_changed(int index) throw();
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     };
 | 
				
			||||||
 | 
					@@ -363,29 +364,33 @@ opcode Machine::Code::decoder::fetch_opc
 | 
				
			||||||
 | 
					             break;
 | 
				
			||||||
 | 
					         case ATTR_SET :
 | 
				
			||||||
 | 
					         case ATTR_ADD :
 | 
				
			||||||
 | 
					         case ATTR_SUB :
 | 
				
			||||||
 | 
					         case ATTR_SET_SLOT :
 | 
				
			||||||
 | 
					             if (--_stack_depth < 0)
 | 
				
			||||||
 | 
					                 failure(underfull_stack);
 | 
				
			||||||
 | 
					             valid_upto(gr_slatMax, bc[0]);
 | 
				
			||||||
 | 
					+            if (attrCode(bc[0]) == gr_slatUserDefn)     // use IATTR for user attributes
 | 
				
			||||||
 | 
					+                failure(out_of_range_data);
 | 
				
			||||||
 | 
					             test_context();
 | 
				
			||||||
 | 
					             break;
 | 
				
			||||||
 | 
					         case IATTR_SET_SLOT :
 | 
				
			||||||
 | 
					             if (--_stack_depth < 0)
 | 
				
			||||||
 | 
					                 failure(underfull_stack);
 | 
				
			||||||
 | 
					             if (valid_upto(gr_slatMax, bc[0]))
 | 
				
			||||||
 | 
					                 valid_upto(_max.attrid[bc[0]], bc[1]);
 | 
				
			||||||
 | 
					             test_context();
 | 
				
			||||||
 | 
					             break;
 | 
				
			||||||
 | 
					         case PUSH_SLOT_ATTR :
 | 
				
			||||||
 | 
					             ++_stack_depth;
 | 
				
			||||||
 | 
					             valid_upto(gr_slatMax, bc[0]);
 | 
				
			||||||
 | 
					             valid_upto(_rule_length, _pre_context + int8(bc[1]));
 | 
				
			||||||
 | 
					+            if (attrCode(bc[0]) == gr_slatUserDefn)     // use IATTR for user attributes
 | 
				
			||||||
 | 
					+                failure(out_of_range_data);
 | 
				
			||||||
 | 
					             break;
 | 
				
			||||||
 | 
					         case PUSH_GLYPH_ATTR_OBS :
 | 
				
			||||||
 | 
					             ++_stack_depth;
 | 
				
			||||||
 | 
					             valid_upto(_max.glyf_attrs, bc[0]);
 | 
				
			||||||
 | 
					             valid_upto(_rule_length, _pre_context + int8(bc[1]));
 | 
				
			||||||
 | 
					             break;
 | 
				
			||||||
 | 
					         case PUSH_GLYPH_METRIC :
 | 
				
			||||||
 | 
					             ++_stack_depth;
 | 
				
			||||||
 | 
					@@ -656,24 +661,24 @@ bool Machine::Code::decoder::validate_op
 | 
				
			||||||
 | 
					         return false;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     return true;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 bool Machine::Code::decoder::valid_upto(const uint16 limit, const uint16 x) const throw()
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-    const bool t = x < limit;
 | 
				
			||||||
 | 
					+    const bool t = (limit != 0) && (x < limit);
 | 
				
			||||||
 | 
					     if (!t) failure(out_of_range_data);
 | 
				
			||||||
 | 
					     return t;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 bool Machine::Code::decoder::test_context() const throw()
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-    if (_pre_context >= _rule_length)
 | 
				
			||||||
 | 
					+    if (_pre_context >= _rule_length || _analysis.slotref >= analysis::NUMCONTEXTS - 1)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					         failure(out_of_range_data);
 | 
				
			||||||
 | 
					         return false;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     return true;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 inline 
 | 
				
			||||||
 | 
					@@ -681,34 +686,34 @@ void Machine::Code::failure(const status
 | 
				
			||||||
 | 
					     release_buffers();
 | 
				
			||||||
 | 
					     _status = s;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 inline
 | 
				
			||||||
 | 
					 void Machine::Code::decoder::analysis::set_ref(int index, bool incinsert) throw() {
 | 
				
			||||||
 | 
					     if (incinsert && contexts[slotref].flags.inserted) --index;
 | 
				
			||||||
 | 
					-    if (index + slotref < 0) return;
 | 
				
			||||||
 | 
					+    if (index + slotref < 0 || index + slotref >= NUMCONTEXTS) return;
 | 
				
			||||||
 | 
					     contexts[index + slotref].flags.referenced = true;
 | 
				
			||||||
 | 
					     if ((index > 0 || !contexts[index + slotref].flags.inserted) && index + slotref > max_ref) max_ref = index + slotref;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 inline
 | 
				
			||||||
 | 
					 void Machine::Code::decoder::analysis::set_noref(int index) throw() {
 | 
				
			||||||
 | 
					     if (contexts[slotref].flags.inserted) --index;
 | 
				
			||||||
 | 
					-    if (index + slotref < 0) return;
 | 
				
			||||||
 | 
					+    if (index + slotref < 0 || index + slotref >= NUMCONTEXTS) return;
 | 
				
			||||||
 | 
					     if ((index > 0 || !contexts[index + slotref].flags.inserted) && index + slotref > max_ref) max_ref = index + slotref;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 inline
 | 
				
			||||||
 | 
					 void Machine::Code::decoder::analysis::set_changed(int index) throw() {
 | 
				
			||||||
 | 
					     if (contexts[slotref].flags.inserted) --index;
 | 
				
			||||||
 | 
					-    if (index + slotref < 0) return;
 | 
				
			||||||
 | 
					+    if (index + slotref < 0 || index + slotref >= NUMCONTEXTS) return;
 | 
				
			||||||
 | 
					     contexts[index + slotref].flags.changed = true;
 | 
				
			||||||
 | 
					     if ((index > 0 || !contexts[index + slotref].flags.inserted) && index + slotref > max_ref) max_ref = index + slotref;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 void Machine::Code::release_buffers() throw()
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     if (_own)
 | 
				
			||||||
 | 
					diff --git a/gfx/graphite2/src/GlyphCache.cpp b/gfx/graphite2/src/GlyphCache.cpp
 | 
				
			||||||
 | 
					--- a/gfx/graphite2/src/GlyphCache.cpp
 | 
				
			||||||
 | 
					+++ b/gfx/graphite2/src/GlyphCache.cpp
 | 
				
			||||||
 | 
					@@ -260,17 +260,17 @@ GlyphCache::Loader::Loader(const Face & 
 | 
				
			||||||
 | 
					         _head = Face::Table();
 | 
				
			||||||
 | 
					         return;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     if (!dumb_font)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					         if ((m_pGlat = Face::Table(face, Tag::Glat, 0x00030000)) == NULL
 | 
				
			||||||
 | 
					             || (m_pGloc = Face::Table(face, Tag::Gloc)) == NULL
 | 
				
			||||||
 | 
					-            || m_pGloc.size() < 6)
 | 
				
			||||||
 | 
					+            || m_pGloc.size() < 8)
 | 
				
			||||||
 | 
					         {
 | 
				
			||||||
 | 
					             _head = Face::Table();
 | 
				
			||||||
 | 
					             return;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					         const byte    * p = m_pGloc;
 | 
				
			||||||
 | 
					         int       version = be::read<uint32>(p);
 | 
				
			||||||
 | 
					         const uint16    flags = be::read<uint16>(p);
 | 
				
			||||||
 | 
					         _num_attrs = be::read<uint16>(p);
 | 
				
			||||||
 | 
					diff --git a/gfx/graphite2/src/Pass.cpp b/gfx/graphite2/src/Pass.cpp
 | 
				
			||||||
 | 
					--- a/gfx/graphite2/src/Pass.cpp
 | 
				
			||||||
 | 
					+++ b/gfx/graphite2/src/Pass.cpp
 | 
				
			||||||
 | 
					@@ -233,17 +233,17 @@ bool Pass::readRules(const byte * rule_m
 | 
				
			||||||
 | 
					     m_codes = new Code [m_numRules*2];
 | 
				
			||||||
 | 
					     const size_t prog_pool_sz = vm::Machine::Code::estimateCodeDataOut(ac_end - ac_data + rc_end - rc_data);
 | 
				
			||||||
 | 
					     m_progs = gralloc<byte>(prog_pool_sz);
 | 
				
			||||||
 | 
					     byte * prog_pool_free = m_progs,
 | 
				
			||||||
 | 
					          * prog_pool_end  = m_progs + prog_pool_sz;
 | 
				
			||||||
 | 
					     if (e.test(!(m_rules && m_codes && m_progs), E_OUTOFMEM)) return face.error(e);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     Rule * r = m_rules + m_numRules - 1;
 | 
				
			||||||
 | 
					-    for (size_t n = m_numRules; n; --n, --r, ac_end = ac_begin, rc_end = rc_begin)
 | 
				
			||||||
 | 
					+    for (size_t n = m_numRules; r >= m_rules; --n, --r, ac_end = ac_begin, rc_end = rc_begin)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					         face.error_context((face.error_context() & 0xFFFF00) + EC_ARULE + ((n - 1) << 24));
 | 
				
			||||||
 | 
					         r->preContext = *--precontext;
 | 
				
			||||||
 | 
					         r->sort       = be::peek<uint16>(--sort_key);
 | 
				
			||||||
 | 
					 #ifndef NDEBUG
 | 
				
			||||||
 | 
					         r->rule_idx   = n - 1;
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					         if (r->sort > 63 || r->preContext >= r->sort || r->preContext > m_maxPreCtxt || r->preContext < m_minPreCtxt)
 | 
				
			||||||
 | 
					@@ -405,16 +405,17 @@ bool Pass::runGraphite(vm::Machine & m, 
 | 
				
			||||||
 | 
					         json::closer rules_array_closer(fsm.dbgout);
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					         m.slotMap().highwater(currHigh);
 | 
				
			||||||
 | 
					         int lc = m_iMaxLoop;
 | 
				
			||||||
 | 
					         do
 | 
				
			||||||
 | 
					         {
 | 
				
			||||||
 | 
					             findNDoRule(s, m, fsm);
 | 
				
			||||||
 | 
					+            if (m.status() != Machine::finished) return false;
 | 
				
			||||||
 | 
					             if (s && (s == m.slotMap().highwater() || m.slotMap().highpassed() || --lc == 0)) {
 | 
				
			||||||
 | 
					                 if (!lc)
 | 
				
			||||||
 | 
					                     s = m.slotMap().highwater();
 | 
				
			||||||
 | 
					                 lc = m_iMaxLoop;
 | 
				
			||||||
 | 
					                 if (s)
 | 
				
			||||||
 | 
					                     m.slotMap().highwater(s->next());
 | 
				
			||||||
 | 
					             }
 | 
				
			||||||
 | 
					         } while (s);
 | 
				
			||||||
 | 
					@@ -495,17 +496,22 @@ void Pass::findNDoRule(Slot * & slot, Ma
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     assert(slot);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     if (runFSM(fsm, slot))
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					         // Search for the first rule which passes the constraint
 | 
				
			||||||
 | 
					         const RuleEntry *        r = fsm.rules.begin(),
 | 
				
			||||||
 | 
					                         * const re = fsm.rules.end();
 | 
				
			||||||
 | 
					-        while (r != re && !testConstraint(*r->rule, m)) ++r;
 | 
				
			||||||
 | 
					+        while (r != re && !testConstraint(*r->rule, m))
 | 
				
			||||||
 | 
					+        {
 | 
				
			||||||
 | 
					+            ++r;
 | 
				
			||||||
 | 
					+            if (m.status() != Machine::finished)
 | 
				
			||||||
 | 
					+                return;
 | 
				
			||||||
 | 
					+        }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #if !defined GRAPHITE2_NTRACING
 | 
				
			||||||
 | 
					         if (fsm.dbgout)
 | 
				
			||||||
 | 
					         {
 | 
				
			||||||
 | 
					             if (fsm.rules.size() != 0)
 | 
				
			||||||
 | 
					             {
 | 
				
			||||||
 | 
					                 *fsm.dbgout << json::item << json::object;
 | 
				
			||||||
 | 
					                 dumpRuleEventConsidered(fsm, *r);
 | 
				
			||||||
 | 
					@@ -530,16 +536,17 @@ void Pass::findNDoRule(Slot * & slot, Ma
 | 
				
			||||||
 | 
					             }
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					         else
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					         {
 | 
				
			||||||
 | 
					             if (r != re)
 | 
				
			||||||
 | 
					             {
 | 
				
			||||||
 | 
					                 const int adv = doAction(r->rule->action, slot, m);
 | 
				
			||||||
 | 
					+                if (m.status() != Machine::finished) return;
 | 
				
			||||||
 | 
					                 if (r->rule->action->deletes()) fsm.slots.collectGarbage(slot);
 | 
				
			||||||
 | 
					                 adjustSlot(adv, slot, fsm.slots);
 | 
				
			||||||
 | 
					                 return;
 | 
				
			||||||
 | 
					             }
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     slot = slot->next();
 | 
				
			||||||
 | 
					diff --git a/gfx/graphite2/src/Segment.cpp b/gfx/graphite2/src/Segment.cpp
 | 
				
			||||||
 | 
					--- a/gfx/graphite2/src/Segment.cpp
 | 
				
			||||||
 | 
					+++ b/gfx/graphite2/src/Segment.cpp
 | 
				
			||||||
 | 
					@@ -205,18 +205,23 @@ Slot *Segment::newSlot()
 | 
				
			||||||
 | 
					 void Segment::freeSlot(Slot *aSlot)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     if (m_last == aSlot) m_last = aSlot->prev();
 | 
				
			||||||
 | 
					     if (m_first == aSlot) m_first = aSlot->next();
 | 
				
			||||||
 | 
					     if (aSlot->attachedTo())
 | 
				
			||||||
 | 
					         aSlot->attachedTo()->removeChild(aSlot);
 | 
				
			||||||
 | 
					     while (aSlot->firstChild())
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					-        aSlot->firstChild()->attachTo(NULL);
 | 
				
			||||||
 | 
					-        aSlot->removeChild(aSlot->firstChild());
 | 
				
			||||||
 | 
					+        if (aSlot->firstChild()->attachedTo() == aSlot)
 | 
				
			||||||
 | 
					+        {
 | 
				
			||||||
 | 
					+            aSlot->firstChild()->attachTo(NULL);
 | 
				
			||||||
 | 
					+            aSlot->removeChild(aSlot->firstChild());
 | 
				
			||||||
 | 
					+        }
 | 
				
			||||||
 | 
					+        else
 | 
				
			||||||
 | 
					+            aSlot->firstChild(NULL);
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     // reset the slot incase it is reused
 | 
				
			||||||
 | 
					     ::new (aSlot) Slot(aSlot->userAttrs());
 | 
				
			||||||
 | 
					     memset(aSlot->userAttrs(), 0, m_silf->numUser() * sizeof(int16));
 | 
				
			||||||
 | 
					     // Update generation counter for debug
 | 
				
			||||||
 | 
					 #if !defined GRAPHITE2_NTRACING
 | 
				
			||||||
 | 
					     if (m_face->logger())
 | 
				
			||||||
 | 
					         ++aSlot->userAttrs()[m_silf->numUser()];
 | 
				
			||||||
 | 
					diff --git a/gfx/graphite2/src/Slot.cpp b/gfx/graphite2/src/Slot.cpp
 | 
				
			||||||
 | 
					--- a/gfx/graphite2/src/Slot.cpp
 | 
				
			||||||
 | 
					+++ b/gfx/graphite2/src/Slot.cpp
 | 
				
			||||||
 | 
					@@ -192,16 +192,18 @@ int32 Slot::clusterMetric(const Segment 
 | 
				
			||||||
 | 
					 #define SLOTGETCOLATTR(x) { SlotCollision *c = seg->collisionInfo(this); return c ? int(c-> x) : 0; }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 int Slot::getAttr(const Segment *seg, attrCode ind, uint8 subindex) const
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     if (ind == gr_slatUserDefnV1)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					         ind = gr_slatUserDefn;
 | 
				
			||||||
 | 
					         subindex = 0;
 | 
				
			||||||
 | 
					+        if (seg->numAttrs() == 0)
 | 
				
			||||||
 | 
					+            return 0;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     else if (ind >= gr_slatJStretch && ind < gr_slatJStretch + 20 && ind != gr_slatJWidth)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					         int indx = ind - gr_slatJStretch;
 | 
				
			||||||
 | 
					         return getJustify(seg, indx / 5, indx % 5);
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     switch (ind)
 | 
				
			||||||
 | 
					@@ -269,16 +271,18 @@ int Slot::getAttr(const Segment *seg, at
 | 
				
			||||||
 | 
					         break; }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 void Slot::setAttr(Segment *seg, attrCode ind, uint8 subindex, int16 value, const SlotMap & map)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     if (ind == gr_slatUserDefnV1)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					         ind = gr_slatUserDefn;
 | 
				
			||||||
 | 
					         subindex = 0;
 | 
				
			||||||
 | 
					+        if (seg->numAttrs() == 0)
 | 
				
			||||||
 | 
					+            return;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     else if (ind >= gr_slatJStretch && ind < gr_slatJStretch + 20 && ind != gr_slatJWidth)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					         int indx = ind - gr_slatJStretch;
 | 
				
			||||||
 | 
					         return setJustify(seg, indx / 5, indx % 5, value);
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     switch (ind)
 | 
				
			||||||
 | 
					@@ -416,32 +420,32 @@ bool Slot::sibling(Slot *ap)
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 bool Slot::removeChild(Slot *ap)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     if (this == ap || !m_child) return false;
 | 
				
			||||||
 | 
					     else if (ap == m_child)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					         Slot *nSibling = m_child->nextSibling();
 | 
				
			||||||
 | 
					-        m_child->sibling(NULL);
 | 
				
			||||||
 | 
					+        m_child->removeSibling(nSibling);
 | 
				
			||||||
 | 
					         m_child = nSibling;
 | 
				
			||||||
 | 
					         return true;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     else
 | 
				
			||||||
 | 
					         return m_child->removeSibling(ap);
 | 
				
			||||||
 | 
					     return true;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 bool Slot::removeSibling(Slot *ap)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     if (this == ap || !m_sibling) return false;
 | 
				
			||||||
 | 
					     else if (ap == m_sibling)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					         m_sibling = m_sibling->nextSibling();
 | 
				
			||||||
 | 
					-        ap->sibling(NULL);
 | 
				
			||||||
 | 
					+        if (m_sibling) ap->removeSibling(m_sibling);
 | 
				
			||||||
 | 
					         return true;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     else
 | 
				
			||||||
 | 
					         return m_sibling->removeSibling(ap);
 | 
				
			||||||
 | 
					     return true;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 void Slot::setGlyph(Segment *seg, uint16 glyphid, const GlyphFace * theGlyph)
 | 
				
			||||||
 | 
					diff --git a/gfx/graphite2/src/TtfUtil.cpp b/gfx/graphite2/src/TtfUtil.cpp
 | 
				
			||||||
 | 
					--- a/gfx/graphite2/src/TtfUtil.cpp
 | 
				
			||||||
 | 
					+++ b/gfx/graphite2/src/TtfUtil.cpp
 | 
				
			||||||
 | 
					@@ -884,18 +884,19 @@ const void * FindCmapSubtable(const void
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     return 0;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 /*----------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					     Check the Microsoft Unicode subtable for expected values
 | 
				
			||||||
 | 
					 ----------------------------------------------------------------------------------------------*/
 | 
				
			||||||
 | 
					-bool CheckCmapSubtable4(const void * pCmapSubtable4, size_t table_len /*, unsigned int maxgid*/)
 | 
				
			||||||
 | 
					+bool CheckCmapSubtable4(const void * pCmapSubtable4, const void * pCmapEnd /*, unsigned int maxgid*/)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					+    size_t table_len = (const byte *)pCmapEnd - (const byte *)pCmapSubtable4;
 | 
				
			||||||
 | 
					     if (!pCmapSubtable4) return false;
 | 
				
			||||||
 | 
					     const Sfnt::CmapSubTable * pTable = reinterpret_cast<const Sfnt::CmapSubTable *>(pCmapSubtable4);
 | 
				
			||||||
 | 
					     // Bob H say some freeware TT fonts have version 1 (eg, CALIGULA.TTF) 
 | 
				
			||||||
 | 
					     // so don't check subtable version. 21 Mar 2002 spec changes version to language.
 | 
				
			||||||
 | 
					     if (be::swap(pTable->format) != 4) return false;
 | 
				
			||||||
 | 
					     const Sfnt::CmapSubTableFormat4 * pTable4 = reinterpret_cast<const Sfnt::CmapSubTableFormat4 *>(pCmapSubtable4);
 | 
				
			||||||
 | 
					     uint16 length = be::swap(pTable4->length);
 | 
				
			||||||
 | 
					     if (length > table_len)
 | 
				
			||||||
 | 
					@@ -1044,17 +1045,17 @@ unsigned int CmapSubtable4NextCodepoint(
 | 
				
			||||||
 | 
					             *pRangeKey = nRange - 1;
 | 
				
			||||||
 | 
					         return 0xFFFF;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     int iRange = (pRangeKey) ? *pRangeKey : 0;
 | 
				
			||||||
 | 
					     // Just in case we have a bad key:
 | 
				
			||||||
 | 
					     while (iRange > 0 && be::peek<uint16>(pStartCode + iRange) > nUnicodePrev)
 | 
				
			||||||
 | 
					         iRange--;
 | 
				
			||||||
 | 
					-    while (be::peek<uint16>(pTable->end_code + iRange) < nUnicodePrev)
 | 
				
			||||||
 | 
					+    while (iRange < nRange - 1 && be::peek<uint16>(pTable->end_code + iRange) < nUnicodePrev)
 | 
				
			||||||
 | 
					         iRange++;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     // Now iRange is the range containing nUnicodePrev.
 | 
				
			||||||
 | 
					     unsigned int nStartCode = be::peek<uint16>(pStartCode + iRange);
 | 
				
			||||||
 | 
					     unsigned int nEndCode = be::peek<uint16>(pTable->end_code + iRange);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     if (nStartCode > nUnicodePrev)
 | 
				
			||||||
 | 
					         // Oops, nUnicodePrev is not in the cmap! Adjust so we get a reasonable
 | 
				
			||||||
 | 
					@@ -1069,36 +1070,37 @@ unsigned int CmapSubtable4NextCodepoint(
 | 
				
			||||||
 | 
					         return nUnicodePrev + 1;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     // Otherwise the next codepoint is the first one in the next range.
 | 
				
			||||||
 | 
					     // There is guaranteed to be a next range because there must be one that
 | 
				
			||||||
 | 
					     // ends with 0xFFFF.
 | 
				
			||||||
 | 
					     if (pRangeKey)
 | 
				
			||||||
 | 
					         *pRangeKey = iRange + 1;
 | 
				
			||||||
 | 
					-    return be::peek<uint16>(pStartCode + iRange + 1);
 | 
				
			||||||
 | 
					+    return (iRange + 1 >= nRange) ? 0xFFFF : be::peek<uint16>(pStartCode + iRange + 1);
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 /*----------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					     Check the Microsoft UCS-4 subtable for expected values.
 | 
				
			||||||
 | 
					 ----------------------------------------------------------------------------------------------*/
 | 
				
			||||||
 | 
					-bool CheckCmapSubtable12(const void *pCmapSubtable12, size_t table_len /*, unsigned int maxgid*/)
 | 
				
			||||||
 | 
					+bool CheckCmapSubtable12(const void *pCmapSubtable12, const void *pCmapEnd /*, unsigned int maxgid*/)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					+    size_t table_len = (const byte *)pCmapEnd - (const byte *)pCmapSubtable12;
 | 
				
			||||||
 | 
					     if (!pCmapSubtable12)  return false;
 | 
				
			||||||
 | 
					     const Sfnt::CmapSubTable * pTable = reinterpret_cast<const Sfnt::CmapSubTable *>(pCmapSubtable12);
 | 
				
			||||||
 | 
					     if (be::swap(pTable->format) != 12)
 | 
				
			||||||
 | 
					         return false;
 | 
				
			||||||
 | 
					     const Sfnt::CmapSubTableFormat12 * pTable12 = reinterpret_cast<const Sfnt::CmapSubTableFormat12 *>(pCmapSubtable12);
 | 
				
			||||||
 | 
					     uint32 length = be::swap(pTable12->length);
 | 
				
			||||||
 | 
					     if (length > table_len)
 | 
				
			||||||
 | 
					         return false;
 | 
				
			||||||
 | 
					     if (length < sizeof(Sfnt::CmapSubTableFormat12))
 | 
				
			||||||
 | 
					         return false;
 | 
				
			||||||
 | 
					     uint32 num_groups = be::swap(pTable12->num_groups);
 | 
				
			||||||
 | 
					-    if (length != (sizeof(Sfnt::CmapSubTableFormat12) + (num_groups - 1) * sizeof(uint32) * 3))
 | 
				
			||||||
 | 
					+    if (num_groups > 0x10000000 || length != (sizeof(Sfnt::CmapSubTableFormat12) + (num_groups - 1) * sizeof(uint32) * 3))
 | 
				
			||||||
 | 
					         return false;
 | 
				
			||||||
 | 
					 #if 0
 | 
				
			||||||
 | 
					     for (unsigned int i = 0; i < num_groups; ++i)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					         if (be::swap(pTable12->group[i].end_char_code)  - be::swap(pTable12->group[i].start_char_code) + be::swap(pTable12->group[i].start_glyph_id) > maxgid)
 | 
				
			||||||
 | 
					             return false;
 | 
				
			||||||
 | 
					         if (i > 0 && be::swap(pTable12->group[i].start_char_code) <= be::swap(pTable12->group[i-1].end_char_code))
 | 
				
			||||||
 | 
					             return false;
 | 
				
			||||||
 | 
					@@ -1161,17 +1163,17 @@ unsigned int CmapSubtable12NextCodepoint
 | 
				
			||||||
 | 
					             *pRangeKey = nRange;
 | 
				
			||||||
 | 
					         return 0x10FFFF;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     int iRange = (pRangeKey) ? *pRangeKey : 0;
 | 
				
			||||||
 | 
					     // Just in case we have a bad key:
 | 
				
			||||||
 | 
					     while (iRange > 0 && be::swap(pTable->group[iRange].start_char_code) > nUnicodePrev)
 | 
				
			||||||
 | 
					         iRange--;
 | 
				
			||||||
 | 
					-    while (be::swap(pTable->group[iRange].end_char_code) < nUnicodePrev)
 | 
				
			||||||
 | 
					+    while (iRange < nRange - 1 && be::swap(pTable->group[iRange].end_char_code) < nUnicodePrev)
 | 
				
			||||||
 | 
					         iRange++;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     // Now iRange is the range containing nUnicodePrev.
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     unsigned int nStartCode = be::swap(pTable->group[iRange].start_char_code);
 | 
				
			||||||
 | 
					     unsigned int nEndCode = be::swap(pTable->group[iRange].end_char_code);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     if (nStartCode > nUnicodePrev)
 | 
				
			||||||
 | 
					diff --git a/gfx/graphite2/src/call_machine.cpp b/gfx/graphite2/src/call_machine.cpp
 | 
				
			||||||
 | 
					--- a/gfx/graphite2/src/call_machine.cpp
 | 
				
			||||||
 | 
					+++ b/gfx/graphite2/src/call_machine.cpp
 | 
				
			||||||
 | 
					@@ -67,32 +67,34 @@ using namespace vm;
 | 
				
			||||||
 | 
					 struct regbank  {
 | 
				
			||||||
 | 
					     slotref         is;
 | 
				
			||||||
 | 
					     slotref *       map;
 | 
				
			||||||
 | 
					     SlotMap       & smap;
 | 
				
			||||||
 | 
					     slotref * const map_base;
 | 
				
			||||||
 | 
					     const instr * & ip;
 | 
				
			||||||
 | 
					     uint8           direction;
 | 
				
			||||||
 | 
					     int8            flags;
 | 
				
			||||||
 | 
					+    Machine::status_t & status;
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 typedef bool        (* ip_t)(registers);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 // Pull in the opcode definitions
 | 
				
			||||||
 | 
					 // We pull these into a private namespace so these otherwise common names dont
 | 
				
			||||||
 | 
					 // pollute the toplevel namespace.
 | 
				
			||||||
 | 
					 namespace {
 | 
				
			||||||
 | 
					 #define smap    reg.smap
 | 
				
			||||||
 | 
					 #define seg     smap.segment
 | 
				
			||||||
 | 
					 #define is      reg.is
 | 
				
			||||||
 | 
					 #define ip      reg.ip
 | 
				
			||||||
 | 
					 #define map     reg.map
 | 
				
			||||||
 | 
					 #define mapb    reg.map_base
 | 
				
			||||||
 | 
					 #define flags   reg.flags
 | 
				
			||||||
 | 
					 #define dir     reg.direction
 | 
				
			||||||
 | 
					+#define status  reg.status
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #include "inc/opcodes.h"
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #undef smap
 | 
				
			||||||
 | 
					 #undef seg
 | 
				
			||||||
 | 
					 #undef is
 | 
				
			||||||
 | 
					 #undef ip
 | 
				
			||||||
 | 
					 #undef map
 | 
				
			||||||
 | 
					@@ -108,17 +110,17 @@ Machine::stack_t  Machine::run(const ins
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     assert(program != 0);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     // Declare virtual machine registers
 | 
				
			||||||
 | 
					     const instr   * ip = program-1;
 | 
				
			||||||
 | 
					     const byte    * dp = data;
 | 
				
			||||||
 | 
					     stack_t       * sp = _stack + Machine::STACK_GUARD,
 | 
				
			||||||
 | 
					             * const sb = sp;
 | 
				
			||||||
 | 
					-    regbank         reg = {*map, map, _map, _map.begin()+_map.context(), ip, _map.dir(), 0};
 | 
				
			||||||
 | 
					+    regbank         reg = {*map, map, _map, _map.begin()+_map.context(), ip, _map.dir(), 0, _status};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     // Run the program        
 | 
				
			||||||
 | 
					     while ((reinterpret_cast<ip_t>(*++ip))(dp, sp, sb, reg)) {}
 | 
				
			||||||
 | 
					     const stack_t ret = sp == _stack+STACK_GUARD+1 ? *sp-- : 0;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     check_final_stack(sp);
 | 
				
			||||||
 | 
					     map = reg.map;
 | 
				
			||||||
 | 
					     *map = reg.is;
 | 
				
			||||||
 | 
					diff --git a/gfx/graphite2/src/direct_machine.cpp b/gfx/graphite2/src/direct_machine.cpp
 | 
				
			||||||
 | 
					--- a/gfx/graphite2/src/direct_machine.cpp
 | 
				
			||||||
 | 
					+++ b/gfx/graphite2/src/direct_machine.cpp
 | 
				
			||||||
 | 
					@@ -57,36 +57,37 @@ using namespace vm;
 | 
				
			||||||
 | 
					 namespace {
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 const void * direct_run(const bool          get_table_mode,
 | 
				
			||||||
 | 
					                         const instr       * program,
 | 
				
			||||||
 | 
					                         const byte        * data,
 | 
				
			||||||
 | 
					                         Machine::stack_t  * stack,
 | 
				
			||||||
 | 
					                         slotref         * & __map,
 | 
				
			||||||
 | 
					                         uint8                _dir,
 | 
				
			||||||
 | 
					+                        Machine::status_t & status,
 | 
				
			||||||
 | 
					                         SlotMap           * __smap=0)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     // We need to define and return to opcode table from within this function 
 | 
				
			||||||
 | 
					     // other inorder to take the addresses of the instruction bodies.
 | 
				
			||||||
 | 
					     #include "inc/opcode_table.h"
 | 
				
			||||||
 | 
					     if (get_table_mode)
 | 
				
			||||||
 | 
					         return opcode_table;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     // Declare virtual machine registers
 | 
				
			||||||
 | 
					-    const instr       * ip = program;
 | 
				
			||||||
 | 
					-    const byte        * dp = data;
 | 
				
			||||||
 | 
					-    Machine::stack_t  * sp = stack + Machine::STACK_GUARD,
 | 
				
			||||||
 | 
					-                * const sb = sp;
 | 
				
			||||||
 | 
					-    SlotMap         & smap = *__smap;
 | 
				
			||||||
 | 
					-    Segment          & seg = smap.segment;
 | 
				
			||||||
 | 
					-    slotref             is = *__map,
 | 
				
			||||||
 | 
					-                     * map = __map,
 | 
				
			||||||
 | 
					-              * const mapb = smap.begin()+smap.context();
 | 
				
			||||||
 | 
					-    uint8            dir = _dir;
 | 
				
			||||||
 | 
					-    int8             flags = 0;
 | 
				
			||||||
 | 
					+    const instr           * ip = program;
 | 
				
			||||||
 | 
					+    const byte            * dp = data;
 | 
				
			||||||
 | 
					+    Machine::stack_t      * sp = stack + Machine::STACK_GUARD,
 | 
				
			||||||
 | 
					+                    * const sb = sp;
 | 
				
			||||||
 | 
					+    SlotMap             & smap = *__smap;
 | 
				
			||||||
 | 
					+    Segment              & seg = smap.segment;
 | 
				
			||||||
 | 
					+    slotref                 is = *__map,
 | 
				
			||||||
 | 
					+                         * map = __map,
 | 
				
			||||||
 | 
					+                  * const mapb = smap.begin()+smap.context();
 | 
				
			||||||
 | 
					+    uint8                  dir = _dir;
 | 
				
			||||||
 | 
					+    int8                 flags = 0;
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					     // start the program
 | 
				
			||||||
 | 
					     goto **ip;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     // Pull in the opcode definitions
 | 
				
			||||||
 | 
					     #include "inc/opcodes.h"
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					     end:
 | 
				
			||||||
 | 
					@@ -95,25 +96,26 @@ const void * direct_run(const bool      
 | 
				
			||||||
 | 
					     return sp;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 const opcode_t * Machine::getOpcodeTable() throw()
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     slotref * dummy;
 | 
				
			||||||
 | 
					-    return static_cast<const opcode_t *>(direct_run(true, 0, 0, 0, dummy, 0));
 | 
				
			||||||
 | 
					+    Machine::status_t dumstat = Machine::finished;
 | 
				
			||||||
 | 
					+    return static_cast<const opcode_t *>(direct_run(true, 0, 0, 0, dummy, 0, dumstat));
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 Machine::stack_t  Machine::run(const instr   * program,
 | 
				
			||||||
 | 
					                                const byte    * data,
 | 
				
			||||||
 | 
					                                slotref     * & is)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     assert(program != 0);
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					     const stack_t *sp = static_cast<const stack_t *>(
 | 
				
			||||||
 | 
					-                direct_run(false, program, data, _stack, is, _map.dir(), &_map));
 | 
				
			||||||
 | 
					+                direct_run(false, program, data, _stack, is, _map.dir(), _status, &_map));
 | 
				
			||||||
 | 
					     const stack_t ret = sp == _stack+STACK_GUARD+1 ? *sp-- : 0;
 | 
				
			||||||
 | 
					     check_final_stack(sp);
 | 
				
			||||||
 | 
					     return ret;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					diff --git a/gfx/graphite2/src/inc/Code.h b/gfx/graphite2/src/inc/Code.h
 | 
				
			||||||
 | 
					--- a/gfx/graphite2/src/inc/Code.h
 | 
				
			||||||
 | 
					+++ b/gfx/graphite2/src/inc/Code.h
 | 
				
			||||||
 | 
					@@ -109,17 +109,17 @@ public:
 | 
				
			||||||
 | 
					     int32 run(Machine &m, slotref * & map) const;
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					     CLASS_NEW_DELETE;
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 inline
 | 
				
			||||||
 | 
					 size_t  Machine::Code::estimateCodeDataOut(size_t n_bc)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-    return n_bc * (sizeof(instr)+sizeof(byte));
 | 
				
			||||||
 | 
					+    return (n_bc + 1) * (sizeof(instr)+sizeof(byte));
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 inline Machine::Code::Code() throw()
 | 
				
			||||||
 | 
					 : _code(0), _data(0), _data_size(0), _instr_count(0), _max_ref(0),
 | 
				
			||||||
 | 
					   _status(loaded), _constraint(false), _modify(false), _delete(false),
 | 
				
			||||||
 | 
					   _own(false)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					diff --git a/gfx/graphite2/src/inc/Machine.h b/gfx/graphite2/src/inc/Machine.h
 | 
				
			||||||
 | 
					--- a/gfx/graphite2/src/inc/Machine.h
 | 
				
			||||||
 | 
					+++ b/gfx/graphite2/src/inc/Machine.h
 | 
				
			||||||
 | 
					@@ -135,17 +135,18 @@ public:
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     class Code;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     enum status_t {
 | 
				
			||||||
 | 
					         finished = 0,
 | 
				
			||||||
 | 
					         stack_underflow,
 | 
				
			||||||
 | 
					         stack_not_empty,
 | 
				
			||||||
 | 
					         stack_overflow,
 | 
				
			||||||
 | 
					-        slot_offset_out_bounds
 | 
				
			||||||
 | 
					+        slot_offset_out_bounds,
 | 
				
			||||||
 | 
					+        died_early
 | 
				
			||||||
 | 
					     };
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     Machine(SlotMap &) throw();
 | 
				
			||||||
 | 
					     static const opcode_t *   getOpcodeTable() throw();
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     CLASS_NEW_DELETE;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     SlotMap   & slotMap() const throw();
 | 
				
			||||||
 | 
					diff --git a/gfx/graphite2/src/inc/TtfUtil.h b/gfx/graphite2/src/inc/TtfUtil.h
 | 
				
			||||||
 | 
					--- a/gfx/graphite2/src/inc/TtfUtil.h
 | 
				
			||||||
 | 
					+++ b/gfx/graphite2/src/inc/TtfUtil.h
 | 
				
			||||||
 | 
					@@ -132,21 +132,21 @@ public:
 | 
				
			||||||
 | 
					     int GetLangsForNames(const void * pName, int nPlatformId, int nEncodingId,
 | 
				
			||||||
 | 
					         int *nameIdList, int cNameIds, short *langIdList);
 | 
				
			||||||
 | 
					     void SwapWString(void * pWStr, size_t nSize = 0); // throw (std::invalid_argument);
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     ////////////////////////////////// cmap lookup tools 
 | 
				
			||||||
 | 
					     const void * FindCmapSubtable(const void * pCmap, int nPlatformId = 3, 
 | 
				
			||||||
 | 
					         int nEncodingId = 1, size_t length = 0);
 | 
				
			||||||
 | 
					-    bool CheckCmapSubtable4(const void * pCmap31, size_t table_len /*, unsigned int maxgid*/);
 | 
				
			||||||
 | 
					+    bool CheckCmapSubtable4(const void * pCmap31, const void * pCmapEnd /*, unsigned int maxgid*/);
 | 
				
			||||||
 | 
					     gid16 CmapSubtable4Lookup(const void * pCmapSubtabel4, unsigned int nUnicodeId, int rangeKey = 0);
 | 
				
			||||||
 | 
					     unsigned int CmapSubtable4NextCodepoint(const void *pCmap31, unsigned int nUnicodeId,
 | 
				
			||||||
 | 
					         int * pRangeKey = 0);
 | 
				
			||||||
 | 
					-    bool CheckCmapSubtable12(const void *pCmap310, size_t table_len /*, unsigned int maxgid*/);
 | 
				
			||||||
 | 
					+    bool CheckCmapSubtable12(const void *pCmap310, const void * pCmapEnd /*, unsigned int maxgid*/);
 | 
				
			||||||
 | 
					     gid16 CmapSubtable12Lookup(const void * pCmap310, unsigned int uUnicodeId, int rangeKey = 0);
 | 
				
			||||||
 | 
					     unsigned int CmapSubtable12NextCodepoint(const void *pCmap310, unsigned int nUnicodeId,
 | 
				
			||||||
 | 
					         int * pRangeKey = 0);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     ///////////////////////////////// horizontal metric data for a glyph
 | 
				
			||||||
 | 
					     bool HorMetrics(gid16 nGlyphId, const void * pHmtx, size_t lHmtxSize, 
 | 
				
			||||||
 | 
					         const void * pHhea, int & nLsb, unsigned int & nAdvWid);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					diff --git a/gfx/graphite2/src/inc/opcodes.h b/gfx/graphite2/src/inc/opcodes.h
 | 
				
			||||||
 | 
					--- a/gfx/graphite2/src/inc/opcodes.h
 | 
				
			||||||
 | 
					+++ b/gfx/graphite2/src/inc/opcodes.h
 | 
				
			||||||
 | 
					@@ -71,17 +71,17 @@ of the License or (at your option) any l
 | 
				
			||||||
 | 
					 #define use_params(n)       dp += n
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #define declare_params(n)   const byte * param = dp; \
 | 
				
			||||||
 | 
					                             use_params(n);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #define push(n)             { *++sp = n; }
 | 
				
			||||||
 | 
					 #define pop()               (*sp--)
 | 
				
			||||||
 | 
					 #define slotat(x)           (map[(x)])
 | 
				
			||||||
 | 
					-#define DIE                 { is=seg.last(); EXIT(1); }
 | 
				
			||||||
 | 
					+#define DIE                 { is=seg.last(); status = Machine::died_early; EXIT(1); }
 | 
				
			||||||
 | 
					 #define POSITIONED          1
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 STARTOP(nop)
 | 
				
			||||||
 | 
					     do {} while (0);
 | 
				
			||||||
 | 
					 ENDOP
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 STARTOP(push_byte)
 | 
				
			||||||
 | 
					     declare_params(1);
 | 
				
			||||||
 | 
					@@ -387,30 +387,30 @@ STARTOP(attr_set)
 | 
				
			||||||
 | 
					 ENDOP
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 STARTOP(attr_add)
 | 
				
			||||||
 | 
					     declare_params(1);
 | 
				
			||||||
 | 
					     const attrCode      slat = attrCode(uint8(*param));
 | 
				
			||||||
 | 
					     const          int  val  = int(pop());
 | 
				
			||||||
 | 
					     if ((slat == gr_slatPosX || slat == gr_slatPosY) && (flags & POSITIONED) == 0)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					-        seg.positionSlots(0, *smap.begin(), *(smap.end()-1), dir);
 | 
				
			||||||
 | 
					+        seg.positionSlots(0, *smap.begin(), *(smap.end()-1), seg.currdir());
 | 
				
			||||||
 | 
					         flags |= POSITIONED;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     int res = is->getAttr(&seg, slat, 0);
 | 
				
			||||||
 | 
					     is->setAttr(&seg, slat, 0, val + res, smap);
 | 
				
			||||||
 | 
					 ENDOP
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 STARTOP(attr_sub)
 | 
				
			||||||
 | 
					     declare_params(1);
 | 
				
			||||||
 | 
					     const attrCode      slat = attrCode(uint8(*param));
 | 
				
			||||||
 | 
					     const          int  val  = int(pop());
 | 
				
			||||||
 | 
					     if ((slat == gr_slatPosX || slat == gr_slatPosY) && (flags & POSITIONED) == 0)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					-        seg.positionSlots(0, *smap.begin(), *(smap.end()-1), dir);
 | 
				
			||||||
 | 
					+        seg.positionSlots(0, *smap.begin(), *(smap.end()-1), seg.currdir());
 | 
				
			||||||
 | 
					         flags |= POSITIONED;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     int res = is->getAttr(&seg, slat, 0);
 | 
				
			||||||
 | 
					     is->setAttr(&seg, slat, 0, res - val, smap);
 | 
				
			||||||
 | 
					 ENDOP
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 STARTOP(attr_set_slot)
 | 
				
			||||||
 | 
					     declare_params(1);
 | 
				
			||||||
 | 
					@@ -429,17 +429,17 @@ STARTOP(iattr_set_slot)
 | 
				
			||||||
 | 
					 ENDOP
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 STARTOP(push_slot_attr)
 | 
				
			||||||
 | 
					     declare_params(2);
 | 
				
			||||||
 | 
					     const attrCode      slat     = attrCode(uint8(param[0]));
 | 
				
			||||||
 | 
					     const int           slot_ref = int8(param[1]);
 | 
				
			||||||
 | 
					     if ((slat == gr_slatPosX || slat == gr_slatPosY) && (flags & POSITIONED) == 0)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					-        seg.positionSlots(0, *smap.begin(), *(smap.end()-1), dir);
 | 
				
			||||||
 | 
					+        seg.positionSlots(0, *smap.begin(), *(smap.end()-1), seg.currdir());
 | 
				
			||||||
 | 
					         flags |= POSITIONED;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     slotref slot = slotat(slot_ref);
 | 
				
			||||||
 | 
					     if (slot)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					         int res = slot->getAttr(&seg, slat, 0);
 | 
				
			||||||
 | 
					         push(res);
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					@@ -505,17 +505,17 @@ ENDOP
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 STARTOP(push_islot_attr)
 | 
				
			||||||
 | 
					     declare_params(3);
 | 
				
			||||||
 | 
					     const attrCode  slat     = attrCode(uint8(param[0]));
 | 
				
			||||||
 | 
					     const int           slot_ref = int8(param[1]),
 | 
				
			||||||
 | 
					                         idx      = uint8(param[2]);
 | 
				
			||||||
 | 
					     if ((slat == gr_slatPosX || slat == gr_slatPosY) && (flags & POSITIONED) == 0)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					-        seg.positionSlots(0, *smap.begin(), *(smap.end()-1), dir);
 | 
				
			||||||
 | 
					+        seg.positionSlots(0, *smap.begin(), *(smap.end()-1), seg.currdir());
 | 
				
			||||||
 | 
					         flags |= POSITIONED;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     slotref slot = slotat(slot_ref);
 | 
				
			||||||
 | 
					     if (slot)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					         int res = slot->getAttr(&seg, slat, idx);
 | 
				
			||||||
 | 
					         push(res);
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										149
									
								
								gnu/packages/patches/ilmbase-fix-tests.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										149
									
								
								gnu/packages/patches/ilmbase-fix-tests.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,149 @@
 | 
				
			||||||
 | 
					Fix FTBFS on i686-linux due to rounding issue (see references).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fixes Guix bug #22049 (see below).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copied from Debian.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Source:
 | 
				
			||||||
 | 
					https://sources.debian.net/src/ilmbase/2.2.0-11/debian/patches/testBoxAlgo.patch/
 | 
				
			||||||
 | 
					https://sources.debian.net/src/ilmbase/2.2.0-11/debian/patches/testBox.patch/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					References:
 | 
				
			||||||
 | 
					https://lists.nongnu.org/archive/html/openexr-devel/2015-12/msg00001.html
 | 
				
			||||||
 | 
					https://debbugs.gnu.org/cgi/bugreport.cgi?bug=22049
 | 
				
			||||||
 | 
					https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815712
 | 
				
			||||||
 | 
					https://anonscm.debian.org/cgit/pkg-phototools/ilmbase.git/commit/?id=ab28bb45cdad8adc32e345b777ab8e692b1d9a9c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subject: testBoxAlgo: allow fuzzy match of b12 == b2
 | 
				
			||||||
 | 
					From: Steven Chamberlain <steven@pyro.eu.org>
 | 
				
			||||||
 | 
					Date: Wed, 24 Feb 2016 01:04:11 +0000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Also fix a pre-existing typo.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Index: ilmbase/ImathTest/testBoxAlgo.cpp
 | 
				
			||||||
 | 
					===================================================================
 | 
				
			||||||
 | 
					--- ilmbase.orig/ImathTest/testBoxAlgo.cpp
 | 
				
			||||||
 | 
					+++ ilmbase/ImathTest/testBoxAlgo.cpp
 | 
				
			||||||
 | 
					@@ -886,10 +886,11 @@ boxMatrixTransform ()
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     assert (approximatelyEqual (b2.min, b4.min, e));
 | 
				
			||||||
 | 
					     assert (approximatelyEqual (b2.max, b4.max, e));
 | 
				
			||||||
 | 
					-    assert (approximatelyEqual (b3.max, b4.max, e));
 | 
				
			||||||
 | 
					+    assert (approximatelyEqual (b3.min, b4.min, e));
 | 
				
			||||||
 | 
					     assert (approximatelyEqual (b3.max, b4.max, e));
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    assert (b21 == b2);
 | 
				
			||||||
 | 
					+    assert (approximatelyEqual (b2.min, b21.min, e));
 | 
				
			||||||
 | 
					+    assert (approximatelyEqual (b2.max, b21.max, e));
 | 
				
			||||||
 | 
					     assert (b31 == b3);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     M[0][3] = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subject: testBox: allow fuzzy comparison of floats, doubles
 | 
				
			||||||
 | 
					From: Steven Chamberlain <steven@pyro.eu.org>
 | 
				
			||||||
 | 
					Date: Wed, 24 Feb 2016 01:10:11 +0000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Allow for inexact values, as long as the error is smaller than the
 | 
				
			||||||
 | 
					epsilon of the data type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					On 32-bit x86, allow even greater discrepency at double
 | 
				
			||||||
 | 
					precision, due to possible double-rounding.  See
 | 
				
			||||||
 | 
					https://lists.nongnu.org/archive/html/openexr-devel/2015-12/msg00001.html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Index: ilmbase/ImathTest/testBox.cpp
 | 
				
			||||||
 | 
					===================================================================
 | 
				
			||||||
 | 
					--- ilmbase.orig/ImathTest/testBox.cpp
 | 
				
			||||||
 | 
					+++ ilmbase/ImathTest/testBox.cpp
 | 
				
			||||||
 | 
					@@ -47,6 +47,58 @@ using namespace IMATH_INTERNAL_NAMESPACE
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 namespace {
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+template <class T>
 | 
				
			||||||
 | 
					+bool
 | 
				
			||||||
 | 
					+approximatelyEqual (const T &p1, const T &p2)
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+	/* int and short should be exact */
 | 
				
			||||||
 | 
					+	return (p1 == p2);
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+bool
 | 
				
			||||||
 | 
					+approximatelyEqual (const Vec2<float> &p1, const Vec2<float> &p2)
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+    float e = limits<float>::epsilon();
 | 
				
			||||||
 | 
					+    float m = 0;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    for (int i = 0; i < 2; ++i)
 | 
				
			||||||
 | 
					+    {
 | 
				
			||||||
 | 
					+	m = max (m, abs (p1[i]));
 | 
				
			||||||
 | 
					+	m = max (m, abs (p2[i]));
 | 
				
			||||||
 | 
					+    }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    for (int i = 0; i < 2; ++i)
 | 
				
			||||||
 | 
					+	if (!equalWithAbsError (p1[i], p2[i], m * e))
 | 
				
			||||||
 | 
					+	    return false;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    return true;
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+bool
 | 
				
			||||||
 | 
					+approximatelyEqual (const Vec2<double> &p1, const Vec2<double> &p2)
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+#if defined(__i386__) || defined(_M_IX86)
 | 
				
			||||||
 | 
					+    /* double-rounding on 32-bit x86 may cause larger error:
 | 
				
			||||||
 | 
					+       use epsilon of float rather than double */
 | 
				
			||||||
 | 
					+    double e = limits<float>::epsilon();
 | 
				
			||||||
 | 
					+#else
 | 
				
			||||||
 | 
					+    double e = limits<double>::epsilon();
 | 
				
			||||||
 | 
					+#endif
 | 
				
			||||||
 | 
					+    double m = 0;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    for (int i = 0; i < 2; ++i)
 | 
				
			||||||
 | 
					+    {
 | 
				
			||||||
 | 
					+	m = max (m, abs (p1[i]));
 | 
				
			||||||
 | 
					+	m = max (m, abs (p2[i]));
 | 
				
			||||||
 | 
					+    }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    for (int i = 0; i < 2; ++i)
 | 
				
			||||||
 | 
					+	if (!equalWithAbsError (p1[i], p2[i], m * e))
 | 
				
			||||||
 | 
					+	    return false;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    return true;
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 //
 | 
				
			||||||
 | 
					 // Test case generation utility - create a vector of IMATH_INTERNAL_NAMESPACE::Vec{2,3,4}
 | 
				
			||||||
 | 
					 // with all permutations of integers 1..T::dimensions().
 | 
				
			||||||
 | 
					@@ -250,7 +302,8 @@ testExtendByPoint(const char *type)
 | 
				
			||||||
 | 
					                               
 | 
				
			||||||
 | 
					         IMATH_INTERNAL_NAMESPACE::Box<T> b;
 | 
				
			||||||
 | 
					         b.extendBy(p);
 | 
				
			||||||
 | 
					-        assert(b.min == p && b.max == p);
 | 
				
			||||||
 | 
					+        assert (approximatelyEqual (b.min, p));
 | 
				
			||||||
 | 
					+        assert (approximatelyEqual (b.max, p));
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     //
 | 
				
			||||||
 | 
					@@ -283,7 +336,8 @@ testExtendByPoint(const char *type)
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					             b.extendBy(p);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-            assert(b.min == min && b.max == max);
 | 
				
			||||||
 | 
					+            assert (approximatelyEqual (b.min, min));
 | 
				
			||||||
 | 
					+            assert (approximatelyEqual (b.max, max));
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					@@ -358,7 +412,8 @@ testExtendByBox(const char *type)
 | 
				
			||||||
 | 
					             }
 | 
				
			||||||
 | 
					             b.extendBy(IMATH_INTERNAL_NAMESPACE::Box<T>(p0, p1));
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-            assert(b.min == min && b.max == max);
 | 
				
			||||||
 | 
					+            assert (approximatelyEqual (b.min, min));
 | 
				
			||||||
 | 
					+            assert (approximatelyEqual (b.max, max));
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
							
								
								
									
										19
									
								
								gnu/packages/patches/jasper-CVE-2016-1577.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								gnu/packages/patches/jasper-CVE-2016-1577.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,19 @@
 | 
				
			||||||
 | 
					Description: CVE-2016-1577: Prevent double-free in jas_iccattrval_destroy()
 | 
				
			||||||
 | 
					Origin: vendor, http://www.openwall.com/lists/oss-security/2016/03/03/12
 | 
				
			||||||
 | 
					Bug-Ubuntu: https://launchpad.net/bugs/1547865
 | 
				
			||||||
 | 
					Bug-Debian: https://bugs.debian.org/816625
 | 
				
			||||||
 | 
					Forwarded: not-needed
 | 
				
			||||||
 | 
					Author: Tyler Hicks <tyhicks@canonical.com>
 | 
				
			||||||
 | 
					Reviewed-by: Salvatore Bonaccorso <carnil@debian.org>
 | 
				
			||||||
 | 
					Last-Update: 2016-03-05
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--- a/src/libjasper/base/jas_icc.c
 | 
				
			||||||
 | 
					+++ b/src/libjasper/base/jas_icc.c
 | 
				
			||||||
 | 
					@@ -300,6 +300,7 @@ jas_iccprof_t *jas_iccprof_load(jas_stre
 | 
				
			||||||
 | 
					 				if (jas_iccprof_setattr(prof, tagtabent->tag, attrval))
 | 
				
			||||||
 | 
					 					goto error;
 | 
				
			||||||
 | 
					 				jas_iccattrval_destroy(attrval);
 | 
				
			||||||
 | 
					+				attrval = 0;
 | 
				
			||||||
 | 
					 			} else {
 | 
				
			||||||
 | 
					 #if 0
 | 
				
			||||||
 | 
					 				jas_eprintf("warning: skipping unknown tag type\n");
 | 
				
			||||||
							
								
								
									
										90
									
								
								gnu/packages/patches/jasper-CVE-2016-2089.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								gnu/packages/patches/jasper-CVE-2016-2089.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,90 @@
 | 
				
			||||||
 | 
					Description: CVE-2016-2089: matrix rows_ NULL pointer dereference in jas_matrix_clip()
 | 
				
			||||||
 | 
					Origin: vendor
 | 
				
			||||||
 | 
					Bug-RedHat: https://bugzilla.redhat.com/show_bug.cgi?id=1302636
 | 
				
			||||||
 | 
					Bug-Debian: https://bugs.debian.org/812978
 | 
				
			||||||
 | 
					Forwarded: not-needed
 | 
				
			||||||
 | 
					Author: Tomas Hoger <thoger@redhat.com>
 | 
				
			||||||
 | 
					Reviewed-by: Salvatore Bonaccorso <carnil@debian.org>
 | 
				
			||||||
 | 
					Last-Update: 2016-03-05
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--- a/src/libjasper/base/jas_image.c
 | 
				
			||||||
 | 
					+++ b/src/libjasper/base/jas_image.c
 | 
				
			||||||
 | 
					@@ -426,6 +426,10 @@ int jas_image_readcmpt(jas_image_t *imag
 | 
				
			||||||
 | 
					 		return -1;
 | 
				
			||||||
 | 
					 	}
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+	if (!data->rows_) {
 | 
				
			||||||
 | 
					+		return -1;
 | 
				
			||||||
 | 
					+	}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 	if (jas_matrix_numrows(data) != height || jas_matrix_numcols(data) != width) {
 | 
				
			||||||
 | 
					 		if (jas_matrix_resize(data, height, width)) {
 | 
				
			||||||
 | 
					 			return -1;
 | 
				
			||||||
 | 
					@@ -479,6 +483,10 @@ int jas_image_writecmpt(jas_image_t *ima
 | 
				
			||||||
 | 
					 		return -1;
 | 
				
			||||||
 | 
					 	}
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+	if (!data->rows_) {
 | 
				
			||||||
 | 
					+		return -1;
 | 
				
			||||||
 | 
					+	}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 	if (jas_matrix_numrows(data) != height || jas_matrix_numcols(data) != width) {
 | 
				
			||||||
 | 
					 		return -1;
 | 
				
			||||||
 | 
					 	}
 | 
				
			||||||
 | 
					--- a/src/libjasper/base/jas_seq.c
 | 
				
			||||||
 | 
					+++ b/src/libjasper/base/jas_seq.c
 | 
				
			||||||
 | 
					@@ -262,6 +262,10 @@ void jas_matrix_divpow2(jas_matrix_t *ma
 | 
				
			||||||
 | 
					 	int rowstep;
 | 
				
			||||||
 | 
					 	jas_seqent_t *data;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+	if (!matrix->rows_) {
 | 
				
			||||||
 | 
					+		return;
 | 
				
			||||||
 | 
					+	}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 	rowstep = jas_matrix_rowstep(matrix);
 | 
				
			||||||
 | 
					 	for (i = matrix->numrows_, rowstart = matrix->rows_[0]; i > 0; --i,
 | 
				
			||||||
 | 
					 	  rowstart += rowstep) {
 | 
				
			||||||
 | 
					@@ -282,6 +286,10 @@ void jas_matrix_clip(jas_matrix_t *matri
 | 
				
			||||||
 | 
					 	jas_seqent_t *data;
 | 
				
			||||||
 | 
					 	int rowstep;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+	if (!matrix->rows_) {
 | 
				
			||||||
 | 
					+		return;
 | 
				
			||||||
 | 
					+	}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 	rowstep = jas_matrix_rowstep(matrix);
 | 
				
			||||||
 | 
					 	for (i = matrix->numrows_, rowstart = matrix->rows_[0]; i > 0; --i,
 | 
				
			||||||
 | 
					 	  rowstart += rowstep) {
 | 
				
			||||||
 | 
					@@ -306,6 +314,10 @@ void jas_matrix_asr(jas_matrix_t *matrix
 | 
				
			||||||
 | 
					 	int rowstep;
 | 
				
			||||||
 | 
					 	jas_seqent_t *data;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+	if (!matrix->rows_) {
 | 
				
			||||||
 | 
					+		return;
 | 
				
			||||||
 | 
					+	}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 	assert(n >= 0);
 | 
				
			||||||
 | 
					 	rowstep = jas_matrix_rowstep(matrix);
 | 
				
			||||||
 | 
					 	for (i = matrix->numrows_, rowstart = matrix->rows_[0]; i > 0; --i,
 | 
				
			||||||
 | 
					@@ -325,6 +337,10 @@ void jas_matrix_asl(jas_matrix_t *matrix
 | 
				
			||||||
 | 
					 	int rowstep;
 | 
				
			||||||
 | 
					 	jas_seqent_t *data;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+	if (!matrix->rows_) {
 | 
				
			||||||
 | 
					+		return;
 | 
				
			||||||
 | 
					+	}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 	rowstep = jas_matrix_rowstep(matrix);
 | 
				
			||||||
 | 
					 	for (i = matrix->numrows_, rowstart = matrix->rows_[0]; i > 0; --i,
 | 
				
			||||||
 | 
					 	  rowstart += rowstep) {
 | 
				
			||||||
 | 
					@@ -367,6 +383,10 @@ void jas_matrix_setall(jas_matrix_t *mat
 | 
				
			||||||
 | 
					 	int rowstep;
 | 
				
			||||||
 | 
					 	jas_seqent_t *data;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+	if (!matrix->rows_) {
 | 
				
			||||||
 | 
					+		return;
 | 
				
			||||||
 | 
					+	}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 	rowstep = jas_matrix_rowstep(matrix);
 | 
				
			||||||
 | 
					 	for (i = matrix->numrows_, rowstart = matrix->rows_[0]; i > 0; --i,
 | 
				
			||||||
 | 
					 	  rowstart += rowstep) {
 | 
				
			||||||
							
								
								
									
										19
									
								
								gnu/packages/patches/jasper-CVE-2016-2116.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								gnu/packages/patches/jasper-CVE-2016-2116.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,19 @@
 | 
				
			||||||
 | 
					Description: CVE-2016-2116: Prevent jas_stream_t memory leak in jas_iccprof_createfrombuf()
 | 
				
			||||||
 | 
					Origin: vendor, http://www.openwall.com/lists/oss-security/2016/03/03/12
 | 
				
			||||||
 | 
					Bug-Debian: https://bugs.debian.org/816626
 | 
				
			||||||
 | 
					Forwarded: not-needed
 | 
				
			||||||
 | 
					Author: Tyler Hicks <tyhicks@canoonical.com>
 | 
				
			||||||
 | 
					Reviewed-by: Salvatore Bonaccorso <carnil@debian.org>
 | 
				
			||||||
 | 
					Last-Update: 2016-03-05
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--- a/src/libjasper/base/jas_icc.c
 | 
				
			||||||
 | 
					+++ b/src/libjasper/base/jas_icc.c
 | 
				
			||||||
 | 
					@@ -1693,6 +1693,8 @@ jas_iccprof_t *jas_iccprof_createfrombuf
 | 
				
			||||||
 | 
					 	jas_stream_close(in);
 | 
				
			||||||
 | 
					 	return prof;
 | 
				
			||||||
 | 
					 error:
 | 
				
			||||||
 | 
					+	if (in)
 | 
				
			||||||
 | 
					+		jas_stream_close(in);
 | 
				
			||||||
 | 
					 	return 0;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
Some files were not shown because too many files have changed in this diff Show more
		Reference in a new issue