diff --git a/doc/build.scm b/doc/build.scm index 5bc95d25172..b6a921c4216 100644 --- a/doc/build.scm +++ b/doc/build.scm @@ -215,6 +215,58 @@ its
blocks (as produced by 'makeinfo --html')."
(ice-9 match)
(ice-9 threads))
+ (define (pair-open/close lst)
+ ;; Pair 'open' and 'close' tags produced by 'highlights' and
+ ;; produce nested 'paren' tags instead.
+ (let loop ((lst lst)
+ (level 0)
+ (result '()))
+ (match lst
+ ((('open open) rest ...)
+ (call-with-values
+ (lambda ()
+ (loop rest (+ 1 level) '()))
+ (lambda (inner close rest)
+ (loop rest level
+ (cons `(paren ,level ,open ,inner ,close)
+ result)))))
+ ((('close str) rest ...)
+ (if (> level 0)
+ (values (reverse result) str rest)
+ (begin
+ (format (current-error-port)
+ "warning: extra closing paren; context:~% ~y~%"
+ (reverse result))
+ (loop rest 0 (cons `(close ,str) result)))))
+ ((item rest ...)
+ (loop rest level (cons item result)))
+ (()
+ (when (> level 0)
+ (format (current-error-port)
+ "warning: missing ~a closing parens; context:~% ~y%"
+ level (reverse result)))
+ (values (reverse result) "" '())))))
+
+ (define (highlights->sxml* highlights)
+ ;; Like 'highlights->sxml', but handle nested 'paren tags. This
+ ;; allows for paren matching highlights via appropriate CSS
+ ;; "hover" properties.
+ (define (tag->class tag)
+ (string-append "syntax-" (symbol->string tag)))
+
+ (map (match-lambda
+ ((? string? str) str)
+ (('paren level open (body ...) close)
+ `(span (@ (class ,(string-append "syntax-paren"
+ (number->string level))))
+ ,open
+ (span (@ (class "syntax-symbol"))
+ ,@(highlights->sxml* body))
+ ,close))
+ ((tag text)
+ `(span (@ (class ,(tag->class tag))) ,text)))
+ highlights))
+
(define entity->string
(match-lambda
("rArr" "⇒")
@@ -252,9 +304,10 @@ its blocks (as produced by 'makeinfo --html')."
(href #$syntax-css-url)))))
(('pre ('@ ('class "lisp")) code-snippet ...)
`(pre (@ (class "lisp"))
- ,(highlights->sxml
- (highlight lex-scheme
- (concatenate-snippets code-snippet)))))
+ ,@(highlights->sxml*
+ (pair-open/close
+ (highlight lex-scheme
+ (concatenate-snippets code-snippet))))))
((tag ('@ attributes ...) body ...)
`(,tag (@ ,@attributes) ,@(map syntax-highlight body)))
((tag body ...)
diff --git a/doc/guix.texi b/doc/guix.texi
index 843afcdd1ae..6b637ddfe9b 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -2431,7 +2431,7 @@ Create a disk image that will hold the installed system. To make a
qcow2-formatted disk image, use the @command{qemu-img} command:
@example
-qemu-img create -f qcow2 guixsd.img 50G
+qemu-img create -f qcow2 guix-system.img 50G
@end example
The resulting file will be much smaller than 50 GB (typically less than
@@ -2442,17 +2442,13 @@ Boot the USB installation image in an VM:
@example
qemu-system-x86_64 -m 1024 -smp 1 -enable-kvm \
- -net user -net nic,model=virtio -boot menu=on \
- -drive file=guix-system-install-@value{VERSION}.@var{system}.iso \
- -drive file=guixsd.img
+ -net user -net nic,model=virtio -boot menu=on,order=d \
+ -drive file=guix-system.img \
+ -drive media=cdrom,file=guix-system-install-@value{VERSION}.@var{system}.iso
@end example
-The ordering of the drives matters. @code{-enable-kvm} is optional, but
-significantly improves performance, @pxref{Running Guix in a VM}.
-
-In the VM console, quickly press the @kbd{F12} key to enter the boot
-menu. Then press the @kbd{2} key and the @kbd{RET} key to validate your
-selection.
+@code{-enable-kvm} is optional, but significantly improves performance,
+@pxref{Running Guix in a VM}.
@item
You're now root in the VM, proceed with the installation process.
@@ -2460,7 +2456,7 @@ You're now root in the VM, proceed with the installation process.
@end enumerate
Once installation is complete, you can boot the system that's on your
-@file{guixsd.img} image. @xref{Running Guix in a VM}, for how to do
+@file{guix-system.img} image. @xref{Running Guix in a VM}, for how to do
that.
@node Building the Installation Image
@@ -2759,7 +2755,7 @@ As an example, @var{file} might contain a definition like this
(@pxref{Defining Packages}):
@lisp
-@verbatiminclude package-hello.scm
+@include package-hello.scm
@end lisp
Developers may find it useful to include such a @file{guix.scm} file
@@ -2937,6 +2933,19 @@ siblings that point to specific generations:
$ rm ~/code/my-profile ~/code/my-profile-*-link
@end example
+@item --list-profiles
+List all the user's profiles:
+
+@example
+$ guix package --list-profiles
+/home/charlie/.guix-profile
+/home/charlie/code/my-profile
+/home/charlie/code/devel-profile
+/home/charlie/tmp/test
+@end example
+
+When running as root, list all the profiles of all the users.
+
@cindex collisions, in a profile
@cindex colliding packages in profiles
@cindex profile collisions
@@ -8235,7 +8244,7 @@ As an example, @var{file} might contain a package definition like this
(@pxref{Defining Packages}):
@lisp
-@verbatiminclude package-hello.scm
+@include package-hello.scm
@end lisp
@item --expression=@var{expr}
@@ -9474,7 +9483,7 @@ that Guix uses, as in this example:
;; @dots{}
;; CPE calls this package "grub2".
(properties '((cpe-name . "grub2")
- (cpe-version . "2.3")))
+ (cpe-version . "2.3"))))
@end lisp
@c See .
@@ -11788,6 +11797,7 @@ declaration.
* Virtualization Services:: Virtualization services.
* Version Control Services:: Providing remote access to Git repositories.
* Game Services:: Game servers.
+* Guix Services:: Services relating specifically to Guix.
* Miscellaneous Services:: Other services.
@end menu
@@ -12392,7 +12402,7 @@ The following example showcases how we can use an existing rule file.
@lisp
(use-modules (guix download) ;for url-fetch
(guix packages) ;for origin
- ;; @dots{})
+ @dots{})
(define %android-udev-rules
(file->udev-rule
@@ -12426,7 +12436,7 @@ well as in the @var{groups} field of the @var{operating-system} record.
@lisp
(use-modules (gnu packages android) ;for android-udev-rules
(gnu system shadow) ;for user-group
- ;; @dots{})
+ @dots{})
(operating-system
;; @dots{}
@@ -12434,8 +12444,7 @@ well as in the @var{groups} field of the @var{operating-system} record.
;; @dots{}
(supplementary-groups
'("adbusers" ;for adb
- "wheel" "netdev" "audio" "video"))
- ;; @dots{})))
+ "wheel" "netdev" "audio" "video")))))
(groups (cons (user-group (system? #t) (name "adbusers"))
%base-groups))
@@ -13352,7 +13361,7 @@ gateway @code{hostname}:
(program (file-append openssh "/bin/ssh"))
(arguments
'("ssh" "-qT" "-i" "/path/to/ssh_key"
- "-W" "smtp-server:25" "user@@hostname")))))
+ "-W" "smtp-server:25" "user@@hostname")))))))
@end lisp
See below for more details about @code{inetd-configuration}.
@@ -19822,13 +19831,12 @@ can do something along these lines:
@lisp
(define %gnu-mirror
- (plain-file
- "gnu.vcl"
- "vcl 4.1;
-backend gnu @{ .host = "www.gnu.org"; @}"))
+ (plain-file "gnu.vcl"
+ "vcl 4.1;
+backend gnu @{ .host = \"www.gnu.org\"; @}"))
(operating-system
- ...
+ ;; @dots{}
(services (cons (service varnish-service-type
(varnish-configuration
(listen '(":80"))
@@ -24327,6 +24335,57 @@ The port to bind the server to.
@end table
@end deftp
+
+@node Guix Services
+@subsection Guix Services
+
+@subsubheading Guix Data Service
+The @uref{http://data.guix.gnu.org,Guix Data Service} processes, stores
+and provides data about GNU Guix. This includes information about
+packages, derivations and lint warnings.
+
+The data is stored in a PostgreSQL database, and available through a web
+interface.
+
+@defvar {Scheme Variable} guix-data-service-type
+Service type for the Guix Data Service. Its value must be a
+@code{guix-data-service-configuration} object. The service optionally
+extends the getmail service, as the guix-commits mailing list is used to
+find out about changes in the Guix git repository.
+@end defvar
+
+@deftp {Data Type} guix-data-service-configuration
+Data type representing the configuration of the Guix Data Service.
+
+@table @asis
+@item @code{package} (default: @code{guix-data-service})
+The Guix Data Service package to use.
+
+@item @code{user} (default: @code{"guix-data-service"})
+The system user to run the service as.
+
+@item @code{group} (default: @code{"guix-data-service"})
+The system group to run the service as.
+
+@item @code{port} (default: @code{8765})
+The port to bind the web service to.
+
+@item @code{host} (default: @code{"127.0.0.1"})
+The host to bind the web service to.
+
+@item @code{getmail-idle-mailboxes} (default: @code{#f})
+If set, this is the list of mailboxes that the getmail service will be
+configured to listen to.
+
+@item @code{commits-getmail-retriever-configuration} (default: @code{#f})
+If set, this is the @code{getmail-retriever-configuration} object with
+which to configure getmail to fetch mail from the guix-commits mailing
+list.
+
+@end table
+@end deftp
+
+
@node Miscellaneous Services
@subsection Miscellaneous Services
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index f273957d78a..84a54479779 100644
--- a/gnu/build/linux-boot.scm
+++ b/gnu/build/linux-boot.scm
@@ -359,8 +359,9 @@ the last argument of `mknod'."
(define* (mount-root-file-system root type
#:key volatile-root?)
"Mount the root file system of type TYPE at device ROOT. If VOLATILE-ROOT?
-is true, mount ROOT read-only and make it a overlay with a writable tmpfs
-using the kernel build-in overlayfs."
+is true, mount ROOT read-only and make it an overlay with a writable tmpfs
+using the kernel built-in overlayfs."
+
(if volatile-root?
(begin
(mkdir-p "/real-root")
diff --git a/gnu/build/linux-initrd.scm b/gnu/build/linux-initrd.scm
index 3aaa06d3a0a..ea7de58553c 100644
--- a/gnu/build/linux-initrd.scm
+++ b/gnu/build/linux-initrd.scm
@@ -71,8 +71,7 @@ COMPRESS? is true, compress it using GZIP. On success, return OUTPUT."
(cpio:write-cpio-archive files port
#:file->header cpio:file->cpio-header*)))
- (or (not compress?)
-
+ (if compress?
;; Gzip insists on adding a '.gz' suffix and does nothing if the input
;; file already has that suffix. Shuffle files around to placate it.
(let* ((gz-suffix? (string-suffix? ".gz" output))
@@ -88,7 +87,6 @@ COMPRESS? is true, compress it using GZIP. On success, return OUTPUT."
(unless gz-suffix?
(rename-file (string-append output ".gz") output))
output)))
-
output))
(define (cache-compiled-file-name file)
diff --git a/gnu/build/shepherd.scm b/gnu/build/shepherd.scm
index b32765ed5e4..14bdf4edb84 100644
--- a/gnu/build/shepherd.scm
+++ b/gnu/build/shepherd.scm
@@ -150,14 +150,16 @@ namespace, in addition to essential bind-mounts such /proc."
(when log-file
;; Create LOG-FILE so we can map it in the container.
(unless (file-exists? log-file)
- (call-with-output-file log-file (const #t))))
+ (call-with-output-file log-file (const #t))
+ (when user
+ (let ((pw (getpwnam user)))
+ (chown log-file (passwd:uid pw) (passwd:gid pw))))))
(let ((pid (run-container container-directory
mounts namespaces 1
(lambda ()
(mkdir-p "/var/run")
(clean-up pid-file)
- (clean-up log-file)
(exec-command command
#:user user
diff --git a/gnu/installer/newt/partition.scm b/gnu/installer/newt/partition.scm
index 7a9f11a15e6..74e94731710 100644
--- a/gnu/installer/newt/partition.scm
+++ b/gnu/installer/newt/partition.scm
@@ -587,7 +587,6 @@ edit it."
disks))
(new-user-partitions
(remove-user-partition-by-disk user-partitions item)))
- (disk-destroy item)
`((disks . ,(cons new-disk other-disks))
(user-partitions . ,new-user-partitions)))
`((disks . ,disks)
@@ -625,7 +624,7 @@ edit it."
info-text)))
(case result
((1)
- (disk-delete-all item)
+ (disk-remove-all-partitions item)
`((disks . ,disks)
(user-partitions
. ,(remove-user-partition-by-disk user-partitions item))))
@@ -649,7 +648,7 @@ edit it."
(let ((new-user-partitions
(remove-user-partition-by-partition user-partitions
item)))
- (disk-delete-partition disk item)
+ (disk-remove-partition* disk item)
`((disks . ,disks)
(user-partitions . ,new-user-partitions))))
(else
@@ -696,9 +695,7 @@ by pressing the Exit button.~%~%")))
#f))
(check-user-partitions user-partitions))))
(if user-partitions-ok?
- (begin
- (for-each (cut disk-destroy <>) disks)
- user-partitions)
+ user-partitions
(run-disk-page disks user-partitions
#:guided? guided?)))
(let* ((result-disks (assoc-ref result 'disks))
diff --git a/gnu/installer/parted.scm b/gnu/installer/parted.scm
index 682e233d9f0..3439f211e24 100644
--- a/gnu/installer/parted.scm
+++ b/gnu/installer/parted.scm
@@ -64,13 +64,7 @@
user-partition-parted-object
find-esp-partition
- data-partition?
- metadata-partition?
- freespace-partition?
small-freespace-partition?
- normal-partition?
- extended-partition?
- logical-partition?
esp-partition?
boot-partition?
default-esp-mount-point
@@ -172,24 +166,6 @@
"Find and return the ESP partition among PARTITIONS."
(find esp-partition? partitions))
-(define (data-partition? partition)
- "Return #t if PARTITION is a partition dedicated to data (by opposition to
-freespace, metadata and protected partition types), return #f otherwise."
- (let ((type (partition-type partition)))
- (not (any (lambda (flag)
- (member flag type))
- '(free-space metadata protected)))))
-
-(define (metadata-partition? partition)
- "Return #t if PARTITION is a metadata partition, #f otherwise."
- (let ((type (partition-type partition)))
- (member 'metadata type)))
-
-(define (freespace-partition? partition)
- "Return #t if PARTITION is a free-space partition, #f otherwise."
- (let ((type (partition-type partition)))
- (member 'free-space type)))
-
(define* (small-freespace-partition? device
partition
#:key (max-size MEBIBYTE-SIZE))
@@ -200,21 +176,6 @@ inferior to MAX-SIZE, #f otherwise."
(device-sector-size device))))
(< size max-sector-size)))
-(define (normal-partition? partition)
- "return #t if partition is a normal partition, #f otherwise."
- (let ((type (partition-type partition)))
- (member 'normal type)))
-
-(define (extended-partition? partition)
- "return #t if partition is an extended partition, #f otherwise."
- (let ((type (partition-type partition)))
- (member 'extended type)))
-
-(define (logical-partition? partition)
- "Return #t if PARTITION is a logical partition, #f otherwise."
- (let ((type (partition-type partition)))
- (member 'logical type)))
-
(define (partition-user-type partition)
"Return the type of PARTITION, to be stored in the TYPE field of
record. It can be 'normal, 'extended or 'logical."
@@ -813,7 +774,7 @@ cause them to cross."
(define (rmpart disk number)
"Remove the partition with the given NUMBER on DISK."
(let ((partition (disk-get-partition disk number)))
- (disk-remove-partition disk partition)))
+ (disk-remove-partition* disk partition)))
;;
@@ -928,12 +889,12 @@ exists."
(if has-extended?
;; msdos - remove everything.
- (disk-delete-all disk)
+ (disk-remove-all-partitions disk)
;; gpt - remove everything but esp if it exists.
(for-each
(lambda (partition)
(and (data-partition? partition)
- (disk-remove-partition disk partition)))
+ (disk-remove-partition* disk partition)))
non-boot-partitions))
(let* ((start-partition
@@ -1348,7 +1309,7 @@ USER-PARTITIONS, or return nothing."
(define (init-parted)
"Initialize libparted support."
- (probe-all-devices)
+ (probe-all-devices!)
(exception-set-handler (lambda (exception)
EXCEPTION-OPTION-UNHANDLED)))
@@ -1364,7 +1325,6 @@ the devices not to be used before returning."
;; https://mail.gnome.org/archives/commits-list/2013-March/msg18423.html.
(let ((device-file-names (map device-path devices)))
(for-each force-device-sync devices)
- (free-all-devices)
(for-each (lambda (file-name)
(let ((in-use? (with-delay-device-in-use? file-name)))
(and in-use?
diff --git a/gnu/local.mk b/gnu/local.mk
index bee5b7024ab..9bd1e8882b7 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -146,7 +146,8 @@ GNU_SYSTEM_MODULES = \
%D%/packages/diffoscope.scm \
%D%/packages/digest.scm \
%D%/packages/direct-connect.scm \
- %D%/packages/disk.scm \
+ %D%/packages/disk.scm \
+ %D%/packages/distributed.scm \
%D%/packages/display-managers.scm \
%D%/packages/django.scm \
%D%/packages/djvu.scm \
@@ -534,6 +535,7 @@ GNU_SYSTEM_MODULES = \
%D%/services/authentication.scm \
%D%/services/games.scm \
%D%/services/getmail.scm \
+ %D%/services/guix.scm \
%D%/services/kerberos.scm \
%D%/services/lirc.scm \
%D%/services/virtualization.scm \
@@ -598,6 +600,7 @@ GNU_SYSTEM_MODULES = \
%D%/tests/desktop.scm \
%D%/tests/dict.scm \
%D%/tests/docker.scm \
+ %D%/tests/guix.scm \
%D%/tests/monitoring.scm \
%D%/tests/nfs.scm \
%D%/tests/install.scm \
@@ -707,7 +710,6 @@ dist_patch_DATA = \
%D%/packages/patches/bash-completion-directories.patch \
%D%/packages/patches/bastet-change-source-of-unordered_set.patch \
%D%/packages/patches/bazaar-CVE-2017-14176.patch \
- %D%/packages/patches/beets-python-3.7-fix.patch \
%D%/packages/patches/beignet-correct-file-names.patch \
%D%/packages/patches/benchmark-unbundle-googletest.patch \
%D%/packages/patches/biber-fix-encoding-write.patch \
@@ -763,6 +765,8 @@ dist_patch_DATA = \
%D%/packages/patches/dbus-c++-gcc-compat.patch \
%D%/packages/patches/dbus-c++-threading-mutex.patch \
%D%/packages/patches/dealii-mpi-deprecations.patch \
+ %D%/packages/patches/debops-constants-for-external-program-names.patch \
+ %D%/packages/patches/debops-debops-defaults-fall-back-to-less.patch \
%D%/packages/patches/deja-dup-use-ref-keyword-for-iter.patch \
%D%/packages/patches/dfu-programmer-fix-libusb.patch \
%D%/packages/patches/diffutils-gets-undeclared.patch \
@@ -824,9 +828,6 @@ dist_patch_DATA = \
%D%/packages/patches/flint-ldconfig.patch \
%D%/packages/patches/foomatic-filters-CVE-2015-8327.patch \
%D%/packages/patches/foomatic-filters-CVE-2015-8560.patch \
- %D%/packages/patches/freeimage-CVE-2015-0852.patch \
- %D%/packages/patches/freeimage-CVE-2016-5684.patch \
- %D%/packages/patches/freeimage-fix-build-with-gcc-5.patch \
%D%/packages/patches/freeimage-unbundle.patch \
%D%/packages/patches/fuse-overlapping-headers.patch \
%D%/packages/patches/gawk-shell.patch \
@@ -901,10 +902,11 @@ dist_patch_DATA = \
%D%/packages/patches/glibc-versioned-locpath.patch \
%D%/packages/patches/glibc-2.27-git-fixes.patch \
%D%/packages/patches/glibc-2.28-git-fixes.patch \
- %D%/packages/patches/glibc-2.28-supported-locales.patch \
%D%/packages/patches/glibc-2.29-git-updates.patch \
- %D%/packages/patches/glibc-supported-locales.patch \
%D%/packages/patches/glibc-2.27-supported-locales.patch \
+ %D%/packages/patches/glibc-2.28-supported-locales.patch \
+ %D%/packages/patches/glibc-supported-locales.patch \
+ %D%/packages/patches/glm-restore-install-target.patch \
%D%/packages/patches/glusterfs-use-PATH-instead-of-hardcodes.patch \
%D%/packages/patches/gmp-arm-asm-nothumb.patch \
%D%/packages/patches/gmp-faulty-test.patch \
@@ -972,8 +974,8 @@ dist_patch_DATA = \
%D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch \
%D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch \
%D%/packages/patches/id3lib-CVE-2007-4460.patch \
- %D%/packages/patches/idris-test-no-node.patch \
%D%/packages/patches/ilmbase-fix-tests.patch \
+ %D%/packages/patches/ilmbase-openexr-pkg-config.patch \
%D%/packages/patches/inkscape-poppler-0.76.patch \
%D%/packages/patches/intltool-perl-compatibility.patch \
%D%/packages/patches/irrlicht-use-system-libs.patch \
@@ -1180,7 +1182,6 @@ dist_patch_DATA = \
%D%/packages/patches/osip-CVE-2017-7853.patch \
%D%/packages/patches/ots-no-include-missing-file.patch \
%D%/packages/patches/owncloud-disable-updatecheck.patch \
- %D%/packages/patches/p11-kit-jks-timestamps.patch \
%D%/packages/patches/p7zip-CVE-2016-9296.patch \
%D%/packages/patches/p7zip-CVE-2017-17969.patch \
%D%/packages/patches/p7zip-remove-unused-code.patch \
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 327abe455a4..6d5e4b9fccf 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -26,6 +26,7 @@
;;; Copyright © 2019 Brett Gilio
;;; Copyright © 2019 Björn Höfling
;;; Copyright © 2019 Jakob L. Kreuze
+;;; Copyright © 2019 Hartmut Goebel
;;;
;;; This file is part of GNU Guix.
;;;
@@ -60,6 +61,7 @@
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages check)
+ #:use-module (gnu packages crypto)
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages dns)
#:use-module (gnu packages file)
@@ -112,6 +114,7 @@
#:use-module (gnu packages boost)
#:use-module (gnu packages elf)
#:use-module (gnu packages mpi)
+ #:use-module (gnu packages version-control)
#:use-module (gnu packages web))
(define-public aide
@@ -1903,6 +1906,101 @@ ad hoc task execution, and multinode orchestration---including trivializing
things like zero-downtime rolling updates with load balancers.")
(license license:gpl3+)))
+(define-public debops
+ (package
+ (name "debops")
+ (version "1.1.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/debops/debops")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "052b2dykdn35pdpn9s4prawl6nl6yzih8nyf54hpvhpisvjrm1v5"))
+ (patches
+ (search-patches "debops-constants-for-external-program-names.patch"
+ "debops-debops-defaults-fall-back-to-less.patch"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("git" ,git)))
+ (inputs
+ `(("ansible" ,ansible)
+ ("encfs" ,encfs)
+ ("fuse" ,fuse)
+ ("util-linux" ,util-linux) ;; for umount
+ ("findutils" ,findutils)
+ ("gnupg" ,gnupg)
+ ("which" ,which)))
+ (propagated-inputs
+ `(("python-future" ,python-future)
+ ("python-distro" ,python-distro)))
+ (arguments
+ `(#:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'nuke-debops-update
+ (lambda _
+ (chmod "bin/debops-update" #o755) ; FIXME work-around git-fetch issue
+ (with-output-to-file "bin/debops-update"
+ (lambda ()
+ (format #t "#!/bin/sh
+echo 'debops is installed via guix. guix-update is useless in this case.
+Please use `guix package -u debops` instead.'")))
+ #t))
+ ;; patch shebangs only in actuall scripts, not in files included in
+ ;; roles (which are to be delivered to the targte systems)
+ (delete `patch-generated-file-shebangs)
+ (replace 'patch-source-shebangs
+ (lambda _
+ (for-each patch-shebang
+ (find-files "bin"
+ (lambda (file stat)
+ ;; Filter out symlinks.
+ (eq? 'regular (stat:type stat)))
+ #:stat lstat))))
+ (add-after 'unpack 'fix-paths
+ (lambda _
+ (define (substitute-program-names file)
+ ;; e.g. ANSIBLE_PLAYBOOK = '/gnu/store/…/bin/ansible-playbook'
+ (for-each
+ (lambda (name)
+ (let ((varname (string-upcase
+ (string-map
+ (lambda (c) (if (char=? c #\-) #\_ c))
+ name))))
+ (substitute* file
+ (((string-append "^(" varname " = )'.*'") line prefix)
+ (string-append prefix "'" (which name) "'")))))
+ '("ansible-playbook" "encfs" "find" "fusermount"
+ "umount" "gpg" "ansible" "which")))
+ (for-each substitute-program-names
+ '("bin/debops"
+ "bin/debops-padlock"
+ "bin/debops-task"
+ "debops/__init__.py"
+ "debops/cmds/__init__.py"))
+ #t)))))
+ (home-page "https://www.debops.org/")
+ (synopsis "Collection of general-purpose Ansible roles")
+ (description "The Ansible roles provided by that can be used to manage
+Debian or Ubuntu hosts. In addition, a default set of Ansible playbooks can
+be used to apply the provided roles in a controlled way, using Ansible
+inventory groups.
+
+The roles are written with a high customization in mind, which can be done
+using Ansible inventory. This way the role and playbook code can be shared
+between multiple environments, with different configuration in to each one.
+
+Services can be managed on a single host, or spread between multiple hosts.
+DebOps provides support for different SQL and NoSQL databases, web servers,
+programming languages and specialized applications useful in a data center
+environment or in a cluster. The project can also be used to deploy
+virtualization environments using KVM/libvirt, Docker or LXC technologies to
+manage virtual machines and/or containers.")
+ (license license:gpl3+)))
+
(define-public emacs-ansible-doc
(let ((commit "86083a7bb2ed0468ca64e52076b06441a2f8e9e0"))
(package
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index b235e1bc781..520728b52c4 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -357,7 +357,7 @@ menu to select one of the installed operating systems.")
(define-public dtc
(package
(name "dtc")
- (version "1.5.0")
+ (version "1.5.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -365,7 +365,7 @@ menu to select one of the installed operating systems.")
"dtc-" version ".tar.xz"))
(sha256
(base32
- "0wh10p42hf5403ipvs0dsxddb6kzfyk2sq4fgid9zqzpr51y8wn6"))))
+ "07q3mdsvl4smbiakriq3hnsyyd0q344lsm306q0kgz4hjq1p82v6"))))
(build-system gnu-build-system)
(native-inputs
`(("bison" ,bison)
@@ -379,6 +379,11 @@ menu to select one of the installed operating systems.")
(arguments
`(#:make-flags
(list "CC=gcc"
+
+ ;; /bin/fdt{get,overlay,put} need help finding libfdt.so.1.
+ (string-append "LDFLAGS=-Wl,-rpath="
+ (assoc-ref %outputs "out") "/lib")
+
(string-append "PREFIX=" (assoc-ref %outputs "out"))
(string-append "SETUP_PREFIX=" (assoc-ref %outputs "out"))
"INSTALL=install")
diff --git a/gnu/packages/cluster.scm b/gnu/packages/cluster.scm
index 8b99a213562..9548352d123 100644
--- a/gnu/packages/cluster.scm
+++ b/gnu/packages/cluster.scm
@@ -35,7 +35,7 @@
(define-public keepalived
(package
(name "keepalived")
- (version "2.0.5")
+ (version "2.0.18")
(source (origin
(method url-fetch)
(uri (string-append
@@ -43,7 +43,7 @@
version ".tar.gz"))
(sha256
(base32
- "021a7c1lq4aqx7dbwhlm5km6w039hapfzp5hf6wb5bfq79s25g38"))))
+ "1l2g0bzzbah9svfpwa0b9dgvwfv85r2y3qdr54822hg5p2qs48ql"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@@ -52,7 +52,7 @@
(lambda _
(invoke "make" "-C" "doc" "texinfo")
;; Put images in a subdirectory as recommended by 'texinfo'.
- (install-file "doc/build/texinfo/software_design.png"
+ (install-file "doc/source/images/software_design.png"
"doc/build/texinfo/keepalived-figures")
(substitute* "doc/build/texinfo/keepalived.texi"
(("@image\\{software_design,")
@@ -63,7 +63,7 @@
(let* ((out (assoc-ref outputs "out"))
(infodir (string-append out "/share/info")))
(install-file "doc/build/texinfo/keepalived.info" infodir)
- (install-file "doc/build/texinfo/software_design.png"
+ (install-file "doc/source/images/software_design.png"
(string-append infodir "/keepalived-figures"))
#t))))))
(native-inputs
@@ -74,7 +74,7 @@
`(("openssl" ,openssl)
("libnfnetlink" ,libnfnetlink)
("libnl" ,libnl)))
- (home-page "http://www.keepalived.org/")
+ (home-page "https://www.keepalived.org/")
(synopsis "Load balancing and high-availability frameworks")
(description
"Keepalived provides frameworks for both load balancing and high
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 64d995b8fd3..c4298c1e951 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -22,7 +22,7 @@
;;; Copyright © 2017 Julien Lepiller
;;; Copyright © 2018 Rutger Helling
;;; Copyright © 2018 Joshua Sierles, Nextjournal
-;;; Copyright © 2018 Pierre Neidhardt
+;;; Copyright © 2018, 2019 Pierre Neidhardt
;;; Copyright © 2019 Nicolas Goaziou
;;;
;;; This file is part of GNU Guix.
@@ -48,6 +48,7 @@
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system trivial)
#:use-module (gnu packages)
#:use-module (gnu packages assembly)
#:use-module (gnu packages autotools)
@@ -2048,3 +2049,50 @@ external compressors: the compressor to be used for each format is configurable
at run time, and must be installed separately.")
(license (list license:bsd-2 ; arg_parser.{cc,h}
license:gpl2+)))) ; the rest
+
+(define-public makeself-safeextract
+ (let ((commit "1a95e121fa8e3c02d307ae37b9b7834e616c3683"))
+ (package
+ (name "makeself-safeextract")
+ (version (git-version "0.0.0" "1" commit))
+ (home-page "https://github.com/ssokolow/makeself_safeextract")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1anlinaj9lvfi8bn00wp11vzqq0f9sig4fm9yrspisx31v0z4a2c"))))
+ (build-system trivial-build-system)
+ (inputs
+ `(("python" ,python-2)
+ ("p7zip" ,p7zip)
+ ("unzip" ,unzip)))
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let* ((name "makeself_safeextract")
+ (source (string-append (assoc-ref %build-inputs "source")
+ "/" name ".py"))
+ (bin (string-append (assoc-ref %outputs "out") "/bin"))
+ (target (string-append bin "/" name))
+ (python (string-append (assoc-ref %build-inputs "python") "/bin"))
+ (7z (string-append (assoc-ref %build-inputs "p7zip") "/bin/7z"))
+ (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
+ (setenv "PATH" (string-append (getenv "PATH") ":" python))
+ (mkdir-p bin)
+ (copy-file source target)
+ (substitute* target
+ (("'7z'") (format #f "'~a'" 7z))
+ (("'unzip'") (format #f "'~a'" unzip)))
+ (patch-shebang target)))))
+ (synopsis "Extract makeself and mojo archives without running untrusted code")
+ (description "This package provides a script to unpack self-extracting
+archives generated by @command{makeself} or @command{mojo} without running the
+possibly untrusted extraction shell script.")
+ (license license:gpl3+))))
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index cb0be4aedd8..89a581cb5ea 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -15610,3 +15610,30 @@ deprecated, and defunct). It makes it easy to insert badges corresponding to
these stages in your documentation. Usage of deprecated functions are
signalled with increasing levels of non-invasive verbosity.")
(license license:gpl3)))
+
+(define-public r-assertable
+ (package
+ (name "r-assertable")
+ (version "0.2.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "assertable" version))
+ (sha256
+ (base32
+ "0jjd6ylh26fykzzv1q2lbajzfj07lyxwb3b3xmr2zdg2fp5b2w4c"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-data-table" ,r-data-table)))
+ (home-page "https://cran.r-project.org/web/packages/assertable/")
+ (synopsis "Verbose assertions for tabular data (data.frames and data.tables)")
+ (description "This package provides simple, flexible assertions on
+data.frame or data.table objects with verbose output for vetting. While other
+assertion packages apply towards more general use-cases, @code{assertable} is
+tailored towards tabular data. It includes functions to check variable names
+and values, whether the dataset contains all combinations of a given set of
+unique identifiers, and whether it is a certain length. In addition,
+@code{assertable} includes utility functions to check the existence of target
+files and to efficiently import multiple tabular data files into one
+data.table.")
+ (license license:gpl3)))
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index cf531425333..4de07451907 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -402,7 +402,7 @@ systems. Output format is completely customizable.")
(define-public f3
(package
(name "f3")
- (version "7.1")
+ (version "7.2")
(source
(origin
(method git-fetch)
@@ -411,8 +411,7 @@ systems. Output format is completely customizable.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32
- "0zglsmz683jg7f9wc6vmgljyg9w87pbnjw5x4w6x02w8233zvjqf"))))
+ (base32 "1iwdg0r4wkgc8rynmw1qcqz62l0ldgc8lrazq33msxnk5a818jgy"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no check target
diff --git a/gnu/packages/distributed.scm b/gnu/packages/distributed.scm
new file mode 100644
index 00000000000..0eaa1d8b831
--- /dev/null
+++ b/gnu/packages/distributed.scm
@@ -0,0 +1,95 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Brant Gardner
+;;;
+;;; 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 .
+
+(define-module (gnu packages distributed)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module (guix build-system gnu)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages autotools)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages databases)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages curl)
+ #:use-module (gnu packages wxwidgets)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages sqlite)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages python-xyz))
+
+(define-public boinc-client
+ (package
+ (name "boinc-client")
+ (version "7.16.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/boinc/boinc.git")
+ (commit (string-append "client_release/"
+ "7.16/"
+ version))))
+ (sha256
+ (base32
+ "0w2qimcwyjhapk3z7zyq7jkls23hsnmm35iw7m4s4if04fp70dx0"))))
+ (build-system gnu-build-system)
+ (arguments '(#:configure-flags '("--disable-server")))
+ (inputs `(("openssl" ,openssl)
+ ("curl" ,curl)
+ ("wxwidgets" ,wxwidgets)
+ ("gtk+" ,gtk+)
+ ("gdk-pixbuf" ,gdk-pixbuf)
+ ("libnotify" ,libnotify)
+ ("sqlite" ,sqlite)
+ ("python" ,python)
+ ("python-pyserial" ,python-pyserial)))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)))
+ (synopsis "BOINC lets you help cutting-edge science research using your computer")
+ (description "BOINC is a platform for high-throughput computing on a large
+scale (thousands or millions of computers). It can be used for volunteer
+computing (using consumer devices) or grid computing (using organizational
+resources). It supports virtualized, parallel, and GPU-based applications.
+
+BOINC is distributed under the LGPL open source license. It can be used for
+commercial purposes, and applications need not be open source.")
+ (home-page "https://boinc.berkeley.edu/")
+ (license license:gpl3+)))
+
+(define-public boinc-server
+ (package (inherit boinc-client)
+ (name "boinc-server")
+ (arguments '(#:configure-flags '("--disable-client" "--disable-manager")
+ #:parallel-build? #f
+ #:tests? #f)) ; FIXME: Looks like bad test syntax in the
+ ; source package, 2 tests fail. Disable for
+ ; now.
+ (inputs `(("openssl" ,openssl)
+ ("curl" ,curl)
+ ("mariadb" ,mariadb)
+ ("zlib" ,zlib)))
+ (propagated-inputs `(("python" ,python-wrapper)
+ ("perl" ,perl)))))
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 488712bd48e..2a9abaee369 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -89,6 +89,7 @@
#:use-module (gnu packages cmake)
#:use-module (gnu packages code)
#:use-module (gnu packages databases)
+ #:use-module (gnu packages dictionaries)
#:use-module (gnu packages emacs)
#:use-module (gnu packages guile)
#:use-module (gnu packages gtk)
@@ -771,32 +772,45 @@ supports type hints, definition-jumping, completion, and more.")
(license license:gpl3+))))
(define-public emacs-flycheck
- (package
- (name "emacs-flycheck")
- (version "31")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/flycheck/flycheck/releases/download/"
- version "/flycheck-" version ".tar"))
- (sha256
- (base32
- "01rnwan16m7cyyrfca3c5c60mbj2r3knkpzbhji2fczsf0wns240"))
- (modules '((guix build utils)))
- (snippet `(begin
- ;; Change 'flycheck-version' so that it does not
- ;; attempt to get its version from pkg-info.el.
- (substitute* "flycheck.el"
- (("\\(pkg-info-version-info 'flycheck\\)")
- (string-append "\"" ,version "\"")))
- #t))))
- (build-system emacs-build-system)
- (propagated-inputs
- `(("emacs-dash" ,emacs-dash)))
- (home-page "https://www.flycheck.org")
- (synopsis "On-the-fly syntax checking")
- (description
- "This package provides on-the-fly syntax checking for GNU Emacs. It is a
+ ;; last release version was more than 300 commits ago
+ (let ((commit "0006a59259ebd02c9199ddc87f0e3ce22793a2ea")
+ (revision "1"))
+ (package
+ (name "emacs-flycheck")
+ (version (git-version "31" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/flycheck/flycheck/")
+ (commit commit)))
+ (sha256
+ (base32
+ "09q3h6ldpg528cfbmsbb1x2vf5hmzgm3fshqn6kdy144jxcdjlf1"))
+ (file-name (git-file-name name version))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-dash" ,emacs-dash)))
+ (native-inputs
+ `(("emacs-shut-up" ,emacs-shut-up)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'change-flycheck-version
+ (lambda _
+ (substitute* "flycheck.el"
+ (("\\(pkg-info-version-info 'flycheck\\)")
+ (string-append "\"" ,version "\"")))
+ #t)))
+ ;; TODO: many failing tests
+ #:tests? #f
+ #:test-command '("emacs" "-Q" "--batch" "-L" "."
+ "--load" "test/flycheck-test"
+ "--load" "test/run.el"
+ "-f" "flycheck-run-tests-main")))
+ (home-page "https://www.flycheck.org")
+ (synopsis "On-the-fly syntax checking")
+ (description
+ "This package provides on-the-fly syntax checking for GNU Emacs. It is a
replacement for the older Flymake extension which is part of GNU Emacs, with
many improvements and additional features.
@@ -804,7 +818,7 @@ Flycheck provides fully-automatic, fail-safe, on-the-fly background syntax
checking for over 30 programming and markup languages with more than 70
different tools. It highlights errors and warnings inline in the buffer, and
provides an optional IDE-like error list.")
- (license license:gpl3+))) ;+GFDLv1.3+ for the manual
+ (license license:gpl3+)))) ;+GFDLv1.3+ for the manual
(define-public emacs-a
(package
@@ -3079,6 +3093,60 @@ boundaries defined by syntax highlighting.")
for Flow files.")
(license license:gpl3+))))
+(define-public emacs-flycheck-grammalecte
+ (package
+ (name "emacs-flycheck-grammalecte")
+ (version "0.9")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://git.deparis.io/"
+ "flycheck-grammalecte/snapshot/"
+ "flycheck-grammalecte-" version ".tar.xz"))
+ (sha256
+ (base32
+ "0wjm9xyra870pci4bcrbnc9x66x18mi7iz08rkxa4clxv28xzryb"))))
+ (build-system emacs-build-system)
+ (arguments
+ `(#:include '("\\.(el|py)$")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-python
+ ;; Hardcode python3 executable in the Emacs library.
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((python3 (string-append (assoc-ref inputs "python")
+ "/bin/python3")))
+ (substitute* "flycheck-grammalecte.el"
+ (("python3") python3))
+ #t)))
+ (add-after 'install 'link-to-grammalecte
+ ;; The package expects grammalecte to be in a sub-directory.
+ ;; Symlink it there from the store.
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((grammalecte (assoc-ref inputs "grammalecte"))
+ (out (assoc-ref outputs "out"))
+ (version ,(version-major+minor (package-version python))))
+ (with-directory-excursion
+ (string-append out
+ "/share/emacs/site-lisp/guix.d/"
+ "flycheck-grammalecte-" ,version)
+ (symlink (string-append grammalecte "/lib/"
+ "python" version "/site-packages/"
+ "grammalecte")
+ "grammalecte"))
+ #t))))))
+ (inputs
+ `(("grammalecte" ,grammalecte)
+ ("python" ,python)))
+ (propagated-inputs
+ `(("emacs-flycheck" ,emacs-flycheck)))
+ (home-page "https://git.deparis.io/flycheck-grammalecte/")
+ (synopsis "Integrate Grammalecte with Flycheck")
+ (description "Integrate the French grammar and typography checker
+Grammalecte with Flycheck to automatically look for mistakes in your writings.
+It also provides an easy way to find synonyms and antonyms for a given
+word (to avoid repetitions for example).")
+ (license license:gpl3+)))
+
(define-public emacs-elisp-demos
(package
(name "emacs-elisp-demos")
@@ -3484,27 +3552,31 @@ for the current function or variable in the minibuffer.")
(license license:gpl3+)))
(define-public emacs-company-quickhelp
- (package
- (name "emacs-company-quickhelp")
- (version "2.3.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/expez/company-quickhelp.git")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "08ccsfvwdpzpj0gai3xrdb2bv1nl6myjkxsc5774pbvlq9nkfdvr"))))
- (build-system emacs-build-system)
- (propagated-inputs
- `(("emacs-pos-tip" ,emacs-pos-tip)
- ("emacs-company" ,emacs-company)))
- (home-page "https://github.com/expez/company-quickhelp")
- (synopsis "Popup documentation for completion candidates")
- (description "@code{company-quickhelp} shows documentation for the
+ ;; XXX: release version 2.3.0 is on an unmaintained branch for some reason,
+ ;; so we use the latest 2.2.0 commit instead
+ (let ((commit "479676cade80a9f03802ca3d956591820ed5c537")
+ (revision "1"))
+ (package
+ (name "emacs-company-quickhelp")
+ (version (git-version "2.2.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/expez/company-quickhelp.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0hbqpnaf4hnin3nmdzmfj3v22kk9a97b6zssqs96ns36d9h52xcp"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-pos-tip" ,emacs-pos-tip)
+ ("emacs-company" ,emacs-company)))
+ (home-page "https://github.com/expez/company-quickhelp")
+ (synopsis "Popup documentation for completion candidates")
+ (description "@code{company-quickhelp} shows documentation for the
completion candidate when using the Company text completion framework.")
- (license license:gpl3+)))
+ (license license:gpl3+))))
(define-public emacs-math-symbol-lists
(let ((commit "dc7531cff0c845d5470a50c24d5d7309b2ced7eb")
@@ -5822,14 +5894,14 @@ provides the following features:
(name "emacs-markdown-mode")
(version "2.3")
(source (origin
- (method url-fetch)
- (uri (string-append "https://raw.githubusercontent.com/jrblevin"
- "/markdown-mode/v" version
- "/markdown-mode.el"))
- (file-name (string-append "markdown-mode-" version ".el"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/jrblevin/markdown-mode.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "152whyrq3dqlqy5wv4mdd94kmal19hs5kwaxjcp2gp2r97lsmdmi"))))
+ "1zm1j4w0f3h01bmmpsv4j4mh6i13nnl8fcqlj2hsa1ncy1lgi8q7"))))
(build-system emacs-build-system)
(home-page "http://jblevins.org/projects/markdown-mode/")
(synopsis "Emacs Major mode for Markdown files")
@@ -6184,16 +6256,21 @@ completion, interactive development and more.")
(name "emacs-rainbow-delimiters")
(version "2.1.3")
(source (origin
- (method url-fetch)
- (uri (string-append "https://raw.githubusercontent.com/Fanael"
- "/rainbow-delimiters/" version
- "/rainbow-delimiters.el"))
- (file-name (string-append "rainbow-delimiters-" version ".el"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Fanael/rainbow-delimiters.git")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
(base32
- "1b3kampwsjabhcqdp0khgff13wc5jqhy3rbvaa12vnv7qy22l9ck"))))
+ "0vs9pf8lqq5p5qz1770pxgw47ym4xj8axxmwamn66br59mykdhv0"))))
(build-system emacs-build-system)
(home-page "https://github.com/Fanael/rainbow-delimiters")
+ (arguments
+ `(#:tests? #t
+ #:test-command '("emacs" "-Q" "-batch"
+ "-l" "rainbow-delimiters-test.el"
+ "-f" "ert-run-tests-batch-and-exit")))
(synopsis "Highlight brackets according to their depth")
(description
"Rainbow-delimiters is a \"rainbow parentheses\"-like mode for Emacs which
@@ -6342,15 +6419,16 @@ that uses the standard completion function completing-read.")
(define-public emacs-yaml-mode
(package
(name "emacs-yaml-mode")
- (version "0.0.13")
+ (version "0.0.14")
(source (origin
- (method url-fetch)
- (uri (string-append "https://raw.githubusercontent.com/yoshiki"
- "/yaml-mode/v" version "/yaml-mode.el"))
- (file-name (string-append "yaml-mode-" version ".el"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/yoshiki/yaml-mode.git")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
(base32
- "0im88sk9dqw03x6d6zaspgvg9i0pfpgb8f2zygrmbifh2w4pwmvj"))))
+ "18g064ardqi1f3xz7j6rs1x9fvv9sn0iq9vgid8c6qvxq7gwj00r"))))
(build-system emacs-build-system)
(home-page "https://github.com/yoshiki/yaml-mode")
(synopsis "Major mode for editing YAML files")
@@ -6392,13 +6470,14 @@ via @code{gitlab-ci-lint}.")
(name "emacs-web-mode")
(version "16")
(source (origin
- (method url-fetch)
- (uri (string-append "https://raw.githubusercontent.com/fxbois"
- "/web-mode/v" version "/web-mode.el"))
- (file-name (string-append "web-mode-" version ".el"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/fxbois/web-mode.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "1hs5w7kdvcyn4ihyw1kfjg48djn5p7lz4rlbhzzdqv1g56xqx3gw"))))
+ "17dw6a8d0p304f2sa4f9zwd8r48w2wbkc3fvbmxwlg4w12h7cwf0"))))
(build-system emacs-build-system)
(synopsis "Major mode for editing web templates")
(description "Web-mode is an Emacs major mode for editing web templates
@@ -7094,6 +7173,9 @@ pasting into and from @code{tmux} paste buffers.")
"1r8shfdddys9vqvrxf7s6z83ydqx9xhqs9sa7klbsajryqcp50b7"))))
(build-system emacs-build-system)
(propagated-inputs `(("emacs-evil" ,emacs-evil)))
+ (arguments
+ `(#:tests? #t
+ #:test-command '("make" "test")))
(home-page "https://github.com/redguardtoo/evil-nerd-commenter")
(synopsis "Comment and uncomment lines efficiently")
(description
@@ -7449,42 +7531,75 @@ editing nginx config files.")
(license license:gpl2+)))
(define-public emacs-stream
- (package
- (name "emacs-stream")
- (version "2.2.0")
- (home-page "https://github.com/NicolasPetton/stream")
- (source
- (origin
- (method url-fetch)
- (file-name (string-append name "-" version ".tar.gz"))
- (uri (string-append home-page "/archive/"version ".tar.gz"))
- (sha256
- (base32 "03ql4nqfz5pn55mjly6clhvc3g7x2d28kj7mrlqmigvjbql39xxc"))))
- (build-system emacs-build-system)
- (synopsis "Implementation of streams for Emacs")
- (description "This library provides an implementation of streams for Emacs.
-Streams are implemented as delayed evaluation of cons cells.")
- (license license:gpl3+)))
-
-(define-public emacs-el-search
- (let ((commit "f26277bfbb3fc3fc74beea6592f294c439796bd4")
+ (let ((commit "a3f3da155a49c133e2692bd8789b35492bfdc4f7")
(revision "1"))
(package
- (name "emacs-el-search")
- ;; No ufficial release.
- (version (string-append "0.0-" revision "." (string-take commit 7)))
- (home-page "https://github.com/emacsmirror/el-search")
+ (name "emacs-stream")
+ (version (git-version "2.2.4" revision commit))
(source
(origin
(method git-fetch)
- (file-name (string-append name "-" version ".tar.gz"))
(uri (git-reference
- (commit commit)
- (url (string-append home-page ".git"))))
+ (url "https://github.com/Emacsmirror/stream.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
(sha256
- (base32 "12xf40h9sb7xxg2r97gsia94q02543mgiiiw46fzh1ac7b7993g6"))))
+ (base32 "0aig0yjb9z752ijh0mzildjmh44j051inchga8qll01dr8wf7332"))))
(build-system emacs-build-system)
- (inputs `(("emacs-stream" ,emacs-stream)))
+ (arguments
+ `(#:tests? #t
+ #:test-command '("emacs" "--batch"
+ "-l" "tests/stream-tests.el"
+ "-f" "ert-run-tests-batch-and-exit")))
+ (home-page "https://github.com/Emacsmirror/stream")
+ (synopsis "Implementation of streams for Emacs")
+ (description "This library provides an implementation of streams for Emacs.
+Streams are implemented as delayed evaluation of cons cells.")
+ (license license:gpl3+))))
+
+(define-public emacs-cl-print
+ (let ((commit "1a70c553dfb04352afb5b8696fe0cef8acc8f991")
+ (revision "1"))
+ (package
+ (name "emacs-cl-print")
+ (version (git-version "1.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/emacsmirror/cl-print.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "164zbnsi5mssvcpy0158fm7fw5cmd1r5nkpn29fmd2b2scy3gm79"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/emacsmirror/cl-print")
+ (synopsis "CL-style generic printing")
+ (description "This package provides a generic function,
+@code{cl-print-object}, to which the programmer can add any method they
+please.")
+ (license license:gpl3+))))
+
+(define-public emacs-el-search
+ (let ((commit "07bed84dd8ae9e4c6c648834224b1d33fdbd51e0")
+ (revision "2"))
+ (package
+ (name "emacs-el-search")
+ (version (git-version "1.12.6.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/emacsmirror/el-search.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "10w1ldgijdhfsrazp0y3bm76jv5wvdn94k1yp0pmc2m1896b58ak"))))
+ (build-system emacs-build-system)
+ (inputs
+ `(("emacs-stream" ,emacs-stream)
+ ("emacs-cl-print" ,emacs-cl-print)))
+ (home-page "https://github.com/emacsmirror/el-search")
(synopsis "Expression based interactive search for emacs-lisp-mode")
(description "This package provides expression based interactive search
procedures for emacs-lisp-mode.")
@@ -8604,14 +8719,14 @@ which code derived from Kelvin H's org-page.")
(define-public emacs-xelb
(package
(name "emacs-xelb")
- (version "0.17")
+ (version "0.18")
(source (origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/xelb-"
version ".tar"))
(sha256
(base32
- "0k98580vq253fjdgklgqlwl450saninfw39fbq8lv3xsnp3dcgml"))))
+ "1fp5mzl63sh0h3ws4l5p4qgvi7ny8a3fj6k4dhqa98xgw2bx03v7"))))
(build-system emacs-build-system)
;; The following functions and variables needed by emacs-xelb are
;; not included in emacs-minimal:
@@ -8643,7 +8758,7 @@ It should enable you to implement low-level X11 applications.")
(define-public emacs-exwm
(package
(name "emacs-exwm")
- (version "0.22")
+ (version "0.23")
(synopsis "Emacs X window manager")
(source (origin
(method url-fetch)
@@ -8651,7 +8766,7 @@ It should enable you to implement low-level X11 applications.")
version ".tar"))
(sha256
(base32
- "0lppm8ng37i5s4x7xdrxhjbdcnpl6pyvn4g7w52zbckjsn8qnqh0"))))
+ "05w1v3wrp1lzz20zd9lcvr5nhk809kgy6svvkbs15xhnr6x55ad5"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-xelb" ,emacs-xelb)))
@@ -8926,6 +9041,9 @@ pressed simultaneously or a single key quickly pressed twice.")
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-evil" ,emacs-evil)))
+ (arguments
+ `(#:tests? #t
+ #:test-command '("make" "test")))
(home-page "https://github.com/emacs-evil/evil-surround")
(synopsis "Easily modify surrounding parentheses and quotes")
(description "@code{emacs-evil-surround} allows easy deletion, change and
@@ -9794,12 +9912,11 @@ well as Github-style emojis like @code{:smile:}. It provides a minor mode
(license license:gpl3+)))
(define-public emacs-make-it-so
- (let ((commit "bc3b01d6b9ed6ff66ebbd524234f9d6df60dd4be")
- (version "0.1.0")
- (revision "1"))
+ (let ((commit "b73dfb640588123c9eece230ad72b37604f5c126")
+ (revision "2"))
(package
(name "emacs-make-it-so")
- (version (git-version version revision commit))
+ (version (git-version "0.1.0" revision commit))
(source
(origin
(method git-fetch)
@@ -9808,7 +9925,7 @@ well as Github-style emojis like @code{:smile:}. It provides a minor mode
(commit commit)))
(sha256
(base32
- "0833bzlscpnkvjnrg3g54yr246afbjwri8n5wxk8drnsq6acvd8z"))))
+ "0p6xhyinzzkrwzbpxqfm8hlii0ikvmmylya240bwsa77w0g1k6xq"))))
(build-system emacs-build-system)
(arguments
`(#:include (cons "^recipes/" %default-include)))
@@ -9907,6 +10024,12 @@ database of references on life sciences.")
(base32
"1dgrf7na6r6mmkknphzshlbd5fnzisg0qn0j7vfpa38wgsymaq52"))))
(build-system emacs-build-system)
+ (arguments
+ `(#:tests? #t
+ ;; TODO: also enable websocket-functional-test.el
+ #:test-command '("emacs" "--batch"
+ "-l" "websocket-test.el"
+ "-f" "ert-run-tests-batch-and-exit")))
(home-page "http://elpa.gnu.org/packages/websocket.html")
(synopsis "Emacs WebSocket client and server")
(description "This is an Elisp library for WebSocket clients to talk to
@@ -9944,7 +10067,7 @@ value of the access token.")
(define-public emacs-circe
(package
(name "emacs-circe")
- (version "2.10")
+ (version "2.11")
(source
(origin
(method git-fetch)
@@ -9953,8 +10076,7 @@ value of the access token.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32
- "10gi14kwxd81blddpvqh95lgmpbfgp0m955naxix3bs3r6a75n4s"))))
+ (base32 "0cr9flk310yn2jgvj4hbqw9nj5wlfi0fazdkqafzidgz6iq150wd"))))
(build-system emacs-build-system)
(arguments
`(#:tests? #t
@@ -10531,7 +10653,7 @@ the format.")
(define-public emacs-nov-el
(package
(name "emacs-nov-el")
- (version "0.2.6")
+ (version "0.2.9")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -10540,7 +10662,7 @@ the format.")
(file-name (git-file-name name version))
(sha256
(base32
- "188h5gzn1zf443g0b7q5bpmvvpr6ds5h8aci8vxc92py56rhyrvc"))))
+ "0v01l1p35mcigixs6j4c5bpc7n7bd51kxa0p3l1xl0gr92774yq3"))))
(build-system emacs-build-system)
(arguments
`(#:phases
@@ -12625,16 +12747,16 @@ powerful Org contents.")
(define-public emacs-org-re-reveal
(package
(name "emacs-org-re-reveal")
- (version "1.0.3")
+ (version "2.5.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/oer/org-re-reveal.git")
- (commit "50cc6574c77f12d423f6cd096d8f76feb3673abc")))
+ (commit version)))
(file-name (git-file-name name version))
(sha256
(base32
- "1v3z30gpimg4spf6zzqwp9b597zxk89h0vpq6xp58js4rjg4ixk8"))))
+ "1zbz6hbddxbb264ibmhc04cmnpk17kb50jpn5l8878q4hxw5wwy2"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-htmlize" ,emacs-htmlize)
@@ -14067,10 +14189,11 @@ Org-mode file, and citations of Zotero items in Pandoc Markdown files.")
(deprecated-package "emacs-evil-ediff" emacs-evil-collection))
(define-public emacs-evil-magit
- (let ((commit "e2fec5877994c0c19f0c25fa01f3d22cb0ab38ba"))
+ (let ((commit "4b66a1db8285457147a5436f209391016a819ea1")
+ (revision "3"))
(package
(name "emacs-evil-magit")
- (version (git-version "0.4.2" "2" commit))
+ (version (git-version "0.4.2" revision commit))
(source
(origin
(method git-fetch)
@@ -14080,11 +14203,17 @@ Org-mode file, and citations of Zotero items in Pandoc Markdown files.")
(file-name (git-file-name name version))
(sha256
(base32
- "134v7s03jvbhm70mavwab85r09i68g2a5bvriirh0chz1av2y16v"))))
+ "0kkmbswfh34k3amfl3v140vsnz1gq4n4mg9g4khjd9yjph3zms4h"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-evil" ,emacs-evil)
("magit" ,emacs-magit)))
+ (arguments
+ `(#:tests? #t
+ #:test-command '("emacs" "-Q" "-batch"
+ "-L" "."
+ "-l" "evil-magit-tests"
+ "-f" "ert-run-tests-batch-and-exit")))
(home-page
"https://github.com/emacs-evil/evil-magit")
(synopsis "Evil-based key bindings for Magit")
@@ -14727,21 +14856,21 @@ file.")
(deprecated-package "emacs-wgrep-helm" emacs-wgrep))
(define-public emacs-mu4e-conversation
- (let ((commit "e7d4bfcb0d392b0aed1f705ccac2419a168d1f5e"))
+ (let ((commit "98110bb9c300fc9866dee8e0023355f9f79c9b96")
+ (revision "5"))
(package
(name "emacs-mu4e-conversation")
- (version (git-version "20181126" "4" commit))
+ (version (git-version "0.0.1" revision commit))
(source
(origin
- (method url-fetch)
- (uri (string-append
- "https://gitlab.com/Ambrevar/mu4e-conversation/"
- "repository/archive.tar.gz?ref="
- commit))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/Ambrevar/mu4e-conversation.git")
+ (commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
- "0b52hf9rm2afba9pvgink9bwqm705sk0y5qikp0ff5sk53wqvy29"))))
+ "080s96jkcw2p288sp1vgds91rgl693iz6hi2dv56p2ih0nnivwlg"))))
(build-system emacs-build-system)
(propagated-inputs
`(("mu" ,mu)))
@@ -15066,37 +15195,31 @@ files. It focuses on highlighting the document to improve readability.")
(license license:gpl2+)))
(define-public emacs-rust-mode
- (let ((commit
- ;; Last release is old (2016), use more recent commit to get bug
- ;; fixes.
- "64b4a2450e4d4c47f6307851c9b2598cd2254d68")
- (revision "0"))
- (package
- (name "emacs-rust-mode")
- (version (git-version "0.3.0" revision commit))
- (source (origin
- (method git-fetch)
- (uri
- (git-reference
- (url "https://github.com/rust-lang/rust-mode")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0pbz36lljgb7bdgx3h3g0pq1nss1kvn8mhk1l3mknsmynd6w4nd8"))))
- (build-system emacs-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "sh" "run_rust_emacs_tests.sh"))))))
- (home-page "https://github.com/rust-lang/rust-mode")
- (synopsis "Major Emacs mode for editing Rust source code")
- (description "This package provides a major Emacs mode for editing Rust
+ (package
+ (name "emacs-rust-mode")
+ (version "0.4.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/rust-lang/rust-mode")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0bcrklyicxh032rrp585rl5mxd26nb61dp6r5bl935rlcmxzsczh"))))
+ (build-system emacs-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "sh" "run_rust_emacs_tests.sh"))))))
+ (home-page "https://github.com/rust-lang/rust-mode")
+ (synopsis "Major Emacs mode for editing Rust source code")
+ (description "This package provides a major Emacs mode for editing Rust
source code.")
- (license (list license:expat
- license:asl2.0)))))
+ (license (list license:expat
+ license:asl2.0))))
(define-public emacs-ztree
(let ((commit "c54425a094353ec40a8179f9eab3596f76c6cf94"))
@@ -15322,10 +15445,11 @@ News homepage.")
(license license:gpl3))))
(define-public emacs-youtube-dl
- (let ((commit "7c9d7a7d05b72a7d1b1257a36c5e2b2567b185dd"))
+ (let ((commit "af877b5bc4f01c04fccfa7d47a2c328926f20ef4")
+ (revision "2"))
(package
(name "emacs-youtube-dl")
- (version (git-version "1.0" "1" commit))
+ (version (git-version "1.0" "2" commit))
(source
(origin
(method git-fetch)
@@ -15335,7 +15459,7 @@ News homepage.")
(file-name (git-file-name name version))
(sha256
(base32
- "0mh4s089a4x8s380agzb2306kdp1hl204px1n5rrrrdcls7imnh6"))))
+ "0zkl9jkjbx0lmp9ylv4rqg1zwqibk053s4rp7s1h0i18nzk7vn8j"))))
(build-system emacs-build-system)
(inputs
`(("youtube-dl" ,youtube-dl)))
@@ -15529,6 +15653,30 @@ as better scaling of and anti aliasing of the icons.")
(license
(list license:expat license:gpl3+ license:silofl1.1 license:asl2.0))))
+(define-public emacs-wttrin
+ (let ((commit "df5427ce2a5ad4dab652dbb1c4a1834d7ddc2abc")
+ (revision "1"))
+ (package
+ (name "emacs-wttrin")
+ (version (git-version "0.2.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/bcbcarl/emacs-wttrin.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1ai655f10iayb4vw0ass2j3x83f4vsv90326mnywkzfl3sxd432z"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-xterm-color" ,emacs-xterm-color)))
+ (home-page "https://github.com/bcbcarl/emacs-wttrin")
+ (synopsis "Frontend for weather web service @url{wttr.in}")
+ (description "This package provides local weather information from
+@url{wttr.in}.")
+ (license license:expat))))
+
(define-public emacs-powerline
(package
(name "emacs-powerline")
@@ -16208,6 +16356,32 @@ mode for editing gnuplot scripts. It provides syntax highlighting,
indentation and a command to plot the file.")
(license license:gpl3+)))
+(define-public emacs-cmake-font-lock
+ (let ((commit "e0ceaaae19c13b66f781512e3295bfc6707b56f4")
+ (revision "1"))
+ (package
+ (name "emacs-cmake-font-lock")
+ (version (git-version "0.1.5" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Lindydancer/cmake-font-lock.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "03gsyn95dlmsn15bl353bphi3qy7ccn5bss3f7n97kf38bllh0yf"))))
+ (build-system emacs-build-system)
+ (native-inputs
+ `(("emacs-faceup" ,emacs-faceup)))
+ (arguments
+ `(#:include (cons "^admin\\/" %default-include)))
+ (home-page "https://github.com/Lindydancer/cmake-font-lock")
+ (synopsis "Advanced type-aware syntax-highlighting for CMake")
+ (description "This package highlights function arguments in CMake
+according to their use.")
+ (license license:gpl3+))))
+
(define-public emacs-dtrt-indent
(package
(name "emacs-dtrt-indent")
@@ -16597,10 +16771,10 @@ and code peeking.")
("emacs-lsp-mode" ,emacs-lsp-mode)
("emacs-dash" ,emacs-dash)))
(home-page "https://github.com/emacs-lsp/helm-lsp")
- (synopsis "Convert keyboard macros to Emacs Lisp")
+ (synopsis "Provide LSP-enhanced completion for symbols")
(description
- "This package displays keyboard macros or latest interactive commands
-as Emacs Lisp.")
+ "This package provides completion for symbols from workspaces with a
+LSP-compliant server running.")
(license license:gpl3+))))
(define-public emacs-helm-notmuch
@@ -16997,16 +17171,15 @@ compatible with Emacs' shell modes.")
(define-public emacs-vdiff
(let ((commit "09e15fc932bfd2febe1d4a65780a532394562b07")
- (version "0.2.3")
(revision "1"))
(package
(name "emacs-vdiff")
- (version (git-version version revision commit))
+ (version (git-version "0.2.3" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/justbur/emacs-vdiff/")
+ (url "https://github.com/justbur/emacs-vdiff.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
@@ -17015,6 +17188,11 @@ compatible with Emacs' shell modes.")
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-hydra" ,emacs-hydra)))
+ (arguments
+ `(#:tests? #t
+ #:test-command '("emacs" "-Q" "-batch" "-L" "."
+ "-l" "vdiff-test.el"
+ "-f" "ert-run-tests-batch-and-exit")))
(home-page "https://github.com/justbur/emacs-vdiff/")
(synopsis "Frontend for diffing based on vimdiff")
(description "This package permits comparisons of two or three buffers
@@ -17404,26 +17582,73 @@ and searching through @code{Ctags} files.")
copied into @code{org-mode} buffers.")
(license license:gpl3+))))
-(define-public emacs-helm-dash
- (let ((commit "192b862185df661439a06de644791171e899348a")
- (version "1.3.0")
- (revision "18"))
+(define-public emacs-dash-docs
+ (let ((commit "111fd9b97001f1ad887b45e5308a14ddd68ce70a")
+ (revision "1"))
(package
- (name "emacs-helm-dash")
- (version (git-version version revision commit))
+ (name "emacs-dash-docs")
+ (version (git-version "1.4.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/areina/helm-dash")
+ (url "https://github.com/dash-docs-el/dash-docs.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
- "06am5vnr4hsxkvh2b8q8kb80y5x1h3qyv7gwggswwhfa7w2vba3w"))))
+ "0sckb7z0ylflva212bns7iq9mfnffgjghi0qspsbfwra35zb9xng"))))
(build-system emacs-build-system)
(propagated-inputs
- `(("emacs-helm" ,emacs-helm)))
+ `(("emacs-async" ,emacs-async)))
+ (native-inputs
+ `(("emacs-undercover" ,emacs-undercover)
+ ("emacs-ert-runner" ,emacs-ert-runner)))
+ (arguments
+ `(#:tests? #t
+ #:test-command '("ert-runner")
+ #:phases
+ ;; this test requires network access, so remove it
+ (modify-phases %standard-phases
+ (add-before 'check 'make-tests-writable
+ (lambda _
+ (make-file-writable "test/dash-docs-test.el")
+ #t))
+ (add-before 'check 'delete-test
+ (lambda _
+ (emacs-batch-edit-file "test/dash-docs-test.el"
+ `(progn (progn
+ (goto-char (point-min))
+ (re-search-forward "ert-deftest dash-docs-official-docsets-test")
+ (beginning-of-line)
+ (kill-sexp))
+ (basic-save-buffer)))
+ #t)))))
+ (home-page "https://github.com/dash-docs-el/dash-docs")
+ (synopsis "Offline documentation browser for APIs using Dash docsets")
+ (description "This package exposes functionality to work with Dash docsets.")
+ (license license:gpl3+))))
+
+(define-public emacs-helm-dash
+ (let ((commit "7f853bd34da666f0e9a883011c80f451b06f6c59")
+ (revision "2"))
+ (package
+ (name "emacs-helm-dash")
+ (version (git-version "1.3.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/areina/helm-dash.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0r192vzry1212ihabg9pgw9xar8zdgnbgy0vsgvfm8s5wj6ny7jp"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-helm" ,emacs-helm)
+ ("emacs-dash-docs" ,emacs-dash-docs)))
(home-page "https://github.com/areina/helm-dash")
(synopsis "Offline documentation browser for APIs using Dash docsets")
(description "This package uses Helm to install and navigate through
@@ -17431,28 +17656,26 @@ Dash docsets.")
(license license:gpl3+))))
(define-public emacs-counsel-dash
- (let ((commit "07fa74a94ff4da5b6c8c4810f5e143e701b480d2")
- (version "0.1.3")
- (revision "3"))
+ (let ((commit "24d370be9e94e90d045c49967e19484b9903fce9")
+ (revision "2"))
(package
(name "emacs-counsel-dash")
- (version (git-version version revision commit))
+ (version (git-version "0.1.3" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/nathankot/counsel-dash")
+ (url "https://github.com/dash-docs-el/counsel-dash.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
- "17h2m9zsadq270mkq12kmdzmpbfjiwjbg8n1rg2apqnm1ndgcwf8"))))
+ "18gp7hhgng271c7bh06k9p24zqic0f64j5cicivljmyk9c3nh7an"))))
(build-system emacs-build-system)
(propagated-inputs
- `(("emacs-helm-dash" ,emacs-helm-dash)
- ("emacs-dash" ,emacs-dash)
+ `(("emacs-dash-docs" ,emacs-dash-docs)
("emacs-ivy" ,emacs-ivy)))
- (home-page "https://github.com/nathankot/counsel-dash")
+ (home-page "https://github.com/dash-docs-el/counsel-dash")
(synopsis "Offline documentation browser for APIs using Dash docsets")
(description "This package uses @code{ivy-mode} to install and navigate
through Dash docsets.")
@@ -17836,27 +18059,24 @@ commands in @code{evil-mode}.")
(license license:gpl3+))))
(define-public emacs-xterm-color
- (let ((commit "a452ab38a7cfae97078062ff8885b5d74fd1e5a6")
- (version "1.8")
- (revision "1"))
- (package
- (name "emacs-xterm-color")
- (version (git-version version revision commit))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/atomontage/xterm-color.git")
- (commit commit)))
- (sha256
- (base32
- "02kpajb993yshhjhsizpfcbrcndyzkf4dqfipifhxxng50dhp95i"))
- (file-name (git-file-name name version))))
- (build-system emacs-build-system)
- (home-page "https://github.com/atomontage/xterm-color")
- (synopsis "ANSI & xterm-256 color text property translator for Emacs")
- (description "@code{xterm-color.el} is an ANSI control sequence to
+ (package
+ (name "emacs-xterm-color")
+ (version "1.9")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/atomontage/xterm-color.git")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0i9ivc5xhl5y5v0l18kbhfg8s2abb9zaimyx951b8bc0f5as68xm"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/atomontage/xterm-color")
+ (synopsis "ANSI & xterm-256 color text property translator for Emacs")
+ (description "@code{xterm-color.el} is an ANSI control sequence to
text-property translator.")
- (license license:bsd-2))))
+ (license license:bsd-2)))
(define-public emacs-org-noter
(package
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index 1e4c4a0da84..7678f85ddd6 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -875,30 +875,31 @@ the Raspberry Pi chip.")
(description "This package provides @code{gcc} for VideoCore IV,
the Raspberry Pi chip."))))
-(define-public python2-libmpsse
+(define-public python-libmpsse
(package
- (name "python2-libmpsse")
- (version "1.3")
+ (name "python-libmpsse")
+ (version "1.4")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://storage.googleapis.com/"
- "google-code-archive-downloads/v2/"
- "code.google.com/libmpsse/"
- "libmpsse-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/daym/libmpsse.git")
+ (commit (string-append "v" version))))
+ (file-name "libmpsse-checkout")
(sha256
(base32
- "0jq7nhqq3na8675jnpfcar3pd3dp3adhhc4lw900swkla01a1wh8"))))
+ "14f1kiiia4kfd9mzwx4h63aa8bpz9aknbrrr7mychnsp3arw0z25"))))
(build-system gnu-build-system)
(inputs
`(("libftdi" ,libftdi)
- ("python" ,python-2)))
+ ("python" ,python)))
(native-inputs
`(("pkg-config" ,pkg-config)
("swig" ,swig)
("which" ,base:which)))
(arguments
`(#:tests? #f ; No tests exist.
+ #:parallel-build? #f ; Would be buggy.
#:make-flags
(list (string-append "CFLAGS=-Wall -fPIC -fno-strict-aliasing -g -O2 "
"$(shell pkg-config --cflags libftdi1)"))
@@ -906,28 +907,20 @@ the Raspberry Pi chip."))))
(modify-phases %standard-phases
(add-after 'unpack 'set-environment-up
(lambda* (#:key inputs outputs #:allow-other-keys)
- (chdir "src")
- (setenv "PYDEV" (string-append (assoc-ref inputs "python")
- "/include/python2.7"))
- #t))
- (add-after 'unpack 'patch-global-variable
- (lambda _
- ;; fast_rw_buf was defined in a header file which was making
- ;; the build not reproducible.
- (substitute* "src/fast.c"
- (("^int fast_build_block_buffer") "
-
-unsigned char fast_rw_buf[SPI_RW_SIZE + CMD_SIZE];
-int fast_build_block_buffer"))
- (substitute* "src/mpsse.h"
- (("unsigned char fast_rw_buf.*") "
-"))
- #t))
+ (let ((python (assoc-ref inputs "python")))
+ (chdir "src")
+ (setenv "PYDEV" (string-append python
+ "/include/python"
+ ,(version-major+minor (package-version python))
+ "m"))
+ #t)))
(replace 'install
- (lambda* (#:key outputs make-flags #:allow-other-keys #:rest args)
+ (lambda* (#:key inputs outputs make-flags #:allow-other-keys #:rest args)
(let* ((out (assoc-ref outputs "out"))
(out-python (string-append out
- "/lib/python2.7/site-packages"))
+ "/lib/python"
+ ,(version-major+minor (package-version python))
+ "/site-packages"))
(install (assoc-ref %standard-phases 'install)))
(install #:make-flags (cons (string-append "PYLIB=" out-python)
make-flags))))))))
@@ -938,6 +931,36 @@ MPSSE (Multi-Protocol Synchronous Serial Engine) adapter by FTDI that can do
SPI, I2C, JTAG.")
(license license:gpl2+)))
+(define-public python2-libmpsse
+ (package
+ (inherit python-libmpsse)
+ (name "python2-libmpsse")
+ (arguments
+ (substitute-keyword-arguments (package-arguments python-libmpsse)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (replace 'set-environment-up
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((python (assoc-ref inputs "python")))
+ (chdir "src")
+ (setenv "PYDEV" (string-append python
+ "/include/python"
+ ,(version-major+minor (package-version python-2))))
+ #t)))
+ (replace 'install
+ (lambda* (#:key inputs outputs make-flags #:allow-other-keys #:rest args)
+ (let* ((out (assoc-ref outputs "out"))
+ (out-python (string-append out
+ "/lib/python"
+ ,(version-major+minor (package-version python-2))
+ "/site-packages"))
+ (install (assoc-ref %standard-phases 'install)))
+ (install #:make-flags (cons (string-append "PYLIB=" out-python)
+ make-flags)))))))))
+ (inputs
+ (alist-replace "python" (list python-2)
+ (package-inputs python-libmpsse)))))
+
(define-public picprog
(package
(name "picprog")
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index bb4c1d26bb4..7fc0122faab 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -1137,7 +1137,7 @@ of use.")
("libxt" ,libxt)
("mygui" ,mygui-gl) ; OpenMW does not need Ogre.
("openal" ,openal)
- ("openscenegraph" ,openscenegraph)
+ ("openscenegraph" ,openmw-openscenegraph)
("qtbase" ,qtbase)
("sdl" ,sdl2)
("unshield" ,unshield)))
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 09ca77e69b0..bb9f897e519 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -937,7 +937,7 @@ map display. Downloads map data from a number of websites, including
(define-public xygrib
(package
(name "xygrib")
- (version "1.2.6")
+ (version "1.2.6.1")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -946,7 +946,7 @@ map display. Downloads map data from a number of websites, including
(file-name (git-file-name name version))
(sha256
(base32
- "0qzaaavil2c7mkkai5mg54cv8r452i7psy7cg75qjja96d2d7rbd"))
+ "0xzsm8pr0zjk3f8j880fg5n82jyxn8xf1330qmmq1fqv7rsrg9ia"))
(modules '((guix build utils)))
(snippet
'(begin (delete-file-recursively "data/fonts") #t))))
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 9aaeab6e2ce..fe895d38409 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -10,6 +10,7 @@
;;; Copyright © 2017 Arun Isaac
;;; Copyright © 2017, 2018, 2019 Rutger Helling
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice
+;;; Copyright © 2019 Pierre Neidhardt
;;;
;;; This file is part of GNU Guix.
;;;
@@ -52,6 +53,7 @@
#:use-module (gnu packages xorg)
#:use-module (guix download)
#:use-module (guix git-download)
+ #:use-module (guix hg-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake)
#:use-module (guix build-system meson)
@@ -809,3 +811,81 @@ applications to 3D accelerator hardware in a dedicated server and displays the
rendered output interactively to a thin client located elsewhere on the
network.")
(license license:wxwindows3.1+)))
+
+(define-public mojoshader
+ (let ((changeset "5887634ea695"))
+ (package
+ (name "mojoshader")
+ (version (string-append "20190825" "-" changeset))
+ (source
+ (origin
+ (method hg-fetch)
+ (uri (hg-reference
+ (url "https://hg.icculus.org/icculus/mojoshader/")
+ (changeset changeset)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0ibl4z1696jiifv9j5drir7jm0b5px0vwkwckbi7cfd46p7p6wcy"))))
+ (arguments
+ ;; Tests only for COMPILER_SUPPORT=ON.
+ `(#:tests? #f
+ #:configure-flags '("-DBUILD_SHARED=ON"
+ "-DFLIP_VIEWPORT=ON"
+ "-DDEPTH_CLIPPING=ON")
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib"))
+ (header (string-append out "/include")))
+ (install-file "libmojoshader.so" lib)
+ (for-each (lambda (f)
+ (install-file f header))
+ (find-files "../source" "mojoshader.*\\.h$"))
+ (let ((profiles-header (string-append header "/profiles")))
+ (mkdir-p profiles-header)
+ (rename-file (string-append header "/mojoshader_profile.h")
+ (string-append profiles-header "/mojoshader_profile.h"))))
+ #t)))))
+ (build-system cmake-build-system)
+ (home-page "https://www.icculus.org/mojoshader/")
+ (synopsis "Work with Direct3D shaders on alternate 3D APIs")
+ (description "MojoShader is a library to work with Direct3D shaders on
+alternate 3D APIs and non-Windows platforms. The primary motivation is moving
+shaders to OpenGL languages on the fly. The developer deals with \"profiles\"
+that represent various target languages, such as GLSL or ARB_*_program.
+
+This allows a developer to manage one set of shaders, presumably written in
+Direct3D HLSL, and use them across multiple rendering backends. This also
+means that the developer only has to worry about one (offline) compiler to
+manage program complexity, while MojoShader itself deals with the reduced
+complexity of the bytecode at runtime.
+
+MojoShader provides both a simple API to convert bytecode to various profiles,
+and (optionally) basic glue to rendering APIs to abstract the management of
+the shaders at runtime.")
+ (license license:zlib))))
+
+(define-public mojoshader-with-viewport-flip
+ ;; Changeset c586d4590241 replaced glProgramViewportFlip with
+ ;; glProgramViewportInfo.
+ ;; https://hg.icculus.org/icculus/mojoshader/rev/c586d4590241
+ (let ((changeset "2e37299b13d8"))
+ (package
+ (inherit mojoshader)
+ (name "mojoshader-with-viewport-flip")
+ (version (string-append "20190725" "-" changeset))
+ (source
+ (origin
+ (method hg-fetch)
+ (uri (hg-reference
+ (url "https://hg.icculus.org/icculus/mojoshader/")
+ (changeset changeset)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0ffws7cqbskxwc3hjsnnzq4r2bbf008kdr3b11pa3kr7dsi50y6i"))))
+ (synopsis "Work with Direct3D shaders on alternate 3D APIs (with viewport flip)")
+ (description "This is the last version of the mojoshader library with
+the glProgramViewportFlip before it was replaced with glProgramViewportInfo.")
+ (license license:zlib))))
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index a2f0f2fd8e1..3c2f346837a 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -11,6 +11,7 @@
;;; Copyright © 2018 Alex Vong
;;; Copyright © 2019 Maxim Cournoyer
;;; Copyright © 2019 Giacomo Leidi
+;;; Copyright © 2019 Marius Bakke
;;;
;;; This file is part of GNU Guix.
;;;
@@ -974,3 +975,37 @@ safe to use from any GObject-Introspectable language.
Template-GLib allows you to access properties on GObjects as well as call
simple methods via GObject-Introspection.")
(license license:lgpl2.1+)))
+
+(define-public xdg-dbus-proxy
+ (package
+ (name "xdg-dbus-proxy")
+ (version "0.1.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/flatpak/xdg-dbus-proxy"
+ "/releases/download/" version
+ "/xdg-dbus-proxy-" version ".tar.xz"))
+ (sha256
+ (base32
+ "03sj1h0c2l08xa8phw013fnxr4fgav7l2mkjhzf9xk3dykwxcj8p"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+
+ ;; For tests.
+ ("dbus" ,dbus)
+
+ ;; These are required to build the manual.
+ ("docbook-xml" ,docbook-xml-4.3)
+ ("docbook-xsl" ,docbook-xsl)
+ ("libxml2" ,libxml2)
+ ("xsltproc" ,libxslt)))
+ (inputs
+ `(("glib" ,glib)))
+ (home-page "https://github.com/flatpak/xdg-dbus-proxy")
+ (synopsis "D-Bus connection proxy")
+ (description
+ "xdg-dbus-proxy is a filtering proxy for D-Bus connections. It can be
+used to create D-Bus sockets inside a Linux container that forwards requests
+to the host system, optionally with filters applied.")
+ (license license:lgpl2.1+)))
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 1b94b66b513..a4dddb9d34b 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -15,6 +15,8 @@
;;; Copyright © 2019 Carlo Zancanaro
;;; Copyright © 2019 Steve Sprang
;;; Copyright © 2019 John Soo
+;;; Copyright © 2019 Pierre Neidhardt
+;;; Copyright © 2019 Marius Bakke
;;;
;;; This file is part of GNU Guix.
;;;
@@ -326,18 +328,26 @@ many more.")
(define-public ilmbase
(package
(name "ilmbase")
- (version "2.3.0")
+ (version "2.4.0")
(source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/openexr/openexr/releases"
- "/download/v" version "/ilmbase-"
- version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/openexr/openexr")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name "ilmbase" version))
(sha256
(base32
- "0qiq5bqq9rxhqjiym2k36sx4vq8adgrz6xf6qwizi9bqm78phsa5"))
- (patches (search-patches "ilmbase-fix-tests.patch"))))
- (build-system gnu-build-system)
- (home-page "http://www.openexr.com/")
+ "0g3rz11cvb7gnphp2np9z7bfl7v4dprq4w5hnsvx7yrasgsdyn8s"))
+ (patches (search-patches "ilmbase-fix-tests.patch"
+ "ilmbase-openexr-pkg-config.patch"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (add-after 'unpack 'change-directory
+ (lambda _
+ (chdir "IlmBase")
+ #t)))))
+ (home-page "https://www.openexr.com/")
(synopsis "Utility C++ libraries for threads, maths, and exceptions")
(description
"IlmBase provides several utility libraries for C++. Half is a class
@@ -408,27 +418,26 @@ graphics.")
(define-public openexr
(package
(name "openexr")
- (version "2.3.0")
+ (version (package-version ilmbase))
(source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/openexr/openexr/releases"
- "/download/v" version "/openexr-"
- version ".tar.gz"))
- (sha256
- (base32
- "19jywbs9qjvsbkvlvzayzi81s976k53wg53vw4xj66lcgylb6v7x"))
+ (inherit (package-source ilmbase))
+ (file-name (git-file-name "openexr" version))
(modules '((guix build utils)))
(snippet
'(begin
- (substitute* (find-files "." "tmpDir\\.h")
+ (substitute* (find-files "OpenEXR" "tmpDir\\.h")
(("\"/var/tmp/\"")
"\"/tmp/\""))
#t))))
- (build-system gnu-build-system)
+ (build-system cmake-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'disable-broken-test
+ (add-after 'unpack 'change-directory
+ (lambda _
+ (chdir "OpenEXR")
+ #t))
+ (add-after 'change-directory '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
@@ -444,7 +453,7 @@ graphics.")
(propagated-inputs
`(("ilmbase" ,ilmbase) ;used in public headers
("zlib" ,zlib))) ;OpenEXR.pc reads "-lz"
- (home-page "http://www.openexr.com")
+ (home-page "https://www.openexr.com/")
(synopsis "High-dynamic range file format library")
(description
"OpenEXR is a high dynamic-range (HDR) image file format developed for
@@ -511,7 +520,7 @@ visual effects work for film.")
(define-public openscenegraph
(package
(name "openscenegraph")
- (version "3.6.3")
+ (version "3.6.4")
(source
(origin
(method git-fetch)
@@ -520,7 +529,7 @@ visual effects work for film.")
(commit (string-append "OpenSceneGraph-" version))))
(sha256
(base32
- "0h32z15sa8sbq276j0iib0n707m8bs4p5ji9z2ah411446paad9q"))
+ "0x8hdbzw0b71j91fzp9cwmy9a7ava8v8wwyj8nxijq942vdx1785"))
(file-name (git-file-name name version))))
(properties
`((upstream-name . "OpenSceneGraph")))
@@ -539,6 +548,7 @@ visual effects work for film.")
("unzip" ,unzip)))
(inputs
`(("giflib" ,giflib)
+ ("libjpeg" ,libjpeg) ; Required for the JPEG texture plugin.
("jasper" ,jasper)
("librsvg" ,librsvg)
("libxrandr" ,libxrandr)
@@ -580,6 +590,42 @@ virtual reality, scientific visualization and modeling.")
`(("libjpeg" ,libjpeg)
,@(package-inputs openscenegraph)))))
+
+(define-public openmw-openscenegraph
+ ;; OpenMW prefers its own fork of openscenegraph:
+ ;; https://wiki.openmw.org/index.php?title=Development_Environment_Setup#OpenSceneGraph.
+ (let ((commit "36a962845a2c87a6671fd822157e0729d164e940"))
+ (hidden-package
+ (package
+ (inherit openscenegraph)
+ (version (git-version "3.6" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/OpenMW/osg/")
+ (commit commit)))
+ (file-name (git-file-name (package-name openscenegraph) version))
+ (sha256
+ (base32
+ "05yhgq3qm5q277y32n5sf36vx5nv5qd3zlhz4csgd3a6190jrnia"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments openscenegraph)
+ ((#:configure-flags flags)
+ ;; As per the above wiki link, the following plugins are enough:
+ `(append
+ '("-DBUILD_OSG_PLUGINS_BY_DEFAULT=0"
+ "-DBUILD_OSG_PLUGIN_OSG=1"
+ "-DBUILD_OSG_PLUGIN_DDS=1"
+ "-DBUILD_OSG_PLUGIN_TGA=1"
+ "-DBUILD_OSG_PLUGIN_BMP=1"
+ "-DBUILD_OSG_PLUGIN_JPEG=1"
+ "-DBUILD_OSG_PLUGIN_PNG=1"
+ "-DBUILD_OSG_DEPRECATED_SERIALIZERS=0"
+ ;; The jpeg plugin requires conversion between integers and booleans
+ "-DCMAKE_CXX_FLAGS=-fpermissive")
+ ,flags))))))))
+
(define-public povray
(package
(name "povray")
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 18c567e8b04..1ec161a5995 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -286,6 +286,11 @@ developers consider to have good quality code and correct functionality.")
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; XXX: 13 of 53 tests fail
+
+ ;; FIXME: OpenEXR 2.4.0 requires C++ 11 or later. Remove when the
+ ;; default compiler is >= GCC 5.
+ #:make-flags '("CXXFLAGS=-std=gnu++11")
+
#:configure-flags
(list (string-append "--with-html-dir="
(assoc-ref %outputs "doc")
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 2736b36a380..43a599b503c 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -12,7 +12,7 @@
;;; Copyright © 2016, 2019 Jan Nieuwenhuizen
;;; Copyright © 2017 Andy Wingo
;;; Copyright © 2017 David Thompson
-;;; Copyright © 2017, 2018 Mathieu Othacehe
+;;; Copyright © 2017, 2018, 2019 Mathieu Othacehe
;;; Copyright © 2017 Theodoros Foradis
;;; Copyright © 2017 ng0
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice
@@ -1024,7 +1024,7 @@ microblogging service.")
(define-public guile-parted
(package
(name "guile-parted")
- (version "0.0.1")
+ (version "0.0.2")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -1033,7 +1033,7 @@ microblogging service.")
(file-name (git-file-name name version))
(sha256
(base32
- "1q7425gpjlwi2wvhzq7kw046yyx7v6j6jyzkd1cr861iz34mjwiq"))))
+ "01qmv6xnbbq3wih0dl9bscvca2d7zx7bjiqf35y6dkaqsp8nvdxf"))))
(build-system gnu-build-system)
(arguments
'(#:make-flags
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index a36451fa8cb..2977398880f 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -62,6 +62,7 @@
#:use-module (guix build-system haskell)
#:use-module (guix download)
#:use-module (guix git-download)
+ #:use-module (guix utils)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages))
@@ -6070,6 +6071,24 @@ Megaparsec is a feature-rich package that strikes a nice balance between
speed, flexibility, and quality of parse errors.")
(license license:bsd-2)))
+;;; Idris 1.3.2 requires 'megaparse>=7.0.4' but we'd like to keep the public
+;;; package at the current Stackage LTS version:
+(define-public ghc-megaparsec-7
+ (hidden-package
+ (package
+ (inherit ghc-megaparsec)
+ (version "7.0.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/megaparsec/"
+ "megaparsec-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0bqx1icbmk8s7wmbcdzsgnlh607c7kzg8l80cp02dxr5valjxp7j"))))
+ (arguments (strip-keyword-arguments (list #:cabal-revision)
+ (package-arguments ghc-megaparsec))))))
+
(define-public ghc-memory
(package
(name "ghc-memory")
@@ -6740,6 +6759,24 @@ between 2 and 3 times faster than the Mersenne Twister.")
"This package provides a low-level networking interface.")
(license license:bsd-3)))
+;;; Until we update our default GHC to >=8.6 we cannot update our ghc-network
+;;; package, since the 'cabal-install' package that supports the current
+;;; 'Cabal' module requires 'network==2.6.*'. Here we provide an updated
+;;; version to be used for our idris package.
+(define-public ghc-network-2.8
+ (hidden-package
+ (package
+ (inherit ghc-network)
+ (version "2.8.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/network/"
+ "network-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0im8k51rw3ahmr23ny10pshwbz09jfg0fdpam0hzf2hgxnzmvxb1")))))))
+
(define-public ghc-network-info
(package
(name "ghc-network-info")
diff --git a/gnu/packages/idris.scm b/gnu/packages/idris.scm
index 894a19f0aaf..7e6ee302b07 100644
--- a/gnu/packages/idris.scm
+++ b/gnu/packages/idris.scm
@@ -38,7 +38,7 @@
(define-public idris
(package
(name "idris")
- (version "1.3.1")
+ (version "1.3.2")
(source (origin
(method url-fetch)
(uri (string-append
@@ -46,8 +46,7 @@
"idris-" version "/idris-" version ".tar.gz"))
(sha256
(base32
- "0fn9h58l592j72njwma1ia48h8h87wi2rjqfxs7j2lfmvgfv18fi"))
- (patches (search-patches "idris-test-no-node.patch"))))
+ "0wychzkg0yghd2pp8fqz78vp1ayzks191knfpl7mhh8igsmb6bc7"))))
(build-system haskell-build-system)
(native-inputs ;For tests
`(("perl" ,perl)
@@ -71,8 +70,8 @@
("ghc-fsnotify" ,ghc-fsnotify)
("ghc-ieee754" ,ghc-ieee754)
("ghc-libffi" ,ghc-libffi)
- ("ghc-megaparsec" ,ghc-megaparsec)
- ("ghc-network" ,ghc-network)
+ ("ghc-megaparsec" ,ghc-megaparsec-7)
+ ("ghc-network" ,ghc-network-2.8)
("ghc-optparse-applicative" ,ghc-optparse-applicative)
("ghc-regex-tdfa" ,ghc-regex-tdfa)
("ghc-safe" ,ghc-safe)
diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm
index b3972a2b762..460f35dbae0 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -269,6 +269,10 @@ integrates with various databases on GUI toolkits such as Qt and Tk.")
"-DWITH_CAROTENE=OFF" ; only visible on arm/aarch64
"-DENABLE_PRECOMPILED_HEADERS=OFF"
+ ;; FIXME: OpenEXR requires C++11 or later. Remove this when
+ ;; the default compiler is GCC 7.
+ "-DCMAKE_CXX_FLAGS=-std=gnu++11"
+
;; CPU-Features:
;; See cmake/OpenCVCompilerOptimizations.cmake
;; (CPU_ALL_OPTIMIZATIONS) for a list of all optimizations
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 7b6c8b3e0b8..0026e99f595 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -419,36 +419,66 @@ lossless JPEG manipulations such as rotation, scaling or cropping:
(patches (search-patches "libjxr-fix-function-signature.patch"
"libjxr-fix-typos.patch"))))
(build-system gnu-build-system)
- (arguments '(#:make-flags '("CC=gcc")
- #:tests? #f ; no check target
- #:phases
- (modify-phases %standard-phases
- (delete 'configure) ; no configure script
- ;; The upstream makefile does not include an install phase.
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin"))
- (lib (string-append out "/lib"))
- (include (string-append out "/include/jxrlib")))
- (for-each (lambda (file)
- (install-file file include)
- (delete-file file))
- (append
- '("jxrgluelib/JXRGlue.h"
- "jxrgluelib/JXRMeta.h"
- "jxrtestlib/JXRTest.h"
- "image/sys/windowsmediaphoto.h")
- (find-files "common/include" "\\.h$")))
- (for-each (lambda (file)
- (install-file file lib)
- (delete-file file))
- (find-files "." "\\.a$"))
- (for-each (lambda (file)
- (install-file file bin)
- (delete-file file))
- '("JxrDecApp" "JxrEncApp")))
- #t)))))
+ (arguments
+ '(#:make-flags
+ (list "CC=gcc"
+ ;; A substitute* procedure call would be enough to add the -fPIC
+ ;; flag if there was no file decoding error.
+ ;; The makefile is a "Non-ISO extended-ASCII text, with CRLF line
+ ;; terminators" according to the file(1) utility.
+ (string-append "CFLAGS=-I. -Icommon/include -Iimage/sys -fPIC "
+ "-D__ANSI__ -DDISABLE_PERF_MEASUREMENT -w -O "))
+ #:tests? #f ; no check target
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure) ; no configure script
+ (add-after 'build 'build-shared-library
+ (lambda _
+ ;; The Makefile uses optimization level 1, so the same
+ ;; level is used here for consistency.
+ (invoke "gcc" "-shared" "-fPIC" "-O"
+ ;; Common files.
+ "adapthuff.o" "image.o" "strcodec.o" "strPredQuant.o"
+ "strTransform.o" "perfTimerANSI.o"
+ ;; Decoding files.
+ "decode.o" "postprocess.o" "segdec.o" "strdec.o"
+ "strInvTransform.o" "strPredQuantDec.o" "JXRTranscode.o"
+ ;; Encoding files.
+ "encode.o" "segenc.o" "strenc.o" "strFwdTransform.o"
+ "strPredQuantEnc.o"
+ "-o" "libjpegxr.so")
+ (invoke "gcc" "-shared" "-fPIC" "-O"
+ ;; Glue files.
+ "JXRGlue.o" "JXRMeta.o" "JXRGluePFC.o" "JXRGlueJxr.o"
+ ;; Test files.
+ "JXRTest.o" "JXRTestBmp.o" "JXRTestHdr.o" "JXRTestPnm.o"
+ "JXRTestTif.o" "JXRTestYUV.o"
+ "-o" "libjxrglue.so")))
+ ;; The upstream makefile does not include an install phase.
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (lib (string-append out "/lib"))
+ (include (string-append out "/include/jxrlib")))
+ (for-each (lambda (file)
+ (install-file file include)
+ (delete-file file))
+ (append
+ '("jxrgluelib/JXRGlue.h"
+ "jxrgluelib/JXRMeta.h"
+ "jxrtestlib/JXRTest.h"
+ "image/sys/windowsmediaphoto.h")
+ (find-files "common/include" "\\.h$")))
+ (for-each (lambda (file)
+ (install-file file lib)
+ (delete-file file))
+ (find-files "." "\\.(a|so)$"))
+ (for-each (lambda (file)
+ (install-file file bin)
+ (delete-file file))
+ '("JxrDecApp" "JxrEncApp")))
+ #t)))))
(synopsis "Implementation of the JPEG XR standard")
(description "JPEG XR is an approved ISO/IEC International standard (its
official designation is ISO/IEC 29199-2). This library is an implementation of that standard.")
@@ -893,7 +923,7 @@ supplies a generic doubly-linked list and some string functions.")
(define-public freeimage
(package
(name "freeimage")
- (version "3.17.0")
+ (version "3.18.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -903,7 +933,7 @@ supplies a generic doubly-linked list and some string functions.")
".zip"))
(sha256
(base32
- "12bz57asdcfsz3zr9i9nska0fb6h3z2aizy412qjqkixkginbz7v"))
+ "1z9qwi9mlq69d5jipr3v2jika2g0kszqdzilggm99nls5xl7j4zl"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -911,12 +941,8 @@ supplies a generic doubly-linked list and some string functions.")
(lambda (dir)
(delete-file-recursively (string-append "Source/" dir)))
'("LibJPEG" "LibOpenJPEG" "LibPNG" "LibRawLite"
- ;; "LibJXR"
- "LibWebP" "OpenEXR" "ZLib"))))
- (patches (search-patches "freeimage-unbundle.patch"
- "freeimage-CVE-2015-0852.patch"
- "freeimage-CVE-2016-5684.patch"
- "freeimage-fix-build-with-gcc-5.patch"))))
+ "LibJXR" "LibWebP" "OpenEXR" "ZLib"))))
+ (patches (search-patches "freeimage-unbundle.patch"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@@ -947,15 +973,18 @@ supplies a generic doubly-linked list and some string functions.")
;; We need '-fpermissive' for Source/FreeImage.h.
;; libjxr doesn't have a pkg-config file.
(string-append "CFLAGS+=-O2 -fPIC -fvisibility=hidden -fpermissive "
- ;"-I" (assoc-ref %build-inputs "libjxr") "/include/jxrlib"
- ))
+ "-I" (assoc-ref %build-inputs "libjxr") "/include/jxrlib "
+
+ ;; FIXME: OpenEXR 2.4.0 requires C++11 or later.
+ ;; Remove when the default compiler is > GCC 5.
+ "-std=gnu++11"))
#:tests? #f)) ; no check target
(native-inputs
`(("pkg-config" ,pkg-config)
("unzip" ,unzip)))
(inputs
`(("libjpeg" ,libjpeg)
- ;("libjxr" ,libjxr)
+ ("libjxr" ,libjxr)
("libpng" ,libpng)
("libraw" ,libraw)
("libtiff" ,libtiff)
diff --git a/gnu/packages/license.scm b/gnu/packages/license.scm
index 4003c18acaa..82dbd2dba1f 100644
--- a/gnu/packages/license.scm
+++ b/gnu/packages/license.scm
@@ -18,13 +18,13 @@
;;; along with GNU Guix. If not, see .
(define-module (gnu packages license)
- #:use-module (guix licenses)
#:use-module (gnu packages)
- #:use-module (guix packages)
- #:use-module (guix download)
- #:use-module (guix build-system perl)
#:use-module (gnu packages perl)
- #:use-module (gnu packages perl-check))
+ #:use-module (gnu packages perl-check)
+ #:use-module (guix build-system perl)
+ #:use-module (guix download)
+ #:use-module (guix licenses)
+ #:use-module (guix packages))
;;;
;;; Please: Try to add new module packages in alphabetic order.
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index e13cd4a07e7..f5171970210 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -181,33 +181,33 @@ defconfig. Return the appropriate make target if applicable, otherwise return
(define deblob-scripts-5.2
(linux-libre-deblob-scripts
- "5.2.10"
+ "5.2.17"
(base32 "076fwxlm6jq6z4vg1xq3kr474zz7qk71r90sf9dnfia3rw2pb4fa")
(base32 "0d3pp1bqchqc7vnxr1a56km5r0hzjiiipzz2xc3wgjwfi51k9kxc")))
(define deblob-scripts-4.19
(linux-libre-deblob-scripts
- "4.19.68"
+ "4.19.75"
(base32 "02zs405awaxydbapka4nz8h6lmnc0dahgczqsrs5s2bmzjyyqkcy")
(base32 "1fyacg28aym6virxyn7wk99qil2fjbks3iwm7p3hxy51pccn34za")))
(define deblob-scripts-4.14
(linux-libre-deblob-scripts
- "4.14.140"
+ "4.14.146"
(base32 "091jk9jkn9jf39bxpc7395bhcb7p96nkg3a8047380ki06lnfxh6")
(base32 "0x9nd3hnyrm753cbgdqmy92mbnyw86w64g4hvyibnkpq5n7s3z9n")))
(define deblob-scripts-4.9
(linux-libre-deblob-scripts
- "4.9.190"
+ "4.9.194"
(base32 "1wvldzlv7q2xdbadas87dh593nxr4a8p5n0f8zpm72lja6w18hmg")
(base32 "0is8gn4qdd7h5l6lacvhqdch26lmrbgxfm8ab7fx8n85ha7y358w")))
(define deblob-scripts-4.4
(linux-libre-deblob-scripts
- "4.4.190"
+ "4.4.194"
(base32 "0x2j1i88am54ih2mk7gyl79g25l9zz4r08xhl482l3fvjj2irwbw")
- (base32 "1x40lbiaizksy8z38ax7wpqr9ldgq7qvkxbb0ca98vd1axpklb10")))
+ (base32 "12ac4g3ky8yma8sylmxvvysqvd4hnaqjiwmxrxb6wlxggfd7zkbx")))
(define* (computed-origin-method gexp-promise hash-algo hash
#:optional (name "source")
@@ -349,42 +349,42 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
"linux-" version ".tar.xz"))
(sha256 hash)))
-(define-public linux-libre-5.2-version "5.2.16")
+(define-public linux-libre-5.2-version "5.2.17")
(define-public linux-libre-5.2-pristine-source
(let ((version linux-libre-5.2-version)
- (hash (base32 "0xg5jnkmc7b552jrhi200ck7q4hql3az2fpjfwxj3ay8xp4n280c")))
+ (hash (base32 "1y9d218w83qgd6wima6h6n4zbj1rxz15yb6hdlhv8dm9kv88lfvv")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.2)))
-(define-public linux-libre-4.19-version "4.19.71")
+(define-public linux-libre-4.19-version "4.19.75")
(define-public linux-libre-4.19-pristine-source
(let ((version linux-libre-4.19-version)
- (hash (base32 "1bjwkb7k82l646ryyy0jbwsnygm2qsxgcwli8bdrj844skzynlqz")))
+ (hash (base32 "0y0vcmxyfg98mm63vaqq6n2bmxkbmrnvigm5zdh1al74w53p2pnx")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.19)))
-(define-public linux-libre-4.14-version "4.14.142")
+(define-public linux-libre-4.14-version "4.14.146")
(define-public linux-libre-4.14-pristine-source
(let ((version linux-libre-4.14-version)
- (hash (base32 "1wwhnm1n1b6yzsd2zzzf9i3n4hlvgnph70p67cwahw0ik4ssayz6")))
+ (hash (base32 "1x9343pvlxdgx0zbsn12mcfhf6r8d9p57h6l5cw7krm3gs44pid3")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.14)))
-(define-public linux-libre-4.9-version "4.9.191")
+(define-public linux-libre-4.9-version "4.9.194")
(define-public linux-libre-4.9-pristine-source
(let ((version linux-libre-4.9-version)
- (hash (base32 "1g5p736p8zx5rmxaj56yw93jp768npl868jsn8973dny0rsbim6y")))
+ (hash (base32 "1qy20vw5bhnsfbh95sdhjbk6y94js8m4ryd3m7xg2qg4hisvpx6m")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.9)))
-(define-public linux-libre-4.4-version "4.4.191")
+(define-public linux-libre-4.4-version "4.4.194")
(define-public linux-libre-4.4-pristine-source
(let ((version linux-libre-4.4-version)
- (hash (base32 "0x3lnq4xyj5v6r1cz4jizm4vdspws1nb806f5qczwi3yil5nm6bh")))
+ (hash (base32 "0kvlp2v4nvkilaanhpgwf8dkyfj24msaw0m38rbc4y51y69yhqvz")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.4)))
@@ -1701,7 +1701,7 @@ that the Ethernet protocol is much simpler than the IP protocol.")
(define-public iproute
(package
(name "iproute2")
- (version "5.2.0")
+ (version "5.3.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1709,7 +1709,7 @@ that the Ethernet protocol is much simpler than the IP protocol.")
version ".tar.xz"))
(sha256
(base32
- "1a2dywa2kam24951byv9pl32mb9z6klh7d4vp8fwfgrm4vn5vfd5"))))
+ "0gvv269wjn4279hxr5zzwsk2c5qgswr47za3hm1x4frsk52iw76b"))))
(build-system gnu-build-system)
(arguments
`( ;; There is a test suite, but it wants network namespaces and sudo.
@@ -1734,7 +1734,8 @@ that the Ethernet protocol is much simpler than the IP protocol.")
#t)))))
(inputs
`(("db4" ,bdb)
- ("iptables" ,iptables)))
+ ("iptables" ,iptables)
+ ("libmnl" ,libmnl)))
(native-inputs
`(("bison" ,bison)
("flex" ,flex)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 811a25f3808..ef50dfcded8 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -3552,15 +3552,15 @@ Failure to do so will result in a library with poor performance.")
(define-public glm
(package
(name "glm")
- (version "0.9.9.5")
+ (version "0.9.9.6")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/g-truc/glm/releases/download/"
version "/glm-" version ".zip"))
(sha256
- (base32
- "1vmg7hb4xvsa77zpbwiw6lqc7pyaj56dihx6xriny5b9rrh4iqsg"))))
+ (base32 "1l0pi1qi37mk6s0yrkrw07lspv4gcqnr9ryg3521hrl77ff37dwx"))
+ (patches (search-patches "glm-restore-install-target.patch"))))
(build-system cmake-build-system)
(native-inputs
`(("unzip" ,unzip)))
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 1f6835f66cb..d141be75ea6 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -2810,14 +2810,13 @@ Songs can be searched by artist, name or even by a part of the song text.")
(define-public beets
(package
(name "beets")
- (version "1.4.7")
+ (version "1.4.9")
(source (origin
(method url-fetch)
(uri (pypi-uri "beets" version))
- (patches (search-patches "beets-python-3.7-fix.patch"))
(sha256
(base32
- "0w3gz69s9gf5ih69d4sddgh7ndj7658m621bp742zldvjakdncrs"))))
+ "0m40rjimvfgy1dv04p8f8d5dvi2855v4ix99a9xr900cmcn476yj"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -2826,12 +2825,6 @@ Songs can be searched by artist, name or even by a part of the song text.")
(lambda _
(setenv "HOME" (string-append (getcwd) "/tmp"))
#t))
- (add-after 'unpack 'make-python3.7-compatible
- (lambda _
- ;; See .
- (substitute* "beets/autotag/hooks.py"
- (("re\\._pattern_type") "re.Pattern"))
- #t))
(replace 'check
(lambda _
(invoke "nosetests" "-v"))))))
@@ -2855,7 +2848,7 @@ Songs can be searched by artist, name or even by a part of the song text.")
("python-mutagen" ,python-mutagen)
("python-pyyaml" ,python-pyyaml)
("python-unidecode" ,python-unidecode)))
- (home-page "http://beets.io")
+ (home-page "https://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
@@ -4531,7 +4524,7 @@ controller.")
(define-public fmit
(package
(name "fmit")
- (version "1.2.6")
+ (version "1.2.13")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -4540,7 +4533,7 @@ controller.")
(file-name (git-file-name name version))
(sha256
(base32
- "03nzkig5mw2rqwhwmg0qvc5cnk9bwh2wp13jh0mdrr935w0587mz"))))
+ "1qyskam053pvlap1av80rgp12pzhr92rs88vqs6s0ia3ypnixcc6"))))
(build-system gnu-build-system)
(arguments
'(#:phases
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index bfa901a84e8..e49922a523f 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -418,14 +418,14 @@ receiving NDP messages.")
(define-public ethtool
(package
(name "ethtool")
- (version "4.19")
+ (version "5.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/network/"
"ethtool/ethtool-" version ".tar.xz"))
(sha256
(base32
- "1j6hyr809af2m3gqm11hdfwks5kljqy1ikspq3d9rhj29qv6r2mi"))))
+ "1i14zrg4a84zjpwvqi8an0zx0hm06g614a79zc2syrkhrvdw1npk"))))
(build-system gnu-build-system)
(home-page "https://www.kernel.org/pub/software/network/ethtool/")
(synopsis "Display or change Ethernet device settings")
@@ -1584,7 +1584,7 @@ procedure calls (RPCs).")
(define-public openvswitch
(package
(name "openvswitch")
- (version "2.11.1")
+ (version "2.12.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1592,7 +1592,7 @@ procedure calls (RPCs).")
version ".tar.gz"))
(sha256
(base32
- "1p5mv44jaslvrr1ym15smqna19y0gi4vqcsyj58625vv9bj6laf1"))))
+ "1y78ix5inhhcvicbvyy2ij38am1215nr55vydhab3d4065q45z8k"))))
(build-system gnu-build-system)
(arguments
'(;; FIXME: many tests fail with:
diff --git a/gnu/packages/patches/beets-python-3.7-fix.patch b/gnu/packages/patches/beets-python-3.7-fix.patch
deleted file mode 100644
index 43707cd9d02..00000000000
--- a/gnu/packages/patches/beets-python-3.7-fix.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-Fix compatibility issue with Python 3.7:
-
-https://github.com/beetbox/beets/issues/2978
-
-Patch copied from upstream source repository:
-
-https://github.com/beetbox/beets/commit/15d44f02a391764da1ce1f239caef819f08beed8
-
-From 15d44f02a391764da1ce1f239caef819f08beed8 Mon Sep 17 00:00:00 2001
-From: Adrian Sampson
-Date: Sun, 22 Jul 2018 12:34:19 -0400
-Subject: [PATCH] Fix Python 3.7 compatibility (#2978)
-
----
- beets/autotag/hooks.py | 8 +++++++-
- docs/changelog.rst | 2 ++
- 2 files changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/beets/autotag/hooks.py b/beets/autotag/hooks.py
-index 3615a9333..1c62a54c5 100644
---- a/beets/autotag/hooks.py
-+++ b/beets/autotag/hooks.py
-@@ -31,6 +31,12 @@
-
- log = logging.getLogger('beets')
-
-+# The name of the type for patterns in re changed in Python 3.7.
-+try:
-+ Pattern = re._pattern_type
-+except AttributeError:
-+ Pattern = re.Pattern
-+
-
- # Classes used to represent candidate options.
-
-@@ -433,7 +439,7 @@ def _eq(self, value1, value2):
- be a compiled regular expression, in which case it will be
- matched against `value2`.
- """
-- if isinstance(value1, re._pattern_type):
-+ if isinstance(value1, Pattern):
- return bool(value1.match(value2))
- return value1 == value2
-
-#diff --git a/docs/changelog.rst b/docs/changelog.rst
-#index be6de2904..d487f31f5 100644
-#--- a/docs/changelog.rst
-#+++ b/docs/changelog.rst
-#@@ -19,6 +19,8 @@ New features:
-#
-# Fixes:
-#
-#+* Fix compatibility Python 3.7 and its change to a name in the ``re`` module.
-#+ :bug:`2978`
-# * R128 normalization tags are now properly deleted from files when the values
-# are missing.
-# Thanks to :user:`autrimpo`.
diff --git a/gnu/packages/patches/debops-constants-for-external-program-names.patch b/gnu/packages/patches/debops-constants-for-external-program-names.patch
new file mode 100644
index 00000000000..b3b34ed3234
--- /dev/null
+++ b/gnu/packages/patches/debops-constants-for-external-program-names.patch
@@ -0,0 +1,276 @@
+From 78d5cddafebb28e2e54efeb781495b5607ddb356 Mon Sep 17 00:00:00 2001
+From: Hartmut Goebel
+Date: Thu, 8 Aug 2019 15:19:48 +0200
+Subject: [PATCH] Scripts: Use constants for external program names.
+
+This makes it much, much easier to replace the program
+with one using an absolute path. This is necessary for
+e.g. Guix to keep references to these external programs.
+---
+ bin/debops | 10 +++++++---
+ bin/debops-padlock | 21 +++++++++++++++------
+ bin/debops-task | 7 +++++--
+ bin/debops-update | 18 +++++++++++-------
+ debops/__init__.py | 17 ++++++++++++-----
+ debops/cmds/__init__.py | 6 +++++-
+ 6 files changed, 55 insertions(+), 24 deletions(-)
+
+diff --git a/bin/debops b/bin/debops
+index 2b7ad3f88..caaeb892f 100755
+--- a/bin/debops
++++ b/bin/debops
+@@ -59,6 +59,10 @@ ConfigFileHeader = """\
+ # You can manipulate the contents of this file via `.debops.cfg`.
+ """
+
++# External programms used. List here for easy substitution for
++# hard-coded paths.
++ANSIBLE_PLAYBOOK = 'ansible-playbook'
++
+
+ def write_config(filename, config):
+ cfgparser = configparser.ConfigParser()
+@@ -131,7 +135,7 @@ def gen_ansible_cfg(filename, config, project_root, playbooks_path,
+ os.path.join(playbooks_path, "roles"),
+ "/etc/ansible/roles")))
+
+- ansible_version_out = subprocess.check_output(["ansible-playbook",
++ ansible_version_out = subprocess.check_output([ANSIBLE_PLAYBOOK,
+ "--version"]).decode()
+
+ # Get first line and split by spaces to get second 'word'.
+@@ -197,7 +201,7 @@ def main(cmd_args):
+ playbooks_path = '/nonexistent'
+
+ # Make sure required commands are present
+- require_commands('ansible-playbook')
++ require_commands(ANSIBLE_PLAYBOOK)
+
+ # Check if user specified a potential playbook name as the first
+ # argument. If yes, use it as the playbook name and remove it from
+@@ -256,7 +260,7 @@ def main(cmd_args):
+ print("Running Ansible playbooks:")
+ for element in play_list:
+ print(element)
+- return subprocess.call(['ansible-playbook'] + play_list + arg_list)
++ return subprocess.call([ANSIBLE_PLAYBOOK] + play_list + arg_list)
+ finally:
+ if revert_unlock:
+ padlock_lock(encfs_encrypted)
+diff --git a/bin/debops-padlock b/bin/debops-padlock
+index bfdfb8e06..2a97716cd 100755
+--- a/bin/debops-padlock
++++ b/bin/debops-padlock
+@@ -67,6 +67,14 @@ devrandom = os.environ.get('DEVRANDOM', "/dev/urandom")
+
+ SCRIPT_FILENAME = 'padlock-script'
+
++# External programms used. List here for easy substitution for
++# hard-coded paths.
++ENCFS = 'encfs'
++FIND = 'find'
++FUSERMOUNT = 'fusermount'
++UMOUNT = 'umount'
++GPG = 'gpg'
++
+ # ---- DebOps environment setup ----
+
+
+@@ -80,9 +88,9 @@ def main(subcommand_func, **kwargs):
+ # Make sure required commands are present
+ # OS X compatibility
+ if sys.platform == 'darwin':
+- require_commands('encfs', 'find', 'umount', 'gpg')
++ require_commands(ENCFS, FIND, UMOUNT, GPG)
+ else:
+- require_commands('encfs', 'find', 'fusermount', 'gpg')
++ require_commands(ENCFS, FIND, FUSERMOUNT, GPG)
+
+ inventory_path = find_inventorypath(project_root, required=False)
+ # If inventory hasn't been found automatically, assume it's the default
+@@ -121,7 +129,7 @@ def init(encfs_decrypted, encfs_encrypted, recipients):
+ # Generate a random password and encrypt it with GPG keys of recipients.
+ print("Generating a random", ENCFS_KEYFILE_LENGTH, "char password")
+ pwd = gen_pwd()
+- gpg = subprocess.Popen(['gpg', '--encrypt', '--armor',
++ gpg = subprocess.Popen([GPG, '--encrypt', '--armor',
+ '--output', encfs_keyfile] + recipients,
+ stdin=subprocess.PIPE)
+ gpg.communicate(pwd.encode('utf-8'))
+@@ -133,9 +141,10 @@ def init(encfs_decrypted, encfs_encrypted, recipients):
+ # NB2: We can not use padlock_unlock here, because the config file
+ # does not yet exist.
+ encfs = subprocess.Popen([
+- 'encfs', encfs_encrypted, encfs_decrypted,
++ ENCFS, encfs_encrypted, encfs_decrypted,
+ '--extpass',
+- 'gpg --decrypt --no-mdc-warning --output - '+shquote(encfs_keyfile)],
++ GPG + ' --decrypt --no-mdc-warning --output - '
++ + shquote(encfs_keyfile)],
+ stdin=subprocess.PIPE)
+ encfs.communicate(('p\n'+pwd).encode('utf-8'))
+
+@@ -154,7 +163,7 @@ def init(encfs_decrypted, encfs_encrypted, recipients):
+
+ # Protect the EncFS configuration file by also encrypting it with
+ # the GPG keys of recipients.
+- subprocess.call(['gpg', '--encrypt', '--armor',
++ subprocess.call([GPG, '--encrypt', '--armor',
+ '--output', encfs_configfile+'.asc']
+ + recipients + [encfs_configfile])
+ os.remove(encfs_configfile)
+diff --git a/bin/debops-task b/bin/debops-task
+index 223e5f834..dc31ad4e6 100755
+--- a/bin/debops-task
++++ b/bin/debops-task
+@@ -49,11 +49,14 @@ project_root = find_debops_project(required=True)
+ # todo: need to decide on semantics!
+ # config = read_config(project_root)
+
++# External programms used. List here for easy substitution for
++# hard-coded paths.
++ANSIBLE = 'ansible'
+
+ # ---- Main script ----
+
+ # Make sure required commands are present
+-require_commands('ansible')
++require_commands(ANSIBLE)
+
+ ansible_inventory = find_inventorypath(project_root)
+
+@@ -71,5 +74,5 @@ if INSECURE:
+ os.environ['ANSIBLE_HOST_KEY_CHECKING'] = 'False'
+
+ # Run ansible with custom environment
+-cmd = ['ansible'] + module + sys.argv[1:]
++cmd = [ANSIBLE] + module + sys.argv[1:]
+ subprocess.call(cmd)
+diff --git a/bin/debops-update b/bin/debops-update
+index 88c5e2c82..cc7e57cb0 100755
+--- a/bin/debops-update
++++ b/bin/debops-update
+@@ -90,6 +90,10 @@ GALAXY_REQUIREMENTS = "galaxy/requirements.txt"
+ # Default Ansible Galaxy user account name
+ GALAXY_ACCOUNT = "debops"
+
++# External programms used. List here for easy substitution for
++# hard-coded paths.
++GIT = 'git'
++
+
+ # ---- Functions ----
+
+@@ -137,7 +141,7 @@ def clone_git_repository(repo_uri, branch, destination, dry_run=False):
+ if dry_run:
+ print("Cloning '%s' to %s..." % (repo_uri, destination))
+ else:
+- subprocess.call(['git', 'clone', '--quiet', '--branch', branch,
++ subprocess.call([GIT, 'clone', '--quiet', '--branch', branch,
+ repo_uri, destination])
+
+
+@@ -152,22 +156,22 @@ def update_git_repository(path, dry_run=False, remote_uri=False):
+ os.chdir(path)
+
+ if dry_run:
+- subprocess.call(['git', 'fetch'])
+- subprocess.call(['git', 'diff', 'HEAD', 'origin', '--stat'])
++ subprocess.call([GIT, 'fetch'])
++ subprocess.call([GIT, 'diff', 'HEAD', 'origin', '--stat'])
+ else:
+ # Get the current sha of the head branch
+ current_sha = subprocess.check_output(
+- ['git', 'rev-parse', 'HEAD']).strip()
++ [GIT, 'rev-parse', 'HEAD']).strip()
+
+ # Fetch it silently and store the new sha
+- subprocess.call(['git', 'fetch', '--quiet'])
++ subprocess.call([GIT, 'fetch', '--quiet'])
+ fetch_sha = subprocess.check_output(
+- ['git', 'rev-parse', 'FETCH_HEAD']).strip()
++ [GIT, 'rev-parse', 'FETCH_HEAD']).strip()
+
+ if current_sha != fetch_sha:
+ print()
+ print('--')
+- subprocess.call(['git', 'merge', fetch_sha])
++ subprocess.call([GIT, 'merge', fetch_sha])
+
+ if remote_uri:
+ compare_uri = (remote_uri + '/compare/' + current_sha[:7]
+diff --git a/debops/__init__.py b/debops/__init__.py
+index 1c2cedcb0..da8430e41 100644
+--- a/debops/__init__.py
++++ b/debops/__init__.py
+@@ -93,6 +93,13 @@ ENCFS_KEYFILE = ".encfs6.keyfile"
+ # Length of the random EncFS password stored in encrypted keyfile
+ ENCFS_KEYFILE_LENGTH = 256
+
++# External programms used. List here for easy substitution for
++# hard-coded paths.
++ENCFS = 'encfs'
++FUSERMOUNT = 'fusermount'
++UMOUNT = 'umount'
++GPG = 'gpg'
++
+
+ # ---- Functions ----
+
+@@ -180,9 +187,9 @@ def padlock_lock(encrypted_path):
+ return False
+ # OS X compatibility
+ if sys.platform == 'darwin':
+- subprocess.call(['umount', decrypted_path])
++ subprocess.call([UMOUNT, decrypted_path])
+ else:
+- subprocess.call(['fusermount', '-u', decrypted_path])
++ subprocess.call([FUSERMOUNT, '-u', decrypted_path])
+ return True
+
+
+@@ -237,14 +244,14 @@ def padlock_unlock(encrypted_path):
+ # Start encfs. It will wait for input on the `configfile` named
+ # pipe.
+ encfs = subprocess.Popen([
+- 'encfs', encrypted_path, decrypted_path,
++ ENCFS, encrypted_path, decrypted_path,
+ '--extpass',
+- 'gpg --decrypt --no-mdc-warning --output - %s' % shquote(keyfile)])
++ GPG + ' --decrypt --no-mdc-warning --output - %s' % shquote(keyfile)])
+ # now decrypt the config and write it into the named pipe
+ with open(configfile, 'w') as fh:
+ # NB: gpg must write to stdout to avoid it is asking whether
+ # the file should be overwritten
+- subprocess.Popen(['gpg',
++ subprocess.Popen([GPG,
+ '--decrypt', '--no-mdc-warning', '--output', '-',
+ crypted_configfile], stdout=fh).wait()
+ encfs.wait()
+diff --git a/debops/cmds/__init__.py b/debops/cmds/__init__.py
+index b221fa191..9fabf43a5 100644
+--- a/debops/cmds/__init__.py
++++ b/debops/cmds/__init__.py
+@@ -55,6 +55,10 @@ SCRIPT_NAME = os.path.basename(sys.argv[0])
+ # command line)
+ INSECURE = bool(os.environ.get('INSECURE', False))
+
++# External programms used. List here for easy substitution for
++# hard-coded paths.
++WHICH = 'which'
++
+
+ def error_msg(message, severity="Error"):
+ """
+@@ -70,7 +74,7 @@ def require_commands(*cmd_names):
+ Check if required commands exist.
+ """
+ def command_exists(cmd_name):
+- which = "where" if platform.system() == "Windows" else "which"
++ which = "where" if platform.system() == "Windows" else WHICH
+ return not subprocess.call([which, cmd_name],
+ stdout=DEVNULL, stderr=subprocess.STDOUT)
+
+--
+2.21.0
+
diff --git a/gnu/packages/patches/debops-debops-defaults-fall-back-to-less.patch b/gnu/packages/patches/debops-debops-defaults-fall-back-to-less.patch
new file mode 100644
index 00000000000..bbb6b7c08ec
--- /dev/null
+++ b/gnu/packages/patches/debops-debops-defaults-fall-back-to-less.patch
@@ -0,0 +1,45 @@
+From 5059daf8bd59a83f520c14731173ea76ce8b8661 Mon Sep 17 00:00:00 2001
+From: Hartmut Goebel
+Date: Sun, 8 Sep 2019 13:09:15 +0200
+Subject: [PATCH] [debops-defaults] If `view` is not available, try less, etc.
+
+---
+ bin/debops-defaults | 21 +++++++++++++++------
+ 1 file changed, 15 insertions(+), 6 deletions(-)
+
+diff --git a/bin/debops-defaults b/bin/debops-defaults
+index 9dd87fe0a..3e3db4c41 100755
+--- a/bin/debops-defaults
++++ b/bin/debops-defaults
+@@ -96,13 +96,22 @@ def main(role_list):
+ config = read_config(project_root)
+ playbooks_path = find_playbookpath(config, project_root, required=True)
+
+- # Make sure required commands are present
+- require_commands('view')
+-
+- if sys.stdout.isatty():
++ # Check if one of the output commands is present
++ sys.stdout = io.BytesIO() # suppress error message, if any
++ for cmd_args in (('view', '+set ft=yaml', '-'),
++ ('less', '-'),
++ ('more', '-')):
++ try:
++ require_commands(cmd_args[0])
++ break
++ except SystemExit:
++ # this command was not found
++ cmd_args = None
++ sys.stdout = sys.__stdout__
++
++ if cmd_args and sys.stdout.isatty():
+ # if script is run as standalone, redirect to view
+- view = subprocess.Popen(['view', '+set ft=yaml', '-'],
+- stdin=subprocess.PIPE)
++ view = subprocess.Popen(cmd_args, stdin=subprocess.PIPE)
+ try:
+ aggregate_defaults(playbooks_path, role_list, view.stdin)
+ except IOError as e:
+--
+2.21.0
+
diff --git a/gnu/packages/patches/freeimage-CVE-2015-0852.patch b/gnu/packages/patches/freeimage-CVE-2015-0852.patch
deleted file mode 100644
index 34d538e9259..00000000000
--- a/gnu/packages/patches/freeimage-CVE-2015-0852.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-Copied from Debian.
-
-Description: fix integer overflow
-Origin: upstream
- http://freeimage.cvs.sourceforge.net/viewvc/freeimage/FreeImage/Source/FreeImage/PluginPCX.cpp?view=patch&r1=1.17&r2=1.18&pathrev=MAIN
- http://freeimage.cvs.sourceforge.net/viewvc/freeimage/FreeImage/Source/FreeImage/PluginPCX.cpp?view=patch&r1=1.18&r2=1.19&pathrev=MAIN
-Bug-Debian: https://bugs.debian.org/797165
-Last-Update: 2015-09-14
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-Index: freeimage/Source/FreeImage/PluginPCX.cpp
-===================================================================
---- freeimage.orig/Source/FreeImage/PluginPCX.cpp
-+++ freeimage/Source/FreeImage/PluginPCX.cpp
-@@ -347,12 +347,14 @@ Load(FreeImageIO *io, fi_handle handle,
-
- try {
- // check PCX identifier
--
-- long start_pos = io->tell_proc(handle);
-- BOOL validated = pcx_validate(io, handle);
-- io->seek_proc(handle, start_pos, SEEK_SET);
-- if(!validated) {
-- throw FI_MSG_ERROR_MAGIC_NUMBER;
-+ // (note: should have been already validated using FreeImage_GetFileType but check again)
-+ {
-+ long start_pos = io->tell_proc(handle);
-+ BOOL validated = pcx_validate(io, handle);
-+ io->seek_proc(handle, start_pos, SEEK_SET);
-+ if(!validated) {
-+ throw FI_MSG_ERROR_MAGIC_NUMBER;
-+ }
- }
-
- // process the header
-@@ -366,20 +368,38 @@ Load(FreeImageIO *io, fi_handle handle,
- SwapHeader(&header);
- #endif
-
-- // allocate a new DIB
-+ // process the window
-+ const WORD *window = header.window; // left, upper, right,lower pixel coord.
-+ const int left = window[0];
-+ const int top = window[1];
-+ const int right = window[2];
-+ const int bottom = window[3];
-
-- unsigned width = header.window[2] - header.window[0] + 1;
-- unsigned height = header.window[3] - header.window[1] + 1;
-- unsigned bitcount = header.bpp * header.planes;
--
-- if (bitcount == 24) {
-- dib = FreeImage_AllocateHeader(header_only, width, height, bitcount, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK);
-- } else {
-- dib = FreeImage_AllocateHeader(header_only, width, height, bitcount);
-+ // check image size
-+ if((left >= right) || (top >= bottom)) {
-+ throw FI_MSG_ERROR_PARSING;
- }
-
-- // if the dib couldn't be allocated, throw an error
-+ const unsigned width = right - left + 1;
-+ const unsigned height = bottom - top + 1;
-+ const unsigned bitcount = header.bpp * header.planes;
-+
-+ // allocate a new DIB
-+ switch(bitcount) {
-+ case 1:
-+ case 4:
-+ case 8:
-+ dib = FreeImage_AllocateHeader(header_only, width, height, bitcount);
-+ break;
-+ case 24:
-+ dib = FreeImage_AllocateHeader(header_only, width, height, bitcount, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK);
-+ break;
-+ default:
-+ throw FI_MSG_ERROR_DIB_MEMORY;
-+ break;
-+ }
-
-+ // if the dib couldn't be allocated, throw an error
- if (!dib) {
- throw FI_MSG_ERROR_DIB_MEMORY;
- }
-@@ -426,19 +446,23 @@ Load(FreeImageIO *io, fi_handle handle,
-
- if (palette_id == 0x0C) {
- BYTE *cmap = (BYTE*)malloc(768 * sizeof(BYTE));
-- io->read_proc(cmap, 768, 1, handle);
-
-- pal = FreeImage_GetPalette(dib);
-- BYTE *pColormap = &cmap[0];
-+ if(cmap) {
-+ io->read_proc(cmap, 768, 1, handle);
-
-- for(int i = 0; i < 256; i++) {
-- pal[i].rgbRed = pColormap[0];
-- pal[i].rgbGreen = pColormap[1];
-- pal[i].rgbBlue = pColormap[2];
-- pColormap += 3;
-+ pal = FreeImage_GetPalette(dib);
-+ BYTE *pColormap = &cmap[0];
-+
-+ for(int i = 0; i < 256; i++) {
-+ pal[i].rgbRed = pColormap[0];
-+ pal[i].rgbGreen = pColormap[1];
-+ pal[i].rgbBlue = pColormap[2];
-+ pColormap += 3;
-+ }
-+
-+ free(cmap);
- }
-
-- free(cmap);
- }
-
- // wrong palette ID, perhaps a gray scale is needed ?
-@@ -466,9 +490,9 @@ Load(FreeImageIO *io, fi_handle handle,
- // calculate the line length for the PCX and the DIB
-
- // length of raster line in bytes
-- unsigned linelength = header.bytes_per_line * header.planes;
-+ const unsigned linelength = header.bytes_per_line * header.planes;
- // length of DIB line (rounded to DWORD) in bytes
-- unsigned pitch = FreeImage_GetPitch(dib);
-+ const unsigned pitch = FreeImage_GetPitch(dib);
-
- // run-length encoding ?
-
diff --git a/gnu/packages/patches/freeimage-CVE-2016-5684.patch b/gnu/packages/patches/freeimage-CVE-2016-5684.patch
deleted file mode 100644
index 2fc02d7b0df..00000000000
--- a/gnu/packages/patches/freeimage-CVE-2016-5684.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From: Debian Science Maintainers
-
-Date: Mon, 10 Oct 2016 08:22:44 +0100
-Subject: CVE-2016-5684
-
----
- Source/FreeImage/PluginXPM.cpp | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/Source/FreeImage/PluginXPM.cpp b/Source/FreeImage/PluginXPM.cpp
-index a698321..cc7bd07 100644
---- a/Source/FreeImage/PluginXPM.cpp
-+++ b/Source/FreeImage/PluginXPM.cpp
-@@ -181,6 +181,11 @@ Load(FreeImageIO *io, fi_handle handle, int page, int flags, void *data) {
- }
- free(str);
-
-+ // check info string
-+ if((width <= 0) || (height <= 0) || (colors <= 0) || (cpp <= 0)) {
-+ throw "Improperly formed info string";
-+ }
-+
- if (colors > 256) {
- dib = FreeImage_AllocateHeader(header_only, width, height, 24, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK);
- } else {
-@@ -193,7 +198,7 @@ Load(FreeImageIO *io, fi_handle handle, int page, int flags, void *data) {
- FILE_RGBA rgba;
-
- str = ReadString(io, handle);
-- if(!str)
-+ if(!str || (strlen(str) < (size_t)cpp))
- throw "Error reading color strings";
-
- std::string chrs(str,cpp); //create a string for the color chars using the first cpp chars
diff --git a/gnu/packages/patches/freeimage-fix-build-with-gcc-5.patch b/gnu/packages/patches/freeimage-fix-build-with-gcc-5.patch
deleted file mode 100644
index 2c9f2c33571..00000000000
--- a/gnu/packages/patches/freeimage-fix-build-with-gcc-5.patch
+++ /dev/null
@@ -1,1453 +0,0 @@
-The original patch was downloaded from here:
-https://chromium-review.googlesource.com/c/297211
-
-The paths, file names, and line endings have been adapted.
-
-From eebaf97f5a1cb713d81d311308d8a48c124e5aef Mon Sep 17 00:00:00 2001
-From: James Zern
-Date: Wed, 02 Sep 2015 23:21:13 -0700
-Subject: [PATCH] dsp/mips: add whitespace around stringizing operator
-
-fixes compile with gcc 5.1
-BUG=259
-
-Change-Id: Ideb39c6290ab8569b1b6cc835bea11c822d0286c
----
-
-diff --git a/Source/LibWebP/src/dsp/dsp.dec_mips_dsp_r2.c b/Source/LibWebP/src/dsp/dsp.dec_mips_dsp_r2.c
-index 6590f43..40e4d82 100644
---- a/Source/LibWebP/src/dsp/dsp.dec_mips_dsp_r2.c
-+++ b/Source/LibWebP/src/dsp/dsp.dec_mips_dsp_r2.c
-@@ -548,10 +548,10 @@
- // TEMP3 = SRC[D + D1 * BPS]
- #define LOAD_4_BYTES(TEMP0, TEMP1, TEMP2, TEMP3, \
- A, A1, B, B1, C, C1, D, D1, SRC) \
-- "lbu %["#TEMP0"], "#A"+"#A1"*"XSTR(BPS)"(%["#SRC"]) \n\t" \
-- "lbu %["#TEMP1"], "#B"+"#B1"*"XSTR(BPS)"(%["#SRC"]) \n\t" \
-- "lbu %["#TEMP2"], "#C"+"#C1"*"XSTR(BPS)"(%["#SRC"]) \n\t" \
-- "lbu %["#TEMP3"], "#D"+"#D1"*"XSTR(BPS)"(%["#SRC"]) \n\t" \
-+ "lbu %[" #TEMP0 "], " #A "+" #A1 "*"XSTR(BPS)"(%[" #SRC "]) \n\t" \
-+ "lbu %[" #TEMP1 "], " #B "+" #B1 "*"XSTR(BPS)"(%[" #SRC "]) \n\t" \
-+ "lbu %[" #TEMP2 "], " #C "+" #C1 "*"XSTR(BPS)"(%[" #SRC "]) \n\t" \
-+ "lbu %[" #TEMP3 "], " #D "+" #D1 "*"XSTR(BPS)"(%[" #SRC "]) \n\t" \
-
- static void SimpleHFilter16(uint8_t* p, int stride, int thresh) {
- int i;
-@@ -623,8 +623,8 @@
- // DST[A * BPS] = TEMP0
- // DST[B + C * BPS] = TEMP1
- #define STORE_8_BYTES(TEMP0, TEMP1, A, B, C, DST) \
-- "usw %["#TEMP0"], "#A"*"XSTR(BPS)"(%["#DST"]) \n\t" \
-- "usw %["#TEMP1"], "#B"+"#C"*"XSTR(BPS)"(%["#DST"]) \n\t"
-+ "usw %[" #TEMP0 "], " #A "*"XSTR(BPS)"(%[" #DST "]) \n\t" \
-+ "usw %[" #TEMP1 "], " #B "+" #C "*"XSTR(BPS)"(%[" #DST "]) \n\t"
-
- static void VE4(uint8_t* dst) { // vertical
- const uint8_t* top = dst - BPS;
-@@ -725,8 +725,8 @@
- // TEMP0 = SRC[A * BPS]
- // TEMP1 = SRC[B + C * BPS]
- #define LOAD_8_BYTES(TEMP0, TEMP1, A, B, C, SRC) \
-- "ulw %["#TEMP0"], "#A"*"XSTR(BPS)"(%["#SRC"]) \n\t" \
-- "ulw %["#TEMP1"], "#B"+"#C"*"XSTR(BPS)"(%["#SRC"]) \n\t"
-+ "ulw %[" #TEMP0 "], " #A "*"XSTR(BPS)"(%[" #SRC "]) \n\t" \
-+ "ulw %[" #TEMP1 "], " #B "+" #C "*"XSTR(BPS)"(%[" #SRC "]) \n\t"
-
- static void LD4(uint8_t* dst) { // Down-Left
- int temp0, temp1, temp2, temp3, temp4;
-@@ -873,24 +873,24 @@
- #define CLIPPING(SIZE) \
- "preceu.ph.qbl %[temp2], %[temp0] \n\t" \
- "preceu.ph.qbr %[temp0], %[temp0] \n\t" \
--".if "#SIZE" == 8 \n\t" \
-+".if " #SIZE " == 8 \n\t" \
- "preceu.ph.qbl %[temp3], %[temp1] \n\t" \
- "preceu.ph.qbr %[temp1], %[temp1] \n\t" \
- ".endif \n\t" \
- "addu.ph %[temp2], %[temp2], %[dst_1] \n\t" \
- "addu.ph %[temp0], %[temp0], %[dst_1] \n\t" \
--".if "#SIZE" == 8 \n\t" \
-+".if " #SIZE " == 8 \n\t" \
- "addu.ph %[temp3], %[temp3], %[dst_1] \n\t" \
- "addu.ph %[temp1], %[temp1], %[dst_1] \n\t" \
- ".endif \n\t" \
- "shll_s.ph %[temp2], %[temp2], 7 \n\t" \
- "shll_s.ph %[temp0], %[temp0], 7 \n\t" \
--".if "#SIZE" == 8 \n\t" \
-+".if " #SIZE " == 8 \n\t" \
- "shll_s.ph %[temp3], %[temp3], 7 \n\t" \
- "shll_s.ph %[temp1], %[temp1], 7 \n\t" \
- ".endif \n\t" \
- "precrqu_s.qb.ph %[temp0], %[temp2], %[temp0] \n\t" \
--".if "#SIZE" == 8 \n\t" \
-+".if " #SIZE " == 8 \n\t" \
- "precrqu_s.qb.ph %[temp1], %[temp3], %[temp1] \n\t" \
- ".endif \n\t"
-
-@@ -899,7 +899,7 @@
- int dst_1 = ((int)(DST)[-1] << 16) + (DST)[-1]; \
- int temp0, temp1, temp2, temp3; \
- __asm__ volatile ( \
-- ".if "#SIZE" < 8 \n\t" \
-+ ".if " #SIZE " < 8 \n\t" \
- "ulw %[temp0], 0(%[top]) \n\t" \
- "subu.ph %[dst_1], %[dst_1], %[top_1] \n\t" \
- CLIPPING(4) \
-@@ -911,7 +911,7 @@
- CLIPPING(8) \
- "usw %[temp0], 0(%[dst]) \n\t" \
- "usw %[temp1], 4(%[dst]) \n\t" \
-- ".if "#SIZE" == 16 \n\t" \
-+ ".if " #SIZE " == 16 \n\t" \
- "ulw %[temp0], 8(%[top]) \n\t" \
- "ulw %[temp1], 12(%[top]) \n\t" \
- CLIPPING(8) \
-diff --git a/Source/LibWebP/src/dsp/dsp.enc_mips32.c b/Source/LibWebP/src/dsp/dsp.enc_mips32.c
-index c5837f1..b50e08b 100644
---- a/Source/LibWebP/src/dsp/dsp.enc_mips32.c
-+++ b/Source/LibWebP/src/dsp/dsp.enc_mips32.c
-@@ -31,26 +31,26 @@
- // TEMP0..TEMP3 - registers for corresponding tmp elements
- // TEMP4..TEMP5 - temporary registers
- #define VERTICAL_PASS(A, B, C, D, TEMP4, TEMP0, TEMP1, TEMP2, TEMP3) \
-- "lh %[temp16], "#A"(%[temp20]) \n\t" \
-- "lh %[temp18], "#B"(%[temp20]) \n\t" \
-- "lh %[temp17], "#C"(%[temp20]) \n\t" \
-- "lh %[temp19], "#D"(%[temp20]) \n\t" \
-- "addu %["#TEMP4"], %[temp16], %[temp18] \n\t" \
-- "subu %[temp16], %[temp16], %[temp18] \n\t" \
-- "mul %["#TEMP0"], %[temp17], %[kC2] \n\t" \
-- "mul %[temp18], %[temp19], %[kC1] \n\t" \
-- "mul %[temp17], %[temp17], %[kC1] \n\t" \
-- "mul %[temp19], %[temp19], %[kC2] \n\t" \
-- "sra %["#TEMP0"], %["#TEMP0"], 16 \n\n" \
-- "sra %[temp18], %[temp18], 16 \n\n" \
-- "sra %[temp17], %[temp17], 16 \n\n" \
-- "sra %[temp19], %[temp19], 16 \n\n" \
-- "subu %["#TEMP2"], %["#TEMP0"], %[temp18] \n\t" \
-- "addu %["#TEMP3"], %[temp17], %[temp19] \n\t" \
-- "addu %["#TEMP0"], %["#TEMP4"], %["#TEMP3"] \n\t" \
-- "addu %["#TEMP1"], %[temp16], %["#TEMP2"] \n\t" \
-- "subu %["#TEMP2"], %[temp16], %["#TEMP2"] \n\t" \
-- "subu %["#TEMP3"], %["#TEMP4"], %["#TEMP3"] \n\t"
-+ "lh %[temp16], " #A "(%[temp20]) \n\t" \
-+ "lh %[temp18], " #B "(%[temp20]) \n\t" \
-+ "lh %[temp17], " #C "(%[temp20]) \n\t" \
-+ "lh %[temp19], " #D "(%[temp20]) \n\t" \
-+ "addu %[" #TEMP4 "], %[temp16], %[temp18] \n\t" \
-+ "subu %[temp16], %[temp16], %[temp18] \n\t" \
-+ "mul %[" #TEMP0 "], %[temp17], %[kC2] \n\t" \
-+ "mul %[temp18], %[temp19], %[kC1] \n\t" \
-+ "mul %[temp17], %[temp17], %[kC1] \n\t" \
-+ "mul %[temp19], %[temp19], %[kC2] \n\t" \
-+ "sra %[" #TEMP0 "], %[" #TEMP0 "], 16 \n\n" \
-+ "sra %[temp18], %[temp18], 16 \n\n" \
-+ "sra %[temp17], %[temp17], 16 \n\n" \
-+ "sra %[temp19], %[temp19], 16 \n\n" \
-+ "subu %[" #TEMP2 "], %[" #TEMP0 "], %[temp18] \n\t" \
-+ "addu %[" #TEMP3 "], %[temp17], %[temp19] \n\t" \
-+ "addu %[" #TEMP0 "], %[" #TEMP4 "], %[" #TEMP3 "] \n\t" \
-+ "addu %[" #TEMP1 "], %[temp16], %[" #TEMP2 "] \n\t" \
-+ "subu %[" #TEMP2 "], %[temp16], %[" #TEMP2 "] \n\t" \
-+ "subu %[" #TEMP3 "], %[" #TEMP4 "], %[" #TEMP3 "] \n\t"
-
- // macro for one horizontal pass in ITransformOne
- // MUL and STORE macros inlined
-@@ -58,59 +58,59 @@
- // temp0..temp15 holds tmp[0]..tmp[15]
- // A - offset in bytes to load from ref and store to dst buffer
- // TEMP0, TEMP4, TEMP8 and TEMP12 - registers for corresponding tmp elements
--#define HORIZONTAL_PASS(A, TEMP0, TEMP4, TEMP8, TEMP12) \
-- "addiu %["#TEMP0"], %["#TEMP0"], 4 \n\t" \
-- "addu %[temp16], %["#TEMP0"], %["#TEMP8"] \n\t" \
-- "subu %[temp17], %["#TEMP0"], %["#TEMP8"] \n\t" \
-- "mul %["#TEMP0"], %["#TEMP4"], %[kC2] \n\t" \
-- "mul %["#TEMP8"], %["#TEMP12"], %[kC1] \n\t" \
-- "mul %["#TEMP4"], %["#TEMP4"], %[kC1] \n\t" \
-- "mul %["#TEMP12"], %["#TEMP12"], %[kC2] \n\t" \
-- "sra %["#TEMP0"], %["#TEMP0"], 16 \n\t" \
-- "sra %["#TEMP8"], %["#TEMP8"], 16 \n\t" \
-- "sra %["#TEMP4"], %["#TEMP4"], 16 \n\t" \
-- "sra %["#TEMP12"], %["#TEMP12"], 16 \n\t" \
-- "subu %[temp18], %["#TEMP0"], %["#TEMP8"] \n\t" \
-- "addu %[temp19], %["#TEMP4"], %["#TEMP12"] \n\t" \
-- "addu %["#TEMP0"], %[temp16], %[temp19] \n\t" \
-- "addu %["#TEMP4"], %[temp17], %[temp18] \n\t" \
-- "subu %["#TEMP8"], %[temp17], %[temp18] \n\t" \
-- "subu %["#TEMP12"], %[temp16], %[temp19] \n\t" \
-- "lw %[temp20], 0(%[args]) \n\t" \
-- "sra %["#TEMP0"], %["#TEMP0"], 3 \n\t" \
-- "sra %["#TEMP4"], %["#TEMP4"], 3 \n\t" \
-- "sra %["#TEMP8"], %["#TEMP8"], 3 \n\t" \
-- "sra %["#TEMP12"], %["#TEMP12"], 3 \n\t" \
-- "lbu %[temp16], 0+"XSTR(BPS)"*"#A"(%[temp20]) \n\t" \
-- "lbu %[temp17], 1+"XSTR(BPS)"*"#A"(%[temp20]) \n\t" \
-- "lbu %[temp18], 2+"XSTR(BPS)"*"#A"(%[temp20]) \n\t" \
-- "lbu %[temp19], 3+"XSTR(BPS)"*"#A"(%[temp20]) \n\t" \
-- "addu %["#TEMP0"], %[temp16], %["#TEMP0"] \n\t" \
-- "addu %["#TEMP4"], %[temp17], %["#TEMP4"] \n\t" \
-- "addu %["#TEMP8"], %[temp18], %["#TEMP8"] \n\t" \
-- "addu %["#TEMP12"], %[temp19], %["#TEMP12"] \n\t" \
-- "slt %[temp16], %["#TEMP0"], $zero \n\t" \
-- "slt %[temp17], %["#TEMP4"], $zero \n\t" \
-- "slt %[temp18], %["#TEMP8"], $zero \n\t" \
-- "slt %[temp19], %["#TEMP12"], $zero \n\t" \
-- "movn %["#TEMP0"], $zero, %[temp16] \n\t" \
-- "movn %["#TEMP4"], $zero, %[temp17] \n\t" \
-- "movn %["#TEMP8"], $zero, %[temp18] \n\t" \
-- "movn %["#TEMP12"], $zero, %[temp19] \n\t" \
-- "addiu %[temp20], $zero, 255 \n\t" \
-- "slt %[temp16], %["#TEMP0"], %[temp20] \n\t" \
-- "slt %[temp17], %["#TEMP4"], %[temp20] \n\t" \
-- "slt %[temp18], %["#TEMP8"], %[temp20] \n\t" \
-- "slt %[temp19], %["#TEMP12"], %[temp20] \n\t" \
-- "movz %["#TEMP0"], %[temp20], %[temp16] \n\t" \
-- "movz %["#TEMP4"], %[temp20], %[temp17] \n\t" \
-- "lw %[temp16], 8(%[args]) \n\t" \
-- "movz %["#TEMP8"], %[temp20], %[temp18] \n\t" \
-- "movz %["#TEMP12"], %[temp20], %[temp19] \n\t" \
-- "sb %["#TEMP0"], 0+"XSTR(BPS)"*"#A"(%[temp16]) \n\t" \
-- "sb %["#TEMP4"], 1+"XSTR(BPS)"*"#A"(%[temp16]) \n\t" \
-- "sb %["#TEMP8"], 2+"XSTR(BPS)"*"#A"(%[temp16]) \n\t" \
-- "sb %["#TEMP12"], 3+"XSTR(BPS)"*"#A"(%[temp16]) \n\t"
-+#define HORIZONTAL_PASS(A, TEMP0, TEMP4, TEMP8, TEMP12) \
-+ "addiu %[" #TEMP0 "], %[" #TEMP0 "], 4 \n\t" \
-+ "addu %[temp16], %[" #TEMP0 "], %[" #TEMP8 "] \n\t" \
-+ "subu %[temp17], %[" #TEMP0 "], %[" #TEMP8 "] \n\t" \
-+ "mul %[" #TEMP0 "], %[" #TEMP4 "], %[kC2] \n\t" \
-+ "mul %[" #TEMP8 "], %[" #TEMP12 "], %[kC1] \n\t" \
-+ "mul %[" #TEMP4 "], %[" #TEMP4 "], %[kC1] \n\t" \
-+ "mul %[" #TEMP12 "], %[" #TEMP12 "], %[kC2] \n\t" \
-+ "sra %[" #TEMP0 "], %[" #TEMP0 "], 16 \n\t" \
-+ "sra %[" #TEMP8 "], %[" #TEMP8 "], 16 \n\t" \
-+ "sra %[" #TEMP4 "], %[" #TEMP4 "], 16 \n\t" \
-+ "sra %[" #TEMP12 "], %[" #TEMP12 "], 16 \n\t" \
-+ "subu %[temp18], %[" #TEMP0 "], %[" #TEMP8 "] \n\t" \
-+ "addu %[temp19], %[" #TEMP4 "], %[" #TEMP12 "] \n\t" \
-+ "addu %[" #TEMP0 "], %[temp16], %[temp19] \n\t" \
-+ "addu %[" #TEMP4 "], %[temp17], %[temp18] \n\t" \
-+ "subu %[" #TEMP8 "], %[temp17], %[temp18] \n\t" \
-+ "subu %[" #TEMP12 "], %[temp16], %[temp19] \n\t" \
-+ "lw %[temp20], 0(%[args]) \n\t" \
-+ "sra %[" #TEMP0 "], %[" #TEMP0 "], 3 \n\t" \
-+ "sra %[" #TEMP4 "], %[" #TEMP4 "], 3 \n\t" \
-+ "sra %[" #TEMP8 "], %[" #TEMP8 "], 3 \n\t" \
-+ "sra %[" #TEMP12 "], %[" #TEMP12 "], 3 \n\t" \
-+ "lbu %[temp16], 0+"XSTR(BPS)"*" #A "(%[temp20]) \n\t" \
-+ "lbu %[temp17], 1+"XSTR(BPS)"*" #A "(%[temp20]) \n\t" \
-+ "lbu %[temp18], 2+"XSTR(BPS)"*" #A "(%[temp20]) \n\t" \
-+ "lbu %[temp19], 3+"XSTR(BPS)"*" #A "(%[temp20]) \n\t" \
-+ "addu %[" #TEMP0 "], %[temp16], %[" #TEMP0 "] \n\t" \
-+ "addu %[" #TEMP4 "], %[temp17], %[" #TEMP4 "] \n\t" \
-+ "addu %[" #TEMP8 "], %[temp18], %[" #TEMP8 "] \n\t" \
-+ "addu %[" #TEMP12 "], %[temp19], %[" #TEMP12 "] \n\t" \
-+ "slt %[temp16], %[" #TEMP0 "], $zero \n\t" \
-+ "slt %[temp17], %[" #TEMP4 "], $zero \n\t" \
-+ "slt %[temp18], %[" #TEMP8 "], $zero \n\t" \
-+ "slt %[temp19], %[" #TEMP12 "], $zero \n\t" \
-+ "movn %[" #TEMP0 "], $zero, %[temp16] \n\t" \
-+ "movn %[" #TEMP4 "], $zero, %[temp17] \n\t" \
-+ "movn %[" #TEMP8 "], $zero, %[temp18] \n\t" \
-+ "movn %[" #TEMP12 "], $zero, %[temp19] \n\t" \
-+ "addiu %[temp20], $zero, 255 \n\t" \
-+ "slt %[temp16], %[" #TEMP0 "], %[temp20] \n\t" \
-+ "slt %[temp17], %[" #TEMP4 "], %[temp20] \n\t" \
-+ "slt %[temp18], %[" #TEMP8 "], %[temp20] \n\t" \
-+ "slt %[temp19], %[" #TEMP12 "], %[temp20] \n\t" \
-+ "movz %[" #TEMP0 "], %[temp20], %[temp16] \n\t" \
-+ "movz %[" #TEMP4 "], %[temp20], %[temp17] \n\t" \
-+ "lw %[temp16], 8(%[args]) \n\t" \
-+ "movz %[" #TEMP8 "], %[temp20], %[temp18] \n\t" \
-+ "movz %[" #TEMP12 "], %[temp20], %[temp19] \n\t" \
-+ "sb %[" #TEMP0 "], 0+"XSTR(BPS)"*" #A "(%[temp16]) \n\t" \
-+ "sb %[" #TEMP4 "], 1+"XSTR(BPS)"*" #A "(%[temp16]) \n\t" \
-+ "sb %[" #TEMP8 "], 2+"XSTR(BPS)"*" #A "(%[temp16]) \n\t" \
-+ "sb %[" #TEMP12 "], 3+"XSTR(BPS)"*" #A "(%[temp16]) \n\t"
-
- // Does one or two inverse transforms.
- static WEBP_INLINE void ITransformOne(const uint8_t* ref, const int16_t* in,
-@@ -161,9 +161,9 @@
- // K - offset in bytes (kZigzag[n] * 4)
- // N - offset in bytes (n * 2)
- #define QUANTIZE_ONE(J, K, N) \
-- "lh %[temp0], "#J"(%[ppin]) \n\t" \
-- "lhu %[temp1], "#J"(%[ppsharpen]) \n\t" \
-- "lw %[temp2], "#K"(%[ppzthresh]) \n\t" \
-+ "lh %[temp0], " #J "(%[ppin]) \n\t" \
-+ "lhu %[temp1], " #J "(%[ppsharpen]) \n\t" \
-+ "lw %[temp2], " #K "(%[ppzthresh]) \n\t" \
- "sra %[sign], %[temp0], 15 \n\t" \
- "xor %[coeff], %[temp0], %[sign] \n\t" \
- "subu %[coeff], %[coeff], %[sign] \n\t" \
-@@ -172,9 +172,9 @@
- "addiu %[temp5], $zero, 0 \n\t" \
- "addiu %[level], $zero, 0 \n\t" \
- "beqz %[temp4], 2f \n\t" \
-- "lhu %[temp1], "#J"(%[ppiq]) \n\t" \
-- "lw %[temp2], "#K"(%[ppbias]) \n\t" \
-- "lhu %[temp3], "#J"(%[ppq]) \n\t" \
-+ "lhu %[temp1], " #J "(%[ppiq]) \n\t" \
-+ "lw %[temp2], " #K "(%[ppbias]) \n\t" \
-+ "lhu %[temp3], " #J "(%[ppq]) \n\t" \
- "mul %[level], %[coeff], %[temp1] \n\t" \
- "addu %[level], %[level], %[temp2] \n\t" \
- "sra %[level], %[level], 17 \n\t" \
-@@ -184,8 +184,8 @@
- "subu %[level], %[level], %[sign] \n\t" \
- "mul %[temp5], %[level], %[temp3] \n\t" \
- "2: \n\t" \
-- "sh %[temp5], "#J"(%[ppin]) \n\t" \
-- "sh %[level], "#N"(%[pout]) \n\t"
-+ "sh %[temp5], " #J "(%[ppin]) \n\t" \
-+ "sh %[level], " #N "(%[pout]) \n\t"
-
- static int QuantizeBlock(int16_t in[16], int16_t out[16],
- const VP8Matrix* const mtx) {
-@@ -253,39 +253,39 @@
- // A - offset in bytes to load from a and b buffers
- // E..H - offsets in bytes to store first results to tmp buffer
- // E1..H1 - offsets in bytes to store second results to tmp buffer
--#define HORIZONTAL_PASS(A, E, F, G, H, E1, F1, G1, H1) \
-- "lbu %[temp0], 0+"XSTR(BPS)"*"#A"(%[a]) \n\t" \
-- "lbu %[temp1], 1+"XSTR(BPS)"*"#A"(%[a]) \n\t" \
-- "lbu %[temp2], 2+"XSTR(BPS)"*"#A"(%[a]) \n\t" \
-- "lbu %[temp3], 3+"XSTR(BPS)"*"#A"(%[a]) \n\t" \
-- "lbu %[temp4], 0+"XSTR(BPS)"*"#A"(%[b]) \n\t" \
-- "lbu %[temp5], 1+"XSTR(BPS)"*"#A"(%[b]) \n\t" \
-- "lbu %[temp6], 2+"XSTR(BPS)"*"#A"(%[b]) \n\t" \
-- "lbu %[temp7], 3+"XSTR(BPS)"*"#A"(%[b]) \n\t" \
-- "addu %[temp8], %[temp0], %[temp2] \n\t" \
-- "subu %[temp0], %[temp0], %[temp2] \n\t" \
-- "addu %[temp2], %[temp1], %[temp3] \n\t" \
-- "subu %[temp1], %[temp1], %[temp3] \n\t" \
-- "addu %[temp3], %[temp4], %[temp6] \n\t" \
-- "subu %[temp4], %[temp4], %[temp6] \n\t" \
-- "addu %[temp6], %[temp5], %[temp7] \n\t" \
-- "subu %[temp5], %[temp5], %[temp7] \n\t" \
-- "addu %[temp7], %[temp8], %[temp2] \n\t" \
-- "subu %[temp2], %[temp8], %[temp2] \n\t" \
-- "addu %[temp8], %[temp0], %[temp1] \n\t" \
-- "subu %[temp0], %[temp0], %[temp1] \n\t" \
-- "addu %[temp1], %[temp3], %[temp6] \n\t" \
-- "subu %[temp3], %[temp3], %[temp6] \n\t" \
-- "addu %[temp6], %[temp4], %[temp5] \n\t" \
-- "subu %[temp4], %[temp4], %[temp5] \n\t" \
-- "sw %[temp7], "#E"(%[tmp]) \n\t" \
-- "sw %[temp2], "#H"(%[tmp]) \n\t" \
-- "sw %[temp8], "#F"(%[tmp]) \n\t" \
-- "sw %[temp0], "#G"(%[tmp]) \n\t" \
-- "sw %[temp1], "#E1"(%[tmp]) \n\t" \
-- "sw %[temp3], "#H1"(%[tmp]) \n\t" \
-- "sw %[temp6], "#F1"(%[tmp]) \n\t" \
-- "sw %[temp4], "#G1"(%[tmp]) \n\t"
-+#define HORIZONTAL_PASS(A, E, F, G, H, E1, F1, G1, H1) \
-+ "lbu %[temp0], 0+"XSTR(BPS)"*" #A "(%[a]) \n\t" \
-+ "lbu %[temp1], 1+"XSTR(BPS)"*" #A "(%[a]) \n\t" \
-+ "lbu %[temp2], 2+"XSTR(BPS)"*" #A "(%[a]) \n\t" \
-+ "lbu %[temp3], 3+"XSTR(BPS)"*" #A "(%[a]) \n\t" \
-+ "lbu %[temp4], 0+"XSTR(BPS)"*" #A "(%[b]) \n\t" \
-+ "lbu %[temp5], 1+"XSTR(BPS)"*" #A "(%[b]) \n\t" \
-+ "lbu %[temp6], 2+"XSTR(BPS)"*" #A "(%[b]) \n\t" \
-+ "lbu %[temp7], 3+"XSTR(BPS)"*" #A "(%[b]) \n\t" \
-+ "addu %[temp8], %[temp0], %[temp2] \n\t" \
-+ "subu %[temp0], %[temp0], %[temp2] \n\t" \
-+ "addu %[temp2], %[temp1], %[temp3] \n\t" \
-+ "subu %[temp1], %[temp1], %[temp3] \n\t" \
-+ "addu %[temp3], %[temp4], %[temp6] \n\t" \
-+ "subu %[temp4], %[temp4], %[temp6] \n\t" \
-+ "addu %[temp6], %[temp5], %[temp7] \n\t" \
-+ "subu %[temp5], %[temp5], %[temp7] \n\t" \
-+ "addu %[temp7], %[temp8], %[temp2] \n\t" \
-+ "subu %[temp2], %[temp8], %[temp2] \n\t" \
-+ "addu %[temp8], %[temp0], %[temp1] \n\t" \
-+ "subu %[temp0], %[temp0], %[temp1] \n\t" \
-+ "addu %[temp1], %[temp3], %[temp6] \n\t" \
-+ "subu %[temp3], %[temp3], %[temp6] \n\t" \
-+ "addu %[temp6], %[temp4], %[temp5] \n\t" \
-+ "subu %[temp4], %[temp4], %[temp5] \n\t" \
-+ "sw %[temp7], " #E "(%[tmp]) \n\t" \
-+ "sw %[temp2], " #H "(%[tmp]) \n\t" \
-+ "sw %[temp8], " #F "(%[tmp]) \n\t" \
-+ "sw %[temp0], " #G "(%[tmp]) \n\t" \
-+ "sw %[temp1], " #E1 "(%[tmp]) \n\t" \
-+ "sw %[temp3], " #H1 "(%[tmp]) \n\t" \
-+ "sw %[temp6], " #F1 "(%[tmp]) \n\t" \
-+ "sw %[temp4], " #G1 "(%[tmp]) \n\t"
-
- // macro for one vertical pass in Disto4x4 (TTransform)
- // two calls of function TTransform are merged into single one
-@@ -300,10 +300,10 @@
- // A1..D1 - offsets in bytes to load second results from tmp buffer
- // E..H - offsets in bytes to load from w buffer
- #define VERTICAL_PASS(A, B, C, D, A1, B1, C1, D1, E, F, G, H) \
-- "lw %[temp0], "#A1"(%[tmp]) \n\t" \
-- "lw %[temp1], "#C1"(%[tmp]) \n\t" \
-- "lw %[temp2], "#B1"(%[tmp]) \n\t" \
-- "lw %[temp3], "#D1"(%[tmp]) \n\t" \
-+ "lw %[temp0], " #A1 "(%[tmp]) \n\t" \
-+ "lw %[temp1], " #C1 "(%[tmp]) \n\t" \
-+ "lw %[temp2], " #B1 "(%[tmp]) \n\t" \
-+ "lw %[temp3], " #D1 "(%[tmp]) \n\t" \
- "addu %[temp8], %[temp0], %[temp1] \n\t" \
- "subu %[temp0], %[temp0], %[temp1] \n\t" \
- "addu %[temp1], %[temp2], %[temp3] \n\t" \
-@@ -324,18 +324,18 @@
- "subu %[temp1], %[temp1], %[temp5] \n\t" \
- "subu %[temp0], %[temp0], %[temp6] \n\t" \
- "subu %[temp8], %[temp8], %[temp7] \n\t" \
-- "lhu %[temp4], "#E"(%[w]) \n\t" \
-- "lhu %[temp5], "#F"(%[w]) \n\t" \
-- "lhu %[temp6], "#G"(%[w]) \n\t" \
-- "lhu %[temp7], "#H"(%[w]) \n\t" \
-+ "lhu %[temp4], " #E "(%[w]) \n\t" \
-+ "lhu %[temp5], " #F "(%[w]) \n\t" \
-+ "lhu %[temp6], " #G "(%[w]) \n\t" \
-+ "lhu %[temp7], " #H "(%[w]) \n\t" \
- "madd %[temp4], %[temp3] \n\t" \
- "madd %[temp5], %[temp1] \n\t" \
- "madd %[temp6], %[temp0] \n\t" \
- "madd %[temp7], %[temp8] \n\t" \
-- "lw %[temp0], "#A"(%[tmp]) \n\t" \
-- "lw %[temp1], "#C"(%[tmp]) \n\t" \
-- "lw %[temp2], "#B"(%[tmp]) \n\t" \
-- "lw %[temp3], "#D"(%[tmp]) \n\t" \
-+ "lw %[temp0], " #A "(%[tmp]) \n\t" \
-+ "lw %[temp1], " #C "(%[tmp]) \n\t" \
-+ "lw %[temp2], " #B "(%[tmp]) \n\t" \
-+ "lw %[temp3], " #D "(%[tmp]) \n\t" \
- "addu %[temp8], %[temp0], %[temp1] \n\t" \
- "subu %[temp0], %[temp0], %[temp1] \n\t" \
- "addu %[temp1], %[temp2], %[temp3] \n\t" \
-@@ -412,71 +412,71 @@
- // temp0..temp15 holds tmp[0]..tmp[15]
- // A - offset in bytes to load from src and ref buffers
- // TEMP0..TEMP3 - registers for corresponding tmp elements
--#define HORIZONTAL_PASS(A, TEMP0, TEMP1, TEMP2, TEMP3) \
-- "lw %["#TEMP1"], 0(%[args]) \n\t" \
-- "lw %["#TEMP2"], 4(%[args]) \n\t" \
-- "lbu %[temp16], 0+"XSTR(BPS)"*"#A"(%["#TEMP1"]) \n\t" \
-- "lbu %[temp17], 0+"XSTR(BPS)"*"#A"(%["#TEMP2"]) \n\t" \
-- "lbu %[temp18], 1+"XSTR(BPS)"*"#A"(%["#TEMP1"]) \n\t" \
-- "lbu %[temp19], 1+"XSTR(BPS)"*"#A"(%["#TEMP2"]) \n\t" \
-- "subu %[temp20], %[temp16], %[temp17] \n\t" \
-- "lbu %[temp16], 2+"XSTR(BPS)"*"#A"(%["#TEMP1"]) \n\t" \
-- "lbu %[temp17], 2+"XSTR(BPS)"*"#A"(%["#TEMP2"]) \n\t" \
-- "subu %["#TEMP0"], %[temp18], %[temp19] \n\t" \
-- "lbu %[temp18], 3+"XSTR(BPS)"*"#A"(%["#TEMP1"]) \n\t" \
-- "lbu %[temp19], 3+"XSTR(BPS)"*"#A"(%["#TEMP2"]) \n\t" \
-- "subu %["#TEMP1"], %[temp16], %[temp17] \n\t" \
-- "subu %["#TEMP2"], %[temp18], %[temp19] \n\t" \
-- "addu %["#TEMP3"], %[temp20], %["#TEMP2"] \n\t" \
-- "subu %["#TEMP2"], %[temp20], %["#TEMP2"] \n\t" \
-- "addu %[temp20], %["#TEMP0"], %["#TEMP1"] \n\t" \
-- "subu %["#TEMP0"], %["#TEMP0"], %["#TEMP1"] \n\t" \
-- "mul %[temp16], %["#TEMP2"], %[c5352] \n\t" \
-- "mul %[temp17], %["#TEMP2"], %[c2217] \n\t" \
-- "mul %[temp18], %["#TEMP0"], %[c5352] \n\t" \
-- "mul %[temp19], %["#TEMP0"], %[c2217] \n\t" \
-- "addu %["#TEMP1"], %["#TEMP3"], %[temp20] \n\t" \
-- "subu %[temp20], %["#TEMP3"], %[temp20] \n\t" \
-- "sll %["#TEMP0"], %["#TEMP1"], 3 \n\t" \
-- "sll %["#TEMP2"], %[temp20], 3 \n\t" \
-- "addiu %[temp16], %[temp16], 1812 \n\t" \
-- "addiu %[temp17], %[temp17], 937 \n\t" \
-- "addu %[temp16], %[temp16], %[temp19] \n\t" \
-- "subu %[temp17], %[temp17], %[temp18] \n\t" \
-- "sra %["#TEMP1"], %[temp16], 9 \n\t" \
-- "sra %["#TEMP3"], %[temp17], 9 \n\t"
-+#define HORIZONTAL_PASS(A, TEMP0, TEMP1, TEMP2, TEMP3) \
-+ "lw %[" #TEMP1 "], 0(%[args]) \n\t" \
-+ "lw %[" #TEMP2 "], 4(%[args]) \n\t" \
-+ "lbu %[temp16], 0+"XSTR(BPS)"*" #A "(%[" #TEMP1 "]) \n\t" \
-+ "lbu %[temp17], 0+"XSTR(BPS)"*" #A "(%[" #TEMP2 "]) \n\t" \
-+ "lbu %[temp18], 1+"XSTR(BPS)"*" #A "(%[" #TEMP1 "]) \n\t" \
-+ "lbu %[temp19], 1+"XSTR(BPS)"*" #A "(%[" #TEMP2 "]) \n\t" \
-+ "subu %[temp20], %[temp16], %[temp17] \n\t" \
-+ "lbu %[temp16], 2+"XSTR(BPS)"*" #A "(%[" #TEMP1 "]) \n\t" \
-+ "lbu %[temp17], 2+"XSTR(BPS)"*" #A "(%[" #TEMP2 "]) \n\t" \
-+ "subu %[" #TEMP0 "], %[temp18], %[temp19] \n\t" \
-+ "lbu %[temp18], 3+"XSTR(BPS)"*" #A "(%[" #TEMP1 "]) \n\t" \
-+ "lbu %[temp19], 3+"XSTR(BPS)"*" #A "(%[" #TEMP2 "]) \n\t" \
-+ "subu %[" #TEMP1 "], %[temp16], %[temp17] \n\t" \
-+ "subu %[" #TEMP2 "], %[temp18], %[temp19] \n\t" \
-+ "addu %[" #TEMP3 "], %[temp20], %[" #TEMP2 "] \n\t" \
-+ "subu %[" #TEMP2 "], %[temp20], %[" #TEMP2 "] \n\t" \
-+ "addu %[temp20], %[" #TEMP0 "], %[" #TEMP1 "] \n\t" \
-+ "subu %[" #TEMP0 "], %[" #TEMP0 "], %[" #TEMP1 "] \n\t" \
-+ "mul %[temp16], %[" #TEMP2 "], %[c5352] \n\t" \
-+ "mul %[temp17], %[" #TEMP2 "], %[c2217] \n\t" \
-+ "mul %[temp18], %[" #TEMP0 "], %[c5352] \n\t" \
-+ "mul %[temp19], %[" #TEMP0 "], %[c2217] \n\t" \
-+ "addu %[" #TEMP1 "], %[" #TEMP3 "], %[temp20] \n\t" \
-+ "subu %[temp20], %[" #TEMP3 "], %[temp20] \n\t" \
-+ "sll %[" #TEMP0 "], %[" #TEMP1 "], 3 \n\t" \
-+ "sll %[" #TEMP2 "], %[temp20], 3 \n\t" \
-+ "addiu %[temp16], %[temp16], 1812 \n\t" \
-+ "addiu %[temp17], %[temp17], 937 \n\t" \
-+ "addu %[temp16], %[temp16], %[temp19] \n\t" \
-+ "subu %[temp17], %[temp17], %[temp18] \n\t" \
-+ "sra %[" #TEMP1 "], %[temp16], 9 \n\t" \
-+ "sra %[" #TEMP3 "], %[temp17], 9 \n\t"
-
- // macro for one vertical pass in FTransform
- // temp0..temp15 holds tmp[0]..tmp[15]
- // A..D - offsets in bytes to store to out buffer
- // TEMP0, TEMP4, TEMP8 and TEMP12 - registers for corresponding tmp elements
--#define VERTICAL_PASS(A, B, C, D, TEMP0, TEMP4, TEMP8, TEMP12) \
-- "addu %[temp16], %["#TEMP0"], %["#TEMP12"] \n\t" \
-- "subu %[temp19], %["#TEMP0"], %["#TEMP12"] \n\t" \
-- "addu %[temp17], %["#TEMP4"], %["#TEMP8"] \n\t" \
-- "subu %[temp18], %["#TEMP4"], %["#TEMP8"] \n\t" \
-- "mul %["#TEMP8"], %[temp19], %[c2217] \n\t" \
-- "mul %["#TEMP12"], %[temp18], %[c2217] \n\t" \
-- "mul %["#TEMP4"], %[temp19], %[c5352] \n\t" \
-- "mul %[temp18], %[temp18], %[c5352] \n\t" \
-- "addiu %[temp16], %[temp16], 7 \n\t" \
-- "addu %["#TEMP0"], %[temp16], %[temp17] \n\t" \
-- "sra %["#TEMP0"], %["#TEMP0"], 4 \n\t" \
-- "addu %["#TEMP12"], %["#TEMP12"], %["#TEMP4"] \n\t" \
-- "subu %["#TEMP4"], %[temp16], %[temp17] \n\t" \
-- "sra %["#TEMP4"], %["#TEMP4"], 4 \n\t" \
-- "addiu %["#TEMP8"], %["#TEMP8"], 30000 \n\t" \
-- "addiu %["#TEMP12"], %["#TEMP12"], 12000 \n\t" \
-- "addiu %["#TEMP8"], %["#TEMP8"], 21000 \n\t" \
-- "subu %["#TEMP8"], %["#TEMP8"], %[temp18] \n\t" \
-- "sra %["#TEMP12"], %["#TEMP12"], 16 \n\t" \
-- "sra %["#TEMP8"], %["#TEMP8"], 16 \n\t" \
-- "addiu %[temp16], %["#TEMP12"], 1 \n\t" \
-- "movn %["#TEMP12"], %[temp16], %[temp19] \n\t" \
-- "sh %["#TEMP0"], "#A"(%[temp20]) \n\t" \
-- "sh %["#TEMP4"], "#C"(%[temp20]) \n\t" \
-- "sh %["#TEMP8"], "#D"(%[temp20]) \n\t" \
-- "sh %["#TEMP12"], "#B"(%[temp20]) \n\t"
-+#define VERTICAL_PASS(A, B, C, D, TEMP0, TEMP4, TEMP8, TEMP12) \
-+ "addu %[temp16], %[" #TEMP0 "], %[" #TEMP12 "] \n\t" \
-+ "subu %[temp19], %[" #TEMP0 "], %[" #TEMP12 "] \n\t" \
-+ "addu %[temp17], %[" #TEMP4 "], %[" #TEMP8 "] \n\t" \
-+ "subu %[temp18], %[" #TEMP4 "], %[" #TEMP8 "] \n\t" \
-+ "mul %[" #TEMP8 "], %[temp19], %[c2217] \n\t" \
-+ "mul %[" #TEMP12 "], %[temp18], %[c2217] \n\t" \
-+ "mul %[" #TEMP4 "], %[temp19], %[c5352] \n\t" \
-+ "mul %[temp18], %[temp18], %[c5352] \n\t" \
-+ "addiu %[temp16], %[temp16], 7 \n\t" \
-+ "addu %[" #TEMP0 "], %[temp16], %[temp17] \n\t" \
-+ "sra %[" #TEMP0 "], %[" #TEMP0 "], 4 \n\t" \
-+ "addu %[" #TEMP12 "], %[" #TEMP12 "], %[" #TEMP4 "] \n\t" \
-+ "subu %[" #TEMP4 "], %[temp16], %[temp17] \n\t" \
-+ "sra %[" #TEMP4 "], %[" #TEMP4 "], 4 \n\t" \
-+ "addiu %[" #TEMP8 "], %[" #TEMP8 "], 30000 \n\t" \
-+ "addiu %[" #TEMP12 "], %[" #TEMP12 "], 12000 \n\t" \
-+ "addiu %[" #TEMP8 "], %[" #TEMP8 "], 21000 \n\t" \
-+ "subu %[" #TEMP8 "], %[" #TEMP8 "], %[temp18] \n\t" \
-+ "sra %[" #TEMP12 "], %[" #TEMP12 "], 16 \n\t" \
-+ "sra %[" #TEMP8 "], %[" #TEMP8 "], 16 \n\t" \
-+ "addiu %[temp16], %[" #TEMP12 "], 1 \n\t" \
-+ "movn %[" #TEMP12 "], %[temp16], %[temp19] \n\t" \
-+ "sh %[" #TEMP0 "], " #A "(%[temp20]) \n\t" \
-+ "sh %[" #TEMP4 "], " #C "(%[temp20]) \n\t" \
-+ "sh %[" #TEMP8 "], " #D "(%[temp20]) \n\t" \
-+ "sh %[" #TEMP12 "], " #B "(%[temp20]) \n\t"
-
- static void FTransform(const uint8_t* src, const uint8_t* ref, int16_t* out) {
- int temp0, temp1, temp2, temp3, temp4, temp5, temp6, temp7, temp8;
-@@ -516,14 +516,14 @@
- #if !defined(WORK_AROUND_GCC)
-
- #define GET_SSE_INNER(A, B, C, D) \
-- "lbu %[temp0], "#A"(%[a]) \n\t" \
-- "lbu %[temp1], "#A"(%[b]) \n\t" \
-- "lbu %[temp2], "#B"(%[a]) \n\t" \
-- "lbu %[temp3], "#B"(%[b]) \n\t" \
-- "lbu %[temp4], "#C"(%[a]) \n\t" \
-- "lbu %[temp5], "#C"(%[b]) \n\t" \
-- "lbu %[temp6], "#D"(%[a]) \n\t" \
-- "lbu %[temp7], "#D"(%[b]) \n\t" \
-+ "lbu %[temp0], " #A "(%[a]) \n\t" \
-+ "lbu %[temp1], " #A "(%[b]) \n\t" \
-+ "lbu %[temp2], " #B "(%[a]) \n\t" \
-+ "lbu %[temp3], " #B "(%[b]) \n\t" \
-+ "lbu %[temp4], " #C "(%[a]) \n\t" \
-+ "lbu %[temp5], " #C "(%[b]) \n\t" \
-+ "lbu %[temp6], " #D "(%[a]) \n\t" \
-+ "lbu %[temp7], " #D "(%[b]) \n\t" \
- "subu %[temp0], %[temp0], %[temp1] \n\t" \
- "subu %[temp2], %[temp2], %[temp3] \n\t" \
- "subu %[temp4], %[temp4], %[temp5] \n\t" \
-diff --git a/Source/LibWebP/src/dsp/dsp.enc_mips_dsp_r2.c b/Source/LibWebP/src/dsp/dsp.enc_mips_dsp_r2.c
-index 56db07c..44f6fd2 100644
---- a/Source/LibWebP/src/dsp/dsp.enc_mips_dsp_r2.c
-+++ b/Source/LibWebP/src/dsp/dsp.enc_mips_dsp_r2.c
-@@ -27,25 +27,25 @@
- // I - input (macro doesn't change it)
- #define ADD_SUB_HALVES_X4(O0, O1, O2, O3, O4, O5, O6, O7, \
- I0, I1, I2, I3, I4, I5, I6, I7) \
-- "addq.ph %["#O0"], %["#I0"], %["#I1"] \n\t" \
-- "subq.ph %["#O1"], %["#I0"], %["#I1"] \n\t" \
-- "addq.ph %["#O2"], %["#I2"], %["#I3"] \n\t" \
-- "subq.ph %["#O3"], %["#I2"], %["#I3"] \n\t" \
-- "addq.ph %["#O4"], %["#I4"], %["#I5"] \n\t" \
-- "subq.ph %["#O5"], %["#I4"], %["#I5"] \n\t" \
-- "addq.ph %["#O6"], %["#I6"], %["#I7"] \n\t" \
-- "subq.ph %["#O7"], %["#I6"], %["#I7"] \n\t"
-+ "addq.ph %[" #O0 "], %[" #I0 "], %[" #I1 "] \n\t" \
-+ "subq.ph %[" #O1 "], %[" #I0 "], %[" #I1 "] \n\t" \
-+ "addq.ph %[" #O2 "], %[" #I2 "], %[" #I3 "] \n\t" \
-+ "subq.ph %[" #O3 "], %[" #I2 "], %[" #I3 "] \n\t" \
-+ "addq.ph %[" #O4 "], %[" #I4 "], %[" #I5 "] \n\t" \
-+ "subq.ph %[" #O5 "], %[" #I4 "], %[" #I5 "] \n\t" \
-+ "addq.ph %[" #O6 "], %[" #I6 "], %[" #I7 "] \n\t" \
-+ "subq.ph %[" #O7 "], %[" #I6 "], %[" #I7 "] \n\t"
-
- // IO - input/output
- #define ABS_X8(IO0, IO1, IO2, IO3, IO4, IO5, IO6, IO7) \
-- "absq_s.ph %["#IO0"], %["#IO0"] \n\t" \
-- "absq_s.ph %["#IO1"], %["#IO1"] \n\t" \
-- "absq_s.ph %["#IO2"], %["#IO2"] \n\t" \
-- "absq_s.ph %["#IO3"], %["#IO3"] \n\t" \
-- "absq_s.ph %["#IO4"], %["#IO4"] \n\t" \
-- "absq_s.ph %["#IO5"], %["#IO5"] \n\t" \
-- "absq_s.ph %["#IO6"], %["#IO6"] \n\t" \
-- "absq_s.ph %["#IO7"], %["#IO7"] \n\t"
-+ "absq_s.ph %[" #IO0 "], %[" #IO0 "] \n\t" \
-+ "absq_s.ph %[" #IO1 "], %[" #IO1 "] \n\t" \
-+ "absq_s.ph %[" #IO2 "], %[" #IO2 "] \n\t" \
-+ "absq_s.ph %[" #IO3 "], %[" #IO3 "] \n\t" \
-+ "absq_s.ph %[" #IO4 "], %[" #IO4 "] \n\t" \
-+ "absq_s.ph %[" #IO5 "], %[" #IO5 "] \n\t" \
-+ "absq_s.ph %[" #IO6 "], %[" #IO6 "] \n\t" \
-+ "absq_s.ph %[" #IO7 "], %[" #IO7 "] \n\t"
-
- // dpa.w.ph $ac0 temp0 ,temp1
- // $ac += temp0[31..16] * temp1[31..16] + temp0[15..0] * temp1[15..0]
-@@ -56,15 +56,15 @@
- #define MUL_HALF(O0, I0, I1, I2, I3, I4, I5, I6, I7, \
- I8, I9, I10, I11, I12, I13, I14, I15) \
- "mult $ac0, $zero, $zero \n\t" \
-- "dpa.w.ph $ac0, %["#I2"], %["#I0"] \n\t" \
-- "dpax.w.ph $ac0, %["#I5"], %["#I6"] \n\t" \
-- "dpa.w.ph $ac0, %["#I8"], %["#I9"] \n\t" \
-- "dpax.w.ph $ac0, %["#I11"], %["#I4"] \n\t" \
-- "dpa.w.ph $ac0, %["#I12"], %["#I7"] \n\t" \
-- "dpax.w.ph $ac0, %["#I13"], %["#I1"] \n\t" \
-- "dpa.w.ph $ac0, %["#I14"], %["#I3"] \n\t" \
-- "dpax.w.ph $ac0, %["#I15"], %["#I10"] \n\t" \
-- "mflo %["#O0"], $ac0 \n\t"
-+ "dpa.w.ph $ac0, %[" #I2 "], %[" #I0 "] \n\t" \
-+ "dpax.w.ph $ac0, %[" #I5 "], %[" #I6 "] \n\t" \
-+ "dpa.w.ph $ac0, %[" #I8 "], %[" #I9 "] \n\t" \
-+ "dpax.w.ph $ac0, %[" #I11 "], %[" #I4 "] \n\t" \
-+ "dpa.w.ph $ac0, %[" #I12 "], %[" #I7 "] \n\t" \
-+ "dpax.w.ph $ac0, %[" #I13 "], %[" #I1 "] \n\t" \
-+ "dpa.w.ph $ac0, %[" #I14 "], %[" #I3 "] \n\t" \
-+ "dpax.w.ph $ac0, %[" #I15 "], %[" #I10 "] \n\t" \
-+ "mflo %[" #O0 "], $ac0 \n\t"
-
- #define OUTPUT_EARLY_CLOBBER_REGS_17() \
- OUTPUT_EARLY_CLOBBER_REGS_10(), \
-@@ -77,69 +77,69 @@
- // A - offset in bytes to load from src and ref buffers
- // TEMP0..TEMP3 - registers for corresponding tmp elements
- #define HORIZONTAL_PASS(A, TEMP0, TEMP1, TEMP2, TEMP3) \
-- "lw %["#TEMP0"], 0(%[args]) \n\t" \
-- "lw %["#TEMP1"], 4(%[args]) \n\t" \
-- "lw %["#TEMP2"], "XSTR(BPS)"*"#A"(%["#TEMP0"]) \n\t" \
-- "lw %["#TEMP3"], "XSTR(BPS)"*"#A"(%["#TEMP1"]) \n\t" \
-- "preceu.ph.qbl %["#TEMP0"], %["#TEMP2"] \n\t" \
-- "preceu.ph.qbl %["#TEMP1"], %["#TEMP3"] \n\t" \
-- "preceu.ph.qbr %["#TEMP2"], %["#TEMP2"] \n\t" \
-- "preceu.ph.qbr %["#TEMP3"], %["#TEMP3"] \n\t" \
-- "subq.ph %["#TEMP0"], %["#TEMP0"], %["#TEMP1"] \n\t" \
-- "subq.ph %["#TEMP2"], %["#TEMP2"], %["#TEMP3"] \n\t" \
-- "rotr %["#TEMP0"], %["#TEMP0"], 16 \n\t" \
-- "addq.ph %["#TEMP1"], %["#TEMP2"], %["#TEMP0"] \n\t" \
-- "subq.ph %["#TEMP3"], %["#TEMP2"], %["#TEMP0"] \n\t" \
-- "seh %["#TEMP0"], %["#TEMP1"] \n\t" \
-- "sra %[temp16], %["#TEMP1"], 16 \n\t" \
-- "seh %[temp19], %["#TEMP3"] \n\t" \
-- "sra %["#TEMP3"], %["#TEMP3"], 16 \n\t" \
-- "subu %["#TEMP2"], %["#TEMP0"], %[temp16] \n\t" \
-- "addu %["#TEMP0"], %["#TEMP0"], %[temp16] \n\t" \
-- "mul %[temp17], %[temp19], %[c2217] \n\t" \
-- "mul %[temp18], %["#TEMP3"], %[c5352] \n\t" \
-- "mul %["#TEMP1"], %[temp19], %[c5352] \n\t" \
-- "mul %[temp16], %["#TEMP3"], %[c2217] \n\t" \
-- "sll %["#TEMP2"], %["#TEMP2"], 3 \n\t" \
-- "sll %["#TEMP0"], %["#TEMP0"], 3 \n\t" \
-- "subu %["#TEMP3"], %[temp17], %[temp18] \n\t" \
-- "addu %["#TEMP1"], %[temp16], %["#TEMP1"] \n\t" \
-- "addiu %["#TEMP3"], %["#TEMP3"], 937 \n\t" \
-- "addiu %["#TEMP1"], %["#TEMP1"], 1812 \n\t" \
-- "sra %["#TEMP3"], %["#TEMP3"], 9 \n\t" \
-- "sra %["#TEMP1"], %["#TEMP1"], 9 \n\t"
-+ "lw %[" #TEMP0 "], 0(%[args]) \n\t" \
-+ "lw %[" #TEMP1 "], 4(%[args]) \n\t" \
-+ "lw %[" #TEMP2 "], "XSTR(BPS)"*" #A "(%[" #TEMP0 "]) \n\t" \
-+ "lw %[" #TEMP3 "], "XSTR(BPS)"*" #A "(%[" #TEMP1 "]) \n\t" \
-+ "preceu.ph.qbl %[" #TEMP0 "], %[" #TEMP2 "] \n\t" \
-+ "preceu.ph.qbl %[" #TEMP1 "], %[" #TEMP3 "] \n\t" \
-+ "preceu.ph.qbr %[" #TEMP2 "], %[" #TEMP2 "] \n\t" \
-+ "preceu.ph.qbr %[" #TEMP3 "], %[" #TEMP3 "] \n\t" \
-+ "subq.ph %[" #TEMP0 "], %[" #TEMP0 "], %[" #TEMP1 "] \n\t" \
-+ "subq.ph %[" #TEMP2 "], %[" #TEMP2 "], %[" #TEMP3 "] \n\t" \
-+ "rotr %[" #TEMP0 "], %[" #TEMP0 "], 16 \n\t" \
-+ "addq.ph %[" #TEMP1 "], %[" #TEMP2 "], %[" #TEMP0 "] \n\t" \
-+ "subq.ph %[" #TEMP3 "], %[" #TEMP2 "], %[" #TEMP0 "] \n\t" \
-+ "seh %[" #TEMP0 "], %[" #TEMP1 "] \n\t" \
-+ "sra %[temp16], %[" #TEMP1 "], 16 \n\t" \
-+ "seh %[temp19], %[" #TEMP3 "] \n\t" \
-+ "sra %[" #TEMP3 "], %[" #TEMP3 "], 16 \n\t" \
-+ "subu %[" #TEMP2 "], %[" #TEMP0 "], %[temp16] \n\t" \
-+ "addu %[" #TEMP0 "], %[" #TEMP0 "], %[temp16] \n\t" \
-+ "mul %[temp17], %[temp19], %[c2217] \n\t" \
-+ "mul %[temp18], %[" #TEMP3 "], %[c5352] \n\t" \
-+ "mul %[" #TEMP1 "], %[temp19], %[c5352] \n\t" \
-+ "mul %[temp16], %[" #TEMP3 "], %[c2217] \n\t" \
-+ "sll %[" #TEMP2 "], %[" #TEMP2 "], 3 \n\t" \
-+ "sll %[" #TEMP0 "], %[" #TEMP0 "], 3 \n\t" \
-+ "subu %[" #TEMP3 "], %[temp17], %[temp18] \n\t" \
-+ "addu %[" #TEMP1 "], %[temp16], %[" #TEMP1 "] \n\t" \
-+ "addiu %[" #TEMP3 "], %[" #TEMP3 "], 937 \n\t" \
-+ "addiu %[" #TEMP1 "], %[" #TEMP1 "], 1812 \n\t" \
-+ "sra %[" #TEMP3 "], %[" #TEMP3 "], 9 \n\t" \
-+ "sra %[" #TEMP1 "], %[" #TEMP1 "], 9 \n\t"
-
- // macro for one vertical pass in FTransform
- // temp0..temp15 holds tmp[0]..tmp[15]
- // A..D - offsets in bytes to store to out buffer
- // TEMP0, TEMP4, TEMP8 and TEMP12 - registers for corresponding tmp elements
- #define VERTICAL_PASS(A, B, C, D, TEMP0, TEMP4, TEMP8, TEMP12) \
-- "addu %[temp16], %["#TEMP0"], %["#TEMP12"] \n\t" \
-- "subu %[temp19], %["#TEMP0"], %["#TEMP12"] \n\t" \
-- "addu %[temp17], %["#TEMP4"], %["#TEMP8"] \n\t" \
-- "subu %[temp18], %["#TEMP4"], %["#TEMP8"] \n\t" \
-- "mul %["#TEMP8"], %[temp19], %[c2217] \n\t" \
-- "mul %["#TEMP12"], %[temp18], %[c2217] \n\t" \
-- "mul %["#TEMP4"], %[temp19], %[c5352] \n\t" \
-- "mul %[temp18], %[temp18], %[c5352] \n\t" \
-- "addiu %[temp16], %[temp16], 7 \n\t" \
-- "addu %["#TEMP0"], %[temp16], %[temp17] \n\t" \
-- "sra %["#TEMP0"], %["#TEMP0"], 4 \n\t" \
-- "addu %["#TEMP12"], %["#TEMP12"], %["#TEMP4"] \n\t" \
-- "subu %["#TEMP4"], %[temp16], %[temp17] \n\t" \
-- "sra %["#TEMP4"], %["#TEMP4"], 4 \n\t" \
-- "addiu %["#TEMP8"], %["#TEMP8"], 30000 \n\t" \
-- "addiu %["#TEMP12"], %["#TEMP12"], 12000 \n\t" \
-- "addiu %["#TEMP8"], %["#TEMP8"], 21000 \n\t" \
-- "subu %["#TEMP8"], %["#TEMP8"], %[temp18] \n\t" \
-- "sra %["#TEMP12"], %["#TEMP12"], 16 \n\t" \
-- "sra %["#TEMP8"], %["#TEMP8"], 16 \n\t" \
-- "addiu %[temp16], %["#TEMP12"], 1 \n\t" \
-- "movn %["#TEMP12"], %[temp16], %[temp19] \n\t" \
-- "sh %["#TEMP0"], "#A"(%[temp20]) \n\t" \
-- "sh %["#TEMP4"], "#C"(%[temp20]) \n\t" \
-- "sh %["#TEMP8"], "#D"(%[temp20]) \n\t" \
-- "sh %["#TEMP12"], "#B"(%[temp20]) \n\t"
-+ "addu %[temp16], %[" #TEMP0 "], %[" #TEMP12 "] \n\t" \
-+ "subu %[temp19], %[" #TEMP0 "], %[" #TEMP12 "] \n\t" \
-+ "addu %[temp17], %[" #TEMP4 "], %[" #TEMP8 "] \n\t" \
-+ "subu %[temp18], %[" #TEMP4 "], %[" #TEMP8 "] \n\t" \
-+ "mul %[" #TEMP8 "], %[temp19], %[c2217] \n\t" \
-+ "mul %[" #TEMP12 "], %[temp18], %[c2217] \n\t" \
-+ "mul %[" #TEMP4 "], %[temp19], %[c5352] \n\t" \
-+ "mul %[temp18], %[temp18], %[c5352] \n\t" \
-+ "addiu %[temp16], %[temp16], 7 \n\t" \
-+ "addu %[" #TEMP0 "], %[temp16], %[temp17] \n\t" \
-+ "sra %[" #TEMP0 "], %[" #TEMP0 "], 4 \n\t" \
-+ "addu %[" #TEMP12 "], %[" #TEMP12 "], %[" #TEMP4 "] \n\t" \
-+ "subu %[" #TEMP4 "], %[temp16], %[temp17] \n\t" \
-+ "sra %[" #TEMP4 "], %[" #TEMP4 "], 4 \n\t" \
-+ "addiu %[" #TEMP8 "], %[" #TEMP8 "], 30000 \n\t" \
-+ "addiu %[" #TEMP12 "], %[" #TEMP12 "], 12000 \n\t" \
-+ "addiu %[" #TEMP8 "], %[" #TEMP8 "], 21000 \n\t" \
-+ "subu %[" #TEMP8 "], %[" #TEMP8 "], %[temp18] \n\t" \
-+ "sra %[" #TEMP12 "], %[" #TEMP12 "], 16 \n\t" \
-+ "sra %[" #TEMP8 "], %[" #TEMP8 "], 16 \n\t" \
-+ "addiu %[temp16], %[" #TEMP12 "], 1 \n\t" \
-+ "movn %[" #TEMP12 "], %[temp16], %[temp19] \n\t" \
-+ "sh %[" #TEMP0 "], " #A "(%[temp20]) \n\t" \
-+ "sh %[" #TEMP4 "], " #C "(%[temp20]) \n\t" \
-+ "sh %[" #TEMP8 "], " #D "(%[temp20]) \n\t" \
-+ "sh %[" #TEMP12 "], " #B "(%[temp20]) \n\t"
-
- static void FTransform(const uint8_t* src, const uint8_t* ref, int16_t* out) {
- const int c2217 = 2217;
-@@ -329,11 +329,11 @@
- // Intra predictions
-
- #define FILL_PART(J, SIZE) \
-- "usw %[value], 0+"#J"*"XSTR(BPS)"(%[dst]) \n\t" \
-- "usw %[value], 4+"#J"*"XSTR(BPS)"(%[dst]) \n\t" \
-- ".if "#SIZE" == 16 \n\t" \
-- "usw %[value], 8+"#J"*"XSTR(BPS)"(%[dst]) \n\t" \
-- "usw %[value], 12+"#J"*"XSTR(BPS)"(%[dst]) \n\t" \
-+ "usw %[value], 0+" #J "*"XSTR(BPS)"(%[dst]) \n\t" \
-+ "usw %[value], 4+" #J "*"XSTR(BPS)"(%[dst]) \n\t" \
-+ ".if " #SIZE " == 16 \n\t" \
-+ "usw %[value], 8+" #J "*"XSTR(BPS)"(%[dst]) \n\t" \
-+ "usw %[value], 12+" #J "*"XSTR(BPS)"(%[dst]) \n\t" \
- ".endif \n\t"
-
- #define FILL_8_OR_16(DST, VALUE, SIZE) do { \
-@@ -348,7 +348,7 @@
- FILL_PART( 5, SIZE) \
- FILL_PART( 6, SIZE) \
- FILL_PART( 7, SIZE) \
-- ".if "#SIZE" == 16 \n\t" \
-+ ".if " #SIZE " == 16 \n\t" \
- FILL_PART( 8, 16) \
- FILL_PART( 9, 16) \
- FILL_PART(10, 16) \
-@@ -425,7 +425,7 @@
- CLIPPING() \
- "usw %[temp0], 0(%[dst]) \n\t" \
- "usw %[temp1], 4(%[dst]) \n\t" \
-- ".if "#SIZE" == 16 \n\t" \
-+ ".if " #SIZE " == 16 \n\t" \
- "ulw %[temp0], 8(%[top]) \n\t" \
- "ulw %[temp1], 12(%[top]) \n\t" \
- CLIPPING() \
-@@ -1060,8 +1060,8 @@
- #if !defined(WORK_AROUND_GCC)
-
- #define GET_SSE_INNER(A) \
-- "lw %[temp0], "#A"(%[a]) \n\t" \
-- "lw %[temp1], "#A"(%[b]) \n\t" \
-+ "lw %[temp0], " #A "(%[a]) \n\t" \
-+ "lw %[temp1], " #A "(%[b]) \n\t" \
- "preceu.ph.qbr %[temp2], %[temp0] \n\t" \
- "preceu.ph.qbl %[temp0], %[temp0] \n\t" \
- "preceu.ph.qbr %[temp3], %[temp1] \n\t" \
-@@ -1185,28 +1185,28 @@
- // N - offset in bytes (n * 2)
- // N1 - offset in bytes ((n + 1) * 2)
- #define QUANTIZE_ONE(J, K, N, N1) \
-- "ulw %[temp1], "#J"(%[ppin]) \n\t" \
-- "ulw %[temp2], "#J"(%[ppsharpen]) \n\t" \
-- "lhu %[temp3], "#K"(%[ppzthresh]) \n\t" \
-- "lhu %[temp6], "#K"+4(%[ppzthresh]) \n\t" \
-+ "ulw %[temp1], " #J "(%[ppin]) \n\t" \
-+ "ulw %[temp2], " #J "(%[ppsharpen]) \n\t" \
-+ "lhu %[temp3], " #K "(%[ppzthresh]) \n\t" \
-+ "lhu %[temp6], " #K "+4(%[ppzthresh]) \n\t" \
- "absq_s.ph %[temp4], %[temp1] \n\t" \
- "ins %[temp3], %[temp6], 16, 16 \n\t" \
- "addu.ph %[coeff], %[temp4], %[temp2] \n\t" \
- "shra.ph %[sign], %[temp1], 15 \n\t" \
- "li %[level], 0x10001 \n\t" \
- "cmp.lt.ph %[temp3], %[coeff] \n\t" \
-- "lhu %[temp1], "#J"(%[ppiq]) \n\t" \
-+ "lhu %[temp1], " #J "(%[ppiq]) \n\t" \
- "pick.ph %[temp5], %[level], $0 \n\t" \
-- "lw %[temp2], "#K"(%[ppbias]) \n\t" \
-+ "lw %[temp2], " #K "(%[ppbias]) \n\t" \
- "beqz %[temp5], 0f \n\t" \
-- "lhu %[temp3], "#J"(%[ppq]) \n\t" \
-+ "lhu %[temp3], " #J "(%[ppq]) \n\t" \
- "beq %[temp5], %[level], 1f \n\t" \
- "andi %[temp5], %[temp5], 0x1 \n\t" \
- "andi %[temp4], %[coeff], 0xffff \n\t" \
- "beqz %[temp5], 2f \n\t" \
- "mul %[level], %[temp4], %[temp1] \n\t" \
-- "sh $0, "#J"+2(%[ppin]) \n\t" \
-- "sh $0, "#N1"(%[pout]) \n\t" \
-+ "sh $0, " #J "+2(%[ppin]) \n\t" \
-+ "sh $0, " #N1 "(%[pout]) \n\t" \
- "addu %[level], %[level], %[temp2] \n\t" \
- "sra %[level], %[level], 17 \n\t" \
- "slt %[temp4], %[max_level], %[level] \n\t" \
-@@ -1216,15 +1216,15 @@
- "subu %[level], %[level], %[temp6] \n\t" \
- "mul %[temp5], %[level], %[temp3] \n\t" \
- "or %[ret], %[ret], %[level] \n\t" \
-- "sh %[level], "#N"(%[pout]) \n\t" \
-- "sh %[temp5], "#J"(%[ppin]) \n\t" \
-+ "sh %[level], " #N "(%[pout]) \n\t" \
-+ "sh %[temp5], " #J "(%[ppin]) \n\t" \
- "j 3f \n\t" \
- "2: \n\t" \
-- "lhu %[temp1], "#J"+2(%[ppiq]) \n\t" \
-+ "lhu %[temp1], " #J "+2(%[ppiq]) \n\t" \
- "srl %[temp5], %[coeff], 16 \n\t" \
- "mul %[level], %[temp5], %[temp1] \n\t" \
-- "lw %[temp2], "#K"+4(%[ppbias]) \n\t" \
-- "lhu %[temp3], "#J"+2(%[ppq]) \n\t" \
-+ "lw %[temp2], " #K "+4(%[ppbias]) \n\t" \
-+ "lhu %[temp3], " #J "+2(%[ppq]) \n\t" \
- "addu %[level], %[level], %[temp2] \n\t" \
- "sra %[level], %[level], 17 \n\t" \
- "srl %[temp6], %[sign], 16 \n\t" \
-@@ -1233,20 +1233,20 @@
- "xor %[level], %[level], %[temp6] \n\t" \
- "subu %[level], %[level], %[temp6] \n\t" \
- "mul %[temp5], %[level], %[temp3] \n\t" \
-- "sh $0, "#J"(%[ppin]) \n\t" \
-- "sh $0, "#N"(%[pout]) \n\t" \
-+ "sh $0, " #J "(%[ppin]) \n\t" \
-+ "sh $0, " #N "(%[pout]) \n\t" \
- "or %[ret], %[ret], %[level] \n\t" \
-- "sh %[temp5], "#J"+2(%[ppin]) \n\t" \
-- "sh %[level], "#N1"(%[pout]) \n\t" \
-+ "sh %[temp5], " #J "+2(%[ppin]) \n\t" \
-+ "sh %[level], " #N1 "(%[pout]) \n\t" \
- "j 3f \n\t" \
- "1: \n\t" \
-- "lhu %[temp1], "#J"(%[ppiq]) \n\t" \
-- "lw %[temp2], "#K"(%[ppbias]) \n\t" \
-- "ulw %[temp3], "#J"(%[ppq]) \n\t" \
-+ "lhu %[temp1], " #J "(%[ppiq]) \n\t" \
-+ "lw %[temp2], " #K "(%[ppbias]) \n\t" \
-+ "ulw %[temp3], " #J "(%[ppq]) \n\t" \
- "andi %[temp5], %[coeff], 0xffff \n\t" \
- "srl %[temp0], %[coeff], 16 \n\t" \
-- "lhu %[temp6], "#J"+2(%[ppiq]) \n\t" \
-- "lw %[coeff], "#K"+4(%[ppbias]) \n\t" \
-+ "lhu %[temp6], " #J "+2(%[ppiq]) \n\t" \
-+ "lw %[coeff], " #K "+4(%[ppbias]) \n\t" \
- "mul %[level], %[temp5], %[temp1] \n\t" \
- "mul %[temp4], %[temp0], %[temp6] \n\t" \
- "addu %[level], %[level], %[temp2] \n\t" \
-@@ -1259,15 +1259,15 @@
- "subu.ph %[level], %[level], %[sign] \n\t" \
- "mul.ph %[temp3], %[level], %[temp3] \n\t" \
- "or %[ret], %[ret], %[level] \n\t" \
-- "sh %[level], "#N"(%[pout]) \n\t" \
-+ "sh %[level], " #N "(%[pout]) \n\t" \
- "srl %[level], %[level], 16 \n\t" \
-- "sh %[level], "#N1"(%[pout]) \n\t" \
-- "usw %[temp3], "#J"(%[ppin]) \n\t" \
-+ "sh %[level], " #N1 "(%[pout]) \n\t" \
-+ "usw %[temp3], " #J "(%[ppin]) \n\t" \
- "j 3f \n\t" \
- "0: \n\t" \
-- "sh $0, "#N"(%[pout]) \n\t" \
-- "sh $0, "#N1"(%[pout]) \n\t" \
-- "usw $0, "#J"(%[ppin]) \n\t" \
-+ "sh $0, " #N "(%[pout]) \n\t" \
-+ "sh $0, " #N1 "(%[pout]) \n\t" \
-+ "usw $0, " #J "(%[ppin]) \n\t" \
- "3: \n\t"
-
- static int QuantizeBlock(int16_t in[16], int16_t out[16],
-@@ -1326,37 +1326,37 @@
- // A, B, C, D - offset in bytes to load from in buffer
- // TEMP0, TEMP1 - registers for corresponding tmp elements
- #define HORIZONTAL_PASS_WHT(A, B, C, D, TEMP0, TEMP1) \
-- "lh %["#TEMP0"], "#A"(%[in]) \n\t" \
-- "lh %["#TEMP1"], "#B"(%[in]) \n\t" \
-- "lh %[temp8], "#C"(%[in]) \n\t" \
-- "lh %[temp9], "#D"(%[in]) \n\t" \
-- "ins %["#TEMP1"], %["#TEMP0"], 16, 16 \n\t" \
-+ "lh %[" #TEMP0 "], " #A "(%[in]) \n\t" \
-+ "lh %[" #TEMP1 "], " #B "(%[in]) \n\t" \
-+ "lh %[temp8], " #C "(%[in]) \n\t" \
-+ "lh %[temp9], " #D "(%[in]) \n\t" \
-+ "ins %[" #TEMP1 "], %[" #TEMP0 "], 16, 16 \n\t" \
- "ins %[temp9], %[temp8], 16, 16 \n\t" \
-- "subq.ph %[temp8], %["#TEMP1"], %[temp9] \n\t" \
-- "addq.ph %[temp9], %["#TEMP1"], %[temp9] \n\t" \
-- "precrq.ph.w %["#TEMP0"], %[temp8], %[temp9] \n\t" \
-+ "subq.ph %[temp8], %[" #TEMP1 "], %[temp9] \n\t" \
-+ "addq.ph %[temp9], %[" #TEMP1 "], %[temp9] \n\t" \
-+ "precrq.ph.w %[" #TEMP0 "], %[temp8], %[temp9] \n\t" \
- "append %[temp8], %[temp9], 16 \n\t" \
-- "subq.ph %["#TEMP1"], %["#TEMP0"], %[temp8] \n\t" \
-- "addq.ph %["#TEMP0"], %["#TEMP0"], %[temp8] \n\t" \
-- "rotr %["#TEMP1"], %["#TEMP1"], 16 \n\t"
-+ "subq.ph %[" #TEMP1 "], %[" #TEMP0 "], %[temp8] \n\t" \
-+ "addq.ph %[" #TEMP0 "], %[" #TEMP0 "], %[temp8] \n\t" \
-+ "rotr %[" #TEMP1 "], %[" #TEMP1 "], 16 \n\t"
-
- // macro for one vertical pass in FTransformWHT
- // temp0..temp7 holds tmp[0]..tmp[15]
- // A, B, C, D - offsets in bytes to store to out buffer
- // TEMP0, TEMP2, TEMP4 and TEMP6 - registers for corresponding tmp elements
- #define VERTICAL_PASS_WHT(A, B, C, D, TEMP0, TEMP2, TEMP4, TEMP6) \
-- "addq.ph %[temp8], %["#TEMP0"], %["#TEMP4"] \n\t" \
-- "addq.ph %[temp9], %["#TEMP2"], %["#TEMP6"] \n\t" \
-- "subq.ph %["#TEMP2"], %["#TEMP2"], %["#TEMP6"] \n\t" \
-- "subq.ph %["#TEMP6"], %["#TEMP0"], %["#TEMP4"] \n\t" \
-- "addqh.ph %["#TEMP0"], %[temp8], %[temp9] \n\t" \
-- "subqh.ph %["#TEMP4"], %["#TEMP6"], %["#TEMP2"] \n\t" \
-- "addqh.ph %["#TEMP2"], %["#TEMP2"], %["#TEMP6"] \n\t" \
-- "subqh.ph %["#TEMP6"], %[temp8], %[temp9] \n\t" \
-- "usw %["#TEMP0"], "#A"(%[out]) \n\t" \
-- "usw %["#TEMP2"], "#B"(%[out]) \n\t" \
-- "usw %["#TEMP4"], "#C"(%[out]) \n\t" \
-- "usw %["#TEMP6"], "#D"(%[out]) \n\t"
-+ "addq.ph %[temp8], %[" #TEMP0 "], %[" #TEMP4 "] \n\t" \
-+ "addq.ph %[temp9], %[" #TEMP2 "], %[" #TEMP6 "] \n\t" \
-+ "subq.ph %[" #TEMP2 "], %[" #TEMP2 "], %[" #TEMP6 "] \n\t" \
-+ "subq.ph %[" #TEMP6 "], %[" #TEMP0 "], %[" #TEMP4 "] \n\t" \
-+ "addqh.ph %[" #TEMP0 "], %[temp8], %[temp9] \n\t" \
-+ "subqh.ph %[" #TEMP4 "], %[" #TEMP6 "], %[" #TEMP2 "] \n\t" \
-+ "addqh.ph %[" #TEMP2 "], %[" #TEMP2 "], %[" #TEMP6 "] \n\t" \
-+ "subqh.ph %[" #TEMP6 "], %[temp8], %[temp9] \n\t" \
-+ "usw %[" #TEMP0 "], " #A "(%[out]) \n\t" \
-+ "usw %[" #TEMP2 "], " #B "(%[out]) \n\t" \
-+ "usw %[" #TEMP4 "], " #C "(%[out]) \n\t" \
-+ "usw %[" #TEMP6 "], " #D "(%[out]) \n\t"
-
- static void FTransformWHT(const int16_t* in, int16_t* out) {
- int temp0, temp1, temp2, temp3, temp4;
-@@ -1385,10 +1385,10 @@
- // convert 8 coeffs at time
- // A, B, C, D - offsets in bytes to load from out buffer
- #define CONVERT_COEFFS_TO_BIN(A, B, C, D) \
-- "ulw %[temp0], "#A"(%[out]) \n\t" \
-- "ulw %[temp1], "#B"(%[out]) \n\t" \
-- "ulw %[temp2], "#C"(%[out]) \n\t" \
-- "ulw %[temp3], "#D"(%[out]) \n\t" \
-+ "ulw %[temp0], " #A "(%[out]) \n\t" \
-+ "ulw %[temp1], " #B "(%[out]) \n\t" \
-+ "ulw %[temp2], " #C "(%[out]) \n\t" \
-+ "ulw %[temp3], " #D "(%[out]) \n\t" \
- "absq_s.ph %[temp0], %[temp0] \n\t" \
- "absq_s.ph %[temp1], %[temp1] \n\t" \
- "absq_s.ph %[temp2], %[temp2] \n\t" \
-diff --git a/Source/LibWebP/src/dsp/dsp.filters_mips_dsp_r2.c b/Source/LibWebP/src/dsp/dsp.filters_mips_dsp_r2.c
-index 66f807d..8134af5 100644
---- a/Source/LibWebP/src/dsp/dsp.filters_mips_dsp_r2.c
-+++ b/Source/LibWebP/src/dsp/dsp.filters_mips_dsp_r2.c
-@@ -48,7 +48,7 @@
- "srl %[temp0], %[length], 0x2 \n\t" \
- "beqz %[temp0], 4f \n\t" \
- " andi %[temp6], %[length], 0x3 \n\t" \
-- ".if "#INVERSE" \n\t" \
-+ ".if " #INVERSE " \n\t" \
- "lbu %[temp1], -1(%[src]) \n\t" \
- "1: \n\t" \
- "lbu %[temp2], 0(%[src]) \n\t" \
-@@ -84,7 +84,7 @@
- "lbu %[temp1], -1(%[src]) \n\t" \
- "lbu %[temp2], 0(%[src]) \n\t" \
- "addiu %[src], %[src], 1 \n\t" \
-- ".if "#INVERSE" \n\t" \
-+ ".if " #INVERSE " \n\t" \
- "addu %[temp3], %[temp1], %[temp2] \n\t" \
- "sb %[temp3], -1(%[src]) \n\t" \
- ".else \n\t" \
-@@ -131,7 +131,7 @@
- "ulw %[temp3], 4(%[src]) \n\t" \
- "ulw %[temp4], 4(%[pred]) \n\t" \
- "addiu %[src], %[src], 8 \n\t" \
-- ".if "#INVERSE" \n\t" \
-+ ".if " #INVERSE " \n\t" \
- "addu.qb %[temp5], %[temp1], %[temp2] \n\t" \
- "addu.qb %[temp6], %[temp3], %[temp4] \n\t" \
- ".else \n\t" \
-@@ -152,7 +152,7 @@
- "lbu %[temp2], 0(%[pred]) \n\t" \
- "addiu %[src], %[src], 1 \n\t" \
- "addiu %[pred], %[pred], 1 \n\t" \
-- ".if "#INVERSE" \n\t" \
-+ ".if " #INVERSE " \n\t" \
- "addu %[temp3], %[temp1], %[temp2] \n\t" \
- ".else \n\t" \
- "subu %[temp3], %[temp1], %[temp2] \n\t" \
-@@ -177,7 +177,7 @@
- __asm__ volatile ( \
- "lbu %[temp1], 0(%[src]) \n\t" \
- "lbu %[temp2], 0(%[pred]) \n\t" \
-- ".if "#INVERSE" \n\t" \
-+ ".if " #INVERSE " \n\t" \
- "addu %[temp3], %[temp1], %[temp2] \n\t" \
- ".else \n\t" \
- "subu %[temp3], %[temp1], %[temp2] \n\t" \
-diff --git a/Source/LibWebP/src/dsp/dsp.lossless_mips32.c b/Source/LibWebP/src/dsp/dsp.lossless_mips32.c
-index 8ae5958..cdf0e26 100644
---- a/Source/LibWebP/src/dsp/dsp.lossless_mips32.c
-+++ b/Source/LibWebP/src/dsp/dsp.lossless_mips32.c
-
-@@ -278,28 +278,28 @@
- // literal_ and successive histograms could be unaligned
- // so we must use ulw and usw
- #define ADD_TO_OUT(A, B, C, D, E, P0, P1, P2) \
-- "ulw %[temp0], "#A"(%["#P0"]) \n\t" \
-- "ulw %[temp1], "#B"(%["#P0"]) \n\t" \
-- "ulw %[temp2], "#C"(%["#P0"]) \n\t" \
-- "ulw %[temp3], "#D"(%["#P0"]) \n\t" \
-- "ulw %[temp4], "#A"(%["#P1"]) \n\t" \
-- "ulw %[temp5], "#B"(%["#P1"]) \n\t" \
-- "ulw %[temp6], "#C"(%["#P1"]) \n\t" \
-- "ulw %[temp7], "#D"(%["#P1"]) \n\t" \
-+ "ulw %[temp0], " #A "(%[" #P0 "]) \n\t" \
-+ "ulw %[temp1], " #B "(%[" #P0 "]) \n\t" \
-+ "ulw %[temp2], " #C "(%[" #P0 "]) \n\t" \
-+ "ulw %[temp3], " #D "(%[" #P0 "]) \n\t" \
-+ "ulw %[temp4], " #A "(%[" #P1 "]) \n\t" \
-+ "ulw %[temp5], " #B "(%[" #P1 "]) \n\t" \
-+ "ulw %[temp6], " #C "(%[" #P1 "]) \n\t" \
-+ "ulw %[temp7], " #D "(%[" #P1 "]) \n\t" \
- "addu %[temp4], %[temp4], %[temp0] \n\t" \
- "addu %[temp5], %[temp5], %[temp1] \n\t" \
- "addu %[temp6], %[temp6], %[temp2] \n\t" \
- "addu %[temp7], %[temp7], %[temp3] \n\t" \
-- "addiu %["#P0"], %["#P0"], 16 \n\t" \
-- ".if "#E" == 1 \n\t" \
-- "addiu %["#P1"], %["#P1"], 16 \n\t" \
-+ "addiu %[" #P0 "], %[" #P0 "], 16 \n\t" \
-+ ".if " #E " == 1 \n\t" \
-+ "addiu %[" #P1 "], %[" #P1 "], 16 \n\t" \
- ".endif \n\t" \
-- "usw %[temp4], "#A"(%["#P2"]) \n\t" \
-- "usw %[temp5], "#B"(%["#P2"]) \n\t" \
-- "usw %[temp6], "#C"(%["#P2"]) \n\t" \
-- "usw %[temp7], "#D"(%["#P2"]) \n\t" \
-- "addiu %["#P2"], %["#P2"], 16 \n\t" \
-- "bne %["#P0"], %[LoopEnd], 1b \n\t" \
-+ "usw %[temp4], " #A "(%[" #P2 "]) \n\t" \
-+ "usw %[temp5], " #B "(%[" #P2 "]) \n\t" \
-+ "usw %[temp6], " #C "(%[" #P2 "]) \n\t" \
-+ "usw %[temp7], " #D "(%[" #P2 "]) \n\t" \
-+ "addiu %[" #P2 "], %[" #P2 "], 16 \n\t" \
-+ "bne %[" #P0 "], %[LoopEnd], 1b \n\t" \
- ".set pop \n\t" \
-
- #define ASM_END_COMMON_0 \
-diff --git a/Source/LibWebP/src/dsp/dsp.lossless_mips_dsp_r2.c b/Source/LibWebP/src/dsp/dsp.lossless_mips_dsp_r2.c
-index ad55f2c..90aed7f 100644
---- a/Source/LibWebP/src/dsp/dsp.lossless_mips_dsp_r2.c
-+++ b/Source/LibWebP/src/dsp/dsp.lossless_mips_dsp_r2.c
-@@ -29,14 +29,14 @@
- for (x = 0; x < (width >> 2); ++x) { \
- int tmp1, tmp2, tmp3, tmp4; \
- __asm__ volatile ( \
-- ".ifc "#TYPE", uint8_t \n\t" \
-+ ".ifc " #TYPE ", uint8_t \n\t" \
- "lbu %[tmp1], 0(%[src]) \n\t" \
- "lbu %[tmp2], 1(%[src]) \n\t" \
- "lbu %[tmp3], 2(%[src]) \n\t" \
- "lbu %[tmp4], 3(%[src]) \n\t" \
- "addiu %[src], %[src], 4 \n\t" \
- ".endif \n\t" \
-- ".ifc "#TYPE", uint32_t \n\t" \
-+ ".ifc " #TYPE ", uint32_t \n\t" \
- "lw %[tmp1], 0(%[src]) \n\t" \
- "lw %[tmp2], 4(%[src]) \n\t" \
- "lw %[tmp3], 8(%[src]) \n\t" \
-@@ -55,7 +55,7 @@
- "lwx %[tmp2], %[tmp2](%[color_map]) \n\t" \
- "lwx %[tmp3], %[tmp3](%[color_map]) \n\t" \
- "lwx %[tmp4], %[tmp4](%[color_map]) \n\t" \
-- ".ifc "#TYPE", uint8_t \n\t" \
-+ ".ifc " #TYPE ", uint8_t \n\t" \
- "ext %[tmp1], %[tmp1], 8, 8 \n\t" \
- "ext %[tmp2], %[tmp2], 8, 8 \n\t" \
- "ext %[tmp3], %[tmp3], 8, 8 \n\t" \
-@@ -66,7 +66,7 @@
- "sb %[tmp4], 3(%[dst]) \n\t" \
- "addiu %[dst], %[dst], 4 \n\t" \
- ".endif \n\t" \
-- ".ifc "#TYPE", uint32_t \n\t" \
-+ ".ifc " #TYPE ", uint32_t \n\t" \
- "sw %[tmp1], 0(%[dst]) \n\t" \
- "sw %[tmp2], 4(%[dst]) \n\t" \
- "sw %[tmp3], 8(%[dst]) \n\t" \
-diff --git a/Source/LibWebP/src/dsp/mips_macro.h b/Source/LibWebP/src/dsp/mips_macro.h
-index 4cfb23c..e09d2c4 100644
---- a/Source/LibWebP/src/dsp/mips_macro.h
-+++ b/Source/LibWebP/src/dsp/mips_macro.h
-@@ -25,25 +25,25 @@
- // I - input (macro doesn't change it)
- #define ADD_SUB_HALVES(O0, O1, \
- I0, I1) \
-- "addq.ph %["#O0"], %["#I0"], %["#I1"] \n\t" \
-- "subq.ph %["#O1"], %["#I0"], %["#I1"] \n\t"
-+ "addq.ph %[" #O0 "], %[" #I0 "], %[" #I1 "] \n\t" \
-+ "subq.ph %[" #O1 "], %[" #I0 "], %[" #I1 "] \n\t"
-
- // O - output
- // I - input (macro doesn't change it)
- // I[0/1] - offset in bytes
- #define LOAD_IN_X2(O0, O1, \
- I0, I1) \
-- "lh %["#O0"], "#I0"(%[in]) \n\t" \
-- "lh %["#O1"], "#I1"(%[in]) \n\t"
-+ "lh %[" #O0 "], " #I0 "(%[in]) \n\t" \
-+ "lh %[" #O1 "], " #I1 "(%[in]) \n\t"
-
- // I0 - location
- // I1..I9 - offsets in bytes
- #define LOAD_WITH_OFFSET_X4(O0, O1, O2, O3, \
- I0, I1, I2, I3, I4, I5, I6, I7, I8, I9) \
-- "ulw %["#O0"], "#I1"+"XSTR(I9)"*"#I5"(%["#I0"]) \n\t" \
-- "ulw %["#O1"], "#I2"+"XSTR(I9)"*"#I6"(%["#I0"]) \n\t" \
-- "ulw %["#O2"], "#I3"+"XSTR(I9)"*"#I7"(%["#I0"]) \n\t" \
-- "ulw %["#O3"], "#I4"+"XSTR(I9)"*"#I8"(%["#I0"]) \n\t"
-+ "ulw %[" #O0 "], " #I1 "+"XSTR(I9)"*" #I5 "(%[" #I0 "]) \n\t" \
-+ "ulw %[" #O1 "], " #I2 "+"XSTR(I9)"*" #I6 "(%[" #I0 "]) \n\t" \
-+ "ulw %[" #O2 "], " #I3 "+"XSTR(I9)"*" #I7 "(%[" #I0 "]) \n\t" \
-+ "ulw %[" #O3 "], " #I4 "+"XSTR(I9)"*" #I8 "(%[" #I0 "]) \n\t"
-
- // O - output
- // IO - input/output
-@@ -51,42 +51,42 @@
- #define MUL_SHIFT_SUM(O0, O1, O2, O3, O4, O5, O6, O7, \
- IO0, IO1, IO2, IO3, \
- I0, I1, I2, I3, I4, I5, I6, I7) \
-- "mul %["#O0"], %["#I0"], %[kC2] \n\t" \
-- "mul %["#O1"], %["#I0"], %[kC1] \n\t" \
-- "mul %["#O2"], %["#I1"], %[kC2] \n\t" \
-- "mul %["#O3"], %["#I1"], %[kC1] \n\t" \
-- "mul %["#O4"], %["#I2"], %[kC2] \n\t" \
-- "mul %["#O5"], %["#I2"], %[kC1] \n\t" \
-- "mul %["#O6"], %["#I3"], %[kC2] \n\t" \
-- "mul %["#O7"], %["#I3"], %[kC1] \n\t" \
-- "sra %["#O0"], %["#O0"], 16 \n\t" \
-- "sra %["#O1"], %["#O1"], 16 \n\t" \
-- "sra %["#O2"], %["#O2"], 16 \n\t" \
-- "sra %["#O3"], %["#O3"], 16 \n\t" \
-- "sra %["#O4"], %["#O4"], 16 \n\t" \
-- "sra %["#O5"], %["#O5"], 16 \n\t" \
-- "sra %["#O6"], %["#O6"], 16 \n\t" \
-- "sra %["#O7"], %["#O7"], 16 \n\t" \
-- "addu %["#IO0"], %["#IO0"], %["#I4"] \n\t" \
-- "addu %["#IO1"], %["#IO1"], %["#I5"] \n\t" \
-- "subu %["#IO2"], %["#IO2"], %["#I6"] \n\t" \
-- "subu %["#IO3"], %["#IO3"], %["#I7"] \n\t"
-+ "mul %[" #O0 "], %[" #I0 "], %[kC2] \n\t" \
-+ "mul %[" #O1 "], %[" #I0 "], %[kC1] \n\t" \
-+ "mul %[" #O2 "], %[" #I1 "], %[kC2] \n\t" \
-+ "mul %[" #O3 "], %[" #I1 "], %[kC1] \n\t" \
-+ "mul %[" #O4 "], %[" #I2 "], %[kC2] \n\t" \
-+ "mul %[" #O5 "], %[" #I2 "], %[kC1] \n\t" \
-+ "mul %[" #O6 "], %[" #I3 "], %[kC2] \n\t" \
-+ "mul %[" #O7 "], %[" #I3 "], %[kC1] \n\t" \
-+ "sra %[" #O0 "], %[" #O0 "], 16 \n\t" \
-+ "sra %[" #O1 "], %[" #O1 "], 16 \n\t" \
-+ "sra %[" #O2 "], %[" #O2 "], 16 \n\t" \
-+ "sra %[" #O3 "], %[" #O3 "], 16 \n\t" \
-+ "sra %[" #O4 "], %[" #O4 "], 16 \n\t" \
-+ "sra %[" #O5 "], %[" #O5 "], 16 \n\t" \
-+ "sra %[" #O6 "], %[" #O6 "], 16 \n\t" \
-+ "sra %[" #O7 "], %[" #O7 "], 16 \n\t" \
-+ "addu %[" #IO0 "], %[" #IO0 "], %[" #I4 "] \n\t" \
-+ "addu %[" #IO1 "], %[" #IO1 "], %[" #I5 "] \n\t" \
-+ "subu %[" #IO2 "], %[" #IO2 "], %[" #I6 "] \n\t" \
-+ "subu %[" #IO3 "], %[" #IO3 "], %[" #I7 "] \n\t"
-
- // O - output
- // I - input (macro doesn't change it)
- #define INSERT_HALF_X2(O0, O1, \
- I0, I1) \
-- "ins %["#O0"], %["#I0"], 16, 16 \n\t" \
-- "ins %["#O1"], %["#I1"], 16, 16 \n\t"
-+ "ins %[" #O0 "], %[" #I0 "], 16, 16 \n\t" \
-+ "ins %[" #O1 "], %[" #I1 "], 16, 16 \n\t"
-
- // O - output
- // I - input (macro doesn't change it)
- #define SRA_16(O0, O1, O2, O3, \
- I0, I1, I2, I3) \
-- "sra %["#O0"], %["#I0"], 16 \n\t" \
-- "sra %["#O1"], %["#I1"], 16 \n\t" \
-- "sra %["#O2"], %["#I2"], 16 \n\t" \
-- "sra %["#O3"], %["#I3"], 16 \n\t"
-+ "sra %[" #O0 "], %[" #I0 "], 16 \n\t" \
-+ "sra %[" #O1 "], %[" #I1 "], 16 \n\t" \
-+ "sra %[" #O2 "], %[" #I2 "], 16 \n\t" \
-+ "sra %[" #O3 "], %[" #I3 "], 16 \n\t"
-
- // temp0[31..16 | 15..0] = temp8[31..16 | 15..0] + temp12[31..16 | 15..0]
- // temp1[31..16 | 15..0] = temp8[31..16 | 15..0] - temp12[31..16 | 15..0]
-@@ -96,22 +96,22 @@
- // I - input (macro doesn't change it)
- #define SHIFT_R_SUM_X2(O0, O1, O2, O3, O4, O5, O6, O7, \
- I0, I1, I2, I3, I4, I5, I6, I7) \
-- "addq.ph %["#O0"], %["#I0"], %["#I4"] \n\t" \
-- "subq.ph %["#O1"], %["#I0"], %["#I4"] \n\t" \
-- "addq.ph %["#O2"], %["#I1"], %["#I5"] \n\t" \
-- "subq.ph %["#O3"], %["#I1"], %["#I5"] \n\t" \
-- "addq.ph %["#O4"], %["#I2"], %["#I6"] \n\t" \
-- "subq.ph %["#O5"], %["#I2"], %["#I6"] \n\t" \
-- "addq.ph %["#O6"], %["#I3"], %["#I7"] \n\t" \
-- "subq.ph %["#O7"], %["#I3"], %["#I7"] \n\t" \
-- "shra.ph %["#O0"], %["#O0"], 3 \n\t" \
-- "shra.ph %["#O1"], %["#O1"], 3 \n\t" \
-- "shra.ph %["#O2"], %["#O2"], 3 \n\t" \
-- "shra.ph %["#O3"], %["#O3"], 3 \n\t" \
-- "shra.ph %["#O4"], %["#O4"], 3 \n\t" \
-- "shra.ph %["#O5"], %["#O5"], 3 \n\t" \
-- "shra.ph %["#O6"], %["#O6"], 3 \n\t" \
-- "shra.ph %["#O7"], %["#O7"], 3 \n\t"
-+ "addq.ph %[" #O0 "], %[" #I0 "], %[" #I4 "] \n\t" \
-+ "subq.ph %[" #O1 "], %[" #I0 "], %[" #I4 "] \n\t" \
-+ "addq.ph %[" #O2 "], %[" #I1 "], %[" #I5 "] \n\t" \
-+ "subq.ph %[" #O3 "], %[" #I1 "], %[" #I5 "] \n\t" \
-+ "addq.ph %[" #O4 "], %[" #I2 "], %[" #I6 "] \n\t" \
-+ "subq.ph %[" #O5 "], %[" #I2 "], %[" #I6 "] \n\t" \
-+ "addq.ph %[" #O6 "], %[" #I3 "], %[" #I7 "] \n\t" \
-+ "subq.ph %[" #O7 "], %[" #I3 "], %[" #I7 "] \n\t" \
-+ "shra.ph %[" #O0 "], %[" #O0 "], 3 \n\t" \
-+ "shra.ph %[" #O1 "], %[" #O1 "], 3 \n\t" \
-+ "shra.ph %[" #O2 "], %[" #O2 "], 3 \n\t" \
-+ "shra.ph %[" #O3 "], %[" #O3 "], 3 \n\t" \
-+ "shra.ph %[" #O4 "], %[" #O4 "], 3 \n\t" \
-+ "shra.ph %[" #O5 "], %[" #O5 "], 3 \n\t" \
-+ "shra.ph %[" #O6 "], %[" #O6 "], 3 \n\t" \
-+ "shra.ph %[" #O7 "], %[" #O7 "], 3 \n\t"
-
- // precrq.ph.w temp0, temp8, temp2
- // temp0 = temp8[31..16] | temp2[31..16]
-@@ -123,14 +123,14 @@
- #define PACK_2_HALVES_TO_WORD(O0, O1, O2, O3, \
- IO0, IO1, IO2, IO3, \
- I0, I1, I2, I3) \
-- "precrq.ph.w %["#O0"], %["#I0"], %["#IO0"] \n\t" \
-- "precrq.ph.w %["#O1"], %["#I1"], %["#IO1"] \n\t" \
-- "ins %["#IO0"], %["#I0"], 16, 16 \n\t" \
-- "ins %["#IO1"], %["#I1"], 16, 16 \n\t" \
-- "precrq.ph.w %["#O2"], %["#I2"], %["#IO2"] \n\t" \
-- "precrq.ph.w %["#O3"], %["#I3"], %["#IO3"] \n\t" \
-- "ins %["#IO2"], %["#I2"], 16, 16 \n\t" \
-- "ins %["#IO3"], %["#I3"], 16, 16 \n\t"
-+ "precrq.ph.w %[" #O0 "], %[" #I0 "], %[" #IO0 "] \n\t" \
-+ "precrq.ph.w %[" #O1 "], %[" #I1 "], %[" #IO1 "] \n\t" \
-+ "ins %[" #IO0 "], %[" #I0 "], 16, 16 \n\t" \
-+ "ins %[" #IO1 "], %[" #I1 "], 16, 16 \n\t" \
-+ "precrq.ph.w %[" #O2 "], %[" #I2 "], %[" #IO2 "] \n\t" \
-+ "precrq.ph.w %[" #O3 "], %[" #I3 "], %[" #IO3 "] \n\t" \
-+ "ins %[" #IO2 "], %[" #I2 "], 16, 16 \n\t" \
-+ "ins %[" #IO3 "], %[" #I3 "], 16, 16 \n\t"
-
- // preceu.ph.qbr temp0, temp8
- // temp0 = 0 | 0 | temp8[23..16] | temp8[7..0]
-@@ -140,14 +140,14 @@
- // I - input (macro doesn't change it)
- #define CONVERT_2_BYTES_TO_HALF(O0, O1, O2, O3, O4, O5, O6, O7, \
- I0, I1, I2, I3) \
-- "preceu.ph.qbr %["#O0"], %["#I0"] \n\t" \
-- "preceu.ph.qbl %["#O1"], %["#I0"] \n\t" \
-- "preceu.ph.qbr %["#O2"], %["#I1"] \n\t" \
-- "preceu.ph.qbl %["#O3"], %["#I1"] \n\t" \
-- "preceu.ph.qbr %["#O4"], %["#I2"] \n\t" \
-- "preceu.ph.qbl %["#O5"], %["#I2"] \n\t" \
-- "preceu.ph.qbr %["#O6"], %["#I3"] \n\t" \
-- "preceu.ph.qbl %["#O7"], %["#I3"] \n\t"
-+ "preceu.ph.qbr %[" #O0 "], %[" #I0 "] \n\t" \
-+ "preceu.ph.qbl %[" #O1 "], %[" #I0 "] \n\t" \
-+ "preceu.ph.qbr %[" #O2 "], %[" #I1 "] \n\t" \
-+ "preceu.ph.qbl %[" #O3 "], %[" #I1 "] \n\t" \
-+ "preceu.ph.qbr %[" #O4 "], %[" #I2 "] \n\t" \
-+ "preceu.ph.qbl %[" #O5 "], %[" #I2 "] \n\t" \
-+ "preceu.ph.qbr %[" #O6 "], %[" #I3 "] \n\t" \
-+ "preceu.ph.qbl %[" #O7 "], %[" #I3 "] \n\t"
-
- // temp0[31..16 | 15..0] = temp0[31..16 | 15..0] + temp8[31..16 | 15..0]
- // temp0[31..16 | 15..0] = temp0[31..16 <<(s) 7 | 15..0 <<(s) 7]
-@@ -160,30 +160,30 @@
- #define STORE_SAT_SUM_X2(IO0, IO1, IO2, IO3, IO4, IO5, IO6, IO7, \
- I0, I1, I2, I3, I4, I5, I6, I7, \
- I8, I9, I10, I11, I12, I13) \
-- "addq.ph %["#IO0"], %["#IO0"], %["#I0"] \n\t" \
-- "addq.ph %["#IO1"], %["#IO1"], %["#I1"] \n\t" \
-- "addq.ph %["#IO2"], %["#IO2"], %["#I2"] \n\t" \
-- "addq.ph %["#IO3"], %["#IO3"], %["#I3"] \n\t" \
-- "addq.ph %["#IO4"], %["#IO4"], %["#I4"] \n\t" \
-- "addq.ph %["#IO5"], %["#IO5"], %["#I5"] \n\t" \
-- "addq.ph %["#IO6"], %["#IO6"], %["#I6"] \n\t" \
-- "addq.ph %["#IO7"], %["#IO7"], %["#I7"] \n\t" \
-- "shll_s.ph %["#IO0"], %["#IO0"], 7 \n\t" \
-- "shll_s.ph %["#IO1"], %["#IO1"], 7 \n\t" \
-- "shll_s.ph %["#IO2"], %["#IO2"], 7 \n\t" \
-- "shll_s.ph %["#IO3"], %["#IO3"], 7 \n\t" \
-- "shll_s.ph %["#IO4"], %["#IO4"], 7 \n\t" \
-- "shll_s.ph %["#IO5"], %["#IO5"], 7 \n\t" \
-- "shll_s.ph %["#IO6"], %["#IO6"], 7 \n\t" \
-- "shll_s.ph %["#IO7"], %["#IO7"], 7 \n\t" \
-- "precrqu_s.qb.ph %["#IO0"], %["#IO1"], %["#IO0"] \n\t" \
-- "precrqu_s.qb.ph %["#IO2"], %["#IO3"], %["#IO2"] \n\t" \
-- "precrqu_s.qb.ph %["#IO4"], %["#IO5"], %["#IO4"] \n\t" \
-- "precrqu_s.qb.ph %["#IO6"], %["#IO7"], %["#IO6"] \n\t" \
-- "usw %["#IO0"], "XSTR(I13)"*"#I9"(%["#I8"]) \n\t" \
-- "usw %["#IO2"], "XSTR(I13)"*"#I10"(%["#I8"]) \n\t" \
-- "usw %["#IO4"], "XSTR(I13)"*"#I11"(%["#I8"]) \n\t" \
-- "usw %["#IO6"], "XSTR(I13)"*"#I12"(%["#I8"]) \n\t"
-+ "addq.ph %[" #IO0 "], %[" #IO0 "], %[" #I0 "] \n\t" \
-+ "addq.ph %[" #IO1 "], %[" #IO1 "], %[" #I1 "] \n\t" \
-+ "addq.ph %[" #IO2 "], %[" #IO2 "], %[" #I2 "] \n\t" \
-+ "addq.ph %[" #IO3 "], %[" #IO3 "], %[" #I3 "] \n\t" \
-+ "addq.ph %[" #IO4 "], %[" #IO4 "], %[" #I4 "] \n\t" \
-+ "addq.ph %[" #IO5 "], %[" #IO5 "], %[" #I5 "] \n\t" \
-+ "addq.ph %[" #IO6 "], %[" #IO6 "], %[" #I6 "] \n\t" \
-+ "addq.ph %[" #IO7 "], %[" #IO7 "], %[" #I7 "] \n\t" \
-+ "shll_s.ph %[" #IO0 "], %[" #IO0 "], 7 \n\t" \
-+ "shll_s.ph %[" #IO1 "], %[" #IO1 "], 7 \n\t" \
-+ "shll_s.ph %[" #IO2 "], %[" #IO2 "], 7 \n\t" \
-+ "shll_s.ph %[" #IO3 "], %[" #IO3 "], 7 \n\t" \
-+ "shll_s.ph %[" #IO4 "], %[" #IO4 "], 7 \n\t" \
-+ "shll_s.ph %[" #IO5 "], %[" #IO5 "], 7 \n\t" \
-+ "shll_s.ph %[" #IO6 "], %[" #IO6 "], 7 \n\t" \
-+ "shll_s.ph %[" #IO7 "], %[" #IO7 "], 7 \n\t" \
-+ "precrqu_s.qb.ph %[" #IO0 "], %[" #IO1 "], %[" #IO0 "] \n\t" \
-+ "precrqu_s.qb.ph %[" #IO2 "], %[" #IO3 "], %[" #IO2 "] \n\t" \
-+ "precrqu_s.qb.ph %[" #IO4 "], %[" #IO5 "], %[" #IO4 "] \n\t" \
-+ "precrqu_s.qb.ph %[" #IO6 "], %[" #IO7 "], %[" #IO6 "] \n\t" \
-+ "usw %[" #IO0 "], "XSTR(I13)"*" #I9 "(%[" #I8 "]) \n\t" \
-+ "usw %[" #IO2 "], "XSTR(I13)"*" #I10 "(%[" #I8 "]) \n\t" \
-+ "usw %[" #IO4 "], "XSTR(I13)"*" #I11 "(%[" #I8 "]) \n\t" \
-+ "usw %[" #IO6 "], "XSTR(I13)"*" #I12 "(%[" #I8 "]) \n\t"
-
- #define OUTPUT_EARLY_CLOBBER_REGS_10() \
- : [temp1]"=&r"(temp1), [temp2]"=&r"(temp2), [temp3]"=&r"(temp3), \
-diff --git a/Source/LibWebP/src/dsp/dsp.upsampling_mips_dsp_r2.c b/Source/LibWebP/src/dsp/dsp.upsampling_mips_dsp_r2.c
-index 9c9665f..46f207b 100644
---- a/Source/LibWebP/src/dsp/dsp.upsampling_mips_dsp_r2.c
-+++ b/Source/LibWebP/src/dsp/dsp.upsampling_mips_dsp_r2.c
-@@ -34,15 +34,15 @@
- G = G - t2 + kGCst; \
- B = B + kBCst; \
- __asm__ volatile ( \
-- "shll_s.w %["#R"], %["#R"], 9 \n\t" \
-- "shll_s.w %["#G"], %["#G"], 9 \n\t" \
-- "shll_s.w %["#B"], %["#B"], 9 \n\t" \
-- "precrqu_s.qb.ph %["#R"], %["#R"], $zero \n\t" \
-- "precrqu_s.qb.ph %["#G"], %["#G"], $zero \n\t" \
-- "precrqu_s.qb.ph %["#B"], %["#B"], $zero \n\t" \
-- "srl %["#R"], %["#R"], 24 \n\t" \
-- "srl %["#G"], %["#G"], 24 \n\t" \
-- "srl %["#B"], %["#B"], 24 \n\t" \
-+ "shll_s.w %[" #R "], %[" #R "], 9 \n\t" \
-+ "shll_s.w %[" #G "], %[" #G "], 9 \n\t" \
-+ "shll_s.w %[" #B "], %[" #B "], 9 \n\t" \
-+ "precrqu_s.qb.ph %[" #R "], %[" #R "], $zero \n\t" \
-+ "precrqu_s.qb.ph %[" #G "], %[" #G "], $zero \n\t" \
-+ "precrqu_s.qb.ph %[" #B "], %[" #B "], $zero \n\t" \
-+ "srl %[" #R "], %[" #R "], 24 \n\t" \
-+ "srl %[" #G "], %[" #G "], 24 \n\t" \
-+ "srl %[" #B "], %[" #B "], 24 \n\t" \
- : [R]"+r"(R), [G]"+r"(G), [B]"+r"(B) \
- : \
- ); \
-diff --git a/Source/LibWebP/src/dsp/dsp.yuv_mips_dsp_r2.c b/Source/LibWebP/src/dsp/dsp.yuv_mips_dsp_r2.c
-index 43f02cc..45a2200 100644
---- a/Source/LibWebP/src/dsp/dsp.yuv_mips_dsp_r2.c
-+++ b/Source/LibWebP/src/dsp/dsp.yuv_mips_dsp_r2.c
-@@ -39,12 +39,12 @@
- "addu %[temp5], %[temp0], %[temp1] \n\t" \
- "subu %[temp6], %[temp0], %[temp2] \n\t" \
- "addu %[temp7], %[temp0], %[temp4] \n\t" \
--".if "#K" \n\t" \
-+".if " #K " \n\t" \
- "lbu %[temp0], 1(%[y]) \n\t" \
- ".endif \n\t" \
- "shll_s.w %[temp5], %[temp5], 9 \n\t" \
- "shll_s.w %[temp6], %[temp6], 9 \n\t" \
--".if "#K" \n\t" \
-+".if " #K " \n\t" \
- "mul %[temp0], %[t_con_5], %[temp0] \n\t" \
- ".endif \n\t" \
- "shll_s.w %[temp7], %[temp7], 9 \n\t" \
-@@ -54,9 +54,9 @@
- "srl %[temp5], %[temp5], 24 \n\t" \
- "srl %[temp6], %[temp6], 24 \n\t" \
- "srl %[temp7], %[temp7], 24 \n\t" \
-- "sb %[temp5], "#R"(%[dst]) \n\t" \
-- "sb %[temp6], "#G"(%[dst]) \n\t" \
-- "sb %[temp7], "#B"(%[dst]) \n\t" \
-+ "sb %[temp5], " #R "(%[dst]) \n\t" \
-+ "sb %[temp6], " #G "(%[dst]) \n\t" \
-+ "sb %[temp7], " #B "(%[dst]) \n\t" \
-
- #define ASM_CLOBBER_LIST() \
- : [temp0]"=&r"(temp0), [temp1]"=&r"(temp1), [temp2]"=&r"(temp2), \
diff --git a/gnu/packages/patches/freeimage-unbundle.patch b/gnu/packages/patches/freeimage-unbundle.patch
index ca907d3276b..4d9b8e25c93 100644
--- a/gnu/packages/patches/freeimage-unbundle.patch
+++ b/gnu/packages/patches/freeimage-unbundle.patch
@@ -1,4 +1,4 @@
-https://src.fedoraproject.org/cgit/rpms/freeimage.git/tree/FreeImage-3.17.0_unbundle.patch
+https://src.fedoraproject.org/cgit/rpms/freeimage.git/tree/FreeImage_unbundle.patch
diff -rupN FreeImage/genfipsrclist.sh FreeImage-new/genfipsrclist.sh
--- FreeImage/genfipsrclist.sh 2015-02-20 10:52:16.000000000 +0100
@@ -25,10 +25,10 @@ diff -rupN FreeImage/gensrclist.sh FreeImage-new/gensrclist.sh
#!/bin/sh
-DIRLIST=". Source Source/Metadata Source/FreeImageToolkit Source/LibJPEG Source/LibPNG Source/LibTIFF4 Source/ZLib Source/LibOpenJPEG Source/OpenEXR Source/OpenEXR/Half Source/OpenEXR/Iex Source/OpenEXR/IlmImf Source/OpenEXR/IlmThread Source/OpenEXR/Imath Source/OpenEXR/IexMath Source/LibRawLite Source/LibRawLite/dcraw Source/LibRawLite/internal Source/LibRawLite/libraw Source/LibRawLite/src Source/LibWebP Source/LibJXR Source/LibJXR/common/include Source/LibJXR/image/sys Source/LibJXR/jxrgluelib"
-+DIRLIST=". Source Source/Metadata Source/FreeImageToolkit Source/LibJXR Source/LibJXR/common/include Source/LibJXR/image/sys Source/LibJXR/jxrgluelib"
++DIRLIST=". Source Source/Metadata Source/FreeImageToolkit"
echo "VER_MAJOR = 3" > Makefile.srcs
- echo "VER_MINOR = 17.0" >> Makefile.srcs
+ echo "VER_MINOR = 18.0" >> Makefile.srcs
diff -rupN FreeImage/Makefile.fip FreeImage-new/Makefile.fip
--- FreeImage/Makefile.fip 2015-03-08 18:03:56.000000000 +0100
+++ FreeImage-new/Makefile.fip 2015-09-05 02:14:09.212684028 +0200
@@ -90,8 +90,8 @@ diff -rupN FreeImage/Makefile.gnu FreeImage-new/Makefile.gnu
-# LibJXR
-CXXFLAGS += -D__ANSI__
-CXXFLAGS += $(INCLUDE)
-+override CFLAGS += $(INCLUDE) -D__ANSI__ $(shell pkg-config --cflags OpenEXR libopenjp2 libraw libpng libtiff-4 libwebp libwebpmux zlib)
-+override LDFLAGS += -ljpeg $(shell pkg-config --libs OpenEXR libopenjp2 libraw libpng libtiff-4 libwebp libwebpmux zlib)
++override CFLAGS += $(INCLUDE) -D__ANSI__ -I/usr/include/jxrlib $(shell pkg-config --cflags OpenEXR libopenjp2 libraw libpng libtiff-4 libwebp libwebpmux zlib)
++override LDFLAGS += -ljpeg -ljpegxr -ljxrglue $(shell pkg-config --libs OpenEXR libopenjp2 libraw libpng libtiff-4 libwebp libwebpmux zlib)
ifeq ($(shell sh -c 'uname -m 2>/dev/null || echo not'),x86_64)
- CFLAGS += -fPIC
@@ -215,6 +215,18 @@ diff -rupN FreeImage/Source/FreeImage/PluginJPEG.cpp FreeImage-new/Source/FreeIm
}
#include "FreeImage.h"
+diff -rupN FreeImage/Source/FreeImage/PluginJXR.cpp FreeImage-new/Source/FreeImage/PluginJXR.cpp
+--- FreeImage/Source/FreeImage/PluginJXR.cpp 2015-03-03 23:07:08.000000000 +0100
++++ FreeImage-new/Source/FreeImage/PluginJXR.cpp 2018-07-31 23:37:58.561953201 +0200
+@@ -23,7 +23,7 @@
+ #include "Utilities.h"
+ #include "../Metadata/FreeImageTag.h"
+
+-#include "../LibJXR/jxrgluelib/JXRGlue.h"
++#include
+
+ // ==========================================================
+ // Plugin Interface
diff -rupN FreeImage/Source/FreeImage/PluginPNG.cpp FreeImage-new/Source/FreeImage/PluginPNG.cpp
--- FreeImage/Source/FreeImage/PluginPNG.cpp 2015-03-10 20:16:12.000000000 +0100
+++ FreeImage-new/Source/FreeImage/PluginPNG.cpp 2015-09-05 02:13:52.044353363 +0200
@@ -241,38 +253,39 @@ diff -rupN FreeImage/Source/FreeImage/PluginRAW.cpp FreeImage-new/Source/FreeIma
#include "FreeImage.h"
#include "Utilities.h"
+
diff -rupN FreeImage/Source/FreeImage/PluginTIFF.cpp FreeImage-new/Source/FreeImage/PluginTIFF.cpp
--- FreeImage/Source/FreeImage/PluginTIFF.cpp 2015-03-02 02:07:08.000000000 +0100
+++ FreeImage-new/Source/FreeImage/PluginTIFF.cpp 2015-09-05 02:13:52.044353363 +0200
@@ -37,9 +37,9 @@
-
- #include "FreeImage.h"
- #include "Utilities.h"
--#include "../LibTIFF4/tiffiop.h"
-+#include
- #include "../Metadata/FreeImageTag.h"
--#include "../OpenEXR/Half/half.h"
-+#include
-
- #include "FreeImageIO.h"
- #include "PSDParser.h"
-@@ -194,16 +194,6 @@ TIFFFdOpen(thandle_t handle, const char
- return tif;
- }
-
--/**
--Open a TIFF file for reading or writing
--@param name
--@param mode
--*/
--TIFF*
--TIFFOpen(const char* name, const char* mode) {
-- return 0;
--}
--
- // ----------------------------------------------------------
- // TIFF library FreeImage-specific routines.
- // ----------------------------------------------------------
+
+ #include "FreeImage.h"
+ #include "Utilities.h"
+-#include "../LibTIFF4/tiffiop.h"
++#include
+ #include "../Metadata/FreeImageTag.h"
+-#include "../OpenEXR/Half/half.h"
++#include
+
+ #include "FreeImageIO.h"
+ #include "PSDParser.h"
+@@ -194,16 +194,6 @@ TIFFFdOpen(thandle_t handle, const char *name, const char *mode) {
+ return tif;
+ }
+
+-/**
+-Open a TIFF file for reading or writing
+-@param name
+-@param mode
+-*/
+-TIFF*
+-TIFFOpen(const char* name, const char* mode) {
+- return 0;
+-}
+-
+ // ----------------------------------------------------------
+ // TIFF library FreeImage-specific routines.
+ // ----------------------------------------------------------
diff -rupN FreeImage/Source/FreeImage/PluginWebP.cpp FreeImage-new/Source/FreeImage/PluginWebP.cpp
--- FreeImage/Source/FreeImage/PluginWebP.cpp 2015-03-02 02:07:08.000000000 +0100
+++ FreeImage-new/Source/FreeImage/PluginWebP.cpp 2015-09-05 02:13:52.044353363 +0200
@@ -282,15 +295,81 @@ diff -rupN FreeImage/Source/FreeImage/PluginWebP.cpp FreeImage-new/Source/FreeIm
-#include "../LibWebP/src/webp/decode.h"
-#include "../LibWebP/src/webp/encode.h"
--#include "../LibWebP/src/enc/vp8enci.h"
-#include "../LibWebP/src/webp/mux.h"
+#include
+#include
-+// #include "../LibWebP/src/enc/vp8enci.h"
+#include
// ==========================================================
// Plugin Interface
+ diff -rupN FreeImage/Source/FreeImage/PSDParser.cpp FreeImage-new/Source/FreeImage/PSDParser.cpp
+--- FreeImage/Source/FreeImage/PSDParser.cpp 2016-02-11 03:18:02.000000000 +0100
++++ FreeImage-new/Source/FreeImage/PSDParser.cpp 2018-08-01 00:17:18.323822675 +0200
+@@ -133,8 +133,8 @@ public:
+ template <>
+ class PSDGetValue<8> {
+ public:
+- static inline UINT64 get(const BYTE * iprBuffer) {
+- UINT64 v = ((const UINT64*)iprBuffer)[0];
++ static inline uint64_t get(const BYTE * iprBuffer) {
++ uint64_t v = ((const uint64_t*)iprBuffer)[0];
+ #ifndef FREEIMAGE_BIGENDIAN
+ SwapInt64(&v);
+ #endif
+@@ -147,7 +147,7 @@ public:
+
+ // --------------------------------------------------------------------------
+
+-static UINT64
++static uint64_t
+ psdReadSize(FreeImageIO *io, fi_handle handle, const psdHeaderInfo& header) {
+ if(header._Version == 1) {
+ BYTE Length[4];
+@@ -199,11 +199,11 @@ public:
+ template <>
+ class PSDSetValue<8> {
+ public:
+- static inline void set(const BYTE * iprBuffer, UINT64 v) {
++ static inline void set(const BYTE * iprBuffer, uint64_t v) {
+ #ifndef FREEIMAGE_BIGENDIAN
+ SwapInt64(&v);
+ #endif
+- ((UINT64*)iprBuffer)[0] = v;
++ ((uint64_t*)iprBuffer)[0] = v;
+ }
+ };
+
+@@ -213,7 +213,7 @@ public:
+ // --------------------------------------------------------------------------
+
+ static inline bool
+-psdWriteSize(FreeImageIO *io, fi_handle handle, const psdHeaderInfo& header, UINT64 v) {
++psdWriteSize(FreeImageIO *io, fi_handle handle, const psdHeaderInfo& header, uint64_t v) {
+ if(header._Version == 1) {
+ BYTE Length[4];
+ psdSetLongValue(Length, sizeof(Length), (DWORD)v);
+@@ -1063,10 +1063,10 @@ unsigned psdParser::GetChannelOffset(FIB
+ bool psdParser::ReadLayerAndMaskInfoSection(FreeImageIO *io, fi_handle handle) {
+ bool bSuccess = true;
+
+- UINT64 nTotalBytes = psdReadSize(io, handle, _headerInfo);
++ uint64_t nTotalBytes = psdReadSize(io, handle, _headerInfo);
+
+ // Hack to handle large PSB files without using fseeko().
+- if (sizeof(long) < sizeof(UINT64)) {
++ if (sizeof(long) < sizeof(uint64_t)) {
+ const long offset = 0x10000000;
+ while (nTotalBytes > offset) {
+ if (io->seek_proc(handle, offset, SEEK_CUR) != 0) {
+@@ -1672,7 +1672,7 @@ bool psdParser::WriteLayerAndMaskInfoSec
+ // Short section with no layers.
+ BYTE IntValue[4];
+
+- UINT64 size;
++ uint64_t size;
+ if(_headerInfo._Version == 1) {
+ size = 8;
+ } else {
diff -rupN FreeImage/Source/FreeImage/ZLibInterface.cpp FreeImage-new/Source/FreeImage/ZLibInterface.cpp
--- FreeImage/Source/FreeImage/ZLibInterface.cpp 2015-03-02 02:07:10.000000000 +0100
+++ FreeImage-new/Source/FreeImage/ZLibInterface.cpp 2015-09-05 02:13:52.044353363 +0200
@@ -536,3 +615,21 @@ diff -rupN FreeImage/Source/Metadata/XTIFF.cpp FreeImage-new/Source/Metadata/XTI
if(skip_write_field(tif, tag_id)) {
// skip tags that are already handled by the LibTIFF writing process
+diff -rupN FreeImage/Source/Utilities.h FreeImage-new/Source/Utilities.h
+--- FreeImage/Source/Utilities.h 2016-04-11 15:15:32.000000000 +0200
++++ FreeImage-new/Source/Utilities.h 2018-08-01 00:16:29.826825358 +0200
+@@ -446,12 +446,12 @@ SwapLong(DWORD *lp) {
+ }
+
+ inline void
+-SwapInt64(UINT64 *arg) {
++SwapInt64(uint64_t *arg) {
+ #if defined(_MSC_VER) && _MSC_VER >= 1310
+ *arg = _byteswap_uint64(*arg);
+ #else
+ union Swap {
+- UINT64 sv;
++ uint64_t sv;
+ DWORD ul[2];
+ } tmp, result;
+ tmp.sv = *arg;
diff --git a/gnu/packages/patches/glm-restore-install-target.patch b/gnu/packages/patches/glm-restore-install-target.patch
new file mode 100644
index 00000000000..a628030f6ff
--- /dev/null
+++ b/gnu/packages/patches/glm-restore-install-target.patch
@@ -0,0 +1,574 @@
+From: Tobias Geerinckx-Rice
+Date: Mon, 23 Sep 2019 22:01:17 +0200
+Subject: [PATCH] gnu: glm: Restore ‘install’ target.
+
+It was removed in 0.9.9.6, making installation a tedious manual process
+for no clear reason[0]. Restore it for now.
+
+[0]: https://github.com/g-truc/glm/issues/947
+
+diff -Naur glm/cmake/CMakePackageConfigHelpers.cmake glmn/cmake/CMakePackageConfigHelpers.cmake
+--- glm/cmake/CMakePackageConfigHelpers.cmake 1970-01-01 01:00:00.000000000 +0100
++++ glmn/cmake/CMakePackageConfigHelpers.cmake 2019-09-23 00:11:21.418152249 +0200
+@@ -0,0 +1,227 @@
++# - CONFIGURE_PACKAGE_CONFIG_FILE(), WRITE_BASIC_PACKAGE_VERSION_FILE()
++#
++# CONFIGURE_PACKAGE_CONFIG_FILE(