From 3f55b7be16c52a298b8b8d79f199119944784ca3 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 23 Sep 2019 22:15:54 +0200 Subject: [PATCH 001/133] gnu: glm: Update to 0.9.9.6. * gnu/packages/maths.scm (glm): Update to 0.9.9.6. [source]: Add patch. * gnu/packages/patches/glm-restore-install-target.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/local.mk | 1 + gnu/packages/maths.scm | 6 +- .../patches/glm-restore-install-target.patch | 574 ++++++++++++++++++ 3 files changed, 578 insertions(+), 3 deletions(-) create mode 100644 gnu/packages/patches/glm-restore-install-target.patch diff --git a/gnu/local.mk b/gnu/local.mk index 8e535e208b..043469b716 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -895,6 +895,7 @@ 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/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 \ diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 47026ec41b..2e0883a724 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -3543,15 +3543,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/patches/glm-restore-install-target.patch b/gnu/packages/patches/glm-restore-install-target.patch new file mode 100644 index 0000000000..a628030f6f --- /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( INSTALL_DESTINATION ++# [PATH_VARS ... ] ++# [NO_SET_AND_CHECK_MACRO] ++# [NO_CHECK_REQUIRED_COMPONENTS_MACRO]) ++# ++# CONFIGURE_PACKAGE_CONFIG_FILE() should be used instead of the plain ++# CONFIGURE_FILE() command when creating the Config.cmake or -config.cmake ++# file for installing a project or library. It helps making the resulting package ++# relocatable by avoiding hardcoded paths in the installed Config.cmake file. ++# ++# In a FooConfig.cmake file there may be code like this to make the ++# install destinations know to the using project: ++# set(FOO_INCLUDE_DIR "@CMAKE_INSTALL_FULL_INCLUDEDIR@" ) ++# set(FOO_DATA_DIR "@CMAKE_INSTALL_PREFIX@/@RELATIVE_DATA_INSTALL_DIR@" ) ++# set(FOO_ICONS_DIR "@CMAKE_INSTALL_PREFIX@/share/icons" ) ++# ...logic to determine installedPrefix from the own location... ++# set(FOO_CONFIG_DIR "${installedPrefix}/@CONFIG_INSTALL_DIR@" ) ++# All 4 options shown above are not sufficient, since the first 3 hardcode ++# the absolute directory locations, and the 4th case works only if the logic ++# to determine the installedPrefix is correct, and if CONFIG_INSTALL_DIR contains ++# a relative path, which in general cannot be guaranteed. ++# This has the effect that the resulting FooConfig.cmake file would work poorly ++# under Windows and OSX, where users are used to choose the install location ++# of a binary package at install time, independent from how CMAKE_INSTALL_PREFIX ++# was set at build/cmake time. ++# ++# Using CONFIGURE_PACKAGE_CONFIG_FILE() helps. If used correctly, it makes the ++# resulting FooConfig.cmake file relocatable. ++# Usage: ++# 1. write a FooConfig.cmake.in file as you are used to ++# 2. insert a line containing only the string "@PACKAGE_INIT@" ++# 3. instead of SET(FOO_DIR "@SOME_INSTALL_DIR@"), use SET(FOO_DIR "@PACKAGE_SOME_INSTALL_DIR@") ++# (this must be after the @PACKAGE_INIT@ line) ++# 4. instead of using the normal CONFIGURE_FILE(), use CONFIGURE_PACKAGE_CONFIG_FILE() ++# ++# The and arguments are the input and output file, the same way ++# as in CONFIGURE_FILE(). ++# ++# The given to INSTALL_DESTINATION must be the destination where the FooConfig.cmake ++# file will be installed to. This can either be a relative or absolute path, both work. ++# ++# The variables to given as PATH_VARS are the variables which contain ++# install destinations. For each of them the macro will create a helper variable ++# PACKAGE_. These helper variables must be used ++# in the FooConfig.cmake.in file for setting the installed location. They are calculated ++# by CONFIGURE_PACKAGE_CONFIG_FILE() so that they are always relative to the ++# installed location of the package. This works both for relative and also for absolute locations. ++# For absolute locations it works only if the absolute location is a subdirectory ++# of CMAKE_INSTALL_PREFIX. ++# ++# By default configure_package_config_file() also generates two helper macros, ++# set_and_check() and check_required_components() into the FooConfig.cmake file. ++# ++# set_and_check() should be used instead of the normal set() ++# command for setting directories and file locations. Additionally to setting the ++# variable it also checks that the referenced file or directory actually exists ++# and fails with a FATAL_ERROR otherwise. This makes sure that the created ++# FooConfig.cmake file does not contain wrong references. ++# When using the NO_SET_AND_CHECK_MACRO, this macro is not generated into the ++# FooConfig.cmake file. ++# ++# check_required_components() should be called at the end of the ++# FooConfig.cmake file if the package supports components. ++# This macro checks whether all requested, non-optional components have been found, ++# and if this is not the case, sets the Foo_FOUND variable to FALSE, so that the package ++# is considered to be not found. ++# It does that by testing the Foo__FOUND variables for all requested ++# required components. ++# When using the NO_CHECK_REQUIRED_COMPONENTS option, this macro is not generated ++# into the FooConfig.cmake file. ++# ++# For an example see below the documentation for WRITE_BASIC_PACKAGE_VERSION_FILE(). ++# ++# ++# WRITE_BASIC_PACKAGE_VERSION_FILE( filename VERSION major.minor.patch COMPATIBILITY (AnyNewerVersion|SameMajorVersion|ExactVersion) ) ++# ++# Writes a file for use as ConfigVersion.cmake file to . ++# See the documentation of FIND_PACKAGE() for details on this. ++# filename is the output filename, it should be in the build tree. ++# major.minor.patch is the version number of the project to be installed ++# The COMPATIBILITY mode AnyNewerVersion means that the installed package version ++# will be considered compatible if it is newer or exactly the same as the requested version. ++# This mode should be used for packages which are fully backward compatible, ++# also across major versions. ++# If SameMajorVersion is used instead, then the behaviour differs from AnyNewerVersion ++# in that the major version number must be the same as requested, e.g. version 2.0 will ++# not be considered compatible if 1.0 is requested. ++# This mode should be used for packages which guarantee backward compatibility within the ++# same major version. ++# If ExactVersion is used, then the package is only considered compatible if the requested ++# version matches exactly its own version number (not considering the tweak version). ++# For example, version 1.2.3 of a package is only considered compatible to requested version 1.2.3. ++# This mode is for packages without compatibility guarantees. ++# If your project has more elaborated version matching rules, you will need to write your ++# own custom ConfigVersion.cmake file instead of using this macro. ++# ++# Internally, this macro executes configure_file() to create the resulting ++# version file. Depending on the COMPATIBILITY, either the file ++# BasicConfigVersion-SameMajorVersion.cmake.in or BasicConfigVersion-AnyNewerVersion.cmake.in ++# is used. Please note that these two files are internal to CMake and you should ++# not call configure_file() on them yourself, but they can be used as starting ++# point to create more sophisticted custom ConfigVersion.cmake files. ++# ++# ++# Example using both configure_package_config_file() and write_basic_package_version_file(): ++# CMakeLists.txt: ++# set(INCLUDE_INSTALL_DIR include/ ... CACHE ) ++# set(LIB_INSTALL_DIR lib/ ... CACHE ) ++# set(SYSCONFIG_INSTALL_DIR etc/foo/ ... CACHE ) ++# ... ++# include(CMakePackageConfigHelpers) ++# configure_package_config_file(FooConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake ++# INSTALL_DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake ++# PATH_VARS INCLUDE_INSTALL_DIR SYSCONFIG_INSTALL_DIR) ++# write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake ++# VERSION 1.2.3 ++# COMPATIBILITY SameMajorVersion ) ++# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake ++# DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake ) ++# ++# With a FooConfig.cmake.in: ++# set(FOO_VERSION x.y.z) ++# ... ++# @PACKAGE_INIT@ ++# ... ++# set_and_check(FOO_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") ++# set_and_check(FOO_SYSCONFIG_DIR "@PACKAGE_SYSCONFIG_INSTALL_DIR@") ++# ++# check_required_components(Foo) ++ ++ ++#============================================================================= ++# Copyright 2012 Alexander Neundorf ++# ++# Distributed under the OSI-approved BSD License (the "License"); ++# see accompanying file Copyright.txt for details. ++# ++# This software is distributed WITHOUT ANY WARRANTY; without even the ++# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++# See the License for more information. ++#============================================================================= ++# (To distribute this file outside of CMake, substitute the full ++# License text for the above reference.) ++ ++include(CMakeParseArguments) ++ ++include(WriteBasicConfigVersionFile) ++ ++macro(WRITE_BASIC_PACKAGE_VERSION_FILE) ++ write_basic_config_version_file(${ARGN}) ++endmacro() ++ ++ ++function(CONFIGURE_PACKAGE_CONFIG_FILE _inputFile _outputFile) ++ set(options NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO) ++ set(oneValueArgs INSTALL_DESTINATION ) ++ set(multiValueArgs PATH_VARS ) ++ ++ cmake_parse_arguments(CCF "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) ++ ++ if(CCF_UNPARSED_ARGUMENTS) ++ message(FATAL_ERROR "Unknown keywords given to CONFIGURE_PACKAGE_CONFIG_FILE(): \"${CCF_UNPARSED_ARGUMENTS}\"") ++ endif() ++ ++ if(NOT CCF_INSTALL_DESTINATION) ++ message(FATAL_ERROR "No INSTALL_DESTINATION given to CONFIGURE_PACKAGE_CONFIG_FILE()") ++ endif() ++ ++ if(IS_ABSOLUTE "${CCF_INSTALL_DESTINATION}") ++ set(absInstallDir "${CCF_INSTALL_DESTINATION}") ++ else() ++ set(absInstallDir "${CMAKE_INSTALL_PREFIX}/${CCF_INSTALL_DESTINATION}") ++ endif() ++ file(RELATIVE_PATH PACKAGE_RELATIVE_PATH "${absInstallDir}" "${CMAKE_INSTALL_PREFIX}" ) ++ ++ foreach(var ${CCF_PATH_VARS}) ++ if(NOT DEFINED ${var}) ++ message(FATAL_ERROR "Variable ${var} does not exist") ++ else() ++ if(IS_ABSOLUTE "${${var}}") ++ string(REPLACE "${CMAKE_INSTALL_PREFIX}" "\${PACKAGE_PREFIX_DIR}" ++ PACKAGE_${var} "${${var}}") ++ else() ++ set(PACKAGE_${var} "\${PACKAGE_PREFIX_DIR}/${${var}}") ++ endif() ++ endif() ++ endforeach() ++ ++ set(PACKAGE_INIT " ++####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() ####### ++get_filename_component(PACKAGE_PREFIX_DIR \"\${CMAKE_CURRENT_LIST_DIR}/${PACKAGE_RELATIVE_PATH}\" ABSOLUTE) ++") ++ ++ if(NOT CCF_NO_SET_AND_CHECK_MACRO) ++ set(PACKAGE_INIT "${PACKAGE_INIT} ++macro(set_and_check _var _file) ++ set(\${_var} \"\${_file}\") ++ if(NOT EXISTS \"\${_file}\") ++ message(FATAL_ERROR \"File or directory \${_file} referenced by variable \${_var} does not exist !\") ++ endif() ++endmacro() ++") ++ endif() ++ ++ ++ if(NOT CCF_NO_CHECK_REQUIRED_COMPONENTS_MACRO) ++ set(PACKAGE_INIT "${PACKAGE_INIT} ++macro(check_required_components _NAME) ++ foreach(comp \${\${_NAME}_FIND_COMPONENTS}) ++ if(NOT \${_NAME}_\${comp}_FOUND) ++ if(\${_NAME}_FIND_REQUIRED_\${comp}) ++ set(\${_NAME}_FOUND FALSE) ++ endif() ++ endif() ++ endforeach(comp) ++endmacro() ++") ++ endif() ++ ++ set(PACKAGE_INIT "${PACKAGE_INIT} ++####################################################################################") ++ ++ configure_file("${_inputFile}" "${_outputFile}" @ONLY) ++ ++endfunction() +diff -Naur glm/cmake/glmBuildConfig.cmake.in glmn/cmake/glmBuildConfig.cmake.in +--- glm/cmake/glmBuildConfig.cmake.in 1970-01-01 01:00:00.000000000 +0100 ++++ glmn/cmake/glmBuildConfig.cmake.in 2019-09-23 00:12:08.090955650 +0200 +@@ -0,0 +1,6 @@ ++set(GLM_VERSION "@GLM_VERSION@") ++set(GLM_INCLUDE_DIRS "@CMAKE_CURRENT_SOURCE_DIR@") ++ ++if (NOT CMAKE_VERSION VERSION_LESS "3.0") ++ include("${CMAKE_CURRENT_LIST_DIR}/glmTargets.cmake") ++endif() +diff -Naur glm/cmake/glmConfig.cmake.in glmn/cmake/glmConfig.cmake.in +--- glm/cmake/glmConfig.cmake.in 1970-01-01 01:00:00.000000000 +0100 ++++ glmn/cmake/glmConfig.cmake.in 2019-09-23 00:12:14.566373412 +0200 +@@ -0,0 +1,9 @@ ++set(GLM_VERSION "@GLM_VERSION@") ++ ++@PACKAGE_INIT@ ++ ++set_and_check(GLM_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") ++ ++if (NOT CMAKE_VERSION VERSION_LESS "3.0") ++ include("${CMAKE_CURRENT_LIST_DIR}/glmTargets.cmake") ++endif() +diff -Naur glm/cmake/glm.pc.in glmn/cmake/glm.pc.in +--- glm/cmake/glm.pc.in 1970-01-01 01:00:00.000000000 +0100 ++++ glmn/cmake/glm.pc.in 2019-09-23 00:11:59.695710511 +0200 +@@ -0,0 +1,7 @@ ++prefix=@CMAKE_INSTALL_PREFIX@ ++includedir=${prefix}/include ++ ++Name: GLM ++Description: OpenGL Mathematics ++Version: @GLM_VERSION@ ++Cflags: -I${includedir} +diff -Naur glm/cmake/GNUInstallDirs.cmake glmn/cmake/GNUInstallDirs.cmake +--- glm/cmake/GNUInstallDirs.cmake 1970-01-01 01:00:00.000000000 +0100 ++++ glmn/cmake/GNUInstallDirs.cmake 2019-09-23 00:11:47.363819337 +0200 +@@ -0,0 +1,188 @@ ++# - Define GNU standard installation directories ++# Provides install directory variables as defined for GNU software: ++# http://www.gnu.org/prep/standards/html_node/Directory-Variables.html ++# Inclusion of this module defines the following variables: ++# CMAKE_INSTALL_ - destination for files of a given type ++# CMAKE_INSTALL_FULL_ - corresponding absolute path ++# where is one of: ++# BINDIR - user executables (bin) ++# SBINDIR - system admin executables (sbin) ++# LIBEXECDIR - program executables (libexec) ++# SYSCONFDIR - read-only single-machine data (etc) ++# SHAREDSTATEDIR - modifiable architecture-independent data (com) ++# LOCALSTATEDIR - modifiable single-machine data (var) ++# LIBDIR - object code libraries (lib or lib64 or lib/ on Debian) ++# INCLUDEDIR - C header files (include) ++# OLDINCLUDEDIR - C header files for non-gcc (/usr/include) ++# DATAROOTDIR - read-only architecture-independent data root (share) ++# DATADIR - read-only architecture-independent data (DATAROOTDIR) ++# INFODIR - info documentation (DATAROOTDIR/info) ++# LOCALEDIR - locale-dependent data (DATAROOTDIR/locale) ++# MANDIR - man documentation (DATAROOTDIR/man) ++# DOCDIR - documentation root (DATAROOTDIR/doc/PROJECT_NAME) ++# Each CMAKE_INSTALL_ value may be passed to the DESTINATION options of ++# install() commands for the corresponding file type. If the includer does ++# not define a value the above-shown default will be used and the value will ++# appear in the cache for editing by the user. ++# Each CMAKE_INSTALL_FULL_ value contains an absolute path constructed ++# from the corresponding destination by prepending (if necessary) the value ++# of CMAKE_INSTALL_PREFIX. ++ ++#============================================================================= ++# Copyright 2011 Nikita Krupen'ko ++# Copyright 2011 Kitware, Inc. ++# ++# Distributed under the OSI-approved BSD License (the "License"); ++# see accompanying file Copyright.txt for details. ++# ++# This software is distributed WITHOUT ANY WARRANTY; without even the ++# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++# See the License for more information. ++#============================================================================= ++# (To distribute this file outside of CMake, substitute the full ++# License text for the above reference.) ++ ++# Installation directories ++# ++if(NOT DEFINED CMAKE_INSTALL_BINDIR) ++ set(CMAKE_INSTALL_BINDIR "bin" CACHE PATH "user executables (bin)") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_SBINDIR) ++ set(CMAKE_INSTALL_SBINDIR "sbin" CACHE PATH "system admin executables (sbin)") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_LIBEXECDIR) ++ set(CMAKE_INSTALL_LIBEXECDIR "libexec" CACHE PATH "program executables (libexec)") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR) ++ set(CMAKE_INSTALL_SYSCONFDIR "etc" CACHE PATH "read-only single-machine data (etc)") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_SHAREDSTATEDIR) ++ set(CMAKE_INSTALL_SHAREDSTATEDIR "com" CACHE PATH "modifiable architecture-independent data (com)") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_LOCALSTATEDIR) ++ set(CMAKE_INSTALL_LOCALSTATEDIR "var" CACHE PATH "modifiable single-machine data (var)") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_LIBDIR) ++ set(_LIBDIR_DEFAULT "lib") ++ # Override this default 'lib' with 'lib64' iff: ++ # - we are on Linux system but NOT cross-compiling ++ # - we are NOT on debian ++ # - we are on a 64 bits system ++ # reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf ++ # For Debian with multiarch, use 'lib/${CMAKE_LIBRARY_ARCHITECTURE}' if ++ # CMAKE_LIBRARY_ARCHITECTURE is set (which contains e.g. "i386-linux-gnu" ++ # See http://wiki.debian.org/Multiarch ++ if((CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "GNU") ++ AND NOT CMAKE_CROSSCOMPILING) ++ if (EXISTS "/etc/debian_version") # is this a debian system ? ++ if(CMAKE_LIBRARY_ARCHITECTURE) ++ set(_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}") ++ endif() ++ else() # not debian, rely on CMAKE_SIZEOF_VOID_P: ++ if(NOT DEFINED CMAKE_SIZEOF_VOID_P) ++ message(AUTHOR_WARNING ++ "Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. " ++ "Please enable at least one language before including GNUInstallDirs.") ++ else() ++ if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") ++ set(_LIBDIR_DEFAULT "lib64") ++ endif() ++ endif() ++ endif() ++ endif() ++ set(CMAKE_INSTALL_LIBDIR "${_LIBDIR_DEFAULT}" CACHE PATH "object code libraries (${_LIBDIR_DEFAULT})") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR) ++ set(CMAKE_INSTALL_INCLUDEDIR "include" CACHE PATH "C header files (include)") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_OLDINCLUDEDIR) ++ set(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include" CACHE PATH "C header files for non-gcc (/usr/include)") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_DATAROOTDIR) ++ set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE PATH "read-only architecture-independent data root (share)") ++endif() ++ ++#----------------------------------------------------------------------------- ++# Values whose defaults are relative to DATAROOTDIR. Store empty values in ++# the cache and store the defaults in local variables if the cache values are ++# not set explicitly. This auto-updates the defaults as DATAROOTDIR changes. ++ ++if(NOT CMAKE_INSTALL_DATADIR) ++ set(CMAKE_INSTALL_DATADIR "" CACHE PATH "read-only architecture-independent data (DATAROOTDIR)") ++ set(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATAROOTDIR}") ++endif() ++ ++if(NOT CMAKE_INSTALL_INFODIR) ++ set(CMAKE_INSTALL_INFODIR "" CACHE PATH "info documentation (DATAROOTDIR/info)") ++ set(CMAKE_INSTALL_INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info") ++endif() ++ ++if(NOT CMAKE_INSTALL_LOCALEDIR) ++ set(CMAKE_INSTALL_LOCALEDIR "" CACHE PATH "locale-dependent data (DATAROOTDIR/locale)") ++ set(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale") ++endif() ++ ++if(NOT CMAKE_INSTALL_MANDIR) ++ set(CMAKE_INSTALL_MANDIR "" CACHE PATH "man documentation (DATAROOTDIR/man)") ++ set(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man") ++endif() ++ ++if(NOT CMAKE_INSTALL_DOCDIR) ++ set(CMAKE_INSTALL_DOCDIR "" CACHE PATH "documentation root (DATAROOTDIR/doc/PROJECT_NAME)") ++ set(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}") ++endif() ++ ++#----------------------------------------------------------------------------- ++ ++mark_as_advanced( ++ CMAKE_INSTALL_BINDIR ++ CMAKE_INSTALL_SBINDIR ++ CMAKE_INSTALL_LIBEXECDIR ++ CMAKE_INSTALL_SYSCONFDIR ++ CMAKE_INSTALL_SHAREDSTATEDIR ++ CMAKE_INSTALL_LOCALSTATEDIR ++ CMAKE_INSTALL_LIBDIR ++ CMAKE_INSTALL_INCLUDEDIR ++ CMAKE_INSTALL_OLDINCLUDEDIR ++ CMAKE_INSTALL_DATAROOTDIR ++ CMAKE_INSTALL_DATADIR ++ CMAKE_INSTALL_INFODIR ++ CMAKE_INSTALL_LOCALEDIR ++ CMAKE_INSTALL_MANDIR ++ CMAKE_INSTALL_DOCDIR ++ ) ++ ++# Result directories ++# ++foreach(dir ++ BINDIR ++ SBINDIR ++ LIBEXECDIR ++ SYSCONFDIR ++ SHAREDSTATEDIR ++ LOCALSTATEDIR ++ LIBDIR ++ INCLUDEDIR ++ OLDINCLUDEDIR ++ DATAROOTDIR ++ DATADIR ++ INFODIR ++ LOCALEDIR ++ MANDIR ++ DOCDIR ++ ) ++ if(NOT IS_ABSOLUTE ${CMAKE_INSTALL_${dir}}) ++ set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}") ++ else() ++ set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_${dir}}") ++ endif() ++endforeach() +diff -Naur glm/CMakeLists.txt glmn/CMakeLists.txt +--- glm/CMakeLists.txt 2019-09-07 14:10:16.000000000 +0200 ++++ glmn/CMakeLists.txt 2019-09-23 00:10:29.559815104 +0200 +@@ -4,6 +4,11 @@ + set(GLM_VERSION "0.9.9") + project(glm VERSION ${GLM_VERSION} LANGUAGES CXX) + ++list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") ++ ++include(GNUInstallDirs) ++include(CMakePackageConfigHelpers) ++ + enable_testing() + + option(GLM_QUIET "No CMake Message" OFF) +@@ -237,3 +242,62 @@ + add_subdirectory(glm) + add_subdirectory(test) + ++set(GLM_INSTALL_CONFIGDIR "${CMAKE_INSTALL_LIBDIR}/cmake/glm") ++install(DIRECTORY glm DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) ++ ++ ++# CMake automatically adds an architecture compatibility check to make sure ++# 32 and 64 bit code is not accidentally mixed. For a header-only library this ++# is not required. The check can be disabled by temporarily unsetting ++# CMAKE_SIZEOF_VOID_P. In CMake 3.14 and later this can be achieved more cleanly ++# with write_basic_package_version_file(ARCH_INDEPENDENT). ++# TODO: Use this once a newer CMake can be required. ++set(GLM_SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P}) ++unset(CMAKE_SIZEOF_VOID_P) ++write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/glmConfigVersion.cmake" VERSION ${GLM_VERSION} COMPATIBILITY AnyNewerVersion) ++set(CMAKE_SIZEOF_VOID_P ${GLM_SIZEOF_VOID_P}) ++ ++# build tree package config ++configure_file(cmake/glmBuildConfig.cmake.in glmConfig.cmake @ONLY) ++ ++# install tree package config ++configure_package_config_file( ++ cmake/glmConfig.cmake.in ++ ${GLM_INSTALL_CONFIGDIR}/glmConfig.cmake ++ INSTALL_DESTINATION ${GLM_INSTALL_CONFIGDIR} ++ PATH_VARS CMAKE_INSTALL_INCLUDEDIR ++ NO_CHECK_REQUIRED_COMPONENTS_MACRO) ++ ++install(FILES ++ "${CMAKE_CURRENT_BINARY_DIR}/${GLM_INSTALL_CONFIGDIR}/glmConfig.cmake" ++ "${CMAKE_CURRENT_BINARY_DIR}/glmConfigVersion.cmake" ++ DESTINATION ${GLM_INSTALL_CONFIGDIR}) ++ ++add_library(glm INTERFACE) ++target_include_directories(glm INTERFACE ++ $ ++ $) ++install(TARGETS glm EXPORT glmTargets) ++ ++export(EXPORT glmTargets FILE "${CMAKE_CURRENT_BINARY_DIR}/glmTargets.cmake") ++ ++install(EXPORT glmTargets FILE glmTargets.cmake DESTINATION ${GLM_INSTALL_CONFIGDIR}) ++ ++# build pkg-config file ++configure_file("./cmake/glm.pc.in" "glm.pc" @ONLY) ++ ++# install pkg-config file ++install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glm.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") ++ ++export(PACKAGE glm) ++ ++if(NOT TARGET uninstall) ++ configure_file( ++ ${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in ++ ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake ++ IMMEDIATE @ONLY) ++ ++ add_custom_target(uninstall ++ COMMAND ${CMAKE_COMMAND} -P ++ ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) ++endif() +diff -Naur glm/cmake_uninstall.cmake.in glmn/cmake_uninstall.cmake.in +--- glm/cmake_uninstall.cmake.in 1970-01-01 01:00:00.000000000 +0100 ++++ glmn/cmake_uninstall.cmake.in 2019-09-23 00:12:22.495660449 +0200 +@@ -0,0 +1,26 @@ ++if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") ++ message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") ++endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") ++ ++if (NOT DEFINED CMAKE_INSTALL_PREFIX) ++ set (CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@") ++endif () ++ message(${CMAKE_INSTALL_PREFIX}) ++ ++file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) ++string(REGEX REPLACE "\n" ";" files "${files}") ++foreach(file ${files}) ++ message(STATUS "Uninstalling $ENV{DESTDIR}${file}") ++ if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") ++ exec_program( ++ "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" ++ OUTPUT_VARIABLE rm_out ++ RETURN_VALUE rm_retval ++ ) ++ if(NOT "${rm_retval}" STREQUAL 0) ++ message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") ++ endif(NOT "${rm_retval}" STREQUAL 0) ++ else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") ++ message(STATUS "File $ENV{DESTDIR}${file} does not exist.") ++ endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") ++endforeach(file) From 5192e465ddac7ee712dd7999aa05ad97fac18530 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 23 Sep 2019 23:24:59 +0200 Subject: [PATCH 002/133] gnu: xterm: Update to 349. * gnu/packages/xorg.scm (xterm): Update to 349. --- gnu/packages/xorg.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 352a28a8b1..e5ff271ae9 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -5788,7 +5788,7 @@ to answer a question. Xmessage can also exit after a specified time.") (define-public xterm (package (name "xterm") - (version "335") + (version "349") (source (origin (method url-fetch) (uri (list @@ -5798,7 +5798,7 @@ to answer a question. Xmessage can also exit after a specified time.") name "-" version ".tgz"))) (sha256 (base32 - "15nbgys4s2idhx6jzzc24g9bb1s6yps5fyg2bafvs0gkkcm1ggz0")))) + "0ps7b2b2kbrkv5q49cmb8c51z0w21jmm7hwciw30m6jgfb9s79ir")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--enable-wide-chars" "--enable-load-vt-fonts" From 757f01fa4dfdbdcd551fa8cc0dc501d7424e8930 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 23 Sep 2019 23:25:04 +0200 Subject: [PATCH 003/133] gnu: xterm: Don't use NAME in source URI. * gnu/packages/xorg.scm (xterm)[source]: Hard-code NAME. --- gnu/packages/xorg.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index e5ff271ae9..48c1e3cebe 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -5793,9 +5793,9 @@ to answer a question. Xmessage can also exit after a specified time.") (method url-fetch) (uri (list (string-append "http://invisible-mirror.net/archives/xterm/" - name "-" version ".tgz") + "xterm-" version ".tgz") (string-append "ftp://ftp.invisible-island.net/xterm/" - name "-" version ".tgz"))) + "xterm-" version ".tgz"))) (sha256 (base32 "0ps7b2b2kbrkv5q49cmb8c51z0w21jmm7hwciw30m6jgfb9s79ir")))) From 1e1efbcc64e93b6f6188ecf7abce990a939f8015 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 23 Sep 2019 23:59:42 +0200 Subject: [PATCH 004/133] =?UTF-8?q?doc:=20Remove=20more=20=E2=80=98guixsd?= =?UTF-8?q?=E2=80=99=20remnants.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * doc/guix.texi (Installing Guix in a VM): Use ‘guix-system.img’ as image file name. --- doc/guix.texi | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 093199c63b..9fcce27597 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 @@ -2444,7 +2444,7 @@ Boot the USB installation image in an VM: 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 + -drive file=guix-system.img @end example The ordering of the drives matters. @code{-enable-kvm} is optional, but @@ -2460,7 +2460,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 From 5d992ed12248e94d6a470146cf60ef577254bed6 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 24 Sep 2019 02:14:57 +0200 Subject: [PATCH 005/133] gnu: linux-libre: Update deblobbing scripts. * gnu/packages/linux.scm (deblob-scripts-4.4): Update to version 4.4.194 and update the 'deblob-check' hash. (deblob-scripts-5.2, deblob-scripts-4.19) (deblob-scripts-4.14, deblob-scripts-4.9): Update to versions 5.2.17, 4.19.75, 4.14.146, and 4.9.194 respectively, although the scripts themselves are unchanged. --- gnu/packages/linux.scm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 95f7d56e41..e8d15822c7 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -182,33 +182,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") From 9fa18e5dee6e00305c2844ce859d385f381d82dd Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 24 Sep 2019 02:17:59 +0200 Subject: [PATCH 006/133] gnu: linux-libre: Update to 5.2.17. * gnu/packages/linux.scm (linux-libre): Update to 5.2.17. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index e8d15822c7..42dff400d2 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -350,10 +350,10 @@ 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))) From fa470524a43287b1498c4b2a9bc0dc6dd14a8773 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 24 Sep 2019 02:18:11 +0200 Subject: [PATCH 007/133] gnu: linux-libre: Update to 4.19.75. * gnu/packages/linux.scm (linux-libre): Update to 4.19.75. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 42dff400d2..f873da5b96 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -358,10 +358,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (%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))) From cce20ea6a03386e74b4c6eed887f6fb2f8d54280 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 24 Sep 2019 02:18:20 +0200 Subject: [PATCH 008/133] gnu: linux-libre: Update to 4.14.146. * gnu/packages/linux.scm (linux-libre): Update to 4.14.146. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index f873da5b96..f03ae5ea72 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -366,10 +366,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (%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))) From 21d9c5774561be5680acf67e574b7b7ac9093a28 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 24 Sep 2019 02:18:31 +0200 Subject: [PATCH 009/133] gnu: linux-libre: Update to 4.9.194. * gnu/packages/linux.scm (linux-libre): Update to 4.9.194. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index f03ae5ea72..072c51e755 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -374,10 +374,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (%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))) From 0b3daeb05e1b1aa3a58eba22df7336e4b8f3f79a Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 24 Sep 2019 02:18:43 +0200 Subject: [PATCH 010/133] gnu: linux-libre: Update to 4.4.194. * gnu/packages/linux.scm (linux-libre): Update to 4.4.194. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 072c51e755..f8ad96e89d 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -382,10 +382,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (%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))) From 525961cd438c7ed2d763c91c16dfd06a4fc10628 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 24 Sep 2019 02:35:43 +0200 Subject: [PATCH 011/133] gnu: ethtool: Update to 5.3. * gnu/packages/networking.scm (ethtool): Update to 5.3. --- gnu/packages/networking.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 6bdf7f9e2f..c37d07ea41 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -420,14 +420,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") From 88808152d993ea170126ec41905a889227905873 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 24 Sep 2019 02:37:35 +0200 Subject: [PATCH 012/133] gnu: qpdf: Update to 9.0.1. * gnu/packages/pdf.scm (qpdf): Update to 9.0.1. --- gnu/packages/pdf.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index d45a78222c..7cc6b4e77f 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -668,14 +668,14 @@ line tools for batch rendering @command{pdfdraw}, rewriting files (define-public qpdf (package (name "qpdf") - (version "8.4.0") + (version "9.0.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/qpdf/qpdf/" version "/qpdf-" version ".tar.gz")) (sha256 (base32 - "1864p952m8vzxk6v500a42psbqj2g2gyli3d3zj6h33hzwxqy09r")) + "0lhgb82s2402ad2yiswkj227vjlw9zypphdfdivfkbril7dg6495")) (modules '((guix build utils))) (snippet ;; Replace shebang with the bi-lingual shell/Perl trick to remove From e2d69addf6f703f0b04d76988edcd6d5a84cb37b Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 24 Sep 2019 03:13:38 +0200 Subject: [PATCH 013/133] Revert "gnu: qpdf: Update to 9.0.1." This reverts commit 88808152d993ea170126ec41905a889227905873. It was intended for staging. --- gnu/packages/pdf.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index 7cc6b4e77f..d45a78222c 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -668,14 +668,14 @@ line tools for batch rendering @command{pdfdraw}, rewriting files (define-public qpdf (package (name "qpdf") - (version "9.0.1") + (version "8.4.0") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/qpdf/qpdf/" version "/qpdf-" version ".tar.gz")) (sha256 (base32 - "0lhgb82s2402ad2yiswkj227vjlw9zypphdfdivfkbril7dg6495")) + "1864p952m8vzxk6v500a42psbqj2g2gyli3d3zj6h33hzwxqy09r")) (modules '((guix build utils))) (snippet ;; Replace shebang with the bi-lingual shell/Perl trick to remove From f1afdaf4766fb18911efddb778308b6a306e73d1 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 24 Sep 2019 06:55:46 +0200 Subject: [PATCH 014/133] gnu: java-dom4j: Update to 2.1.1. * gnu/packages/xml.scm (java-dom4j): Update to 2.1.1. --- gnu/packages/xml.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index c2faa4cbc0..3603bee4b7 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -1754,7 +1754,7 @@ package is in maintenance mode.") (define-public java-dom4j (package (name "java-dom4j") - (version "2.1.0") + (version "2.1.1") (source (origin (method git-fetch) (uri (git-reference @@ -1763,7 +1763,7 @@ package is in maintenance mode.") (file-name (git-file-name name version)) (sha256 (base32 - "1827jljs8mps489fm7xw63cakdqwc5grilrr5n9spr2rlk76jpx3")) + "0q907srj9v4hwicpcrn4slyld5npf2jv7hzchsgrg29q2xmbwkdl")) (modules '((guix build utils))) (snippet '(begin ;; Delete bundled jar archives. From 1c6884eeb3dbc20cc61e3e5d55acd0b66f9af374 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 24 Sep 2019 07:06:19 +0200 Subject: [PATCH 015/133] gnu: sxhkd: Update to 0.6.1. * gnu/packages/xdisorg.scm (sxhkd): Update to 0.6.1. --- gnu/packages/xdisorg.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index 7026c7eb03..690a82ee90 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -810,7 +810,7 @@ Guile will work for XBindKeys.") (define-public sxhkd (package (name "sxhkd") - (version "0.6.0") + (version "0.6.1") (source (origin (method git-fetch) @@ -818,7 +818,7 @@ Guile will work for XBindKeys.") (url "https://github.com/baskerville/sxhkd") (commit version))) (sha256 - (base32 "1cz4vkm7fqd51ly9qjkf5q76kdqdzfhaajgvrs4anz5dyzrdpw68")))) + (base32 "0j7bl2l06r0arrjzpz7al9j6cwzc730knbsijp7ixzz96pq7xa2h")))) (build-system gnu-build-system) (inputs `(("asciidoc" ,asciidoc) From b60ffcee067334b816dc7e83ff9e01f8ec2a368a Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 24 Sep 2019 07:17:32 +0200 Subject: [PATCH 016/133] gnu: mako: Update to 1.4. * gnu/packages/wm.scm (mako): Update to 1.4. --- gnu/packages/wm.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index e19c6c1438..72be0bdbe1 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -1436,7 +1436,7 @@ Wlroots based compositors.") (define-public mako (package (name "mako") - (version "1.3") + (version "1.4") (source (origin (method git-fetch) @@ -1445,7 +1445,7 @@ Wlroots based compositors.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "17azdc37xsbmx13fkfp23vg9lznrv9fh6nhagn64wdq3nhsxm3b6")))) + (base32 "11ymiq6cr2ma0iva1mqybn3j6k73bsc6lv6pcbdq7hkhd4f9b7j9")))) (build-system meson-build-system) (inputs `(("cairo" ,cairo) ("elogind" ,elogind) From f9447dedc50489f36022c60763868edbd0aa570e Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 24 Sep 2019 07:09:14 +0200 Subject: [PATCH 017/133] gnu: sxhkd: Sensibly name source checkout. * gnu/packages/xdisorg.scm (sxhkd)[source]: Use GIT-FILE-NAME. --- gnu/packages/xdisorg.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index 690a82ee90..066804ed9e 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -817,6 +817,7 @@ Guile will work for XBindKeys.") (uri (git-reference (url "https://github.com/baskerville/sxhkd") (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 "0j7bl2l06r0arrjzpz7al9j6cwzc730knbsijp7ixzz96pq7xa2h")))) (build-system gnu-build-system) From 2d25b0c8bad3f0b9c5ccb91f5c4430d8245f4061 Mon Sep 17 00:00:00 2001 From: Brant Gardner Date: Tue, 2 Apr 2019 11:09:45 -0500 Subject: [PATCH 018/133] gnu: Add boinc-client and boinc-server. * gnu/packages/distributed.scm (boinc-client, boinc-server): New variable. Signed-off-by: Brian Leung --- gnu/packages/distributed.scm | 95 ++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 gnu/packages/distributed.scm diff --git a/gnu/packages/distributed.scm b/gnu/packages/distributed.scm new file mode 100644 index 0000000000..0eaa1d8b83 --- /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))))) From 3b98e71a4b8bd549736d8c30f7ddf10928217af3 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 24 Sep 2019 10:07:43 +0300 Subject: [PATCH 019/133] gnu: Register (gnu packages distributed). This is a follow-up to 2d25b0c8bad3f0b9c5ccb91f5c4430d8245f4061. * gnu/local.mk (GNU_SYSTEM_MODULES): Add (gnu packages distributed). --- gnu/local.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/local.mk b/gnu/local.mk index 043469b716..0e279d8303 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 \ From 2395d863de36937016d29a008d18f65e32a9594e Mon Sep 17 00:00:00 2001 From: Brett Gilio Date: Wed, 20 Mar 2019 17:02:04 -0500 Subject: [PATCH 020/133] gnu: emacs-rust-mode: Update to 0.4.0. * gnu/packages/emacs-xyz.scm (emacs-rust-mode): Update to 0.4.0. Signed-off-by: Brian Leung --- gnu/packages/emacs-xyz.scm | 54 +++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 667a7f5d3c..15fef73d3d 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -15066,37 +15066,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")) From 5c1547383f1d8fca1e46a1a3a17e90b61ece915c Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Tue, 24 Sep 2019 09:44:49 +0200 Subject: [PATCH 021/133] gnu: Add mojoshader. * gnu/packages/gl.scm (mojoshader): New variable. --- gnu/packages/gl.scm | 55 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index a2658a6789..c05ce4e06a 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) @@ -801,3 +803,56 @@ 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 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") + #: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)))) From 61522fd967c6d7cc9ecbc916db538b887e78dd72 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 24 Sep 2019 09:59:00 +0200 Subject: [PATCH 022/133] gnu: emacs-rainbow-delimiters: Enable tests. * gnu/packages/emacs-xyz.scm (emacs-rainbow-delimiters): Enable tests. [source] Use GIT-FETCH and GIT-FILE-NAME. --- gnu/packages/emacs-xyz.scm | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 15fef73d3d..1a639491ef 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -6184,16 +6184,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 From d9de8fbbab2143e6d576ed379e0b35c6d1955714 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Tue, 24 Sep 2019 10:23:52 +0200 Subject: [PATCH 023/133] gnu: asymptote: Update to 2.53. * gnu/packages/plotutils.scm (asymptote): Update to 2.53. --- gnu/packages/plotutils.scm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm index 88bc6b3dc6..43bed8c315 100644 --- a/gnu/packages/plotutils.scm +++ b/gnu/packages/plotutils.scm @@ -180,14 +180,14 @@ colors, styles, options and details.") (define-public asymptote (package (name "asymptote") - (version "2.49") + (version "2.53") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/asymptote/" version "/asymptote-" version ".src.tgz")) (sha256 (base32 - "1vljhq68gyc2503l9fj76rk1q4a4db9a1sp3fdfagqqmirnmybp5")))) + "0ysj6b3ffifbraflkixh19hmdh3qjij26wyj4z66085qw17v7qkw")))) (build-system gnu-build-system) ;; Note: The 'asy' binary retains a reference to docdir for use with its ;; "help" command in interactive mode, so adding a "doc" output is not @@ -199,6 +199,8 @@ colors, styles, options and details.") ("texinfo" ,texinfo) ;For generating documentation ;; For the manual and the tests. ("texlive" ,(texlive-union (list texlive-amsfonts + texlive-epsf + texlive-latex-base texlive-latex-geometry texlive-latex-graphics texlive-latex-oberdiek ; for ifluatex From 09b2ae95c800b8da1ecc9e12f79421302a1bde33 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 24 Sep 2019 11:02:36 +0200 Subject: [PATCH 024/133] gnu: emacs-evil-surround: Enable tests. * gnu/packages/emacs-xyz.scm (emacs-evil-surround): Enable tests. --- gnu/packages/emacs-xyz.scm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 1a639491ef..ce5ae1ca5a 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -8931,6 +8931,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 From 85dfecbedc55a450b12a17d98a0fe70e0c193790 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 24 Sep 2019 11:16:42 +0200 Subject: [PATCH 025/133] gnu: emacs-stream: Enable tests. * gnu/packages/emacs-xyz.scm (emacs-stream): Enable tests. --- gnu/packages/emacs-xyz.scm | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index ce5ae1ca5a..92c91a0537 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -7457,15 +7457,22 @@ editing nginx config files.") (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")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/NicolasPetton/stream.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 "03ql4nqfz5pn55mjly6clhvc3g7x2d28kj7mrlqmigvjbql39xxc")))) + (base32 "10x481lmkcmjrmdnlbqvys2b3525npn4a84j6g404pv4sfwlj6ab")))) (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("emacs" "--batch" + "-l" "test/stream-tests.el" + "-f" "ert-run-tests-batch-and-exit"))) + (home-page "https://github.com/NicolasPetton/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.") From 3429f5d923300675a8ffa28b2d4cb1bd66ae452e Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Tue, 24 Sep 2019 11:27:31 +0200 Subject: [PATCH 026/133] gnu: mojoshader: Broaden feature support (viewport flipping and depth clipping). * gnu/packages/gl.scm (mojoshader)[arguments]: Build with FLIP_VIEWPORT and DEPTH_CLIPPING. --- gnu/packages/gl.scm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index c05ce4e06a..c02d88694c 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -808,7 +808,7 @@ network.") (let ((changeset "5887634ea695")) (package (name "mojoshader") - (version changeset) + (version (string-append "20190825" "-" changeset)) (source (origin (method hg-fetch) @@ -821,7 +821,9 @@ network.") (arguments ;; Tests only for COMPILER_SUPPORT=ON. `(#:tests? #f - #:configure-flags '("-DBUILD_SHARED=ON") + #:configure-flags '("-DBUILD_SHARED=ON" + "-DFLIP_VIEWPORT=ON" + "-DDEPTH_CLIPPING=ON") #:phases (modify-phases %standard-phases (replace 'install From b150e83bef766ca67a3931afce36b6cb6c7f8c10 Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Tue, 24 Sep 2019 11:32:45 +0200 Subject: [PATCH 027/133] gnu: Add mojoshader-with-viewport-flip. * gnu/packages/gl.scm (mojoshader-with-viewport-flip): New variable. --- gnu/packages/gl.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index c02d88694c..bfa80b1e13 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -858,3 +858,26 @@ 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)))) From 24f7bac02a70257a7cd1bb2e1ec35d7cc753057e Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Tue, 24 Sep 2019 19:18:58 +0200 Subject: [PATCH 028/133] gnu: openscenegraph: Update to 3.6.4 and build JPEG plugin. * gnu/packages/graphics.scm (openscenegraph): Update to 3.6.4. [inputs]: Add libjpeg. --- gnu/packages/graphics.scm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index cd33ea2800..d4e9adb84a 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -15,6 +15,7 @@ ;;; Copyright © 2019 Carlo Zancanaro ;;; Copyright © 2019 Steve Sprang ;;; Copyright © 2019 John Soo +;;; Copyright © 2019 Pierre Neidhardt ;;; ;;; This file is part of GNU Guix. ;;; @@ -510,7 +511,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) @@ -519,7 +520,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"))) @@ -538,6 +539,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) From f95ec65be394538c9ec848e502a37f1c3ec21157 Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Tue, 24 Sep 2019 19:21:59 +0200 Subject: [PATCH 029/133] gnu: openmw: Use OpenMW's fork of openscenegraph. * gnu/packages/game-development.scm (openmw)[inputs]: Replace openscenegraph with openmw-openscenegraph. --- gnu/packages/game-development.scm | 36 ++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index bb4c1d26bb..ee9e63ea29 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -1109,6 +1109,40 @@ of use.") '("ogre")))) (synopsis "Fast, flexible and simple GUI (OpenGL backend)"))) +(define openmw-openscenegraph + ;; OpenMW prefers its own fork of openscenegraph: + ;; https://wiki.openmw.org/index.php?title=Development_Environment_Setup#OpenSceneGraph. + (let ((commit "36a962845a2c87a6671fd822157e0729d164e940")) + (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 openmw (package (name "openmw") @@ -1137,7 +1171,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))) From 987d7b1c67c7fa38582802c5b0bbc1eda83df838 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 24 Sep 2019 18:49:18 +0200 Subject: [PATCH 030/133] gnu: emacs-markdown-mode: Don't use unstable tarball. * gnu/packages/emacs-xyz.scm (emacs-markdown-mode)[source]: Use GIT-FETCH and GIT-FILE-NAME. --- gnu/packages/emacs-xyz.scm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 92c91a0537..54cdbc084f 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -5822,14 +5822,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") From 3e7518b35c86875348cc72c154558a0bda302cb0 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 24 Sep 2019 19:52:55 +0200 Subject: [PATCH 031/133] gnu: emacs-flycheck: Update to 31-1.0006a59. * gnu/packages/emacs-xyz.scm (emacs-flycheck): Update to 31-1.0006a59. --- gnu/packages/emacs-xyz.scm | 67 +++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 27 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 54cdbc084f..58e7f181d5 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -771,32 +771,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 +817,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 From 2ac02060609cde61f44d0ad1bebdec9859c5df70 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Thu, 5 Sep 2019 13:48:58 +0200 Subject: [PATCH 032/133] gnu: keepalived: Fix documentation generation. * gnu/packages/cluster.scm (keepalived)[arguments]: Copy software_design.png from the correct place. --- gnu/packages/cluster.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/cluster.scm b/gnu/packages/cluster.scm index 8b99a21356..c4a26e9faa 100644 --- a/gnu/packages/cluster.scm +++ b/gnu/packages/cluster.scm @@ -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 From ce6db0fa7ce76cc05480ede1cc3789c55848efbd Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Thu, 5 Sep 2019 13:50:04 +0200 Subject: [PATCH 033/133] gnu: keepalived: Update to 2.0.18. * gnu/packages/cluster.scm (keepalived): Update to 2.0.18. --- gnu/packages/cluster.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/cluster.scm b/gnu/packages/cluster.scm index c4a26e9faa..177017c260 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 From d1bfad2f0d4306abc02f2bf713a9cc3d2d96d5d6 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Thu, 5 Sep 2019 17:39:35 +0200 Subject: [PATCH 034/133] gnu: keepalived: Update home page. * gnu/packages/cluster.scm (keepalived)[home-page]: Use HTTPS. --- gnu/packages/cluster.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/cluster.scm b/gnu/packages/cluster.scm index 177017c260..9548352d12 100644 --- a/gnu/packages/cluster.scm +++ b/gnu/packages/cluster.scm @@ -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 From 864b7f0bc18b925d1b54c0a673e2ff5401092ada Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Thu, 12 Sep 2019 16:56:25 +0200 Subject: [PATCH 035/133] gnu: fmt: Update to 6.0.0. * gnu/packages/pretty-print.scm (fmt): Update to 6.0.0. --- gnu/packages/pretty-print.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm index 7a5b98c698..fe69af84c4 100644 --- a/gnu/packages/pretty-print.scm +++ b/gnu/packages/pretty-print.scm @@ -164,7 +164,7 @@ different programming languages.") (define-public fmt (package (name "fmt") - (version "5.3.0") + (version "6.0.0") (source (origin (method url-fetch) (uri (string-append @@ -172,7 +172,7 @@ different programming languages.") version "/fmt-" version ".zip")) (sha256 (base32 - "0p51nhmvjniqlffmmb9djhprnclvm448f2vkdxymvxw307hl21sc")))) + "0h148anbaqgch6n69pxsvs1c9wmykgd052wmzgdia7qpz8w6p8dl")))) (build-system cmake-build-system) (native-inputs `(("unzip" ,unzip))) From b174cc4be3d6d5c30a17c93b3f41a18dd14924aa Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Mon, 23 Sep 2019 16:45:19 +0200 Subject: [PATCH 036/133] gnu: openvswitch: Update to 2.12.0. * gnu/packages/networking.scm (openvswitch): Update to 2.12.0. --- gnu/packages/networking.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index c37d07ea41..11c9c6a37f 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -1586,7 +1586,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 @@ -1594,7 +1594,7 @@ procedure calls (RPCs).") version ".tar.gz")) (sha256 (base32 - "1p5mv44jaslvrr1ym15smqna19y0gi4vqcsyj58625vv9bj6laf1")))) + "1y78ix5inhhcvicbvyy2ij38am1215nr55vydhab3d4065q45z8k")))) (build-system gnu-build-system) (arguments '(;; FIXME: many tests fail with: From 3e41d7070df80edd3fd9fc66f9a4ff5cb646cbc3 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Mon, 23 Sep 2019 16:45:58 +0200 Subject: [PATCH 037/133] gnu: re2: Update to 2019-09-01. * gnu/packages/regex.scm (re2): Update to 2019-09-01. --- gnu/packages/regex.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/regex.scm b/gnu/packages/regex.scm index ad01814318..7582502069 100644 --- a/gnu/packages/regex.scm +++ b/gnu/packages/regex.scm @@ -30,7 +30,7 @@ (define-public re2 (package (name "re2") - (version "2019-08-01") + (version "2019-09-01") (home-page "https://github.com/google/re2") (source (origin (method git-fetch) @@ -38,7 +38,7 @@ (file-name (git-file-name name version)) (sha256 (base32 - "11w9x16y26nfgliis28ivrh9b1x6pxawdwxfwxfjh34h57c0dkzg")))) + "1a0m3p0nx7vz2sgryrsjnbiwkjpj98swjb29r0w5lsv3f92dqyn4")))) (build-system gnu-build-system) (arguments `(#:modules ((guix build gnu-build-system) From 6bdf8af5e680c719304c2f1c1a4948099b446906 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Mon, 23 Sep 2019 16:46:26 +0200 Subject: [PATCH 038/133] gnu: ffmpeg: Update to 4.2.1. * gnu/packages/video.scm (ffmpeg): Update to 4.2.1. --- gnu/packages/video.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index aaba2fb3f7..d5a51a00b0 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -799,14 +799,14 @@ operate properly.") (define-public ffmpeg (package (name "ffmpeg") - (version "4.2") + (version "4.2.1") (source (origin (method url-fetch) (uri (string-append "https://ffmpeg.org/releases/ffmpeg-" version ".tar.xz")) (sha256 (base32 - "1mgcxm7sqkajx35px05szsmn9mawwm03cfpmk3br7bcp3a1i0gq2")))) + "1m5nkc61ihgcf0b2wabm0zyqa8sj3c0w8fi6kr879lb0kdzciiyf")))) (build-system gnu-build-system) (inputs `(("dav1d" ,dav1d) From d8fbfbf52363333b5f925a52edc4e5bbc85c45de Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Mon, 23 Sep 2019 16:46:50 +0200 Subject: [PATCH 039/133] gnu: varnish: Update to 6.3.0. * gnu/packages/web.scm (varnish): Update to 6.3.0. [arguments]: Patch /bin/sh in one more file. --- gnu/packages/web.scm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index d25f04901a..4509f63f1b 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -4968,13 +4968,13 @@ deployments.") (package (name "varnish") (home-page "https://varnish-cache.org/") - (version "6.2.1") + (version "6.3.0") (source (origin (method url-fetch) (uri (string-append home-page "_downloads/varnish-" version ".tgz")) (sha256 (base32 - "15qfvw3fp05bgyspcm6gbsnxhs430p4z3fwz5kkd1z68jb90b3pj")))) + "0zwlffdd1m0ih33nq40xf2wwdyvr4czmns2fs90qpfnwy72xxk4m")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib") @@ -4989,7 +4989,8 @@ deployments.") (lambda _ (substitute* '("bin/varnishtest/vtc_varnish.c" "bin/varnishtest/vtc_process.c" - "bin/varnishd/mgt/mgt_vcc.c") + "bin/varnishd/mgt/mgt_vcc.c" + "bin/varnishtest/tests/u00014.vtc") (("/bin/sh") (which "sh"))) (substitute* "bin/varnishd/mgt/mgt_shmem.c" (("rm -rf") (string-append (which "rm") " -rf"))) From 942c7889498fc8e680a16d500e166c9ade84e640 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Mon, 23 Sep 2019 17:15:50 +0200 Subject: [PATCH 040/133] gnu: OpenEXR: Update to 2.4.0 [fixes CVE-2018-18443, CVE-2018-18444]. * gnu/packages/patches/ilmbase-fix-tests.patch: Adjust for new origin. * gnu/packages/patches/ilmbase-openexr-pkg-config.patch: New file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/graphics.scm (ilmbase): Update to 2.4.0. [source]: Change to GIT-FETCH, as tarballs are no longer provided. Add new patch. [build-system]: Change to CMAKE-BUILD-SYSTEM. [arguments]: Add phase to enter the correct source directory. * gnu/packages/graphics.scm (openexr): Update to 2.4.0. [source]: Inherit from ILMBASE, which comes from the same repository. [build-system]: Change to CMAKE-BUILD-SYSTEM. [arguments]: Add phase to enter the correct source directory. * gnu/packages/gstreamer.scm (gst-plugins-bad)[arguments]: Enable C++11. * gnu/packages/image-processing.scm (opencv)[arguments]: Likewise. --- gnu/local.mk | 1 + gnu/packages/graphics.scm | 46 +++++++++++-------- gnu/packages/gstreamer.scm | 5 ++ gnu/packages/image-processing.scm | 4 ++ gnu/packages/patches/ilmbase-fix-tests.patch | 12 ++--- .../patches/ilmbase-openexr-pkg-config.patch | 40 ++++++++++++++++ 6 files changed, 81 insertions(+), 27 deletions(-) create mode 100644 gnu/packages/patches/ilmbase-openexr-pkg-config.patch diff --git a/gnu/local.mk b/gnu/local.mk index 0e279d8303..bf0f9de26e 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -962,6 +962,7 @@ dist_patch_DATA = \ %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/intltool-perl-compatibility.patch \ %D%/packages/patches/irrlicht-use-system-libs.patch \ %D%/packages/patches/isc-dhcp-4.4.1-fixes-for-newer-bind.patch \ diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index d4e9adb84a..795e750cb5 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -16,6 +16,7 @@ ;;; Copyright © 2019 Steve Sprang ;;; Copyright © 2019 John Soo ;;; Copyright © 2019 Pierre Neidhardt +;;; Copyright © 2019 Marius Bakke ;;; ;;; This file is part of GNU Guix. ;;; @@ -327,17 +328,25 @@ 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) + "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 "http://www.openexr.com/") (synopsis "Utility C++ libraries for threads, maths, and exceptions") (description @@ -409,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 diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index 13c2c2fc27..8b81cc91a0 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/image-processing.scm b/gnu/packages/image-processing.scm index b3972a2b76..460f35dbae 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/patches/ilmbase-fix-tests.patch b/gnu/packages/patches/ilmbase-fix-tests.patch index fcaa37d201..34d3a180c4 100644 --- a/gnu/packages/patches/ilmbase-fix-tests.patch +++ b/gnu/packages/patches/ilmbase-fix-tests.patch @@ -22,10 +22,8 @@ Date: Wed, 24 Feb 2016 01:04:11 +0000 Also fix a pre-existing typo. -Index: ilmbase/ImathTest/testBoxAlgo.cpp -=================================================================== ---- ilmbase.orig/ImathTest/testBoxAlgo.cpp -+++ ilmbase/ImathTest/testBoxAlgo.cpp +--- a/IlmBase/ImathTest/testBoxAlgo.cpp ++++ b/IlmBase/ImathTest/testBoxAlgo.cpp @@ -886,10 +886,11 @@ boxMatrixTransform () assert (approximatelyEqual (b2.min, b4.min, e)); @@ -54,10 +52,8 @@ On 32-bit x86, allow even greater discrepency at double precision, due to possible double-rounding. See https://lists.nongnu.org/archive/html/openexr-devel/2015-12/msg00001.html -Index: ilmbase/ImathTest/testBox.cpp -=================================================================== ---- ilmbase.orig/ImathTest/testBox.cpp -+++ ilmbase/ImathTest/testBox.cpp +--- a/IlmBase/ImathTest/testBox.cpp ++++ b/IlmBase/ImathTest/testBox.cpp @@ -47,6 +47,58 @@ using namespace IMATH_INTERNAL_NAMESPACE namespace { diff --git a/gnu/packages/patches/ilmbase-openexr-pkg-config.patch b/gnu/packages/patches/ilmbase-openexr-pkg-config.patch new file mode 100644 index 0000000000..99613080d8 --- /dev/null +++ b/gnu/packages/patches/ilmbase-openexr-pkg-config.patch @@ -0,0 +1,40 @@ +Fix pkg-config files when using the CMake build system. + +Upstream bug report: +https://github.com/openexr/openexr/issues/567 + +diff --git a/IlmBase/config/CMakeLists.txt b/IlmBase/config/CMakeLists.txt +index 508176a..9e6ab91 100644 +--- a/IlmBase/config/CMakeLists.txt ++++ b/IlmBase/config/CMakeLists.txt +@@ -71,9 +71,9 @@ if(ILMBASE_INSTALL_PKG_CONFIG) + # use a helper function to avoid variable pollution, but pretty simple + function(ilmbase_pkg_config_help pcinfile) + set(prefix ${CMAKE_INSTALL_PREFIX}) +- set(exec_prefix ${CMAKE_INSTALL_BINDIR}) +- set(libdir ${CMAKE_INSTALL_LIBDIR}) +- set(includedir ${CMAKE_INSTALL_INCLUDEDIR}) ++ set(exec_prefix ${CMAKE_INSTALL_FULL_BINDIR}) ++ set(libdir ${CMAKE_INSTALL_FULL_LIBDIR}) ++ set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR}) + set(LIB_SUFFIX_DASH ${ILMBASE_LIB_SUFFIX}) + if(TARGET Threads::Threads) + # hrm, can't use properties as they end up as generator expressions +diff --git a/OpenEXR/config/CMakeLists.txt b/OpenEXR/config/CMakeLists.txt +index 1ef829a..b8dc141 100644 +--- a/OpenEXR/config/CMakeLists.txt ++++ b/OpenEXR/config/CMakeLists.txt +@@ -72,9 +72,9 @@ if(OPENEXR_INSTALL_PKG_CONFIG) + # use a helper function to avoid variable pollution, but pretty simple + function(openexr_pkg_config_help pcinfile) + set(prefix ${CMAKE_INSTALL_PREFIX}) +- set(exec_prefix ${CMAKE_INSTALL_BINDIR}) +- set(libdir ${CMAKE_INSTALL_LIBDIR}) +- set(includedir ${CMAKE_INSTALL_INCLUDEDIR}) ++ set(exec_prefix ${CMAKE_INSTALL_FULL_BINDIR}) ++ set(libdir ${CMAKE_INSTALL_FULL_LIBDIR}) ++ set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR}) + set(LIB_SUFFIX_DASH ${OPENEXR_LIB_SUFFIX}) + if(TARGET Threads::Threads) + # hrm, can't use properties as they end up as generator expressions + From 25c4a04fded1bc129df6af5fa563771194ebd7a1 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Mon, 23 Sep 2019 17:17:04 +0200 Subject: [PATCH 041/133] gnu: OpenEXR: Update home page. * gnu/packages/graphics.scm (ilmbase, openexr)[home-page]: Use HTTPS. --- gnu/packages/graphics.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index 795e750cb5..8d04e95937 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -347,7 +347,7 @@ many more.") (lambda _ (chdir "IlmBase") #t))))) - (home-page "http://www.openexr.com/") + (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 @@ -453,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 From aa0e28bc73487f2298b494ab077526ba448a1c57 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Mon, 23 Sep 2019 17:25:00 +0200 Subject: [PATCH 042/133] gnu: p11-kit: Update to 0.23.17. * gnu/packages/patches/p11-kit-jks-timestamps.patch: Delete file. * gnu/local.mk (dist_patch_DATA): Remove it. * gnu/packages/tls.scm (p11-kit): Update to 0.23.17. [source](patches): Remove. --- gnu/local.mk | 1 - .../patches/p11-kit-jks-timestamps.patch | 42 ------------------- gnu/packages/tls.scm | 5 +-- 3 files changed, 2 insertions(+), 46 deletions(-) delete mode 100644 gnu/packages/patches/p11-kit-jks-timestamps.patch diff --git a/gnu/local.mk b/gnu/local.mk index bf0f9de26e..840ef22bdb 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1176,7 +1176,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/patches/p11-kit-jks-timestamps.patch b/gnu/packages/patches/p11-kit-jks-timestamps.patch deleted file mode 100644 index 8cb8ed8684..0000000000 --- a/gnu/packages/patches/p11-kit-jks-timestamps.patch +++ /dev/null @@ -1,42 +0,0 @@ -Fix test failures induced by setting the SOURCE_DATE_EPOCH variable. - -Taken from upstream: . - -From 2a474e1fe8f4bd8b4ed7622e5cf3b2718a202562 Mon Sep 17 00:00:00 2001 -From: Daiki Ueno -Date: Mon, 28 Jan 2019 13:03:15 +0100 -Subject: [PATCH] extract-jks: Prefer _p11_extract_jks_timestamp to - SOURCE_DATE_EPOCH - -Give _p11_extract_jks_timestamp precedence over SOURCE_DATE_EPOCH so -that the test results are not affected by the envvar settings. ---- - trust/extract-jks.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/trust/extract-jks.c b/trust/extract-jks.c -index ad8dc35..a6f855f 100644 ---- a/trust/extract-jks.c -+++ b/trust/extract-jks.c -@@ -250,7 +250,9 @@ prepare_jks_buffer (p11_enumerate *ex, - * when this was this certificate was added to the keystore, however - * we don't have that information. Java uses time in milliseconds - */ -- { -+ if (_p11_extract_jks_timestamp) -+ now = _p11_extract_jks_timestamp; -+ else { - char *source_date_epoch; - source_date_epoch = secure_getenv ("SOURCE_DATE_EPOCH"); - if (source_date_epoch) { -@@ -276,9 +278,7 @@ prepare_jks_buffer (p11_enumerate *ex, - return false; - } - now = epoch; -- } else if (_p11_extract_jks_timestamp) -- now = _p11_extract_jks_timestamp; -- else -+ } else - now = time (NULL); - } - diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index 45ec4f796b..c06052239f 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -122,16 +122,15 @@ in intelligent transportation networks.") (define-public p11-kit (package (name "p11-kit") - (version "0.23.15") + (version "0.23.17") (source (origin (method url-fetch) (uri (string-append "https://github.com/p11-glue/p11-kit/releases/" "download/" version "/p11-kit-" version ".tar.gz")) - (patches (search-patches "p11-kit-jks-timestamps.patch")) (sha256 (base32 - "166pwj00cffv4qq4dvx0k53zka0b0r1fa0whc49007vsqyh3khgp")))) + "07kwdlw07jk9833k43kkhv0q9gkll3vmd25wwp68cpy0crfv4isl")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) From e4cf01c003f070ac494f6ac5d65a04a1c755ac6b Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 24 Sep 2019 20:31:32 +0200 Subject: [PATCH 043/133] gnu: emacs-stream: Update to 2.2.4-1.a3f3da1. * gnu/packages/emacs-xyz.scm (emacs-stream): Update to 2.2.4-1.a3f3da1. --- gnu/packages/emacs-xyz.scm | 46 ++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 58e7f181d5..1869345dca 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -7467,29 +7467,31 @@ editing nginx config files.") (license license:gpl2+))) (define-public emacs-stream - (package - (name "emacs-stream") - (version "2.2.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/NicolasPetton/stream.git") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "10x481lmkcmjrmdnlbqvys2b3525npn4a84j6g404pv4sfwlj6ab")))) - (build-system emacs-build-system) - (arguments - `(#:tests? #t - #:test-command '("emacs" "--batch" - "-l" "test/stream-tests.el" - "-f" "ert-run-tests-batch-and-exit"))) - (home-page "https://github.com/NicolasPetton/stream") - (synopsis "Implementation of streams for Emacs") - (description "This library provides an implementation of streams for Emacs. + (let ((commit "a3f3da155a49c133e2692bd8789b35492bfdc4f7") + (revision "1")) + (package + (name "emacs-stream") + (version (git-version "2.2.4" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Emacsmirror/stream.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0aig0yjb9z752ijh0mzildjmh44j051inchga8qll01dr8wf7332")))) + (build-system emacs-build-system) + (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+))) + (license license:gpl3+)))) (define-public emacs-el-search (let ((commit "f26277bfbb3fc3fc74beea6592f294c439796bd4") From 3aeef226ac528b657f896c0fb8e4d03437433903 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 24 Sep 2019 20:11:33 +0200 Subject: [PATCH 044/133] gnu: Add emacs-cl-print. * gnu/packages/emacs-xyz.scm (emacs-cl-print): New variable. --- gnu/packages/emacs-xyz.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 1869345dca..403ea749a8 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -7493,6 +7493,29 @@ editing nginx config files.") 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 "f26277bfbb3fc3fc74beea6592f294c439796bd4") (revision "1")) From 1cfe711ac0d777c958acc3cdfdbe779ce678ff0b Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 24 Sep 2019 20:17:14 +0200 Subject: [PATCH 045/133] gnu: emacs-el-search: Update to 1.12.6.1-2.07bed84. * gnu/packages/emacs-xyz.scm (emacs-el-search): Update to 1.12.6.1-2.07bed84. --- gnu/packages/emacs-xyz.scm | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 403ea749a8..c28d094bcc 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -7517,24 +7517,25 @@ please.") (license license:gpl3+)))) (define-public emacs-el-search - (let ((commit "f26277bfbb3fc3fc74beea6592f294c439796bd4") - (revision "1")) + (let ((commit "07bed84dd8ae9e4c6c648834224b1d33fdbd51e0") + (revision "2")) (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") + (version (git-version "1.12.6.1" 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/el-search.git") + (commit commit))) + (file-name (git-file-name name version)) (sha256 - (base32 "12xf40h9sb7xxg2r97gsia94q02543mgiiiw46fzh1ac7b7993g6")))) + (base32 "10w1ldgijdhfsrazp0y3bm76jv5wvdn94k1yp0pmc2m1896b58ak")))) (build-system emacs-build-system) - (inputs `(("emacs-stream" ,emacs-stream))) + (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.") From 84a0c6ff63afc296c1bc5873f783693dccc5ded2 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Tue, 24 Sep 2019 23:51:48 +0200 Subject: [PATCH 046/133] gnu: Move openmw-openscenegraph to graphics.scm. Package inheritance across modules may cause unbound variable errors at expansion time because of cyclic dependencies between the modules. * gnu/packages/game-development.scm (openmw-openscenegraph): Move from here ... * gnu/packages/graphics.scm (openmw-openscenegraph): ... to here. Make the variable public and "hide" the package. --- gnu/packages/game-development.scm | 34 ----------------------------- gnu/packages/graphics.scm | 36 +++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 34 deletions(-) diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index ee9e63ea29..7fc0122faa 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -1109,40 +1109,6 @@ of use.") '("ogre")))) (synopsis "Fast, flexible and simple GUI (OpenGL backend)"))) -(define openmw-openscenegraph - ;; OpenMW prefers its own fork of openscenegraph: - ;; https://wiki.openmw.org/index.php?title=Development_Environment_Setup#OpenSceneGraph. - (let ((commit "36a962845a2c87a6671fd822157e0729d164e940")) - (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 openmw (package (name "openmw") diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index 8d04e95937..6d6c8d1e1c 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -589,6 +589,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") From c3ceeb93c2801078c39fb7450e4caa3168df56be Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 24 Sep 2019 23:29:31 +0200 Subject: [PATCH 047/133] gnu: emacs-xterm-color: Update to 1.9. * gnu/packages/emacs-xyz.scm (emacs-xterm-color): Update to 1.9. --- gnu/packages/emacs-xyz.scm | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index c28d094bcc..9ba355e02e 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -17884,27 +17884,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 From c463c270dc0e1690d3c7cc19cd78583ce9bf9bd1 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 24 Sep 2019 23:29:55 +0200 Subject: [PATCH 048/133] gnu: Add emacs-wttrin. * gnu/packages/emacs-xyz.scm (emacs-wttrin): New variable. --- gnu/packages/emacs-xyz.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 9ba355e02e..855ca73f05 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -15577,6 +15577,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") From 4780db2c935110ea3254817ba0c519c229b9461e Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Mon, 16 Sep 2019 22:20:23 -0500 Subject: [PATCH 049/133] gnu: idris: Update to 1.3.2. * gnu/packages/haskell-xyz.scm (ghc-network-2.8, ghc-megaparsec-7): New variables. * gnu/packages/idris.scm (idris): Update to 1.3.2. [source]: Remove patch. [inputs]: Use ghc-network-2.8 and ghc-megaparsec-7. * gnu/packages/patches/idris-test-no-node.patch: Delete. * gnu/local.mk (dist_patch_DATA): Remove it. --- gnu/local.mk | 1 - gnu/packages/haskell-xyz.scm | 37 +++++++++++ gnu/packages/idris.scm | 9 ++- gnu/packages/patches/idris-test-no-node.patch | 61 ------------------- 4 files changed, 41 insertions(+), 67 deletions(-) delete mode 100644 gnu/packages/patches/idris-test-no-node.patch diff --git a/gnu/local.mk b/gnu/local.mk index 840ef22bdb..da5fe09446 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -960,7 +960,6 @@ 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/intltool-perl-compatibility.patch \ diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm index a36451fa8c..2977398880 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 894a19f0aa..7e6ee302b0 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/patches/idris-test-no-node.patch b/gnu/packages/patches/idris-test-no-node.patch deleted file mode 100644 index c04ad41a8e..0000000000 --- a/gnu/packages/patches/idris-test-no-node.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 6c52e1b902b869c25e2fe39cff6364143a04da61 Mon Sep 17 00:00:00 2001 -From: Niklas Larsson -Date: Tue, 11 Dec 2018 19:56:22 +0100 -Subject: [PATCH] Only check for Node when required - ---- - test/TestRun.hs | 34 ++++++++++++++++++++-------------- - 1 file changed, 20 insertions(+), 14 deletions(-) - -diff --git a/test/TestRun.hs b/test/TestRun.hs -index c7db9fdcd..4809911f3 100644 ---- a/test/TestRun.hs -+++ b/test/TestRun.hs -@@ -11,6 +11,7 @@ import Data.Proxy - import Data.Typeable - import Options.Applicative - import System.Directory -+import System.Environment - import System.Exit - import System.FilePath (()) - import System.Info -@@ -103,20 +104,25 @@ runTest path flags = do - normalise (x : xs) = x : normalise xs - normalise [] = [] - -+checkNode :: IO () -+checkNode = do -+ nodePath <- findExecutable "node" -+ nodejsPath <- findExecutable "nodejs" -+ let node = nodePath <|> nodejsPath -+ case node of -+ Nothing -> do -+ putStrLn "For running the test suite against Node, node must be installed." -+ exitFailure -+ Just _ -> return () -+ - main :: IO () - main = do -- nodePath <- findExecutable "node" -- nodejsPath <- findExecutable "nodejs" -- let node = nodePath <|> nodejsPath -- case node of -- Nothing -> do -- putStrLn "For running the test suite against Node, node must be installed." -- exitFailure -- Just _ -> do -- defaultMainWithIngredients ingredients $ -+ args <- getArgs -+ when ("--node" `elem` args) checkNode -+ defaultMainWithIngredients ingredients $ - askOption $ \(NodeOpt node) -> -- let (codegen, flags) = if node then (JS, ["--codegen", "node"]) -- else (C , []) -- in -- mkGoldenTests (testFamiliesForCodegen codegen) -- (flags ++ idrisFlags) -+ let (codegen, flags) = if node then (JS, ["--codegen", "node"]) -+ else (C , []) -+ in -+ mkGoldenTests (testFamiliesForCodegen codegen) (flags ++ idrisFlags) -+ From 91e633f0430c8c26e6915f79365a49d8a4327c96 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Tue, 16 Jul 2019 18:09:38 +0900 Subject: [PATCH 050/133] build: initrd: Fix "write-cpio-archive" return value. * gnu/build/linux-initrd.scm (write-cpio-archive): Really return OUTPUT on success, even when compression is disabled. --- gnu/build/linux-initrd.scm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/gnu/build/linux-initrd.scm b/gnu/build/linux-initrd.scm index 3aaa06d3a0..ea7de58553 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) From 41e03c4beefb4d14ca1f8f9d8739a582c9430893 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Thu, 18 Jul 2019 07:23:48 +0900 Subject: [PATCH 051/133] linux-boot: Fix typo. * gnu/build/linux-boot.scm (mount-root-file-system): Fix typo. --- gnu/build/linux-boot.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm index f273957d78..84a5447977 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") From 430ac9ccb43faacd24610d8dbdf8e6f070baaeb7 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Wed, 25 Sep 2019 03:08:22 +0200 Subject: [PATCH 052/133] gnu: Add emacs-cmake-font-lock. * gnu/packages/emacs-xyz.scm (emacs-cmake-font-lock): New variable. --- gnu/packages/emacs-xyz.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 855ca73f05..21ce76d3d4 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -16280,6 +16280,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") From c83d7e964d0328637b2e2023f7e39375baaef78f Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Wed, 25 Sep 2019 03:13:08 +0200 Subject: [PATCH 053/133] gnu: emacs-helm-lsp: Fix description. * gnu/packages/emacs-xyz.scm (emacs-helm-lsp): Fix description. --- gnu/packages/emacs-xyz.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 21ce76d3d4..4ee53fbe88 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -16695,10 +16695,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 From ac87bc57af9bcb6cbb45eaf90256f8f27e4e8729 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Wed, 25 Sep 2019 05:55:19 +0200 Subject: [PATCH 054/133] gnu: emacs-vdiff: Enable tests. * gnu/packages/emacs-xyz.scm (emacs-vdiff): Enable tests. --- gnu/packages/emacs-xyz.scm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 4ee53fbe88..0fc76a4d63 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -17095,16 +17095,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 @@ -17113,6 +17112,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 From 1683e4863af430fa85c790dcca600fad538432e8 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sun, 15 Sep 2019 19:16:06 +0100 Subject: [PATCH 055/133] gnu: Add guix-data-service. * gnu/packages/web.scm (guix-data-service): New variable. --- gnu/packages/web.scm | 95 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 4509f63f1b..01c7288caa 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -56,6 +56,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix cvs-download) #:use-module (guix hg-download) @@ -77,6 +78,8 @@ #:use-module (gnu packages check) #:use-module (gnu packages documentation) #:use-module (gnu packages docbook) + #:use-module (gnu packages emacs) + #:use-module (gnu packages emacs-xyz) #:use-module (gnu packages autotools) #:use-module (gnu packages compression) #:use-module (gnu packages curl) @@ -4013,6 +4016,98 @@ CDF, Atom 0.3, and Atom 1.0 feeds.") (define-public python2-feedparser (package-with-python2 python-feedparser)) +(define-public guix-data-service + (let ((commit "bb94f6dd05a33135fa661b86d35d203c0c099dba") + (revision "1")) + (package + (name "guix-data-service") + (version (string-append "0.0.1-" revision "." (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/git/guix/data-service.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1y6s4igjvi0293z4d4hbgwifs8avcam71qhis9z4f8mjz6w7vcpb")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; TODO Tests require PostgreSQL + #:modules ((guix build utils) + (guix build gnu-build-system) + (ice-9 rdelim) + (ice-9 popen)) + #:phases + (modify-phases %standard-phases + (add-after 'set-paths 'set-GUIX_ENVIRONMENT + (lambda* (#:key inputs #:allow-other-keys) + ;; This means guix.el finds the Emacs modules + (setenv "GUIX_ENVIRONMENT" + (assoc-ref inputs "emacs-with-modules")) + #t)) + (add-before 'build 'set-GUILE_AUTO_COMPILE + (lambda _ + ;; To avoid errors relating to guild + (setenv "GUILE_AUTO_COMPILE" "0") + #t)) + (add-after 'install 'wrap-executable + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (guile (assoc-ref inputs "guile")) + (guile-effective-version + (read-line + (open-pipe* OPEN_READ + (string-append guile "/bin/guile") + "-c" "(display (effective-version))"))) + (scm (string-append out "/share/guile/site/" + guile-effective-version)) + (go (string-append out "/lib/guile/" + guile-effective-version + "/site-ccache"))) + (for-each + (lambda (file) + (wrap-program (string-append bin "/" file) + `("PATH" ":" prefix + (,bin)) + `("GUILE_LOAD_PATH" ":" prefix + (,scm ,(getenv "GUILE_LOAD_PATH"))) + `("GUILE_LOAD_COMPILED_PATH" ":" prefix + (,go ,(getenv "GUILE_LOAD_COMPILED_PATH"))))) + '("guix-data-service" + "guix-data-service-process-branch-updated-email" + "guix-data-service-process-job" + "guix-data-service-process-jobs" + "guix-data-service-query-build-servers")) + #t))) + (delete 'strip)))) ; As the .go files aren't compatible + (inputs + `(("guix" ,guix) + ("guile-fibers" ,guile-fibers) + ("guile-json" ,guile-json-3) + ("guile-email" ,guile-email) + ("guile-squee" ,guile-squee) + ("postgresql" ,postgresql) + ("sqitch" ,sqitch))) + (native-inputs + `(("guile" ,guile-2.2) + ("autoconf" ,autoconf) + ("automake" ,automake) + ("emacs-with-modules" ,(directory-union + "emacs-union" + (list emacs-no-x + emacs-htmlize))) + ("pkg-config" ,pkg-config))) + (synopsis "Store and provide data about GNU Guix") + (description + "The Guix Data Service stores data about GNU Guix, and provides this +through a web interface. It supports listening to the guix-commits mailing +list to find out about new revisions, then loads the data from these in to a +PostgreSQL database.") + (home-page "http://data.guix.gnu.org/") + (license license:agpl3+)))) + (define-public gumbo-parser (package (name "gumbo-parser") From dd2a83270bccb539439b2fc831d0db04e5276f11 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sun, 15 Sep 2019 19:16:11 +0100 Subject: [PATCH 056/133] services: Add the Guix Data Service. * gnu/services/guix.scm: New file. * gnu/tests/guix.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add both new files. * doc/guix.texi (Guix Services): New section documenting the Guix Data Service. --- doc/guix.texi | 52 +++++++++++ gnu/local.mk | 2 + gnu/services/guix.scm | 212 ++++++++++++++++++++++++++++++++++++++++++ gnu/tests/guix.scm | 173 ++++++++++++++++++++++++++++++++++ 4 files changed, 439 insertions(+) create mode 100644 gnu/services/guix.scm create mode 100644 gnu/tests/guix.scm diff --git a/doc/guix.texi b/doc/guix.texi index 9fcce27597..71deca5aba 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -11788,6 +11788,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 @@ -24327,6 +24328,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/local.mk b/gnu/local.mk index da5fe09446..23fc317d50 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -535,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 \ @@ -599,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 \ diff --git a/gnu/services/guix.scm b/gnu/services/guix.scm new file mode 100644 index 0000000000..0f0fad39b0 --- /dev/null +++ b/gnu/services/guix.scm @@ -0,0 +1,212 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Christopher Baines +;;; +;;; 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 services guix) + #:use-module (ice-9 match) + #:use-module (guix gexp) + #:use-module (guix records) + #:use-module ((gnu packages base) + #:select (glibc-utf8-locales)) + #:use-module (gnu packages admin) + #:use-module (gnu packages web) + #:use-module (gnu services) + #:use-module (gnu services base) + #:use-module (gnu services admin) + #:use-module (gnu services shepherd) + #:use-module (gnu services getmail) + #:use-module (gnu system shadow) + #:export ( + guix-data-service-configuration + guix-data-service-configuration? + guix-data-service-package + guix-data-service-user + guix-data-service-group + guix-data-service-port + guix-data-service-host + guix-data-service-getmail-idle-mailboxes + guix-data-service-commits-getmail-retriever-configuration + + guix-data-service-type)) + +;;;; Commentary: +;;; +;;; This module implements a service that to run instances of the Guix Data +;;; Service, which provides data about Guix over time. +;;; +;;;; Code: + +(define-record-type* + guix-data-service-configuration make-guix-data-service-configuration + guix-data-service-configuration? + (package guix-data-service-package + (default guix-data-service)) + (user guix-data-service-configuration-user + (default "guix-data-service")) + (group guix-data-service-configuration-group + (default "guix-data-service")) + (port guix-data-service-port + (default 8765)) + (host guix-data-service-host + (default "127.0.0.1")) + (getmail-idle-mailboxes + guix-data-service-getmail-idle-mailboxes + (default #f)) + (commits-getmail-retriever-configuration + guix-data-service-commits-getmail-retriever-configuration + (default #f))) + +(define (guix-data-service-profile-packages config) + "Return the guix-data-service package, this will populate the +ca-certificates.crt file in the system profile." + (list + (guix-data-service-package config))) + +(define (guix-data-service-shepherd-services config) + (match-record config + (package user group port host) + (list + (shepherd-service + (documentation "Guix Data Service web server") + (provision '(guix-data-service)) + (requirement '(postgres networking)) + (start #~(make-forkexec-constructor + (list #$(file-append package + "/bin/guix-data-service") + "--pid-file=/var/run/guix-data-service/pid" + #$(string-append "--port=" (number->string port)) + #$(string-append "--host=" host) + ;; Perform any database migrations when the + ;; service is started + "--update-database") + + #:user #$user + #:group #$group + #:pid-file "/var/run/guix-data-service/pid" + ;; Allow time for migrations to run + #:pid-file-timeout 60 + #:environment-variables + `(,(string-append + "GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale") + "LC_ALL=en_US.utf8") + #:log-file "/var/log/guix-data-service/web.log")) + (stop #~(make-kill-destructor))) + + (shepherd-service + (documentation "Guix Data Service process jobs") + (provision '(guix-data-service-process-jobs)) + (requirement '(postgres + networking + ;; Require guix-data-service, as that the database + ;; migrations are handled through this service + guix-data-service)) + (start #~(make-forkexec-constructor + (list + #$(file-append package + "/bin/guix-data-service-process-jobs")) + #:user #$user + #:group #$group + #:environment-variables + `("HOME=/var/lib/guix-data-service" + "GIT_SSL_CAINFO=/etc/ssl/certs/ca-certificates.crt" + ,(string-append + "GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale") + "LC_ALL=en_US.utf8") + #:log-file "/var/log/guix-data-service/process-jobs.log")) + (stop #~(make-kill-destructor)))))) + +(define (guix-data-service-activation config) + #~(begin + (use-modules (guix build utils)) + + (define %user (getpw "guix-data-service")) + + (chmod "/var/lib/guix-data-service" #o755) + + (mkdir-p "/var/log/guix-data-service") + + ;; Allow writing the PID file + (mkdir-p "/var/run/guix-data-service") + (chown "/var/run/guix-data-service" + (passwd:uid %user) + (passwd:gid %user)))) + +(define (guix-data-service-account config) + (match-record config + (user group) + (list (user-group + (name group) + (system? #t)) + (user-account + (name user) + (group group) + (system? #t) + (comment "Guix Data Service user") + (home-directory "/var/lib/guix-data-service") + (shell (file-append shadow "/sbin/nologin")))))) + +(define (guix-data-service-getmail-configuration config) + (match config + (($ package user group + port host + #f #f) + '()) + (($ package user group + port host + getmail-idle-mailboxes + commits-getmail-retriever-configuration) + (list + (getmail-configuration + (name 'guix-data-service) + (user user) + (group group) + (directory "/var/lib/getmail/guix-data-service") + (rcfile + (getmail-configuration-file + (retriever commits-getmail-retriever-configuration) + (destination + (getmail-destination-configuration + (type "MDA_external") + (path (file-append + package + "/bin/guix-data-service-process-branch-updated-email")))) + (options + (getmail-options-configuration + (read-all #f) + (delivered-to #f) + (received #f))))) + (idle getmail-idle-mailboxes)))))) + +(define guix-data-service-type + (service-type + (name 'guix-data-service) + (extensions + (list + (service-extension profile-service-type + guix-data-service-profile-packages) + (service-extension shepherd-root-service-type + guix-data-service-shepherd-services) + (service-extension activation-service-type + guix-data-service-activation) + (service-extension account-service-type + guix-data-service-account) + (service-extension getmail-service-type + guix-data-service-getmail-configuration))) + (default-value + (guix-data-service-configuration)) + (description + "Run an instance of the Guix Data Service."))) diff --git a/gnu/tests/guix.scm b/gnu/tests/guix.scm new file mode 100644 index 0000000000..6139e31cf0 --- /dev/null +++ b/gnu/tests/guix.scm @@ -0,0 +1,173 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Christopher Baines +;;; +;;; 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 tests guix) + #:use-module (gnu tests) + #:use-module (gnu system) + #:use-module (gnu system file-systems) + #:use-module (gnu system shadow) + #:use-module (gnu system vm) + #:use-module (gnu services) + #:use-module (gnu services guix) + #:use-module (gnu services databases) + #:use-module (gnu services shepherd) + #:use-module (gnu services networking) + #:use-module (gnu packages databases) + #:use-module (guix packages) + #:use-module (guix modules) + #:use-module (guix records) + #:use-module (guix gexp) + #:use-module (guix store) + #:use-module (guix utils) + #:use-module (ice-9 match) + #:export (%test-guix-data-service)) + + +;;; +;;; Guix Data Service +;;; + +(define guix-data-service-initial-database-setup-service + (let ((user "guix_data_service") + (name "guix_data_service")) + (define start-gexp + #~(lambda () + (let ((pid (primitive-fork)) + (postgres (getpwnam "postgres"))) + (if (eq? pid 0) + (dynamic-wind + (const #t) + (lambda () + (setgid (passwd:gid postgres)) + (setuid (passwd:uid postgres)) + (primitive-exit + (if (and + (zero? + (system* #$(file-append postgresql "/bin/createuser") + #$user)) + (zero? + (system* #$(file-append postgresql "/bin/createdb") + "-O" #$user #$name))) + 0 + 1))) + (lambda () + (primitive-exit 1))) + (zero? (cdr (waitpid pid))))))) + + (shepherd-service + (requirement '(postgres)) + (provision '(guix-data-service-initial-database-setup)) + (start start-gexp) + (stop #~(const #f)) + (respawn? #f) + (one-shot? #t) + (documentation "Setup Guix Data Service database.")))) + +(define %guix-data-service-os + (simple-operating-system + (service dhcp-client-service-type) + (service postgresql-service-type + (postgresql-configuration + (config-file + (postgresql-config-file + (hba-file + (plain-file "pg_hba.conf" + " +local all all trust +host all all 127.0.0.1/32 trust +host all all ::1/128 trust")))))) + (service guix-data-service-type + (guix-data-service-configuration + (host "0.0.0.0"))) + (simple-service 'guix-data-service-database-setup + shepherd-root-service-type + (list guix-data-service-initial-database-setup-service)))) + +(define (run-guix-data-service-test) + (define os + (marionette-operating-system + %guix-data-service-os + #:imported-modules '((gnu services herd) + (guix combinators)))) + + (define forwarded-port 8080) + + (define vm + (virtual-machine + (operating-system os) + (memory-size 1024) + (port-forwardings `((,forwarded-port . 8765))))) + + (define test + (with-imported-modules '((gnu build marionette)) + #~(begin + (use-modules (srfi srfi-11) (srfi srfi-64) + (gnu build marionette) + (web uri) + (web client) + (web response)) + + (define marionette + (make-marionette (list #$vm))) + + (mkdir #$output) + (chdir #$output) + + (test-begin "guix-data-service") + + (test-assert "service running" + (marionette-eval + '(begin + (use-modules (gnu services herd)) + (match (start-service 'guix-data-service) + (#f #f) + (('service response-parts ...) + (match (assq-ref response-parts 'running) + ((pid) (number? pid)))))) + marionette)) + + (test-assert "process jobs service running" + (marionette-eval + '(begin + (use-modules (gnu services herd)) + (match (start-service 'guix-data-service-process-jobs) + (#f #f) + (('service response-parts ...) + (match (assq-ref response-parts 'running) + ((pid) (number? pid)))))) + marionette)) + + (test-equal "http-get" + 200 + (let-values + (((response text) + (http-get #$(simple-format + #f "http://localhost:~A/healthcheck" forwarded-port) + #:decode-body? #t))) + (response-code response))) + + (test-end) + (exit (= (test-runner-fail-count (test-runner-current)) 0))))) + + (gexp->derivation "guix-data-service-test" test)) + +(define %test-guix-data-service + (system-test + (name "guix-data-service") + (description "Connect to a running Guix Data Service.") + (value (run-guix-data-service-test)))) From 0876e9c116125b28806286b0313ff78de5948562 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 25 Sep 2019 10:45:38 +0200 Subject: [PATCH 057/133] colors: Add 'dim'. * guix/colors.scm (coloring-procedure): New procedure. (%highlight-color): Remove. (highlight): Define in terms of 'coloring-procedure'. (dim): New procedure. --- guix/colors.scm | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/guix/colors.scm b/guix/colors.scm index 7949cf5763..b63ac37027 100644 --- a/guix/colors.scm +++ b/guix/colors.scm @@ -31,6 +31,8 @@ colorize-string highlight + dim + color-rules color-output? isatty?*)) @@ -133,14 +135,16 @@ that subsequent output will not have any colors in effect." (not (getenv "NO_COLOR")) (isatty?* port))) -(define %highlight-color (color BOLD)) +(define (coloring-procedure color) + "Return a procedure that applies COLOR to the given string." + (lambda* (str #:optional (port (current-output-port))) + "Return STR with extra ANSI color attributes if PORT supports it." + (if (color-output? port) + (colorize-string str color) + str))) -(define* (highlight str #:optional (port (current-output-port))) - "Return STR with extra ANSI color attributes to highlight it if PORT -supports it." - (if (color-output? port) - (colorize-string str %highlight-color) - str)) +(define highlight (coloring-procedure (color BOLD))) +(define dim (coloring-procedure (color DARK))) (define (colorize-matches rules) "Return a procedure that, when passed a string, returns that string From d26c290b7dac642c39f23fd65b4eb0d10534d58d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 25 Sep 2019 10:48:50 +0200 Subject: [PATCH 058/133] pull: Dim the commit ID when displaying news. * guix/scripts/pull.scm (display-news-entry): Dim the commit line. --- guix/scripts/pull.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index 2b7b991b50..0372278705 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -249,7 +249,7 @@ PORT." (channel-news-entry-body entry)) (display-news-entry-title entry language port) - (format port (G_ " commit ~a~%") + (format port (dim (G_ " commit ~a~%")) (channel-news-entry-commit entry)) (newline port) (format port " ~a~%" From 012c93e916279f7df0e495aa1a73f696de15b80e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 25 Sep 2019 14:43:46 +0200 Subject: [PATCH 059/133] doc: Support paren matching via CSS hover. * doc/build.scm (syntax-highlighted-html)[build](pair-open/close) (highlights->sxml*): New procedures. (syntax-highlight): Use 'highlights->sxml*'. --- doc/build.scm | 59 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 3 deletions(-) diff --git a/doc/build.scm b/doc/build.scm index 5bc95d2517..b6a921c421 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 ...)

From 4b67b9db7d58ef6596c9b69a3d530bc7100ab038 Mon Sep 17 00:00:00 2001
From: Divan Santana 
Date: Mon, 23 Sep 2019 12:54:56 +0200
Subject: [PATCH 060/133] gnu: emacs-exwm: Update to 0.23.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/emacs-xyz.scm (emacs-exwm): Update to 0.23.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/emacs-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 0fc76a4d63..84cfc75ebc 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -8694,7 +8694,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)
@@ -8702,7 +8702,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)))

From 82b6bf8c0f05988305c126b5a6b196e1d57a19ea Mon Sep 17 00:00:00 2001
From: Brice Waegeneire 
Date: Tue, 24 Sep 2019 00:28:52 +0200
Subject: [PATCH 061/133] doc: Fix installing Guix in VM
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* doc/guix.texi (Installing Guix in a Virtual Machine):
Pass "order=d" to '-boot' option.  Use "-drive media=cdrom" for the ISO
image.  Remove paragraph about ordering and the boot menu.

Signed-off-by: Ludovic Courtès 
---
 doc/guix.texi | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 71deca5aba..dd54f7f747 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -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=guix-system.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.

From 34e624a56ad42f93d8526f7c7e2025d26a4cba5e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Wed, 25 Sep 2019 15:38:26 +0200
Subject: [PATCH 062/133] doc: Avoid @verbatiminclude for Scheme snippets.

* doc/guix.texi (Invoking guix package): Use @include instead of
@verbatiminclude.
(Additional Build Options): Likewise.
---
 doc/guix.texi | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index dd54f7f747..267c2e9e6c 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -2755,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
@@ -8231,7 +8231,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}

From 195854a50ce8e9abe15db24b4808f78fe52ce620 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Wiktor=20=C5=BBelazny?= 
Date: Mon, 16 Sep 2019 18:18:06 +0200
Subject: [PATCH 063/133] gnu: Add r-assertable.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/cran.scm (r-assertable): New variable.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/cran.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index cb0be4aedd..89a581cb5e 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)))

From a3246602a271540b3ab21eb904b287da4f324eb8 Mon Sep 17 00:00:00 2001
From: Mathieu Othacehe 
Date: Tue, 24 Sep 2019 11:56:10 +0200
Subject: [PATCH 064/133] gnu: guile-parted: Update to 0.0.2.

* gnu/packages/guile-xyz.scm (guile-parted): Update to 0.0.2.
---
 gnu/packages/guile-xyz.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 2736b36a38..43a599b503 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

From 70c7b7c79920dd6500ba5e4e88fe147cc44923d8 Mon Sep 17 00:00:00 2001
From: Mathieu Othacehe 
Date: Tue, 24 Sep 2019 11:56:46 +0200
Subject: [PATCH 065/133] installer: Update to Guile-Parted 0.0.2 release.

* gnu/installer/parted.scm (data-partition?, metadata-partition?,
freespace-partition?, normal-partition?, extended-partition?,
logical-partition?): Remove, as now provided by Guile-Parted.
* gnu/installer/newt/partition.scm (run-disk-page): Remove disk-destroy calls,
replace disk-delete-all by disk-remove-all-partitions and
disk-delete-partition by disk-remove-partition*.
---
 gnu/installer/newt/partition.scm |  9 ++----
 gnu/installer/parted.scm         | 48 +++-----------------------------
 2 files changed, 7 insertions(+), 50 deletions(-)

diff --git a/gnu/installer/newt/partition.scm b/gnu/installer/newt/partition.scm
index 7a9f11a15e..74e9473171 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 682e233d9f..3439f211e2 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?

From 193cbb3d61cdf3b69e8c00e9b84df66364c52766 Mon Sep 17 00:00:00 2001
From: Marius Bakke 
Date: Wed, 25 Sep 2019 16:40:34 +0200
Subject: [PATCH 066/133] gnu: freeimage: Build with the C++ 11 standard.

This is a follow-up to commit 942c7889498fc8e680a16d500e166c9ade84e640.

* gnu/packages/image.scm (freeimage)[arguments]: Pass -std=gnu++11 in CFLAGS.
---
 gnu/packages/image.scm | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 2a9ee990be..dbc0159e22 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -981,8 +981,11 @@ 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)

From 8b9570adc16e62c923d14f1f5ecbc8eb5b89c985 Mon Sep 17 00:00:00 2001
From: Kei Kebreau 
Date: Mon, 7 Jan 2019 19:32:02 -0500
Subject: [PATCH 067/133] gnu: libjxr: Build and install shared library.

* gnu/packages/image.scm (libjxr)[arguments]: Add -fPIC to CFLAGS for shared
library support.  Add 'build-shared-library' phase and modify 'install' phase
to install the shared libraries.

Signed-off-by: Marius Bakke 
---
 gnu/packages/image.scm | 90 ++++++++++++++++++++++++++++--------------
 1 file changed, 60 insertions(+), 30 deletions(-)

diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index dbc0159e22..d1a4a58575 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -437,36 +437,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.")

From 8dc3c2a7d5fbe28b6f8ae27788b053be0d87b0b6 Mon Sep 17 00:00:00 2001
From: Kei Kebrau 
Date: Mon, 7 Jan 2019 19:36:49 -0500
Subject: [PATCH 068/133] gnu: freeimage: Update to 3.18.0.

* gnu/packages/image.scm (freeimage): Update to 3.18.0.
[source]: Modify snippet to remove the bundled libjxr. Remove obsolete
patches.
[arguments]: Add libjxr include directory to #:make-flags.
[inputs]: Add libjxr.
* gnu/packages/patches/freeimage-CVE-2015-0852.patch,
gnu/packages/patches/freeimage-CVE-2016-5684.patch,
gnu/packages/patches/freeimage-fix-build-with-gcc-5.patch: Delete files.
* gnu/local.mk (dist_patch_DATA): Unregister patches.
* gnu/packages/patches/freeimage-unbundle.patch: Update patch.

Signed-off-by: Marius Bakke 
---
 gnu/local.mk                                  |    3 -
 gnu/packages/image.scm                        |   16 +-
 .../patches/freeimage-CVE-2015-0852.patch     |  129 --
 .../patches/freeimage-CVE-2016-5684.patch     |   34 -
 .../freeimage-fix-build-with-gcc-5.patch      | 1453 -----------------
 gnu/packages/patches/freeimage-unbundle.patch |  167 +-
 6 files changed, 138 insertions(+), 1664 deletions(-)
 delete mode 100644 gnu/packages/patches/freeimage-CVE-2015-0852.patch
 delete mode 100644 gnu/packages/patches/freeimage-CVE-2016-5684.patch
 delete mode 100644 gnu/packages/patches/freeimage-fix-build-with-gcc-5.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 23fc317d50..919e836b8c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -828,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				\
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index d1a4a58575..d03f4548c5 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -957,7 +957,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
@@ -967,7 +967,7 @@ supplies a generic doubly-linked list and some string functions.")
                   ".zip"))
             (sha256
              (base32
-              "12bz57asdcfsz3zr9i9nska0fb6h3z2aizy412qjqkixkginbz7v"))
+              "1z9qwi9mlq69d5jipr3v2jika2g0kszqdzilggm99nls5xl7j4zl"))
             (modules '((guix build utils)))
             (snippet
              '(begin
@@ -975,12 +975,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
@@ -1011,7 +1007,7 @@ 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.
@@ -1022,7 +1018,7 @@ supplies a generic doubly-linked list and some string functions.")
       ("unzip" ,unzip)))
    (inputs
     `(("libjpeg" ,libjpeg)
-      ;("libjxr" ,libjxr)
+      ("libjxr" ,libjxr)
       ("libpng" ,libpng)
       ("libraw" ,libraw)
       ("libtiff" ,libtiff)
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 34d538e925..0000000000
--- 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 2fc02d7b0d..0000000000
--- 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 2c9f2c3357..0000000000
--- 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 ca907d3276..4d9b8e25c9 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;

From 49dc1669a8bb2ba923cb064173025858931cc9c9 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 25 Sep 2019 17:14:21 +0200
Subject: [PATCH 069/133] gnu: you-get: Update to 0.4.1355.

* gnu/packages/video.scm (you-get): Update to 0.4.1355.
---
 gnu/packages/video.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index d5a51a00b0..5180f275ad 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1631,7 +1631,7 @@ other site that youtube-dl supports.")
 (define-public you-get
   (package
     (name "you-get")
-    (version "0.4.1328")
+    (version "0.4.1355")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1640,7 +1640,7 @@ other site that youtube-dl supports.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1r9qffwvxmp74byva12h2jsn3n33vyim052sx9lykv5dygibbp65"))))
+                "0xq7z04hvw3b3npiahlpzhbxsjvam9n9dynplyrkn84dx6k9ajbj"))))
     (build-system python-build-system)
     (inputs
      `(("ffmpeg" ,ffmpeg)))             ; for multi-part and >=1080p videos

From aa1c7b4914fc7aeb31b2953388d3041dbf0b0ac6 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 25 Sep 2019 01:13:08 +0200
Subject: [PATCH 070/133] gnu: spirv-tools: Update to 2019.2.

* gnu/packages/vulkan.scm (spirv-tools): Update to 2019.2.
---
 gnu/packages/vulkan.scm | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index 511831b9bd..f12062ac2f 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -82,7 +82,7 @@ and for the GLSL.std.450 extended instruction set.
 (define-public spirv-tools
   (package
     (name "spirv-tools")
-    (version "2019.1")
+    (version "2019.2")
     (source
      (origin
       (method git-fetch)
@@ -90,8 +90,7 @@ and for the GLSL.std.450 extended instruction set.
             (url "https://github.com/KhronosGroup/SPIRV-Tools")
             (commit (string-append "v" version))))
       (sha256
-       (base32
-        "0vddjzhkrhrm3l3i57nxmq2smv3r1s0ka5ff2kziaahr4hqb479r"))
+       (base32 "0zwz6qg8g8165h7cw52agryjrdb29gbmsbziw3pwiddfkyma8vvg"))
       (file-name (string-append name "-" version "-checkout"))))
     (build-system cmake-build-system)
     (arguments

From d7a7d255c4566652a79210ca1d6b9b1d8fe9f9b7 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 25 Sep 2019 01:21:38 +0200
Subject: [PATCH 071/133] gnu: spirv-tools: Use GIT-FILE-NAME.

* gnu/packages/vulkan.scm (spirv-tools)[source]: Use GIT-FILE-NAME.
---
 gnu/packages/vulkan.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index f12062ac2f..9260a2cf9f 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -91,7 +91,7 @@ and for the GLSL.std.450 extended instruction set.
             (commit (string-append "v" version))))
       (sha256
        (base32 "0zwz6qg8g8165h7cw52agryjrdb29gbmsbziw3pwiddfkyma8vvg"))
-      (file-name (string-append name "-" version "-checkout"))))
+      (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ; FIXME: Tests fail.

From e0aa4e949e77fd945a5a2fdd4be257c8782891d8 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 25 Sep 2019 04:06:47 +0200
Subject: [PATCH 072/133] gnu: mlt: Update to 6.16.0.

* gnu/packages/video.scm (mlt): Update to 6.16.0.
---
 gnu/packages/video.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 5180f275ad..fd1d98dc01 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -2203,7 +2203,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
 (define-public mlt
   (package
     (name "mlt")
-    (version "6.12.0")
+    (version "6.16.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2212,7 +2212,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0pzm3mjbbdl2rkbswgyfkx552xlxh2qrwzsi2a4dicfr92rfgq6w"))))
+                "1362fv63p34kza9v4b71b6wakgvsa2vdx9y0g28x3yh4cp4k97kx"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests

From dc29bea3404965911acab83d7f20968bdec788bb Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 25 Sep 2019 16:26:20 +0200
Subject: [PATCH 073/133] gnu: rofi: Update to 1.5.4.

* gnu/packages/xdisorg.scm (rofi): Update to 1.5.4.
---
 gnu/packages/xdisorg.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 066804ed9e..1700e7b5c2 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -1178,7 +1178,7 @@ connectivity of the X server running on a particular @code{DISPLAY}.")
 (define-public rofi
   (package
     (name "rofi")
-    (version "1.5.3")
+    (version "1.5.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/DaveDavenport/rofi/"
@@ -1186,7 +1186,7 @@ connectivity of the X server running on a particular @code{DISPLAY}.")
                                   version "/rofi-" version ".tar.xz"))
               (sha256
                (base32
-                "0y78ya2va2lg3ww17n11y9awn8lhcp1px2d8gxaimxfqlxczs8la"))))
+                "1nslmyqyzhfr4hxd4llqkkkb8ap8apkdna32rllvar7r576059ci"))))
     (build-system gnu-build-system)
     (inputs
      `(("pango" ,pango)

From 005e539edf009c5431f8d11dc34ad23b8424bda2 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 25 Sep 2019 16:41:37 +0200
Subject: [PATCH 074/133] gnu: iproute2: Update to 5.3.0.

* gnu/packages/linux.scm (iproute): Update to 5.3.0.
---
 gnu/packages/linux.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index f8ad96e89d..b2b7a480fc 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1706,7 +1706,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
@@ -1714,7 +1714,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.

From 3b6362969cb92e6b29343462ecc584a223376d25 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 25 Sep 2019 16:53:05 +0200
Subject: [PATCH 075/133] gnu: iproute2: Add libmnl input.

* gnu/packages/linux.scm (iproute)[inputs]: Add libmnl.
---
 gnu/packages/linux.scm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index b2b7a480fc..027c920357 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1739,7 +1739,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)

From b7f5fa8285d5572a1e00f6b5933486dbb17bb41a Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 25 Sep 2019 16:50:04 +0200
Subject: [PATCH 076/133] gnu: celluloid: Update to 0.17 from gnome-mpv.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/video.scm (celluloid): ‘New’ public variable.
(gnome-mpv): Redefine as DEPRECATED-PACKAGE.
---
 gnu/packages/video.scm | 53 +++++++++++++++++++++---------------------
 1 file changed, 27 insertions(+), 26 deletions(-)

diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index fd1d98dc01..ce848d1847 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -204,6 +204,32 @@ In fact, there is no graphical output possible.  AA-lib replaces those
 old-fashioned output methods with powerful ascii-art renderer.")
     (license license:lgpl2.0+)))
 
+(define-public celluloid
+  (package
+    (name "celluloid")
+    (version "0.17")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/celluloid-player/celluloid/releases"
+                           "/download/v" version "/celluloid-" version ".tar.xz"))
+       (sha256
+        (base32 "0a3bhvs38gxjplygb0q9cx5djl5y0bmnxgaq0sd65j610a60f5h0"))))
+    (build-system glib-or-gtk-build-system)
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("gtk+" ,gtk+)
+       ("libepoxy" ,libepoxy)
+       ("mpv" ,mpv)))
+    (home-page "https://github.com/celluloid-player/celluloid")
+    (synopsis "GTK+ frontend for the mpv media player")
+    (description "Celluloid is a simple GTK+ frontend for the mpv media player.
+It interacts with mpv via the client API exported by libmpv, allowing access to
+mpv's powerful playback capabilities.")
+    (license license:gpl3+)))
+
 (define-public liba52
   (package
     (name "liba52")
@@ -1404,32 +1430,7 @@ projects while introducing many more.")
     (license license:gpl2+)))
 
 (define-public gnome-mpv
-  (package
-    (name "gnome-mpv")
-    (version "0.16")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/gnome-mpv/gnome-mpv/releases"
-                           "/download/v" version "/gnome-mpv-" version
-                           ".tar.xz"))
-       (sha256
-        (base32
-         "0jzdzvhcqp5jp1inwk2466zf7r8iimk3x69066gl8mzaay98mk92"))))
-    (native-inputs
-     `(("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)))
-    (inputs
-     `(("gtk+" ,gtk+)
-       ("libepoxy" ,libepoxy)
-       ("mpv" ,mpv)))
-    (build-system glib-or-gtk-build-system)
-    (home-page "https://github.com/gnome-mpv/gnome-mpv")
-    (synopsis "GTK+ frontend for the mpv media player")
-    (description "GNOME MPV is a simple GTK+ frontend for the mpv media player.
-GNOME MPV interacts with mpv via the client API exported by libmpv, allowing
-access to mpv's powerful playback capabilities.")
-    (license license:gpl3+)))
+  (deprecated-package "gnome-mpv" celluloid))
 
 (define-public libvpx
   (package

From 8aba8c7b74961a199c4fc99c3181151c074225c4 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 25 Sep 2019 16:55:26 +0200
Subject: [PATCH 077/133] gnu: youtube-dl: Update to 2019.09.12.1.

* gnu/packages/video.scm (youtube-dl): Update to 2019.09.12.1.
---
 gnu/packages/video.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index ce848d1847..94254d0c78 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1493,7 +1493,7 @@ projects while introducing many more.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2019.09.12")
+    (version "2019.09.12.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/ytdl-org/youtube-dl/"
@@ -1501,7 +1501,7 @@ projects while introducing many more.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0wmc0rl4l08hnz3agh69ld1pcmjs7czg0d2k7mnnlxhwlwi38w56"))))
+                "0h7v81kcxcpy82wq9b1aiz2zg6hg7rnlcfmzd13j6k8yhr7ah9yf"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion

From b106dd84dbf758efa8fb0212bdd8dc5999ccd8d9 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 25 Sep 2019 17:39:24 +0200
Subject: [PATCH 078/133] gnu: xf86-input-wacom: Don't use NAME in source URI.

* gnu/packages/xdisorg.scm (xf86-input-wacom)[source]: Hard-code NAME.
---
 gnu/packages/xdisorg.scm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 1700e7b5c2..0b40ca6909 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -999,7 +999,8 @@ Wacom tablet applet.")
        (method url-fetch)
        (uri (string-append
              "https://github.com/linuxwacom/xf86-input-wacom/releases/download/"
-             name "-" version "/" name "-" version ".tar.bz2"))
+             "xf86-input-wacom-" version "/"
+             "xf86-input-wacom-" version ".tar.bz2"))
        (sha256
         (base32
          "029y8varbricba2dzhzhy0ndd7lbfif411ca8c3wxzni9qmbj1ij"))))

From 0ed0e3bfb763653fbc8901e26905022fd287746c Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Thu, 26 Sep 2019 04:43:00 +0200
Subject: [PATCH 079/133] gnu: fmit: Update to 1.2.13.

* gnu/packages/music.scm (fmit): Update to 1.2.13.
---
 gnu/packages/music.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 4d1e11f260..2b54842c95 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -4534,7 +4534,7 @@ controller.")
 (define-public fmit
   (package
     (name "fmit")
-    (version "1.2.6")
+    (version "1.2.13")
     (source (origin
 	      (method git-fetch)
 	      (uri (git-reference
@@ -4543,7 +4543,7 @@ controller.")
               (file-name (git-file-name name version))
 	      (sha256
                (base32
-                "03nzkig5mw2rqwhwmg0qvc5cnk9bwh2wp13jh0mdrr935w0587mz"))))
+                "1qyskam053pvlap1av80rgp12pzhr92rs88vqs6s0ia3ypnixcc6"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases

From 65d20127ef15316fca52115f6ae798ffc53cc863 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Thu, 26 Sep 2019 04:52:25 +0200
Subject: [PATCH 080/133] gnu: emacs-xelb: Update to 0.18.

* gnu/packages/emacs-xyz.scm (emacs-xelb): Update to 0.18.
---
 gnu/packages/emacs-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 84cfc75ebc..c641e9d716 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -8655,14 +8655,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:

From d94ec407585dc4d34ec80a28567f98205c4f24c2 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Thu, 26 Sep 2019 05:01:12 +0200
Subject: [PATCH 081/133] gnu: beets: Use HTTPS home page.

* gnu/packages/music.scm (beets)[home-page]: Use HTTPS.
---
 gnu/packages/music.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 2b54842c95..b28b375067 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -2858,7 +2858,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

From 3f3d712cc525d65c184cea4c2048a62a4ec87c73 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Thu, 26 Sep 2019 05:01:26 +0200
Subject: [PATCH 082/133] gnu: beets: Update to 1.4.9.

* gnu/packages/music.scm (beets): Update to 1.4.9.
[source]: Remove patch.
[arguments]: Remove more Python 3.7 compatibility fixes.
* gnu/packages/patches/beets-python-3.7-fix.patch: Delete file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
 gnu/local.mk                                  |  1 -
 gnu/packages/music.scm                        | 11 +---
 .../patches/beets-python-3.7-fix.patch        | 57 -------------------
 3 files changed, 2 insertions(+), 67 deletions(-)
 delete mode 100644 gnu/packages/patches/beets-python-3.7-fix.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 919e836b8c..49dc4e7b97 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -711,7 +711,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		\
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index b28b375067..508f2ea3bf 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -2813,14 +2813,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
@@ -2829,12 +2828,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"))))))
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 43707cd9d0..0000000000
--- 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`.

From 3eb278aa9d8abb50666ae1241b3185f422aa15f8 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Thu, 26 Sep 2019 05:15:01 +0200
Subject: [PATCH 083/133] gnu: f3: Update to 7.2.

* gnu/packages/disk.scm (f3): Update to 7.2.
---
 gnu/packages/disk.scm | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index cf53142533..4de0745190 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

From 5dfdab05baf67eaaab9dc980a560de194b808f5e Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Thu, 26 Sep 2019 05:23:29 +0200
Subject: [PATCH 084/133] gnu: encodings: Update to 1.0.5.

* gnu/packages/xorg.scm (encodings): Update to 1.0.5.
---
 gnu/packages/xorg.scm | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 48c1e3cebe..af8dfda922 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -423,7 +423,7 @@ Resources file.")
 (define-public encodings
   (package
     (name "encodings")
-    (version "1.0.4")
+    (version "1.0.5")
     (source
       (origin
         (method url-fetch)
@@ -432,8 +432,7 @@ Resources file.")
                version
                ".tar.bz2"))
         (sha256
-          (base32
-            "0ffmaw80vmfwdgvdkp6495xgsqszb6s0iira5j0j6pd4i0lk3mnf"))))
+          (base32 "0caafx0yqqnqyvbalxhh3mb0r9v36xmcy5zjhygb2i508dhy35mx"))))
     (build-system gnu-build-system)
     (inputs
       `(("mkfontscale" ,mkfontscale)))

From 0a4f9445fde97b7aedd83826b5ce51c6fc30c240 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 25 Sep 2019 18:52:29 +0200
Subject: [PATCH 085/133] gnu: xorgproto: Don't use NAME in source URI.

* gnu/packages/xorg.scm (xorgproto)[source]: Hard-code NAME.
---
 gnu/packages/xorg.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index af8dfda922..b1d93ac6c4 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -215,7 +215,7 @@ which can be read by any architecture.")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://xorg/individual/proto/"
-                                  name "-" version ".tar.bz2"))
+                                  "xorgproto-" version ".tar.bz2"))
               (sha256
                (base32
                 "180mqkp70i44rkmj430pmn9idssvffrgv4y5h19fm698a7h8bs7y"))))

From 4a51d75929d9490ca8685dcd240bf567ce88544d Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 25 Sep 2019 18:53:44 +0200
Subject: [PATCH 086/133] gnu: libxcb: Don't use NAME in source URI.

* gnu/packages/xorg.scm (libxcb)[source]: Hard-code NAME.
---
 gnu/packages/xorg.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index b1d93ac6c4..7f3f2dd5ec 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -5021,7 +5021,7 @@ protocol.")
       (origin
         (method url-fetch)
         (uri (string-append "https://xcb.freedesktop.org/dist/"
-                            name "-" version ".tar.bz2"))
+                            "libxcb-" version ".tar.bz2"))
         (sha256
           (base32
            "1ahxhmdqp4bhb90zmc275rmf5wixqra4bnw9pqnzyl1w3598g30q"))))

From f51905a472f1ba87d61b52f532a18b23a79ffe57 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 25 Sep 2019 23:40:00 +0200
Subject: [PATCH 087/133] gnu: vimb: Update to 3.5.0.

* gnu/packages/web-browsers.scm (vimb): Update to 3.5.0.
---
 gnu/packages/web-browsers.scm | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index 6d4caa0f9f..dd19b5fc6b 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -331,7 +331,7 @@ GUI.  It is based on PyQt5 and QtWebKit.")
 (define-public vimb
   (package
     (name "vimb")
-    (version "3.3.0")
+    (version "3.5.0")
     (source
      (origin
        (method git-fetch)
@@ -339,12 +339,11 @@ GUI.  It is based on PyQt5 and QtWebKit.")
              (url "https://github.com/fanglingsu/vimb/")
              (commit version)))
        (sha256
-        (base32
-         "1qg18z2gnsli9qgrqfhqfrsi6g9mcgr90w8yab28nxrq4aha6brf"))
+        (base32 "13q7mk1hhjri0s30a98r8ncy0skf6m6lrnbqaf0jimf6sbwgiirf"))
        (file-name (git-file-name name version))))
     (build-system glib-or-gtk-build-system)
     (arguments
-     '(#:tests? #f ; no tests
+     '(#:tests? #f                      ; no tests
        #:make-flags (list "CC=gcc"
                           "DESTDIR="
                           (string-append "PREFIX=" %output))

From 9610a422b0d1640fb3dcc48740c72e0748cefb26 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 25 Sep 2019 23:44:22 +0200
Subject: [PATCH 088/133] gnu: bspwm: Update to 0.9.9.

* gnu/packages/wm.scm (bspwm): Update to 0.9.9.
---
 gnu/packages/wm.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 72be0bdbe1..e47979d026 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -97,7 +97,7 @@
 (define-public bspwm
   (package
     (name "bspwm")
-    (version "0.9.5")
+    (version "0.9.9")
     (source
      (origin
        (method git-fetch)
@@ -106,7 +106,7 @@
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "09h3g1rxxjyw861mk32lj774nmwkx8cwxq4wfgmf4dpbizymvhhr"))))
+        (base32 "1i7crmljk1vra1r6alxvj6lqqailjjcv0llyg7a0gm23rbv4a42g"))))
     (build-system gnu-build-system)
     (inputs
      `(("libxcb" ,libxcb)

From 3c39dc680f9dbde2b25cfec180757f57ea391934 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Thu, 26 Sep 2019 00:51:39 +0200
Subject: [PATCH 089/133] gnu: skopeo: Update to 0.1.39.

* gnu/packages/virtualization.scm (skopeo): Update to 0.1.39.
---
 gnu/packages/virtualization.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index f46c31df1f..d60044f65b 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -939,7 +939,7 @@ Open Container Initiative (OCI) image layout and its tagged images.")
 (define-public skopeo
   (package
     (name "skopeo")
-    (version "0.1.28")
+    (version "0.1.39")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -948,7 +948,7 @@ Open Container Initiative (OCI) image layout and its tagged images.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "068nwrr3nr27alravcq1sxyhdd5jjr24213vdgn1dqva3885gbi0"))))
+                "1jkxmvh079pd9j4aa39ilmclwafnjs0yqdiigwh8cj7yf97x4vsi"))))
     (build-system go-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))

From 2359e235a4b6fae2e318a3c17ece25bd1f7f5911 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Thu, 26 Sep 2019 05:32:03 +0200
Subject: [PATCH 090/133] gnu: dehydrated: Update to 0.6.5.

* gnu/packages/tls.scm (dehydrated): Update to 0.6.5.
---
 gnu/packages/tls.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index c06052239f..74d16f7586 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -883,7 +883,7 @@ coding footprint.")
 (define-public dehydrated
   (package
     (name "dehydrated")
-    (version "0.6.2")
+    (version "0.6.5")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -891,7 +891,7 @@ coding footprint.")
                     "v" version "/dehydrated-" version ".tar.gz"))
               (sha256
                (base32
-                "03p80yj6bnzjc6dkp5hb9wpplmlrla8n5src71cnzw4rj53q8cqn"))))
+                "0dgskgbdd95p13jx6s13p77y15wngb5cm6p4305cf2s54w0bvahh"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))

From f70e567eea1e6adac209053fdc6dddbeec06b148 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Thu, 26 Sep 2019 05:34:13 +0200
Subject: [PATCH 091/133] gnu: emacs-circe: Update to 2.11.

* gnu/packages/emacs-xyz.scm (emacs-circe): Update to 2.11.
---
 gnu/packages/emacs-xyz.scm | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index c641e9d716..5606482c96 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -9998,7 +9998,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)
@@ -10007,8 +10007,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

From 91af1031e53e85e4200046ae47c38067c3dd7a85 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Thu, 26 Sep 2019 06:24:18 +0200
Subject: [PATCH 092/133] gnu: dtc: Update to 1.5.1.

* gnu/packages/bootloaders.scm (dtc): Update to 1.5.1.
[arguments]: Add -Wl,-rpath to LDFLAGS #:make-flags.
---
 gnu/packages/bootloaders.scm | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index b235e1bc78..520728b52c 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")

From 5d1d7ae413278594707f0735ca447872376883ec Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Wed, 25 Sep 2019 20:55:06 +0200
Subject: [PATCH 093/133] gnu: emacs-evil-nerd-commenter: Enable tests.

* gnu/packages/emacs-xyz.scm (emacs-evil-nerd-commenter): Enable tests.
---
 gnu/packages/emacs-xyz.scm | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 5606482c96..f966862821 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -7112,6 +7112,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

From fbbdce47e28a8723f08c1f224d06b0e55bbce75d Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Wed, 25 Sep 2019 20:58:53 +0200
Subject: [PATCH 094/133] gnu: emacs-yaml-mode: Update to 0.0.14.

* gnu/packages/emacs-xyz.scm (emacs-yaml-mode): Update to 0.0.14.
---
 gnu/packages/emacs-xyz.scm | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index f966862821..c0a16ee87f 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -6360,15 +6360,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")

From 595c7c339ce6c77534089d2f020b8113d9df2fd7 Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Wed, 25 Sep 2019 21:08:54 +0200
Subject: [PATCH 095/133] gnu: emacs-web-mode: Don't use unstable tarball.

* gnu/packages/emacs-xyz.scm (emacs-web-mode)[source]: Use GIT-FETCH and GIT-FILE-NAME.
---
 gnu/packages/emacs-xyz.scm | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index c0a16ee87f..1537cf1ce2 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -6411,13 +6411,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

From eee9277ba510dda6b63075831e88515fb1306cf6 Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Wed, 25 Sep 2019 21:16:05 +0200
Subject: [PATCH 096/133] gnu: emacs-make-it-so: Update to 0.1.0-2.b73dfb6.

* gnu/packages/emacs-xyz.scm (emacs-make-it-so): Update to 0.1.0-2.b73dfb6.
---
 gnu/packages/emacs-xyz.scm | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 1537cf1ce2..7ae3702593 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -9853,12 +9853,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)
@@ -9867,7 +9866,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)))

From e745dd119a3ba2d5b9475f79ef515758e0bc684a Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Wed, 25 Sep 2019 21:16:33 +0200
Subject: [PATCH 097/133] gnu: emacs-websocket: Enable some tests.

* gnu/packages/emacs-xyz.scm (emacs-websocket): Enable some tests.
---
 gnu/packages/emacs-xyz.scm | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 7ae3702593..f4e0df0202 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -9965,6 +9965,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

From 82431a10cc485981b55218a26fdbd7d9b8eb0da9 Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Wed, 25 Sep 2019 21:21:12 +0200
Subject: [PATCH 098/133] gnu: emacs-nov-el: Update to 0.2.9.

* gnu/packages/emacs-xyz.scm (emacs-nov-el): Update to 0.2.9.
---
 gnu/packages/emacs-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index f4e0df0202..2b7b95d89a 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -10594,7 +10594,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
@@ -10603,7 +10603,7 @@ the format.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "188h5gzn1zf443g0b7q5bpmvvpr6ds5h8aci8vxc92py56rhyrvc"))))
+                "0v01l1p35mcigixs6j4c5bpc7n7bd51kxa0p3l1xl0gr92774yq3"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases

From 0155e23b34245699b5d2fb920dbd6d65720e621b Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Thu, 26 Sep 2019 07:56:51 +0200
Subject: [PATCH 099/133] gnu: emacs-mu4e-conversation: Update to
 0.0.1-5.98110bb.

* gnu/packages/emacs-xyz.scm (emacs-mu4e-conversation): Update to 0.0.1-5.98110bb.
---
 gnu/packages/emacs-xyz.scm | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 2b7b95d89a..22d81cd6af 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -14790,21 +14790,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)))

From d8b352bea7657f039b669846eceb84aedd0f67ed Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Thu, 26 Sep 2019 08:02:29 +0200
Subject: [PATCH 100/133] gnu: emacs-youtube-dl: Update to 1.0-2.af877b5.

* gnu/packages/emacs-xyz.scm (emacs-youtube-dl): Update to 1.0-2.af877b5.
---
 gnu/packages/emacs-xyz.scm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 22d81cd6af..d3991427f2 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -15379,10 +15379,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)
@@ -15392,7 +15393,7 @@ News homepage.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0mh4s089a4x8s380agzb2306kdp1hl204px1n5rrrrdcls7imnh6"))))
+           "0zkl9jkjbx0lmp9ylv4rqg1zwqibk053s4rp7s1h0i18nzk7vn8j"))))
       (build-system emacs-build-system)
       (inputs
        `(("youtube-dl" ,youtube-dl)))

From 06bdb36837c33d7cd0ba34fd9652067df62cb027 Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Thu, 26 Sep 2019 08:25:52 +0200
Subject: [PATCH 101/133] gnu: Add emacs-dash-docs.

* gnu/packages/emacs-xyz.scm (emacs-dash-docs): New variable.
---
 gnu/packages/emacs-xyz.scm | 47 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index d3991427f2..f43538ecb5 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -17516,6 +17516,53 @@ and searching through @code{Ctags} files.")
 copied into @code{org-mode} buffers.")
       (license license:gpl3+))))
 
+(define-public emacs-dash-docs
+  (let ((commit "111fd9b97001f1ad887b45e5308a14ddd68ce70a")
+        (revision "1"))
+    (package
+      (name "emacs-dash-docs")
+      (version (git-version "1.4.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/dash-docs-el/dash-docs.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0sckb7z0ylflva212bns7iq9mfnffgjghi0qspsbfwra35zb9xng"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("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 "192b862185df661439a06de644791171e899348a")
         (version "1.3.0")

From b8563caf115e528fa07dffd64188ee6a81415a24 Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Thu, 26 Sep 2019 08:26:23 +0200
Subject: [PATCH 102/133] gnu: emacs-counsel-dash: Update to 0.1.3-2.24d370b.

* gnu/packages/emacs-xyz.scm (emacs-counsel-dash): Update to 0.1.3-2.24d370b.
---
 gnu/packages/emacs-xyz.scm | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index f43538ecb5..826d53235f 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -17590,12 +17590,11 @@ 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)
@@ -17605,11 +17604,10 @@ Dash docsets.")
          (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")
       (synopsis "Offline documentation browser for APIs using Dash docsets")

From 205a0fe0948257c75619db506f033827d591c47e Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Thu, 26 Sep 2019 08:26:55 +0200
Subject: [PATCH 103/133] gnu: emacs-helm-dash: Update to 1.3.0-2.7f853bd.

* gnu/packages/emacs-xyz.scm (emacs-helm-dash): Update to 1.3.0-2.7f853bd.
---
 gnu/packages/emacs-xyz.scm | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 826d53235f..bea8463cd2 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -17564,25 +17564,25 @@ copied into @code{org-mode} buffers.")
       (license license:gpl3+))))
 
 (define-public emacs-helm-dash
-  (let ((commit "192b862185df661439a06de644791171e899348a")
-        (version "1.3.0")
-        (revision "18"))
+  (let ((commit "7f853bd34da666f0e9a883011c80f451b06f6c59")
+        (revision "2"))
     (package
       (name "emacs-helm-dash")
-      (version (git-version version revision commit))
+      (version (git-version "1.3.0" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/areina/helm-dash")
+               (url "https://github.com/areina/helm-dash.git")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "06am5vnr4hsxkvh2b8q8kb80y5x1h3qyv7gwggswwhfa7w2vba3w"))))
+           "0r192vzry1212ihabg9pgw9xar8zdgnbgy0vsgvfm8s5wj6ny7jp"))))
       (build-system emacs-build-system)
       (propagated-inputs
-       `(("emacs-helm" ,emacs-helm)))
+       `(("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

From 4a506da83a3af829a42c9433bd0087a96d6f1c7a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Wed, 25 Sep 2019 17:49:41 +0200
Subject: [PATCH 104/133] doc: Fix syntax of Varnish example.

* doc/guix.texi (Web Services): Escape nested string in '%gnu-mirror'
variable definition.  Adjust indentation.
---
 doc/guix.texi | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 267c2e9e6c..762e8da2bd 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -19819,13 +19819,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"))

From 473bd8100bd4039116912e0f10420240fd19f5c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Wed, 25 Sep 2019 17:52:17 +0200
Subject: [PATCH 105/133] doc: Add missing parens in inetd example.

* doc/guix.texi (Networking Services): Add missing parens in inetd
service example.
---
 doc/guix.texi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 762e8da2bd..64a0742255 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -13349,7 +13349,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}.

From 31e6e6a89f354b05132a3c209161f204a00557e1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Wed, 25 Sep 2019 18:07:55 +0200
Subject: [PATCH 106/133] doc: Add missing paren in CPE example.

* doc/guix.texi (Invoking guix lint): Add missing paren in 'cpe-name'
example.
---
 doc/guix.texi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 64a0742255..2f4e0ad7f9 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -9470,7 +9470,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 .

From 71339070a9c38dc5502697edacb11adbc30303eb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Wed, 25 Sep 2019 18:08:33 +0200
Subject: [PATCH 107/133] doc: Do not comment out closing parens in Android
 examples.

* doc/guix.texi (Base Services): Arrange so that closin parens are not
commented out.
---
 doc/guix.texi | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 2f4e0ad7f9..4ffffcdc81 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -12389,7 +12389,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
@@ -12423,7 +12423,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{}
@@ -12431,8 +12431,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))

From 3972dc5d43ea824ee4ab78592e759f62ce90bf6a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Tue, 24 Sep 2019 17:50:48 +0200
Subject: [PATCH 108/133] guix package: Add '--list-profiles'.

* guix/scripts/package.scm (show-help, %options): Add '--list-profiles'.
(process-query): Honor it.
* tests/guix-package.sh: Add test.
---
 doc/guix.texi            | 13 +++++++++++++
 guix/scripts/package.scm | 21 +++++++++++++++++++++
 tests/guix-package.sh    |  6 +++++-
 3 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 4ffffcdc81..14c4514b31 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -2933,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
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index f03741aa9e..1a58d43e5c 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -39,6 +39,7 @@
   #:use-module (guix scripts)
   #:use-module (guix scripts build)
   #:autoload   (guix describe) (package-provenance)
+  #:autoload   (guix store roots) (gc-roots)
   #:use-module ((guix build utils)
                 #:select (directory-exists? mkdir-p))
   #:use-module (ice-9 format)
@@ -359,6 +360,8 @@ Install, remove, or upgrade packages in a single transaction.\n"))
                          switch to a generation matching PATTERN"))
   (display (G_ "
   -p, --profile=PROFILE  use PROFILE instead of the user's default profile"))
+  (display (G_ "
+      --list-profiles    list the user's profiles"))
   (newline)
   (display (G_ "
       --allow-collisions do not treat collisions in the profile as an error"))
@@ -458,6 +461,11 @@ command-line option~%")
                    (values (cons `(query list-generations ,arg)
                                  result)
                            #f)))
+         (option '("list-profiles") #f #f
+                 (lambda (opt name arg result arg-handler)
+                   (values (cons `(query list-profiles #t)
+                                 result)
+                           #f)))
          (option '(#\d "delete-generations") #f #t
                  (lambda (opt name arg result arg-handler)
                    (values (alist-cons 'delete-generations arg
@@ -750,6 +758,19 @@ processed, #f otherwise."
                              (string "$module_dir/foo.scm"< /tmp/out
 test "`guix package -L "$module_dir" -s dummy-output | grep ^name:`" = "name: dummy-package"
 rm -rf "$module_dir"
+
+# Make sure we can see user profiles.
+guix package --list-profiles | grep "$profile"
+guix package --list-profiles | grep '\.guix-profile'

From 2ea4587d8373bce140f24bf2b9219cd73c378f8b Mon Sep 17 00:00:00 2001
From: Danny Milosavljevic 
Date: Thu, 26 Sep 2019 15:58:48 +0200
Subject: [PATCH 109/133] gnu: python-libmpsse: Update to 1.4.

* gnu/packages/embedded.scm (python2-libmpsse): Rename to...
(python-libmpsse): ...this.
[version]: Update to 1.4.
[source]: Change repository and version.
[inputs]: Change Python version.
[arguments]: Add #parallel-build?.
(python2-libmpsse): New variable.
---
 gnu/packages/embedded.scm | 81 +++++++++++++++++++++++++--------------
 1 file changed, 52 insertions(+), 29 deletions(-)

diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index a65998c369..106675b87b 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -874,30 +874,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)"))
@@ -905,28 +906,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))))))))
@@ -937,6 +930,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")

From 8581b40d097bf7c0b3016435e0985cf56a003afb Mon Sep 17 00:00:00 2001
From: Hartmut Goebel 
Date: Sun, 8 Sep 2019 12:07:09 +0200
Subject: [PATCH 110/133] gnu: Add python-distro.

* gnu/packages/python-xyz.scm (python-distro): New variable.
---
 gnu/packages/python-xyz.scm | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 69c8e63ecf..1bd218b797 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -19,7 +19,7 @@
 ;;; Copyright © 2015, 2016 Chris Marusich 
 ;;; Copyright © 2016 Danny Milosavljevic 
 ;;; Copyright © 2016 Lukas Gradl 
-;;; Copyright © 2016, 2018 Hartmut Goebel 
+;;; Copyright © 2016, 2018-2019 Hartmut Goebel 
 ;;; Copyright © 2016 Daniel Pimentel 
 ;;; Copyright © 2016 Sou Bunnbu 
 ;;; Copyright © 2016, 2017 Troy Sankey 
@@ -16398,3 +16398,30 @@ because lxml.etree already has it's own implementation of XPath 1.0.")
     (synopsis "Python library to parse BibTeX files")
     (description "BibtexParser is a Python library to parse BibTeX files.")
     (license (list license:bsd-3 license:lgpl3))))
+
+(define-public python-distro
+  (package
+    (name "python-distro")
+    (version "1.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "distro" version))
+       (sha256
+        (base32
+         "0mrg75w4ap7mdzyga75yaid9n8bgb345ih5mwjp3plj6v1jxwb9n"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/nir0s/distro")
+    (synopsis
+     "OS platform information API")
+    (description
+     "@code{distro} provides information about the OS distribution it runs on,
+such as a reliable machine-readable ID, or version information.
+
+It is the recommended replacement for Python's original
+`platform.linux_distribution` function (which will be removed in Python 3.8).
+@code{distro} also provides a command-line interface to output the platform
+information in various formats.")
+    (license license:asl2.0)))

From 6eb1d20b682d1256bb4561517daa616b15fec22b Mon Sep 17 00:00:00 2001
From: Hartmut Goebel 
Date: Thu, 1 Aug 2019 15:27:28 +0200
Subject: [PATCH 111/133] gnu: Add debops.

* gnu/packages/admin.scm (debops): New variable.
* gnu/packages/patches/debops-constants-for-external-program-names.patch,
  gnu/packages/patches/debops-debops-defaults-fall-back-to-less.patch:
  New files.
* gnu/local.mk: Add them.
---
 gnu/local.mk                                  |   2 +
 gnu/packages/admin.scm                        |  98 +++++++
 ...constants-for-external-program-names.patch | 276 ++++++++++++++++++
 ...ps-debops-defaults-fall-back-to-less.patch |  45 +++
 4 files changed, 421 insertions(+)
 create mode 100644 gnu/packages/patches/debops-constants-for-external-program-names.patch
 create mode 100644 gnu/packages/patches/debops-debops-defaults-fall-back-to-less.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 49dc4e7b97..a6fe439904 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -765,6 +765,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/dbus-helper-search-path.patch		\
   %D%/packages/patches/dbus-CVE-2019-12749.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		\
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 327abe455a..6d5e4b9fcc 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/patches/debops-constants-for-external-program-names.patch b/gnu/packages/patches/debops-constants-for-external-program-names.patch
new file mode 100644
index 0000000000..b3b34ed323
--- /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 0000000000..bbb6b7c08e
--- /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
+

From dec845606d2d184da31065fa26cd951b84b3ce2d Mon Sep 17 00:00:00 2001
From: Hartmut Goebel 
Date: Thu, 8 Aug 2019 16:43:15 +0200
Subject: [PATCH 112/133] guix download: Ensure destination file-name is valid
 in the store.

Avoid invalid store-file-name by explicitly passing the destination
name, replacing any character not allowed in the store-file-name by an
underscore.

Fixes 

* guix/scripts/download.scm (safe-naensure-valid-store-file-nameme):
  New function. (download-to-store*): Use it to generate a "safe"
  basename of URL.
---
 guix/scripts/download.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/guix/scripts/download.scm b/guix/scripts/download.scm
index d8fe71ce12..22cd75ea0b 100644
--- a/guix/scripts/download.scm
+++ b/guix/scripts/download.scm
@@ -33,6 +33,7 @@
   #:use-module (web uri)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-14)
   #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-37)
   #:use-module (rnrs bytevectors)
@@ -54,9 +55,23 @@
        (url-fetch url file #:mirrors %mirrors)))
     file))
 
+(define (ensure-valid-store-file-name name)
+  "Replace any character not allowed in a stror name by an underscore."
+
+  (define valid
+    ;; according to nix/libstore/store-api.cc
+    (string->char-set (string-append "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+                                     "abcdefghijklmnopqrstuvwxyz"
+                                     "0123456789" "+-._?=")))
+  (string-map (lambda (c)
+                (if (char-set-contains? valid c) c #\_))
+              name))
+
+
 (define* (download-to-store* url #:key (verify-certificate? #t))
   (with-store store
     (download-to-store store url
+                       (ensure-valid-store-file-name (basename url))
                        #:verify-certificate? verify-certificate?)))
 
 (define %default-options

From 0d3a4fc867100651af8b27cdf66b1bca1c8ba663 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Thu, 26 Sep 2019 17:06:33 +0200
Subject: [PATCH 113/133] shepherd: 'make-forkexec-constructor/container' keeps
 the log file.

* gnu/build/shepherd.scm (make-forkexec-constructor/container): Don't
call 'clean-up' on LOG-FILE.  This mirrors Shepherd commit
6892f638c78a14fedd075f664432757bc015c140.
---
 gnu/build/shepherd.scm | 1 -
 1 file changed, 1 deletion(-)

diff --git a/gnu/build/shepherd.scm b/gnu/build/shepherd.scm
index b32765ed5e..461feb06ef 100644
--- a/gnu/build/shepherd.scm
+++ b/gnu/build/shepherd.scm
@@ -157,7 +157,6 @@ namespace, in addition to essential bind-mounts such /proc."
                               (lambda ()
                                 (mkdir-p "/var/run")
                                 (clean-up pid-file)
-                                (clean-up log-file)
 
                                 (exec-command command
                                               #:user user

From 464caf72f9ff7600bd49e2df07e19cd9af28a930 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Thu, 26 Sep 2019 17:07:55 +0200
Subject: [PATCH 114/133] shepherd: Ensure the log file has correct ownership.

* gnu/build/shepherd.scm (make-forkexec-constructor/container): Ensure
LOG-FILE has correct ownership.
---
 gnu/build/shepherd.scm | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/gnu/build/shepherd.scm b/gnu/build/shepherd.scm
index 461feb06ef..14bdf4edb8 100644
--- a/gnu/build/shepherd.scm
+++ b/gnu/build/shepherd.scm
@@ -150,7 +150,10 @@ 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

From 8727e0304b68cd22e827331bb40ea269f243c6ab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Thu, 26 Sep 2019 18:49:25 +0200
Subject: [PATCH 115/133] self: Mark trivial "-modules" derivations as
 non-substitutable.

The resulting nar takes ~500KiB and it's quicker to build it locally
than to download it.

* guix/self.scm (node-source+compiled): Pass #:options to
'computed-file'.
---
 guix/self.scm | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/guix/self.scm b/guix/self.scm
index f03fe01d0c..142c834137 100644
--- a/guix/self.scm
+++ b/guix/self.scm
@@ -124,7 +124,11 @@ NODE's modules, under their FHS directories: share/guile/site and lib/guile."
           (symlink #$(node-compiled node) object))))
 
   (computed-file (string-append (node-name node) "-modules")
-                 build))
+                 build
+                 #:options '(#:local-build? #t
+
+                             ;; "Building" it locally is faster.
+                             #:substitutable? #f)))
 
 (define (node-fold proc init nodes)
   (let loop ((nodes nodes)

From 7647c0dec993159432534d0e3815367a5e8e3b76 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Thu, 26 Sep 2019 21:58:47 +0200
Subject: [PATCH 116/133] gnu: tbb: Build in a reproducible fashion.

Fixes .

* gnu/packages/tbb.scm (tbb)[source](snippets): Annihilate attempts to
capture the build time and kernel version.
---
 gnu/packages/tbb.scm | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/gnu/packages/tbb.scm b/gnu/packages/tbb.scm
index 5e427ffe63..f6d7e9b8b4 100644
--- a/gnu/packages/tbb.scm
+++ b/gnu/packages/tbb.scm
@@ -44,6 +44,17 @@
                   (substitute* "build/common.inc"
                     (("export tbb_build_prefix.+$")
                      "export tbb_build_prefix?=guix\n"))
+
+                  ;; Don't capture the build time and kernel version.
+                  (substitute* "build/version_info_linux.sh"
+                    (("uname -srv") "uname -s")
+                    (("`date -u`") "01 Jan 1970"))
+
+                  (substitute* "build/linux.inc"
+                    (("os_kernel_version:=.*")
+                     "os_kernel_version:=5\n")
+                    (("os_version:=.*")
+                     "os_version:=1\n"))
                   #t))))
     (outputs '("out" "doc"))
     (build-system gnu-build-system)

From 99fcefb94c19c25dfa77f28fc8569da6d3aca64f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Thu, 26 Sep 2019 22:34:35 +0200
Subject: [PATCH 117/133] gnu: texinfo: Add version 6.7.

* gnu/packages/texinfo.scm (texinfo-6.7): New variable.
---
 gnu/packages/texinfo.scm | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm
index fa98bd56b8..cbb0c317dd 100644
--- a/gnu/packages/texinfo.scm
+++ b/gnu/packages/texinfo.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2015, 2016, 2017 Ludovic Courtès 
+;;; Copyright © 2012, 2013, 2015, 2016, 2017, 2019 Ludovic Courtès 
 ;;; Copyright © 2014, 2016 Eric Bavier 
 ;;; Copyright © 2015 Mark H Weaver 
 ;;; Copyright © 2017 Efraim Flashner 
@@ -62,6 +62,18 @@ their source and the command-line Info reader.  The emphasis of the language
 is on expressing the content semantically, avoiding physical markup commands.")
     (license gpl3+)))
 
+(define-public texinfo-6.7
+  (package
+    (inherit texinfo)
+    (version "6.7")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/texinfo/texinfo-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "1aicn1v3czqii08wc91jw089n1x3gfchkf808q2as59dak0h714q"))))))
+
 (define-public texinfo-5
   (package (inherit texinfo)
     (version "5.2")

From d31a532417a3e92e6d1acde238ff8859c1f970b5 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou 
Date: Fri, 6 Sep 2019 01:10:10 +0200
Subject: [PATCH 118/133] gnu: Add emacs-flycheck-grammalecte.

* gnu/packages/emacs-xyz.scm (emacs-flycheck-grammalecte): New variable.
---
 gnu/packages/emacs-xyz.scm | 55 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index bea8463cd2..7e1e9bfefc 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)
@@ -3092,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")

From 9a0f6a3c939a1b6c22798155045b7532b57e9604 Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Thu, 26 Sep 2019 23:31:09 +0200
Subject: [PATCH 119/133] gnu: emacs-evil-magit: Update to 0.4.2-3.4b66a1d.

* gnu/packages/emacs-xyz.scm (emacs-evil-magit): Update to 0.4.2-3.4b66a1d.
---
 gnu/packages/emacs-xyz.scm | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 7e1e9bfefc..db5e61dd75 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -14185,10 +14185,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)
@@ -14198,11 +14199,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")

From 352b1dcd6bff4bc0a8f4ed354a94ddde41f2600f Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Fri, 27 Sep 2019 03:33:29 +0200
Subject: [PATCH 120/133] gnu: emacs-counsel-dash: Fix home page.

* gnu/packages/emacs-xyz.scm (emacs-counsel-dash): Fix home page.
---
 gnu/packages/emacs-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index db5e61dd75..e94c05b354 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -17661,7 +17661,7 @@ Dash docsets.")
        (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
@@ -17671,7 +17671,7 @@ Dash docsets.")
       (propagated-inputs
        `(("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.")

From 49175a9baba624eb0a48a77d8cfde2a1b4b61514 Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Fri, 27 Sep 2019 05:53:06 +0200
Subject: [PATCH 121/133] gnu: emacs-org-re-reveal: Update to 2.5.1.

* gnu/packages/emacs-xyz.scm (emacs-org-re-reveal): Update to 2.5.1.
---
 gnu/packages/emacs-xyz.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index e94c05b354..3b83ba8301 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -12743,16 +12743,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)

From 18cd5f69dd563289c76d4497687da681d5aaa204 Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Fri, 27 Sep 2019 05:59:32 +0200
Subject: [PATCH 122/133] gnu: emacs-company-quickhelp: Update to
 2.2.0-1.479676c.

* gnu/packages/emacs-xyz.scm (emacs-company-quickhelp): Update to 2.2.0-1.479676c.
---
 gnu/packages/emacs-xyz.scm | 44 +++++++++++++++++++++-----------------
 1 file changed, 24 insertions(+), 20 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 3b83ba8301..e8ae6d93dc 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -3552,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")

From 8ff5c7355f4888927575e42c177b527218dd2567 Mon Sep 17 00:00:00 2001
From: Pierre Neidhardt 
Date: Thu, 19 Sep 2019 12:35:18 +0200
Subject: [PATCH 123/133] gnu: Add makeself-safeextract.

* gnu/packages/compression.scm (makeself-safeextract): New variable.
---
 gnu/packages/compression.scm | 50 +++++++++++++++++++++++++++++++++++-
 1 file changed, 49 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index bda43bfd18..6771de3028 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)
@@ -2000,3 +2001,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+))))

From 966873e3e7238e70ebb589066e6461763314d006 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Fri, 27 Sep 2019 10:22:27 +0200
Subject: [PATCH 124/133] gnu: Order (gnu packages license)'s imports
 alphabetically.

* gnu/packages/license.scm: Order module imports alphabetically.
---
 gnu/packages/license.scm | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/license.scm b/gnu/packages/license.scm
index 4003c18aca..82dbd2dba1 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.

From 29bdabb6fdcab38ddcae8098117d5babb2c01ac3 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Fri, 27 Sep 2019 12:24:06 +0200
Subject: [PATCH 125/133] gnu: xygrib: Update to 1.2.6.1.

* gnu/packages/geo.scm (xygrib): Update to 1.2.6.1.
---
 gnu/packages/geo.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index edb3b49841..5e1f7e39d7 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -936,7 +936,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
@@ -945,7 +945,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))))

From e6010e892091f9f0cc52fb94b57d8458d4dacd3a Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Fri, 27 Sep 2019 12:24:20 +0200
Subject: [PATCH 126/133] gnu: wabt: Update to 1.0.12.

* gnu/packages/web.scm (wabt): Update to 1.0.12.
---
 gnu/packages/web.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 01c7288caa..0084db51fc 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -866,7 +866,7 @@ for efficient socket-like bidirectional reliable communication channels.")
 (define-public wabt
   (package
     (name "wabt")
-    (version "1.0.11")
+    (version "1.0.12")
     (source
      (origin
        (method git-fetch)
@@ -875,7 +875,7 @@ for efficient socket-like bidirectional reliable communication channels.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0hn88vlqyclpk79v3wg3lrssd9vwhjdgvb41g03jqakygxxgnmp5"))))
+        (base32 "1zlv3740wkqj4mn6sr84h0x6wk2lcp4pwwmqsh5yyqp1j1glbsa0"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags '("-DBUILD_TESTS=OFF")

From 36cc160e721a764c16f53c6f7fbd9d09c581717e Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Fri, 27 Sep 2019 12:27:07 +0200
Subject: [PATCH 127/133] gnu: xbacklight: Update to 1.2.3.

* gnu/packages/xorg.scm (xbacklight): Update to 1.2.3.
---
 gnu/packages/xorg.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 7f3f2dd5ec..e4050a1425 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -2016,7 +2016,7 @@ information used in connecting to the X server.")
 (define-public xbacklight
   (package
     (name "xbacklight")
-    (version "1.2.2")
+    (version "1.2.3")
     (source
       (origin
         (method url-fetch)
@@ -2026,7 +2026,7 @@ information used in connecting to the X server.")
                ".tar.bz2"))
         (sha256
           (base32
-            "0pmzaz4kp38qv2lqiw5rnqhwzmwrq65m1x5j001mmv99wh9isnk1"))))
+            "1plssg0s3pbslg6rfzxp9sx8ryvn8l32zyvc8zp9zsbsfwjg69rs"))))
     (build-system gnu-build-system)
     (inputs
      `(("libxcb" ,libxcb)

From b037ea963fae0c38f097e857aa5407b1d9f2782d Mon Sep 17 00:00:00 2001
From: Marius Bakke 
Date: Thu, 26 Sep 2019 16:38:20 +0200
Subject: [PATCH 128/133] gnu: Add libwpe.

* gnu/packages/webkit.scm (libwpe): New public variable.
---
 gnu/packages/webkit.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 2eca5147fe..e4e7c068e7 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Mark H Weaver 
 ;;; Copyright © 2018 Tobias Geerinckx-Rice 
 ;;; Copyright © 2018 Pierre Neidhardt 
+;;; Copyright © 2019 Marius Bakke 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -54,8 +55,38 @@
   #:use-module (gnu packages tls)
   #:use-module (gnu packages video)
   #:use-module (gnu packages xml)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xorg))
 
+(define-public libwpe
+  (package
+    (name "libwpe")
+    (version "1.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://wpewebkit.org/releases/libwpe-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "1221vs72zs87anrzhbm6pf8jnii7s6ms7mkzj6nlds9zqd7lklz2"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f))                    ;no tests
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("mesa" ,mesa)))
+    (propagated-inputs
+     `(;; In Requires of wpe-1.0.pc.
+       ("libxkbcommon" ,libxkbcommon)))
+    (home-page "https://wpewebkit.org/")
+    (synopsis "Platform agnostic WebKit interfaces")
+    (description
+     "@code{libwpe} is a small library that defines programming interfaces
+for use by WebKit, and provides a mechanism for loading a platform-specific
+backend which implements them.")
+    (license license:bsd-2)))
+
 (define-public webkitgtk
   (package
     (name "webkitgtk")

From 7970127ff0817336a6de03041aea83fc0bdc9980 Mon Sep 17 00:00:00 2001
From: Marius Bakke 
Date: Thu, 26 Sep 2019 16:39:31 +0200
Subject: [PATCH 129/133] gnu: Add wpebackend-fdo.

* gnu/packages/webkit.scm (wpebackend-fdo): New public variable.
---
 gnu/packages/webkit.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index e4e7c068e7..1eb8ae699d 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -35,6 +35,7 @@
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages enchant)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
@@ -87,6 +88,34 @@ for use by WebKit, and provides a mechanism for loading a platform-specific
 backend which implements them.")
     (license license:bsd-2)))
 
+(define-public wpebackend-fdo
+  (package
+    (name "wpebackend-fdo")
+    (version "1.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://wpewebkit.org/releases/"
+                                  "wpebackend-fdo-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1bwbs47v4nlzhsqrw9fpyny5m3n9ry0kfzsvk90zjif4bd5cl6d9"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f))                    ;no tests
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("glib" ,glib)
+       ("libwpe" ,libwpe)
+       ("mesa" ,mesa)
+       ("wayland" ,wayland)))
+    (home-page "https://wpewebkit.org/")
+    (synopsis "Wayland WPE backend")
+    (description
+     "This package provides a backend implementation for the WPE WebKit
+engine that uses Wayland for graphics output.")
+    (license license:bsd-2)))
+
 (define-public webkitgtk
   (package
     (name "webkitgtk")

From 9e0cb9d79d501f36740dade2c9a5d80f955ac2bc Mon Sep 17 00:00:00 2001
From: Marius Bakke 
Date: Thu, 26 Sep 2019 16:40:11 +0200
Subject: [PATCH 130/133] gnu: Add xdg-dbus-proxy.

* gnu/packages/glib.scm (xdg-dbus-proxy): New public variable.
---
 gnu/packages/glib.scm | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 77b5715eb0..a02cf3b7f3 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice 
 ;;; Copyright © 2018 Alex Vong 
 ;;; Copyright © 2019 Giacomo Leidi 
+;;; Copyright © 2019 Marius Bakke 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -34,6 +35,7 @@
   #:use-module (gnu packages bison)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages docbook)
   #:use-module (gnu packages enlightenment)
   #:use-module (gnu packages file)
   #:use-module (gnu packages flex)
@@ -929,3 +931,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+)))

From 689b44bc3fe50de86c8c8b8c2ac503b2e82d7975 Mon Sep 17 00:00:00 2001
From: Marius Bakke 
Date: Thu, 26 Sep 2019 16:40:45 +0200
Subject: [PATCH 131/133] gnu: WebKitGTK: Update to 2.26.1.

* gnu/packages/webkit.scm (webkitgtk-2.24): Rename to ...
(webkitgtk-2.26): ... this.  Update to 2.26.1.
[inputs]: Add BUBBLEWRAP, LIBSECCOMP, LIBWPE, WPEBACKEND-FDO, and XDG-DBUS-PROXY.
* gnu/packages/gnome.scm (eolie, epiphany)[inputs]: Adjust for changed
variable name.
* gnu/packages/web-browsers.scm (next-gtk-webkit)[inputs]: Likewise.
---
 gnu/packages/gnome.scm        |  4 ++--
 gnu/packages/web-browsers.scm |  2 +-
 gnu/packages/webkit.scm       | 15 +++++++++++----
 3 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 34a0c43b50..baebeec1c6 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -4386,7 +4386,7 @@ work and the interface is well tested.")
        ("libsecret" ,libsecret)
        ("gtkspell3" ,gtkspell3)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("webkitgtk" ,webkitgtk-2.24)))
+       ("webkitgtk" ,webkitgtk-2.26)))
     (home-page "https://wiki.gnome.org/Apps/Eolie")
     (synopsis "Web browser for GNOME")
     (description
@@ -4445,7 +4445,7 @@ a secret password store, an adblocker, and a modern UI.")
        ("libxslt" ,libxslt)
        ("nettle" ,nettle) ; for hogweed
        ("sqlite" ,sqlite)
-       ("webkitgtk" ,webkitgtk-2.24)))
+       ("webkitgtk" ,webkitgtk-2.26)))
     (home-page "https://wiki.gnome.org/Apps/Web")
     (synopsis "GNOME web browser")
     (description
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index dd19b5fc6b..46b5ea7327 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -398,7 +398,7 @@ driven and does not detract you from your daily work.")
     (inputs
      `(("glib-networking" ,glib-networking)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("webkitgtk" ,webkitgtk-2.24)))
+       ("webkitgtk" ,webkitgtk-2.26)))
     (native-inputs
      `(("gcc-7" ,gcc-7)   ; needed because webkitgtk-2.24 and above are compiled with gcc-7
        ("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 1eb8ae699d..4864495adf 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -48,6 +48,7 @@
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libreoffice)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
@@ -55,6 +56,7 @@
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages video)
+  #:use-module (gnu packages virtualization)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xorg))
@@ -225,22 +227,27 @@ HTML/CSS applications to full-fledged web browsers.")
 ;; newer version of GCC than our default compiler, and this causes problems
 ;; when linked with C++ libraries built using our default compiler.  For now,
 ;; we use this newer webkitgtk only for selected packages, e.g. epiphany.
-(define-public webkitgtk-2.24
+(define-public webkitgtk-2.26
   (package/inherit webkitgtk
     (name "webkitgtk")
-    (version "2.24.4")
+    (version "2.26.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.webkitgtk.org/releases/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1n3x5g1z6rg9n1ssna7wi0z6zlprjm4wzk544v14wqi6q0lv2s46"))))
+                "0mfikjfjhwcnrxbzdyh3fl9bbs2azgbdnx8h5910h41b3n022jvb"))))
     (native-inputs
      `(("gcc" ,gcc-7)  ; webkitgtk-2.22 requires gcc-6 or newer
        ,@(package-native-inputs webkitgtk)))
     (inputs
-     `(("openjpeg" ,openjpeg)
+     `(("bubblewrap" ,bubblewrap)
+       ("libseccomp" ,libseccomp)
+       ("libwpe" ,libwpe)
+       ("openjpeg" ,openjpeg)
+       ("wpebackend-fdo" ,wpebackend-fdo)
+       ("xdg-dbus-proxy" ,xdg-dbus-proxy)
        ,@(package-inputs webkitgtk)))
     (arguments
      (substitute-keyword-arguments (package-arguments webkitgtk)

From add8063742f08529a64bfbf11e1451a6be392fa3 Mon Sep 17 00:00:00 2001
From: Marius Bakke 
Date: Thu, 26 Sep 2019 16:42:27 +0200
Subject: [PATCH 132/133] gnu: mbedtls-apache: Update to 2.16.3.

* gnu/packages/tls.scm (mbedtls-apache): Update to 2.16.3.
---
 gnu/packages/tls.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 74d16f7586..93c79d63e4 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -835,7 +835,7 @@ then ported to the GNU / Linux environment.")
 (define-public mbedtls-apache
   (package
     (name "mbedtls-apache")
-    (version "2.16.2")
+    (version "2.16.3")
     (source
      (origin
        (method url-fetch)
@@ -845,7 +845,7 @@ then ported to the GNU / Linux environment.")
                            version "-apache.tgz"))
        (sha256
         (base32
-         "1906hbwlkq32075hca4vjad03dcc36aycvmaz8yvhr3ygg6lz0x6"))))
+         "0qd65lnr63vmx2gxla6lcmm5gawlnaj4wy4h4vmdc3h9h9nyw6zc"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags

From b48eb1e934f1d457ff6a0fec1c572bb12ed15fab Mon Sep 17 00:00:00 2001
From: Marius Bakke 
Date: Thu, 26 Sep 2019 16:42:50 +0200
Subject: [PATCH 133/133] gnu: nginx: Update to 1.17.4.

* gnu/packages/web.scm (nginx): Update to 1.17.4.
---
 gnu/packages/web.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 0084db51fc..5c8e5c97c6 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -212,14 +212,14 @@ Interface} specification.")
     ;; ’stable’ and recommends that “in general you deploy the NGINX mainline
     ;; branch at all times” (https://www.nginx.com/blog/nginx-1-6-1-7-released/)
     ;; Consider updating the nginx-documentation package together with this one.
-    (version "1.17.3")
+    (version "1.17.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://nginx.org/download/nginx-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0g0g9prwjy0rnv6n5smny5yl5dhnmflqdr3hwgyj5jpr5hfgx11v"))))
+                "0mg521bxh8pysmy20x599m252ici9w97kk7qy7s0wrv6bqv4p1b2"))))
     (build-system gnu-build-system)
     (inputs `(("openssl" ,openssl)
               ("pcre" ,pcre)