unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* bug#26401: [PATCH] python-tryton (with no modules)
@ 2017-04-08 12:17 75% Catonano
    0 siblings, 1 reply; 200+ results
From: Catonano @ 2017-04-08 12:17 UTC (permalink / raw)
  To: 26401


[-- Attachment #1.1: Type: text/plain, Size: 486 bytes --]

Tryton has modules and without any module packaged, it will do nothing

But at least you can launch it and test it, you can use it for packkaging
the missing modules.

Also a service would be useful. But in order to write a service, the server
packkage has to be in already.

This is supposedly the basis for GNUealth, a notable GNU project

Gnuealth is a collection of Tryton modules and some specific Tryton
configurations. I just have to check if the versions are compatible

Thanks

[-- Attachment #1.2: Type: text/html, Size: 630 bytes --]

[-- Attachment #2: series.patch --]
[-- Type: text/x-patch, Size: 30789 bytes --]

From e42a727312a454aeb19e07cfec6cbb03fe18e183 Mon Sep 17 00:00:00 2001
From: humanitiesNerd <catonano@gmail.com>
Date: Tue, 28 Mar 2017 12:25:06 +0200
Subject: [PATCH 1/5] gnu: Add python-sql python2-sql.

* gnu/packages/python.scm (python-sql python2-sql): New variables.
---
 gnu/packages/python.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 0746af24a..19ba3ad95 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -13965,3 +13965,25 @@ recognize TestCases.")
        (sha256
         (base32
          "17jlkdpqw22z1nyml5ybslilqkzmnk0dxxjml8bfghav1l5hbwd2"))))))
+
+(define-public python-sql
+  (package
+    (name "python-sql")
+    (version "0.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri
+             "python-sql"
+             version))
+       (sha256
+        (base32
+         "0xik939sxqfqqbpgcsnfjnws692bjip32khgwhq1ycphfy7df3h2"))))
+    (build-system python-build-system)
+    (home-page "https://python-sql.tryton.org/")
+    (synopsis "Library to write SQL queries")
+    (description "Idiomatic python function calls get transformed in well formed SQL queries.")
+    (license license:bsd-3)))
+
+(define-public python2-sql
+  (package-with-python2 python-sql))
-- 
2.12.0


From d85c1996371bbdb28f28db9cc5fe06d83e1eafd6 Mon Sep 17 00:00:00 2001
From: humanitiesNerd <catonano@gmail.com>
Date: Wed, 5 Apr 2017 15:29:56 +0200
Subject: [PATCH 2/5]  gnu: Add python-genshi, python2-genshi

 * gnu/packages/python.scm (python-genshi python2-genshi): New variables.
 * gnu/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patct: New file.
 * gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch: New file.
 * gnu/packages/patches/python-genshi-isstring-helper.patch: New file.
 * gnu/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch: New file.
 * gnu/packages/patches/python-genshi-fixing-the-tests-on-python35.patch: New file.
 * gnu/packages/patches/python-genshi-buildable-on-python27-too.patch: New file.
 * gnu/local.mk (dist_patch_DATA): Add them.
---
 gnu/local.mk                                       |   6 +
 ...-for-Python-3.4-AST-support-for-NameConst.patch | 151 +++++++++++++++++++++
 ...-speedups-C-extension-on-CPython-3.3-sinc.patch |  32 +++++
 .../python-genshi-buildable-on-python27-too.patch  |  25 ++++
 ...ython-genshi-fixing-the-tests-on-python35.patch | 112 +++++++++++++++
 .../patches/python-genshi-isstring-helper.patch    |  37 +++++
 ...tripping-of-unsafe-script-tags-Python-3.4.patch |  51 +++++++
 gnu/packages/python.scm                            |  75 ++++++++++
 8 files changed, 489 insertions(+)
 create mode 100644 gnu/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch
 create mode 100644 gnu/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch
 create mode 100644 gnu/packages/patches/python-genshi-buildable-on-python27-too.patch
 create mode 100644 gnu/packages/patches/python-genshi-fixing-the-tests-on-python35.patch
 create mode 100644 gnu/packages/patches/python-genshi-isstring-helper.patch
 create mode 100644 gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 93bafa282..b1a18ce25 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -873,6 +873,12 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-file-double-encoding-bug.patch	\
   %D%/packages/patches/python-fix-tests.patch			\
   %D%/packages/patches/python-parse-too-many-fields.patch	\
+  %D%/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch	\
+  %D%/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch	\
+  %D%/packages/patches/python-genshi-isstring-helper.patch	\
+  %D%/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch	\
+  %D%/packages/patches/python-genshi-fixing-the-tests-on-python35.patch	\
+  %D%/packages/patches/python-genshi-buildable-on-python27-too.patch	\
   %D%/packages/patches/python2-rdflib-drop-sparqlwrapper.patch	\
   %D%/packages/patches/python-statsmodels-fix-tests.patch	\
   %D%/packages/patches/python-configobj-setuptools.patch	\
diff --git a/gnu/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch b/gnu/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch
new file mode 100644
index 000000000..4e40c1daa
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch
@@ -0,0 +1,151 @@
+From 86b98a11559da7d1b21dc9b4c6b10511b9095bc4 Mon Sep 17 00:00:00 2001
+From: Simon Cross <hodgestar@gmail.com>
+Date: Sun, 16 Feb 2014 18:46:15 +0000
+Subject: [PATCH 05/16] Add support for Python 3.4 AST (support for
+ NameConstants and changes to existing to arguments node attributes).
+
+---
+ genshi/template/astutil.py | 31 ++++++++++++++++++++++++++++---
+ genshi/template/eval.py    | 34 +++++++++++++++++++---------------
+ 2 files changed, 47 insertions(+), 18 deletions(-)
+
+diff --git a/genshi/template/astutil.py b/genshi/template/astutil.py
+index a4c21c8..a3946b4 100644
+--- a/genshi/template/astutil.py
++++ b/genshi/template/astutil.py
+@@ -21,7 +21,7 @@ else:
+     def parse(source, mode):
+         return compile(source, '', mode, _ast.PyCF_ONLY_AST)
+ 
+-from genshi.compat import IS_PYTHON2
++from genshi.compat import IS_PYTHON2, isstring
+ 
+ __docformat__ = 'restructuredtext en'
+ 
+@@ -103,8 +103,13 @@ class ASTCodeGenerator(object):
+         self._new_line()
+         return self.visit(node.body)
+ 
++    # Python < 3.4
+     # arguments = (expr* args, identifier? vararg,
+     #              identifier? kwarg, expr* defaults)
++    #
++    # Python >= 3.4
++    # arguments = (arg* args, arg? vararg, arg* kwonlyargs, expr* kw_defaults,
++    #              arg? kwarg, expr* defaults)
+     def visit_arguments(self, node):
+         first = True
+         no_default_count = len(node.args) - len(node.defaults)
+@@ -122,13 +127,21 @@ class ASTCodeGenerator(object):
+                 self._write(', ')
+             else:
+                 first = False
+-            self._write('*' + node.vararg)
++            self._write('*')
++            if isstring(node.vararg):
++                self._write(node.vararg)
++            else:
++                self.visit(node.vararg)
+         if getattr(node, 'kwarg', None):
+             if not first:
+                 self._write(', ')
+             else:
+                 first = False
+-            self._write('**' + node.kwarg)
++            self._write('**')
++            if isstring(node.kwarg):
++                self._write(node.kwarg)
++            else:
++                self.visit(node.kwarg)
+ 
+     if not IS_PYTHON2:
+         # In Python 3 arguments get a special node
+@@ -724,6 +737,17 @@ class ASTCodeGenerator(object):
+     def visit_Name(self, node):
+         self._write(node.id)
+ 
++    # NameConstant(singleton value)
++    def visit_NameConstant(self, node):
++        if node.value is None:
++            self._write('None')
++        elif node.value is True:
++            self._write('True')
++        elif node.value is False:
++            self._write('False')
++        else:
++            raise Exception("Unknown NameConstant %r" % (node.value,))
++
+     # List(expr* elts, expr_context ctx)
+     def visit_List(self, node):
+         self._write('[')
+@@ -829,6 +853,7 @@ class ASTTransformer(object):
+     visit_Attribute = _clone
+     visit_Subscript = _clone
+     visit_Name = _clone
++    visit_NameConstant = _clone
+     visit_List = _clone
+     visit_Tuple = _clone
+ 
+diff --git a/genshi/template/eval.py b/genshi/template/eval.py
+index 89aec49..de4bc86 100644
+--- a/genshi/template/eval.py
++++ b/genshi/template/eval.py
+@@ -24,7 +24,8 @@ from genshi.template.astutil import ASTTransformer, ASTCodeGenerator, \
+ from genshi.template.base import TemplateRuntimeError
+ from genshi.util import flatten
+ 
+-from genshi.compat import get_code_params, build_code_chunk, IS_PYTHON2
++from genshi.compat import get_code_params, build_code_chunk, isstring, \
++                          IS_PYTHON2
+ 
+ __all__ = ['Code', 'Expression', 'Suite', 'LenientLookup', 'StrictLookup',
+            'Undefined', 'UndefinedError']
+@@ -495,28 +496,31 @@ class TemplateASTTransformer(ASTTransformer):
+     def __init__(self):
+         self.locals = [CONSTANTS]
+ 
++    def _process(self, names, node):
++        if not IS_PYTHON2 and isinstance(node, _ast.arg):
++            names.add(node.arg)
++        elif isstring(node):
++            names.add(node)
++        elif isinstance(node, _ast.Name):
++            names.add(node.id)
++        elif isinstance(node, _ast.alias):
++            names.add(node.asname or node.name)
++        elif isinstance(node, _ast.Tuple):
++            for elt in node.elts:
++                self._process(names, elt)
++
+     def _extract_names(self, node):
+         names = set()
+-        def _process(node):
+-            if not IS_PYTHON2 and isinstance(node, _ast.arg):
+-                names.add(node.arg)
+-            if isinstance(node, _ast.Name):
+-                names.add(node.id)
+-            elif isinstance(node, _ast.alias):
+-                names.add(node.asname or node.name)
+-            elif isinstance(node, _ast.Tuple):
+-                for elt in node.elts:
+-                    _process(elt)
+         if hasattr(node, 'args'):
+             for arg in node.args:
+-                _process(arg)
++                self._process(names, arg)
+             if hasattr(node, 'vararg'):
+-                names.add(node.vararg)
++                self._process(names, node.vararg)
+             if hasattr(node, 'kwarg'):
+-                names.add(node.kwarg)
++                self._process(names, node.kwarg)
+         elif hasattr(node, 'names'):
+             for elt in node.names:
+-                _process(elt)
++                self._process(names, elt)
+         return names
+ 
+     def visit_Str(self, node):
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch b/gnu/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch
new file mode 100644
index 000000000..c25c3bd7a
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch
@@ -0,0 +1,32 @@
+From cef2c8df44166195e1705638f9f17033a4943bb7 Mon Sep 17 00:00:00 2001
+From: Simon Cross <hodgestar@gmail.com>
+Date: Sun, 16 Feb 2014 18:32:21 +0000
+Subject: [PATCH 02/15] Disable the speedups C extension on CPython >= 3.3
+ since Genshi doesn't support the new Unicode C API yet.
+
+---
+ setup.py | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index 123a2cb..a3d748c 100755
+--- a/setup.py
++++ b/setup.py
+@@ -65,9 +65,13 @@ available.""")
+ 
+ 
+ if Feature:
++    # Optional C extension module for speeding up Genshi:
++    # Not activated by default on:
++    # - PyPy (where it harms performance)
++    # - CPython >= 3.3 (the new Unicode C API is not supported yet)
+     speedups = Feature(
+         "optional C speed-enhancements",
+-        standard = not is_pypy,
++        standard = not is_pypy and sys.version_info < (3, 3),
+         ext_modules = [
+             Extension('genshi._speedups', ['genshi/_speedups.c']),
+         ],
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-buildable-on-python27-too.patch b/gnu/packages/patches/python-genshi-buildable-on-python27-too.patch
new file mode 100644
index 000000000..13289fbe8
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-buildable-on-python27-too.patch
@@ -0,0 +1,25 @@
+From 32bfaa7cc1c736fd62fcbb6414de9498dc20ed07 Mon Sep 17 00:00:00 2001
+From: humanitiesNerd <catonano@gmail.com>
+Date: Wed, 5 Apr 2017 15:13:06 +0200
+Subject: [PATCH 2/2] buildable on python27 too
+
+---
+ genshi/template/directives.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/genshi/template/directives.py b/genshi/template/directives.py
+index 6fd0f28..1f70ef6 100644
+--- a/genshi/template/directives.py
++++ b/genshi/template/directives.py
+@@ -266,7 +266,7 @@ class DefDirective(Directive):
+         if isinstance(ast, _ast.Call):
+             self.name = ast.func.id
+             for arg in ast.args:
+-                if isinstance(arg, _ast.Starred):
++                if hasattr(_ast, 'Starred') and isinstance(arg, _ast.Starred):
+                     # Python 3.5+
+                     self.star_args = arg.value.id
+                 else:
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-fixing-the-tests-on-python35.patch b/gnu/packages/patches/python-genshi-fixing-the-tests-on-python35.patch
new file mode 100644
index 000000000..f1905e7cf
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-fixing-the-tests-on-python35.patch
@@ -0,0 +1,112 @@
+From ce796ad4bae5c47011876778674ad036357febdf Mon Sep 17 00:00:00 2001
+From: humanitiesNerd <catonano@gmail.com>
+Date: Wed, 5 Apr 2017 15:10:06 +0200
+Subject: [PATCH 1/2] fixing the tests on python35
+
+---
+ genshi/filters/i18n.py        |  6 ++++--
+ genshi/template/astutil.py    | 14 +++++++++++---
+ genshi/template/directives.py | 20 ++++++++++++++------
+ genshi/template/eval.py       |  5 +++++
+ 4 files changed, 34 insertions(+), 11 deletions(-)
+
+diff --git a/genshi/filters/i18n.py b/genshi/filters/i18n.py
+index 526fda4..5387fcf 100644
+--- a/genshi/filters/i18n.py
++++ b/genshi/filters/i18n.py
+@@ -1194,8 +1194,10 @@ def extract_from_code(code, gettext_functions):
+                 elif arg:
+                     strings.append(None)
+             [_add(arg) for arg in node.args]
+-            _add(node.starargs)
+-            _add(node.kwargs)
++            if hasattr(node, 'starargs'):
++                _add(node.starargs)
++            if hasattr(node, 'kwargs'):
++                _add(node.kwargs)
+             if len(strings) == 1:
+                 strings = strings[0]
+             else:
+diff --git a/genshi/template/astutil.py b/genshi/template/astutil.py
+index f4e1edd..e561846 100644
+--- a/genshi/template/astutil.py
++++ b/genshi/template/astutil.py
+@@ -151,6 +151,10 @@ class ASTCodeGenerator(object):
+         def visit_arg(self, node):
+             self._write(node.arg)
+ 
++    def visit_Starred(self, node):
++        self._write('*')
++        self.visit(node.value)
++
+     # FunctionDef(identifier name, arguments args,
+     #                           stmt* body, expr* decorator_list)
+     def visit_FunctionDef(self, node):
+@@ -664,9 +668,13 @@ class ASTCodeGenerator(object):
+             if not first:
+                 self._write(', ')
+             first = False
+-            # keyword = (identifier arg, expr value)
+-            self._write(keyword.arg)
+-            self._write('=')
++            if not keyword.arg:
++                # Python 3.5+ star-star args
++                self._write('**')
++            else:
++                # keyword = (identifier arg, expr value)
++                self._write(keyword.arg)
++                self._write('=')
+             self.visit(keyword.value)
+         if getattr(node, 'starargs', None):
+             if not first:
+diff --git a/genshi/template/directives.py b/genshi/template/directives.py
+index 7301c2d..6fd0f28 100644
+--- a/genshi/template/directives.py
++++ b/genshi/template/directives.py
+@@ -266,13 +266,21 @@ class DefDirective(Directive):
+         if isinstance(ast, _ast.Call):
+             self.name = ast.func.id
+             for arg in ast.args:
+-                # only names
+-                self.args.append(arg.id)
++                if isinstance(arg, _ast.Starred):
++                    # Python 3.5+
++                    self.star_args = arg.value.id
++                else:
++                    # only names
++                    self.args.append(arg.id)
+             for kwd in ast.keywords:
+-                self.args.append(kwd.arg)
+-                exp = Expression(kwd.value, template.filepath,
+-                                 lineno, lookup=template.lookup)
+-                self.defaults[kwd.arg] = exp
++                if kwd.arg is None:
++                    # Python 3.5+
++                    self.dstar_args = kwd.value.id
++                else:
++                    self.args.append(kwd.arg)
++                    exp = Expression(kwd.value, template.filepath,
++                                     lineno, lookup=template.lookup)
++                    self.defaults[kwd.arg] = exp
+             if getattr(ast, 'starargs', None):
+                 self.star_args = ast.starargs.id
+             if getattr(ast, 'kwargs', None):
+diff --git a/genshi/template/eval.py b/genshi/template/eval.py
+index d378419..81644a7 100644
+--- a/genshi/template/eval.py
++++ b/genshi/template/eval.py
+@@ -600,6 +600,11 @@ class TemplateASTTransformer(ASTTransformer):
+         finally:
+             self.locals.pop()
+ 
++    # Only used in Python 3.5+
++    def visit_Starred(self, node):
++        node.value = self.visit(node.value)
++        return node
++
+     def visit_Name(self, node):
+         # If the name refers to a local inside a lambda, list comprehension, or
+         # generator expression, leave it alone
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-isstring-helper.patch b/gnu/packages/patches/python-genshi-isstring-helper.patch
new file mode 100644
index 000000000..4f6c19bba
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-isstring-helper.patch
@@ -0,0 +1,37 @@
+From cc5e07284f44cdd9beec178c69070a53f55d1323 Mon Sep 17 00:00:00 2001
+From: Simon Cross <hodgestar@gmail.com>
+Date: Sun, 16 Feb 2014 18:43:20 +0000
+Subject: [PATCH 03/15] Add isstring helper.
+
+---
+ genshi/compat.py | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/genshi/compat.py b/genshi/compat.py
+index 9787325..6574e39 100644
+--- a/genshi/compat.py
++++ b/genshi/compat.py
+@@ -35,6 +35,15 @@ else:
+                 'Python 2 compatibility function. Not usable in Python 3.')
+ 
+ 
++# We need to test if an object is an instance of a string type in places
++
++if IS_PYTHON2:
++    def isstring(obj):
++        return isinstance(obj, basestring)
++else:
++    def isstring(obj):
++        return isinstance(obj, str)
++
+ # We need to differentiate between StringIO and BytesIO in places
+ 
+ if IS_PYTHON2:
+@@ -112,4 +121,3 @@ except NameError:
+             if not x:
+                 return False
+         return True
+-
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch b/gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch
new file mode 100644
index 000000000..29951a614
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch
@@ -0,0 +1,51 @@
+From 0769be04c3891ae5c724c6779ba13d1d0f53b4ae Mon Sep 17 00:00:00 2001
+From: Simon Cross <hodgestar@gmail.com>
+Date: Sun, 16 Feb 2014 18:25:17 +0000
+Subject: [PATCH 01/15] Also allow stripping of unsafe script tags (Python 3.4
+ parses the second example as a tag whose name is script&xyz).
+
+---
+ genshi/filters/tests/test_html.py | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/genshi/filters/tests/test_html.py b/genshi/filters/tests/test_html.py
+index 0c6cfe1..45ec0da 100644
+--- a/genshi/filters/tests/test_html.py
++++ b/genshi/filters/tests/test_html.py
+@@ -368,12 +368,16 @@ def StyleSanitizer():
+ 
+ class HTMLSanitizerTestCase(unittest.TestCase):
+ 
+-    def assert_parse_error_or_equal(self, expected, exploit):
++    def assert_parse_error_or_equal(self, expected, exploit,
++                                    allow_strip=False):
+         try:
+             html = HTML(exploit)
+         except ParseError:
+             return
+-        self.assertEquals(expected, (html | HTMLSanitizer()).render())
++        sanitized_html = (html | HTMLSanitizer()).render()
++        if not sanitized_html and allow_strip:
++            return
++        self.assertEquals(expected, sanitized_html)
+ 
+     def test_sanitize_unchanged(self):
+         html = HTML(u'<a href="#">fo<br />o</a>')
+@@ -416,10 +420,12 @@ class HTMLSanitizerTestCase(unittest.TestCase):
+         html = HTML(u'<SCRIPT SRC="http://example.com/"></SCRIPT>')
+         self.assertEquals('', (html | HTMLSanitizer()).render())
+         src = u'<SCR\0IPT>alert("foo")</SCR\0IPT>'
+-        self.assert_parse_error_or_equal('&lt;SCR\x00IPT&gt;alert("foo")', src)
++        self.assert_parse_error_or_equal('&lt;SCR\x00IPT&gt;alert("foo")', src,
++                                         allow_strip=True)
+         src = u'<SCRIPT&XYZ SRC="http://example.com/"></SCRIPT>'
+         self.assert_parse_error_or_equal('&lt;SCRIPT&amp;XYZ; '
+-                                         'SRC="http://example.com/"&gt;', src)
++                                         'SRC="http://example.com/"&gt;', src,
++                                         allow_strip=True)
+ 
+     def test_sanitize_remove_onclick_attr(self):
+         html = HTML(u'<div onclick=\'alert("foo")\' />')
+-- 
+2.12.0
+
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 19ba3ad95..c05a5bd70 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -13987,3 +13987,78 @@ recognize TestCases.")
 
 (define-public python2-sql
   (package-with-python2 python-sql))
+
+(define-public python-genshi
+  (package
+    (name "python-genshi")
+    (version "0.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://ftp.edgewall.org/pub/genshi/Genshi-"
+             version
+             ".tar.gz"))
+       (patches
+        (search-patches
+         ;; The first 4 patches are in the master branch upstream.
+         ;; see this as a reference https://genshi.edgewall.org/ticket/582
+         ;; The last 2 are NOT in any branch.
+         ;; They were sent as attachments to a ticket opened at
+         ;; https://genshi.edgewall.org/ticket/602#no1
+         "python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch"
+         "python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch"
+         "python-genshi-isstring-helper.patch"
+         "python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch"
+         "python-genshi-fixing-the-tests-on-python35.patch"
+         "python-genshi-buildable-on-python27-too.patch"))
+       (sha256
+        (base32
+         "0lkkbp6fbwzv0zda5iqc21rr7rdldkwh3hfabfjl9i4bwq14858x"))))
+    (build-system python-build-system)
+    (home-page "https://genshi.edgewall.org/")
+    (synopsis "Toolkit for generation of output for the web")
+    (description "Genshi is a Python library that provides
+an integrated set of components for parsing, generating, and processing HTML, XML
+or other textual content for output generation on the web")
+    (license license:bsd-3)))
+
+;; the linter here claims that patch file names
+;; should start with the package name.
+;; In this case the patches are inherited from
+;; python-genshi without the "2"
+(define-public python2-genshi
+  (package-with-python2 python-genshi))
+
+
+;; this package depends on python-genshi that
+;; can be buit only with python-2
+;; so providing a python33 version of this
+;; is difficult
+(define-public python2-relatorio
+  (package
+    (name "python-relatorio")
+    (version "0.6.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "relatorio" version))
+       (sha256
+        (base32
+         "0lincq79mzgazwd9gh41dybjh9c3n87r83pl8nk3j79aihyfk84z"))))
+    (propagated-inputs
+     `(("lxml" ,python2-lxml)
+       ("genshi" ,python2-genshi)))
+    (arguments
+     `(#:python ,python-2))
+    ;; because relatorio depends on python-genshi
+    ;; that can be built with python-2 only
+    (build-system python-build-system)
+    (home-page "https://relatorio.tryton.org/")
+    (synopsis "Templating library able to output odt and pdf files")
+    (description
+     "Relatorio is a templating library which
+provides a way to easily output several kinds of files
+(odt, ods, png, svg, …).  Support for more filetypes can be
+easily added by creating plugins for them.")
+    (license license:lgpl3)))
-- 
2.12.0


From 6d9dff4cbbe37f172de929e44e82b384e0408f16 Mon Sep 17 00:00:00 2001
From: humanitiesNerd <catonano@gmail.com>
Date: Wed, 5 Apr 2017 16:06:06 +0200
Subject: [PATCH 3/5]  gnu Add: python-relatorio python2-relatorio

* gnu/packages/python (python-relatorio python2-relatorio): New variables.
---
 gnu/packages/python.scm | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index c05a5bd70..6117dc109 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14030,12 +14030,7 @@ or other textual content for output generation on the web")
 (define-public python2-genshi
   (package-with-python2 python-genshi))
 
-
-;; this package depends on python-genshi that
-;; can be buit only with python-2
-;; so providing a python33 version of this
-;; is difficult
-(define-public python2-relatorio
+(define-public python-relatorio
   (package
     (name "python-relatorio")
     (version "0.6.4")
@@ -14047,12 +14042,8 @@ or other textual content for output generation on the web")
         (base32
          "0lincq79mzgazwd9gh41dybjh9c3n87r83pl8nk3j79aihyfk84z"))))
     (propagated-inputs
-     `(("lxml" ,python2-lxml)
-       ("genshi" ,python2-genshi)))
-    (arguments
-     `(#:python ,python-2))
-    ;; because relatorio depends on python-genshi
-    ;; that can be built with python-2 only
+     `(("lxml" ,python-lxml)
+       ("genshi" ,python-genshi)))
     (build-system python-build-system)
     (home-page "https://relatorio.tryton.org/")
     (synopsis "Templating library able to output odt and pdf files")
@@ -14062,3 +14053,6 @@ provides a way to easily output several kinds of files
 (odt, ods, png, svg, …).  Support for more filetypes can be
 easily added by creating plugins for them.")
     (license license:lgpl3)))
+
+(define-public python2-relatorio
+  (package-with-python2 python-relatorio))
-- 
2.12.0


From f3b90215d488741361c69f3a73730f5e5e18915f Mon Sep 17 00:00:00 2001
From: humanitiesNerd <catonano@gmail.com>
Date: Thu, 6 Apr 2017 09:37:59 +0200
Subject: [PATCH 4/5] gnu: Add python-trytond python2-trytond.

* gnu/packages/python.scm (python-trytond, python2-trytond): New variables.
---
 gnu/packages/python.scm | 50 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 6117dc109..761341aa4 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14056,3 +14056,53 @@ easily added by creating plugins for them.")
 
 (define-public python2-relatorio
   (package-with-python2 python-relatorio))
+
+(define-public python-trytond
+  (package
+    (name "python-trytond")
+    (version "4.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri
+             "trytond"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1w9bc0qck9k1vzk1xvry3vb70mibaxipp229naym2fnwi282jlh5"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'preparations
+                     (lambda* _
+                       ;; this is used in the tests
+                       (setenv "DB_NAME" ":memory:"))))))
+    (propagated-inputs
+     `(("polib" ,python-polib)
+       ("dateutil" ,python-dateutil)
+       ("werkzeug" ,python-werkzeug)
+       ("wrapt" ,python-wrapt)
+       ("python-sql" ,python-sql)
+       ("genshi" ,python-genshi)
+       ("relatorio" ,python-relatorio)
+       ("lxml" ,python-lxml)
+       ;; there's no pyton-mysql in Guix right now
+       ;; so psycopg (postgresql) only for now
+       ("psycopg" ,python-psycopg2)))
+    (native-inputs
+     ;; this is used in the tests
+     `(("mock" ,python-mock)))
+    (home-page "http://www.tryton.org/")
+    (synopsis "Server component of Tryton")
+    (description
+   "The server of the Tryton application platform.
+A three-tiers high-level general purpose application platform
+written in Python and use Postgresql as main database engine.
+It is the core base of an Open Source ERP.
+It provides modularity, scalability and security.")
+  (license license:lgpl3)))
+
+(define-public python2-trytond
+  (package-with-python2 python-trytond))
-- 
2.12.0


From b5fc10e71f87ea3392aa9ea5b16a52c780c9e0cb Mon Sep 17 00:00:00 2001
From: humanitiesNerd <catonano@gmail.com>
Date: Thu, 6 Apr 2017 22:17:11 +0200
Subject: [PATCH 5/5] gnu: Add python2-tryton

* gnu/packages/python.scm (python2-tryton): New variable.
---
 gnu/packages/python.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 761341aa4..20f1859c7 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14106,3 +14106,34 @@ It provides modularity, scalability and security.")
 
 (define-public python2-trytond
   (package-with-python2 python-trytond))
+
+;; this depends on pygtk that is available or python@2 only
+(define-public python2-tryton
+  (package
+    (name "python2-tryton")
+    (version "4.2.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri
+             "tryton"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "13a8cc3z3h9bpr2dwd7rqn8drp5ng8dava2zy7azcgwgjvkx4jzk"))))
+    (arguments
+     `(#:python ,python-2))
+    (propagated-inputs
+     `(("chardet" ,python2-chardet)
+       ("dateutil" ,python2-dateutil)
+       ("pygtk" ,python2-pygtk)))
+    (build-system python-build-system)
+    (home-page "http://www.tryton.org/")
+    (synopsis "Client component of Tryton")
+    (description "The client of the Tryton application platform.
+A three-tiers high-level general purpose application platform
+written in Python and use Postgresql as main database engine.
+It is the core base of an Open Source ERP.
+It provides modularity, scalability and security.")
+    (license license:gpl3)))
-- 
2.12.0


^ permalink raw reply related	[relevance 75%]

* bug#25736: postorius (mailman)
       [not found]     ` <20170323114011.ko5xf6uq2if4aq23@abyayala>
@ 2017-04-08 16:39 38%   ` ng0
  0 siblings, 0 replies; 200+ results
From: ng0 @ 2017-04-08 16:39 UTC (permalink / raw)
  To: 25736

[-- Attachment #1: Type: text/plain, Size: 1116 bytes --]

Updated patches appended.

ng0 transcribed 1.0K bytes:
> ng0 transcribed 0.7K bytes:
> > This patch series adds postorius, one part of mailman version 3.
> > It was reviewed by Harmut as "Okay, good to go" and I see no point in
> > waiting for a discussion to happen on django bits of the python build
> > system. If there are minor issues on the what should be propagated or
> > native inputs, they can be solved afterwards. The packages are good to
> > go.
> > 
> > 0001-gnu-Add-python-defusedxml.patch
> > 0002-gnu-Add-python-openid.patch
> > 0003-gnu-Add-python-django-allauth.patch
> > 0004-gnu-Add-python-django-gravatar2.patch
> > 0005-gnu-Add-python-django-mailman3.patch
> > 0006-gnu-Add-postorius.patch
> > 
> > For the previous discussion, search "postorius" on the guix-devel@ list.
> > 
> > Thanks.
> 
> It seems to me as if send in on 2017-02-15, time passed until today, the
> 2017-03-23 would be enough to simply push this if I could (access
> level).
> 
> For those who can push, these patches should theoretically still apply.
> If they do not apply anymore, tell me and I'll rebase them.
> 
> 
> 

[-- Attachment #2: 0001-gnu-Add-python-defusedxml.patch --]
[-- Type: text/plain, Size: 1843 bytes --]

From 7338a5d8cf40006b1572ccf6b506ded5bc768c0f Mon Sep 17 00:00:00 2001
From: ng0 <ng0@libertad.pw>
Date: Sat, 7 Jan 2017 16:37:11 +0000
Subject: [PATCH 1/6] gnu: Add python-defusedxml.

* gnu/packages/xml.scm (python-defusedxml): New variable.
---
 gnu/packages/xml.scm | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index b2e8959df..283d5112a 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
+;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
 ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
 ;;;
@@ -1068,3 +1068,24 @@ XSLT and EXSLT.")
 XLSM) format spreadsheets into plaintext @dfn{comma separated values} (CSV)
 files.  It is designed to be fast and to handle large input files.")
     (license license:gpl2+)))
+
+(define-public python-defusedxml
+  (package
+    (name "python-defusedxml")
+    (version "0.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "defusedxml" version))
+       (sha256
+        (base32
+         "0y147zy3jqmk6ly7fbhqmzn1hf41xcb53f2vcc3m8x4ba5d1smfd"))))
+    (build-system python-build-system)
+    (home-page "https://bitbucket.org/tiran/defusedxml")
+    (synopsis "XML bomb protection for Python stdlib modules")
+    (description
+     "Defusedxml provides XML bomb protection for Python stdlib modules.")
+    (license license:psfl)))
+
+(define-public python2-defusedxml
+  (package-with-python2 python-defusedxml))
-- 
2.12.2


[-- Attachment #3: 0002-gnu-Add-python-openid.patch --]
[-- Type: text/plain, Size: 1615 bytes --]

From e588ace594815381ce73dabccf2b669d8cb6ba86 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@libertad.pw>
Date: Sat, 7 Jan 2017 16:46:11 +0000
Subject: [PATCH 2/6] gnu: Add python-openid.

* gnu/packages/python.scm (python-openid): New variable.
---
 gnu/packages/python.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 0746af24a..875908505 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -5549,6 +5549,32 @@ for clients and servers.")
 for clients and servers.")
     (license license:asl2.0)))
 
+;; This is named "python3-openid" upstream, but python-python3-openid
+;; is too much of an tautology.
+(define-public python-openid
+  (package
+    (name "python-openid")
+    (version "3.0.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "python3-openid" version))
+       (sha256
+        (base32
+         "1x3nh3fycqfn43jp5j5pb4q4y2jxp4mdka4absaa3bc0078qd758"))))
+    (propagated-inputs
+     `(("python-defusedxml" ,python-defusedxml)))
+    (native-inputs
+     `(("python-coverage" ,python-coverage)))
+    (build-system python-build-system)
+    (home-page "https://github.com/necaris/python3-openid")
+    (synopsis "OpenID support for modern servers and consumers")
+    (description
+     "This library provides OpenID authentication for Python, both
+for clients and servers.  This package provides the Python 3 port
+of python-openid.")
+    (license license:asl2.0)))
+
 (define-public python-urwidtrees
   (package
     (name "python-urwidtrees")
-- 
2.12.2


[-- Attachment #4: 0003-gnu-Add-python-django-allauth.patch --]
[-- Type: text/plain, Size: 2039 bytes --]

From d767b82d5e8bd4d0ad5626fb6bb6b60ff6d37f84 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@libertad.pw>
Date: Sun, 8 Jan 2017 20:02:41 +0000
Subject: [PATCH 3/6] gnu: Add python-django-allauth.

* gnu/packages/django.scm (python-django-allauth): New variable.
---
 gnu/packages/django.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 805dca6c9..4f7620ee2 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -189,3 +190,34 @@ them do this.")
 
 (define-public python2-django-filter
   (package-with-python2 python-django-filter))
+
+(define-public python-django-allauth
+  (package
+    (name "python-django-allauth")
+    (version "0.30.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "django-allauth" version))
+       (sha256
+        (base32
+         "1fslqc5qqb0b66yscvkyjwfv8cnbfx5nlkpnwimyb3pf1nc1w7r3"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-openid" ,python-openid)
+       ("python-requests" ,python-requests)
+       ("python-requests-oauthlib" ,python-requests-oauthlib)))
+    (native-inputs
+     `(("python-mock" ,python-mock)))
+    (inputs
+     `(("python-django" ,python-django)))
+    (home-page "https://github.com/pennersr/django-allauth")
+    (synopsis "Set of Django applications addressing authentication")
+    (description
+     "Integrated set of Django applications addressing authentication,
+registration, account management as well as 3rd party (social)
+account authentication.")
+    (license license:expat)))
+
+(define-public python2-django-allauth
+  (package-with-python2 python-django-allauth))
-- 
2.12.2


[-- Attachment #5: 0004-gnu-Add-python-django-gravatar2.patch --]
[-- Type: text/plain, Size: 1462 bytes --]

From 1c2f5592e86ff0616386af4aaaac4088147b6219 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@libertad.pw>
Date: Sun, 8 Jan 2017 20:31:53 +0000
Subject: [PATCH 4/6] gnu: Add python-django-gravatar2.

* gnu/packages/django.scm (python-django-gravatar2): New variable.
---
 gnu/packages/django.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 4f7620ee2..2038473f5 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -221,3 +221,27 @@ account authentication.")
 
 (define-public python2-django-allauth
   (package-with-python2 python-django-allauth))
+
+(define-public python-django-gravatar2
+  (package
+    (name "python-django-gravatar2")
+    (version "1.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "django-gravatar2" version))
+       (sha256
+        (base32
+         "1v4qyj6kms321yw0z2g1kch6b2dskmv6fjd6sfxzwr4xshq9mccl"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-django" ,python-django)))
+    (home-page "https://github.com/twaddington/django-gravatar")
+    (synopsis "Gravatar support for Django, improved version")
+    (description
+     "Essential Gravatar support for Django.  Features helper methods,
+templatetags and a full test suite.")
+    (license license:expat)))
+
+(define-public python2-django-gravatar2
+  (package-with-python2 python-django-gravatar2))
-- 
2.12.2


[-- Attachment #6: 0005-gnu-Add-python-django-mailman3.patch --]
[-- Type: text/plain, Size: 2356 bytes --]

From 1d2371fc9958873d244b6db6b2c7eea8e2989b15 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@libertad.pw>
Date: Sun, 8 Jan 2017 20:54:47 +0000
Subject: [PATCH 5/6] gnu: Add python-django-mailman3.

* gnu/packages/mail.scm (python-django-mailman3): New variable.
---
 gnu/packages/mail.scm | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 13861a8ad..44730f297 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -50,6 +50,7 @@
   #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages dejagnu)
+  #:use-module (gnu packages django)
   #:use-module (gnu packages dns)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages emacs)
@@ -2145,3 +2146,41 @@ Options can be specified in environment variables, configuration files, and
 the command line allowing maximum configurability and ease of use for
 operators and scripters.")
     (license gpl2+)))
+
+(define-public python-django-mailman3
+  (package
+    (name "python-django-mailman3")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "django-mailman3" version))
+       (sha256
+        (base32
+         "1adxyh8knw9knjlh73xq0jpn5adml0ck4alsv0swakm95wfyx46z"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-django" ,python-django)
+    (propagated-inputs
+     `(("python-requests" ,python-requests)
+       ("python-requests-oauthlib" ,python-requests-oauthlib)
+       ("python-openid" ,python-openid)
+       ("python-mailmanclient" ,python-mailmanclient)
+       ("python-django-allauth" ,python-django-allauth)
+       ("python-django-gravatar2" ,python-django-gravatar2)
+       ("python-pytz" ,python-pytz)))
+    (home-page "https://gitlab.com/mailman/django-mailman3")
+    (synopsis "Django library for Mailman UIs")
+    (description
+     "Libraries and templates for Django-based interfaces
+interacting with Mailman.")
+    (license gpl3+)))
+
+(define-public python2-django-mailman3
+  (let ((base (package-with-python2
+               python-django-mailman3)))
+    (package
+      (inherit base)
+      (propagated-inputs
+       `(("python2-openid" ,python2-openid)
+         ,@(package-propagated-inputs base))))))
-- 
2.12.2


[-- Attachment #7: 0006-gnu-Add-postorius.patch --]
[-- Type: text/plain, Size: 1761 bytes --]

From 191c0c22d72a39dab8fb852b43afc9d0769061c7 Mon Sep 17 00:00:00 2001
From: ng0 <contact.ng0@cryptolab.net>
Date: Thu, 2 Feb 2017 21:08:05 +0000
Subject: [PATCH 6/6] gnu: Add postorius.

* gnu/packages/mail.scm (postorius): New variable.
---
 gnu/packages/mail.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 44730f297..bd1e24e17 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -2184,3 +2184,33 @@ interacting with Mailman.")
       (propagated-inputs
        `(("python2-openid" ,python2-openid)
          ,@(package-propagated-inputs base))))))
+
+(define-public postorius
+  (package
+    (name "postorius")
+    (version "1.0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "postorius" version "+post2.tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1wymcpv2icjjy8h1ni52p6dr7wwxf71ivqgbqhzx4i82yqphcaq5"))))
+    (build-system python-build-system)
+    (arguments
+     `(; One test dependency relies on Persona, which was shut down in
+       ;; November 2016.
+       #:tests? #f
+                ;; The part of the frontend of Mailman is still python 2.7.
+                #:python ,python-2))
+    (inputs
+     `(("python2-django" ,python2-django)
+       ("python2-django-mailman3" ,python2-django-mailman3)
+       ("python2-mailmanclient" ,python2-mailmanclient)))
+    (home-page "https://gitlab.com/mailman/postorius")
+    (synopsis "Web user interface for GNU Mailman")
+    (description
+     "Postorius is a Django app which provides a web user interface
+to access GNU Mailman.")
+    (license (list gpl3+ lgpl3+))))
-- 
2.12.2


^ permalink raw reply related	[relevance 38%]

* bug#26438: [PATCH] Add fabric, python-paramiko: Update to 1.17.4.
@ 2017-04-11  0:33 54% Ben Sturmfels
  0 siblings, 0 replies; 200+ results
From: Ben Sturmfels @ 2017-04-11  0:33 UTC (permalink / raw)
  To: 26438

[-- Attachment #1: Type: text/plain, Size: 850 bytes --]

Hi Folks,

Here's my first attempt at a Guix package - a tool called Fabric which
is used for for web app deployment.

Couple of notes:

1. I found that I needed to upgrade python-paramiko to minimum 1.17.4 to
avoid an incompatibility between python-paramiko and newer
python-pycrypto. I'm not sure what the implications are of this.
Technically only the Python 2 version needs to be upgraded, since Fabric
is Python 2 only, but I've upgraded both for consistency.

2. I've disabled tests for now as they fail when the package attempts to
download the "test-require" dependency "fudge". What's the normal way to
stop the Python package doing it's own dependency downloading? Happy to
also package "python2-fudge", but that didn't fix the downloading issue.

Cheers,
Ben

--
Ben Sturmfels

Sturm - Software Engineering
www.sturm.com.au
(03) 9024 2467

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-fabric-python-paramiko-Update-to-1.17.4.patch --]
[-- Type: text/x-patch, Size: 3035 bytes --]

From 521b29606ca4e1a34c9db89fbc22201eea581370 Mon Sep 17 00:00:00 2001
From: Ben Sturmfels <ben@sturm.com.au>
Date: Tue, 11 Apr 2017 00:06:20 +1000
Subject: [PATCH] gnu: Add fabric, python-paramiko: Update to 1.17.4.

* gnu/packages/python.scm (python-paramiko): Update to 1.17.4.
* gnu/packages/admin.scm (fabric): New variable.
---
 gnu/packages/admin.scm  | 34 ++++++++++++++++++++++++++++++++++
 gnu/packages/python.scm |  4 ++--
 2 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index f19bf5a48..d4eaabadd 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -2048,3 +2048,37 @@ environments to get useful results.  Therefore, Intel GPU Tools includes
 low-level tools and tests specifically for development and testing of the
 Intel DRM Driver.")
     (license license:expat)))
+
+(define-public fabric
+  (package
+    (name "fabric")
+    (version "1.13.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "Fabric" version))
+       (sha256
+        (base32
+         "1z17hw0yiqp1blq217zxkg2jzkv8qd79saqhscgsw14mwlcqpwd0"))))
+    (build-system python-build-system)
+    (arguments
+    `(#:tests? #f ; Tests attempt to download Python "fudge" package.
+      #:python ,python-2)) ; Python 2 only.
+    (propagated-inputs
+     ;; Required upgrading python-paramiko 1.17.4 to fix an incompatibility
+     ;; between python-paramiko and newer python-pycrypto. Without this, the
+     ;; `fab` command fails with "ValueError: CTR mode needs counter
+     ;; parameter, not IV". See:
+     ;; https://github.com/paramiko/paramiko/pull/714#issuecomment-281191548.
+     `(("python2-paramiko" ,python2-paramiko)))
+    (home-page "http://fabfile.org")
+    (synopsis "Simple Pythonic remote execution and deployment tool")
+    (description
+     "Fabric is designed to upload files and run shell commands on a number of
+servers in parallel or serially.  These commands are grouped in tasks (which
+are regular Python functions) and specified in a \"fabfile\".
+
+It is similar to Capistrano, except it's implemented in Python and doesn't
+expect you to be deploying Rails applications.  Fabric is a simple, Pythonic
+tool for remote execution and deployment.")
+    (license license:bsd-2)))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 0746af24a..231c62929 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -529,14 +529,14 @@ John the Ripper).")
 (define-public python-paramiko
   (package
     (name "python-paramiko")
-    (version "1.16.0")
+    (version "1.17.4")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "paramiko" version))
        (sha256
         (base32
-         "14k8z7ndc3zk5xivnm4d8lncchx475ll5izpf8vmfbq7rp9yp5rj"))))
+         "1rs2qcmskcmq66q6g5al08wa41l9am0fad5r719m8wf91msyylqw"))))
     (build-system python-build-system)
     (arguments
      '(;; FIXME: One test fails with "EOFError not raised by connect".
-- 
2.12.2


^ permalink raw reply related	[relevance 54%]

* bug#26524: Add conda and dependencies
@ 2017-04-15 18:59 91% Frederick Muriithi
  2017-04-27 15:55 65% ` bug#26524: [PATCH 1/3] gnu: Add python-radon Muriithi Frederick Muriuki
                   ` (3 more replies)
  0 siblings, 4 replies; 200+ results
From: Frederick Muriithi @ 2017-04-15 18:59 UTC (permalink / raw)
  To: 26524

[-- Attachment #1: Type: text/plain, Size: 414 bytes --]

Package: guix-patches
Version: 0.12.0

Dear Guix,

This is bug is to track adding conda and its dependencies. I will be
sending patches adding the dependencies for conda here, until we get
conda in mainline.

I will start with version 4.3.7, being the one I have tested, then I
can update it.

I had sent these to guix-devel@gnu.org, and was informed to send the
patches to guix-patches

-- 
Frederick M. Muriithi

[-- Attachment #2: 0001-gnu-Add-python-radon.patch --]
[-- Type: text/x-patch, Size: 2301 bytes --]

From d603aad94b7de48b9762f7bb4720b61ce2e7274f Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 10:37:24 +0300
Subject: [PATCH 01/20] gnu: Add python-radon

* gnu/packages/python.scm (python-radon): New variable.
---
 gnu/packages/python.scm | 40 +++++++++++++++++++++++++++++++++++++++-
 1 file changed, 39 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 231c629..23b6d86 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -13950,7 +13950,7 @@ recognize TestCases.")
   (package-with-python2 python-mando))
 
 (define-public python-mando-0.3.1
-  ;; python-radon (version 1.5.0) has a requirement
+  ;; python-radon has a requirement
   ;; for mando<0.4,>=0.3
   (package
     (inherit python-mando)
@@ -13965,3 +13965,41 @@ recognize TestCases.")
        (sha256
         (base32
          "17jlkdpqw22z1nyml5ybslilqkzmnk0dxxjml8bfghav1l5hbwd2"))))))
+
+(define-public python-radon
+  ;; xenon has a hard requirement for radon>=1.4.0,<1.5
+  (package
+    (name "python-radon")
+    (version "1.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "radon" version))
+       (sha256
+        (base32
+         "15xyzavfj1zwb5rn07fs2wfi6ccys9b5q0s8hmnpqz712mifl92g"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-colorama" ,python-colorama)
+       ("python-flake8-polyfill"
+        ,python-flake8-polyfill)
+       ("python-mando" ,python-mando-0.3.1)))
+    (native-inputs
+     `(("python-flake8" ,python-flake8)
+       ("python-tox" ,python-tox)
+       ("python-pytest" ,python-pytest)
+       ("python-paramunittest" ,python-paramunittest)))
+    (home-page "https://radon.readthedocs.org/")
+    (synopsis "Code Metrics in Python")
+    (description "Radon is a Python tool which computes various code metrics.  Supported
+ metrics are:
+@itemize @bullet
+@item raw metrics: SLOC, comment lines, blank lines, &c.
+@item Cyclomatic Complexity (i.e.  McCabe’s Complexity)
+@item Halstead metrics (all of them)
+@item the Maintainability Index (a Visual Studio metric)
+@end itemize")
+    (license license:expat)))
+
+(define-public python2-radon
+  (package-with-python2 python-radon))
-- 
2.10.2


[-- Attachment #3: 0002-gnu-Add-python-httpbin.patch --]
[-- Type: text/x-patch, Size: 1550 bytes --]

From 12faf8960349a8b8b8989af3a606dde59941dbab Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 10:45:05 +0300
Subject: [PATCH 02/20] gnu: Add python-httpbin

* gnu/packages/python.scm (python-httpbin): New variable.
---
 gnu/packages/python.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 23b6d86..618b965 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14003,3 +14003,30 @@ recognize TestCases.")
 
 (define-public python2-radon
   (package-with-python2 python-radon))
+
+(define-public python-httpbin
+  (package
+    (name "python-httpbin")
+    (version "0.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "httpbin" version))
+       (sha256
+        (base32
+         "1dc92lnk846hpilslrqnr63x55cxll4qx88gif8fm521gv9cbyvr"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-decorator" ,python-decorator)
+       ("python-flask" ,python-flask)
+       ("python-itsdangerous" ,python-itsdangerous)
+       ("python-markupsafe" ,python-markupsafe)
+       ("python-six" ,python-six)))
+    (home-page "https://github.com/Runscope/httpbin")
+    (synopsis "HTTP Request and Response Service")
+    (description "HTTP Request and Response Service which covers all kinds of HTTP
+scenarios")
+    (license license:expat)))
+
+(define-public python2-httpbin
+  (package-with-python2 python-httpbin))
-- 
2.10.2


[-- Attachment #4: 0003-gnu-Add-python-pytest-httpbin.patch --]
[-- Type: text/x-patch, Size: 1576 bytes --]

From e9764356e3601c2927021eb5b687bc432b1eff20 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 10:55:59 +0300
Subject: [PATCH 03/20] gnu: Add python-pytest-httpbin

* gnu/packages/python.scm (python-pytest-httpbin): New variable.
---
 gnu/packages/python.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 618b965..73d217b 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14030,3 +14030,31 @@ scenarios")
 
 (define-public python2-httpbin
   (package-with-python2 python-httpbin))
+
+(define-public python-pytest-httpbin
+  ;; httpretty requires pytest-httpbin==0.0.7
+  (package
+    (name "python-pytest-httpbin")
+    (version "0.0.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-httpbin" version))
+       (sha256
+        (base32
+         "08ghq923dn33rllip3vap2p9fb680g0i96jdn5lcpfy8amq8mbq3"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-six" ,python-six)
+       ("python-httpbin" ,python-httpbin)
+       ("python-pytest" ,python-pytest)))
+    (home-page
+     "https://github.com/kevin1024/pytest-httpbin")
+    (synopsis
+     "Easily test your HTTP library against a local copy of httpbin")
+    (description
+     "Easily test your HTTP library against a local copy of httpbin")
+    (license license:expat)))
+
+(define-public python2-pytest-httpbin
+  (package-with-python2 python-pytest-httpbin))
-- 
2.10.2


[-- Attachment #5: 0004-gnu-Add-python-sphinx-rtd-theme-0.1.9.patch --]
[-- Type: text/x-patch, Size: 1385 bytes --]

From 1f4c44b1d47c2cc75cef75704ccd1cc386d5a862 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 11:02:10 +0300
Subject: [PATCH 04/20] gnu: Add python-sphinx-rtd-theme-0.1.9

* gnu/packages/python.scm (python-sphinx-rtd-theme-0.1.9) New variable
---
 gnu/packages/python.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 73d217b..631b6fd 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14058,3 +14058,24 @@ scenarios")
 
 (define-public python2-pytest-httpbin
   (package-with-python2 python-pytest-httpbin))
+
+(define-public python-sphinx-rtd-theme-0.1.9
+  ;; python-httpretty has a hard requirement for
+  ;; python-sphinx-rtd-theme version 0.1.9
+  (package
+    (inherit python-sphinx-rtd-theme)
+    (name "python-sphinx-rtd-theme")
+    (version "0.1.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "sphinx_rtd_theme" version))
+       (sha256
+        (base32
+         "18d0r63w7jpdrk4q5qy26n08vdlmnj9sar93akwjphyambw4cf17"))))
+    (propagated-inputs
+     `(("python-sphinx" ,python-sphinx-1.5.3)
+       ("python-snowballstemmer" ,python-snowballstemmer)))))
+
+(define-public python2-sphinx-rtd-theme-0.1.9
+  (package-with-python2 python-sphinx-rtd-theme-0.1.9))
-- 
2.10.2


[-- Attachment #6: 0005-gnu-Add-python-sphinx-1.3.3.patch --]
[-- Type: text/x-patch, Size: 2024 bytes --]

From 77e2a627333baa82d4f83882e5bda629e5f2a381 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 11:06:00 +0300
Subject: [PATCH 05/20] gnu: Add python-sphinx-1.3.3

* gnu/packages/python.scm (python-sphinx-1.3.3): New variable.
---
 gnu/packages/python.scm | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 631b6fd..a849e70 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14079,3 +14079,40 @@ scenarios")
 
 (define-public python2-sphinx-rtd-theme-0.1.9
   (package-with-python2 python-sphinx-rtd-theme-0.1.9))
+
+(define-public python-sphinx-1.3.3
+  ;; python-httpretty has a hard requirement for
+  ;; sphinx == 1.3.3
+  (package
+    (inherit python-sphinx)
+    (name "python-sphinx")
+    (version "1.3.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "Sphinx" version))
+       (sha256
+        (base32
+         "1n3h08qxfx9bywv7nhjz0p5bpp1xgy4nzalxr3mx6syra7rvyxs0"))))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+                  (lambda _
+                    ;; Requires Internet access.
+                    (delete-file "tests/test_build.py")
+                    (delete-file "tests/test_build_applehelp.py")
+                    (delete-file "tests/test_i18n.py")
+                    (delete-file "tests/test_build_html.py")
+                    (delete-file "tests/test_build_texinfo.py")
+                    (delete-file "tests/test_build_latex.py")
+                    (zero? (system* "make" "test")))))))
+    (native-inputs
+     `(("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
+       ("python-nose" ,python-nose)
+       ("graphviz" ,graphviz)
+       ("python-html5lib" ,python-html5lib)
+       ("python-mock" ,python-mock)))))
+
+(define-public python2-sphinx-1.3.3
+  (package-with-python2 python-sphinx-1.3.3))
-- 
2.10.2


[-- Attachment #7: 0006-gnu-Add-python-coverage-4.0.3.patch --]
[-- Type: text/x-patch, Size: 1148 bytes --]

From 075fec8683fec552e030c4c5f4de92dd3d4942eb Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 11:08:32 +0300
Subject: [PATCH 06/20] gnu: Add python-coverage-4.0.3

* gnu/packages/python.scm (python-coverage-4.0.3): New variable.
---
 gnu/packages/python.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index a849e70..1ec1744 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14116,3 +14116,20 @@ scenarios")
 
 (define-public python2-sphinx-1.3.3
   (package-with-python2 python-sphinx-1.3.3))
+
+(define-public python-coverage-4.0.3
+  ;; httpretty has a hard requirement for coverage==4.0.3
+  (package
+    (inherit python-coverage)
+    (name "python-coverage")
+    (version "4.0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "coverage" version))
+       (sha256
+        (base32
+         "0qjlja8ny4gcfp8abqfwdrvr8qw9kr69lkja0b4cqqbsdmdjgcc5"))))))
+
+(define-public python2-coverage-4.0.3
+  (package-with-python2 python-coverage-4.0.3))
-- 
2.10.2


[-- Attachment #8: 0007-gnu-Add-python-urllib3-1.12.patch --]
[-- Type: text/x-patch, Size: 1078 bytes --]

From 851864f62e82a10720cfe24642d22790f662f6bc Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 11:12:38 +0300
Subject: [PATCH 07/20] gnu: Add python-urllib3-1.12

* gnu/packages/python.scm (python-urllib3-1.12): New variable.
---
 gnu/packages/python.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 1ec1744..9cb27d8 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14133,3 +14133,19 @@ scenarios")
 
 (define-public python2-coverage-4.0.3
   (package-with-python2 python-coverage-4.0.3))
+
+(define-public python-urllib3-1.12
+  (package
+    (inherit python-urllib3)
+    (name "python-urllib3")
+    (version "1.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "urllib3" version))
+       (sha256
+        (base32
+         "1ikj72kd4cdcq7pmmcd5p6s9dvp7wi0zw01635v4xzkid5vi598f"))))))
+
+(define-public python2-urllib3-1.12
+  (package-with-python2 python-urllib3-1.12))
-- 
2.10.2


[-- Attachment #9: 0008-gnu-Add-python-sure.patch --]
[-- Type: text/x-patch, Size: 1624 bytes --]

From 45f52eee27ac62a7f2b5bc2acbd289d0151a7581 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 11:23:33 +0300
Subject: [PATCH 08/20] gnu: Add python-sure

* gnu/package/python.scm (python-sure): New variable.
---
 gnu/packages/python.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 9cb27d8..951b7c7 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14149,3 +14149,33 @@ scenarios")
 
 (define-public python2-urllib3-1.12
   (package-with-python2 python-urllib3-1.12))
+
+(define-public python-sure
+  (package
+    ;; httpretty has a hard requirement for sure==1.2.24
+    (name "python-sure")
+    (version "1.2.24")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "sure" version))
+       (sha256
+        (base32
+         "1lyjq0rvkbv585dppjdq90lbkm6gyvag3wgrggjzyh7cpyh5c12w"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-mock" ,python-mock)
+       ("python-six" ,python-six)))
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (home-page
+     "http://github.com/gabrielfalcao/sure")
+    (synopsis
+     "Sure is an automated testing library in python for python")
+    (description
+     "Sure is a python library for python that leverages a DSL for writing assertions.
+Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}")
+    (license license:gpl3)))
+
+(define-public python2-sure
+  (package-with-python2 python-sure))
-- 
2.10.2


[-- Attachment #10: 0009-gnu-Add-python-couleur.patch --]
[-- Type: text/x-patch, Size: 1666 bytes --]

From fc1780bf7930de8c6b96966e19e7ba4aecf52589 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 11:35:40 +0300
Subject: [PATCH 09/20] gnu: Add python-couleur

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

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 951b7c7..148ed74 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14179,3 +14179,32 @@ Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}")
 
 (define-public python2-sure
   (package-with-python2 python-sure))
+
+(define-public python-couleur
+  (package
+    (name "python-couleur")
+    (version "0.6.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "couleur" version))
+       (sha256
+        (base32
+         "1qqaxyqz74wvid0cr119dhcwz0h0if5b5by44zl49pd5z65v58k1"))))
+    (build-system python-build-system)
+    (arguments
+     `(;; The package builds successfully with python3, but the
+       ;; tests are python-2 dependent, (strings of the form
+       ;; ur'val-of-str' and imports of python-2 specific
+       ;; modules)
+       #:tests? #f))
+    (home-page
+     "http://github.com/gabrielfalcao/couleur")
+    (synopsis
+     "ANSI terminal tool for python, colored shell and other handy fancy features")
+    (description
+     "Couleur is a handy tool to play around with ANSI features in a unix terminal.")
+    (license license:asl2.0)))
+
+(define-public python2-couleur
+  (package-with-python2 python-couleur))
-- 
2.10.2


[-- Attachment #11: 0010-gnu-Add-python-misaka.patch --]
[-- Type: text/x-patch, Size: 2106 bytes --]

From f6c4bfbe8a463181c43577e4a76b40be4b654110 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 11:41:20 +0300
Subject: [PATCH 10/20] gnu: Add python-misaka

* gnu/packages/python.scm (python-misaka): New variable.
---
 gnu/packages/python.scm | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 148ed74..0e3860f 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14208,3 +14208,39 @@ Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}")
 
 (define-public python2-couleur
   (package-with-python2 python-couleur))
+
+(define-public python-misaka
+  (package
+    (name "python-misaka")
+    (version "2.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "misaka" version))
+       (sha256
+        (base32
+         "011nyw2xnwp9xzqzrp6qmqvfc5xg5165ryd9gmmh8h5q38wg2vik"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-cffi" ,python-cffi)))
+    (arguments
+     `(;; Line 37 of setup.py calls self.run_command('develop')
+       ;; in the 'check' phase. This command seems to be trying
+       ;; to write to
+       ;; /gnu/store/3aw9x...-python-3.5.3/lib/python3.5/site-packages/
+       ;; which is not the appropriate output directory, and unlike the
+       ;; install command, passing the --prefix or --install-dir
+       ;; arguments to the test command fails.
+       ;; This seems to be required by easy_install, to run the tests
+       #:tests? #f))
+    (home-page "https://github.com/FSX/misaka")
+    (synopsis
+     "Misaka is a CFFI binding for Hoedown, a markdown parsing library")
+    (description
+     "Misaka is a CFFI-based binding for Hoedown, a fast markdown processing library
+written in C.  It features a fast HTML renderer and functionality to make custom renderers
+(e.g. man pages or LaTeX).")
+    (license license:expat)))
+
+(define-public python2-misaka
+  (package-with-python2 python-misaka))
-- 
2.10.2


[-- Attachment #12: 0011-gnu-Add-python-steadymark.patch --]
[-- Type: text/x-patch, Size: 1916 bytes --]

From bfffb715e7311cded920fcbcd09bd1d856a1b576 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 11:57:45 +0300
Subject: [PATCH 11/20] gnu: Add python-steadymark

* gnu/packages/python.scm (python-steadymark): New variable.
---
 gnu/packages/python.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 0e3860f..9bae47b 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14244,3 +14244,37 @@ written in C.  It features a fast HTML renderer and functionality to make custom
 
 (define-public python2-misaka
   (package-with-python2 python-misaka))
+
+(define-public python-steadymark
+  (package
+    (name "python-steadymark")
+    (version "0.7.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "steadymark" version))
+       (sha256
+        (base32
+         "1640i9g8dycql3cc8j0bky0jkzj0q39blfbp4lsgpkprkfgcdk8v"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-couleur" ,python-couleur)
+       ("python-sure" ,python-sure)
+       ("python-misaka" ,python-misaka)))
+    (arguments
+     `(;; These tests seem to depend on python-couleurs tests, which
+       ;; are dependent on python2-specific features, preventing those,
+       ;; and hence, these tests from running
+       #:tests? #f))
+    (home-page
+     "http://github.com/gabrielfalcao/steadymark")
+    (synopsis
+     "Markdown-based test runner for python. Good for github projects")
+    (description
+     "Steadymark allows testing of code snippets in documentation written in
+github-flavoured markdown, to ensure that the examples in the documentation are up-to-date
+and correct.")
+    (license license:expat)))
+
+(define-public python2-steadymark
+  (package-with-python2 python-steadymark))
-- 
2.10.2


[-- Attachment #13: 0012-gnu-Add-python-requests-2.8.1.patch --]
[-- Type: text/x-patch, Size: 1109 bytes --]

From 104f00dbac173a64b88c7a31c9a9a18d1612745b Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 12:01:41 +0300
Subject: [PATCH 12/20] gnu: Add python-requests-2.8.1

* gnu/packages/python.scm (python-requests-2.8.1) New variable.
---
 gnu/packages/python.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 9bae47b..82258b5 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14278,3 +14278,19 @@ and correct.")
 
 (define-public python2-steadymark
   (package-with-python2 python-steadymark))
+
+(define-public python-requests-2.8.1
+  ;; httpretty has a hard requirement for requests==2.8.1
+  (package
+    (inherit python-requests)
+    (version "2.8.1")
+  (source
+    (origin
+      (method url-fetch)
+      (uri (pypi-uri "requests" version))
+      (sha256
+        (base32
+         "0ny2nr1sqr4hcn3903ghmh7w2yni8shlfv240a8c9p6wyidqvzl4"))))))
+
+(define-public python2-requests-2.8.1
+  (package-with-python2 python-requests-2.8.1))
-- 
2.10.2


[-- Attachment #14: 0013-gnu-Add-python-rednose-0.4.3.patch --]
[-- Type: text/x-patch, Size: 1138 bytes --]

From 84249c3e772c2381726532973ee89aaf4e9fbd08 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 12:05:46 +0300
Subject: [PATCH 13/20] gnu: Add python-rednose-0.4.3

* gnu/packages/python.scm (python-rednose-0.4.3): New variable.
---
 gnu/packages/python.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 82258b5..7aba1ca 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14294,3 +14294,20 @@ and correct.")
 
 (define-public python2-requests-2.8.1
   (package-with-python2 python-requests-2.8.1))
+
+(define-public python-rednose-0.4.3
+  ;; httpretty has a hard requirement for rednose==0.4.3
+  (package
+    (inherit python-rednose)
+    (name "python-rednose")
+  (version "0.4.3")
+  (source
+    (origin
+      (method url-fetch)
+      (uri (pypi-uri "rednose" version))
+      (sha256
+        (base32
+         "1mv4aknbl80wday41924l1gfqia2n6q7h5l4n8irlmn5fh2x9rbc"))))))
+
+(define-public python2-rednose-0.4.3
+  (package-with-python2 python-rednose-0.4.3))
-- 
2.10.2


[-- Attachment #15: 0014-gnu-Add-python-nose-randomly.patch --]
[-- Type: text/x-patch, Size: 2328 bytes --]

From 19a9ecacf1b90447bedd7ede85f686dbffb464fb Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 12:17:47 +0300
Subject: [PATCH 14/20] gnu: Add python-nose-randomly

* gnu/packages/python.scm (python-nose-randomly): New variable.
---
 gnu/packages/python.scm | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 7aba1ca..37b736e 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14311,3 +14311,41 @@ and correct.")
 
 (define-public python2-rednose-0.4.3
   (package-with-python2 python-rednose-0.4.3))
+
+(define-public python-nose-randomly
+  (package
+    (name "python-nose-randomly")
+    (version "1.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "nose-randomly" version))
+       (sha256
+        (base32
+         "17iggrvhvxzgci34x14x31i1ym8f7jdkklmq1yfnwjcglh7z70hk"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-nose" ,python-nose)))
+    (home-page
+     "https://github.com/adamchainz/nose-randomly")
+    (synopsis
+     "Nose plugin to randomly order tests and control random.seed")
+    (description
+     "Nose plugin to randomly order tests and control random.seed.  It has the following
+features:
+@itemize @bullet
+@item Randomly shuffles the submodules, @code{TestCase} classes + test functions when
+loading a module of tests.
+@item Randomly shuffles the test functions inside a @code{TestCase} when loading it.
+@item Resets @code{random.seed()} at the start of every test case and test to a fixed
+number - this defaults to @code{time.time()} from the start of your test run, but you can
+pass in @code{--randomly-seed} to repeat a randomness-induced failure.
+@item If @code{factory boy} is installed, its random state is reset at the start of every
+test.  This allows for repeatable use of its random @code{fuzzy} features.
+@item If @code{faker} is installed, its random state is reset at the start of every test.
+This is also for repeatable fuzzy data in tests - factory boy uses faker for lots of data.
+@end itemize")
+    (license license:bsd-3)))
+
+(define-public python2-nose-randomly
+  (package-with-python2 python-nose-randomly))
-- 
2.10.2


[-- Attachment #16: 0015-gnu-Add-python-pbr-2.0.0.patch --]
[-- Type: text/x-patch, Size: 1160 bytes --]

From 13cd1e20ab3a525f9655b6326bd9e834c9064abc Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 12:21:05 +0300
Subject: [PATCH 15/20] gnu: Add python-pbr-2.0.0

* gnu/packages/python.scm (python-pbr-2.0.0): New variable.
---
 gnu/packages/python.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 37b736e..9b2debc 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14349,3 +14349,20 @@ This is also for repeatable fuzzy data in tests - factory boy uses faker for lot
 
 (define-public python2-nose-randomly
   (package-with-python2 python-nose-randomly))
+
+(define-public python-pbr-2.0.0
+  ;; mock-1.3.0 has a requirement for pbr>=1.3
+  (package
+    (inherit python-pbr)
+    (name "python-pbr")
+  (version "2.0.0")
+  (source
+    (origin
+      (method url-fetch)
+      (uri (pypi-uri "pbr" version))
+      (sha256
+        (base32
+         "0p96pbx32x8fh250y5s177h3vm012kq225avh7gp1l5g56sjvk8c"))))))
+
+(define-public python2-pbr-2.0.0
+  (package-with-python2 python-pbr-2.0.0))
-- 
2.10.2


[-- Attachment #17: 0016-gnu-Add-python-mock-1.3.0.patch --]
[-- Type: text/x-patch, Size: 1232 bytes --]

From e1a56e8d2f59441cd6ad08c67d514c41ea66e396 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 12:24:03 +0300
Subject: [PATCH 16/20] gnu: Add python-mock-1.3.0

* gnu/packages/python.scm (python-mock-1.3.0): New variable.
---
 gnu/packages/python.scm | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 9b2debc..f2355bd 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14366,3 +14366,22 @@ This is also for repeatable fuzzy data in tests - factory boy uses faker for lot
 
 (define-public python2-pbr-2.0.0
   (package-with-python2 python-pbr-2.0.0))
+
+(define-public python-mock-1.3.0
+  ;; httpretty has a hard requirement for mock==1.3.0
+  (package
+    (inherit python-mock)
+    (name "python-mock")
+  (version "1.3.0")
+  (source
+    (origin
+      (method url-fetch)
+      (uri (pypi-uri "mock" version))
+      (sha256
+        (base32
+         "1xm0xkaz8d8d26kdk09f2n9vn543ssd03vmpkqlmgq3crjz7s90y"))))
+  (propagated-inputs
+   `(("python-pbr" ,python-pbr-2.0.0)))))
+
+(define-public python2-mock-1.3.0
+  (package-with-python2 python-mock-1.3.0))
-- 
2.10.2


[-- Attachment #18: 0017-gnu-Add-python-httpretty.patch --]
[-- Type: text/x-patch, Size: 2455 bytes --]

From fd836c52504c472d3480bd54a6446a8977c82cb3 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 12:31:00 +0300
Subject: [PATCH 17/20] gnu: Add python-httpretty

* gnu/packages/python.scm (python-httpretty): New variable.
---
 gnu/packages/python.scm | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index f2355bd..71ea495 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14385,3 +14385,47 @@ This is also for repeatable fuzzy data in tests - factory boy uses faker for lot
 
 (define-public python2-mock-1.3.0
   (package-with-python2 python-mock-1.3.0))
+
+(define-public python-httpretty
+  (package
+    (name "python-httpretty")
+    (version "0.8.14")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "httpretty" version))
+       (sha256
+        (base32
+         "0vlp5qkyw3pxwwsg7xmdcfh1csvypvaz4m6abida8s4xmjxpdhc3"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme-0.1.9)
+       ("python-sphinx" ,python-sphinx-1.3.3)
+       ("python-coverage" ,python-coverage-4.0.3)
+       ("python-tornado" ,python-tornado)
+       ("python-urllib3" ,python-urllib3-1.12)
+       ("python-sure" ,python-sure)
+       ("python-steadymark" ,python-steadymark)
+       ("python-requests" ,python-requests-2.8.1)
+       ("python-rednose" ,python-rednose-0.4.3)
+       ("python-nose-randomly" ,python-nose-randomly)
+       ("python-mock" ,python-mock-1.3.0)
+       ("python-misaka" ,python-misaka)
+       ("python-pytest-httpbin" ,python-pytest-httpbin)))
+    (arguments
+     `(;; One of ipdb's dependency keeps failing with a response
+       ;; of 410, "Gone"
+       ;; The dependency seems to have a name "texlive-texmf-2016"
+       ;; and seems to be one of texlive's dependencies
+       ;; As such, the tests for this will fail due to the missing
+       ;; dependency ("python-ipdb" ,python-ipdb)
+       #:tests? #f))
+    (home-page
+     "http://github.com/gabrielfalcao/httpretty")
+    (synopsis "HTTP client mock for Python")
+    (description "@code{httpretty} is a helper for faking web requests, inspired by Ruby's
+@code{fakeweb}.")
+    (license license:expat)))
+
+(define-public python2-httpretty
+  (package-with-python2 python-httpretty))
-- 
2.10.2


[-- Attachment #19: 0018-gnu-Add-python-pyyaml-3.11.patch --]
[-- Type: text/x-patch, Size: 1161 bytes --]

From 3d1abf2e7f036f5b3f5bc616a841d0d47a95f2e8 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 12:35:08 +0300
Subject: [PATCH 18/20] gnu: Add python-pyyaml-3.11

* gnu/packages/python.scm (python-pyyaml-3.11): New variable.
---
 gnu/packages/python.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 71ea495..96849b5 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14429,3 +14429,20 @@ This is also for repeatable fuzzy data in tests - factory boy uses faker for lot
 
 (define-public python2-httpretty
   (package-with-python2 python-httpretty))
+
+(define-public python-pyyaml-3.11
+  ;; Required by python-xenon
+  (package
+    (inherit python-pyyaml)
+    (name "python-pyyaml")
+    (version "3.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "PyYAML" version))
+       (sha256
+        (base32
+         "1s26125vfnskng58ym37xhwv8v0mm95b2cwbjfag8prfhy596v63"))))))
+
+(define-public python2-pyyaml-3.11
+  (package-with-python2 python-pyyaml-3.11))
-- 
2.10.2


[-- Attachment #20: 0019-gnu-Add-python-requests-2.10.0.patch --]
[-- Type: text/x-patch, Size: 1193 bytes --]

From 84dd30d0ffecd9c97991702d10c84b204eb9fd56 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 12:38:12 +0300
Subject: [PATCH 19/20] gnu: Add python-requests-2.10.0

* gnu/packages/python.scm (python-requests-2.10.0): New variable.
---
 gnu/packages/python.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 96849b5..fe911de 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14446,3 +14446,20 @@ This is also for repeatable fuzzy data in tests - factory boy uses faker for lot
 
 (define-public python2-pyyaml-3.11
   (package-with-python2 python-pyyaml-3.11))
+
+(define-public python-requests-2.10.0
+  ;; Required by python-xenon
+  (package
+    (inherit python-requests)
+    (name "python-requests")
+    (version "2.10.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "requests" version))
+       (sha256
+        (base32
+         "0m2vaasjdhrsf9nk05q0bybqw0w4w4p3p4vaw7730w8mi1bq3wb3"))))))
+
+(define-public python2-requests-2.10.0
+  (package-with-python2 python-requests-2.10.0))
-- 
2.10.2


[-- Attachment #21: 0020-gnu-Add-python-xenon.patch --]
[-- Type: text/x-patch, Size: 1969 bytes --]

From afc29873b09bfb0c69f2d89749521c972f73c197 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Fri, 14 Apr 2017 12:41:43 +0300
Subject: [PATCH 20/20] gnu: Add python-xenon

* gnu/packages/python.scm (python-xenon): New variable.
---
 gnu/packages/python.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index fe911de..a0dc4fb 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14463,3 +14463,36 @@ This is also for repeatable fuzzy data in tests - factory boy uses faker for lot
 
 (define-public python2-requests-2.10.0
   (package-with-python2 python-requests-2.10.0))
+
+(define-public python-xenon
+  (package
+    (name "python-xenon")
+    (version "0.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "xenon" version))
+       (sha256
+        (base32
+         "1c03nis488ls50cgcq7ghbj55nxsi6a9683lsvg6z6vaj4smc8g8"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pyyaml" ,python-pyyaml-3.11)
+       ("python-radon" ,python-radon)
+       ("python-requests" ,python-requests-2.10.0)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-httpretty" ,python-httpretty)
+       ("python-flake8" ,python-flake8)
+       ("python-tox" ,python-tox)))
+    (home-page "https://xenon.readthedocs.org/")
+    (synopsis
+     "Monitor code metrics for Python on your CI server")
+    (description
+     "Xenon is a monitoring tool based on Radon.  It monitors code’s complexity.  Ideally,
+ Xenon is run every time code is committed.  Through command line options, various
+ thresholds can be set for the complexity of code.  It will fail (i.e.  it will exit with
+ a non-zero exit code) when any of these requirements is not met")
+    (license license:expat)))
+
+(define-public python2-xenon
+  (package-with-python2 python-xenon))
-- 
2.10.2


^ permalink raw reply related	[relevance 91%]

* bug#26554: [PATCH] Enable tests for package fabric
@ 2017-04-18 16:35 47% Ben Sturmfels
  0 siblings, 0 replies; 200+ results
From: Ben Sturmfels @ 2017-04-18 16:35 UTC (permalink / raw)
  To: 26554

[-- Attachment #1: Type: text/plain, Size: 376 bytes --]

Hi Folks,

The attached patches add the missing "python2-nose" test requirement for
the "fabric" package and enable fabric's tests.

I had to patch fabric's tests to avoid using the `fab` executable that
is created dynamically during installation; instead using `python -m
fabric`.

Regards,
Ben

--
Ben Sturmfels

Sturm - Software Engineering
www.sturm.com.au
(03) 9024 2467

[-- Attachment #2: 0001-gnu-Add-python-fudge.patch --]
[-- Type: text/x-patch, Size: 2380 bytes --]

From 5cdd66a7b064108094d871e9af732739c1ad598e Mon Sep 17 00:00:00 2001
From: Ben Sturmfels <ben@sturm.com.au>
Date: Wed, 19 Apr 2017 02:16:18 +1000
Subject: [PATCH 1/2] gnu: Add python-fudge.
To: guix-patches@gnu.org

* gnu/packages/python.scm (python-fudge): New variable.
---
 gnu/packages/python.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 8cd433a93..aa014db36 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -37,6 +37,7 @@
 ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
 ;;; Copyright © 2017 humanitiesNerd <catonano@gmail.com>
+;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -13965,3 +13966,36 @@ recognize TestCases.")
        (sha256
         (base32
          "17jlkdpqw22z1nyml5ybslilqkzmnk0dxxjml8bfghav1l5hbwd2"))))))
+
+(define-public python-fudge
+  (package
+    (name "python-fudge")
+    ;; 0.9.6 is the latest version suitable for testing the "fabric" Python 2
+    ;; package, which is currently the only use of this package.
+    (version "0.9.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "fudge" version))
+       (sha256
+        (base32
+         "185ia3vr3qk4f2s1a9hdxb8ci4qc0x0xidrad96pywg8j930qs9l"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f))     ;XXX: Tests require the NoseJS Python package.
+    (home-page "https://github.com/fudge-py/fudge")
+    (synopsis "Replace real objects with fakes/mocks/stubs while testing")
+    (description
+     "Fudge is a Python module for using fake objects (mocks and stubs) to
+test real ones.
+
+In readable Python code, you declare the methods available on your fake object
+and how they should be called.  Then you inject that into your application and
+start testing.  This declarative approach means you don’t have to record and
+playback actions and you don’t have to inspect your fakes after running code.
+If the fake object was used incorrectly then you’ll see an informative
+exception message with a traceback that points to the culprit.")
+    (license license:expat)))
+
+(define-public python2-fudge
+  (package-with-python2 python-fudge))
-- 
2.12.2


[-- Attachment #3: 0002-gnu-fabric-Enable-tests.patch --]
[-- Type: text/x-patch, Size: 3346 bytes --]

From 10ae75888ee088776617568434af51b59ad8e005 Mon Sep 17 00:00:00 2001
From: Ben Sturmfels <ben@sturm.com.au>
Date: Wed, 19 Apr 2017 02:24:57 +1000
Subject: [PATCH 2/2] gnu: fabric: Enable tests.
To: guix-patches@gnu.org

* gnu/packages/admin.scm (fabric): Specify test dependencies.
---
 gnu/packages/admin.scm                  | 18 +++++++++++-------
 gnu/packages/patches/fabric-tests.patch | 15 +++++++++++++++
 2 files changed, 26 insertions(+), 7 deletions(-)
 create mode 100644 gnu/packages/patches/fabric-tests.patch

diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 4daaddcfe..8f4a4cd41 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -12,10 +12,10 @@
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Peter Feigl <peter.feigl@nexoid.at>
 ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
-;;; Coypright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
-;;; Coypright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Coypright © 2016 John Darrington <jmd@gnu.org>
-;;; Coypright © 2017 Ben Sturmfels <ben@sturm.com.au>
+;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
+;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016 John Darrington <jmd@gnu.org>
+;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2060,11 +2060,15 @@ Intel DRM Driver.")
        (uri (pypi-uri "Fabric" version))
        (sha256
         (base32
-         "1z17hw0yiqp1blq217zxkg2jzkv8qd79saqhscgsw14mwlcqpwd0"))))
+         "1z17hw0yiqp1blq217zxkg2jzkv8qd79saqhscgsw14mwlcqpwd0"))
+       (patches (search-patches "fabric-tests.patch"))))
     (build-system python-build-system)
     (arguments
-     `(#:tests? #f     ;XXX: Tests attempt to download Python "fudge" package.
-       #:python ,python-2))                       ;Python 2 only
+     `(#:python ,python-2))                       ;Python 2 only
+    (native-inputs
+     `(("python2-fudge" ,python2-fudge) ; Requires < 1.0
+       ("python2-jinja2" ,python2-jinja2) ; Requires < 3.0
+       ("python2-nose" ,python2-nose))) ; Requires < 2.0
     (propagated-inputs
      ;; Required upgrading python-paramiko 1.17.4 to fix an incompatibility
      ;; between python-paramiko and newer python-pycrypto. Without this, the
diff --git a/gnu/packages/patches/fabric-tests.patch b/gnu/packages/patches/fabric-tests.patch
new file mode 100644
index 000000000..4a0ca9f8f
--- /dev/null
+++ b/gnu/packages/patches/fabric-tests.patch
@@ -0,0 +1,15 @@
+The `fab` excecutable doesn't exist during the test phase as it is created
+dynamically during installation. Refer to the equivalent Python module
+directly.
+
+--- a/tests/test_utils.py
++++ b/tests/test_utils.py
+@@ -93,7 +93,7 @@
+     # perform when they are allowed to bubble all the way to the top. So, we
+     # invoke a subprocess and look at its stderr instead.
+     with quiet():
+-        result = local("fab -f tests/support/aborts.py kaboom", capture=True)
++        result = local("python -m fabric -f tests/support/aborts.py kaboom", capture=True)
+     # When error in #1318 is present, this has an extra "It burns!" at end of
+     # stderr string.
+     eq_(result.stderr, "Fatal error: It burns!\n\nAborting.")
\ No newline at end of file
-- 
2.12.2


^ permalink raw reply related	[relevance 47%]

* bug#26613: Add pootle
@ 2017-04-22 21:13 83% Julien Lepiller
    0 siblings, 1 reply; 200+ results
From: Julien Lepiller @ 2017-04-22 21:13 UTC (permalink / raw)
  To: 26613

[-- Attachment #1: Type: text/plain, Size: 185 bytes --]

Hi,

here are patches that add pootle, a translation server written in
django. Some patches modify packages that have several dependents, so
it should probably go to core-updates first.

[-- Attachment #2: 0001-gnu-python-pytest-runner-Update-to-2.11.1.patch --]
[-- Type: text/x-patch, Size: 1109 bytes --]

From f57ed854a7a0a802934f76ff2ff622c907277e98 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 12:14:06 +0200
Subject: [PATCH 01/34] gnu: python-pytest-runner: Update to 2.11.1.

* gnu/packages/python.scm (python-pytest-runner)
(python2-pytest-runner): Update to 2.11.1.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e51405bd9..142de0984 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1879,14 +1879,14 @@ supports coverage of subprocesses.")
 (define-public python-pytest-runner
   (package
     (name "python-pytest-runner")
-    (version "2.6.2")
+    (version "2.11.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pytest-runner" version))
        (sha256
         (base32
-         "1nwcqx0l3fv52kv8526wy8ypzghbq96c96di318d98d3wh7a8xg7"))))
+         "1cw978kqqcq916b9gfns1qjqvg33c5ail5jhw9054dsynkm32flq"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
-- 
2.12.2


[-- Attachment #3: 0002-gnu-Add-python-pytest-warnings.patch --]
[-- Type: text/x-patch, Size: 1491 bytes --]

From ccabbd285e637cdb32fc35afcb51fd8d4272aac5 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 21:20:09 +0200
Subject: [PATCH 02/34] gnu: Add python-pytest-warnings.

* gnu/packages/python.scm (python-pytest-warnings, python2-pytest-warnings):
New variables.
---
 gnu/packages/python.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 142de0984..9a38fbafd 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -13999,3 +13999,26 @@ exception message with a traceback that points to the culprit.")
 
 (define-public python2-fudge
   (package-with-python2 python-fudge))
+
+(define-public python-pytest-warnings
+  (package
+    (name "python-pytest-warnings")
+    (version "0.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-warnings" version))
+       (sha256
+        (base32
+         "0gf2dpahpl5igb7jh1sr9acj3z3gp7zahqdqb69nk6wx01c8kc1g"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("pytest" ,python-pytest-3.0)))
+    (home-page "https://github.com/fschulze/pytest-warnings")
+    (synopsis "Pytest plugin to list Python warnings in pytest report")
+    (description
+     "Pytest plugin to list Python warnings in pytest report.")
+    (license license:expat)))
+
+(define-public python2-pytest-warnings
+  (package-with-python2 python-pytest-warnings))
-- 
2.12.2


[-- Attachment #4: 0003-gnu-Add-python-pytest-catchlog.patch --]
[-- Type: text/x-patch, Size: 1566 bytes --]

From 27b9b1a020841c80fbf39bc81b7c665a462d0343 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 22:14:02 +0200
Subject: [PATCH 03/34] gnu: Add python-pytest-catchlog.

* gnu/packages/python.scm (python-pytest-catchlog, python2-pytest-catchlog):
New variables.
---
 gnu/packages/python.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 9a38fbafd..ef6c2ac5f 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14022,3 +14022,28 @@ exception message with a traceback that points to the culprit.")
 
 (define-public python2-pytest-warnings
   (package-with-python2 python-pytest-warnings))
+
+(define-public python-pytest-catchlog
+  (package
+    (name "python-pytest-catchlog")
+    (version "1.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-catchlog" version ".zip"))
+       (sha256
+        (base32
+         "1w7wxh27sbqwm4jgwrjr9c2gy384aca5jzw9c0wzhl0pmk2mvqab"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (propagated-inputs
+     `(("pytest" ,python-pytest-3.0)))
+    (home-page "https://github.com/fschulze/pytest-warnings")
+    (synopsis "Pytest plugin to catch log messages")
+    (description
+     "Pytest plugin to catch log messages. This is a fork of pytest-capturelog.")
+    (license license:expat)))
+
+(define-public python2-pytest-catchlog
+  (package-with-python2 python-pytest-catchlog))
-- 
2.12.2


[-- Attachment #5: 0004-gnu-Add-python-utils.patch --]
[-- Type: text/x-patch, Size: 1603 bytes --]

From f676c9d80e49d12eedd53a5fe65fcc31c9823863 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 12:31:55 +0200
Subject: [PATCH 04/34] gnu: Add python-utils.

* gnu/packages/python.scm (python-utils, python2-utils): New variables.
---
 gnu/packages/python.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index ef6c2ac5f..9a787a3fc 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14047,3 +14047,28 @@ exception message with a traceback that points to the culprit.")
 
 (define-public python2-pytest-catchlog
   (package-with-python2 python-pytest-catchlog))
+
+(define-public python-utils
+  (package
+    (name "python-utils")
+    (version "2.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "python-utils" version))
+              (sha256
+               (base32
+                "1zvrc1rc06n89pycg969pcy30bff4sqzhff365sxh629ybnl8pwq"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("pytest-runner" ,python-pytest-runner)
+       ("pytest" ,python-pytest)
+       ("six" ,python-six)))
+    (home-page "https://github.com/WoLpH/python-utils")
+    (synopsis "Convenient utilities not included with the standard Python install")
+    (description
+      "Python Utils is a collection of small Python functions and classes which
+make common patterns shorter and easier.")
+    (license license:bsd-2)))
+
+(define-public python2-utils
+  (package-with-python2 python-utils))
-- 
2.12.2


[-- Attachment #6: 0005-gnu-Add-python-webassets.patch --]
[-- Type: text/x-patch, Size: 1547 bytes --]

From 6d81f391fa211aef73f794dbce717c90b9d7134a Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 13:19:25 +0200
Subject: [PATCH 05/34] gnu: Add python-webassets.

* gnu/packages/python.scm (python-webassets, python2-webassets): New variables.
---
 gnu/packages/python.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 9a787a3fc..df936db9f 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14072,3 +14072,27 @@ make common patterns shorter and easier.")
 
 (define-public python2-utils
   (package-with-python2 python-utils))
+
+(define-public python-webassets
+  (package
+    (name "python-webassets")
+    (version "0.12.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "webassets" version))
+       (sha256
+        (base32
+         "1nrqkpb7z46h2b77xafxihqv3322cwqv6293ngaky4j3ff4cing7"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-jinja2" ,python-jinja2)
+       ("python-mock" ,python-mock)
+       ("python-nose" ,python-nose)
+       ("python-pytest" ,python-pytest)))
+    (home-page "http://github.com/miracle2k/webassets")
+    (synopsis "Media asset management")
+    (description "Merges, minifies and compresses Javascript and CSS files,
+supporting a variety of different filters, including YUI, jsmin, jspacker or
+CSS tidy.  Also supports URL rewriting in CSS files.")
+    (license license:bsd-2)))
-- 
2.12.2


[-- Attachment #7: 0006-gnu-Add-python-sphinx-me.patch --]
[-- Type: text/x-patch, Size: 1621 bytes --]

From 7c0db188993be6bfacfbbed49553f13ae9231863 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 13:22:46 +0200
Subject: [PATCH 06/34] gnu: Add python-sphinx-me.

* gnu/packages/python.scm (python-sphinx-me, python2-sphinx-me): New variables.
---
 gnu/packages/python.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index df936db9f..4ea3fd890 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14096,3 +14096,27 @@ make common patterns shorter and easier.")
 supporting a variety of different filters, including YUI, jsmin, jspacker or
 CSS tidy.  Also supports URL rewriting in CSS files.")
     (license license:bsd-2)))
+
+(define-public python-sphinx-me
+  (package
+    (name "python-sphinx-me")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "sphinx-me" version))
+       (sha256
+        (base32
+         "06jzgp213zihnvpcy2y5jy3ykid3apc2ncp2pg6a2g05lhiziglq"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/stephenmcd/sphinx-me")
+    (synopsis "Create a Sphinx documentation shell")
+    (description
+      "Create a Sphinx documentation shell for your project and include the
+README file as the documentation index.  It handles extracting the required
+meta data such as the project name, author and version from your project for
+use in your Sphinx docs.")
+    (license license:bsd-2)))
+
+(define-public python2-sphinx-me
+  (package-with-python2 python-sphinx-me))
-- 
2.12.2


[-- Attachment #8: 0007-gnu-python-rq-Update-to-0.7.1.patch --]
[-- Type: text/x-patch, Size: 1188 bytes --]

From 1cbd1c67de3593cad4be6e083866776cf684bbf9 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 13:25:01 +0200
Subject: [PATCH 07/34] gnu: python-rq: Update to 0.7.1.

* gnu/packages/python.scm (python-rq, python2-rq): Update to 0.7.1.
---
 gnu/packages/python.scm | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 4ea3fd890..ec3c88b28 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3375,15 +3375,13 @@ mining and data analysis.")
 (define-public python-rq
   (package
     (name "python-rq")
-    (version "0.5.2")
+    (version "0.7.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/r/rq/rq-"
-             version ".tar.gz"))
+       (uri (pypi-uri "rq" version))
        (sha256
-        (base32 "0b0z5hn8wkfg300hx7816csgv3bcfamlr29fi3yzgqmpqxwj3fix"))))
+        (base32 "0gaq5pnh0zy46r8jvygi0ifbvz3pq6i7xla78ijcgjw0x77qzsdh"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-click" ,python-click)
-- 
2.12.2


[-- Attachment #9: 0008-gnu-Add-python-cssmin.patch --]
[-- Type: text/x-patch, Size: 1304 bytes --]

From f11d88c7b52d5bd7751a25f558a48ee9f16bce44 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 13:27:33 +0200
Subject: [PATCH 08/34] gnu: Add python-cssmin.

* gnu/packages/python.scm (python-cssmin, python2-cssmin): New variables.
---
 gnu/packages/python.scm | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index ec3c88b28..cd5ed1775 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14118,3 +14118,23 @@ use in your Sphinx docs.")
 
 (define-public python2-sphinx-me
   (package-with-python2 python-sphinx-me))
+
+(define-public python-cssmin
+  (package
+    (name "python-cssmin")
+    (version "0.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "cssmin" version))
+        (sha256
+         (base32
+          "1dk723nfm2yf8cp4pj785giqlwv42l0kj8rk40kczvq1hk6g04p0"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/zacharyvoase/cssmin")
+    (synopsis "Python port of the YUI CSS Compressor")
+    (description "Python port of the YUI CSS Compressor.")
+    (license (list license:expat license:bsd-3))))
+
+(define-public python2-cssmin
+  (package-with-python2 python-cssmin))
-- 
2.12.2


[-- Attachment #10: 0009-gnu-Add-python-diff-match-patch.patch --]
[-- Type: text/x-patch, Size: 1440 bytes --]

From cf07ab19ebcffb9a9aec0fa8274dd15897b391c4 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 13:34:24 +0200
Subject: [PATCH 09/34] gnu: Add python-diff-match-patch.

* gnu/packages/python.scm (python-diff-match-patch, python2-diff-match-patch):
New variables.
---
 gnu/packages/python.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index cd5ed1775..39ef0f199 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14138,3 +14138,24 @@ use in your Sphinx docs.")
 
 (define-public python2-cssmin
   (package-with-python2 python-cssmin))
+
+(define-public python-diff-match-patch
+  (package
+    (name "python-diff-match-patch")
+    (version "20121119")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "diff-match-patch" version))
+        (sha256
+         (base32
+          "0k1f3v8nbidcmmrk65m7h8v41jqi37653za9fcs96y7jzc8mdflx"))))
+    (build-system python-build-system)
+    (home-page "https://code.google.com/p/google-diff-match-patch")
+    (synopsis "Synchronize plain text")
+    (description "Diff Match and Patch libraries offer robust algorithms to
+perform the operations required for synchronizing plain text.")
+    (license license:asl2.0)))
+
+(define-public python2-diff-match-patch
+  (package-with-python2 python-diff-match-patch))
-- 
2.12.2


[-- Attachment #11: 0010-gnu-Add-python-dirsync.patch --]
[-- Type: text/x-patch, Size: 1465 bytes --]

From 7720dacd65cda74bb600e097ed58f748aee00708 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 13:39:13 +0200
Subject: [PATCH 10/34] gnu: Add python-dirsync.

* gnu/packages/python.scm (python-dirsync, python2-dirsync): New variables.
---
 gnu/packages/python.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 39ef0f199..7c478b8b5 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14159,3 +14159,27 @@ perform the operations required for synchronizing plain text.")
 
 (define-public python2-diff-match-patch
   (package-with-python2 python-diff-match-patch))
+
+(define-public python-dirsync
+  (package
+    (name "python-dirsync")
+    (version "2.2.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "dirsync" version ".zip"))
+        (sha256
+         (base32
+          "1hcdvmkwd5512zbxpin0k7bx5bkgzy3swjx7d0kj1y45af6r75v2"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (propagated-inputs
+     `(("six" ,python-six)))
+    (home-page "https://bitbucket.org/tkhyn/dirsync")
+    (synopsis "Advanced directory tree synchronisation tool")
+    (description "Advanced directory tree synchronisation tool.")
+    (license license:expat)))
+
+(define-public python2-dirsync
+  (package-with-python2 python-dirsync))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #12: 0011-gnu-Add-python-nosexcover.patch --]
[-- Type: text/x-patch, Size: 1747 bytes --]

From 3dfabe96308f6400860827233010681e19353864 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 14:00:09 +0200
Subject: [PATCH 11/34] gnu: Add python-nosexcover.

* gnu/packages/python.scm (python-nosexcover, python2-nosexcover): New variables.
---
 gnu/packages/python.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 7c478b8b5..940f33e55 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14183,3 +14183,29 @@ perform the operations required for synchronizing plain text.")
 
 (define-public python2-dirsync
   (package-with-python2 python-dirsync))
+
+(define-public python-nosexcover
+  (package
+    (name "python-nosexcover")
+    (version "1.0.11")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "nosexcover" version))
+              (sha256
+               (base32
+                "10xqr12qv62k2flxwqhh8cr00cjhn7sfjrm6p35gd1x5bmjkr319"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-coverage" ,python-coverage)
+       ("python-nose" ,python-nose)))
+    (home-page "http://github.com/cmheisel/nose-xcover")
+    (synopsis "Extends nose.plugins.cover to add Cobertura-style XML reports")
+    (description "Companion to the built-in nose.plugins.cover.  This plugin
+will write out an XML coverage report to a file named coverage.xml.
+
+It will honor all the options you pass to the Nose coverage plugin, especially
+–cover-package.")
+    (license license:expat)))
+
+(define-public python2-nosexcover
+  (package-with-python2 python-nosexcover))
-- 
2.12.2


[-- Attachment #13: 0012-gnu-Add-python-elasticsearch.patch --]
[-- Type: text/x-patch, Size: 1936 bytes --]

From a226932bed2185fd380bc126411a20000ce2b425 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 14:33:57 +0200
Subject: [PATCH 12/34] gnu: Add python-elasticsearch.

* gnu/packages/python.scm (python-elasticsearch, python2-elasticsearch):
New variables.
---
 gnu/packages/python.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 940f33e55..7465ab071 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14209,3 +14209,35 @@ It will honor all the options you pass to the Nose coverage plugin, especially
 
 (define-public python2-nosexcover
   (package-with-python2 python-nosexcover))
+
+(define-public python-elasticsearch
+  (package
+    (name "python-elasticsearch")
+    (version "1.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "elasticsearch" version))
+        (sha256
+         (base32
+          "1sdw1r05cw7ihnmng8ra9v968fj7bq6sji8i1dikymsnkcpgc69g"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-nosexcover" ,python-nosexcover)
+       ("python-pyaml" ,python-pyaml)
+       ("python-requests" ,python-requests)))
+    (propagated-inputs
+     `(("urllib3" ,python-urllib3)))
+    (arguments
+     ;; tests require the test_elasticsearch module but it is not distributed.
+     `(#:tests? #f))
+    (home-page "https://github.com/elastic/elasticsearch-py")
+    (synopsis "Low-level client for Elasticsearch")
+    (description "Official low-level client for Elasticsearch.  Its goal is to
+provide common ground for all Elasticsearch-related code in Python; because of
+this it tries to be opinion-free and very extendable.")
+    (license license:expat)))
+
+(define-public python2-elasticsearch
+  (package-with-python2 python-elasticsearch))
-- 
2.12.2


[-- Attachment #14: 0013-gnu-python-dateutil-Update-to-2.6.0.patch --]
[-- Type: text/x-patch, Size: 1128 bytes --]

From 46c939a134d758c0175d1961b858e0021ac08409 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 14:35:27 +0200
Subject: [PATCH 13/34] gnu: python-dateutil: Update to 2.6.0.

* gnu/packages/python.scm (python-dateutil, python2-dateutil): Update to 2.6.0.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 7465ab071..f0eed8886 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1108,14 +1108,14 @@ Python file, so it can be easily copied into your project.")
 (define-public python-dateutil
   (package
     (name "python-dateutil")
-    (version "2.5.3")
+    (version "2.6.0")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "python-dateutil" version))
       (sha256
        (base32
-        "1v9j9fmf8g911yg6k01xa2db6dx3wv73zkk7fncsj7vagjqgs20l"))))
+        "1lhq0hxjc3cfha101q02ld5ijlpfyjn2w1yh7wvpiy367pgzi8k2"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-six" ,python-six)))
-- 
2.12.2


[-- Attachment #15: 0014-gnu-Add-python-levenshtein.patch --]
[-- Type: text/x-patch, Size: 1710 bytes --]

From 1a318d6e230334d653c31cdffd7854cd993d2a29 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 14:44:38 +0200
Subject: [PATCH 14/34] gnu: Add python-levenshtein.

* gnu/packages/python.scm (python-levenshtein, python2-levenshtein):
New variables.
---
 gnu/packages/python.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index f0eed8886..304ed3a6a 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14241,3 +14241,31 @@ this it tries to be opinion-free and very extendable.")
 
 (define-public python2-elasticsearch
   (package-with-python2 python-elasticsearch))
+
+(define-public python-levenshtein
+  (package
+    (name "python-levenshtein")
+    (version "0.12.0")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (pypi-uri "python-Levenshtein" version))
+      (sha256
+       (base32
+        "1c9ybqcja31nghfcc8xxbbz9h60s9qi12b9hr4jyl69xbvg12fh3"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/ztane/python-Levenshtein")
+    (synopsis "Fast computation of Levenshtein distance and string similarity")
+    (description
+     "The Levenshtein Python C extension module contains functions for fast computation of
+@enumerate
+@item Levenshtein (edit) distance, and edit operations
+@item string similarity
+@item approximate median strings, and generally string averaging
+@item string sequence and set similarity
+@end enumerate
+It supports both normal and Unicode strings.")
+    (license license:gpl2+)))
+
+(define-public python2-levenshtein
+  (package-with-python2 python-levenshtein))
-- 
2.12.2


[-- Attachment #16: 0015-gnu-Add-python-scandir.patch --]
[-- Type: text/x-patch, Size: 1624 bytes --]

From 94aa5c13189965efbc0fd7b3a561fd72a61637d0 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 14:47:22 +0200
Subject: [PATCH 15/34] gnu: Add python-scandir.

* gnu/packages/python.scm (python-scandir, python2-scandir): New variables.
---
 gnu/packages/python.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 304ed3a6a..799934b5f 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14269,3 +14269,27 @@ It supports both normal and Unicode strings.")
 
 (define-public python2-levenshtein
   (package-with-python2 python-levenshtein))
+
+(define-public python-scandir
+  (package
+    (name "python-scandir")
+    (version "1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "scandir" version))
+       (sha256
+        (base32 "0yjrgp0mxp3d8bjkq2m1ac2ys8n76wykksvgyjrnil9gr3fx7a5d"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/benhoyt/scandir")
+    (synopsis "Directory iteration function")
+    (description
+     "Directory iteration function like os.listdir(), except that instead of
+returning a list of bare filenames, it yields DirEntry objects that include
+file type and stat information along with the name.  Using scandir() increases
+the speed of os.walk() by 2-20 times (depending on the platform and file
+system) by avoiding unnecessary calls to os.stat() in most cases.")
+    (license license:bsd-3)))
+
+(define-public python2-scandir
+  (package-with-python2 python-scandir))
-- 
2.12.2


[-- Attachment #17: 0016-gnu-Add-python2-stemming.patch --]
[-- Type: text/x-patch, Size: 1601 bytes --]

From 128850d64d118a728c415891fe3893d81a05172a Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 14:52:16 +0200
Subject: [PATCH 16/34] gnu: Add python2-stemming.

* gnu/packages/python.scm (python2-stemming): New variable.
---
 gnu/packages/python.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 799934b5f..34981780e 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14293,3 +14293,26 @@ system) by avoiding unnecessary calls to os.stat() in most cases.")
 
 (define-public python2-scandir
   (package-with-python2 python-scandir))
+
+(define-public python2-stemming
+  (package
+    (name "python2-stemming")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "stemming" version))
+       (sha256
+        (base32 "0ldwa24gnnxhniv0fhygkpc2mwgd93q10ag8rvzayv6hw418frsr"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (home-page "https://bitbucket.org/mchaput/stemming/overview")
+    (synopsis "Python implementations of various stemming algorithms")
+    (description
+     "Python implementations of the Porter, Porter2, Paice-Husk, and Lovins
+stemming algorithms for English. These implementations are straightforward and
+efficient, unlike some Python versions of the same algorithms available on the
+Web. This package is an extraction of the stemming code included in the Whoosh
+search engine.")
+    (license license:public-domain)))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #18: 0017-gnu-Add-python-factory-boy.patch --]
[-- Type: text/x-patch, Size: 1966 bytes --]

From f7b37ac2efb684afa25f990f3579650ccfe16a9c Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 22:32:33 +0200
Subject: [PATCH 17/34] gnu: Add python-factory-boy.

* gnu/packages/python.scm (python-factory-boy, python2-factory-boy): New variables.
---
 gnu/packages/python.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 34981780e..1d72919b7 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14316,3 +14316,34 @@ efficient, unlike some Python versions of the same algorithms available on the
 Web. This package is an extraction of the stemming code included in the Whoosh
 search engine.")
     (license license:public-domain)))
+
+(define-public python-factory-boy
+  (package
+    (name "python-factory-boy")
+    (version "2.8.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "factory_boy" version))
+       (sha256
+        (base32 "1fvin6san5xsjh2c4y18caj2lnmwxlylyqm8mh1yc6rp38wlwr56"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("faker" ,python-faker)))
+    (home-page "https://github.com/benhoyt/scandir")
+    (synopsis "A versatile test fixtures replacement")
+    (description
+     "factory_boy is a fixtures replacement based on thoughtbot’s factory_girl.
+
+As a fixtures replacement tool, it aims to replace static, hard to maintain
+fixtures with easy-to-use factories for complex object.
+
+Instead of building an exhaustive test setup with every possible combination
+of corner cases, factory_boy allows you to use objects customized for the
+current test, while only declaring the test-specific fields")
+    (license license:expat)))
+
+(define-public python2-factory-boy
+  (package-with-python2 python-factory-boy))
-- 
2.12.2


[-- Attachment #19: 0018-gnu-Add-python-translate-toolkit.patch --]
[-- Type: text/x-patch, Size: 2164 bytes --]

From 9fd512af4a3c0bb0202a69feb281a3899a9c24c6 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 17:19:27 +0200
Subject: [PATCH 18/34] gnu: Add python-translate-toolkit.

* gnu/packages/python.scm (python-translate-toolkit, python2-translate-toolkit):
New variables.
---
 gnu/packages/python.scm | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 1d72919b7..9b8a7465e 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14347,3 +14347,40 @@ current test, while only declaring the test-specific fields")
 
 (define-public python2-factory-boy
   (package-with-python2 python-factory-boy))
+
+(define-public python-translate-toolkit
+  (package
+    (name "python-translate-toolkit")
+    (version "2.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "translate-toolkit" version ".tar.bz2"))
+       (sha256
+        (base32 "1vlkwrg83vb17jc36pmwh2b7jphwf390lz0jw8hakcg16qhwypvq"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-sphinx" ,python-sphinx)))
+    (propagated-inputs
+     `(("python-babel" ,python-babel)
+       ("python-beautifulsoup4" ,python-beautifulsoup4)
+       ("python-chardet" ,python-chardet)
+       ("python-diff-match-patch" ,python-diff-match-patch)
+       ("python-levenshtein" ,python-levenshtein)
+       ("python-lxml" ,python-lxml)
+       ("python-six" ,python-six)
+       ("python-vobject" ,python-vobject)
+       ("python-pyyaml" ,python-pyyaml)))
+    (arguments
+     ;; TODO: tests don't run properly
+     `(#:tests? #f))
+    (home-page "http://toolkit.translatehouse.org")
+    (synopsis "Tools and API for translation and localization engineering")
+    (description
+     "Tools and API for translation and localization engineering.  It contains
+several utilities, as well as an API for building localization tools.")
+    (license license:gpl2+)))
+
+(define-public python2-translate-toolkit
+  (package-with-python2 python-translate-toolkit))
-- 
2.12.2


[-- Attachment #20: 0019-gnu-Add-python-mysqlclient.patch --]
[-- Type: text/x-patch, Size: 1911 bytes --]

From 88ea5ccf166456b3eda625a86045df1f8eddf715 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 17:24:16 +0200
Subject: [PATCH 19/34] gnu: Add python-mysqlclient.

* gnu/packages/python.scm (python-mysqlclient, python2-mysqlclient): New variables.
---
 gnu/packages/python.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 9b8a7465e..e372d29f4 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14384,3 +14384,38 @@ several utilities, as well as an API for building localization tools.")
 
 (define-public python2-translate-toolkit
   (package-with-python2 python-translate-toolkit))
+
+(define-public python-mysqlclient
+  (package
+    (name "python-mysqlclient")
+    (version "1.3.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "mysqlclient" version))
+       (sha256
+        (base32
+         "0qkj570x4rbsblji6frvsvp2v1ap32dqzj1lq62zp9515ffsyaj5"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("mariadb" ,mariadb)
+       ("nose" ,python-nose)
+       ("mock" ,python-mock)
+       ("py.test" ,python-pytest)))
+    (inputs
+     `(("mysql" ,mysql)
+       ("libz" ,zlib)
+       ("openssl" ,openssl)))
+    (home-page "https://github.com/PyMySQL/mysqlclient-python")
+    (synopsis "MySQLdb is an interface to the popular MySQL database server for Python")
+    (description "MySQLdb is an interface to the popular MySQL database server
+for Python.  The design goals are:
+@enumerate
+@item Compliance with Python database API version 2.0 [PEP-0249],
+@item Thread-safety,
+@item Thread-friendliness (threads will not block each other).
+@end enumerate")
+    (license license:gpl2)))
+
+(define-public python2-mysqlclient
+  (package-with-python2 python-mysqlclient))
-- 
2.12.2


[-- Attachment #21: 0020-gnu-Add-python-django-assets.patch --]
[-- Type: text/x-patch, Size: 2524 bytes --]

From 20ac68b9c1e52880bc2ae10832b1169d7f44ed9c Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 18:16:07 +0200
Subject: [PATCH 20/34] gnu: Add python-django-assets.

* gnu/packages/django.scm (python-django-assets, python2-django-assets):
New variables.
---
 gnu/packages/django.scm | 43 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 2038473f5..52668aa3c 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -245,3 +245,46 @@ templatetags and a full test suite.")
 
 (define-public python2-django-gravatar2
   (package-with-python2 python-django-gravatar2))
+
+(define-public python-django-assets
+  (package
+    (name "python-django-assets")
+    (version "0.12")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-assets" version))
+              (sha256
+               (base32
+                "0y0007fvkn1rdlj2g0y6k1cnkx53kxab3g8i85i0rd58k335p365"))
+              (modules '((guix build utils)))
+              (snippet
+               ;; https://github.com/miracle2k/django-assets/issues/87
+               `(begin
+                  (substitute* "tests/__init__.py"
+                    (("settings.configure.*")
+                     (string-append
+                       "settings.configure(\n"
+                       "INSTALLED_APPS=['django_assets', "
+                       "'django.contrib.staticfiles'],\n"
+                       "TEMPLATES=[{'BACKEND': "
+                       "'django.template.backends.django.DjangoTemplates'}],\n"
+                       ")\n")))
+                 ;; These tests fail
+                 (substitute* "tests/test_django.py"
+                   (("TestLoader") "NoTestLoader"))))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ("python-webassets" ,python-webassets)))
+    (home-page "http://github.com/miracle2k/django-assets")
+    (synopsis "Asset management for Django")
+    (description
+      "Asset management for Django, to compress and merge CSS and Javascript
+files.  Integrates the webassets library with Django, adding support for
+merging, minifying and compiling CSS and Javascript files.")
+    (license license:bsd-2)))
+
+(define-public python2-django-assets
+  (package-with-python2 python-django-assets))
-- 
2.12.2


[-- Attachment #22: 0021-gnu-Add-python-django-jsonfield.patch --]
[-- Type: text/x-patch, Size: 1843 bytes --]

From 1da250281f8a13d29bbd7c062ef7c708adff3324 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 18:18:30 +0200
Subject: [PATCH 21/34] gnu: Add python-django-jsonfield.

* gnu/packages/django.scm (python-django-jsonfield, python2-django-jsonfield):
New variables.
---
 gnu/packages/django.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 52668aa3c..e259a75b5 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -288,3 +288,31 @@ merging, minifying and compiling CSS and Javascript files.")
 
 (define-public python2-django-assets
   (package-with-python2 python-django-assets))
+
+(define-public python-django-jsonfield
+  (package
+    (name "python-django-jsonfield")
+    (version "1.0.3")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "jsonfield" version))
+              (sha256
+               (base32
+                "19x4lak0hg9c20r7mvf27w7i8r6i4sg2g0ypmlmp2665fnk76zvy"))
+            (modules '((guix build utils)))
+            (snippet
+              '(substitute* "jsonfield/tests.py"
+                 (("django.forms.util") "django.forms.utils")))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-django" ,python-django)))
+    (home-page "https://github.com/bradjasper/django-jsonfield")
+    (synopsis "Store validated JSON in your model")
+    (description
+      "django-jsonfield is a reusable Django field that allows you to store
+validated JSON in your model.  It silently takes care of serialization.  To
+use, simply add the field to one of your models.")
+    (license license:expat)))
+
+(define-public python2-django-jsonfield
+  (package-with-python2 python-django-jsonfield))
-- 
2.12.2


[-- Attachment #23: 0022-gnu-Add-python-django-bulk-update.patch --]
[-- Type: text/x-patch, Size: 1817 bytes --]

From 04ed560e5fedcd1b523680df7498e92baf997528 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 18:28:37 +0200
Subject: [PATCH 22/34] gnu: Add python-django-bulk-update.

* gnu/packages/django.scm (python-django-bulk-update, python2-django-bulk-update):
New variables.
---
 gnu/packages/django.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index e259a75b5..36e6ab885 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -316,3 +316,32 @@ use, simply add the field to one of your models.")
 
 (define-public python2-django-jsonfield
   (package-with-python2 python-django-jsonfield))
+
+(define-public python-django-bulk-update
+  (package
+    (name "python-django-bulk-update")
+    (version "1.1.10")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-bulk-update" version))
+              (sha256
+               (base32
+                "0mbng9m7swfc0dnidipbzlxfhlfjrv755dlnha5s4m9mgdxb1fhc"))))
+    (build-system python-build-system)
+    (arguments
+     ;; tests seem to be broken
+     `(#:tests? #f))
+    (native-inputs
+     `(("six" ,python-six)
+       ("jsonfield" ,python-django-jsonfield)))
+    (propagated-inputs
+     `(("python-django" ,python-django)))
+    (home-page "https://github.com/aykut/django-bulk-update")
+    (synopsis "Simple bulk update over Django ORM or with helper function")
+    (description
+      "Simple bulk update over Django ORM or with helper function.  This
+project aims to bulk update given objects using one query over Django ORM.")
+    (license license:expat)))
+
+(define-public python2-django-bulk-update
+  (package-with-python2 python-django-bulk-update))
-- 
2.12.2


[-- Attachment #24: 0023-gnu-Add-python-django-contact-form.patch --]
[-- Type: text/x-patch, Size: 1708 bytes --]

From bba15d429a0a5945282fa28ff98794d190a0c3e1 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 18:51:24 +0200
Subject: [PATCH 23/34] gnu: Add python-django-contact-form.

* gnu/packages/django.scm (python-django-contact-form, python2-django-contact-form):
New variables.
---
 gnu/packages/django.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 36e6ab885..d618d3c48 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -345,3 +345,30 @@ project aims to bulk update given objects using one query over Django ORM.")
 
 (define-public python2-django-bulk-update
   (package-with-python2 python-django-bulk-update))
+
+(define-public python-django-contact-form
+  (package
+    (name "python-django-contact-form")
+    (version "1.3")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-contact-form" version))
+              (sha256
+               (base32
+                "0az590y56k5ahv4sixrkn54d3a8ig2q2z9pl6s3m4f533mx2gj17"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f))
+    (native-inputs
+     `(("python-coverage" ,python-coverage)))
+    (propagated-inputs
+     `(("python-django" ,python-django)))
+    (home-page "https://github.com/ubernostrum/django-contact-form")
+    (synopsis "Contact form for Django")
+    (description
+      "This application provides simple, extensible contact-form functionality
+for Django sites.")
+    (license license:bsd-3)))
+
+(define-public python2-django-contact-form
+  (package-with-python2 python-django-contact-form))
-- 
2.12.2


[-- Attachment #25: 0024-gnu-Add-python-django-contrib-comments.patch --]
[-- Type: text/x-patch, Size: 1764 bytes --]

From 2f3f794c3f1151529c3a1ced5e81a044611a1656 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 19:01:33 +0200
Subject: [PATCH 24/34] gnu: Add python-django-contrib-comments.

* gnu/packages/django.scm (python-django-contrib-comments,
python2-django-contrib-comments): New variables.
---
 gnu/packages/django.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index d618d3c48..f0bf537de 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -372,3 +372,28 @@ for Django sites.")
 
 (define-public python2-django-contact-form
   (package-with-python2 python-django-contact-form))
+
+(define-public python-django-contrib-comments
+  (package
+    (name "python-django-contrib-comments")
+    (version "1.8.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-contrib-comments" version))
+              (sha256
+               (base32
+                "0bxsgw8jrkhg6r5s0z6ksfi4w8yknaqb1s9acmxd9pm3pnsnp5kx"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-django" ,python-django)))
+    (home-page "https://github.com/django/django-contrib-comments")
+    (synopsis "Comments framework")
+    (description
+      "Django used to include a comments framework; since Django 1.6 it's been
+separated to a separate project.  This is that project.  This framework can be
+used to attach comments to any model, so you can use it for comments on blog
+entries, photos, book chapters, or anything else.")
+    (license license:bsd-3)))
+
+(define-public python2-django-contrib-comments
+  (package-with-python2 python-django-contrib-comments))
-- 
2.12.2


[-- Attachment #26: 0025-gnu-Add-python-django-overextends.patch --]
[-- Type: text/x-patch, Size: 1887 bytes --]

From 5fc586bebbb5a54c12beb28bbf4503ade0dfad66 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 19:08:11 +0200
Subject: [PATCH 25/34] gnu: Add python-django-overextends.

* gnu/packages/django.scm (python-django-overextends, python2-django-overextends):
New variables.
---
 gnu/packages/django.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index f0bf537de..1e55909d5 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -397,3 +397,32 @@ entries, photos, book chapters, or anything else.")
 
 (define-public python2-django-contrib-comments
   (package-with-python2 python-django-contrib-comments))
+
+(define-public python-django-overextends
+  (package
+    (name "python-django-overextends")
+    (version "0.4.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-overextends" version))
+              (sha256
+               (base32
+                "05rxfjwkwi354qpwjacv1ak77ksgj5fql9yz8i3f1a20b97l8196"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ("sphinx-me" ,python-sphinx-me)))
+    (home-page "https://github.com/stephenmcd/django-overextends")
+    (synopsis "Circular template inheritance")
+    (description
+      "A Django reusable app providing the overextends template tag, a drop-in
+replacement for Django's extends tag, which allows you to use circular template
+inheritance.  The primary use-case for overextends is to simultaneously
+override and extend templates from other reusable apps, in your own Django
+project.")
+    (license license:bsd-2)))
+
+(define-public python2-django-overextends
+  (package-with-python2 python-django-overextends))
-- 
2.12.2


[-- Attachment #27: 0026-gnu-Add-python-django-redis.patch --]
[-- Type: text/x-patch, Size: 1545 bytes --]

From c8f2457eb6f9abe9905b47cbb145697a289b3f9b Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 19:11:48 +0200
Subject: [PATCH 26/34] gnu: Add python-django-redis.

* gnu/packages/django.scm (python-django-redis, python2-django-redis):
New variables.
---
 gnu/packages/django.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 1e55909d5..dcd2f86c5 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -426,3 +426,29 @@ project.")
 
 (define-public python2-django-overextends
   (package-with-python2 python-django-overextends))
+
+(define-public python-django-redis
+  (package
+    (name "python-django-redis")
+    (version "4.7.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-redis" version))
+              (sha256
+               (base32
+                "0yyyxv8n9l9dhs893jsqwg2cxqkkc79g719n9dzzzqgkzialv1c1"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f))
+    (native-inputs
+     `(("python-redis" ,python-redis)))
+    (propagated-inputs
+     `(("python-django" ,python-django)))
+    (home-page "https://github.com/niwibe/django-redis")
+    (synopsis "Full featured redis cache backend for Django")
+    (description
+      "Full featured redis cache backend for Django.")
+    (license license:bsd-3)))
+
+(define-public python2-django-redis
+  (package-with-python2 python-django-redis))
-- 
2.12.2


[-- Attachment #28: 0027-gnu-Add-python-django-rq.patch --]
[-- Type: text/x-patch, Size: 1607 bytes --]

From 245bc01b4b18f34504623317ce236e9a0b6b792e Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 19:14:03 +0200
Subject: [PATCH 27/34] gnu: Add python-django-rq.

* gnu/packages/django.scm (python-django-rq, python2-django-rq): New variables.
---
 gnu/packages/django.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index dcd2f86c5..d87d5820f 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -452,3 +452,30 @@ project.")
 
 (define-public python2-django-redis
   (package-with-python2 python-django-redis))
+
+(define-public python-django-rq
+  (package
+    (name "python-django-rq")
+    (version "0.9.4")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-rq" version))
+              (sha256
+               (base32
+                "04v8ilfdp10bk31fxgh4cn083gsn5m06342cnpm5d10nd8hc0vky"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ("python-rq" ,python-rq)))
+    (home-page "https://github.com/ui/django-rq")
+    (synopsis "Django integration with RQ")
+    (description
+      "Django integration with RQ, a Redis based Python queuing library.
+Django-RQ is a simple app that allows you to configure your queues in django's
+settings.py and easily use them in your project.")
+    (license license:expat)))
+
+(define-public python2-django-rq
+  (package-with-python2 python-django-rq))
-- 
2.12.2


[-- Attachment #29: 0028-gnu-Add-python-django-sortedm2m.patch --]
[-- Type: text/x-patch, Size: 1692 bytes --]

From d133c91a925e488a09da92fbb68b1a70d29cdc20 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 19:18:02 +0200
Subject: [PATCH 28/34] gnu: Add python-django-sortedm2m.

* gnu/packages/django.scm (python-django-sortedm2m, python2-django-sortedm2m):
New variables.
---
 gnu/packages/django.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index d87d5820f..013ad9a38 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -479,3 +479,29 @@ settings.py and easily use them in your project.")
 
 (define-public python2-django-rq
   (package-with-python2 python-django-rq))
+
+(define-public python-django-sortedm2m
+  (package
+    (name "python-django-sortedm2m")
+    (version "1.3.3")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-sortedm2m" version))
+              (sha256
+               (base32
+                "0axf765i7b3c2s83nlph47asi8s071dhq8l7y382v1pw785s22vi"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-django" ,python-django)))
+    (home-page "https://github.com/gregmuellegger/django-sortedm2m")
+    (synopsis "drop-in replacement for django's own ManyToManyField")
+    (description
+      "Sortedm2m is a drop-in replacement for django's own ManyToManyField.
+The provided SortedManyToManyField behaves like the original one but remembers
+the order of added relations.")
+    (license license:bsd-3)))
+
+(define-public python2-django-sortedm2m
+  (package-with-python2 python-django-sortedm2m))
-- 
2.12.2


[-- Attachment #30: 0029-gnu-Add-python-django-appconf.patch --]
[-- Type: text/x-patch, Size: 1781 bytes --]

From 5de7cc59ae72b60efad6a499f3b315fa02d683f5 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 19:18:46 +0200
Subject: [PATCH 29/34] gnu: Add python-django-appconf.

* gnu/packages/django.scm (python-django-appconf, python2-django-appconf):
New variables.
---
 gnu/packages/django.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 013ad9a38..fc44fd928 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -505,3 +505,29 @@ the order of added relations.")
 
 (define-public python2-django-sortedm2m
   (package-with-python2 python-django-sortedm2m))
+
+(define-public python-django-appconf
+  (package
+    (name "python-django-appconf")
+    (version "1.0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-appconf" version))
+              (sha256
+               (base32
+                "0qdjdx35g66xjsc50v0c5h3kg6njs8df33mbjx6j4k1vd3m9lkba"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-django" ,python-django)))
+    (home-page "https://github.com/django-compressor/django-appconf")
+    (synopsis "Handle configuration defaults of packaged Django apps")
+    (description
+      "This app precedes Django's own AppConfig classes that act as \"objects
+[to] store metadata for an application\" inside Django's app loading mechanism.
+In other words, they solve a related but different use case than
+django-appconf and can't easily be used as a replacement.  The similarity in
+name is purely coincidental.")
+    (license license:bsd-3)))
+
+(define-public python2-django-appconf
+  (package-with-python2 python-django-appconf))
-- 
2.12.2


[-- Attachment #31: 0030-gnu-Add-python-django-statici18n.patch --]
[-- Type: text/x-patch, Size: 1593 bytes --]

From a35c0e70126ef8c99f552dde3dc7a7f8e90d8955 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 19:19:19 +0200
Subject: [PATCH 30/34] gnu: Add python-django-statici18n.

* gnu/packages/django.scm (python-django-statici18n, python2-django-statici18n):
New variables.
---
 gnu/packages/django.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index fc44fd928..44aaf27d0 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -531,3 +531,27 @@ name is purely coincidental.")
 
 (define-public python2-django-appconf
   (package-with-python2 python-django-appconf))
+
+(define-public python-django-statici18n
+  (package
+    (name "python-django-statici18n")
+    (version "1.3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-statici18n" version))
+              (sha256
+               (base32
+                "0alcf4g1nv69njhq5k3qw4mfl2k6dc18bik5nk0g1mnp3m8zyz7k"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ("django-appconf" ,python-django-appconf)))
+    (home-page "https://github.com/zyegfryed/django-statici18n")
+    (synopsis "Generate JavaScript catalog to static files")
+    (description
+      "A Django app that provides helper for generating JavaScript catalog to
+static files.")
+    (license license:bsd-3)))
+
+(define-public python2-django-statici18n
+  (package-with-python2 python-django-statici18n))
-- 
2.12.2


[-- Attachment #32: 0031-gnu-python-pytest-django-Update-to-3.1.2.patch --]
[-- Type: text/x-patch, Size: 1574 bytes --]

From 045c93faa3ec4ea3a5355cc5c0db615d0491bc18 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 21:46:03 +0200
Subject: [PATCH 31/34] gnu: python-pytest-django: Update to 3.1.2.

* gnu/packages/django.scm (python-pytest-django, python2-pytest-django):
Update to 3.1.2.
---
 gnu/packages/django.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 44aaf27d0..51c653518 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -128,13 +128,13 @@ with arguments to the field constructor.")
 (define-public python-pytest-django
   (package
     (name "python-pytest-django")
-    (version "2.9.1")
+    (version "3.1.2")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "pytest-django" version))
               (sha256
                (base32
-                "1mmc7zsz3dlhs6sx4sppkj1vgshabi362r1a8b8wpj1qfximpqcb"))))
+                "02932m2sr8x22m4az8syr8g835g4ak77varrnw71n6xakmdcr303"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f ; FIXME: How to run tests?
@@ -143,7 +143,7 @@ with arguments to the field constructor.")
          (add-after 'unpack 'patch-setuppy
            (lambda _
              (substitute* "setup.py"
-                          (("setuptools_scm==1.8.0") "setuptools_scm"))
+                          (("setuptools_scm==1.11.1") "setuptools_scm"))
              #t)))))
     (native-inputs
      `(("python-django" ,python-django)
-- 
2.12.2


[-- Attachment #33: 0032-gnu-python-pytest-cov-Update-to-2.4.0.patch --]
[-- Type: text/x-patch, Size: 1086 bytes --]

From ca2c4c8f44978bb29c58d0e68c6b4d0b0ea58a8e Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 21:52:16 +0200
Subject: [PATCH 32/34] gnu: python-pytest-cov: Update to 2.4.0.

* gnu/packages/python.scm (python-pytest-cov, python2-pytest-cov): Update to
2.4.0.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e372d29f4..00e274abf 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1843,14 +1843,14 @@ and many external plugins.")
 (define-public python-pytest-cov
   (package
     (name "python-pytest-cov")
-    (version "2.2.1")
+    (version "2.4.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "pytest-cov" version))
         (sha256
          (base32
-          "1yl4nbhzfgsxqlsyk4clafgp9x11zvgrkprm9i2p3fgkwx9jxcm8"))))
+          "03c2qc42r4bczyw93gd7n0qi1h1jfhw7fnbhi33c3vp1hs81gm2k"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
-- 
2.12.2


[-- Attachment #34: 0033-gnu-Fix-python2-django-allauth.patch --]
[-- Type: text/x-patch, Size: 1176 bytes --]

From a50e29957e5d5ebe404631ffe6efeaf0f37def9c Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 21:09:47 +0200
Subject: [PATCH 33/34] gnu: Fix python2-django-allauth.

because python-openid is not the same package as python2-openid,
package-with-python2 doesn't work in packages that depend on it.

* gnu/packages/django.scm (python2-django-allauth)[propagated-inputs]:
Use python2 versions.
---
 gnu/packages/django.scm | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 51c653518..37f437cf7 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -220,7 +220,13 @@ account authentication.")
     (license license:expat)))
 
 (define-public python2-django-allauth
-  (package-with-python2 python-django-allauth))
+  (package
+    (inherit (package-with-python2 python-django-allauth))
+    (propagated-inputs
+     `(("python2-openid" ,python2-openid)
+       ("python2-requests" ,python2-requests)
+       ("python2-requests-oauthlib" ,python2-requests-oauthlib)))))
+    
 
 (define-public python-django-gravatar2
   (package
-- 
2.12.2


[-- Attachment #35: 0034-gnu-Add-pootle.patch --]
[-- Type: text/x-patch, Size: 3249 bytes --]

From 880314660308ad6e42b68a26eb8e8dd4a47441c4 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 23:11:07 +0200
Subject: [PATCH 34/34] gnu: Add pootle.

* gnu/packages/django.scm (pootle): New variable.
---
 gnu/packages/django.scm | 65 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 37f437cf7..1de8d2cd7 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -561,3 +561,68 @@ static files.")
 
 (define-public python2-django-statici18n
   (package-with-python2 python-django-statici18n))
+
+(define-public pootle
+  (package
+    (name "pootle")
+    (version "2.8.0rc5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "Pootle" version ".tar.bz2"))
+        (sha256
+         (base32
+          "0m6qcpkcy22dk3ad5y2k8851kqg2w6vrkywgy4vabwbacd7r1mvn"))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin
+            (mkdir-p "pytest_pootle/data/po/.tmp")
+            (substitute* "Pootle.egg-info/requires.txt"
+              (("1.7.3") "1.8.0")
+              (("2.0.0") "2.1.0"))
+            (substitute* "requirements/tests.txt"
+              (("==3.0.6") ">=3.0.6"))
+            (substitute* "requirements/base.txt"
+              (("1.7.3") "1.8.0")
+              (("2.0.0") "2.1.0"))))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2
+       #:tests? #f))
+    (propagated-inputs
+     `(("django-allauth" ,python2-django-allauth)
+       ("django-assets" ,python2-django-assets)
+       ("django-bulk-update" ,python2-django-bulk-update)
+       ("django-contact-form" ,python2-django-contact-form)
+       ("django-contrib-comments" ,python2-django-contrib-comments)
+       ("django-overextends" ,python2-django-overextends)
+       ("django-redis" ,python2-django-redis)
+       ("django-rq" ,python2-django-rq)
+       ("django-sortedm2m" ,python2-django-sortedm2m)
+       ("django-statici18n" ,python2-django-statici18n)
+       ("babel" ,python2-babel)
+       ("cssmin" ,python2-cssmin)
+       ("diff-match-patch" ,python2-diff-match-patch)
+       ("dirsync" ,python2-dirsync)
+       ("elasticsearch" ,python2-elasticsearch)
+       ("jsonfield" ,python2-django-jsonfield)
+       ("lxml" ,python2-lxml)
+       ("dateutil" ,python2-dateutil)
+       ("levenshtein" ,python2-levenshtein)
+       ("mysqlclient" ,python2-mysqlclient)
+       ("psycopg2" ,python2-psycopg2)
+       ("pytz" ,python2-pytz)
+       ("rq" ,python2-rq)
+       ("scandir" ,python2-scandir)
+       ("stemming" ,python2-stemming)
+       ("translate-toolkit" ,python2-translate-toolkit)))
+    (native-inputs
+     `(("python2-pytest-warnings" ,python2-pytest-warnings)
+       ("python2-pytest-django" ,python2-pytest-django)
+       ("python2-pytest-catchlog" ,python2-pytest-catchlog)
+       ("python2-pytest-cov" ,python2-pytest-cov)
+       ("python2-factory-boy" ,python2-factory-boy)))
+    (home-page "http://pootle.translatehouse.org/")
+    (synopsis "Community localization server")
+    (description "Community localization server.")
+    (license license:gpl3+)))
-- 
2.12.2


^ permalink raw reply related	[relevance 83%]

* bug#26613: Add pootle
  @ 2017-04-23 15:25 94%   ` Julien Lepiller
  0 siblings, 0 replies; 200+ results
From: Julien Lepiller @ 2017-04-23 15:25 UTC (permalink / raw)
  To: 26613

[-- Attachment #1: Type: text/plain, Size: 2300 bytes --]

Le Sat, 22 Apr 2017 20:33:21 -0400,
Leo Famulari <leo@famulari.name> a écrit :

> On Sat, Apr 22, 2017 at 11:13:14PM +0200, Julien Lepiller wrote:
> 
> Thanks for all these patches!
> 
> > here are patches that add pootle, a translation server written in
> > django. Some patches modify packages that have several dependents,
> > so it should probably go to core-updates first.  
> 
> We don't want to update foo and break foo's dependents on the master
> branch, but unless foo has > 1200 dependents, we can avoid waiting for
> core-updates. See:
> 
> https://lists.gnu.org/archive/html/guix-devel/2016-10/msg00933.html
> 
> For this patch series, the bigger changes are updates to pytest-runner
> and dateutil, right? That's less than 200 dependent packages. At that
> scale, all the packages could be built as a test on a developer's
> machine, or you could just check a few dependent packages and push it
> to master with fingers crossed ;)
> 
> Patch-specific comments below. Whatever I don't comment on LGTM.
> 
> > Subject: [PATCH 01/34] gnu: python-pytest-runner: Update to 2.11.1.
> > 
> > * gnu/packages/python.scm (python-pytest-runner)
> > (python2-pytest-runner): Update to 2.11.1.  
> 
> I'd check a handful of dependent packages and cross my fingers :)
I've rebuilt everything, and nothing new fails.

> 
> [lots of suggestions]
OK, I applied all your suggestions, thanks :).

I attached the updated patches. I could find how to run some of the
testsuite, and commented when they failed before even running the tests
or when there was no testsuite to begin with. I had to add a few more
packages for the testsuites to run in some packages.

> 
> > Subject: [PATCH 34/34] gnu: Add pootle.
> > 
> > * gnu/packages/django.scm (pootle): New variable.  
> 
> > +    (version "2.8.0rc5")  
> 
> Usually we don't package beta versions or release candidates, but
> sometimes it's the right thing to do. What's the story here?
I use pootle on another system and found that the latest version has
some bugs that make it difficult to use (though not breaking it
completely). I'm a happy user of the release candidate. I could package
version 2.7.6 too, but I wouldn't use it ;).

> 
> [other suggestions]
>

All done too, thanks :)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-python-pytest-runner-Update-to-2.11.1.patch --]
[-- Type: text/x-patch, Size: 1144 bytes --]

From f57ed854a7a0a802934f76ff2ff622c907277e98 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 12:14:06 +0200
Subject: [PATCH 01/37] gnu: python-pytest-runner: Update to 2.11.1.

* gnu/packages/python.scm (python-pytest-runner)
(python2-pytest-runner): Update to 2.11.1.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e51405bd9..142de0984 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1879,14 +1879,14 @@ supports coverage of subprocesses.")
 (define-public python-pytest-runner
   (package
     (name "python-pytest-runner")
-    (version "2.6.2")
+    (version "2.11.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pytest-runner" version))
        (sha256
         (base32
-         "1nwcqx0l3fv52kv8526wy8ypzghbq96c96di318d98d3wh7a8xg7"))))
+         "1cw978kqqcq916b9gfns1qjqvg33c5ail5jhw9054dsynkm32flq"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-Add-python-pytest-warnings.patch --]
[-- Type: text/x-patch, Size: 1567 bytes --]

From d713ba00b66fd7496389210cc8ff04294ea2d458 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 21:20:09 +0200
Subject: [PATCH 02/37] gnu: Add python-pytest-warnings.

* gnu/packages/python.scm (python-pytest-warnings, python2-pytest-warnings):
New variables.
---
 gnu/packages/python.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 142de0984..1e64a0a9e 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -13999,3 +13999,27 @@ exception message with a traceback that points to the culprit.")
 
 (define-public python2-fudge
   (package-with-python2 python-fudge))
+
+(define-public python-pytest-warnings
+  (package
+    (name "python-pytest-warnings")
+    (version "0.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-warnings" version))
+       (sha256
+        (base32
+         "0gf2dpahpl5igb7jh1sr9acj3z3gp7zahqdqb69nk6wx01c8kc1g"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("pytest" ,python-pytest-3.0)))
+    (home-page "https://github.com/fschulze/pytest-warnings")
+    (synopsis "Pytest plugin to list Python warnings in pytest report")
+    (description
+     "Python-pytest-warnings is a pytest plugin to list Python warnings in
+pytest report.")
+    (license license:expat)))
+
+(define-public python2-pytest-warnings
+  (package-with-python2 python-pytest-warnings))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-gnu-Add-python-pytest-catchlog.patch --]
[-- Type: text/x-patch, Size: 1599 bytes --]

From 2d4e3ba25491bd2579baa3e6d69e2bb7c0fdbb0e Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 22:14:02 +0200
Subject: [PATCH 03/37] gnu: Add python-pytest-catchlog.

* gnu/packages/python.scm (python-pytest-catchlog, python2-pytest-catchlog):
New variables.
---
 gnu/packages/python.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 1e64a0a9e..379697167 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14023,3 +14023,29 @@ pytest report.")
 
 (define-public python2-pytest-warnings
   (package-with-python2 python-pytest-warnings))
+
+(define-public python-pytest-catchlog
+  (package
+    (name "python-pytest-catchlog")
+    (version "1.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-catchlog" version ".zip"))
+       (sha256
+        (base32
+         "1w7wxh27sbqwm4jgwrjr9c2gy384aca5jzw9c0wzhl0pmk2mvqab"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (propagated-inputs
+     `(("pytest" ,python-pytest-3.0)))
+    (home-page "https://github.com/eisensheng/pytest-catchlog")
+    (synopsis "Pytest plugin to catch log messages")
+    (description
+     "Python-pytest-catchlog is a pytest plugin to catch log messages.  This is
+a fork of pytest-capturelog.")
+    (license license:expat)))
+
+(define-public python2-pytest-catchlog
+  (package-with-python2 python-pytest-catchlog))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0004-gnu-Add-python-utils.patch --]
[-- Type: text/x-patch, Size: 1615 bytes --]

From ceddec8f6fa2537d9e1aad16a3dabe34b326f9c7 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 12:31:55 +0200
Subject: [PATCH 04/37] gnu: Add python-utils.

* gnu/packages/python.scm (python-utils, python2-utils): New variables.
---
 gnu/packages/python.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 379697167..7409f6a07 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14049,3 +14049,28 @@ a fork of pytest-capturelog.")
 
 (define-public python2-pytest-catchlog
   (package-with-python2 python-pytest-catchlog))
+
+(define-public python-utils
+  (package
+    (name "python-utils")
+    (version "2.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "python-utils" version))
+              (sha256
+               (base32
+                "1mcsy6q5am4ya72rgkpb6kax6vv7c93cfkkas89xnpa4sj9zf28p"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("pytest-runner" ,python-pytest-runner)
+       ("pytest" ,python-pytest)
+       ("six" ,python-six)))
+    (home-page "https://github.com/WoLpH/python-utils")
+    (synopsis "Convenient utilities not included with the standard Python install")
+    (description
+      "Python Utils is a collection of small Python functions and classes which
+make common patterns shorter and easier.")
+    (license license:bsd-2)))
+
+(define-public python2-utils
+  (package-with-python2 python-utils))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: 0005-gnu-Add-python-webassets.patch --]
[-- Type: text/x-patch, Size: 1593 bytes --]

From 3dcae3046c5d0d60f333141fa8d3da6aef80e017 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 13:19:25 +0200
Subject: [PATCH 05/37] gnu: Add python-webassets.

* gnu/packages/python.scm (python-webassets, python2-webassets): New variables.
---
 gnu/packages/python.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 7409f6a07..6bf2291a9 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14074,3 +14074,27 @@ make common patterns shorter and easier.")
 
 (define-public python2-utils
   (package-with-python2 python-utils))
+
+(define-public python-webassets
+  (package
+    (name "python-webassets")
+    (version "0.12.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "webassets" version))
+       (sha256
+        (base32
+         "1nrqkpb7z46h2b77xafxihqv3322cwqv6293ngaky4j3ff4cing7"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-jinja2" ,python-jinja2)
+       ("python-mock" ,python-mock)
+       ("python-nose" ,python-nose)
+       ("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/miracle2k/webassets")
+    (synopsis "Media asset management")
+    (description "Merges, minifies and compresses Javascript and CSS files,
+supporting a variety of different filters, including YUI, jsmin, jspacker or
+CSS tidy.  Also supports URL rewriting in CSS files.")
+    (license license:bsd-2)))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: 0006-gnu-Add-python-sphinx-me.patch --]
[-- Type: text/x-patch, Size: 1666 bytes --]

From cc2c0e3ff5788173d17dc41442be48d8f325889b Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 13:22:46 +0200
Subject: [PATCH 06/37] gnu: Add python-sphinx-me.

* gnu/packages/python.scm (python-sphinx-me, python2-sphinx-me): New variables.
---
 gnu/packages/python.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 6bf2291a9..adb379ea5 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14098,3 +14098,27 @@ make common patterns shorter and easier.")
 supporting a variety of different filters, including YUI, jsmin, jspacker or
 CSS tidy.  Also supports URL rewriting in CSS files.")
     (license license:bsd-2)))
+
+(define-public python-sphinx-me
+  (package
+    (name "python-sphinx-me")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "sphinx-me" version))
+       (sha256
+        (base32
+         "06jzgp213zihnvpcy2y5jy3ykid3apc2ncp2pg6a2g05lhiziglq"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/stephenmcd/sphinx-me")
+    (synopsis "Create a Sphinx documentation shell")
+    (description
+      "Create a Sphinx documentation shell for your project and include the
+README file as the documentation index.  It handles extracting the required
+meta data such as the project name, author and version from your project for
+use in your Sphinx docs.")
+    (license license:bsd-2)))
+
+(define-public python2-sphinx-me
+  (package-with-python2 python-sphinx-me))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #8: 0007-gnu-python-rq-Update-to-0.7.1.patch --]
[-- Type: text/x-patch, Size: 1249 bytes --]

From 42a5c506e91568c03608f5aadd4a90f78080ce5f Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 13:25:01 +0200
Subject: [PATCH 07/37] gnu: python-rq: Update to 0.7.1.

* gnu/packages/python.scm (python-rq, python2-rq): Update to 0.7.1.
[source]: Use pypi-uri.
---
 gnu/packages/python.scm | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index adb379ea5..e9fc2b979 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3375,15 +3375,13 @@ mining and data analysis.")
 (define-public python-rq
   (package
     (name "python-rq")
-    (version "0.5.2")
+    (version "0.7.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/r/rq/rq-"
-             version ".tar.gz"))
+       (uri (pypi-uri "rq" version))
        (sha256
-        (base32 "0b0z5hn8wkfg300hx7816csgv3bcfamlr29fi3yzgqmpqxwj3fix"))))
+        (base32 "0gaq5pnh0zy46r8jvygi0ifbvz3pq6i7xla78ijcgjw0x77qzsdh"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-click" ,python-click)
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #9: 0008-gnu-Add-python-cssmin.patch --]
[-- Type: text/x-patch, Size: 1345 bytes --]

From 0524e9632ed09a9eb8d97fe06be9c27653ae7e95 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 13:27:33 +0200
Subject: [PATCH 08/37] gnu: Add python-cssmin.

* gnu/packages/python.scm (python-cssmin, python2-cssmin): New variables.
---
 gnu/packages/python.scm | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e9fc2b979..89cacc4a5 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14120,3 +14120,23 @@ use in your Sphinx docs.")
 
 (define-public python2-sphinx-me
   (package-with-python2 python-sphinx-me))
+
+(define-public python-cssmin
+  (package
+    (name "python-cssmin")
+    (version "0.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "cssmin" version))
+        (sha256
+         (base32
+          "1dk723nfm2yf8cp4pj785giqlwv42l0kj8rk40kczvq1hk6g04p0"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/zacharyvoase/cssmin")
+    (synopsis "Python port of the YUI CSS Compressor")
+    (description "Python port of the YUI CSS Compressor.")
+    (license (list license:expat license:bsd-3))))
+
+(define-public python2-cssmin
+  (package-with-python2 python-cssmin))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #10: 0009-gnu-Add-python-diff-match-patch.patch --]
[-- Type: text/x-patch, Size: 1483 bytes --]

From 0f046ce0698f8ee020ad1b133373a477a67556a0 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 13:34:24 +0200
Subject: [PATCH 09/37] gnu: Add python-diff-match-patch.

* gnu/packages/python.scm (python-diff-match-patch, python2-diff-match-patch):
New variables.
---
 gnu/packages/python.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 89cacc4a5..4b5209ac5 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14140,3 +14140,24 @@ use in your Sphinx docs.")
 
 (define-public python2-cssmin
   (package-with-python2 python-cssmin))
+
+(define-public python-diff-match-patch
+  (package
+    (name "python-diff-match-patch")
+    (version "20121119")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "diff-match-patch" version))
+        (sha256
+         (base32
+          "0k1f3v8nbidcmmrk65m7h8v41jqi37653za9fcs96y7jzc8mdflx"))))
+    (build-system python-build-system)
+    (home-page "https://code.google.com/p/google-diff-match-patch")
+    (synopsis "Synchronize plain text")
+    (description "Diff Match and Patch libraries offer robust algorithms to
+perform the operations required for synchronizing plain text.")
+    (license license:asl2.0)))
+
+(define-public python2-diff-match-patch
+  (package-with-python2 python-diff-match-patch))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #11: 0010-gnu-Add-python-dirsync.patch --]
[-- Type: text/x-patch, Size: 1510 bytes --]

From 2569c05b4ca9dae4eeac58c2d901cea890830436 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 13:39:13 +0200
Subject: [PATCH 10/37] gnu: Add python-dirsync.

* gnu/packages/python.scm (python-dirsync, python2-dirsync): New variables.
---
 gnu/packages/python.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 4b5209ac5..0247966cf 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14161,3 +14161,27 @@ perform the operations required for synchronizing plain text.")
 
 (define-public python2-diff-match-patch
   (package-with-python2 python-diff-match-patch))
+
+(define-public python-dirsync
+  (package
+    (name "python-dirsync")
+    (version "2.2.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "dirsync" version ".zip"))
+        (sha256
+         (base32
+          "1hcdvmkwd5512zbxpin0k7bx5bkgzy3swjx7d0kj1y45af6r75v2"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (propagated-inputs
+     `(("six" ,python-six)))
+    (home-page "https://bitbucket.org/tkhyn/dirsync")
+    (synopsis "Advanced directory tree synchronisation tool")
+    (description "Advanced directory tree synchronisation tool.")
+    (license license:expat)))
+
+(define-public python2-dirsync
+  (package-with-python2 python-dirsync))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #12: 0011-gnu-Add-python-nosexcover.patch --]
[-- Type: text/x-patch, Size: 1772 bytes --]

From 9b055c72fdbc86f745019a3710388ffc5e183576 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 14:00:09 +0200
Subject: [PATCH 11/37] gnu: Add python-nosexcover.

* gnu/packages/python.scm (python-nosexcover, python2-nosexcover): New variables.
---
 gnu/packages/python.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 0247966cf..8f30bbe37 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14185,3 +14185,30 @@ perform the operations required for synchronizing plain text.")
 
 (define-public python2-dirsync
   (package-with-python2 python-dirsync))
+
+(define-public python-nosexcover
+  (package
+    (name "python-nosexcover")
+    (version "1.0.11")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "nosexcover" version))
+              (sha256
+               (base32
+                "10xqr12qv62k2flxwqhh8cr00cjhn7sfjrm6p35gd1x5bmjkr319"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-coverage" ,python-coverage)
+       ("python-nose" ,python-nose)))
+    (home-page "http://github.com/cmheisel/nose-xcover")
+    (synopsis "Extends nose.plugins.cover to add Cobertura-style XML reports")
+    (description "Nose-xcover is a companion to the built-in
+@code{nose.plugins.cover}.  This plugin will write out an XML coverage report
+to a file named coverage.xml.
+
+It will honor all the options you pass to the Nose coverage plugin,
+especially -cover-package.")
+    (license license:expat)))
+
+(define-public python2-nosexcover
+  (package-with-python2 python-nosexcover))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #13: 0012-gnu-Add-python-elasticsearch.patch --]
[-- Type: text/x-patch, Size: 1940 bytes --]

From 7e65aaf8a4d3d06d457d373a58f4aa25562bf229 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 14:33:57 +0200
Subject: [PATCH 12/37] gnu: Add python-elasticsearch.

* gnu/packages/python.scm (python-elasticsearch, python2-elasticsearch):
New variables.
---
 gnu/packages/python.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 8f30bbe37..b7098bf38 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14212,3 +14212,35 @@ especially -cover-package.")
 
 (define-public python2-nosexcover
   (package-with-python2 python-nosexcover))
+
+(define-public python-elasticsearch
+  (package
+    (name "python-elasticsearch")
+    (version "1.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "elasticsearch" version))
+        (sha256
+         (base32
+          "1sdw1r05cw7ihnmng8ra9v968fj7bq6sji8i1dikymsnkcpgc69g"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-nosexcover" ,python-nosexcover)
+       ("python-pyaml" ,python-pyaml)
+       ("python-requests" ,python-requests)))
+    (propagated-inputs
+     `(("urllib3" ,python-urllib3)))
+    (arguments
+     ;; tests require the test_elasticsearch module but it is not distributed.
+     `(#:tests? #f))
+    (home-page "https://github.com/elastic/elasticsearch-py")
+    (synopsis "Low-level client for Elasticsearch")
+    (description "Official low-level client for Elasticsearch.  Its goal is to
+provide common ground for all Elasticsearch-related code in Python; because of
+this it tries to be opinion-free and very extendable.")
+    (license license:expat)))
+
+(define-public python2-elasticsearch
+  (package-with-python2 python-elasticsearch))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #14: 0013-gnu-python-dateutil-Update-to-2.6.0.patch --]
[-- Type: text/x-patch, Size: 1162 bytes --]

From b0e5e23d6b4b4955a1b848fbe5a4080f328304ea Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 14:35:27 +0200
Subject: [PATCH 13/37] gnu: python-dateutil: Update to 2.6.0.

* gnu/packages/python.scm (python-dateutil, python2-dateutil): Update to 2.6.0.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index b7098bf38..19619b563 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1108,14 +1108,14 @@ Python file, so it can be easily copied into your project.")
 (define-public python-dateutil
   (package
     (name "python-dateutil")
-    (version "2.5.3")
+    (version "2.6.0")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "python-dateutil" version))
       (sha256
        (base32
-        "1v9j9fmf8g911yg6k01xa2db6dx3wv73zkk7fncsj7vagjqgs20l"))))
+        "1lhq0hxjc3cfha101q02ld5ijlpfyjn2w1yh7wvpiy367pgzi8k2"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-six" ,python-six)))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #15: 0014-gnu-Add-python-levenshtein.patch --]
[-- Type: text/x-patch, Size: 1760 bytes --]

From 88eb3daaa68edcbfb32401929a9369e61c6e0b64 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 14:44:38 +0200
Subject: [PATCH 14/37] gnu: Add python-levenshtein.

* gnu/packages/python.scm (python-levenshtein, python2-levenshtein):
New variables.
---
 gnu/packages/python.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 19619b563..cb7fe395d 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14244,3 +14244,31 @@ this it tries to be opinion-free and very extendable.")
 
 (define-public python2-elasticsearch
   (package-with-python2 python-elasticsearch))
+
+(define-public python-levenshtein
+  (package
+    (name "python-levenshtein")
+    (version "0.12.0")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (pypi-uri "python-Levenshtein" version))
+      (sha256
+       (base32
+        "1c9ybqcja31nghfcc8xxbbz9h60s9qi12b9hr4jyl69xbvg12fh3"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/ztane/python-Levenshtein")
+    (synopsis "Fast computation of Levenshtein distance and string similarity")
+    (description
+     "The Levenshtein Python C extension module contains functions for fast computation of
+@enumerate
+@item Levenshtein (edit) distance, and edit operations
+@item string similarity
+@item approximate median strings, and generally string averaging
+@item string sequence and set similarity
+@end enumerate
+It supports both normal and Unicode strings.")
+    (license license:gpl2+)))
+
+(define-public python2-levenshtein
+  (package-with-python2 python-levenshtein))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #16: 0015-gnu-Add-python-scandir.patch --]
[-- Type: text/x-patch, Size: 1669 bytes --]

From 3df3adbede58211233be2e86c5a9e3f4dfd5dc8b Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 14:47:22 +0200
Subject: [PATCH 15/37] gnu: Add python-scandir.

* gnu/packages/python.scm (python-scandir, python2-scandir): New variables.
---
 gnu/packages/python.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index cb7fe395d..ba350b874 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14272,3 +14272,27 @@ It supports both normal and Unicode strings.")
 
 (define-public python2-levenshtein
   (package-with-python2 python-levenshtein))
+
+(define-public python-scandir
+  (package
+    (name "python-scandir")
+    (version "1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "scandir" version))
+       (sha256
+        (base32 "0yjrgp0mxp3d8bjkq2m1ac2ys8n76wykksvgyjrnil9gr3fx7a5d"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/benhoyt/scandir")
+    (synopsis "Directory iteration function")
+    (description
+     "Directory iteration function like os.listdir(), except that instead of
+returning a list of bare filenames, it yields DirEntry objects that include
+file type and stat information along with the name.  Using scandir() increases
+the speed of os.walk() by 2-20 times (depending on the platform and file
+system) by avoiding unnecessary calls to os.stat() in most cases.")
+    (license license:bsd-3)))
+
+(define-public python2-scandir
+  (package-with-python2 python-scandir))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #17: 0016-gnu-Add-python2-stemming.patch --]
[-- Type: text/x-patch, Size: 1645 bytes --]

From 8b22294896282bf9bb5f555555aca5ecb51211d5 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 14:52:16 +0200
Subject: [PATCH 16/37] gnu: Add python2-stemming.

* gnu/packages/python.scm (python2-stemming): New variable.
---
 gnu/packages/python.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index ba350b874..9a2057dcc 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14296,3 +14296,26 @@ system) by avoiding unnecessary calls to os.stat() in most cases.")
 
 (define-public python2-scandir
   (package-with-python2 python-scandir))
+
+(define-public python2-stemming
+  (package
+    (name "python2-stemming")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "stemming" version))
+       (sha256
+        (base32 "0ldwa24gnnxhniv0fhygkpc2mwgd93q10ag8rvzayv6hw418frsr"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (home-page "https://bitbucket.org/mchaput/stemming/overview")
+    (synopsis "Python implementations of various stemming algorithms")
+    (description
+     "Python implementations of the Porter, Porter2, Paice-Husk, and Lovins
+stemming algorithms for English. These implementations are straightforward and
+efficient, unlike some Python versions of the same algorithms available on the
+Web. This package is an extraction of the stemming code included in the Whoosh
+search engine.")
+    (license license:public-domain)))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #18: 0017-gnu-Add-python-factory-boy.patch --]
[-- Type: text/x-patch, Size: 2014 bytes --]

From a68b5e8068a1478da32753dd0b8ed5aa11f6ce55 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 22:32:33 +0200
Subject: [PATCH 17/37] gnu: Add python-factory-boy.

* gnu/packages/python.scm (python-factory-boy, python2-factory-boy): New variables.
---
 gnu/packages/python.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 9a2057dcc..8aaa4fbb0 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14319,3 +14319,35 @@ efficient, unlike some Python versions of the same algorithms available on the
 Web. This package is an extraction of the stemming code included in the Whoosh
 search engine.")
     (license license:public-domain)))
+
+(define-public python-factory-boy
+  (package
+    (name "python-factory-boy")
+    (version "2.8.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "factory_boy" version))
+       (sha256
+        (base32 "1fvin6san5xsjh2c4y18caj2lnmwxlylyqm8mh1yc6rp38wlwr56"))))
+    (build-system python-build-system)
+    (arguments
+     ;; Tests are not included in the tarball.
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("faker" ,python-faker)))
+    (home-page "https://github.com/benhoyt/scandir")
+    (synopsis "Versatile test fixtures replacement")
+    (description
+     "Factory_boy is a fixtures replacement based on thoughtbot’s factory_girl.
+
+As a fixtures replacement tool, it aims to replace static, hard to maintain
+fixtures with easy-to-use factories for complex object.
+
+Instead of building an exhaustive test setup with every possible combination
+of corner cases, factory_boy allows you to use objects customized for the
+current test, while only declaring the test-specific fields")
+    (license license:expat)))
+
+(define-public python2-factory-boy
+  (package-with-python2 python-factory-boy))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #19: 0018-gnu-Add-python-translate-toolkit.patch --]
[-- Type: text/x-patch, Size: 2376 bytes --]

From 8ebcec81008d1722633a9ed509bd39901ffffb13 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 17:19:27 +0200
Subject: [PATCH 18/37] gnu: Add python-translate-toolkit.

* gnu/packages/python.scm (python-translate-toolkit, python2-translate-toolkit):
New variables.
---
 gnu/packages/python.scm | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 8aaa4fbb0..ae02c2c39 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14351,3 +14351,43 @@ current test, while only declaring the test-specific fields")
 
 (define-public python2-factory-boy
   (package-with-python2 python-factory-boy))
+
+(define-public python-translate-toolkit
+  (package
+    (name "python-translate-toolkit")
+    (version "2.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "translate-toolkit" version ".tar.bz2"))
+       (sha256
+        (base32 "1vlkwrg83vb17jc36pmwh2b7jphwf390lz0jw8hakcg16qhwypvq"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-sphinx" ,python-sphinx)))
+    (propagated-inputs
+     `(("python-babel" ,python-babel)
+       ("python-beautifulsoup4" ,python-beautifulsoup4)
+       ("python-chardet" ,python-chardet)
+       ("python-diff-match-patch" ,python-diff-match-patch)
+       ("python-levenshtein" ,python-levenshtein)
+       ("python-lxml" ,python-lxml)
+       ("python-six" ,python-six)
+       ("python-vobject" ,python-vobject)
+       ("python-pyyaml" ,python-pyyaml)))
+    (arguments
+     ;; TODO: tests are not run, because they end with
+     ;; TypeError: parse() missing 2 required positional arguments: 'tree' and
+     ;; 'parse_funcs'
+     ;; during test setup.
+     `(#:tests? #f))
+    (home-page "http://toolkit.translatehouse.org")
+    (synopsis "Tools and API for translation and localization engineering")
+    (description
+     "Tools and API for translation and localization engineering.  It contains
+several utilities, as well as an API for building localization tools.")
+    (license license:gpl2+)))
+
+(define-public python2-translate-toolkit
+  (package-with-python2 python-translate-toolkit))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #20: 0019-gnu-Add-python-mysqlclient.patch --]
[-- Type: text/x-patch, Size: 1967 bytes --]

From 26d0ec32192fadd97a8e6145e5499e1061092d87 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 17:24:16 +0200
Subject: [PATCH 19/37] gnu: Add python-mysqlclient.

* gnu/packages/python.scm (python-mysqlclient, python2-mysqlclient): New variables.
---
 gnu/packages/python.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index ae02c2c39..9a3df386b 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14391,3 +14391,38 @@ several utilities, as well as an API for building localization tools.")
 
 (define-public python2-translate-toolkit
   (package-with-python2 python-translate-toolkit))
+
+(define-public python-mysqlclient
+  (package
+    (name "python-mysqlclient")
+    (version "1.3.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "mysqlclient" version))
+       (sha256
+        (base32
+         "0qkj570x4rbsblji6frvsvp2v1ap32dqzj1lq62zp9515ffsyaj5"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("mariadb" ,mariadb)
+       ("nose" ,python-nose)
+       ("mock" ,python-mock)
+       ("py.test" ,python-pytest)))
+    (inputs
+     `(("mysql" ,mysql)
+       ("libz" ,zlib)
+       ("openssl" ,openssl)))
+    (home-page "https://github.com/PyMySQL/mysqlclient-python")
+    (synopsis "MySQLdb is an interface to the popular MySQL database server for Python")
+    (description "MySQLdb is an interface to the popular MySQL database server
+for Python.  The design goals are:
+@enumerate
+@item Compliance with Python database API version 2.0 [PEP-0249],
+@item Thread-safety,
+@item Thread-friendliness (threads will not block each other).
+@end enumerate")
+    (license license:gpl2)))
+
+(define-public python2-mysqlclient
+  (package-with-python2 python-mysqlclient))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #21: 0020-gnu-Add-python-django-assets.patch --]
[-- Type: text/x-patch, Size: 2625 bytes --]

From 9f471b09f525f6b8e91a68d5e31023fcfd791a4e Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 18:16:07 +0200
Subject: [PATCH 20/37] gnu: Add python-django-assets.

* gnu/packages/django.scm (python-django-assets, python2-django-assets):
New variables.
---
 gnu/packages/django.scm | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 2038473f5..dad777bdf 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -245,3 +245,49 @@ templatetags and a full test suite.")
 
 (define-public python2-django-gravatar2
   (package-with-python2 python-django-gravatar2))
+
+(define-public python-django-assets
+  (package
+    (name "python-django-assets")
+    (version "0.12")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-assets" version))
+              (sha256
+               (base32
+                "0y0007fvkn1rdlj2g0y6k1cnkx53kxab3g8i85i0rd58k335p365"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'fix-tests
+           (lambda _
+             (begin
+               ;; https://github.com/miracle2k/django-assets/issues/87
+               (substitute* "tests/__init__.py"
+                 (("settings.configure.*")
+                  (string-append
+                    "settings.configure(\n"
+                    "INSTALLED_APPS=['django_assets', "
+                    "'django.contrib.staticfiles'],\n"
+                    "TEMPLATES=[{'BACKEND': "
+                    "'django.template.backends.django.DjangoTemplates'}],\n"
+                    ")\n")))
+              ;; These tests fail
+              (substitute* "tests/test_django.py"
+                (("TestLoader") "NoTestLoader"))))))))
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ("python-webassets" ,python-webassets)))
+    (home-page "https://github.com/miracle2k/django-assets")
+    (synopsis "Asset management for Django")
+    (description
+      "Asset management for Django, to compress and merge CSS and Javascript
+files.  Integrates the webassets library with Django, adding support for
+merging, minifying and compiling CSS and Javascript files.")
+    (license license:bsd-2)))
+
+(define-public python2-django-assets
+  (package-with-python2 python-django-assets))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #22: 0021-gnu-Add-python-django-jsonfield.patch --]
[-- Type: text/x-patch, Size: 1967 bytes --]

From 589ba386e1b87cdcfe0a64f8fb95f7de32c08038 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 18:18:30 +0200
Subject: [PATCH 21/37] gnu: Add python-django-jsonfield.

* gnu/packages/django.scm (python-django-jsonfield, python2-django-jsonfield):
New variables.
---
 gnu/packages/django.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index dad777bdf..7e66491ab 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -291,3 +291,34 @@ merging, minifying and compiling CSS and Javascript files.")
 
 (define-public python2-django-assets
   (package-with-python2 python-django-assets))
+
+(define-public python-django-jsonfield
+  (package
+    (name "python-django-jsonfield")
+    (version "1.0.3")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "jsonfield" version))
+              (sha256
+               (base32
+                "19x4lak0hg9c20r7mvf27w7i8r6i4sg2g0ypmlmp2665fnk76zvy"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'fix-tests
+           (lambda _
+             (substitute* "jsonfield/tests.py"
+               (("django.forms.util") "django.forms.utils")))))))
+    (propagated-inputs
+     `(("python-django" ,python-django)))
+    (home-page "https://github.com/bradjasper/django-jsonfield")
+    (synopsis "Store validated JSON in your model")
+    (description
+      "django-jsonfield is a reusable Django field that allows you to store
+validated JSON in your model.  It silently takes care of serialization.  To
+use, simply add the field to one of your models.")
+    (license license:expat)))
+
+(define-public python2-django-jsonfield
+  (package-with-python2 python-django-jsonfield))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #23: 0022-gnu-Add-python-dj-database-url.patch --]
[-- Type: text/x-patch, Size: 1814 bytes --]

From 3db79a588ec629297e928c9df5488d5e9743bee1 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 18:28:37 +0200
Subject: [PATCH 22/37] gnu: Add python-dj-database-url.

* gnu/packages/django.scm (python-dj-database-url, python2-dj-database-url):
New variables.
---
 gnu/packages/django.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 7e66491ab..903885061 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -322,3 +322,28 @@ use, simply add the field to one of your models.")
 
 (define-public python2-django-jsonfield
   (package-with-python2 python-django-jsonfield))
+
+(define-public python-dj-database-url
+  (package
+    (name "python-dj-database-url")
+    (version "0.4.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "dj-database-url" version))
+              (sha256
+               (base32
+                "024zbkc5rli4hia9lz9g8kf1zxhb2gwawj5abf67i7gf8n22v0x6"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/kennethreitz/dj-database-url")
+    (synopsis "Use Database URLs in your Django Application")
+    (description
+      "This simple Django utility allows you to utilize the 12factor inspired
+DATABASE_URL environment variable to configure your Django application.
+
+The dj_database_url.config method returns a Django database connection
+dictionary, populated with all the data specified in your URL. There is also a
+conn_max_age argument to easily enable Django’s connection pool.")
+    (license license:bsd-2)))
+
+(define-public python2-dj-database-url
+  (package-with-python2 python-dj-database-url))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #24: 0023-gnu-Add-python-django-bulk-update.patch --]
[-- Type: text/x-patch, Size: 1984 bytes --]

From 7215e6f39541472056569becf6f9c79f9179f607 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sun, 23 Apr 2017 13:31:08 +0200
Subject: [PATCH 23/37] gnu: Add python-django-bulk-update.

* gnu/packages/django.scm (python-django-bulk-update, python2-django-bulk-update):
New variables.
---
 gnu/packages/django.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 903885061..4a45961f0 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -347,3 +347,33 @@ conn_max_age argument to easily enable Django’s connection pool.")
 
 (define-public python2-dj-database-url
   (package-with-python2 python-dj-database-url))
+
+(define-public python-django-bulk-update
+  (package
+    (name "python-django-bulk-update")
+    (version "1.1.10")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-bulk-update" version))
+              (sha256
+               (base32
+                "0mbng9m7swfc0dnidipbzlxfhlfjrv755dlnha5s4m9mgdxb1fhc"))))
+    (build-system python-build-system)
+    (arguments
+     ;; tests don't support django 1.10, but the module seems to work.
+     `(#:tests? #f))
+    (native-inputs
+     `(("six" ,python-six)
+       ("jsonfield" ,python-django-jsonfield)
+       ("python-dj-database-url" ,python-dj-database-url)))
+    (propagated-inputs
+     `(("python-django" ,python-django)))
+    (home-page "https://github.com/aykut/django-bulk-update")
+    (synopsis "Simple bulk update over Django ORM or with helper function")
+    (description
+      "Simple bulk update over Django ORM or with helper function.  This
+project aims to bulk update given objects using one query over Django ORM.")
+    (license license:expat)))
+
+(define-public python2-django-bulk-update
+  (package-with-python2 python-django-bulk-update))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #25: 0024-gnu-Add-python-django-contact-form.patch --]
[-- Type: text/x-patch, Size: 2182 bytes --]

From 4398226287a881dd9369cba2b4fc0bf5f4cdb313 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 18:51:24 +0200
Subject: [PATCH 24/37] gnu: Add python-django-contact-form.

* gnu/packages/django.scm (python-django-contact-form, python2-django-contact-form):
New variables.
---
 gnu/packages/django.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 4a45961f0..8e4b986c9 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -377,3 +377,38 @@ project aims to bulk update given objects using one query over Django ORM.")
 
 (define-public python2-django-bulk-update
   (package-with-python2 python-django-bulk-update))
+
+(define-public python-django-contact-form
+  (package
+    (name "python-django-contact-form")
+    (version "1.3")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-contact-form" version))
+              (sha256
+               (base32
+                "0az590y56k5ahv4sixrkn54d3a8ig2q2z9pl6s3m4f533mx2gj17"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             ;; the next version will need "make test"
+             (and (zero? (system* "flake8" "contact_form"))
+                  (zero? (system* "coverage" "run" "contact_form/runtests.py"))
+                  (zero? (system* "coverage" "report" "-m" "--fail-under" "0"))))))))
+    (native-inputs
+     `(("python-coverage" ,python-coverage)
+       ("python-flake8" ,python-flake8)))
+    (propagated-inputs
+     `(("python-django" ,python-django)))
+    (home-page "https://github.com/ubernostrum/django-contact-form")
+    (synopsis "Contact form for Django")
+    (description
+      "This application provides simple, extensible contact-form functionality
+for Django sites.")
+    (license license:bsd-3)))
+
+(define-public python2-django-contact-form
+  (package-with-python2 python-django-contact-form))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #26: 0025-gnu-Add-python-django-contrib-comments.patch --]
[-- Type: text/x-patch, Size: 1811 bytes --]

From 53fc60b9d840aeb1ca9ceb9dd9e615dd139ebddb Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 19:01:33 +0200
Subject: [PATCH 25/37] gnu: Add python-django-contrib-comments.

* gnu/packages/django.scm (python-django-contrib-comments,
python2-django-contrib-comments): New variables.
---
 gnu/packages/django.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 8e4b986c9..0e16c54b1 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -412,3 +412,28 @@ for Django sites.")
 
 (define-public python2-django-contact-form
   (package-with-python2 python-django-contact-form))
+
+(define-public python-django-contrib-comments
+  (package
+    (name "python-django-contrib-comments")
+    (version "1.8.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-contrib-comments" version))
+              (sha256
+               (base32
+                "0bxsgw8jrkhg6r5s0z6ksfi4w8yknaqb1s9acmxd9pm3pnsnp5kx"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-django" ,python-django)))
+    (home-page "https://github.com/django/django-contrib-comments")
+    (synopsis "Comments framework")
+    (description
+      "Django used to include a comments framework; since Django 1.6 it's been
+separated to a separate project.  This is that project.  This framework can be
+used to attach comments to any model, so you can use it for comments on blog
+entries, photos, book chapters, or anything else.")
+    (license license:bsd-3)))
+
+(define-public python2-django-contrib-comments
+  (package-with-python2 python-django-contrib-comments))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #27: 0026-gnu-Add-python-django-overextends.patch --]
[-- Type: text/x-patch, Size: 2124 bytes --]

From c6cf2e90b8ef39a01e21301c0140f4cace2de7d2 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 19:08:11 +0200
Subject: [PATCH 26/37] gnu: Add python-django-overextends.

* gnu/packages/django.scm (python-django-overextends, python2-django-overextends):
New variables.
---
 gnu/packages/django.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 0e16c54b1..05d9b75ed 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -437,3 +437,37 @@ entries, photos, book chapters, or anything else.")
 
 (define-public python2-django-contrib-comments
   (package-with-python2 python-django-contrib-comments))
+
+(define-public python-django-overextends
+  (package
+    (name "python-django-overextends")
+    (version "0.4.3")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-overextends" version))
+              (sha256
+               (base32
+                "0qc2pcf3i56pmfxh2jw7k3pgljd8xzficmkl2541n7bkcbngqfzm"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (zero? (system* "./test_project/manage.py" "test")))))))
+    (propagated-inputs
+     `(("python-django" ,python-django)))
+    (native-inputs
+     `(("sphinx-me" ,python-sphinx-me)))
+    (home-page "https://github.com/stephenmcd/django-overextends")
+    (synopsis "Circular template inheritance")
+    (description
+      "A Django reusable app providing the overextends template tag, a drop-in
+replacement for Django's extends tag, which allows you to use circular template
+inheritance.  The primary use-case for overextends is to simultaneously
+override and extend templates from other reusable apps, in your own Django
+project.")
+    (license license:bsd-2)))
+
+(define-public python2-django-overextends
+  (package-with-python2 python-django-overextends))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #28: 0027-gnu-Add-python-hiredis.patch --]
[-- Type: text/x-patch, Size: 1521 bytes --]

From 1b9cc7bae05b91cd9110dbcdffaefe7e39f9d0d4 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 19:11:48 +0200
Subject: [PATCH 27/37] gnu: Add python-hiredis.

* gnu/packages/python.scm (python-hiredis, python2-hiredis): New variables.
---
 gnu/packages/python.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 9a3df386b..db5192e15 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14426,3 +14426,27 @@ for Python.  The design goals are:
 
 (define-public python2-mysqlclient
   (package-with-python2 python-mysqlclient))
+
+(define-public python-hiredis
+  (package
+    (name "python-hiredis")
+    (version "0.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "hiredis" version))
+       (sha256
+        (base32
+         "1dfm2k9l9zar9nw9fwmm74zrgraxdxs04vx9li56fjcf289qx5fa"))))
+    (build-system python-build-system)
+    (arguments
+     ;; no tests
+     `(#:tests? #f))
+    (home-page "https://github.com/redis/hiredis-py")
+    (synopsis "Python extension that wraps protocol parsing code in hiredis")
+    (description "Python-hiredis is a python extension that wraps protocol
+parsing code in hiredis.  It primarily speeds up parsing of multi bulk replies.")
+    (license license:bsd-3)))
+
+(define-public python2-hiredis
+  (package-with-python2 python-hiredis))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #29: 0028-gnu-Add-python-fakeredis.patch --]
[-- Type: text/x-patch, Size: 1843 bytes --]

From c27dce21f4fdd65f567dcf8907e1ff5e16598049 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sun, 23 Apr 2017 16:37:02 +0200
Subject: [PATCH 28/37] gnu: Add python-fakeredis.

* gnu/packages/python.scm (python-fakeredis, python2-fakeredis): New variables.
---
 gnu/packages/python.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index db5192e15..c3a30991b 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14450,3 +14450,31 @@ parsing code in hiredis.  It primarily speeds up parsing of multi bulk replies."
 
 (define-public python2-hiredis
   (package-with-python2 python-hiredis))
+
+(define-public python-fakeredis
+  (package
+    (name "python-fakeredis")
+    (version "0.8.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "fakeredis" version))
+       (sha256
+        (base32
+         "0zncahj3byyasyfx9i7k991ph0n0lq8v3a21pqri5qxn9564bk9r"))))
+    (build-system python-build-system)
+    (arguments
+     ;; no tests
+     `(#:tests? #f))
+    (home-page "https://github.com/jamesls/fakeredis")
+    (synopsis "Fake implementation of redis API for testing purposes.")
+    (description "Fakeredis is a pure python implementation of the redis-py
+python client that simulates talking to a redis server.  This was created for a
+single purpose: to write unittests.  Setting up redis is not hard, but many time
+ you want to write unittests that do not talk to an external server (such as
+redis).  This module now allows tests to simply use this module as a reasonable
+substitute for redis.")
+    (license license:bsd-3)))
+
+(define-public python2-fakeredis
+  (package-with-python2 python-fakeredis))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #30: 0029-gnu-Add-python-django-redis.patch --]
[-- Type: text/x-patch, Size: 2336 bytes --]

From cc99601e8ce5ab658af2cadc974e615d4ec15047 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sun, 23 Apr 2017 16:54:53 +0200
Subject: [PATCH 29/37] gnu: Add python-django-redis.

* gnu/packages/django.scm (python-django-redis, python2-django-redis):
New variables.
---
 gnu/packages/django.scm | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 05d9b75ed..59f156234 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -25,6 +25,7 @@
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages python))
 
 (define-public python-django
@@ -471,3 +472,40 @@ project.")
 
 (define-public python2-django-overextends
   (package-with-python2 python-django-overextends))
+
+(define-public python-django-redis
+  (package
+    (name "python-django-redis")
+    (version "4.7.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-redis" version))
+              (sha256
+               (base32
+                "0yyyxv8n9l9dhs893jsqwg2cxqkkc79g719n9dzzzqgkzialv1c1"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (and (zero? (system* "redis-server" "--daemonize" "yes"))
+                  (with-directory-excursion "tests"
+                    (zero? (system* "python" "runtests.py")))))))))
+    (native-inputs
+     `(("python-fakeredis" ,python-fakeredis)
+       ("python-hiredis" ,python-hiredis)
+       ("python-mock" ,python-mock)
+       ("python-msgpack" ,python-msgpack)
+       ("redis" ,redis)))
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ("python-redis" ,python-redis)))
+    (home-page "https://github.com/niwibe/django-redis")
+    (synopsis "Full featured redis cache backend for Django")
+    (description
+      "Full featured redis cache backend for Django.")
+    (license license:bsd-3)))
+
+(define-public python2-django-redis
+  (package-with-python2 python-django-redis))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #31: 0030-gnu-Add-python-django-rq.patch --]
[-- Type: text/x-patch, Size: 2078 bytes --]

From 5e7070140b6af6c26c140d495edcfc89d88f77e5 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 19:14:03 +0200
Subject: [PATCH 30/37] gnu: Add python-django-rq.

* gnu/packages/django.scm (python-django-rq, python2-django-rq): New variables.
---
 gnu/packages/django.scm | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 59f156234..2527a4a03 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -509,3 +509,39 @@ project.")
 
 (define-public python2-django-redis
   (package-with-python2 python-django-redis))
+
+(define-public python-django-rq
+  (package
+    (name "python-django-rq")
+    (version "0.9.4")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-rq" version))
+              (sha256
+               (base32
+                "04v8ilfdp10bk31fxgh4cn083gsn5m06342cnpm5d10nd8hc0vky"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (and (zero? (system* "redis-server" "--daemonize" "yes"))
+                  (zero? (system* "django-admin.py" "test" "django_rq"
+                                  "--settings=django_rq.test_settings"
+                                  "--pythonpath="))))))))
+    (native-inputs
+     `(("redis" ,redis)))
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ("python-rq" ,python-rq)))
+    (home-page "https://github.com/ui/django-rq")
+    (synopsis "Django integration with RQ")
+    (description
+      "Django integration with RQ, a Redis based Python queuing library.
+Django-RQ is a simple app that allows you to configure your queues in django's
+settings.py and easily use them in your project.")
+    (license license:expat)))
+
+(define-public python2-django-rq
+  (package-with-python2 python-django-rq))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #32: 0031-gnu-Add-python-django-sortedm2m.patch --]
[-- Type: text/x-patch, Size: 1761 bytes --]

From 125a0f3c11f4670f237b881b7dc563b47fbe5cb1 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 19:18:02 +0200
Subject: [PATCH 31/37] gnu: Add python-django-sortedm2m.

* gnu/packages/django.scm (python-django-sortedm2m, python2-django-sortedm2m):
New variables.
---
 gnu/packages/django.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 2527a4a03..a7587988c 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -545,3 +545,30 @@ settings.py and easily use them in your project.")
 
 (define-public python2-django-rq
   (package-with-python2 python-django-rq))
+
+(define-public python-django-sortedm2m
+  (package
+    (name "python-django-sortedm2m")
+    (version "1.3.3")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-sortedm2m" version))
+              (sha256
+               (base32
+                "0axf765i7b3c2s83nlph47asi8s071dhq8l7y382v1pw785s22vi"))))
+    (build-system python-build-system)
+    (arguments
+     ;; no tests.
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-django" ,python-django)))
+    (home-page "https://github.com/gregmuellegger/django-sortedm2m")
+    (synopsis "drop-in replacement for django's own ManyToManyField")
+    (description
+      "Sortedm2m is a drop-in replacement for django's own ManyToManyField.
+The provided SortedManyToManyField behaves like the original one but remembers
+the order of added relations.")
+    (license license:bsd-3)))
+
+(define-public python2-django-sortedm2m
+  (package-with-python2 python-django-sortedm2m))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #33: 0032-gnu-Add-python-django-appconf.patch --]
[-- Type: text/x-patch, Size: 1829 bytes --]

From 5c4ad444814f3790ac296c954fdde73673c67afb Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 19:18:46 +0200
Subject: [PATCH 32/37] gnu: Add python-django-appconf.

* gnu/packages/django.scm (python-django-appconf, python2-django-appconf):
New variables.
---
 gnu/packages/django.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index a7587988c..562025968 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -572,3 +572,29 @@ the order of added relations.")
 
 (define-public python2-django-sortedm2m
   (package-with-python2 python-django-sortedm2m))
+
+(define-public python-django-appconf
+  (package
+    (name "python-django-appconf")
+    (version "1.0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-appconf" version))
+              (sha256
+               (base32
+                "0qdjdx35g66xjsc50v0c5h3kg6njs8df33mbjx6j4k1vd3m9lkba"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-django" ,python-django)))
+    (home-page "https://github.com/django-compressor/django-appconf")
+    (synopsis "Handle configuration defaults of packaged Django apps")
+    (description
+      "This app precedes Django's own AppConfig classes that act as \"objects
+[to] store metadata for an application\" inside Django's app loading mechanism.
+In other words, they solve a related but different use case than
+django-appconf and can't easily be used as a replacement.  The similarity in
+name is purely coincidental.")
+    (license license:bsd-3)))
+
+(define-public python2-django-appconf
+  (package-with-python2 python-django-appconf))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #34: 0033-gnu-Add-python-django-statici18n.patch --]
[-- Type: text/x-patch, Size: 1639 bytes --]

From dc5134cba89e0f24e566a7c5f38bfd63ef9e3509 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 19:19:19 +0200
Subject: [PATCH 33/37] gnu: Add python-django-statici18n.

* gnu/packages/django.scm (python-django-statici18n, python2-django-statici18n):
New variables.
---
 gnu/packages/django.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 562025968..472cf70aa 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -598,3 +598,27 @@ name is purely coincidental.")
 
 (define-public python2-django-appconf
   (package-with-python2 python-django-appconf))
+
+(define-public python-django-statici18n
+  (package
+    (name "python-django-statici18n")
+    (version "1.3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "django-statici18n" version))
+              (sha256
+               (base32
+                "0alcf4g1nv69njhq5k3qw4mfl2k6dc18bik5nk0g1mnp3m8zyz7k"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ("django-appconf" ,python-django-appconf)))
+    (home-page "https://github.com/zyegfryed/django-statici18n")
+    (synopsis "Generate JavaScript catalog to static files")
+    (description
+      "A Django app that provides helper for generating JavaScript catalog to
+static files.")
+    (license license:bsd-3)))
+
+(define-public python2-django-statici18n
+  (package-with-python2 python-django-statici18n))
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #35: 0034-gnu-python-pytest-django-Update-to-3.1.2.patch --]
[-- Type: text/x-patch, Size: 1617 bytes --]

From b14b147fc08b10c85f3133e6924c5d1fda253613 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 21:46:03 +0200
Subject: [PATCH 34/37] gnu: python-pytest-django: Update to 3.1.2.

* gnu/packages/django.scm (python-pytest-django, python2-pytest-django):
Update to 3.1.2.
---
 gnu/packages/django.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 472cf70aa..7c2abc243 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -129,13 +129,13 @@ with arguments to the field constructor.")
 (define-public python-pytest-django
   (package
     (name "python-pytest-django")
-    (version "2.9.1")
+    (version "3.1.2")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "pytest-django" version))
               (sha256
                (base32
-                "1mmc7zsz3dlhs6sx4sppkj1vgshabi362r1a8b8wpj1qfximpqcb"))))
+                "02932m2sr8x22m4az8syr8g835g4ak77varrnw71n6xakmdcr303"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f ; FIXME: How to run tests?
@@ -144,7 +144,7 @@ with arguments to the field constructor.")
          (add-after 'unpack 'patch-setuppy
            (lambda _
              (substitute* "setup.py"
-                          (("setuptools_scm==1.8.0") "setuptools_scm"))
+                          (("setuptools_scm==1.11.1") "setuptools_scm"))
              #t)))))
     (native-inputs
      `(("python-django" ,python-django)
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #36: 0035-gnu-python-pytest-cov-Update-to-2.4.0.patch --]
[-- Type: text/x-patch, Size: 1121 bytes --]

From 16c40374bf4da452f995c914996fbf2a997cedef Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 21:52:16 +0200
Subject: [PATCH 35/37] gnu: python-pytest-cov: Update to 2.4.0.

* gnu/packages/python.scm (python-pytest-cov, python2-pytest-cov): Update to
2.4.0.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index c3a30991b..f7f29b255 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1843,14 +1843,14 @@ and many external plugins.")
 (define-public python-pytest-cov
   (package
     (name "python-pytest-cov")
-    (version "2.2.1")
+    (version "2.4.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "pytest-cov" version))
         (sha256
          (base32
-          "1yl4nbhzfgsxqlsyk4clafgp9x11zvgrkprm9i2p3fgkwx9jxcm8"))))
+          "03c2qc42r4bczyw93gd7n0qi1h1jfhw7fnbhi33c3vp1hs81gm2k"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #37: 0036-gnu-Fix-python2-django-allauth.patch --]
[-- Type: text/x-patch, Size: 1408 bytes --]

From e19c9850640946c71e5d0eb17474e24a76da7175 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 21:09:47 +0200
Subject: [PATCH 36/37] gnu: Fix python2-django-allauth.

* gnu/packages/python.scm (python-openid)[properties]: Use python2-variant.
---
 gnu/packages/django.scm | 1 +
 gnu/packages/python.scm | 1 +
 2 files changed, 2 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 7c2abc243..2a661c03f 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -222,6 +222,7 @@ account authentication.")
 
 (define-public python2-django-allauth
   (package-with-python2 python-django-allauth))
+    
 
 (define-public python-django-gravatar2
   (package
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index f7f29b255..7519d51fc 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -5521,6 +5521,7 @@ features useful for text console applications.")
         (base32
          "1x3nh3fycqfn43jp5j5pb4q4y2jxp4mdka4absaa3bc0078qd758"))))
     (build-system python-build-system)
+    (properties `((python2-variant . ,(delay python2-openid))))
     (home-page "https://github.com/necaris/python3-openid")
     (synopsis "OpenID support for servers and consumers")
     (description "This library provides OpenID authentication for Python, both
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #38: 0037-gnu-Add-pootle.patch --]
[-- Type: text/x-patch, Size: 3752 bytes --]

From 4ea9d757a191fe27b3a34a7edbd181e4d590f91d Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 22 Apr 2017 23:11:07 +0200
Subject: [PATCH 37/37] gnu: Add pootle.

* gnu/packages/django.scm (pootle): New variable.
---
 gnu/packages/django.scm | 72 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 2a661c03f..6cce56776 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -623,3 +623,75 @@ static files.")
 
 (define-public python2-django-statici18n
   (package-with-python2 python-django-statici18n))
+
+(define-public pootle
+  (package
+    (name "pootle")
+    (version "2.8.0rc5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "Pootle" version ".tar.bz2"))
+        (sha256
+         (base32
+          "0m6qcpkcy22dk3ad5y2k8851kqg2w6vrkywgy4vabwbacd7r1mvn"))))
+    (build-system python-build-system)
+    (arguments
+     `(; pootle supports only python2.
+       #:python ,python-2
+       ;; tests are not run and fail with "pytest_pootle/data/po/.tmp: No such
+       ;; file or directory". If we create this directory,
+       ;; pytest_pootle/data/po/terminology.po is missing.
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'fix-requirements
+           (lambda _
+             (substitute* "Pootle.egg-info/requires.txt"
+               (("1.7.3") "1.8.0")
+               (("2.0.0") "2.1.0"))
+             (substitute* "requirements/tests.txt"
+               (("==3.0.6") ">=3.0.6"))
+             (substitute* "requirements/base.txt"
+               (("1.7.3") "1.8.0")
+               (("2.0.0") "2.1.0")))))))
+    (propagated-inputs
+     `(("django-allauth" ,python2-django-allauth)
+       ("django-assets" ,python2-django-assets)
+       ("django-bulk-update" ,python2-django-bulk-update)
+       ("django-contact-form" ,python2-django-contact-form)
+       ("django-contrib-comments" ,python2-django-contrib-comments)
+       ("django-overextends" ,python2-django-overextends)
+       ("django-redis" ,python2-django-redis)
+       ("django-rq" ,python2-django-rq)
+       ("django-sortedm2m" ,python2-django-sortedm2m)
+       ("django-statici18n" ,python2-django-statici18n)
+       ("babel" ,python2-babel)
+       ("cssmin" ,python2-cssmin)
+       ("diff-match-patch" ,python2-diff-match-patch)
+       ("dirsync" ,python2-dirsync)
+       ("elasticsearch" ,python2-elasticsearch)
+       ("jsonfield" ,python2-django-jsonfield)
+       ("lxml" ,python2-lxml)
+       ("dateutil" ,python2-dateutil)
+       ("levenshtein" ,python2-levenshtein)
+       ("mysqlclient" ,python2-mysqlclient)
+       ("psycopg2" ,python2-psycopg2)
+       ("pytz" ,python2-pytz)
+       ("rq" ,python2-rq)
+       ("scandir" ,python2-scandir)
+       ("stemming" ,python2-stemming)
+       ("translate-toolkit" ,python2-translate-toolkit)))
+    (native-inputs
+     `(("python2-pytest-warnings" ,python2-pytest-warnings)
+       ("python2-pytest-django" ,python2-pytest-django)
+       ("python2-pytest-catchlog" ,python2-pytest-catchlog)
+       ("python2-pytest-cov" ,python2-pytest-cov)
+       ("python2-factory-boy" ,python2-factory-boy)))
+    (home-page "http://pootle.translatehouse.org/")
+    (synopsis "Community localization server")
+    (description
+      "Pootle is an online translation and localization tool.  It works to
+lower the barrier of entry, providing tools to enable teams to work towards
+higher quality while welcoming newcomers.")
+    (license license:gpl3+)))
-- 
2.12.2


^ permalink raw reply related	[relevance 94%]

* bug#26524: [PATCH 1/3] gnu: Add python-radon
  2017-04-15 18:59 91% bug#26524: Add conda and dependencies Frederick Muriithi
@ 2017-04-27 15:55 65% ` Muriithi Frederick Muriuki
  2017-05-25  8:42 63% ` bug#26524: [PATCH] " Frederick Muriithi
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 200+ results
From: Muriithi Frederick Muriuki @ 2017-04-27 15:55 UTC (permalink / raw)
  To: 26524

* gnu/packages/python.scm (python-radon): New variable.
---
 gnu/packages/python.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e51405b..b4ebe2d 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -13999,3 +13999,37 @@ exception message with a traceback that points to the culprit.")
 
 (define-public python2-fudge
   (package-with-python2 python-fudge))
+
+(define-public python-radon
+  (package
+    (name "python-radon")
+    (version "1.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "radon" version))
+       (sha256
+        (base32
+         "1h6jv36am0i827182a04ki6291lyx4kp957xfr5njgprj4nd0qsl"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-colorama" ,python-colorama)
+       ("python-flake8-polyfill"
+        ,python-flake8-polyfill)
+       ("python-mando" ,python-mando-0.3.1)))
+    (native-inputs
+     `(("python-flake8" ,python-flake8)
+       ("python-tox" ,python-tox)
+       ("python-pytest" ,python-pytest)
+       ("python-paramunittest" ,python-paramunittest)))
+    (home-page "https://radon.readthedocs.org/")
+    (synopsis "Code Metrics in Python")
+    (description "Radon is a Python tool which computes various code metrics.  Supported
+ metrics are:
+@itemize @bullet
+@item raw metrics: SLOC, comment lines, blank lines, &c.
+@item Cyclomatic Complexity (i.e.  McCabe’s Complexity)
+@item Halstead metrics (all of them)
+@item the Maintainability Index (a Visual Studio metric)
+@end itemize")
+    (license license:expat)))
-- 
2.10.2

^ permalink raw reply related	[relevance 65%]

* bug#26692: [PATCH] gnu: python-openid: Fix tests.
@ 2017-04-28 12:42 65% Danny Milosavljevic
  2017-04-28 12:52 65% ` bug#26692: [PATCH v2] gnu: python-openid: Fix package Danny Milosavljevic
  0 siblings, 1 reply; 200+ results
From: Danny Milosavljevic @ 2017-04-28 12:42 UTC (permalink / raw)
  To: 26692

* gnu/packages/python.scm (python-openid)[arguments]: Replace 'check phase.
[native-inputs]: Add python-defusedxml, python-psycopg2.
---
 gnu/packages/python.scm | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e51405bd9..bee656318 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -5523,6 +5523,17 @@ features useful for text console applications.")
         (base32
          "1x3nh3fycqfn43jp5j5pb4q4y2jxp4mdka4absaa3bc0078qd758"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+        (replace 'check
+          (lambda _
+            (substitute* "admin/runtests"
+              (("django_failures = django_tests..") "print('Disabled Django tests')"))
+            (zero? (system* "./admin/runtests")))))))
+    (native-inputs
+     `(("python-defusedxml" ,python-defusedxml)
+       ("python-psycopg2" ,python-psycopg2)))
     (home-page "https://github.com/necaris/python3-openid")
     (synopsis "OpenID support for servers and consumers")
     (description "This library provides OpenID authentication for Python, both

^ permalink raw reply related	[relevance 65%]

* bug#26692: [PATCH v2] gnu: python-openid: Fix package.
  2017-04-28 12:42 65% bug#26692: [PATCH] gnu: python-openid: Fix tests Danny Milosavljevic
@ 2017-04-28 12:52 65% ` Danny Milosavljevic
  0 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-04-28 12:52 UTC (permalink / raw)
  To: 26692

* gnu/packages/python.scm (python-openid)[arguments]: Replace 'check phase.
[propagated-inputs]: Add python-defusedxml.
[native-inputs]: Add python-psycopg2.
---
 gnu/packages/python.scm | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e51405bd9..313e69975 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -5523,6 +5523,19 @@ features useful for text console applications.")
         (base32
          "1x3nh3fycqfn43jp5j5pb4q4y2jxp4mdka4absaa3bc0078qd758"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+        (replace 'check
+          (lambda _
+            (substitute* "admin/runtests"
+              (("django_failures = django_tests..")
+               "print('Disabled Django tests')"))
+            (zero? (system* "./admin/runtests")))))))
+    (propagated-inputs
+     `(("python-defusedxml" ,python-defusedxml)))
+    (native-inputs
+     `(("python-psycopg2" ,python-psycopg2)))
     (home-page "https://github.com/necaris/python3-openid")
     (synopsis "OpenID support for servers and consumers")
     (description "This library provides OpenID authentication for Python, both

^ permalink raw reply related	[relevance 65%]

* bug#26622: [PATCH] Add freexl
  @ 2017-04-28 16:40 60%             ` Catonano
    0 siblings, 1 reply; 200+ results
From: Catonano @ 2017-04-28 16:40 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: 26622-done


[-- Attachment #1.1: Type: text/plain, Size: 227 bytes --]

2017-04-27 12:54 GMT+02:00 Ricardo Wurmus <rekado@elephly.net


> > Should I send a patch, for this ?
>
> Yes, it’s best for you to send a patch.  I’ll apply it.
>
>
Ok, so: here it is
I hope it's ok
Thank you !

[-- Attachment #1.2: Type: text/html, Size: 662 bytes --]

[-- Attachment #2: 0001-fixed-my-own-name-in-copyright-attribtions.patch --]
[-- Type: text/x-patch, Size: 2391 bytes --]

From cf36f995b788e73cff5370db5b5969b6736d71e1 Mon Sep 17 00:00:00 2001
From: humanitiesNerd <catonano@gmail.com>
Date: Fri, 28 Apr 2017 18:34:56 +0200
Subject: [PATCH 1/1] fixed my own name in copyright attribtions

* gnu/packages/emacs.scm: fixed te copyright line about myself
* gnu/packages/perl.scl: idem
* gnu/packkages/python.scm: idem
* gnu/packkages/xml.scm: idem
---
 gnu/packages/emacs.scm  | 2 +-
 gnu/packages/perl.scm   | 2 +-
 gnu/packages/python.scm | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 14d851184..a2b34ac04 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
-;;; Copyright © 2016 humanitiesNerd <catonano@gmail.com>
+;;; Copyright © 2016 Adriano Peluso <catonano@gmail.com>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 David Thompson <davet@gnu.org>
 ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 3eb7815f2..812d7548c 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -14,7 +14,7 @@
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017 Raoul J.P. Bonnal <ilpuccio.febo@gmail.com>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2017 humanitiesNerd <catonano@gmail.com>
+;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e51405bd9..71d29eea4 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -36,7 +36,7 @@
 ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
-;;; Copyright © 2017 humanitiesNerd <catonano@gmail.com>
+;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
 ;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
 ;;;
 ;;; This file is part of GNU Guix.
-- 
2.12.0


^ permalink raw reply related	[relevance 60%]

* bug#26700: [PATCH] python-sphinxcontrib-programoutput: Update to 0.10.
@ 2017-04-28 19:30 65% Christopher Allan Webber
  0 siblings, 0 replies; 200+ results
From: Christopher Allan Webber @ 2017-04-28 19:30 UTC (permalink / raw)
  To: 26700

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: 0001-python-sphinxcontrib-programoutput-Update-to-0.10.patch --]
[-- Type: text/x-patch, Size: 1256 bytes --]

From ac6ac00e67d701240a88c8b67b87b8616f764691 Mon Sep 17 00:00:00 2001
From: Christopher Allan Webber <cwebber@dustycloud.org>
Date: Fri, 28 Apr 2017 14:29:16 -0500
Subject: [PATCH] python-sphinxcontrib-programoutput: Update to 0.10.

* gnu/packages/python.scm (python-sphinxcontrib-programoutput): Update to 0.10.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 0dac375e9..5c458a196 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -10022,13 +10022,13 @@ programmatically interfacing with your system's $EDITOR.")
 (define-public python-sphinxcontrib-programoutput
   (package
     (name "python-sphinxcontrib-programoutput")
-    (version "0.8")
+    (version "0.10")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "sphinxcontrib-programoutput" version))
               (sha256
                (base32
-                "098as6z1s0gb4dh5xcr1fd2vpm91zj93jzvgawspxf5s4hqs0xhp"))))
+                "153hhnlbx4688zj9wd64819ps5znc2jlyp5crkgzvn5hxgy99vpx"))))
     (build-system python-build-system)
     (arguments
      ;; FIXME: Many tests are failing and the upstream is gone.
-- 
2.12.2

^ permalink raw reply related	[relevance 65%]

* bug#26622: [PATCH] Add freexl
  @ 2017-04-29 18:02 57%                 ` Catonano
  0 siblings, 0 replies; 200+ results
From: Catonano @ 2017-04-29 18:02 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: 26622-done


[-- Attachment #1.1: Type: text/plain, Size: 548 bytes --]

Ok, her is the new one

It contains them all, this time

2017-04-29 19:58 GMT+02:00 Catonano <catonano@gmail.com>:

>
>
> 2017-04-28 18:40 GMT+02:00 Catonano <catonano@gmail.com>:
>
>> 2017-04-27 12:54 GMT+02:00 Ricardo Wurmus <rekado@elephly.net
>>
>>
>>> > Should I send a patch, for this ?
>>>
>>> Yes, it’s best for you to send a patch.  I’ll apply it.
>>>
>>>
>> Ok, so: here it is
>> I hope it's ok
>> Thank you !
>>
>
>
> Wait ! This patch is missing one file ! 😯
>
> I'll send a new one in a while !
>
>

[-- Attachment #1.2: Type: text/html, Size: 1766 bytes --]

[-- Attachment #2: 0001-fixed-my-own-name-in-copyright-attribtions.patch --]
[-- Type: text/x-patch, Size: 2935 bytes --]

From 2ca26fd7b797e9890045fb15cb249f68f44a26ed Mon Sep 17 00:00:00 2001
From: humanitiesNerd <catonano@gmail.com>
Date: Fri, 28 Apr 2017 18:34:56 +0200
Subject: [PATCH 1/1] fixed my own name in copyright attribtions

* gnu/packages/emacs.scm: fixed te copyright line about myself
* gnu/packages/perl.scl: idem
* gnu/packkages/python.scm: idem
* gnu/packkages/xml.scm: idem
---
 gnu/packages/emacs.scm  | 2 +-
 gnu/packages/perl.scm   | 2 +-
 gnu/packages/python.scm | 2 +-
 gnu/packages/xml.scm    | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 14d851184..a2b34ac04 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
-;;; Copyright © 2016 humanitiesNerd <catonano@gmail.com>
+;;; Copyright © 2016 Adriano Peluso <catonano@gmail.com>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 David Thompson <davet@gnu.org>
 ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 3eb7815f2..812d7548c 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -14,7 +14,7 @@
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017 Raoul J.P. Bonnal <ilpuccio.febo@gmail.com>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2017 humanitiesNerd <catonano@gmail.com>
+;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e51405bd9..71d29eea4 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -36,7 +36,7 @@
 ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
-;;; Copyright © 2017 humanitiesNerd <catonano@gmail.com>
+;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
 ;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
 ;;;
 ;;; This file is part of GNU Guix.
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 247107917..25bda0d5a 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -14,7 +14,7 @@
 ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
 ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2017 humanitiesNerd <catonano@gmail.com>
+;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
-- 
2.12.0


^ permalink raw reply related	[relevance 57%]

* bug#26722: [PATCH 1/3] gnu: Add python-sockjs-tornado.
  @ 2017-04-30 21:44 65% ` Christopher Baines
  2017-04-30 21:44 65%   ` bug#26722: [PATCH 2/3] gnu: python-tornado: Update to 4.5.1 Christopher Baines
  2017-05-01 19:22 65% ` bug#26722: [PATCH 1/3] gnu: Add python-sockjs-tornado Christopher Baines
  1 sibling, 1 reply; 200+ results
From: Christopher Baines @ 2017-04-30 21:44 UTC (permalink / raw)
  To: 26722

* gnu/packages/python.scm (python-sockjs-tornado): New variable.
---
 gnu/packages/python.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 22fadea27..5fbc012b7 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -4217,6 +4217,36 @@ routines such as routines for numerical integration and optimization.")
   (package-with-python2
    (strip-python2-variant python-scipy)))
 
+(define-public python-sockjs-tornado
+  (package
+    (name "python-sockjs-tornado")
+    (version "1.0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://pypi.python.org/packages/source/"
+             "s/sockjs-tornado/sockjs-tornado-" version ".tar.gz"))
+       (sha256
+        (base32
+         "16cff40nniqsyvda1pb2j3b4zwmrw7y2g1vqq78lp20xpmhnwwkd"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-tornado" ,python-tornado)))
+    (home-page "http://github.com/mrjoes/sockjs-tornado/")
+    (synopsis
+     "SockJS python server implementation on top of Tornado framework")
+    (description
+     "SockJS-tornado provides the server side counterpart to a SockJS client
+library, through the Tornado framework.
+
+SockJS provides a low latency, full duplex, cross-domain communication channel
+between a web browser and web server.")
+    (license license:expat)))
+
+(define-public python2-sockjs-tornado
+  (package-with-python2 python-sockjs-tornado))
+
 (define-public python-socksipy-branch
   (package
     (name "python-socksipy-branch")
-- 
2.12.2

^ permalink raw reply related	[relevance 65%]

* bug#26722: [PATCH 2/3] gnu: python-tornado: Update to 4.5.1.
  2017-04-30 21:44 65% ` bug#26722: [PATCH 1/3] gnu: Add python-sockjs-tornado Christopher Baines
@ 2017-04-30 21:44 65%   ` Christopher Baines
  0 siblings, 0 replies; 200+ results
From: Christopher Baines @ 2017-04-30 21:44 UTC (permalink / raw)
  To: 26722

* gnu/packages/python.scm (python-tornado): Update to 4.5.1.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 5fbc012b7..d01aa2f56 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -6135,13 +6135,13 @@ It is written entirely in Python.")
 (define-public python-tornado
   (package
     (name "python-tornado")
-    (version "4.3")
+    (version "4.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "tornado" version))
        (sha256
-        (base32 "1gzgwayl6hmc9jfcl88bni4jcsk2jcca9dn1rvrfsvnijcjx7hn9"))))
+        (base32 "1zbkgcdfq81k298awrm8p0xwbwwn2p3nbizdglzfbkskhai082fv"))))
     (build-system python-build-system)
     (arguments
      '(;; FIXME: Two tests error out with:
-- 
2.12.2

^ permalink raw reply related	[relevance 65%]

* bug#26731: [PATCH 2/2] gnu: Add python-flask-oidc.
  2017-05-01 10:01 65% ` bug#26731: [PATCH 1/2] gnu: Add python-oauth2client Danny Milosavljevic
@ 2017-05-01 10:01 65%   ` Danny Milosavljevic
  0 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-05-01 10:01 UTC (permalink / raw)
  To: 26731

* gnu/packages/python.scm (python-flask-oidc): New variable.
---
 gnu/packages/python.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index dd83f2dd7..1ea2db622 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14038,3 +14038,30 @@ exception message with a traceback that points to the culprit.")
     (description "@code{python-oauth2client} provides an OAuth 2.0 client
 library for Python")
     (license license:asl2.0)))
+
+(define-public python-flask-oidc
+  (package
+    (name "python-flask-oidc")
+    (version "1.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "flask-oidc" version))
+       (sha256
+        (base32
+         "1ay5j0mf174bix7i67hclr95gv16z81fpx0dijvi0gydvdj3ddy2"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-flask" ,python-flask)
+       ("python-itsdangerous" ,python-itsdangerous)
+       ("python-oauth2client" ,python-oauth2client)
+       ("python-six" ,python-six)))
+    (native-inputs
+     `(("python-nose" ,python-nose)
+       ("python-mock" ,python-mock)))
+    (home-page
+     "https://github.com/puiterwijk/flask-oidc")
+    (synopsis "OpenID Connect extension for Flask")
+    (description "@code{python-flask-oidc} provides an OpenID Connect extension
+for Flask.")
+    (license license:bsd-2)))

^ permalink raw reply related	[relevance 65%]

* bug#26731: [PATCH 1/2] gnu: Add python-oauth2client.
  @ 2017-05-01 10:01 65% ` Danny Milosavljevic
  2017-05-01 10:01 65%   ` bug#26731: [PATCH 2/2] gnu: Add python-flask-oidc Danny Milosavljevic
  0 siblings, 1 reply; 200+ results
From: Danny Milosavljevic @ 2017-05-01 10:01 UTC (permalink / raw)
  To: 26731

* gnu/packages/python.scm (python-oauth2client): New variable.
---
 gnu/packages/python.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 164c1f49b..dd83f2dd7 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14011,3 +14011,30 @@ exception message with a traceback that points to the culprit.")
 
 (define-public python2-fudge
   (package-with-python2 python-fudge))
+
+(define-public python-oauth2client
+  (package
+    (name "python-oauth2client")
+    (version "4.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "oauth2client" version))
+       (sha256
+        (base32
+         "1irqqap2zibysf8dba8sklfqikia579srd0phm5n754ni0h59gl0"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f))                    ; Django not found.
+    (propagated-inputs
+     `(("python-httplib2" ,python-httplib2)
+       ("python-pyasn1" ,python-pyasn1)
+       ("python-pyasn1-modules" ,python-pyasn1-modules)
+       ("python-rsa" ,python-rsa)
+       ("python-six" ,python-six)))
+    (home-page
+     "http://github.com/google/oauth2client/")
+    (synopsis "OAuth 2.0 client library")
+    (description "@code{python-oauth2client} provides an OAuth 2.0 client
+library for Python")
+    (license license:asl2.0)))

^ permalink raw reply related	[relevance 65%]

* bug#26722: [PATCH 2/3] gnu: python-tornado: Update to 4.5.1.
  2017-05-01 19:22 65% ` bug#26722: [PATCH 1/3] gnu: Add python-sockjs-tornado Christopher Baines
@ 2017-05-01 19:22 65%   ` Christopher Baines
  0 siblings, 0 replies; 200+ results
From: Christopher Baines @ 2017-05-01 19:22 UTC (permalink / raw)
  To: 26722

* gnu/packages/python.scm (python-tornado): Update to 4.5.1.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 85967ba45..6139287db 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -6137,13 +6137,13 @@ It is written entirely in Python.")
 (define-public python-tornado
   (package
     (name "python-tornado")
-    (version "4.3")
+    (version "4.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "tornado" version))
        (sha256
-        (base32 "1gzgwayl6hmc9jfcl88bni4jcsk2jcca9dn1rvrfsvnijcjx7hn9"))))
+        (base32 "1zbkgcdfq81k298awrm8p0xwbwwn2p3nbizdglzfbkskhai082fv"))))
     (build-system python-build-system)
     (arguments
      '(;; FIXME: Two tests error out with:
-- 
2.12.2

^ permalink raw reply related	[relevance 65%]

* bug#26722: [PATCH 1/3] gnu: Add python-sockjs-tornado.
    2017-04-30 21:44 65% ` bug#26722: [PATCH 1/3] gnu: Add python-sockjs-tornado Christopher Baines
@ 2017-05-01 19:22 65% ` Christopher Baines
  2017-05-01 19:22 65%   ` bug#26722: [PATCH 2/3] gnu: python-tornado: Update to 4.5.1 Christopher Baines
  1 sibling, 1 reply; 200+ results
From: Christopher Baines @ 2017-05-01 19:22 UTC (permalink / raw)
  To: 26722

* gnu/packages/python.scm (python-sockjs-tornado): New variable.
---
 gnu/packages/python.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 22fadea27..85967ba45 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -4217,6 +4217,38 @@ routines such as routines for numerical integration and optimization.")
   (package-with-python2
    (strip-python2-variant python-scipy)))
 
+(define-public python-sockjs-tornado
+  (package
+    (name "python-sockjs-tornado")
+    (version "1.0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "sockjs-tornado" version))
+       (sha256
+        (base32
+         "16cff40nniqsyvda1pb2j3b4zwmrw7y2g1vqq78lp20xpmhnwwkd"))))
+    (build-system python-build-system)
+    (arguments
+     `(;; There are no tests, and running the test phase requires missing
+       ;; dependencies
+       #:tests? #f))
+    (propagated-inputs
+     `(("python-tornado" ,python-tornado)))
+    (home-page "http://github.com/mrjoes/sockjs-tornado/")
+    (synopsis
+     "SockJS python server implementation on top of Tornado framework")
+    (description
+     "SockJS-tornado provides the server side counterpart to a SockJS client
+library, through the Tornado framework.
+
+SockJS provides a low latency, full duplex, cross-domain communication channel
+between a web browser and web server.")
+    (license license:expat)))
+
+(define-public python2-sockjs-tornado
+  (package-with-python2 python-sockjs-tornado))
+
 (define-public python-socksipy-branch
   (package
     (name "python-socksipy-branch")
-- 
2.12.2

^ permalink raw reply related	[relevance 65%]

* bug#26743: [PATCH] gnu: python-pytest-cov: Update to 2.4.0.
@ 2017-05-02  7:32 65% Danny Milosavljevic
  0 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-05-02  7:32 UTC (permalink / raw)
  To: 26743

* gnu/packages/python.scm (python-pytest-cov): Update to 2.4.0.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 5df679935..b7981c7bf 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1843,14 +1843,14 @@ and many external plugins.")
 (define-public python-pytest-cov
   (package
     (name "python-pytest-cov")
-    (version "2.2.1")
+    (version "2.4.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "pytest-cov" version))
         (sha256
          (base32
-          "1yl4nbhzfgsxqlsyk4clafgp9x11zvgrkprm9i2p3fgkwx9jxcm8"))))
+          "03c2qc42r4bczyw93gd7n0qi1h1jfhw7fnbhi33c3vp1hs81gm2k"))))
     (build-system python-build-system)
     (arguments
      `(#:phases

^ permalink raw reply related	[relevance 65%]

* bug#26744: [PATCH] gnu: Add python-mwclient.
@ 2017-05-02  8:18 65% Danny Milosavljevic
  0 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-05-02  8:18 UTC (permalink / raw)
  To: 26744

* gnu/packages/python.scm (python-mwclient, python2-mwclient): New variables.
---
 gnu/packages/python.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 5df679935..407a2c3a3 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14106,3 +14106,37 @@ library for Python")
     (description "@code{python-flask-oidc} provides an OpenID Connect extension
 for Flask.")
     (license license:bsd-2)))
+
+(define-public python-mwclient
+  (package
+    (name "python-mwclient")
+    (version "0.8.4")
+    (source
+     (origin
+       (method url-fetch)
+       ;; The PyPI version wouldn't contain tests.
+       (uri (string-append "https://github.com/mwclient/mwclient/archive/"
+                           "v" version ".tar.gz"))
+       (sha256
+        (base32
+         "1jj0yhilkjir00719fc7w133x7hdyhkxhk6xblla4asig45klsfv"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-requests" ,python-requests)
+       ("python-requests-oauthlib"
+        ,python-requests-oauthlib)
+       ("python-six" ,python-six)))
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-pep8" ,python-pytest-pep8)
+       ("python-pytest-cache" ,python-pytest-cache)
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-responses" ,python-responses)))
+    (home-page "https://github.com/btongminh/mwclient")
+    (synopsis "MediaWiki API client")
+    (description "This package provides a MediaWiki API client.")
+    (license license:expat)))
+
+(define-public python2-mwclient
+  (package-with-python2 python-mwclient))

^ permalink raw reply related	[relevance 65%]

* bug#26772: [PATCH 1/3] gnu: python-termcolor: Fix uri.
  @ 2017-05-04 10:06 65% ` Mathieu Othacehe
  0 siblings, 0 replies; 200+ results
From: Mathieu Othacehe @ 2017-05-04 10:06 UTC (permalink / raw)
  To: 26772

* gnu/packages/python.scm (python-termcolor): Remove "python-" from
  pypi uri.

This was causing guix refresh to fail on this package.
---
 gnu/packages/python.scm     | 2 +-
 gnu/packages/statistics.scm | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 4c7aee20c..f88828ac1 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7489,7 +7489,7 @@ a hash value.")
     (source
      (origin
        (method url-fetch)
-       (uri (pypi-uri "python-termcolor" version))
+       (uri (pypi-uri "termcolor" version))
        (sha256
         (base32
          "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x"))))
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index b81bb4207..9c646e15f 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016, 2017 Raoul Bonnal <ilpuccio.febo@gmail.com>
+;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
-- 
2.12.2

^ permalink raw reply related	[relevance 65%]

* bug#26524: [PATCH 4/4] gnu: Add python-sure
       [not found]     <20170507022943.20427-1-fredmanglis@gmail.com>
@ 2017-05-07  2:29 65% ` Muriithi Frederick Muriuki
  0 siblings, 0 replies; 200+ results
From: Muriithi Frederick Muriuki @ 2017-05-07  2:29 UTC (permalink / raw)
  To: 26524

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

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3ae51f0..367e494 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14173,4 +14173,30 @@ for Flask.")
 @item Halstead metrics (all of them)
 @item the Maintainability Index (a Visual Studio metric)
 @end itemize")
-(license license:expat)))
+    (license license:expat)))
+
+(define-public python-sure
+  (package
+    (name "python-sure")
+    (version "1.4.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "sure" version))
+       (sha256
+        (base32
+         "1hiyqnrwwghbjikzkvvdb2rhxnck8dvpjy1lq41fb1xwfzips71r"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-mock" ,python-mock)
+       ("python-six" ,python-six)))
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (home-page
+     "http://github.com/gabrielfalcao/sure")
+    (synopsis
+     "Sure is an automated testing library in python for python")
+    (description
+     "Sure is a python library for python that leverages a DSL for writing assertions.
+Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}")
+    (license license:gpl3)))
-- 
2.10.2

^ permalink raw reply related	[relevance 65%]

* bug#26818: Certbot with Python 3
@ 2017-05-07 18:46 69% Leo Famulari
  0 siblings, 0 replies; 200+ results
From: Leo Famulari @ 2017-05-07 18:46 UTC (permalink / raw)
  To: 26818


[-- Attachment #1.1: Type: text/plain, Size: 349 bytes --]

The latest release of Certbot and the acme library can use Python 3 [0].

These patches create a new python-mock@2 variable, and then upgrade
certbot and python-acme to use Python 3 by default. I did some light
testing by renewing some certificates.

[0]
https://github.com/certbot/certbot/pull/4568/commits/48b47274e7e6b11b7748b72a8e87add3f218e8b7

[-- Attachment #1.2: 0001-gnu-Add-python-mock-2.patch --]
[-- Type: text/plain, Size: 1435 bytes --]

From 89835ec0ed5d9e1b89e70ab73af4bc27be8daf94 Mon Sep 17 00:00:00 2001
From: Leo Famulari <leo@famulari.name>
Date: Sun, 7 May 2017 14:31:44 -0400
Subject: [PATCH 1/2] gnu: Add python-mock-2.

* gnu/packages/python.scm (python-mock-2): New variable.
---
 gnu/packages/python.scm | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 4c7aee20c..3f2a5b842 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -920,6 +920,24 @@ have been used.")
 (define-public python2-mock
   (package-with-python2 python-mock))
 
+;;; Some packages (notably, certbot and python-acme) rely on this newer version
+;;; of python-mock. However, a large number of packages fail to build with
+;;; mock@2, so we add a new variable for now. Also, there may be a dependency
+;;; cycle between mock and six, so we avoid creating python2-mock@2 for now.
+(define-public python-mock-2
+  (package
+    (inherit python-mock)
+    (version "2.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "mock" version))
+        (sha256
+         (base32
+          "1flbpksir5sqrvq2z0dp8sl4bzbadg21sj4d42w3klpdfvgvcn5i"))))
+    (propagated-inputs
+     `(("python-pbr" ,python-pbr-minimal)
+       ,@(package-propagated-inputs python-mock)))))
 
 (define-public python-setuptools
   (package
-- 
2.12.2


[-- Attachment #1.3: 0002-gnu-certbot-Build-with-Python-3.patch --]
[-- Type: text/plain, Size: 4271 bytes --]

From 8eb108f21146ec9c02c5e276d8b7ad6a990c8cd1 Mon Sep 17 00:00:00 2001
From: Leo Famulari <leo@famulari.name>
Date: Sat, 6 May 2017 15:58:16 -0400
Subject: [PATCH 2/2] gnu: certbot: Build with Python 3.

* gnu/packages/tls.scm (certbot): Use python-3 to build.
[native-inputs, propagated-inputs]: Use Python 3 variants of dependencies. Use
python-mock-2.
---
 gnu/packages/tls.scm | 42 ++++++++++++++++++++----------------------
 1 file changed, 20 insertions(+), 22 deletions(-)

diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 1516fb852..6790e1797 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -482,7 +482,6 @@ security, and applying best practice development processes.")
        (base32
         "0hrmh28rrc0fsiw6nqfwbkwb1s4nkl54x50c0g0xlnp86752nzff"))))
     (build-system python-build-system)
-
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -507,7 +506,7 @@ security, and applying best practice development processes.")
                #t))))))
     ;; TODO: Add optional inputs for testing.
     (native-inputs
-     `(("python-mock" ,python-mock)
+     `(("python-mock" ,python-mock-2)
        ;; For documentation
        ("python-sphinx" ,python-sphinx)
        ("python-sphinxcontrib-programoutput" ,python-sphinxcontrib-programoutput)
@@ -543,8 +542,7 @@ security, and applying best practice development processes.")
                 "0hbp3njss01a0d3brvcfzja0w0j9plwrv6l70jsfvnhy3rrd7bcq"))))
     (build-system python-build-system)
     (arguments
-     `(#:python ,python-2
-       ,@(substitute-keyword-arguments (package-arguments python-acme)
+     `(,@(substitute-keyword-arguments (package-arguments python-acme)
            ((#:phases phases)
             `(modify-phases ,phases
               (replace 'install-documentation
@@ -559,27 +557,27 @@ security, and applying best practice development processes.")
                     #t))))))))
     ;; TODO: Add optional inputs for testing.
     (native-inputs
-     `(("python2-nose" ,python2-nose)
-       ("python2-mock" ,python2-mock)
+     `(("python-nose" ,python-nose)
+       ("python-mock" ,python-mock-2)
        ;; For documentation
-       ("python2-sphinx" ,python2-sphinx)
-       ("python2-sphinx-rtd-theme" ,python2-sphinx-rtd-theme)
-       ("python2-sphinx-repoze-autointerface" ,python2-sphinx-repoze-autointerface)
-       ("python2-sphinxcontrib-programoutput" ,python2-sphinxcontrib-programoutput)
+       ("python-sphinx" ,python-sphinx)
+       ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
+       ("python-sphinx-repoze-autointerface" ,python-sphinx-repoze-autointerface)
+       ("python-sphinxcontrib-programoutput" ,python-sphinxcontrib-programoutput)
        ("texinfo" ,texinfo)))
     (propagated-inputs
-     `(("python2-acme" ,python2-acme)
-       ("python2-zope-interface" ,python2-zope-interface)
-       ("python2-pyrfc3339" ,python2-pyrfc3339)
-       ("python2-pyopenssl" ,python2-pyopenssl)
-       ("python2-configobj" ,python2-configobj)
-       ("python2-configargparse" ,python2-configargparse)
-       ("python2-zope-component" ,python2-zope-component)
-       ("python2-parsedatetime" ,python2-parsedatetime)
-       ("python2-six" ,python2-six)
-       ("python2-psutil" ,python2-psutil)
-       ("python2-requests" ,python2-requests)
-       ("python2-pytz" ,python2-pytz)))
+     `(("python-acme" ,python-acme)
+       ("python-zope-interface" ,python-zope-interface)
+       ("python-pyrfc3339" ,python-pyrfc3339)
+       ("python-pyopenssl" ,python-pyopenssl)
+       ("python-configobj" ,python-configobj)
+       ("python-configargparse" ,python-configargparse)
+       ("python-zope-component" ,python-zope-component)
+       ("python-parsedatetime" ,python-parsedatetime)
+       ("python-six" ,python-six)
+       ("python-psutil" ,python-psutil)
+       ("python-requests" ,python-requests)
+       ("python-pytz" ,python-pytz)))
     (synopsis "Let's Encrypt client by the Electronic Frontier Foundation")
     (description "Certbot automatically receives and installs X.509 certificates
 to enable Transport Layer Security (TLS) on servers.  It interoperates with the
-- 
2.12.2


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply related	[relevance 69%]

* bug#26868: [PATCH] gnu: python-pytest-runner: Update to 2.11.1.
@ 2017-05-10 17:57 65% Roel Janssen
  0 siblings, 0 replies; 200+ results
From: Roel Janssen @ 2017-05-10 17:57 UTC (permalink / raw)
  To: 26868

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: 0001-gnu-python-pytest-runner-Update-to-2.11.1.patch --]
[-- Type: text/x-patch, Size: 1070 bytes --]

From 33ba51e99c62243905cb88466eb5bfea557aaf4e Mon Sep 17 00:00:00 2001
From: Roel Janssen <roel@gnu.org>
Date: Wed, 10 May 2017 19:53:45 +0200
Subject: [PATCH] gnu: python-pytest-runner: Update to 2.11.1.

* gnu/packages/python.scm (python-pytest-runner): Update to 2.11.1.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 60d3868e9..be0202de6 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1879,14 +1879,14 @@ supports coverage of subprocesses.")
 (define-public python-pytest-runner
   (package
     (name "python-pytest-runner")
-    (version "2.6.2")
+    (version "2.11.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pytest-runner" version))
        (sha256
         (base32
-         "1nwcqx0l3fv52kv8526wy8ypzghbq96c96di318d98d3wh7a8xg7"))))
+         "1cw978kqqcq916b9gfns1qjqvg33c5ail5jhw9054dsynkm32flq"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
-- 
2.12.2


[-- Attachment #2: Type: text/plain, Size: 289 bytes --]


Dear Guix,

When attempting to add another package (python-maildir-deduplicate),
I needed to upgrade this one.  Since I'm not sure about the impact of
this update, I'd like to have an opinion on whether this can go in
as-is, or that more care should be taken.

Kind regards,
Roel Janssen

^ permalink raw reply related	[relevance 65%]

* bug#26872: [PATCH 3/4] gnu: python2-dogtail: fix homepage URL python-kitchen: fix homepage URL.
  @ 2017-05-11  2:41 65% ` Ethan R. Jones
  0 siblings, 0 replies; 200+ results
From: Ethan R. Jones @ 2017-05-11  2:41 UTC (permalink / raw)
  To: 26872; +Cc: Ethan R. Jones

---
 gnu/packages/python.scm | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 60d3868e9..4d30fa0f9 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1353,7 +1353,8 @@ Python 3.3+.")
     (build-system python-build-system)
     (arguments `(#:python ,python-2
                  #:tests? #f))                    ; invalid command "test"
-    (home-page "https://fedorahosted.org/dogtail/")
+    ;; Currently no offical homepage.
+    (home-page "https://pypi.python.org/pypi/dogtail/")
     (synopsis "GUI test tool and automation framework written in Python")
     (description
      "Dogtail is a GUI test tool and automation framework written in Python.
@@ -2641,7 +2642,7 @@ version numbers.")
     (build-system python-build-system)
     (propagated-inputs
      `(("python-chardet" ,python-chardet)))
-    (home-page "https://fedorahosted.org/kitchen")
+    (home-page "https://pythonhosted.org/kitchen/")
     (synopsis "Python API for snippets")
     (description "@code{kitchen} module provides a python API for all sorts of
 little useful snippets of code that everybody ends up writing for their projects
-- 
2.12.2

^ permalink raw reply related	[relevance 65%]

* bug#26900: [PATCH] gnu: Enable python-parse-type tests.
@ 2017-05-12 20:05 65% Danny Milosavljevic
  2017-05-12 20:35 64% ` bug#26900: [PATCH v2] " Danny Milosavljevic
  0 siblings, 1 reply; 200+ results
From: Danny Milosavljevic @ 2017-05-12 20:05 UTC (permalink / raw)
  To: 26900

* gnu/packages/python.scm (python-parse-type)[arguments]: Enable tests.
[native-inputs]: Add python-pytest, python-pytest-runner.
[properties]: Add python2-variant.
(python2-parse-type): New variable.
---
 gnu/packages/python.scm | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index dc7adf24e..e32397b59 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1488,13 +1488,25 @@ backported for previous versions of Python from 2.4 to 3.3.")
     (propagated-inputs
      `(("python-six" ,python-six)
        ("python-parse" ,python-parse)))
-    (arguments '(#:tests? #f))            ;TODO: tests require pytest
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-runner" ,python-pytest-runner)))
     (home-page "https://github.com/jenisys/parse_type")
     (synopsis "Extended parse module")
     (description
      "Parse_type extends the python parse module.")
+    (properties
+     `((python2-variant . ,(delay python2-parse-type))))
     (license license:bsd-3)))
 
+(define-public python2-parse-type
+  (let ((base (package-with-python2
+                (strip-python2-variant python-parse-type))))
+    (package (inherit base)
+      (propagated-inputs
+       `(("python2-enum34" ,python2-enum34)
+         ,@(package-propagated-inputs base))))))
+
 (define-public python-parse
   (package
     (name "python-parse")

^ permalink raw reply related	[relevance 65%]

* bug#26900: [PATCH v2] gnu: Enable python-parse-type tests.
  2017-05-12 20:05 65% bug#26900: [PATCH] gnu: Enable python-parse-type tests Danny Milosavljevic
@ 2017-05-12 20:35 64% ` Danny Milosavljevic
  0 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-05-12 20:35 UTC (permalink / raw)
  To: 26900

* gnu/packages/python.scm (python-parse-type)[arguments]: Enable tests.
Add phase "patch-tests".
[native-inputs]: Add python-pytest, python-pytest-runner.
[properties]: Add python2-variant.
(python2-parse-type): New variable.
---
 gnu/packages/python.scm | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index dc7adf24e..29e3458c6 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1485,16 +1485,38 @@ backported for previous versions of Python from 2.4 to 3.3.")
        (base32
         "0iv1c34npr4iynwpgv1vkjx9rjd18a85ir8c01gc5f7wp8iv7l1x"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-tests
+           (lambda _
+             (substitute* "tests/test_parse_type_parse.py"
+               ;; Newer Python versions don't have the problem this test tests.
+               (("self[.]assertRaises[(]parse.TooManyFields, p.parse, ''[)]")
+                ""))
+             #t)))))
     (propagated-inputs
      `(("python-six" ,python-six)
        ("python-parse" ,python-parse)))
-    (arguments '(#:tests? #f))            ;TODO: tests require pytest
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-runner" ,python-pytest-runner)))
     (home-page "https://github.com/jenisys/parse_type")
     (synopsis "Extended parse module")
     (description
      "Parse_type extends the python parse module.")
+    (properties
+     `((python2-variant . ,(delay python2-parse-type))))
     (license license:bsd-3)))
 
+(define-public python2-parse-type
+  (let ((base (package-with-python2
+                (strip-python2-variant python-parse-type))))
+    (package (inherit base)
+      (propagated-inputs
+       `(("python2-enum34" ,python2-enum34)
+         ,@(package-propagated-inputs base))))))
+
 (define-public python-parse
   (package
     (name "python-parse")

^ permalink raw reply related	[relevance 64%]

* bug#26906: [PATCH] gnu: Add python-behave-web-api.
@ 2017-05-13  8:52 65% Danny Milosavljevic
  0 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-05-13  8:52 UTC (permalink / raw)
  To: 26906

* gnu/packages/python.scm (python-behave-web-api, python2-behave-web-api):
New variables.
---
 gnu/packages/python.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index dc7adf24e..b6ccd2e95 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14621,3 +14621,35 @@ substitute for redis.")
 
 (define-public python2-fakeredis
   (package-with-python2 python-fakeredis))
+
+(define-public python-behave-web-api
+  (package
+    (name "python-behave-web-api")
+    (version "1.0.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "behave-web-api" version))
+       (sha256
+        (base32
+         "03kpq2xsy1gab3jy0dccbxlsg7vwfy4lagss0qldwmx3xz6b3i19"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-dependencies
+           (lambda _
+             (substitute* "setup.py"
+               (("'wheel'") "")                ; We don't use it.
+               (("'ordereddict==1.1'") ""))))))) ; Python >= 2.7 has it built-in.
+    (propagated-inputs
+     `(("behave" ,behave)
+       ("python-requests" ,python-requests)))
+    (home-page "https://github.com/jefersondaniel/behave-web-api")
+    (synopsis "Provides testing for JSON APIs with Behave for Python")
+    (description "This package provides testing utility modules for testing
+JSON APIs with Behave.")
+    (license license:expat)))
+
+(define-public python2-behave-web-api
+  (package-with-python2 python-behave-web-api))

^ permalink raw reply related	[relevance 65%]

* bug#26401: [PATCH] python-tryton (with no modules)
  @ 2017-05-15 19:17 71%   ` Catonano
       [not found]         ` <c3fa946d.AEMAKXA0lrIAAAAAAAAAAAOu6r8AAAACwQwAAAAAAAW9WABZGzM6@mailjet.com>
  0 siblings, 1 reply; 200+ results
From: Catonano @ 2017-05-15 19:17 UTC (permalink / raw)
  To: Arun Isaac; +Cc: 26401


[-- Attachment #1.1: Type: text/plain, Size: 7550 bytes --]

2017-05-08 16:33 GMT+02:00 Arun Isaac <arunisaac@systemreboot.net>:

>
> Thanks for the patch set!
>
> I haven't properly tested the package yet. The following are just my
> initial reactions and questions. This patch review will take a few
> iterations. Do bear with me.
>

:-)


>
> > Tryton has modules and without any module packaged, it will do nothing
> >
> > But at least you can launch it and test it, you can use it for packkaging
> > the missing modules.
> >
> > Also a service would be useful. But in order to write a service, the
> server
> > packkage has to be in already.
>
> Agreed.
>
> > This is supposedly the basis for GNUealth, a notable GNU project
>
> GNU Health usually lags behind the latest Tryon, and currently runs on
> Tryton 3.8. We will have to create a package for Tryton 3.8 as
> well. This can just inherit from the latest tryton package, and modify
> only the `version' and `source' fields. Could you do this?
>

Yes, I think I could do it.

Bt if you don't mind I'd liie to delay this.

When and if we'll have the current Tryton thhen we'll see.


>
> > From e42a727312a454aeb19e07cfec6cbb03fe18e183 Mon Sep 17 00:00:00 2001
> > From: humanitiesNerd <catonano@gmail.com>
> > Date: Tue, 28 Mar 2017 12:25:06 +0200
> > Subject: [PATCH 1/5] gnu: Add python-sql python2-sql.
>
> It is enough to mention only python-sql here.
>

done


>
> > * gnu/packages/python.scm (python-sql python2-sql): New variables.
>
> Please put a comma between python-sql and python2-sql.
>

done


>
> > +(define-public python-sql
> > +  (package
> > +    (name "python-sql")
> > +    (version "0.8")
>
> The latest version of python-sql is 0.9.
>

updated


>
> > +       (uri (pypi-uri
> > +             "python-sql"
> > +             version))
>
> Could you put these on the same line?
>

done


>
> > +(define-public python-genshi
> > +  (package
> > +    (name "python-genshi")
> > +    (version "0.7")
> > +    (source
> > +     (origin
> > +       (method url-fetch)
> > +       (uri (string-append
> > +             "https://ftp.edgewall.org/pub/genshi/Genshi-"
> > +             version
> > +             ".tar.gz"))
>
> Please put version ".tar.gz" on the same line.
>

done


>
> > +       (patches
> > +        (search-patches
> > +         ;; The first 4 patches are in the master branch upstream.
> > +         ;; see this as a reference https://genshi.edgewall.org/ti
> cket/582
> > +         ;; The last 2 are NOT in any branch.
> > +         ;; They were sent as attachments to a ticket opened at
> > +         ;; https://genshi.edgewall.org/ticket/602#no1
> > +         "python-genshi-stripping-of-unsafe-script-tags-Python-3.4.p
> atch"
> > +         "python-genshi-Disable-the-speedups-C-extension-on-CPython-
> 3.3-sinc.patch"
> > +         "python-genshi-isstring-helper.patch"
> > +         "python-genshi-Add-support-for-Python-3.4-AST-support-for-
> NameConst.patch"
> > +         "python-genshi-fixing-the-tests-on-python35.patch"
> > +         "python-genshi-buildable-on-python27-too.patch"))
>
> Why do we need these patches? Is the release tarball not sufficient?
>

No, the current tarball is not suficient.
Genshi builds with python 3.3 only. With python 3.4 and 3.5 it doesn't
build.

This is mainly due to a change in thhe C API so a part of Genshi tat was
written in C has to be re-written adgering to the new API

The authors claim to need more time to do this.

The Genshi issue tracker reports all this infomration, I linked the
relevant issues in the comments

Admittedly I don't understand what these patches do. They're too entrenched
in the Genshi code base

I shamelessly copied them from the Fedora package definition
See here
http://pkgs.fedoraproject.org/cgit/rpms/python-genshi.git/snapshot/python-genshi-f25.tar.gz

I understand that they made an effort to make their Genshi package
compatible with pythhon 3.4 too and that is not necessary or Guix

But it's too complicated for me to excise the support for python 3.4


>
> > +    (propagated-inputs
> > +     `(("lxml" ,python2-lxml)
> > +       ("genshi" ,python2-genshi)))
>
> Please put the full names of these inputs -- I mean "python-lxml"
> instead of "lxml", "python-genshi" instead of "genshi", and so on.
>

done


>
> > +(define-public python-trytond
> > +  (package
> > +    (name "python-trytond")
>
> As far as I understand, trytond is an application, not a python
> library. Only python libraries should have the "python-" prefix.


Oh, I didn't know this. Thanks


> So,
> this package would just be called "trytond".
>

done


>
> > +    (version "4.2.3")
>
> The latest version of tryton is 4.4.
>

updated


>
> > +    (source
> > +     (origin
> > +       (method url-fetch)
> > +       (uri (pypi-uri
> > +             "trytond"
> > +             version
> > +             ".tar.gz"))
>
> We should use the tarballs available on the tryton website.
> https://downloads.tryton.org/4.4/


done


>
>
> > +    (arguments
> > +     `(#:phases
> > +       (modify-phases %standard-phases
> > +         (add-before 'check 'preparations
> > +                     (lambda* _
> > +                       ;; this is used in the tests
> > +                       (setenv "DB_NAME" ":memory:"))))))
>
> Though this is shorter, I think it would be clearer to replace the
> `check' phase altogether.
>

mmm I'm not sure I can do this.
I don't know much about setuptools, eggs and the such
The check phase of the python build system is quite articulated, I don't
feel like messing with it

Feel free to rearrange this yourself as you see fit.



>
> > +    (propagated-inputs
> > +     `(("polib" ,python-polib)
> > +       ("dateutil" ,python-dateutil)
> > +       ("werkzeug" ,python-werkzeug)
> > +       ("wrapt" ,python-wrapt)
> > +       ("python-sql" ,python-sql)
> > +       ("genshi" ,python-genshi)
> > +       ("relatorio" ,python-relatorio)
> > +       ("lxml" ,python-lxml)
> > +       ;; there's no pyton-mysql in Guix right now
> > +       ;; so psycopg (postgresql) only for now
> > +       ("psycopg" ,python-psycopg2)))
>
> If trytond is only an application, these can just be `inputs', not
> `propagated-inputs'. For applications, the python build system wraps the
> executables with the correct PYTHONPATH environment variable.
>

Right, thanks.
Done



>
> > +  (license license:lgpl3)))
>
> Tryton is GPL3.
>

fixed


>
> > +(define-public python2-trytond
> > +  (package-with-python2 python-trytond))
>
> No need for python2-trytond if trytond is just an application.
>

erased


>
> > +;; this depends on pygtk that is available or python@2 only
> > +(define-public python2-tryton
> > +  (package
> > +    (name "python2-tryton")
> > +    (version "4.2.4")
>
> Latest version if 4.4
>

updated


>
> > +       (uri (pypi-uri
> > +             "tryton"
> > +             version
> > +             ".tar.gz"))
>
> We should use the tarballs available on the tryton website.
> https://downloads.tryton.org/4.4/


done


>
>
> > +    (propagated-inputs
> > +     `(("chardet" ,python2-chardet)
> > +       ("dateutil" ,python2-dateutil)
> > +       ("pygtk" ,python2-pygtk)))
>
> For an application, these can just be `inputs'.
>

done

Ok, so this is the first iteration.
I'm ready or the next one 😎

[-- Attachment #1.2: Type: text/html, Size: 13038 bytes --]

[-- Attachment #2: series.patch --]
[-- Type: text/x-patch, Size: 34540 bytes --]

From ffa984ecdfc0c786b09ebb99b635faffb5378f4a Mon Sep 17 00:00:00 2001
From: Adriano Peluso <catonano@gmail.com>
Date: Tue, 28 Mar 2017 12:25:06 +0200
Subject: [PATCH 1/5] gnu: Add python-sql.

* gnu/packages/python.scm (python-sql, python2-sql): New variables.
---
 gnu/packages/python.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 57a67de41..f1ef53e1a 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14622,3 +14622,25 @@ substitute for redis.")
 
 (define-public python2-fakeredis
   (package-with-python2 python-fakeredis))
+
+(define-public python-sql
+  (package
+    (name "python-sql")
+    (version "0.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri
+             "python-sql"
+             version))
+       (sha256
+        (base32
+         "0xik939sxqfqqbpgcsnfjnws692bjip32khgwhq1ycphfy7df3h2"))))
+    (build-system python-build-system)
+    (home-page "https://python-sql.tryton.org/")
+    (synopsis "Library to write SQL queries")
+    (description "Idiomatic python function calls get transformed in well formed SQL queries.")
+    (license license:bsd-3)))
+
+(define-public python2-sql
+  (package-with-python2 python-sql))
-- 
2.13.0


From 2e95052780cef66ded0119e0ef2046c6b5c5a31b Mon Sep 17 00:00:00 2001
From: humanitiesNerd <catonano@gmail.com>
Date: Wed, 5 Apr 2017 15:29:56 +0200
Subject: [PATCH 2/5]  gnu: Add python-genshi.

 * gnu/packages/python.scm (python-genshi, python2-genshi): New variables.
 * gnu/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patct: New file.
 * gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch: New file.
 * gnu/packages/patches/python-genshi-isstring-helper.patch: New file.
 * gnu/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch: New file.
 * gnu/packages/patches/python-genshi-fixing-the-tests-on-python35.patch: New file.
 * gnu/packages/patches/python-genshi-buildable-on-python27-too.patch: New file.
 * gnu/local.mk (dist_patch_DATA): Add them.
---
 gnu/local.mk                                       |   6 +
 ...-for-Python-3.4-AST-support-for-NameConst.patch | 151 +++++++++++++++++++++
 ...-speedups-C-extension-on-CPython-3.3-sinc.patch |  32 +++++
 .../python-genshi-buildable-on-python27-too.patch  |  25 ++++
 ...ython-genshi-fixing-the-tests-on-python35.patch | 112 +++++++++++++++
 .../patches/python-genshi-isstring-helper.patch    |  37 +++++
 ...tripping-of-unsafe-script-tags-Python-3.4.patch |  51 +++++++
 gnu/packages/python.scm                            |  75 ++++++++++
 8 files changed, 489 insertions(+)
 create mode 100644 gnu/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch
 create mode 100644 gnu/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch
 create mode 100644 gnu/packages/patches/python-genshi-buildable-on-python27-too.patch
 create mode 100644 gnu/packages/patches/python-genshi-fixing-the-tests-on-python35.patch
 create mode 100644 gnu/packages/patches/python-genshi-isstring-helper.patch
 create mode 100644 gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 28a283ab7..7ae12c18c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -922,6 +922,12 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-file-double-encoding-bug.patch	\
   %D%/packages/patches/python-fix-tests.patch			\
   %D%/packages/patches/python-parse-too-many-fields.patch	\
+  %D%/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch	\
+  %D%/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch	\
+  %D%/packages/patches/python-genshi-isstring-helper.patch	\
+  %D%/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch	\
+  %D%/packages/patches/python-genshi-fixing-the-tests-on-python35.patch	\
+  %D%/packages/patches/python-genshi-buildable-on-python27-too.patch	\
   %D%/packages/patches/python2-rdflib-drop-sparqlwrapper.patch	\
   %D%/packages/patches/python-statsmodels-fix-tests.patch	\
   %D%/packages/patches/python-configobj-setuptools.patch	\
diff --git a/gnu/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch b/gnu/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch
new file mode 100644
index 000000000..4e40c1daa
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch
@@ -0,0 +1,151 @@
+From 86b98a11559da7d1b21dc9b4c6b10511b9095bc4 Mon Sep 17 00:00:00 2001
+From: Simon Cross <hodgestar@gmail.com>
+Date: Sun, 16 Feb 2014 18:46:15 +0000
+Subject: [PATCH 05/16] Add support for Python 3.4 AST (support for
+ NameConstants and changes to existing to arguments node attributes).
+
+---
+ genshi/template/astutil.py | 31 ++++++++++++++++++++++++++++---
+ genshi/template/eval.py    | 34 +++++++++++++++++++---------------
+ 2 files changed, 47 insertions(+), 18 deletions(-)
+
+diff --git a/genshi/template/astutil.py b/genshi/template/astutil.py
+index a4c21c8..a3946b4 100644
+--- a/genshi/template/astutil.py
++++ b/genshi/template/astutil.py
+@@ -21,7 +21,7 @@ else:
+     def parse(source, mode):
+         return compile(source, '', mode, _ast.PyCF_ONLY_AST)
+ 
+-from genshi.compat import IS_PYTHON2
++from genshi.compat import IS_PYTHON2, isstring
+ 
+ __docformat__ = 'restructuredtext en'
+ 
+@@ -103,8 +103,13 @@ class ASTCodeGenerator(object):
+         self._new_line()
+         return self.visit(node.body)
+ 
++    # Python < 3.4
+     # arguments = (expr* args, identifier? vararg,
+     #              identifier? kwarg, expr* defaults)
++    #
++    # Python >= 3.4
++    # arguments = (arg* args, arg? vararg, arg* kwonlyargs, expr* kw_defaults,
++    #              arg? kwarg, expr* defaults)
+     def visit_arguments(self, node):
+         first = True
+         no_default_count = len(node.args) - len(node.defaults)
+@@ -122,13 +127,21 @@ class ASTCodeGenerator(object):
+                 self._write(', ')
+             else:
+                 first = False
+-            self._write('*' + node.vararg)
++            self._write('*')
++            if isstring(node.vararg):
++                self._write(node.vararg)
++            else:
++                self.visit(node.vararg)
+         if getattr(node, 'kwarg', None):
+             if not first:
+                 self._write(', ')
+             else:
+                 first = False
+-            self._write('**' + node.kwarg)
++            self._write('**')
++            if isstring(node.kwarg):
++                self._write(node.kwarg)
++            else:
++                self.visit(node.kwarg)
+ 
+     if not IS_PYTHON2:
+         # In Python 3 arguments get a special node
+@@ -724,6 +737,17 @@ class ASTCodeGenerator(object):
+     def visit_Name(self, node):
+         self._write(node.id)
+ 
++    # NameConstant(singleton value)
++    def visit_NameConstant(self, node):
++        if node.value is None:
++            self._write('None')
++        elif node.value is True:
++            self._write('True')
++        elif node.value is False:
++            self._write('False')
++        else:
++            raise Exception("Unknown NameConstant %r" % (node.value,))
++
+     # List(expr* elts, expr_context ctx)
+     def visit_List(self, node):
+         self._write('[')
+@@ -829,6 +853,7 @@ class ASTTransformer(object):
+     visit_Attribute = _clone
+     visit_Subscript = _clone
+     visit_Name = _clone
++    visit_NameConstant = _clone
+     visit_List = _clone
+     visit_Tuple = _clone
+ 
+diff --git a/genshi/template/eval.py b/genshi/template/eval.py
+index 89aec49..de4bc86 100644
+--- a/genshi/template/eval.py
++++ b/genshi/template/eval.py
+@@ -24,7 +24,8 @@ from genshi.template.astutil import ASTTransformer, ASTCodeGenerator, \
+ from genshi.template.base import TemplateRuntimeError
+ from genshi.util import flatten
+ 
+-from genshi.compat import get_code_params, build_code_chunk, IS_PYTHON2
++from genshi.compat import get_code_params, build_code_chunk, isstring, \
++                          IS_PYTHON2
+ 
+ __all__ = ['Code', 'Expression', 'Suite', 'LenientLookup', 'StrictLookup',
+            'Undefined', 'UndefinedError']
+@@ -495,28 +496,31 @@ class TemplateASTTransformer(ASTTransformer):
+     def __init__(self):
+         self.locals = [CONSTANTS]
+ 
++    def _process(self, names, node):
++        if not IS_PYTHON2 and isinstance(node, _ast.arg):
++            names.add(node.arg)
++        elif isstring(node):
++            names.add(node)
++        elif isinstance(node, _ast.Name):
++            names.add(node.id)
++        elif isinstance(node, _ast.alias):
++            names.add(node.asname or node.name)
++        elif isinstance(node, _ast.Tuple):
++            for elt in node.elts:
++                self._process(names, elt)
++
+     def _extract_names(self, node):
+         names = set()
+-        def _process(node):
+-            if not IS_PYTHON2 and isinstance(node, _ast.arg):
+-                names.add(node.arg)
+-            if isinstance(node, _ast.Name):
+-                names.add(node.id)
+-            elif isinstance(node, _ast.alias):
+-                names.add(node.asname or node.name)
+-            elif isinstance(node, _ast.Tuple):
+-                for elt in node.elts:
+-                    _process(elt)
+         if hasattr(node, 'args'):
+             for arg in node.args:
+-                _process(arg)
++                self._process(names, arg)
+             if hasattr(node, 'vararg'):
+-                names.add(node.vararg)
++                self._process(names, node.vararg)
+             if hasattr(node, 'kwarg'):
+-                names.add(node.kwarg)
++                self._process(names, node.kwarg)
+         elif hasattr(node, 'names'):
+             for elt in node.names:
+-                _process(elt)
++                self._process(names, elt)
+         return names
+ 
+     def visit_Str(self, node):
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch b/gnu/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch
new file mode 100644
index 000000000..c25c3bd7a
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch
@@ -0,0 +1,32 @@
+From cef2c8df44166195e1705638f9f17033a4943bb7 Mon Sep 17 00:00:00 2001
+From: Simon Cross <hodgestar@gmail.com>
+Date: Sun, 16 Feb 2014 18:32:21 +0000
+Subject: [PATCH 02/15] Disable the speedups C extension on CPython >= 3.3
+ since Genshi doesn't support the new Unicode C API yet.
+
+---
+ setup.py | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index 123a2cb..a3d748c 100755
+--- a/setup.py
++++ b/setup.py
+@@ -65,9 +65,13 @@ available.""")
+ 
+ 
+ if Feature:
++    # Optional C extension module for speeding up Genshi:
++    # Not activated by default on:
++    # - PyPy (where it harms performance)
++    # - CPython >= 3.3 (the new Unicode C API is not supported yet)
+     speedups = Feature(
+         "optional C speed-enhancements",
+-        standard = not is_pypy,
++        standard = not is_pypy and sys.version_info < (3, 3),
+         ext_modules = [
+             Extension('genshi._speedups', ['genshi/_speedups.c']),
+         ],
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-buildable-on-python27-too.patch b/gnu/packages/patches/python-genshi-buildable-on-python27-too.patch
new file mode 100644
index 000000000..13289fbe8
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-buildable-on-python27-too.patch
@@ -0,0 +1,25 @@
+From 32bfaa7cc1c736fd62fcbb6414de9498dc20ed07 Mon Sep 17 00:00:00 2001
+From: humanitiesNerd <catonano@gmail.com>
+Date: Wed, 5 Apr 2017 15:13:06 +0200
+Subject: [PATCH 2/2] buildable on python27 too
+
+---
+ genshi/template/directives.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/genshi/template/directives.py b/genshi/template/directives.py
+index 6fd0f28..1f70ef6 100644
+--- a/genshi/template/directives.py
++++ b/genshi/template/directives.py
+@@ -266,7 +266,7 @@ class DefDirective(Directive):
+         if isinstance(ast, _ast.Call):
+             self.name = ast.func.id
+             for arg in ast.args:
+-                if isinstance(arg, _ast.Starred):
++                if hasattr(_ast, 'Starred') and isinstance(arg, _ast.Starred):
+                     # Python 3.5+
+                     self.star_args = arg.value.id
+                 else:
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-fixing-the-tests-on-python35.patch b/gnu/packages/patches/python-genshi-fixing-the-tests-on-python35.patch
new file mode 100644
index 000000000..f1905e7cf
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-fixing-the-tests-on-python35.patch
@@ -0,0 +1,112 @@
+From ce796ad4bae5c47011876778674ad036357febdf Mon Sep 17 00:00:00 2001
+From: humanitiesNerd <catonano@gmail.com>
+Date: Wed, 5 Apr 2017 15:10:06 +0200
+Subject: [PATCH 1/2] fixing the tests on python35
+
+---
+ genshi/filters/i18n.py        |  6 ++++--
+ genshi/template/astutil.py    | 14 +++++++++++---
+ genshi/template/directives.py | 20 ++++++++++++++------
+ genshi/template/eval.py       |  5 +++++
+ 4 files changed, 34 insertions(+), 11 deletions(-)
+
+diff --git a/genshi/filters/i18n.py b/genshi/filters/i18n.py
+index 526fda4..5387fcf 100644
+--- a/genshi/filters/i18n.py
++++ b/genshi/filters/i18n.py
+@@ -1194,8 +1194,10 @@ def extract_from_code(code, gettext_functions):
+                 elif arg:
+                     strings.append(None)
+             [_add(arg) for arg in node.args]
+-            _add(node.starargs)
+-            _add(node.kwargs)
++            if hasattr(node, 'starargs'):
++                _add(node.starargs)
++            if hasattr(node, 'kwargs'):
++                _add(node.kwargs)
+             if len(strings) == 1:
+                 strings = strings[0]
+             else:
+diff --git a/genshi/template/astutil.py b/genshi/template/astutil.py
+index f4e1edd..e561846 100644
+--- a/genshi/template/astutil.py
++++ b/genshi/template/astutil.py
+@@ -151,6 +151,10 @@ class ASTCodeGenerator(object):
+         def visit_arg(self, node):
+             self._write(node.arg)
+ 
++    def visit_Starred(self, node):
++        self._write('*')
++        self.visit(node.value)
++
+     # FunctionDef(identifier name, arguments args,
+     #                           stmt* body, expr* decorator_list)
+     def visit_FunctionDef(self, node):
+@@ -664,9 +668,13 @@ class ASTCodeGenerator(object):
+             if not first:
+                 self._write(', ')
+             first = False
+-            # keyword = (identifier arg, expr value)
+-            self._write(keyword.arg)
+-            self._write('=')
++            if not keyword.arg:
++                # Python 3.5+ star-star args
++                self._write('**')
++            else:
++                # keyword = (identifier arg, expr value)
++                self._write(keyword.arg)
++                self._write('=')
+             self.visit(keyword.value)
+         if getattr(node, 'starargs', None):
+             if not first:
+diff --git a/genshi/template/directives.py b/genshi/template/directives.py
+index 7301c2d..6fd0f28 100644
+--- a/genshi/template/directives.py
++++ b/genshi/template/directives.py
+@@ -266,13 +266,21 @@ class DefDirective(Directive):
+         if isinstance(ast, _ast.Call):
+             self.name = ast.func.id
+             for arg in ast.args:
+-                # only names
+-                self.args.append(arg.id)
++                if isinstance(arg, _ast.Starred):
++                    # Python 3.5+
++                    self.star_args = arg.value.id
++                else:
++                    # only names
++                    self.args.append(arg.id)
+             for kwd in ast.keywords:
+-                self.args.append(kwd.arg)
+-                exp = Expression(kwd.value, template.filepath,
+-                                 lineno, lookup=template.lookup)
+-                self.defaults[kwd.arg] = exp
++                if kwd.arg is None:
++                    # Python 3.5+
++                    self.dstar_args = kwd.value.id
++                else:
++                    self.args.append(kwd.arg)
++                    exp = Expression(kwd.value, template.filepath,
++                                     lineno, lookup=template.lookup)
++                    self.defaults[kwd.arg] = exp
+             if getattr(ast, 'starargs', None):
+                 self.star_args = ast.starargs.id
+             if getattr(ast, 'kwargs', None):
+diff --git a/genshi/template/eval.py b/genshi/template/eval.py
+index d378419..81644a7 100644
+--- a/genshi/template/eval.py
++++ b/genshi/template/eval.py
+@@ -600,6 +600,11 @@ class TemplateASTTransformer(ASTTransformer):
+         finally:
+             self.locals.pop()
+ 
++    # Only used in Python 3.5+
++    def visit_Starred(self, node):
++        node.value = self.visit(node.value)
++        return node
++
+     def visit_Name(self, node):
+         # If the name refers to a local inside a lambda, list comprehension, or
+         # generator expression, leave it alone
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-isstring-helper.patch b/gnu/packages/patches/python-genshi-isstring-helper.patch
new file mode 100644
index 000000000..4f6c19bba
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-isstring-helper.patch
@@ -0,0 +1,37 @@
+From cc5e07284f44cdd9beec178c69070a53f55d1323 Mon Sep 17 00:00:00 2001
+From: Simon Cross <hodgestar@gmail.com>
+Date: Sun, 16 Feb 2014 18:43:20 +0000
+Subject: [PATCH 03/15] Add isstring helper.
+
+---
+ genshi/compat.py | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/genshi/compat.py b/genshi/compat.py
+index 9787325..6574e39 100644
+--- a/genshi/compat.py
++++ b/genshi/compat.py
+@@ -35,6 +35,15 @@ else:
+                 'Python 2 compatibility function. Not usable in Python 3.')
+ 
+ 
++# We need to test if an object is an instance of a string type in places
++
++if IS_PYTHON2:
++    def isstring(obj):
++        return isinstance(obj, basestring)
++else:
++    def isstring(obj):
++        return isinstance(obj, str)
++
+ # We need to differentiate between StringIO and BytesIO in places
+ 
+ if IS_PYTHON2:
+@@ -112,4 +121,3 @@ except NameError:
+             if not x:
+                 return False
+         return True
+-
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch b/gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch
new file mode 100644
index 000000000..29951a614
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch
@@ -0,0 +1,51 @@
+From 0769be04c3891ae5c724c6779ba13d1d0f53b4ae Mon Sep 17 00:00:00 2001
+From: Simon Cross <hodgestar@gmail.com>
+Date: Sun, 16 Feb 2014 18:25:17 +0000
+Subject: [PATCH 01/15] Also allow stripping of unsafe script tags (Python 3.4
+ parses the second example as a tag whose name is script&xyz).
+
+---
+ genshi/filters/tests/test_html.py | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/genshi/filters/tests/test_html.py b/genshi/filters/tests/test_html.py
+index 0c6cfe1..45ec0da 100644
+--- a/genshi/filters/tests/test_html.py
++++ b/genshi/filters/tests/test_html.py
+@@ -368,12 +368,16 @@ def StyleSanitizer():
+ 
+ class HTMLSanitizerTestCase(unittest.TestCase):
+ 
+-    def assert_parse_error_or_equal(self, expected, exploit):
++    def assert_parse_error_or_equal(self, expected, exploit,
++                                    allow_strip=False):
+         try:
+             html = HTML(exploit)
+         except ParseError:
+             return
+-        self.assertEquals(expected, (html | HTMLSanitizer()).render())
++        sanitized_html = (html | HTMLSanitizer()).render()
++        if not sanitized_html and allow_strip:
++            return
++        self.assertEquals(expected, sanitized_html)
+ 
+     def test_sanitize_unchanged(self):
+         html = HTML(u'<a href="#">fo<br />o</a>')
+@@ -416,10 +420,12 @@ class HTMLSanitizerTestCase(unittest.TestCase):
+         html = HTML(u'<SCRIPT SRC="http://example.com/"></SCRIPT>')
+         self.assertEquals('', (html | HTMLSanitizer()).render())
+         src = u'<SCR\0IPT>alert("foo")</SCR\0IPT>'
+-        self.assert_parse_error_or_equal('&lt;SCR\x00IPT&gt;alert("foo")', src)
++        self.assert_parse_error_or_equal('&lt;SCR\x00IPT&gt;alert("foo")', src,
++                                         allow_strip=True)
+         src = u'<SCRIPT&XYZ SRC="http://example.com/"></SCRIPT>'
+         self.assert_parse_error_or_equal('&lt;SCRIPT&amp;XYZ; '
+-                                         'SRC="http://example.com/"&gt;', src)
++                                         'SRC="http://example.com/"&gt;', src,
++                                         allow_strip=True)
+ 
+     def test_sanitize_remove_onclick_attr(self):
+         html = HTML(u'<div onclick=\'alert("foo")\' />')
+-- 
+2.12.0
+
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index f1ef53e1a..14cecfcb1 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14644,3 +14644,78 @@ substitute for redis.")
 
 (define-public python2-sql
   (package-with-python2 python-sql))
+
+(define-public python-genshi
+  (package
+    (name "python-genshi")
+    (version "0.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://ftp.edgewall.org/pub/genshi/Genshi-"
+             version
+             ".tar.gz"))
+       (patches
+        (search-patches
+         ;; The first 4 patches are in the master branch upstream.
+         ;; see this as a reference https://genshi.edgewall.org/ticket/582
+         ;; The last 2 are NOT in any branch.
+         ;; They were sent as attachments to a ticket opened at
+         ;; https://genshi.edgewall.org/ticket/602#no1
+         "python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch"
+         "python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch"
+         "python-genshi-isstring-helper.patch"
+         "python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch"
+         "python-genshi-fixing-the-tests-on-python35.patch"
+         "python-genshi-buildable-on-python27-too.patch"))
+       (sha256
+        (base32
+         "0lkkbp6fbwzv0zda5iqc21rr7rdldkwh3hfabfjl9i4bwq14858x"))))
+    (build-system python-build-system)
+    (home-page "https://genshi.edgewall.org/")
+    (synopsis "Toolkit for generation of output for the web")
+    (description "Genshi is a Python library that provides
+an integrated set of components for parsing, generating, and processing HTML, XML
+or other textual content for output generation on the web")
+    (license license:bsd-3)))
+
+;; the linter here claims that patch file names
+;; should start with the package name.
+;; In this case the patches are inherited from
+;; python-genshi without the "2"
+(define-public python2-genshi
+  (package-with-python2 python-genshi))
+
+
+;; this package depends on python-genshi that
+;; can be buit only with python-2
+;; so providing a python33 version of this
+;; is difficult
+(define-public python2-relatorio
+  (package
+    (name "python-relatorio")
+    (version "0.6.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "relatorio" version))
+       (sha256
+        (base32
+         "0lincq79mzgazwd9gh41dybjh9c3n87r83pl8nk3j79aihyfk84z"))))
+    (propagated-inputs
+     `(("lxml" ,python2-lxml)
+       ("genshi" ,python2-genshi)))
+    (arguments
+     `(#:python ,python-2))
+    ;; because relatorio depends on python-genshi
+    ;; that can be built with python-2 only
+    (build-system python-build-system)
+    (home-page "https://relatorio.tryton.org/")
+    (synopsis "Templating library able to output odt and pdf files")
+    (description
+     "Relatorio is a templating library which
+provides a way to easily output several kinds of files
+(odt, ods, png, svg, …).  Support for more filetypes can be
+easily added by creating plugins for them.")
+    (license license:lgpl3)))
-- 
2.13.0


From 0eb5261eb2d696a30d5a7304dd4dc1692c14ac61 Mon Sep 17 00:00:00 2001
From: humanitiesNerd <catonano@gmail.com>
Date: Wed, 5 Apr 2017 16:06:06 +0200
Subject: [PATCH 3/5]  gnu Add: python-relatorio.

* gnu/packages/python (python-relatorio, python2-relatorio): New variables.
---
 gnu/packages/python.scm | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 14cecfcb1..3268dcc85 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14687,12 +14687,7 @@ or other textual content for output generation on the web")
 (define-public python2-genshi
   (package-with-python2 python-genshi))
 
-
-;; this package depends on python-genshi that
-;; can be buit only with python-2
-;; so providing a python33 version of this
-;; is difficult
-(define-public python2-relatorio
+(define-public python-relatorio
   (package
     (name "python-relatorio")
     (version "0.6.4")
@@ -14704,12 +14699,8 @@ or other textual content for output generation on the web")
         (base32
          "0lincq79mzgazwd9gh41dybjh9c3n87r83pl8nk3j79aihyfk84z"))))
     (propagated-inputs
-     `(("lxml" ,python2-lxml)
-       ("genshi" ,python2-genshi)))
-    (arguments
-     `(#:python ,python-2))
-    ;; because relatorio depends on python-genshi
-    ;; that can be built with python-2 only
+     `(("lxml" ,python-lxml)
+       ("genshi" ,python-genshi)))
     (build-system python-build-system)
     (home-page "https://relatorio.tryton.org/")
     (synopsis "Templating library able to output odt and pdf files")
@@ -14719,3 +14710,6 @@ provides a way to easily output several kinds of files
 (odt, ods, png, svg, …).  Support for more filetypes can be
 easily added by creating plugins for them.")
     (license license:lgpl3)))
+
+(define-public python2-relatorio
+  (package-with-python2 python-relatorio))
-- 
2.13.0


From b71cd2bd664e530dfabb3e558db15934f0ec204a Mon Sep 17 00:00:00 2001
From: humanitiesNerd <catonano@gmail.com>
Date: Thu, 6 Apr 2017 09:37:59 +0200
Subject: [PATCH 4/5] gnu: Add python-trytond.

* gnu/packages/python.scm (python-trytond, python2-trytond): New variables.
---
 gnu/packages/python.scm | 50 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3268dcc85..0c5ff6517 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14713,3 +14713,53 @@ easily added by creating plugins for them.")
 
 (define-public python2-relatorio
   (package-with-python2 python-relatorio))
+
+(define-public python-trytond
+  (package
+    (name "python-trytond")
+    (version "4.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri
+             "trytond"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1w9bc0qck9k1vzk1xvry3vb70mibaxipp229naym2fnwi282jlh5"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'preparations
+                     (lambda* _
+                       ;; this is used in the tests
+                       (setenv "DB_NAME" ":memory:"))))))
+    (propagated-inputs
+     `(("polib" ,python-polib)
+       ("dateutil" ,python-dateutil)
+       ("werkzeug" ,python-werkzeug)
+       ("wrapt" ,python-wrapt)
+       ("python-sql" ,python-sql)
+       ("genshi" ,python-genshi)
+       ("relatorio" ,python-relatorio)
+       ("lxml" ,python-lxml)
+       ;; there's no pyton-mysql in Guix right now
+       ;; so psycopg (postgresql) only for now
+       ("psycopg" ,python-psycopg2)))
+    (native-inputs
+     ;; this is used in the tests
+     `(("mock" ,python-mock)))
+    (home-page "http://www.tryton.org/")
+    (synopsis "Server component of Tryton")
+    (description
+   "The server of the Tryton application platform.
+A three-tiers high-level general purpose application platform
+written in Python and use Postgresql as main database engine.
+It is the core base of an Open Source ERP.
+It provides modularity, scalability and security.")
+  (license license:lgpl3)))
+
+(define-public python2-trytond
+  (package-with-python2 python-trytond))
-- 
2.13.0


From 48493cad90eac1d807fc6f3d7011ccc811c713a0 Mon Sep 17 00:00:00 2001
From: humanitiesNerd <catonano@gmail.com>
Date: Thu, 6 Apr 2017 22:17:11 +0200
Subject: [PATCH 5/5] gnu: Add python2-tryton.

* gnu/packages/python.scm (python2-tryton): New variable.
---
 gnu/packages/python.scm | 82 ++++++++++++++++++++++++++++++++-----------------
 1 file changed, 53 insertions(+), 29 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 0c5ff6517..ac1061014 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14626,16 +14626,15 @@ substitute for redis.")
 (define-public python-sql
   (package
     (name "python-sql")
-    (version "0.8")
+    (version "0.9")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri
-             "python-sql"
-             version))
+             "python-sql" version))
        (sha256
         (base32
-         "0xik939sxqfqqbpgcsnfjnws692bjip32khgwhq1ycphfy7df3h2"))))
+         "0p6kaqj02vz0habmdx37zjk6hjxdfm8aw737zs059vvpr70ird87"))))
     (build-system python-build-system)
     (home-page "https://python-sql.tryton.org/")
     (synopsis "Library to write SQL queries")
@@ -14654,8 +14653,7 @@ substitute for redis.")
        (method url-fetch)
        (uri (string-append
              "https://ftp.edgewall.org/pub/genshi/Genshi-"
-             version
-             ".tar.gz"))
+             version ".tar.gz"))
        (patches
         (search-patches
          ;; The first 4 patches are in the master branch upstream.
@@ -14699,8 +14697,8 @@ or other textual content for output generation on the web")
         (base32
          "0lincq79mzgazwd9gh41dybjh9c3n87r83pl8nk3j79aihyfk84z"))))
     (propagated-inputs
-     `(("lxml" ,python-lxml)
-       ("genshi" ,python-genshi)))
+     `(("python-lxml" ,python-lxml)
+       ("python-genshi" ,python-genshi)))
     (build-system python-build-system)
     (home-page "https://relatorio.tryton.org/")
     (synopsis "Templating library able to output odt and pdf files")
@@ -14714,20 +14712,19 @@ easily added by creating plugins for them.")
 (define-public python2-relatorio
   (package-with-python2 python-relatorio))
 
-(define-public python-trytond
+(define-public trytond
   (package
-    (name "python-trytond")
-    (version "4.2.3")
+    (name "trytond")
+    (version "4.4.0")
     (source
      (origin
        (method url-fetch)
-       (uri (pypi-uri
-             "trytond"
-             version
-             ".tar.gz"))
+       (uri (string-append
+             "https://downloads.tryton.org/4.4/trytond-"
+             version ".tar.gz"))
        (sha256
         (base32
-         "1w9bc0qck9k1vzk1xvry3vb70mibaxipp229naym2fnwi282jlh5"))))
+         "0f5xh4s8xr01rrz63accrz8lpsni0dfsjrnl4h3widrgz6ds2fr6"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -14736,21 +14733,21 @@ easily added by creating plugins for them.")
                      (lambda* _
                        ;; this is used in the tests
                        (setenv "DB_NAME" ":memory:"))))))
-    (propagated-inputs
-     `(("polib" ,python-polib)
-       ("dateutil" ,python-dateutil)
-       ("werkzeug" ,python-werkzeug)
-       ("wrapt" ,python-wrapt)
+    (inputs
+     `(("python-polib" ,python-polib)
+       ("python-dateutil" ,python-dateutil)
+       ("python-werkzeug" ,python-werkzeug)
+       ("python-wrapt" ,python-wrapt)
        ("python-sql" ,python-sql)
-       ("genshi" ,python-genshi)
-       ("relatorio" ,python-relatorio)
-       ("lxml" ,python-lxml)
+       ("python-genshi" ,python-genshi)
+       ("python-relatorio" ,python-relatorio)
+       ("python-lxml" ,python-lxml)
        ;; there's no pyton-mysql in Guix right now
        ;; so psycopg (postgresql) only for now
-       ("psycopg" ,python-psycopg2)))
+       ("pyton-psycopg" ,python-psycopg2)))
     (native-inputs
      ;; this is used in the tests
-     `(("mock" ,python-mock)))
+     `(("python-mock" ,python-mock)))
     (home-page "http://www.tryton.org/")
     (synopsis "Server component of Tryton")
     (description
@@ -14759,7 +14756,34 @@ A three-tiers high-level general purpose application platform
 written in Python and use Postgresql as main database engine.
 It is the core base of an Open Source ERP.
 It provides modularity, scalability and security.")
-  (license license:lgpl3)))
+  (license license:gpl3)))
 
-(define-public python2-trytond
-  (package-with-python2 python-trytond))
+;; this depends on pygtk that is available or python@2 only
+(define-public tryton
+  (package
+    (name "tryton")
+    (version "4.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://downloads.tryton.org/4.4/tryton-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "1lklcz5fs6rkrd7z2m2f5gz4fdwzkgnhg2hyvzp20kdsvi33bq2j"))))
+    (arguments
+     `(#:python ,python-2))
+    (inputs
+     `(("python-chardet" ,python2-chardet)
+       ("pyton-dateutil" ,python2-dateutil)
+       ("pyton2-pygtk" ,python2-pygtk)))
+    (build-system python-build-system)
+    (home-page "http://www.tryton.org/")
+    (synopsis "Client component of Tryton")
+    (description "The client of the Tryton application platform.
+A three-tiers high-level general purpose application platform
+written in Python and use Postgresql as main database engine.
+It is the core base of an Open Source ERP.
+It provides modularity, scalability and security.")
+    (license license:gpl3)))
-- 
2.13.0


^ permalink raw reply related	[relevance 71%]

* bug#26401: [PATCH] python-tryton (with no modules)
       [not found]                 ` <7e6e3d0c.ADsAALmm2EQAAAAAAAAAAAOu6r8AAAACwQwAAAAAAAW9WABZHd6n@mailjet.com>
@ 2017-05-20  7:39 74%               ` Catonano
  2017-05-22 21:13 80%                 ` Arun Isaac
  0 siblings, 1 reply; 200+ results
From: Catonano @ 2017-05-20  7:39 UTC (permalink / raw)
  To: Arun Isaac; +Cc: 26401


[-- Attachment #1.1: Type: text/plain, Size: 1025 bytes --]

So, here I am

2017-05-18 19:49 GMT+02:00 Arun Isaac <arunisaac@systemreboot.net>:

>
> Oh, I thought the next genshi release was just around the corner. I
> didn't realize that development was stalled. Ok, then. If other distros
> are using these patches without problems, let's also have python3 genshi
> and relatorio packages.
>
> But, let's build trytond with python2. GNU Health still needs trytond
> 3.8, and trytond 3.8 only supports python2.
>

I though about this a bit more

Tryton is an autonomous framework, it can be used without GNUHealth and
with no relation to it

Someone might want to use it with python3.

I myself could be involved in a project that uses Trytond and has no
relationship whatsoever with GNUHealth.
This should be in september.

When and if I will package GNUHealth, we'll see how to arrange things

It might depend on python2-trytond or I might wait for a newer version that
depends on a current Tryton

So for now I send this as it was, with some corrections.

Please let me know
Thanks

[-- Attachment #1.2: Type: text/html, Size: 1790 bytes --]

[-- Attachment #2: series.patch --]
[-- Type: text/x-patch, Size: 30941 bytes --]

From edca647dd8fdc3680567bffc555ab892499ff3a5 Mon Sep 17 00:00:00 2001
From: Adriano Peluso <catonano@gmail.com>
Date: Tue, 28 Mar 2017 12:25:06 +0200
Subject: [PATCH 1/5] gnu: Add python-sql.

* gnu/packages/python.scm (python-sql, python2-sql): New variables.
---
 gnu/packages/python.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 57a67de41..f1ef53e1a 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14622,3 +14622,25 @@ substitute for redis.")
 
 (define-public python2-fakeredis
   (package-with-python2 python-fakeredis))
+
+(define-public python-sql
+  (package
+    (name "python-sql")
+    (version "0.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri
+             "python-sql"
+             version))
+       (sha256
+        (base32
+         "0xik939sxqfqqbpgcsnfjnws692bjip32khgwhq1ycphfy7df3h2"))))
+    (build-system python-build-system)
+    (home-page "https://python-sql.tryton.org/")
+    (synopsis "Library to write SQL queries")
+    (description "Idiomatic python function calls get transformed in well formed SQL queries.")
+    (license license:bsd-3)))
+
+(define-public python2-sql
+  (package-with-python2 python-sql))
-- 
2.13.0


From 4680a5cca214ca6992bb9bac1db9cda1c7b9be68 Mon Sep 17 00:00:00 2001
From: Adriano Peluso <catonano@gmail.com>
Date: Wed, 5 Apr 2017 15:29:56 +0200
Subject: [PATCH 2/5] gnu: Add python-genshi.

 * gnu/packages/python.scm (python-genshi, python2-genshi): New variables.
 * gnu/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patct: New file.
 * gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch: New file.
 * gnu/packages/patches/python-genshi-isstring-helper.patch: New file.
 * gnu/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch: New file.
 * gnu/packages/patches/python-genshi-fixing-the-tests-on-python35.patch: New file.
 * gnu/packages/patches/python-genshi-buildable-on-python27-too.patch: New file.
 * gnu/local.mk (dist_patch_DATA): Add them.
---
 gnu/local.mk                                       |   6 +
 ...-for-Python-3.4-AST-support-for-NameConst.patch | 151 +++++++++++++++++++++
 ...-speedups-C-extension-on-CPython-3.3-sinc.patch |  32 +++++
 .../python-genshi-buildable-on-python27-too.patch  |  25 ++++
 ...ython-genshi-fixing-the-tests-on-python35.patch | 112 +++++++++++++++
 .../patches/python-genshi-isstring-helper.patch    |  37 +++++
 ...tripping-of-unsafe-script-tags-Python-3.4.patch |  51 +++++++
 gnu/packages/python.scm                            |  42 ++++++
 8 files changed, 456 insertions(+)
 create mode 100644 gnu/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch
 create mode 100644 gnu/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch
 create mode 100644 gnu/packages/patches/python-genshi-buildable-on-python27-too.patch
 create mode 100644 gnu/packages/patches/python-genshi-fixing-the-tests-on-python35.patch
 create mode 100644 gnu/packages/patches/python-genshi-isstring-helper.patch
 create mode 100644 gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 04d259df9..676e3fd0c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -930,6 +930,12 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-file-double-encoding-bug.patch	\
   %D%/packages/patches/python-fix-tests.patch			\
   %D%/packages/patches/python-parse-too-many-fields.patch	\
+  %D%/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch	\
+  %D%/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch	\
+  %D%/packages/patches/python-genshi-isstring-helper.patch	\
+  %D%/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch	\
+  %D%/packages/patches/python-genshi-fixing-the-tests-on-python35.patch	\
+  %D%/packages/patches/python-genshi-buildable-on-python27-too.patch	\
   %D%/packages/patches/python2-rdflib-drop-sparqlwrapper.patch	\
   %D%/packages/patches/python-statsmodels-fix-tests.patch	\
   %D%/packages/patches/python-configobj-setuptools.patch	\
diff --git a/gnu/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch b/gnu/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch
new file mode 100644
index 000000000..4e40c1daa
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch
@@ -0,0 +1,151 @@
+From 86b98a11559da7d1b21dc9b4c6b10511b9095bc4 Mon Sep 17 00:00:00 2001
+From: Simon Cross <hodgestar@gmail.com>
+Date: Sun, 16 Feb 2014 18:46:15 +0000
+Subject: [PATCH 05/16] Add support for Python 3.4 AST (support for
+ NameConstants and changes to existing to arguments node attributes).
+
+---
+ genshi/template/astutil.py | 31 ++++++++++++++++++++++++++++---
+ genshi/template/eval.py    | 34 +++++++++++++++++++---------------
+ 2 files changed, 47 insertions(+), 18 deletions(-)
+
+diff --git a/genshi/template/astutil.py b/genshi/template/astutil.py
+index a4c21c8..a3946b4 100644
+--- a/genshi/template/astutil.py
++++ b/genshi/template/astutil.py
+@@ -21,7 +21,7 @@ else:
+     def parse(source, mode):
+         return compile(source, '', mode, _ast.PyCF_ONLY_AST)
+ 
+-from genshi.compat import IS_PYTHON2
++from genshi.compat import IS_PYTHON2, isstring
+ 
+ __docformat__ = 'restructuredtext en'
+ 
+@@ -103,8 +103,13 @@ class ASTCodeGenerator(object):
+         self._new_line()
+         return self.visit(node.body)
+ 
++    # Python < 3.4
+     # arguments = (expr* args, identifier? vararg,
+     #              identifier? kwarg, expr* defaults)
++    #
++    # Python >= 3.4
++    # arguments = (arg* args, arg? vararg, arg* kwonlyargs, expr* kw_defaults,
++    #              arg? kwarg, expr* defaults)
+     def visit_arguments(self, node):
+         first = True
+         no_default_count = len(node.args) - len(node.defaults)
+@@ -122,13 +127,21 @@ class ASTCodeGenerator(object):
+                 self._write(', ')
+             else:
+                 first = False
+-            self._write('*' + node.vararg)
++            self._write('*')
++            if isstring(node.vararg):
++                self._write(node.vararg)
++            else:
++                self.visit(node.vararg)
+         if getattr(node, 'kwarg', None):
+             if not first:
+                 self._write(', ')
+             else:
+                 first = False
+-            self._write('**' + node.kwarg)
++            self._write('**')
++            if isstring(node.kwarg):
++                self._write(node.kwarg)
++            else:
++                self.visit(node.kwarg)
+ 
+     if not IS_PYTHON2:
+         # In Python 3 arguments get a special node
+@@ -724,6 +737,17 @@ class ASTCodeGenerator(object):
+     def visit_Name(self, node):
+         self._write(node.id)
+ 
++    # NameConstant(singleton value)
++    def visit_NameConstant(self, node):
++        if node.value is None:
++            self._write('None')
++        elif node.value is True:
++            self._write('True')
++        elif node.value is False:
++            self._write('False')
++        else:
++            raise Exception("Unknown NameConstant %r" % (node.value,))
++
+     # List(expr* elts, expr_context ctx)
+     def visit_List(self, node):
+         self._write('[')
+@@ -829,6 +853,7 @@ class ASTTransformer(object):
+     visit_Attribute = _clone
+     visit_Subscript = _clone
+     visit_Name = _clone
++    visit_NameConstant = _clone
+     visit_List = _clone
+     visit_Tuple = _clone
+ 
+diff --git a/genshi/template/eval.py b/genshi/template/eval.py
+index 89aec49..de4bc86 100644
+--- a/genshi/template/eval.py
++++ b/genshi/template/eval.py
+@@ -24,7 +24,8 @@ from genshi.template.astutil import ASTTransformer, ASTCodeGenerator, \
+ from genshi.template.base import TemplateRuntimeError
+ from genshi.util import flatten
+ 
+-from genshi.compat import get_code_params, build_code_chunk, IS_PYTHON2
++from genshi.compat import get_code_params, build_code_chunk, isstring, \
++                          IS_PYTHON2
+ 
+ __all__ = ['Code', 'Expression', 'Suite', 'LenientLookup', 'StrictLookup',
+            'Undefined', 'UndefinedError']
+@@ -495,28 +496,31 @@ class TemplateASTTransformer(ASTTransformer):
+     def __init__(self):
+         self.locals = [CONSTANTS]
+ 
++    def _process(self, names, node):
++        if not IS_PYTHON2 and isinstance(node, _ast.arg):
++            names.add(node.arg)
++        elif isstring(node):
++            names.add(node)
++        elif isinstance(node, _ast.Name):
++            names.add(node.id)
++        elif isinstance(node, _ast.alias):
++            names.add(node.asname or node.name)
++        elif isinstance(node, _ast.Tuple):
++            for elt in node.elts:
++                self._process(names, elt)
++
+     def _extract_names(self, node):
+         names = set()
+-        def _process(node):
+-            if not IS_PYTHON2 and isinstance(node, _ast.arg):
+-                names.add(node.arg)
+-            if isinstance(node, _ast.Name):
+-                names.add(node.id)
+-            elif isinstance(node, _ast.alias):
+-                names.add(node.asname or node.name)
+-            elif isinstance(node, _ast.Tuple):
+-                for elt in node.elts:
+-                    _process(elt)
+         if hasattr(node, 'args'):
+             for arg in node.args:
+-                _process(arg)
++                self._process(names, arg)
+             if hasattr(node, 'vararg'):
+-                names.add(node.vararg)
++                self._process(names, node.vararg)
+             if hasattr(node, 'kwarg'):
+-                names.add(node.kwarg)
++                self._process(names, node.kwarg)
+         elif hasattr(node, 'names'):
+             for elt in node.names:
+-                _process(elt)
++                self._process(names, elt)
+         return names
+ 
+     def visit_Str(self, node):
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch b/gnu/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch
new file mode 100644
index 000000000..c25c3bd7a
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch
@@ -0,0 +1,32 @@
+From cef2c8df44166195e1705638f9f17033a4943bb7 Mon Sep 17 00:00:00 2001
+From: Simon Cross <hodgestar@gmail.com>
+Date: Sun, 16 Feb 2014 18:32:21 +0000
+Subject: [PATCH 02/15] Disable the speedups C extension on CPython >= 3.3
+ since Genshi doesn't support the new Unicode C API yet.
+
+---
+ setup.py | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index 123a2cb..a3d748c 100755
+--- a/setup.py
++++ b/setup.py
+@@ -65,9 +65,13 @@ available.""")
+ 
+ 
+ if Feature:
++    # Optional C extension module for speeding up Genshi:
++    # Not activated by default on:
++    # - PyPy (where it harms performance)
++    # - CPython >= 3.3 (the new Unicode C API is not supported yet)
+     speedups = Feature(
+         "optional C speed-enhancements",
+-        standard = not is_pypy,
++        standard = not is_pypy and sys.version_info < (3, 3),
+         ext_modules = [
+             Extension('genshi._speedups', ['genshi/_speedups.c']),
+         ],
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-buildable-on-python27-too.patch b/gnu/packages/patches/python-genshi-buildable-on-python27-too.patch
new file mode 100644
index 000000000..13289fbe8
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-buildable-on-python27-too.patch
@@ -0,0 +1,25 @@
+From 32bfaa7cc1c736fd62fcbb6414de9498dc20ed07 Mon Sep 17 00:00:00 2001
+From: Adriano Peluso <catonano@gmail.com>
+Date: Wed, 5 Apr 2017 15:13:06 +0200
+Subject: [PATCH 2/2] buildable on python27 too
+
+---
+ genshi/template/directives.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/genshi/template/directives.py b/genshi/template/directives.py
+index 6fd0f28..1f70ef6 100644
+--- a/genshi/template/directives.py
++++ b/genshi/template/directives.py
+@@ -266,7 +266,7 @@ class DefDirective(Directive):
+         if isinstance(ast, _ast.Call):
+             self.name = ast.func.id
+             for arg in ast.args:
+-                if isinstance(arg, _ast.Starred):
++                if hasattr(_ast, 'Starred') and isinstance(arg, _ast.Starred):
+                     # Python 3.5+
+                     self.star_args = arg.value.id
+                 else:
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-fixing-the-tests-on-python35.patch b/gnu/packages/patches/python-genshi-fixing-the-tests-on-python35.patch
new file mode 100644
index 000000000..f1905e7cf
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-fixing-the-tests-on-python35.patch
@@ -0,0 +1,112 @@
+From ce796ad4bae5c47011876778674ad036357febdf Mon Sep 17 00:00:00 2001
+From: Adriano Peluso <catonano@gmail.com>
+Date: Wed, 5 Apr 2017 15:10:06 +0200
+Subject: [PATCH 1/2] fixing the tests on python35
+
+---
+ genshi/filters/i18n.py        |  6 ++++--
+ genshi/template/astutil.py    | 14 +++++++++++---
+ genshi/template/directives.py | 20 ++++++++++++++------
+ genshi/template/eval.py       |  5 +++++
+ 4 files changed, 34 insertions(+), 11 deletions(-)
+
+diff --git a/genshi/filters/i18n.py b/genshi/filters/i18n.py
+index 526fda4..5387fcf 100644
+--- a/genshi/filters/i18n.py
++++ b/genshi/filters/i18n.py
+@@ -1194,8 +1194,10 @@ def extract_from_code(code, gettext_functions):
+                 elif arg:
+                     strings.append(None)
+             [_add(arg) for arg in node.args]
+-            _add(node.starargs)
+-            _add(node.kwargs)
++            if hasattr(node, 'starargs'):
++                _add(node.starargs)
++            if hasattr(node, 'kwargs'):
++                _add(node.kwargs)
+             if len(strings) == 1:
+                 strings = strings[0]
+             else:
+diff --git a/genshi/template/astutil.py b/genshi/template/astutil.py
+index f4e1edd..e561846 100644
+--- a/genshi/template/astutil.py
++++ b/genshi/template/astutil.py
+@@ -151,6 +151,10 @@ class ASTCodeGenerator(object):
+         def visit_arg(self, node):
+             self._write(node.arg)
+ 
++    def visit_Starred(self, node):
++        self._write('*')
++        self.visit(node.value)
++
+     # FunctionDef(identifier name, arguments args,
+     #                           stmt* body, expr* decorator_list)
+     def visit_FunctionDef(self, node):
+@@ -664,9 +668,13 @@ class ASTCodeGenerator(object):
+             if not first:
+                 self._write(', ')
+             first = False
+-            # keyword = (identifier arg, expr value)
+-            self._write(keyword.arg)
+-            self._write('=')
++            if not keyword.arg:
++                # Python 3.5+ star-star args
++                self._write('**')
++            else:
++                # keyword = (identifier arg, expr value)
++                self._write(keyword.arg)
++                self._write('=')
+             self.visit(keyword.value)
+         if getattr(node, 'starargs', None):
+             if not first:
+diff --git a/genshi/template/directives.py b/genshi/template/directives.py
+index 7301c2d..6fd0f28 100644
+--- a/genshi/template/directives.py
++++ b/genshi/template/directives.py
+@@ -266,13 +266,21 @@ class DefDirective(Directive):
+         if isinstance(ast, _ast.Call):
+             self.name = ast.func.id
+             for arg in ast.args:
+-                # only names
+-                self.args.append(arg.id)
++                if isinstance(arg, _ast.Starred):
++                    # Python 3.5+
++                    self.star_args = arg.value.id
++                else:
++                    # only names
++                    self.args.append(arg.id)
+             for kwd in ast.keywords:
+-                self.args.append(kwd.arg)
+-                exp = Expression(kwd.value, template.filepath,
+-                                 lineno, lookup=template.lookup)
+-                self.defaults[kwd.arg] = exp
++                if kwd.arg is None:
++                    # Python 3.5+
++                    self.dstar_args = kwd.value.id
++                else:
++                    self.args.append(kwd.arg)
++                    exp = Expression(kwd.value, template.filepath,
++                                     lineno, lookup=template.lookup)
++                    self.defaults[kwd.arg] = exp
+             if getattr(ast, 'starargs', None):
+                 self.star_args = ast.starargs.id
+             if getattr(ast, 'kwargs', None):
+diff --git a/genshi/template/eval.py b/genshi/template/eval.py
+index d378419..81644a7 100644
+--- a/genshi/template/eval.py
++++ b/genshi/template/eval.py
+@@ -600,6 +600,11 @@ class TemplateASTTransformer(ASTTransformer):
+         finally:
+             self.locals.pop()
+ 
++    # Only used in Python 3.5+
++    def visit_Starred(self, node):
++        node.value = self.visit(node.value)
++        return node
++
+     def visit_Name(self, node):
+         # If the name refers to a local inside a lambda, list comprehension, or
+         # generator expression, leave it alone
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-isstring-helper.patch b/gnu/packages/patches/python-genshi-isstring-helper.patch
new file mode 100644
index 000000000..4f6c19bba
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-isstring-helper.patch
@@ -0,0 +1,37 @@
+From cc5e07284f44cdd9beec178c69070a53f55d1323 Mon Sep 17 00:00:00 2001
+From: Simon Cross <hodgestar@gmail.com>
+Date: Sun, 16 Feb 2014 18:43:20 +0000
+Subject: [PATCH 03/15] Add isstring helper.
+
+---
+ genshi/compat.py | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/genshi/compat.py b/genshi/compat.py
+index 9787325..6574e39 100644
+--- a/genshi/compat.py
++++ b/genshi/compat.py
+@@ -35,6 +35,15 @@ else:
+                 'Python 2 compatibility function. Not usable in Python 3.')
+ 
+ 
++# We need to test if an object is an instance of a string type in places
++
++if IS_PYTHON2:
++    def isstring(obj):
++        return isinstance(obj, basestring)
++else:
++    def isstring(obj):
++        return isinstance(obj, str)
++
+ # We need to differentiate between StringIO and BytesIO in places
+ 
+ if IS_PYTHON2:
+@@ -112,4 +121,3 @@ except NameError:
+             if not x:
+                 return False
+         return True
+-
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch b/gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch
new file mode 100644
index 000000000..29951a614
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch
@@ -0,0 +1,51 @@
+From 0769be04c3891ae5c724c6779ba13d1d0f53b4ae Mon Sep 17 00:00:00 2001
+From: Simon Cross <hodgestar@gmail.com>
+Date: Sun, 16 Feb 2014 18:25:17 +0000
+Subject: [PATCH 01/15] Also allow stripping of unsafe script tags (Python 3.4
+ parses the second example as a tag whose name is script&xyz).
+
+---
+ genshi/filters/tests/test_html.py | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/genshi/filters/tests/test_html.py b/genshi/filters/tests/test_html.py
+index 0c6cfe1..45ec0da 100644
+--- a/genshi/filters/tests/test_html.py
++++ b/genshi/filters/tests/test_html.py
+@@ -368,12 +368,16 @@ def StyleSanitizer():
+ 
+ class HTMLSanitizerTestCase(unittest.TestCase):
+ 
+-    def assert_parse_error_or_equal(self, expected, exploit):
++    def assert_parse_error_or_equal(self, expected, exploit,
++                                    allow_strip=False):
+         try:
+             html = HTML(exploit)
+         except ParseError:
+             return
+-        self.assertEquals(expected, (html | HTMLSanitizer()).render())
++        sanitized_html = (html | HTMLSanitizer()).render()
++        if not sanitized_html and allow_strip:
++            return
++        self.assertEquals(expected, sanitized_html)
+ 
+     def test_sanitize_unchanged(self):
+         html = HTML(u'<a href="#">fo<br />o</a>')
+@@ -416,10 +420,12 @@ class HTMLSanitizerTestCase(unittest.TestCase):
+         html = HTML(u'<SCRIPT SRC="http://example.com/"></SCRIPT>')
+         self.assertEquals('', (html | HTMLSanitizer()).render())
+         src = u'<SCR\0IPT>alert("foo")</SCR\0IPT>'
+-        self.assert_parse_error_or_equal('&lt;SCR\x00IPT&gt;alert("foo")', src)
++        self.assert_parse_error_or_equal('&lt;SCR\x00IPT&gt;alert("foo")', src,
++                                         allow_strip=True)
+         src = u'<SCRIPT&XYZ SRC="http://example.com/"></SCRIPT>'
+         self.assert_parse_error_or_equal('&lt;SCRIPT&amp;XYZ; '
+-                                         'SRC="http://example.com/"&gt;', src)
++                                         'SRC="http://example.com/"&gt;', src,
++                                         allow_strip=True)
+ 
+     def test_sanitize_remove_onclick_attr(self):
+         html = HTML(u'<div onclick=\'alert("foo")\' />')
+-- 
+2.12.0
+
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index f1ef53e1a..898fef153 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14644,3 +14644,45 @@ substitute for redis.")
 
 (define-public python2-sql
   (package-with-python2 python-sql))
+
+(define-public python-genshi
+  (package
+    (name "python-genshi")
+    (version "0.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://ftp.edgewall.org/pub/genshi/Genshi-"
+             version
+             ".tar.gz"))
+       (patches
+        (search-patches
+         ;; The first 4 patches are in the master branch upstream.
+         ;; see this as a reference https://genshi.edgewall.org/ticket/582
+         ;; The last 2 are NOT in any branch.
+         ;; They were sent as attachments to a ticket opened at
+         ;; https://genshi.edgewall.org/ticket/602#no1
+         "python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch"
+         "python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch"
+         "python-genshi-isstring-helper.patch"
+         "python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch"
+         "python-genshi-fixing-the-tests-on-python35.patch"
+         "python-genshi-buildable-on-python27-too.patch"))
+       (sha256
+        (base32
+         "0lkkbp6fbwzv0zda5iqc21rr7rdldkwh3hfabfjl9i4bwq14858x"))))
+    (build-system python-build-system)
+    (home-page "https://genshi.edgewall.org/")
+    (synopsis "Toolkit for generation of output for the web")
+    (description "Genshi is a Python library that provides
+an integrated set of components for parsing, generating, and processing HTML, XML
+or other textual content for output generation on the web")
+    (license license:bsd-3)))
+
+;; the linter here claims that patch file names
+;; should start with the package name.
+;; In this case the patches are inherited from
+;; python-genshi without the "2"
+(define-public python2-genshi
+  (package-with-python2 python-genshi))
-- 
2.13.0


From 01c83c390865628b8889262ee59e0b460bd85328 Mon Sep 17 00:00:00 2001
From: Adriano Peluso <catonano@gmail.com>
Date: Sat, 20 May 2017 09:19:00 +0200
Subject: [PATCH 3/5] gnu: Add relatorio.

* gnu/packages/python.scm (python-relatorio, python2-relatorio): New variables.
---
 gnu/packages/python.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 898fef153..3268dcc85 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14686,3 +14686,30 @@ or other textual content for output generation on the web")
 ;; python-genshi without the "2"
 (define-public python2-genshi
   (package-with-python2 python-genshi))
+
+(define-public python-relatorio
+  (package
+    (name "python-relatorio")
+    (version "0.6.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "relatorio" version))
+       (sha256
+        (base32
+         "0lincq79mzgazwd9gh41dybjh9c3n87r83pl8nk3j79aihyfk84z"))))
+    (propagated-inputs
+     `(("lxml" ,python-lxml)
+       ("genshi" ,python-genshi)))
+    (build-system python-build-system)
+    (home-page "https://relatorio.tryton.org/")
+    (synopsis "Templating library able to output odt and pdf files")
+    (description
+     "Relatorio is a templating library which
+provides a way to easily output several kinds of files
+(odt, ods, png, svg, …).  Support for more filetypes can be
+easily added by creating plugins for them.")
+    (license license:lgpl3)))
+
+(define-public python2-relatorio
+  (package-with-python2 python-relatorio))
-- 
2.13.0


From 603e00c231ea889293e159c7543f2ef40f6c7b81 Mon Sep 17 00:00:00 2001
From: Adriano Peluso <catonano@gmail.com>
Date: Sat, 20 May 2017 08:21:31 +0200
Subject: [PATCH 4/5] gnu: Add trytond.

* gnu/packages/tryton.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Register it.
* gnu/packages/tryton.scm (trytond, python2-trytond): New variables.
---
 gnu/local.mk            |  1 +
 gnu/packages/tryton.scm | 78 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 79 insertions(+)
 create mode 100644 gnu/packages/tryton.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 676e3fd0c..1eb9f5bfa 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -321,6 +321,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/protobuf.scm			\
   %D%/packages/pv.scm				\
   %D%/packages/python.scm			\
+  %D%/packages/tryton.scm			\
   %D%/packages/qemu.scm				\
   %D%/packages/qt.scm				\
   %D%/packages/ragel.scm			\
diff --git a/gnu/packages/tryton.scm b/gnu/packages/tryton.scm
new file mode 100644
index 000000000..856ed6f3a
--- /dev/null
+++ b/gnu/packages/tryton.scm
@@ -0,0 +1,78 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+;;;
+;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
+
+(define-module (gnu packages tryton)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system python)
+  #:use-module (gnu packages gtk)  
+  )
+
+(define-public trytond
+  (package
+    (name "trytond")
+    (version "4.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://downloads.tryton.org/4.4/trytond-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "0f5xh4s8xr01rrz63accrz8lpsni0dfsjrnl4h3widrgz6ds2fr6"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'preparations
+                     (lambda* _
+                       ;; this is used in the tests
+                       (setenv "DB_NAME" ":memory:"))))))
+    (inputs
+     `(("python-polib" ,python-polib)
+       ("python-dateutil" ,python-dateutil)
+       ("python-werkzeug" ,python-werkzeug)
+       ("python-wrapt" ,python-wrapt)
+       ("python-sql" ,python-sql)
+       ("python-genshi" ,python-genshi)
+       ("python-relatorio" ,python-relatorio)
+       ("python-lxml" ,python-lxml)
+       ;; there's no python-mysql in Guix right now
+       ;; so psycopg (postgresql) only for now
+       ("python-psycopg" ,python-psycopg2)))
+    (native-inputs
+     ;; this is used in the tests
+     `(("python-mock" ,python-mock)))
+    (home-page "http://www.tryton.org/")
+    (synopsis "Server component of Tryton")
+    (description
+   "The server of the Tryton application platform.
+A three-tiers high-level general purpose application platform
+written in Python and use Postgresql as main database engine.
+It is the core base of an Open Source ERP.
+It provides modularity, scalability and security.")
+    (license license:gpl3)))
+
+(define-public python2-trytond
+  (package-with-python2 trytond))
-- 
2.13.0


From 4e0dbe38855b115749f5deb278d7a6d64d978e99 Mon Sep 17 00:00:00 2001
From: Adriano Peluso <catonano@gmail.com>
Date: Sat, 20 May 2017 08:32:08 +0200
Subject: [PATCH 5/5] gnu: Add tryton.

* gnu/packages/tryton.scm (tryton): New variable.
---
 gnu/packages/tryton.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/tryton.scm b/gnu/packages/tryton.scm
index 856ed6f3a..eb923f889 100644
--- a/gnu/packages/tryton.scm
+++ b/gnu/packages/tryton.scm
@@ -76,3 +76,33 @@ It provides modularity, scalability and security.")
 
 (define-public python2-trytond
   (package-with-python2 trytond))
+
+;; this depends on pygtk that is available or python@2 only
+(define-public tryton
+  (package
+    (name "tryton")
+    (version "4.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://downloads.tryton.org/4.4/tryton-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "1lklcz5fs6rkrd7z2m2f5gz4fdwzkgnhg2hyvzp20kdsvi33bq2j"))))
+    (arguments
+     `(#:python ,python-2))
+    (inputs
+     `(("python-chardet" ,python2-chardet)
+       ("python-dateutil" ,python2-dateutil)
+       ("python2-pygtk" ,python2-pygtk)))
+    (build-system python-build-system)
+    (home-page "http://www.tryton.org/")
+    (synopsis "Client component of Tryton")
+    (description "The client of the Tryton application platform.
+A three-tiers high-level general purpose application platform
+written in Python and use Postgresql as main database engine.
+It is the core base of an Open Source ERP.
+It provides modularity, scalability and security.")
+    (license license:gpl3)))
-- 
2.13.0


^ permalink raw reply related	[relevance 74%]

* bug#27026: [PATCH] gnu: python-cairocffi: Update to 0.8.0.
@ 2017-05-22 20:14 65% José Miguel Sánchez García
       [not found]     ` <a71ab1b3.AEAAKdIQjMIAAAAAAAAAAAPCjAEAAAACwQwAAAAAAAW9WABZI4vx@mailjet.com>
  0 siblings, 1 reply; 200+ results
From: José Miguel Sánchez García @ 2017-05-22 20:14 UTC (permalink / raw)
  To: 27026

[-- Attachment #1: Type: text/plain, Size: 38 bytes --]



-- 
José Miguel Sánchez García

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-python-cairocffi-Update-to-0.8.0.patch --]
[-- Type: text/x-diff; name=0001-gnu-python-cairocffi-Update-to-0.8.0.patch, Size: 1408 bytes --]

From 1bdca555107d640362359b54da21c2f1d7e22500 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Miguel=20S=C3=A1nchez=20Garc=C3=ADa?=
 <jmi2k@openmailbox.org>
Date: Tue, 23 May 2017 00:04:42 +0200
Subject: [PATCH] gnu: python-cairocffi: Update to 0.8.0.

* gnu/packages/python.scm (python-cairocffi): Update to 0.8.0.
---
 gnu/packages/python.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e51405bd9..7deac5b75 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -4735,17 +4735,17 @@ support for Python 3 and PyPy.  It is based on cffi.")
 (define-public python-cairocffi
   (package
     (name "python-cairocffi")
-    (version "0.6")
+    (version "0.8.0")
     (source
      (origin
       (method url-fetch)
       ;; The archive on pypi is missing the 'utils' directory!
-      (uri (string-append "https://github.com/SimonSapin/cairocffi/archive/v"
+      (uri (string-append "https://github.com/Kozea/cairocffi/archive/v"
                           version ".tar.gz"))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
-        "03w5p62sp3nqiccx864sbq0jvh7946277jqx3rcc3dch5xwfvv51"))))
+        "1rk2dvy3fxrga6bvvxc2fi5lbaynm5h4a0w0aaxyn3bc77rszjg9"))))
     (build-system python-build-system)
     (outputs '("out" "doc"))
     (inputs
-- 
2.13.0


^ permalink raw reply related	[relevance 65%]

* bug#26401: [PATCH] python-tryton (with no modules)
  2017-05-20  7:39 74%               ` Catonano
@ 2017-05-22 21:13 80%                 ` Arun Isaac
  0 siblings, 0 replies; 200+ results
From: Arun Isaac @ 2017-05-22 21:13 UTC (permalink / raw)
  To: Catonano; +Cc: 26401

[-- Attachment #1: Type: text/plain, Size: 449 bytes --]


> Tryton is an autonomous framework, it can be used without GNUHealth and
> with no relation to it
>
> Someone might want to use it with python3.

Ok, fair enough. Let's build trytond with python3.

I have made many small improvements to your patchset. I think it is ready
to be pushed. But, do verify, and let me know. I could have missed
something or removed something you consider important. Please find the
new patchset attached.


[-- Attachment #2: series.patch --]
[-- Type: text/x-patch, Size: 30738 bytes --]

From 53feec2122c419a424471148e0c8c68407a54f7b Mon Sep 17 00:00:00 2001
From: Adriano Peluso <catonano@gmail.com>
Date: Tue, 28 Mar 2017 12:25:06 +0200
Subject: [PATCH 1/5] gnu: Add python-sql.

* gnu/packages/python.scm (python-sql, python2-sql): New variables.

Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
---
 gnu/packages/python.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 54dc49390..579886933 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14622,3 +14622,24 @@ substitute for redis.")
 
 (define-public python2-fakeredis
   (package-with-python2 python-fakeredis))
+
+(define-public python-sql
+  (package
+    (name "python-sql")
+    (version "0.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "python-sql" version))
+       (sha256
+        (base32
+         "0p6kaqj02vz0habmdx37zjk6hjxdfm8aw737zs059vvpr70ird87"))))
+    (build-system python-build-system)
+    (home-page "https://python-sql.tryton.org/")
+    (synopsis "Library to write SQL queries in a pythonic way")
+    (description "@code{python-sql} is a library to write SQL queries, that
+transforms idiomatic python function calls to well-formed SQL queries.")
+    (license license:bsd-3)))
+
+(define-public python2-sql
+  (package-with-python2 python-sql))
-- 
2.12.2

From 69bd9ad411e9f7e229199267bb0d7fe62b77fbde Mon Sep 17 00:00:00 2001
From: Adriano Peluso <catonano@gmail.com>
Date: Wed, 5 Apr 2017 15:29:56 +0200
Subject: [PATCH 2/5] gnu: Add python-genshi.

 * gnu/packages/python.scm (python-genshi, python2-genshi): New variables.
 * gnu/packages/patches/python-genshi-add-support-for-python-3.4-AST.patch: New file.
 * gnu/packages/patches/python-genshi-buildable-on-python-2.7.patch: New file.
 * gnu/packages/patches/python-genshi-disable-speedups-on-python-3.3.patch: New file.
 * gnu/packages/patches/python-genshi-fix-tests-on-python-3.5.patch: New file.
 * gnu/packages/patches/python-genshi-isstring-helper.patch: New file.
 * gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags.patch: New file.
 * gnu/local.mk (dist_patch_DATA): Add them.

Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
---
 gnu/local.mk                                       |   6 +
 ...hon-genshi-add-support-for-python-3.4-AST.patch | 151 +++++++++++++++++++++
 .../python-genshi-buildable-on-python-2.7.patch    |  25 ++++
 ...hon-genshi-disable-speedups-on-python-3.3.patch |  32 +++++
 .../python-genshi-fix-tests-on-python-3.5.patch    | 112 +++++++++++++++
 .../patches/python-genshi-isstring-helper.patch    |  37 +++++
 ...on-genshi-stripping-of-unsafe-script-tags.patch |  51 +++++++
 gnu/packages/python.scm                            |  40 ++++++
 8 files changed, 454 insertions(+)
 create mode 100644 gnu/packages/patches/python-genshi-add-support-for-python-3.4-AST.patch
 create mode 100644 gnu/packages/patches/python-genshi-buildable-on-python-2.7.patch
 create mode 100644 gnu/packages/patches/python-genshi-disable-speedups-on-python-3.3.patch
 create mode 100644 gnu/packages/patches/python-genshi-fix-tests-on-python-3.5.patch
 create mode 100644 gnu/packages/patches/python-genshi-isstring-helper.patch
 create mode 100644 gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 16b80fde9..f5b32bd88 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -932,6 +932,12 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-file-double-encoding-bug.patch	\
   %D%/packages/patches/python-fix-tests.patch			\
   %D%/packages/patches/python-parse-too-many-fields.patch	\
+  %D%/packages/patches/python-genshi-Disable-the-speedups-C-extension-on-CPython-3.3-sinc.patch	\
+  %D%/packages/patches/python-genshi-stripping-of-unsafe-script-tags-Python-3.4.patch	\
+  %D%/packages/patches/python-genshi-isstring-helper.patch	\
+  %D%/packages/patches/python-genshi-Add-support-for-Python-3.4-AST-support-for-NameConst.patch	\
+  %D%/packages/patches/python-genshi-fixing-the-tests-on-python35.patch	\
+  %D%/packages/patches/python-genshi-buildable-on-python27-too.patch	\
   %D%/packages/patches/python2-rdflib-drop-sparqlwrapper.patch	\
   %D%/packages/patches/python-statsmodels-fix-tests.patch	\
   %D%/packages/patches/python-configobj-setuptools.patch	\
diff --git a/gnu/packages/patches/python-genshi-add-support-for-python-3.4-AST.patch b/gnu/packages/patches/python-genshi-add-support-for-python-3.4-AST.patch
new file mode 100644
index 000000000..4e40c1daa
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-add-support-for-python-3.4-AST.patch
@@ -0,0 +1,151 @@
+From 86b98a11559da7d1b21dc9b4c6b10511b9095bc4 Mon Sep 17 00:00:00 2001
+From: Simon Cross <hodgestar@gmail.com>
+Date: Sun, 16 Feb 2014 18:46:15 +0000
+Subject: [PATCH 05/16] Add support for Python 3.4 AST (support for
+ NameConstants and changes to existing to arguments node attributes).
+
+---
+ genshi/template/astutil.py | 31 ++++++++++++++++++++++++++++---
+ genshi/template/eval.py    | 34 +++++++++++++++++++---------------
+ 2 files changed, 47 insertions(+), 18 deletions(-)
+
+diff --git a/genshi/template/astutil.py b/genshi/template/astutil.py
+index a4c21c8..a3946b4 100644
+--- a/genshi/template/astutil.py
++++ b/genshi/template/astutil.py
+@@ -21,7 +21,7 @@ else:
+     def parse(source, mode):
+         return compile(source, '', mode, _ast.PyCF_ONLY_AST)
+ 
+-from genshi.compat import IS_PYTHON2
++from genshi.compat import IS_PYTHON2, isstring
+ 
+ __docformat__ = 'restructuredtext en'
+ 
+@@ -103,8 +103,13 @@ class ASTCodeGenerator(object):
+         self._new_line()
+         return self.visit(node.body)
+ 
++    # Python < 3.4
+     # arguments = (expr* args, identifier? vararg,
+     #              identifier? kwarg, expr* defaults)
++    #
++    # Python >= 3.4
++    # arguments = (arg* args, arg? vararg, arg* kwonlyargs, expr* kw_defaults,
++    #              arg? kwarg, expr* defaults)
+     def visit_arguments(self, node):
+         first = True
+         no_default_count = len(node.args) - len(node.defaults)
+@@ -122,13 +127,21 @@ class ASTCodeGenerator(object):
+                 self._write(', ')
+             else:
+                 first = False
+-            self._write('*' + node.vararg)
++            self._write('*')
++            if isstring(node.vararg):
++                self._write(node.vararg)
++            else:
++                self.visit(node.vararg)
+         if getattr(node, 'kwarg', None):
+             if not first:
+                 self._write(', ')
+             else:
+                 first = False
+-            self._write('**' + node.kwarg)
++            self._write('**')
++            if isstring(node.kwarg):
++                self._write(node.kwarg)
++            else:
++                self.visit(node.kwarg)
+ 
+     if not IS_PYTHON2:
+         # In Python 3 arguments get a special node
+@@ -724,6 +737,17 @@ class ASTCodeGenerator(object):
+     def visit_Name(self, node):
+         self._write(node.id)
+ 
++    # NameConstant(singleton value)
++    def visit_NameConstant(self, node):
++        if node.value is None:
++            self._write('None')
++        elif node.value is True:
++            self._write('True')
++        elif node.value is False:
++            self._write('False')
++        else:
++            raise Exception("Unknown NameConstant %r" % (node.value,))
++
+     # List(expr* elts, expr_context ctx)
+     def visit_List(self, node):
+         self._write('[')
+@@ -829,6 +853,7 @@ class ASTTransformer(object):
+     visit_Attribute = _clone
+     visit_Subscript = _clone
+     visit_Name = _clone
++    visit_NameConstant = _clone
+     visit_List = _clone
+     visit_Tuple = _clone
+ 
+diff --git a/genshi/template/eval.py b/genshi/template/eval.py
+index 89aec49..de4bc86 100644
+--- a/genshi/template/eval.py
++++ b/genshi/template/eval.py
+@@ -24,7 +24,8 @@ from genshi.template.astutil import ASTTransformer, ASTCodeGenerator, \
+ from genshi.template.base import TemplateRuntimeError
+ from genshi.util import flatten
+ 
+-from genshi.compat import get_code_params, build_code_chunk, IS_PYTHON2
++from genshi.compat import get_code_params, build_code_chunk, isstring, \
++                          IS_PYTHON2
+ 
+ __all__ = ['Code', 'Expression', 'Suite', 'LenientLookup', 'StrictLookup',
+            'Undefined', 'UndefinedError']
+@@ -495,28 +496,31 @@ class TemplateASTTransformer(ASTTransformer):
+     def __init__(self):
+         self.locals = [CONSTANTS]
+ 
++    def _process(self, names, node):
++        if not IS_PYTHON2 and isinstance(node, _ast.arg):
++            names.add(node.arg)
++        elif isstring(node):
++            names.add(node)
++        elif isinstance(node, _ast.Name):
++            names.add(node.id)
++        elif isinstance(node, _ast.alias):
++            names.add(node.asname or node.name)
++        elif isinstance(node, _ast.Tuple):
++            for elt in node.elts:
++                self._process(names, elt)
++
+     def _extract_names(self, node):
+         names = set()
+-        def _process(node):
+-            if not IS_PYTHON2 and isinstance(node, _ast.arg):
+-                names.add(node.arg)
+-            if isinstance(node, _ast.Name):
+-                names.add(node.id)
+-            elif isinstance(node, _ast.alias):
+-                names.add(node.asname or node.name)
+-            elif isinstance(node, _ast.Tuple):
+-                for elt in node.elts:
+-                    _process(elt)
+         if hasattr(node, 'args'):
+             for arg in node.args:
+-                _process(arg)
++                self._process(names, arg)
+             if hasattr(node, 'vararg'):
+-                names.add(node.vararg)
++                self._process(names, node.vararg)
+             if hasattr(node, 'kwarg'):
+-                names.add(node.kwarg)
++                self._process(names, node.kwarg)
+         elif hasattr(node, 'names'):
+             for elt in node.names:
+-                _process(elt)
++                self._process(names, elt)
+         return names
+ 
+     def visit_Str(self, node):
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-buildable-on-python-2.7.patch b/gnu/packages/patches/python-genshi-buildable-on-python-2.7.patch
new file mode 100644
index 000000000..2bc516c69
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-buildable-on-python-2.7.patch
@@ -0,0 +1,25 @@
+From 32bfaa7cc1c736fd62fcbb6414de9498dc20ed07 Mon Sep 17 00:00:00 2001
+From: Adriano Peluso <catonano@gmail.com>
+Date: Wed, 5 Apr 2017 15:13:06 +0200
+Subject: [PATCH 2/2] buildable on python27 too
+
+---
+ genshi/template/directives.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/genshi/template/directives.py b/genshi/template/directives.py
+index 6fd0f28..1f70ef6 100644
+--- a/genshi/template/directives.py
++++ b/genshi/template/directives.py
+@@ -266,7 +266,7 @@ class DefDirective(Directive):
+         if isinstance(ast, _ast.Call):
+             self.name = ast.func.id
+             for arg in ast.args:
+-                if isinstance(arg, _ast.Starred):
++                if hasattr(_ast, 'Starred') and isinstance(arg, _ast.Starred):
+                     # Python 3.5+
+                     self.star_args = arg.value.id
+                 else:
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-disable-speedups-on-python-3.3.patch b/gnu/packages/patches/python-genshi-disable-speedups-on-python-3.3.patch
new file mode 100644
index 000000000..c25c3bd7a
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-disable-speedups-on-python-3.3.patch
@@ -0,0 +1,32 @@
+From cef2c8df44166195e1705638f9f17033a4943bb7 Mon Sep 17 00:00:00 2001
+From: Simon Cross <hodgestar@gmail.com>
+Date: Sun, 16 Feb 2014 18:32:21 +0000
+Subject: [PATCH 02/15] Disable the speedups C extension on CPython >= 3.3
+ since Genshi doesn't support the new Unicode C API yet.
+
+---
+ setup.py | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index 123a2cb..a3d748c 100755
+--- a/setup.py
++++ b/setup.py
+@@ -65,9 +65,13 @@ available.""")
+ 
+ 
+ if Feature:
++    # Optional C extension module for speeding up Genshi:
++    # Not activated by default on:
++    # - PyPy (where it harms performance)
++    # - CPython >= 3.3 (the new Unicode C API is not supported yet)
+     speedups = Feature(
+         "optional C speed-enhancements",
+-        standard = not is_pypy,
++        standard = not is_pypy and sys.version_info < (3, 3),
+         ext_modules = [
+             Extension('genshi._speedups', ['genshi/_speedups.c']),
+         ],
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-fix-tests-on-python-3.5.patch b/gnu/packages/patches/python-genshi-fix-tests-on-python-3.5.patch
new file mode 100644
index 000000000..05be080cd
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-fix-tests-on-python-3.5.patch
@@ -0,0 +1,112 @@
+From ce796ad4bae5c47011876778674ad036357febdf Mon Sep 17 00:00:00 2001
+From: Adriano Peluso <catonano@gmail.com>
+Date: Wed, 5 Apr 2017 15:10:06 +0200
+Subject: [PATCH 1/2] fixing the tests on python35
+
+---
+ genshi/filters/i18n.py        |  6 ++++--
+ genshi/template/astutil.py    | 14 +++++++++++---
+ genshi/template/directives.py | 20 ++++++++++++++------
+ genshi/template/eval.py       |  5 +++++
+ 4 files changed, 34 insertions(+), 11 deletions(-)
+
+diff --git a/genshi/filters/i18n.py b/genshi/filters/i18n.py
+index 526fda4..5387fcf 100644
+--- a/genshi/filters/i18n.py
++++ b/genshi/filters/i18n.py
+@@ -1194,8 +1194,10 @@ def extract_from_code(code, gettext_functions):
+                 elif arg:
+                     strings.append(None)
+             [_add(arg) for arg in node.args]
+-            _add(node.starargs)
+-            _add(node.kwargs)
++            if hasattr(node, 'starargs'):
++                _add(node.starargs)
++            if hasattr(node, 'kwargs'):
++                _add(node.kwargs)
+             if len(strings) == 1:
+                 strings = strings[0]
+             else:
+diff --git a/genshi/template/astutil.py b/genshi/template/astutil.py
+index f4e1edd..e561846 100644
+--- a/genshi/template/astutil.py
++++ b/genshi/template/astutil.py
+@@ -151,6 +151,10 @@ class ASTCodeGenerator(object):
+         def visit_arg(self, node):
+             self._write(node.arg)
+ 
++    def visit_Starred(self, node):
++        self._write('*')
++        self.visit(node.value)
++
+     # FunctionDef(identifier name, arguments args,
+     #                           stmt* body, expr* decorator_list)
+     def visit_FunctionDef(self, node):
+@@ -664,9 +668,13 @@ class ASTCodeGenerator(object):
+             if not first:
+                 self._write(', ')
+             first = False
+-            # keyword = (identifier arg, expr value)
+-            self._write(keyword.arg)
+-            self._write('=')
++            if not keyword.arg:
++                # Python 3.5+ star-star args
++                self._write('**')
++            else:
++                # keyword = (identifier arg, expr value)
++                self._write(keyword.arg)
++                self._write('=')
+             self.visit(keyword.value)
+         if getattr(node, 'starargs', None):
+             if not first:
+diff --git a/genshi/template/directives.py b/genshi/template/directives.py
+index 7301c2d..6fd0f28 100644
+--- a/genshi/template/directives.py
++++ b/genshi/template/directives.py
+@@ -266,13 +266,21 @@ class DefDirective(Directive):
+         if isinstance(ast, _ast.Call):
+             self.name = ast.func.id
+             for arg in ast.args:
+-                # only names
+-                self.args.append(arg.id)
++                if isinstance(arg, _ast.Starred):
++                    # Python 3.5+
++                    self.star_args = arg.value.id
++                else:
++                    # only names
++                    self.args.append(arg.id)
+             for kwd in ast.keywords:
+-                self.args.append(kwd.arg)
+-                exp = Expression(kwd.value, template.filepath,
+-                                 lineno, lookup=template.lookup)
+-                self.defaults[kwd.arg] = exp
++                if kwd.arg is None:
++                    # Python 3.5+
++                    self.dstar_args = kwd.value.id
++                else:
++                    self.args.append(kwd.arg)
++                    exp = Expression(kwd.value, template.filepath,
++                                     lineno, lookup=template.lookup)
++                    self.defaults[kwd.arg] = exp
+             if getattr(ast, 'starargs', None):
+                 self.star_args = ast.starargs.id
+             if getattr(ast, 'kwargs', None):
+diff --git a/genshi/template/eval.py b/genshi/template/eval.py
+index d378419..81644a7 100644
+--- a/genshi/template/eval.py
++++ b/genshi/template/eval.py
+@@ -600,6 +600,11 @@ class TemplateASTTransformer(ASTTransformer):
+         finally:
+             self.locals.pop()
+ 
++    # Only used in Python 3.5+
++    def visit_Starred(self, node):
++        node.value = self.visit(node.value)
++        return node
++
+     def visit_Name(self, node):
+         # If the name refers to a local inside a lambda, list comprehension, or
+         # generator expression, leave it alone
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-isstring-helper.patch b/gnu/packages/patches/python-genshi-isstring-helper.patch
new file mode 100644
index 000000000..4f6c19bba
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-isstring-helper.patch
@@ -0,0 +1,37 @@
+From cc5e07284f44cdd9beec178c69070a53f55d1323 Mon Sep 17 00:00:00 2001
+From: Simon Cross <hodgestar@gmail.com>
+Date: Sun, 16 Feb 2014 18:43:20 +0000
+Subject: [PATCH 03/15] Add isstring helper.
+
+---
+ genshi/compat.py | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/genshi/compat.py b/genshi/compat.py
+index 9787325..6574e39 100644
+--- a/genshi/compat.py
++++ b/genshi/compat.py
+@@ -35,6 +35,15 @@ else:
+                 'Python 2 compatibility function. Not usable in Python 3.')
+ 
+ 
++# We need to test if an object is an instance of a string type in places
++
++if IS_PYTHON2:
++    def isstring(obj):
++        return isinstance(obj, basestring)
++else:
++    def isstring(obj):
++        return isinstance(obj, str)
++
+ # We need to differentiate between StringIO and BytesIO in places
+ 
+ if IS_PYTHON2:
+@@ -112,4 +121,3 @@ except NameError:
+             if not x:
+                 return False
+         return True
+-
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags.patch b/gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags.patch
new file mode 100644
index 000000000..29951a614
--- /dev/null
+++ b/gnu/packages/patches/python-genshi-stripping-of-unsafe-script-tags.patch
@@ -0,0 +1,51 @@
+From 0769be04c3891ae5c724c6779ba13d1d0f53b4ae Mon Sep 17 00:00:00 2001
+From: Simon Cross <hodgestar@gmail.com>
+Date: Sun, 16 Feb 2014 18:25:17 +0000
+Subject: [PATCH 01/15] Also allow stripping of unsafe script tags (Python 3.4
+ parses the second example as a tag whose name is script&xyz).
+
+---
+ genshi/filters/tests/test_html.py | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/genshi/filters/tests/test_html.py b/genshi/filters/tests/test_html.py
+index 0c6cfe1..45ec0da 100644
+--- a/genshi/filters/tests/test_html.py
++++ b/genshi/filters/tests/test_html.py
+@@ -368,12 +368,16 @@ def StyleSanitizer():
+ 
+ class HTMLSanitizerTestCase(unittest.TestCase):
+ 
+-    def assert_parse_error_or_equal(self, expected, exploit):
++    def assert_parse_error_or_equal(self, expected, exploit,
++                                    allow_strip=False):
+         try:
+             html = HTML(exploit)
+         except ParseError:
+             return
+-        self.assertEquals(expected, (html | HTMLSanitizer()).render())
++        sanitized_html = (html | HTMLSanitizer()).render()
++        if not sanitized_html and allow_strip:
++            return
++        self.assertEquals(expected, sanitized_html)
+ 
+     def test_sanitize_unchanged(self):
+         html = HTML(u'<a href="#">fo<br />o</a>')
+@@ -416,10 +420,12 @@ class HTMLSanitizerTestCase(unittest.TestCase):
+         html = HTML(u'<SCRIPT SRC="http://example.com/"></SCRIPT>')
+         self.assertEquals('', (html | HTMLSanitizer()).render())
+         src = u'<SCR\0IPT>alert("foo")</SCR\0IPT>'
+-        self.assert_parse_error_or_equal('&lt;SCR\x00IPT&gt;alert("foo")', src)
++        self.assert_parse_error_or_equal('&lt;SCR\x00IPT&gt;alert("foo")', src,
++                                         allow_strip=True)
+         src = u'<SCRIPT&XYZ SRC="http://example.com/"></SCRIPT>'
+         self.assert_parse_error_or_equal('&lt;SCRIPT&amp;XYZ; '
+-                                         'SRC="http://example.com/"&gt;', src)
++                                         'SRC="http://example.com/"&gt;', src,
++                                         allow_strip=True)
+ 
+     def test_sanitize_remove_onclick_attr(self):
+         html = HTML(u'<div onclick=\'alert("foo")\' />')
+-- 
+2.12.0
+
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 579886933..24d80ace5 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14643,3 +14643,43 @@ transforms idiomatic python function calls to well-formed SQL queries.")
 
 (define-public python2-sql
   (package-with-python2 python-sql))
+
+(define-public python-genshi
+  (package
+    (name "python-genshi")
+    (version "0.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://ftp.edgewall.org/pub/genshi/Genshi-"
+             version ".tar.gz"))
+       (patches
+        (search-patches
+         ;; The first 4 patches are in the master branch upstream.
+         ;; See this as a reference https://genshi.edgewall.org/ticket/582
+         ;; The last 2 are NOT in any branch.
+         ;; They were sent as attachments to a ticket opened at
+         ;; https://genshi.edgewall.org/ticket/602#no1
+         "python-genshi-stripping-of-unsafe-script-tags.patch"
+         "python-genshi-disable-speedups-on-python-3.3.patch"
+         "python-genshi-isstring-helper.patch"
+         "python-genshi-add-support-for-python-3.4-AST.patch"
+         "python-genshi-fix-tests-on-python-3.5.patch"
+         "python-genshi-buildable-on-python-2.7.patch"))
+       (sha256
+        (base32
+         "0lkkbp6fbwzv0zda5iqc21rr7rdldkwh3hfabfjl9i4bwq14858x"))))
+    (build-system python-build-system)
+    (home-page "https://genshi.edgewall.org/")
+    (synopsis "Toolkit for generation of output for the web")
+    (description "Genshi is a Python library that provides an integrated set
+of components for parsing, generating, and processing HTML, XML or other
+textual content for output generation on the web.")
+    (license license:bsd-3)))
+
+;; The linter here claims that patch file names should start with the package
+;; name. But, in this case the patches are inherited from python-genshi with
+;; the "python-genshi-" prefix instead of "python2-genshi-".
+(define-public python2-genshi
+  (package-with-python2 python-genshi))
-- 
2.12.2

From 04c5ce688c3e09236a8bd522defdb43271d31b93 Mon Sep 17 00:00:00 2001
From: Adriano Peluso <catonano@gmail.com>
Date: Sat, 20 May 2017 09:19:00 +0200
Subject: [PATCH 3/5] gnu: Add python-relatorio.

* gnu/packages/python.scm (python-relatorio, python2-relatorio): New variables.

Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
---
 gnu/packages/python.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 24d80ace5..77bbc16f5 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14683,3 +14683,28 @@ textual content for output generation on the web.")
 ;; the "python-genshi-" prefix instead of "python2-genshi-".
 (define-public python2-genshi
   (package-with-python2 python-genshi))
+
+(define-public python-relatorio
+  (package
+    (name "python-relatorio")
+    (version "0.6.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "relatorio" version))
+       (sha256
+        (base32
+         "0lincq79mzgazwd9gh41dybjh9c3n87r83pl8nk3j79aihyfk84z"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-lxml" ,python-lxml)
+       ("python-genshi" ,python-genshi)))
+    (home-page "https://relatorio.tryton.org/")
+    (synopsis "Templating library able to output ODT and PDF files")
+    (description "Relatorio is a templating library which provides a way to
+easily output ODT, ODS, PNG, SVG and several other kinds of files.  Support
+for more filetypes can be easily added by creating plugins for them.")
+    (license license:gpl3+)))
+
+(define-public python2-relatorio
+  (package-with-python2 python-relatorio))
-- 
2.12.2

From 875d0451827a38208484f899e6594c1254389431 Mon Sep 17 00:00:00 2001
From: Adriano Peluso <catonano@gmail.com>
Date: Sat, 20 May 2017 08:21:31 +0200
Subject: [PATCH 4/5] gnu: Add trytond.

* gnu/packages/tryton.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* gnu/packages/tryton.scm (trytond): New variable.

Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
---
 gnu/local.mk            |  1 +
 gnu/packages/tryton.scm | 67 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 68 insertions(+)
 create mode 100644 gnu/packages/tryton.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index f5b32bd88..5bde11f1f 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -321,6 +321,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/protobuf.scm			\
   %D%/packages/pv.scm				\
   %D%/packages/python.scm			\
+  %D%/packages/tryton.scm			\
   %D%/packages/qemu.scm				\
   %D%/packages/qt.scm				\
   %D%/packages/ragel.scm			\
diff --git a/gnu/packages/tryton.scm b/gnu/packages/tryton.scm
new file mode 100644
index 000000000..590bd5438
--- /dev/null
+++ b/gnu/packages/tryton.scm
@@ -0,0 +1,67 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages tryton)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages python)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system python))
+
+(define-public trytond
+  (package
+    (name "trytond")
+    (version "4.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://downloads.tryton.org/4.4/trytond-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "15gm34qwj5fpnkqvrxzndl8653zbczhsa76dm1gi4cqj1r29bbpr"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-dateutil" ,python-dateutil)
+       ("python-genshi" ,python-genshi)
+       ("python-polib" ,python-polib)
+       ;; there's no python-mysql in Guix right now
+       ;; so python-psycopg2 (postgresql) only for now
+       ("python-psycopg2" ,python-psycopg2)
+       ("python-relatorio" ,python-relatorio)
+       ("python-lxml" ,python-lxml)
+       ("python-sql" ,python-sql)
+       ("python-werkzeug" ,python-werkzeug)
+       ("python-wrapt" ,python-wrapt)))
+    (native-inputs
+     `(("python-mock" ,python-mock)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'preparations
+           (lambda _
+             (setenv "DB_NAME" ":memory:"))))))
+    (home-page "https://www.tryton.org/")
+    (synopsis "Server component of Tryton")
+    (description "Tryton is a three-tier high-level general purpose
+application platform using PostgreSQL as its main database engine.  It is the
+core base of a complete business solution providing modularity, scalability
+and security.")
+    (license license:gpl3+)))
-- 
2.12.2

From bedbd2f4b8f378d6e010d1fc2fb0c43b6f44dbd7 Mon Sep 17 00:00:00 2001
From: Adriano Peluso <catonano@gmail.com>
Date: Sat, 20 May 2017 08:32:08 +0200
Subject: [PATCH 5/5] gnu: Add tryton.

* gnu/packages/tryton.scm (tryton): New variable.

Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
---
 gnu/packages/tryton.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/tryton.scm b/gnu/packages/tryton.scm
index 590bd5438..c9e9e50f8 100644
--- a/gnu/packages/tryton.scm
+++ b/gnu/packages/tryton.scm
@@ -19,6 +19,7 @@
 (define-module (gnu packages tryton)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages python)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -65,3 +66,28 @@ application platform using PostgreSQL as its main database engine.  It is the
 core base of a complete business solution providing modularity, scalability
 and security.")
     (license license:gpl3+)))
+
+(define-public tryton
+  (package
+    (name "tryton")
+    (version "4.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://downloads.tryton.org/4.4/tryton-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "1lklcz5fs6rkrd7z2m2f5gz4fdwzkgnhg2hyvzp20kdsvi33bq2j"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python2-chardet" ,python2-chardet)
+       ("python2-dateutil" ,python2-dateutil)
+       ("python2-pygtk" ,python2-pygtk)))
+    (arguments
+     `(#:python ,python-2))
+    (home-page "https://www.tryton.org/")
+    (synopsis "Client component of Tryton")
+    (description "This package is the client component of Tryton.")
+    (license license:gpl3+)))
-- 
2.12.2


[-- Attachment #3: Type: text/plain, Size: 210 bytes --]


I removed python2-trytond. When we want to package trytond 3.8 (for GNU
Health), we will simply create a variable `trytond-3.8' which inherits
from `trytond' and adds an argument to build against python2.

^ permalink raw reply related	[relevance 80%]

* bug#27026: [PATCH] gnu: python-cairocffi: Update to 0.8.0.
       [not found]     ` <a71ab1b3.AEAAKdIQjMIAAAAAAAAAAAPCjAEAAAACwQwAAAAAAAW9WABZI4vx@mailjet.com>
@ 2017-05-23 15:39 76%   ` José Miguel Sánchez García
  0 siblings, 0 replies; 200+ results
From: José Miguel Sánchez García @ 2017-05-23 15:39 UTC (permalink / raw)
  To: Arun Isaac; +Cc: 27026

[-- Attachment #1: Type: text/plain, Size: 459 bytes --]

On 2017-05-23 03:09, Arun Isaac wrote:
> Thanks for the patch!
> 
> I think we should split this into two patches -- One for the new URL
> (both source and home-page fields; you have only changed the source URL
> field in this patch), and another for the package update. Could you 
> send
> an updated patchset?
Sure, here you have. They should be ok, but please check the commit 
message
of the first one before pushing it.

-- 
José Miguel Sánchez García

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-python-cairocffi-Update-homepage-and-source-loca.patch --]
[-- Type: text/x-diff; name=0001-gnu-python-cairocffi-Update-homepage-and-source-loca.patch, Size: 1600 bytes --]

From f02bd660b0333735d97980b9ea9fd509dd1c4f51 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Miguel=20S=C3=A1nchez=20Garc=C3=ADa?=
 <jmi2k@openmailbox.org>
Date: Tue, 23 May 2017 17:53:11 +0200
Subject: [PATCH] gnu: python-cairocffi: Update homepage and source location.

* gnu/packages/python.scm (python-cairocffi)[source]: Download from new
homepage.
[home-page]: Update address.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e51405bd9..d695c839e 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -4740,7 +4740,7 @@ support for Python 3 and PyPy.  It is based on cffi.")
      (origin
       (method url-fetch)
       ;; The archive on pypi is missing the 'utils' directory!
-      (uri (string-append "https://github.com/SimonSapin/cairocffi/archive/v"
+      (uri (string-append "https://github.com/Kozea/cairocffi/archive/v"
                           version ".tar.gz"))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
@@ -4779,7 +4779,7 @@ support for Python 3 and PyPy.  It is based on cffi.")
                (system* "python" "setup.py" "build_sphinx")
                (copy-recursively "docs/_build/html" html)
                #t))))))
-    (home-page "https://github.com/SimonSapin/cairocffi")
+    (home-page "https://github.com/Kozea/cairocffi")
     (synopsis "Python bindings and object-oriented API for Cairo")
     (description
      "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of
-- 
2.12.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0001-gnu-python-cairocffi-Update-to-0.8.0.patch --]
[-- Type: text/x-diff; name=0001-gnu-python-cairocffi-Update-to-0.8.0.patch, Size: 1217 bytes --]

From 1072ff5b2e38905c257c7f328f112249e54cd868 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Miguel=20S=C3=A1nchez=20Garc=C3=ADa?=
 <jmi2k@openmailbox.org>
Date: Tue, 23 May 2017 17:56:15 +0200
Subject: [PATCH] gnu: python-cairocffi: Update to 0.8.0.

* gnu/packages/python.scm (python-cairocffi): Update to 0.8.0.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d695c839e..5b9519bbf 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -4735,7 +4735,7 @@ support for Python 3 and PyPy.  It is based on cffi.")
 (define-public python-cairocffi
   (package
     (name "python-cairocffi")
-    (version "0.6")
+    (version "0.8.0")
     (source
      (origin
       (method url-fetch)
@@ -4745,7 +4745,7 @@ support for Python 3 and PyPy.  It is based on cffi.")
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
-        "03w5p62sp3nqiccx864sbq0jvh7946277jqx3rcc3dch5xwfvv51"))))
+        "1rk2dvy3fxrga6bvvxc2fi5lbaynm5h4a0w0aaxyn3bc77rszjg9"))))
     (build-system python-build-system)
     (outputs '("out" "doc"))
     (inputs
-- 
2.12.2


^ permalink raw reply related	[relevance 76%]

* bug#26524: [PATCH] gnu: Add python-radon
  2017-04-15 18:59 91% bug#26524: Add conda and dependencies Frederick Muriithi
  2017-04-27 15:55 65% ` bug#26524: [PATCH 1/3] gnu: Add python-radon Muriithi Frederick Muriuki
@ 2017-05-25  8:42 63% ` Frederick Muriithi
  2017-05-28 15:32 65% ` bug#26524: [PATCH 1/5] gnu: Add python-sure Muriithi Frederick Muriuki
  2017-06-11  1:07 65% ` bug#26524: [PATCH 1/3] gnu: python-sphinx-rtd-theme: Update to 0.2.4 Muriithi Frederick Muriuki
  3 siblings, 0 replies; 200+ results
From: Frederick Muriithi @ 2017-05-25  8:42 UTC (permalink / raw)
  To: 26524

[-- Attachment #1: Type: text/plain, Size: 1 bytes --]



[-- Attachment #2: 0001-gnu-Add-python-radon.patch --]
[-- Type: text/x-patch, Size: 1937 bytes --]

From 0081505cb53811073d175b0f012cb6e6932d7913 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Thu, 25 May 2017 11:25:34 +0300
Subject: [PATCH] gnu: Add python-radon

* gnu/packages/python.scm (python-radon, python2-radon): New variables.
---
 gnu/packages/python.scm | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index dc1efd62a..07f10c13c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14622,3 +14622,40 @@ substitute for redis.")
 
 (define-public python2-fakeredis
   (package-with-python2 python-fakeredis))
+
+(define-public python-radon
+  (package
+    (name "python-radon")
+    (version "1.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "radon" version))
+       (sha256
+        (base32
+         "1h6jv36am0i827182a04ki6291lyx4kp957xfr5njgprj4nd0qsl"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-colorama" ,python-colorama)
+       ("python-flake8-polyfill"
+        ,python-flake8-polyfill)
+       ("python-mando" ,python-mando-0.3.1)))
+    (native-inputs
+     `(("python-flake8" ,python-flake8)
+       ("python-tox" ,python-tox)
+       ("python-pytest" ,python-pytest)
+       ("python-paramunittest" ,python-paramunittest)))
+    (home-page "https://radon.readthedocs.org/")
+    (synopsis "Code Metrics in Python")
+    (description "Radon is a Python tool which computes various code metrics.  Supported
+ metrics are:
+@itemize @bullet
+@item raw metrics: SLOC, comment lines, blank lines, &c.
+@item Cyclomatic Complexity (i.e.  McCabe’s Complexity)
+@item Halstead metrics (all of them)
+@item the Maintainability Index (a Visual Studio metric)
+@end itemize")
+    (license license:expat)))
+
+(define-public python2-radon
+  (package-with-python2 python-radon))
-- 
2.13.0


^ permalink raw reply related	[relevance 63%]

* bug#27071: [PATCH 1/3] gnu: Add python-flask-script.
  @ 2017-05-25 17:57 65% ` Danny Milosavljevic
  2017-05-25 17:57 65%   ` bug#27071: [PATCH 2/3] gnu: Add python-flask-migrate Danny Milosavljevic
  2017-05-25 17:57 65%   ` bug#27071: [PATCH 3/3] gnu: Add python-flasgger Danny Milosavljevic
  0 siblings, 2 replies; 200+ results
From: Danny Milosavljevic @ 2017-05-25 17:57 UTC (permalink / raw)
  To: 27071

* gnu/packages/python.scm (python-flask-script,
python2-flask-script): New variables.
---
 gnu/packages/python.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 62fada66a..3bb183084 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14676,3 +14676,30 @@ JSON APIs with Behave.")
 
 (define-public python2-behave-web-api
   (package-with-python2 python-behave-web-api))
+
+(define-public python-flask-script
+  (package
+  (name "python-flask-script")
+  (version "2.0.5")
+  (source
+    (origin
+      (method url-fetch)
+      (uri (pypi-uri "Flask-Script" version))
+      (sha256
+        (base32
+          "0zqh2yq8zk7m9b4xw1ryqmrljkdigfb3hk5155a3b5hkfnn6xxyf"))))
+  (build-system python-build-system)
+  (propagated-inputs
+   `(("python-flask" ,python-flask)
+     ("python-argcomplete" ,python-argcomplete)
+     ("python-werkzeug" ,python-werkzeug)))
+  (native-inputs
+   `(("python-pytest" ,python-pytest)))
+  (home-page
+    "http://github.com/smurfix/flask-script")
+  (synopsis "Scripting support for Flask")
+  (description "This package supports scripting in @code{python-flask}.")
+  (license license:bsd-3)))
+
+(define-public python2-flask-script
+  (package-with-python2 python-flask-script))

^ permalink raw reply related	[relevance 65%]

* bug#27071: [PATCH 2/3] gnu: Add python-flask-migrate.
  2017-05-25 17:57 65% ` bug#27071: [PATCH 1/3] gnu: Add python-flask-script Danny Milosavljevic
@ 2017-05-25 17:57 65%   ` Danny Milosavljevic
  2017-05-25 17:57 65%   ` bug#27071: [PATCH 3/3] gnu: Add python-flasgger Danny Milosavljevic
  1 sibling, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-05-25 17:57 UTC (permalink / raw)
  To: 27071

* gnu/packages/python.scm (python-flask-migrate,
python2-flask-migrate): New variables.
---
 gnu/packages/python.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3bb183084..dc87e9738 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14703,3 +14703,31 @@ JSON APIs with Behave.")
 
 (define-public python2-flask-script
   (package-with-python2 python-flask-script))
+
+(define-public python-flask-migrate
+  (package
+  (name "python-flask-migrate")
+  (version "2.0.3")
+  (source
+    (origin
+      (method url-fetch)
+      (uri (pypi-uri "Flask-Migrate" version))
+      (sha256
+        (base32
+          "107x78lkqsnbg92dld3dkagg07jvchp3ib3y0sivc4ipz6n1y7rk"))))
+  (build-system python-build-system)
+  (propagated-inputs
+   `(("python-flask" ,python-flask)
+     ("python-alembic" ,python-alembic)
+     ("python-sqlalchemy" ,python-sqlalchemy)
+     ("python-flask-script" ,python-flask-script)
+     ("python-flask-sqlalchemy" ,python-flask-sqlalchemy)))
+  (home-page "http://github.com/miguelgrinberg/flask-migrate/")
+  (synopsis "SQLAlchemy database migrations for Flask programs using
+Alembic")
+  (description "This package contains SQLAlchemy database migration tools
+for Flask programs that are using @code{python-alembic}.")
+  (license license:expat)))
+
+(define-public python2-flask-migrate
+  (package-with-python2 python-flask-migrate))

^ permalink raw reply related	[relevance 65%]

* bug#27071: [PATCH 3/3] gnu: Add python-flasgger.
  2017-05-25 17:57 65% ` bug#27071: [PATCH 1/3] gnu: Add python-flask-script Danny Milosavljevic
  2017-05-25 17:57 65%   ` bug#27071: [PATCH 2/3] gnu: Add python-flask-migrate Danny Milosavljevic
@ 2017-05-25 17:57 65%   ` Danny Milosavljevic
  1 sibling, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-05-25 17:57 UTC (permalink / raw)
  To: 27071

* gnu/packages/python.scm (python-flasgger,
python2-flasgger): New variables.
---
 gnu/packages/python.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index dc87e9738..b93479d37 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14731,3 +14731,35 @@ for Flask programs that are using @code{python-alembic}.")
 
 (define-public python2-flask-migrate
   (package-with-python2 python-flask-migrate))
+
+(define-public python-flasgger
+  (package
+    (name "python-flasgger")
+    (version "0.6.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "flasgger" version))
+        (sha256
+          (base32
+            "0983v8s8fyarlpk7h9nvha6wys0fbzacwkkaickn2jqhv66wh9c6"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-flask" ,python-flask)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-jsonschema" ,python-jsonschema)
+       ("python-mistune" ,python-mistune)
+       ("python-six" ,python-six)))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/rochacbruno/flasgger/")
+    (synopsis "Extract Swagger specs from your Flask project")
+    (description "This package allows extracting Swagger (documentation)
+specs from your Flask project and providing an @code{/apidocs/} endpoint
+in order to view them.  It is a fork of Flask-Swagger.")
+    (license license:expat)))
+
+(define-public python2-flasgger
+  (package-with-python2 python-flasgger))

^ permalink raw reply related	[relevance 65%]

* bug#27074: [PATCH] gnu: Add python-ansi2html.
@ 2017-05-25 19:30 81% Stefan Reichör
  2017-05-25 21:28 83% ` Marius Bakke
  0 siblings, 1 reply; 200+ results
From: Stefan Reichör @ 2017-05-25 19:30 UTC (permalink / raw)
  To: 27074

[-- Attachment #1: 0001-gnu-Add-python-ansi2html.patch --]
[-- Type: text/x-diff, Size: 2223 bytes --]

From 8561904e901eb1504f937cf1f39392da4cc47336 Mon Sep 17 00:00:00 2001
From: Stefan Reichoer <stefan@xsteve.at>
Date: Thu, 25 May 2017 21:24:52 +0200
Subject: [PATCH] gnu: Add python-ansi2html.

* gnu/packages/python.scm (python-ansi2html, python2-ansi2html): New variables.
---
 gnu/packages/python.scm | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 62fada6..7862e2e 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -27,7 +27,7 @@
 ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2016 Stefan Reichoer <stefan@xsteve.at>
+;;; Copyright © 2016, 2017 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
 ;;; Copyright © 2016 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
@@ -13470,6 +13470,33 @@ faster ones are not available.")
 to ansi-escaped strings suitable for display in a terminal.")
     (license license:expat)))
 
+(define-public python-ansi2html
+  (package
+    (name "python-ansi2html")
+    (version "1.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ansi2html" version))
+       (sha256
+        (base32
+         "1wa00zffprb78w1mqq90dk47czz1knanys2a40zbw2vyapd5lp9y"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-nose" ,python-nose)))
+    (propagated-inputs
+     `(("python-six" ,python-six)))
+    (home-page "http://github.com/ralphbean/ansi2html")
+    (synopsis "Convert ANSI-decorated console output to Html")
+    (description
+     "Convert ANSI-decorated console output to HTML. This package provides
+also the script ansi2html.")
+    (license license:gpl3+)))
+
+(define-public python2-ansi2html
+  (package-with-python2 python-ansi2html))
+
 (define-public python-ddt
   (package
     (name "python-ddt")
-- 
2.7.4

^ permalink raw reply related	[relevance 81%]

* bug#27074: [PATCH] gnu: Add python-ansi2html.
  2017-05-25 19:30 81% bug#27074: [PATCH] gnu: Add python-ansi2html Stefan Reichör
@ 2017-05-25 21:28 83% ` Marius Bakke
  0 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-05-25 21:28 UTC (permalink / raw)
  To: Stefan Reichör, 27074-done

[-- Attachment #1: Type: text/plain, Size: 1151 bytes --]

Stefan Reichör <stefan@xsteve.at> writes:

> * gnu/packages/python.scm (python-ansi2html, python2-ansi2html): New variables.

Thanks for this! I've committed it with a small change to synopsis and
description:

--8<---------------cut here---------------start------------->8---
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 7862e2ec7..d28c2eca6 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -13488,10 +13488,10 @@ to ansi-escaped strings suitable for display in a terminal.")
     (propagated-inputs
      `(("python-six" ,python-six)))
     (home-page "http://github.com/ralphbean/ansi2html")
-    (synopsis "Convert ANSI-decorated console output to Html")
+    (synopsis "Convert ANSI-decorated console output to HTML")
     (description
-     "Convert ANSI-decorated console output to HTML. This package provides
-also the script ansi2html.")
+     "@command{ansi2html} is a Python library and command line utility for
+convering text with ANSI color codes to HTML or LaTeX.")
     (license license:gpl3+)))
--8<---------------cut here---------------end--------------->8---


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply related	[relevance 83%]

* bug#27077: [PATCH] gnu: python-xcffib: Update to 0.5.1.
@ 2017-05-25 21:55 65% José Miguel Sánchez García
    0 siblings, 1 reply; 200+ results
From: José Miguel Sánchez García @ 2017-05-25 21:55 UTC (permalink / raw)
  To: 27077

[-- Attachment #1: Type: text/plain, Size: 38 bytes --]



-- 
José Miguel Sánchez García

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-python-xcffib-Update-to-0.5.1.patch --]
[-- Type: text/x-diff; name=0001-gnu-python-xcffib-Update-to-0.5.1.patch, Size: 1382 bytes --]

From 611337e166025ed6afa61cab6c0f965ebfd93e56 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Miguel=20S=C3=A1nchez=20Garc=C3=ADa?=
 <jmi2k@openmailbox.org>
Date: Fri, 26 May 2017 01:48:35 +0200
Subject: [PATCH] gnu: python-xcffib: Update to 0.5.1.

* gnu/packages/python.scm (python-xcffib): Update to 0.5.1.
---
 gnu/packages/python.scm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 5b9519bbf..107f8bfdf 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -4694,15 +4694,15 @@ a front-end for C compilers or analysis tools.")
 (define-public python-xcffib
   (package
     (name "python-xcffib")
-    (version "0.1.9")
+    (version "0.5.1")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "https://pypi.python.org/packages/source/x/"
-                          "xcffib/xcffib-" version ".tar.gz"))
+      (uri (string-append "https://pypi.python.org/packages/48/e8/83dc668044f0393c5b7bea1afdf42bf25005ca067bb130db924f673261ad/xcffib-"
+                     version ".tar.gz"))
       (sha256
        (base32
-        "0655hzxv57h1a9ja9kwp0ichbkhf3djw32k33d66xp0q37dq2y81"))))
+        "09gbnmr5vn58mm8xi3fmd7fz6743cks6c46dphnxzwax6zsxmy60"))))
     (build-system python-build-system)
     (inputs
      `(("libxcb" ,libxcb)))
-- 
2.13.0


^ permalink raw reply related	[relevance 65%]

* bug#27081: [PATCH 1/2] gnu: Add python-packaging.
  @ 2017-05-26  7:41 65% ` Leo Famulari
  2017-05-26  7:41 63%   ` bug#27081: [PATCH 2/2] gnu: python-cryptography: Update to 1.8.1 Leo Famulari
  0 siblings, 1 reply; 200+ results
From: Leo Famulari @ 2017-05-26  7:41 UTC (permalink / raw)
  To: 27081

---
 gnu/packages/python.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 62fada66a..e7dba73c6 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14676,3 +14676,34 @@ JSON APIs with Behave.")
 
 (define-public python2-behave-web-api
   (package-with-python2 python-behave-web-api))
+
+(define-public python-packaging
+  (package
+    (name "python-packaging")
+    (version "16.8")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "packaging" version))
+        (sha256
+         (base32
+          "17k1xbjshackwvbsnxqixbph8rbqhz4bf4g3al5xyzhavxgq6l2x"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pretend" ,python-pretend)
+       ("python-pytest" ,python-pytest)))
+    (propagated-inputs
+     `(("python-pyparsing" ,python-pyparsing)
+       ("python-six" ,python-six)))
+    (home-page "https://github.com/pypa/packaging")
+    (synopsis "Core utilities for Python packages")
+    (description "Packaging is a Python module for dealing with Python packages.
+It offers an interface for working with package versions, names, and dependency
+information.")
+;;; From 'LICENSE': This software is made available under the terms of *either*
+;;; of the licenses found in LICENSE.APACHE or LICENSE.BSD. Contributions to
+;;; this software is made under the terms of *both* these licenses.
+    (license (list license:asl2.0 license:bsd-2)))) ; Users can choose between these licenses.
+
+(define-public python2-packaging
+  (package-with-python2 python-packaging))
-- 
2.13.0

^ permalink raw reply related	[relevance 65%]

* bug#27081: [PATCH 2/2] gnu: python-cryptography: Update to 1.8.1.
  2017-05-26  7:41 65% ` bug#27081: [PATCH 1/2] gnu: Add python-packaging Leo Famulari
@ 2017-05-26  7:41 63%   ` Leo Famulari
  0 siblings, 0 replies; 200+ results
From: Leo Famulari @ 2017-05-26  7:41 UTC (permalink / raw)
  To: 27081

* gnu/packages/python.scm (python-cryptography, python2-cryptography,
python-cryptography-vectors, python2-cryptography-vectors):
Update to 1.8.1.
(python-cryptography, python2-cryptography)[propagated-inputs]: Add
python-asn1crypto and python-packaging.
---
 gnu/packages/python.scm | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e7dba73c6..5897863b6 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -65,6 +65,7 @@
   #:use-module (gnu packages backup)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages crypto)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages django)
   #:use-module (gnu packages file)
@@ -7327,14 +7328,14 @@ responses, rather than doing any computation.")
 (define-public python-cryptography-vectors
   (package
     (name "python-cryptography-vectors")
-    (version "1.7.1")
+    (version "1.8.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "cryptography_vectors" version))
        (sha256
         (base32
-         "1x2mz4wggja5ih45c6cw0kzyad4jr8avg327dawjr1gnpdq1psa7"))))
+         "1mmd68apr62ixg6jjnq291kax9s85z8gc8y9ialhr008xan1zmig"))))
     (build-system python-build-system)
     (home-page "https://github.com/pyca/cryptography")
     (synopsis "Test vectors for the cryptography package")
@@ -7349,22 +7350,24 @@ responses, rather than doing any computation.")
 (define-public python-cryptography
   (package
     (name "python-cryptography")
-    (version "1.7.1")
+    (version "1.8.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "cryptography" version))
        (sha256
         (base32
-         "0k6v7wq4h0yk9r0x0bl2x9fyrg4a6gj5qp4m9mgpk6m481yyygwm"))))
+         "1441hal140550hlqmlji95a4wrz9wn50rrd7pig5crxl5cqj8d9j"))))
     (build-system python-build-system)
     (inputs
      `(("openssl" ,openssl)))
     (propagated-inputs
-     `(("python-cffi" ,python-cffi)
+     `(("python-asn1crypto" ,python-asn1crypto)
+       ("python-cffi" ,python-cffi)
        ("python-six" ,python-six)
        ("python-pyasn1" ,python-pyasn1)
        ("python-idna" ,python-idna)
+       ("python-packaging" ,python-packaging)
        ("python-iso8601" ,python-iso8601)))
     (native-inputs
      `(("python-cryptography-vectors" ,python-cryptography-vectors)
-- 
2.13.0

^ permalink raw reply related	[relevance 63%]

* bug#27077: [PATCH] gnu: python-xcffib: Update to 0.5.1.
  @ 2017-05-26 14:54 75%   ` José Miguel Sánchez García
  0 siblings, 0 replies; 200+ results
From: José Miguel Sánchez García @ 2017-05-26 14:54 UTC (permalink / raw)
  To: Marius Bakke; +Cc: 27077

[-- Attachment #1: Type: text/plain, Size: 837 bytes --]


> Also, with this patch, "./pre-inst-env guix build python-cairocffi"
> fails to build with an error such as:
> 
> OSError: cannot load library 'libxcb.so.1': libxcb.so.1: cannot open
> shared object file: No such file or directory
> 
> Can you try to substitute the invocation of "libxcb.so.1" in
> "xcffib/init.py" to use the full store path and see if that helps?
Ok, I fixed it in a separate patch. That was the reason test were
disabled so that fixed them too.

> Can you change this to use 'pypi-uri' instead?
Any reason why `guix import` doesn't do that by default? I just copied
the output from that command, so I believed it was the way it should
be done.

Anyway, here you have both patches. Please check the message of the
first one, as I'm not fully used to Guix conventions regarding this.
-- 
José Miguel Sánchez García

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-python-xcffib-Fix-libxcb.so.1-path.patch --]
[-- Type: text/x-diff; name=0001-gnu-python-xcffib-Fix-libxcb.so.1-path.patch, Size: 1685 bytes --]

From 914f55e0b7d537bdb308d7e40e5e7156e3c05355 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Miguel=20S=C3=A1nchez=20Garc=C3=ADa?=
 <jmi2k@openmailbox.org>
Date: Fri, 26 May 2017 18:35:17 +0200
Subject: [PATCH] gnu: python-xcffib: Fix libxcb.so.1 path.

* gnu/packages/python.scm (python-xcffib): Fix libxcb.so.1 path and enable
tests.
---
 gnu/packages/python.scm | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 5b9519bbf..6e85ec529 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -4710,9 +4710,7 @@ a front-end for C compilers or analysis tools.")
      `(("python-cffi" ,python-cffi) ; used at run time
        ("python-six" ,python-six)))
     (arguments
-     `(;; FIXME: Tests cannot load libxcb.so.1
-       #:tests? #f
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-after 'install 'install-doc
            (lambda* (#:key outputs #:allow-other-keys)
@@ -4721,7 +4719,12 @@ a front-end for C compilers or analysis tools.")
                (mkdir-p doc)
                (copy-file "README.md"
                           (string-append doc "/README.md"))
-               #t))))))
+               #t)))
+         (add-after 'unpack 'fix-libxcb-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((libxcb (assoc-ref inputs "libxcb")))
+               (substitute* '("xcffib/__init__.py")
+                 (("^soname = \"") (string-append "soname = \"" libxcb "/lib/")))))))))
     (home-page "https://github.com/tych0/xcffib")
     (synopsis "XCB Python bindings")
     (description
-- 
2.13.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0001-gnu-python-xcffib-Update-to-0.5.1.patch --]
[-- Type: text/x-diff; name=0001-gnu-python-xcffib-Update-to-0.5.1.patch, Size: 1243 bytes --]

From 33358874be40b6da2333ae1fee5712e99fde62de Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Miguel=20S=C3=A1nchez=20Garc=C3=ADa?=
 <jmi2k@openmailbox.org>
Date: Fri, 26 May 2017 18:42:20 +0200
Subject: [PATCH] gnu: python-xcffib: Update to 0.5.1.

* gnu/packages/python.scm (python-xcffib): Update to 0.5.1.
---
 gnu/packages/python.scm | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 6e85ec529..1fe1f14a1 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -4694,15 +4694,14 @@ a front-end for C compilers or analysis tools.")
 (define-public python-xcffib
   (package
     (name "python-xcffib")
-    (version "0.1.9")
+    (version "0.5.1")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "https://pypi.python.org/packages/source/x/"
-                          "xcffib/xcffib-" version ".tar.gz"))
+      (uri (pypi-uri "xcffib" version))
       (sha256
        (base32
-        "0655hzxv57h1a9ja9kwp0ichbkhf3djw32k33d66xp0q37dq2y81"))))
+        "09gbnmr5vn58mm8xi3fmd7fz6743cks6c46dphnxzwax6zsxmy60"))))
     (build-system python-build-system)
     (inputs
      `(("libxcb" ,libxcb)))
-- 
2.13.0


^ permalink raw reply related	[relevance 75%]

* bug#26524: [PATCH 1/5] gnu: Add python-sure
  2017-04-15 18:59 91% bug#26524: Add conda and dependencies Frederick Muriithi
  2017-04-27 15:55 65% ` bug#26524: [PATCH 1/3] gnu: Add python-radon Muriithi Frederick Muriuki
  2017-05-25  8:42 63% ` bug#26524: [PATCH] " Frederick Muriithi
@ 2017-05-28 15:32 65% ` Muriithi Frederick Muriuki
  2017-05-28 15:32 65%   ` bug#26524: [PATCH 2/5] gnu: Add python2-couleur Muriithi Frederick Muriuki
                     ` (4 more replies)
  2017-06-11  1:07 65% ` bug#26524: [PATCH 1/3] gnu: python-sphinx-rtd-theme: Update to 0.2.4 Muriithi Frederick Muriuki
  3 siblings, 5 replies; 200+ results
From: Muriithi Frederick Muriuki @ 2017-05-28 15:32 UTC (permalink / raw)
  To: 26524

* gnu/packages/python.scm (python-sure, python2-sure): New variables.
---
 gnu/packages/python.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3e2141e7f..556d34d0c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14926,3 +14926,32 @@ Supported metrics are:
 
 (define-public python2-radon
   (package-with-python2 python-radon))
+
+(define-public python-sure
+  (package
+    (name "python-sure")
+    (version "1.4.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "sure" version))
+       (sha256
+        (base32
+         "1iyqsy2d6radi88g1qf0lziy5b39h5cpb3g5jiqyb4xi46ig3x1z"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-mock" ,python-mock)
+       ("python-six" ,python-six)))
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (home-page
+     "http://github.com/gabrielfalcao/sure")
+    (synopsis
+     "Sure is an automated testing library in python for python")
+    (description
+     "Sure is a python library for python that leverages a DSL for writing assertions.
+Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.")
+    (license license:gpl3)))
+
+(define-public python2-sure
+  (package-with-python2 python-sure))
-- 
2.13.0

^ permalink raw reply related	[relevance 65%]

* bug#26524: [PATCH 5/5] gnu: Add python-nose-randomly
  2017-05-28 15:32 65% ` bug#26524: [PATCH 1/5] gnu: Add python-sure Muriithi Frederick Muriuki
                     ` (2 preceding siblings ...)
  2017-05-28 15:32 63%   ` bug#26524: [PATCH 4/5] gnu: Add python2-steadymark Muriithi Frederick Muriuki
@ 2017-05-28 15:32 63%   ` Muriithi Frederick Muriuki
  2017-06-04 12:15 83%   ` bug#26524: [PATCH 1/5] gnu: Add python-sure Marius Bakke
  4 siblings, 0 replies; 200+ results
From: Muriithi Frederick Muriuki @ 2017-05-28 15:32 UTC (permalink / raw)
  To: 26524

* gnu/packages/python.scm (python-nose-randomly, python2-nose-randomly):
* New variables.
---
 gnu/packages/python.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index f6b336904..1c812b372 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15055,3 +15055,33 @@ The documentation may contain snippets of code surrounded by python code blocks
 @code{Steadymark} will find these snippets and run them, making sure that there are no old
 malfunctional examples in the documentation examples.")
     (license license:expat)))
+
+(define-public python-nose-randomly
+  (package
+    (name "python-nose-randomly")
+    (version "1.2.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "nose-randomly" version))
+       (sha256
+        (base32
+         "1cw9dlr1zh3w4i438kin7z0rm8092ki52hayisyc43h9pcplq7rn"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-nose" ,python-nose)
+       ("python-numpy" ,python-numpy)))
+    (home-page
+     "https://github.com/adamchainz/nose-randomly")
+    (synopsis
+     "Nose plugin to randomly order tests and control random.seed")
+    (description
+     "This is a @code{Nose} plugin to randomly order tests which can be quite powerful in
+discovering hidden flaws in the tests themselves, while helping to reduce inter-test
+dependencies.  It also helps in controlling random.seed, by resetting it to a repeatable
+number for each test, enabling the tests to create data based on random numbers and yet
+remain repeatable.")
+    (license license:bsd-3)))
+
+(define-public python2-nose-randomly
+  (package-with-python2 python-nose-randomly))
-- 
2.13.0

^ permalink raw reply related	[relevance 63%]

* bug#26524: [PATCH 2/5] gnu: Add python2-couleur
  2017-05-28 15:32 65% ` bug#26524: [PATCH 1/5] gnu: Add python-sure Muriithi Frederick Muriuki
@ 2017-05-28 15:32 65%   ` Muriithi Frederick Muriuki
  2017-05-28 15:32 63%   ` bug#26524: [PATCH 3/5] gnu: Add python-misaka Muriithi Frederick Muriuki
                     ` (3 subsequent siblings)
  4 siblings, 0 replies; 200+ results
From: Muriithi Frederick Muriuki @ 2017-05-28 15:32 UTC (permalink / raw)
  To: 26524

* gnu/packages/python.scm (python2-couleur): New variable.
---
 gnu/packages/python.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 556d34d0c..989131680 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14955,3 +14955,28 @@ Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.")
 
 (define-public python2-sure
   (package-with-python2 python-sure))
+
+(define-public python2-couleur
+  ;; This package does not seem to support python3 at all, hence,
+  ;; only the python2 variant definition is provided.
+  (package
+    (name "python-couleur")
+    (version "0.6.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "couleur" version))
+       (sha256
+        (base32
+         "1qqaxyqz74wvid0cr119dhcwz0h0if5b5by44zl49pd5z65v58k1"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (home-page
+     "http://github.com/gabrielfalcao/couleur")
+    (synopsis
+     "ANSI terminal tool for python, colored shell and other handy fancy features")
+    (description
+     "@code{Couleur} provides python programs a way to use the ANSI features in a unix
+terminal such as coloured output in the shell, overwriting output, indentation, etc.")
+    (license license:asl2.0)))
-- 
2.13.0

^ permalink raw reply related	[relevance 65%]

* bug#26524: [PATCH 4/5] gnu: Add python2-steadymark
  2017-05-28 15:32 65% ` bug#26524: [PATCH 1/5] gnu: Add python-sure Muriithi Frederick Muriuki
  2017-05-28 15:32 65%   ` bug#26524: [PATCH 2/5] gnu: Add python2-couleur Muriithi Frederick Muriuki
  2017-05-28 15:32 63%   ` bug#26524: [PATCH 3/5] gnu: Add python-misaka Muriithi Frederick Muriuki
@ 2017-05-28 15:32 63%   ` Muriithi Frederick Muriuki
  2017-06-04 12:44 62%     ` Marius Bakke
  2017-05-28 15:32 63%   ` bug#26524: [PATCH 5/5] gnu: Add python-nose-randomly Muriithi Frederick Muriuki
  2017-06-04 12:15 83%   ` bug#26524: [PATCH 1/5] gnu: Add python-sure Marius Bakke
  4 siblings, 1 reply; 200+ results
From: Muriithi Frederick Muriuki @ 2017-05-28 15:32 UTC (permalink / raw)
  To: 26524

* gnu/packages/python.scm (python2-steadymark): New variable.
---
 gnu/packages/python.scm | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 86cb034e4..f6b336904 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15013,3 +15013,45 @@ renderers (e.g. man pages or LaTeX).")
 
 (define-public python2-misaka
   (package-with-python2 python-misaka))
+
+(define-public python2-steadymark
+  ;; This is forced into being a python2 only variant
+  ;; due to its dependence on couleur that has no support
+  ;; for python3
+  (package
+    (name "python-steadymark")
+    (version "0.7.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "steadymark" version))
+       (sha256
+        (base32
+         "1640i9g8dycql3cc8j0bky0jkzj0q39blfbp4lsgpkprkfgcdk8v"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-couleur" ,python2-couleur)
+       ("python-sure" ,python2-sure)
+       ("python-misaka" ,python2-misaka)))
+    (arguments
+     `(#:python ,python-2
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build
+             'patch-setup-py
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Update requirements from dependecy==version
+             ;; to dependency>=version
+             (substitute* "setup.py"
+               (("==") ">="))
+             #t)))))
+    (home-page
+     "http://github.com/gabrielfalcao/steadymark")
+    (synopsis
+     "Markdown-based test runner for python. Good for github projects")
+    (description
+     "@code{Steadymark} allows documentation to be written in github-flavoured markdown.
+The documentation may contain snippets of code surrounded by python code blocks and
+@code{Steadymark} will find these snippets and run them, making sure that there are no old
+malfunctional examples in the documentation examples.")
+    (license license:expat)))
-- 
2.13.0

^ permalink raw reply related	[relevance 63%]

* bug#26524: [PATCH 3/5] gnu: Add python-misaka
  2017-05-28 15:32 65% ` bug#26524: [PATCH 1/5] gnu: Add python-sure Muriithi Frederick Muriuki
  2017-05-28 15:32 65%   ` bug#26524: [PATCH 2/5] gnu: Add python2-couleur Muriithi Frederick Muriuki
@ 2017-05-28 15:32 63%   ` Muriithi Frederick Muriuki
  2017-05-28 15:32 63%   ` bug#26524: [PATCH 4/5] gnu: Add python2-steadymark Muriithi Frederick Muriuki
                     ` (2 subsequent siblings)
  4 siblings, 0 replies; 200+ results
From: Muriithi Frederick Muriuki @ 2017-05-28 15:32 UTC (permalink / raw)
  To: 26524

* gnu/packages/python.scm (python-misaka, python2-misaka): New
* variables.
---
 gnu/packages/python.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 989131680..86cb034e4 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14980,3 +14980,36 @@ Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.")
      "@code{Couleur} provides python programs a way to use the ANSI features in a unix
 terminal such as coloured output in the shell, overwriting output, indentation, etc.")
     (license license:asl2.0)))
+
+(define-public python-misaka
+  (package
+    (name "python-misaka")
+    (version "2.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "misaka" version))
+       (sha256
+        (base32
+         "1yqrq3a5rracirmvk52n28nn6ckdaz897gnigv89a9gmyn87sqw7"))))
+    (build-system python-build-system)
+    (arguments
+     `(;; Line 37 of setup.py calls self.run_command('develop')
+       ;; in the 'check' phase. This command seems to be trying
+       ;; to write to
+       ;; /gnu/store/...-python-<version>/lib/python<version>/site-packages/
+       ;; for which it does not have the permission to write.
+       #:tests? #f))
+    (propagated-inputs
+     `(("python-cffi" ,python-cffi)))
+    (home-page "https://github.com/FSX/misaka")
+    (synopsis
+     "Misaka is a CFFI binding for Hoedown, a markdown parsing library")
+    (description
+     "@code{Misaka} is a CFFI-based binding for @code{Hoedown}, a fast markdown processing
+library written in C.  It features a fast HTML renderer and functionality to make custom
+renderers (e.g. man pages or LaTeX).")
+    (license license:expat)))
+
+(define-public python2-misaka
+  (package-with-python2 python-misaka))
-- 
2.13.0

^ permalink raw reply related	[relevance 63%]

* bug#27160: [PATCH] gnu: scons: Update to 2.5.1.
@ 2017-05-31  7:05 65% Roel Janssen
  0 siblings, 0 replies; 200+ results
From: Roel Janssen @ 2017-05-31  7:05 UTC (permalink / raw)
  To: 27160

[-- Attachment #1: Type: text/plain, Size: 233 bytes --]

Dear Guix,

Here's a patch to update SCons.  I checked to make sure that the
packages that use SCons still build:
- linuxdcpp
- serf
- aria-maestosa
- pingus
- metabat

And that seems to be fine.
Thanks!

Kind regards,
Roel Janssen


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-scons-Update-to-2.5.1.patch --]
[-- Type: text/x-patch, Size: 1141 bytes --]

From 54c0bec81ada0e0b035b88a41e1d33ae60ab1099 Mon Sep 17 00:00:00 2001
From: Roel Janssen <roel@gnu.org>
Date: Wed, 31 May 2017 08:57:41 +0200
Subject: [PATCH] gnu: scons: Update to 2.5.1.

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

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3e2141e7f..7617490bd 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1574,14 +1574,14 @@ existing ones.")
 (define-public scons
   (package
     (name "scons")
-    (version "2.3.4")
+    (version "2.5.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://sourceforge/scons/scons/" version
                                  "/scons-" version ".tar.gz"))
              (sha256
               (base32
-               "0hdlci43wjz8maryj83mz04ir6rwcdrrzpd7cpzvdlzycqhdfmsb"))))
+               "1wji1z9jdkhnmm99apx6fhld9cs52rr56aigniyrcsmlwy52298b"))))
     (build-system python-build-system)
     (arguments
      ;; With Python 3.x, fails to build with a syntax error.
-- 
2.13.0


^ permalink raw reply related	[relevance 65%]

* bug#27174: [PATCH] gpu: packages: python-file: drop outdated patch
@ 2017-05-31 20:08 75% Sergei Trofimovich
  0 siblings, 0 replies; 200+ results
From: Sergei Trofimovich @ 2017-05-31 20:08 UTC (permalink / raw)
  To: 27174

The change fixes build failure aftr file-5.30 bump:
python-file-double-encoding-bug.patch was included upstram.

* gnu/local.mk: removed python-file-double-encoding-bug.patch
* gnu/packages/patches/python-file-double-encoding-bug.patch: removed
* gnu/packages/python.scm (python-file): drop upstreamed
  python-file-double-encoding-bug.patch
---
 gnu/local.mk                                       |  1 -
 .../patches/python-file-double-encoding-bug.patch  | 50 ----------------------
 gnu/packages/python.scm                            |  4 --
 3 files changed, 55 deletions(-)
 delete mode 100644 gnu/packages/patches/python-file-double-encoding-bug.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 3d7ae598e..5090c04b9 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -927,7 +927,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-3.5-fix-tests.patch		\
   %D%/packages/patches/python-3.5-getentropy-on-old-kernels.patch	\
   %D%/packages/patches/python-dendropy-fix-tests.patch		\
-  %D%/packages/patches/python-file-double-encoding-bug.patch	\
   %D%/packages/patches/python-fix-tests.patch			\
   %D%/packages/patches/python-parse-too-many-fields.patch	\
   %D%/packages/patches/python2-rdflib-drop-sparqlwrapper.patch	\
diff --git a/gnu/packages/patches/python-file-double-encoding-bug.patch b/gnu/packages/patches/python-file-double-encoding-bug.patch
deleted file mode 100644
index bbe825c36..000000000
--- a/gnu/packages/patches/python-file-double-encoding-bug.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-Fix bug that breaks file's Python bindings when using Python 3. This patch
-should not be applied when using Python 2.
-
-Copied from upstream source repository:
-
-https://github.com/file/file/commit/73e043d2a986234b187a00ed0c8d1f7bf83df372
-
-From 73e043d2a986234b187a00ed0c8d1f7bf83df372 Mon Sep 17 00:00:00 2001
-From: Christos Zoulas <christos@zoulas.com>
-Date: Tue, 28 Jun 2016 17:10:22 +0000
-Subject: [PATCH] PR/562: Reiner Herrmann: Avoid double encoding with python3
-
----
- python/magic.py | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/python/magic.py b/python/magic.py
-index c48f7d5..b0f7a17 100644
---- a/python/magic.py
-+++ b/python/magic.py
-@@ -134,7 +134,7 @@ class Magic(object):
-         if isinstance(r, str):
-             return r
-         else:
--            return str(r).encode('utf-8')
-+            return str(r, 'utf-8')
- 
-     def descriptor(self, fd):
-         """
-@@ -152,7 +152,7 @@ class Magic(object):
-         if isinstance(r, str):
-             return r
-         else:
--            return str(r).encode('utf-8')
-+            return str(r, 'utf-8')
- 
-     def error(self):
-         """
-@@ -163,7 +163,7 @@ class Magic(object):
-         if isinstance(e, str):
-             return e
-         else:
--            return str(e).encode('utf-8')
-+            return str(e, 'utf-8')
- 
-     def setflags(self, flags):
-         """
--- 
-2.10.1
-
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index b958199bd..aaa69075e 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7578,10 +7578,6 @@ Python's @code{ctypes} foreign function interface (FFI).")
   (package
     (inherit file)
     (name "python-file")
-    (source (origin
-              (inherit (package-source file))
-              ;; This patch should not be applied to python2-file.
-              (patches (search-patches "python-file-double-encoding-bug.patch"))))
     (build-system python-build-system)
     (arguments
      '(#:tests? #f                                ;no tests
-- 
2.13.0

^ permalink raw reply related	[relevance 75%]

* bug#27071: [PATCH v2 1/8] gnu: Add python-jsonpointer.
  @ 2017-06-03  6:22 65%   ` Danny Milosavljevic
  2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 2/8] gnu: Add python-rfc3987 Danny Milosavljevic
                     ` (6 subsequent siblings)
  7 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-06-03  6:22 UTC (permalink / raw)
  To: 27071

* gnu/packages/python.scm (python-jsonpointer, python2-jsonpointer):
New variables.
---
 gnu/packages/python.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 7617490bd..621443e2f 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14926,3 +14926,24 @@ Supported metrics are:
 
 (define-public python2-radon
   (package-with-python2 python-radon))
+
+(define-public python-jsonpointer
+  (package
+    (name "python-jsonpointer")
+    (version "1.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "jsonpointer" version))
+       (sha256
+        (base32
+         "1cg0gvgqjysydv6p45v4jywg1jb3v48c7m3cbpi57zgf6nndr9cz"))))
+  (build-system python-build-system)
+  (home-page "https://github.com/stefankoegl/python-json-pointer")
+  (synopsis "Identify specific nodes in a JSON document")
+  (description "@code{jsonpointer} allows you to access specific nodes
+by path in a JSON document (see RFC 6901).")
+  (license license:bsd-3)))
+
+(define-public python2-jsonpointer
+  (package-with-python2 python-jsonpointer))

^ permalink raw reply related	[relevance 65%]

* bug#27071: [PATCH v2 2/8] gnu: Add python-rfc3987.
    2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 1/8] gnu: Add python-jsonpointer Danny Milosavljevic
@ 2017-06-03  6:22 65%   ` Danny Milosavljevic
  2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 3/8] gnu: Add python-validate-email Danny Milosavljevic
                     ` (5 subsequent siblings)
  7 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-06-03  6:22 UTC (permalink / raw)
  To: 27071

* gnu/packages/python.scm (python-rfc3987, python2-rfc3987): New variables.
---
 gnu/packages/python.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 621443e2f..98d114301 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14947,3 +14947,24 @@ by path in a JSON document (see RFC 6901).")
 
 (define-public python2-jsonpointer
   (package-with-python2 python-jsonpointer))
+
+(define-public python-rfc3987
+  (package
+    (name "python-rfc3987")
+    (version "1.3.7")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (pypi-uri "rfc3987" version))
+      (sha256
+       (base32
+        "192pclzs2y0yaywqkrlvd0x73740q310kvqvm6jldhi619mq59wi"))))
+    (build-system python-build-system)
+    (home-page "http://pypi.python.org/pypi/rfc3987")
+    (synopsis "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)")
+    (description "@code{rfc3987} provides routines for parsing and
+validation of URIs (see RFC 3986) and IRIs (see RFC 3987).")
+    (license license:gpl3+)))
+
+(define-public python2-rfc3987
+  (package-with-python2 python-rfc3987))

^ permalink raw reply related	[relevance 65%]

* bug#27071: [PATCH v2 3/8] gnu: Add python-validate-email.
    2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 1/8] gnu: Add python-jsonpointer Danny Milosavljevic
  2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 2/8] gnu: Add python-rfc3987 Danny Milosavljevic
@ 2017-06-03  6:22 65%   ` Danny Milosavljevic
  2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 4/8] gnu: Add python-flex Danny Milosavljevic
                     ` (4 subsequent siblings)
  7 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-06-03  6:22 UTC (permalink / raw)
  To: 27071

* gnu/packages/python.scm (python-validate-email, python2-validate-email):
New variables.
---
 gnu/packages/python.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 98d114301..acd579791 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14968,3 +14968,24 @@ validation of URIs (see RFC 3986) and IRIs (see RFC 3987).")
 
 (define-public python2-rfc3987
   (package-with-python2 python-rfc3987))
+
+(define-public python-validate-email
+  (package
+    (name "python-validate-email")
+    (version "1.3")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (pypi-uri "validate_email" version))
+      (sha256
+       (base32
+        "1bxffaf5yz2cph8ki55vdvdypbwkvn2xr1firlcy62vqbzf1jivq"))))
+    (build-system python-build-system)
+    (home-page "http://github.com/syrusakbary/validate_email")
+    (synopsis "Verifies if an email address is valid and really exists")
+    (description "@code{validate_email} can be used to verify if an email
+address is valid and really exists.")
+    (license license:lgpl3+)))
+
+(define-public python2-validate-email
+  (package-with-python2 python-validate-email))

^ permalink raw reply related	[relevance 65%]

* bug#27071: [PATCH v2 4/8] gnu: Add python-flex.
                       ` (2 preceding siblings ...)
  2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 3/8] gnu: Add python-validate-email Danny Milosavljevic
@ 2017-06-03  6:22 65%   ` Danny Milosavljevic
  2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 5/8] gnu: Add python-marshmallow Danny Milosavljevic
                     ` (3 subsequent siblings)
  7 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-06-03  6:22 UTC (permalink / raw)
  To: 27071

* gnu/packages/python.scm (python-flex, python2-flex): New variables.
---
 gnu/packages/python.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index acd579791..be4ca2dd6 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14989,3 +14989,32 @@ address is valid and really exists.")
 
 (define-public python2-validate-email
   (package-with-python2 python-validate-email))
+
+(define-public python-flex
+  (package
+    (name "python-flex")
+    (version "6.10.0")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (pypi-uri "flex" version))
+      (sha256
+       (base32
+        "00pamnwla3khk8nyla7y28dq9jnh69swd7f4jfsl7sn1izs8n8zk"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-click" ,python-click)
+       ("python-iso8601" ,python-iso8601)
+       ("python-jsonpointer" ,python-jsonpointer)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-requests" ,python-requests)
+       ("python-rfc3987" ,python-rfc3987)
+       ("python-six" ,python-six)
+       ("python-validate-email" ,python-validate-email)))
+    (home-page "https://github.com/pipermerriam/flex")
+    (synopsis "Validates Swagger schemata")
+    (description "@code{flex} can be used to validate Swagger schemata.")
+    (license license:bsd-3)))
+
+(define-public python2-flex
+  (package-with-python2 python-flex))

^ permalink raw reply related	[relevance 65%]

* bug#27071: [PATCH v2 5/8] gnu: Add python-marshmallow.
                       ` (3 preceding siblings ...)
  2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 4/8] gnu: Add python-flex Danny Milosavljevic
@ 2017-06-03  6:22 65%   ` Danny Milosavljevic
  2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 6/8] gnu: Add python-bottle Danny Milosavljevic
                     ` (2 subsequent siblings)
  7 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-06-03  6:22 UTC (permalink / raw)
  To: 27071

* gnu/packages/python.scm (python-marshmallow, python2-marshmallow):
New variables.
---
 gnu/packages/python.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index be4ca2dd6..7b82a301a 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15018,3 +15018,31 @@ address is valid and really exists.")
 
 (define-public python2-flex
   (package-with-python2 python-flex))
+
+(define-public python-marshmallow
+  (package
+    (name "python-marshmallow")
+    (version "3.0.0b2")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (pypi-uri "marshmallow" version))
+      (sha256
+       (base32
+        "11bnpvfdbczr74177p295zbkdrax2cahvbj5bqhhlprgz2xxi5d9"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-dateutil" ,python-dateutil)
+       ("python-simplejson" ,python-simplejson)))
+    (native-inputs
+     `(("python-pytest-3.0" ,python-pytest-3.0)
+       ("python-pytz" ,python-pytz)))
+    (home-page "https://github.com/marshmallow-code/marshmallow")
+    (synopsis "Convert complex datatypes to and from native
+Python datatypes.")
+    (description "@code{marshmallow} provides a library for converting
+complex datatypes to and from native Python datatypes.")
+    (license license:expat)))
+
+(define-public python2-marshmallow
+  (package-with-python2 python-marshmallow))

^ permalink raw reply related	[relevance 65%]

* bug#27071: [PATCH v2 6/8] gnu: Add python-bottle.
                       ` (4 preceding siblings ...)
  2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 5/8] gnu: Add python-marshmallow Danny Milosavljevic
@ 2017-06-03  6:22 65%   ` Danny Milosavljevic
  2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 7/8] gnu: Add python-apispec Danny Milosavljevic
  2017-06-03  6:22 63%   ` bug#27071: [PATCH v2 8/8] gnu: Add python-flasgger Danny Milosavljevic
  7 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-06-03  6:22 UTC (permalink / raw)
  To: 27071

* gnu/packages/python.scm (python-bottle, python2-bottle): New variables.
---
 gnu/packages/python.scm | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 7b82a301a..cbc8650b4 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15046,3 +15046,23 @@ complex datatypes to and from native Python datatypes.")
 
 (define-public python2-marshmallow
   (package-with-python2 python-marshmallow))
+
+(define-public python-bottle
+  (package
+    (name "python-bottle")
+    (version "0.12.13")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (pypi-uri "bottle" version))
+      (sha256
+        (base32
+          "0m9k2a7yxvggc4kw8fsvj381vgsvfcdshg5nzy6vwrxiw2p53drr"))))
+    (build-system python-build-system)
+    (home-page "http://bottlepy.org/")
+    (synopsis "WSGI framework for small web-applications.")
+    (description "@code{python-bottle} is a WSGI framework for small web-applications.")
+    (license license:expat)))
+
+(define-public python2-bottle
+  (package-with-python2 python-bottle))

^ permalink raw reply related	[relevance 65%]

* bug#27071: [PATCH v2 7/8] gnu: Add python-apispec.
                       ` (5 preceding siblings ...)
  2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 6/8] gnu: Add python-bottle Danny Milosavljevic
@ 2017-06-03  6:22 65%   ` Danny Milosavljevic
  2017-06-03  6:22 63%   ` bug#27071: [PATCH v2 8/8] gnu: Add python-flasgger Danny Milosavljevic
  7 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-06-03  6:22 UTC (permalink / raw)
  To: 27071

* gnu/packages/python.scm (python-apispec, python2-apispec): New variables.
---
 gnu/packages/python.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index cbc8650b4..243637881 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15066,3 +15066,34 @@ complex datatypes to and from native Python datatypes.")
 
 (define-public python2-bottle
   (package-with-python2 python-bottle))
+
+(define-public python-apispec
+  (package
+    (name "python-apispec")
+    (version "0.22.0")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (pypi-uri "apispec" version))
+      (sha256
+        (base32
+          "0y3jxmgp2d24am3hxl40f5rw9abb0r8037sagax3dv64h4n1azwq"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-pyyaml" ,python-pyyaml)))
+    (native-inputs
+     `(("python-pytest-3.0" ,python-pytest-3.0)
+       ("python-flask" ,python-flask)
+       ("python-marshmallow" ,python-marshmallow)
+       ("python-tornado" ,python-tornado)
+       ("python-bottle" ,python-bottle)
+       ("python-mock" ,python-mock)))
+    (home-page "https://github.com/marshmallow-code/apispec")
+    (synopsis "Swagger 2.0 API specification generator")
+    (description "@code{python-apispec} is a pluggable API specification
+generator. Currently supports the OpenAPI specification (f.k.a.
+Swagger 2.0).")
+    (license license:expat)))
+
+(define-public python2-apispec
+  (package-with-python2 python-apispec))

^ permalink raw reply related	[relevance 65%]

* bug#27071: [PATCH v2 8/8] gnu: Add python-flasgger.
                       ` (6 preceding siblings ...)
  2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 7/8] gnu: Add python-apispec Danny Milosavljevic
@ 2017-06-03  6:22 63%   ` Danny Milosavljevic
  7 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-06-03  6:22 UTC (permalink / raw)
  To: 27071

* gnu/packages/python.scm (python-flasgger, python2-flasgger): New variables.
---
 gnu/packages/python.scm | 50 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 243637881..20d223f77 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15097,3 +15097,53 @@ Swagger 2.0).")
 
 (define-public python2-apispec
   (package-with-python2 python-apispec))
+
+(define-public python-flasgger
+  (package
+    (name "python-flasgger")
+    (version "0.6.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://github.com/rochacbruno/flasgger/archive/"
+                            version ".tar.gz"))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "1gqzlm0rb55fdpsy5ipkganlx9cnpi454fqyycr03jm22zql14ay"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "Makefile"
+               (("flake8 flasgger --ignore=F403")
+                "flake8 flasgger --ignore=E731,F403"))
+             (setenv "PYTHONPATH" (string-append (getcwd)
+                                                 ":"
+                                                 (getenv "PYTHONPATH")))
+             (zero? (system* "py.test")))))))
+    (propagated-inputs
+     `(("python-flask" ,python-flask)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-jsonschema" ,python-jsonschema)
+       ("python-mistune" ,python-mistune)
+       ("python-six" ,python-six)))
+    (native-inputs
+     `(("python-decorator" ,python-decorator)
+       ("python-flake8" ,python-flake8)
+       ("python-flask-restful" ,python-flask-restful)
+       ("python-flex" ,python-flex)
+       ("python-pytest-3.0" ,python-pytest-3.0)
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-marshmallow" ,python-marshmallow)
+       ("python-apispec" ,python-apispec)))
+    (home-page "https://github.com/rochacbruno/flasgger/")
+    (synopsis "Extract Swagger specs from your Flask project")
+    (description "@code{python-flasgger} allows extracting Swagger specs
+from your Flask project.  It is a fork of Flask-Swagger.")
+    (license license:expat)))
+
+(define-public python2-flasgger
+  (package-with-python2 python-flasgger))

^ permalink raw reply related	[relevance 63%]

* bug#26524: [PATCH 1/5] gnu: Add python-sure
  2017-05-28 15:32 65% ` bug#26524: [PATCH 1/5] gnu: Add python-sure Muriithi Frederick Muriuki
                     ` (3 preceding siblings ...)
  2017-05-28 15:32 63%   ` bug#26524: [PATCH 5/5] gnu: Add python-nose-randomly Muriithi Frederick Muriuki
@ 2017-06-04 12:15 83%   ` Marius Bakke
  4 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-06-04 12:15 UTC (permalink / raw)
  To: Muriithi Frederick Muriuki, 26524

[-- Attachment #1: Type: text/plain, Size: 2420 bytes --]

Muriithi Frederick Muriuki <fredmanglis@gmail.com> writes:

> * gnu/packages/python.scm (python-sure, python2-sure): New variables.
> ---
>  gnu/packages/python.scm | 29 +++++++++++++++++++++++++++++
>  1 file changed, 29 insertions(+)
>
> diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
> index 3e2141e7f..556d34d0c 100644
> --- a/gnu/packages/python.scm
> +++ b/gnu/packages/python.scm
> @@ -14926,3 +14926,32 @@ Supported metrics are:
>  
>  (define-public python2-radon
>    (package-with-python2 python-radon))
> +
> +(define-public python-sure
> +  (package
> +    (name "python-sure")
> +    (version "1.4.6")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (pypi-uri "sure" version))
> +       (sha256
> +        (base32
> +         "1iyqsy2d6radi88g1qf0lziy5b39h5cpb3g5jiqyb4xi46ig3x1z"))))
> +    (build-system python-build-system)
> +    (propagated-inputs
> +     `(("python-mock" ,python-mock)
> +       ("python-six" ,python-six)))
> +    (native-inputs
> +     `(("python-nose" ,python-nose)))
> +    (home-page
> +     "http://github.com/gabrielfalcao/sure")
> +    (synopsis
> +     "Sure is an automated testing library in python for python")
> +    (description
> +     "Sure is a python library for python that leverages a DSL for writing assertions.
> +Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.")
> +    (license license:gpl3)))

Committed with this diff:

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 70544058a..5adb35510 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14944,14 +14944,12 @@ Supported metrics are:
        ("python-six" ,python-six)))
     (native-inputs
      `(("python-nose" ,python-nose)))
-    (home-page
-     "http://github.com/gabrielfalcao/sure")
-    (synopsis
-     "Sure is an automated testing library in python for python")
+    (home-page "http://github.com/gabrielfalcao/sure")
+    (synopsis "Automated testing library in python for python")
     (description
-     "Sure is a python library for python that leverages a DSL for writing assertions.
+     "Sure is a python library that leverages a DSL for writing assertions.
 Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.")
-    (license license:gpl3)))
+    (license license:gpl3+)))
 
Thanks!

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply related	[relevance 83%]

* bug#26524: [PATCH 4/5] gnu: Add python2-steadymark
  2017-05-28 15:32 63%   ` bug#26524: [PATCH 4/5] gnu: Add python2-steadymark Muriithi Frederick Muriuki
@ 2017-06-04 12:44 62%     ` Marius Bakke
  0 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-06-04 12:44 UTC (permalink / raw)
  To: Muriithi Frederick Muriuki, 26524

[-- Attachment #1: Type: text/plain, Size: 2165 bytes --]

Muriithi Frederick Muriuki <fredmanglis@gmail.com> writes:

> * gnu/packages/python.scm (python2-steadymark): New variable.

Applied with this diff (description wrapped at 80 chars):

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index c8701f968..ee216116c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15017,7 +15017,7 @@ renderers (e.g. man pages or LaTeX).")
   ;; due to its dependence on couleur that has no support
   ;; for python3
   (package
-    (name "python-steadymark")
+    (name "python2-steadymark")
     (version "0.7.3")
     (source
      (origin
@@ -15035,21 +15035,18 @@ renderers (e.g. man pages or LaTeX).")
      `(#:python ,python-2
        #:phases
        (modify-phases %standard-phases
-         (add-before 'build
-             'patch-setup-py
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; Update requirements from dependecy==version
+         (add-before 'build 'patch-setup-py
+           (lambda _
+             ;; Update requirements from dependency==version
              ;; to dependency>=version
              (substitute* "setup.py"
                (("==") ">="))
              #t)))))
-    (home-page
-     "http://github.com/gabrielfalcao/steadymark")
-    (synopsis
-     "Markdown-based test runner for python. Good for github projects")
+    (home-page "https://github.com/gabrielfalcao/steadymark")
+    (synopsis "Markdown-based test runner for python")
     (description
-     "@code{Steadymark} allows documentation to be written in github-flavoured markdown.
-The documentation may contain snippets of code surrounded by python code blocks and
-@code{Steadymark} will find these snippets and run them, making sure that there are no old
-malfunctional examples in the documentation examples.")
+     "@code{Steadymark} allows documentation to be written in github-flavoured
+markdown.  The documentation may contain snippets of code surrounded by python
+code blocks and @code{Steadymark} will find these snippets and run them, making
+sure that there are no old malfunctional examples in the documentation examples.")
     (license license:expat)))

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply related	[relevance 62%]

* bug#27232: [PATCH] gnu: python-apsw: Build with all extensions.
@ 2017-06-04 12:49 65% Jelle Licht
    0 siblings, 1 reply; 200+ results
From: Jelle Licht @ 2017-06-04 12:49 UTC (permalink / raw)
  To: 27232

* gnu/packages/python.scm (python-apsw)[phases]: Replace build phase; add flag
  to build all extensions.
---
 gnu/packages/python.scm | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 7617490bd..4ce56d45c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -5725,6 +5725,10 @@ implementation of D-Bus.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (replace 'build
+           (lambda _
+             (zero?
+              (system* "python" "setup.py" "build" "--enable-all-extensions"))))
          (delete 'check)
          (add-after 'install 'check
            (lambda* (#:key inputs outputs #:allow-other-keys)
-- 
2.13.0

^ permalink raw reply related	[relevance 65%]

* bug#26524: [PATCH 1/3] gnu: python-sphinx-rtd-theme: Update to 0.2.4
  2017-04-15 18:59 91% bug#26524: Add conda and dependencies Frederick Muriithi
                   ` (2 preceding siblings ...)
  2017-05-28 15:32 65% ` bug#26524: [PATCH 1/5] gnu: Add python-sure Muriithi Frederick Muriuki
@ 2017-06-11  1:07 65% ` Muriithi Frederick Muriuki
  2017-06-11  1:07 65%   ` bug#26524: [PATCH 2/3] gnu: Add python2-rednose Muriithi Frederick Muriuki
  2017-06-11  1:07 62%   ` bug#26524: [PATCH 3/3] gnu: Add python2-httpretty Muriithi Frederick Muriuki
  3 siblings, 2 replies; 200+ results
From: Muriithi Frederick Muriuki @ 2017-06-11  1:07 UTC (permalink / raw)
  To: 26524

* gnu/packages/python.scm (python-sphinx-rtd-theme): Update to 0.2.4
[source]: Change release url and hash
---
 gnu/packages/python.scm | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 44adcba01..366c7ea4e 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3134,16 +3134,14 @@ sources.")
 (define-public python-sphinx-rtd-theme
   (package
     (name "python-sphinx-rtd-theme")
-    (version "0.1.6")
+    (version "0.2.4")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://pypi.python.org/packages/source/s/"
-                           "sphinx_rtd_theme/sphinx_rtd_theme-"
-                           version ".tar.gz"))
+       (uri (pypi-uri "sphinx_rtd_theme" version))
        (sha256
         (base32
-         "19nw3rn7awplcdrz63kg1njqwkbymfg9lwn7l2grhdyhyr2gaa8g"))))
+         "05rlhjzdyapr2w74jjs7mrm8hi69qskcr5vya9f9drpsys7lpxrd"))))
     (build-system python-build-system)
     (arguments '(#:tests? #f)) ; No tests.
     (propagated-inputs
-- 
2.13.0

^ permalink raw reply related	[relevance 65%]

* bug#26524: [PATCH 2/3] gnu: Add python2-rednose
  2017-06-11  1:07 65% ` bug#26524: [PATCH 1/3] gnu: python-sphinx-rtd-theme: Update to 0.2.4 Muriithi Frederick Muriuki
@ 2017-06-11  1:07 65%   ` Muriithi Frederick Muriuki
  2017-06-11  1:07 62%   ` bug#26524: [PATCH 3/3] gnu: Add python2-httpretty Muriithi Frederick Muriuki
  1 sibling, 0 replies; 200+ results
From: Muriithi Frederick Muriuki @ 2017-06-11  1:07 UTC (permalink / raw)
  To: 26524

* gnu/packages/python.scm (python2-rednose): New variable.
---
 gnu/packages/python.scm | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 366c7ea4e..f4c7a49b6 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -13134,6 +13134,9 @@ asynchronous messaging environments.")
 @command{nosetests} command of the Python Nose unit test framework.")
     (license license:bsd-3)))
 
+(define-public python2-rednose
+  (package-with-python2 python-rednose))
+
 (define-public python-flask-restplus
   (package
     (name "python-flask-restplus")
-- 
2.13.0

^ permalink raw reply related	[relevance 65%]

* bug#26524: [PATCH 3/3] gnu: Add python2-httpretty
  2017-06-11  1:07 65% ` bug#26524: [PATCH 1/3] gnu: python-sphinx-rtd-theme: Update to 0.2.4 Muriithi Frederick Muriuki
  2017-06-11  1:07 65%   ` bug#26524: [PATCH 2/3] gnu: Add python2-rednose Muriithi Frederick Muriuki
@ 2017-06-11  1:07 62%   ` Muriithi Frederick Muriuki
  1 sibling, 0 replies; 200+ results
From: Muriithi Frederick Muriuki @ 2017-06-11  1:07 UTC (permalink / raw)
  To: 26524

* gnu/packages/python.scm (python2-httpretty): New variable.
---
 gnu/packages/python.scm | 51 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index f4c7a49b6..b21297bd9 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15299,3 +15299,54 @@ from your Flask project.  It is a fork of Flask-Swagger.")
 
 (define-public python2-flasgger
   (package-with-python2 python-flasgger))
+
+(define-public python2-httpretty
+  (package
+    (name "python2-httpretty")
+    (version "0.8.14")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "httpretty" version))
+       (sha256
+        (base32
+         "0vlp5qkyw3pxwwsg7xmdcfh1csvypvaz4m6abida8s4xmjxpdhc3"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-sphinx-rtd-theme" ,python2-sphinx-rtd-theme)
+       ("python-sphinx" ,python2-sphinx)
+       ("python-coverage" ,python2-coverage)
+       ("python-tornado" ,python2-tornado)
+       ("python-urllib3" ,python2-urllib3)
+       ("python-sure" ,python2-sure)
+       ("python-steadymark" ,python2-steadymark)
+       ("python-requests" ,python2-requests)
+       ("python-rednose" ,python2-rednose)
+       ("python-nose-randomly" ,python2-nose-randomly)
+       ("python-misaka" ,python2-misaka)
+       ("python-pytest-httpbin" ,python2-pytest-httpbin)
+       ("python-nose" ,python2-nose)))
+    (arguments
+     `(#:tests? #f
+       ;; Requires mock>=1.3.0 which requires a more up-to-date
+       ;; python-pbr. After updating these trying to build the
+       ;; package leads to failures in python-flake8 and other
+       ;; packages. The cascade of updates and failures this
+       ;; leads to, seems to not be worth having the test run.
+       #:python ,python-2
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build
+             'patch-test-requirements
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Update requirements from dependecy==version
+             ;; to dependency>=version
+             (substitute* "development.txt"
+               (("==") ">="))
+             #t)))))
+    (home-page
+     "http://github.com/gabrielfalcao/httpretty")
+    (synopsis "HTTP client mock for Python")
+    (description "@code{httpretty} is a helper for faking web requests, inspired by Ruby's
+@code{fakeweb}.")
+    (license license:expat)))
-- 
2.13.0

^ permalink raw reply related	[relevance 62%]

* [bug#27347] [PATCH] gnu: Move contents of zip module into compression module.
@ 2017-06-12 19:07 28% Arun Isaac
  0 siblings, 0 replies; 200+ results
From: Arun Isaac @ 2017-06-12 19:07 UTC (permalink / raw)
  To: 27347

* gnu/packages/zip.scm (zip, unzip, zziplib, perl-zip): Move to...
* gnu/packages/compression.scm: ...here.
* gnu/packages/zip.scm: Delete file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Unregister deleted file.
* gnu/packages/{audio, avr, bioinformatics, busybox, cdrom, ci, compression,
docbook, documentation, fonts, fpga, game-development, games, gl, gnome,
gnuzilla, graphics, guile, haskell, image, java, kodi, ldc, libreoffice,
markup, maths, mc, monitoring, music, php, pretty-print, python, scheme,
smalltalk, statistics, synergy, tex, textutils, video, web-browsers, xml,
zip}.scm, guix/build-system/{ant, font}.scm, guix/{download, packages}.scm:
Adapt module import.
---
 gnu/local.mk                      |   1 -
 gnu/packages/audio.scm            |   1 -
 gnu/packages/avr.scm              |   4 +-
 gnu/packages/bioinformatics.scm   |   1 -
 gnu/packages/busybox.scm          |   4 +-
 gnu/packages/cdrom.scm            |   1 -
 gnu/packages/ci.scm               |   1 -
 gnu/packages/compression.scm      | 150 +++++++++++++++++++++++++++++++-
 gnu/packages/docbook.scm          |   3 +-
 gnu/packages/documentation.scm    |   3 +-
 gnu/packages/fonts.scm            |   3 +-
 gnu/packages/fpga.scm             |   1 -
 gnu/packages/game-development.scm |   1 -
 gnu/packages/games.scm            |   1 -
 gnu/packages/gl.scm               |   1 -
 gnu/packages/gnome.scm            |   1 -
 gnu/packages/gnuzilla.scm         |   1 -
 gnu/packages/graphics.scm         |   3 +-
 gnu/packages/guile.scm            |   1 -
 gnu/packages/haskell.scm          |   1 -
 gnu/packages/image.scm            |   1 -
 gnu/packages/java.scm             |   1 -
 gnu/packages/kodi.scm             |   3 +-
 gnu/packages/ldc.scm              |   3 +-
 gnu/packages/libreoffice.scm      |   3 +-
 gnu/packages/markup.scm           |   4 +-
 gnu/packages/maths.scm            |   1 -
 gnu/packages/mc.scm               |   2 +-
 gnu/packages/monitoring.scm       |   3 +-
 gnu/packages/music.scm            |   1 -
 gnu/packages/php.scm              |   1 -
 gnu/packages/pretty-print.scm     |   2 +-
 gnu/packages/python.scm           |   1 -
 gnu/packages/scheme.scm           |   1 -
 gnu/packages/smalltalk.scm        |   4 +-
 gnu/packages/statistics.scm       |   1 -
 gnu/packages/synergy.scm          |   1 -
 gnu/packages/tex.scm              |   1 -
 gnu/packages/textutils.scm        |   4 +-
 gnu/packages/video.scm            |   3 +-
 gnu/packages/web-browsers.scm     |   1 -
 gnu/packages/xml.scm              |   1 -
 gnu/packages/zip.scm              | 177 --------------------------------------
 guix/build-system/ant.scm         |   2 +-
 guix/build-system/font.scm        |   2 +-
 guix/download.scm                 |   2 +-
 guix/packages.scm                 |   2 +-
 47 files changed, 174 insertions(+), 237 deletions(-)
 delete mode 100644 gnu/packages/zip.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 892d1ee26..ac7425d7f 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -416,7 +416,6 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/xorg.scm				\
   %D%/packages/xfce.scm				\
   %D%/packages/zile.scm				\
-  %D%/packages/zip.scm				\
 						\
   %D%/services.scm				\
   %D%/services/admin.scm			\
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index dc668ce13..3e4b998b1 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -79,7 +79,6 @@
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages zip)
   #:use-module (srfi srfi-1))
 
 (define-public alsa-modular-synth
diff --git a/gnu/packages/avr.scm b/gnu/packages/avr.scm
index 916f7983f..aaa042804 100644
--- a/gnu/packages/avr.scm
+++ b/gnu/packages/avr.scm
@@ -27,11 +27,11 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages cross-base)
   #:use-module (gnu packages flashing-tools)
   #:use-module (gnu packages gcc)
-  #:use-module (gnu packages vim)
-  #:use-module (gnu packages zip))
+  #:use-module (gnu packages vim))
 
 (define-public avr-binutils
   (package
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index b47f13693..b18da56ed 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -96,7 +96,6 @@
   #:use-module (gnu packages web)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages zip)
   #:use-module (srfi srfi-1))
 
 (define-public r-ape
diff --git a/gnu/packages/busybox.scm b/gnu/packages/busybox.scm
index 988154eed..096e26ca0 100644
--- a/gnu/packages/busybox.scm
+++ b/gnu/packages/busybox.scm
@@ -24,8 +24,8 @@
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
   #:use-module (gnu packages admin)
-  #:use-module (gnu packages perl)
-  #:use-module (gnu packages zip))
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages perl))
 
 (define-public busybox
   (package
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 15329b310..704e8ad36 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -37,7 +37,6 @@
   #:use-module (gnu packages audio)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages compression)
-  #:use-module (gnu packages zip)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gettext)
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index c26d02f17..e2cb712bf 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -39,7 +39,6 @@
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xml)
-  #:use-module (gnu packages zip)
   #:use-module (guix build-system gnu))
 
 (define-public hydra
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 3742ff586..4a8d4fbe9 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -54,7 +54,6 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages valgrind)
-  #:use-module (gnu packages zip)
   #:use-module (ice-9 match)
   #:use-module ((srfi srfi-1) #:select (last)))
 
@@ -1337,3 +1336,152 @@ as is the decompression of data compressed in this manner.  Data compressed by
 other implementations will only be decompressed by two threads: one performing
 the actual decompression, the other input and output.")
     (license (package-license zstd))))
+
+(define-public zip
+  (package
+    (name "zip")
+    (version "3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/infozip"
+                           "/Zip%203.x%20%28latest%29/3.0/zip30.tar.gz"))
+       (sha256
+        (base32
+         "0sb3h3067pzf3a7mlxn1hikpcjrsvycjcnj9hl9b1c3ykcgvps7h"))))
+    (build-system gnu-build-system)
+    (inputs `(("bzip2" ,bzip2)))
+    (arguments
+     `(#:tests? #f ; no test target
+       #:make-flags (let ((out (assoc-ref %outputs "out")))
+                      (list "-f" "unix/Makefile"
+                            (string-append "prefix=" out)
+                            (string-append "MANDIR=" out "/share/man/man1")))
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (srfi srfi-1))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'build
+           (lambda* (#:key (make-flags '()) #:allow-other-keys)
+             (zero? (apply system* "make" "generic_gcc" make-flags))))
+         (delete 'configure))))
+    (home-page "http://www.info-zip.org/Zip.html")
+    (synopsis "Compression and file packing utility")
+    (description
+     "Zip is a compression and file packaging/archive utility.  Zip is useful
+for packaging a set of files for distribution, for archiving files, and for
+saving disk space by temporarily compressing unused files or directories.
+Zip puts one or more compressed files into a single ZIP archive, along with
+information about the files (name, path, date, time of last modification,
+protection, and check information to verify file integrity).  An entire
+directory structure can be packed into a ZIP archive with a single command.
+
+Zip has one compression method (deflation) and can also store files without
+compression.  Zip automatically chooses the better of the two for each file.
+Compression ratios of 2:1 to 3:1 are common for text files.")
+    (license (license:non-copyleft "file://LICENSE"
+                                   "See LICENSE in the distribution."))))
+
+(define-public unzip
+  (package (inherit zip)
+    (name "unzip")
+    (version "6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/infozip"
+                           "/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip60.tar.gz"))
+       (sha256
+        (base32
+         "0dxx11knh3nk95p2gg2ak777dd11pr7jx5das2g49l262scrcv83"))
+       (patches (search-patches "unzip-CVE-2014-8139.patch"
+                                "unzip-CVE-2014-8140.patch"
+                                "unzip-CVE-2014-8141.patch"
+                                "unzip-CVE-2014-9636.patch"
+                                "unzip-CVE-2015-7696.patch"
+                                "unzip-CVE-2015-7697.patch"
+                                "unzip-allow-greater-hostver-values.patch"
+                                "unzip-initialize-symlink-flag.patch"
+                                "unzip-remove-build-date.patch"
+                                "unzip-attribs-overflow.patch"
+                                "unzip-overflow-on-invalid-input.patch"
+                                "unzip-format-secure.patch"
+                                "unzip-overflow-long-fsize.patch"))))
+    (build-system gnu-build-system)
+    ;; no inputs; bzip2 is not supported, since not compiled with BZ_NO_STDIO
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (delete 'configure)
+                  (replace 'build
+                    (lambda* (#:key make-flags #:allow-other-keys)
+                      (zero? (apply system* "make"
+                                    `("-j" ,(number->string
+                                             (parallel-job-count))
+                                      ,@make-flags
+                                      "generic_gcc"))))))
+       #:make-flags (list "-f" "unix/Makefile"
+                          (string-append "prefix=" %output)
+                          (string-append "MANDIR=" %output "/share/man/man1"))))
+    (home-page "http://www.info-zip.org/UnZip.html")
+    (synopsis "Decompression and file extraction utility")
+    (description
+     "UnZip is an extraction utility for archives compressed in .zip format,
+also called \"zipfiles\".
+
+UnZip lists, tests, or extracts files from a .zip archive.  The default
+behaviour (with no options) is to extract into the current directory, and
+subdirectories below it, all files from the specified zipfile.  UnZip
+recreates the stored directory structure by default.")
+    (license (license:non-copyleft "file://LICENSE"
+                                   "See LICENSE in the distribution."))))
+
+(define-public zziplib
+  (package
+    (name "zziplib")
+    (version "0.13.62")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/zziplib/zziplib13/"
+                           version "/zziplib-"
+                           version ".tar.bz2"))
+       (sha256
+        (base32
+         "0nsjqxw017hiyp524p9316283jlf5piixc1091gkimhz38zh7f51"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("zlib" ,zlib)))
+    (native-inputs `(("perl" ,perl)     ; for the documentation
+                     ("pkg-config" ,pkg-config)
+                     ;; for the documentation; Python 3 not supported,
+                     ;; http://forums.gentoo.org/viewtopic-t-863161-start-0.html
+                     ("python" ,python-2)
+                     ("zip" ,zip))) ; to create test files
+    (arguments
+     `(#:parallel-tests? #f)) ; since test files are created on the fly
+    (home-page "http://zziplib.sourceforge.net/")
+    (synopsis "Library for accessing zip files")
+    (description
+     "ZZipLib is a library based on zlib for accessing zip files.")
+    (license license:lgpl2.0+)))
+
+(define-public perl-zip
+  (package
+    (name "perl-zip")
+    (version "1.59")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/A/AD/ADAMK/Archive-Zip-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "0m31qlppg65vh32pwxkwjby02q70abx49d2yk6vfd4585fqb27cx"))))
+    (build-system perl-build-system)
+    (synopsis  "Provides an interface to ZIP archive files")
+    (description "The Archive::Zip module allows a Perl program to create,
+manipulate, read, and write Zip archive files.")
+    (home-page "http://search.cpan.org/~adamk/Archive-Zip-1.30/")
+    (license license:perl-license)))
diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm
index 067ad1c3b..7a309b0bc 100644
--- a/gnu/packages/docbook.scm
+++ b/gnu/packages/docbook.scm
@@ -31,8 +31,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system trivial)
-  #:use-module (guix build-system python)
-  #:autoload   (gnu packages zip) (unzip))
+  #:use-module (guix build-system python))
 
 (define-public docbook-xml
   (package
diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm
index ba8eea393..5d3d6f170 100644
--- a/gnu/packages/documentation.scm
+++ b/gnu/packages/documentation.scm
@@ -37,8 +37,7 @@
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages perl)
-  #:use-module (gnu packages xml)
-  #:autoload   (gnu packages zip) (unzip))
+  #:use-module (gnu packages xml))
 
 (define-public asciidoc
   (package
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 59e60dc29..025f9c2aa 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -53,8 +53,7 @@
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
-  #:use-module (gnu packages xorg)
-  #:use-module (gnu packages zip))
+  #:use-module (gnu packages xorg))
 
 (define-public font-inconsolata
   (package
diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm
index 0b98e2db0..c371b1981 100644
--- a/gnu/packages/fpga.scm
+++ b/gnu/packages/fpga.scm
@@ -35,7 +35,6 @@
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages linux)
-  #:use-module (gnu packages zip)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gperf)
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 5253d0c91..2a780b447 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -50,7 +50,6 @@
   #:use-module (gnu packages qt)
   #:use-module (gnu packages video)
   #:use-module (gnu packages compression)
-  #:use-module (gnu packages zip)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages xorg)
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 9bbf5d022..9bcf8721a 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -110,7 +110,6 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages linux)
-  #:use-module (gnu packages zip)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages lua)
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 745780930..08f6187f8 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -44,7 +44,6 @@
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages zip)
   #:use-module (guix download)
   #:use-module (guix build utils)
   #:use-module (guix build-system gnu)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 1080ddfeb..3aedfb5b4 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -129,7 +129,6 @@
   #:use-module (gnu packages readline)
   #:use-module (gnu packages fonts)
   #:use-module (gnu packages qemu)
-  #:use-module (gnu packages zip)
   #:use-module (gnu packages speech)
   #:use-module (srfi srfi-1))
 
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 8d03f0e00..5ecb58bcf 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -58,7 +58,6 @@
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages video)
   #:use-module (gnu packages xdisorg)
-  #:use-module (gnu packages zip)
   #:use-module (gnu packages readline))
 
 (define-public mozjs
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 4fa403324..6c813e8a3 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -62,8 +62,7 @@
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages video)
   #:use-module (gnu packages xml)
-  #:use-module (gnu packages xorg)
-  #:use-module (gnu packages zip))
+  #:use-module (gnu packages xorg))
 
 (define-public blender
   (package
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index b57f4c3b6..68bba06ce 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -62,7 +62,6 @@
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages zip)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 0bafdf6f6..72ae20d93 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -46,7 +46,6 @@
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages zip)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system haskell)
   #:use-module (guix download)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index abac17d6d..72669ea6d 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -55,7 +55,6 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages zip)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 9a129b8d9..7688ca740 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -58,7 +58,6 @@
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages zip)
   #:use-module (gnu packages texinfo)
   #:use-module ((srfi srfi-1) #:select (fold alist-delete))
   #:use-module (srfi srfi-11)
diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm
index 061d5f1b2..c8a65af79 100644
--- a/gnu/packages/kodi.scm
+++ b/gnu/packages/kodi.scm
@@ -68,8 +68,7 @@
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages assembly)
-  #:use-module (gnu packages zip))
+  #:use-module (gnu packages assembly))
 
 (define-public crossguid
   (let ((commit "8f399e8bd4252be9952f3dfa8199924cc8487ca4"))
diff --git a/gnu/packages/ldc.scm b/gnu/packages/ldc.scm
index 59036a531..7f9dde746 100644
--- a/gnu/packages/ldc.scm
+++ b/gnu/packages/ldc.scm
@@ -35,8 +35,7 @@
   #:use-module (gnu packages libedit)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages python)
-  #:use-module (gnu packages textutils)
-  #:use-module (gnu packages zip))
+  #:use-module (gnu packages textutils))
 
 (define-public rdmd
   (package
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index 809e28e27..bdbf3f850 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -65,8 +65,7 @@
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages xml)
-  #:use-module (gnu packages xorg)
-  #:use-module (gnu packages zip))
+  #:use-module (gnu packages xorg))
 
 (define-public ixion
   (package
diff --git a/gnu/packages/markup.scm b/gnu/packages/markup.scm
index cd883b23e..4afe8c3c0 100644
--- a/gnu/packages/markup.scm
+++ b/gnu/packages/markup.scm
@@ -26,10 +26,10 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
   #:use-module (guix build-system cmake)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages python)
-  #:use-module (gnu packages web)
-  #:use-module (gnu packages zip))
+  #:use-module (gnu packages web))
 
 (define-public hoedown
   (package
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 0a43ad465..8ad395639 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -96,7 +96,6 @@
   #:use-module (gnu packages tls)
   #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages xml)
-  #:use-module (gnu packages zip)
   #:use-module (srfi srfi-1))
 
 (define-public aris
diff --git a/gnu/packages/mc.scm b/gnu/packages/mc.scm
index bae12439f..0770304a2 100644
--- a/gnu/packages/mc.scm
+++ b/gnu/packages/mc.scm
@@ -31,7 +31,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages check)
   #:use-module (gnu packages perl)
-  #:use-module (gnu packages zip))
+  #:use-module (gnu packages compression))
 
 (define-public mc
   (package
diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm
index ac80a6bb9..c136265c5 100644
--- a/gnu/packages/monitoring.scm
+++ b/gnu/packages/monitoring.scm
@@ -27,8 +27,7 @@
   #:use-module (gnu packages gd)
   #:use-module (gnu packages image)
   #:use-module (gnu packages mail)
-  #:use-module (gnu packages perl)
-  #:use-module (gnu packages zip))
+  #:use-module (gnu packages perl))
 
 (define-public nagios
   (package
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 186dc276b..b40bbb002 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -105,7 +105,6 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages xiph)
-  #:use-module (gnu packages zip)
   #:use-module ((srfi srfi-1) #:select (last)))
 
 (define-public aria-maestosa
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index b6f64bc0e..7d569eef3 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -44,7 +44,6 @@
   #:use-module (gnu packages web)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages zip)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index a11c34330..8cee89dd4 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -37,7 +37,7 @@
   #:use-module (gnu packages lua)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages zip))
+  #:use-module (gnu packages compression))
 
 (define-public a2ps
   (package
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 03e6bb656..f567a4bf9 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -109,7 +109,6 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages xdisorg)
-  #:use-module (gnu packages zip)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages bdw-gc)
   #:use-module (guix packages)
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index eacfd733d..bcb715327 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -59,7 +59,6 @@
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages gl)
-  #:use-module (gnu packages zip)
   #:use-module (ice-9 match))
 
 (define (mit-scheme-source-directory system version)
diff --git a/gnu/packages/smalltalk.scm b/gnu/packages/smalltalk.scm
index 675ca0ce5..f4a50ded2 100644
--- a/gnu/packages/smalltalk.scm
+++ b/gnu/packages/smalltalk.scm
@@ -28,6 +28,7 @@
   #:use-module (gnu packages audio)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
@@ -36,8 +37,7 @@
   #:use-module (gnu packages linux)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pulseaudio)
-  #:use-module (gnu packages xorg)
-  #:use-module (gnu packages zip))
+  #:use-module (gnu packages xorg))
 
 (define-public smalltalk
   (package
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index ae44bfb01..cb2dbca75 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -58,7 +58,6 @@
   #:use-module (gnu packages web)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages zip)
   #:use-module (srfi srfi-1))
 
 
diff --git a/gnu/packages/synergy.scm b/gnu/packages/synergy.scm
index b971cbe3a..1627d8443 100644
--- a/gnu/packages/synergy.scm
+++ b/gnu/packages/synergy.scm
@@ -28,7 +28,6 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages zip)
   #:use-module (srfi srfi-26))
 
 (define-public synergy
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 7839e16b2..879eb0142 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -56,7 +56,6 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages xdisorg)
-  #:use-module (gnu packages zip)
   #:autoload   (gnu packages texinfo) (texinfo)
   #:use-module (ice-9 ftw)
   #:use-module (srfi srfi-1))
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 7bc2fc47f..152d08059 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -38,14 +38,14 @@
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages java)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages readline)
-  #:use-module (gnu packages slang)
-  #:use-module (gnu packages zip))
+  #:use-module (gnu packages slang))
 
 (define-public recode
   (package
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 1dcb0aa8e..7112e53bc 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -106,8 +106,7 @@
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages assembly)
-  #:use-module (gnu packages zip))
+  #:use-module (gnu packages assembly))
 
 (define-public aalib
   (package
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index a10b1367e..146f3a1fa 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -39,7 +39,6 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages zip)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python))
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 9635413b8..4f9e15a98 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -40,7 +40,6 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages web)
-  #:use-module (gnu packages zip)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
diff --git a/gnu/packages/zip.scm b/gnu/packages/zip.scm
deleted file mode 100644
index 8feb4fea2..000000000
--- a/gnu/packages/zip.scm
+++ /dev/null
@@ -1,177 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
-;;;
-;;; This file is part of GNU Guix.
-;;;
-;;; GNU Guix is free software; you can redistribute it and/or modify it
-;;; under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 3 of the License, or (at
-;;; your option) any later version.
-;;;
-;;; GNU Guix is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
-
-(define-module (gnu packages zip)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu)
-  #:use-module (gnu packages)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages perl)
-  #:use-module (guix build-system perl)
-  #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages python))
-
-(define-public zip
-  (package
-    (name "zip")
-    (version "3.0")
-    (source
-     (origin
-      (method url-fetch)
-      (uri (string-append "mirror://sourceforge/infozip/Zip%203.x%20%28latest%29/3.0/zip30.tar.gz"))
-      (sha256
-       (base32
-        "0sb3h3067pzf3a7mlxn1hikpcjrsvycjcnj9hl9b1c3ykcgvps7h"))))
-    (build-system gnu-build-system)
-    (inputs `(("bzip2" ,bzip2)))
-    (arguments
-     `(#:tests? #f ; no test target
-       #:make-flags (let ((out (assoc-ref %outputs "out")))
-                      (list "-f" "unix/Makefile"
-                            (string-append "prefix=" out)
-                            (string-append "MANDIR=" out "/share/man/man1")))
-       #:modules ((guix build gnu-build-system)
-                  (guix build utils)
-                  (srfi srfi-1))
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'build
-                  (lambda* (#:key (make-flags '()) #:allow-other-keys)
-                    (zero? (apply system* "make" "generic_gcc" make-flags))))
-         (delete 'configure))))
-    (home-page "http://www.info-zip.org/Zip.html")
-    (synopsis "Compression and file packing utility")
-    (description
-     "Zip is a compression and file packaging/archive utility.  Zip is useful
-for packaging a set of files for distribution, for archiving files, and for
-saving disk space by temporarily compressing unused files or directories.
-Zip puts one or more compressed files into a single ZIP archive, along with
-information about the files (name, path, date, time of last modification,
-protection, and check information to verify file integrity).  An entire
-directory structure can be packed into a ZIP archive with a single command.
-
-Zip has one compression method (deflation) and can also store files without
-compression.  Zip automatically chooses the better of the two for each file.
-Compression ratios of 2:1 to 3:1 are common for text files.")
-  (license (license:non-copyleft "file://LICENSE"
-                               "See LICENSE in the distribution."))))
-
-(define-public unzip
-  (package (inherit zip)
-    (name "unzip")
-    (version "6.0")
-    (source
-     (origin
-      (method url-fetch)
-      (uri (string-append "mirror://sourceforge/infozip/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip60.tar.gz"))
-      (sha256
-       (base32
-        "0dxx11knh3nk95p2gg2ak777dd11pr7jx5das2g49l262scrcv83"))
-      (patches (search-patches "unzip-CVE-2014-8139.patch"
-                               "unzip-CVE-2014-8140.patch"
-                               "unzip-CVE-2014-8141.patch"
-                               "unzip-CVE-2014-9636.patch"
-                               "unzip-CVE-2015-7696.patch"
-                               "unzip-CVE-2015-7697.patch"
-                               "unzip-allow-greater-hostver-values.patch"
-                               "unzip-initialize-symlink-flag.patch"
-                               "unzip-remove-build-date.patch"
-                               "unzip-attribs-overflow.patch"
-                               "unzip-overflow-on-invalid-input.patch"
-                               "unzip-format-secure.patch"
-                               "unzip-overflow-long-fsize.patch"))))
-    (build-system gnu-build-system)
-    ;; no inputs; bzip2 is not supported, since not compiled with BZ_NO_STDIO
-    (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (delete 'configure)
-                  (replace 'build
-                           (lambda* (#:key make-flags #:allow-other-keys)
-                             (zero? (apply system* "make"
-                                           `("-j" ,(number->string
-                                                    (parallel-job-count))
-                                             ,@make-flags
-                                             "generic_gcc"))))))
-       #:make-flags (list "-f" "unix/Makefile"
-                          (string-append "prefix=" %output)
-                          (string-append "MANDIR=" %output "/share/man/man1"))))
-    (home-page "http://www.info-zip.org/UnZip.html")
-    (synopsis "Decompression and file extraction utility")
-    (description
-     "UnZip is an extraction utility for archives compressed in .zip format,
-also called \"zipfiles\".
-
-UnZip lists, tests, or extracts files from a .zip archive.  The default
-behaviour (with no options) is to extract into the current directory, and
-subdirectories below it, all files from the specified zipfile.  UnZip
-recreates the stored directory structure by default.")
-  (license (license:non-copyleft "file://LICENSE"
-                               "See LICENSE in the distribution."))))
-
-(define-public zziplib
-  (package
-    (name "zziplib")
-    (version "0.13.62")
-    (source
-     (origin
-      (method url-fetch)
-      (uri (string-append "mirror://sourceforge/zziplib/zziplib13/"
-                          version "/zziplib-"
-                          version ".tar.bz2"))
-      (sha256
-       (base32
-        "0nsjqxw017hiyp524p9316283jlf5piixc1091gkimhz38zh7f51"))))
-    (build-system gnu-build-system)
-    (inputs
-     `(("zlib" ,zlib)))
-    (native-inputs `(("perl" ,perl)     ; for the documentation
-                     ("pkg-config" ,pkg-config)
-                     ("python" ,python-2) ; for the documentation; Python 3 not supported,
-                                        ; http://forums.gentoo.org/viewtopic-t-863161-start-0.html
-                     ("zip" ,zip))) ; to create test files
-    (arguments
-     `(#:parallel-tests? #f)) ; since test files are created on the fly
-    (home-page "http://zziplib.sourceforge.net/")
-    (synopsis "Library for accessing zip files")
-    (description
-     "ZZipLib is a library based on zlib for accessing zip files.")
-    (license license:lgpl2.0+)))
-
-
-(define-public perl-zip
-  (package
-    (name "perl-zip")
-    (version "1.59")
-    (source 
-     (origin
-       (method url-fetch)
-       (uri (string-append
-             "mirror://cpan/authors/id/A/AD/ADAMK/Archive-Zip-" 
-             version ".tar.gz"))
-       (sha256
-        (base32
-         "0m31qlppg65vh32pwxkwjby02q70abx49d2yk6vfd4585fqb27cx"))))
-    (build-system perl-build-system)
-    (synopsis  "Provides an interface to ZIP archive files")
-    (description "The Archive::Zip module allows a Perl program to create,
-manipulate, read, and write Zip archive files.")
-    (home-page "http://search.cpan.org/~adamk/Archive-Zip-1.30/")
-    (license license:perl-license)))
diff --git a/guix/build-system/ant.scm b/guix/build-system/ant.scm
index 228b4e60d..e0870a605 100644
--- a/guix/build-system/ant.scm
+++ b/guix/build-system/ant.scm
@@ -58,7 +58,7 @@
 (define (default-zip)
   "Return the default ZIP package."
   ;; Lazily resolve the binding to avoid a circular dependency.
-  (let ((zip-mod (resolve-interface '(gnu packages zip))))
+  (let ((zip-mod (resolve-interface '(gnu packages compression))))
     (module-ref zip-mod 'zip)))
 
 (define* (lower name
diff --git a/guix/build-system/font.scm b/guix/build-system/font.scm
index f448c302c..f75789c1c 100644
--- a/guix/build-system/font.scm
+++ b/guix/build-system/font.scm
@@ -56,7 +56,7 @@
                          '())
                    ,@inputs
                    ,(list "tar" (module-ref (resolve-interface '(gnu packages base)) 'tar))
-                   ,(list "unzip" (module-ref (resolve-interface '(gnu packages zip)) 'unzip))
+                   ,(list "unzip" (module-ref (resolve-interface '(gnu packages compression)) 'unzip))
                    ,@(let ((compression (resolve-interface '(gnu packages compression))))
                        (map (match-lambda
                               ((name package)
diff --git a/guix/download.scm b/guix/download.scm
index bed1f502c..c1da51547 100644
--- a/guix/download.scm
+++ b/guix/download.scm
@@ -528,7 +528,7 @@ own.  This helper makes it easier to deal with \"zip bombs\"."
       (_
        (basename url))))
   (define unzip
-    (module-ref (resolve-interface '(gnu packages zip)) 'unzip))
+    (module-ref (resolve-interface '(gnu packages compression)) 'unzip))
 
   (mlet %store-monad ((drv (url-fetch url hash-algo hash
                                       (string-append "zipbomb-"
diff --git a/guix/packages.scm b/guix/packages.scm
index f4967f98f..2e02b7356 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -401,7 +401,7 @@ object."
       ("bzip2" ,(ref '(gnu packages compression) 'bzip2))
       ("gzip"  ,(ref '(gnu packages compression) 'gzip))
       ("lzip"  ,(ref '(gnu packages compression) 'lzip))
-      ("unzip" ,(ref '(gnu packages zip) 'unzip))
+      ("unzip" ,(ref '(gnu packages compression) 'unzip))
       ("patch" ,(ref '(gnu packages base) 'patch))
       ("locales" ,(ref '(gnu packages base) 'glibc-utf8-locales)))))
 
-- 
2.12.2

^ permalink raw reply related	[relevance 28%]

* [bug#27381] [PATCH 1/2] gnu: python-pbr-minimal: Update to 3.0.1
  @ 2017-06-15 15:39 65% ` Muriithi Frederick Muriuki
  2017-06-15 15:39 65% ` [bug#27380] [PATCH 2/2] gnu: python-mock: Update to 2.0.0 Muriithi Frederick Muriuki
  1 sibling, 0 replies; 200+ results
From: Muriithi Frederick Muriuki @ 2017-06-15 15:39 UTC (permalink / raw)
  To: 27381

* gnu/packages/python.scm (python-pbr-minimal): Update to 3.0.1
[source]: Update hash and remove patch.
---
 gnu/packages/python.scm | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 352a5f333..1427d92ab 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -2190,15 +2190,14 @@ protocol.")
 (define python-pbr-minimal
   (package
     (name "python-pbr-minimal")
-    (version "1.10.0")
+    (version "3.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pbr" version))
        (sha256
         (base32
-         "177kd9kbv1hvf2ban7l3x9ymzbi1md4hkaymwbgnz7ihf312hr0q"))
-       (patches (search-patches "python-pbr-fix-man-page-support.patch"))))
+         "14fs5acnalnb3h62s7q7av239j541fk0n0z0lawh4h09b1s93s6p"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f))
-- 
2.13.1

^ permalink raw reply related	[relevance 65%]

* [bug#27380] [PATCH 2/2] gnu: python-mock: Update to 2.0.0
    2017-06-15 15:39 65% ` [bug#27381] [PATCH 1/2] gnu: python-pbr-minimal: Update to 3.0.1 Muriithi Frederick Muriuki
@ 2017-06-15 15:39 65% ` Muriithi Frederick Muriuki
  1 sibling, 0 replies; 200+ results
From: Muriithi Frederick Muriuki @ 2017-06-15 15:39 UTC (permalink / raw)
  To: 27380

* gnu/packages/python.scm (python-mock): Update to 2.0.0
[source]: Update hash.
[native-inputs]: Add python-pbr-minimal as a dependency.
---
 gnu/packages/python.scm | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 1427d92ab..8e18173a0 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -900,14 +900,16 @@ API for locking files.")
 (define-public python-mock
   (package
     (name "python-mock")
-    (version "1.0.1")
+    (version "2.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "mock" version))
        (sha256
         (base32
-         "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq"))))
+         "1flbpksir5sqrvq2z0dp8sl4bzbadg21sj4d42w3klpdfvgvcn5i"))))
+    (native-inputs
+     `(("python-pbr-minimal" ,python-pbr-minimal)))
     (build-system python-build-system)
     (arguments '(#:test-target "check"))
     (home-page "https://github.com/testing-cabal/mock")
-- 
2.13.1

^ permalink raw reply related	[relevance 65%]

* [bug#27400] [PATCH] gnu: Add python-apache-libcloud.
@ 2017-06-16 21:21 60% Danny Milosavljevic
  0 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-06-16 21:21 UTC (permalink / raw)
  To: 27400

* gnu/packages/python.scm (python-apache-libcloud, python2-apache-libcloud):
New variables.
---
 gnu/packages/python.scm | 59 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 59 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 352a5f333..5807f046e 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -98,6 +98,7 @@
   #:use-module (gnu packages readline)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages shells)
+  #:use-module (gnu packages ssh)
   #:use-module (gnu packages statistics)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages texinfo)
@@ -15324,3 +15325,61 @@ validating Swagger API specifications.")
 
 (define-public python2-swagger-spec-validator
   (package-with-python2 python-swagger-spec-validator))
+
+(define-public python-apache-libcloud
+  (package
+    (name "python-apache-libcloud")
+    (version "2.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "apache-libcloud" version))
+        (sha256
+          (base32
+            "1a71z02ckcxld72k4qgmdnkjan52c4wczncs3p2mp5yafh7dsan7"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-ssh
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "libcloud/compute/ssh.py"
+               (("'ssh'") (string-append "'" (assoc-ref inputs "openssh")
+                                         "'")))
+             #t))
+         (add-after 'unpack 'patch-tests
+           (lambda _
+             (substitute* "./libcloud/test/test_file_fixtures.py"
+               ;; See <https://issues.apache.org/jira/browse/LIBCLOUD-923>.
+               (("def _ascii") "def _raw_data(self, method, url, body, headers):
+        return (httplib.OK,
+                \"1234abcd\",
+                {\"test\": \"value\"},
+                httplib.responses[httplib.OK])
+    def _ascii"))
+             (substitute* "libcloud/test/compute/test_ssh_client.py"
+               (("class ShellOutSSHClientTests")
+                "@unittest.skip(\"Guix container doesn't have ssh service\")
+class ShellOutSSHClientTests")
+               ;; See <https://issues.apache.org/jira/browse/LIBCLOUD-924>.
+               (("'.xf0.x90.x8d.x88'") "b'\\xF0\\x90\\x8D\\x88'")
+               (("'.xF0', '.x90', '.x8D', '.x88'")
+                "b'\\xF0', b'\\x90', b'\\x8D', b'\\x88'"))
+             #t)))))
+    (inputs
+     `(("openssh" ,openssh)))
+    (propagated-inputs
+     `(("python-paramiko" ,python-paramiko)
+       ("python-requests" ,python-requests)))
+    (native-inputs
+     `(("python-lockfile" ,python-lockfile)
+       ("python-mock" ,python-mock)
+       ("python-requests-mock" ,python-requests-mock)))
+    (home-page "https://libcloud.apache.org/")
+    (synopsis "Unified Cloud API")
+    (description "@code{libcloud} is a Python library for interacting with
+many of the popular cloud service providers using a unified API.")
+    (license license:asl2.0)))
+
+(define-public python2-apache-libcloud
+  (package-with-python2 python-apache-libcloud))

^ permalink raw reply related	[relevance 60%]

* [bug#27423] [PATCH] gnu: Add python2-xenon
  @ 2017-06-18 18:53 63% ` Muriithi Frederick Muriuki
  2017-06-24  3:56 63% ` [bug#27423] [PATCH] gnu: Add python-xenon Muriithi Frederick Muriuki
  1 sibling, 0 replies; 200+ results
From: Muriithi Frederick Muriuki @ 2017-06-18 18:53 UTC (permalink / raw)
  To: 27423

* gnu/packages/python.scm (python2-xenon): New variable.
---
 gnu/packages/python.scm | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index c07bbae3e..e84b71701 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15406,3 +15406,44 @@ window memory map manager.")
 
 (define-public python2-smmap2
   (package-with-python2 python-smmap2))
+
+(define-public python2-xenon
+  (package
+    (name "python2-xenon")
+    (version "0.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "xenon" version))
+       (sha256
+        (base32
+         "14kby2y48vp3sgwxqlm5d5789yibqwb1qli5fwcmdqg3iayrbklc"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pyyaml" ,python2-pyyaml)
+       ("python-radon" ,python2-radon)
+       ("python-requests" ,python2-requests)
+       ("python-flake8" ,python2-flake8)
+       ("python2-httpretty" ,python2-httpretty)
+       ("python-tox" ,python2-tox)))
+    (arguments
+     `(#:python ,python-2
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'patch-test-requirements
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Update requirements from dependecy==version
+             ;; to dependency>=version
+             (substitute* "requirements.txt"
+               (("==") ">=")
+               ((",<1.5.0") ""))
+             #t)))))
+    (home-page "https://xenon.readthedocs.org/")
+    (synopsis
+     "Monitor code metrics for Python on your CI server")
+    (description
+     "@code{Xenon} is a monitoring tool based on Radon.  It monitors code’s complexity.
+Ideally, @code{xenon} is run every time code is committed.  Through command line options,
+various thresholds can be set for the complexity of code.  It will fail (i.e.  it will
+exit with a non-zero exit code) when any of these requirements is not met.")
+    (license license:expat)))
-- 
2.13.1

^ permalink raw reply related	[relevance 63%]

* [bug#27440] [PATCH 1/4] gnu: python: Add python2-pyopengl.
  @ 2017-06-21 11:05 65% ` Rutger Helling
    2017-06-21 11:05 65% ` [bug#27440] [PATCH 2/4] gnu: python: Add python-rencode Rutger Helling
  2017-06-21 11:06 65% ` [bug#27440] [PATCH 3/4] gnu: python: Add python2-rencode Rutger Helling
  2 siblings, 1 reply; 200+ results
From: Rutger Helling @ 2017-06-21 11:05 UTC (permalink / raw)
  To: 27440

* gnu/packages/python.scm (python2-pyopengl): New variable.
---
  gnu/packages/python.scm | 23 +++++++++++++++++++++++
  1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 775cab694..95723c9de 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -40,6 +40,7 @@
  ;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
  ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
  ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
+;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
  ;;;
  ;;; This file is part of GNU Guix.
  ;;;
@@ -15423,4 +15424,24 @@ window memory map manager.")

  (define-public python2-smmap2
    (package-with-python2 python-smmap2))
+
+(define-public python2-pyopengl
+  (package
+   (name "python2-pyopengl")
+   (version "3.1.0")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (pypi-uri "PyOpenGL" version))
+     (sha256
+      (base32
+       "1byxjj6a8rwzhxhjqlc588zdad2qwxdd7vlam2653ylll31waiwv"))))
+   (arguments
+     `(#:python ,python-2))
+   (build-system python-build-system)
+   (home-page "http://pyopengl.sourceforge.net")
+   (synopsis "Standard OpenGL bindings for Python")
+   (description
+         "PyOpenGL is the most common cross platform Python binding to 
OpenGL
+and related APIs.  The binding is created using the standard ctypes 
library.")
+   (license license:bsd-3)))
-- 
2.13.1

^ permalink raw reply related	[relevance 65%]

* [bug#27440] [PATCH 2/4] gnu: python: Add python-rencode.
    2017-06-21 11:05 65% ` [bug#27440] [PATCH 1/4] gnu: python: Add python2-pyopengl Rutger Helling
@ 2017-06-21 11:05 65% ` Rutger Helling
  2017-06-21 11:06 65% ` [bug#27440] [PATCH 3/4] gnu: python: Add python2-rencode Rutger Helling
  2 siblings, 0 replies; 200+ results
From: Rutger Helling @ 2017-06-21 11:05 UTC (permalink / raw)
  To: 27440

* gnu/packages/python.scm (python-rencode): New variable.
---
  gnu/packages/python.scm | 24 ++++++++++++++++++++++++
  1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 95723c9de..9c1485854 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15446,3 +15446,26 @@ window memory map manager.")
  and related APIs.  The binding is created using the standard ctypes 
library.")
     (license license:bsd-3)))
+
+(define-public python-rencode
+  (package
+   (name "python-rencode")
+   (version "1.0.3")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (pypi-uri "rencode" version))
+     (sha256
+      (base32
+       "08if5yax1xn5yfp8p3765ccjmfcv9di7i4m5jckgnwvdsgznwkbj"))))
+   (build-system python-build-system)
+   (native-inputs `(("pkg-config" ,pkg-config)
+                   ("python-cython", python-cython)))
+   (home-page "https://github.com/aresch/rencode")
+   (synopsis "For complex, heterogeneous data structures with many 
small elements")
+   (description
+         "The rencode module is similar to bencode from the BitTorrent 
project.
+For complex, heterogeneous data structures with many small elements, 
r-encoding
+stake up significantly less space than b-encodings.  This version of 
rencode is a
+complete rewrite in Cython to attempt to increase the performance over 
the pure
+Python module written by Petru Paler, Connelly Barnes et al.")
+   (license license:bsd-3)))
-- 
2.13.1

^ permalink raw reply related	[relevance 65%]

* [bug#27440] [PATCH 3/4] gnu: python: Add python2-rencode.
    2017-06-21 11:05 65% ` [bug#27440] [PATCH 1/4] gnu: python: Add python2-pyopengl Rutger Helling
  2017-06-21 11:05 65% ` [bug#27440] [PATCH 2/4] gnu: python: Add python-rencode Rutger Helling
@ 2017-06-21 11:06 65% ` Rutger Helling
  2 siblings, 0 replies; 200+ results
From: Rutger Helling @ 2017-06-21 11:06 UTC (permalink / raw)
  To: 27440

* gnu/packages/python.scm (python2-rencode): New variable.
---
  gnu/packages/python.scm | 3 +++
  1 file changed, 3 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 9c1485854..88cb0a6b8 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15470,4 +15470,6 @@ stake up significantly less space than 
b-encodings.  This version of rencode is a
  complete rewrite in Cython to attempt to increase the performance over 
the pure
  Python module written by Petru Paler, Connelly Barnes et al.")
     (license license:bsd-3)))
+
+(define-public python2-rencode
+  (package-with-python2 python-rencode))
-- 
2.13.1

^ permalink raw reply related	[relevance 65%]

* [bug#27451] [PATCH] gnu: Add python-uniseg.
@ 2017-06-22 19:21 81% Kei Kebreau
  0 siblings, 0 replies; 200+ results
From: Kei Kebreau @ 2017-06-22 19:21 UTC (permalink / raw)
  To: 27451; +Cc: Kei Kebreau

* gnu/packages/python.scm (python-uniseg, python2-uniseg): New
variables.
---
 gnu/packages/python.scm | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index a63006a04..3c3b4056d 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -41,6 +41,7 @@
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2017 Kei Kebreau <kei@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -987,6 +988,42 @@ Python 3 support.")
 (define-public python2-setuptools
   (package-with-python2 python-setuptools))
 
+(define-public python-uniseg
+  (package
+    (name "python-uniseg")
+    (version "0.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://bitbucket.org/emptypage/uniseg-python/"
+                           "get/rel-" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1df4gddnj2a0v8z35wb2ra5vvh1f1qyxs8fgd25c8g64031mna6x"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:tests? #f)) ; The test suite requires network access.
+    (home-page
+     "https://bitbucket.org/emptypage/uniseg-python")
+    (synopsis
+     "Python library to determine Unicode text segmentations")
+    (description
+     "Uniseg is a Python package used to determine Unicode text segmentations.
+Supported segmentations include:
+@enumerate
+@item @dfn{Code point} (any value in the Unicode codespace)
+@item @dfn{Grapheme cluster} (user-perceived character made of a single or
+multiple Unicode code points, e.g. \"G\" + acute-accent)
+@item Word break
+@item Sentence break
+@item Line break
+@end enumerate")
+    (license license:expat)))
+
+(define-public python2-uniseg
+  (package-with-python2 python-uniseg))
+
 ;;; Pycrypto is abandoned upstream:
 ;;;
 ;;; https://github.com/dlitz/pycrypto/issues/173
-- 
2.13.1

^ permalink raw reply related	[relevance 81%]

* [bug#27440] [PATCH 1/4] gnu: python: Add python2-pyopengl.
  @ 2017-06-22 20:42 61%     ` Rutger Helling
  2017-06-23  3:55 61%       ` Rutger Helling
  0 siblings, 1 reply; 200+ results
From: Rutger Helling @ 2017-06-22 20:42 UTC (permalink / raw)
  To: ludo; +Cc: 27440


[-- Attachment #1.1: Type: text/plain, Size: 749 bytes --]

Sorry about that! Here are the patches changed with your suggestions,
sent as attachments. 

On 2017-06-22 21:46, ludo@gnu.org wrote:

> Hi Rutger,
> 
> Rutger Helling <rhelling@mykolab.com> skribis:
> 
>> +   (description
>> +         "PyOpenGL is the most common cross platform Python binding
>> to OpenGL
>> +and related APIs.  The binding is created using the standard ctypes
>> library.")
> 
> It seems your patches were somehow mangled on the way, with lines
> wrapped as in the example above.
> 
> Could you resend them to this address, preferably with 'git send-email'?
> 
> I would also suggest merging patches 2 and 3, and expounding a bit on
> the 'description' of Xpra in patch 4.  Apart from that it looks alright!
> 
> Thanks,
> Ludo'.

[-- Attachment #1.2: Type: text/html, Size: 1496 bytes --]

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-python-Add-python2-pyopengl.patch --]
[-- Type: text/x-diff; name=0001-gnu-python-Add-python2-pyopengl.patch, Size: 1775 bytes --]

From 68baddf334f1b02ee7ee67a5408d112eba87f8f3 Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@mykolab.com>
Date: Thu, 22 Jun 2017 22:31:35 +0200
Subject: [PATCH] gnu: python: Add python2-pyopengl.

* gnu/packages/python.scm (python2-pyopengl): New variable.
---
 gnu/packages/python.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index a63006a04..27ae2093c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -41,6 +41,7 @@
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -15412,3 +15413,25 @@ functionality like full case-folding for case-insensitive matches in Unicode.")
 
 (define-public python2-regex
   (package-with-python2 python-regex))
+
+(define-public python2-pyopengl
+  (package
+   (name "python2-pyopengl")
+   (version "3.1.0")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (pypi-uri "PyOpenGL" version))
+     (sha256
+      (base32
+       "1byxjj6a8rwzhxhjqlc588zdad2qwxdd7vlam2653ylll31waiwv"))))
+   (arguments
+     `(#:python ,python-2))
+   (build-system python-build-system)
+   (home-page "http://pyopengl.sourceforge.net")
+   (synopsis "Standard OpenGL bindings for Python")
+   (description
+         "PyOpenGL is the most common cross platform Python binding to OpenGL
+and related APIs.  The binding is created using the standard ctypes library, and
+is provided under an extremely liberal BSD-style Open-Source license.")
+   (license license:bsd-3)))
-- 
2.13.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-python-Add-python-rencode.patch --]
[-- Type: text/x-diff; name=0002-gnu-python-Add-python-rencode.patch, Size: 1891 bytes --]

From 61e2259cdc6167e4747c32f07188917dd0d94413 Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@mykolab.com>
Date: Thu, 22 Jun 2017 22:33:28 +0200
Subject: [PATCH] gnu: python: Add python-rencode.

* gnu/packages/python.scm (python-rencode): New variable.
---
 gnu/packages/python.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 27ae2093c..fa5ff0cfc 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15435,3 +15435,30 @@ functionality like full case-folding for case-insensitive matches in Unicode.")
 and related APIs.  The binding is created using the standard ctypes library, and
 is provided under an extremely liberal BSD-style Open-Source license.")
    (license license:bsd-3)))
+
+(define-public python-rencode
+  (package
+   (name "python-rencode")
+   (version "1.0.3")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (pypi-uri "rencode" version))
+     (sha256
+      (base32
+       "08if5yax1xn5yfp8p3765ccjmfcv9di7i4m5jckgnwvdsgznwkbj"))))
+   (build-system python-build-system)
+   (native-inputs `(("pkg-config" ,pkg-config)
+                   ("python-cython", python-cython)))
+   (home-page "https://github.com/aresch/rencode")
+   (synopsis "For complex, heterogeneous data structures with many small elements")
+   (description
+         "The rencode module is similar to bencode from the BitTorrent project.
+For complex, heterogeneous data structures with many small elements, r-encoding
+stake up significantly less space than b-encodings.  This version of rencode is a
+complete rewrite in Cython to attempt to increase the performance over the pure
+Python module written by Petru Paler, Connelly Barnes et al.")
+   (license license:bsd-3)))
+
+(define-public python2-rencode
+  (package-with-python2 python-rencode))
-- 
2.13.1

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-gnu-xorg-Add-xpra.patch --]
[-- Type: text/x-diff; name=0003-gnu-xorg-Add-xpra.patch, Size: 5403 bytes --]

From ae9a4999066f6ae35a9c90cd2b23ec98e61c26c7 Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@mykolab.com>
Date: Thu, 22 Jun 2017 22:19:42 +0200
Subject: [PATCH] gnu: xorg: Add xpra.

* gnu/packages/xorg.scm (xpra): New variable.
---
 gnu/packages/xorg.scm | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 83 insertions(+)

diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index e40e681d2..6ace94e96 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2017 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -35,6 +36,7 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
+  #:use-module (guix build-system python)
   #:use-module (guix utils)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
@@ -48,6 +50,7 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gperf)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libbsd)
   #:use-module (gnu packages linux)
@@ -58,6 +61,8 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages spice)
+  #:use-module (gnu packages video)
+  #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xdisorg))
 
@@ -5790,3 +5795,81 @@ basic eye-candy effects.")
     (home-page "https://cgit.freedesktop.org/xorg/app/xcompmgr/")
     (license (license:x11-style
               "https://cgit.freedesktop.org/xorg/app/xcompmgr/tree/COPYING"))))
+
+(define-public xpra
+  (package
+    (name "xpra")
+    (version "2.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.xpra.org/src/xpra-"
+                           version ".tar.xz"))
+       (sha256
+        (base32
+         "09hzgbsj9v5qyh41rbz968ipi7016jk66b60vm6piryna9kbnha3"))))
+    (build-system python-build-system)
+    (inputs `(("ffmpeg", ffmpeg)
+              ("flac", flac)
+              ("gtk+-2" ,gtk+-2) ;; no full GTK3 support yet
+              ("libjpeg", libjpeg)
+              ("libpng", libpng)
+              ("libvpx", libvpx)
+              ("libx264", libx264)
+              ("libxcomposite", libxcomposite)
+              ("libxdamage", libxdamage)
+              ("libxkbfile", libxkbfile)
+              ("libxrandr", libxrandr)
+              ("libxtst", libxtst)
+              ("lzo", lzo)
+              ("python2-cryptography", python2-cryptography)
+              ("python2-dbus", python2-dbus)
+              ("python2-lz4", python2-lz4)
+              ("python2-lzo", python2-lzo)
+              ("python2-numpy", python2-numpy)
+              ("python2-pillow" ,python2-pillow)
+              ("python2-pycairo", python2-pycairo)
+              ("python2-pycrypto", python2-pycrypto)
+              ("python2-pygobject", python2-pygobject)
+              ("python2-pyopengl", python2-pyopengl)
+              ("python2-pygtk", python2-pygtk)
+              ("python2-rencode", python2-rencode)
+              ("xorg-server", xorg-server)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                    ("python2-cython", python2-cython)))
+    (arguments
+      `(#:python ,python-2 ;; no full Python 3 support yet
+        #:configure-flags '("--with-tests"
+                            "--with-bundle_tests"
+                            "--without-strict")
+        #:modules ((guix build python-build-system) (guix build utils))
+        #:phases (modify-phases %standard-phases
+          (delete 'build)
+          (delete 'check) ;; There's no test suite at the moment.
+          ;; Remove BUILD_CPU, BUILD_DATE, BUILD_TIME
+          ;; from build info to prevent deterministic issues.
+          ;; Also correct some directories and use the xvfb
+          ;; binary instead of xorg-server (which doesn't seem
+          ;; to work).
+          (add-before 'install 'fix-output
+            (lambda _
+              (substitute* "add_build_info.py"
+                ((".*\"BUILD_CPU\", get_cpuinfo.*") ""))
+              (substitute* "add_build_info.py"
+                ((".*\"BUILD_DATE\", datetime.*") ""))
+              (substitute* "add_build_info.py"
+                ((".*\"BUILD_TIME\", datetime.*") ""))
+              (substitute* "setup.py"
+                (("/etc/init.d/") (string-append %output "/etc/init.d/")))
+              (substitute* "setup.py"
+                (("/usr/lib/") (string-append %output "/lib/")))
+              (substitute* "./etc/xpra/conf.d/55_server_x11.conf.in"
+                           (("xvfb = %.*") (string-append "xvfb = " (assoc-ref
+%build-inputs "xorg-server") "/bin/Xvfb +extension Composite -nolisten tcp"
+"-noreset -auth $XAUTHORITY -screen 0 5760x2560x24+32"))))))))
+    (home-page "https://www.xpra.org/")
+    (synopsis "Remote access to individual applications or full desktops")
+    (description "Xpra is a persistent remote display server and client for
+forwarding applications and desktop screens.")
+    (license license:gpl2+)))
+ 
-- 
2.13.1


^ permalink raw reply related	[relevance 61%]

* [bug#27440] [PATCH 1/4] gnu: python: Add python2-pyopengl.
  2017-06-22 20:42 61%     ` Rutger Helling
@ 2017-06-23  3:55 61%       ` Rutger Helling
  0 siblings, 0 replies; 200+ results
From: Rutger Helling @ 2017-06-23  3:55 UTC (permalink / raw)
  To: ludo; +Cc: 27440


[-- Attachment #1.1: Type: text/plain, Size: 995 bytes --]

There was a small typo in the third patch that resulted in "-nolisten
tcp-noreset" instead of "-nolisten tcp -noreset" being passed to xvfb.
Here's the corrected patch, along with the other two again. 

On 2017-06-22 22:42, Rutger Helling wrote:

> Sorry about that! Here are the patches changed with your suggestions, sent as attachments. 
> 
> On 2017-06-22 21:46, ludo@gnu.org wrote: 
> Hi Rutger,
> 
> Rutger Helling <rhelling@mykolab.com> skribis:
> 
> +   (description
> +         "PyOpenGL is the most common cross platform Python binding
> to OpenGL
> +and related APIs.  The binding is created using the standard ctypes
> library.") 
> It seems your patches were somehow mangled on the way, with lines
> wrapped as in the example above.
> 
> Could you resend them to this address, preferably with 'git send-email'?
> 
> I would also suggest merging patches 2 and 3, and expounding a bit on
> the 'description' of Xpra in patch 4.  Apart from that it looks alright!
> 
> Thanks,
> Ludo'.

[-- Attachment #1.2: Type: text/html, Size: 1878 bytes --]

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-python-Add-python2-pyopengl.patch --]
[-- Type: text/x-diff; name=0001-gnu-python-Add-python2-pyopengl.patch, Size: 1769 bytes --]

From 66eaa133a3e2bfc0a0621a009be23dd65229d617 Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@mykolab.com>
Date: Fri, 23 Jun 2017 05:43:09 +0200
Subject: [PATCH] gnu: python: Add python2-pyopengl.

* gnu/packages/python.scm (python2-pyopengl): New variable.
---
 gnu/packages/python.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3c3b4056d..6914043e9 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -42,6 +42,7 @@
 ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2017 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -15449,3 +15450,25 @@ functionality like full case-folding for case-insensitive matches in Unicode.")
 
 (define-public python2-regex
   (package-with-python2 python-regex))
+
+(define-public python2-pyopengl
+  (package
+   (name "python2-pyopengl")
+   (version "3.1.0")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (pypi-uri "PyOpenGL" version))
+     (sha256
+      (base32
+       "1byxjj6a8rwzhxhjqlc588zdad2qwxdd7vlam2653ylll31waiwv"))))
+   (arguments
+     `(#:python ,python-2))
+   (build-system python-build-system)
+   (home-page "http://pyopengl.sourceforge.net")
+   (synopsis "Standard OpenGL bindings for Python")
+   (description
+         "PyOpenGL is the most common cross platform Python binding to OpenGL
+and related APIs.  The binding is created using the standard ctypes library, and
+is provided under an extremely liberal BSD-style Open-Source license.")
+   (license license:bsd-3)))
-- 
2.13.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-python-Add-python-rencode.patch --]
[-- Type: text/x-diff; name=0002-gnu-python-Add-python-rencode.patch, Size: 1891 bytes --]

From 61e2259cdc6167e4747c32f07188917dd0d94413 Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@mykolab.com>
Date: Thu, 22 Jun 2017 22:33:28 +0200
Subject: [PATCH] gnu: python: Add python-rencode.

* gnu/packages/python.scm (python-rencode): New variable.
---
 gnu/packages/python.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 27ae2093c..fa5ff0cfc 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15435,3 +15435,30 @@ functionality like full case-folding for case-insensitive matches in Unicode.")
 and related APIs.  The binding is created using the standard ctypes library, and
 is provided under an extremely liberal BSD-style Open-Source license.")
    (license license:bsd-3)))
+
+(define-public python-rencode
+  (package
+   (name "python-rencode")
+   (version "1.0.3")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (pypi-uri "rencode" version))
+     (sha256
+      (base32
+       "08if5yax1xn5yfp8p3765ccjmfcv9di7i4m5jckgnwvdsgznwkbj"))))
+   (build-system python-build-system)
+   (native-inputs `(("pkg-config" ,pkg-config)
+                   ("python-cython", python-cython)))
+   (home-page "https://github.com/aresch/rencode")
+   (synopsis "For complex, heterogeneous data structures with many small elements")
+   (description
+         "The rencode module is similar to bencode from the BitTorrent project.
+For complex, heterogeneous data structures with many small elements, r-encoding
+stake up significantly less space than b-encodings.  This version of rencode is a
+complete rewrite in Cython to attempt to increase the performance over the pure
+Python module written by Petru Paler, Connelly Barnes et al.")
+   (license license:bsd-3)))
+
+(define-public python2-rencode
+  (package-with-python2 python-rencode))
-- 
2.13.1

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-gnu-xorg-Add-xpra.patch --]
[-- Type: text/x-diff; name=0003-gnu-xorg-Add-xpra.patch, Size: 5404 bytes --]

From d7329ed89e1533744092d59c82da61ef1fe1b62d Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@mykolab.com>
Date: Fri, 23 Jun 2017 05:45:29 +0200
Subject: [PATCH] gnu: xorg: Add xpra.

* gnu/packages/xorg.scm (xpra): New variable.
---
 gnu/packages/xorg.scm | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 83 insertions(+)

diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index e40e681d2..932415440 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2017 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -35,6 +36,7 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
+  #:use-module (guix build-system python)
   #:use-module (guix utils)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
@@ -48,6 +50,7 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gperf)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libbsd)
   #:use-module (gnu packages linux)
@@ -58,6 +61,8 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages spice)
+  #:use-module (gnu packages video)
+  #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xdisorg))
 
@@ -5790,3 +5795,81 @@ basic eye-candy effects.")
     (home-page "https://cgit.freedesktop.org/xorg/app/xcompmgr/")
     (license (license:x11-style
               "https://cgit.freedesktop.org/xorg/app/xcompmgr/tree/COPYING"))))
+
+(define-public xpra
+  (package
+    (name "xpra")
+    (version "2.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.xpra.org/src/xpra-"
+                           version ".tar.xz"))
+       (sha256
+        (base32
+         "09hzgbsj9v5qyh41rbz968ipi7016jk66b60vm6piryna9kbnha3"))))
+    (build-system python-build-system)
+    (inputs `(("ffmpeg", ffmpeg)
+              ("flac", flac)
+              ("gtk+-2" ,gtk+-2) ;; no full GTK3 support yet
+              ("libjpeg", libjpeg)
+              ("libpng", libpng)
+              ("libvpx", libvpx)
+              ("libx264", libx264)
+              ("libxcomposite", libxcomposite)
+              ("libxdamage", libxdamage)
+              ("libxkbfile", libxkbfile)
+              ("libxrandr", libxrandr)
+              ("libxtst", libxtst)
+              ("lzo", lzo)
+              ("python2-cryptography", python2-cryptography)
+              ("python2-dbus", python2-dbus)
+              ("python2-lz4", python2-lz4)
+              ("python2-lzo", python2-lzo)
+              ("python2-numpy", python2-numpy)
+              ("python2-pillow" ,python2-pillow)
+              ("python2-pycairo", python2-pycairo)
+              ("python2-pycrypto", python2-pycrypto)
+              ("python2-pygobject", python2-pygobject)
+              ("python2-pyopengl", python2-pyopengl)
+              ("python2-pygtk", python2-pygtk)
+              ("python2-rencode", python2-rencode)
+              ("xorg-server", xorg-server)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                    ("python2-cython", python2-cython)))
+    (arguments
+      `(#:python ,python-2 ;; no full Python 3 support yet
+        #:configure-flags '("--with-tests"
+                            "--with-bundle_tests"
+                            "--without-strict")
+        #:modules ((guix build python-build-system) (guix build utils))
+        #:phases (modify-phases %standard-phases
+          (delete 'build)
+          (delete 'check) ;; There's no test suite at the moment.
+          ;; Remove BUILD_CPU, BUILD_DATE, BUILD_TIME
+          ;; from build info to prevent deterministic issues.
+          ;; Also correct some directories and use the xvfb
+          ;; binary instead of xorg-server (which doesn't seem
+          ;; to work).
+          (add-before 'install 'fix-output
+            (lambda _
+              (substitute* "add_build_info.py"
+                ((".*\"BUILD_CPU\", get_cpuinfo.*") ""))
+              (substitute* "add_build_info.py"
+                ((".*\"BUILD_DATE\", datetime.*") ""))
+              (substitute* "add_build_info.py"
+                ((".*\"BUILD_TIME\", datetime.*") ""))
+              (substitute* "setup.py"
+                (("/etc/init.d/") (string-append %output "/etc/init.d/")))
+              (substitute* "setup.py"
+                (("/usr/lib/") (string-append %output "/lib/")))
+              (substitute* "./etc/xpra/conf.d/55_server_x11.conf.in"
+                           (("xvfb = %.*") (string-append "xvfb = " (assoc-ref
+%build-inputs "xorg-server") "/bin/Xvfb +extension Composite -nolisten tcp"
+" -noreset -auth $XAUTHORITY -screen 0 5760x2560x24+32"))))))))
+    (home-page "https://www.xpra.org/")
+    (synopsis "Remote access to individual applications or full desktops")
+    (description "Xpra is a persistent remote display server and client for
+forwarding applications and desktop screens.")
+    (license license:gpl2+)))
+ 
-- 
2.13.1


^ permalink raw reply related	[relevance 61%]

* [bug#27423] [PATCH] gnu: Add python-xenon
    2017-06-18 18:53 63% ` [bug#27423] [PATCH] " Muriithi Frederick Muriuki
@ 2017-06-24  3:56 63% ` Muriithi Frederick Muriuki
  1 sibling, 0 replies; 200+ results
From: Muriithi Frederick Muriuki @ 2017-06-24  3:56 UTC (permalink / raw)
  To: 27423

* gnu/packages/python.scm (python-xenon, python2-xenon) New variables.
---
 gnu/packages/python.scm | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 6150a8798..63d05e9e2 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15500,3 +15500,49 @@ pure Python module.")
 
 (define-public python2-rencode
   (package-with-python2 python-rencode))
+
+(define-public python-xenon
+  (package
+    (name "python-xenon")
+    (version "0.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "xenon" version))
+       (sha256
+        (base32
+         "14kby2y48vp3sgwxqlm5d5789yibqwb1qli5fwcmdqg3iayrbklc"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pyyaml" ,python-pyyaml)
+       ("python-radon" ,python-radon)
+       ("python-requests" ,python-requests)
+       ("python-flake8" ,python-flake8)
+       ("python-tox" ,python-tox)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'patch-test-requirements
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Update requirements from dependecy==version
+             ;; to dependency>=version
+             (substitute* "requirements.txt"
+               (("==") ">=")
+               ((",<1.5.0") ""))
+             ;; Remove httpretty dependency for tests
+             (substitute* "setup.py"
+               (("httpretty") ""))
+             #t)))))
+    (home-page "https://xenon.readthedocs.org/")
+    (synopsis
+     "Monitor code metrics for Python on your CI server")
+    (description
+     "@code{Xenon} is a monitoring tool based on Radon.  It monitors code’s
+complexity.  Ideally, @code{xenon} is run every time code is committed.  Through
+command line options, various thresholds can be set for the complexity of code.
+It will fail (i.e.  it will exit with a non-zero exit code) when any of these
+requirements is not met.")
+    (license license:expat)))
+
+(define-public python2-xenon
+  (package-with-python2 python-xenon))
-- 
2.13.1

^ permalink raw reply related	[relevance 63%]

* [bug#27548] [PATCH] gnu: Add python-xenon
@ 2017-07-01 14:44 63% Muriithi Frederick Muriuki
  0 siblings, 0 replies; 200+ results
From: Muriithi Frederick Muriuki @ 2017-07-01 14:44 UTC (permalink / raw)
  To: 27548

* gnu/packages/python.scm (python-xenon, python2-xenon) New variables.
---
 gnu/packages/python.scm | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 6e1e289e9..1167b0933 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15512,3 +15512,49 @@ pure Python module.")
 
 (define-public python2-rencode
   (package-with-python2 python-rencode))
+
+(define-public python-xenon
+  (package
+    (name "python-xenon")
+    (version "0.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "xenon" version))
+       (sha256
+        (base32
+         "14kby2y48vp3sgwxqlm5d5789yibqwb1qli5fwcmdqg3iayrbklc"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pyyaml" ,python-pyyaml)
+       ("python-radon" ,python-radon)
+       ("python-requests" ,python-requests)
+      ("python-flake8" ,python-flake8)
+       ("python-tox" ,python-tox)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'patch-test-requirements
+          (lambda* (#:key inputs #:allow-other-keys)
+             ;; Update requirements from dependecy==version
+             ;; to dependency>=version
+             (substitute* "requirements.txt"
+               (("==") ">=")
+               ((",<1.5.0") ""))
+            ;; Remove httpretty dependency for tests
+             (substitute* "setup.py"
+               (("httpretty") ""))
+             #t)))))
+    (home-page "https://xenon.readthedocs.org/")
+    (synopsis
+     "Monitor code metrics for Python on your CI server")
+   (description
+     "@code{Xenon} is a monitoring tool based on Radon.  It monitors code’s
+complexity.  Ideally, @code{xenon} is run every time code is committed.  Through
+command line options, various thresholds can be set for the complexity of code.
+It will fail (i.e.  it will exit with a non-zero exit code) when any of these
+equirements is not met.")
+    (license license:expat)))
+
+(define-public python2-xenon
+  (package-with-python2 python-xenon))
-- 
2.13.2

^ permalink raw reply related	[relevance 63%]

* [bug#27558] [PATCH] gnu: Add python-ruamel.yaml
@ 2017-07-03  3:47 64% Muriithi Frederick Muriuki
  2017-07-11 23:17 64% ` Muriithi Frederick Muriuki
  0 siblings, 1 reply; 200+ results
From: Muriithi Frederick Muriuki @ 2017-07-03  3:47 UTC (permalink / raw)
  To: 27558

* gnu/packages/python.scm (python-ruamel.yaml, python2-ruamel.yaml):
  New variables.
---
 gnu/packages/python.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3e71a23bc..1ad5b146e 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15512,3 +15512,35 @@ pure Python module.")
 
 (define-public python2-rencode
   (package-with-python2 python-rencode))
+
+(define-public python-ruamel.yaml
+  (package
+    (name "python-ruamel.yaml")
+    (version "0.15.16")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ruamel.yaml" version))
+       (sha256
+        (base32
+         "0yx1a1yqgm1phrmyvqzag5jwivn25ndlnwh2mgwgr7m8skn2h045"))))
+    (build-system python-build-system)
+    (arguments
+     `(;; Tests fail with message:
+       ;; ImportError: Failed to import test module: .ruamel
+       ;; but the directory .ruamel exists in the environment
+       ;; left when the package is built with --keep-failed
+       #:tests? #f))
+    (home-page "https://bitbucket.org/ruamel/yaml")
+    (synopsis
+     "A YAML 1.2 parser/emitter")
+    (description
+     "This package provides YAML parser/emitter that supports roundtrip
+preservation of comments, seq/map flow style, and map key order.  It
+is a derivative of Kirill Simonov’s PyYAML 3.11.  It supports YAML 1.2
+and has round-trip loaders and dumpers. It supports comments. Block
+style and key ordering are kept, so you can diff the source.")
+    (license license:expat)))
+
+(define-public python2-ruamel.yaml
+  (package-with-python2 python-ruamel.yaml))
-- 
2.13.2

^ permalink raw reply related	[relevance 64%]

* [bug#27637] [PATCH] gnu: Add python-conda
@ 2017-07-10  7:29 62% Frederick Muriithi
  0 siblings, 0 replies; 200+ results
From: Frederick Muriithi @ 2017-07-10  7:29 UTC (permalink / raw)
  To: 27637

[-- Attachment #1: Type: text/plain, Size: 108 bytes --]

This package is dependent on python-ruamel.yaml that was submitted in bug #27558

-- 
Frederick M. Muriithi

[-- Attachment #2: 0001-gnu-Add-python-conda.patch --]
[-- Type: text/x-patch, Size: 2064 bytes --]

From b8fbe1fe612dad6ad00d8c024a6b9dca12080e65 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki <fredmanglis@gmail.com>
Date: Mon, 10 Jul 2017 10:25:37 +0300
Subject: [PATCH] gnu: Add python-conda

* gnu/package/python.scm (python-conda, python2-conda): New variables.
---
 gnu/packages/python.scm | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d110a1cb3..f0e87fb53 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15549,3 +15549,41 @@ pure Python module.")
 
 (define-public python2-rencode
   (package-with-python2 python-rencode))
+
+(define-public python-conda
+  (package
+    (name "python-conda")
+    (version "4.3.16")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "conda" version))
+       (sha256
+        (base32
+         "0lsr52a6x268ixfif36p6r64zkhsdjri0g8gcylkpsix6hhzh7m9"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* _xs
+             (zero? (system* "py.test")))))))
+    (native-inputs
+     `(("python-ruamel.yaml" ,python-ruamel.yaml)
+       ("python-requests" ,python-requests)
+       ("python-pycosat" ,python-pycosat)
+       ("python-pytest" ,python-pytest)
+       ("python-responses" ,python-responses)))
+    (home-page "https://github.com/conda/conda")
+    (synopsis
+     "Cross-platform, OS-agnostic, system-level binary package manager")
+    (description
+     "Conda is a cross-platform, Python-agnostic binary package manager.  It is
+the package manager used by Anaconda installations, but it may be used for other
+systems as well.  Conda makes environments first-class citizens, making it easy
+to create independent environments even for C libraries.  Conda is written
+entirely in Python, and is BSD licensed open source.")
+    (license license:bsd-3)))
+
+(define-public python2-conda
+  (package-with-python2 python-conda))
-- 
2.13.2


^ permalink raw reply related	[relevance 62%]

* [bug#27558] [PATCH] gnu: Add python-ruamel.yaml
  2017-07-03  3:47 64% [bug#27558] [PATCH] gnu: Add python-ruamel.yaml Muriithi Frederick Muriuki
@ 2017-07-11 23:17 64% ` Muriithi Frederick Muriuki
  0 siblings, 0 replies; 200+ results
From: Muriithi Frederick Muriuki @ 2017-07-11 23:17 UTC (permalink / raw)
  To: 27558

* gnu/packages/python.scm (python-ruamel.yaml, python2-ruamel.yaml) New
* variables.
---
 gnu/packages/python.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d110a1cb3..161812ac9 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15549,3 +15549,35 @@ pure Python module.")
 
 (define-public python2-rencode
   (package-with-python2 python-rencode))
+
+(define-public python-ruamel.yaml
+  (package
+    (name "python-ruamel.yaml")
+    (version "0.15.18")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ruamel.yaml" version))
+       (sha256
+        (base32
+         "1mg8zgc2f45fh7hfy2hdfb8cxq503jqjb7v1gzd9am4bqgkrqp1l"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* _
+             (zero? (system* "bash" "-c" "py.test" "_test/test_*.py")))))))
+    (home-page "https://bitbucket.org/ruamel/yaml")
+    (synopsis "This is a YAML 1.2 parser/emitter")
+    (description "This package provides YAML parser/emitter that supports
+roundtrip preservation of comments, seq/map flow style, and map key order.  It
+is a derivative of Kirill Simonov’s PyYAML 3.11.  It supports YAML 1.2 and has
+round-trip loaders and dumpers.  It supports comments.  Block style and key
+ordering are kept, so you can diff the source.")
+    (license license:expat)))
+
+(define-public python2-ruamel.yaml
+  (package-with-python2 python-ruamel.yaml))
-- 
2.13.2

^ permalink raw reply related	[relevance 64%]

* [bug#27701] [PATCH 1/4] gnu: Add python-schema.
  @ 2017-07-15  7:19 65% ` Oleg Pykhalov
  2017-07-15  7:19 65% ` [bug#27700] [PATCH 2/4] gnu: Add python-backports-csv Oleg Pykhalov
  2017-07-15  7:19 64% ` [bug#27702] [PATCH 3/4] gnu: Add python-jsonpatch Oleg Pykhalov
  2 siblings, 0 replies; 200+ results
From: Oleg Pykhalov @ 2017-07-15  7:19 UTC (permalink / raw)
  To: 27701

* gnu/packages/python.scm (python-schema): New variable.
---
 gnu/packages/python.scm | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d110a1cb3..f4b562ab9 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -2711,6 +2711,46 @@ version numbers.")
              (propagated-inputs
               `(("python2-functools32" ,python2-functools32))))))
 
+(define-public python-schema
+  (package
+    (name "python-schema")
+    (version "0.6.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "schema" version))
+       (sha256
+	(base32
+	 "1lw28j9w9vxyigg7vkfkvi6ic9lgjkdnfvnxdr7pklslqvzmk2vm"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/keleshev/schema")
+    (synopsis "Simple data validation library")
+    (description
+     "@code{python-schema} is a library for validating Python data
+structures, such as those obtained from config-files, forms, external
+services or command-line parsing, converted from JSON/YAML (or
+something else) to Python data-types.")
+    (license license:psfl)))
+
+(define-public python2-schema
+  (package-with-python2 python-schema))
+
+(define-public python-schema-0.5
+  (package (inherit python-schema)
+    (version "0.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "schema" version))
+       (sha256
+	(base32
+	 "10zqvpaky51kgb8nd42bk7jwl8cn2zvayxjpdc1wwmpybj92x67s"))))))
+
+(define-public python2-schema-0.5
+  (package-with-python2 python-schema-0.5))
+
 (define-public python-kitchen
   (package
     (name "python-kitchen")
-- 
2.13.2

^ permalink raw reply related	[relevance 65%]

* [bug#27700] [PATCH 2/4] gnu: Add python-backports-csv.
    2017-07-15  7:19 65% ` [bug#27701] [PATCH 1/4] gnu: Add python-schema Oleg Pykhalov
@ 2017-07-15  7:19 65% ` Oleg Pykhalov
  2017-07-15  7:19 64% ` [bug#27702] [PATCH 3/4] gnu: Add python-jsonpatch Oleg Pykhalov
  2 siblings, 0 replies; 200+ results
From: Oleg Pykhalov @ 2017-07-15  7:19 UTC (permalink / raw)
  To: 27700

* gnu/packages/python.scm (python-backports-csv): New variable.
---
 gnu/packages/python.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index f4b562ab9..79d58f8d3 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -6373,6 +6373,29 @@ connection to each user.")
 (define-public python2-backports-abc
   (package-with-python2 python-backports-abc))
 
+(define-public python-backports-csv
+  (package
+    (name "python-backports-csv")
+    (version "1.0.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "backports.csv" version))
+       (sha256
+	(base32
+	 "1imzbrradkfn8s2m1qcimyn74dn1mz2p3j381jljn166rf2i6hlc"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/ryanhiebert/backports.csv")
+    (synopsis "Backport of Python 3's csv module for Python 2")
+    (description
+     "The API of the csv module in Python 2 is drastically different from
+the csv module in Python 3.  This is due, for the most part, to the
+difference between str in Python 2 and Python 3.")
+    (license license:psfl)))
+
+(define-public python2-backports-csv
+  (package-with-python2 python-backports-csv))
+
 (define-public python2-backports-shutil-get-terminal-size
   (package
     (name "python2-backports-shutil-get-terminal-size")
-- 
2.13.2

^ permalink raw reply related	[relevance 65%]

* [bug#27702] [PATCH 3/4] gnu: Add python-jsonpatch.
    2017-07-15  7:19 65% ` [bug#27701] [PATCH 1/4] gnu: Add python-schema Oleg Pykhalov
  2017-07-15  7:19 65% ` [bug#27700] [PATCH 2/4] gnu: Add python-backports-csv Oleg Pykhalov
@ 2017-07-15  7:19 64% ` Oleg Pykhalov
  2 siblings, 0 replies; 200+ results
From: Oleg Pykhalov @ 2017-07-15  7:19 UTC (permalink / raw)
  To: 27702

* gnu/packages/python.scm (python-jsonpatch): New variable.
---
 gnu/packages/python.scm | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 79d58f8d3..9bf1cde12 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15236,6 +15236,50 @@ by path in a JSON document (see RFC 6901).")
 (define-public python2-jsonpointer
   (package-with-python2 python-jsonpointer))
 
+(define-public python-jsonpatch
+  (package
+    (name "python-jsonpatch")
+    (version "1.16")
+    (source
+     (origin
+       (method url-fetch)
+       ;; pypi version lucks tests.js
+       (uri (string-append
+	     "https://github.com/stefankoegl/python-json-patch/archive/v"
+	     version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "085ykisl8v7mv9h7hvhdy3l2fjzs4214gx32r5k6nx4f76hbv6y5"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-jsonpointer" ,python-jsonpointer)))
+    (home-page "https://github.com/stefankoegl/python-json-patch")
+    (synopsis "Applying JSON Patches in Python 2.6+ and 3.x")
+    (description "Library to apply JSON Patches according to RFC 6902")
+    (license license:bsd-3)))
+
+(define-public python2-jsonpatch
+  (package-with-python2 python-jsonpatch))
+
+(define-public python-jsonpatch-0.4
+  (package (inherit python-jsonpatch)
+	   (name "python-jsonpatch")
+	   (version "0.4")
+	   (source
+	    (origin
+	      (method url-fetch)
+	      (uri (string-append
+		    "https://github.com/stefankoegl/python-json-patch/archive/v"
+		    version ".tar.gz"))
+	      (file-name (string-append name "-" version ".tar.gz"))
+	      (sha256
+	       (base32
+		"0j0cd9z9zyp8kppp464jxrfgrnbgkzl1yi10i5gsv8yz6d95929d"))))))
+
+(define-public python2-jsonpatch-0.4
+  (package-with-python2 python-jsonpatch-0.4))
+
 (define-public python-rfc3987
   (package
     (name "python-rfc3987")
-- 
2.13.2

^ permalink raw reply related	[relevance 64%]

* [bug#27742] [PATCH 3/3] gnu: Add python-sphinx-1.6.
    2017-07-17 20:03 64% ` [bug#27741] [PATCH 2/3] gnu: Add python-sphinxcontrib-websupport Ricardo Wurmus
@ 2017-07-17 20:03 65% ` Ricardo Wurmus
  1 sibling, 0 replies; 200+ results
From: Ricardo Wurmus @ 2017-07-17 20:03 UTC (permalink / raw)
  To: 27742; +Cc: Ricardo Wurmus

* gnu/packages/python.scm (python-sphinx-1.6): New variable.
---
 gnu/packages/python.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 2cc282ac3..2e5eec2a9 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3235,6 +3235,36 @@ sources.")
     (license license:bsd-3)
     (properties `((python2-variant . ,(delay python2-sphinx))))))
 
+(define-public python-sphinx-1.6
+  (package (inherit python-sphinx)
+    (name "python-sphinx")
+    (version "1.6.3")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "Sphinx" version))
+              (sha256
+               (base32
+                "1rj6f3i8hmrx2qlkshi5kp5xcy98dlynwlyl05yvflj5f66dp2xg"))))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             ;; Requires Internet access.
+             (delete-file "tests/test_build_linkcheck.py")
+             (substitute* "tests/test_build_latex.py"
+               (("@pytest.mark.sphinx\\('latex', testroot='images'\\)")
+                "@pytest.mark.skip()"))
+             (zero? (system* "make" "test")))))))
+    (propagated-inputs
+     `(("python-sphinxcontrib-websupport" ,python-sphinxcontrib-websupport)
+       ,@(package-propagated-inputs python-sphinx)))
+    (native-inputs
+     `(("python-pytest" ,python-pytest-3.0)
+       ("imagemagick" ,imagemagick) ; for "convert"
+       ,@(package-native-inputs python-sphinx)))
+    (properties '())))
+
 (define-public python-sphinx-1.5.3
   (package
     (inherit python-sphinx)
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#27741] [PATCH 2/3] gnu: Add python-sphinxcontrib-websupport.
  @ 2017-07-17 20:03 64% ` Ricardo Wurmus
  2017-07-17 20:03 65% ` [bug#27742] [PATCH 3/3] gnu: Add python-sphinx-1.6 Ricardo Wurmus
  1 sibling, 0 replies; 200+ results
From: Ricardo Wurmus @ 2017-07-17 20:03 UTC (permalink / raw)
  To: 27741; +Cc: Ricardo Wurmus

* gnu/packages/python.scm (python-sphinxcontrib-websupport): New variable.
---
 gnu/packages/python.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index be1aec264..2cc282ac3 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -100,6 +100,7 @@
   #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages sdl)
+  #:use-module (gnu packages search)
   #:use-module (gnu packages shells)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages statistics)
@@ -3161,6 +3162,35 @@ reStructuredText.")
 (define-public python2-pygments
   (package-with-python2 python-pygments))
 
+(define-public python-sphinxcontrib-websupport
+  (package
+    (name "python-sphinxcontrib-websupport")
+    (version "1.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "sphinxcontrib-websupport" version))
+              (sha256
+               (base32
+                "1f9f0wjpi9nhikbyaz6d19s7qvzdf1nq2g5dsh640fma4q9rd1bs"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-mock" ,python-mock)
+       ("python-pytest" ,python-pytest)
+       ("python-xapian-bindings" ,python-xapian-bindings)))
+    ;; Needed for running the test suite
+    (inputs
+     `(("python-six" ,python-six)
+       ("python-jinja2" ,python-jinja2)
+       ("python-docutils" ,python-docutils)
+       ("python-sphinx" ,python-sphinx)
+       ("python-sqlalchemy" ,python-sqlalchemy)
+       ("python-whoosh" ,python-whoosh)))
+    (home-page "http://sphinx-doc.org/")
+    (synopsis "Sphinx API for Web Apps")
+    (description "This package provides a Python API to easily integrate
+Sphinx documentation into your Web application.")
+    (license license:bsd-3)))
+
 (define-public python-sphinx
   (package
     (name "python-sphinx")
-- 
2.13.3

^ permalink raw reply related	[relevance 64%]

* [bug#27461] [PATCH v2 2/2] gnu: Add python2-z3.
  @ 2017-07-25 16:11 65%   ` Theodoros Foradis
  0 siblings, 0 replies; 200+ results
From: Theodoros Foradis @ 2017-07-25 16:11 UTC (permalink / raw)
  To: 27461; +Cc: julien

From: Julien Lepiller <julien@lepiller.eu>

* gnu/packages/python.scm (python2-z3): New variable.
---
 gnu/packages/python.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 6e1e289e9..b06cbd218 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15512,3 +15512,33 @@ pure Python module.")
 
 (define-public python2-rencode
   (package-with-python2 python-rencode))
+
+(define-public python2-z3
+  (package
+    (inherit z3)
+    (name "python2-z3")
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("z3" ,z3)))
+     (arguments
+      `(#:python ,python-2
+        #:phases
+        (modify-phases %standard-phases
+          (add-before 'build 'prepare
+            (lambda* (#:key inputs #:allow-other-keys)
+              (system* "python" "scripts/mk_make.py")
+              (copy-file "build/python/z3/z3core.py"
+                         "src/api/python/z3/z3core.py")
+              (copy-file "build/python/z3/z3consts.py"
+                         "src/api/python/z3/z3consts.py")
+              (chdir "src/api/python")
+              (substitute* "z3/z3core.py"
+                (("_dirs = \\[")
+                 (string-append "_dirs = ['" (assoc-ref inputs "z3")
+                                "/lib', ")))
+              (substitute* "MANIFEST.in"
+                ((".*") ""))
+              (substitute* "setup.py"
+                (("self.execute\\(.*") "\n")
+                (("scripts=.*") "\n"))
+              #t)))))))
-- 
2.13.2

^ permalink raw reply related	[relevance 65%]

* [bug#27827] [PATCH] gnu: python2-urwid: Actually build urwid for Python 2.
@ 2017-07-25 18:50 65% Kei Kebreau
  0 siblings, 0 replies; 200+ results
From: Kei Kebreau @ 2017-07-25 18:50 UTC (permalink / raw)
  To: 27827; +Cc: Kei Kebreau

* gnu/packages/python.scm (python2-urwid)[arguments]: Add #:python.
---
 gnu/packages/python.scm | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 89c2de63b..03f813411 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -5871,7 +5871,11 @@ features useful for text console applications.")
       (inherit python2-urwid)
       (arguments
        (append
-        '(#:phases
+        `(;; Explicitly using Python 2 is necessary due the argument list being
+          ;; built from only the 'delete-test_vterm.py' phase and python-urwid's
+          ;; package arguments, which by default assumes the use of Python 3.
+          #:python ,python-2
+          #:phases
           (modify-phases %standard-phases
             ;; Disable the vterm tests because of non-deterministic failures
             ;; with Python 2. See https://github.com/urwid/urwid/issues/230.
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#27232] [PATCH] gnu: python-apsw: Build with all extensions.
  @ 2017-07-27 13:38 64%     ` Jelle Licht
  0 siblings, 0 replies; 200+ results
From: Jelle Licht @ 2017-07-27 13:38 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 27232


[-- Attachment #1.1: Type: text/plain, Size: 641 bytes --]

I add this command in a phase after build, and adjusted the attached patch
accordingly.
If there are no further issues, I will commit this at the end of this week.


2017-07-20 11:29 GMT+02:00 Ludovic Courtès <ludo@gnu.org>:

> Hello,
>
> Danny Milosavljevic <dannym@scratchpost.org> skribis:
>
> > It works.  LGTM.
> >
> > I get the following message though:
> >
> >   Not doing LoadExtension test.  You need to compile the extension first
> >     gcc -fPIC -shared -o ./testextension.sqlext -I. -Isqlite3
> src/testextension.c
>
> Jelle, could you check and possibly commit this patch?
>
> Thanks!
>
> Ludo’.
>

[-- Attachment #1.2: Type: text/html, Size: 1092 bytes --]

[-- Attachment #2: 0001-gnu-python-apsw-Build-with-all-extensions.patch --]
[-- Type: text/x-patch, Size: 1282 bytes --]

From 3e2176ce3053c6aa6ec84352f417292ccf89e16e Mon Sep 17 00:00:00 2001
From: Jelle Licht <jlicht@fsfe.org>
Date: Sat, 22 Jul 2017 14:23:18 +0200
Subject: [PATCH] gnu: python-apsw: Build with all extensions.

* gnu/packages/python.scm (python-apsw)[phases]: Replace build phase; add flag
  to build all extensions. Add build-test-helper to allow testing of
  extensions.
---
 gnu/packages/python.scm | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 7974dfa58..75046e845 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -6025,6 +6025,16 @@ implementation of D-Bus.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (replace 'build
+           (lambda _
+             (zero?
+              (system* "python" "setup.py" "build" "--enable-all-extensions"))))
+         (add-after 'build 'build-test-helper
+           (lambda _
+             (zero?
+              (system
+               (string-append "gcc -fPIC -shared -o ./testextension.sqlext"
+                              "-I. -Isqlite3 src/testextension.c") ))))
          (delete 'check)
          (add-after 'install 'check
            (lambda* (#:key inputs outputs #:allow-other-keys)
-- 
2.13.3


^ permalink raw reply related	[relevance 64%]

* [bug#27851] Update eyed3. ([PATCH 1/2] gnu: Add python-grako)
@ 2017-07-27 15:04 61% Thomas Danckaert
  0 siblings, 0 replies; 200+ results
From: Thomas Danckaert @ 2017-07-27 15:04 UTC (permalink / raw)
  To: 27851

[-- Attachment #1: Type: Text/Plain, Size: 479 bytes --]

Hi Guix,

I'm sending two patches to update eyed3 to version 0.8 (and switch it 
over to python3).  This patch adds grako, a new requirement for eyed3 
0.8.

Question: do we need a python2 variant for every python package?  At 
the moment, eyed3 is the only package using grako, and I've switched 
eyed3 to python3.  I think it's OK to leave out the python2 versio of 
grako then (we can always add it if a future package needs it)?  For 
now I included it in the patch.

Thomas

[-- Attachment #2: 0001-gnu-Add-python-grako.patch --]
[-- Type: Text/X-Patch, Size: 1647 bytes --]

From 1916f4d665b55be7e1ed9dad087dc9a24f8cdace Mon Sep 17 00:00:00 2001
From: Thomas Danckaert <thomas.danckaert@gmail.com>
Date: Thu, 27 Jul 2017 16:45:19 +0200
Subject: [PATCH 1/2] gnu: Add python-grako

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

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d110a1cb3..466ff705a 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -4983,6 +4983,34 @@ Python language binding specification.")
 (define-public python2-drmaa
   (package-with-python2 python-drmaa))
 
+(define-public python-grako
+  (package
+    (name "python-grako")
+    (version "3.99.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (pypi-uri "grako" version ".zip"))
+       (sha256
+        (base32
+         "0r63i68wcnv63rfjkasq1ah81frz61a6mzbcnaxhrkdpx84p7hzw"))))
+    (build-system python-build-system)
+    (arguments '(#:tests? #f)) ; Test file 'grako.ebnf' is missing from archive.
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("python-pytest" ,python-pytest-3.0)
+       ("python-pytest-runner" ,python-pytest-runner)))
+    (home-page "https://bitbucket.org/neogeny/grako")
+    (synopsis "EBNF parser generator")
+    (description
+     "Grako takes a grammar in a variation of EBNF as input, and outputs a
+memoizing PEG/Packrat parser in Python.")
+    (license license:bsd-3)))
+
+(define-public python2-grako
+  (package-with-python2 python-grako))
+
 (define-public python-gridmap
   (package
     (name "python-gridmap")
-- 
2.13.2


^ permalink raw reply related	[relevance 61%]

* [bug#27888] [PATCH 02/18] gnu: python-py: Update to 1.4.34.
  2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
@ 2017-07-31 20:07 65%   ` Marius Bakke
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 03/18] gnu: python-six: Really enable tests Marius Bakke
                     ` (16 subsequent siblings)
  17 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/python.scm (python-py, python2-py): Update to 1.4.34.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index a047b617c..42f5d0472 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1855,14 +1855,14 @@ standard library.")
 (define-public python-py
   (package
     (name "python-py")
-    (version "1.4.32")
+    (version "1.4.34")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "py" version))
        (sha256
         (base32
-         "19s1pql9pq85h1qzsdwgyb8a3k1qgkvh33b02m8kfqhizz8rzf64"))))
+         "1qyd5z0hv8ymxy84v5vig3vps2fvhcf4bdlksb3r03h549fmhb8g"))))
     (build-system python-build-system)
     (arguments
      ;; FIXME: "ImportError: 'test' module incorrectly imported from
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#27888] [PATCH 03/18] gnu: python-six: Really enable tests.
  2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 02/18] gnu: python-py: Update to 1.4.34 Marius Bakke
@ 2017-07-31 20:07 65%   ` Marius Bakke
  2017-07-31 20:07 40%   ` [bug#27888] [PATCH 04/18] gnu: Remove python-pytest@2 Marius Bakke
                     ` (15 subsequent siblings)
  17 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/python.scm (python-six)[arguments]: Override 'check' phase.
---
 gnu/packages/python.scm | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 42f5d0472..dd61389b8 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1179,6 +1179,12 @@ password storage.")
        (base32
         "0snmb8xffb3vsma0z67i0h0w2g2dy0p3gsgh9gi4i0kgc5l8spqh"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (zero? (system* "py.test" "-v")))))))
     (native-inputs
      `(("python-py" ,python-py)
        ("python-pytest" ,python-pytest)))
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#27888] [PATCH 06/18] gnu: python-setuptools-scm: Update to 1.15.6.
  2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
                     ` (3 preceding siblings ...)
  2017-07-31 20:07 54%   ` [bug#27888] [PATCH 05/18] gnu: python-pytest: Add a minimal variant for bootstrapping Marius Bakke
@ 2017-07-31 20:07 65%   ` Marius Bakke
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 07/18] gnu: python-pytest: Update to 3.1.3 Marius Bakke
                     ` (12 subsequent siblings)
  17 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/python.scm (python-setuptools-scm): Update to 1.15.6.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 2fe74a4e4..c40f56978 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -5250,13 +5250,13 @@ child application and control it as if a human were typing commands.")
 (define-public python-setuptools-scm
   (package
     (name "python-setuptools-scm")
-    (version "1.15.0")
+    (version "1.15.6")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "setuptools_scm" version))
               (sha256
                (base32
-                "0bwyc5markib0i7i2qlyhdzxhiywzxbkfiapldma8m91m82jvwfs"))))
+                "0pzvfmx8s20yrgkgwfbxaspz2x1g38qv61jpm0ns91lrb22ldas9"))))
     (build-system python-build-system)
     (home-page "https://github.com/pypa/setuptools_scm/")
     (synopsis "Manage Python package versions in SCM metadata")
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#27888] [PATCH 07/18] gnu: python-pytest: Update to 3.1.3.
  2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
                     ` (4 preceding siblings ...)
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 06/18] gnu: python-setuptools-scm: Update to 1.15.6 Marius Bakke
@ 2017-07-31 20:07 65%   ` Marius Bakke
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 08/18] gnu: python-pyflakes: Update to 1.5.0 Marius Bakke
                     ` (11 subsequent siblings)
  17 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/python.scm (python-pytest-bootstrap): Update to 3.1.3.
[native-inputs]: Add PYTHON-SETUPTOOLS-SCM.
(python-pytest)[native-inputs]: Inherit.
---
 gnu/packages/python.scm | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index c40f56978..955bd670a 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1889,17 +1889,19 @@ code introspection, and logging.")
 (define python-pytest-bootstrap
   (package
     (name "python-pytest-bootstrap")
-    (version "3.0.7")
+    (version "3.1.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pytest" version))
        (sha256
         (base32
-         "1asc4b2nd2a4f0g3r12y97rslq5wliji7b73wwkvdrm5s7mrc1mp"))))
+         "01k2abl6x60ac7wx5k9rw602n1b5r39xix6sjly5c974ywr1hph9"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f))
+    (native-inputs
+     `(("python-setuptools-scm" ,python-setuptools-scm)))
     (propagated-inputs
      `(("python-py" ,python-py)))
     (home-page "http://pytest.org")
@@ -1937,7 +1939,8 @@ and many external plugins.")
        ("bash" ,bash)
        ("python-hypothesis" ,python-hypothesis)
        ("python-nose" ,python-nose)
-       ("python-mock" ,python-mock)))
+       ("python-mock" ,python-mock)
+       ,@(package-native-inputs python-pytest-bootstrap)))
     (properties `((python2-variant . ,(delay python2-pytest-bootstrap))))))
 
 (define-public python2-pytest
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#27888] [PATCH 05/18] gnu: python-pytest: Add a minimal variant for bootstrapping.
  2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
                     ` (2 preceding siblings ...)
  2017-07-31 20:07 40%   ` [bug#27888] [PATCH 04/18] gnu: Remove python-pytest@2 Marius Bakke
@ 2017-07-31 20:07 54%   ` Marius Bakke
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 06/18] gnu: python-setuptools-scm: Update to 1.15.6 Marius Bakke
                     ` (13 subsequent siblings)
  17 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/python.scm (python-pytest-bootstrap, python2-pytest-bootstrap):
New variables.
(python-pytest, python2-pytest): Inherit from bootstrap variants.
(python-six, python-hypothesis, python-pytest-runner,
python-mccabe)[native-inputs]: Use PYTHON-PYTEST-BOOTSTRAP instead of
PYTHON-PYTEST.
---
 gnu/packages/python.scm | 42 ++++++++++++++++++++++++++----------------
 1 file changed, 26 insertions(+), 16 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 18067d388..2fe74a4e4 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1187,7 +1187,7 @@ password storage.")
              (zero? (system* "py.test" "-v")))))))
     (native-inputs
      `(("python-py" ,python-py)
-       ("python-pytest" ,python-pytest)))
+       ("python-pytest" ,python-pytest-bootstrap)))
     (home-page "http://pypi.python.org/pypi/six/")
     (synopsis "Python 2 and 3 compatibility utilities")
     (description
@@ -1886,9 +1886,9 @@ code introspection, and logging.")
 (define-public python2-py
   (package-with-python2 python-py))
 
-(define-public python-pytest
+(define python-pytest-bootstrap
   (package
-    (name "python-pytest")
+    (name "python-pytest-bootstrap")
     (version "3.0.7")
     (source
      (origin
@@ -1899,6 +1899,25 @@ code introspection, and logging.")
          "1asc4b2nd2a4f0g3r12y97rslq5wliji7b73wwkvdrm5s7mrc1mp"))))
     (build-system python-build-system)
     (arguments
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-py" ,python-py)))
+    (home-page "http://pytest.org")
+    (synopsis "Python testing library")
+    (description
+     "Pytest is a testing tool that provides auto-discovery of test modules
+and functions, detailed info on failing assert statements, modular fixtures,
+and many external plugins.")
+    (license license:expat)))
+
+(define-public python2-pytest-bootstrap
+  (package-with-python2 python-pytest-bootstrap))
+
+(define-public python-pytest
+  (package
+    (inherit python-pytest-bootstrap)
+    (name "python-pytest")
+    (arguments
      `(#:phases
        (modify-phases %standard-phases
          (add-before 'check 'disable-invalid-tests
@@ -1913,22 +1932,13 @@ code introspection, and logging.")
                                "(reason=\"Assumes that /usr exists.\")\n    "
                                line)))
              #t)))))
-    (propagated-inputs
-     `(("python-py" ,python-py)))
     (native-inputs
      `(;; Tests need the "regular" bash since 'bash-final' lacks `compgen`.
        ("bash" ,bash)
        ("python-hypothesis" ,python-hypothesis)
        ("python-nose" ,python-nose)
        ("python-mock" ,python-mock)))
-    (home-page "http://pytest.org")
-    (synopsis "Python testing library")
-    (description
-     "Pytest is a testing tool that provides auto-discovery of test modules
-and functions, detailed info on failing assert statements, modular fixtures,
-and many external plugins.")
-    (properties `((python2-variant . ,(delay python2-pytest))))
-    (license license:expat)))
+    (properties `((python2-variant . ,(delay python2-pytest-bootstrap))))))
 
 (define-public python2-pytest
   (let ((base (package-with-python2
@@ -1998,7 +2008,7 @@ supports coverage of subprocesses.")
                (string-append "version = \"" ,version "\"")))
             #t)))))
     (native-inputs
-     `(("python-pytest" ,python-pytest)
+     `(("python-pytest" ,python-pytest-bootstrap)
        ("python-setuptools-scm" ,python-setuptools-scm)))
     (home-page "https://github.com/pytest-dev/pytest-runner")
     (synopsis "Invoke py.test as a distutils command")
@@ -6722,7 +6732,7 @@ PEP 8.")
             "0yr08a36h8lqlif10l4xcikbbig7q8f41gqywir7rrvnv3mi4aws"))))
     (build-system python-build-system)
     (native-inputs
-      `(("python-pytest" ,python-pytest)
+      `(("python-pytest" ,python-pytest-bootstrap)
         ("python-pytest-runner" ,python-pytest-runner)))
     (home-page "https://github.com/flintwork/mccabe")
     (synopsis "McCabe checker, plugin for flake8")
@@ -9774,7 +9784,7 @@ Amazon Web Services (AWS) API.")
     (build-system python-build-system)
     (native-inputs
      `(("python-flake8" ,python-flake8)
-       ("python-pytest" ,python-pytest)))
+       ("python-pytest" ,python-pytest-bootstrap)))
     (synopsis "Library for property based testing")
     (description "Hypothesis is a library for testing your Python code against a
 much larger range of examples than you would ever want to write by hand.  It’s
-- 
2.13.3

^ permalink raw reply related	[relevance 54%]

* [bug#27888] [PATCH 08/18] gnu: python-pyflakes: Update to 1.5.0.
  2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
                     ` (5 preceding siblings ...)
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 07/18] gnu: python-pytest: Update to 3.1.3 Marius Bakke
@ 2017-07-31 20:07 65%   ` Marius Bakke
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 09/18] gnu: python-mccabe: Update to 0.6.1 Marius Bakke
                     ` (10 subsequent siblings)
  17 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/python.scm (python-pyflakes): Update to 1.5.0.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 955bd670a..d0a979a2a 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -6703,14 +6703,14 @@ PEP 8.")
 (define-public python-pyflakes
   (package
     (name "python-pyflakes")
-    (version "1.0.0")
+    (version "1.5.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "pyflakes" version))
         (sha256
           (base32
-            "0qs2sgqszq7wcplis8509wk2ygqcrwzbs1ghfj3svvivq2j377pk"))))
+            "1x1pcca4a24k4pw8x1c77sgi58cg1wl2k38mp8a25k608pzls3da"))))
     (build-system python-build-system)
     (home-page
       "https://github.com/pyflakes/pyflakes")
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#27888] [PATCH 09/18] gnu: python-mccabe: Update to 0.6.1.
  2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
                     ` (6 preceding siblings ...)
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 08/18] gnu: python-pyflakes: Update to 1.5.0 Marius Bakke
@ 2017-07-31 20:07 65%   ` Marius Bakke
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 10/18] gnu: python-mock@2: Add dependency on python-six Marius Bakke
                     ` (9 subsequent siblings)
  17 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/python.scm (python-mccabe): Update to 0.6.1.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d0a979a2a..6fd0f014c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -6725,14 +6725,14 @@ PEP 8.")
 (define-public python-mccabe
   (package
     (name "python-mccabe")
-    (version "0.4.0")
+    (version "0.6.1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "mccabe" version))
         (sha256
           (base32
-            "0yr08a36h8lqlif10l4xcikbbig7q8f41gqywir7rrvnv3mi4aws"))))
+            "07w3p1qm44hgxf3vvwz84kswpsx6s7kvaibzrsx5dzm0hli1i3fx"))))
     (build-system python-build-system)
     (native-inputs
       `(("python-pytest" ,python-pytest-bootstrap)
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#27888] [PATCH 04/18] gnu: Remove python-pytest@2.
  2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 02/18] gnu: python-py: Update to 1.4.34 Marius Bakke
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 03/18] gnu: python-six: Really enable tests Marius Bakke
@ 2017-07-31 20:07 40%   ` Marius Bakke
  2017-07-31 20:07 54%   ` [bug#27888] [PATCH 05/18] gnu: python-pytest: Add a minimal variant for bootstrapping Marius Bakke
                     ` (14 subsequent siblings)
  17 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/python.scm (python-pytest): Update to 3.0.7.
[source]: Move substitution to ...
[arguments]: ... here. Incorporate phase from pytest-3.0.
[native-inputs]: Add PYTHON-HYPOTHESIS.
(python-pytest-3.0): Remove variable.
(python2-pytest-3.0): Rename to ...
(python2-pytest): ... this.
[native-inputs]: Add PYTHON2-ENUM34.
* gnu/packages/backup.scm (borg)[native-inputs]: Replace PYTHON-PYTEST-3.0
with PYTHON-PYTEST.
* gnu/packages/calendar.scm (khal): Likewise.
* gnu/packages/python.scm (python-sphinx-1.6, python-sphinx-1.5.3,
python-pexpect, python-cryptography, python-pyopenssl, python-pytest-warnings,
python-pytest-capturelog, python-pytest-catchlog, python-marshmallow,
python-apispec, python-flasgger): Likewise.
* gnu/packages/web.scm (python-internetarchive): Likewise.
---
 gnu/packages/backup.scm   |  4 +--
 gnu/packages/calendar.scm |  3 +-
 gnu/packages/python.scm   | 86 ++++++++++++++++++-----------------------------
 gnu/packages/web.scm      |  2 +-
 4 files changed, 35 insertions(+), 60 deletions(-)

diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 20b375abe..974cc8fe6 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -534,9 +534,7 @@ detection, and lossless compression.")
     (native-inputs
      `(("python-cython" ,python-cython)
        ("python-setuptools-scm" ,python-setuptools-scm)
-       ;; Borg 1.0.8's test suite uses 'tmpdir_factory', which was introduced in
-       ;; pytest 2.8.
-       ("python-pytest" ,python-pytest-3.0)
+       ("python-pytest" ,python-pytest)
        ;; For generating the documentation.
        ("python-sphinx" ,python-sphinx)
        ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)))
diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm
index b022c0efa..bd2381aed 100644
--- a/gnu/packages/calendar.scm
+++ b/gnu/packages/calendar.scm
@@ -113,8 +113,7 @@ data units.")
                                    "/share/zoneinfo/Zulu"))
             (zero? (system* "py.test" "tests")))))))
     (native-inputs
-      ;; XXX Uses tmpdir_factory, introduced in pytest 2.8.
-     `(("python-pytest" ,python-pytest-3.0)
+     `(("python-pytest" ,python-pytest)
        ("python-pytest-cov" ,python-pytest-cov)
        ("python-setuptools-scm" ,python-setuptools-scm)
        ;; Required for tests
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index dd61389b8..18067d388 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1889,28 +1889,36 @@ code introspection, and logging.")
 (define-public python-pytest
   (package
     (name "python-pytest")
-    (version "2.7.3")
+    (version "3.0.7")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/p/pytest/pytest-"
-             version ".tar.gz"))
+       (uri (pypi-uri "pytest" version))
        (sha256
         (base32
-         "1z4yi986f9n0p8qmzmn21m21m8j1x78hk3505f89baqm6pdw7afm"))
-       (modules '((guix build utils)))
-       (snippet
-        ;; One of the tests involves the /usr directory, so it fails.
-        '(substitute* "testing/test_argcomplete.py"
-           (("def test_remove_dir_prefix\\(self\\):")
-            "@pytest.mark.xfail\n    def test_remove_dir_prefix(self):")))))
+         "1asc4b2nd2a4f0g3r12y97rslq5wliji7b73wwkvdrm5s7mrc1mp"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'disable-invalid-tests
+           (lambda _
+             ;; Some tests involves the /usr directory, and fails.
+             (substitute* "testing/test_argcomplete.py"
+               (("def test_remove_dir_prefix\\(self\\):")
+                "@pytest.mark.xfail\n    def test_remove_dir_prefix(self):"))
+             (substitute* "testing/test_argcomplete.py"
+               (("def test_remove_dir_prefix" line)
+                (string-append "@pytest.mark.skip"
+                               "(reason=\"Assumes that /usr exists.\")\n    "
+                               line)))
+             #t)))))
     (propagated-inputs
      `(("python-py" ,python-py)))
     (native-inputs
      `(;; Tests need the "regular" bash since 'bash-final' lacks `compgen`.
        ("bash" ,bash)
+       ("python-hypothesis" ,python-hypothesis)
        ("python-nose" ,python-nose)
        ("python-mock" ,python-mock)))
     (home-page "http://pytest.org")
@@ -1919,42 +1927,12 @@ code introspection, and logging.")
      "Pytest is a testing tool that provides auto-discovery of test modules
 and functions, detailed info on failing assert statements, modular fixtures,
 and many external plugins.")
+    (properties `((python2-variant . ,(delay python2-pytest))))
     (license license:expat)))
 
 (define-public python2-pytest
-  (package-with-python2 python-pytest))
-
-;; Some packages require a newer pytest.
-(define-public python-pytest-3.0
-  (package
-    (inherit python-pytest)
-    (name "python-pytest")
-    (version "3.0.7")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "pytest" version))
-              (sha256
-               (base32
-                "1asc4b2nd2a4f0g3r12y97rslq5wliji7b73wwkvdrm5s7mrc1mp"))))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'disable-invalid-test
-           (lambda _
-             (substitute* "testing/test_argcomplete.py"
-               (("def test_remove_dir_prefix" line)
-                (string-append "@pytest.mark.skip"
-                               "(reason=\"Assumes that /usr exists.\")\n    "
-                               line)))
-             #t)))))
-    (native-inputs
-     `(("python-hypothesis" ,python-hypothesis)
-       ,@(package-native-inputs python-pytest)))
-    (properties `((python2-variant . ,(delay python2-pytest-3.0))))))
-
-(define-public python2-pytest-3.0
   (let ((base (package-with-python2
-                (strip-python2-variant python-pytest-3.0))))
+                (strip-python2-variant python-pytest))))
     (package (inherit base)
       (native-inputs
         `(("python2-enum34" ,python2-enum34)
@@ -3296,7 +3274,7 @@ sources.")
      `(("python-sphinxcontrib-websupport" ,python-sphinxcontrib-websupport)
        ,@(package-propagated-inputs python-sphinx)))
     (native-inputs
-     `(("python-pytest" ,python-pytest-3.0)
+     `(("python-pytest" ,python-pytest)
        ("imagemagick" ,imagemagick) ; for "convert"
        ,@(package-native-inputs python-sphinx)))
     (properties '())))
@@ -3314,7 +3292,7 @@ sources.")
         (base32
          "0kw1axswbvaavr8ggyf4qr6hnisnrzlbkkcdada69vk1x9xjassg"))))
     (native-inputs
-     `(("python-pytest" ,python-pytest-3.0)
+     `(("python-pytest" ,python-pytest)
        ,@(package-native-inputs python-sphinx)))))
 
 (define-public python2-sphinx
@@ -5241,7 +5219,7 @@ cluster without needing to write any wrapper code yourself.")
          (replace 'check (lambda _ (zero? (system* "nosetests" "-v")))))))
     (native-inputs
      `(("python-nose" ,python-nose)
-       ("python-pytest" ,python-pytest-3.0)
+       ("python-pytest" ,python-pytest)
        ("man-db" ,man-db)
        ("which" ,which)
        ("bash-full" ,bash)))                 ;full Bash for 'test_replwrap.py'
@@ -7691,7 +7669,7 @@ responses, rather than doing any computation.")
        ("python-hypothesis" ,python-hypothesis)
        ("python-pretend" ,python-pretend)
        ("python-pytz" ,python-pytz)
-       ("python-pytest" ,python-pytest-3.0)))
+       ("python-pytest" ,python-pytest)))
     (home-page "https://github.com/pyca/cryptography")
     (synopsis "Cryptographic recipes and primitives for Python")
     (description
@@ -7751,7 +7729,7 @@ message digests and key derivation functions.")
     (native-inputs
      `(("python-flaky" ,python-flaky)
        ("python-pretend" ,python-pretend)
-       ("python-pytest" ,python-pytest-3.0)))
+       ("python-pytest" ,python-pytest)))
     (home-page "https://github.com/pyca/pyopenssl")
     (synopsis "Python wrapper module around the OpenSSL library")
     (description
@@ -14493,7 +14471,7 @@ for Flask.")
          "0gf2dpahpl5igb7jh1sr9acj3z3gp7zahqdqb69nk6wx01c8kc1g"))))
     (build-system python-build-system)
     (propagated-inputs
-     `(("pytest" ,python-pytest-3.0)))
+     `(("pytest" ,python-pytest)))
     (home-page "https://github.com/fschulze/pytest-warnings")
     (synopsis "Pytest plugin to list Python warnings in pytest report")
     (description
@@ -14517,7 +14495,7 @@ pytest report.")
          "038049nyjl7di59ycnxvc9nydivc5m8np3hqq84j2iirkccdbs5n"))))
     (build-system python-build-system)
     (propagated-inputs
-     `(("pytest" ,python-pytest-3.0)))
+     `(("pytest" ,python-pytest)))
     (home-page "http://bitbucket.org/memedough/pytest-capturelog/overview")
     (synopsis "Pytest plugin to catch log messages")
     (description
@@ -14542,7 +14520,7 @@ pytest report.")
     (native-inputs
      `(("unzip" ,unzip)))
     (propagated-inputs
-     `(("pytest" ,python-pytest-3.0)))
+     `(("pytest" ,python-pytest)))
     (home-page "https://github.com/eisensheng/pytest-catchlog")
     (synopsis "Pytest plugin to catch log messages")
     (description
@@ -15533,7 +15511,7 @@ address is valid and really exists.")
      `(("python-dateutil" ,python-dateutil)
        ("python-simplejson" ,python-simplejson)))
     (native-inputs
-     `(("python-pytest-3.0" ,python-pytest-3.0)
+     `(("python-pytest" ,python-pytest)
        ("python-pytz" ,python-pytz)))
     (home-page "https://github.com/marshmallow-code/marshmallow")
     (synopsis "Convert complex datatypes to and from native
@@ -15580,7 +15558,7 @@ complex datatypes to and from native Python datatypes.")
     (propagated-inputs
      `(("python-pyyaml" ,python-pyyaml)))
     (native-inputs
-     `(("python-pytest-3.0" ,python-pytest-3.0)
+     `(("python-pytest" ,python-pytest)
        ("python-flask" ,python-flask)
        ("python-marshmallow" ,python-marshmallow)
        ("python-tornado" ,python-tornado)
@@ -15633,7 +15611,7 @@ Swagger 2.0).")
        ("python-flake8" ,python-flake8)
        ("python-flask-restful" ,python-flask-restful)
        ("python-flex" ,python-flex)
-       ("python-pytest-3.0" ,python-pytest-3.0)
+       ("python-pytest" ,python-pytest)
        ("python-pytest-cov" ,python-pytest-cov)
        ("python-marshmallow" ,python-marshmallow)
        ("python-apispec" ,python-apispec)))
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 9c3373f8d..f691705d5 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -4763,7 +4763,7 @@ command-line arguments or read from stdin.")
        ("python-schema" ,python-schema-0.5)
        ("python-backports-csv" ,python-backports-csv)))
     (native-inputs
-     `(("python-pytest-3.0" ,python-pytest-3.0)
+     `(("python-pytest" ,python-pytest)
        ("python-pytest-capturelog" ,python-pytest-capturelog)
        ("python-responses" ,python-responses)))
     (home-page "https://github.com/jjjake/internetarchive")
-- 
2.13.3

^ permalink raw reply related	[relevance 40%]

* [bug#27888] [PATCH 10/18] gnu: python-mock@2: Add dependency on python-six.
  2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
                     ` (7 preceding siblings ...)
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 09/18] gnu: python-mccabe: Update to 0.6.1 Marius Bakke
@ 2017-07-31 20:07 65%   ` Marius Bakke
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 11/18] gnu: Add python2-enum Marius Bakke
                     ` (8 subsequent siblings)
  17 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/python.scm (python-mock-2)[propagated-inputs]: Add PYTHON-SIX.
---
 gnu/packages/python.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 6fd0f014c..37b8c5594 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -970,6 +970,7 @@ have been used.")
           "1flbpksir5sqrvq2z0dp8sl4bzbadg21sj4d42w3klpdfvgvcn5i"))))
     (propagated-inputs
      `(("python-pbr" ,python-pbr-minimal)
+       ("python-six" ,python-six)
        ,@(package-propagated-inputs python-mock)))))
 
 (define-public python-setuptools
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#27888] [PATCH 11/18] gnu: Add python2-enum.
  2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
                     ` (8 preceding siblings ...)
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 10/18] gnu: python-mock@2: Add dependency on python-six Marius Bakke
@ 2017-07-31 20:07 65%   ` Marius Bakke
  2017-07-31 20:07 58%   ` [bug#27888] [PATCH 12/18] gnu: python-flake8: Update to 3.4.1 Marius Bakke
                     ` (7 subsequent siblings)
  17 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/python.scm (python2-enum): New variable.
---
 gnu/packages/python.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 37b8c5594..0d90d2017 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1547,6 +1547,28 @@ bug tracker.")
     (home-page "http://www.liquidx.net/pybugz/")
     (license license:gpl2)))
 
+(define-public python2-enum
+  (package
+    (name "python2-enum")
+    (version "0.4.6")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "enum" version))
+              (sha256
+               (base32
+                "13lk3yrwj42vl30kw3c194f739nrfrdg64s6i0v2p636n4k8brsl"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (home-page "http://pypi.python.org/pypi/enum/")
+    (synopsis "Robust enumerated type support in Python")
+    (description
+     "This provides a module for robust enumerations in Python.  It has
+been superseded by the Python standard library and is provided only for
+compatibility.")
+    ;; Choice of either license.
+    (license (list license:gpl3+ license:psfl))))
+
 (define-public python-enum34
   (package
     (name "python-enum34")
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#27888] [PATCH 13/18] gnu: Add python-linecache2.
  2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
                     ` (10 preceding siblings ...)
  2017-07-31 20:07 58%   ` [bug#27888] [PATCH 12/18] gnu: python-flake8: Update to 3.4.1 Marius Bakke
@ 2017-07-31 20:07 65%   ` Marius Bakke
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 14/18] gnu: Add python-traceback2 Marius Bakke
                     ` (5 subsequent siblings)
  17 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/python.scm (python-linecache2, python2-linecache2): New variables.
---
 gnu/packages/python.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index a23d6aa1c..be556959d 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1819,6 +1819,30 @@ interfaces and processes.")
 (define-public python2-nose2
   (package-with-python2 python-nose2))
 
+(define-public python-linecache2
+  (package
+    (name "python-linecache2")
+    (version "1.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "linecache2" version))
+              (sha256
+               (base32
+                "0z79g3ds5wk2lvnqw0y2jpakjf32h95bd9zmnvp7dnqhf57gy9jb"))))
+    (build-system python-build-system)
+    (arguments `(#:tests? #f)) ; FIXME: dependency cycle on unittest2.
+    (native-inputs
+     `(("python-pbr" ,python-pbr-minimal)))
+    (home-page "https://github.com/testing-cabal/linecache2")
+    (synopsis "Backports of the linecache module")
+    (description
+     "Backports of the linecache module to older versions of Python.")
+    ;; No explicit license, but code is taken from Python standard library.
+    (license license:psfl)))
+
+(define-public python2-linecache2
+  (package-with-python2 python-linecache2))
+
 (define-public python-unittest2
   (package
     (name "python-unittest2")
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#27888] [PATCH 12/18] gnu: python-flake8: Update to 3.4.1.
  2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
                     ` (9 preceding siblings ...)
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 11/18] gnu: Add python2-enum Marius Bakke
@ 2017-07-31 20:07 58%   ` Marius Bakke
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 13/18] gnu: Add python-linecache2 Marius Bakke
                     ` (6 subsequent siblings)
  17 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/python.scm (python-flake8): Update to 3.4.1.
[source]: Remove obsolete snippet.
[arguments]: Override 'check' phase.
[propagated-inputs]: Remove PYTHON-PEP8. Add PYTHON-PYCODESTYLE and
PYTHON-SETUPTOOLS.
[native-inputs]: Change PYTHON-MOCK to PYTHON-MOCK-2. Remove PYTHON-NOSE. Add
PYTHON-PYTEST-BOOTSTRAP and PYTHON-PYTEST-RUNNER.
[properties]: Declare python2 variant.
* gnu/packages/python.scm (python-flake8)[propagated-inputs]: Add PYTHON2-ENUM
and PYTHON2-CONFIGPARSER.
---
 gnu/packages/python.scm | 41 +++++++++++++++++++++++++----------------
 1 file changed, 25 insertions(+), 16 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 0d90d2017..a23d6aa1c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -6831,39 +6831,48 @@ complexity of Python source code.")
 (define-public python-flake8
   (package
     (name "python-flake8")
-    (version "2.5.4")
+    (version "3.4.1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "flake8" version))
         (sha256
           (base32
-            "0bs9cz4fr99r2rwig1b8jwaadl1nan7kgpdzqwj0bwbckwbmh7nc"))
-        (modules '((guix build utils)))
-        (snippet
-         '(begin
-            ;; Remove pre-compiled .pyc files from source.
-            (for-each delete-file-recursively
-                      (find-files "." "__pycache__" #:directories? #t))
-            (for-each delete-file (find-files "." "\\.pyc$"))
-            #t))))
-    (build-system python-build-system)
-    (propagated-inputs
-      `(("python-pep8" ,python-pep8)
+            "1n0i38592vy3q0x2a9bf8z6rhhn04i30wsn5i5zzcj7qkxvl8062"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'check)
+         (add-after 'install 'check
+          (lambda* (#:key inputs outputs #:allow-other-keys)
+            (add-installed-pythonpath inputs outputs)
+            (zero? (system* "pytest" "-v")))))))
+    (propagated-inputs
+      `(("python-pycodestyle" ,python-pycodestyle)
         ("python-pyflakes" ,python-pyflakes)
+        ;; flake8 depends on a newer setuptools than provided by python.
+        ("python-setuptools" ,python-setuptools)
         ("python-mccabe" ,python-mccabe)))
     (native-inputs
-      `(("python-mock" ,python-mock) ; TODO: only required for < 3.3
-        ("python-nose" ,python-nose)))
+      `(("python-mock" ,python-mock-2) ; TODO: only required for < 3.3
+        ("python-pytest" ,python-pytest-bootstrap)
+        ("python-pytest-runner" ,python-pytest-runner)))
     (home-page "https://gitlab.com/pycqa/flake8")
     (synopsis
       "The modular source code checker: pep8, pyflakes and co")
     (description
       "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
+    (properties `((python2-variant . ,(delay python2-flake8))))
     (license license:expat)))
 
 (define-public python2-flake8
-  (package-with-python2 python-flake8))
+  (let ((base (package-with-python2 (strip-python2-variant python-flake8))))
+    (package (inherit base)
+      (propagated-inputs
+       `(("python2-configparser" ,python2-configparser)
+         ("python2-enum" ,python2-enum)
+          ,@(package-propagated-inputs base))))))
 
 (define-public python-flake8-polyfill
   (package
-- 
2.13.3

^ permalink raw reply related	[relevance 58%]

* [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2.
       [not found]     <handler.27888.B.150153147718000.ack@debbugs.gnu.org>
@ 2017-07-31 20:07 51% ` Marius Bakke
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 02/18] gnu: python-py: Update to 1.4.34 Marius Bakke
                     ` (17 more replies)
  0 siblings, 18 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/patches/python-3.5-fix-tests.patch: Rename to ...
* gnu/packages/patches/python-3-fix-tests.patch: ... this. Adjust and disable
more tests.
* gnu/packages/patches/python-3.5-getentropy-on-old-kernels.patch: Delete file.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/python.scm (python-2.7)[argument]: Patch '/bin/sh' in one more file.
(python-3.5): Rename to ...
(python-3.6): ... this. Update to 3.6.2.
[source](patches): Remove obsolete patch, adjust to patch rename.
(python-3): Use PYTHON-3.6.
---
 gnu/local.mk                                       |   3 +-
 gnu/packages/patches/python-3-fix-tests.patch      | 130 ++++
 gnu/packages/patches/python-3.5-fix-tests.patch    |  69 --
 .../python-3.5-getentropy-on-old-kernels.patch     | 720 ---------------------
 gnu/packages/python.scm                            |  12 +-
 5 files changed, 137 insertions(+), 797 deletions(-)
 create mode 100644 gnu/packages/patches/python-3-fix-tests.patch
 delete mode 100644 gnu/packages/patches/python-3.5-fix-tests.patch
 delete mode 100644 gnu/packages/patches/python-3.5-getentropy-on-old-kernels.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index baada1cf0..62ef61589 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -932,8 +932,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-2.7-source-date-epoch.patch	\
   %D%/packages/patches/python-3-deterministic-build-info.patch	\
   %D%/packages/patches/python-3-search-paths.patch		\
-  %D%/packages/patches/python-3.5-fix-tests.patch		\
-  %D%/packages/patches/python-3.5-getentropy-on-old-kernels.patch	\
+  %D%/packages/patches/python-3-fix-tests.patch			\
   %D%/packages/patches/python-dendropy-fix-tests.patch		\
   %D%/packages/patches/python-fix-tests.patch			\
   %D%/packages/patches/python-genshi-add-support-for-python-3.4-AST.patch	\
diff --git a/gnu/packages/patches/python-3-fix-tests.patch b/gnu/packages/patches/python-3-fix-tests.patch
new file mode 100644
index 000000000..dec58dd9c
--- /dev/null
+++ b/gnu/packages/patches/python-3-fix-tests.patch
@@ -0,0 +1,130 @@
+Additional test fixes which affect Python 3.5 (and presumably later) but not
+prior revisions of Python.
+
+--- Lib/test/test_pathlib.py     2014-03-01 03:02:36.088311000 +0100
++++ Lib/test/test_pathlib.py     2014-03-01 04:56:37.768311000 +0100
+@@ -2132,8 +2132,7 @@
+         self.assertEqual(given, expect)
+         self.assertEqual(set(p.rglob("FILEd*")), set())
+ 
+-    @unittest.skipUnless(hasattr(pwd, 'getpwall'),
+-                         'pwd module does not expose getpwall()')
++    @unittest.skipIf(True, "Guix builder home is '/' which causes trouble for these tests")
+     def test_expanduser(self):
+         P = self.cls
+         support.import_module('pwd')
+--- Lib/test/test_tarfile.py        2016-02-24 19:22:52.597208055 +0000
++++ Lib/test/test_tarfile.py     2016-02-24 20:50:48.941950135 +0000
+@@ -2305,11 +2305,14 @@
+     try:
+         import pwd, grp
+     except ImportError:
+         return False
+-    if pwd.getpwuid(0)[0] != 'root':
+-        return False
+-    if grp.getgrgid(0)[0] != 'root':
++    try:
++        if pwd.getpwuid(0)[0] != 'root':
++            return False
++        if grp.getgrgid(0)[0] != 'root':
++            return False
++    except KeyError:
+         return False
+     return True
+
+
+--- Lib/test/test_asyncio/test_base_events.py
++++ Lib/test/test_asyncio/test_base_events.py
+@@ -1216,6 +1216,8 @@
+         self._test_create_connection_ip_addr(m_socket, False)
+
+     @patch_socket
++    @unittest.skipUnless(support.is_resource_enabled('network'),
++                         'network is not enabled')
+     def test_create_connection_service_name(self, m_socket):
+         m_socket.getaddrinfo = socket.getaddrinfo
+         sock = m_socket.socket.return_value
+
+--- Lib/test/test_pdb.py.org    2017-03-12 03:09:01.991856701 +0100
++++ Lib/test/test_pdb.py        2017-03-12 03:26:17.742572869 +0100
+
+For some reason, KeyboardInterrupts do not work in the build
+environment (lack of controlling TTY?). Just change the expected
+outcome. Unfortunately, this will make it fail for users running
+`python -m test test_pdb test_pdb` interactively.
+
+@@ -928,11 +928,11 @@
+     > <doctest test.test_pdb.test_pdb_issue_20766[0]>(6)test_function()
+     -> print('pdb %d: %s' % (i, sess._previous_sigint_handler))
+     (Pdb) continue
+-    pdb 1: <built-in function default_int_handler>
++    pdb 1: Handlers.SIG_IGN
+     > <doctest test.test_pdb.test_pdb_issue_20766[0]>(5)test_function()
+     -> sess.set_trace(sys._getframe())
+     (Pdb) continue
+-    pdb 2: <built-in function default_int_handler>
++    pdb 2: Handlers.SIG_IGN
+     """
+
+ class PdbTestCase(unittest.TestCase):
+--- Lib/test/test_socket.py
++++ Lib/test/test_socket.py
+@@ -802,6 +802,8 @@
+         if not fqhn in all_host_names:
+             self.fail("Error testing host resolution mechanisms. (fqdn: %s, all: %s)" % (fqhn, repr(all_host_names)))
+ 
++    @unittest.skipUnless(support.is_resource_enabled('network'),
++                         'network is not enabled')
+     def test_host_resolution(self):
+         for addr in [support.HOST, '10.0.0.1', '255.255.255.255']:
+             self.assertEqual(socket.gethostbyname(addr), addr)
+--- Lib/test/test_spwd.py
++++ Lib/test/test_spwd.py
+@@ -5,8 +5,7 @@
+ spwd = support.import_module('spwd')
+ 
+ 
+-@unittest.skipUnless(hasattr(os, 'geteuid') and os.geteuid() == 0,
+-                     'root privileges required')
++@unittest.skipUnless(os.path.exists("/etc/shadow"), 'spwd tests require /etc/shadow')
+ class TestSpwdRoot(unittest.TestCase):
+ 
+     def test_getspall(self):
+@@ -56,8 +55,7 @@
+             self.assertRaises(TypeError, spwd.getspnam, bytes_name)
+ 
+ 
+-@unittest.skipUnless(hasattr(os, 'geteuid') and os.geteuid() != 0,
+-                     'non-root user required')
++@unittest.skipUnless(os.path.exists("/etc/shadow"), 'spwd tests require /etc/shadow')
+ class TestSpwdNonRoot(unittest.TestCase):
+ 
+     def test_getspnam_exception(self):
+--- Lib/test/test_regrtest.py
++++ Lib/test/test_regrtest.py
+@@ -700,6 +700,7 @@
+         output = self.run_tests('--fromfile', filename)
+         self.check_executed_tests(output, tests)
+ 
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.')
+     def test_interrupted(self):
+         code = TEST_INTERRUPTED
+         test = self.create_test('sigint', code=code)
+@@ -717,6 +718,7 @@
+                  % (self.TESTNAME_REGEX, len(tests)))
+         self.check_line(output, regex)
+ 
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.')
+     def test_slow_interrupted(self):
+         # Issue #25373: test --slowest with an interrupted test
+         code = TEST_INTERRUPTED
+--- Lib/test/test_generators.py
++++ Lib/test/test_generators.py
+@@ -29,6 +29,7 @@
+         else:
+             return "FAILED"
+ 
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment')
+     def test_raise_and_yield_from(self):
+         gen = self.generator1()
+         gen.send(None)
diff --git a/gnu/packages/patches/python-3.5-fix-tests.patch b/gnu/packages/patches/python-3.5-fix-tests.patch
deleted file mode 100644
index 9778b88db..000000000
--- a/gnu/packages/patches/python-3.5-fix-tests.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-Additional test fixes which affect Python 3.5 (and presumably later) but not
-prior revisions of Python.
-
---- Lib/test/test_pathlib.py     2014-03-01 03:02:36.088311000 +0100
-+++ Lib/test/test_pathlib.py     2014-03-01 04:56:37.768311000 +0100
-@@ -1986,8 +1986,9 @@
-         expect = set() if not support.fs_is_case_insensitive(BASE) else given
-         self.assertEqual(given, expect)
-         self.assertEqual(set(p.rglob("FILEd*")), set())
- 
-+    @unittest.skipIf(True, "Guix builder home is '/' which causes trouble for these tests")
-     def test_expanduser(self):
-         P = self.cls
-         support.import_module('pwd')
-         import pwd
---- Lib/test/test_tarfile.py        2016-02-24 19:22:52.597208055 +0000
-+++ Lib/test/test_tarfile.py     2016-02-24 20:50:48.941950135 +0000
-@@ -2305,11 +2305,14 @@
-     try:
-         import pwd, grp
-     except ImportError:
-         return False
--    if pwd.getpwuid(0)[0] != 'root':
--        return False
--    if grp.getgrgid(0)[0] != 'root':
-+    try:
-+        if pwd.getpwuid(0)[0] != 'root':
-+            return False
-+        if grp.getgrgid(0)[0] != 'root':
-+            return False
-+    except KeyError:
-         return False
-     return True
-
-
---- Lib/test/test_asyncio/test_base_events.py
-+++ Lib/test/test_asyncio/test_base_events.py
-@@ -1216,6 +1216,8 @@
-         self._test_create_connection_ip_addr(m_socket, False)
-
-     @patch_socket
-+    @unittest.skipUnless(support.is_resource_enabled('network'),
-+                         'network is not enabled')
-     def test_create_connection_service_name(self, m_socket):
-         m_socket.getaddrinfo = socket.getaddrinfo
-         sock = m_socket.socket.return_value
-
---- Lib/test/test_pdb.py.org    2017-03-12 03:09:01.991856701 +0100
-+++ Lib/test/test_pdb.py        2017-03-12 03:26:17.742572869 +0100
-
-For some reason, KeyboardInterrupts do not work in the build
-environment (lack of controlling TTY?). Just change the expected
-outcome. Unfortunately, this will make it fail for users running
-`python -m test test_pdb test_pdb` interactively.
-
-@@ -928,11 +928,11 @@
-     > <doctest test.test_pdb.test_pdb_issue_20766[0]>(6)test_function()
-     -> print('pdb %d: %s' % (i, sess._previous_sigint_handler))
-     (Pdb) continue
--    pdb 1: <built-in function default_int_handler>
-+    pdb 1: Handlers.SIG_IGN
-     > <doctest test.test_pdb.test_pdb_issue_20766[0]>(5)test_function()
-     -> sess.set_trace(sys._getframe())
-     (Pdb) continue
--    pdb 2: <built-in function default_int_handler>
-+    pdb 2: Handlers.SIG_IGN
-     """
-
- class PdbTestCase(unittest.TestCase):
diff --git a/gnu/packages/patches/python-3.5-getentropy-on-old-kernels.patch b/gnu/packages/patches/python-3.5-getentropy-on-old-kernels.patch
deleted file mode 100644
index 8a12b5b44..000000000
--- a/gnu/packages/patches/python-3.5-getentropy-on-old-kernels.patch
+++ /dev/null
@@ -1,720 +0,0 @@
-This patch resolves a compatibility issue when compiled against glibc 2.25
-and run runder kernels < 3.17:
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1410175
-
-Upstream bug URL: https://bugs.python.org/issue29157
-
-Patch copied from upstream source repository:
-
-https://hg.python.org/cpython/rev/8125d9a8152b
-
-# HG changeset patch
-# User Victor Stinner <victor.stinner@gmail.com>
-# Date 1483957133 -3600
-# Node ID 8125d9a8152b79e712cb09c7094b9129b9bcea86
-# Parent  337461574c90281630751b6095c4e1baf380cf7d
-Issue #29157: Prefer getrandom() over getentropy()
-
-Copy and then adapt Python/random.c from default branch. Difference between 3.5
-and default branches:
-
-* Python 3.5 only uses getrandom() in non-blocking mode: flags=GRND_NONBLOCK
-* If getrandom() fails with EAGAIN: py_getrandom() immediately fails and
-  remembers that getrandom() doesn't work.
-* Python 3.5 has no _PyOS_URandomNonblock() function: _PyOS_URandom()
-  works in non-blocking mode on Python 3.5
-
-diff --git a/Python/random.c b/Python/random.c
---- Python/random.c
-+++ Python/random.c
-@@ -1,6 +1,9 @@
- #include "Python.h"
- #ifdef MS_WINDOWS
- #  include <windows.h>
-+/* All sample MSDN wincrypt programs include the header below. It is at least
-+ * required with Min GW. */
-+#  include <wincrypt.h>
- #else
- #  include <fcntl.h>
- #  ifdef HAVE_SYS_STAT_H
-@@ -37,10 +40,9 @@ win32_urandom_init(int raise)
-     return 0;
- 
- error:
--    if (raise)
-+    if (raise) {
-         PyErr_SetFromWindowsErr(0);
--    else
--        Py_FatalError("Failed to initialize Windows random API (CryptoGen)");
-+    }
-     return -1;
- }
- 
-@@ -53,8 +55,9 @@ win32_urandom(unsigned char *buffer, Py_
- 
-     if (hCryptProv == 0)
-     {
--        if (win32_urandom_init(raise) == -1)
-+        if (win32_urandom_init(raise) == -1) {
-             return -1;
-+        }
-     }
- 
-     while (size > 0)
-@@ -63,11 +66,9 @@ win32_urandom(unsigned char *buffer, Py_
-         if (!CryptGenRandom(hCryptProv, (DWORD)chunk, buffer))
-         {
-             /* CryptGenRandom() failed */
--            if (raise)
-+            if (raise) {
-                 PyErr_SetFromWindowsErr(0);
--            else
--                Py_FatalError("Failed to initialized the randomized hash "
--                        "secret using CryptoGen)");
-+            }
-             return -1;
-         }
-         buffer += chunk;
-@@ -76,58 +77,23 @@ win32_urandom(unsigned char *buffer, Py_
-     return 0;
- }
- 
--/* Issue #25003: Don't use getentropy() on Solaris (available since
-- * Solaris 11.3), it is blocking whereas os.urandom() should not block. */
--#elif defined(HAVE_GETENTROPY) && !defined(sun)
--#define PY_GETENTROPY 1
--
--/* Fill buffer with size pseudo-random bytes generated by getentropy().
--   Return 0 on success, or raise an exception and return -1 on error.
--
--   If fatal is nonzero, call Py_FatalError() instead of raising an exception
--   on error. */
--static int
--py_getentropy(unsigned char *buffer, Py_ssize_t size, int fatal)
--{
--    while (size > 0) {
--        Py_ssize_t len = Py_MIN(size, 256);
--        int res;
--
--        if (!fatal) {
--            Py_BEGIN_ALLOW_THREADS
--            res = getentropy(buffer, len);
--            Py_END_ALLOW_THREADS
--
--            if (res < 0) {
--                PyErr_SetFromErrno(PyExc_OSError);
--                return -1;
--            }
--        }
--        else {
--            res = getentropy(buffer, len);
--            if (res < 0)
--                Py_FatalError("getentropy() failed");
--        }
--
--        buffer += len;
--        size -= len;
--    }
--    return 0;
--}
--
--#else
-+#else /* !MS_WINDOWS */
- 
- #if defined(HAVE_GETRANDOM) || defined(HAVE_GETRANDOM_SYSCALL)
- #define PY_GETRANDOM 1
- 
--/* Call getrandom()
-+/* Call getrandom() to get random bytes:
-+
-    - Return 1 on success
--   - Return 0 if getrandom() syscall is not available (failed with ENOSYS or
--     EPERM) or if getrandom(GRND_NONBLOCK) failed with EAGAIN (system urandom
--     not initialized yet) and raise=0.
-+   - Return 0 if getrandom() is not available (failed with ENOSYS or EPERM),
-+     or if getrandom(GRND_NONBLOCK) failed with EAGAIN (system urandom not
-+     initialized yet).
-    - Raise an exception (if raise is non-zero) and return -1 on error:
--     getrandom() failed with EINTR and the Python signal handler raised an
--     exception, or getrandom() failed with a different error. */
-+     if getrandom() failed with EINTR, raise is non-zero and the Python signal
-+     handler raised an exception, or if getrandom() failed with a different
-+     error.
-+
-+   getrandom() is retried if it failed with EINTR: interrupted by a signal. */
- static int
- py_getrandom(void *buffer, Py_ssize_t size, int raise)
- {
-@@ -142,16 +108,19 @@ py_getrandom(void *buffer, Py_ssize_t si
-      * see https://bugs.python.org/issue26839. To avoid this, use the
-      * GRND_NONBLOCK flag. */
-     const int flags = GRND_NONBLOCK;
-+    char *dest;
-     long n;
- 
-     if (!getrandom_works) {
-         return 0;
-     }
- 
-+    dest = buffer;
-     while (0 < size) {
- #ifdef sun
-         /* Issue #26735: On Solaris, getrandom() is limited to returning up
--           to 1024 bytes */
-+           to 1024 bytes. Call it multiple times if more bytes are
-+           requested. */
-         n = Py_MIN(size, 1024);
- #else
-         n = Py_MIN(size, LONG_MAX);
-@@ -161,34 +130,35 @@ py_getrandom(void *buffer, Py_ssize_t si
- #ifdef HAVE_GETRANDOM
-         if (raise) {
-             Py_BEGIN_ALLOW_THREADS
--            n = getrandom(buffer, n, flags);
-+            n = getrandom(dest, n, flags);
-             Py_END_ALLOW_THREADS
-         }
-         else {
--            n = getrandom(buffer, n, flags);
-+            n = getrandom(dest, n, flags);
-         }
- #else
-         /* On Linux, use the syscall() function because the GNU libc doesn't
--         * expose the Linux getrandom() syscall yet. See:
--         * https://sourceware.org/bugzilla/show_bug.cgi?id=17252 */
-+           expose the Linux getrandom() syscall yet. See:
-+           https://sourceware.org/bugzilla/show_bug.cgi?id=17252 */
-         if (raise) {
-             Py_BEGIN_ALLOW_THREADS
--            n = syscall(SYS_getrandom, buffer, n, flags);
-+            n = syscall(SYS_getrandom, dest, n, flags);
-             Py_END_ALLOW_THREADS
-         }
-         else {
--            n = syscall(SYS_getrandom, buffer, n, flags);
-+            n = syscall(SYS_getrandom, dest, n, flags);
-         }
- #endif
- 
-         if (n < 0) {
--            /* ENOSYS: getrandom() syscall not supported by the kernel (but
--             * maybe supported by the host which built Python). EPERM:
--             * getrandom() syscall blocked by SECCOMP or something else. */
-+            /* ENOSYS: the syscall is not supported by the kernel.
-+               EPERM: the syscall is blocked by a security policy (ex: SECCOMP)
-+               or something else. */
-             if (errno == ENOSYS || errno == EPERM) {
-                 getrandom_works = 0;
-                 return 0;
-             }
-+
-             if (errno == EAGAIN) {
-                 /* getrandom(GRND_NONBLOCK) fails with EAGAIN if the system
-                    urandom is not initialiazed yet. In this case, fall back on
-@@ -202,32 +172,101 @@ py_getrandom(void *buffer, Py_ssize_t si
-             }
- 
-             if (errno == EINTR) {
--                if (PyErr_CheckSignals()) {
--                    if (!raise) {
--                        Py_FatalError("getrandom() interrupted by a signal");
-+                if (raise) {
-+                    if (PyErr_CheckSignals()) {
-+                        return -1;
-                     }
--                    return -1;
-                 }
- 
--                /* retry getrandom() */
-+                /* retry getrandom() if it was interrupted by a signal */
-                 continue;
-             }
- 
-             if (raise) {
-                 PyErr_SetFromErrno(PyExc_OSError);
-             }
--            else {
--                Py_FatalError("getrandom() failed");
-+            return -1;
-+        }
-+
-+        dest += n;
-+        size -= n;
-+    }
-+    return 1;
-+}
-+
-+#elif defined(HAVE_GETENTROPY)
-+#define PY_GETENTROPY 1
-+
-+/* Fill buffer with size pseudo-random bytes generated by getentropy():
-+
-+   - Return 1 on success
-+   - Return 0 if getentropy() syscall is not available (failed with ENOSYS or
-+     EPERM).
-+   - Raise an exception (if raise is non-zero) and return -1 on error:
-+     if getentropy() failed with EINTR, raise is non-zero and the Python signal
-+     handler raised an exception, or if getentropy() failed with a different
-+     error.
-+
-+   getentropy() is retried if it failed with EINTR: interrupted by a signal. */
-+static int
-+py_getentropy(char *buffer, Py_ssize_t size, int raise)
-+{
-+    /* Is getentropy() supported by the running kernel? Set to 0 if
-+       getentropy() failed with ENOSYS or EPERM. */
-+    static int getentropy_works = 1;
-+
-+    if (!getentropy_works) {
-+        return 0;
-+    }
-+
-+    while (size > 0) {
-+        /* getentropy() is limited to returning up to 256 bytes. Call it
-+           multiple times if more bytes are requested. */
-+        Py_ssize_t len = Py_MIN(size, 256);
-+        int res;
-+
-+        if (raise) {
-+            Py_BEGIN_ALLOW_THREADS
-+            res = getentropy(buffer, len);
-+            Py_END_ALLOW_THREADS
-+        }
-+        else {
-+            res = getentropy(buffer, len);
-+        }
-+
-+        if (res < 0) {
-+            /* ENOSYS: the syscall is not supported by the running kernel.
-+               EPERM: the syscall is blocked by a security policy (ex: SECCOMP)
-+               or something else. */
-+            if (errno == ENOSYS || errno == EPERM) {
-+                getentropy_works = 0;
-+                return 0;
-+            }
-+
-+            if (errno == EINTR) {
-+                if (raise) {
-+                    if (PyErr_CheckSignals()) {
-+                        return -1;
-+                    }
-+                }
-+
-+                /* retry getentropy() if it was interrupted by a signal */
-+                continue;
-+            }
-+
-+            if (raise) {
-+                PyErr_SetFromErrno(PyExc_OSError);
-             }
-             return -1;
-         }
- 
--        buffer += n;
--        size -= n;
-+        buffer += len;
-+        size -= len;
-     }
-     return 1;
- }
--#endif
-+#endif /* defined(HAVE_GETENTROPY) && !defined(sun) */
-+
- 
- static struct {
-     int fd;
-@@ -235,136 +274,123 @@ static struct {
-     ino_t st_ino;
- } urandom_cache = { -1 };
- 
-+/* Read random bytes from the /dev/urandom device:
- 
--/* Read 'size' random bytes from py_getrandom(). Fall back on reading from
--   /dev/urandom if getrandom() is not available.
-+   - Return 0 on success
-+   - Raise an exception (if raise is non-zero) and return -1 on error
- 
--   Call Py_FatalError() on error. */
--static void
--dev_urandom_noraise(unsigned char *buffer, Py_ssize_t size)
-+   Possible causes of errors:
-+
-+   - open() failed with ENOENT, ENXIO, ENODEV, EACCES: the /dev/urandom device
-+     was not found. For example, it was removed manually or not exposed in a
-+     chroot or container.
-+   - open() failed with a different error
-+   - fstat() failed
-+   - read() failed or returned 0
-+
-+   read() is retried if it failed with EINTR: interrupted by a signal.
-+
-+   The file descriptor of the device is kept open between calls to avoid using
-+   many file descriptors when run in parallel from multiple threads:
-+   see the issue #18756.
-+
-+   st_dev and st_ino fields of the file descriptor (from fstat()) are cached to
-+   check if the file descriptor was replaced by a different file (which is
-+   likely a bug in the application): see the issue #21207.
-+
-+   If the file descriptor was closed or replaced, open a new file descriptor
-+   but don't close the old file descriptor: it probably points to something
-+   important for some third-party code. */
-+static int
-+dev_urandom(char *buffer, Py_ssize_t size, int raise)
- {
-     int fd;
-     Py_ssize_t n;
- 
--    assert (0 < size);
-+    if (raise) {
-+        struct _Py_stat_struct st;
- 
--#ifdef PY_GETRANDOM
--    if (py_getrandom(buffer, size, 0) == 1) {
--        return;
-+        if (urandom_cache.fd >= 0) {
-+            /* Does the fd point to the same thing as before? (issue #21207) */
-+            if (_Py_fstat_noraise(urandom_cache.fd, &st)
-+                || st.st_dev != urandom_cache.st_dev
-+                || st.st_ino != urandom_cache.st_ino) {
-+                /* Something changed: forget the cached fd (but don't close it,
-+                   since it probably points to something important for some
-+                   third-party code). */
-+                urandom_cache.fd = -1;
-+            }
-+        }
-+        if (urandom_cache.fd >= 0)
-+            fd = urandom_cache.fd;
-+        else {
-+            fd = _Py_open("/dev/urandom", O_RDONLY);
-+            if (fd < 0) {
-+                if (errno == ENOENT || errno == ENXIO ||
-+                    errno == ENODEV || errno == EACCES) {
-+                    PyErr_SetString(PyExc_NotImplementedError,
-+                                    "/dev/urandom (or equivalent) not found");
-+                }
-+                /* otherwise, keep the OSError exception raised by _Py_open() */
-+                return -1;
-+            }
-+            if (urandom_cache.fd >= 0) {
-+                /* urandom_fd was initialized by another thread while we were
-+                   not holding the GIL, keep it. */
-+                close(fd);
-+                fd = urandom_cache.fd;
-+            }
-+            else {
-+                if (_Py_fstat(fd, &st)) {
-+                    close(fd);
-+                    return -1;
-+                }
-+                else {
-+                    urandom_cache.fd = fd;
-+                    urandom_cache.st_dev = st.st_dev;
-+                    urandom_cache.st_ino = st.st_ino;
-+                }
-+            }
-+        }
-+
-+        do {
-+            n = _Py_read(fd, buffer, (size_t)size);
-+            if (n == -1)
-+                return -1;
-+            if (n == 0) {
-+                PyErr_Format(PyExc_RuntimeError,
-+                        "Failed to read %zi bytes from /dev/urandom",
-+                        size);
-+                return -1;
-+            }
-+
-+            buffer += n;
-+            size -= n;
-+        } while (0 < size);
-     }
--    /* getrandom() failed with ENOSYS or EPERM,
--       fall back on reading /dev/urandom */
--#endif
--
--    fd = _Py_open_noraise("/dev/urandom", O_RDONLY);
--    if (fd < 0) {
--        Py_FatalError("Failed to open /dev/urandom");
--    }
--
--    while (0 < size)
--    {
--        do {
--            n = read(fd, buffer, (size_t)size);
--        } while (n < 0 && errno == EINTR);
--
--        if (n <= 0) {
--            /* read() failed or returned 0 bytes */
--            Py_FatalError("Failed to read bytes from /dev/urandom");
--            break;
--        }
--        buffer += n;
--        size -= n;
--    }
--    close(fd);
--}
--
--/* Read 'size' random bytes from py_getrandom(). Fall back on reading from
--   /dev/urandom if getrandom() is not available.
--
--   Return 0 on success. Raise an exception and return -1 on error. */
--static int
--dev_urandom_python(char *buffer, Py_ssize_t size)
--{
--    int fd;
--    Py_ssize_t n;
--    struct _Py_stat_struct st;
--#ifdef PY_GETRANDOM
--    int res;
--#endif
--
--    if (size <= 0)
--        return 0;
--
--#ifdef PY_GETRANDOM
--    res = py_getrandom(buffer, size, 1);
--    if (res < 0) {
--        return -1;
--    }
--    if (res == 1) {
--        return 0;
--    }
--    /* getrandom() failed with ENOSYS or EPERM,
--       fall back on reading /dev/urandom */
--#endif
--
--    if (urandom_cache.fd >= 0) {
--        /* Does the fd point to the same thing as before? (issue #21207) */
--        if (_Py_fstat_noraise(urandom_cache.fd, &st)
--            || st.st_dev != urandom_cache.st_dev
--            || st.st_ino != urandom_cache.st_ino) {
--            /* Something changed: forget the cached fd (but don't close it,
--               since it probably points to something important for some
--               third-party code). */
--            urandom_cache.fd = -1;
--        }
--    }
--    if (urandom_cache.fd >= 0)
--        fd = urandom_cache.fd;
-     else {
--        fd = _Py_open("/dev/urandom", O_RDONLY);
-+        fd = _Py_open_noraise("/dev/urandom", O_RDONLY);
-         if (fd < 0) {
--            if (errno == ENOENT || errno == ENXIO ||
--                errno == ENODEV || errno == EACCES)
--                PyErr_SetString(PyExc_NotImplementedError,
--                                "/dev/urandom (or equivalent) not found");
--            /* otherwise, keep the OSError exception raised by _Py_open() */
-             return -1;
-         }
--        if (urandom_cache.fd >= 0) {
--            /* urandom_fd was initialized by another thread while we were
--               not holding the GIL, keep it. */
--            close(fd);
--            fd = urandom_cache.fd;
--        }
--        else {
--            if (_Py_fstat(fd, &st)) {
-+
-+        while (0 < size)
-+        {
-+            do {
-+                n = read(fd, buffer, (size_t)size);
-+            } while (n < 0 && errno == EINTR);
-+
-+            if (n <= 0) {
-+                /* stop on error or if read(size) returned 0 */
-                 close(fd);
-                 return -1;
-             }
--            else {
--                urandom_cache.fd = fd;
--                urandom_cache.st_dev = st.st_dev;
--                urandom_cache.st_ino = st.st_ino;
--            }
-+
-+            buffer += n;
-+            size -= n;
-         }
-+        close(fd);
-     }
--
--    do {
--        n = _Py_read(fd, buffer, (size_t)size);
--        if (n == -1) {
--            return -1;
--        }
--        if (n == 0) {
--            PyErr_Format(PyExc_RuntimeError,
--                    "Failed to read %zi bytes from /dev/urandom",
--                    size);
--            return -1;
--        }
--
--        buffer += n;
--        size -= n;
--    } while (0 < size);
--
-     return 0;
- }
- 
-@@ -376,8 +402,8 @@ dev_urandom_close(void)
-         urandom_cache.fd = -1;
-     }
- }
-+#endif /* !MS_WINDOWS */
- 
--#endif
- 
- /* Fill buffer with pseudo-random bytes generated by a linear congruent
-    generator (LCG):
-@@ -400,29 +426,98 @@ lcg_urandom(unsigned int x0, unsigned ch
-     }
- }
- 
-+/* Read random bytes:
-+
-+   - Return 0 on success
-+   - Raise an exception (if raise is non-zero) and return -1 on error
-+
-+   Used sources of entropy ordered by preference, preferred source first:
-+
-+   - CryptGenRandom() on Windows
-+   - getrandom() function (ex: Linux and Solaris): call py_getrandom()
-+   - getentropy() function (ex: OpenBSD): call py_getentropy()
-+   - /dev/urandom device
-+
-+   Read from the /dev/urandom device if getrandom() or getentropy() function
-+   is not available or does not work.
-+
-+   Prefer getrandom() over getentropy() because getrandom() supports blocking
-+   and non-blocking mode and Python requires non-blocking RNG at startup to
-+   initialize its hash secret: see the PEP 524.
-+
-+   Prefer getrandom() and getentropy() over reading directly /dev/urandom
-+   because these functions don't need file descriptors and so avoid ENFILE or
-+   EMFILE errors (too many open files): see the issue #18756.
-+
-+   Only use RNG running in the kernel. They are more secure because it is
-+   harder to get the internal state of a RNG running in the kernel land than a
-+   RNG running in the user land. The kernel has a direct access to the hardware
-+   and has access to hardware RNG, they are used as entropy sources.
-+
-+   Note: the OpenSSL RAND_pseudo_bytes() function does not automatically reseed
-+   its RNG on fork(), two child processes (with the same pid) generate the same
-+   random numbers: see issue #18747. Kernel RNGs don't have this issue,
-+   they have access to good quality entropy sources.
-+
-+   If raise is zero:
-+
-+   - Don't raise an exception on error
-+   - Don't call the Python signal handler (don't call PyErr_CheckSignals()) if
-+     a function fails with EINTR: retry directly the interrupted function
-+   - Don't release the GIL to call functions.
-+*/
-+static int
-+pyurandom(void *buffer, Py_ssize_t size, int raise)
-+{
-+#if defined(PY_GETRANDOM) || defined(PY_GETENTROPY)
-+    int res;
-+#endif
-+
-+    if (size < 0) {
-+        if (raise) {
-+            PyErr_Format(PyExc_ValueError,
-+                         "negative argument not allowed");
-+        }
-+        return -1;
-+    }
-+
-+    if (size == 0) {
-+        return 0;
-+    }
-+
-+#ifdef MS_WINDOWS
-+    return win32_urandom((unsigned char *)buffer, size, raise);
-+#else
-+
-+#if defined(PY_GETRANDOM) || defined(PY_GETENTROPY)
-+#ifdef PY_GETRANDOM
-+    res = py_getrandom(buffer, size, raise);
-+#else
-+    res = py_getentropy(buffer, size, raise);
-+#endif
-+    if (res < 0) {
-+        return -1;
-+    }
-+    if (res == 1) {
-+        return 0;
-+    }
-+    /* getrandom() or getentropy() function is not available: failed with
-+       ENOSYS, EPERM or EAGAIN. Fall back on reading from /dev/urandom. */
-+#endif
-+
-+    return dev_urandom(buffer, size, raise);
-+#endif
-+}
-+
- /* Fill buffer with size pseudo-random bytes from the operating system random
-    number generator (RNG). It is suitable for most cryptographic purposes
-    except long living private keys for asymmetric encryption.
- 
--   Return 0 on success, raise an exception and return -1 on error. */
-+   Return 0 on success. Raise an exception and return -1 on error. */
- int
- _PyOS_URandom(void *buffer, Py_ssize_t size)
- {
--    if (size < 0) {
--        PyErr_Format(PyExc_ValueError,
--                     "negative argument not allowed");
--        return -1;
--    }
--    if (size == 0)
--        return 0;
--
--#ifdef MS_WINDOWS
--    return win32_urandom((unsigned char *)buffer, size, 1);
--#elif defined(PY_GETENTROPY)
--    return py_getentropy(buffer, size, 0);
--#else
--    return dev_urandom_python((char*)buffer, size);
--#endif
-+    return pyurandom(buffer, size, 1);
- }
- 
- void
-@@ -463,13 +558,14 @@ void
-         }
-     }
-     else {
--#ifdef MS_WINDOWS
--        (void)win32_urandom(secret, secret_size, 0);
--#elif defined(PY_GETENTROPY)
--        (void)py_getentropy(secret, secret_size, 1);
--#else
--        dev_urandom_noraise(secret, secret_size);
--#endif
-+        int res;
-+
-+        /* _PyRandom_Init() is called very early in the Python initialization
-+           and so exceptions cannot be used (use raise=0). */
-+        res = pyurandom(secret, secret_size, 0);
-+        if (res < 0) {
-+            Py_FatalError("failed to get random numbers to initialize Python");
-+        }
-     }
- }
- 
-@@ -481,8 +577,6 @@ void
-         CryptReleaseContext(hCryptProv, 0);
-         hCryptProv = 0;
-     }
--#elif defined(PY_GETENTROPY)
--    /* nothing to clean */
- #else
-     dev_urandom_close();
- #endif
-
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index a088fefb8..a047b617c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -201,6 +201,7 @@
                                   '("Lib/subprocess.py"
                                     "Lib/popen2.py"
                                     "Lib/distutils/tests/test_spawn.py"
+                                    "Lib/test/support/__init__.py"
                                     "Lib/test/test_subprocess.py"))
                (("/bin/sh") (which "sh")))
 
@@ -326,23 +327,22 @@ data types.")
 ;; Current 2.x version.
 (define-public python-2 python-2.7)
 
-(define-public python-3.5
+(define-public python-3.6
   (package (inherit python-2)
-    (version "3.5.3")
+    (version "3.6.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.python.org/ftp/python/"
                                   version "/Python-" version ".tar.xz"))
               (patches (search-patches
                         "python-fix-tests.patch"
-                        "python-3.5-fix-tests.patch"
-                        "python-3.5-getentropy-on-old-kernels.patch"
+                        "python-3-fix-tests.patch"
                         "python-3-deterministic-build-info.patch"
                         "python-3-search-paths.patch"))
               (patch-flags '("-p0"))
               (sha256
                (base32
-                "1c6v1n9nz4mlx9mw1125fxpmbrgniqdbbx9hnqx44maqazb2mzpf"))
+                "1ab4vlpdax1ihpiyiwchlgsk36apl4kgdw271wvl9l8ywhxpfacj"))
               (snippet
                '(begin
                   (for-each delete-file
@@ -359,7 +359,7 @@ data types.")
                                         "/site-packages"))))))))
 
 ;; Current 3.x version.
-(define-public python-3 python-3.5)
+(define-public python-3 python-3.6)
 
 ;; Current major version.
 (define-public python python-3)
-- 
2.13.3

^ permalink raw reply related	[relevance 51%]

* [bug#27888] [PATCH 14/18] gnu: Add python-traceback2.
  2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
                     ` (11 preceding siblings ...)
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 13/18] gnu: Add python-linecache2 Marius Bakke
@ 2017-07-31 20:07 65%   ` Marius Bakke
  2017-07-31 20:07 71%   ` [bug#27888] [PATCH 15/18] gnu: python-unittest2: Update to 1.1.0 Marius Bakke
                     ` (4 subsequent siblings)
  17 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/python.scm (python-traceback2, python2-traceback2): New variables.
---
 gnu/packages/python.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index be556959d..77efcf1ed 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1843,6 +1843,31 @@ interfaces and processes.")
 (define-public python2-linecache2
   (package-with-python2 python-linecache2))
 
+(define-public python-traceback2
+  (package
+    (name "python-traceback2")
+    (version "1.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "traceback2" version))
+              (sha256
+               (base32
+                "0c1h3jas1jp1fdbn9z2mrgn3jj0hw1x3yhnkxp7jw34q15xcdb05"))))
+    (build-system python-build-system)
+    (arguments `(#:tests? #f)) ; FIXME: Dependency cycle on unittest2.
+    (native-inputs
+     `(("python-pbr" ,python-pbr-minimal)))
+    (propagated-inputs
+     `(("python-linecache2" ,python-linecache2)))
+    (home-page "https://github.com/testing-cabal/traceback2")
+    (synopsis "Backports of the traceback module")
+    (description
+     "Backports of the traceback module to older versions of Python.")
+    (license license:psfl)))
+
+(define-public python2-traceback2
+  (package-with-python2 python-traceback2))
+
 (define-public python-unittest2
   (package
     (name "python-unittest2")
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#27888] [PATCH 16/18] gnu: Add python2-funcsigs.
  2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
                     ` (13 preceding siblings ...)
  2017-07-31 20:07 71%   ` [bug#27888] [PATCH 15/18] gnu: python-unittest2: Update to 1.1.0 Marius Bakke
@ 2017-07-31 20:07 65%   ` Marius Bakke
  2017-07-31 20:07 53%   ` [bug#27888] [PATCH 17/18] gnu: python-mock: Make 2.0 the default package Marius Bakke
                     ` (2 subsequent siblings)
  17 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/python.scm (python2-funcsigs): New variable.
---
 gnu/packages/python.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3217de524..e1bc3905a 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1819,6 +1819,27 @@ interfaces and processes.")
 (define-public python2-nose2
   (package-with-python2 python-nose2))
 
+(define-public python2-funcsigs
+  (package
+    (name "python2-funcsigs")
+    (version "1.0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "funcsigs" version))
+              (sha256
+               (base32
+                "0l4g5818ffyfmfs1a924811azhjj8ax9xd1cffr1mzd3ycn0zfx7"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (native-inputs
+     `(("python2-unittest2" ,python2-unittest2)))
+    (home-page "http://funcsigs.readthedocs.org")
+    (synopsis "Python function signatures from PEP362")
+    (description
+     "Backport of @code{funcsigs} which was introduced in Python 3.3.")
+    (license license:asl2.0)))
+
 (define-public python-linecache2
   (package
     (name "python-linecache2")
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#27888] [PATCH 18/18] gnu: python-hypothesis: Update to 3.14.0.
  2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
                     ` (15 preceding siblings ...)
  2017-07-31 20:07 53%   ` [bug#27888] [PATCH 17/18] gnu: python-mock: Make 2.0 the default package Marius Bakke
@ 2017-07-31 20:07 65%   ` Marius Bakke
    17 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/python.scm (python-hypothesis): Update to 3.14.0.
[native-inputs]: Remove PYTHON-FLAKE8 and PYTHON-PYTEST.
---
 gnu/packages/python.scm | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 9a7f88c30..b32065f80 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -9878,17 +9878,15 @@ Amazon Web Services (AWS) API.")
 (define-public python-hypothesis
   (package
     (name "python-hypothesis")
-    (version "3.1.0")
+    (version "3.14.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "hypothesis" version))
               (sha256
                (base32
-                "0qyqq9akm4vshhn8cngjc1qykcvsn7cz6dlm6njfsgpbraqrmbbw"))))
+                "11q26a0j49hqw233gnvphlkin6piw2bpd0kji5zxr0980vl5rxvi"))))
     (build-system python-build-system)
-    (native-inputs
-     `(("python-flake8" ,python-flake8)
-       ("python-pytest" ,python-pytest-bootstrap)))
+    ;; FIXME: The PyPi release tarball does not contain tests.
     (synopsis "Library for property based testing")
     (description "Hypothesis is a library for testing your Python code against a
 much larger range of examples than you would ever want to write by hand.  It’s
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#27888] [PATCH 17/18] gnu: python-mock: Make 2.0 the default package.
  2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
                     ` (14 preceding siblings ...)
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 16/18] gnu: Add python2-funcsigs Marius Bakke
@ 2017-07-31 20:07 53%   ` Marius Bakke
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 18/18] gnu: python-hypothesis: Update to 3.14.0 Marius Bakke
    17 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/python.scm (python-mock): Update to 2.0.0.
[native-inputs]: Add PYTHON-UNITTEST2.
[propagated-inputs]: Add PYTHON-PBR and PYTHON-SIX.
[arguments]: Override 'check' phase.
[properties]: Declare python2 variant.
(python2-mock)[propagated-inputs]: Add PYTHON2-FUNCTOOLS32 and PYTHON2-FUNCSIGS.
(python-mock-2): Remove variable.
* gnu/packages/python.scm (python-flake8)[native-inputs]: Adjust accordingly.
* gnu/packages/tls.scm (python-acme, certbot)[native-inputs]: Likewise.
---
 gnu/packages/python.scm | 47 ++++++++++++++++++++++-------------------------
 gnu/packages/tls.scm    |  4 ++--
 2 files changed, 24 insertions(+), 27 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e1bc3905a..9a7f88c30 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -932,46 +932,43 @@ API for locking files.")
 (define-public python-mock
   (package
     (name "python-mock")
-    (version "1.0.1")
+    (version "2.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "mock" version))
        (sha256
         (base32
-         "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq"))))
+         "1flbpksir5sqrvq2z0dp8sl4bzbadg21sj4d42w3klpdfvgvcn5i"))))
+    (propagated-inputs
+     `(("python-pbr" ,python-pbr-minimal)
+       ("python-six" ,python-six)))
     (build-system python-build-system)
-    (arguments '(#:test-target "check"))
+    (native-inputs
+     `(("python-unittest2" ,python-unittest2)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (zero? (system* "unit2")))))))
     (home-page "https://github.com/testing-cabal/mock")
     (synopsis "Python mocking and patching library for testing")
     (description
      "Mock is a library for testing in Python.  It allows you to replace parts
 of your system under test with mock objects and make assertions about how they
 have been used.")
+    (properties `((python2-variant . ,(delay python2-mock))))
     (license license:expat)))
 
 (define-public python2-mock
-  (package-with-python2 python-mock))
-
-;;; Some packages (notably, certbot and python-acme) rely on this newer version
-;;; of python-mock. However, a large number of packages fail to build with
-;;; mock@2, so we add a new variable for now. Also, there may be a dependency
-;;; cycle between mock and six, so we avoid creating python2-mock@2 for now.
-(define-public python-mock-2
-  (package
-    (inherit python-mock)
-    (version "2.0.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "mock" version))
-        (sha256
-         (base32
-          "1flbpksir5sqrvq2z0dp8sl4bzbadg21sj4d42w3klpdfvgvcn5i"))))
-    (propagated-inputs
-     `(("python-pbr" ,python-pbr-minimal)
-       ("python-six" ,python-six)
-       ,@(package-propagated-inputs python-mock)))))
+  (let ((base (package-with-python2
+               (strip-python2-variant python-mock))))
+    (package (inherit base)
+      (propagated-inputs
+       `(("python2-functools32" ,python2-functools32)
+         ("python2-funcsigs" ,python2-funcsigs)
+         ,@(package-propagated-inputs base))))))
 
 (define-public python-setuptools
   (package
@@ -6927,7 +6924,7 @@ complexity of Python source code.")
         ("python-setuptools" ,python-setuptools)
         ("python-mccabe" ,python-mccabe)))
     (native-inputs
-      `(("python-mock" ,python-mock-2) ; TODO: only required for < 3.3
+      `(("python-mock" ,python-mock) ; TODO: only required for < 3.3
         ("python-pytest" ,python-pytest-bootstrap)
         ("python-pytest-runner" ,python-pytest-runner)))
     (home-page "https://gitlab.com/pycqa/flake8")
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 5a94ac619..4c64a0b0a 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -502,7 +502,7 @@ netcat implementation that supports TLS.")
                #t))))))
     ;; TODO: Add optional inputs for testing.
     (native-inputs
-     `(("python-mock" ,python-mock-2)
+     `(("python-mock" ,python-mock)
        ;; For documentation
        ("python-sphinx" ,python-sphinx)
        ("python-sphinxcontrib-programoutput" ,python-sphinxcontrib-programoutput)
@@ -554,7 +554,7 @@ netcat implementation that supports TLS.")
     ;; TODO: Add optional inputs for testing.
     (native-inputs
      `(("python-nose" ,python-nose)
-       ("python-mock" ,python-mock-2)
+       ("python-mock" ,python-mock)
        ;; For documentation
        ("python-sphinx" ,python-sphinx)
        ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
-- 
2.13.3

^ permalink raw reply related	[relevance 53%]

* [bug#27888] [PATCH 15/18] gnu: python-unittest2: Update to 1.1.0.
  2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
                     ` (12 preceding siblings ...)
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 14/18] gnu: Add python-traceback2 Marius Bakke
@ 2017-07-31 20:07 71%   ` Marius Bakke
  2017-07-31 20:07 65%   ` [bug#27888] [PATCH 16/18] gnu: Add python2-funcsigs Marius Bakke
                     ` (3 subsequent siblings)
  17 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-07-31 20:07 UTC (permalink / raw)
  To: 27888

* gnu/packages/python.scm (python-unittest2): Update to 1.1.0.
[source]: Use PYPI-URI. Add python3 compatibility patch.
[arguments]: Add phases to loosen dependency requirements and run tests.
[propagated-inputs]: Add PYTHON-SIX and PYTHON-TRACEBACK2.
(python2-unittest2): Use 'package-with-python2'.
* gnu/packages/patches/python-unittest2-python3-compat.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
---
 gnu/local.mk                                       |  1 +
 .../patches/python-unittest2-python3-compat.patch  | 34 ++++++++++++++++++
 gnu/packages/python.scm                            | 42 +++++++++++-----------
 3 files changed, 57 insertions(+), 20 deletions(-)
 create mode 100644 gnu/packages/patches/python-unittest2-python3-compat.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 62ef61589..ce3d821d9 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -957,6 +957,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
   %D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch	\
   %D%/packages/patches/python2-subprocess32-disable-input-test.patch	\
+  %D%/packages/patches/python-unittest2-python3-compat.patch	\
   %D%/packages/patches/qemu-CVE-2017-7493.patch			\
   %D%/packages/patches/qemu-CVE-2017-8112.patch			\
   %D%/packages/patches/qemu-CVE-2017-8309.patch			\
diff --git a/gnu/packages/patches/python-unittest2-python3-compat.patch b/gnu/packages/patches/python-unittest2-python3-compat.patch
new file mode 100644
index 000000000..fe0afe559
--- /dev/null
+++ b/gnu/packages/patches/python-unittest2-python3-compat.patch
@@ -0,0 +1,34 @@
+Skip tests that fail with newer versions of Python.
+
+Patch copied from Gentoo:
+
+https://gitweb.gentoo.org/repo/gentoo.git/tree/dev-python/unittest2/files/unittest2-1.1.0-python3.5-test.patch
+
+diff --git a/unittest2/test/test_loader.py b/unittest2/test/test_loader.py
+index 683f662..347eea5 100644
+--- a/unittest2/test/test_loader.py
++++ b/unittest2/test/test_loader.py
+@@ -509,6 +509,7 @@ class Test_TestLoader(unittest2.TestCase):
+     #
+     # What happens when an impossible name is given, relative to the provided
+     # `module`?
++    @unittest.skipIf(sys.version_info[:2] >= (3, 5), "python 3.5 has problems here")
+     def test_loadTestsFromName__relative_malformed_name(self):
+         loader = unittest.TestLoader()
+ 
+@@ -811,6 +812,7 @@ class Test_TestLoader(unittest2.TestCase):
+     # TestCase or TestSuite instance."
+     #
+     # What happens when presented with an impossible module name?
++    @unittest.skipIf(sys.version_info[:2] >= (3, 5), "python 3.5 has problems here")
+     def test_loadTestsFromNames__malformed_name(self):
+         loader = unittest2.TestLoader()
+ 
+@@ -918,6 +920,7 @@ class Test_TestLoader(unittest2.TestCase):
+     # "The method optionally resolves name relative to the given module"
+     #
+     # What happens when presented with an impossible attribute name?
++    @unittest.skipIf(sys.version_info[:2] >= (3, 5), "python 3.5 has problems here")
+     def test_loadTestsFromNames__relative_malformed_name(self):
+         loader = unittest.TestLoader()
+ 
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 77efcf1ed..3217de524 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1871,17 +1871,33 @@ interfaces and processes.")
 (define-public python-unittest2
   (package
     (name "python-unittest2")
-    (version "0.5.1")
+    (version "1.1.0")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/u/unittest2py3k/unittest2py3k-"
-             version ".tar.gz"))
+       (uri (pypi-uri "unittest2" version))
+       (patches
+        (search-patches "python-unittest2-python3-compat.patch"))
        (sha256
         (base32
-         "00yl6lskygcrddx5zspkhr0ibgvpknl4678kkm6s626539grq93q"))))
+         "0y855kmx7a8rnf81d3lh5lyxai1908xjp0laf4glwa4c8472m212"))))
     (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'adjust-dependencies
+           (lambda _
+             ;; Don't check for separate argparse module when it's shipped
+             ;; in all Python versions we support (2.7+).
+             (substitute* "setup.py"
+               (("'argparse',") ""))
+             #t))
+         (replace 'check
+           (lambda _
+             (zero? (system* "python" "-m" "unittest2" "discover" "--verbose")))))))
+    (propagated-inputs
+     `(("python-six" ,python-six)
+       ("python-traceback2" ,python-traceback2)))
     (home-page "http://pypi.python.org/pypi/unittest2")
     (synopsis "Python unit testing library")
     (description
@@ -1890,21 +1906,7 @@ standard library.")
     (license license:psfl)))
 
 (define-public python2-unittest2
-  (package (inherit python-unittest2)
-    (name "python2-unittest2")
-    (version "0.5.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/u/unittest2/unittest2-"
-             version ".tar.gz"))
-       (sha256
-        (base32
-         "0wbs4i4x3x7klr3v35ss6p9mcqz883i1xgcpkhvl7n2lyv6yhpda"))))
-    (arguments
-     `(#:python ,python-2
-       #:tests? #f)))) ; no setup.py test command
+  (package-with-python2 python-unittest2))
 
 (define-public python-pafy
   (package
-- 
2.13.3

^ permalink raw reply related	[relevance 71%]

* [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax.
  @ 2017-08-01  7:21  3% ` Kei Kebreau
  0 siblings, 0 replies; 200+ results
From: Kei Kebreau @ 2017-08-01  7:21 UTC (permalink / raw)
  To: 27898; +Cc: Kei Kebreau

* gnu/packages/admin.scm (mingetty, clusterssh, sudo, wpa-supplicant-minimal,
wpa-supplicant, wakelan, acpica, tree, direvent, dstat)[arguments]: Use
'modify-phases' syntax.
* gnu/packages/algebra.scm (arb)[arguments]: Likewise.
* gnu/packages/apr.scm (apr-util)[arguments]: Likewise.
* gnu/packages/audio.scm (clalsadrv, fluidsynth, faad2, lv2-mda-piano,
lv2-mda-epiano, timidity++, vamp, soundtouch, portaudio, rsound,
zita-convolver, zita-alsa-pcmi)[arguments]: Likewise.
* gnu/packages/backup.scm (rdup, btar)[arguments]: Likewise.
* gnu/packages/bioinformatics.scm (bedops, bwa, crossmap, express,
flexbar, grit, hisat, ngs-sdk, subread)[arguments]: Likewise.
* gnu/packages/bittorrent.scm (transmission)[arguments]: Likewise.
* gnu/packages/cdrom.scm (cd-discid)[arguments]: Likewise.
* gnu/packages/compression.scm (sharutils)[arguments]: Likewise.
* gnu/packages/conky.scm (conky)[arguments]: Likewise.
* gnu/packages/databases.scm (bdb, bdb-5.3)[arguments]: Likewise.
* gnu/packages/debug.scm (delta, c-reduce)[arguments]: Likewise.
* gnu/packages/display-managers.scm (slim)[arguments]: Likewise.
* gnu/packages/dns.scm (dnsmasq)[arguments]: Likewise.
* gnu/packages/emacs.scm (geiser, emacs-wget, bbdb)[arguments]: Likewise.
* gnu/packages/engineering.scm (pcb)[arguments]: Likewise.
* gnu/packages/firmware.scm (ath9k-htc-firmware)[arguments]: Likewise.
* gnu/packages/flashing-tools.scm (flashrom)[arguments]: Likewise.
* gnu/packages/fltk.scm (fltk)[arguments]: Likewise.
* gnu/packages/freedesktop.scm (python-pyxdg)[arguments]: Likewise.
* gnu/packages/gd.scm (perl-gd)[arguments]: Likewise.
* gnu/packages/gimp.scm (gegl)[arguments]: Likewise.
* gnu/packages/gkrellm.scm (gkrellm)[arguments]: Likewise.
* gnu/packages/glib.scm (glibmm)[arguments]: Likewise.
* gnu/packages/gl.scm (glew)[arguments]: Likewise.
* gnu/packages/gnome.scm (icon-naming-utils, orbit2, libbonobo, gnome-vfs,
libgnome, libbonoboui, goffice-0.8, dconf)[arguments]: Likewise.
* gnu/packages/gprolog.scm (gprolog)[arguments]: Likewise.
* gnu/packages/gps.scm (gpscorrelate)[arguments]: Likewise.
* gnu/packages/graphics.scm (agg)[arguments]: Likewise.
* gnu/packages/gtk.scm (ganv, gtksourceview-2, guile-present, python2-pycairo)
[arguments]: Likewise.
* gnu/packages/guile.scm (guile-1.8)[arguments]: Likewise.
* gnu/packages/guile-wm.scm (guile-wm)[arguments]: Likewise.
* gnu/packages/hugs.scm (hugs)[arguments]: Likewise.
* gnu/packages/hurd.scm (gnumach-headers, hurd-headers, hurd-minimal)
[arguments]: Likewise.
* gnu/packages/image-viewers.scm (feh, sxiv)[arguments]: Likewise.
* gnu/packages/libcanberra.scm (libcanberra)[arguments]: Likewise.
* gnu/packages/libsigsegv.scm (libsigsegv)[arguments]: Likewise.
* gnu/packages/linux.scm (zerofree, net-tools, bridge-utils, iw, fuse,
unionfs-fuse/static, lm-sensors, i2c-tools, xsensors, perf, mdadm, libaio,
module-init-tools)[arguments]: Likewise.
* gnu/packages/lisp.scm (ccl)[arguments]: Likewise.
* gnu/packages/lout.scm (lout)[arguments]: Likewise.
* gnu/packages/lua.scm (luajit)[arguments]: Likewise.
* gnu/packages/machine-learning.scm (shogun)[arguments]: Likewise.
* gnu/packages/mail.scm (exim)[arguments]: Likewise.
* gnu/packages/man.scm (man-pages, txt2man)[arguments]: Likewise.
* gnu/packages/maths.scm (lapack, superlu-dist, openlibm, openspecfun,
suitesparse)[arguments]: Likewise.
* gnu/packages/messaging.scm (bitlbee)[arguments]: Likewise.
* gnu/packages/mp3.scm (libmad, id3lib, mp3info)[arguments]: Likewise.
* gnu/packages/music.scm (solfege)[arguments]: Likewise.
* gnu/packages/noweb.scm (noweb)[arguments]: Likewise.
* gnu/packages/patchutils.scm (patchutils, quilt, colordiff)[arguments]:
Likewise.
* gnu/packages/pdf.scm (xpdf, zathura-cb, zathura-ps, zathura-djvu,
zathura-pdf-poppler, zathura, podofo, fbidag)[arguments]: Likewise.
* gnu/packages/perl.scm (perl-file-list, perl-test-harness)[arguments]:
Likewise.
* gnu/packages/photo.scm (gphoto2)[arguments]: Likewise.
* gnu/packages/popt.scm (popt)[arguments]: Likewise.
* gnu/packages/pretty-print.scm (source-highlight, astyle)[arguments]:
Likewise.
* gnu/packages/pumpio.scm (pumpa)[arguments]: Likewise.
* gnu/packages/python.scm (python-passlib, python-pycrypto, python2-empy,
python-sqlalchemy, python-docopt)[arguments]: Likewise.
* gnu/packages/rdf.scm (lrdf)[arguments]: Likewise.
* gnu/packages/regex.scm (tre)[arguments]: Likewise.
* gnu/packages/rrdtool.scm (rrdtool)[arguments]: Likewise.
* gnu/packages/ruby.scm (ruby-2.1, ruby-1.8)[arguments]: Likewise.
* gnu/packages/sawfish.scm (sawfish)[arguments]: Likewise.
* gnu/packages/scheme.scm (racket)[arguments]: Likewise.
* gnu/packages/sdl.scm (guile-sdl)[arguments]: Likewise.
* gnu/packages/serveez.scm (serveez)[arguments]: Likewise.
* gnu/packages/skribilo.scm (skribilo)[arguments]: Likewise.
* gnu/packages/smalltalk.scm (smalltalk)[arguments]: Likewise.
* gnu/packages/suckless.scm (dmenu, slock)[arguments]: Likewise.
* gnu/packages/tcl.scm (expect)[arguments]: Likewise.
* gnu/packages/telephony.scm (commoncpp)[arguments]: Likewise.
* gnu/packages/textutils.scm (recode, libgtextutils)[arguments]:
Likewise.
* gnu/packages/time.scm (time)[arguments]: Likewise.
* gnu/packages/tor.scm (privoxy)[arguments]: Likewise.
* gnu/packages/uucp.scm (uucp)[arguments]: Likewise.
* gnu/packages/video.scm (libdvdnav-4)[arguments]: Likewise.
* gnu/packages/web-browsers.scm (lynx)[arguments]: Likewise.
* gnu/packages/web.scm (tinyproxy)[arguments]: Likewise.
* gnu/packages/wicd.scm (wicd)[arguments]: Likewise.
* gnu/packages/wm.scm (bspwm)[arguments]: Likewise.
* gnu/packages/xdisorg.scm (sxhkd, xcape)[arguments]: Likewise.
* gnu/packages/xfce.scm (xfconf)[arguments]: Likewise.
* gnu/packages/xfig.scm (transfig)[arguments]: Likewise.
* gnu/packages/xorg.scm (imake)[arguments]: Likewise.
---
 gnu/packages/admin.scm            | 294 ++++++++++++++---------------
 gnu/packages/algebra.scm          |  31 ++--
 gnu/packages/apr.scm              |  25 ++-
 gnu/packages/audio.scm            | 193 +++++++++----------
 gnu/packages/backup.scm           |  33 ++--
 gnu/packages/bioinformatics.scm   | 250 +++++++++++++------------
 gnu/packages/bittorrent.scm       |  33 ++--
 gnu/packages/cdrom.scm            |   2 +-
 gnu/packages/compression.scm      |  16 +-
 gnu/packages/conky.scm            |  31 ++--
 gnu/packages/databases.scm        | 102 +++++-----
 gnu/packages/debug.scm            |  70 +++----
 gnu/packages/display-managers.scm |  22 +--
 gnu/packages/dns.scm              |   2 +-
 gnu/packages/docbook.scm          |  26 +--
 gnu/packages/emacs.scm            |  74 ++++----
 gnu/packages/engineering.scm      |  43 +++--
 gnu/packages/firmware.scm         |  48 ++---
 gnu/packages/flashing-tools.scm   |  21 +--
 gnu/packages/fltk.scm             |  42 ++---
 gnu/packages/freedesktop.scm      |  33 ++--
 gnu/packages/gd.scm               |  19 +-
 gnu/packages/gimp.scm             |  30 +--
 gnu/packages/gkrellm.scm          |   4 +-
 gnu/packages/gl.scm               |   2 +-
 gnu/packages/glib.scm             |  33 ++--
 gnu/packages/gnome.scm            | 145 +++++++--------
 gnu/packages/gprolog.scm          |  17 +-
 gnu/packages/gps.scm              |  19 +-
 gnu/packages/graphics.scm         |  13 +-
 gnu/packages/gtk.scm              |  80 ++++----
 gnu/packages/guile-wm.scm         |  81 ++++----
 gnu/packages/guile.scm            |  36 ++--
 gnu/packages/hugs.scm             |  61 +++---
 gnu/packages/hurd.scm             |  60 +++---
 gnu/packages/image-viewers.scm    |  14 +-
 gnu/packages/libcanberra.scm      |  18 +-
 gnu/packages/libsigsegv.scm       |  13 +-
 gnu/packages/linux.scm            | 379 +++++++++++++++++++-------------------
 gnu/packages/lisp.scm             |  61 +++---
 gnu/packages/lout.scm             | 142 +++++++-------
 gnu/packages/lua.scm              |   2 +-
 gnu/packages/machine-learning.scm |  88 +++++----
 gnu/packages/mail.scm             |  90 ++++-----
 gnu/packages/man.scm              |   4 +-
 gnu/packages/maths.scm            | 119 ++++++------
 gnu/packages/messaging.scm        |  27 ++-
 gnu/packages/mp3.scm              |  87 ++++-----
 gnu/packages/music.scm            | 102 +++++-----
 gnu/packages/noweb.scm            |  79 ++++----
 gnu/packages/patchutils.scm       | 120 ++++++------
 gnu/packages/pdf.scm              |  69 +++----
 gnu/packages/perl.scm             |  31 ++--
 gnu/packages/photo.scm            |  15 +-
 gnu/packages/popt.scm             |  17 +-
 gnu/packages/pretty-print.scm     |  65 +++----
 gnu/packages/pumpio.scm           |  32 ++--
 gnu/packages/python.scm           |  47 +++--
 gnu/packages/rdf.scm              |  40 ++--
 gnu/packages/regex.scm            |  20 +-
 gnu/packages/rrdtool.scm          |  19 +-
 gnu/packages/ruby.scm             |  40 ++--
 gnu/packages/sawfish.scm          |  50 ++---
 gnu/packages/scheme.scm           | 134 +++++++-------
 gnu/packages/sdl.scm              |  46 ++---
 gnu/packages/serveez.scm          |  15 +-
 gnu/packages/skribilo.scm         |  29 +--
 gnu/packages/smalltalk.scm        |  17 +-
 gnu/packages/suckless.scm         |   4 +-
 gnu/packages/tcl.scm              |  15 +-
 gnu/packages/telephony.scm        |  12 +-
 gnu/packages/textutils.scm        |  25 ++-
 gnu/packages/time.scm             |  19 +-
 gnu/packages/tor.scm              |  14 +-
 gnu/packages/uucp.scm             |  24 +--
 gnu/packages/video.scm            |   9 +-
 gnu/packages/web-browsers.scm     |  10 +-
 gnu/packages/web.scm              |  15 +-
 gnu/packages/wicd.scm             | 214 +++++++++++----------
 gnu/packages/wm.scm               |   2 +-
 gnu/packages/xdisorg.scm          |   5 +-
 gnu/packages/xfce.scm             |  23 +--
 gnu/packages/xfig.scm             |  75 ++++----
 gnu/packages/xorg.scm             |  39 ++--
 84 files changed, 2253 insertions(+), 2274 deletions(-)

diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 9729a30fc..afcf9dcae 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -361,32 +361,33 @@ login, passwd, su, groupadd, and useradd.")
                "05yxrp44ky2kg6qknk1ih0kvwkgbn9fbz77r3vci7agslh5wjm8g"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases (alist-replace 'configure
-                               (lambda* (#:key inputs outputs
-                                         #:allow-other-keys)
-                                 (let* ((out    (assoc-ref outputs "out"))
-                                        (man8   (string-append
-                                                 out "/share/man/man8"))
-                                        (sbin   (string-append out "/sbin"))
-                                        (shadow (assoc-ref inputs "shadow"))
-                                        (login  (string-append shadow
-                                                               "/bin/login")))
-                                   (substitute* "Makefile"
-                                     (("^SBINDIR.*")
-                                      (string-append "SBINDIR = " out
-                                                     "/sbin\n"))
-                                     (("^MANDIR.*")
-                                      (string-append "MANDIR = " out
-                                                     "/share/man/man8\n")))
-
-                                   ;; Pick the right 'login' by default.
-                                   (substitute* "mingetty.c"
-                                     (("\"/bin/login\"")
-                                      (string-append "\"" login "\"")))
-
-                                   (mkdir-p sbin)
-                                   (mkdir-p man8)))
-                               %standard-phases)
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out    (assoc-ref outputs "out"))
+                    (man8   (string-append
+                             out "/share/man/man8"))
+                    (sbin   (string-append out "/sbin"))
+                    (shadow (assoc-ref inputs "shadow"))
+                    (login  (string-append shadow
+                                           "/bin/login")))
+               (substitute* "Makefile"
+                 (("^SBINDIR.*")
+                  (string-append "SBINDIR = " out
+                                 "/sbin\n"))
+                 (("^MANDIR.*")
+                  (string-append "MANDIR = " out
+                                 "/share/man/man8\n")))
+
+               ;; Pick the right 'login' by default.
+               (substitute* "mingetty.c"
+                 (("\"/bin/login\"")
+                  (string-append "\"" login "\"")))
+
+               (mkdir-p sbin)
+               (mkdir-p man8))
+             #t)))
        #:tests? #f))                              ; no tests
     (inputs `(("shadow" ,shadow)))
 
@@ -725,25 +726,25 @@ by bandwidth they use.")
                          ("perl-x11-protocol" ,perl-x11-protocol)))
     (arguments
      `(#:phases
-       (alist-cons-after
-        'install 'set-load-paths
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          ;; Put the perl-tk and perl-x11-protocol modules in the perl inc
-          ;; path for PROG
-          (let* ((out  (assoc-ref outputs "out"))
-                 (prog (string-append out "/bin/cssh"))
-                 (perl-ver ,(package-version perl))
-                 (x11-inc (string-append
-                           (assoc-ref inputs "perl-x11-protocol")
-                           "/lib/perl5/site_perl/" perl-ver))
-                 (tk-inc (string-append
-                          (assoc-ref inputs "perl-tk")
-                          "/lib/perl5/site_perl/" perl-ver
-                          "/x86_64-linux")))
-            (wrap-program
-             prog
-             `("PERL5LIB" ":" prefix (,x11-inc ,tk-inc)))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'install 'set-load-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Put the perl-tk and perl-x11-protocol modules in the perl inc
+             ;; path for PROG
+             (let* ((out  (assoc-ref outputs "out"))
+                    (prog (string-append out "/bin/cssh"))
+                    (perl-ver ,(package-version perl))
+                    (x11-inc (string-append
+                              (assoc-ref inputs "perl-x11-protocol")
+                              "/lib/perl5/site_perl/" perl-ver))
+                    (tk-inc (string-append
+                             (assoc-ref inputs "perl-tk")
+                             "/lib/perl5/site_perl/" perl-ver
+                             "/x86_64-linux")))
+               (wrap-program
+                   prog
+                 `("PERL5LIB" ":" prefix (,x11-inc ,tk-inc))))
+             #t)))))
     ;; The clusterssh.sourceforge.net address requires login to view
     (home-page "https://sourceforge.net/projects/clusterssh/")
     (synopsis "Secure concurrent multi-server terminal control")
@@ -849,29 +850,30 @@ system administrator.")
        ;; Avoid non-determinism; see <http://bugs.gnu.org/21918>.
        #:parallel-build? #f
 
-       #:phases (alist-cons-before
-                 'configure 'pre-configure
-                 (lambda _
-                   (substitute* "src/sudo_usage.h.in"
-                     ;; Do not capture 'configure' arguments since we would
-                     ;; unduly retain references, and also because the
-                     ;; CPPFLAGS above would close the string literal
-                     ;; prematurely.
-                     (("@CONFIGURE_ARGS@") "\"\""))
-                   (substitute* (find-files "." "Makefile\\.in")
-                     (("-o [[:graph:]]+ -g [[:graph:]]+")
-                      ;; Allow installation as non-root.
-                      "")
-                     (("^install: (.*)install-sudoers(.*)" _ before after)
-                      ;; Don't try to create /etc/sudoers.
-                      (string-append "install: " before after "\n"))
-                     (("\\$\\(DESTDIR\\)\\$\\(rundir\\)")
-                      ;; Don't try to create /run/sudo.
-                      "$(TMPDIR)/dummy")
-                     (("\\$\\(DESTDIR\\)\\$\\(vardir\\)")
-                      ;; Don't try to create /var/db/sudo.
-                      "$(TMPDIR)/dummy")))
-                 %standard-phases)
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda _
+             (substitute* "src/sudo_usage.h.in"
+               ;; Do not capture 'configure' arguments since we would
+               ;; unduly retain references, and also because the
+               ;; CPPFLAGS above would close the string literal
+               ;; prematurely.
+               (("@CONFIGURE_ARGS@") "\"\""))
+             (substitute* (find-files "." "Makefile\\.in")
+               (("-o [[:graph:]]+ -g [[:graph:]]+")
+                ;; Allow installation as non-root.
+                "")
+               (("^install: (.*)install-sudoers(.*)" _ before after)
+                ;; Don't try to create /etc/sudoers.
+                (string-append "install: " before after "\n"))
+               (("\\$\\(DESTDIR\\)\\$\\(rundir\\)")
+                ;; Don't try to create /run/sudo.
+                "$(TMPDIR)/dummy")
+               (("\\$\\(DESTDIR\\)\\$\\(vardir\\)")
+                ;; Don't try to create /var/db/sudo.
+                "$(TMPDIR)/dummy"))
+             #t)))
 
        ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but
        ;; the chroot's /etc/passwd doesn't have it.  Turn off the tests.
@@ -907,13 +909,14 @@ commands and their arguments.")
                 "0l0l5gz3d5j9bqjsbjlfcv4w4jwndllp9fmyai4x9kg6qhs6v4xl"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (chdir "wpa_supplicant")
-                   (copy-file "defconfig" ".config")
-                   (let ((port (open-file ".config" "al")))
-                     (display "
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (chdir "wpa_supplicant")
+             (copy-file "defconfig" ".config")
+             (let ((port (open-file ".config" "al")))
+               (display "
       CONFIG_DEBUG_SYSLOG=y
 
       # Choose GnuTLS (the default is OpenSSL.)
@@ -923,26 +926,24 @@ commands and their arguments.")
       CFLAGS += $(shell pkg-config libnl-3.0 --cflags)
       CONFIG_LIBNL32=y
       CONFIG_READLINE=y\n" port)
-                     (close-port port)))
-
-                 (alist-cons-after
-                  'install 'install-man-pages
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let* ((out  (assoc-ref outputs "out"))
-                           (man  (string-append out "/share/man"))
-                           (man5 (string-append man "/man5"))
-                           (man8 (string-append man "/man8")))
-                      (define (copy-man-page target)
-                        (lambda (file)
-                          (install-file file target)))
-
-                      (mkdir-p man5) (mkdir man8)
-                      (for-each (copy-man-page man5)
-                                (find-files "doc/docbook" "\\.5"))
-                      (for-each (copy-man-page man8)
-                                (find-files "doc/docbook" "\\.8"))
-                      #t))
-                  %standard-phases))
+               (close-port port))
+             #t))
+         (add-after 'install 'install-man-pages
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out  (assoc-ref outputs "out"))
+                    (man  (string-append out "/share/man"))
+                    (man5 (string-append man "/man5"))
+                    (man8 (string-append man "/man8")))
+               (define (copy-man-page target)
+                 (lambda (file)
+                   (install-file file target)))
+
+               (mkdir-p man5) (mkdir man8)
+               (for-each (copy-man-page man5)
+                         (find-files "doc/docbook" "\\.5"))
+               (for-each (copy-man-page man8)
+                         (find-files "doc/docbook" "\\.8"))
+               #t))))
 
       #:make-flags (list "CC=gcc"
                          (string-append "BINDIR=" (assoc-ref %outputs "out")
@@ -979,25 +980,24 @@ This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.")
     (arguments
      (substitute-keyword-arguments (package-arguments wpa-supplicant-minimal)
        ((#:phases phases)
-        `(alist-cons-after
-          'configure 'configure-for-dbus
-          (lambda _
-            (let ((port (open-file ".config" "al")))
-              (display "
+        `(modify-phases ,phases
+           (add-after 'configure 'configure-for-dbus
+             (lambda _
+               (let ((port (open-file ".config" "al")))
+                 (display "
       CONFIG_CTRL_IFACE_DBUS=y
       CONFIG_CTRL_IFACE_DBUS_NEW=y
       CONFIG_CTRL_IFACE_DBUS_INTRO=y\n" port)
-              (close-port port))
-            #t)
-          (alist-cons-after
-           'install-man-pages 'install-dbus-conf
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (dir (string-append out "/etc/dbus-1/system.d")))
-               (mkdir-p dir)
-               (copy-file "dbus/dbus-wpa_supplicant.conf"
-                          (string-append dir "/wpa_supplicant.conf"))))
-           ,phases)))))))
+                 (close-port port))
+               #t))
+           (add-after 'install-man-pages 'install-dbus-conf
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (dir (string-append out "/etc/dbus-1/system.d")))
+                 (mkdir-p dir)
+                 (copy-file "dbus/dbus-wpa_supplicant.conf"
+                            (string-append dir "/wpa_supplicant.conf")))
+               #t))))))))
 
 (define-public wakelan
   (package
@@ -1013,22 +1013,22 @@ This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.")
                 "0vydqpf44146ir6k87gmqaq6xy66xhc1gkr3nsd7jj3nhy7ypx9x"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let ((out (assoc-ref outputs "out")))
-                     (mkdir-p (string-append out "/bin"))
-                     (mkdir-p (string-append out "/share/man/man1"))
-
-                     ;; It's an old configure script that doesn't understand
-                     ;; the extra options we pass.
-                     (setenv "CONFIG_SHELL" (which "bash"))
-                     (zero?
-                      (system* "./configure"
-                               (string-append "--prefix=" out)
-                               (string-append "--mandir=" out
-                                              "/share/man")))))
-                 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/bin"))
+               (mkdir-p (string-append out "/share/man/man1"))
+
+               ;; It's an old configure script that doesn't understand
+               ;; the extra options we pass.
+               (setenv "CONFIG_SHELL" (which "bash"))
+               (zero?
+                (system* "./configure"
+                         (string-append "--prefix=" out)
+                         (string-append "--mandir=" out
+                                        "/share/man")))))))
        #:tests? #f))
     (home-page "http://kernel.org")               ; really, no home page
     (synopsis "Send a wake-on-LAN packet")
@@ -1087,7 +1087,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
                           "HOST=_LINUX"
                           "OPT_CFLAGS=-Wall -fno-strict-aliasing")
        #:tests? #f  ; no 'check' target.
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (home-page "http://acpica.org/")
     (synopsis "Tools for the development and debug of ACPI tables")
     (description
@@ -1197,7 +1197,7 @@ recover lost partitions and/or make non-booting disks bootable again.")
                (base32 "04kviw799qxly08zb8n5mgxfd96gyis6x69q2qiw86jnh87c4mv9"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-delete 'configure %standard-phases)
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
        #:tests? #f                      ; no check target
        #:make-flags (let ((out (assoc-ref %outputs "out")))
                                (list (string-append "prefix=" out)))))
@@ -1226,23 +1226,23 @@ environment variable is set and output is to tty.")
                            "#!$SHELL")))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'build 'patch-/bin/sh
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   ;; Use the right shell when executing the watcher and
-                   ;; user-provided shell commands.
-                   (let ((bash (assoc-ref inputs "bash")))
-                     (substitute* '("src/direvent.c" "src/progman.c")
-                       (("\"/bin/sh\"")
-                        (string-append "\"" bash "/bin/sh\"")))
-
-                     ;; Adjust the 'shell.at' test accordingly.
-                     (substitute* "tests/testsuite"
-                       (("SHELL=/bin/sh")
-                        (string-append "SHELL=" bash "/bin/sh")))
-
-                     #t))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'patch-/bin/sh
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Use the right shell when executing the watcher and
+             ;; user-provided shell commands.
+             (let ((bash (assoc-ref inputs "bash")))
+               (substitute* '("src/direvent.c" "src/progman.c")
+                 (("\"/bin/sh\"")
+                  (string-append "\"" bash "/bin/sh\"")))
+
+               ;; Adjust the 'shell.at' test accordingly.
+               (substitute* "tests/testsuite"
+                 (("SHELL=/bin/sh")
+                  (string-append "SHELL=" bash "/bin/sh")))
+
+               #t))))))
     (home-page "https://www.gnu.org/software/direvent/")
     (synopsis "Daemon to monitor directories for events such as file removal")
     (description
@@ -1699,7 +1699,7 @@ results (ndiff), and a packet generation and response analysis tool (nping).")
                       (list (string-append "DESTDIR=" out)
                             "prefix=/"))
        ;; no configure script
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs `(("python-2" ,python-2)))
     (synopsis "Versatile resource statistics tool")
     (description "Dstat is a versatile replacement for @command{vmstat},
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index d4405a5bf..f48f1c154 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -333,22 +333,21 @@ fast arithmetic.")
       ("mpfr" ,mpfr)))
    (arguments
     `(#:phases
-        (alist-replace
-         'configure
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (let ((out (assoc-ref outputs "out"))
-                 (flint (assoc-ref inputs "flint"))
-                 (gmp (assoc-ref inputs "gmp"))
-                 (mpfr (assoc-ref inputs "mpfr")))
-             ;; do not pass "--enable-fast-install", which makes the
-             ;; homebrew configure process fail
-             (zero? (system*
-                     "./configure"
-                     (string-append "--prefix=" out)
-                     (string-append "--with-flint=" flint)
-                     (string-append "--with-gmp=" gmp)
-                     (string-append "--with-mpfr=" mpfr)))))
-         %standard-phases)))
+      (modify-phases %standard-phases
+        (replace 'configure
+          (lambda* (#:key inputs outputs #:allow-other-keys)
+            (let ((out (assoc-ref outputs "out"))
+                  (flint (assoc-ref inputs "flint"))
+                  (gmp (assoc-ref inputs "gmp"))
+                  (mpfr (assoc-ref inputs "mpfr")))
+              ;; do not pass "--enable-fast-install", which makes the
+              ;; homebrew configure process fail
+              (zero? (system*
+                      "./configure"
+                      (string-append "--prefix=" out)
+                      (string-append "--with-flint=" flint)
+                      (string-append "--with-gmp=" gmp)
+                      (string-append "--with-mpfr=" mpfr)))))))))
    (synopsis "Arbitrary precision floating-point ball arithmetic")
    (description
     "Arb is a C library for arbitrary-precision floating-point ball
diff --git a/gnu/packages/apr.scm b/gnu/packages/apr.scm
index 17945c039..baadb41b6 100644
--- a/gnu/packages/apr.scm
+++ b/gnu/packages/apr.scm
@@ -80,19 +80,18 @@ around or take advantage of platform-specific deficiencies or features.")
      `(("expat" ,expat)))
     (arguments
      '(#:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (let ((out   (assoc-ref outputs "out"))
-                (apr   (assoc-ref inputs  "apr"))
-                (expat (assoc-ref inputs  "expat")))
-            (setenv "CONFIG_SHELL" (which "bash"))
-            (zero?
-             (system* "./configure"
-                      (string-append "--prefix=" out)
-                      (string-append "--with-apr=" apr)
-                      (string-append "--with-expat=" expat)))))
-        %standard-phases)
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out   (assoc-ref outputs "out"))
+                   (apr   (assoc-ref inputs  "apr"))
+                   (expat (assoc-ref inputs  "expat")))
+               (setenv "CONFIG_SHELL" (which "bash"))
+               (zero?
+                (system* "./configure"
+                         (string-append "--prefix=" out)
+                         (string-append "--with-apr=" apr)
+                         (string-append "--with-expat=" expat)))))))
 
        ;; There are race conditions during 'make check'.  Typically, the
        ;; 'testall' executable is not built yet by the time 'make check' tries
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 40700cae3..e756fbf7c 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -623,23 +623,22 @@ language and software synthesizer.")
      `(#:tests? #f ; no "check" target
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:phases
-       (alist-cons-after
-        'unpack 'patch-makefile-and-enter-directory
-        (lambda _
-          (substitute* "libs/Makefile"
-            (("/sbin/ldconfig") "true")
-            (("^LIBDIR =.*") "LIBDIR = lib\n"))
-          (chdir "libs")
-          #t)
-        (alist-cons-after
-         'install
-         'install-symlink
-         (lambda _
-           (symlink "libclalsadrv.so"
-                    (string-append (assoc-ref %outputs "out")
-                                   "/lib/libclalsadrv.so.2")))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-makefile-and-enter-directory
+           (lambda _
+             (substitute* "libs/Makefile"
+               (("/sbin/ldconfig") "true")
+               (("^LIBDIR =.*") "LIBDIR = lib\n"))
+             (chdir "libs")
+             #t))
+         (add-after 'install 'install-symlink
+           (lambda _
+             (symlink "libclalsadrv.so"
+                      (string-append (assoc-ref %outputs "out")
+                                     "/lib/libclalsadrv.so.2"))
+             #t))
          ;; no configure script
-         (alist-delete 'configure %standard-phases)))))
+         (delete 'configure))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("fftw" ,fftw)))
@@ -978,11 +977,9 @@ follower.")
     (build-system gnu-build-system)
     (arguments
      `(#:phases
-       (alist-cons-after
-        'unpack
-        'remove-broken-symlinks
-        (lambda _ (delete-file-recursively "m4") #t)
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-broken-symlinks
+           (lambda _ (delete-file-recursively "m4") #t)))))
     (inputs
      `(("libsndfile" ,libsndfile)
        ("alsa-lib" ,alsa-lib)
@@ -1021,12 +1018,11 @@ also play midifiles using a Soundfont.")
        ("unzip" ,unzip)))
     (arguments
      '(#:phases
-       (alist-cons-after
-        'unpack 'bootstrap
-        (lambda _
-          (substitute* "bootstrap" (("\r\n") "\n"))
-          (zero? (system* "sh" "bootstrap")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'bootstrap
+           (lambda _
+             (substitute* "bootstrap" (("\r\n") "\n"))
+             (zero? (system* "sh" "bootstrap")))))))
     (home-page "http://www.audiocoding.com/faad2.html")
     (synopsis "MPEG-4 and MPEG-2 AAC decoder")
     (description
@@ -1680,7 +1676,7 @@ software.")
                      "TYPE=mdaPiano"
                      (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:tests? #f ; no check target
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("lv2" ,lv2)
        ("lvtk" ,lvtk)))
@@ -1703,7 +1699,7 @@ software.")
                      "TYPE=mdaEPiano"
                      (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:tests? #f ; no check target
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (home-page "http://elephly.net/lv2/mdaepiano.html")
     (synopsis "LV2 port of the mda EPiano plugin")
     (description "An LV2 port of the mda EPiano VSTi.")))
@@ -2096,19 +2092,19 @@ Suil currently supports every combination of Gtk 2, Qt 4, and X11.")
              (string-append "--with-default-path="
                             (assoc-ref %outputs "out") "/etc/timidity"))
        #:phases
-       (alist-cons-after
-        'install 'install-config
-        (lambda _
-          (let ((out (string-append (assoc-ref %outputs "out")
-                                    "/etc/timidity")))
-            (mkdir-p out)
-            (call-with-output-file
-                (string-append out "/timidity.cfg")
-              (lambda (port)
-                (format port (string-append "source "
-                                            (assoc-ref %build-inputs "freepats")
-                                            "/share/freepats/freepats.cfg"))))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'install 'install-config
+           (lambda _
+             (let ((out (string-append (assoc-ref %outputs "out")
+                                       "/etc/timidity")))
+               (mkdir-p out)
+               (call-with-output-file
+                   (string-append out "/timidity.cfg")
+                 (lambda (port)
+                   (format port (string-append "source "
+                                               (assoc-ref %build-inputs "freepats")
+                                               "/share/freepats/freepats.cfg")))))
+             #t)))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("ao" ,ao)
@@ -2147,16 +2143,15 @@ disks as various audio file formats.")
     (arguments
      `(#:tests? #f                      ; no check target
        #:phases
-       (alist-cons-after
-        'install 'remove-libvamp-hostsdk.la
-        (lambda* (#:key outputs #:allow-other-keys)
-          ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
-          (for-each delete-file
-                    (let ((out (assoc-ref outputs "out")))
-                      (list (string-append out "/lib/libvamp-sdk.la")
-                            (string-append out "/lib/libvamp-hostsdk.la"))))
-          #t)
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'install 'remove-libvamp-hostsdk.la
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
+             (for-each delete-file
+                       (let ((out (assoc-ref outputs "out")))
+                         (list (string-append out "/lib/libvamp-sdk.la")
+                               (string-append out "/lib/libvamp-hostsdk.la"))))
+             #t)))))
     (inputs
      `(("libsndfile" ,libsndfile)))
     (native-inputs
@@ -2318,11 +2313,10 @@ Tracker 3 S3M and Impulse Tracker IT files.")
        ("file" ,file)))
     (arguments
      '(#:phases
-       (alist-cons-after
-        'unpack 'bootstrap
-        (lambda _
-          (zero? (system* "sh" "bootstrap")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'bootstrap
+           (lambda _
+             (zero? (system* "sh" "bootstrap")))))))
     (home-page "http://www.surina.net/soundtouch/")
     (synopsis
      "Audio processing library for changing tempo, pitch and playback rate")
@@ -2456,11 +2450,10 @@ portions of LAME.")
      '(#:phases
        ;; Autoreconf is necessary because the audacity-compat patch modifies
        ;; .in files.
-       (alist-cons-after
-        'unpack 'autoreconf
-        (lambda _
-          (zero? (system* "autoreconf" "-vif")))
-        %standard-phases)
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autoreconf
+           (lambda _
+             (zero? (system* "autoreconf" "-vif")))))
        #:tests? #f))                    ;no 'check' target
     (home-page "http://www.portaudio.com/")
     (synopsis "Audio I/O library")
@@ -2524,14 +2517,13 @@ synthesizer written in C++.")
        ("pulseaudio" ,pulseaudio)))
     (arguments
      '(#:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key outputs #:allow-other-keys)
-          (setenv "CC" "gcc")
-          (zero?
-           (system* "./configure"
-                    (string-append "--prefix=" (assoc-ref outputs "out")))))
-        %standard-phases)
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (setenv "CC" "gcc")
+             (zero?
+              (system* "./configure"
+                       (string-append "--prefix=" (assoc-ref outputs "out")))))))
        ;; No 'check' target.
        #:tests? #f))
     (home-page "http://themaister.net/rsound.html")
@@ -2598,22 +2590,22 @@ result.")
      `(#:tests? #f ; no "check" target
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:phases
-       (alist-cons-after
-        'unpack 'patch-makefile-and-enter-directory
-        (lambda _
-          (substitute* "libs/Makefile"
-            (("ldconfig") "true")
-            (("^LIBDIR =.*") "LIBDIR = lib\n"))
-          (chdir "libs") #t)
-        (alist-cons-after
-         'install
-         'install-symlink
-         (lambda _
-           (symlink "libzita-convolver.so"
-                    (string-append (assoc-ref %outputs "out")
-                                   "/lib/libzita-convolver.so.3")))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-makefile-and-enter-directory
+           (lambda _
+             (substitute* "libs/Makefile"
+               (("ldconfig") "true")
+               (("^LIBDIR =.*") "LIBDIR = lib\n"))
+             (chdir "libs")
+             #t))
+         (add-after 'install 'install-symlink
+           (lambda _
+             (symlink "libzita-convolver.so"
+                      (string-append (assoc-ref %outputs "out")
+                                     "/lib/libzita-convolver.so.3"))
+             #t))
          ;; no configure script
-         (alist-delete 'configure %standard-phases)))))
+         (delete 'configure))))
     (inputs `(("fftwf" ,fftwf)))
     (home-page "http://kokkinizita.linuxaudio.org")
     (synopsis "Fast, partitioned convolution engine library")
@@ -2688,23 +2680,22 @@ provide high-quality sample rate conversion.")
      `(#:tests? #f ; no "check" target
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:phases
-       (alist-cons-after
-        'unpack 'patch-makefile-and-enter-directory
-        (lambda _
-          (substitute* "libs/Makefile"
-            (("ldconfig") "true")
-            (("^LIBDIR =.*") "LIBDIR = lib\n"))
-          (chdir "libs")
-          #t)
-        (alist-cons-after
-         'install
-         'install-symlink
-         (lambda _
-           (symlink "libzita-alsa-pcmi.so"
-                    (string-append (assoc-ref %outputs "out")
-                                   "/lib/libzita-alsa-pcmi.so.0")))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-makefile-and-enter-directory
+           (lambda _
+             (substitute* "libs/Makefile"
+               (("ldconfig") "true")
+               (("^LIBDIR =.*") "LIBDIR = lib\n"))
+             (chdir "libs")
+             #t))
+         (add-after 'install 'install-symlink
+           (lambda _
+             (symlink "libzita-alsa-pcmi.so"
+                      (string-append (assoc-ref %outputs "out")
+                                     "/lib/libzita-alsa-pcmi.so.0"))
+             #t))
          ;; no configure script
-         (alist-delete 'configure %standard-phases)))))
+         (delete 'configure))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("fftw" ,fftw)))
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index f9a537d71..df3e683d6 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -293,20 +293,20 @@ random access nor for in-place modification.")
        ("nettle" ,nettle)))
     (arguments
      `(#:parallel-build? #f             ;race conditions
-       #:phases (alist-cons-before
-                 'build 'remove-Werror
-                 ;; rdup uses a deprecated function from libarchive
-                 (lambda _
-                   (substitute* "GNUmakefile"
-                     (("^(CFLAGS=.*)-Werror" _ front) front)))
-                 (alist-cons-before
-                  'check 'pre-check
-                  (lambda _
-                    (setenv "HOME" (getcwd))
-                    (substitute* "testsuite/rdup/rdup.rdup-up-t-with-file.exp"
-                      (("/bin/cat") (which "cat"))))
-
-                  %standard-phases))))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'remove-Werror
+           ;; rdup uses a deprecated function from libarchive
+           (lambda _
+             (substitute* "GNUmakefile"
+               (("^(CFLAGS=.*)-Werror" _ front) front))
+             #t))
+         (add-before 'check 'pre-check
+           (lambda _
+             (setenv "HOME" (getcwd))
+             (substitute* "testsuite/rdup/rdup.rdup-up-t-with-file.exp"
+               (("/bin/cat") (which "cat")))
+             #t)))))
     (home-page "http://archive.miek.nl/projects/rdup/index.html")
     (synopsis "Provide a list of files to backup")
     (description
@@ -336,9 +336,8 @@ list and implement the backup strategy.")
                       "CC=gcc")
        #:tests? #f                      ;test input not distributed
        #:phases
-       (alist-delete
-        'configure                      ;no configure phase
-        %standard-phases)))
+       ;; no configure phase
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "http://viric.name/cgi-bin/btar/doc/trunk/doc/home.wiki")
     (synopsis "Tar-compatible archiver")
     (description
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 614a7d407..02250dfaf 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -366,32 +366,33 @@ transparently with both VCFs and BCFs, both uncompressed and BGZF-compressed.")
      '(#:tests? #f
        #:make-flags (list (string-append "BINDIR=" %output "/bin"))
        #:phases
-       (alist-cons-after
-         'unpack 'unpack-tarballs
-         (lambda _
-           ;; FIXME: Bedops includes tarballs of minimally patched upstream
-           ;; libraries jansson, zlib, and bzip2.  We cannot just use stock
-           ;; libraries because at least one of the libraries (zlib) is
-           ;; patched to add a C++ function definition (deflateInit2cpp).
-           ;; Until the Bedops developers offer a way to link against system
-           ;; libraries we have to build the in-tree copies of these three
-           ;; libraries.
-
-           ;; See upstream discussion:
-           ;; https://github.com/bedops/bedops/issues/124
-
-           ;; Unpack the tarballs to benefit from shebang patching.
-           (with-directory-excursion "third-party"
-             (and (zero? (system* "tar" "xvf" "jansson-2.6.tar.bz2"))
-                  (zero? (system* "tar" "xvf" "zlib-1.2.7.tar.bz2"))
-                  (zero? (system* "tar" "xvf" "bzip2-1.0.6.tar.bz2"))))
-           ;; Disable unpacking of tarballs in Makefile.
-           (substitute* "system.mk/Makefile.linux"
-             (("^\tbzcat .*") "\t@echo \"not unpacking\"\n")
-             (("\\./configure") "CONFIG_SHELL=bash ./configure"))
-           (substitute* "third-party/zlib-1.2.7/Makefile.in"
-             (("^SHELL=.*$") "SHELL=bash\n")))
-         (alist-delete 'configure %standard-phases))))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unpack-tarballs
+           (lambda _
+             ;; FIXME: Bedops includes tarballs of minimally patched upstream
+             ;; libraries jansson, zlib, and bzip2.  We cannot just use stock
+             ;; libraries because at least one of the libraries (zlib) is
+             ;; patched to add a C++ function definition (deflateInit2cpp).
+             ;; Until the Bedops developers offer a way to link against system
+             ;; libraries we have to build the in-tree copies of these three
+             ;; libraries.
+
+             ;; See upstream discussion:
+             ;; https://github.com/bedops/bedops/issues/124
+
+             ;; Unpack the tarballs to benefit from shebang patching.
+             (with-directory-excursion "third-party"
+               (and (zero? (system* "tar" "xvf" "jansson-2.6.tar.bz2"))
+                    (zero? (system* "tar" "xvf" "zlib-1.2.7.tar.bz2"))
+                    (zero? (system* "tar" "xvf" "bzip2-1.0.6.tar.bz2"))))
+             ;; Disable unpacking of tarballs in Makefile.
+             (substitute* "system.mk/Makefile.linux"
+               (("^\tbzcat .*") "\t@echo \"not unpacking\"\n")
+               (("\\./configure") "CONFIG_SHELL=bash ./configure"))
+             (substitute* "third-party/zlib-1.2.7/Makefile.in"
+               (("^SHELL=.*$") "SHELL=bash\n"))
+             #t))
+         (delete 'configure))))
     (home-page "https://github.com/bedops/bedops")
     (synopsis "Tools for high-performance genomic feature operations")
     (description
@@ -1322,20 +1323,21 @@ splice junctions between exons.")
     (arguments
      '(#:tests? #f ;no "check" target
        #:phases
-       (alist-replace
-        'install
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let ((bin (string-append
-                      (assoc-ref outputs "out") "/bin"))
-                (doc (string-append
-                      (assoc-ref outputs "out") "/share/doc/bwa"))
-                (man (string-append
-                      (assoc-ref outputs "out") "/share/man/man1")))
-            (install-file "bwa" bin)
-            (install-file "README.md" doc)
-            (install-file "bwa.1" man)))
-        ;; no "configure" script
-        (alist-delete 'configure %standard-phases))))
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((bin (string-append
+                         (assoc-ref outputs "out") "/bin"))
+                   (doc (string-append
+                         (assoc-ref outputs "out") "/share/doc/bwa"))
+                   (man (string-append
+                         (assoc-ref outputs "out") "/share/man/man1")))
+               (install-file "bwa" bin)
+               (install-file "README.md" doc)
+               (install-file "bwa.1" man))
+             #t))
+         ;; no "configure" script
+         (delete 'configure))))
     (inputs `(("zlib" ,zlib)))
     ;; Non-portable SSE instructions are used so building fails on platforms
     ;; other than x86_64.
@@ -1812,10 +1814,9 @@ time.")
     (arguments
      `(#:python ,python-2
        #:phases
-       (alist-cons-after
-        'unpack 'set-env
-        (lambda _ (setenv "CROSSMAP_USE_SYSTEM_PYSAM" "1"))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'set-env
+           (lambda _ (setenv "CROSSMAP_USE_SYSTEM_PYSAM" "1") #t)))))
     (inputs
      `(("python-numpy" ,python2-numpy)
        ("python-pysam" ,python2-pysam)
@@ -2362,19 +2363,18 @@ dynamic programming or a variety of heuristics.")
     (arguments
      `(#:tests? #f ;no "check" target
        #:phases
-       (alist-cons-after
-        'unpack 'use-shared-boost-libs-and-set-bamtools-paths
-        (lambda* (#:key inputs #:allow-other-keys)
-          (substitute* "CMakeLists.txt"
-            (("set\\(Boost_USE_STATIC_LIBS ON\\)")
-             "set(Boost_USE_STATIC_LIBS OFF)")
-            (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/bamtools/include")
-             (string-append (assoc-ref inputs "bamtools") "/include/bamtools")))
-          (substitute* "src/CMakeLists.txt"
-            (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/\\.\\./bamtools/lib")
-             (string-append (assoc-ref inputs "bamtools") "/lib/bamtools")))
-          #t)
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'use-shared-boost-libs-and-set-bamtools-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "CMakeLists.txt"
+               (("set\\(Boost_USE_STATIC_LIBS ON\\)")
+                "set(Boost_USE_STATIC_LIBS OFF)")
+               (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/bamtools/include")
+                (string-append (assoc-ref inputs "bamtools") "/include/bamtools")))
+             (substitute* "src/CMakeLists.txt"
+               (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/\\.\\./bamtools/lib")
+                (string-append (assoc-ref inputs "bamtools") "/lib/bamtools")))
+             #t)))))
     (inputs
      `(("boost" ,boost)
        ("bamtools" ,bamtools)
@@ -2541,15 +2541,15 @@ results.  The FASTX-Toolkit tools perform some of these preprocessing tasks.")
                                          (assoc-ref %outputs "out")
                                          "/bin/"))
        #:phases
-       (alist-replace
-        'check
-        (lambda* (#:key outputs #:allow-other-keys)
-          (setenv "PATH" (string-append
-                          (assoc-ref outputs "out") "/bin:"
-                          (getenv "PATH")))
-          (chdir "../flexbar_v2.5_src/test")
-          (zero? (system* "bash" "flexbar_validate.sh")))
-        (alist-delete 'install %standard-phases))))
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key outputs #:allow-other-keys)
+             (setenv "PATH" (string-append
+                             (assoc-ref outputs "out") "/bin:"
+                             (getenv "PATH")))
+             (chdir "../flexbar_v2.5_src/test")
+             (zero? (system* "bash" "flexbar_validate.sh"))))
+         (delete 'install))))
     (inputs
      `(("tbb" ,tbb)
        ("zlib" ,zlib)))
@@ -2785,21 +2785,20 @@ association studies (GWAS).")
     (arguments
      `(#:python ,python-2
        #:phases
-       (alist-cons-after
-        'unpack 'generate-from-cython-sources
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          ;; Delete these C files to force fresh generation from pyx sources.
-          (delete-file "grit/sparsify_support_fns.c")
-          (delete-file "grit/call_peaks_support_fns.c")
-          (substitute* "setup.py"
-            (("Cython.Setup") "Cython.Build")
-            ;; Add numpy include path to fix compilation
-            (("pyx\", \\]")
-             (string-append "pyx\", ], include_dirs = ['"
-                            (assoc-ref inputs "python-numpy")
-                            "/lib/python2.7/site-packages/numpy/core/include/"
-                            "']"))) #t)
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'generate-from-cython-sources
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Delete these C files to force fresh generation from pyx sources.
+             (delete-file "grit/sparsify_support_fns.c")
+             (delete-file "grit/call_peaks_support_fns.c")
+             (substitute* "setup.py"
+               (("Cython.Setup") "Cython.Build")
+               ;; Add numpy include path to fix compilation
+               (("pyx\", \\]")
+                (string-append "pyx\", ], include_dirs = ['"
+                               (assoc-ref inputs "python-numpy")
+                               "/lib/python2.7/site-packages/numpy/core/include/"
+                               "']"))) #t)))))
     (inputs
      `(("python-scipy" ,python2-scipy)
        ("python-numpy" ,python2-numpy)
@@ -2842,28 +2841,29 @@ estimates transcript expression.")
                             '()
                             '("POPCNT_CAPABILITY=0")))
        #:phases
-       (alist-cons-after
-        'unpack 'patch-sources
-        (lambda _
-          ;; XXX Cannot use snippet because zip files are not supported
-          (substitute* "Makefile"
-            (("^CC = .*$") "CC = gcc")
-            (("^CPP = .*$") "CPP = g++")
-            ;; replace BUILD_HOST and BUILD_TIME for deterministic build
-            (("-DBUILD_HOST=.*") "-DBUILD_HOST=\"\\\"guix\\\"\"")
-            (("-DBUILD_TIME=.*") "-DBUILD_TIME=\"\\\"0\\\"\""))
-          (substitute* '("hisat-build" "hisat-inspect")
-            (("/usr/bin/env") (which "env"))))
-        (alist-replace
-         'install
-         (lambda* (#:key outputs #:allow-other-keys)
-           (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
-             (for-each (lambda (file)
-                         (install-file file bin))
-                       (find-files
-                        "."
-                        "hisat(-(build|align|inspect)(-(s|l)(-debug)*)*)*$"))))
-         (alist-delete 'configure %standard-phases)))))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-sources
+           (lambda _
+             ;; XXX Cannot use snippet because zip files are not supported
+             (substitute* "Makefile"
+               (("^CC = .*$") "CC = gcc")
+               (("^CPP = .*$") "CPP = g++")
+               ;; replace BUILD_HOST and BUILD_TIME for deterministic build
+               (("-DBUILD_HOST=.*") "-DBUILD_HOST=\"\\\"guix\\\"\"")
+               (("-DBUILD_TIME=.*") "-DBUILD_TIME=\"\\\"0\\\"\""))
+             (substitute* '("hisat-build" "hisat-inspect")
+               (("/usr/bin/env") (which "env")))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
+               (for-each (lambda (file)
+                           (install-file file bin))
+                         (find-files
+                          "."
+                          "hisat(-(build|align|inspect)(-(s|l)(-debug)*)*)*$")))
+             #t))
+         (delete 'configure))))
     (native-inputs
      `(("unzip" ,unzip)))
     (inputs
@@ -4673,19 +4673,17 @@ Roche 454, Ion Torrent and Pacific BioSciences SMRT.")
      `(#:parallel-build? #f ; not supported
        #:tests? #f ; no "check" target
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out")))
-            ;; The 'configure' script doesn't recognize things like
-            ;; '--enable-fast-install'.
-            (zero? (system* "./configure"
-                            (string-append "--build-prefix=" (getcwd) "/build")
-                            (string-append "--prefix=" out)))))
-        (alist-cons-after
-         'unpack 'enter-dir
-         (lambda _ (chdir "ngs-sdk") #t)
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; The 'configure' script doesn't recognize things like
+               ;; '--enable-fast-install'.
+               (zero? (system* "./configure"
+                               (string-append "--build-prefix=" (getcwd) "/build")
+                               (string-append "--prefix=" out))))))
+         (add-after 'unpack 'enter-dir
+           (lambda _ (chdir "ngs-sdk") #t)))))
     (native-inputs `(("perl" ,perl)))
     ;; According to the test
     ;;   unless ($MARCH =~ /x86_64/i || $MARCH =~ /i?86/i)
@@ -5435,17 +5433,17 @@ sequences.")
              "-f" "Makefile.Linux"
              "CC=gcc ${CCFLAGS}")
        #:phases
-       (alist-cons-after
-        'unpack 'enter-dir
-        (lambda _ (chdir "src") #t)
-        (alist-replace
-         'install
-         (lambda* (#:key outputs #:allow-other-keys)
-           (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
-             (mkdir-p bin)
-             (copy-recursively "../bin" bin)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'enter-dir
+           (lambda _ (chdir "src") #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
+               (mkdir-p bin)
+               (copy-recursively "../bin" bin))
+             #t))
          ;; no "configure" script
-         (alist-delete 'configure %standard-phases)))))
+         (delete 'configure))))
     (inputs `(("zlib" ,zlib)))
     (home-page "http://bioinf.wehi.edu.au/subread-package/")
     (synopsis "Tool kit for processing next-gen sequencing data")
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 79a87dc8b..9bd89d908 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -74,23 +74,24 @@
                "gui"))                    ; graphical user interface
     (arguments
      '(#:glib-or-gtk-wrap-excluded-outputs '("out")
-       #:phases (alist-cons-after
-                 'install 'move-gui
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Move the GUI to its own output, so that "out" doesn't
-                   ;; depend on GTK+.
-                   (let ((out (assoc-ref outputs "out"))
-                         (gui (assoc-ref outputs "gui")))
-                     (mkdir-p (string-append gui "/bin"))
-                     (rename-file (string-append out "/bin/transmission-gtk")
-                                  (string-append gui
-                                                 "/bin/transmission-gtk"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'move-gui
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Move the GUI to its own output, so that "out" doesn't
+             ;; depend on GTK+.
+             (let ((out (assoc-ref outputs "out"))
+                   (gui (assoc-ref outputs "gui")))
+               (mkdir-p (string-append gui "/bin"))
+               (rename-file (string-append out "/bin/transmission-gtk")
+                            (string-append gui
+                                           "/bin/transmission-gtk"))
 
-                     ;; Move the '.desktop' file as well.
-                     (mkdir (string-append gui "/share"))
-                     (rename-file (string-append out "/share/applications")
-                                  (string-append gui "/share/applications"))))
-                 %standard-phases)))
+               ;; Move the '.desktop' file as well.
+               (mkdir (string-append gui "/share"))
+               (rename-file (string-append out "/share/applications")
+                            (string-append gui "/share/applications")))
+             #t)))))
     (inputs
      `(("inotify-tools" ,inotify-tools)
        ("libevent" ,libevent)
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 704e8ad36..ad72ad0f7 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -454,7 +454,7 @@ the data.")
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f
-       #:phases (alist-delete 'configure %standard-phases)
+       #:phases (modify-phases %standard-phases (delete 'configure))
        #:make-flags (list "CC=gcc"
                           (string-append "PREFIX="
                                          (assoc-ref %outputs "out")))))
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 92636de7f..2a9ccd167 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -527,14 +527,14 @@ decompressors when faced with corrupted input.")
      `(("which" ,which)))
     (arguments
      `(#:phases
-        (alist-cons-after
-         'patch-source-shebangs 'unpatch-source-shebang
-         ;; revert the patch-shebang phase on a script which is
-         ;; in fact test data
-         (lambda _
-           (substitute* "tests/shar-1.ok"
-             (((which "sh")) "/bin/sh")))
-         %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'patch-source-shebangs 'unpatch-source-shebang
+           ;; revert the patch-shebang phase on a script which is
+           ;; in fact test data
+           (lambda _
+             (substitute* "tests/shar-1.ok"
+               (((which "sh")) "/bin/sh"))
+             #t)))))
     (home-page "https://www.gnu.org/software/sharutils/")
     (synopsis "Archives in shell scripts, uuencode/uudecode")
     (description
diff --git a/gnu/packages/conky.scm b/gnu/packages/conky.scm
index 1f5b38eef..f0f19c5a0 100644
--- a/gnu/packages/conky.scm
+++ b/gnu/packages/conky.scm
@@ -50,22 +50,21 @@
          ;; TODO: add 'ncurses.pc' to the ncurses package.
          "-DBUILD_NCURSES=false")
        #:phases
-       (alist-cons-after
-        'unpack 'add-freetype-to-search-path
-        (lambda* (#:key inputs #:allow-other-keys)
-          (substitute* "cmake/ConkyPlatformChecks.cmake"
-            (("set\\(INCLUDE_SEARCH_PATH")
-             (string-append
-              "set(INCLUDE_SEARCH_PATH "
-              (assoc-ref inputs "freetype") "/include/freetype2 ")))
-          #t)
-        (alist-replace
-         'install
-         (lambda* (#:key outputs #:allow-other-keys)
-           (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
-             (mkdir-p bin)
-             (install-file "src/conky" bin)))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'add-freetype-to-search-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "cmake/ConkyPlatformChecks.cmake"
+               (("set\\(INCLUDE_SEARCH_PATH")
+                (string-append
+                 "set(INCLUDE_SEARCH_PATH "
+                 (assoc-ref inputs "freetype") "/include/freetype2 ")))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
+               (mkdir-p bin)
+               (install-file "src/conky" bin))
+             #t)))))
     (inputs
      `(("freetype" ,freetype)
        ("ncurses" ,ncurses)
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 13efc5edc..655c6db18 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -164,34 +164,33 @@ and provides interfaces to the traditional file format.")
      '(#:tests? #f                            ; no check target available
        #:disallowed-references ("doc")
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out"))
-                (doc (assoc-ref outputs "doc")))
-            ;; '--docdir' is not honored, so we need to patch.
-            (substitute* "dist/Makefile.in"
-              (("docdir[[:blank:]]*=.*")
-               (string-append "docdir = " doc "/share/doc/bdb")))
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (doc (assoc-ref outputs "doc")))
+               ;; '--docdir' is not honored, so we need to patch.
+               (substitute* "dist/Makefile.in"
+                 (("docdir[[:blank:]]*=.*")
+                  (string-append "docdir = " doc "/share/doc/bdb")))
 
-            (zero?
-             (system* "./dist/configure"
-                      (string-append "--prefix=" out)
-                      (string-append "CONFIG_SHELL=" (which "bash"))
-                      (string-append "SHELL=" (which "bash"))
+               (zero?
+                (system* "./dist/configure"
+                         (string-append "--prefix=" out)
+                         (string-append "CONFIG_SHELL=" (which "bash"))
+                         (string-append "SHELL=" (which "bash"))
 
-                      ;; Remove 7 MiB of .a files.
-                      "--disable-static"
+                         ;; Remove 7 MiB of .a files.
+                         "--disable-static"
 
-                      ;; The compatibility mode is needed by some packages,
-                      ;; notably iproute2.
-                      "--enable-compat185"
+                         ;; The compatibility mode is needed by some packages,
+                         ;; notably iproute2.
+                         "--enable-compat185"
 
-                      ;; The following flag is needed so that the inclusion
-                      ;; of db_cxx.h into C++ files works; it leads to
-                      ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
-                      "--enable-cxx"))))
-                 %standard-phases)))
+                         ;; The following flag is needed so that the inclusion
+                         ;; of db_cxx.h into C++ files works; it leads to
+                         ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
+                         "--enable-cxx"))))))))
     (synopsis "Berkeley database")
     (description
      "Berkeley DB is an embeddable database allowing developers the choice of
@@ -219,39 +218,38 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
      `(#:tests? #f                            ; no check target available
        #:disallowed-references ("doc")
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out"))
-                (doc (assoc-ref outputs "doc")))
-            ;; '--docdir' is not honored, so we need to patch.
-            (substitute* "dist/Makefile.in"
-              (("docdir[[:blank:]]*=.*")
-               (string-append "docdir = " doc "/share/doc/bdb")))
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (doc (assoc-ref outputs "doc")))
+               ;; '--docdir' is not honored, so we need to patch.
+               (substitute* "dist/Makefile.in"
+                 (("docdir[[:blank:]]*=.*")
+                  (string-append "docdir = " doc "/share/doc/bdb")))
 
-            (zero?
-             (system* "./dist/configure"
-                      (string-append "--prefix=" out)
-                      (string-append "CONFIG_SHELL=" (which "bash"))
-                      (string-append "SHELL=" (which "bash"))
+               (zero?
+                (system* "./dist/configure"
+                         (string-append "--prefix=" out)
+                         (string-append "CONFIG_SHELL=" (which "bash"))
+                         (string-append "SHELL=" (which "bash"))
 
-                      ;; Bdb doesn't recognize aarch64 as an architecture.
-                      ,@(if (string=? "aarch64-linux" (%current-system))
-                            '("--build=aarch64-unknown-linux-gnu")
-                            '())
+                         ;; Bdb doesn't recognize aarch64 as an architecture.
+                         ,@(if (string=? "aarch64-linux" (%current-system))
+                               '("--build=aarch64-unknown-linux-gnu")
+                               '())
 
-                      ;; Remove 7 MiB of .a files.
-                      "--disable-static"
+                         ;; Remove 7 MiB of .a files.
+                         "--disable-static"
 
-                      ;; The compatibility mode is needed by some packages,
-                      ;; notably iproute2.
-                      "--enable-compat185"
+                         ;; The compatibility mode is needed by some packages,
+                         ;; notably iproute2.
+                         "--enable-compat185"
 
-                      ;; The following flag is needed so that the inclusion
-                      ;; of db_cxx.h into C++ files works; it leads to
-                      ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
-                      "--enable-cxx"))))
-                 %standard-phases)))))
+                         ;; The following flag is needed so that the inclusion
+                         ;; of db_cxx.h into C++ files works; it leads to
+                         ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
+                         "--enable-cxx"))))))))))
 
 (define-public leveldb
   (package
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 34c106141..1dab0085c 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -57,23 +57,24 @@
      `(("perl" ,perl)))
     (arguments
      `(#:phases
-       (alist-replace
-        'install
-        (lambda* (#:key outputs #:allow-other-keys)
-          ;; Makefile contains no install target
-          (let* ((out (assoc-ref outputs "out"))
-                 (bin (string-append out "/bin"))
-                 (doc (string-append out "/share/doc/delta-" ,version)))
-            (begin
-              (mkdir-p bin)
-              (mkdir-p doc)
-              (for-each (lambda (h)
-                          (install-file h doc))
-                        `("License.txt" ,@(find-files "www" ".*\\.html")))
-              (for-each (lambda (b)
-                          (install-file b bin))
-                        `("delta" "multidelta" "topformflat")))))
-        (alist-delete 'configure %standard-phases))))
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Makefile contains no install target
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (doc (string-append out "/share/doc/delta-" ,version)))
+               (begin
+                 (mkdir-p bin)
+                 (mkdir-p doc)
+                 (for-each (lambda (h)
+                             (install-file h doc))
+                           `("License.txt" ,@(find-files "www" ".*\\.html")))
+                 (for-each (lambda (b)
+                             (install-file b bin))
+                           `("delta" "multidelta" "topformflat"))))
+             #t))
+         (delete 'configure))))
     (home-page "http://delta.tigris.org/")
     (synopsis "Heuristical file minimizer")
     (description
@@ -113,23 +114,24 @@ program to exhibit a bug.")
        ("sys-cpu"         ,perl-sys-cpu)
        ("term-readkey"    ,perl-term-readkey)))
     (arguments
-     `(#:phases (alist-cons-after
-                 'install 'set-load-paths
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   ;; Tell creduce where to find the perl modules it needs.
-                   (let* ((out (assoc-ref outputs "out"))
-                          (prog (string-append out "/bin/creduce")))
-                     (wrap-program
-                      prog
-                      `("PERL5LIB" ":" prefix
-                        ,(map (lambda (p)
-                                (string-append (assoc-ref inputs p)
-                                               "/lib/perl5/site_perl/"
-                                               ,(package-version perl)))
-                              '("term-readkey"    "exporter-lite"
-                                "file-which"      "getopt-tabular"
-                                "regex-common"    "sys-cpu"))))))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'set-load-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Tell creduce where to find the perl modules it needs.
+             (let* ((out (assoc-ref outputs "out"))
+                    (prog (string-append out "/bin/creduce")))
+               (wrap-program
+                   prog
+                 `("PERL5LIB" ":" prefix
+                   ,(map (lambda (p)
+                           (string-append (assoc-ref inputs p)
+                                          "/lib/perl5/site_perl/"
+                                          ,(package-version perl)))
+                         '("term-readkey"    "exporter-lite"
+                           "file-which"      "getopt-tabular"
+                           "regex-common"    "sys-cpu")))))
+             #t)))))
     (home-page "http://embed.cs.utah.edu/creduce")
     (synopsis "Reducer for interesting code")
     (description
diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm
index 869d6239e..a0ed8367e 100644
--- a/gnu/packages/display-managers.scm
+++ b/gnu/packages/display-managers.scm
@@ -329,17 +329,17 @@ GTK+, lets you select a desktop session and log in to it.")
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (arguments
-     '(#:phases (alist-cons-before
-		 'configure 'set-new-etc-location
-		 (lambda _
-		   (substitute* "CMakeLists.txt"
-		     (("/etc")
-		      (string-append (assoc-ref %outputs "out") "/etc"))
-                     (("install.*systemd.*")
-                      ;; The build system's logic here is: if "Linux", then
-                      ;; "systemd".  Strip that.
-                      "")))
-		 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'set-new-etc-location
+           (lambda _
+             (substitute* "CMakeLists.txt"
+               (("/etc")
+                (string-append (assoc-ref %outputs "out") "/etc"))
+               (("install.*systemd.*")
+                ;; The build system's logic here is: if "Linux", then
+                ;; "systemd".  Strip that.
+                "")))))
        #:configure-flags '("-DUSE_PAM=yes"
                            "-DUSE_CONSOLEKIT=no")
        #:tests? #f))
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index afae4596b..64fdc9c3e 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -75,7 +75,7 @@
      `(("dbus" ,dbus)))
     (arguments
      `(#:phases
-       (alist-delete 'configure %standard-phases)
+       (modify-phases %standard-phases (delete 'configure))
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
                           "CC=gcc"
                           "COPTS=\"-DHAVE_DBUS\"")
diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm
index 189ece01a..4475cc70d 100644
--- a/gnu/packages/docbook.scm
+++ b/gnu/packages/docbook.scm
@@ -232,19 +232,19 @@ by no means limited to these applications.)  This package provides XML DTDs.")
        #:use-setuptools? #f
        #:tests? #f                      ;no 'test' command
        #:phases
-       (alist-cons-after
-        'wrap 'set-path
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out")))
-            ;; dblatex executes helper programs at runtime.
-            (wrap-program (string-append out "/bin/dblatex")
-                          `("PATH" ":" prefix
-                            ,(map (lambda (input)
-                                    (string-append (assoc-ref inputs input)
-                                                   "/bin"))
-                                  '("libxslt" "texlive"
-                                    "imagemagick" "inkscape"))))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'wrap 'set-path
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; dblatex executes helper programs at runtime.
+               (wrap-program (string-append out "/bin/dblatex")
+                 `("PATH" ":" prefix
+                   ,(map (lambda (input)
+                           (string-append (assoc-ref inputs input)
+                                          "/bin"))
+                         '("libxslt" "texlive"
+                           "imagemagick" "inkscape")))))
+             #t)))))
     (home-page "http://dblatex.sourceforge.net")
     (synopsis "DocBook to LaTeX Publishing")
     (description
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 02e7a9e90..b77abc778 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -302,14 +302,15 @@ editor (without an X toolkit)" )
                "0phz9d8wjk4p13vqannv0003fwh8qqrp0gfzcs2hgq1mrmv1srss"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-after
-                 'install 'post-install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (symlink "geiser-install.el"
-                            (string-append (assoc-ref outputs "out")
-                                           "/share/emacs/site-lisp/"
-                                           "geiser-autoloads.el")))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (symlink "geiser-install.el"
+                      (string-append (assoc-ref outputs "out")
+                                     "/share/emacs/site-lisp/"
+                                     "geiser-autoloads.el"))
+             #t)))))
     (inputs `(("guile" ,guile-2.0)))
     (native-inputs `(("emacs" ,emacs-minimal)))
     (home-page "http://nongnu.org/geiser/")
@@ -768,25 +769,25 @@ provides an optional IDE-like error list.")
                            (guix build emacs-utils))
        #:tests? #f  ; no check target
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key outputs #:allow-other-keys)
-          (substitute* "Makefile"
-            (("/usr/local") (assoc-ref outputs "out"))
-            (("/site-lisp/emacs-wget") "/site-lisp")))
-        (alist-cons-before
-         'build 'patch-exec-paths
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (let ((wget (assoc-ref inputs "wget")))
-             (emacs-substitute-variables "wget.el"
-               ("wget-command" (string-append wget "/bin/wget")))))
-         (alist-cons-after
-          'install 'post-install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (emacs-generate-autoloads
-             "wget" (string-append (assoc-ref outputs "out")
-                                   "/share/emacs/site-lisp/")))
-          %standard-phases)))))
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "Makefile"
+               (("/usr/local") (assoc-ref outputs "out"))
+               (("/site-lisp/emacs-wget") "/site-lisp"))
+             #t))
+         (add-before 'build 'patch-exec-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((wget (assoc-ref inputs "wget")))
+               (emacs-substitute-variables "wget.el"
+                 ("wget-command" (string-append wget "/bin/wget"))))
+             #t))
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (emacs-generate-autoloads
+              "wget" (string-append (assoc-ref outputs "out")
+                                    "/share/emacs/site-lisp/"))
+             #t)))))
     (home-page "http://www.emacswiki.org/emacs/EmacsWget")
     (synopsis "Simple file downloader for Emacs based on wget")
     (description
@@ -980,15 +981,16 @@ within a specified width.  It is useful for displaying long track titles.")
                    "doc_DATA =\n")))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-after
-                 'install 'post-install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Add an autoloads file with the right name for guix.el.
-                   (let* ((out  (assoc-ref outputs "out"))
-                          (site (string-append out "/share/emacs/site-lisp")))
-                     (with-directory-excursion site
-                       (symlink "bbdb-loaddefs.el" "bbdb-autoloads.el"))))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Add an autoloads file with the right name for guix.el.
+             (let* ((out  (assoc-ref outputs "out"))
+                    (site (string-append out "/share/emacs/site-lisp")))
+               (with-directory-excursion site
+                 (symlink "bbdb-loaddefs.el" "bbdb-autoloads.el")))
+             #t)))))
     (native-inputs `(("emacs" ,emacs-minimal)))
     (home-page "http://savannah.nongnu.org/projects/bbdb/")
     (synopsis "Contact management utility for Emacs")
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 650ac2b89..28d9a718e 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -190,28 +190,27 @@ utilities.")
     (build-system gnu-build-system)
     (arguments
      `(#:phases
-       (alist-cons-after
-        'unpack 'use-wish8.6
-        (lambda _
-          (substitute* "configure"
-            (("wish85") "wish8.6")))
-        (alist-cons-after
-         'install 'wrap
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           ;; FIXME: Mesa tries to dlopen libudev.so.0 and fails.  Pending a
-           ;; fix of the mesa package we wrap the pcb executable such that
-           ;; Mesa can find libudev.so.0 through LD_LIBRARY_PATH.
-           (let* ((out (assoc-ref outputs "out"))
-                  (path (string-append (assoc-ref inputs "udev") "/lib")))
-             (wrap-program (string-append out "/bin/pcb")
-               `("LD_LIBRARY_PATH" ":" prefix (,path)))))
-         (alist-cons-before
-          'check 'pre-check
-          (lambda _
-            (system "Xvfb :1 &")
-            (setenv "DISPLAY" ":1")
-            #t)
-          %standard-phases)))))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'use-wish8.6
+           (lambda _
+             (substitute* "configure"
+               (("wish85") "wish8.6"))
+             #t))
+         (add-after 'install 'wrap
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; FIXME: Mesa tries to dlopen libudev.so.0 and fails.  Pending a
+             ;; fix of the mesa package we wrap the pcb executable such that
+             ;; Mesa can find libudev.so.0 through LD_LIBRARY_PATH.
+             (let* ((out (assoc-ref outputs "out"))
+                    (path (string-append (assoc-ref inputs "udev") "/lib")))
+               (wrap-program (string-append out "/bin/pcb")
+                 `("LD_LIBRARY_PATH" ":" prefix (,path))))
+             #t))
+         (add-before 'check 'pre-check
+           (lambda _
+             (system "Xvfb :1 &")
+             (setenv "DISPLAY" ":1")
+             #t)))))
     (inputs
      `(("dbus" ,dbus)
        ("mesa" ,mesa)
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 8d0b82478..21bd8ae7a 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -52,31 +52,31 @@
               (patches (search-patches "ath9k-htc-firmware-objcopy.patch"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'configure 'pre-configure
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (chdir "target_firmware")
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             (chdir "target_firmware")
 
-                   ;; 'configure' is a simple script that runs 'cmake' with
-                   ;; the right flags.
-                   (substitute* "configure"
-                     (("^TOOLCHAIN=.*$")
-                      (string-append "TOOLCHAIN="
-                                     (assoc-ref inputs "cross-gcc")
-                                     "\n"))))
-                 (alist-replace
-                  'install
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let* ((out    (assoc-ref outputs "out"))
-                           (fw-dir (string-append out "/lib/firmware")))
-                      (mkdir-p fw-dir)
-                      (for-each (lambda (file)
-                                  (copy-file file
-                                             (string-append fw-dir "/"
-                                                            (basename file))))
-                                (find-files "." "\\.fw$"))
-                      #t))
-                  %standard-phases))
+             ;; 'configure' is a simple script that runs 'cmake' with
+             ;; the right flags.
+             (substitute* "configure"
+               (("^TOOLCHAIN=.*$")
+                (string-append "TOOLCHAIN="
+                               (assoc-ref inputs "cross-gcc")
+                               "\n")))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out    (assoc-ref outputs "out"))
+                    (fw-dir (string-append out "/lib/firmware")))
+               (mkdir-p fw-dir)
+               (for-each (lambda (file)
+                           (copy-file file
+                                      (string-append fw-dir "/"
+                                                     (basename file))))
+                         (find-files "." "\\.fw$"))
+               #t))))
        #:tests? #f))
 
     ;; The firmware is cross-compiled using a "bare bones" compiler (no libc.)
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index 127fc795a..e76865798 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -62,17 +62,16 @@
                           "CONFIG_ENABLE_LIBUSB0_PROGRAMMERS=no")
        #:tests? #f   ; no 'check' target
        #:phases
-       (alist-delete
-        'configure
-        (alist-cons-before
-         'build 'patch-exec-paths
-         (lambda* (#:key inputs #:allow-other-keys)
-           (substitute* "dmi.c"
-             (("\"dmidecode\"")
-              (format #f "~S"
-                      (string-append (assoc-ref inputs "dmidecode")
-                                     "/sbin/dmidecode")))))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'patch-exec-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "dmi.c"
+               (("\"dmidecode\"")
+                (format #f "~S"
+                        (string-append (assoc-ref inputs "dmidecode")
+                                       "/sbin/dmidecode"))))
+             #t)))))
     (home-page "http://flashrom.org/")
     (synopsis "Identify, read, write, erase, and verify ROM/flash chips")
     (description
diff --git a/gnu/packages/fltk.scm b/gnu/packages/fltk.scm
index 27d2f62ca..65336fc62 100644
--- a/gnu/packages/fltk.scm
+++ b/gnu/packages/fltk.scm
@@ -63,27 +63,27 @@
        (list "--enable-shared"
              (string-append "DSOFLAGS=-Wl,-rpath=" %output "/lib"))
        #:phases
-       (alist-cons-before
-        'configure 'patch-makeinclude
-        (lambda _
-          (substitute* "makeinclude.in"
-            (("/bin/sh") (which "sh"))))
-        (alist-cons-after
-         'install 'patch-config
-         ;; Provide -L flags for image libraries when querying fltk-config to
-         ;; avoid propagating inputs.
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (use-modules (srfi srfi-26))
-           (let* ((conf (string-append (assoc-ref outputs "out")
-                                      "/bin/fltk-config"))
-                  (jpeg (assoc-ref inputs "libjpeg"))
-                  (png  (assoc-ref inputs "libpng"))
-                  (zlib (assoc-ref inputs "zlib")))
-             (substitute* conf
-               (("-ljpeg") (string-append "-L" jpeg "/lib -ljpeg"))
-               (("-lpng") (string-append "-L" png "/lib -lpng"))
-               (("-lz") (string-append "-L" zlib "/lib -lz")))))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-makeinclude
+           (lambda _
+             (substitute* "makeinclude.in"
+               (("/bin/sh") (which "sh")))
+             #t))
+         (add-after 'install 'patch-config
+           ;; Provide -L flags for image libraries when querying fltk-config to
+           ;; avoid propagating inputs.
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (use-modules (srfi srfi-26))
+             (let* ((conf (string-append (assoc-ref outputs "out")
+                                         "/bin/fltk-config"))
+                    (jpeg (assoc-ref inputs "libjpeg"))
+                    (png  (assoc-ref inputs "libpng"))
+                    (zlib (assoc-ref inputs "zlib")))
+               (substitute* conf
+                 (("-ljpeg") (string-append "-L" jpeg "/lib -ljpeg"))
+                 (("-lpng") (string-append "-L" png "/lib -lpng"))
+                 (("-lz") (string-append "-L" zlib "/lib -lz"))))
+             #t)))))
     (home-page "http://www.fltk.org")
     (synopsis "3D C++ GUI library")
     (description "FLTK is a C++ GUI toolkit providing modern GUI functionality
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index a9a7e08da..9d8d4152c 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -324,23 +324,22 @@ manager for the current system.")
     (build-system python-build-system)
     (arguments
      '(#:phases
-       (alist-replace
-        'check
-        (lambda* (#:key inputs #:allow-other-keys)
-          (setenv "XDG_DATA_DIRS"
-                  (string-append (assoc-ref inputs "shared-mime-info")
-                                 "/share/"))
-          (substitute* "test/test-icon.py"
-            (("/usr/share/icons/hicolor/index.theme")
-             (string-append (assoc-ref inputs "hicolor-icon-theme")
-                            "/share/icons/hicolor/index.theme")))
-
-          ;; One test fails with:
-          ;; AssertionError: 'x-apple-ios-png' != 'png'
-          (substitute* "test/test-mime.py"
-            (("self.check_mimetype\\(imgpng, 'image', 'png'\\)") "#"))
-          (zero? (system* "nosetests" "-v")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "XDG_DATA_DIRS"
+                     (string-append (assoc-ref inputs "shared-mime-info")
+                                    "/share/"))
+             (substitute* "test/test-icon.py"
+               (("/usr/share/icons/hicolor/index.theme")
+                (string-append (assoc-ref inputs "hicolor-icon-theme")
+                               "/share/icons/hicolor/index.theme")))
+
+             ;; One test fails with:
+             ;; AssertionError: 'x-apple-ios-png' != 'png'
+             (substitute* "test/test-mime.py"
+               (("self.check_mimetype\\(imgpng, 'image', 'png'\\)") "#"))
+             (zero? (system* "nosetests" "-v")))))))
     (native-inputs
      `(("shared-mime-info" ,shared-mime-info) ;for tests
        ("hicolor-icon-theme" ,hicolor-icon-theme) ;for tests
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm
index aac0f9664..5aa83e073 100644
--- a/gnu/packages/gd.scm
+++ b/gnu/packages/gd.scm
@@ -125,15 +125,16 @@ most common applications of GD involve website development.")
                                                   (assoc-ref %build-inputs i)))
                                  '("zlib" "png" "ft" "jpeg" "fontconfig"))
        #:tests? #f ;; Failed 1/2 test programs. 1/12 subtests failed.
-       #:phases (alist-cons-after
-                 'configure 'clear-autogenerated-files
-                 (lambda _
-                   ;; This file is autogenerated by its .PLS script at build
-                   ;; time, but file creation fails because that file already
-                   ;; exists in the distribution with non-writable
-                   ;; permissions, so delete it first.
-                   (delete-file "bdf_scripts/bdf2gdfont.pl"))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'configure 'clear-autogenerated-files
+           (lambda _
+             ;; This file is autogenerated by its .PLS script at build
+             ;; time, but file creation fails because that file already
+             ;; exists in the distribution with non-writable
+             ;; permissions, so delete it first.
+             (delete-file "bdf_scripts/bdf2gdfont.pl")
+             #t)))))
     (home-page "http://search.cpan.org/dist/GD")
     (synopsis "Perl interface to the GD graphics library")
     (description "GD.pm is an autoloadable interface module for libgd, a
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index 362e2047f..74588309c 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -87,22 +87,22 @@ provided as well as the framework to add new color models and data types.")
        ;; all according to the rationale given below.
        #:tests? #f
        #:phases
-       (alist-cons-before
-        'build 'pre-build
-        (lambda _
-          ;; This test program seems to crash on exit. Specifically, whilst
-          ;; g_object_unreffing bufferA and bufferB - This seems to be a bug
-          ;; in the destructor.  This is just a test program so will not have
-          ;; any wider effect, although might be hiding another problem.
-          ;; According to advice received on irc.gimp.org#gegl although 0.2.0
-          ;; is the latest released version, any bug reports against it will
-          ;; be ignored.  So we are on our own.
-          (substitute* "tools/img_cmp.c"
-            (("g_object_unref \\(buffer.\\);") ""))
+       (modify-phases %standard-phases
+         (add-before 'build 'pre-build
+           (lambda _
+             ;; This test program seems to crash on exit. Specifically, whilst
+             ;; g_object_unreffing bufferA and bufferB - This seems to be a bug
+             ;; in the destructor.  This is just a test program so will not have
+             ;; any wider effect, although might be hiding another problem.
+             ;; According to advice received on irc.gimp.org#gegl although 0.2.0
+             ;; is the latest released version, any bug reports against it will
+             ;; be ignored.  So we are on our own.
+             (substitute* "tools/img_cmp.c"
+               (("g_object_unref \\(buffer.\\);") ""))
 
-          (substitute* "tests/compositions/Makefile"
-            (("/bin/sh") (which "sh"))))
-        %standard-phases)))
+             (substitute* "tests/compositions/Makefile"
+               (("/bin/sh") (which "sh")))
+             #t)))))
     (inputs
      `(("babl" ,babl)
        ("glib" ,glib)
diff --git a/gnu/packages/gkrellm.scm b/gnu/packages/gkrellm.scm
index 68853eb8f..4cc84b3fc 100644
--- a/gnu/packages/gkrellm.scm
+++ b/gnu/packages/gkrellm.scm
@@ -50,9 +50,7 @@
     (arguments
      `(#:tests? #f ; there is no check target
        #:phases
-       (alist-delete
-        'configure
-        %standard-phases)
+       (modify-phases %standard-phases (delete 'configure))
        #:make-flags
        (let ((out (assoc-ref %outputs "out")))
          (list (string-append "INSTALLROOT=" out)
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 08f6187f8..1adb28a45 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -420,7 +420,7 @@ glxgears, glxheads, and glxinfo.")
                   (("/lib64") "/lib")))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-delete 'configure %standard-phases)
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
        #:make-flags (list (string-append "GLEW_PREFIX="
                                          (assoc-ref %outputs "out"))
                           (string-append "GLEW_DEST="
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index fcd1daf5e..0ecceb525 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -503,22 +503,23 @@ has an ease of use unmatched by other C++ callback libraries.")
                "1926b3adx903hzvdp8glblsgjyadzqnwgkj8hg605d4wv98m1n0z"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases (alist-cons-before
-                 'build 'pre-build
-                 (lambda _
-                   ;; This test uses /etc/fstab as an example file to read
-                   ;; from; choose a better example.
-                   (substitute* "tests/giomm_simple/main.cc"
-                     (("/etc/fstab")
-                      (string-append (getcwd)
-                                     "/tests/giomm_simple/main.cc")))
-
-                   ;; This test does a DNS lookup, and then expects to be able
-                   ;; to open a TLS session; just skip it.
-                   (substitute* "tests/giomm_tls_client/main.cc"
-                     (("Gio::init.*$")
-                      "return 77;\n")))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'pre-build
+           (lambda _
+             ;; This test uses /etc/fstab as an example file to read
+             ;; from; choose a better example.
+             (substitute* "tests/giomm_simple/main.cc"
+               (("/etc/fstab")
+                (string-append (getcwd)
+                               "/tests/giomm_simple/main.cc")))
+
+             ;; This test does a DNS lookup, and then expects to be able
+             ;; to open a TLS session; just skip it.
+             (substitute* "tests/giomm_tls_client/main.cc"
+               (("Gio::init.*$")
+                "return 77;\n"))
+             #t)))))
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("glib" ,glib "bin")))
     (propagated-inputs
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index d9d3fe793..f40381498 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -800,16 +800,16 @@ for settings shared by various components of the GNOME desktop.")
        ("perl-xml-simple" ,perl-xml-simple)))
     (arguments
      '(#:phases
-       (alist-cons-after
-        'install 'set-load-paths
-        ;; Tell 'icon-name-mapping' where XML::Simple is.
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let* ((out  (assoc-ref outputs "out"))
-                 (prog (string-append out "/libexec/icon-name-mapping")))
-            (wrap-program
-             prog
-             `("PERL5LIB" = ,(list (getenv "PERL5LIB"))))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'install 'set-load-paths
+           ;; Tell 'icon-name-mapping' where XML::Simple is.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out  (assoc-ref outputs "out"))
+                    (prog (string-append out "/libexec/icon-name-mapping")))
+               (wrap-program
+                   prog
+                 `("PERL5LIB" = ,(list (getenv "PERL5LIB")))))
+             #t)))))
     (home-page "http://tango.freedesktop.org/Standard_Icon_Naming_Specification")
     (synopsis
      "Utility to implement the Freedesktop Icon Naming Specification")
@@ -1252,12 +1252,12 @@ functionality was designed to be as reusable and portable as possible.")
        '("DISABLE_DEPRECATED_CFLAGS=-DGLIB_DISABLE_DEPRECATION_WARNINGS")
        ;; ... which they then completly ignore !!
        #:phases
-       (alist-cons-before
-        'configure 'ignore-deprecations
-        (lambda _
-          (substitute* "linc2/src/Makefile.in"
-            (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'ignore-deprecations
+           (lambda _
+             (substitute* "linc2/src/Makefile.in"
+               (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
+             #t)))))
     (inputs `(("glib" ,glib)
               ("libidl" ,libidl)))
     (native-inputs
@@ -1292,12 +1292,12 @@ featuring mature C, C++ and Python bindings.")
        '("DISABLE_DEPRECATED_CFLAGS=-DGLIB_DISABLE_DEPRECATION_WARNINGS")
        ;; ... which they then completly ignore !!
        #:phases
-       (alist-cons-before
-        'configure 'ignore-deprecations
-        (lambda _
-          (substitute* "activation-server/Makefile.in"
-            (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'ignore-deprecations
+           (lambda _
+             (substitute* "activation-server/Makefile.in"
+               (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
+             #t)))))
     (inputs `(("popt" ,popt)
               ("libxml2" ,libxml2)))
     ;; The following are Required by the .pc file
@@ -1389,19 +1389,18 @@ designed to be accessed through the MIME functions in GnomeVFS.")
     (build-system gnu-build-system)
     (arguments
      `(#:phases
-       (alist-cons-before
-        'configure 'ignore-deprecations
-        (lambda _
-          (substitute* '("libgnomevfs/Makefile.in"
-                         "daemon/Makefile.in")
-            (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
-          #t)
-        (alist-cons-before
-         'configure 'patch-test-async-cancel-to-never-fail
-         (lambda _
-           (substitute* "test/test-async-cancel.c"
-             (("EXIT_FAILURE") "77")))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (add-before 'configure 'ignore-deprecations
+           (lambda _
+             (substitute* '("libgnomevfs/Makefile.in"
+                            "daemon/Makefile.in")
+               (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
+             #t))
+         (add-before 'configure 'patch-test-async-cancel-to-never-fail
+           (lambda _
+             (substitute* "test/test-async-cancel.c"
+               (("EXIT_FAILURE") "77"))
+             #t)))))
     (inputs `(("libxml2" ,libxml2)
               ("dbus-glib" ,dbus-glib)
               ("gconf" ,gconf)
@@ -1436,12 +1435,12 @@ to access local and remote files with a single consistent API.")
     (build-system gnu-build-system)
     (arguments
      `(#:phases
-       (alist-cons-before
-        'configure 'enable-deprecated
-        (lambda _
-          (substitute* "libgnome/Makefile.in"
-            (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'enable-deprecated
+           (lambda _
+             (substitute* "libgnome/Makefile.in"
+               (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
+             #t)))))
     (inputs `(("libxml2" ,libxml2)))
     (native-inputs
      `(("glib" ,glib "bin")             ; for glib-mkenums, etc.
@@ -1676,18 +1675,17 @@ since ca. 2006, when GTK+ itself incorporated printing support.")
     (build-system gnu-build-system)
     (arguments
      `(#:phases
-       (alist-cons-before
-        'check 'start-xserver
-        (lambda* (#:key inputs #:allow-other-keys)
-          (let ((xorg-server (assoc-ref inputs "xorg-server"))
-                (disp ":1"))
-
-            (setenv "HOME" (getcwd))
-            (setenv "DISPLAY" disp)
-            ;; There must be a running X server and make check doesn't start one.
-            ;; Therefore we must do it.
-            (zero? (system (format #f "~a/bin/Xvfb ~a &" xorg-server disp)))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'check 'start-xserver
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((xorg-server (assoc-ref inputs "xorg-server"))
+                   (disp ":1"))
+
+               (setenv "HOME" (getcwd))
+               (setenv "DISPLAY" disp)
+               ;; There must be a running X server and make check doesn't start one.
+               ;; Therefore we must do it.
+               (zero? (system (format #f "~a/bin/Xvfb ~a &" xorg-server disp)))))))))
     ;; Mentioned as Required by the .pc file
     (propagated-inputs `(("libxml2" ,libxml2)))
     (inputs
@@ -1801,14 +1799,13 @@ Hints specification (EWMH).")
                (base32 "05fvzbs5bin05bbsr4dp79aiva3lnq0a3a40zq55i13vnsz70l0n"))))
     (arguments
      `(#:phases
-       (alist-cons-after
-        'unpack 'fix-pcre-check
-        (lambda _
-          ;; Only glib.h can be included directly.  See
-          ;; https://bugzilla.gnome.org/show_bug.cgi?id=670316
-          (substitute* "configure"
-            (("glib/gregex\\.h") "glib.h")) #t)
-        %standard-phases)
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-pcre-check
+           (lambda _
+             ;; Only glib.h can be included directly.  See
+             ;; https://bugzilla.gnome.org/show_bug.cgi?id=670316
+             (substitute* "configure"
+               (("glib/gregex\\.h") "glib.h")) #t)))
 
        ,@(package-arguments goffice)))
     (propagated-inputs
@@ -2178,19 +2175,19 @@ and RDP protocols.")
                             (assoc-ref %outputs "out") "/lib")
              "--disable-gtk-doc-html") ; FIXME: requires gtk-doc
        #:phases
-       (alist-cons-before
-        'configure 'fix-docbook
-        (lambda* (#:key inputs #:allow-other-keys)
-          (substitute* "docs/Makefile.in"
-            (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
-             (string-append (assoc-ref inputs "docbook-xsl")
-                            "/xml/xsl/docbook-xsl-"
-                            ,(package-version docbook-xsl)
-                            "/manpages/docbook.xsl")))
-          (setenv "XML_CATALOG_FILES"
-                  (string-append (assoc-ref inputs "docbook-xml")
-                                 "/xml/dtd/docbook/catalog.xml")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-docbook
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "docs/Makefile.in"
+               (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
+                (string-append (assoc-ref inputs "docbook-xsl")
+                               "/xml/xsl/docbook-xsl-"
+                               ,(package-version docbook-xsl)
+                               "/manpages/docbook.xsl")))
+             (setenv "XML_CATALOG_FILES"
+                     (string-append (assoc-ref inputs "docbook-xml")
+                                    "/xml/dtd/docbook/catalog.xml"))
+             #t)))))
     (home-page "https://developer.gnome.org/dconf")
     (synopsis "Low-level GNOME configuration system")
     (description "Dconf is a low-level configuration system.  Its main purpose
diff --git a/gnu/packages/gprolog.scm b/gnu/packages/gprolog.scm
index 87c833e94..b27b080ca 100644
--- a/gnu/packages/gprolog.scm
+++ b/gnu/packages/gprolog.scm
@@ -41,14 +41,15 @@
      `(#:configure-flags
        (list (string-append
               "--with-install-dir=" %output "/share/gprolog"))
-       #:phases (alist-cons-before
-                 'configure 'change-dir-n-fix-shells
-                 (lambda _
-                   (chdir "src")
-                   (substitute* "configure"
-                     (("-/bin/sh")  (string-append "-"  (which "sh")))
-                     (("= /bin/sh") (string-append "= " (which "sh")))))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'change-dir-n-fix-shells
+           (lambda _
+             (chdir "src")
+             (substitute* "configure"
+               (("-/bin/sh")  (string-append "-"  (which "sh")))
+               (("= /bin/sh") (string-append "= " (which "sh"))))
+             #t)))))
     (home-page "https://www.gnu.org/software/gprolog/")
     (synopsis "Prolog compiler")
     (description
diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm
index 0a9038b7a..10592c23e 100644
--- a/gnu/packages/gps.scm
+++ b/gnu/packages/gps.scm
@@ -102,15 +102,16 @@ manipulate maps.")
                   "006a6l8p38a4h7y2959sqrmjjn29d8pd50zj9nypcp5ph18nybjb"))))
       (build-system gnu-build-system)
       (arguments
-       `(#:phases (alist-replace
-                   'configure
-                   (lambda* (#:key inputs outputs #:allow-other-keys)
-                     ;; This is a rudimentary build system.
-                     (substitute* "Makefile"
-                       (("prefix[[:blank:]]*=.*$")
-                        (string-append "prefix = " (assoc-ref outputs "out")
-                                       "\n"))))
-                   %standard-phases)
+       `(#:phases
+         (modify-phases %standard-phases
+           (replace 'configure
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               ;; This is a rudimentary build system.
+               (substitute* "Makefile"
+                 (("prefix[[:blank:]]*=.*$")
+                  (string-append "prefix = " (assoc-ref outputs "out")
+                                 "\n")))
+               #t)))
          #:tests? #f))
       (inputs
        `(("gtk+" ,gtk+-2)
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 6c813e8a3..512dd5e16 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -553,13 +553,12 @@ and understanding different BRDFs (and other component functions).")
              (string-append "--x-libraries=" (assoc-ref %build-inputs "libx11")
                             "/lib"))
        #:phases
-       (alist-cons-after
-        'unpack 'autoreconf
-        (lambda _
-          ;; let's call configure from configure phase and not now
-          (substitute* "autogen.sh" (("./configure") "# ./configure"))
-          (zero? (system* "sh" "autogen.sh")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autoreconf
+           (lambda _
+             ;; let's call configure from configure phase and not now
+             (substitute* "autogen.sh" (("./configure") "# ./configure"))
+             (zero? (system* "sh" "autogen.sh")))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("libtool" ,libtool)
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index b2aa6ecff..11e2ace98 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -279,16 +279,17 @@ functions which were removed.")
                 "0g7s5mp14qgbfjdql0k1s8464r21g47ssn5dws6jazsnw6njhl0l"))))
     (build-system waf-build-system)
     (arguments
-     `(#:phases (alist-cons-before
-                 'configure 'set-flags
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Compile with C++11, required by gtkmm.
-                   (setenv "CXXFLAGS" "-std=c++11")
-                   ;; Allow 'bin/ganv_bench' to find libganv-1.so.
-                   (setenv "LDFLAGS"
-                           (string-append "-Wl,-rpath="
-                                          (assoc-ref outputs "out") "/lib")))
-                 %standard-phases)
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'set-flags
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Compile with C++11, required by gtkmm.
+             (setenv "CXXFLAGS" "-std=c++11")
+             ;; Allow 'bin/ganv_bench' to find libganv-1.so.
+             (setenv "LDFLAGS"
+                     (string-append "-Wl,-rpath="
+                                    (assoc-ref outputs "out") "/lib"))
+             #t)))
        #:tests? #f)) ; no check target
     (inputs
      `(("gtk" ,gtk+-2)
@@ -349,24 +350,24 @@ diagrams.")
      `(#:phases
        ;; Unfortunately, some of the tests in "make check" are highly dependent
        ;; on the environment therefore, some black magic is required.
-       (alist-cons-before
-        'check 'start-xserver
-        (lambda* (#:key inputs #:allow-other-keys)
-          (let ((xorg-server (assoc-ref inputs "xorg-server"))
-                (mime (assoc-ref inputs "shared-mime-info")))
+       (modify-phases %standard-phases
+         (add-before 'check 'start-xserver
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((xorg-server (assoc-ref inputs "xorg-server"))
+                   (mime (assoc-ref inputs "shared-mime-info")))
 
-            ;; There must be a running X server and make check doesn't start one.
-            ;; Therefore we must do it.
-            (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
-            (setenv "DISPLAY" ":1")
+               ;; There must be a running X server and make check doesn't start one.
+               ;; Therefore we must do it.
+               (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
+               (setenv "DISPLAY" ":1")
 
-            ;; The .lang files must be found in $XDG_DATA_HOME/gtksourceview-2.0
-            (system "ln -s gtksourceview gtksourceview-2.0")
-            (setenv "XDG_DATA_HOME" (getcwd))
+               ;; The .lang files must be found in $XDG_DATA_HOME/gtksourceview-2.0
+               (system "ln -s gtksourceview gtksourceview-2.0")
+               (setenv "XDG_DATA_HOME" (getcwd))
 
-            ;; Finally, the mimetypes must be available.
-            (setenv "XDG_DATA_DIRS" (string-append mime "/share/")) ))
-        %standard-phases)))
+               ;; Finally, the mimetypes must be available.
+               (setenv "XDG_DATA_DIRS" (string-append mime "/share/")))
+             #t)))))
     (synopsis "Widget that extends the standard GTK+ 2.x 'GtkTextView' widget")
     (description
      "GtkSourceView is a portable C library that extends the standard GTK+
@@ -876,18 +877,19 @@ images onto Cairo surfaces.")
                    "godir = $(moddir)\n")))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-after
-                 'install 'post-install
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   (let* ((out   (assoc-ref outputs "out"))
-                          (bin   (string-append out "/bin"))
-                          (guile (assoc-ref inputs "guile")))
-                     (substitute* (find-files bin ".*")
-                       (("guile")
-                        (string-append guile "/bin/guile -L "
-                                       out "/share/guile/site/2.0 -C "
-                                       out "/share/guile/site/2.0 ")))))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'post-install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out   (assoc-ref outputs "out"))
+                    (bin   (string-append out "/bin"))
+                    (guile (assoc-ref inputs "guile")))
+               (substitute* (find-files bin ".*")
+                 (("guile")
+                  (string-append guile "/bin/guile -L "
+                                 out "/share/guile/site/2.0 -C "
+                                 out "/share/guile/site/2.0 "))))
+             #t)))))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("guile" ,guile-2.2)))
     (propagated-inputs
@@ -1161,7 +1163,7 @@ extensive documentation, including API reference and a tutorial.")
      `(#:python ,python-2
        ,@(substitute-keyword-arguments (package-arguments python-pycairo)
            ((#:phases phases)
-            `(alist-delete 'patch-waf ,phases))
+            `(modify-phases ,phases (delete 'patch-waf)))
            ((#:native-inputs native-inputs)
             `(alist-delete "python-waf" ,native-inputs)))))
     ;; Dual-licensed under LGPL 2.1 or Mozilla Public License 1.1
@@ -1255,7 +1257,7 @@ write GNOME applications.")
        #:test-target "test"
        #:tests? #f ; Tests fail with "Gtk cannot open display:"
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (build-system gnu-build-system)
     (home-page "https://pwmt.org/projects/girara/")
     (synopsis "Library for minimalistic gtk+3 user interfaces")
diff --git a/gnu/packages/guile-wm.scm b/gnu/packages/guile-wm.scm
index a114fd441..87fb57194 100644
--- a/gnu/packages/guile-wm.scm
+++ b/gnu/packages/guile-wm.scm
@@ -80,50 +80,51 @@ dependencies.")
        #:configure-flags (list (string-append "--datadir="
                                               (assoc-ref %outputs "out")
                                               "/share/guile/site/2.0"))
-       #:phases (alist-cons-before
-                 'configure 'set-go-directory
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Install .go files to $out/share/guile/site/2.0.
-                   (let ((out (assoc-ref outputs "out")))
-                     (substitute* "module/Makefile.in"
-                       (("^wmdir = .*$")
-                        (string-append "wmdir = " out
-                                       "/share/guile/site/2.0\n")))))
-                 (alist-cons-after
-                  'install 'set-load-path
-                  (lambda* (#:key inputs outputs #:allow-other-keys)
-                    ;; Put Guile-XCB's and Guile-WM's modules in the
-                    ;; search path of PROG.
-                    (let* ((out  (assoc-ref outputs "out"))
-                           (prog (string-append out "/bin/guile-wm"))
-                           (mods (string-append
-                                  out "/share/guile/site/2.0"))
-                           (xcb  (string-append
-                                  (assoc-ref inputs "guile-xcb")
-                                  "/share/guile/site/2.0")))
-                      (wrap-program
-                          prog
-                        `("GUILE_LOAD_PATH" ":" prefix (,mods ,xcb))
-                        `("GUILE_LOAD_COMPILED_PATH" ":" prefix
-                          (,mods ,xcb)))))
-                  (alist-cons-after
-                   'install 'install-xsession
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     ;; add a .desktop file to xsessions
-                     (let ((xsessions (string-append
-                                       %output "/share/xsessions")))
-                       (mkdir-p xsessions)
-                       (call-with-output-file (string-append
-                                               xsessions "/guile-wm.desktop")
-                         (lambda (port)
-                           (format port
-                                   "[Desktop Entry]~@
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'set-go-directory
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Install .go files to $out/share/guile/site/2.0.
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "module/Makefile.in"
+                 (("^wmdir = .*$")
+                  (string-append "wmdir = " out
+                                 "/share/guile/site/2.0\n"))))
+             #t))
+         (add-after 'install 'set-load-path
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Put Guile-XCB's and Guile-WM's modules in the
+             ;; search path of PROG.
+             (let* ((out  (assoc-ref outputs "out"))
+                    (prog (string-append out "/bin/guile-wm"))
+                    (mods (string-append
+                           out "/share/guile/site/2.0"))
+                    (xcb  (string-append
+                           (assoc-ref inputs "guile-xcb")
+                           "/share/guile/site/2.0")))
+               (wrap-program
+                   prog
+                 `("GUILE_LOAD_PATH" ":" prefix (,mods ,xcb))
+                 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
+                   (,mods ,xcb))))
+             #t))
+         (add-after 'install 'install-xsession
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; add a .desktop file to xsessions
+             (let ((xsessions (string-append
+                               %output "/share/xsessions")))
+               (mkdir-p xsessions)
+               (call-with-output-file (string-append
+                                       xsessions "/guile-wm.desktop")
+                 (lambda (port)
+                   (format port
+                           "[Desktop Entry]~@
                                     Name=~a~@
                                     Comment=~a~@
                                     Exec=~a/bin/guile-wm~@
                                     Type=Application~%"
-                            ,name ,synopsis %output)))))
-                   %standard-phases)))))
+                           ,name ,synopsis %output))))
+             #t)))))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("guile" ,guile-2.0)
               ("guile-xcb" ,guile-xcb)))
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 3fd3f89dc..f377d83b1 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -94,24 +94,24 @@
    (arguments '(#:configure-flags '("--disable-error-on-warning")
 
                 ;; Insert a phase before `configure' to patch things up.
-                #:phases (alist-cons-before
-                           'configure
-                           'patch-stuff
-                           (lambda* (#:key outputs #:allow-other-keys)
-                             ;; Add a call to `lt_dladdsearchdir' so that
-                             ;; `libguile-readline.so' & co. are in the
-                             ;; loader's search path.
-                             (substitute* "libguile/dynl.c"
-                               (("lt_dlinit.*$" match)
-                                (format #f
-                                        "  ~a~%  lt_dladdsearchdir(\"~a/lib\");~%"
-                                        match
-                                        (assoc-ref outputs "out"))))
-
-                             ;; The usual /bin/sh...
-                             (substitute* "ice-9/popen.scm"
-                               (("/bin/sh") (which "sh"))))
-                           %standard-phases)))
+                #:phases
+                (modify-phases %standard-phases
+                  (add-before 'configure 'patch-stuff
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      ;; Add a call to `lt_dladdsearchdir' so that
+                      ;; `libguile-readline.so' & co. are in the
+                      ;; loader's search path.
+                      (substitute* "libguile/dynl.c"
+                        (("lt_dlinit.*$" match)
+                         (format #f
+                                 "  ~a~%  lt_dladdsearchdir(\"~a/lib\");~%"
+                                 match
+                                 (assoc-ref outputs "out"))))
+
+                      ;; The usual /bin/sh...
+                      (substitute* "ice-9/popen.scm"
+                        (("/bin/sh") (which "sh")))
+                      #t)))))
    (inputs `(("gawk" ,gawk)
              ("readline" ,readline)))
 
diff --git a/gnu/packages/hugs.scm b/gnu/packages/hugs.scm
index 2367d5bc6..a14b8a858 100644
--- a/gnu/packages/hugs.scm
+++ b/gnu/packages/hugs.scm
@@ -39,36 +39,37 @@
         "1mdy4aq4campgmnpc2qwq7bsbfhaxfsqdghbyyz2wms4lnfcmyma"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases (alist-cons-before
-                 'configure 'fix-sh-n-cp
-                 (lambda _
-                   (substitute*
-                       '("configure"
-                         "libraries/configure"
-                         "packages/time/configure"
-                         "packages/base/configure"
-                         "packages/X11/configure"
-                         "packages/HGL/configure"
-                         "packages/OpenAL/configure"
-                         "packages/OpenGL/configure"
-                         "packages/network/configure"
-                         "packages/unix/configure"
-                         "packages/Cabal/tests/HSQL/configure"
-                         "packages/ALUT/configure"
-                         "packages/GLUT/configure"
-                         "packages/base/cbits/execvpe.c"
-                         "packages/base/System/Process/Internals.hs"
-                         "packages/Cabal/Distribution/attic"
-                         "packages/Cabal/Distribution/Simple/Register.hs"
-                         "packages/Cabal/Distribution/Simple/Hugs.hs"
-                         "tools/hugs-hc"
-                         "src/machdep.c"
-                         "libraries/Makefile.in")
-                     (("/bin/sh") (which "sh")))
-                   (substitute* '("demos/Makefile.in"
-                                  "libraries/Makefile.in")
-                     (("/bin/cp") (which "cp"))))
-                  %standard-phases)
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-sh-n-cp
+           (lambda _
+             (substitute*
+                 '("configure"
+                   "libraries/configure"
+                   "packages/time/configure"
+                   "packages/base/configure"
+                   "packages/X11/configure"
+                   "packages/HGL/configure"
+                   "packages/OpenAL/configure"
+                   "packages/OpenGL/configure"
+                   "packages/network/configure"
+                   "packages/unix/configure"
+                   "packages/Cabal/tests/HSQL/configure"
+                   "packages/ALUT/configure"
+                   "packages/GLUT/configure"
+                   "packages/base/cbits/execvpe.c"
+                   "packages/base/System/Process/Internals.hs"
+                   "packages/Cabal/Distribution/attic"
+                   "packages/Cabal/Distribution/Simple/Register.hs"
+                   "packages/Cabal/Distribution/Simple/Hugs.hs"
+                   "tools/hugs-hc"
+                   "src/machdep.c"
+                   "libraries/Makefile.in")
+               (("/bin/sh") (which "sh")))
+             (substitute* '("demos/Makefile.in"
+                            "libraries/Makefile.in")
+               (("/bin/cp") (which "cp")))
+             #t)))
        #:tests? #f)) ; no test target
     ;; FIXME: Fails to build with GCC 5.
     (native-inputs `(("gcc" ,gcc-4.9)))
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index bd1eb4b08..a29e5bafd 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -56,14 +56,13 @@
         "02hygsfpd2dljl5lg1vjjg9pizi9jyxd4aiiqzjshz6jax62jm9f"))))
     (build-system gnu-build-system)
     (arguments
-    `(#:phases (alist-replace
-                'install
-                (lambda _
-                  (zero?
-                   (system* "make" "install-data")))
-                (alist-delete
-                 'build
-                 %standard-phases))
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda _
+             (zero?
+              (system* "make" "install-data"))))
+         (delete 'build))
 
       ;; GNU Mach supports only IA32 currently, so cheat so that we can at
       ;; least install its headers.
@@ -125,11 +124,12 @@ communication.")
     (native-inputs
      `(("mig" ,mig)))
     (arguments
-     `(#:phases (alist-replace
-                 'install
-                 (lambda _
-                   (zero? (system* "make" "install-headers" "no_deps=t")))
-                 (alist-delete 'build %standard-phases))
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda _
+             (zero? (system* "make" "install-headers" "no_deps=t"))))
+         (delete 'build))
 
        #:configure-flags '(;; Pretend we're on GNU/Hurd; 'configure' wants
                            ;; that.
@@ -164,24 +164,22 @@ Library and other user programs.")
     (arguments
      (substitute-keyword-arguments (package-arguments hurd-headers)
        ((#:phases _)
-        '(alist-replace
-          'install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((out (assoc-ref outputs "out")))
-              ;; We need to copy libihash.a to the output directory manually,
-              ;; since there is no target for that in the makefile.
-              (mkdir-p (string-append out "/include"))
-              (copy-file "libihash/ihash.h"
-                         (string-append out "/include/ihash.h"))
-              (mkdir-p (string-append out "/lib"))
-              (copy-file "libihash/libihash.a"
-                         (string-append out "/lib/libihash.a"))
-              #t))
-          (alist-replace
-           'build
-           (lambda _
-             (zero? (system* "make" "-Clibihash" "libihash.a")))
-           %standard-phases)))))
+        '(modify-phases %standard-phases
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out")))
+                 ;; We need to copy libihash.a to the output directory manually,
+                 ;; since there is no target for that in the makefile.
+                 (mkdir-p (string-append out "/include"))
+                 (copy-file "libihash/ihash.h"
+                            (string-append out "/include/ihash.h"))
+                 (mkdir-p (string-append out "/lib"))
+                 (copy-file "libihash/libihash.a"
+                            (string-append out "/lib/libihash.a"))
+                 #t)))
+           (replace 'build
+             (lambda _
+               (zero? (system* "make" "-Clibihash" "libihash.a"))))))))
     (home-page "https://www.gnu.org/software/hurd/hurd.html")
     (synopsis "GNU Hurd libraries")
     (description
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 644780b5e..4d501476a 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -65,10 +65,10 @@
                 "1d4ycmai3dpajl0bdr9i56646g4h5j1lb95jjn0nckwcddcj927c"))))
     (build-system gnu-build-system)
     (arguments
-      '(#:phases (alist-delete 'configure %standard-phases)
-        #:tests? #f ;FIXME: Requires 'perl-test-command'.
-        #:make-flags
-          (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out")))))
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
+       #:tests? #f ;FIXME: Requires 'perl-test-command'.
+       #:make-flags
+       (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out")))))
     (inputs `(("imlib2" ,imlib2)
               ("curl" ,curl)
               ("libpng" ,libpng)
@@ -178,9 +178,9 @@ It is the default image viewer on LXDE desktop environment.")
      '(#:tests? #f                      ; no check target
        #:make-flags (list (string-append "PREFIX=" %output)
                           "CC=gcc")
-       #:phases (alist-delete
-                 'configure             ; no configure phase
-                 %standard-phases)))
+       #:phases
+       ;; no configure phase
+       (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("libx11" ,libx11)
        ("imlib2" ,imlib2)
diff --git a/gnu/packages/libcanberra.scm b/gnu/packages/libcanberra.scm
index 6bac0bcd5..941d3dcc4 100644
--- a/gnu/packages/libcanberra.scm
+++ b/gnu/packages/libcanberra.scm
@@ -79,15 +79,15 @@
      `(("pkg-config" ,pkg-config)))
     (arguments
      `(#:phases
-       (alist-cons-before
-        'build 'patch-default-sounds-directory
-        (lambda* (#:key inputs #:allow-other-keys)
-          (substitute* "src/sound-theme-spec.c"
-            (("@SOUND_THEME_DIRECTORY@")
-             (string-append
-              (assoc-ref inputs "sound-theme-freedesktop")
-              "/share"))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'build 'patch-default-sounds-directory
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/sound-theme-spec.c"
+               (("@SOUND_THEME_DIRECTORY@")
+                (string-append
+                 (assoc-ref inputs "sound-theme-freedesktop")
+                 "/share")))
+             #t)))))
     (home-page "http://0pointer.de/lennart/projects/libcanberra/")
     (synopsis
      "Implementation of the XDG Sound Theme and Name Specifications")
diff --git a/gnu/packages/libsigsegv.scm b/gnu/packages/libsigsegv.scm
index 41e734535..d7a510d9c 100644
--- a/gnu/packages/libsigsegv.scm
+++ b/gnu/packages/libsigsegv.scm
@@ -44,12 +44,13 @@
     ;; linux-libre-headers-cross-mips64el-linux-gnu-3.3.8/include/asm/sigcontext.h:57:8: error: redefinition of 'struct sigcontext'
     (if (string-contains (or (%current-target-system) (%current-system))
                          "mips64el")
-        `(#:phases (alist-cons-before
-                    'configure 'patch-mips-old-h
-                    (lambda _
-                      (substitute* "src/fault-linux-mips-old.h"
-                        (("#include <asm/sigcontext\\.h>") "")))
-                    %standard-phases))
+        `(#:phases
+          (modify-phases %standard-phases
+            (add-before 'configure 'patch-mips-old-h
+              (lambda _
+                (substitute* "src/fault-linux-mips-old.h"
+                  (("#include <asm/sigcontext\\.h>") ""))
+                #t))))
         '()))
    (description
     "GNU libsigsegv is a library to handle page faults, which occur when a
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index a189458ad..7f44ea789 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -833,18 +833,19 @@ ext3 or ext4 partition.")
                 "1xncw3dn2cp922ly42m96p6fh7jv8ysg6bwqbk5xvw701f3dmkrs"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let* ((out (assoc-ref outputs "out"))
-                          (bin (string-append out "/bin")))
-                     (mkdir-p bin)
-                     (copy-file "zerofree"
-                                (string-append bin "/zerofree"))
-                     (chmod (string-append bin "/zerofree")
-                            #o555)
-                     #t))
-                 (alist-delete 'configure %standard-phases))
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (mkdir-p bin)
+               (copy-file "zerofree"
+                          (string-append bin "/zerofree"))
+               (chmod (string-append bin "/zerofree")
+                      #o555)
+               #t)))
+         (delete 'configure))
        #:tests? #f))                              ;no tests
     (inputs `(("libext2fs" ,e2fsprogs)))
     (synopsis "Zero non-allocated regions in ext2/ext3/ext4 file systems")
@@ -1296,49 +1297,48 @@ configuration (iptunnel, ipmaddr).")
                   (guix build utils)
                   (srfi srfi-1)
                   (srfi srfi-26))
-       #:phases (alist-cons-after
-                 'unpack 'patch
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (define (apply-patch file)
-                     (zero? (system* "patch" "-p1" "--force"
-                                     "--input" file)))
-
-                   (let ((patch.gz (assoc-ref inputs "patch")))
-                     (format #t "applying Debian patch set '~a'...~%"
-                             patch.gz)
-                     (system (string-append "gunzip < " patch.gz " > the-patch"))
-                     (and (apply-patch "the-patch")
-                          (for-each apply-patch
-                                    (find-files "debian/patches"
-                                                "\\.patch")))))
-                 (alist-replace
-                  'configure
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let ((out (assoc-ref outputs "out")))
-                      (mkdir-p (string-append out "/bin"))
-                      (mkdir-p (string-append out "/sbin"))
-
-                      ;; Pretend we have everything...
-                      (system "yes | make config")
-
-                      ;; ... except for the things we don't have.
-                      ;; HAVE_AFDECnet requires libdnet, which we don't have.
-                      ;; HAVE_HWSTRIP and HAVE_HWTR require kernel headers
-                      ;; that have been removed.
-                      (substitute* '("config.make" "config.h")
-                        (("^.*HAVE_(AFDECnet|HWSTRIP|HWTR)[ =]1.*$") ""))))
-                  (alist-cons-after
-                   'install 'remove-redundant-commands
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     ;; Remove commands and man pages redundant with
-                     ;; Inetutils.
-                     (let* ((out (assoc-ref outputs "out"))
-                            (dup (append-map (cut find-files out <>)
-                                             '("^hostname"
-                                               "^(yp|nis|dns)?domainname"))))
-                       (for-each delete-file dup)
-                       #t))
-                   %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch
+           (lambda* (#:key inputs #:allow-other-keys)
+             (define (apply-patch file)
+               (zero? (system* "patch" "-p1" "--force"
+                               "--input" file)))
+
+             (let ((patch.gz (assoc-ref inputs "patch")))
+               (format #t "applying Debian patch set '~a'...~%"
+                       patch.gz)
+               (system (string-append "gunzip < " patch.gz " > the-patch"))
+               (and (apply-patch "the-patch")
+                    (for-each apply-patch
+                              (find-files "debian/patches"
+                                          "\\.patch"))))))
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/bin"))
+               (mkdir-p (string-append out "/sbin"))
+
+               ;; Pretend we have everything...
+               (system "yes | make config")
+
+               ;; ... except for the things we don't have.
+               ;; HAVE_AFDECnet requires libdnet, which we don't have.
+               ;; HAVE_HWSTRIP and HAVE_HWTR require kernel headers
+               ;; that have been removed.
+               (substitute* '("config.make" "config.h")
+                 (("^.*HAVE_(AFDECnet|HWSTRIP|HWTR)[ =]1.*$") "")))
+             #t))
+         (add-after 'install 'remove-redundant-commands
+          (lambda* (#:key outputs #:allow-other-keys)
+            ;; Remove commands and man pages redundant with
+            ;; Inetutils.
+            (let* ((out (assoc-ref outputs "out"))
+                   (dup (append-map (cut find-files out <>)
+                                    '("^hostname"
+                                      "^(yp|nis|dns)?domainname"))))
+              (for-each delete-file dup)
+              #t))))
 
        ;; Binaries that depend on libnet-tools.a don't declare that
        ;; dependency, making it parallel-unsafe.
@@ -1420,22 +1420,22 @@ Linux-based operating systems.")
     (native-inputs `(("autoconf" ,autoconf)
                      ("automake" ,automake)))
     (arguments
-     '(#:phases (alist-cons-after
-                 'unpack 'bootstrap
-                 (lambda _
-                   ;; Fix "field ‘ip6’ has incomplete type" errors.
-                   (substitute* "libbridge/libbridge.h"
-                     (("#include <linux/if_bridge.h>")
-                      "#include <linux/in6.h>\n#include <linux/if_bridge.h>"))
-
-                   ;; Ensure that the entire build fails if one of the
-                   ;; sub-Makefiles fails.
-                   (substitute* "Makefile.in"
-                     (("\\$\\(MAKE\\) \\$\\(MFLAGS\\) -C \\$\\$x ;")
-                      "$(MAKE) $(MFLAGS) -C $$x || exit 1;"))
-
-                   (zero? (system* "autoreconf" "-vf")))
-                 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'bootstrap
+           (lambda _
+             ;; Fix "field ‘ip6’ has incomplete type" errors.
+             (substitute* "libbridge/libbridge.h"
+               (("#include <linux/if_bridge.h>")
+                "#include <linux/in6.h>\n#include <linux/if_bridge.h>"))
+
+             ;; Ensure that the entire build fails if one of the
+             ;; sub-Makefiles fails.
+             (substitute* "Makefile.in"
+               (("\\$\\(MAKE\\) \\$\\(MFLAGS\\) -C \\$\\$x ;")
+                "$(MAKE) $(MFLAGS) -C $$x || exit 1;"))
+
+             (zero? (system* "autoreconf" "-vf")))))
        #:tests? #f))                              ; no 'check' target
 
     (home-page
@@ -1495,7 +1495,7 @@ configuration and monitoring interfaces.")
     (arguments
      `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
                           "CC=gcc")
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://wireless.wiki.kernel.org/")
     (synopsis "Tool for configuring wireless devices")
     (description
@@ -1628,27 +1628,28 @@ processes currently causing I/O.")
                                (string-append "UDEV_RULES_PATH="
                                               (assoc-ref %outputs "out")
                                               "/lib/udev/rules.d"))
-      #:phases (alist-cons-before
-                'build 'set-file-names
-                (lambda* (#:key inputs #:allow-other-keys)
-                  ;; libfuse calls out to mount(8) and umount(8).  Make sure
-                  ;; it refers to the right ones.
-                  (substitute* '("lib/mount_util.c" "util/mount_util.c")
-                    (("/bin/(u?)mount" _ maybe-u)
-                     (string-append (assoc-ref inputs "util-linux")
-                                    "/bin/" maybe-u "mount")))
-                  (substitute* '("util/mount.fuse.c")
-                    (("/bin/sh")
-                     (which "sh")))
-
-                  ;; This hack leads libfuse to search for 'fusermount' in
-                  ;; $PATH, where it may find a setuid-root binary, instead of
-                  ;; trying solely $out/sbin/fusermount and failing because
-                  ;; it's not setuid.
-                  (substitute* "lib/Makefile"
-                    (("-DFUSERMOUNT_DIR=[[:graph:]]+")
-                     "-DFUSERMOUNT_DIR=\\\"/var/empty\\\"")))
-                %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'set-file-names
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; libfuse calls out to mount(8) and umount(8).  Make sure
+             ;; it refers to the right ones.
+             (substitute* '("lib/mount_util.c" "util/mount_util.c")
+               (("/bin/(u?)mount" _ maybe-u)
+                (string-append (assoc-ref inputs "util-linux")
+                               "/bin/" maybe-u "mount")))
+             (substitute* '("util/mount.fuse.c")
+               (("/bin/sh")
+                (which "sh")))
+
+             ;; This hack leads libfuse to search for 'fusermount' in
+             ;; $PATH, where it may find a setuid-root binary, instead of
+             ;; trying solely $out/sbin/fusermount and failing because
+             ;; it's not setuid.
+             (substitute* "lib/Makefile"
+               (("-DFUSERMOUNT_DIR=[[:graph:]]+")
+                "-DFUSERMOUNT_DIR=\\\"/var/empty\\\""))
+             #t)))))
     (home-page "https://github.com/libfuse/libfuse")
     (synopsis "Support file systems implemented in user space")
     (description
@@ -1726,20 +1727,20 @@ UnionFS-FUSE additionally supports copy-on-write.")
     (arguments
      '(#:tests? #f
        #:configure-flags '("-DCMAKE_EXE_LINKER_FLAGS=-static")
-       #:phases (alist-cons-after
-                 'install 'post-install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let* ((out (assoc-ref outputs "out"))
-                          (exe (string-append out "/bin/unionfs")))
-                     ;; By default, 'unionfs' keeps references to
-                     ;; $glibc/share/locale and similar stuff.  Remove them.
-                     (remove-store-references exe)
-
-                     ;; 'unionfsctl' has references to glibc as well.  Since
-                     ;; we don't need it, remove it.
-                     (delete-file (string-append out "/bin/unionfsctl"))
-                     #t))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (exe (string-append out "/bin/unionfs")))
+               ;; By default, 'unionfs' keeps references to
+               ;; $glibc/share/locale and similar stuff.  Remove them.
+               (remove-store-references exe)
+
+               ;; 'unionfsctl' has references to glibc as well.  Since
+               ;; we don't need it, remove it.
+               (delete-file (string-append out "/bin/unionfsctl"))
+               #t))))))
     (inputs `(("fuse" ,fuse-static)))))
 
 (define-public sshfs-fuse
@@ -2318,43 +2319,42 @@ country-specific regulations for the wireless spectrum.")
                           (string-append "ETCDIR=" %output "/etc")
                           (string-append "MANDIR=" %output "/share/man"))
        #:phases
-       (alist-delete
-        'configure
-        (alist-cons-before
-         'build 'patch-exec-paths
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (substitute* "prog/detect/sensors-detect"
-             (("`uname")
-              (string-append "`" (assoc-ref inputs "coreutils")
-                             "/bin/uname"))
-             (("(`|\")modprobe" all open-quote)
-              (string-append open-quote
-                             (assoc-ref inputs "kmod")
-                             "/bin/modprobe")))
-           (substitute* '("prog/pwm/pwmconfig"
-                          "prog/pwm/fancontrol")
-             (("gnuplot")
-              (string-append (assoc-ref inputs "gnuplot")
-                             "/bin/gnuplot"))
-             (("cat ")
-              (string-append (assoc-ref inputs "coreutils")
-                             "/bin/cat "))
-             (("egrep ")
-              (string-append (assoc-ref inputs "grep")
-                             "/bin/egrep "))
-             (("sed -e")
-              (string-append (assoc-ref inputs "sed")
-                             "/bin/sed -e"))
-             (("cut -d")
-              (string-append (assoc-ref inputs "coreutils")
-                             "/bin/cut -d"))
-             (("sleep ")
-              (string-append (assoc-ref inputs "coreutils")
-                             "/bin/sleep "))
-             (("readlink -f")
-              (string-append (assoc-ref inputs "coreutils")
-                             "/bin/readlink -f"))))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'patch-exec-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "prog/detect/sensors-detect"
+               (("`uname")
+                (string-append "`" (assoc-ref inputs "coreutils")
+                               "/bin/uname"))
+               (("(`|\")modprobe" all open-quote)
+                (string-append open-quote
+                               (assoc-ref inputs "kmod")
+                               "/bin/modprobe")))
+             (substitute* '("prog/pwm/pwmconfig"
+                            "prog/pwm/fancontrol")
+               (("gnuplot")
+                (string-append (assoc-ref inputs "gnuplot")
+                               "/bin/gnuplot"))
+               (("cat ")
+                (string-append (assoc-ref inputs "coreutils")
+                               "/bin/cat "))
+               (("egrep ")
+                (string-append (assoc-ref inputs "grep")
+                               "/bin/egrep "))
+               (("sed -e")
+                (string-append (assoc-ref inputs "sed")
+                               "/bin/sed -e"))
+               (("cut -d")
+                (string-append (assoc-ref inputs "coreutils")
+                               "/bin/cut -d"))
+               (("sleep ")
+                (string-append (assoc-ref inputs "coreutils")
+                               "/bin/sleep "))
+               (("readlink -f")
+                (string-append (assoc-ref inputs "coreutils")
+                               "/bin/readlink -f")))
+             #t)))))
     (home-page "http://jdelvare.nerim.net/devel.html#lmsensors")
     (synopsis "Utilities to read temperature/voltage/fan sensors")
     (description
@@ -2381,7 +2381,7 @@ It works with most newer systems.")
        #:make-flags (list (string-append "prefix=" %output)
                           "CC=gcc")
        ;; no configure script
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("perl" ,perl)))
     (home-page "http://jdelvare.nerim.net/devel.html#i2ctools")
@@ -2410,18 +2410,19 @@ SMBus access.")
               ("gtk" ,gtk+-2)))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (arguments
-     `(#:phases (alist-cons-before
-                 'configure 'enable-deprecated
-                 (lambda _
-                   (substitute* "src/Makefile.in"
-                     (("-DGDK_DISABLE_DEPRECATED") "")
-                     (("-DGTK_DISABLE_DEPRECATED") "")))
-                 (alist-cons-before
-                  'configure 'remove-Werror
-                  (lambda _
-                    (substitute* '("configure" "src/Makefile.in")
-                      (("-Werror") "")))
-                  %standard-phases))))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'enable-deprecated
+           (lambda _
+             (substitute* "src/Makefile.in"
+               (("-DGDK_DISABLE_DEPRECATED") "")
+               (("-DGTK_DISABLE_DEPRECATED") ""))
+             #t))
+         (add-before 'configure 'remove-Werror
+           (lambda _
+             (substitute* '("configure" "src/Makefile.in")
+               (("-Werror") ""))
+             #t)))))
     (home-page "http://www.linuxhardware.org/xsensors/")
     (synopsis "Hardware health information viewer")
     (description
@@ -2437,12 +2438,13 @@ in a digital read-out.")
     (source (package-source linux-libre))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (setenv "SHELL_PATH" (which "bash"))
-                   (chdir "tools/perf"))
-                 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "SHELL_PATH" (which "bash"))
+             (chdir "tools/perf")
+             #t)))
        #:make-flags (list (string-append "DESTDIR="
                                          (assoc-ref %outputs "out"))
                           "WERROR=0"
@@ -2781,22 +2783,23 @@ MPEG-2 and audio over Linux IEEE 1394.")
                             (string-append "BINDIR=" out "/sbin")
                             (string-append "MANDIR=" out "/share/man")
                             (string-append "UDEVDIR=" out "/lib/udev")))
-       #:phases (alist-cons-before
-                 'build 'patch-program-paths
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (let ((coreutils (assoc-ref inputs "coreutils")))
-                     (substitute* "udev-md-raid-arrays.rules"
-                       (("/usr/bin/(readlink|basename)" all program)
-                        (string-append coreutils "/bin/" program)))))
-                 (alist-cons-before
-                  'build 'remove-W-error
-                  (lambda _
-                    ;; We cannot build with -Werror on i686 due to a
-                    ;; 'sign-compare' warning in util.c.
-                    (substitute* "Makefile"
-                      (("-Werror") ""))
-                    #t)
-                  (alist-delete 'configure %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'patch-program-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((coreutils (assoc-ref inputs "coreutils")))
+               (substitute* "udev-md-raid-arrays.rules"
+                 (("/usr/bin/(readlink|basename)" all program)
+                  (string-append coreutils "/bin/" program))))
+             #t))
+         (add-before 'build 'remove-W-error
+           (lambda _
+             ;; We cannot build with -Werror on i686 due to a
+             ;; 'sign-compare' warning in util.c.
+             (substitute* "Makefile"
+               (("-Werror") ""))
+             #t))
+         (delete 'configure))
        ;;tests must be done as root
        #:tests? #f))
     (home-page "http://neil.brown.name/blog/mdadm")
@@ -2931,7 +2934,8 @@ Linux Device Mapper multipathing driver:
        (list "CC=gcc" (string-append "prefix=" %output))
        #:test-target "partcheck" ; need root for a full 'check'
        #:phases
-       (alist-delete 'configure %standard-phases))) ; no configure script
+       ;; no configure script
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "http://lse.sourceforge.net/io/aio.html")
     (synopsis "Linux-native asynchronous I/O access library")
     (description
@@ -3537,13 +3541,14 @@ the default @code{nsswitch} and the experimental @code{umich_ldap}.")
      ;; FIXME: The upstream tarball lacks man pages, and building them would
      ;; require DocBook & co.  We used to use Gentoo's pre-built man pages,
      ;; but they vanished.  In the meantime, fake it.
-     '(#:phases (alist-cons-before
-                 'configure 'fake-docbook
-                 (lambda _
-                   (substitute* "Makefile.in"
-                     (("^DOCBOOKTOMAN.*$")
-                      "DOCBOOKTOMAN = true\n")))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'fake-docbook
+           (lambda _
+             (substitute* "Makefile.in"
+               (("^DOCBOOKTOMAN.*$")
+                "DOCBOOKTOMAN = true\n"))
+             #t)))))
     (home-page "http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/")
     (synopsis "Tools for loading and managing Linux kernel modules")
     (description
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 224cea56f..c3b213047 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -445,36 +445,33 @@ statistical profiler, a code coverage tool, and many other extensions.")
                   (guix build utils)
                   (guix build gnu-build-system))
        #:phases
-       (alist-replace
-        'unpack
-        (lambda* (#:key inputs #:allow-other-keys)
-          (and (zero? (system* "tar" "xzvf" (assoc-ref inputs "ccl")))
-               (begin (chdir "ccl") #t)))
-        (alist-delete
-         'configure
-         (alist-cons-before
-          'build 'pre-build
-          ;; Enter the source directory for the current platform's lisp
-          ;; kernel, and run 'make clean' to remove the precompiled one.
-          (lambda _
-            (chdir (string-append
-                    "lisp-kernel/"
-                    ,(match (or (%current-target-system) (%current-system))
-                       ("i686-linux"   "linuxx8632")
-                       ("x86_64-linux" "linuxx8664")
-                       ("armhf-linux"  "linuxarm")
-                       ;; Prevent errors when querying this package
-                       ;; on unsupported platforms, e.g. when running
-                       ;; "guix package --search="
-                       (_              "UNSUPPORTED"))))
-            (substitute* '("Makefile")
-              (("/bin/rm") "rm"))
-            (setenv "CC" "gcc")
-            (zero? (system* "make" "clean")))
-          ;; XXX Do we need to recompile the heap image as well for Guix?
-          ;; For now just use the one we already got in the tarball.
-          (alist-replace
-           'install
+       (modify-phases %standard-phases
+         (replace 'unpack
+           (lambda* (#:key inputs #:allow-other-keys)
+             (and (zero? (system* "tar" "xzvf" (assoc-ref inputs "ccl")))
+                  (begin (chdir "ccl") #t))))
+         (delete 'configure)
+         (add-before 'build 'pre-build
+           ;; Enter the source directory for the current platform's lisp
+           ;; kernel, and run 'make clean' to remove the precompiled one.
+           (lambda _
+             (chdir (string-append
+                     "lisp-kernel/"
+                     ,(match (or (%current-target-system) (%current-system))
+                        ("i686-linux"   "linuxx8632")
+                        ("x86_64-linux" "linuxx8664")
+                        ("armhf-linux"  "linuxarm")
+                        ;; Prevent errors when querying this package
+                        ;; on unsupported platforms, e.g. when running
+                        ;; "guix package --search="
+                        (_              "UNSUPPORTED"))))
+             (substitute* '("Makefile")
+               (("/bin/rm") "rm"))
+             (setenv "CC" "gcc")
+             (zero? (system* "make" "clean"))))
+         ;; XXX Do we need to recompile the heap image as well for Guix?
+         ;; For now just use the one we already got in the tarball.
+         (replace 'install
            (lambda* (#:key outputs inputs #:allow-other-keys)
              ;; The lisp kernel built by running 'make' in lisp-kernel/$system
              ;; is put back into the original directory, so go back.  The heap
@@ -513,8 +510,8 @@ statistical profiler, a code coverage tool, and many other extensions.")
                      "CCL_DEFAULT_DIRECTORY=" libdir "\n"
                      "export CCL_DEFAULT_DIRECTORY\n"
                      "exec " libdir kernel "\n"))))
-               (chmod wrapper #o755)))
-           %standard-phases))))))
+               (chmod wrapper #o755)
+               #t))))))
     (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))
     (home-page "http://ccl.clozure.com/")
     (synopsis "Common Lisp implementation")
diff --git a/gnu/packages/lout.scm b/gnu/packages/lout.scm
index f2c724ae0..d99f944b4 100644
--- a/gnu/packages/lout.scm
+++ b/gnu/packages/lout.scm
@@ -24,91 +24,81 @@
   #:use-module (gnu packages ghostscript))
 
 (define-public lout
-  ;; This one is a bit tricky, because it doesn't follow the GNU Build System
-  ;; rules.  Instead, it has a makefile that has to be patched to set the
-  ;; prefix, etc., and it has no makefile rules to build its doc.
-  (let ((configure-phase
-         '(lambda* (#:key outputs #:allow-other-keys)
-            (let ((out (assoc-ref outputs "out"))
-                  (doc (assoc-ref outputs "doc")))
-              (substitute* "makefile"
-                (("^PREFIX[[:blank:]]*=.*$")
-                 (string-append "PREFIX = " out "\n"))
-                (("^LOUTLIBDIR[[:blank:]]*=.*$")
-                 (string-append "LOUTLIBDIR = " out "/lib/lout\n"))
-                (("^LOUTDOCDIR[[:blank:]]*=.*$")
-                 (string-append "LOUTDOCDIR = " doc "/share/doc/lout\n"))
-                (("^MANDIR[[:blank:]]*=.*$")
-                 (string-append "MANDIR = " out "/man\n")))
-              (mkdir out)
-              (mkdir (string-append out "/bin"))
-              (mkdir (string-append out "/lib"))
-              (mkdir (string-append out "/man"))
-              (mkdir-p (string-append doc "/share/doc/lout")))))
-        (install-man-phase
-         '(lambda* (#:key outputs #:allow-other-keys)
-            (zero? (system* "make" "installman"))))
-        (doc-phase
-         '(lambda* (#:key outputs #:allow-other-keys)
-            (define out
-              (assoc-ref outputs "doc"))
-
-            (setenv "PATH"
-                    (string-append (assoc-ref outputs "out")
-                                   "/bin:" (getenv "PATH")))
-            (chdir "doc")
-            (every (lambda (doc)
-                     (format #t "doc: building `~a'...~%" doc)
-                     (with-directory-excursion doc
-                       (let ((file (string-append out "/share/doc/lout/"
-                                                  doc ".ps")))
-                         (and (or (file-exists? "outfile.ps")
-                                  (zero? (system* "lout" "-r4" "-o"
-                                                  "outfile.ps" "all")))
-                              (begin
-                                (copy-file "outfile.ps" file)
-                                #t)
-                              (zero? (system* "ps2pdf"
-                                              "-dPDFSETTINGS=/prepress"
-                                              "-sPAPERSIZE=a4"
-                                              file
-                                              (string-append out "/share/doc/lout/"
-                                                             doc ".pdf")))))))
-                   '("design" "expert" "slides" "user")))))
-   (package
+  (package
     (name "lout")
     (version "3.40")
     (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://savannah/lout/lout-"
-                                 version ".tar.gz"))
-             (sha256
-              (base32
-               "1gb8vb1wl7ikn269dd1c7ihqhkyrwk19jwx5kd0rdvbk6g7g25ix"))))
+              (method url-fetch)
+              (uri (string-append "mirror://savannah/lout/lout-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1gb8vb1wl7ikn269dd1c7ihqhkyrwk19jwx5kd0rdvbk6g7g25ix"))))
     (build-system gnu-build-system)               ; actually, just a makefile
     (outputs '("out" "doc"))
     (native-inputs
      `(("ghostscript" ,ghostscript)))
-    (arguments `(#:modules ((guix build utils)
-                            (guix build gnu-build-system)
-                            (srfi srfi-1))        ; we need SRFI-1
-                 #:tests? #f                      ; no "check" target
-
-                 ;; Customize the build phases.
-                 #:phases (alist-replace
-                           'configure ,configure-phase
-
-                           (alist-cons-after
-                            'install 'install-man-pages
-                            ,install-man-phase
+    (arguments
+     `(#:modules ((guix build utils)
+                  (guix build gnu-build-system)
+                  (srfi srfi-1))        ; we need SRFI-1
+       #:tests? #f                      ; no "check" target
 
-                            (alist-cons-after
-                             'install 'install-doc
-                             ,doc-phase
-                             %standard-phases)))))
+       ;; This one is a bit tricky, because it doesn't follow the GNU Build
+       ;; System rules.  Instead, it has a makefile that has to be patched to
+       ;; set the prefix, etc., and it has no makefile rules to build its doc.
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (doc (assoc-ref outputs "doc")))
+               (substitute* "makefile"
+                 (("^PREFIX[[:blank:]]*=.*$")
+                  (string-append "PREFIX = " out "\n"))
+                 (("^LOUTLIBDIR[[:blank:]]*=.*$")
+                  (string-append "LOUTLIBDIR = " out "/lib/lout\n"))
+                 (("^LOUTDOCDIR[[:blank:]]*=.*$")
+                  (string-append "LOUTDOCDIR = " doc "/share/doc/lout\n"))
+                 (("^MANDIR[[:blank:]]*=.*$")
+                  (string-append "MANDIR = " out "/man\n")))
+               (mkdir out)
+               (mkdir (string-append out "/bin"))
+               (mkdir (string-append out "/lib"))
+               (mkdir (string-append out "/man"))
+               (mkdir-p (string-append doc "/share/doc/lout")))
+             #t))
+         (add-after 'install-man-pages 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "doc")))
+               (setenv "PATH"
+                       (string-append (assoc-ref outputs "out")
+                                      "/bin:" (getenv "PATH")))
+               (chdir "doc")
+               (every (lambda (doc)
+                        (format #t "doc: building `~a'...~%" doc)
+                        (with-directory-excursion doc
+                          (let ((file (string-append out "/share/doc/lout/"
+                                                     doc ".ps")))
+                            (and (or (file-exists? "outfile.ps")
+                                     (zero? (system* "lout" "-r4" "-o"
+                                                     "outfile.ps" "all")))
+                                 (begin
+                                   (copy-file "outfile.ps" file)
+                                   #t)
+                                 (zero? (system* "ps2pdf"
+                                                 "-dPDFSETTINGS=/prepress"
+                                                 "-sPAPERSIZE=a4"
+                                                 file
+                                                 (string-append out "/share/doc/lout/"
+                                                                doc ".pdf")))))))
+                      '("design" "expert" "slides" "user")))))
+         (add-after 'install 'install-man-pages
+           (lambda _
+             (zero? (system* "make" "installman")))))))
     (synopsis "Document layout system")
     (description
-"The Lout document formatting system reads a high-level description of
+     "The Lout document formatting system reads a high-level description of
 a document similar in style to LaTeX and produces a PostScript or plain text
 output file.
 
@@ -124,4 +114,4 @@ TeX macros because Lout is a high-level, purely functional language, the
 outcome of an eight-year research project that went back to the
 beginning.")
     (license gpl3+)
-    (home-page "http://savannah.nongnu.org/projects/lout/"))))
+    (home-page "http://savannah.nongnu.org/projects/lout/")))
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index c3cb700be..c8bc4ef85 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -124,7 +124,7 @@ for configuration, scripting, and rapid prototyping.")
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f                      ;luajit is distributed without tests
-       #:phases (alist-delete 'configure %standard-phases)
+       #:phases (modify-phases %standard-phases (delete 'configure))
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
     (home-page "http://www.luajit.org/")
     (synopsis "Just in time compiler for Lua programming language version 5.1")
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index d39e77d97..91fab8ccf 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -375,54 +375,50 @@ sample proximities between pairs of cases.")
     (arguments
      '(#:tests? #f ;no check target
        #:phases
-       (alist-cons-after
-        'unpack 'delete-broken-symlinks
-        (lambda _
-          (for-each delete-file '("applications/arts/data"
-                                  "applications/asp/data"
-                                  "applications/easysvm/data"
-                                  "applications/msplicer/data"
-                                  "applications/ocr/data"
-                                  "examples/documented/data"
-                                  "examples/documented/matlab_static"
-                                  "examples/documented/octave_static"
-                                  "examples/undocumented/data"
-                                  "examples/undocumented/matlab_static"
-                                  "examples/undocumented/octave_static"
-                                  "tests/integration/data"
-                                  "tests/integration/matlab_static"
-                                  "tests/integration/octave_static"
-                                  "tests/integration/python_modular/tests"))
-          #t)
-        (alist-cons-after
-         'unpack 'change-R-target-path
-         (lambda* (#:key outputs #:allow-other-keys)
-           (substitute* '("src/interfaces/r_modular/CMakeLists.txt"
-                          "src/interfaces/r_static/CMakeLists.txt"
-                          "examples/undocumented/r_modular/CMakeLists.txt")
-             (("\\$\\{R_COMPONENT_LIB_PATH\\}")
-              (string-append (assoc-ref outputs "out")
-                             "/lib/R/library/")))
-           #t)
-         (alist-cons-after
-          'unpack 'fix-octave-modules
-          (lambda* (#:key outputs #:allow-other-keys)
-            (substitute* '("src/interfaces/octave_modular/CMakeLists.txt"
-                           "src/interfaces/octave_static/CMakeLists.txt")
-              (("^include_directories\\(\\$\\{OCTAVE_INCLUDE_DIRS\\}")
-               "include_directories(${OCTAVE_INCLUDE_DIRS} ${OCTAVE_INCLUDE_DIRS}/octave"))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'delete-broken-symlinks
+           (lambda _
+             (for-each delete-file '("applications/arts/data"
+                                     "applications/asp/data"
+                                     "applications/easysvm/data"
+                                     "applications/msplicer/data"
+                                     "applications/ocr/data"
+                                     "examples/documented/data"
+                                     "examples/documented/matlab_static"
+                                     "examples/documented/octave_static"
+                                     "examples/undocumented/data"
+                                     "examples/undocumented/matlab_static"
+                                     "examples/undocumented/octave_static"
+                                     "tests/integration/data"
+                                     "tests/integration/matlab_static"
+                                     "tests/integration/octave_static"
+                                     "tests/integration/python_modular/tests"))
+             #t))
+         (add-after 'unpack 'change-R-target-path
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* '("src/interfaces/r_modular/CMakeLists.txt"
+                            "src/interfaces/r_static/CMakeLists.txt"
+                            "examples/undocumented/r_modular/CMakeLists.txt")
+               (("\\$\\{R_COMPONENT_LIB_PATH\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/lib/R/library/")))
+             #t))
+         (add-after 'unpack 'fix-octave-modules
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* '("src/interfaces/octave_modular/CMakeLists.txt"
+                            "src/interfaces/octave_static/CMakeLists.txt")
+               (("^include_directories\\(\\$\\{OCTAVE_INCLUDE_DIRS\\}")
+                "include_directories(${OCTAVE_INCLUDE_DIRS} ${OCTAVE_INCLUDE_DIRS}/octave"))
 
-            ;; change target directory
-            (substitute* "src/interfaces/octave_modular/CMakeLists.txt"
-              (("\\$\\{OCTAVE_OCT_LOCAL_API_FILE_DIR\\}")
-               (string-append (assoc-ref outputs "out")
-                              "/share/octave/packages")))
-            #t)
-          (alist-cons-before
-           'build 'set-HOME
+             ;; change target directory
+             (substitute* "src/interfaces/octave_modular/CMakeLists.txt"
+               (("\\$\\{OCTAVE_OCT_LOCAL_API_FILE_DIR\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/share/octave/packages")))
+             #t))
+         (add-before 'build 'set-HOME
            ;; $HOME needs to be set at some point during the build phase
-           (lambda _ (setenv "HOME" "/tmp") #t)
-           %standard-phases))))
+           (lambda _ (setenv "HOME" "/tmp") #t)))
        #:configure-flags
        (list "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
              "-DUSE_SVMLIGHT=OFF" ;disable proprietary SVMLIGHT
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index cc76a93ed..af8690dda 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1028,51 +1028,51 @@ delivery.")
        ("perl" ,perl)))
     (arguments
      '(#:phases
-       (alist-replace
-        'configure
-        ;; We'd use #:make-flags but the top-level Makefile calls others
-        ;; recursively, so just set all variables this way.
-        (lambda* (#:key outputs inputs #:allow-other-keys)
-          (substitute* '("Makefile" "OS/Makefile-Default")
-            (("(RM_COMMAND=).*" all var)
-             (string-append var "rm\n")))
-          (copy-file "src/EDITME" "Local/Makefile")
-          (copy-file "exim_monitor/EDITME" "Local/eximon.conf")
-          (let ((out (assoc-ref outputs "out"))
-                (gzip (assoc-ref inputs "gzip"))
-                (bzip2 (assoc-ref inputs "bzip2"))
-                (xz (assoc-ref inputs "xz")))
-            (substitute* '("Local/Makefile")
-              (("(BIN_DIRECTORY=).*" all var)
-               (string-append var out "/bin\n"))
-              (("(CONFIGURE_FILE=).*" all var)
-               (string-append var out "/etc/exim.conf\n"))
-              (("(EXIM_USER=).*" all var)
-               (string-append var "nobody\n"))
-              (("(FIXED_NEVER_USERS=).*" all var)
-               (string-append var "\n"))  ;XXX no root in build environment
-              (("(COMPRESS_COMMAND=).*" all var)
-               (string-append var gzip "/bin/gzip\n"))
-              (("(ZCAT_COMMAND=).*" all var)
-               (string-append var gzip "/bin/zcat\n")))
-            ;; This file has hardcoded names for tools despite the zcat
-            ;; configuration above.
-            (substitute* '("src/exigrep.src")
-              (("'zcat'") (string-append "'" gzip "/bin/zcat'"))
-              (("'bzcat'") (string-append "'" bzip2 "/bin/bzcat'"))
-              (("'xzcat'") (string-append "'" xz "/bin/xzcat'"))
-              (("'lzma'") (string-append "'" xz "/bin/lzma'")))))
-        (alist-cons-before
-         'build 'fix-sh-paths
-         (lambda* (#:key inputs #:allow-other-keys)
-           (substitute* '("scripts/lookups-Makefile" "scripts/reversion")
-             (("SHELL=/bin/sh") "SHELL=sh"))
-           (substitute* '("scripts/Configure-config.h")
-             (("\\| /bin/sh") "| sh"))
-           (let ((bash (assoc-ref inputs "bash")))
-             (substitute* '("scripts/Configure-eximon")
-               (("#!/bin/sh") (string-append "#!" bash "/bin/sh")))))
-         %standard-phases))
+       (modify-phases %standard-phases
+         (replace 'configure
+           ;; We'd use #:make-flags but the top-level Makefile calls others
+           ;; recursively, so just set all variables this way.
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (substitute* '("Makefile" "OS/Makefile-Default")
+               (("(RM_COMMAND=).*" all var)
+                (string-append var "rm\n")))
+             (copy-file "src/EDITME" "Local/Makefile")
+             (copy-file "exim_monitor/EDITME" "Local/eximon.conf")
+             (let ((out (assoc-ref outputs "out"))
+                   (gzip (assoc-ref inputs "gzip"))
+                   (bzip2 (assoc-ref inputs "bzip2"))
+                   (xz (assoc-ref inputs "xz")))
+               (substitute* '("Local/Makefile")
+                 (("(BIN_DIRECTORY=).*" all var)
+                  (string-append var out "/bin\n"))
+                 (("(CONFIGURE_FILE=).*" all var)
+                  (string-append var out "/etc/exim.conf\n"))
+                 (("(EXIM_USER=).*" all var)
+                  (string-append var "nobody\n"))
+                 (("(FIXED_NEVER_USERS=).*" all var)
+                  (string-append var "\n"))  ;XXX no root in build environment
+                 (("(COMPRESS_COMMAND=).*" all var)
+                  (string-append var gzip "/bin/gzip\n"))
+                 (("(ZCAT_COMMAND=).*" all var)
+                  (string-append var gzip "/bin/zcat\n")))
+               ;; This file has hardcoded names for tools despite the zcat
+               ;; configuration above.
+               (substitute* '("src/exigrep.src")
+                 (("'zcat'") (string-append "'" gzip "/bin/zcat'"))
+                 (("'bzcat'") (string-append "'" bzip2 "/bin/bzcat'"))
+                 (("'xzcat'") (string-append "'" xz "/bin/xzcat'"))
+                 (("'lzma'") (string-append "'" xz "/bin/lzma'"))))
+             #t))
+         (add-before 'build 'fix-sh-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* '("scripts/lookups-Makefile" "scripts/reversion")
+               (("SHELL=/bin/sh") "SHELL=sh"))
+             (substitute* '("scripts/Configure-config.h")
+               (("\\| /bin/sh") "| sh"))
+             (let ((bash (assoc-ref inputs "bash")))
+               (substitute* '("scripts/Configure-eximon")
+                 (("#!/bin/sh") (string-append "#!" bash "/bin/sh"))))
+             #t)))
        #:make-flags '("INSTALL_ARG=-no_chown")
        ;; No 'check' target.
        #:tests? #f))
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index 4eefafbe1..86a79bc0c 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -154,7 +154,7 @@ the traditional flat-text whatis databases.")
                 "14z0zcwm0m98fk2m2b3pvr8rs2sb602mg8f7wwb4xl7yj7cpjvbg"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-delete 'configure %standard-phases)
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
 
        ;; The 'all' target depends on three targets that directly populate
        ;; $(MANDIR) based on its current contents.  Doing that in parallel
@@ -220,7 +220,7 @@ automatically.")
     (arguments
      `(#:tests? #f ; no "check" target
        #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("gawk" ,gawk)))
     (home-page "https://github.com/mvertes/txt2man")
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 6566d750b..31ed4a49d 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -456,13 +456,14 @@ large scale eigenvalue problems.")
 
                           ;; Build the 'LAPACKE_clatms' functions.
                           "-DLAPACKE_WITH_TMG=ON")
-       #:phases (alist-cons-before
-                 'check 'patch-python
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (let ((python (assoc-ref inputs "python")))
-                     (substitute* "lapack_testing.py"
-                       (("/usr/bin/env python") python))))
-                  %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-python
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((python (assoc-ref inputs "python")))
+               (substitute* "lapack_testing.py"
+                 (("/usr/bin/env python") python)))
+             #t)))))
     (synopsis "Library for numerical linear algebra")
     (description
      "LAPACK is a Fortran 90 library for solving the most commonly occurring
@@ -1758,12 +1759,12 @@ void mc64ad_ (int *a, int *b, int *c, int *d, int *e, double *f, int *g,
     (arguments
      `(#:parallel-build? #f             ;race conditions using ar
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (call-with-output-file "make.inc"
-            (lambda (port)
-              (format port "
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (call-with-output-file "make.inc"
+               (lambda (port)
+                 (format port "
 PLAT        =
 DSuperLUroot = ~a
 DSUPERLULIB  = ~a/lib/libsuperlu_dist.a
@@ -1786,47 +1787,46 @@ FORTRAN     = mpifort
 FFLAGS      = -O2 -g $(PIC)
 LOADER      = $(CC)
 CDEFS       = -DAdd_"
-                      (getcwd)
-                      (assoc-ref outputs "out")
-                      (assoc-ref inputs "lapack")
-                      (assoc-ref inputs "pt-scotch")))))
-        (alist-cons-after
-         'unpack 'remove-broken-symlinks
-         (lambda _
-           (for-each delete-file
-                     (find-files "MAKE_INC" "\\.#make\\..*")))
-         (alist-cons-before
-          'build 'create-install-directories
-          (lambda* (#:key outputs #:allow-other-keys)
-            (for-each
-             (lambda (dir)
-               (mkdir-p (string-append (assoc-ref outputs "out")
-                                       "/" dir)))
-             '("lib" "include")))
-          (alist-replace
-           'check
+                         (getcwd)
+                         (assoc-ref outputs "out")
+                         (assoc-ref inputs "lapack")
+                         (assoc-ref inputs "pt-scotch"))))
+             #t))
+         (add-after 'unpack 'remove-broken-symlinks
+           (lambda _
+             (for-each delete-file
+                       (find-files "MAKE_INC" "\\.#make\\..*"))
+             #t))
+         (add-before 'build 'create-install-directories
+           (lambda* (#:key outputs #:allow-other-keys)
+             (for-each
+              (lambda (dir)
+                (mkdir-p (string-append (assoc-ref outputs "out")
+                                        "/" dir)))
+              '("lib" "include"))
+             #t))
+         (replace 'check
            (lambda _
              (with-directory-excursion "EXAMPLE"
                (and
                 (zero? (system* "mpirun" "-n" "2"
                                 "./pddrive" "-r" "1" "-c" "2" "g20.rua"))
                 (zero? (system* "mpirun" "-n" "2"
-                                "./pzdrive" "-r" "1" "-c" "2" "cg20.cua")))))
-           (alist-replace
-            'install
-            (lambda* (#:key outputs #:allow-other-keys)
-              ;; Library is placed in lib during the build phase.  Copy over
-              ;; headers to include.
-              (let* ((out    (assoc-ref outputs "out"))
-                     (incdir (string-append out "/include")))
-                (for-each (lambda (file)
-                            (let ((base (basename file)))
-                              (format #t "installing `~a' to `~a'~%"
-                                      base incdir)
-                              (copy-file file
-                                         (string-append incdir "/" base))))
-                          (find-files "SRC" ".*\\.h$"))))
-            %standard-phases)))))))
+                                "./pzdrive" "-r" "1" "-c" "2" "cg20.cua"))))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Library is placed in lib during the build phase.  Copy over
+             ;; headers to include.
+             (let* ((out    (assoc-ref outputs "out"))
+                    (incdir (string-append out "/include")))
+               (for-each (lambda (file)
+                           (let ((base (basename file)))
+                             (format #t "installing `~a' to `~a'~%"
+                                     base incdir)
+                             (copy-file file
+                                        (string-append incdir "/" base))))
+                         (find-files "SRC" ".*\\.h$")))
+             #t)))))
     (home-page (package-home-page superlu))
     (synopsis "Parallel supernodal direct solver")
     (description
@@ -2356,7 +2356,7 @@ parts of it.")
        (list (string-append "prefix=" (assoc-ref %outputs "out")))
        #:phases
        ;; no configure script
-       (alist-delete 'configure %standard-phases)
+       (modify-phases %standard-phases (delete 'configure))
        #:tests? #f)) ;the tests are part of the default target
     (home-page "http://openlibm.org/")
     (synopsis "Portable C mathematical library (libm)")
@@ -2395,7 +2395,7 @@ environments.")
        #:make-flags
        (list (string-append "prefix=" (assoc-ref %outputs "out")))
        ;; no configure script
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("fortran" ,gfortran)))
     (home-page "https://github.com/JuliaLang/openspecfun")
@@ -2440,15 +2440,16 @@ Fresnel integrals, and similar related functions as well.")
              (string-append "INSTALL_INCLUDE="
                             (assoc-ref %outputs "out") "/include"))
        #:phases
-       (alist-cons-before
-        'install 'prepare-out
-        ;; README.txt states that the target directories must exist prior to
-        ;; running "make install".
-        (lambda _
-          (mkdir-p (string-append (assoc-ref %outputs "out") "/lib"))
-          (mkdir-p (string-append (assoc-ref %outputs "out") "/include")))
-        ;; no configure script
-        (alist-delete 'configure %standard-phases))))
+       (modify-phases %standard-phases
+         (add-before 'install 'prepare-out
+           ;; README.txt states that the target directories must exist prior to
+           ;; running "make install".
+           (lambda _
+             (mkdir-p (string-append (assoc-ref %outputs "out") "/lib"))
+             (mkdir-p (string-append (assoc-ref %outputs "out") "/include"))
+             #t))
+         ;; no configure script
+         (delete 'configure))))
     (inputs
      `(("tbb" ,tbb)
        ("lapack" ,lapack)))
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index eb9e86915..adb7b938f 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -142,20 +142,19 @@ keys, no previous conversation is compromised.")
               ("python" ,python-2)
               ("perl" ,perl)))
     (arguments
-     `(#:phases (alist-cons-after
-                 'install 'install-etc
-                 (lambda* (#:key (make-flags '()) #:allow-other-keys)
-                   (zero? (apply system* "make" "install-etc" make-flags)))
-                 (alist-replace
-                  'configure
-                  ;; bitlbee's configure script does not tolerate many of the
-                  ;; variable settings that Guix would pass to it.
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (zero? (system* "./configure"
-                                    (string-append "--prefix="
-                                                   (assoc-ref outputs "out"))
-                                    "--otr=1")))
-                  %standard-phases))))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-etc
+           (lambda* (#:key (make-flags '()) #:allow-other-keys)
+             (zero? (apply system* "make" "install-etc" make-flags))))
+         (replace 'configure
+           ;; bitlbee's configure script does not tolerate many of the
+           ;; variable settings that Guix would pass to it.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (zero? (system* "./configure"
+                             (string-append "--prefix="
+                                            (assoc-ref outputs "out"))
+                             "--otr=1")))))))
     (synopsis "IRC to instant messaging gateway")
     (description "BitlBee brings IM (instant messaging) to IRC clients, for
 people who have an IRC client running all the time and don't want to run an
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index 789e596f8..23063616f 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -65,12 +65,12 @@
    (build-system gnu-build-system)
    (arguments
     `(#:phases
-       (alist-cons-before
-        'configure 'remove-unsupported-gcc-flags
-        (lambda _
-          ;; remove option that is not supported by gcc any more
-          (substitute* "configure" ((" -fforce-mem") "")))
-       %standard-phases)))
+      (modify-phases %standard-phases
+        (add-before 'configure 'remove-unsupported-gcc-flags
+          (lambda _
+            ;; remove option that is not supported by gcc any more
+            (substitute* "configure" ((" -fforce-mem") ""))
+            #t)))))
    (synopsis "MPEG audio decoder")
    (description
     "MAD (MPEG Audio Decoder) supports MPEG-1 and the MPEG-2 extension to
@@ -118,20 +118,20 @@ versions of ID3v2.")
    (build-system gnu-build-system)
    (arguments
     `(#:phases
-       (alist-cons-before
-        'configure 'apply-patches
-        ;; TODO: create a patch for origin instead?
-        (lambda _
-          (substitute* "configure"
-            (("iomanip.h") "")) ; drop check for unused header
-          ;; see http://www.linuxfromscratch.org/patches/downloads/id3lib/
-          (substitute* "include/id3/id3lib_strings.h"
-            (("include <string>") "include <cstring>\n#include <string>"))
-          (substitute* "include/id3/writers.h"
-            (("//\\#include <string.h>") "#include <cstring>"))
-          (substitute* "examples/test_io.cpp"
-            (("dami;") "dami;\nusing namespace std;")))
-         %standard-phases)))
+      (modify-phases %standard-phases
+        (add-before 'configure 'apply-patches
+          ;; TODO: create a patch for origin instead?
+          (lambda _
+            (substitute* "configure"
+              (("iomanip.h") "")) ; drop check for unused header
+            ;; see http://www.linuxfromscratch.org/patches/downloads/id3lib/
+            (substitute* "include/id3/id3lib_strings.h"
+              (("include <string>") "include <cstring>\n#include <string>"))
+            (substitute* "include/id3/writers.h"
+              (("//\\#include <string.h>") "#include <cstring>"))
+            (substitute* "examples/test_io.cpp"
+              (("dami;") "dami;\nusing namespace std;"))
+            #t)))))
    (synopsis "Library for reading, writing, and manipulating ID3v1 and ID3v2 tags")
    (description
     "Id3lib is a cross-platform software development library for reading,
@@ -189,29 +189,30 @@ Speex, WavPack TrueAudio, WAV, AIFF, MP4 and ASF files.")
     (build-system gnu-build-system)
     (outputs '("out" "gui"))                      ;GTK+ interface in "gui"
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let ((out (assoc-ref outputs "out")))
-                     (substitute* "Makefile"
-                       (("prefix=.*")
-                        (string-append "prefix := " out "\n")))))
-                 (alist-cons-before
-                  'install 'pre-install
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let ((out (assoc-ref outputs "out")))
-                      (mkdir-p (string-append out "/bin"))
-                      (mkdir-p (string-append out "/share/man/man1"))))
-                  (alist-cons-after
-                   'install 'post-install
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     ;; Move the GTK+ interface to "gui".
-                     (let ((out (assoc-ref outputs "out"))
-                           (gui (assoc-ref outputs "gui")))
-                       (mkdir-p (string-append gui "/bin"))
-                       (rename-file (string-append out "/bin/gmp3info")
-                                    (string-append gui "/bin/gmp3info"))))
-                   %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "Makefile"
+                 (("prefix=.*")
+                  (string-append "prefix := " out "\n"))))
+             #t))
+         (add-before 'install 'pre-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/bin"))
+               (mkdir-p (string-append out "/share/man/man1")))
+             #t))
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Move the GTK+ interface to "gui".
+             (let ((out (assoc-ref outputs "out"))
+                   (gui (assoc-ref outputs "gui")))
+               (mkdir-p (string-append gui "/bin"))
+               (rename-file (string-append out "/bin/gmp3info")
+                            (string-append gui "/bin/gmp3info")))
+             #t)))
         #:tests? #f))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 40996b11b..8875c85e2 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -867,60 +867,60 @@ complete studio.")
      `(#:tests? #f ; xmllint attempts to download DTD
        #:test-target "test"
        #:phases
-       (alist-cons-after
-        'unpack 'fix-configuration
-        (lambda* (#:key inputs #:allow-other-keys)
-          (substitute* "default.config"
-            (("csound=csound")
-             (string-append "csound="
-                            (assoc-ref inputs "csound")
-                            "/bin/csound"))
-            (("/usr/bin/aplay")
-             (string-append (assoc-ref inputs "aplay")
-                            "/bin/aplay"))
-            (("/usr/bin/timidity")
-             (string-append (assoc-ref inputs "timidity")
-                            "/bin/timidity"))
-            (("/usr/bin/mpg123")
-             (string-append (assoc-ref inputs "mpg123")
-                            "/bin/mpg123"))
-            (("/usr/bin/ogg123")
-             (string-append (assoc-ref inputs "ogg123")
-                            "/bin/ogg123"))))
-        (alist-cons-before
-         'build 'patch-python-shebangs
-         (lambda _
-           ;; Two python scripts begin with a Unicode BOM, so patch-shebang
-           ;; has no effect.
-           (substitute* '("solfege/parsetree.py"
-                          "solfege/presetup.py")
-             (("#!/usr/bin/python") (string-append "#!" (which "python")))))
-         (alist-cons-before
-          'build 'add-sitedirs
-          ;; .pth files are not automatically interpreted unless the
-          ;; directories containing them are added as "sites".  The directories
-          ;; are then added to those in the PYTHONPATH.  This is required for
-          ;; the operation of pygtk and pygobject.
-          (lambda _
-            (substitute* "run-solfege.py"
-              (("import os")
-               "import os, site
-for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)")))
-          (alist-cons-before
-           'build 'adjust-config-file-prefix
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-configuration
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "default.config"
+               (("csound=csound")
+                (string-append "csound="
+                               (assoc-ref inputs "csound")
+                               "/bin/csound"))
+               (("/usr/bin/aplay")
+                (string-append (assoc-ref inputs "aplay")
+                               "/bin/aplay"))
+               (("/usr/bin/timidity")
+                (string-append (assoc-ref inputs "timidity")
+                               "/bin/timidity"))
+               (("/usr/bin/mpg123")
+                (string-append (assoc-ref inputs "mpg123")
+                               "/bin/mpg123"))
+               (("/usr/bin/ogg123")
+                (string-append (assoc-ref inputs "ogg123")
+                               "/bin/ogg123")))
+             #t))
+         (add-before 'build 'patch-python-shebangs
+           (lambda _
+             ;; Two python scripts begin with a Unicode BOM, so patch-shebang
+             ;; has no effect.
+             (substitute* '("solfege/parsetree.py"
+                            "solfege/presetup.py")
+               (("#!/usr/bin/python") (string-append "#!" (which "python"))))
+             #t))
+         (add-before 'build 'add-sitedirs
+           ;; .pth files are not automatically interpreted unless the
+           ;; directories containing them are added as "sites".  The directories
+           ;; are then added to those in the PYTHONPATH.  This is required for
+           ;; the operation of pygtk and pygobject.
+           (lambda _
+             (substitute* "run-solfege.py"
+               (("import os")
+                "import os, site
+for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)"))
+             #t))
+         (add-before 'build 'adjust-config-file-prefix
            (lambda* (#:key outputs #:allow-other-keys)
              (substitute* "run-solfege.py"
                (("prefix = os.path.*$")
-                (string-append "prefix = " (assoc-ref outputs "out")))))
-           (alist-cons-after
-            'install 'wrap-program
-            (lambda* (#:key inputs outputs #:allow-other-keys)
-              ;; Make sure 'solfege' runs with the correct PYTHONPATH.
-              (let* ((out (assoc-ref outputs "out"))
-                     (path (getenv "PYTHONPATH")))
-                (wrap-program (string-append out "/bin/solfege")
-                  `("PYTHONPATH" ":" prefix (,path)))))
-            %standard-phases)))))))
+                (string-append "prefix = " (assoc-ref outputs "out"))))
+             #t))
+         (add-after 'install 'wrap-program
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Make sure 'solfege' runs with the correct PYTHONPATH.
+             (let* ((out (assoc-ref outputs "out"))
+                    (path (getenv "PYTHONPATH")))
+               (wrap-program (string-append out "/bin/solfege")
+                 `("PYTHONPATH" ":" prefix (,path))))
+             #t)))))
     (inputs
      `(("python" ,python-2)
        ("pygtk" ,python2-pygtk)
diff --git a/gnu/packages/noweb.scm b/gnu/packages/noweb.scm
index be90e2dc6..0954e7995 100644
--- a/gnu/packages/noweb.scm
+++ b/gnu/packages/noweb.scm
@@ -35,47 +35,46 @@
                "10hdd6mrk26kyh4bnng4ah5h1pnanhsrhqa7qwqy6dyv3rng44y9"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'install 'pre-install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let ((out (assoc-ref outputs "out")))
-                     (mkdir-p (string-append out "/share/texmf/tex/latex"))
-                     #t))
-                 (alist-cons-after
-                  'install 'post-install
-                  (lambda* (#:key outputs inputs #:allow-other-keys)
-                    (let ((out (assoc-ref outputs "out"))
-                          (cu  (assoc-ref inputs "coreutils"))
-                          (du  (assoc-ref inputs "diffutils")))
-                      (with-directory-excursion out
-                        (for-each (lambda (prog)
-                                    (substitute* prog
-                                      (("nawk") (which "awk"))))
-                                  (append (map (lambda (x)
-                                                 (string-append "bin/" x))
-                                               '("noweb" "nountangle"
-                                                 "noroots" "noroff"
-                                                 "noindex"))
-                                          (map (lambda (x)
-                                                 (string-append "lib/" x))
-                                               '("btdefn" "emptydefn" "noidx"
-                                                 "pipedocs" "toascii" "tohtml"
-                                                 "toroff" "totex" "unmarkup"))))
-                        (substitute* "bin/cpif"
-                          (("^PATH=.*$")
-                           (string-append "PATH=" cu "/bin:" du "/bin\n"))))
-                      #t))
-                  (alist-replace
-                   'configure
-                   (lambda _
-                     ;; Jump in the source.
-                     (chdir "src")
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'pre-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/share/texmf/tex/latex"))
+               #t)))
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (cu  (assoc-ref inputs "coreutils"))
+                   (du  (assoc-ref inputs "diffutils")))
+               (with-directory-excursion out
+                 (for-each (lambda (prog)
+                             (substitute* prog
+                               (("nawk") (which "awk"))))
+                           (append (map (lambda (x)
+                                          (string-append "bin/" x))
+                                        '("noweb" "nountangle"
+                                          "noroots" "noroff"
+                                          "noindex"))
+                                   (map (lambda (x)
+                                          (string-append "lib/" x))
+                                        '("btdefn" "emptydefn" "noidx"
+                                          "pipedocs" "toascii" "tohtml"
+                                          "toroff" "totex" "unmarkup"))))
+                 (substitute* "bin/cpif"
+                   (("^PATH=.*$")
+                    (string-append "PATH=" cu "/bin:" du "/bin\n"))))
+               #t)))
+         (replace 'configure
+           (lambda _
+             ;; Jump in the source.
+             (chdir "src")
 
-                     ;; The makefile reads "source: FAQ", but FAQ isn't
-                     ;; available.
-                     (substitute* "Makefile"
-                       (("FAQ") "")))
-                   %standard-phases)))
+             ;; The makefile reads "source: FAQ", but FAQ isn't
+             ;; available.
+             (substitute* "Makefile"
+               (("FAQ") ""))
+             #t)))
        #:make-flags (let ((out (assoc-ref %outputs "out")))
                       (list (string-append "BIN=" out "/bin")
                             (string-append "LIB=" out "/lib")
diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index 42da56194..c8491dc05 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -53,30 +53,31 @@
     (inputs `(("perl" ,perl)))
     (arguments
      '(#:parallel-tests? #f
-       #:phases (alist-cons-before
-                 'check 'patch-test-scripts
-                 (lambda _
-                   (let ((echo (which "echo")))
-                     (substitute*
-                         (find-files "tests" "^run-test$")
-                       (("/bin/echo") echo))))
-                 (alist-cons-after
-                  'install 'wrap-program
-                  ;; Point installed scripts to the utilities they need.
-                  (lambda* (#:key inputs outputs #:allow-other-keys)
-                    (let* ((out       (assoc-ref outputs "out"))
-                           (diffutils (assoc-ref inputs "diffutils"))
-                           (sed       (assoc-ref inputs "sed"))
-                           (gawk      (assoc-ref inputs "gawk")))
-                      (for-each
-                       (lambda (prog)
-                         (wrap-program (string-append out "/bin/" prog)
-                                       `("PATH" ":" prefix
-                                         ,(map (lambda (dir)
-                                                 (string-append dir "/bin"))
-                                               (list diffutils sed gawk)))))
-                       '("dehtmldiff" "editdiff" "espdiff"))))
-                  %standard-phases))))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-test-scripts
+           (lambda _
+             (let ((echo (which "echo")))
+               (substitute*
+                   (find-files "tests" "^run-test$")
+                 (("/bin/echo") echo)))
+             #t))
+         (add-after 'install 'wrap-program
+           ;; Point installed scripts to the utilities they need.
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out       (assoc-ref outputs "out"))
+                    (diffutils (assoc-ref inputs "diffutils"))
+                    (sed       (assoc-ref inputs "sed"))
+                    (gawk      (assoc-ref inputs "gawk")))
+               (for-each
+                (lambda (prog)
+                  (wrap-program (string-append out "/bin/" prog)
+                    `("PATH" ":" prefix
+                      ,(map (lambda (dir)
+                              (string-append dir "/bin"))
+                            (list diffutils sed gawk)))))
+                '("dehtmldiff" "editdiff" "espdiff")))
+             #t)))))
     (home-page "http://cyberelk.net/tim/software/patchutils")
     (synopsis "Collection of tools for manipulating patch files")
     (description
@@ -105,39 +106,39 @@ listing the files modified by a patch.")
               ("ed" ,ed)))
     (arguments
      '(#:parallel-tests? #f
-       #:phases 
-       (alist-cons-before
-        'check 'patch-tests
-        (lambda _
-          (substitute*
-              '("test/run"
-                "test/edit.test") 
-            (("/bin/sh") (which "sh")))
-          ;; TODO: Run the mail tests once the mail feature can be supported.
-          (delete-file "test/mail.test"))
-        (alist-cons-after
-         'install 'wrap-program
-         ;; quilt's configure checks for the absolute path to the utilities it
-         ;; needs, but uses only the name when invoking them, so we need to
-         ;; make sure the quilt script can find those utilities when run.
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (let* ((out       (assoc-ref outputs "out"))
-                  (coreutils (assoc-ref inputs "coreutils"))
-                  (diffutils (assoc-ref inputs "diffutils"))
-                  (findutils (assoc-ref inputs "findutils"))
-                  (less      (assoc-ref inputs "less"))
-                  (file      (assoc-ref inputs "file"))
-                  (ed        (assoc-ref inputs "ed"))
-                  (sed       (assoc-ref inputs "sed"))
-                  (bash      (assoc-ref inputs "bash"))
-                  (grep      (assoc-ref inputs "grep")))
-             (wrap-program (string-append out "/bin/quilt")
-                           `("PATH" ":" prefix
-                             ,(map (lambda (dir)
-                                     (string-append dir "/bin"))
-                                   (list coreutils diffutils findutils
-                                         less file ed sed bash grep))))))
-         %standard-phases))))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-tests
+           (lambda _
+             (substitute*
+                 '("test/run"
+                   "test/edit.test")
+               (("/bin/sh") (which "sh")))
+             ;; TODO: Run the mail tests once the mail feature can be supported.
+             (delete-file "test/mail.test")
+             #t))
+         (add-after 'install 'wrap-program
+           ;; quilt's configure checks for the absolute path to the utilities it
+           ;; needs, but uses only the name when invoking them, so we need to
+           ;; make sure the quilt script can find those utilities when run.
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out       (assoc-ref outputs "out"))
+                    (coreutils (assoc-ref inputs "coreutils"))
+                    (diffutils (assoc-ref inputs "diffutils"))
+                    (findutils (assoc-ref inputs "findutils"))
+                    (less      (assoc-ref inputs "less"))
+                    (file      (assoc-ref inputs "file"))
+                    (ed        (assoc-ref inputs "ed"))
+                    (sed       (assoc-ref inputs "sed"))
+                    (bash      (assoc-ref inputs "bash"))
+                    (grep      (assoc-ref inputs "grep")))
+               (wrap-program (string-append out "/bin/quilt")
+                 `("PATH" ":" prefix
+                   ,(map (lambda (dir)
+                           (string-append dir "/bin"))
+                         (list coreutils diffutils findutils
+                               less file ed sed bash grep)))))
+             #t)))))
     (home-page "https://savannah.nongnu.org/projects/quilt/")
     (synopsis "Script for managing patches to software")
     (description
@@ -164,8 +165,9 @@ refreshed, and more.")
        #:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))
                           "INSTALL_DIR=/bin" "MAN_DIR=/share/man/man1")
        #:phases
-       (alist-delete 'configure
-                     (alist-delete 'build %standard-phases))))
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build))))
     (inputs
      `(("perl" ,perl)
        ("xmlto" ,xmlto)))
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 7b76955e2..20dfdafb9 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -305,23 +305,23 @@ reading and editing of existing PDF files.")
     `(#:tests? #f ; there is no check target
       #:parallel-build? #f ; build fails randomly on 8-way machines
       #:configure-flags
-        (list (string-append "--with-freetype2-includes="
-                             (assoc-ref %build-inputs "freetype")
-                             "/include/freetype2"))
+      (list (string-append "--with-freetype2-includes="
+                           (assoc-ref %build-inputs "freetype")
+                           "/include/freetype2"))
       #:phases
-       (alist-replace
-        'install
-        (lambda* (#:key outputs inputs #:allow-other-keys #:rest args)
-         (let* ((install (assoc-ref %standard-phases 'install))
-                (out (assoc-ref outputs "out"))
-                (xpdfrc (string-append out "/etc/xpdfrc"))
-                (gs-fonts (assoc-ref inputs "gs-fonts")))
-               (apply install args)
-               (substitute* xpdfrc
+      (modify-phases %standard-phases
+        (replace 'install
+          (lambda* (#:key outputs inputs #:allow-other-keys #:rest args)
+            (let* ((install (assoc-ref %standard-phases 'install))
+                   (out (assoc-ref outputs "out"))
+                   (xpdfrc (string-append out "/etc/xpdfrc"))
+                   (gs-fonts (assoc-ref inputs "gs-fonts")))
+              (apply install args)
+              (substitute* xpdfrc
                 (("/usr/local/share/ghostscript/fonts")
                  (string-append gs-fonts "/share/fonts/type1/ghostscript"))
-                (("#fontFile") "fontFile"))))
-        %standard-phases)))
+                (("#fontFile") "fontFile")))
+            #t)))))
    (synopsis "Viewer for PDF files based on the Motif toolkit")
    (description
     "Xpdf is a viewer for Portable Document Format (PDF) files.")
@@ -352,7 +352,7 @@ reading and editing of existing PDF files.")
                           "CC=gcc")
        #:tests? #f ; Package does not contain tests.
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://pwmt.org/projects/zathura-cb/")
     (synopsis "Comic book support for zathura (libarchive backend)")
     (description "The zathura-cb plugin adds comic book support to zathura
@@ -383,7 +383,7 @@ using libarchive.")
                           "CC=gcc")
        #:tests? #f ; Package does not contain tests.
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://pwmt.org/projects/zathura-ps/")
     (synopsis "PS support for zathura (libspectre backend)")
     (description "The zathura-ps plugin adds PS support to zathura
@@ -415,7 +415,7 @@ using libspectre.")
                           "CC=gcc")
        #:tests? #f ; Package does not contain tests.
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://pwmt.org/projects/zathura-djvu/")
     (synopsis "DjVu support for zathura (DjVuLibre backend)")
     (description "The zathura-djvu plugin adds DjVu support to zathura
@@ -448,7 +448,7 @@ using the DjVuLibre library.")
                           "CC=gcc")
        #:tests? #f ; Package does not include tests.
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://pwmt.org/projects/zathura-pdf-poppler/")
     (synopsis "PDF support for zathura (poppler backend)")
     (description "The zathura-pdf-poppler plugin adds PDF support to zathura
@@ -486,7 +486,7 @@ by using the poppler rendering engine.")
        #:tests? #f ; Tests fail: "Gtk cannot open display".
        #:test-target "test"
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://pwmt.org/projects/zathura/")
     (synopsis "Lightweight keyboard-driven PDF viewer")
     (description "Zathura is a customizable document viewer.  It provides a
@@ -519,14 +519,14 @@ interaction.")
      `(#:configure-flags '("-DPODOFO_BUILD_SHARED=ON"
                            "-DPODOFO_BUILD_STATIC=ON")
        #:phases
-         (alist-cons-before
-         'configure 'patch
-         (lambda* (#:key inputs #:allow-other-keys)
-           (let ((freetype (assoc-ref inputs "freetype")))
-             ;; Look for freetype include files in the correct place.
-             (substitute* "cmake/modules/FindFREETYPE.cmake"
-               (("/usr/local") freetype))))
-         %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((freetype (assoc-ref inputs "freetype")))
+               ;; Look for freetype include files in the correct place.
+               (substitute* "cmake/modules/FindFREETYPE.cmake"
+                 (("/usr/local") freetype)))
+             #t)))))
     (home-page "http://podofo.sourceforge.net")
     (synopsis "Tools to work with the PDF file format")
     (description
@@ -772,13 +772,14 @@ the PDF pages.")
                 "0bw224vb7jh0lrqaf4jgxk48xglvxs674qcpj5y0axyfbh896cfk"))))
     (build-system gnu-build-system)
     (arguments
-      '(#:phases (alist-cons-after
-                  'unpack 'patch-ldconfig
-                  (lambda _
-                   (substitute* "mk/Autoconf.mk"
-                    (("/sbin/ldconfig -p") "echo lib")) #t)
-                  (alist-delete 'configure %standard-phases))
-        #:tests? #f
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-ldconfig
+           (lambda _
+             (substitute* "mk/Autoconf.mk"
+               (("/sbin/ldconfig -p") "echo lib")) #t))
+         (delete 'configure))
+       #:tests? #f
         #:make-flags (list "CC=gcc"
                            (string-append "prefix=" (assoc-ref %outputs "out")))))
     (inputs `(("libjpeg" ,libjpeg)
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 6a59e6bf8..5248d773f 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -3060,11 +3060,11 @@ at the end of the scope.")
     (build-system perl-build-system)
     (arguments
      `(#:phases
-       (alist-cons-after
-        'unpack 'cd
-        (lambda* _
-         (chdir "List"))
-       %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'cd
+           (lambda* _
+             (chdir "List")
+             #t)))))
     (license (package-license perl))
     (synopsis "Perl extension for crawling directory trees and compiling
 lists of files")
@@ -6621,16 +6621,17 @@ contents of a file is equal to a particular string.")
          "0gmnjss0hjkyiwvgby50nl5nzv254pn7fjqqdysjil21n09nymp7"))))
     (build-system perl-build-system)
     (arguments
-     `(#:phases (alist-cons-before
-                 'check 'patch-test
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   ;; This test looks for "#!/usr/bin/perl" in some source.
-                   ;; Patch what the test looks for.
-                   (substitute* "t/source.t"
-                     (("#!/usr/bin/perl")
-                      (string-append "#!" (assoc-ref inputs "perl")
-                                     "/bin/perl"))))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-test
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; This test looks for "#!/usr/bin/perl" in some source.
+             ;; Patch what the test looks for.
+             (substitute* "t/source.t"
+               (("#!/usr/bin/perl")
+                (string-append "#!" (assoc-ref inputs "perl")
+                               "/bin/perl")))
+             #t)))))
     (home-page "http://search.cpan.org/dist/Test-Harness")
     (synopsis "Run Perl standard test scripts with statistics")
     (description "Simple test harness which allows tests to be run and results
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 7cfbe2ffb..169a876c5 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -152,13 +152,14 @@ from digital cameras.")
        ("libexif" ,libexif)
        ("libgphoto2" ,libgphoto2)))
     (arguments
-     '(#:phases (alist-cons-before
-                 'check 'pre-check
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (substitute* (find-files "tests/data" "\\.param$")
-                     (("/usr/bin/env")
-                      (which "env"))))
-                 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* (find-files "tests/data" "\\.param$")
+               (("/usr/bin/env")
+                (which "env")))
+             #t)))
 
        ;; FIXME: There are 2 test failures, most likely related to the build
        ;; environment.
diff --git a/gnu/packages/popt.scm b/gnu/packages/popt.scm
index 4978ea729..9c125dcc4 100644
--- a/gnu/packages/popt.scm
+++ b/gnu/packages/popt.scm
@@ -66,14 +66,15 @@ line syntax.")
                "1j2c61nn2n351nhj4d25mnf3vpiddcykq005w2h6kw79dwlysa77"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'configure 'patch-test
-                 (lambda _
-                   (substitute* "test-poptrc.in"
-                     (("/bin/echo") (which "echo")))
-                   (substitute* "testit.sh"   ; don't expect old libtool names
-                     (("lt-test1") "test1")))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-test
+           (lambda _
+             (substitute* "test-poptrc.in"
+               (("/bin/echo") (which "echo")))
+             (substitute* "testit.sh"   ; don't expect old libtool names
+               (("lt-test1") "test1"))
+             #t)))))
     (home-page "http://rpm5.org/files/popt/")
     (synopsis "Command line option parsing library")
     (description
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index 9de281974..e97193003 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -205,22 +205,23 @@ to @code{IOStreams}.")
        (list (string-append "--with-boost="
                             (assoc-ref %build-inputs "boost")))
        #:parallel-tests? #f             ;There appear to be race conditions
-       #:phases (alist-cons-before
-                 'check 'patch-test-files
-                 (lambda _
-                   ;; Unpatch shebangs in test input so that source-highlight
-                   ;; is still able to infer input language
-                   (substitute* '("tests/test.sh"
-                                  "tests/test2.sh"
-                                  "tests/test.tcl")
-                     (((string-append "#! *" (which "sh"))) "#!/bin/sh"))
-                   ;; Initial patching unrecoverably removes whitespace, so
-                   ;; remove it also in the comparison output.
-                   (substitute* '("tests/test.sh.html"
-                                  "tests/test2.sh.html"
-                                  "tests/test.tcl.html")
-                     (("#! */bin/sh") "#!/bin/sh")))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-test-files
+           (lambda _
+             ;; Unpatch shebangs in test input so that source-highlight
+             ;; is still able to infer input language
+             (substitute* '("tests/test.sh"
+                            "tests/test2.sh"
+                            "tests/test.tcl")
+               (((string-append "#! *" (which "sh"))) "#!/bin/sh"))
+             ;; Initial patching unrecoverably removes whitespace, so
+             ;; remove it also in the comparison output.
+             (substitute* '("tests/test.sh.html"
+                            "tests/test2.sh.html"
+                            "tests/test.tcl.html")
+               (("#! */bin/sh") "#!/bin/sh"))
+             #t)))))
     (home-page "https://www.gnu.org/software/src-highlite/")
     (synopsis "Produce a document with syntax highlighting from a source file")
     (description
@@ -292,22 +293,22 @@ highlighting.  Language definitions and color themes are customizable.")
        #:make-flags (list (string-append "prefix=" %output)
                           "INSTALL=install"
                           "all")
-       #:phases (alist-replace
-                 'configure
-                 (lambda _ (chdir "build/gcc"))
-                 (alist-cons-after
-                  'install 'install-libs
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    ;; Libraries are not installed by default
-                    (let* ((output (assoc-ref outputs "out"))
-                           (libdir (string-append output "/lib")))
-                      (begin
-                        (mkdir-p libdir)
-                        (for-each (lambda (l)
-                                    (copy-file
-                                     l (string-append libdir "/" (basename l))))
-                                  (find-files "bin" "lib*")))))
-                  %standard-phases))))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda _ (chdir "build/gcc") #t))
+         (add-after 'install 'install-libs
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Libraries are not installed by default
+             (let* ((output (assoc-ref outputs "out"))
+                    (libdir (string-append output "/lib")))
+               (begin
+                 (mkdir-p libdir)
+                 (for-each (lambda (l)
+                             (copy-file
+                              l (string-append libdir "/" (basename l))))
+                           (find-files "bin" "lib*"))))
+             #t)))))
     (home-page "http://astyle.sourceforge.net/")
     (synopsis "Source code indenter, formatter, and beautifier")
     (description
diff --git a/gnu/packages/pumpio.scm b/gnu/packages/pumpio.scm
index a74d47436..c692e6932 100644
--- a/gnu/packages/pumpio.scm
+++ b/gnu/packages/pumpio.scm
@@ -42,22 +42,22 @@
               (file-name (string-append name "-" version "-checkout"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   ;; Fix dependency tests.
-                   (substitute* "pumpa.pro"
-                     (("/usr/include/tidy\\.h")
-                      (string-append (assoc-ref inputs "tidy")
-                                     "/include/tidy.h"))
-                     (("/usr/include/aspell.h")
-                      (string-append (assoc-ref inputs "aspell")
-                                     "/include/aspell.h")))
-                   ;; Run qmake with proper installation prefix.
-                   (let ((prefix (string-append "PREFIX="
-                                                (assoc-ref outputs "out"))))
-                     (zero? (system* "qmake" prefix))))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Fix dependency tests.
+             (substitute* "pumpa.pro"
+               (("/usr/include/tidy\\.h")
+                (string-append (assoc-ref inputs "tidy")
+                               "/include/tidy.h"))
+               (("/usr/include/aspell.h")
+                (string-append (assoc-ref inputs "aspell")
+                               "/include/aspell.h")))
+             ;; Run qmake with proper installation prefix.
+             (let ((prefix (string-append "PREFIX="
+                                          (assoc-ref outputs "out"))))
+               (zero? (system* "qmake" prefix))))))))
     (inputs
      `(("aspell" ,aspell)
        ("qtbase" ,qtbase)
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 2b3820221..3d6a78356 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -480,11 +480,10 @@ pidof, tty, taskset, pmap.")
      `(("python-py-bcrypt" ,python-py-bcrypt)))
     (arguments
      `(#:phases
-       (alist-cons-before
-        'check 'set-PYTHON_EGG_CACHE
-        ;; some tests require access to "$HOME/.cython"
-        (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp"))
-         %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'check 'set-PYTHON_EGG_CACHE
+           ;; some tests require access to "$HOME/.cython"
+           (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t)))))
     (home-page "https://bitbucket.org/ecollins/passlib")
     (synopsis
      "Comprehensive password hashing framework")
@@ -1074,12 +1073,12 @@ multiple Unicode code points, e.g. \"G\" + acute-accent)
        ("gmp" ,gmp)))
     (arguments
      `(#:phases
-       (alist-cons-before
-        'build 'set-build-env
-        ;; pycrypto runs an autoconf configure script behind the scenes
-        (lambda _
-          (setenv "CONFIG_SHELL" (which "bash")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'build 'set-build-env
+           ;; pycrypto runs an autoconf configure script behind the scenes
+           (lambda _
+             (setenv "CONFIG_SHELL" (which "bash"))
+             #t)))))
     (home-page "http://www.pycrypto.org/")
     (synopsis "Cryptographic modules for Python")
     (description
@@ -1464,11 +1463,11 @@ other Python program.")
     (build-system python-build-system)
     (arguments
      `(#:python ,python-2
-       #:phases (alist-replace
-                 'check
-                 (lambda _
-                   (zero? (system* "./test.sh")))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (zero? (system* "./test.sh")))))))
     (home-page "http://www.alcyone.com/software/empy/")
     (synopsis "Templating system for Python")
     (description
@@ -4532,10 +4531,10 @@ as the original project seems to have been abandoned circa 2007.")
        ("python-pytest" ,python-pytest)
        ("python-mock"   ,python-mock))) ;for tests
     (arguments
-     `(#:phases (alist-replace
-                 'check
-                 (lambda _ (zero? (system* "py.test")))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _ (zero? (system* "py.test")))))))
     (home-page "http://www.sqlalchemy.org")
     (synopsis "Database abstraction library")
     (description
@@ -8312,10 +8311,10 @@ automatically detect a wide range of file encodings.")
     (native-inputs
      `(("python-pytest" ,python-pytest)))
     (arguments
-     `(#:phases (alist-replace
-                 'check
-                 (lambda _ (zero? (system* "py.test")))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _ (zero? (system* "py.test")))))))
     (home-page "http://docopt.org")
     (synopsis "Command-line interface description language for Python")
     (description "This library allows the user to define a command-line
diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm
index 6b5cfb013..2ccfc2cec 100644
--- a/gnu/packages/rdf.scm
+++ b/gnu/packages/rdf.scm
@@ -127,26 +127,26 @@ Java Lucene text search engine API to C++.")
                 "18p2flb2sv2hq6w2qkd29z9c7knnwqr3f12i2srshlzx6vwkm05s"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-after
-                 'remove-out-of-tree-references 'autoreconf
-                 (lambda _
-                   (zero? (system* "autoreconf" "-vfi")))
-                 (alist-cons-after
-                  'unpack 'remove-out-of-tree-references
-                  (lambda _
-                    ;; remove symlinks to files in /usr/
-                    (delete-file-recursively "m4")
-                    (for-each delete-file '("config.guess"
-                                            "config.sub"
-                                            "depcomp"
-                                            "install-sh"
-                                            "ltmain.sh"
-                                            "missing"))
-                    ;; remove_test depends on an out-of-tree RDF file
-                    (substitute* "examples/Makefile.am"
-                      (("instances_test remove_test") "instances_test")
-                      (("\\$\\(TESTS\\) remove_test") "$(TESTS)")))
-                  %standard-phases))))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-out-of-tree-references
+           (lambda _
+             ;; remove symlinks to files in /usr/
+             (delete-file-recursively "m4")
+             (for-each delete-file '("config.guess"
+                                     "config.sub"
+                                     "depcomp"
+                                     "install-sh"
+                                     "ltmain.sh"
+                                     "missing"))
+             ;; remove_test depends on an out-of-tree RDF file
+             (substitute* "examples/Makefile.am"
+               (("instances_test remove_test") "instances_test")
+               (("\\$\\(TESTS\\) remove_test") "$(TESTS)"))
+             #t))
+         (add-after 'remove-out-of-tree-references 'autoreconf
+           (lambda _
+             (zero? (system* "autoreconf" "-vfi")))))))
     (inputs
      `(("raptor" ,raptor2)
        ("cyrus-sasl" ,cyrus-sasl)
diff --git a/gnu/packages/regex.scm b/gnu/packages/regex.scm
index 275912b9d..2b0e22ee2 100644
--- a/gnu/packages/regex.scm
+++ b/gnu/packages/regex.scm
@@ -85,16 +85,16 @@ Python.  It is a C++ library.")
                 "0n36cgqys59r2gmb7jzbqiwsy790v8nbxk82d2n2saz0rp145ild"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases (alist-cons-before
-                 'check 'install-locales
-                 (lambda _
-                   ;; The tests require the availability of the
-                   ;; 'en_US.ISO-8859-1' locale.
-                   (setenv "LOCPATH" (getcwd))
-                   (zero? (system* "localedef" "--no-archive"
-                                   "--prefix" (getcwd) "-i" "en_US"
-                                   "-f" "ISO-8859-1" "./en_US.ISO-8859-1")))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'install-locales
+           (lambda _
+             ;; The tests require the availability of the
+             ;; 'en_US.ISO-8859-1' locale.
+             (setenv "LOCPATH" (getcwd))
+             (zero? (system* "localedef" "--no-archive"
+                             "--prefix" (getcwd) "-i" "en_US"
+                             "-f" "ISO-8859-1" "./en_US.ISO-8859-1")))))))
     (synopsis "Approximate regex matching library and agrep utility")
     (description "Superset of the POSIX regex API, enabling approximate
 matching.  Also ships a version of the agrep utility which behaves similar to
diff --git a/gnu/packages/rrdtool.scm b/gnu/packages/rrdtool.scm
index a07d70537..fbb6a3403 100644
--- a/gnu/packages/rrdtool.scm
+++ b/gnu/packages/rrdtool.scm
@@ -53,15 +53,16 @@
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("groff" ,groff)))
     (arguments
-     '(#:phases (alist-cons-before
-                 'configure 'pre-configure
-                 (lambda _
-                   (substitute* "libtool"
-                     (("/bin/sed") (which "sed")))
-                   (substitute* "src/Makefile.in"
-                     (("^rrdcached_LDADD = librrd_th.la")
-                      "rrdcached_LDADD = librrd_th.la -lglib-2.0")))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda _
+             (substitute* "libtool"
+               (("/bin/sed") (which "sed")))
+             (substitute* "src/Makefile.in"
+               (("^rrdcached_LDADD = librrd_th.la")
+                "rrdcached_LDADD = librrd_th.la -lglib-2.0"))
+             #t)))))
     (home-page "http://oss.oetiker.ch/rrdtool/")
     (synopsis "Time-series data storage and display system")
     (description
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 414b38c4f..7465a9a72 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -150,16 +150,16 @@ a focus on simplicity and productivity.")
      `(#:test-target "test"
        #:parallel-tests? #f
        #:phases
-        (alist-cons-before
-         'configure 'replace-bin-sh
-         (lambda _
-           (substitute* '("Makefile.in"
-                          "ext/pty/pty.c"
-                          "io.c"
-                          "lib/mkmf.rb"
-                          "process.c")
-             (("/bin/sh") (which "sh"))))
-         %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'replace-bin-sh
+           (lambda _
+             (substitute* '("Makefile.in"
+                            "ext/pty/pty.c"
+                            "io.c"
+                            "lib/mkmf.rb"
+                            "process.c")
+               (("/bin/sh") (which "sh")))
+             #t)))))
     (native-search-paths
      (list (search-path-specification
             (variable "GEM_PATH")
@@ -184,16 +184,16 @@ a focus on simplicity and productivity.")
      `(#:test-target "test"
        #:parallel-tests? #f
        #:phases
-        (alist-cons-before
-         'configure 'replace-bin-sh
-         (lambda _
-           (substitute* '("Makefile.in"
-                          "ext/pty/pty.c"
-                          "io.c"
-                          "lib/mkmf.rb"
-                          "process.c")
-             (("/bin/sh") (which "sh"))))
-         %standard-phases)))))
+       (modify-phases %standard-phases
+         (add-before 'configure 'replace-bin-sh
+           (lambda _
+             (substitute* '("Makefile.in"
+                            "ext/pty/pty.c"
+                            "io.c"
+                            "lib/mkmf.rb"
+                            "process.c")
+               (("/bin/sh") (which "sh")))
+             #t)))))))
 
 (define-public ruby-hoe
   (package
diff --git a/gnu/packages/sawfish.scm b/gnu/packages/sawfish.scm
index 535dd8eb0..ebb8c5e1f 100644
--- a/gnu/packages/sawfish.scm
+++ b/gnu/packages/sawfish.scm
@@ -138,31 +138,31 @@ backend of Sawfish.")
     (arguments
      '(#:tests? #f ; no tests
        #:phases
-       (alist-cons-before
-        'configure 'patch-exec-rep
-        (lambda _
-          (substitute* '("lisp/sawfish/cfg/main.jl.in"
-                         "scripts/sawfish-about.jl.in"
-                         "scripts/sawfish-client.jl"
-                         "scripts/sawfish-menu.jl")
-            (("exec rep") (string-append "exec " (which "rep")))))
-        (alist-cons-after
-         'install 'wrap-scripts
-         ;; Wrap scripts with REP_DL_LOAD_PATH for finding rep-gtk
-         ;; and sawfish.client.
-         (lambda* (#:key outputs #:allow-other-keys)
-           (define (wrap-script script)
-             (let ((out (assoc-ref outputs "out")))
-               (wrap-program (string-append out script)
-                             `("REP_DL_LOAD_PATH" =
-                               ,(list (getenv "REP_DL_LOAD_PATH")
-                                      (string-append out "/lib/rep"))))))
-           (for-each wrap-script
-                     (list "/bin/sawfish-about"
-                           "/bin/sawfish-client"
-                           "/bin/sawfish-config"
-                           "/lib/sawfish/sawfish-menu")))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-exec-rep
+           (lambda _
+             (substitute* '("lisp/sawfish/cfg/main.jl.in"
+                            "scripts/sawfish-about.jl.in"
+                            "scripts/sawfish-client.jl"
+                            "scripts/sawfish-menu.jl")
+               (("exec rep") (string-append "exec " (which "rep"))))
+             #t))
+         (add-after 'install 'wrap-scripts
+           ;; Wrap scripts with REP_DL_LOAD_PATH for finding rep-gtk
+           ;; and sawfish.client.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (define (wrap-script script)
+               (let ((out (assoc-ref outputs "out")))
+                 (wrap-program (string-append out script)
+                   `("REP_DL_LOAD_PATH" =
+                     ,(list (getenv "REP_DL_LOAD_PATH")
+                            (string-append out "/lib/rep"))))))
+             (for-each wrap-script
+                       (list "/bin/sawfish-about"
+                             "/bin/sawfish-client"
+                             "/bin/sawfish-config"
+                             "/lib/sawfish/sawfish-menu"))
+             #t)))))
     (native-inputs
      `(("gettext"     ,gettext-minimal)
        ("makeinfo"    ,texinfo)
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 161138285..bafc3da33 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -417,73 +417,73 @@ implementation techniques and as an expository tool.")
     (build-system gnu-build-system)
     (arguments
      '(#:phases
-       (alist-cons-before
-        'configure 'pre-configure
-        (lambda* (#:key inputs #:allow-other-keys)
-          ;; Patch dynamically loaded libraries with their absolute paths.
-          (let* ((library-path   (search-path-as-string->list
-                                  (getenv "LIBRARY_PATH")))
-                 (find-so        (lambda (soname)
-                                   (search-path
-                                    library-path
-                                    (format #f "~a.so" soname))))
-                 (patch-ffi-libs (lambda (file libs)
-                                   (for-each
-                                    (lambda (lib)
-                                      (substitute* file
-                                        (((format #f "\"~a\"" lib))
-                                         (format #f "\"~a\"" (find-so lib)))))
-                                    libs))))
-            (substitute* "collects/db/private/sqlite3/ffi.rkt"
-              (("ffi-lib sqlite-so")
-               (format #f "ffi-lib \"~a\"" (find-so "libsqlite3"))))
-            (substitute* "collects/openssl/libssl.rkt"
-              (("ffi-lib libssl-so")
-               (format #f "ffi-lib \"~a\"" (find-so "libssl"))))
-            (substitute* "collects/openssl/libcrypto.rkt"
-              (("ffi-lib libcrypto-so")
-               (format #f "ffi-lib \"~a\"" (find-so "libcrypto"))))
-            (substitute* "share/pkgs/math-lib/math/private/bigfloat/gmp.rkt"
-              (("ffi-lib libgmp-so")
-               (format #f "ffi-lib \"~a\"" (find-so "libgmp"))))
-            (substitute* "share/pkgs/math-lib/math/private/bigfloat/mpfr.rkt"
-              (("ffi-lib libmpfr-so")
-               (format #f "ffi-lib \"~a\"" (find-so "libmpfr"))))
-            (for-each
-             (lambda (x) (apply patch-ffi-libs x))
-             '(("share/pkgs/draw-lib/racket/draw/unsafe/cairo-lib.rkt"
-                ("libfontconfig" "libcairo"))
-               ("share/pkgs/draw-lib/racket/draw/unsafe/glib.rkt"
-                ("libglib-2.0" "libgmodule-2.0" "libgobject-2.0"))
-               ("share/pkgs/draw-lib/racket/draw/unsafe/jpeg.rkt"
-                ("libjpeg"))
-               ("share/pkgs/draw-lib/racket/draw/unsafe/pango.rkt"
-                ("libpango-1.0" "libpangocairo-1.0"))
-               ("share/pkgs/draw-lib/racket/draw/unsafe/png.rkt"
-                ("libpng"))
-               ("share/pkgs/db-lib/db/private/odbc/ffi.rkt"
-                ("libodbc"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/x11.rkt"
-                ("libX11"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/gsettings.rkt"
-                ("libgio-2.0"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/gtk3.rkt"
-                ("libgdk-3" "libgtk-3"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/unique.rkt"
-                ("libunique-1.0"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/utils.rkt"
-                ("libgdk-x11-2.0" "libgdk_pixbuf-2.0" "libgtk-x11-2.0"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/gl-context.rkt"
-                ("libGL"))
-               ("share/pkgs/sgl/gl.rkt"
-                ("libGL" "libGLU")))))
-          (chdir "src"))
-        (alist-cons-after
-         'unpack 'patch-/bin/sh
-         (lambda _
-           (substitute* "collects/racket/system.rkt"
-             (("/bin/sh") (which "sh"))))
-         %standard-phases))
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Patch dynamically loaded libraries with their absolute paths.
+             (let* ((library-path   (search-path-as-string->list
+                                     (getenv "LIBRARY_PATH")))
+                    (find-so        (lambda (soname)
+                                      (search-path
+                                       library-path
+                                       (format #f "~a.so" soname))))
+                    (patch-ffi-libs (lambda (file libs)
+                                      (for-each
+                                       (lambda (lib)
+                                         (substitute* file
+                                           (((format #f "\"~a\"" lib))
+                                            (format #f "\"~a\"" (find-so lib)))))
+                                       libs))))
+               (substitute* "collects/db/private/sqlite3/ffi.rkt"
+                 (("ffi-lib sqlite-so")
+                  (format #f "ffi-lib \"~a\"" (find-so "libsqlite3"))))
+               (substitute* "collects/openssl/libssl.rkt"
+                 (("ffi-lib libssl-so")
+                  (format #f "ffi-lib \"~a\"" (find-so "libssl"))))
+               (substitute* "collects/openssl/libcrypto.rkt"
+                 (("ffi-lib libcrypto-so")
+                  (format #f "ffi-lib \"~a\"" (find-so "libcrypto"))))
+               (substitute* "share/pkgs/math-lib/math/private/bigfloat/gmp.rkt"
+                 (("ffi-lib libgmp-so")
+                  (format #f "ffi-lib \"~a\"" (find-so "libgmp"))))
+               (substitute* "share/pkgs/math-lib/math/private/bigfloat/mpfr.rkt"
+                 (("ffi-lib libmpfr-so")
+                  (format #f "ffi-lib \"~a\"" (find-so "libmpfr"))))
+               (for-each
+                (lambda (x) (apply patch-ffi-libs x))
+                '(("share/pkgs/draw-lib/racket/draw/unsafe/cairo-lib.rkt"
+                   ("libfontconfig" "libcairo"))
+                  ("share/pkgs/draw-lib/racket/draw/unsafe/glib.rkt"
+                   ("libglib-2.0" "libgmodule-2.0" "libgobject-2.0"))
+                  ("share/pkgs/draw-lib/racket/draw/unsafe/jpeg.rkt"
+                   ("libjpeg"))
+                  ("share/pkgs/draw-lib/racket/draw/unsafe/pango.rkt"
+                   ("libpango-1.0" "libpangocairo-1.0"))
+                  ("share/pkgs/draw-lib/racket/draw/unsafe/png.rkt"
+                   ("libpng"))
+                  ("share/pkgs/db-lib/db/private/odbc/ffi.rkt"
+                   ("libodbc"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/x11.rkt"
+                   ("libX11"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/gsettings.rkt"
+                   ("libgio-2.0"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/gtk3.rkt"
+                   ("libgdk-3" "libgtk-3"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/unique.rkt"
+                   ("libunique-1.0"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/utils.rkt"
+                   ("libgdk-x11-2.0" "libgdk_pixbuf-2.0" "libgtk-x11-2.0"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/gl-context.rkt"
+                   ("libGL"))
+                  ("share/pkgs/sgl/gl.rkt"
+                   ("libGL" "libGLU")))))
+             (chdir "src")
+             #t))
+         (add-after 'unpack 'patch-/bin/sh
+           (lambda _
+             (substitute* "collects/racket/system.rkt"
+               (("/bin/sh") (which "sh")))
+             #t)))
        #:tests? #f                                ; XXX: how to run them?
        ))
     (inputs
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index 9e2d81f18..c1a6144ac 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -400,30 +400,30 @@ directory.")
                             (assoc-ref %build-inputs "sdl-union")))
        #:parallel-build? #f ; parallel build fails
        #:phases
-       (alist-cons-before
-        'configure 'fix-env-and-patch
-        (lambda* (#:key inputs #:allow-other-keys)
-          (setenv "GUILE_AUTO_COMPILE" "0")
-          ;; SDL_image needs to dlopen libjpeg in the test suite.
-          (setenv "LD_LIBRARY_PATH"
-                  (string-append (assoc-ref inputs "libjpeg") "/lib"))
-          ;; Change the site directory /site/2.0 like Guile expects.
-          (substitute* "build-aux/guile-baux/re-prefixed-site-dirs"
-            (("\"/site\"") "\"/site/2.0\""))
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-env-and-patch
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "GUILE_AUTO_COMPILE" "0")
+             ;; SDL_image needs to dlopen libjpeg in the test suite.
+             (setenv "LD_LIBRARY_PATH"
+                     (string-append (assoc-ref inputs "libjpeg") "/lib"))
+             ;; Change the site directory /site/2.0 like Guile expects.
+             (substitute* "build-aux/guile-baux/re-prefixed-site-dirs"
+               (("\"/site\"") "\"/site/2.0\""))
 
-          ;; Skip tests that rely on sound support, which is unavailable in
-          ;; the build environment.
-          (substitute* "test/Makefile.in"
-            (("HAVE_MIXER = .*$")
-             "HAVE_MIXER = 0\n")))
-        (alist-cons-before
-         'check 'start-xorg-server
-         (lambda* (#:key inputs #:allow-other-keys)
-           ;; The test suite requires a running X server.
-           (system (format #f "~a/bin/Xvfb :1 &"
-                           (assoc-ref inputs "xorg-server")))
-           (setenv "DISPLAY" ":1"))
-         %standard-phases))))
+             ;; Skip tests that rely on sound support, which is unavailable in
+             ;; the build environment.
+             (substitute* "test/Makefile.in"
+               (("HAVE_MIXER = .*$")
+                "HAVE_MIXER = 0\n"))
+             #t))
+         (add-before 'check 'start-xorg-server
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; The test suite requires a running X server.
+             (system (format #f "~a/bin/Xvfb :1 &"
+                             (assoc-ref inputs "xorg-server")))
+             (setenv "DISPLAY" ":1")
+             #t)))))
     (synopsis "Guile interface for SDL (Simple DirectMedia Layer)")
     (description "Guile-SDL is a set of bindings to the Simple DirectMedia
 Layer (SDL).  With them, Guile programmers can have easy access to graphics,
diff --git a/gnu/packages/serveez.scm b/gnu/packages/serveez.scm
index 974db8611..871fb00d3 100644
--- a/gnu/packages/serveez.scm
+++ b/gnu/packages/serveez.scm
@@ -40,13 +40,14 @@
     (inputs `(("guile" ,guile-2.0)))
     (arguments
      `(#:configure-flags '("--enable-libserveez-install")
-       #:phases (alist-cons-before
-                 'patch-source-shebangs 'patch-test-source
-                 (lambda _
-                   (substitute*
-                       (find-files "test" "^t[0-9]{3}$")
-                     (("/bin/sh") (which "sh"))))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'patch-source-shebangs 'patch-test-source
+           (lambda _
+             (substitute*
+                 (find-files "test" "^t[0-9]{3}$")
+               (("/bin/sh") (which "sh")))
+             #t)))))
     (home-page "https://www.gnu.org/software/serveez/")
     (synopsis "Framework for implementing IP-based servers")
     (description
diff --git a/gnu/packages/skribilo.scm b/gnu/packages/skribilo.scm
index 458d91e56..87dc3558d 100644
--- a/gnu/packages/skribilo.scm
+++ b/gnu/packages/skribilo.scm
@@ -46,20 +46,21 @@
                                               (assoc-ref %outputs "out")
                                               "/share/guile/site/2.0"))
 
-       #:phases (alist-cons-before
-                 'configure 'pre-configure
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   ;; Make sure the 'skribilo' command gets to see
-                   ;; Guile-Reader, even if Guile-Reader is not in the search
-                   ;; path.
-                   (let ((reader (assoc-ref inputs "guile-reader")))
-                     (substitute* "src/skribilo.in"
-                       (("^exec (.*) -c" _ things)
-                        (string-append "exec " things
-                                       " -L " reader "/share/guile/site/2.0"
-                                       " -C " reader "/share/guile/site/2.0"
-                                       " -c")))))
-                 %standard-phases)
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Make sure the 'skribilo' command gets to see
+             ;; Guile-Reader, even if Guile-Reader is not in the search
+             ;; path.
+             (let ((reader (assoc-ref inputs "guile-reader")))
+               (substitute* "src/skribilo.in"
+                 (("^exec (.*) -c" _ things)
+                  (string-append "exec " things
+                                 " -L " reader "/share/guile/site/2.0"
+                                 " -C " reader "/share/guile/site/2.0"
+                                 " -c"))))
+             #t)))
 
        #:parallel-build? #f))
 
diff --git a/gnu/packages/smalltalk.scm b/gnu/packages/smalltalk.scm
index f4a50ded2..a0d6c86df 100644
--- a/gnu/packages/smalltalk.scm
+++ b/gnu/packages/smalltalk.scm
@@ -60,14 +60,15 @@
     (inputs
      `(("zip" ,zip)))
     (arguments
-     `(#:phases (alist-cons-before
-                 'configure 'fix-libc
-                 (lambda _
-                   (let ((libc (assoc-ref %build-inputs "libc")))
-                     (substitute* "libc.la.in"
-                       (("@LIBC_SO_NAME@") "libc.so")
-                       (("@LIBC_SO_DIR@")  (string-append libc "/lib")))))
-                %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-libc
+           (lambda _
+             (let ((libc (assoc-ref %build-inputs "libc")))
+               (substitute* "libc.la.in"
+                 (("@LIBC_SO_NAME@") "libc.so")
+                 (("@LIBC_SO_DIR@")  (string-append libc "/lib"))))
+             #t)))))
     (home-page "http://smalltalk.gnu.org/")
     (synopsis "Smalltalk environment")
     (description
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index 1d3d1d367..15f475510 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -154,7 +154,7 @@ optimising the environment for the application in use and the task performed.")
                                          (assoc-ref %build-inputs "freetype")
                                          "/include/freetype2"))
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("freetype" ,freetype)
        ("libxft" ,libxft)
@@ -211,7 +211,7 @@ numbers of user-defined menu items efficiently.")
      '(#:tests? #f ; no tests
        #:make-flags (list "CC=gcc"
                           (string-append "PREFIX=" %output))
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("libx11" ,libx11)
        ("libxext" ,libxext)
diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm
index de888891c..3f7deb71d 100644
--- a/gnu/packages/tcl.scm
+++ b/gnu/packages/tcl.scm
@@ -114,13 +114,14 @@
                (string-append "--exec-prefix=" out)
                (string-append "--mandir=" out "/share/man")))
 
-       #:phases (alist-cons-before
-                 'configure 'set-path-to-stty
-                 (lambda _
-                   (substitute* "configure"
-                     (("STTY_BIN=/bin/stty")
-                      (string-append "STTY_BIN=" (which "stty")))))
-                 %standard-phases)
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'set-path-to-stty
+           (lambda _
+             (substitute* "configure"
+               (("STTY_BIN=/bin/stty")
+                (string-append "STTY_BIN=" (which "stty"))))
+             #t)))
 
        #:test-target "test"))
     (home-page "http://expect.nist.gov/")
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index c3bf20360..5207bd241 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -56,12 +56,12 @@
                      "0kmgr5w3b1qwzxnsnw94q6rqs0hr8nbv9clf07ca2a2fyypx9kjk"))))
     (arguments
      `(#:phases
-       (alist-cons-before
-        'configure 'pre-configure
-        (lambda _
-          (substitute* "src/applog.cpp"
-            (("^// TODO sc.*") "#include <sys/types.h>\n#include <sys/stat.h>\n")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda _
+             (substitute* "src/applog.cpp"
+               (("^// TODO sc.*") "#include <sys/types.h>\n#include <sys/stat.h>\n"))
+             #t)))))
    (build-system gnu-build-system)
    (synopsis "(u)Common C++ framework for threaded applications")
    (description "GNU Common C++ is an portable, optimized class framework for
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index e8ae30cd6..479527a5f 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -96,15 +96,15 @@ to DOS format and vice versa.")
     (native-inputs `(("python" ,python-2)))
     (arguments
      '(#:phases
-       (alist-cons-before
-        'check 'pre-check
-        (lambda _
-          (substitute* "tests/setup.py"
-            (("([[:space:]]*)include_dirs=.*" all space)
-             (string-append all space "library_dirs=['../src/.libs'],\n")))
-          ;; The test extension 'Recode.so' lacks RUNPATH for 'librecode.so'.
-          (setenv "LD_LIBRARY_PATH" (string-append (getcwd) "/src/.libs")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda _
+             (substitute* "tests/setup.py"
+               (("([[:space:]]*)include_dirs=.*" all space)
+                (string-append all space "library_dirs=['../src/.libs'],\n")))
+             ;; The test extension 'Recode.so' lacks RUNPATH for 'librecode.so'.
+             (setenv "LD_LIBRARY_PATH" (string-append (getcwd) "/src/.libs"))
+             #t)))))
     (home-page "https://github.com/pinard/Recode")
     (synopsis "Text encoding converter")
     (description "The Recode library converts files between character sets and
@@ -207,10 +207,9 @@ encoding, supporting Unicode version 9.0.0.")
     (build-system gnu-build-system)
     (arguments
      '(#:phases
-       (alist-cons-after
-        'unpack 'autoreconf
-        (lambda _ (zero? (system* "autoreconf" "-vif")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autoreconf
+           (lambda _ (zero? (system* "autoreconf" "-vif")))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm
index ba54d1d00..b90606ca7 100644
--- a/gnu/packages/time.scm
+++ b/gnu/packages/time.scm
@@ -38,16 +38,15 @@
     (build-system gnu-build-system)
     (arguments
      '(#:phases
-       (alist-replace 'configure
-                      (lambda* (#:key outputs #:allow-other-keys)
-                        ;; This old `configure' script doesn't support
-                        ;; variables passed as arguments.
-                        (let ((out (assoc-ref outputs "out")))
-                          (setenv "CONFIG_SHELL" (which "bash"))
-                          (zero?
-                           (system* "./configure"
-                                    (string-append "--prefix=" out)))))
-                      %standard-phases)))
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; This old `configure' script doesn't support
+             ;; variables passed as arguments.
+             (let ((out (assoc-ref outputs "out")))
+               (setenv "CONFIG_SHELL" (which "bash"))
+               (zero?
+                (system* "./configure" (string-append "--prefix=" out)))))))))
     (home-page "https://www.gnu.org/software/time/")
     (synopsis "Run a command, then display its resource usage")
     (description
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 1d5a1f161..93db56e26 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -134,13 +134,13 @@ rejects UDP traffic from the application you're using.")
        #:configure-flags (list (string-append "--sysconfdir="
                                               (assoc-ref %outputs "out")
                                               "/etc/privoxy"))
-       #:phases (alist-cons-after
-                 'unpack 'autoconf
-                 (lambda _
-                   ;; Unfortunately, this is not a tarball produced by
-                   ;; "make dist".
-                   (zero? (system* "autoreconf" "-vfi")))
-                 %standard-phases)
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autoconf
+           (lambda _
+             ;; Unfortunately, this is not a tarball produced by
+             ;; "make dist".
+             (zero? (system* "autoreconf" "-vfi")))))
        #:tests? #f))
     (inputs
      `(("w3m" ,w3m)
diff --git a/gnu/packages/uucp.scm b/gnu/packages/uucp.scm
index 7bfe76365..f5d9c7005 100644
--- a/gnu/packages/uucp.scm
+++ b/gnu/packages/uucp.scm
@@ -35,18 +35,18 @@
                 "0b5nhl9vvif1w3wdipjsk8ckw49jj1w85xw1mmqi3zbcpazia306"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; The old 'configure' script doesn't support the arguments
-                   ;; that we pass by default.
-                   (setenv "CONFIG_SHELL" (which "sh"))
-                   (let ((out (assoc-ref outputs "out")))
-                     (zero? (system* "./configure"
-                                     (string-append "--prefix=" out)
-                                     (string-append "--infodir=" out
-                                                    "/share/info")))))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; The old 'configure' script doesn't support the arguments
+             ;; that we pass by default.
+             (setenv "CONFIG_SHELL" (which "sh"))
+             (let ((out (assoc-ref outputs "out")))
+               (zero? (system* "./configure"
+                               (string-append "--prefix=" out)
+                               (string-append "--infodir=" out
+                                              "/share/info")))))))))
     (home-page "https://www.gnu.org/software/uucp/uucp.html")
     (synopsis "UUCP protocol implementation")
     (description
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 0a551c74f..19a5e24ed 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1405,11 +1405,10 @@ encapsulated.")
        ("libtool" ,libtool)))
     (arguments
      '(#:phases
-       (alist-cons-after
-        'unpack 'autoreconf
-        (lambda _
-          (zero? (system* "autoreconf" "-vif")))
-        %standard-phases)))))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autoreconf
+           (lambda _
+             (zero? (system* "autoreconf" "-vif")))))))))
 
 (define-public libdvdcss
   (package
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index b5fb39b95..df3fbd728 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -165,11 +165,11 @@ features including, tables, builtin image display, bookmarks, SSL and more.")
            "--enable-nls"
            "--enable-ipv6"))
        #:tests? #f  ; no check target
-       #:phases (alist-replace
-                 'install
-                 (lambda* (#:key (make-flags '()) #:allow-other-keys)
-                   (zero? (apply system* "make" "install-full" make-flags)))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key (make-flags '()) #:allow-other-keys)
+             (zero? (apply system* "make" "install-full" make-flags)))))))
     (synopsis "Text Web Browser")
     (description
      "Lynx is a fully-featured World Wide Web (WWW) client for users running
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 66183273e..6b4dbadb7 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -632,14 +632,13 @@ used to validate and fix HTML data.")
         ;; For the log file, etc.
         "--localstatedir=/var")
        #:phases
-       (alist-cons-before
-        'build 'pre-build
-        (lambda* (#:key inputs #:allow-other-keys #:rest args)
-          ;; Uncommenting the next two lines may assist in debugging
-          ;; (substitute* "docs/man5/Makefile" (("a2x") "a2x -v"))
-          ;; (setenv "XML_DEBUG_CATALOG" "1")
-          #t)
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'build 'pre-build
+           (lambda* (#:key inputs #:allow-other-keys #:rest args)
+             ;; Uncommenting the next two lines may assist in debugging
+             ;; (substitute* "docs/man5/Makefile" (("a2x") "a2x -v"))
+             ;; (setenv "XML_DEBUG_CATALOG" "1")
+             #t)))))
     ;; All of the below are used to generate the documentation
     ;; (Should they be propagated inputs of asciidoc ??)
     (native-inputs `(("asciidoc" ,asciidoc)))
diff --git a/gnu/packages/wicd.scm b/gnu/packages/wicd.scm
index 9de956c6f..4b03c07bc 100644
--- a/gnu/packages/wicd.scm
+++ b/gnu/packages/wicd.scm
@@ -71,123 +71,121 @@
        ;; we can't easily make setup.py use setuptools.
        #:use-setuptools? #f
        #:phases
-       (alist-cons-before
-        'build 'configure
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out"))
-                (python (assoc-ref inputs "python")))
-            (define (which* cmd)
-              (cond ((string=? cmd "ping")
-                     "/run/setuid-programs/ping")
-                    ((which cmd)
-                     => identity)
-                    (else
-                     (format (current-error-port)
-                             "WARNING: Unable to find absolute path for ~s~%"
-                             cmd)
-                     #f)))
-            (substitute* "setup.py"
-              ;; The handling of unrecognized distros in setup.py is
-              ;; broken.  Work around the problem.
-              (("\\('init=', " all)
-               (string-append "#" all))
-              ;; Inhibit attempts to install in /var or /etc.
-              (("\\(wpath\\.(log|etc|networks|.*scripts), " all)
-               (string-append "#" all)))
+       (modify-phases %standard-phases
+         (add-before 'build 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (python (assoc-ref inputs "python")))
+               (define (which* cmd)
+                 (cond ((string=? cmd "ping")
+                        "/run/setuid-programs/ping")
+                       ((which cmd)
+                        => identity)
+                       (else
+                        (format (current-error-port)
+                                "WARNING: Unable to find absolute path for ~s~%"
+                                cmd)
+                        #f)))
+               (substitute* "setup.py"
+                 ;; The handling of unrecognized distros in setup.py is
+                 ;; broken.  Work around the problem.
+                 (("\\('init=', " all)
+                  (string-append "#" all))
+                 ;; Inhibit attempts to install in /var or /etc.
+                 (("\\(wpath\\.(log|etc|networks|.*scripts), " all)
+                  (string-append "#" all)))
 
-            ;; Patch references to subprograms with absolute pathnames.
-            (substitute* "wicd/wnettools.py"
-              (("(misc\\.Run\\(\\[?[\"'])([^\"' ]*)" all pre cmd)
-               (string-append pre (which* cmd)))
-              (("(self\\._find_program_path|misc\\.find_path)\\([\"']([^\"']*)[\"']\\)"
-                all dummy cmd)
-               (let ((pathname (which* cmd)))
-                 (if pathname
-                     (string-append "'" pathname "'")
-                     "None")))
-              (("([\"'])(ifconfig|route|wpa_cli|wpa_supplicant|iwconfig|iwpriv|iwlist|ping)"
-                all open-quote cmd)
-               (string-append open-quote (which* cmd))))
+               ;; Patch references to subprograms with absolute pathnames.
+               (substitute* "wicd/wnettools.py"
+                 (("(misc\\.Run\\(\\[?[\"'])([^\"' ]*)" all pre cmd)
+                  (string-append pre (which* cmd)))
+                 (("(self\\._find_program_path|misc\\.find_path)\\([\"']([^\"']*)[\"']\\)"
+                   all dummy cmd)
+                  (let ((pathname (which* cmd)))
+                    (if pathname
+                        (string-append "'" pathname "'")
+                        "None")))
+                 (("([\"'])(ifconfig|route|wpa_cli|wpa_supplicant|iwconfig|iwpriv|iwlist|ping)"
+                   all open-quote cmd)
+                  (string-append open-quote (which* cmd))))
 
-            ;; setup.py cannot cope without LANG
-            (setenv "LANG" "C")
+               ;; setup.py cannot cope without LANG
+               (setenv "LANG" "C")
 
-            (let ((params
-                   (list
-                    (string-append "--python=" python "/bin/python")
-                    "--no-install-init"
-                    "--no-install-docs"
-                    "--no-install-acpi"
-                    "--no-install-pmutils"
-                    "--no-install-kde"
-                    "--no-install-gnome-shell-extensions"
+               (let ((params
+                      (list
+                       (string-append "--python=" python "/bin/python")
+                       "--no-install-init"
+                       "--no-install-docs"
+                       "--no-install-acpi"
+                       "--no-install-pmutils"
+                       "--no-install-kde"
+                       "--no-install-gnome-shell-extensions"
 
-                    "--distro=guixsd"
-                    "--wicdgroup=netdev"
-                    "--loggroup=root"
-                    "--logperms=0640"
+                       "--distro=guixsd"
+                       "--wicdgroup=netdev"
+                       "--loggroup=root"
+                       "--logperms=0640"
 
-                    ;; XXX setup.py configure asks us to pass --init=,
-                    ;; but if we do it says "no such option 'init'".
-                    ;; (string-append "--init=" out "/etc/init.d")
+                       ;; XXX setup.py configure asks us to pass --init=,
+                       ;; but if we do it says "no such option 'init'".
+                       ;; (string-append "--init=" out "/etc/init.d")
 
-                    (string-append "--initfile=" out "/etc/init.d/wicd")
-                    (string-append "--lib=" out "/lib/wicd")
-                    (string-append "--share=" out "/share/wicd")
+                       (string-append "--initfile=" out "/etc/init.d/wicd")
+                       (string-append "--lib=" out "/lib/wicd")
+                       (string-append "--share=" out "/share/wicd")
 
-                    "--etc=/etc/wicd"
-                    "--scripts=/etc/wicd/scripts"
-                    "--pmutils=/etc/pm-utils/sleep.d"
+                       "--etc=/etc/wicd"
+                       "--scripts=/etc/wicd/scripts"
+                       "--pmutils=/etc/pm-utils/sleep.d"
 
-                    (string-append "--encryption="
-                                   out "/etc/encryption/templates")
-                    (string-append "--bin=" out "/bin")
-                    (string-append "--sbin=" out "/sbin")
-                    (string-append "--daemon=" out "/share/wicd/daemon")
-                    (string-append "--backends=" out "/share/wicd/backends")
-                    (string-append "--curses=" out "/share/wicd/curses")
-                    (string-append "--gtk=" out "/share/wicd/gtk")
-                    (string-append "--cli=" out "/share/wicd/cli")
-                    (string-append "--gnome-shell-extensions="
-                                   out "/share/gnome-shell-extensions")
-                    (string-append "--icons=" out "/share/icons/hicolor")
-                    (string-append "--pixmaps=" out "/share/pixmaps")
-                    (string-append "--images=" out "/share/icons")
-                    (string-append "--dbus=" out "/etc/dbus-1/system.d")
-                    (string-append "--dbus-service="
-                                   out "/share/dbus-1/system-services")
-                    (string-append "--systemd=" out "/lib/systemd/system")
-                    (string-append "--logrotate=" out "/etc/logrotate.d")
-                    (string-append "--desktop=" out "/share/applications")
-                    (string-append "--translations=" out "/share/locale")
-                    (string-append "--autostart=" out "/etc/xdg/autostart")
-                    (string-append "--docdir=" out "/share/doc/wicd")
-                    (string-append "--mandir=" out "/share/man")
-                    (string-append "--kdedir=" out "/share/autostart"))))
-              (format #t
-                      "running ~s with command ~s and parameters ~s~%"
-                      "python setup.py" "configure" params)
-              (zero? (apply system* "python" "setup.py" "configure" params)))))
-        (alist-cons-after
-         'install 'post-install
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (let ((out (assoc-ref outputs "out")))
-             ;; wicd's installer tries to put dhclient.conf.template.default
-             ;; in /etc/wicd/other, which is not available in the build
-             ;; environment, so here we install it manually in the output
-             ;; directory.
-             (let ((dest-dir (string-append out "/etc/wicd"))
-                   (name "dhclient.conf.template.default"))
-               (install-file (string-append "other/" name) dest-dir))
+                       (string-append "--encryption="
+                                      out "/etc/encryption/templates")
+                       (string-append "--bin=" out "/bin")
+                       (string-append "--sbin=" out "/sbin")
+                       (string-append "--daemon=" out "/share/wicd/daemon")
+                       (string-append "--backends=" out "/share/wicd/backends")
+                       (string-append "--curses=" out "/share/wicd/curses")
+                       (string-append "--gtk=" out "/share/wicd/gtk")
+                       (string-append "--cli=" out "/share/wicd/cli")
+                       (string-append "--gnome-shell-extensions="
+                                      out "/share/gnome-shell-extensions")
+                       (string-append "--icons=" out "/share/icons/hicolor")
+                       (string-append "--pixmaps=" out "/share/pixmaps")
+                       (string-append "--images=" out "/share/icons")
+                       (string-append "--dbus=" out "/etc/dbus-1/system.d")
+                       (string-append "--dbus-service="
+                                      out "/share/dbus-1/system-services")
+                       (string-append "--systemd=" out "/lib/systemd/system")
+                       (string-append "--logrotate=" out "/etc/logrotate.d")
+                       (string-append "--desktop=" out "/share/applications")
+                       (string-append "--translations=" out "/share/locale")
+                       (string-append "--autostart=" out "/etc/xdg/autostart")
+                       (string-append "--docdir=" out "/share/doc/wicd")
+                       (string-append "--mandir=" out "/share/man")
+                       (string-append "--kdedir=" out "/share/autostart"))))
+                 (format #t
+                         "running ~s with command ~s and parameters ~s~%"
+                         "python setup.py" "configure" params)
+                 (zero? (apply system* "python" "setup.py" "configure" params))))))
+         (add-after 'install 'post-install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; wicd's installer tries to put dhclient.conf.template.default
+               ;; in /etc/wicd/other, which is not available in the build
+               ;; environment, so here we install it manually in the output
+               ;; directory.
+               (let ((dest-dir (string-append out "/etc/wicd"))
+                     (name "dhclient.conf.template.default"))
+                 (install-file (string-append "other/" name) dest-dir))
 
-             ;; Copy index.theme from hicolor-icon-theme.  This is needed to
-             ;; allow wicd-gtk to find its icons.
-             (let ((hicolor (assoc-ref inputs "hicolor-icon-theme"))
-                   (name "/share/icons/hicolor/index.theme"))
-               (install-file (string-append hicolor name)
-                             (string-append out "/share/icons/hicolor")))
-             #t))
-         %standard-phases))))
+               ;; Copy index.theme from hicolor-icon-theme.  This is needed to
+               ;; allow wicd-gtk to find its icons.
+               (let ((hicolor (assoc-ref inputs "hicolor-icon-theme"))
+                     (name "/share/icons/hicolor/index.theme"))
+                 (install-file (string-append hicolor name)
+                               (string-append out "/share/icons/hicolor")))
+               #t))))))
     (synopsis "Network connection manager")
     (description "Wicd is a network manager that aims to simplify wired and
 wireless networking.")
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 6e458bfde..0e9ec19b5 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -115,7 +115,7 @@ nested include statements).")
        ("xcb-util-keysyms" ,xcb-util-keysyms)
        ("xcb-util-wm" ,xcb-util-wm)))
     (arguments
-     '(#:phases (alist-delete 'configure %standard-phases)
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
        #:tests? #f  ; no check target
        #:make-flags (list "CC=gcc"
                           (string-append "PREFIX=" %output))))
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 84794a05c..e6f6fb483 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -668,7 +668,7 @@ Guile will work for XBindKeys.")
        ("xcb-util-keysyms" ,xcb-util-keysyms)
        ("xcb-util-wm" ,xcb-util-wm)))
     (arguments
-     '(#:phases (alist-delete 'configure %standard-phases)
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
        #:tests? #f  ; no check target
        #:make-flags (list "CC=gcc"
                           (string-append "PREFIX=" %output))))
@@ -775,7 +775,8 @@ within a single process.")
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; no check target
-       #:phases (alist-delete 'configure %standard-phases) ; no configure script
+       ;; no configure script
+       #:phases (modify-phases %standard-phases (delete 'configure))
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
                           "MANDIR=/share/man/man1"
                           "CC=gcc")))
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 35c425a89..664e8e592 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -114,17 +114,18 @@ Xfce Desktop Environment.")
     (arguments
      '(#:phases
        ;; Run check after install phase to test dbus activation.
-       (alist-cons-after
-        'install 'check
-        (lambda _
-          (setenv "HOME" (getenv "TMPDIR")) ; xfconfd requires a writable HOME
-          ;; Run test-suite under a dbus session.
-          (setenv "XDG_DATA_DIRS" ; for finding org.xfce.Xfconf.service
-                  (string-append %output "/share"))
-          ;; For the missing '/etc/machine-id'.
-          (setenv "DBUS_FATAL_WARNINGS" "0");
-          (zero? (system* "dbus-launch" "make" "check")))
-        (alist-delete 'check %standard-phases))))
+       (modify-phases %standard-phases
+         (delete 'check)
+         (add-after 'install 'check
+           (lambda _
+             ;; xfconfd requires a writable HOME
+             (setenv "HOME" (getenv "TMPDIR"))
+             ;; Run test-suite under a dbus session.
+             (setenv "XDG_DATA_DIRS" ; for finding org.xfce.Xfconf.service
+                     (string-append %output "/share"))
+             ;; For the missing '/etc/machine-id'.
+             (setenv "DBUS_FATAL_WARNINGS" "0");
+             (zero? (system* "dbus-launch" "make" "check")))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)))
diff --git a/gnu/packages/xfig.scm b/gnu/packages/xfig.scm
index 2e65000eb..c2e0408bd 100644
--- a/gnu/packages/xfig.scm
+++ b/gnu/packages/xfig.scm
@@ -159,44 +159,43 @@ selected in various ways.  For text, 35 fonts are available.")
     (arguments
      `(#:tests? #f
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (let ((imake (assoc-ref inputs "imake"))
-                (out   (assoc-ref outputs "out")))
-            (substitute* '("fig2dev/Imakefile"
-                           "transfig/Imakefile")
-              (("XCOMM (BINDIR = )[[:graph:]]*" _ front)
-               (string-append front out "/bin"))
-              (("XCOMM USEINLINE") "USEINLINE")
-              ;; The variable name is deceptive.  The directory is used as an
-              ;; installation path for bitmaps.
-              (("(XFIGLIBDIR =[[:blank:]]*)[[:graph:]]*" _ front)
-               (string-append front out "/lib"))
-              (("(XPMLIBDIR = )[[:graph:]]*" _ front)
-               (string-append front (assoc-ref inputs "libxpm") "/lib"))
-              (("(XPMINC = -I)[[:graph:]]*" _ front)
-               (string-append front (assoc-ref inputs "libxpm") "/include/X11"))
-              (("/usr/local/lib/fig2dev") (string-append out "/lib")))
-            ;; The -a argument is required in order to pick up the correct paths
-            ;; to several X header files.
-            (zero? (system* "xmkmf" "-a"))
-            (substitute* '("Makefile"
-                           "fig2dev/Makefile"
-                           "transfig/Makefile")
-              ;; These imake variables somehow remain undefined
-              (("DefaultGcc2[[:graph:]]*Opt") "-O2")
-              ;; Reset a few variable defaults that are set in imake templates
-              ((imake) out)
-              (("(MANPATH = )[[:graph:]]*" _ front)
-               (string-append front out "/share/man"))
-              (("(CONFDIR = )([[:graph:]]*)" _ front default)
-               (string-append front out default)))))
-        (alist-cons-after
-         'install 'install/doc
-         (lambda _
-           (zero? (system* "make" "install.man")))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((imake (assoc-ref inputs "imake"))
+                   (out   (assoc-ref outputs "out")))
+               (substitute* '("fig2dev/Imakefile"
+                              "transfig/Imakefile")
+                 (("XCOMM (BINDIR = )[[:graph:]]*" _ front)
+                  (string-append front out "/bin"))
+                 (("XCOMM USEINLINE") "USEINLINE")
+                 ;; The variable name is deceptive.  The directory is used as an
+                 ;; installation path for bitmaps.
+                 (("(XFIGLIBDIR =[[:blank:]]*)[[:graph:]]*" _ front)
+                  (string-append front out "/lib"))
+                 (("(XPMLIBDIR = )[[:graph:]]*" _ front)
+                  (string-append front (assoc-ref inputs "libxpm") "/lib"))
+                 (("(XPMINC = -I)[[:graph:]]*" _ front)
+                  (string-append front (assoc-ref inputs "libxpm") "/include/X11"))
+                 (("/usr/local/lib/fig2dev") (string-append out "/lib")))
+               ;; The -a argument is required in order to pick up the correct
+               ;; paths to several X header files.
+               (system* "xmkmf" "-a")
+               (substitute* '("Makefile"
+                              "fig2dev/Makefile"
+                              "transfig/Makefile")
+                 ;; These imake variables somehow remain undefined
+                 (("DefaultGcc2[[:graph:]]*Opt") "-O2")
+                 ;; Reset a few variable defaults that are set in imake templates
+                 ((imake) out)
+                 (("(MANPATH = )[[:graph:]]*" _ front)
+                  (string-append front out "/share/man"))
+                 (("(CONFDIR = )([[:graph:]]*)" _ front default)
+                  (string-append front out default)))
+               #t)))
+         (add-after 'install 'install/doc
+           (lambda _
+             (zero? (system* "make" "install.man")))))))
     (home-page "http://www.xfig.org/")
     (synopsis "Create portable LaTeX figures")
     (description
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index b50807702..04e210642 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -112,26 +112,25 @@
         ("xproto" ,xproto)))
     (arguments
      `(#:phases
-       (alist-cons-after
-        'install 'install-data
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (let ((cf-files (assoc-ref inputs "xorg-cf-files"))
-                (out (assoc-ref outputs "out"))
-                (unpack (assoc-ref %standard-phases 'unpack))
-                (patch-source-shebangs
-                 (assoc-ref %standard-phases 'patch-source-shebangs)))
-            (mkdir "xorg-cf-files")
-            (with-directory-excursion "xorg-cf-files"
-              (apply unpack (list #:source cf-files))
-              (apply patch-source-shebangs (list #:source cf-files))
-              (substitute* '("mingw.cf" "Imake.tmpl" "nto.cf" "os2.cf"
-                             "linux.cf" "Amoeba.cf" "cygwin.cf")
-                (("/bin/sh") (which "bash")))
-              (and (zero? (system* "./configure"
-                                   (string-append "SHELL=" (which "bash"))
-                                   (string-append "--prefix=" out)))
-                   (zero? (system* "make" "install"))))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'install 'install-data
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((cf-files (assoc-ref inputs "xorg-cf-files"))
+                   (out (assoc-ref outputs "out"))
+                   (unpack (assoc-ref %standard-phases 'unpack))
+                   (patch-source-shebangs
+                    (assoc-ref %standard-phases 'patch-source-shebangs)))
+               (mkdir "xorg-cf-files")
+               (with-directory-excursion "xorg-cf-files"
+                 (apply unpack (list #:source cf-files))
+                 (apply patch-source-shebangs (list #:source cf-files))
+                 (substitute* '("mingw.cf" "Imake.tmpl" "nto.cf" "os2.cf"
+                                "linux.cf" "Amoeba.cf" "cygwin.cf")
+                   (("/bin/sh") (which "bash")))
+                 (and (zero? (system* "./configure"
+                                      (string-append "SHELL=" (which "bash"))
+                                      (string-append "--prefix=" out)))
+                      (zero? (system* "make" "install"))))))))))
     (home-page "http://www.x.org")
     (synopsis "Source code configuration and build system")
     (description
-- 
2.13.3

^ permalink raw reply related	[relevance 3%]

* [bug#27922] [PATCH] gnu: python-numpy: Update to 1.12.1.
@ 2017-08-02 19:49 65% Leo Famulari
  0 siblings, 0 replies; 200+ results
From: Leo Famulari @ 2017-08-02 19:49 UTC (permalink / raw)
  To: 27922

* gnu/packages/python.scm (python-numpy, python2-numpy): Update to 1.12.1.
[source]: Download the "real" release tarball instead of the snapshot.
---
 gnu/packages/python.scm | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index cf77abdba..1a6a46143 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3670,16 +3670,15 @@ between language specification and implementation aspects.")
 (define-public python-numpy
   (package
     (name "python-numpy")
-    (version "1.12.0")
+    (version "1.12.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://github.com/numpy/numpy/archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (uri (string-append "https://github.com/numpy/numpy/releases/download/v"
+                           version "/numpy-" version ".tar.gz"))
        (sha256
         (base32
-         "025d4j4aakcp8w5i5diqh812cbbjgac7jszx1j56ivrbi1i8vv7d"))))
+         "1afg2dvi764gilxsff73g1vdir8lr2030l50mw3s8i78h7zpyvfm"))))
     (build-system python-build-system)
     (inputs
      `(("openblas" ,openblas)
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#27961] [PATCH 1/5] gnu: Add python-backpack.
  @ 2017-08-05  2:09 64% ` Ben Woodcroft
  2017-08-05  2:09 62%   ` [bug#27961] [PATCH 4/5] gnu: python-orator: Update to 0.9.7 Ben Woodcroft
  2017-08-05  2:10 54%   ` [bug#27961] [PATCH 5/5] gnu: python-orator: Move to (gnu packages databases) Ben Woodcroft
  0 siblings, 2 replies; 200+ results
From: Ben Woodcroft @ 2017-08-05  2:09 UTC (permalink / raw)
  To: 27961

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

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index cf77abdba..7a18c0e14 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -12,7 +12,7 @@
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
 ;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
+;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
 ;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com>
@@ -11940,6 +11940,32 @@ YAML-serialized data.")
 (define-public python2-pyaml
   (package-with-python2 python-pyaml))
 
+(define-public python-backpack
+  (package
+    (name "python-backpack")
+    (version "0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "backpack" version))
+       (sha256
+        (base32
+         "14rq1mvm0jda90lcx9gyyby9dvq4x3js2cmxvd6vl4686ixwyqh1"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-nose" ,python-nose)))
+    (propagated-inputs
+     `(("python-simplejson" ,python-simplejson)))
+    (home-page "https://github.com/sdispater/backpack")
+    (synopsis "Utilities for working with Python collections")
+    (description "Backpack provides some useful utilities for working with
+collections of data..")
+    (license license:expat)))
+
+(define-public python2-backpack
+  (package-with-python2 python-backpack))
+
 (define-public python-flexmock
   (package
     (name "python-flexmock")
-- 
2.13.4

^ permalink raw reply related	[relevance 64%]

* [bug#27961] [PATCH 4/5] gnu: python-orator: Update to 0.9.7.
  2017-08-05  2:09 64% ` [bug#27961] [PATCH 1/5] gnu: Add python-backpack Ben Woodcroft
@ 2017-08-05  2:09 62%   ` Ben Woodcroft
  2017-08-05  2:10 54%   ` [bug#27961] [PATCH 5/5] gnu: python-orator: Move to (gnu packages databases) Ben Woodcroft
  1 sibling, 0 replies; 200+ results
From: Ben Woodcroft @ 2017-08-05  2:09 UTC (permalink / raw)
  To: 27961

* gnu/packages/python.scm (python-orator): Update to 0.9.7.
[propagated-inputs]: Remove python-arrow.  Add python-backpack,
python-pendulum, python-pygments, python-six.
(python2-orator): Likewise.
[propagated-inputs]: Remove python2-ipaddress.
---
 gnu/packages/python.scm | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 7a18c0e14..2375578d8 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -107,6 +107,7 @@
   #:use-module (gnu packages statistics)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages video)
@@ -11990,24 +11991,27 @@ mocks, stubs and fakes.")
 (define-public python-orator
   (package
     (name "python-orator")
-    (version "0.8.2")
+    (version "0.9.7")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "orator" version))
               (sha256
                (base32
-                "1li49irsqha17nrda4nsb48biyy0rarp9pphf0jpqwm5zr8hv569"))))
+                "14r58z64fdp76ixnvmi4lni762b405ynmsx6chr1qihs3yl9zn6c"))))
     (build-system python-build-system)
     (arguments '(#:tests? #f)) ; no tests
     (propagated-inputs
-     `(("python-arrow" ,python-arrow)
+     `(("python-backpack" ,python-backpack)
        ("python-blinker" ,python-blinker)
        ("python-cleo" ,python-cleo)
        ("python-faker" ,python-faker)
        ("python-inflection" ,python-inflection)
        ("python-lazy-object-proxy" ,python-lazy-object-proxy)
+       ("python-pendulum" ,python-pendulum)
        ("python-pyaml" ,python-pyaml)
+       ("python-pygments" ,python-pygments)
        ("python-simplejson" ,python-simplejson)
+       ("python-six" ,python-six)
        ("python-wrapt" ,python-wrapt)))
     (home-page "https://orator-orm.com/")
     (synopsis "ActiveRecord ORM for Python")
@@ -12018,12 +12022,7 @@ implementation for Python.")
     (properties `((python2-variant . ,(delay python2-orator))))))
 
 (define-public python2-orator
-  (let ((base (package-with-python2 (strip-python2-variant python-orator))))
-    (package
-      (inherit base)
-      (propagated-inputs
-       `(("python2-ipaddress" ,python2-ipaddress)
-         ,@(package-propagated-inputs base))))))
+  (package-with-python2 (strip-python2-variant python-orator)))
 
 (define-public python-prompt-toolkit
  (package
-- 
2.13.4

^ permalink raw reply related	[relevance 62%]

* [bug#27961] [PATCH 5/5] gnu: python-orator: Move to (gnu packages databases).
  2017-08-05  2:09 64% ` [bug#27961] [PATCH 1/5] gnu: Add python-backpack Ben Woodcroft
  2017-08-05  2:09 62%   ` [bug#27961] [PATCH 4/5] gnu: python-orator: Update to 0.9.7 Ben Woodcroft
@ 2017-08-05  2:10 54%   ` Ben Woodcroft
  1 sibling, 0 replies; 200+ results
From: Ben Woodcroft @ 2017-08-05  2:10 UTC (permalink / raw)
  To: 27961

* gnu/packages/python.scm: Remove (gnu packages time) import.
(python-orator, python2-orator): Move from here ...
* gnu/packages/databases.scm: ... to here.
---
 gnu/packages/databases.scm | 38 ++++++++++++++++++++++++++++++++++++++
 gnu/packages/python.scm    | 37 -------------------------------------
 2 files changed, 38 insertions(+), 37 deletions(-)

diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 13efc5edc..bb2c3eeec 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -17,6 +17,7 @@
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -51,6 +52,7 @@
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages time)
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages language)
   #:use-module (gnu packages libevent)
@@ -1619,3 +1621,39 @@ Memory-Mapped Database} (LMDB), a high-performance key-value store.")
 
 (define-public python2-lmdb
   (package-with-python2 python-lmdb))
+
+(define-public python-orator
+  (package
+    (name "python-orator")
+    (version "0.9.7")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "orator" version))
+              (sha256
+               (base32
+                "14r58z64fdp76ixnvmi4lni762b405ynmsx6chr1qihs3yl9zn6c"))))
+    (build-system python-build-system)
+    (arguments '(#:tests? #f)) ; no tests
+    (propagated-inputs
+     `(("python-backpack" ,python-backpack)
+       ("python-blinker" ,python-blinker)
+       ("python-cleo" ,python-cleo)
+       ("python-faker" ,python-faker)
+       ("python-inflection" ,python-inflection)
+       ("python-lazy-object-proxy" ,python-lazy-object-proxy)
+       ("python-pendulum" ,python-pendulum)
+       ("python-pyaml" ,python-pyaml)
+       ("python-pygments" ,python-pygments)
+       ("python-simplejson" ,python-simplejson)
+       ("python-six" ,python-six)
+       ("python-wrapt" ,python-wrapt)))
+    (home-page "https://orator-orm.com/")
+    (synopsis "ActiveRecord ORM for Python")
+    (description
+     "Orator provides a simple ActiveRecord-like Object Relational Mapping
+implementation for Python.")
+    (license license:expat)
+    (properties `((python2-variant . ,(delay python2-orator))))))
+
+(define-public python2-orator
+  (package-with-python2 (strip-python2-variant python-orator)))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 2375578d8..46691c7fe 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -107,7 +107,6 @@
   #:use-module (gnu packages statistics)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages texinfo)
-  #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages video)
@@ -11988,42 +11987,6 @@ mocks, stubs and fakes.")
 (define-public python2-flexmock
   (package-with-python2 python-flexmock))
 
-(define-public python-orator
-  (package
-    (name "python-orator")
-    (version "0.9.7")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "orator" version))
-              (sha256
-               (base32
-                "14r58z64fdp76ixnvmi4lni762b405ynmsx6chr1qihs3yl9zn6c"))))
-    (build-system python-build-system)
-    (arguments '(#:tests? #f)) ; no tests
-    (propagated-inputs
-     `(("python-backpack" ,python-backpack)
-       ("python-blinker" ,python-blinker)
-       ("python-cleo" ,python-cleo)
-       ("python-faker" ,python-faker)
-       ("python-inflection" ,python-inflection)
-       ("python-lazy-object-proxy" ,python-lazy-object-proxy)
-       ("python-pendulum" ,python-pendulum)
-       ("python-pyaml" ,python-pyaml)
-       ("python-pygments" ,python-pygments)
-       ("python-simplejson" ,python-simplejson)
-       ("python-six" ,python-six)
-       ("python-wrapt" ,python-wrapt)))
-    (home-page "https://orator-orm.com/")
-    (synopsis "ActiveRecord ORM for Python")
-    (description
-     "Orator provides a simple ActiveRecord-like Object Relational Mapping
-implementation for Python.")
-    (license license:expat)
-    (properties `((python2-variant . ,(delay python2-orator))))))
-
-(define-public python2-orator
-  (package-with-python2 (strip-python2-variant python-orator)))
-
 (define-public python-prompt-toolkit
  (package
   (name "python-prompt-toolkit")
-- 
2.13.4

^ permalink raw reply related	[relevance 54%]

* [bug#28024] [PATCH 1/5] gnu: Add python-tornado-http-auth.
  @ 2017-08-09  8:06 65% ` Christopher Baines
  0 siblings, 0 replies; 200+ results
From: Christopher Baines @ 2017-08-09  8:06 UTC (permalink / raw)
  To: 28024

* gnu/packages/python.scm (python-tornado-http-auth): New variable.
---
 gnu/packages/python.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 79c6eca00..227c01027 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -6560,6 +6560,29 @@ connection to each user.")
          ("python2-singledispatch" ,python2-singledispatch)
           ,@(package-propagated-inputs tornado))))))
 
+(define-public python-tornado-http-auth
+  (package
+    (name "python-tornado-http-auth")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "tornado-http-auth" version))
+       (sha256
+        (base32
+         "0znrgqd7k2s4ia474xizi6h3061zj4sn5n6cq76bkwl3wwshifn5"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-tornado" ,python-tornado)))
+    (home-page
+     "https://github.com/gvalkov/tornado-http-auth")
+    (synopsis
+     "Digest and basic authentication module for Tornado")
+    (description
+     "Provides support for adding authentication to services using the Tornado
+web framework, either via the basic or digest authentication schemes.")
+    (license license:asl2.0)))
+
 ;; the python- version can be removed with python-3.5
 (define-public python-backports-abc
   (package
-- 
2.14.0

^ permalink raw reply related	[relevance 65%]

* [bug#28052] [PATCH] gnu: python-pylint: Use Python2 variant system.
@ 2017-08-11 18:49 65% Danny Milosavljevic
  0 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-08-11 18:49 UTC (permalink / raw)
  To: 28052

* gnu/packages/python.scm (python-pylint): Use Python2 variant system.
(python2-pylint): Strip Python2 variant system.
---
 gnu/packages/python.scm | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 731fee633..13e1ce5bc 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14322,10 +14322,12 @@ Pylint has many rules enabled by default, way too much to silence them
 all on a minimally sized program.  It's highly configurable and handle
 pragmas to control it from within your code.  Additionally, it is
 possible to write plugins to add your own checks.")
+    (properties `((python2-variant . ,(delay python2-pylint))))
     (license license:gpl2+)))
 
 (define-public python2-pylint
-  (let ((pylint (package-with-python2 python-pylint)))
+  (let ((pylint (package-with-python2
+                  (strip-python2-variant python-pylint))))
     (package (inherit pylint)
              (propagated-inputs
               `(("python2-backports-functools-lru-cache"

^ permalink raw reply related	[relevance 65%]

* [bug#28151] [PATCH] gnu: Add honcho.
@ 2017-08-19 19:49 65% Stefan Reichör
    0 siblings, 1 reply; 200+ results
From: Stefan Reichör @ 2017-08-19 19:49 UTC (permalink / raw)
  To: 28151

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: 0001-gnu-Add-honcho.patch --]
[-- Type: text/x-diff, Size: 1595 bytes --]

From fd43ad462227e46d34c48c5a7ae41009f0d20d45 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Reich=C3=B6r?= <stefan@xsteve.at>
Date: Sat, 19 Aug 2017 21:46:38 +0200
Subject: [PATCH] gnu: Add honcho.

* gnu/packages/python.scm (python-honcho): New variable.
---
 gnu/packages/python.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 6da5ad8..afa7ca5 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -5226,6 +5226,31 @@ cluster without needing to write any wrapper code yourself.")
 (define-public python2-gridmap
   (package-with-python2 python-gridmap))
 
+(define-public python-honcho
+  (package
+    (name "python-honcho")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "honcho" version))
+       (sha256
+        (base32 "0vpadk37y27m98x9lk151k96vp319w7jv8f6hdr7fdz3s8m412f1"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-jinja2" ,python-jinja2)))
+    (home-page "https://github.com/nickstenning/honcho")
+    (synopsis "Manage Procfile-based applications")
+    (description
+      "A Procfile is a file which describes how to run an application
+consisting of serveral processes. honcho starts all listed processes.
+The output of all running processes is collected by honcho and
+displayed.")
+    (license license:expat)))
+
+(define-public python2-honcho
+  (package-with-python2 python-honcho))
+
 (define-public python-pexpect
   (package
     (name "python-pexpect")
-- 
2.7.4

^ permalink raw reply related	[relevance 65%]

* [bug#28155] [PATCH 2/3] gnu: Add python-pyaes.
  2017-08-20  5:40 65% ` [bug#28155] [PATCH 1/3] gnu: Add python-pysocks Carlo Zancanaro
@ 2017-08-20  5:40 65%   ` Carlo Zancanaro
  0 siblings, 0 replies; 200+ results
From: Carlo Zancanaro @ 2017-08-20  5:40 UTC (permalink / raw)
  To: 28155

* gnu/packages/python.scm (python-pyaes, python2-pyaes): New variables.
---
 gnu/packages/python.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d85838d3c..8785d2d7c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15864,3 +15864,25 @@ version of @code{SocksiPy} with bug fixes and extra features.")
 
 (define-public python2-pysocks
   (package-with-python2 python-pysocks))
+
+(define-public python-pyaes
+  (package
+    (name "python-pyaes")
+    (version "1.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pyaes" version))
+       (sha256
+        (base32
+         "0bp9bjqy1n6ij1zb86wz9lqa1dhla8qr1d7w2kxyn7jbj56sbmcw"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/ricmoo/pyaes")
+    (synopsis "Implementation of AES in Python")
+    (description "This package contains a pure-Python implementation of the
+AES block cipher algorithm and the common modes of operation (CBC, CFB, CTR,
+ECB and OFB).")
+    (license license:expat)))
+
+(define-public python2-pyaes
+  (package-with-python2 python-pyaes))
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#28155] [PATCH 1/3] gnu: Add python-pysocks.
  @ 2017-08-20  5:40 65% ` Carlo Zancanaro
  2017-08-20  5:40 65%   ` [bug#28155] [PATCH 2/3] gnu: Add python-pyaes Carlo Zancanaro
  0 siblings, 1 reply; 200+ results
From: Carlo Zancanaro @ 2017-08-20  5:40 UTC (permalink / raw)
  To: 28155

* gnu/packages/python.scm (python-pysocks, python2-pysocks): New variables.
---
 gnu/packages/python.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 2b3820221..d85838d3c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15842,3 +15842,25 @@ thread-local variable.")
 
 (define-public python2-flask-principal
   (package-with-python2 python-flask-principal))
+
+(define-public python-pysocks
+  (package
+    (name "python-pysocks")
+    (version "1.6.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "PySocks" version))
+       (sha256
+        (base32
+         "1krkiss578zqwcg4c8iqz1hwscwhsvy2djp3xyvps5gsgvr2j0yh"))))
+    (build-system python-build-system)
+    (arguments `(#:tests? #f))
+    (home-page "https://github.com/Anorov/PySocks")
+    (synopsis "SOCKS client module")
+    (description "@code{pysocks} is an updated and semi-actively maintained
+version of @code{SocksiPy} with bug fixes and extra features.")
+    (license license:bsd-3)))
+
+(define-public python2-pysocks
+  (package-with-python2 python-pysocks))
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#28151] [PATCH] gnu: Add honcho.
  @ 2017-08-23 20:23 60%       ` Stefan Reichör
  0 siblings, 0 replies; 200+ results
From: Stefan Reichör @ 2017-08-23 20:23 UTC (permalink / raw)
  To: 28151

[-- Attachment #1: Type: text/plain, Size: 1046 bytes --]

Marius Bakke <mbakke@fastmail.com> writes:

>>
>> Both ways have the same effect: They don't collect any tests:
>> ,----
>> | platform linux -- Python 3.5.3 -- py-1.4.32 -- pytest-2.7.3 -- /gnu/store/bf54hnwd8mb63zmssc23fwslf5zvxpxs-python-wrapper-3.5.3/bin/python
>> | rootdir: /tmp/guix-build-python-honcho-1.0.1.drv-0/honcho-1.0.1, inifile: 
>> | collecting ... collected 0 items
>> `----
>
> Aaah, sorry.  I was browsing the GitHub source code and failed to notice
> that the distribution tarball on PyPi does not contain any tests.
>
> So we can either switch to using the GitHub snapshots so that we can
> notice breakage early, or lose tests but gain the integrity guarantees
> from using the PGP-signed tarball on PyPi.
>
> I don't really have a strong preference, but it's worth creating an
> upstream issue in either case IMO.  Ideally we'd have both.
>
> I'll let you be the judge, being the end user and all :)

I switched to the github tarball and I was able to get the testsuite to pass.

Attached is my current attempt.


Stefan.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-honcho.patch --]
[-- Type: text/x-diff, Size: 2611 bytes --]

From dc289a9c328f6a8f77e88decfa93695da4c735f6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Reich=C3=B6r?= <stefan@xsteve.at>
Date: Wed, 23 Aug 2017 22:19:57 +0200
Subject: [PATCH] gnu: Add honcho.

* gnu/packages/python.scm (python-honcho): New variable.
---
 gnu/packages/python.scm | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d328178..9578f1c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -5226,6 +5226,53 @@ cluster without needing to write any wrapper code yourself.")
 (define-public python2-gridmap
   (package-with-python2 python-gridmap))
 
+(define-public python-honcho
+  (package
+    (name "python-honcho")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/nickstenning/honcho/archive/v"
+             version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0zizn61n5z5hq421hkypk9pw8s6fpxw30f4hsg7k4ivwzy3gjw9j"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest-3.0)
+       ("python-mock" ,python-mock)
+       ("python-tox" ,python-tox)
+       ("which" ,which))) ;for tests
+    (propagated-inputs
+     `(("python-jinja2" ,python-jinja2)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'check)
+         (add-after 'install 'check
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             ;; fix honcho path in testsuite
+             (substitute* "tests/conftest.py"
+               (("'honcho'") (string-append "'" (assoc-ref outputs "out")
+                                            "/bin/honcho" "'")))
+             ;; It's easier to run tests after install.
+             ;; Make installed package available for running the tests
+             (add-installed-pythonpath inputs outputs)
+             (zero? (system* "py.test" "-v")))))))
+    (home-page "https://github.com/nickstenning/honcho")
+    (synopsis "Manage Procfile-based applications")
+    (description
+      "A Procfile is a file which describes how to run an application
+consisting of serveral processes. honcho starts all listed processes.
+The output of all running processes is collected by honcho and
+displayed.")
+    (license license:expat)))
+
+(define-public python2-honcho
+  (package-with-python2 python-honcho))
+
 (define-public python-pexpect
   (package
     (name "python-pexpect")
-- 
2.7.4


^ permalink raw reply related	[relevance 60%]

* [bug#28235] [PATCH 1/3] gnu: Update python-lxml to 3.8.0.
  @ 2017-08-25 18:25 65% ` Roel Janssen
  2017-08-25 18:26 64% ` [bug#28235] [PATCH 2/3] gnu: Add python-html5-parser, python2-html5-parser Roel Janssen
  1 sibling, 0 replies; 200+ results
From: Roel Janssen @ 2017-08-25 18:25 UTC (permalink / raw)
  To: 28235


* gnu/packages/python.scm (python-lxml): Update to 3.8.0.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 4bd777c09..9bf46fb6f 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -6117,14 +6117,14 @@ translate the complete SQLite API into Python.")
 (define-public python-lxml
   (package
     (name "python-lxml")
-    (version "3.6.0")
+    (version "3.8.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "lxml" version))
         (sha256
          (base32
-          "1pvbmiy2m7jwv493kilbghhj2pkh8wy1na3ji350vhzhlwlclx4w"))))
+          "15nvf6n285n282682qyw3wihsncb0x5amdhyi4b83bfa2nz74vvk"))))
     (build-system python-build-system)
     (inputs
       `(("libxml2" ,libxml2)
-- 
2.14.1

^ permalink raw reply related	[relevance 65%]

* [bug#28235] [PATCH 2/3] gnu: Add python-html5-parser, python2-html5-parser
    2017-08-25 18:25 65% ` [bug#28235] [PATCH 1/3] gnu: Update python-lxml to 3.8.0 Roel Janssen
@ 2017-08-25 18:26 64% ` Roel Janssen
  1 sibling, 0 replies; 200+ results
From: Roel Janssen @ 2017-08-25 18:26 UTC (permalink / raw)
  To: 28235

* gnu/packages/python.scm (python-html5-parser): New variable.
  (python2-html5-parser: New variable.
---
 gnu/packages/python.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 9bf46fb6f..8629228db 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -5868,6 +5868,35 @@ and written in Python.")
 (define-public python2-html5lib-0.9
   (package-with-python2 python-html5lib-0.9))
 
+(define-public python-html5-parser
+  (package
+    (name "python-html5-parser")
+    (version "0.4.4")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "html5-parser" version))
+              (sha256
+               (base32
+                "1d8sxhl41ffh7qlk7wlsy17xw6slzx5v1yna9s72wx5qrpaa3wxr"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libxml2" ,libxml2)))
+    (propagated-inputs
+     `(("python-lxml" ,python-lxml)
+       ("python-beautifulsoup4" ,python-beautifulsoup4)))
+    (home-page "https://html5-parser.readthedocs.io")
+    (synopsis "Fast C-based HTML5 parsing for Python")
+    (description "This package provides a fast implementation of the HTML5
+parsing spec for Python.  Parsing is done in C using a variant of the gumbo
+parser.  The gumbo parse tree is then transformed into an lxml tree, also in
+C, yielding parse times that can be a thirtieth of the html5lib parse times.")
+    (license license:asl2.0)))
+
+(define-public python2-html5-parser
+  (package-with-python2 python-html5-parser))
+
 (define-public python-webencodings
   (package
     (name "python-webencodings")
-- 
2.14.1

^ permalink raw reply related	[relevance 64%]

* [bug#28259] [PATCH] Update e-mail for Kei Kebreau.
@ 2017-08-28  2:47 42% Kei Kebreau
  0 siblings, 0 replies; 200+ results
From: Kei Kebreau @ 2017-08-28  2:47 UTC (permalink / raw)
  To: 28259; +Cc: Kei Kebreau

* .mailmap: Map kei@openmailbox.org to current address.
* gnu/local.mk: Replace kei@openmailbox.org to current address.
* gnu/packages/backup.scm: Likewise.
* gnu/packages/calendar.scm: Likewise.
* gnu/packages/check.scm: Likewise.
* gnu/packages/compression.scm: Likewise.
* gnu/packages/documentation.scm: Likewise.
* gnu/packages/emacs.scm: Likewise.
* gnu/packages/fltk.scm: Likewise.
* gnu/packages/freedesktop.scm: Likewise.
* gnu/packages/game-development.scm: Likewise.
* gnu/packages/games.scm: Likewise.
* gnu/packages/gnome.scm: Likewise.
* gnu/packages/gnustep.scm: Likewise.
* gnu/packages/gtk.scm: Likewise.
* gnu/packages/hexedit.scm: Likewise.
* gnu/packages/image.scm: Likewise.
* gnu/packages/maths.scm: Likewise.
* gnu/packages/music.scm: Likewise.
* gnu/packages/xfce.scm: Likewise.
* gnu/packages/python.scm: Likewise.
* gnu/packages/tcl.scm: Likewise.
* gnu/packages/textutils.scm: Likewise.
* gnu/packages/video.scm: Likewise.
* gnu/packages/w3m.scm: Likewise.
* gnu/packages/web.scm: Likewise.
* gnu/packages/web-browsers.scm: Likewise.
* gnu/packages/patches/wmfire-update-for-new-gdk-versions.patch: Likewise.
---
 .mailmap                                                      | 2 +-
 gnu/local.mk                                                  | 2 +-
 gnu/packages/backup.scm                                       | 2 +-
 gnu/packages/calendar.scm                                     | 2 +-
 gnu/packages/check.scm                                        | 2 +-
 gnu/packages/compression.scm                                  | 2 +-
 gnu/packages/documentation.scm                                | 2 +-
 gnu/packages/emacs.scm                                        | 2 +-
 gnu/packages/fltk.scm                                         | 2 +-
 gnu/packages/freedesktop.scm                                  | 2 +-
 gnu/packages/game-development.scm                             | 2 +-
 gnu/packages/games.scm                                        | 2 +-
 gnu/packages/gnome.scm                                        | 2 +-
 gnu/packages/gnustep.scm                                      | 2 +-
 gnu/packages/gtk.scm                                          | 2 +-
 gnu/packages/hexedit.scm                                      | 2 +-
 gnu/packages/image.scm                                        | 2 +-
 gnu/packages/maths.scm                                        | 2 +-
 gnu/packages/music.scm                                        | 2 +-
 gnu/packages/patches/wmfire-update-for-new-gdk-versions.patch | 2 +-
 gnu/packages/python.scm                                       | 2 +-
 gnu/packages/tcl.scm                                          | 2 +-
 gnu/packages/textutils.scm                                    | 2 +-
 gnu/packages/video.scm                                        | 2 +-
 gnu/packages/w3m.scm                                          | 2 +-
 gnu/packages/web-browsers.scm                                 | 2 +-
 gnu/packages/web.scm                                          | 2 +-
 gnu/packages/xfce.scm                                         | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/.mailmap b/.mailmap
index 9c10b8468..8ff87ed24 100644
--- a/.mailmap
+++ b/.mailmap
@@ -33,7 +33,7 @@ Joshua Grant <tadni@riseup.net> <gzg@riseup.net>
 Joshua Grant <tadni@riseup.net> <jgrant@parenthetical.io>
 Joshua Grant <tadni@riseup.net> <tadnimi@gmail.com>
 Joshua Grant <tadni@riseup.net> <youlysses@riseup.net>
-Kei Kebreau <kei@openmailbox.org>
+Kei Kebreau <kei@openmailbox.org> <kkebreau@posteo.net>
 Leo Famulari <leo@famulari.name> <lfamular@gmail.com>
 Ludovic Courtès <ludo@gnu.org> <ludovic.courtes@inria.fr>
 Marek Benc <dusxmt@gmx.com> <merkur32@gmail.com>
diff --git a/gnu/local.mk b/gnu/local.mk
index 2ff87dfa5..10d4ab114 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -4,7 +4,7 @@
 # Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
 # Copyright © 2013, 2014, 2015, 2016, 2017 Mark H Weaver <mhw@netris.org>
 # Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
-# Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org>
+# Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
 # Copyright © 2016, 2017 Rene Saavedra <rennes@openmailbox.org>
 # Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
 # Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 157b6a7cc..eca69bebe 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2017 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm
index 74601871c..e7d21d2ce 100644
--- a/gnu/packages/calendar.scm
+++ b/gnu/packages/calendar.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
 ;;; Copyright © 2016 Stefan Reichoer <stefan@xsteve.at>
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 008dfc1cc..198bb81f8 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2017 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 4e316e0b5..8c71f4fc6 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -12,7 +12,7 @@
 ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
-;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
 ;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm
index 5d3d6f170..9c5ca74d7 100644
--- a/gnu/packages/documentation.scm
+++ b/gnu/packages/documentation.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
-;;; Copyright © 2017 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 140a53205..800cebdc5 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -22,7 +22,7 @@
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
 ;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com>
-;;; Copyright © 2017 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 George Clemmer <myglc2@gmail.com>
 ;;; Copyright © 2017 Feng Shu <tumashu@163.com>
 ;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
diff --git a/gnu/packages/fltk.scm b/gnu/packages/fltk.scm
index 27d2f62ca..0ca77cfa4 100644
--- a/gnu/packages/fltk.scm
+++ b/gnu/packages/fltk.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 29f98a235..f99f9771e 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;;
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 95f8697b4..55a559f7a 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015, 2016, 2017 David Thompson <davet@gnu.org>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017 Julian Graham <joolean@gmail.com>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 9e7b57990..65a898991 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -19,7 +19,7 @@
 ;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
 ;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
-;;; Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index f50bcfc10..43547961b 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -14,7 +14,7 @@
 ;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net>
-;;; Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
diff --git a/gnu/packages/gnustep.scm b/gnu/packages/gnustep.scm
index 51541170a..195249c43 100644
--- a/gnu/packages/gnustep.scm
+++ b/gnu/packages/gnustep.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index e942f5171..74f7b70ff 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -11,7 +11,7 @@
 ;;; Coypright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de>
-;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 Patrick Hetu <patrick.hetu@auf.org>
 ;;; Coypright © 2016 ng0 <ng0@we.make.ritual.n0.is>
 ;;; Coypright © 2017 Roel Janssen <roel@gnu.org>
diff --git a/gnu/packages/hexedit.scm b/gnu/packages/hexedit.scm
index 8ddc0ffd4..88dbfb234 100644
--- a/gnu/packages/hexedit.scm
+++ b/gnu/packages/hexedit.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Gábor Boskovits <boskovits@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 94c683aa9..e93248199 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index c3c2191a9..1c396a04c 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2015 Fabian Harfert <fhmgufs@web.de>
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 56e6d2649..f81a79d50 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
diff --git a/gnu/packages/patches/wmfire-update-for-new-gdk-versions.patch b/gnu/packages/patches/wmfire-update-for-new-gdk-versions.patch
index 51d6c3e79..fd12ba4ce 100644
--- a/gnu/packages/patches/wmfire-update-for-new-gdk-versions.patch
+++ b/gnu/packages/patches/wmfire-update-for-new-gdk-versions.patch
@@ -1,4 +1,4 @@
-This patch comes from Debian and was modified by Kei Kebreau <kei@openmailbox.org>.
+This patch comes from Debian and was modified by Kei Kebreau <kkebreau@posteo.net>.
 Link: https://anonscm.debian.org/cgit/pkg-wmaker/wmfire.git/plain/debian/patches/gdk_updates.patch?h=debian/1.2.4-2&id=a272234fc5eecdbfc469adb12133196bc62f3059
 
 Description: Update for newer versions of GDK.
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3609ff055..1ea2c42bf 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -41,7 +41,7 @@
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2017 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com>
 ;;;
diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm
index de888891c..0d48aee65 100644
--- a/gnu/packages/tcl.scm
+++ b/gnu/packages/tcl.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2017 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 537d01334..70b057ffd 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
-;;; Copyright © 2017 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 9c728c174..ce23e5141 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
-;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com>
 ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
 ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
diff --git a/gnu/packages/w3m.scm b/gnu/packages/w3m.scm
index 048921219..a758f2920 100644
--- a/gnu/packages/w3m.scm
+++ b/gnu/packages/w3m.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index b5fb39b95..8de0cf1d5 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 13a46a550..471cfe9e5 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -19,7 +19,7 @@
 ;;; Copyright © 2016 Bake Timmons <b3timmons@speedymail.org>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2017 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 35c425a89..b936dc45d 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Florian Paul Schmidt <mista.tapas@gmx.net>
-;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
 ;;;
-- 
2.14.1

^ permalink raw reply related	[relevance 42%]

* [bug#28282] [PATCH 2/3] gnu: python2-ttystatus: Enable tests.
       [not found]     <20170829200905.30771-1-arunisaac@systemreboot.net>
@ 2017-08-29 20:09 83% ` Arun Isaac
  2017-08-29 20:09 74% ` [bug#28282] [PATCH 3/3] gnu: python2-larch: " Arun Isaac
  1 sibling, 0 replies; 200+ results
From: Arun Isaac @ 2017-08-29 20:09 UTC (permalink / raw)
  To: 28282

* gnu/packages/python.scm (python2-ttystatus)[arguments]: Replace 'check'
phase with custom function.
---
 gnu/packages/python.scm | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index b81e6e47c..675742696 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14031,8 +14031,20 @@ iterating over input files.")
         (base32
          "0vivqbw7ddhsq1zj3g9cvvv4f0phl0pis2smsnwcr2szz2fk3hl6"))))
     (build-system python-build-system)
+    (native-inputs
+     `(("python2-coverage-test-runner" ,python2-coverage-test-runner)
+       ("python2-pep8" ,python2-pep8)))
     (arguments
-     `(#:python ,python-2))
+     `(#:python ,python-2
+       #:phases
+       (modify-phases %standard-phases
+         ;; check phase needs to be run before the build phase. If not,
+         ;; coverage-test-runner looks for tests for the built source files,
+         ;; and fails.
+         (delete 'check)
+         (add-before 'build 'check
+           (lambda _
+             (zero? (system* "make" "check")))))))
     (home-page "https://liw.fi/ttystatus/")
     (synopsis "Python library for showing progress reporting and
 status updates on terminals")
-- 
2.13.4


^ permalink raw reply related	[relevance 83%]

* [bug#28282] [PATCH 1/3] gnu: python2-cliapp: Enable tests.
  @ 2017-08-29 20:09 83% ` Arun Isaac
  0 siblings, 0 replies; 200+ results
From: Arun Isaac @ 2017-08-29 20:09 UTC (permalink / raw)
  To: 28282

* gnu/packages/python.scm (python2-cliapp)[arguments]: Replace 'check' phase
with custom function.
---
 gnu/packages/python.scm | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3609ff055..b81e6e47c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -13991,7 +13991,22 @@ parse many formal languages.")
          "1i9gik0xrj6jmi95s5w988jl1y265baz5xm5pbqdyvsh8h9ln6yq"))))
     (build-system python-build-system)
     (arguments
-     `(#:python ,python-2))
+     `(#:python ,python-2
+       #:phases
+       (modify-phases %standard-phases
+         ;; check phase needs to be run before the build phase. If not,
+         ;; coverage-test-runner looks for tests for the built source files,
+         ;; and fails.
+         (delete 'check)
+         (add-before 'build 'check
+           (lambda _
+             ;; Disable python3 tests
+             (substitute* "check"
+               (("python3") "# python3"))
+             (zero? (system* "./check")))))))
+    (native-inputs
+     `(("python2-coverage-test-runner" ,python2-coverage-test-runner)
+       ("python2-pep8" ,python2-pep8)))
     (propagated-inputs
      `(("python2-pyaml" ,python2-pyaml)))
     (home-page "https://liw.fi/cliapp/")
-- 
2.13.4


^ permalink raw reply related	[relevance 83%]

* [bug#28282] [PATCH 3/3] gnu: python2-larch: Enable tests.
       [not found]     <20170829200905.30771-1-arunisaac@systemreboot.net>
  2017-08-29 20:09 83% ` [bug#28282] [PATCH 2/3] gnu: python2-ttystatus: " Arun Isaac
@ 2017-08-29 20:09 74% ` Arun Isaac
  1 sibling, 0 replies; 200+ results
From: Arun Isaac @ 2017-08-29 20:09 UTC (permalink / raw)
  To: 28282

* gnu/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch: New
file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/python.scm (python2-larch)[source]: Use it.
[arguments]: Move 'check' phase to before 'build' phase.
---
 gnu/local.mk                                       |  1 +
 ...ython2-larch-coverage-4.0a6-compatibility.patch | 29 ++++++++++++++++++++++
 gnu/packages/python.scm                            | 17 ++++++++++++-
 3 files changed, 46 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 2ff87dfa5..e8297272f 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -958,6 +958,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-genshi-fix-tests-on-python-3.5.patch	\
   %D%/packages/patches/python-genshi-isstring-helper.patch	\
   %D%/packages/patches/python-genshi-stripping-of-unsafe-script-tags.patch	\
+  %D%/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch \
   %D%/packages/patches/python-parse-too-many-fields.patch	\
   %D%/packages/patches/python2-rdflib-drop-sparqlwrapper.patch	\
   %D%/packages/patches/python-statsmodels-fix-tests.patch	\
diff --git a/gnu/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch b/gnu/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch
new file mode 100644
index 000000000..f1db5d7c3
--- /dev/null
+++ b/gnu/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch
@@ -0,0 +1,29 @@
+From ca548da9ba78ddee90779051210e3e89185e4f7d Mon Sep 17 00:00:00 2001
+From: Michel Alexandre Salim <michel@michel-slm.name>
+Date: Mon, 15 Feb 2016 23:03:42 +0700
+Subject: coverage-4.0a6 compatibility
+
+coverage 4.0a6 no longer generates .coverage file, so use -f when
+deleting .coverage to ensure deletion does not fail.
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+(limited to 'Makefile')
+
+diff --git a/Makefile b/Makefile
+index 7818f57..362c07f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -23,7 +23,7 @@ fsck-larch.1: fsck-larch.1.in fsck-larch
+ 
+ check:
+ 	python -m CoverageTestRunner --ignore-missing-from=without-tests
+-	rm .coverage
++	rm -f .coverage
+ 	./insert-remove-test tempdir 100
+ 	rm -r tempdir larch.log
+ 	cmdtest tests
+-- 
+cgit v1.1
+
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 675742696..77d7f6e29 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -68,6 +68,7 @@
   #:use-module (gnu packages attr)
   #:use-module (gnu packages backup)
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages databases)
@@ -14091,12 +14092,26 @@ happens using the @code{logging} library.")
        (uri (string-append
              "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/larch/snapshot/larch-"
              version ".tar.gz"))
+       (patches (search-patches
+                 "python2-larch-coverage-4.0a6-compatibility.patch"))
        (sha256
         (base32
          "1p4knkkavlqymgciz2wbcnfrdgdbafhg14maplnk4vbw0q8xs663"))))
     (build-system python-build-system)
     (arguments
-     `(#:python ,python-2))
+     `(#:python ,python-2
+       #:phases
+       (modify-phases %standard-phases
+         ;; check phase needs to be run before the build phase. If not,
+         ;; coverage-test-runner looks for tests for the built source files,
+         ;; and fails.
+         (delete 'check)
+         (add-before 'build 'check
+           (lambda _
+             (zero? (system* "make" "check")))))))
+    (native-inputs
+     `(("cmdtest" ,cmdtest)
+       ("python2-coverage-test-runner" ,python2-coverage-test-runner)))
     (propagated-inputs
      `(("python2-tracing" ,python2-tracing)))
     (home-page "https://liw.fi/larch/")
-- 
2.13.4


^ permalink raw reply related	[relevance 74%]

* [bug#28364] [PATCH] gnu: Add python-betamax-matchers.
@ 2017-09-06  8:18 65% Oleg Pykhalov
  0 siblings, 0 replies; 200+ results
From: Oleg Pykhalov @ 2017-09-06  8:18 UTC (permalink / raw)
  To: 28364

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: [PATCH] gnu: Add python-betamax-matchers. --]
[-- Type: text/x-patch, Size: 1647 bytes --]

From 77ab5817e700319114c9b472229844c6388fdce4 Mon Sep 17 00:00:00 2001
From: Oleg Pykhalov <go.wigust@gmail.com>
Date: Wed, 6 Sep 2017 10:01:23 +0300
Subject: [PATCH] gnu: Add python-betamax-matchers.

* gnu/packages/python.scm (python-betamax-matchers, python2-betamax-matchers):
  New variables.
---
 gnu/packages/python.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 346faf434..4c19d7e66 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -13169,6 +13169,30 @@ replay them during future tests.  It is designed to work with python-requests.")
 (define-public python2-betamax
   (package-with-python2 python-betamax))
 
+(define-public python-betamax-matchers
+  (package
+    (name "python-betamax-matchers")
+    (version "0.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "betamax-matchers" version))
+       (sha256
+        (base32
+         "07qpwjyq2i2aqhz5iwghnj4pqr2ys5n45v1vmpcfx9r5mhwrsq43"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-betamax" ,python-betamax)
+       ("python-requests-toolbelt" ,python-requests-toolbelt)))
+    (home-page "https://github.com/sigmavirus24/betamax_matchers")
+    (synopsis "VCR imitation for python-requests")
+    (description "@code{betamax-matchers} provides a set of Matchers for
+Betamax.")
+    (license license:asl2.0)))
+
+(define-public python2-betamax-matchers
+  (package-with-python2 python-betamax-matchers))
+
 (define-public python-s3transfer
   (package
     (name "python-s3transfer")
-- 
2.14.1

^ permalink raw reply related	[relevance 65%]

* [bug#28363] [PATCH] gnu: Add python-uritemplate.
@ 2017-09-06  8:18 65% Oleg Pykhalov
  0 siblings, 0 replies; 200+ results
From: Oleg Pykhalov @ 2017-09-06  8:18 UTC (permalink / raw)
  To: 28363

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: [PATCH] gnu: Add python-uritemplate. --]
[-- Type: text/x-patch, Size: 1319 bytes --]

From 29ed68d5bf6e6735b8a82602703e49a6ee1615bd Mon Sep 17 00:00:00 2001
From: Oleg Pykhalov <go.wigust@gmail.com>
Date: Wed, 6 Sep 2017 10:07:55 +0300
Subject: [PATCH] gnu: Add python-uritemplate.

* gnu/packages/python.scm (python-uritemplate, python2-uritemplate): New
  variables.
---
 gnu/packages/python.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 4c19d7e66..c002140fd 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -16219,3 +16219,24 @@ ECB and OFB).")
 
 (define-public python2-pyaes
   (package-with-python2 python-pyaes))
+
+(define-public python-uritemplate
+  (package
+    (name "python-uritemplate")
+    (version "3.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "uritemplate" version))
+       (sha256
+        (base32
+         "0781gm9g34wa0asc19dx81ng0nqq07igzv3bbvdqmz13pv7469n0"))))
+    (build-system python-build-system)
+    (home-page "https://uritemplate.readthedocs.org")
+    (synopsis "Library to deal with URI Templates")
+    (description "@code{uritemplate} provides Python library to deal with URI
+Templates.")
+    (license license:bsd-2)))
+
+(define-public python2-uritemplate
+  (package-with-python2 python-uritemplate))
-- 
2.14.1

^ permalink raw reply related	[relevance 65%]

* [bug#28384] [PATCH] gnu: Fix build failures caused by commit.
  @ 2017-09-08 16:41  6%   ` Kei Kebreau
  0 siblings, 0 replies; 200+ results
From: Kei Kebreau @ 2017-09-08 16:41 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 28384


[-- Attachment #1.1: Type: text/plain, Size: 1332 bytes --]

ludo@gnu.org (Ludovic Courtès) writes:

> Hi Kei,
>
> The subject is truncated.  :-)  Caused by which commit?
>
> Kei Kebreau <kkebreau@posteo.net> skribis:
>
>> * gnu/packages/bioinformatics.scm (seek)[arguments]: Modify unpack phase.
>> * gnu/packages/ci.scm (cuirass)[arguments]: Add patch-/bin/sh phase.
>
> This is weird, normally the ‘patch-source-shebangs’ phase, which happens
> right before ‘configure’, should take care of these, no?
>

Normally the 'patch-source-shebangs' does just that, but in this case
the script needs to be patched because the bootstrapping phase depends
on perl.

>> diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
>> index c449754be..3b182b826 100644
>> --- a/gnu/packages/ci.scm
>> +++ b/gnu/packages/ci.scm
>> @@ -216,7 +216,11 @@ their dependencies.")
>>                 (substitute* "Makefile.am"
>>                   (("tests/repo.scm \\\\") "\\"))
>>                 #t))
>> -           (add-after 'disable-repo-tests 'bootstrap
>> +           (add-after 'disable-repo-tests 'patch-/bin/sh
>> +             (lambda _
>> +               (substitute* "build-aux/git-version-gen"
>> +                 (("#!/bin/sh") (string-append "#!" (which "sh"))))))
>
> This phase should return #t.

Thanks for catching that.

>
> Thanks,
> Ludo’.

[-- Attachment #1.2: 0001-gnu-Use-modify-phases-syntax.patch --]
[-- Type: text/plain, Size: 288066 bytes --]

From 87ea8addad973568d8599fb93c8df9766b96b6a1 Mon Sep 17 00:00:00 2001
From: Kei Kebreau <kkebreau@posteo.net>
Date: Sat, 29 Jul 2017 11:28:42 -0400
Subject: [PATCH] gnu: Use 'modify-phases' syntax.
To: guix-patches@gnu.org

* gnu/packages/admin.scm (mingetty, clusterssh, sudo, wpa-supplicant-minimal,
wpa-supplicant, wakelan, acpica, tree, direvent, dstat)[arguments]: Use
'modify-phases' syntax.
* gnu/packages/algebra.scm (arb)[arguments]: Likewise.
* gnu/packages/apr.scm (apr-util)[arguments]: Likewise.
* gnu/packages/audio.scm (clalsadrv, fluidsynth, faad2, lv2-mda-piano,
lv2-mda-epiano, timidity++, vamp, soundtouch, portaudio, rsound,
zita-convolver, zita-alsa-pcmi)[arguments]: Likewise.
* gnu/packages/backup.scm (rdup, btar)[arguments]: Likewise.
* gnu/packages/bioinformatics.scm (bedops, bwa, crossmap, express,
flexbar, grit, hisat, ngs-sdk, subread)[arguments]: Likewise.
* gnu/packages/bittorrent.scm (transmission)[arguments]: Likewise.
* gnu/packages/cdrom.scm (cd-discid)[arguments]: Likewise.
* gnu/packages/compression.scm (sharutils)[arguments]: Likewise.
* gnu/packages/conky.scm (conky)[arguments]: Likewise.
* gnu/packages/databases.scm (bdb)[arguments]: Likewise.
* gnu/packages/debug.scm (delta, c-reduce)[arguments]: Likewise.
* gnu/packages/display-managers.scm (slim)[arguments]: Likewise.
* gnu/packages/dns.scm (dnsmasq)[arguments]: Likewise.
* gnu/packages/emacs.scm (geiser, emacs-wget, bbdb)[arguments]: Likewise.
* gnu/packages/engineering.scm (pcb)[arguments]: Likewise.
* gnu/packages/firmware.scm (ath9k-htc-firmware)[arguments]: Likewise.
* gnu/packages/flashing-tools.scm (flashrom)[arguments]: Likewise.
* gnu/packages/fltk.scm (fltk)[arguments]: Likewise.
* gnu/packages/freedesktop.scm (python-pyxdg)[arguments]: Likewise.
* gnu/packages/gd.scm (perl-gd)[arguments]: Likewise.
* gnu/packages/gkrellm.scm (gkrellm)[arguments]: Likewise.
* gnu/packages/glib.scm (glibmm)[arguments]: Likewise.
* gnu/packages/gl.scm (glew)[arguments]: Likewise.
* gnu/packages/gnome.scm (icon-naming-utils, orbit2, libbonobo, gnome-vfs,
libgnome, libbonoboui, goffice-0.8, dconf)[arguments]: Likewise.
* gnu/packages/gprolog.scm (gprolog)[arguments]: Likewise.
* gnu/packages/gps.scm (gpscorrelate)[arguments]: Likewise.
* gnu/packages/graphics.scm (agg)[arguments]: Likewise.
* gnu/packages/gtk.scm (ganv, girara, gtksourceview-2, guile-present,
python2-pycairo)[arguments]: Likewise.
* gnu/packages/guile.scm (guile-1.8)[arguments]: Likewise.
* gnu/packages/guile-wm.scm (guile-wm)[arguments]: Likewise.
* gnu/packages/hugs.scm (hugs)[arguments]: Likewise.
* gnu/packages/hurd.scm (gnumach-headers, hurd-headers, hurd-minimal)
[arguments]: Likewise.
* gnu/packages/image-viewers.scm (feh, sxiv)[arguments]: Likewise.
* gnu/packages/libcanberra.scm (libcanberra)[arguments]: Likewise.
* gnu/packages/linux.scm (net-tools, bridge-utils, iw, fuse,
unionfs-fuse/static, lm-sensors, i2c-tools, xsensors, perf, mdadm, libaio,
module-init-tools)[arguments]: Likewise.
* gnu/packages/lisp.scm (ccl)[arguments]: Likewise.
* gnu/packages/lout.scm (lout)[arguments]: Likewise.
* gnu/packages/lua.scm (luajit)[arguments]: Likewise.
* gnu/packages/machine-learning.scm (shogun)[arguments]: Likewise.
* gnu/packages/mail.scm (exim)[arguments]: Likewise.
* gnu/packages/man.scm (man-pages, txt2man)[arguments]: Likewise.
* gnu/packages/maths.scm (lapack, superlu-dist, openlibm, openspecfun,
suitesparse)[arguments]: Likewise.
* gnu/packages/messaging.scm (bitlbee)[arguments]: Likewise.
* gnu/packages/mp3.scm (libmad, id3lib, mp3info)[arguments]: Likewise.
* gnu/packages/music.scm (solfege)[arguments]: Likewise.
* gnu/packages/noweb.scm (noweb)[arguments]: Likewise.
* gnu/packages/patchutils.scm (patchutils, quilt, colordiff)[arguments]:
Likewise.
* gnu/packages/pdf.scm (xpdf, zathura-cb, zathura-ps, zathura-djvu,
zathura-pdf-poppler, zathura, podofo, fbida)[arguments]: Likewise.
* gnu/packages/perl.scm (perl-file-list, perl-test-harness)[arguments]:
Likewise.
* gnu/packages/photo.scm (gphoto2)[arguments]: Likewise.
* gnu/packages/popt.scm (popt)[arguments]: Likewise.
* gnu/packages/pretty-print.scm (source-highlight, astyle)[arguments]:
Likewise.
* gnu/packages/pumpio.scm (pumpa)[arguments]: Likewise.
* gnu/packages/python.scm (python-passlib, python-pycrypto, python2-empy,
python-sqlalchemy, python-docopt)[arguments]: Likewise.
* gnu/packages/rdf.scm (lrdf)[arguments]: Likewise.
* gnu/packages/regex.scm (tre)[arguments]: Likewise.
* gnu/packages/rrdtool.scm (rrdtool)[arguments]: Likewise.
* gnu/packages/ruby.scm (ruby-2.1, ruby-1.8)[arguments]: Likewise.
* gnu/packages/sawfish.scm (sawfish)[arguments]: Likewise.
* gnu/packages/scheme.scm (racket)[arguments]: Likewise.
* gnu/packages/sdl.scm (guile-sdl)[arguments]: Likewise.
* gnu/packages/serveez.scm (serveez)[arguments]: Likewise.
* gnu/packages/skribilo.scm (skribilo)[arguments]: Likewise.
* gnu/packages/smalltalk.scm (smalltalk)[arguments]: Likewise.
* gnu/packages/suckless.scm (dmenu, slock)[arguments]: Likewise.
* gnu/packages/tcl.scm (expect)[arguments]: Likewise.
* gnu/packages/telephony.scm (commoncpp)[arguments]: Likewise.
* gnu/packages/textutils.scm (recode, libgtextutils)[arguments]:
Likewise.
* gnu/packages/time.scm (time)[arguments]: Likewise.
* gnu/packages/tor.scm (privoxy)[arguments]: Likewise.
* gnu/packages/uucp.scm (uucp)[arguments]: Likewise.
* gnu/packages/video.scm (libdvdnav-4)[arguments]: Likewise.
* gnu/packages/web-browsers.scm (lynx)[arguments]: Likewise.
* gnu/packages/web.scm (tinyproxy)[arguments]: Likewise.
* gnu/packages/wicd.scm (wicd)[arguments]: Likewise.
* gnu/packages/wm.scm (bspwm)[arguments]: Likewise.
* gnu/packages/xdisorg.scm (sxhkd, xcape)[arguments]: Likewise.
* gnu/packages/xfce.scm (xfconf)[arguments]: Likewise.
* gnu/packages/xfig.scm (transfig)[arguments]: Likewise.
* gnu/packages/xorg.scm (imake)[arguments]: Likewise.
---
 gnu/packages/admin.scm            | 251 +++++++++++++--------------
 gnu/packages/algebra.scm          |  31 ++--
 gnu/packages/apr.scm              |  25 ++-
 gnu/packages/audio.scm            | 192 ++++++++++-----------
 gnu/packages/backup.scm           |  33 ++--
 gnu/packages/bioinformatics.scm   | 259 ++++++++++++++--------------
 gnu/packages/bittorrent.scm       |  33 ++--
 gnu/packages/cdrom.scm            |   2 +-
 gnu/packages/compression.scm      |  16 +-
 gnu/packages/conky.scm            |  31 ++--
 gnu/packages/databases.scm        |  47 +++--
 gnu/packages/debug.scm            |  70 ++++----
 gnu/packages/display-managers.scm |  24 +--
 gnu/packages/dns.scm              |   2 +-
 gnu/packages/emacs.scm            |  74 ++++----
 gnu/packages/engineering.scm      |  43 +++--
 gnu/packages/firmware.scm         |  48 +++---
 gnu/packages/flashing-tools.scm   |  21 ++-
 gnu/packages/fltk.scm             |  42 ++---
 gnu/packages/freedesktop.scm      |  31 ++--
 gnu/packages/gd.scm               |  19 +-
 gnu/packages/gkrellm.scm          |   4 +-
 gnu/packages/gl.scm               |   2 +-
 gnu/packages/glib.scm             |  33 ++--
 gnu/packages/gnome.scm            | 145 ++++++++--------
 gnu/packages/gprolog.scm          |  17 +-
 gnu/packages/gps.scm              |  19 +-
 gnu/packages/graphics.scm         |  13 +-
 gnu/packages/gtk.scm              |  80 ++++-----
 gnu/packages/guile-wm.scm         |  83 ++++-----
 gnu/packages/guile.scm            |  36 ++--
 gnu/packages/hugs.scm             |  61 +++----
 gnu/packages/hurd.scm             |  60 ++++---
 gnu/packages/image-viewers.scm    |  14 +-
 gnu/packages/libcanberra.scm      |  18 +-
 gnu/packages/linux.scm            | 353 +++++++++++++++++++-------------------
 gnu/packages/lisp.scm             |  61 ++++---
 gnu/packages/lout.scm             | 119 +++++++------
 gnu/packages/lua.scm              |   2 +-
 gnu/packages/machine-learning.scm |  88 +++++-----
 gnu/packages/mail.scm             |  90 +++++-----
 gnu/packages/man.scm              |   4 +-
 gnu/packages/maths.scm            | 100 +++++------
 gnu/packages/messaging.scm        |  27 ++-
 gnu/packages/mp3.scm              |  87 +++++-----
 gnu/packages/music.scm            | 102 +++++------
 gnu/packages/noweb.scm            |  79 +++++----
 gnu/packages/patchutils.scm       | 120 ++++++-------
 gnu/packages/pdf.scm              |  67 ++++----
 gnu/packages/perl.scm             |  29 ++--
 gnu/packages/photo.scm            |  15 +-
 gnu/packages/popt.scm             |  17 +-
 gnu/packages/pretty-print.scm     |  65 +++----
 gnu/packages/pumpio.scm           |  32 ++--
 gnu/packages/python.scm           |  45 +++--
 gnu/packages/rdf.scm              |  40 ++---
 gnu/packages/regex.scm            |  20 +--
 gnu/packages/rrdtool.scm          |  19 +-
 gnu/packages/ruby.scm             |  40 ++---
 gnu/packages/sawfish.scm          |  50 +++---
 gnu/packages/scheme.scm           | 134 +++++++--------
 gnu/packages/sdl.scm              |  46 ++---
 gnu/packages/serveez.scm          |  15 +-
 gnu/packages/skribilo.scm         |  29 ++--
 gnu/packages/smalltalk.scm        |  17 +-
 gnu/packages/suckless.scm         |   4 +-
 gnu/packages/tcl.scm              |  15 +-
 gnu/packages/telephony.scm        |  12 +-
 gnu/packages/textutils.scm        |  25 ++-
 gnu/packages/time.scm             |  20 +--
 gnu/packages/tor.scm              |  14 +-
 gnu/packages/uucp.scm             |  24 +--
 gnu/packages/video.scm            |   9 +-
 gnu/packages/web-browsers.scm     |  10 +-
 gnu/packages/web.scm              |  15 +-
 gnu/packages/wicd.scm             | 214 ++++++++++++-----------
 gnu/packages/wm.scm               |   2 +-
 gnu/packages/xdisorg.scm          |   5 +-
 gnu/packages/xfce.scm             |  22 +--
 gnu/packages/xfig.scm             |  75 ++++----
 gnu/packages/xorg.scm             |  39 ++---
 81 files changed, 2140 insertions(+), 2156 deletions(-)

diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index ea71de6f5..8f3370fbf 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -361,32 +361,34 @@ login, passwd, su, groupadd, and useradd.")
                "05yxrp44ky2kg6qknk1ih0kvwkgbn9fbz77r3vci7agslh5wjm8g"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases (alist-replace 'configure
-                               (lambda* (#:key inputs outputs
-                                         #:allow-other-keys)
-                                 (let* ((out    (assoc-ref outputs "out"))
-                                        (man8   (string-append
-                                                 out "/share/man/man8"))
-                                        (sbin   (string-append out "/sbin"))
-                                        (shadow (assoc-ref inputs "shadow"))
-                                        (login  (string-append shadow
-                                                               "/bin/login")))
-                                   (substitute* "Makefile"
-                                     (("^SBINDIR.*")
-                                      (string-append "SBINDIR = " out
-                                                     "/sbin\n"))
-                                     (("^MANDIR.*")
-                                      (string-append "MANDIR = " out
-                                                     "/share/man/man8\n")))
-
-                                   ;; Pick the right 'login' by default.
-                                   (substitute* "mingetty.c"
-                                     (("\"/bin/login\"")
-                                      (string-append "\"" login "\"")))
-
-                                   (mkdir-p sbin)
-                                   (mkdir-p man8)))
-                               %standard-phases)
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs
+                     #:allow-other-keys)
+             (let* ((out    (assoc-ref outputs "out"))
+                    (man8   (string-append
+                             out "/share/man/man8"))
+                    (sbin   (string-append out "/sbin"))
+                    (shadow (assoc-ref inputs "shadow"))
+                    (login  (string-append shadow
+                                           "/bin/login")))
+               (substitute* "Makefile"
+                 (("^SBINDIR.*")
+                  (string-append "SBINDIR = " out
+                                 "/sbin\n"))
+                 (("^MANDIR.*")
+                  (string-append "MANDIR = " out
+                                 "/share/man/man8\n")))
+
+               ;; Pick the right 'login' by default.
+               (substitute* "mingetty.c"
+                 (("\"/bin/login\"")
+                  (string-append "\"" login "\"")))
+
+               (mkdir-p sbin)
+               (mkdir-p man8))
+             #t)))
        #:tests? #f))                              ; no tests
     (inputs `(("shadow" ,shadow)))
 
@@ -725,25 +727,25 @@ by bandwidth they use.")
                          ("perl-x11-protocol" ,perl-x11-protocol)))
     (arguments
      `(#:phases
-       (alist-cons-after
-        'install 'set-load-paths
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          ;; Put the perl-tk and perl-x11-protocol modules in the perl inc
-          ;; path for PROG
-          (let* ((out  (assoc-ref outputs "out"))
-                 (prog (string-append out "/bin/cssh"))
-                 (perl-ver ,(package-version perl))
-                 (x11-inc (string-append
-                           (assoc-ref inputs "perl-x11-protocol")
-                           "/lib/perl5/site_perl/" perl-ver))
-                 (tk-inc (string-append
-                          (assoc-ref inputs "perl-tk")
-                          "/lib/perl5/site_perl/" perl-ver
-                          "/x86_64-linux")))
-            (wrap-program
-             prog
-             `("PERL5LIB" ":" prefix (,x11-inc ,tk-inc)))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'install 'set-load-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Put the perl-tk and perl-x11-protocol modules in the perl inc
+             ;; path for PROG
+             (let* ((out  (assoc-ref outputs "out"))
+                    (prog (string-append out "/bin/cssh"))
+                    (perl-ver ,(package-version perl))
+                    (x11-inc (string-append
+                              (assoc-ref inputs "perl-x11-protocol")
+                              "/lib/perl5/site_perl/" perl-ver))
+                    (tk-inc (string-append
+                             (assoc-ref inputs "perl-tk")
+                             "/lib/perl5/site_perl/" perl-ver
+                             "/x86_64-linux")))
+               (wrap-program
+                   prog
+                 `("PERL5LIB" ":" prefix (,x11-inc ,tk-inc))))
+             #t)))))
     ;; The clusterssh.sourceforge.net address requires login to view
     (home-page "https://sourceforge.net/projects/clusterssh/")
     (synopsis "Secure concurrent multi-server terminal control")
@@ -871,7 +873,8 @@ system administrator.")
                 "$(TMPDIR)/dummy")
                (("\\$\\(DESTDIR\\)\\$\\(vardir\\)")
                 ;; Don't try to create /var/db/sudo.
-                "$(TMPDIR)/dummy")))))
+                "$(TMPDIR)/dummy"))
+             #t)))
 
        ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but
        ;; the chroot's /etc/passwd doesn't have it.  Turn off the tests.
@@ -907,13 +910,14 @@ commands and their arguments.")
                 "0l0l5gz3d5j9bqjsbjlfcv4w4jwndllp9fmyai4x9kg6qhs6v4xl"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (chdir "wpa_supplicant")
-                   (copy-file "defconfig" ".config")
-                   (let ((port (open-file ".config" "al")))
-                     (display "
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (chdir "wpa_supplicant")
+             (copy-file "defconfig" ".config")
+             (let ((port (open-file ".config" "al")))
+               (display "
       CONFIG_DEBUG_SYSLOG=y
 
       # Choose GnuTLS (the default is OpenSSL.)
@@ -923,26 +927,24 @@ commands and their arguments.")
       CFLAGS += $(shell pkg-config libnl-3.0 --cflags)
       CONFIG_LIBNL32=y
       CONFIG_READLINE=y\n" port)
-                     (close-port port)))
-
-                 (alist-cons-after
-                  'install 'install-man-pages
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let* ((out  (assoc-ref outputs "out"))
-                           (man  (string-append out "/share/man"))
-                           (man5 (string-append man "/man5"))
-                           (man8 (string-append man "/man8")))
-                      (define (copy-man-page target)
-                        (lambda (file)
-                          (install-file file target)))
-
-                      (mkdir-p man5) (mkdir man8)
-                      (for-each (copy-man-page man5)
-                                (find-files "doc/docbook" "\\.5"))
-                      (for-each (copy-man-page man8)
-                                (find-files "doc/docbook" "\\.8"))
-                      #t))
-                  %standard-phases))
+               (close-port port))
+             #t))
+         (add-after 'install 'install-man-pages
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let* ((out  (assoc-ref outputs "out"))
+                   (man  (string-append out "/share/man"))
+                   (man5 (string-append man "/man5"))
+                   (man8 (string-append man "/man8")))
+              (define (copy-man-page target)
+                (lambda (file)
+                  (install-file file target)))
+
+              (mkdir-p man5) (mkdir man8)
+              (for-each (copy-man-page man5)
+                        (find-files "doc/docbook" "\\.5"))
+              (for-each (copy-man-page man8)
+                        (find-files "doc/docbook" "\\.8"))
+              #t))))
 
       #:make-flags (list "CC=gcc"
                          (string-append "BINDIR=" (assoc-ref %outputs "out")
@@ -979,25 +981,24 @@ This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.")
     (arguments
      (substitute-keyword-arguments (package-arguments wpa-supplicant-minimal)
        ((#:phases phases)
-        `(alist-cons-after
-          'configure 'configure-for-dbus
-          (lambda _
-            (let ((port (open-file ".config" "al")))
-              (display "
+        `(modify-phases ,phases
+           (add-after 'configure 'configure-for-dbus
+             (lambda _
+               (let ((port (open-file ".config" "al")))
+                 (display "
       CONFIG_CTRL_IFACE_DBUS=y
       CONFIG_CTRL_IFACE_DBUS_NEW=y
       CONFIG_CTRL_IFACE_DBUS_INTRO=y\n" port)
-              (close-port port))
-            #t)
-          (alist-cons-after
-           'install-man-pages 'install-dbus-conf
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (dir (string-append out "/etc/dbus-1/system.d")))
-               (mkdir-p dir)
-               (copy-file "dbus/dbus-wpa_supplicant.conf"
-                          (string-append dir "/wpa_supplicant.conf"))))
-           ,phases)))))))
+                 (close-port port))
+               #t))
+          (add-after 'install-man-pages 'install-dbus-conf
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (dir (string-append out "/etc/dbus-1/system.d")))
+                (mkdir-p dir)
+                (copy-file "dbus/dbus-wpa_supplicant.conf"
+                           (string-append dir "/wpa_supplicant.conf")))
+              #t))))))))
 
 (define-public wakelan
   (package
@@ -1013,22 +1014,22 @@ This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.")
                 "0vydqpf44146ir6k87gmqaq6xy66xhc1gkr3nsd7jj3nhy7ypx9x"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let ((out (assoc-ref outputs "out")))
-                     (mkdir-p (string-append out "/bin"))
-                     (mkdir-p (string-append out "/share/man/man1"))
-
-                     ;; It's an old configure script that doesn't understand
-                     ;; the extra options we pass.
-                     (setenv "CONFIG_SHELL" (which "bash"))
-                     (zero?
-                      (system* "./configure"
-                               (string-append "--prefix=" out)
-                               (string-append "--mandir=" out
-                                              "/share/man")))))
-                 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/bin"))
+               (mkdir-p (string-append out "/share/man/man1"))
+
+               ;; It's an old configure script that doesn't understand
+               ;; the extra options we pass.
+               (setenv "CONFIG_SHELL" (which "bash"))
+               (zero?
+                (system* "./configure"
+                         (string-append "--prefix=" out)
+                         (string-append "--mandir=" out
+                                        "/share/man")))))))
        #:tests? #f))
     (home-page "http://kernel.org")               ; really, no home page
     (synopsis "Send a wake-on-LAN packet")
@@ -1087,7 +1088,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
                           "HOST=_LINUX"
                           "OPT_CFLAGS=-Wall -fno-strict-aliasing")
        #:tests? #f  ; no 'check' target.
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (home-page "http://acpica.org/")
     (synopsis "Tools for the development and debug of ACPI tables")
     (description
@@ -1197,7 +1198,7 @@ recover lost partitions and/or make non-booting disks bootable again.")
                (base32 "04kviw799qxly08zb8n5mgxfd96gyis6x69q2qiw86jnh87c4mv9"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-delete 'configure %standard-phases)
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
        #:tests? #f                      ; no check target
        #:make-flags (let ((out (assoc-ref %outputs "out")))
                                (list (string-append "prefix=" out)))))
@@ -1226,23 +1227,23 @@ environment variable is set and output is to tty.")
                            "#!$SHELL")))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'build 'patch-/bin/sh
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   ;; Use the right shell when executing the watcher and
-                   ;; user-provided shell commands.
-                   (let ((bash (assoc-ref inputs "bash")))
-                     (substitute* '("src/direvent.c" "src/progman.c")
-                       (("\"/bin/sh\"")
-                        (string-append "\"" bash "/bin/sh\"")))
-
-                     ;; Adjust the 'shell.at' test accordingly.
-                     (substitute* "tests/testsuite"
-                       (("SHELL=/bin/sh")
-                        (string-append "SHELL=" bash "/bin/sh")))
-
-                     #t))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'patch-/bin/sh
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Use the right shell when executing the watcher and
+             ;; user-provided shell commands.
+             (let ((bash (assoc-ref inputs "bash")))
+               (substitute* '("src/direvent.c" "src/progman.c")
+                 (("\"/bin/sh\"")
+                  (string-append "\"" bash "/bin/sh\"")))
+
+               ;; Adjust the 'shell.at' test accordingly.
+               (substitute* "tests/testsuite"
+                 (("SHELL=/bin/sh")
+                  (string-append "SHELL=" bash "/bin/sh")))
+
+               #t))))))
     (home-page "https://www.gnu.org/software/direvent/")
     (synopsis "Daemon to monitor directories for events such as file removal")
     (description
@@ -1699,7 +1700,7 @@ results (ndiff), and a packet generation and response analysis tool (nping).")
                       (list (string-append "DESTDIR=" out)
                             "prefix=/"))
        ;; no configure script
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs `(("python-2" ,python-2)))
     (synopsis "Versatile resource statistics tool")
     (description "Dstat is a versatile replacement for @command{vmstat},
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index e4f30a579..08940e4f9 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -334,22 +334,21 @@ fast arithmetic.")
       ("mpfr" ,mpfr)))
    (arguments
     `(#:phases
-        (alist-replace
-         'configure
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (let ((out (assoc-ref outputs "out"))
-                 (flint (assoc-ref inputs "flint"))
-                 (gmp (assoc-ref inputs "gmp"))
-                 (mpfr (assoc-ref inputs "mpfr")))
-             ;; do not pass "--enable-fast-install", which makes the
-             ;; homebrew configure process fail
-             (zero? (system*
-                     "./configure"
-                     (string-append "--prefix=" out)
-                     (string-append "--with-flint=" flint)
-                     (string-append "--with-gmp=" gmp)
-                     (string-append "--with-mpfr=" mpfr)))))
-         %standard-phases)))
+      (modify-phases %standard-phases
+        (replace 'configure
+          (lambda* (#:key inputs outputs #:allow-other-keys)
+            (let ((out (assoc-ref outputs "out"))
+                  (flint (assoc-ref inputs "flint"))
+                  (gmp (assoc-ref inputs "gmp"))
+                  (mpfr (assoc-ref inputs "mpfr")))
+              ;; do not pass "--enable-fast-install", which makes the
+              ;; homebrew configure process fail
+              (zero? (system*
+                      "./configure"
+                      (string-append "--prefix=" out)
+                      (string-append "--with-flint=" flint)
+                      (string-append "--with-gmp=" gmp)
+                      (string-append "--with-mpfr=" mpfr)))))))))
    (synopsis "Arbitrary precision floating-point ball arithmetic")
    (description
     "Arb is a C library for arbitrary-precision floating-point ball
diff --git a/gnu/packages/apr.scm b/gnu/packages/apr.scm
index 17945c039..baadb41b6 100644
--- a/gnu/packages/apr.scm
+++ b/gnu/packages/apr.scm
@@ -80,19 +80,18 @@ around or take advantage of platform-specific deficiencies or features.")
      `(("expat" ,expat)))
     (arguments
      '(#:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (let ((out   (assoc-ref outputs "out"))
-                (apr   (assoc-ref inputs  "apr"))
-                (expat (assoc-ref inputs  "expat")))
-            (setenv "CONFIG_SHELL" (which "bash"))
-            (zero?
-             (system* "./configure"
-                      (string-append "--prefix=" out)
-                      (string-append "--with-apr=" apr)
-                      (string-append "--with-expat=" expat)))))
-        %standard-phases)
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out   (assoc-ref outputs "out"))
+                   (apr   (assoc-ref inputs  "apr"))
+                   (expat (assoc-ref inputs  "expat")))
+               (setenv "CONFIG_SHELL" (which "bash"))
+               (zero?
+                (system* "./configure"
+                         (string-append "--prefix=" out)
+                         (string-append "--with-apr=" apr)
+                         (string-append "--with-expat=" expat)))))))
 
        ;; There are race conditions during 'make check'.  Typically, the
        ;; 'testall' executable is not built yet by the time 'make check' tries
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 16bca3b6b..7b003949d 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -623,23 +623,22 @@ language and software synthesizer.")
      `(#:tests? #f ; no "check" target
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:phases
-       (alist-cons-after
-        'unpack 'patch-makefile-and-enter-directory
-        (lambda _
-          (substitute* "libs/Makefile"
-            (("/sbin/ldconfig") "true")
-            (("^LIBDIR =.*") "LIBDIR = lib\n"))
-          (chdir "libs")
-          #t)
-        (alist-cons-after
-         'install
-         'install-symlink
-         (lambda _
-           (symlink "libclalsadrv.so"
-                    (string-append (assoc-ref %outputs "out")
-                                   "/lib/libclalsadrv.so.2")))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-makefile-and-enter-directory
+           (lambda _
+             (substitute* "libs/Makefile"
+               (("/sbin/ldconfig") "true")
+               (("^LIBDIR =.*") "LIBDIR = lib\n"))
+             (chdir "libs")
+             #t))
+         (add-after 'install 'install-symlink
+           (lambda _
+             (symlink "libclalsadrv.so"
+                      (string-append (assoc-ref %outputs "out")
+                                     "/lib/libclalsadrv.so.2"))
+             #t))
          ;; no configure script
-         (alist-delete 'configure %standard-phases)))))
+         (delete 'configure))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("fftw" ,fftw)))
@@ -978,11 +977,9 @@ follower.")
     (build-system gnu-build-system)
     (arguments
      `(#:phases
-       (alist-cons-after
-        'unpack
-        'remove-broken-symlinks
-        (lambda _ (delete-file-recursively "m4") #t)
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-broken-symlinks
+           (lambda _ (delete-file-recursively "m4") #t)))))
     (inputs
      `(("libsndfile" ,libsndfile)
        ("alsa-lib" ,alsa-lib)
@@ -1021,12 +1018,11 @@ also play midifiles using a Soundfont.")
        ("unzip" ,unzip)))
     (arguments
      '(#:phases
-       (alist-cons-after
-        'unpack 'bootstrap
-        (lambda _
-          (substitute* "bootstrap" (("\r\n") "\n"))
-          (zero? (system* "sh" "bootstrap")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'bootstrap
+           (lambda _
+             (substitute* "bootstrap" (("\r\n") "\n"))
+             (zero? (system* "sh" "bootstrap")))))))
     (home-page "http://www.audiocoding.com/faad2.html")
     (synopsis "MPEG-4 and MPEG-2 AAC decoder")
     (description
@@ -1680,7 +1676,7 @@ software.")
                      "TYPE=mdaPiano"
                      (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:tests? #f ; no check target
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("lv2" ,lv2)
        ("lvtk" ,lvtk)))
@@ -1703,7 +1699,7 @@ software.")
                      "TYPE=mdaEPiano"
                      (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:tests? #f ; no check target
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (home-page "http://elephly.net/lv2/mdaepiano.html")
     (synopsis "LV2 port of the mda EPiano plugin")
     (description "An LV2 port of the mda EPiano VSTi.")))
@@ -2096,19 +2092,19 @@ Suil currently supports every combination of Gtk 2, Qt 4, and X11.")
              (string-append "--with-default-path="
                             (assoc-ref %outputs "out") "/etc/timidity"))
        #:phases
-       (alist-cons-after
-        'install 'install-config
-        (lambda _
-          (let ((out (string-append (assoc-ref %outputs "out")
-                                    "/etc/timidity")))
-            (mkdir-p out)
-            (call-with-output-file
-                (string-append out "/timidity.cfg")
-              (lambda (port)
-                (format port (string-append "source "
-                                            (assoc-ref %build-inputs "freepats")
-                                            "/share/freepats/freepats.cfg"))))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'install 'install-config
+           (lambda _
+             (let ((out (string-append (assoc-ref %outputs "out")
+                                       "/etc/timidity")))
+               (mkdir-p out)
+               (call-with-output-file
+                   (string-append out "/timidity.cfg")
+                 (lambda (port)
+                   (format port (string-append "source "
+                                               (assoc-ref %build-inputs "freepats")
+                                               "/share/freepats/freepats.cfg")))))
+             #t)))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("ao" ,ao)
@@ -2147,16 +2143,15 @@ disks as various audio file formats.")
     (arguments
      `(#:tests? #f                      ; no check target
        #:phases
-       (alist-cons-after
-        'install 'remove-libvamp-hostsdk.la
-        (lambda* (#:key outputs #:allow-other-keys)
-          ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
-          (for-each delete-file
-                    (let ((out (assoc-ref outputs "out")))
-                      (list (string-append out "/lib/libvamp-sdk.la")
-                            (string-append out "/lib/libvamp-hostsdk.la"))))
-          #t)
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'install 'remove-libvamp-hostsdk.la
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
+             (for-each delete-file
+                       (let ((out (assoc-ref outputs "out")))
+                         (list (string-append out "/lib/libvamp-sdk.la")
+                               (string-append out "/lib/libvamp-hostsdk.la"))))
+             #t)))))
     (inputs
      `(("libsndfile" ,libsndfile)))
     (native-inputs
@@ -2318,11 +2313,10 @@ Tracker 3 S3M and Impulse Tracker IT files.")
        ("file" ,file)))
     (arguments
      '(#:phases
-       (alist-cons-after
-        'unpack 'bootstrap
-        (lambda _
-          (zero? (system* "sh" "bootstrap")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'bootstrap
+           (lambda _
+             (zero? (system* "sh" "bootstrap")))))))
     (home-page "http://www.surina.net/soundtouch/")
     (synopsis
      "Audio processing library for changing tempo, pitch and playback rate")
@@ -2456,11 +2450,10 @@ portions of LAME.")
      '(#:phases
        ;; Autoreconf is necessary because the audacity-compat patch modifies
        ;; .in files.
-       (alist-cons-after
-        'unpack 'autoreconf
-        (lambda _
-          (zero? (system* "autoreconf" "-vif")))
-        %standard-phases)
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autoreconf
+           (lambda _
+             (zero? (system* "autoreconf" "-vif")))))
        #:tests? #f))                    ;no 'check' target
     (home-page "http://www.portaudio.com/")
     (synopsis "Audio I/O library")
@@ -2524,14 +2517,13 @@ synthesizer written in C++.")
        ("pulseaudio" ,pulseaudio)))
     (arguments
      '(#:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key outputs #:allow-other-keys)
-          (setenv "CC" "gcc")
-          (zero?
-           (system* "./configure"
-                    (string-append "--prefix=" (assoc-ref outputs "out")))))
-        %standard-phases)
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (setenv "CC" "gcc")
+             (zero?
+              (system* "./configure"
+                       (string-append "--prefix=" (assoc-ref outputs "out")))))))
        ;; No 'check' target.
        #:tests? #f))
     (home-page "http://themaister.net/rsound.html")
@@ -2598,22 +2590,21 @@ result.")
      `(#:tests? #f ; no "check" target
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:phases
-       (alist-cons-after
-        'unpack 'patch-makefile-and-enter-directory
-        (lambda _
-          (substitute* "libs/Makefile"
-            (("ldconfig") "true")
-            (("^LIBDIR =.*") "LIBDIR = lib\n"))
-          (chdir "libs") #t)
-        (alist-cons-after
-         'install
-         'install-symlink
-         (lambda _
-           (symlink "libzita-convolver.so"
-                    (string-append (assoc-ref %outputs "out")
-                                   "/lib/libzita-convolver.so.3")))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-makefile-and-enter-directory
+           (lambda _
+             (substitute* "libs/Makefile"
+               (("ldconfig") "true")
+               (("^LIBDIR =.*") "LIBDIR = lib\n"))
+             (chdir "libs") #t))
+         (add-after 'install 'install-symlink
+           (lambda _
+             (symlink "libzita-convolver.so"
+                      (string-append (assoc-ref %outputs "out")
+                                     "/lib/libzita-convolver.so.3"))
+             #t))
          ;; no configure script
-         (alist-delete 'configure %standard-phases)))))
+         (delete 'configure))))
     (inputs `(("fftwf" ,fftwf)))
     (home-page "http://kokkinizita.linuxaudio.org")
     (synopsis "Fast, partitioned convolution engine library")
@@ -2688,23 +2679,22 @@ provide high-quality sample rate conversion.")
      `(#:tests? #f ; no "check" target
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:phases
-       (alist-cons-after
-        'unpack 'patch-makefile-and-enter-directory
-        (lambda _
-          (substitute* "libs/Makefile"
-            (("ldconfig") "true")
-            (("^LIBDIR =.*") "LIBDIR = lib\n"))
-          (chdir "libs")
-          #t)
-        (alist-cons-after
-         'install
-         'install-symlink
-         (lambda _
-           (symlink "libzita-alsa-pcmi.so"
-                    (string-append (assoc-ref %outputs "out")
-                                   "/lib/libzita-alsa-pcmi.so.0")))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-makefile-and-enter-directory
+           (lambda _
+             (substitute* "libs/Makefile"
+               (("ldconfig") "true")
+               (("^LIBDIR =.*") "LIBDIR = lib\n"))
+             (chdir "libs")
+             #t))
+         (add-after 'install 'install-symlink
+           (lambda _
+             (symlink "libzita-alsa-pcmi.so"
+                      (string-append (assoc-ref %outputs "out")
+                                     "/lib/libzita-alsa-pcmi.so.0"))
+             #t))
          ;; no configure script
-         (alist-delete 'configure %standard-phases)))))
+         (delete 'configure))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("fftw" ,fftw)))
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index eca69bebe..114e46939 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -292,20 +292,20 @@ random access nor for in-place modification.")
        ("nettle" ,nettle)))
     (arguments
      `(#:parallel-build? #f             ;race conditions
-       #:phases (alist-cons-before
-                 'build 'remove-Werror
-                 ;; rdup uses a deprecated function from libarchive
-                 (lambda _
-                   (substitute* "GNUmakefile"
-                     (("^(CFLAGS=.*)-Werror" _ front) front)))
-                 (alist-cons-before
-                  'check 'pre-check
-                  (lambda _
-                    (setenv "HOME" (getcwd))
-                    (substitute* "testsuite/rdup/rdup.rdup-up-t-with-file.exp"
-                      (("/bin/cat") (which "cat"))))
-
-                  %standard-phases))))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'remove-Werror
+           ;; rdup uses a deprecated function from libarchive
+           (lambda _
+             (substitute* "GNUmakefile"
+               (("^(CFLAGS=.*)-Werror" _ front) front))
+             #t))
+         (add-before 'check 'pre-check
+           (lambda _
+             (setenv "HOME" (getcwd))
+             (substitute* "testsuite/rdup/rdup.rdup-up-t-with-file.exp"
+               (("/bin/cat") (which "cat")))
+             #t)))))
     (home-page "http://archive.miek.nl/projects/rdup/index.html")
     (synopsis "Provide a list of files to backup")
     (description
@@ -335,9 +335,8 @@ list and implement the backup strategy.")
                       "CC=gcc")
        #:tests? #f                      ;test input not distributed
        #:phases
-       (alist-delete
-        'configure                      ;no configure phase
-        %standard-phases)))
+       ;; no configure phase
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "http://viric.name/cgi-bin/btar/doc/trunk/doc/home.wiki")
     (synopsis "Tar-compatible archiver")
     (description
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 1f1b686c7..a433dc121 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -369,32 +369,33 @@ transparently with both VCFs and BCFs, both uncompressed and BGZF-compressed.")
      '(#:tests? #f
        #:make-flags (list (string-append "BINDIR=" %output "/bin"))
        #:phases
-       (alist-cons-after
-         'unpack 'unpack-tarballs
-         (lambda _
-           ;; FIXME: Bedops includes tarballs of minimally patched upstream
-           ;; libraries jansson, zlib, and bzip2.  We cannot just use stock
-           ;; libraries because at least one of the libraries (zlib) is
-           ;; patched to add a C++ function definition (deflateInit2cpp).
-           ;; Until the Bedops developers offer a way to link against system
-           ;; libraries we have to build the in-tree copies of these three
-           ;; libraries.
-
-           ;; See upstream discussion:
-           ;; https://github.com/bedops/bedops/issues/124
-
-           ;; Unpack the tarballs to benefit from shebang patching.
-           (with-directory-excursion "third-party"
-             (and (zero? (system* "tar" "xvf" "jansson-2.6.tar.bz2"))
-                  (zero? (system* "tar" "xvf" "zlib-1.2.7.tar.bz2"))
-                  (zero? (system* "tar" "xvf" "bzip2-1.0.6.tar.bz2"))))
-           ;; Disable unpacking of tarballs in Makefile.
-           (substitute* "system.mk/Makefile.linux"
-             (("^\tbzcat .*") "\t@echo \"not unpacking\"\n")
-             (("\\./configure") "CONFIG_SHELL=bash ./configure"))
-           (substitute* "third-party/zlib-1.2.7/Makefile.in"
-             (("^SHELL=.*$") "SHELL=bash\n")))
-         (alist-delete 'configure %standard-phases))))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unpack-tarballs
+           (lambda _
+             ;; FIXME: Bedops includes tarballs of minimally patched upstream
+             ;; libraries jansson, zlib, and bzip2.  We cannot just use stock
+             ;; libraries because at least one of the libraries (zlib) is
+             ;; patched to add a C++ function definition (deflateInit2cpp).
+             ;; Until the Bedops developers offer a way to link against system
+             ;; libraries we have to build the in-tree copies of these three
+             ;; libraries.
+
+             ;; See upstream discussion:
+             ;; https://github.com/bedops/bedops/issues/124
+
+             ;; Unpack the tarballs to benefit from shebang patching.
+             (with-directory-excursion "third-party"
+               (and (zero? (system* "tar" "xvf" "jansson-2.6.tar.bz2"))
+                    (zero? (system* "tar" "xvf" "zlib-1.2.7.tar.bz2"))
+                    (zero? (system* "tar" "xvf" "bzip2-1.0.6.tar.bz2"))))
+             ;; Disable unpacking of tarballs in Makefile.
+             (substitute* "system.mk/Makefile.linux"
+               (("^\tbzcat .*") "\t@echo \"not unpacking\"\n")
+               (("\\./configure") "CONFIG_SHELL=bash ./configure"))
+             (substitute* "third-party/zlib-1.2.7/Makefile.in"
+               (("^SHELL=.*$") "SHELL=bash\n"))
+             #t))
+         (delete 'configure))))
     (home-page "https://github.com/bedops/bedops")
     (synopsis "Tools for high-performance genomic feature operations")
     (description
@@ -1325,20 +1326,21 @@ splice junctions between exons.")
     (arguments
      '(#:tests? #f ;no "check" target
        #:phases
-       (alist-replace
-        'install
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let ((bin (string-append
-                      (assoc-ref outputs "out") "/bin"))
-                (doc (string-append
-                      (assoc-ref outputs "out") "/share/doc/bwa"))
-                (man (string-append
-                      (assoc-ref outputs "out") "/share/man/man1")))
-            (install-file "bwa" bin)
-            (install-file "README.md" doc)
-            (install-file "bwa.1" man)))
-        ;; no "configure" script
-        (alist-delete 'configure %standard-phases))))
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((bin (string-append
+                         (assoc-ref outputs "out") "/bin"))
+                   (doc (string-append
+                         (assoc-ref outputs "out") "/share/doc/bwa"))
+                   (man (string-append
+                         (assoc-ref outputs "out") "/share/man/man1")))
+               (install-file "bwa" bin)
+               (install-file "README.md" doc)
+               (install-file "bwa.1" man))
+             #t))
+         ;; no "configure" script
+         (delete 'configure))))
     (inputs `(("zlib" ,zlib)))
     ;; Non-portable SSE instructions are used so building fails on platforms
     ;; other than x86_64.
@@ -1815,10 +1817,9 @@ time.")
     (arguments
      `(#:python ,python-2
        #:phases
-       (alist-cons-after
-        'unpack 'set-env
-        (lambda _ (setenv "CROSSMAP_USE_SYSTEM_PYSAM" "1"))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'set-env
+           (lambda _ (setenv "CROSSMAP_USE_SYSTEM_PYSAM" "1") #t)))))
     (inputs
      `(("python-numpy" ,python2-numpy)
        ("python-pysam" ,python2-pysam)
@@ -2365,19 +2366,18 @@ dynamic programming or a variety of heuristics.")
     (arguments
      `(#:tests? #f ;no "check" target
        #:phases
-       (alist-cons-after
-        'unpack 'use-shared-boost-libs-and-set-bamtools-paths
-        (lambda* (#:key inputs #:allow-other-keys)
-          (substitute* "CMakeLists.txt"
-            (("set\\(Boost_USE_STATIC_LIBS ON\\)")
-             "set(Boost_USE_STATIC_LIBS OFF)")
-            (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/bamtools/include")
-             (string-append (assoc-ref inputs "bamtools") "/include/bamtools")))
-          (substitute* "src/CMakeLists.txt"
-            (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/\\.\\./bamtools/lib")
-             (string-append (assoc-ref inputs "bamtools") "/lib/bamtools")))
-          #t)
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'use-shared-boost-libs-and-set-bamtools-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "CMakeLists.txt"
+               (("set\\(Boost_USE_STATIC_LIBS ON\\)")
+                "set(Boost_USE_STATIC_LIBS OFF)")
+               (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/bamtools/include")
+                (string-append (assoc-ref inputs "bamtools") "/include/bamtools")))
+             (substitute* "src/CMakeLists.txt"
+               (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/\\.\\./bamtools/lib")
+                (string-append (assoc-ref inputs "bamtools") "/lib/bamtools")))
+            #t)))))
     (inputs
      `(("boost" ,boost)
        ("bamtools" ,bamtools)
@@ -2544,15 +2544,15 @@ results.  The FASTX-Toolkit tools perform some of these preprocessing tasks.")
                                          (assoc-ref %outputs "out")
                                          "/bin/"))
        #:phases
-       (alist-replace
-        'check
-        (lambda* (#:key outputs #:allow-other-keys)
-          (setenv "PATH" (string-append
-                          (assoc-ref outputs "out") "/bin:"
-                          (getenv "PATH")))
-          (chdir "../flexbar_v2.5_src/test")
-          (zero? (system* "bash" "flexbar_validate.sh")))
-        (alist-delete 'install %standard-phases))))
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key outputs #:allow-other-keys)
+             (setenv "PATH" (string-append
+                             (assoc-ref outputs "out") "/bin:"
+                             (getenv "PATH")))
+             (chdir "../flexbar_v2.5_src/test")
+             (zero? (system* "bash" "flexbar_validate.sh"))))
+         (delete 'install))))
     (inputs
      `(("tbb" ,tbb)
        ("zlib" ,zlib)))
@@ -2788,21 +2788,21 @@ association studies (GWAS).")
     (arguments
      `(#:python ,python-2
        #:phases
-       (alist-cons-after
-        'unpack 'generate-from-cython-sources
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          ;; Delete these C files to force fresh generation from pyx sources.
-          (delete-file "grit/sparsify_support_fns.c")
-          (delete-file "grit/call_peaks_support_fns.c")
-          (substitute* "setup.py"
-            (("Cython.Setup") "Cython.Build")
-            ;; Add numpy include path to fix compilation
-            (("pyx\", \\]")
-             (string-append "pyx\", ], include_dirs = ['"
-                            (assoc-ref inputs "python-numpy")
-                            "/lib/python2.7/site-packages/numpy/core/include/"
-                            "']"))) #t)
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'generate-from-cython-sources
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Delete these C files to force fresh generation from pyx sources.
+             (delete-file "grit/sparsify_support_fns.c")
+             (delete-file "grit/call_peaks_support_fns.c")
+             (substitute* "setup.py"
+               (("Cython.Setup") "Cython.Build")
+               ;; Add numpy include path to fix compilation
+               (("pyx\", \\]")
+                (string-append "pyx\", ], include_dirs = ['"
+                               (assoc-ref inputs "python-numpy")
+                               "/lib/python2.7/site-packages/numpy/core/include/"
+                               "']")))
+             #t)))))
     (inputs
      `(("python-scipy" ,python2-scipy)
        ("python-numpy" ,python2-numpy)
@@ -2845,28 +2845,29 @@ estimates transcript expression.")
                             '()
                             '("POPCNT_CAPABILITY=0")))
        #:phases
-       (alist-cons-after
-        'unpack 'patch-sources
-        (lambda _
-          ;; XXX Cannot use snippet because zip files are not supported
-          (substitute* "Makefile"
-            (("^CC = .*$") "CC = gcc")
-            (("^CPP = .*$") "CPP = g++")
-            ;; replace BUILD_HOST and BUILD_TIME for deterministic build
-            (("-DBUILD_HOST=.*") "-DBUILD_HOST=\"\\\"guix\\\"\"")
-            (("-DBUILD_TIME=.*") "-DBUILD_TIME=\"\\\"0\\\"\""))
-          (substitute* '("hisat-build" "hisat-inspect")
-            (("/usr/bin/env") (which "env"))))
-        (alist-replace
-         'install
-         (lambda* (#:key outputs #:allow-other-keys)
-           (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
-             (for-each (lambda (file)
-                         (install-file file bin))
-                       (find-files
-                        "."
-                        "hisat(-(build|align|inspect)(-(s|l)(-debug)*)*)*$"))))
-         (alist-delete 'configure %standard-phases)))))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-sources
+           (lambda _
+             ;; XXX Cannot use snippet because zip files are not supported
+             (substitute* "Makefile"
+               (("^CC = .*$") "CC = gcc")
+               (("^CPP = .*$") "CPP = g++")
+               ;; replace BUILD_HOST and BUILD_TIME for deterministic build
+               (("-DBUILD_HOST=.*") "-DBUILD_HOST=\"\\\"guix\\\"\"")
+               (("-DBUILD_TIME=.*") "-DBUILD_TIME=\"\\\"0\\\"\""))
+             (substitute* '("hisat-build" "hisat-inspect")
+               (("/usr/bin/env") (which "env")))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
+               (for-each (lambda (file)
+                           (install-file file bin))
+                         (find-files
+                          "."
+                          "hisat(-(build|align|inspect)(-(s|l)(-debug)*)*)*$")))
+             #t))
+         (delete 'configure))))
     (native-inputs
      `(("unzip" ,unzip)))
     (inputs
@@ -4680,23 +4681,21 @@ Roche 454, Ion Torrent and Pacific BioSciences SMRT.")
      `(#:parallel-build? #f ; not supported
        #:tests? #f ; no "check" target
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out")))
-            ;; Allow 'konfigure.perl' to find 'package.prl'.
-            (setenv "PERL5LIB"
-                    (string-append ".:" (getenv "PERL5LIB")))
-
-            ;; The 'configure' script doesn't recognize things like
-            ;; '--enable-fast-install'.
-            (zero? (system* "./configure"
-                            (string-append "--build-prefix=" (getcwd) "/build")
-                            (string-append "--prefix=" out)))))
-        (alist-cons-after
-         'unpack 'enter-dir
-         (lambda _ (chdir "ngs-sdk") #t)
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; Allow 'konfigure.perl' to find 'package.prl'.
+               (setenv "PERL5LIB"
+                       (string-append ".:" (getenv "PERL5LIB")))
+
+               ;; The 'configure' script doesn't recognize things like
+               ;; '--enable-fast-install'.
+               (zero? (system* "./configure"
+                               (string-append "--build-prefix=" (getcwd) "/build")
+                               (string-append "--prefix=" out))))))
+         (add-after 'unpack 'enter-dir
+           (lambda _ (chdir "ngs-sdk") #t)))))
     (native-inputs `(("perl" ,perl)))
     ;; According to the test
     ;;   unless ($MARCH =~ /x86_64/i || $MARCH =~ /i?86/i)
@@ -5460,17 +5459,17 @@ sequences.")
              "-f" "Makefile.Linux"
              "CC=gcc ${CCFLAGS}")
        #:phases
-       (alist-cons-after
-        'unpack 'enter-dir
-        (lambda _ (chdir "src") #t)
-        (alist-replace
-         'install
-         (lambda* (#:key outputs #:allow-other-keys)
-           (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
-             (mkdir-p bin)
-             (copy-recursively "../bin" bin)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'enter-dir
+           (lambda _ (chdir "src") #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
+               (mkdir-p bin)
+               (copy-recursively "../bin" bin))
+             #t))
          ;; no "configure" script
-         (alist-delete 'configure %standard-phases)))))
+         (delete 'configure))))
     (inputs `(("zlib" ,zlib)))
     (home-page "http://bioinf.wehi.edu.au/subread-package/")
     (synopsis "Tool kit for processing next-gen sequencing data")
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 79a87dc8b..9bd89d908 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -74,23 +74,24 @@
                "gui"))                    ; graphical user interface
     (arguments
      '(#:glib-or-gtk-wrap-excluded-outputs '("out")
-       #:phases (alist-cons-after
-                 'install 'move-gui
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Move the GUI to its own output, so that "out" doesn't
-                   ;; depend on GTK+.
-                   (let ((out (assoc-ref outputs "out"))
-                         (gui (assoc-ref outputs "gui")))
-                     (mkdir-p (string-append gui "/bin"))
-                     (rename-file (string-append out "/bin/transmission-gtk")
-                                  (string-append gui
-                                                 "/bin/transmission-gtk"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'move-gui
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Move the GUI to its own output, so that "out" doesn't
+             ;; depend on GTK+.
+             (let ((out (assoc-ref outputs "out"))
+                   (gui (assoc-ref outputs "gui")))
+               (mkdir-p (string-append gui "/bin"))
+               (rename-file (string-append out "/bin/transmission-gtk")
+                            (string-append gui
+                                           "/bin/transmission-gtk"))
 
-                     ;; Move the '.desktop' file as well.
-                     (mkdir (string-append gui "/share"))
-                     (rename-file (string-append out "/share/applications")
-                                  (string-append gui "/share/applications"))))
-                 %standard-phases)))
+               ;; Move the '.desktop' file as well.
+               (mkdir (string-append gui "/share"))
+               (rename-file (string-append out "/share/applications")
+                            (string-append gui "/share/applications")))
+             #t)))))
     (inputs
      `(("inotify-tools" ,inotify-tools)
        ("libevent" ,libevent)
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 704e8ad36..ad72ad0f7 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -454,7 +454,7 @@ the data.")
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f
-       #:phases (alist-delete 'configure %standard-phases)
+       #:phases (modify-phases %standard-phases (delete 'configure))
        #:make-flags (list "CC=gcc"
                           (string-append "PREFIX="
                                          (assoc-ref %outputs "out")))))
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index bc1053676..183d3773d 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -521,14 +521,14 @@ decompressors when faced with corrupted input.")
      `(("which" ,which)))
     (arguments
      `(#:phases
-        (alist-cons-after
-         'patch-source-shebangs 'unpatch-source-shebang
-         ;; revert the patch-shebang phase on a script which is
-         ;; in fact test data
-         (lambda _
-           (substitute* "tests/shar-1.ok"
-             (((which "sh")) "/bin/sh")))
-         %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'patch-source-shebangs 'unpatch-source-shebang
+           ;; revert the patch-shebang phase on a script which is
+           ;; in fact test data
+           (lambda _
+             (substitute* "tests/shar-1.ok"
+               (((which "sh")) "/bin/sh"))
+             #t)))))
     (home-page "https://www.gnu.org/software/sharutils/")
     (synopsis "Archives in shell scripts, uuencode/uudecode")
     (description
diff --git a/gnu/packages/conky.scm b/gnu/packages/conky.scm
index 1f5b38eef..7a42c77f0 100644
--- a/gnu/packages/conky.scm
+++ b/gnu/packages/conky.scm
@@ -50,22 +50,21 @@
          ;; TODO: add 'ncurses.pc' to the ncurses package.
          "-DBUILD_NCURSES=false")
        #:phases
-       (alist-cons-after
-        'unpack 'add-freetype-to-search-path
-        (lambda* (#:key inputs #:allow-other-keys)
-          (substitute* "cmake/ConkyPlatformChecks.cmake"
-            (("set\\(INCLUDE_SEARCH_PATH")
-             (string-append
-              "set(INCLUDE_SEARCH_PATH "
-              (assoc-ref inputs "freetype") "/include/freetype2 ")))
-          #t)
-        (alist-replace
-         'install
-         (lambda* (#:key outputs #:allow-other-keys)
-           (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
-             (mkdir-p bin)
-             (install-file "src/conky" bin)))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'add-freetype-to-search-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "cmake/ConkyPlatformChecks.cmake"
+               (("set\\(INCLUDE_SEARCH_PATH")
+                (string-append
+                 "set(INCLUDE_SEARCH_PATH "
+                 (assoc-ref inputs "freetype") "/include/freetype2 ")))
+            #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
+               (mkdir-p bin)
+               (install-file "src/conky" bin))
+             #t)))))
     (inputs
      `(("freetype" ,freetype)
        ("ncurses" ,ncurses)
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 93d59837b..783da6bc9 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -165,34 +165,33 @@ and provides interfaces to the traditional file format.")
      '(#:tests? #f                            ; no check target available
        #:disallowed-references ("doc")
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out"))
-                (doc (assoc-ref outputs "doc")))
-            ;; '--docdir' is not honored, so we need to patch.
-            (substitute* "dist/Makefile.in"
-              (("docdir[[:blank:]]*=.*")
-               (string-append "docdir = " doc "/share/doc/bdb")))
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (doc (assoc-ref outputs "doc")))
+               ;; '--docdir' is not honored, so we need to patch.
+               (substitute* "dist/Makefile.in"
+                 (("docdir[[:blank:]]*=.*")
+                  (string-append "docdir = " doc "/share/doc/bdb")))
 
-            (zero?
-             (system* "./dist/configure"
-                      (string-append "--prefix=" out)
-                      (string-append "CONFIG_SHELL=" (which "bash"))
-                      (string-append "SHELL=" (which "bash"))
+               (zero?
+                (system* "./dist/configure"
+                         (string-append "--prefix=" out)
+                         (string-append "CONFIG_SHELL=" (which "bash"))
+                         (string-append "SHELL=" (which "bash"))
 
-                      ;; Remove 7 MiB of .a files.
-                      "--disable-static"
+                         ;; Remove 7 MiB of .a files.
+                         "--disable-static"
 
-                      ;; The compatibility mode is needed by some packages,
-                      ;; notably iproute2.
-                      "--enable-compat185"
+                         ;; The compatibility mode is needed by some packages,
+                         ;; notably iproute2.
+                         "--enable-compat185"
 
-                      ;; The following flag is needed so that the inclusion
-                      ;; of db_cxx.h into C++ files works; it leads to
-                      ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
-                      "--enable-cxx"))))
-                 %standard-phases)))
+                         ;; The following flag is needed so that the inclusion
+                         ;; of db_cxx.h into C++ files works; it leads to
+                         ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
+                         "--enable-cxx"))))))))
     (synopsis "Berkeley database")
     (description
      "Berkeley DB is an embeddable database allowing developers the choice of
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 0fc1f513b..819263e29 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -58,23 +58,24 @@
      `(("perl" ,perl)))
     (arguments
      `(#:phases
-       (alist-replace
-        'install
-        (lambda* (#:key outputs #:allow-other-keys)
-          ;; Makefile contains no install target
-          (let* ((out (assoc-ref outputs "out"))
-                 (bin (string-append out "/bin"))
-                 (doc (string-append out "/share/doc/delta-" ,version)))
-            (begin
-              (mkdir-p bin)
-              (mkdir-p doc)
-              (for-each (lambda (h)
-                          (install-file h doc))
-                        `("License.txt" ,@(find-files "www" ".*\\.html")))
-              (for-each (lambda (b)
-                          (install-file b bin))
-                        `("delta" "multidelta" "topformflat")))))
-        (alist-delete 'configure %standard-phases))))
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Makefile contains no install target
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (doc (string-append out "/share/doc/delta-" ,version)))
+               (begin
+                 (mkdir-p bin)
+                 (mkdir-p doc)
+                 (for-each (lambda (h)
+                             (install-file h doc))
+                           `("License.txt" ,@(find-files "www" ".*\\.html")))
+                 (for-each (lambda (b)
+                             (install-file b bin))
+                           `("delta" "multidelta" "topformflat"))))
+             #t))
+         (delete 'configure))))
     (home-page "http://delta.tigris.org/")
     (synopsis "Heuristical file minimizer")
     (description
@@ -114,23 +115,24 @@ program to exhibit a bug.")
        ("sys-cpu"         ,perl-sys-cpu)
        ("term-readkey"    ,perl-term-readkey)))
     (arguments
-     `(#:phases (alist-cons-after
-                 'install 'set-load-paths
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   ;; Tell creduce where to find the perl modules it needs.
-                   (let* ((out (assoc-ref outputs "out"))
-                          (prog (string-append out "/bin/creduce")))
-                     (wrap-program
-                      prog
-                      `("PERL5LIB" ":" prefix
-                        ,(map (lambda (p)
-                                (string-append (assoc-ref inputs p)
-                                               "/lib/perl5/site_perl/"
-                                               ,(package-version perl)))
-                              '("term-readkey"    "exporter-lite"
-                                "file-which"      "getopt-tabular"
-                                "regex-common"    "sys-cpu"))))))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'set-load-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Tell creduce where to find the perl modules it needs.
+             (let* ((out (assoc-ref outputs "out"))
+                    (prog (string-append out "/bin/creduce")))
+               (wrap-program
+                   prog
+                 `("PERL5LIB" ":" prefix
+                   ,(map (lambda (p)
+                           (string-append (assoc-ref inputs p)
+                                          "/lib/perl5/site_perl/"
+                                          ,(package-version perl)))
+                         '("term-readkey"    "exporter-lite"
+                           "file-which"      "getopt-tabular"
+                           "regex-common"    "sys-cpu")))))
+             #t)))))
     (home-page "http://embed.cs.utah.edu/creduce")
     (synopsis "Reducer for interesting code")
     (description
diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm
index 9f8d7b825..fbc46c9f4 100644
--- a/gnu/packages/display-managers.scm
+++ b/gnu/packages/display-managers.scm
@@ -337,17 +337,19 @@ GTK+, lets you select a desktop session and log in to it.")
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (arguments
-     '(#:phases (alist-cons-before
-		 'configure 'set-new-etc-location
-		 (lambda _
-		   (substitute* "CMakeLists.txt"
-		     (("/etc")
-		      (string-append (assoc-ref %outputs "out") "/etc"))
-                     (("install.*systemd.*")
-                      ;; The build system's logic here is: if "Linux", then
-                      ;; "systemd".  Strip that.
-                      "")))
-		 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'set-new-etc-location
+           (lambda _
+             (substitute* "CMakeLists.txt"
+               (("/etc")
+                (string-append (assoc-ref %outputs "out") "/etc"))
+               (("install.*systemd.*")
+                ;; The build system's logic here is: if "Linux", then
+                ;; "systemd".  Strip that.
+                ""))
+             #t)
+          %standard-phases))
        #:configure-flags '("-DUSE_PAM=yes"
                            "-DUSE_CONSOLEKIT=no")
        #:tests? #f))
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 702ed011f..b514c6b0b 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -75,7 +75,7 @@
      `(("dbus" ,dbus)))
     (arguments
      `(#:phases
-       (alist-delete 'configure %standard-phases)
+       (modify-phases %standard-phases (delete 'configure))
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
                           "CC=gcc"
                           "COPTS=\"-DHAVE_DBUS\"")
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 8955313e5..7c363fa4f 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -303,14 +303,15 @@ editor (without an X toolkit)" )
                "0phz9d8wjk4p13vqannv0003fwh8qqrp0gfzcs2hgq1mrmv1srss"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-after
-                 'install 'post-install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (symlink "geiser-install.el"
-                            (string-append (assoc-ref outputs "out")
-                                           "/share/emacs/site-lisp/"
-                                           "geiser-autoloads.el")))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (symlink "geiser-install.el"
+                      (string-append (assoc-ref outputs "out")
+                                     "/share/emacs/site-lisp/"
+                                     "geiser-autoloads.el"))
+             #t)))))
     (inputs `(("guile" ,guile-2.0)))
     (native-inputs `(("emacs" ,emacs-minimal)))
     (home-page "http://nongnu.org/geiser/")
@@ -769,25 +770,25 @@ provides an optional IDE-like error list.")
                            (guix build emacs-utils))
        #:tests? #f  ; no check target
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key outputs #:allow-other-keys)
-          (substitute* "Makefile"
-            (("/usr/local") (assoc-ref outputs "out"))
-            (("/site-lisp/emacs-wget") "/site-lisp")))
-        (alist-cons-before
-         'build 'patch-exec-paths
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (let ((wget (assoc-ref inputs "wget")))
-             (emacs-substitute-variables "wget.el"
-               ("wget-command" (string-append wget "/bin/wget")))))
-         (alist-cons-after
-          'install 'post-install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (emacs-generate-autoloads
-             "wget" (string-append (assoc-ref outputs "out")
-                                   "/share/emacs/site-lisp/")))
-          %standard-phases)))))
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "Makefile"
+               (("/usr/local") (assoc-ref outputs "out"))
+               (("/site-lisp/emacs-wget") "/site-lisp"))
+             #t))
+         (add-before 'build 'patch-exec-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((wget (assoc-ref inputs "wget")))
+               (emacs-substitute-variables "wget.el"
+                 ("wget-command" (string-append wget "/bin/wget"))))
+             #t))
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (emacs-generate-autoloads
+              "wget" (string-append (assoc-ref outputs "out")
+                                    "/share/emacs/site-lisp/"))
+             #t)))))
     (home-page "http://www.emacswiki.org/emacs/EmacsWget")
     (synopsis "Simple file downloader for Emacs based on wget")
     (description
@@ -981,15 +982,16 @@ within a specified width.  It is useful for displaying long track titles.")
                    "doc_DATA =\n")))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-after
-                 'install 'post-install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Add an autoloads file with the right name for guix.el.
-                   (let* ((out  (assoc-ref outputs "out"))
-                          (site (string-append out "/share/emacs/site-lisp")))
-                     (with-directory-excursion site
-                       (symlink "bbdb-loaddefs.el" "bbdb-autoloads.el"))))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Add an autoloads file with the right name for guix.el.
+             (let* ((out  (assoc-ref outputs "out"))
+                    (site (string-append out "/share/emacs/site-lisp")))
+               (with-directory-excursion site
+                 (symlink "bbdb-loaddefs.el" "bbdb-autoloads.el")))
+             #t)))))
     (native-inputs `(("emacs" ,emacs-minimal)))
     (home-page "http://savannah.nongnu.org/projects/bbdb/")
     (synopsis "Contact management utility for Emacs")
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index c4afe5ff9..076d23239 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -191,28 +191,27 @@ utilities.")
     (build-system gnu-build-system)
     (arguments
      `(#:phases
-       (alist-cons-after
-        'unpack 'use-wish8.6
-        (lambda _
-          (substitute* "configure"
-            (("wish85") "wish8.6")))
-        (alist-cons-after
-         'install 'wrap
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           ;; FIXME: Mesa tries to dlopen libudev.so.0 and fails.  Pending a
-           ;; fix of the mesa package we wrap the pcb executable such that
-           ;; Mesa can find libudev.so.0 through LD_LIBRARY_PATH.
-           (let* ((out (assoc-ref outputs "out"))
-                  (path (string-append (assoc-ref inputs "udev") "/lib")))
-             (wrap-program (string-append out "/bin/pcb")
-               `("LD_LIBRARY_PATH" ":" prefix (,path)))))
-         (alist-cons-before
-          'check 'pre-check
-          (lambda _
-            (system "Xvfb :1 &")
-            (setenv "DISPLAY" ":1")
-            #t)
-          %standard-phases)))))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'use-wish8.6
+           (lambda _
+             (substitute* "configure"
+               (("wish85") "wish8.6"))
+             #t))
+         (add-after 'install 'wrap
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; FIXME: Mesa tries to dlopen libudev.so.0 and fails.  Pending a
+             ;; fix of the mesa package we wrap the pcb executable such that
+             ;; Mesa can find libudev.so.0 through LD_LIBRARY_PATH.
+             (let* ((out (assoc-ref outputs "out"))
+                    (path (string-append (assoc-ref inputs "udev") "/lib")))
+               (wrap-program (string-append out "/bin/pcb")
+                 `("LD_LIBRARY_PATH" ":" prefix (,path))))
+             #t))
+         (add-before 'check 'pre-check
+           (lambda _
+             (system "Xvfb :1 &")
+             (setenv "DISPLAY" ":1")
+             #t)))))
     (inputs
      `(("dbus" ,dbus)
        ("mesa" ,mesa)
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 8d0b82478..21bd8ae7a 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -52,31 +52,31 @@
               (patches (search-patches "ath9k-htc-firmware-objcopy.patch"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'configure 'pre-configure
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (chdir "target_firmware")
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             (chdir "target_firmware")
 
-                   ;; 'configure' is a simple script that runs 'cmake' with
-                   ;; the right flags.
-                   (substitute* "configure"
-                     (("^TOOLCHAIN=.*$")
-                      (string-append "TOOLCHAIN="
-                                     (assoc-ref inputs "cross-gcc")
-                                     "\n"))))
-                 (alist-replace
-                  'install
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let* ((out    (assoc-ref outputs "out"))
-                           (fw-dir (string-append out "/lib/firmware")))
-                      (mkdir-p fw-dir)
-                      (for-each (lambda (file)
-                                  (copy-file file
-                                             (string-append fw-dir "/"
-                                                            (basename file))))
-                                (find-files "." "\\.fw$"))
-                      #t))
-                  %standard-phases))
+             ;; 'configure' is a simple script that runs 'cmake' with
+             ;; the right flags.
+             (substitute* "configure"
+               (("^TOOLCHAIN=.*$")
+                (string-append "TOOLCHAIN="
+                               (assoc-ref inputs "cross-gcc")
+                               "\n")))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out    (assoc-ref outputs "out"))
+                    (fw-dir (string-append out "/lib/firmware")))
+               (mkdir-p fw-dir)
+               (for-each (lambda (file)
+                           (copy-file file
+                                      (string-append fw-dir "/"
+                                                     (basename file))))
+                         (find-files "." "\\.fw$"))
+               #t))))
        #:tests? #f))
 
     ;; The firmware is cross-compiled using a "bare bones" compiler (no libc.)
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index 127fc795a..e76865798 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -62,17 +62,16 @@
                           "CONFIG_ENABLE_LIBUSB0_PROGRAMMERS=no")
        #:tests? #f   ; no 'check' target
        #:phases
-       (alist-delete
-        'configure
-        (alist-cons-before
-         'build 'patch-exec-paths
-         (lambda* (#:key inputs #:allow-other-keys)
-           (substitute* "dmi.c"
-             (("\"dmidecode\"")
-              (format #f "~S"
-                      (string-append (assoc-ref inputs "dmidecode")
-                                     "/sbin/dmidecode")))))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'patch-exec-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "dmi.c"
+               (("\"dmidecode\"")
+                (format #f "~S"
+                        (string-append (assoc-ref inputs "dmidecode")
+                                       "/sbin/dmidecode"))))
+             #t)))))
     (home-page "http://flashrom.org/")
     (synopsis "Identify, read, write, erase, and verify ROM/flash chips")
     (description
diff --git a/gnu/packages/fltk.scm b/gnu/packages/fltk.scm
index 0ca77cfa4..1c257abbe 100644
--- a/gnu/packages/fltk.scm
+++ b/gnu/packages/fltk.scm
@@ -63,27 +63,27 @@
        (list "--enable-shared"
              (string-append "DSOFLAGS=-Wl,-rpath=" %output "/lib"))
        #:phases
-       (alist-cons-before
-        'configure 'patch-makeinclude
-        (lambda _
-          (substitute* "makeinclude.in"
-            (("/bin/sh") (which "sh"))))
-        (alist-cons-after
-         'install 'patch-config
-         ;; Provide -L flags for image libraries when querying fltk-config to
-         ;; avoid propagating inputs.
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (use-modules (srfi srfi-26))
-           (let* ((conf (string-append (assoc-ref outputs "out")
-                                      "/bin/fltk-config"))
-                  (jpeg (assoc-ref inputs "libjpeg"))
-                  (png  (assoc-ref inputs "libpng"))
-                  (zlib (assoc-ref inputs "zlib")))
-             (substitute* conf
-               (("-ljpeg") (string-append "-L" jpeg "/lib -ljpeg"))
-               (("-lpng") (string-append "-L" png "/lib -lpng"))
-               (("-lz") (string-append "-L" zlib "/lib -lz")))))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-makeinclude
+           (lambda _
+             (substitute* "makeinclude.in"
+               (("/bin/sh") (which "sh")))
+             #t))
+         (add-after 'install 'patch-config
+           ;; Provide -L flags for image libraries when querying fltk-config to
+           ;; avoid propagating inputs.
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (use-modules (srfi srfi-26))
+             (let* ((conf (string-append (assoc-ref outputs "out")
+                                         "/bin/fltk-config"))
+                    (jpeg (assoc-ref inputs "libjpeg"))
+                    (png  (assoc-ref inputs "libpng"))
+                    (zlib (assoc-ref inputs "zlib")))
+               (substitute* conf
+                 (("-ljpeg") (string-append "-L" jpeg "/lib -ljpeg"))
+                 (("-lpng") (string-append "-L" png "/lib -lpng"))
+                 (("-lz") (string-append "-L" zlib "/lib -lz"))))
+             #t)))))
     (home-page "http://www.fltk.org")
     (synopsis "3D C++ GUI library")
     (description "FLTK is a C++ GUI toolkit providing modern GUI functionality
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index f99f9771e..77de5ebe0 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -324,23 +324,22 @@ manager for the current system.")
     (build-system python-build-system)
     (arguments
      '(#:phases
-       (alist-replace
-        'check
-        (lambda* (#:key inputs #:allow-other-keys)
-          (setenv "XDG_DATA_DIRS"
-                  (string-append (assoc-ref inputs "shared-mime-info")
-                                 "/share/"))
-          (substitute* "test/test-icon.py"
-            (("/usr/share/icons/hicolor/index.theme")
-             (string-append (assoc-ref inputs "hicolor-icon-theme")
-                            "/share/icons/hicolor/index.theme")))
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "XDG_DATA_DIRS"
+                     (string-append (assoc-ref inputs "shared-mime-info")
+                                    "/share/"))
+             (substitute* "test/test-icon.py"
+               (("/usr/share/icons/hicolor/index.theme")
+                (string-append (assoc-ref inputs "hicolor-icon-theme")
+                               "/share/icons/hicolor/index.theme")))
 
-          ;; One test fails with:
-          ;; AssertionError: 'x-apple-ios-png' != 'png'
-          (substitute* "test/test-mime.py"
-            (("self.check_mimetype\\(imgpng, 'image', 'png'\\)") "#"))
-          (zero? (system* "nosetests" "-v")))
-        %standard-phases)))
+             ;; One test fails with:
+             ;; AssertionError: 'x-apple-ios-png' != 'png'
+             (substitute* "test/test-mime.py"
+               (("self.check_mimetype\\(imgpng, 'image', 'png'\\)") "#"))
+             (zero? (system* "nosetests" "-v")))))))
     (native-inputs
      `(("shared-mime-info" ,shared-mime-info) ;for tests
        ("hicolor-icon-theme" ,hicolor-icon-theme) ;for tests
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm
index 169f040ee..b15d48bb0 100644
--- a/gnu/packages/gd.scm
+++ b/gnu/packages/gd.scm
@@ -141,15 +141,16 @@ most common applications of GD involve website development.")
                                                   (assoc-ref %build-inputs i)))
                                  '("zlib" "png" "ft" "jpeg" "fontconfig"))
        #:tests? #f ;; Failed 1/2 test programs. 1/12 subtests failed.
-       #:phases (alist-cons-after
-                 'configure 'clear-autogenerated-files
-                 (lambda _
-                   ;; This file is autogenerated by its .PLS script at build
-                   ;; time, but file creation fails because that file already
-                   ;; exists in the distribution with non-writable
-                   ;; permissions, so delete it first.
-                   (delete-file "bdf_scripts/bdf2gdfont.pl"))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'configure 'clear-autogenerated-files
+           (lambda _
+             ;; This file is autogenerated by its .PLS script at build
+             ;; time, but file creation fails because that file already
+             ;; exists in the distribution with non-writable
+             ;; permissions, so delete it first.
+             (delete-file "bdf_scripts/bdf2gdfont.pl")
+             #t)))))
     (home-page "http://search.cpan.org/dist/GD")
     (synopsis "Perl interface to the GD graphics library")
     (description "GD.pm is an autoloadable interface module for libgd, a
diff --git a/gnu/packages/gkrellm.scm b/gnu/packages/gkrellm.scm
index 68853eb8f..4cc84b3fc 100644
--- a/gnu/packages/gkrellm.scm
+++ b/gnu/packages/gkrellm.scm
@@ -50,9 +50,7 @@
     (arguments
      `(#:tests? #f ; there is no check target
        #:phases
-       (alist-delete
-        'configure
-        %standard-phases)
+       (modify-phases %standard-phases (delete 'configure))
        #:make-flags
        (let ((out (assoc-ref %outputs "out")))
          (list (string-append "INSTALLROOT=" out)
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index d017e375c..433a8ac49 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -422,7 +422,7 @@ glxgears, glxheads, and glxinfo.")
                   (("/lib64") "/lib")))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-delete 'configure %standard-phases)
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
        #:make-flags (list (string-append "GLEW_PREFIX="
                                          (assoc-ref %outputs "out"))
                           (string-append "GLEW_DEST="
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index c5c48731f..e6a95a5dd 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -504,22 +504,23 @@ has an ease of use unmatched by other C++ callback libraries.")
                "1926b3adx903hzvdp8glblsgjyadzqnwgkj8hg605d4wv98m1n0z"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases (alist-cons-before
-                 'build 'pre-build
-                 (lambda _
-                   ;; This test uses /etc/fstab as an example file to read
-                   ;; from; choose a better example.
-                   (substitute* "tests/giomm_simple/main.cc"
-                     (("/etc/fstab")
-                      (string-append (getcwd)
-                                     "/tests/giomm_simple/main.cc")))
-
-                   ;; This test does a DNS lookup, and then expects to be able
-                   ;; to open a TLS session; just skip it.
-                   (substitute* "tests/giomm_tls_client/main.cc"
-                     (("Gio::init.*$")
-                      "return 77;\n")))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'pre-build
+           (lambda _
+             ;; This test uses /etc/fstab as an example file to read
+             ;; from; choose a better example.
+             (substitute* "tests/giomm_simple/main.cc"
+               (("/etc/fstab")
+                (string-append (getcwd)
+                               "/tests/giomm_simple/main.cc")))
+
+             ;; This test does a DNS lookup, and then expects to be able
+             ;; to open a TLS session; just skip it.
+             (substitute* "tests/giomm_tls_client/main.cc"
+               (("Gio::init.*$")
+                "return 77;\n"))
+             #t)))))
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("glib" ,glib "bin")))
     (propagated-inputs
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 43547961b..b415e7a46 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -809,16 +809,16 @@ for settings shared by various components of the GNOME desktop.")
        ("perl-xml-simple" ,perl-xml-simple)))
     (arguments
      '(#:phases
-       (alist-cons-after
-        'install 'set-load-paths
-        ;; Tell 'icon-name-mapping' where XML::Simple is.
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let* ((out  (assoc-ref outputs "out"))
-                 (prog (string-append out "/libexec/icon-name-mapping")))
-            (wrap-program
-             prog
-             `("PERL5LIB" = ,(list (getenv "PERL5LIB"))))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'install 'set-load-paths
+           ;; Tell 'icon-name-mapping' where XML::Simple is.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out  (assoc-ref outputs "out"))
+                    (prog (string-append out "/libexec/icon-name-mapping")))
+               (wrap-program
+                   prog
+                 `("PERL5LIB" = ,(list (getenv "PERL5LIB")))))
+             #t)))))
     (home-page "http://tango.freedesktop.org/Standard_Icon_Naming_Specification")
     (synopsis
      "Utility to implement the Freedesktop Icon Naming Specification")
@@ -1261,12 +1261,12 @@ functionality was designed to be as reusable and portable as possible.")
        '("DISABLE_DEPRECATED_CFLAGS=-DGLIB_DISABLE_DEPRECATION_WARNINGS")
        ;; ... which they then completly ignore !!
        #:phases
-       (alist-cons-before
-        'configure 'ignore-deprecations
-        (lambda _
-          (substitute* "linc2/src/Makefile.in"
-            (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'ignore-deprecations
+           (lambda _
+             (substitute* "linc2/src/Makefile.in"
+               (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
+             #t)))))
     (inputs `(("glib" ,glib)
               ("libidl" ,libidl)))
     (native-inputs
@@ -1301,12 +1301,12 @@ featuring mature C, C++ and Python bindings.")
        '("DISABLE_DEPRECATED_CFLAGS=-DGLIB_DISABLE_DEPRECATION_WARNINGS")
        ;; ... which they then completly ignore !!
        #:phases
-       (alist-cons-before
-        'configure 'ignore-deprecations
-        (lambda _
-          (substitute* "activation-server/Makefile.in"
-            (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'ignore-deprecations
+           (lambda _
+             (substitute* "activation-server/Makefile.in"
+               (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
+             #t)))))
     (inputs `(("popt" ,popt)
               ("libxml2" ,libxml2)))
     ;; The following are Required by the .pc file
@@ -1409,19 +1409,18 @@ designed to be accessed through the MIME functions in GnomeVFS.")
     (build-system gnu-build-system)
     (arguments
      `(#:phases
-       (alist-cons-before
-        'configure 'ignore-deprecations
-        (lambda _
-          (substitute* '("libgnomevfs/Makefile.in"
-                         "daemon/Makefile.in")
-            (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
-          #t)
-        (alist-cons-before
-         'configure 'patch-test-async-cancel-to-never-fail
-         (lambda _
-           (substitute* "test/test-async-cancel.c"
-             (("EXIT_FAILURE") "77")))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (add-before 'configure 'ignore-deprecations
+           (lambda _
+             (substitute* '("libgnomevfs/Makefile.in"
+                            "daemon/Makefile.in")
+               (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
+             #t))
+         (add-before 'configure 'patch-test-async-cancel-to-never-fail
+           (lambda _
+             (substitute* "test/test-async-cancel.c"
+               (("EXIT_FAILURE") "77"))
+             #t)))))
     (inputs `(("libxml2" ,libxml2)
               ("dbus-glib" ,dbus-glib)
               ("gconf" ,gconf)
@@ -1456,12 +1455,12 @@ to access local and remote files with a single consistent API.")
     (build-system gnu-build-system)
     (arguments
      `(#:phases
-       (alist-cons-before
-        'configure 'enable-deprecated
-        (lambda _
-          (substitute* "libgnome/Makefile.in"
-            (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'enable-deprecated
+           (lambda _
+             (substitute* "libgnome/Makefile.in"
+               (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
+             #t)))))
     (inputs `(("libxml2" ,libxml2)))
     (native-inputs
      `(("glib" ,glib "bin")             ; for glib-mkenums, etc.
@@ -1696,18 +1695,17 @@ since ca. 2006, when GTK+ itself incorporated printing support.")
     (build-system gnu-build-system)
     (arguments
      `(#:phases
-       (alist-cons-before
-        'check 'start-xserver
-        (lambda* (#:key inputs #:allow-other-keys)
-          (let ((xorg-server (assoc-ref inputs "xorg-server"))
-                (disp ":1"))
-
-            (setenv "HOME" (getcwd))
-            (setenv "DISPLAY" disp)
-            ;; There must be a running X server and make check doesn't start one.
-            ;; Therefore we must do it.
-            (zero? (system (format #f "~a/bin/Xvfb ~a &" xorg-server disp)))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'check 'start-xserver
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((xorg-server (assoc-ref inputs "xorg-server"))
+                   (disp ":1"))
+
+               (setenv "HOME" (getcwd))
+               (setenv "DISPLAY" disp)
+               ;; There must be a running X server and make check doesn't start one.
+               ;; Therefore we must do it.
+               (zero? (system (format #f "~a/bin/Xvfb ~a &" xorg-server disp)))))))))
     ;; Mentioned as Required by the .pc file
     (propagated-inputs `(("libxml2" ,libxml2)))
     (inputs
@@ -1821,14 +1819,13 @@ Hints specification (EWMH).")
                (base32 "05fvzbs5bin05bbsr4dp79aiva3lnq0a3a40zq55i13vnsz70l0n"))))
     (arguments
      `(#:phases
-       (alist-cons-after
-        'unpack 'fix-pcre-check
-        (lambda _
-          ;; Only glib.h can be included directly.  See
-          ;; https://bugzilla.gnome.org/show_bug.cgi?id=670316
-          (substitute* "configure"
-            (("glib/gregex\\.h") "glib.h")) #t)
-        %standard-phases)
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-pcre-check
+           (lambda _
+             ;; Only glib.h can be included directly.  See
+             ;; https://bugzilla.gnome.org/show_bug.cgi?id=670316
+             (substitute* "configure"
+               (("glib/gregex\\.h") "glib.h")) #t)))
 
        ,@(package-arguments goffice)))
     (propagated-inputs
@@ -2201,19 +2198,19 @@ and RDP protocols.")
                             (assoc-ref %outputs "out") "/lib")
              "--disable-gtk-doc-html") ; FIXME: requires gtk-doc
        #:phases
-       (alist-cons-before
-        'configure 'fix-docbook
-        (lambda* (#:key inputs #:allow-other-keys)
-          (substitute* "docs/Makefile.in"
-            (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
-             (string-append (assoc-ref inputs "docbook-xsl")
-                            "/xml/xsl/docbook-xsl-"
-                            ,(package-version docbook-xsl)
-                            "/manpages/docbook.xsl")))
-          (setenv "XML_CATALOG_FILES"
-                  (string-append (assoc-ref inputs "docbook-xml")
-                                 "/xml/dtd/docbook/catalog.xml")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-docbook
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "docs/Makefile.in"
+               (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
+                (string-append (assoc-ref inputs "docbook-xsl")
+                               "/xml/xsl/docbook-xsl-"
+                               ,(package-version docbook-xsl)
+                               "/manpages/docbook.xsl")))
+             (setenv "XML_CATALOG_FILES"
+                     (string-append (assoc-ref inputs "docbook-xml")
+                                    "/xml/dtd/docbook/catalog.xml"))
+             #t)))))
     (home-page "https://developer.gnome.org/dconf")
     (synopsis "Low-level GNOME configuration system")
     (description "Dconf is a low-level configuration system.  Its main purpose
diff --git a/gnu/packages/gprolog.scm b/gnu/packages/gprolog.scm
index 87c833e94..b27b080ca 100644
--- a/gnu/packages/gprolog.scm
+++ b/gnu/packages/gprolog.scm
@@ -41,14 +41,15 @@
      `(#:configure-flags
        (list (string-append
               "--with-install-dir=" %output "/share/gprolog"))
-       #:phases (alist-cons-before
-                 'configure 'change-dir-n-fix-shells
-                 (lambda _
-                   (chdir "src")
-                   (substitute* "configure"
-                     (("-/bin/sh")  (string-append "-"  (which "sh")))
-                     (("= /bin/sh") (string-append "= " (which "sh")))))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'change-dir-n-fix-shells
+           (lambda _
+             (chdir "src")
+             (substitute* "configure"
+               (("-/bin/sh")  (string-append "-"  (which "sh")))
+               (("= /bin/sh") (string-append "= " (which "sh"))))
+             #t)))))
     (home-page "https://www.gnu.org/software/gprolog/")
     (synopsis "Prolog compiler")
     (description
diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm
index 0a9038b7a..10592c23e 100644
--- a/gnu/packages/gps.scm
+++ b/gnu/packages/gps.scm
@@ -102,15 +102,16 @@ manipulate maps.")
                   "006a6l8p38a4h7y2959sqrmjjn29d8pd50zj9nypcp5ph18nybjb"))))
       (build-system gnu-build-system)
       (arguments
-       `(#:phases (alist-replace
-                   'configure
-                   (lambda* (#:key inputs outputs #:allow-other-keys)
-                     ;; This is a rudimentary build system.
-                     (substitute* "Makefile"
-                       (("prefix[[:blank:]]*=.*$")
-                        (string-append "prefix = " (assoc-ref outputs "out")
-                                       "\n"))))
-                   %standard-phases)
+       `(#:phases
+         (modify-phases %standard-phases
+           (replace 'configure
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               ;; This is a rudimentary build system.
+               (substitute* "Makefile"
+                 (("prefix[[:blank:]]*=.*$")
+                  (string-append "prefix = " (assoc-ref outputs "out")
+                                 "\n")))
+               #t)))
          #:tests? #f))
       (inputs
        `(("gtk+" ,gtk+-2)
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index f84cc2783..95076e599 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -628,13 +628,12 @@ and understanding different BRDFs (and other component functions).")
              (string-append "--x-libraries=" (assoc-ref %build-inputs "libx11")
                             "/lib"))
        #:phases
-       (alist-cons-after
-        'unpack 'autoreconf
-        (lambda _
-          ;; let's call configure from configure phase and not now
-          (substitute* "autogen.sh" (("./configure") "# ./configure"))
-          (zero? (system* "sh" "autogen.sh")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autoreconf
+           (lambda _
+             ;; let's call configure from configure phase and not now
+             (substitute* "autogen.sh" (("./configure") "# ./configure"))
+             (zero? (system* "sh" "autogen.sh")))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("libtool" ,libtool)
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 74f7b70ff..92a950262 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -279,16 +279,17 @@ functions which were removed.")
                 "0g7s5mp14qgbfjdql0k1s8464r21g47ssn5dws6jazsnw6njhl0l"))))
     (build-system waf-build-system)
     (arguments
-     `(#:phases (alist-cons-before
-                 'configure 'set-flags
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Compile with C++11, required by gtkmm.
-                   (setenv "CXXFLAGS" "-std=c++11")
-                   ;; Allow 'bin/ganv_bench' to find libganv-1.so.
-                   (setenv "LDFLAGS"
-                           (string-append "-Wl,-rpath="
-                                          (assoc-ref outputs "out") "/lib")))
-                 %standard-phases)
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'set-flags
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Compile with C++11, required by gtkmm.
+             (setenv "CXXFLAGS" "-std=c++11")
+             ;; Allow 'bin/ganv_bench' to find libganv-1.so.
+             (setenv "LDFLAGS"
+                     (string-append "-Wl,-rpath="
+                                    (assoc-ref outputs "out") "/lib"))
+             #t)))
        #:tests? #f)) ; no check target
     (inputs
      `(("gtk" ,gtk+-2)
@@ -349,24 +350,24 @@ diagrams.")
      `(#:phases
        ;; Unfortunately, some of the tests in "make check" are highly dependent
        ;; on the environment therefore, some black magic is required.
-       (alist-cons-before
-        'check 'start-xserver
-        (lambda* (#:key inputs #:allow-other-keys)
-          (let ((xorg-server (assoc-ref inputs "xorg-server"))
-                (mime (assoc-ref inputs "shared-mime-info")))
+       (modify-phases %standard-phases
+         (add-before 'check 'start-xserver
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((xorg-server (assoc-ref inputs "xorg-server"))
+                   (mime (assoc-ref inputs "shared-mime-info")))
 
-            ;; There must be a running X server and make check doesn't start one.
-            ;; Therefore we must do it.
-            (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
-            (setenv "DISPLAY" ":1")
+               ;; There must be a running X server and make check doesn't start one.
+               ;; Therefore we must do it.
+               (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
+               (setenv "DISPLAY" ":1")
 
-            ;; The .lang files must be found in $XDG_DATA_HOME/gtksourceview-2.0
-            (system "ln -s gtksourceview gtksourceview-2.0")
-            (setenv "XDG_DATA_HOME" (getcwd))
+               ;; The .lang files must be found in $XDG_DATA_HOME/gtksourceview-2.0
+               (system "ln -s gtksourceview gtksourceview-2.0")
+               (setenv "XDG_DATA_HOME" (getcwd))
 
-            ;; Finally, the mimetypes must be available.
-            (setenv "XDG_DATA_DIRS" (string-append mime "/share/")) ))
-        %standard-phases)))
+               ;; Finally, the mimetypes must be available.
+               (setenv "XDG_DATA_DIRS" (string-append mime "/share/")))
+             #t)))))
     (synopsis "Widget that extends the standard GTK+ 2.x 'GtkTextView' widget")
     (description
      "GtkSourceView is a portable C library that extends the standard GTK+
@@ -876,18 +877,19 @@ images onto Cairo surfaces.")
                    "godir = $(moddir)\n")))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-after
-                 'install 'post-install
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   (let* ((out   (assoc-ref outputs "out"))
-                          (bin   (string-append out "/bin"))
-                          (guile (assoc-ref inputs "guile")))
-                     (substitute* (find-files bin ".*")
-                       (("guile")
-                        (string-append guile "/bin/guile -L "
-                                       out "/share/guile/site/2.0 -C "
-                                       out "/share/guile/site/2.0 ")))))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'post-install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out   (assoc-ref outputs "out"))
+                    (bin   (string-append out "/bin"))
+                    (guile (assoc-ref inputs "guile")))
+               (substitute* (find-files bin ".*")
+                 (("guile")
+                  (string-append guile "/bin/guile -L "
+                                 out "/share/guile/site/2.0 -C "
+                                 out "/share/guile/site/2.0 "))))
+             #t)))))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("guile" ,guile-2.2)))
     (propagated-inputs
@@ -1161,7 +1163,7 @@ extensive documentation, including API reference and a tutorial.")
      `(#:python ,python-2
        ,@(substitute-keyword-arguments (package-arguments python-pycairo)
            ((#:phases phases)
-            `(alist-delete 'patch-waf ,phases))
+            `(modify-phases ,phases (delete 'patch-waf)))
            ((#:native-inputs native-inputs)
             `(alist-delete "python-waf" ,native-inputs)))))
     ;; Dual-licensed under LGPL 2.1 or Mozilla Public License 1.1
@@ -1255,7 +1257,7 @@ write GNOME applications.")
        #:test-target "test"
        #:tests? #f ; Tests fail with "Gtk cannot open display:"
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (build-system gnu-build-system)
     (home-page "https://pwmt.org/projects/girara/")
     (synopsis "Library for minimalistic gtk+3 user interfaces")
diff --git a/gnu/packages/guile-wm.scm b/gnu/packages/guile-wm.scm
index 4a484b9de..74dc68619 100644
--- a/gnu/packages/guile-wm.scm
+++ b/gnu/packages/guile-wm.scm
@@ -78,55 +78,56 @@ dependencies.")
                 "1l9qcz236jxvryndimjy62cf8zxf8i3f8vg3zpqqjhw15j9mdk3r"))))
     (build-system gnu-build-system)
     (arguments
-     `( ;; The '.scm' files go to $(datadir), so set that to the
+     `(;; The '.scm' files go to $(datadir), so set that to the
        ;; standard value.
        #:configure-flags (list (string-append "--datadir="
                                               (assoc-ref %outputs "out")
                                               "/share/guile/site/2.0"))
-       #:phases (alist-cons-before
-                 'configure 'set-go-directory
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Install .go files to $out/share/guile/site/2.0.
-                   (let ((out (assoc-ref outputs "out")))
-                     (substitute* "module/Makefile.in"
-                       (("^wmdir = .*$")
-                        (string-append "wmdir = " out
-                                       "/share/guile/site/2.0\n")))))
-                 (alist-cons-after
-                  'install 'set-load-path
-                  (lambda* (#:key inputs outputs #:allow-other-keys)
-                    ;; Put Guile-XCB's and Guile-WM's modules in the
-                    ;; search path of PROG.
-                    (let* ((out  (assoc-ref outputs "out"))
-                           (prog (string-append out "/bin/guile-wm"))
-                           (mods (string-append
-                                  out "/share/guile/site/2.0"))
-                           (xcb  (string-append
-                                  (assoc-ref inputs "guile-xcb")
-                                  "/share/guile/site/2.0")))
-                      (wrap-program
-                          prog
-                        `("GUILE_LOAD_PATH" ":" prefix (,mods ,xcb))
-                        `("GUILE_LOAD_COMPILED_PATH" ":" prefix
-                          (,mods ,xcb)))))
-                  (alist-cons-after
-                   'install 'install-xsession
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     ;; add a .desktop file to xsessions
-                     (let ((xsessions (string-append
-                                       %output "/share/xsessions")))
-                       (mkdir-p xsessions)
-                       (call-with-output-file (string-append
-                                               xsessions "/guile-wm.desktop")
-                         (lambda (port)
-                           (format port
-                                   "[Desktop Entry]~@
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'set-go-directory
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Install .go files to $out/share/guile/site/2.0.
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "module/Makefile.in"
+                 (("^wmdir = .*$")
+                  (string-append "wmdir = " out
+                                 "/share/guile/site/2.0\n"))))
+             #t))
+         (add-after 'install 'set-load-path
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Put Guile-XCB's and Guile-WM's modules in the
+             ;; search path of PROG.
+             (let* ((out  (assoc-ref outputs "out"))
+                    (prog (string-append out "/bin/guile-wm"))
+                    (mods (string-append
+                           out "/share/guile/site/2.0"))
+                    (xcb  (string-append
+                           (assoc-ref inputs "guile-xcb")
+                           "/share/guile/site/2.0")))
+               (wrap-program
+                   prog
+                 `("GUILE_LOAD_PATH" ":" prefix (,mods ,xcb))
+                 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
+                   (,mods ,xcb))))
+             #t))
+         (add-after 'install 'install-xsession
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; add a .desktop file to xsessions
+             (let ((xsessions (string-append
+                               %output "/share/xsessions")))
+               (mkdir-p xsessions)
+               (call-with-output-file (string-append
+                                       xsessions "/guile-wm.desktop")
+                 (lambda (port)
+                   (format port
+                           "[Desktop Entry]~@
                                     Name=~a~@
                                     Comment=~a~@
                                     Exec=~a/bin/guile-wm~@
                                     Type=Application~%"
-                            ,name ,synopsis %output)))))
-                   %standard-phases)))))
+                           ,name ,synopsis %output))))
+             #t)))))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("guile" ,guile-2.0)
               ("guile-xcb" ,guile-xcb)))
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 6dacc472a..f0bcf8ffd 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -94,24 +94,24 @@
    (arguments '(#:configure-flags '("--disable-error-on-warning")
 
                 ;; Insert a phase before `configure' to patch things up.
-                #:phases (alist-cons-before
-                           'configure
-                           'patch-stuff
-                           (lambda* (#:key outputs #:allow-other-keys)
-                             ;; Add a call to `lt_dladdsearchdir' so that
-                             ;; `libguile-readline.so' & co. are in the
-                             ;; loader's search path.
-                             (substitute* "libguile/dynl.c"
-                               (("lt_dlinit.*$" match)
-                                (format #f
-                                        "  ~a~%  lt_dladdsearchdir(\"~a/lib\");~%"
-                                        match
-                                        (assoc-ref outputs "out"))))
-
-                             ;; The usual /bin/sh...
-                             (substitute* "ice-9/popen.scm"
-                               (("/bin/sh") (which "sh"))))
-                           %standard-phases)))
+                #:phases
+                (modify-phases %standard-phases
+                  (add-before 'configure 'patch-stuff
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      ;; Add a call to `lt_dladdsearchdir' so that
+                      ;; `libguile-readline.so' & co. are in the
+                      ;; loader's search path.
+                      (substitute* "libguile/dynl.c"
+                        (("lt_dlinit.*$" match)
+                         (format #f
+                                 "  ~a~%  lt_dladdsearchdir(\"~a/lib\");~%"
+                                 match
+                                 (assoc-ref outputs "out"))))
+
+                      ;; The usual /bin/sh...
+                      (substitute* "ice-9/popen.scm"
+                        (("/bin/sh") (which "sh")))
+                      #t)))))
    (inputs `(("gawk" ,gawk)
              ("readline" ,readline)))
 
diff --git a/gnu/packages/hugs.scm b/gnu/packages/hugs.scm
index 2367d5bc6..a14b8a858 100644
--- a/gnu/packages/hugs.scm
+++ b/gnu/packages/hugs.scm
@@ -39,36 +39,37 @@
         "1mdy4aq4campgmnpc2qwq7bsbfhaxfsqdghbyyz2wms4lnfcmyma"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases (alist-cons-before
-                 'configure 'fix-sh-n-cp
-                 (lambda _
-                   (substitute*
-                       '("configure"
-                         "libraries/configure"
-                         "packages/time/configure"
-                         "packages/base/configure"
-                         "packages/X11/configure"
-                         "packages/HGL/configure"
-                         "packages/OpenAL/configure"
-                         "packages/OpenGL/configure"
-                         "packages/network/configure"
-                         "packages/unix/configure"
-                         "packages/Cabal/tests/HSQL/configure"
-                         "packages/ALUT/configure"
-                         "packages/GLUT/configure"
-                         "packages/base/cbits/execvpe.c"
-                         "packages/base/System/Process/Internals.hs"
-                         "packages/Cabal/Distribution/attic"
-                         "packages/Cabal/Distribution/Simple/Register.hs"
-                         "packages/Cabal/Distribution/Simple/Hugs.hs"
-                         "tools/hugs-hc"
-                         "src/machdep.c"
-                         "libraries/Makefile.in")
-                     (("/bin/sh") (which "sh")))
-                   (substitute* '("demos/Makefile.in"
-                                  "libraries/Makefile.in")
-                     (("/bin/cp") (which "cp"))))
-                  %standard-phases)
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-sh-n-cp
+           (lambda _
+             (substitute*
+                 '("configure"
+                   "libraries/configure"
+                   "packages/time/configure"
+                   "packages/base/configure"
+                   "packages/X11/configure"
+                   "packages/HGL/configure"
+                   "packages/OpenAL/configure"
+                   "packages/OpenGL/configure"
+                   "packages/network/configure"
+                   "packages/unix/configure"
+                   "packages/Cabal/tests/HSQL/configure"
+                   "packages/ALUT/configure"
+                   "packages/GLUT/configure"
+                   "packages/base/cbits/execvpe.c"
+                   "packages/base/System/Process/Internals.hs"
+                   "packages/Cabal/Distribution/attic"
+                   "packages/Cabal/Distribution/Simple/Register.hs"
+                   "packages/Cabal/Distribution/Simple/Hugs.hs"
+                   "tools/hugs-hc"
+                   "src/machdep.c"
+                   "libraries/Makefile.in")
+               (("/bin/sh") (which "sh")))
+             (substitute* '("demos/Makefile.in"
+                            "libraries/Makefile.in")
+               (("/bin/cp") (which "cp")))
+             #t)))
        #:tests? #f)) ; no test target
     ;; FIXME: Fails to build with GCC 5.
     (native-inputs `(("gcc" ,gcc-4.9)))
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index bd1eb4b08..a29e5bafd 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -56,14 +56,13 @@
         "02hygsfpd2dljl5lg1vjjg9pizi9jyxd4aiiqzjshz6jax62jm9f"))))
     (build-system gnu-build-system)
     (arguments
-    `(#:phases (alist-replace
-                'install
-                (lambda _
-                  (zero?
-                   (system* "make" "install-data")))
-                (alist-delete
-                 'build
-                 %standard-phases))
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda _
+             (zero?
+              (system* "make" "install-data"))))
+         (delete 'build))
 
       ;; GNU Mach supports only IA32 currently, so cheat so that we can at
       ;; least install its headers.
@@ -125,11 +124,12 @@ communication.")
     (native-inputs
      `(("mig" ,mig)))
     (arguments
-     `(#:phases (alist-replace
-                 'install
-                 (lambda _
-                   (zero? (system* "make" "install-headers" "no_deps=t")))
-                 (alist-delete 'build %standard-phases))
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda _
+             (zero? (system* "make" "install-headers" "no_deps=t"))))
+         (delete 'build))
 
        #:configure-flags '(;; Pretend we're on GNU/Hurd; 'configure' wants
                            ;; that.
@@ -164,24 +164,22 @@ Library and other user programs.")
     (arguments
      (substitute-keyword-arguments (package-arguments hurd-headers)
        ((#:phases _)
-        '(alist-replace
-          'install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((out (assoc-ref outputs "out")))
-              ;; We need to copy libihash.a to the output directory manually,
-              ;; since there is no target for that in the makefile.
-              (mkdir-p (string-append out "/include"))
-              (copy-file "libihash/ihash.h"
-                         (string-append out "/include/ihash.h"))
-              (mkdir-p (string-append out "/lib"))
-              (copy-file "libihash/libihash.a"
-                         (string-append out "/lib/libihash.a"))
-              #t))
-          (alist-replace
-           'build
-           (lambda _
-             (zero? (system* "make" "-Clibihash" "libihash.a")))
-           %standard-phases)))))
+        '(modify-phases %standard-phases
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out")))
+                 ;; We need to copy libihash.a to the output directory manually,
+                 ;; since there is no target for that in the makefile.
+                 (mkdir-p (string-append out "/include"))
+                 (copy-file "libihash/ihash.h"
+                            (string-append out "/include/ihash.h"))
+                 (mkdir-p (string-append out "/lib"))
+                 (copy-file "libihash/libihash.a"
+                            (string-append out "/lib/libihash.a"))
+                 #t)))
+           (replace 'build
+             (lambda _
+               (zero? (system* "make" "-Clibihash" "libihash.a"))))))))
     (home-page "https://www.gnu.org/software/hurd/hurd.html")
     (synopsis "GNU Hurd libraries")
     (description
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index f82d4baf2..8b425c10f 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -65,10 +65,10 @@
                 "1l3yvv0l0ggwlfyhk84p2g9mrqvzqrg1fgalf88kzppvb9jppjay"))))
     (build-system gnu-build-system)
     (arguments
-      '(#:phases (alist-delete 'configure %standard-phases)
-        #:tests? #f ;FIXME: Requires 'perl-test-command'.
-        #:make-flags
-          (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out")))))
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
+       #:tests? #f ;FIXME: Requires 'perl-test-command'.
+       #:make-flags
+       (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out")))))
     (inputs `(("imlib2" ,imlib2)
               ("curl" ,curl)
               ("libpng" ,libpng)
@@ -178,9 +178,9 @@ It is the default image viewer on LXDE desktop environment.")
      '(#:tests? #f                      ; no check target
        #:make-flags (list (string-append "PREFIX=" %output)
                           "CC=gcc")
-       #:phases (alist-delete
-                 'configure             ; no configure phase
-                 %standard-phases)))
+       #:phases
+       ;; no configure phase
+       (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("libx11" ,libx11)
        ("imlib2" ,imlib2)
diff --git a/gnu/packages/libcanberra.scm b/gnu/packages/libcanberra.scm
index 6bac0bcd5..941d3dcc4 100644
--- a/gnu/packages/libcanberra.scm
+++ b/gnu/packages/libcanberra.scm
@@ -79,15 +79,15 @@
      `(("pkg-config" ,pkg-config)))
     (arguments
      `(#:phases
-       (alist-cons-before
-        'build 'patch-default-sounds-directory
-        (lambda* (#:key inputs #:allow-other-keys)
-          (substitute* "src/sound-theme-spec.c"
-            (("@SOUND_THEME_DIRECTORY@")
-             (string-append
-              (assoc-ref inputs "sound-theme-freedesktop")
-              "/share"))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'build 'patch-default-sounds-directory
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/sound-theme-spec.c"
+               (("@SOUND_THEME_DIRECTORY@")
+                (string-append
+                 (assoc-ref inputs "sound-theme-freedesktop")
+                 "/share")))
+             #t)))))
     (home-page "http://0pointer.de/lennart/projects/libcanberra/")
     (synopsis
      "Implementation of the XDG Sound Theme and Name Specifications")
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 714c631fb..6284efd11 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1301,49 +1301,48 @@ configuration (iptunnel, ipmaddr).")
                   (guix build utils)
                   (srfi srfi-1)
                   (srfi srfi-26))
-       #:phases (alist-cons-after
-                 'unpack 'patch
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (define (apply-patch file)
-                     (zero? (system* "patch" "-p1" "--force"
-                                     "--input" file)))
-
-                   (let ((patch.gz (assoc-ref inputs "patch")))
-                     (format #t "applying Debian patch set '~a'...~%"
-                             patch.gz)
-                     (system (string-append "gunzip < " patch.gz " > the-patch"))
-                     (and (apply-patch "the-patch")
-                          (for-each apply-patch
-                                    (find-files "debian/patches"
-                                                "\\.patch")))))
-                 (alist-replace
-                  'configure
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let ((out (assoc-ref outputs "out")))
-                      (mkdir-p (string-append out "/bin"))
-                      (mkdir-p (string-append out "/sbin"))
-
-                      ;; Pretend we have everything...
-                      (system "yes | make config")
-
-                      ;; ... except for the things we don't have.
-                      ;; HAVE_AFDECnet requires libdnet, which we don't have.
-                      ;; HAVE_HWSTRIP and HAVE_HWTR require kernel headers
-                      ;; that have been removed.
-                      (substitute* '("config.make" "config.h")
-                        (("^.*HAVE_(AFDECnet|HWSTRIP|HWTR)[ =]1.*$") ""))))
-                  (alist-cons-after
-                   'install 'remove-redundant-commands
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     ;; Remove commands and man pages redundant with
-                     ;; Inetutils.
-                     (let* ((out (assoc-ref outputs "out"))
-                            (dup (append-map (cut find-files out <>)
-                                             '("^hostname"
-                                               "^(yp|nis|dns)?domainname"))))
-                       (for-each delete-file dup)
-                       #t))
-                   %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch
+           (lambda* (#:key inputs #:allow-other-keys)
+             (define (apply-patch file)
+               (zero? (system* "patch" "-p1" "--force"
+                               "--input" file)))
+
+             (let ((patch.gz (assoc-ref inputs "patch")))
+               (format #t "applying Debian patch set '~a'...~%"
+                       patch.gz)
+               (system (string-append "gunzip < " patch.gz " > the-patch"))
+               (and (apply-patch "the-patch")
+                    (for-each apply-patch
+                              (find-files "debian/patches"
+                                          "\\.patch"))))))
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/bin"))
+               (mkdir-p (string-append out "/sbin"))
+
+               ;; Pretend we have everything...
+               (system "yes | make config")
+
+               ;; ... except for the things we don't have.
+               ;; HAVE_AFDECnet requires libdnet, which we don't have.
+               ;; HAVE_HWSTRIP and HAVE_HWTR require kernel headers
+               ;; that have been removed.
+               (substitute* '("config.make" "config.h")
+                 (("^.*HAVE_(AFDECnet|HWSTRIP|HWTR)[ =]1.*$") "")))
+             #t))
+         (add-after 'install 'remove-redundant-commands
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Remove commands and man pages redundant with
+             ;; Inetutils.
+             (let* ((out (assoc-ref outputs "out"))
+                    (dup (append-map (cut find-files out <>)
+                                     '("^hostname"
+                                       "^(yp|nis|dns)?domainname"))))
+               (for-each delete-file dup)
+               #t))))
 
        ;; Binaries that depend on libnet-tools.a don't declare that
        ;; dependency, making it parallel-unsafe.
@@ -1434,22 +1433,22 @@ Linux-based operating systems.")
     (native-inputs `(("autoconf" ,autoconf)
                      ("automake" ,automake)))
     (arguments
-     '(#:phases (alist-cons-after
-                 'unpack 'bootstrap
-                 (lambda _
-                   ;; Fix "field ‘ip6’ has incomplete type" errors.
-                   (substitute* "libbridge/libbridge.h"
-                     (("#include <linux/if_bridge.h>")
-                      "#include <linux/in6.h>\n#include <linux/if_bridge.h>"))
-
-                   ;; Ensure that the entire build fails if one of the
-                   ;; sub-Makefiles fails.
-                   (substitute* "Makefile.in"
-                     (("\\$\\(MAKE\\) \\$\\(MFLAGS\\) -C \\$\\$x ;")
-                      "$(MAKE) $(MFLAGS) -C $$x || exit 1;"))
-
-                   (zero? (system* "autoreconf" "-vf")))
-                 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'bootstrap
+           (lambda _
+             ;; Fix "field ‘ip6’ has incomplete type" errors.
+             (substitute* "libbridge/libbridge.h"
+               (("#include <linux/if_bridge.h>")
+                "#include <linux/in6.h>\n#include <linux/if_bridge.h>"))
+
+             ;; Ensure that the entire build fails if one of the
+             ;; sub-Makefiles fails.
+             (substitute* "Makefile.in"
+               (("\\$\\(MAKE\\) \\$\\(MFLAGS\\) -C \\$\\$x ;")
+                "$(MAKE) $(MFLAGS) -C $$x || exit 1;"))
+
+             (zero? (system* "autoreconf" "-vf")))))
        #:tests? #f))                              ; no 'check' target
 
     (home-page
@@ -1554,7 +1553,7 @@ configuration and monitoring interfaces.")
     (arguments
      `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
                           "CC=gcc")
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://wireless.wiki.kernel.org/")
     (synopsis "Tool for configuring wireless devices")
     (description
@@ -1687,27 +1686,28 @@ processes currently causing I/O.")
                                (string-append "UDEV_RULES_PATH="
                                               (assoc-ref %outputs "out")
                                               "/lib/udev/rules.d"))
-      #:phases (alist-cons-before
-                'build 'set-file-names
-                (lambda* (#:key inputs #:allow-other-keys)
-                  ;; libfuse calls out to mount(8) and umount(8).  Make sure
-                  ;; it refers to the right ones.
-                  (substitute* '("lib/mount_util.c" "util/mount_util.c")
-                    (("/bin/(u?)mount" _ maybe-u)
-                     (string-append (assoc-ref inputs "util-linux")
-                                    "/bin/" maybe-u "mount")))
-                  (substitute* '("util/mount.fuse.c")
-                    (("/bin/sh")
-                     (which "sh")))
-
-                  ;; This hack leads libfuse to search for 'fusermount' in
-                  ;; $PATH, where it may find a setuid-root binary, instead of
-                  ;; trying solely $out/sbin/fusermount and failing because
-                  ;; it's not setuid.
-                  (substitute* "lib/Makefile"
-                    (("-DFUSERMOUNT_DIR=[[:graph:]]+")
-                     "-DFUSERMOUNT_DIR=\\\"/var/empty\\\"")))
-                %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'set-file-names
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; libfuse calls out to mount(8) and umount(8).  Make sure
+             ;; it refers to the right ones.
+             (substitute* '("lib/mount_util.c" "util/mount_util.c")
+               (("/bin/(u?)mount" _ maybe-u)
+                (string-append (assoc-ref inputs "util-linux")
+                               "/bin/" maybe-u "mount")))
+             (substitute* '("util/mount.fuse.c")
+               (("/bin/sh")
+                (which "sh")))
+
+             ;; This hack leads libfuse to search for 'fusermount' in
+             ;; $PATH, where it may find a setuid-root binary, instead of
+             ;; trying solely $out/sbin/fusermount and failing because
+             ;; it's not setuid.
+             (substitute* "lib/Makefile"
+               (("-DFUSERMOUNT_DIR=[[:graph:]]+")
+                "-DFUSERMOUNT_DIR=\\\"/var/empty\\\""))
+             #t)))))
     (home-page "https://github.com/libfuse/libfuse")
     (synopsis "Support file systems implemented in user space")
     (description
@@ -1785,20 +1785,20 @@ UnionFS-FUSE additionally supports copy-on-write.")
     (arguments
      '(#:tests? #f
        #:configure-flags '("-DCMAKE_EXE_LINKER_FLAGS=-static")
-       #:phases (alist-cons-after
-                 'install 'post-install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let* ((out (assoc-ref outputs "out"))
-                          (exe (string-append out "/bin/unionfs")))
-                     ;; By default, 'unionfs' keeps references to
-                     ;; $glibc/share/locale and similar stuff.  Remove them.
-                     (remove-store-references exe)
-
-                     ;; 'unionfsctl' has references to glibc as well.  Since
-                     ;; we don't need it, remove it.
-                     (delete-file (string-append out "/bin/unionfsctl"))
-                     #t))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (exe (string-append out "/bin/unionfs")))
+               ;; By default, 'unionfs' keeps references to
+               ;; $glibc/share/locale and similar stuff.  Remove them.
+               (remove-store-references exe)
+
+               ;; 'unionfsctl' has references to glibc as well.  Since
+               ;; we don't need it, remove it.
+               (delete-file (string-append out "/bin/unionfsctl"))
+               #t))))))
     (inputs `(("fuse" ,fuse-static)))))
 
 (define-public sshfs-fuse
@@ -2373,43 +2373,42 @@ country-specific regulations for the wireless spectrum.")
                           (string-append "ETCDIR=" %output "/etc")
                           (string-append "MANDIR=" %output "/share/man"))
        #:phases
-       (alist-delete
-        'configure
-        (alist-cons-before
-         'build 'patch-exec-paths
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (substitute* "prog/detect/sensors-detect"
-             (("`uname")
-              (string-append "`" (assoc-ref inputs "coreutils")
-                             "/bin/uname"))
-             (("(`|\")modprobe" all open-quote)
-              (string-append open-quote
-                             (assoc-ref inputs "kmod")
-                             "/bin/modprobe")))
-           (substitute* '("prog/pwm/pwmconfig"
-                          "prog/pwm/fancontrol")
-             (("gnuplot")
-              (string-append (assoc-ref inputs "gnuplot")
-                             "/bin/gnuplot"))
-             (("cat ")
-              (string-append (assoc-ref inputs "coreutils")
-                             "/bin/cat "))
-             (("egrep ")
-              (string-append (assoc-ref inputs "grep")
-                             "/bin/egrep "))
-             (("sed -e")
-              (string-append (assoc-ref inputs "sed")
-                             "/bin/sed -e"))
-             (("cut -d")
-              (string-append (assoc-ref inputs "coreutils")
-                             "/bin/cut -d"))
-             (("sleep ")
-              (string-append (assoc-ref inputs "coreutils")
-                             "/bin/sleep "))
-             (("readlink -f")
-              (string-append (assoc-ref inputs "coreutils")
-                             "/bin/readlink -f"))))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'patch-exec-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "prog/detect/sensors-detect"
+               (("`uname")
+                (string-append "`" (assoc-ref inputs "coreutils")
+                               "/bin/uname"))
+               (("(`|\")modprobe" all open-quote)
+                (string-append open-quote
+                               (assoc-ref inputs "kmod")
+                               "/bin/modprobe")))
+             (substitute* '("prog/pwm/pwmconfig"
+                            "prog/pwm/fancontrol")
+               (("gnuplot")
+                (string-append (assoc-ref inputs "gnuplot")
+                               "/bin/gnuplot"))
+               (("cat ")
+                (string-append (assoc-ref inputs "coreutils")
+                               "/bin/cat "))
+               (("egrep ")
+                (string-append (assoc-ref inputs "grep")
+                               "/bin/egrep "))
+               (("sed -e")
+                (string-append (assoc-ref inputs "sed")
+                               "/bin/sed -e"))
+               (("cut -d")
+                (string-append (assoc-ref inputs "coreutils")
+                               "/bin/cut -d"))
+               (("sleep ")
+                (string-append (assoc-ref inputs "coreutils")
+                               "/bin/sleep "))
+               (("readlink -f")
+                (string-append (assoc-ref inputs "coreutils")
+                               "/bin/readlink -f")))
+             #t)))))
     (home-page "http://jdelvare.nerim.net/devel.html#lmsensors")
     (synopsis "Utilities to read temperature/voltage/fan sensors")
     (description
@@ -2436,7 +2435,7 @@ It works with most newer systems.")
        #:make-flags (list (string-append "prefix=" %output)
                           "CC=gcc")
        ;; no configure script
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("perl" ,perl)))
     (home-page "http://jdelvare.nerim.net/devel.html#i2ctools")
@@ -2465,18 +2464,19 @@ SMBus access.")
               ("gtk" ,gtk+-2)))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (arguments
-     `(#:phases (alist-cons-before
-                 'configure 'enable-deprecated
-                 (lambda _
-                   (substitute* "src/Makefile.in"
-                     (("-DGDK_DISABLE_DEPRECATED") "")
-                     (("-DGTK_DISABLE_DEPRECATED") "")))
-                 (alist-cons-before
-                  'configure 'remove-Werror
-                  (lambda _
-                    (substitute* '("configure" "src/Makefile.in")
-                      (("-Werror") "")))
-                  %standard-phases))))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'enable-deprecated
+           (lambda _
+             (substitute* "src/Makefile.in"
+               (("-DGDK_DISABLE_DEPRECATED") "")
+               (("-DGTK_DISABLE_DEPRECATED") ""))
+             #t))
+         (add-before 'configure 'remove-Werror
+           (lambda _
+             (substitute* '("configure" "src/Makefile.in")
+               (("-Werror") ""))
+             #t)))))
     (home-page "http://www.linuxhardware.org/xsensors/")
     (synopsis "Hardware health information viewer")
     (description
@@ -2492,12 +2492,13 @@ in a digital read-out.")
     (source (package-source linux-libre))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (setenv "SHELL_PATH" (which "bash"))
-                   (chdir "tools/perf"))
-                 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "SHELL_PATH" (which "bash"))
+             (chdir "tools/perf")
+             #t)))
        #:make-flags (list (string-append "DESTDIR="
                                          (assoc-ref %outputs "out"))
                           "WERROR=0"
@@ -2836,22 +2837,23 @@ MPEG-2 and audio over Linux IEEE 1394.")
                             (string-append "BINDIR=" out "/sbin")
                             (string-append "MANDIR=" out "/share/man")
                             (string-append "UDEVDIR=" out "/lib/udev")))
-       #:phases (alist-cons-before
-                 'build 'patch-program-paths
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (let ((coreutils (assoc-ref inputs "coreutils")))
-                     (substitute* "udev-md-raid-arrays.rules"
-                       (("/usr/bin/(readlink|basename)" all program)
-                        (string-append coreutils "/bin/" program)))))
-                 (alist-cons-before
-                  'build 'remove-W-error
-                  (lambda _
-                    ;; We cannot build with -Werror on i686 due to a
-                    ;; 'sign-compare' warning in util.c.
-                    (substitute* "Makefile"
-                      (("-Werror") ""))
-                    #t)
-                  (alist-delete 'configure %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'patch-program-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((coreutils (assoc-ref inputs "coreutils")))
+               (substitute* "udev-md-raid-arrays.rules"
+                 (("/usr/bin/(readlink|basename)" all program)
+                  (string-append coreutils "/bin/" program))))
+             #t))
+         (add-before 'build 'remove-W-error
+           (lambda _
+             ;; We cannot build with -Werror on i686 due to a
+             ;; 'sign-compare' warning in util.c.
+             (substitute* "Makefile"
+               (("-Werror") ""))
+             #t))
+         (delete 'configure))
        ;;tests must be done as root
        #:tests? #f))
     (home-page "http://neil.brown.name/blog/mdadm")
@@ -2986,7 +2988,7 @@ Linux Device Mapper multipathing driver:
        (list "CC=gcc" (string-append "prefix=" %output))
        #:test-target "partcheck" ; need root for a full 'check'
        #:phases
-       (alist-delete 'configure %standard-phases))) ; no configure script
+       (modify-phases %standard-phases (delete 'configure)))) ; no configure script
     (home-page "http://lse.sourceforge.net/io/aio.html")
     (synopsis "Linux-native asynchronous I/O access library")
     (description
@@ -3632,13 +3634,14 @@ the default @code{nsswitch} and the experimental @code{umich_ldap}.")
      ;; FIXME: The upstream tarball lacks man pages, and building them would
      ;; require DocBook & co.  We used to use Gentoo's pre-built man pages,
      ;; but they vanished.  In the meantime, fake it.
-     '(#:phases (alist-cons-before
-                 'configure 'fake-docbook
-                 (lambda _
-                   (substitute* "Makefile.in"
-                     (("^DOCBOOKTOMAN.*$")
-                      "DOCBOOKTOMAN = true\n")))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'fake-docbook
+           (lambda _
+             (substitute* "Makefile.in"
+               (("^DOCBOOKTOMAN.*$")
+                "DOCBOOKTOMAN = true\n"))
+             #t)))))
     (home-page "http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/")
     (synopsis "Tools for loading and managing Linux kernel modules")
     (description
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 224cea56f..59e095cd8 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -445,36 +445,33 @@ statistical profiler, a code coverage tool, and many other extensions.")
                   (guix build utils)
                   (guix build gnu-build-system))
        #:phases
-       (alist-replace
-        'unpack
-        (lambda* (#:key inputs #:allow-other-keys)
-          (and (zero? (system* "tar" "xzvf" (assoc-ref inputs "ccl")))
-               (begin (chdir "ccl") #t)))
-        (alist-delete
-         'configure
-         (alist-cons-before
-          'build 'pre-build
-          ;; Enter the source directory for the current platform's lisp
-          ;; kernel, and run 'make clean' to remove the precompiled one.
-          (lambda _
-            (chdir (string-append
-                    "lisp-kernel/"
-                    ,(match (or (%current-target-system) (%current-system))
-                       ("i686-linux"   "linuxx8632")
-                       ("x86_64-linux" "linuxx8664")
-                       ("armhf-linux"  "linuxarm")
-                       ;; Prevent errors when querying this package
-                       ;; on unsupported platforms, e.g. when running
-                       ;; "guix package --search="
-                       (_              "UNSUPPORTED"))))
-            (substitute* '("Makefile")
-              (("/bin/rm") "rm"))
-            (setenv "CC" "gcc")
-            (zero? (system* "make" "clean")))
-          ;; XXX Do we need to recompile the heap image as well for Guix?
-          ;; For now just use the one we already got in the tarball.
-          (alist-replace
-           'install
+       (modify-phases %standard-phases
+         (replace 'unpack
+           (lambda* (#:key inputs #:allow-other-keys)
+             (and (zero? (system* "tar" "xzvf" (assoc-ref inputs "ccl")))
+                  (begin (chdir "ccl") #t))))
+         (delete 'configure)
+         (add-before 'build 'pre-build
+           ;; Enter the source directory for the current platform's lisp
+           ;; kernel, and run 'make clean' to remove the precompiled one.
+           (lambda _
+             (chdir (string-append
+                     "lisp-kernel/"
+                     ,(match (or (%current-target-system) (%current-system))
+                        ("i686-linux"   "linuxx8632")
+                        ("x86_64-linux" "linuxx8664")
+                        ("armhf-linux"  "linuxarm")
+                        ;; Prevent errors when querying this package
+                        ;; on unsupported platforms, e.g. when running
+                        ;; "guix package --search="
+                        (_              "UNSUPPORTED"))))
+             (substitute* '("Makefile")
+               (("/bin/rm") "rm"))
+             (setenv "CC" "gcc")
+             (zero? (system* "make" "clean"))))
+         ;; XXX Do we need to recompile the heap image as well for Guix?
+         ;; For now just use the one we already got in the tarball.
+         (replace 'install
            (lambda* (#:key outputs inputs #:allow-other-keys)
              ;; The lisp kernel built by running 'make' in lisp-kernel/$system
              ;; is put back into the original directory, so go back.  The heap
@@ -513,8 +510,8 @@ statistical profiler, a code coverage tool, and many other extensions.")
                      "CCL_DEFAULT_DIRECTORY=" libdir "\n"
                      "export CCL_DEFAULT_DIRECTORY\n"
                      "exec " libdir kernel "\n"))))
-               (chmod wrapper #o755)))
-           %standard-phases))))))
+               (chmod wrapper #o755))
+             #t)))))
     (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))
     (home-page "http://ccl.clozure.com/")
     (synopsis "Common Lisp implementation")
diff --git a/gnu/packages/lout.scm b/gnu/packages/lout.scm
index f2c724ae0..01ebe2ef5 100644
--- a/gnu/packages/lout.scm
+++ b/gnu/packages/lout.scm
@@ -28,53 +28,11 @@
   ;; rules.  Instead, it has a makefile that has to be patched to set the
   ;; prefix, etc., and it has no makefile rules to build its doc.
   (let ((configure-phase
-         '(lambda* (#:key outputs #:allow-other-keys)
-            (let ((out (assoc-ref outputs "out"))
-                  (doc (assoc-ref outputs "doc")))
-              (substitute* "makefile"
-                (("^PREFIX[[:blank:]]*=.*$")
-                 (string-append "PREFIX = " out "\n"))
-                (("^LOUTLIBDIR[[:blank:]]*=.*$")
-                 (string-append "LOUTLIBDIR = " out "/lib/lout\n"))
-                (("^LOUTDOCDIR[[:blank:]]*=.*$")
-                 (string-append "LOUTDOCDIR = " doc "/share/doc/lout\n"))
-                (("^MANDIR[[:blank:]]*=.*$")
-                 (string-append "MANDIR = " out "/man\n")))
-              (mkdir out)
-              (mkdir (string-append out "/bin"))
-              (mkdir (string-append out "/lib"))
-              (mkdir (string-append out "/man"))
-              (mkdir-p (string-append doc "/share/doc/lout")))))
+         ')
         (install-man-phase
-         '(lambda* (#:key outputs #:allow-other-keys)
-            (zero? (system* "make" "installman"))))
+         ')
         (doc-phase
-         '(lambda* (#:key outputs #:allow-other-keys)
-            (define out
-              (assoc-ref outputs "doc"))
-
-            (setenv "PATH"
-                    (string-append (assoc-ref outputs "out")
-                                   "/bin:" (getenv "PATH")))
-            (chdir "doc")
-            (every (lambda (doc)
-                     (format #t "doc: building `~a'...~%" doc)
-                     (with-directory-excursion doc
-                       (let ((file (string-append out "/share/doc/lout/"
-                                                  doc ".ps")))
-                         (and (or (file-exists? "outfile.ps")
-                                  (zero? (system* "lout" "-r4" "-o"
-                                                  "outfile.ps" "all")))
-                              (begin
-                                (copy-file "outfile.ps" file)
-                                #t)
-                              (zero? (system* "ps2pdf"
-                                              "-dPDFSETTINGS=/prepress"
-                                              "-sPAPERSIZE=a4"
-                                              file
-                                              (string-append out "/share/doc/lout/"
-                                                             doc ".pdf")))))))
-                   '("design" "expert" "slides" "user")))))
+         '))
    (package
     (name "lout")
     (version "3.40")
@@ -89,23 +47,64 @@
     (outputs '("out" "doc"))
     (native-inputs
      `(("ghostscript" ,ghostscript)))
-    (arguments `(#:modules ((guix build utils)
-                            (guix build gnu-build-system)
-                            (srfi srfi-1))        ; we need SRFI-1
-                 #:tests? #f                      ; no "check" target
-
-                 ;; Customize the build phases.
-                 #:phases (alist-replace
-                           'configure ,configure-phase
+    (arguments
+     `(#:modules ((guix build utils)
+                  (guix build gnu-build-system)
+                  (srfi srfi-1))        ; we need SRFI-1
+       #:tests? #f                      ; no "check" target
 
-                           (alist-cons-after
-                            'install 'install-man-pages
-                            ,install-man-phase
+       ;; Customize the build phases.
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (doc (assoc-ref outputs "doc")))
+               (substitute* "makefile"
+                 (("^PREFIX[[:blank:]]*=.*$")
+                  (string-append "PREFIX = " out "\n"))
+                 (("^LOUTLIBDIR[[:blank:]]*=.*$")
+                            (string-append "LOUTLIBDIR = " out "/lib/lout\n"))
+                 (("^LOUTDOCDIR[[:blank:]]*=.*$")
+                  (string-append "LOUTDOCDIR = " doc "/share/doc/lout\n"))
+                 (("^MANDIR[[:blank:]]*=.*$")
+                  (string-append "MANDIR = " out "/man\n")))
+               (mkdir out)
+               (mkdir (string-append out "/bin"))
+               (mkdir (string-append out "/lib"))
+               (mkdir (string-append out "/man"))
+               (mkdir-p (string-append doc "/share/doc/lout")))
+             #t))
+         (add-after 'install 'install-man-pages
+           (lambda* (#:key outputs #:allow-other-keys)
+             (zero? (system* "make" "installman"))))
+         (add-after 'install 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (define out
+               (assoc-ref outputs "doc"))
 
-                            (alist-cons-after
-                             'install 'install-doc
-                             ,doc-phase
-                             %standard-phases)))))
+             (setenv "PATH"
+                     (string-append (assoc-ref outputs "out")
+                                    "/bin:" (getenv "PATH")))
+             (chdir "doc")
+             (every (lambda (doc)
+                      (format #t "doc: building `~a'...~%" doc)
+                      (with-directory-excursion doc
+                        (let ((file (string-append out "/share/doc/lout/"
+                                                   doc ".ps")))
+                          (and (or (file-exists? "outfile.ps")
+                                   (zero? (system* "lout" "-r4" "-o"
+                                                   "outfile.ps" "all")))
+                               (begin
+                                 (copy-file "outfile.ps" file)
+                                 #t)
+                               (zero? (system* "ps2pdf"
+                                               "-dPDFSETTINGS=/prepress"
+                                               "-sPAPERSIZE=a4"
+                                               file
+                                               (string-append out "/share/doc/lout/"
+                                                              doc ".pdf")))))))
+                    '("design" "expert" "slides" "user")))))))
     (synopsis "Document layout system")
     (description
 "The Lout document formatting system reads a high-level description of
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index c3cb700be..c8bc4ef85 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -124,7 +124,7 @@ for configuration, scripting, and rapid prototyping.")
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f                      ;luajit is distributed without tests
-       #:phases (alist-delete 'configure %standard-phases)
+       #:phases (modify-phases %standard-phases (delete 'configure))
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
     (home-page "http://www.luajit.org/")
     (synopsis "Just in time compiler for Lua programming language version 5.1")
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index c5132faf5..794a6c946 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -376,54 +376,50 @@ sample proximities between pairs of cases.")
     (arguments
      '(#:tests? #f ;no check target
        #:phases
-       (alist-cons-after
-        'unpack 'delete-broken-symlinks
-        (lambda _
-          (for-each delete-file '("applications/arts/data"
-                                  "applications/asp/data"
-                                  "applications/easysvm/data"
-                                  "applications/msplicer/data"
-                                  "applications/ocr/data"
-                                  "examples/documented/data"
-                                  "examples/documented/matlab_static"
-                                  "examples/documented/octave_static"
-                                  "examples/undocumented/data"
-                                  "examples/undocumented/matlab_static"
-                                  "examples/undocumented/octave_static"
-                                  "tests/integration/data"
-                                  "tests/integration/matlab_static"
-                                  "tests/integration/octave_static"
-                                  "tests/integration/python_modular/tests"))
-          #t)
-        (alist-cons-after
-         'unpack 'change-R-target-path
-         (lambda* (#:key outputs #:allow-other-keys)
-           (substitute* '("src/interfaces/r_modular/CMakeLists.txt"
-                          "src/interfaces/r_static/CMakeLists.txt"
-                          "examples/undocumented/r_modular/CMakeLists.txt")
-             (("\\$\\{R_COMPONENT_LIB_PATH\\}")
-              (string-append (assoc-ref outputs "out")
-                             "/lib/R/library/")))
-           #t)
-         (alist-cons-after
-          'unpack 'fix-octave-modules
-          (lambda* (#:key outputs #:allow-other-keys)
-            (substitute* '("src/interfaces/octave_modular/CMakeLists.txt"
-                           "src/interfaces/octave_static/CMakeLists.txt")
-              (("^include_directories\\(\\$\\{OCTAVE_INCLUDE_DIRS\\}")
-               "include_directories(${OCTAVE_INCLUDE_DIRS} ${OCTAVE_INCLUDE_DIRS}/octave"))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'delete-broken-symlinks
+           (lambda _
+             (for-each delete-file '("applications/arts/data"
+                                     "applications/asp/data"
+                                     "applications/easysvm/data"
+                                     "applications/msplicer/data"
+                                     "applications/ocr/data"
+                                     "examples/documented/data"
+                                     "examples/documented/matlab_static"
+                                     "examples/documented/octave_static"
+                                     "examples/undocumented/data"
+                                     "examples/undocumented/matlab_static"
+                                     "examples/undocumented/octave_static"
+                                     "tests/integration/data"
+                                     "tests/integration/matlab_static"
+                                     "tests/integration/octave_static"
+                                     "tests/integration/python_modular/tests"))
+             #t))
+         (add-after 'unpack 'change-R-target-path
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* '("src/interfaces/r_modular/CMakeLists.txt"
+                            "src/interfaces/r_static/CMakeLists.txt"
+                            "examples/undocumented/r_modular/CMakeLists.txt")
+               (("\\$\\{R_COMPONENT_LIB_PATH\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/lib/R/library/")))
+             #t))
+         (add-after 'unpack 'fix-octave-modules
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* '("src/interfaces/octave_modular/CMakeLists.txt"
+                            "src/interfaces/octave_static/CMakeLists.txt")
+               (("^include_directories\\(\\$\\{OCTAVE_INCLUDE_DIRS\\}")
+                "include_directories(${OCTAVE_INCLUDE_DIRS} ${OCTAVE_INCLUDE_DIRS}/octave"))
 
-            ;; change target directory
-            (substitute* "src/interfaces/octave_modular/CMakeLists.txt"
-              (("\\$\\{OCTAVE_OCT_LOCAL_API_FILE_DIR\\}")
-               (string-append (assoc-ref outputs "out")
-                              "/share/octave/packages")))
-            #t)
-          (alist-cons-before
-           'build 'set-HOME
+             ;; change target directory
+             (substitute* "src/interfaces/octave_modular/CMakeLists.txt"
+               (("\\$\\{OCTAVE_OCT_LOCAL_API_FILE_DIR\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/share/octave/packages")))
+             #t))
+         (add-before 'build 'set-HOME
            ;; $HOME needs to be set at some point during the build phase
-           (lambda _ (setenv "HOME" "/tmp") #t)
-           %standard-phases))))
+           (lambda _ (setenv "HOME" "/tmp") #t)))
        #:configure-flags
        (list "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
              "-DUSE_SVMLIGHT=OFF" ;disable proprietary SVMLIGHT
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index fe040a118..b25504443 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1028,51 +1028,51 @@ delivery.")
        ("perl" ,perl)))
     (arguments
      '(#:phases
-       (alist-replace
-        'configure
-        ;; We'd use #:make-flags but the top-level Makefile calls others
-        ;; recursively, so just set all variables this way.
-        (lambda* (#:key outputs inputs #:allow-other-keys)
-          (substitute* '("Makefile" "OS/Makefile-Default")
-            (("(RM_COMMAND=).*" all var)
-             (string-append var "rm\n")))
-          (copy-file "src/EDITME" "Local/Makefile")
-          (copy-file "exim_monitor/EDITME" "Local/eximon.conf")
-          (let ((out (assoc-ref outputs "out"))
-                (gzip (assoc-ref inputs "gzip"))
-                (bzip2 (assoc-ref inputs "bzip2"))
-                (xz (assoc-ref inputs "xz")))
-            (substitute* '("Local/Makefile")
-              (("(BIN_DIRECTORY=).*" all var)
-               (string-append var out "/bin\n"))
-              (("(CONFIGURE_FILE=).*" all var)
-               (string-append var out "/etc/exim.conf\n"))
-              (("(EXIM_USER=).*" all var)
-               (string-append var "nobody\n"))
-              (("(FIXED_NEVER_USERS=).*" all var)
-               (string-append var "\n"))  ;XXX no root in build environment
-              (("(COMPRESS_COMMAND=).*" all var)
-               (string-append var gzip "/bin/gzip\n"))
-              (("(ZCAT_COMMAND=).*" all var)
-               (string-append var gzip "/bin/zcat\n")))
-            ;; This file has hardcoded names for tools despite the zcat
-            ;; configuration above.
-            (substitute* '("src/exigrep.src")
-              (("'zcat'") (string-append "'" gzip "/bin/zcat'"))
-              (("'bzcat'") (string-append "'" bzip2 "/bin/bzcat'"))
-              (("'xzcat'") (string-append "'" xz "/bin/xzcat'"))
-              (("'lzma'") (string-append "'" xz "/bin/lzma'")))))
-        (alist-cons-before
-         'build 'fix-sh-paths
-         (lambda* (#:key inputs #:allow-other-keys)
-           (substitute* '("scripts/lookups-Makefile" "scripts/reversion")
-             (("SHELL=/bin/sh") "SHELL=sh"))
-           (substitute* '("scripts/Configure-config.h")
-             (("\\| /bin/sh") "| sh"))
-           (let ((bash (assoc-ref inputs "bash")))
-             (substitute* '("scripts/Configure-eximon")
-               (("#!/bin/sh") (string-append "#!" bash "/bin/sh")))))
-         %standard-phases))
+       (modify-phases %standard-phases
+         (replace 'configure
+           ;; We'd use #:make-flags but the top-level Makefile calls others
+           ;; recursively, so just set all variables this way.
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (substitute* '("Makefile" "OS/Makefile-Default")
+               (("(RM_COMMAND=).*" all var)
+                (string-append var "rm\n")))
+             (copy-file "src/EDITME" "Local/Makefile")
+             (copy-file "exim_monitor/EDITME" "Local/eximon.conf")
+             (let ((out (assoc-ref outputs "out"))
+                   (gzip (assoc-ref inputs "gzip"))
+                   (bzip2 (assoc-ref inputs "bzip2"))
+                   (xz (assoc-ref inputs "xz")))
+               (substitute* '("Local/Makefile")
+                 (("(BIN_DIRECTORY=).*" all var)
+                  (string-append var out "/bin\n"))
+                 (("(CONFIGURE_FILE=).*" all var)
+                  (string-append var out "/etc/exim.conf\n"))
+                 (("(EXIM_USER=).*" all var)
+                  (string-append var "nobody\n"))
+                 (("(FIXED_NEVER_USERS=).*" all var)
+                  (string-append var "\n"))  ;XXX no root in build environment
+                 (("(COMPRESS_COMMAND=).*" all var)
+                  (string-append var gzip "/bin/gzip\n"))
+                 (("(ZCAT_COMMAND=).*" all var)
+                  (string-append var gzip "/bin/zcat\n")))
+               ;; This file has hardcoded names for tools despite the zcat
+               ;; configuration above.
+               (substitute* '("src/exigrep.src")
+                 (("'zcat'") (string-append "'" gzip "/bin/zcat'"))
+                 (("'bzcat'") (string-append "'" bzip2 "/bin/bzcat'"))
+                 (("'xzcat'") (string-append "'" xz "/bin/xzcat'"))
+                 (("'lzma'") (string-append "'" xz "/bin/lzma'"))))
+             #t))
+         (add-before 'build 'fix-sh-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* '("scripts/lookups-Makefile" "scripts/reversion")
+               (("SHELL=/bin/sh") "SHELL=sh"))
+             (substitute* '("scripts/Configure-config.h")
+               (("\\| /bin/sh") "| sh"))
+             (let ((bash (assoc-ref inputs "bash")))
+               (substitute* '("scripts/Configure-eximon")
+                 (("#!/bin/sh") (string-append "#!" bash "/bin/sh"))))
+             #t)))
        #:make-flags '("INSTALL_ARG=-no_chown")
        ;; No 'check' target.
        #:tests? #f))
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index 4eefafbe1..86a79bc0c 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -154,7 +154,7 @@ the traditional flat-text whatis databases.")
                 "14z0zcwm0m98fk2m2b3pvr8rs2sb602mg8f7wwb4xl7yj7cpjvbg"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-delete 'configure %standard-phases)
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
 
        ;; The 'all' target depends on three targets that directly populate
        ;; $(MANDIR) based on its current contents.  Doing that in parallel
@@ -220,7 +220,7 @@ automatically.")
     (arguments
      `(#:tests? #f ; no "check" target
        #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("gawk" ,gawk)))
     (home-page "https://github.com/mvertes/txt2man")
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index bebed14b5..d51480443 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -456,13 +456,14 @@ large scale eigenvalue problems.")
 
                           ;; Build the 'LAPACKE_clatms' functions.
                           "-DLAPACKE_WITH_TMG=ON")
-       #:phases (alist-cons-before
-                 'check 'patch-python
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (let ((python (assoc-ref inputs "python")))
-                     (substitute* "lapack_testing.py"
-                       (("/usr/bin/env python") python))))
-                  %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-python
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((python (assoc-ref inputs "python")))
+               (substitute* "lapack_testing.py"
+                 (("/usr/bin/env python") python)))
+             #t)))))
     (synopsis "Library for numerical linear algebra")
     (description
      "LAPACK is a Fortran 90 library for solving the most commonly occurring
@@ -1866,12 +1867,12 @@ void mc64ad_ (int *a, int *b, int *c, int *d, int *e, double *f, int *g,
     (arguments
      `(#:parallel-build? #f             ;race conditions using ar
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (call-with-output-file "make.inc"
-            (lambda (port)
-              (format port "
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (call-with-output-file "make.inc"
+               (lambda (port)
+                 (format port "
 PLAT        =
 DSuperLUroot = ~a
 DSUPERLULIB  = ~a/lib/libsuperlu_dist.a
@@ -1894,47 +1895,46 @@ FORTRAN     = mpifort
 FFLAGS      = -O2 -g $(PIC)
 LOADER      = $(CC)
 CDEFS       = -DAdd_"
-                      (getcwd)
-                      (assoc-ref outputs "out")
-                      (assoc-ref inputs "lapack")
-                      (assoc-ref inputs "pt-scotch")))))
-        (alist-cons-after
-         'unpack 'remove-broken-symlinks
-         (lambda _
-           (for-each delete-file
-                     (find-files "MAKE_INC" "\\.#make\\..*")))
-         (alist-cons-before
-          'build 'create-install-directories
-          (lambda* (#:key outputs #:allow-other-keys)
-            (for-each
-             (lambda (dir)
-               (mkdir-p (string-append (assoc-ref outputs "out")
-                                       "/" dir)))
-             '("lib" "include")))
-          (alist-replace
-           'check
+                         (getcwd)
+                         (assoc-ref outputs "out")
+                         (assoc-ref inputs "lapack")
+                         (assoc-ref inputs "pt-scotch"))))
+             #t))
+         (add-after 'unpack 'remove-broken-symlinks
+          (lambda _
+            (for-each delete-file
+                      (find-files "MAKE_INC" "\\.#make\\..*"))
+            #t))
+         (add-before 'build 'create-install-directories
+           (lambda* (#:key outputs #:allow-other-keys)
+             (for-each
+              (lambda (dir)
+                (mkdir-p (string-append (assoc-ref outputs "out")
+                                        "/" dir)))
+              '("lib" "include"))
+             #t))
+         (replace 'check
            (lambda _
              (with-directory-excursion "EXAMPLE"
                (and
                 (zero? (system* "mpirun" "-n" "2"
                                 "./pddrive" "-r" "1" "-c" "2" "g20.rua"))
                 (zero? (system* "mpirun" "-n" "2"
-                                "./pzdrive" "-r" "1" "-c" "2" "cg20.cua")))))
-           (alist-replace
-            'install
-            (lambda* (#:key outputs #:allow-other-keys)
-              ;; Library is placed in lib during the build phase.  Copy over
-              ;; headers to include.
-              (let* ((out    (assoc-ref outputs "out"))
-                     (incdir (string-append out "/include")))
-                (for-each (lambda (file)
-                            (let ((base (basename file)))
-                              (format #t "installing `~a' to `~a'~%"
-                                      base incdir)
-                              (copy-file file
-                                         (string-append incdir "/" base))))
-                          (find-files "SRC" ".*\\.h$"))))
-            %standard-phases)))))))
+                                "./pzdrive" "-r" "1" "-c" "2" "cg20.cua"))))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Library is placed in lib during the build phase.  Copy over
+             ;; headers to include.
+             (let* ((out    (assoc-ref outputs "out"))
+                    (incdir (string-append out "/include")))
+               (for-each (lambda (file)
+                           (let ((base (basename file)))
+                             (format #t "installing `~a' to `~a'~%"
+                                     base incdir)
+                             (copy-file file
+                                       (string-append incdir "/" base))))
+                         (find-files "SRC" ".*\\.h$")))
+             #t)))))
     (home-page (package-home-page superlu))
     (synopsis "Parallel supernodal direct solver")
     (description
@@ -2535,7 +2535,7 @@ parts of it.")
        (list (string-append "prefix=" (assoc-ref %outputs "out")))
        #:phases
        ;; no configure script
-       (alist-delete 'configure %standard-phases)
+       (modify-phases %standard-phases (delete 'configure))
        #:tests? #f)) ;the tests are part of the default target
     (home-page "http://openlibm.org/")
     (synopsis "Portable C mathematical library (libm)")
@@ -2574,7 +2574,7 @@ environments.")
        #:make-flags
        (list (string-append "prefix=" (assoc-ref %outputs "out")))
        ;; no configure script
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("fortran" ,gfortran)))
     (home-page "https://github.com/JuliaLang/openspecfun")
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index c69bd8b10..89aa30949 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -142,20 +142,19 @@ keys, no previous conversation is compromised.")
               ("python" ,python-2)
               ("perl" ,perl)))
     (arguments
-     `(#:phases (alist-cons-after
-                 'install 'install-etc
-                 (lambda* (#:key (make-flags '()) #:allow-other-keys)
-                   (zero? (apply system* "make" "install-etc" make-flags)))
-                 (alist-replace
-                  'configure
-                  ;; bitlbee's configure script does not tolerate many of the
-                  ;; variable settings that Guix would pass to it.
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (zero? (system* "./configure"
-                                    (string-append "--prefix="
-                                                   (assoc-ref outputs "out"))
-                                    "--otr=1")))
-                  %standard-phases))))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-etc
+           (lambda* (#:key (make-flags '()) #:allow-other-keys)
+             (zero? (apply system* "make" "install-etc" make-flags))))
+         (replace 'configure
+           ;; bitlbee's configure script does not tolerate many of the
+           ;; variable settings that Guix would pass to it.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (zero? (system* "./configure"
+                             (string-append "--prefix="
+                                            (assoc-ref outputs "out"))
+                             "--otr=1")))))))
     (synopsis "IRC to instant messaging gateway")
     (description "BitlBee brings IM (instant messaging) to IRC clients, for
 people who have an IRC client running all the time and don't want to run an
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index 9330179f9..8eaad0245 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -66,12 +66,12 @@
    (build-system gnu-build-system)
    (arguments
     `(#:phases
-       (alist-cons-before
-        'configure 'remove-unsupported-gcc-flags
-        (lambda _
-          ;; remove option that is not supported by gcc any more
-          (substitute* "configure" ((" -fforce-mem") "")))
-       %standard-phases)))
+      (modify-phases %standard-phases
+        (add-before 'configure 'remove-unsupported-gcc-flags
+          (lambda _
+            ;; remove option that is not supported by gcc any more
+            (substitute* "configure" ((" -fforce-mem") ""))
+            #t)))))
    (synopsis "MPEG audio decoder")
    (description
     "MAD (MPEG Audio Decoder) supports MPEG-1 and the MPEG-2 extension to
@@ -123,20 +123,20 @@ versions of ID3v2.")
    (inputs `(("zlib" ,zlib)))
    (arguments
     `(#:phases
-       (alist-cons-before
-        'configure 'apply-patches
-        ;; TODO: create a patch for origin instead?
-        (lambda _
-          (substitute* "configure"
-            (("iomanip.h") "")) ; drop check for unused header
-          ;; see http://www.linuxfromscratch.org/patches/downloads/id3lib/
-          (substitute* "include/id3/id3lib_strings.h"
-            (("include <string>") "include <cstring>\n#include <string>"))
-          (substitute* "include/id3/writers.h"
-            (("//\\#include <string.h>") "#include <cstring>"))
-          (substitute* "examples/test_io.cpp"
-            (("dami;") "dami;\nusing namespace std;")))
-         %standard-phases)))
+      (modify-phases %standard-phases
+        (add-before 'configure 'apply-patches
+          ;; TODO: create a patch for origin instead?
+          (lambda _
+            (substitute* "configure"
+              (("iomanip.h") "")) ; drop check for unused header
+            ;; see http://www.linuxfromscratch.org/patches/downloads/id3lib/
+            (substitute* "include/id3/id3lib_strings.h"
+              (("include <string>") "include <cstring>\n#include <string>"))
+            (substitute* "include/id3/writers.h"
+              (("//\\#include <string.h>") "#include <cstring>"))
+            (substitute* "examples/test_io.cpp"
+              (("dami;") "dami;\nusing namespace std;"))
+            #t)))))
    (synopsis "Library for reading, writing, and manipulating ID3v1 and ID3v2 tags")
    (description
     "Id3lib is a cross-platform software development library for reading,
@@ -194,29 +194,30 @@ Speex, WavPack TrueAudio, WAV, AIFF, MP4 and ASF files.")
     (build-system gnu-build-system)
     (outputs '("out" "gui"))                      ;GTK+ interface in "gui"
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let ((out (assoc-ref outputs "out")))
-                     (substitute* "Makefile"
-                       (("prefix=.*")
-                        (string-append "prefix := " out "\n")))))
-                 (alist-cons-before
-                  'install 'pre-install
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let ((out (assoc-ref outputs "out")))
-                      (mkdir-p (string-append out "/bin"))
-                      (mkdir-p (string-append out "/share/man/man1"))))
-                  (alist-cons-after
-                   'install 'post-install
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     ;; Move the GTK+ interface to "gui".
-                     (let ((out (assoc-ref outputs "out"))
-                           (gui (assoc-ref outputs "gui")))
-                       (mkdir-p (string-append gui "/bin"))
-                       (rename-file (string-append out "/bin/gmp3info")
-                                    (string-append gui "/bin/gmp3info"))))
-                   %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "Makefile"
+                 (("prefix=.*")
+                  (string-append "prefix := " out "\n"))))
+             #t))
+         (add-before 'install 'pre-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/bin"))
+               (mkdir-p (string-append out "/share/man/man1")))
+             #t))
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Move the GTK+ interface to "gui".
+             (let ((out (assoc-ref outputs "out"))
+                   (gui (assoc-ref outputs "gui")))
+               (mkdir-p (string-append gui "/bin"))
+               (rename-file (string-append out "/bin/gmp3info")
+                            (string-append gui "/bin/gmp3info")))
+             #t)))
         #:tests? #f))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 1c3ac71c2..b11121722 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -869,60 +869,60 @@ complete studio.")
      `(#:tests? #f ; xmllint attempts to download DTD
        #:test-target "test"
        #:phases
-       (alist-cons-after
-        'unpack 'fix-configuration
-        (lambda* (#:key inputs #:allow-other-keys)
-          (substitute* "default.config"
-            (("csound=csound")
-             (string-append "csound="
-                            (assoc-ref inputs "csound")
-                            "/bin/csound"))
-            (("/usr/bin/aplay")
-             (string-append (assoc-ref inputs "aplay")
-                            "/bin/aplay"))
-            (("/usr/bin/timidity")
-             (string-append (assoc-ref inputs "timidity")
-                            "/bin/timidity"))
-            (("/usr/bin/mpg123")
-             (string-append (assoc-ref inputs "mpg123")
-                            "/bin/mpg123"))
-            (("/usr/bin/ogg123")
-             (string-append (assoc-ref inputs "ogg123")
-                            "/bin/ogg123"))))
-        (alist-cons-before
-         'build 'patch-python-shebangs
-         (lambda _
-           ;; Two python scripts begin with a Unicode BOM, so patch-shebang
-           ;; has no effect.
-           (substitute* '("solfege/parsetree.py"
-                          "solfege/presetup.py")
-             (("#!/usr/bin/python") (string-append "#!" (which "python")))))
-         (alist-cons-before
-          'build 'add-sitedirs
-          ;; .pth files are not automatically interpreted unless the
-          ;; directories containing them are added as "sites".  The directories
-          ;; are then added to those in the PYTHONPATH.  This is required for
-          ;; the operation of pygtk and pygobject.
-          (lambda _
-            (substitute* "run-solfege.py"
-              (("import os")
-               "import os, site
-for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)")))
-          (alist-cons-before
-           'build 'adjust-config-file-prefix
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-configuration
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "default.config"
+               (("csound=csound")
+                (string-append "csound="
+                               (assoc-ref inputs "csound")
+                               "/bin/csound"))
+               (("/usr/bin/aplay")
+                (string-append (assoc-ref inputs "aplay")
+                               "/bin/aplay"))
+               (("/usr/bin/timidity")
+                (string-append (assoc-ref inputs "timidity")
+                               "/bin/timidity"))
+               (("/usr/bin/mpg123")
+                (string-append (assoc-ref inputs "mpg123")
+                               "/bin/mpg123"))
+               (("/usr/bin/ogg123")
+                (string-append (assoc-ref inputs "ogg123")
+                               "/bin/ogg123")))
+             #t))
+         (add-before 'build 'patch-python-shebangs
+           (lambda _
+             ;; Two python scripts begin with a Unicode BOM, so patch-shebang
+             ;; has no effect.
+             (substitute* '("solfege/parsetree.py"
+                            "solfege/presetup.py")
+               (("#!/usr/bin/python") (string-append "#!" (which "python"))))
+             #t))
+         (add-before 'build 'add-sitedirs
+           ;; .pth files are not automatically interpreted unless the
+           ;; directories containing them are added as "sites".  The directories
+           ;; are then added to those in the PYTHONPATH.  This is required for
+           ;; the operation of pygtk and pygobject.
+           (lambda _
+             (substitute* "run-solfege.py"
+               (("import os")
+                "import os, site
+for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)"))
+             #t))
+         (add-before 'build 'adjust-config-file-prefix
            (lambda* (#:key outputs #:allow-other-keys)
              (substitute* "run-solfege.py"
                (("prefix = os.path.*$")
-                (string-append "prefix = " (assoc-ref outputs "out")))))
-           (alist-cons-after
-            'install 'wrap-program
-            (lambda* (#:key inputs outputs #:allow-other-keys)
-              ;; Make sure 'solfege' runs with the correct PYTHONPATH.
-              (let* ((out (assoc-ref outputs "out"))
-                     (path (getenv "PYTHONPATH")))
-                (wrap-program (string-append out "/bin/solfege")
-                  `("PYTHONPATH" ":" prefix (,path)))))
-            %standard-phases)))))))
+                (string-append "prefix = " (assoc-ref outputs "out"))))
+             #t))
+         (add-after 'install 'wrap-program
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Make sure 'solfege' runs with the correct PYTHONPATH.
+             (let* ((out (assoc-ref outputs "out"))
+                    (path (getenv "PYTHONPATH")))
+               (wrap-program (string-append out "/bin/solfege")
+                 `("PYTHONPATH" ":" prefix (,path))))
+             #t)))))
     (inputs
      `(("python" ,python-2)
        ("pygtk" ,python2-pygtk)
diff --git a/gnu/packages/noweb.scm b/gnu/packages/noweb.scm
index be90e2dc6..0954e7995 100644
--- a/gnu/packages/noweb.scm
+++ b/gnu/packages/noweb.scm
@@ -35,47 +35,46 @@
                "10hdd6mrk26kyh4bnng4ah5h1pnanhsrhqa7qwqy6dyv3rng44y9"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'install 'pre-install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let ((out (assoc-ref outputs "out")))
-                     (mkdir-p (string-append out "/share/texmf/tex/latex"))
-                     #t))
-                 (alist-cons-after
-                  'install 'post-install
-                  (lambda* (#:key outputs inputs #:allow-other-keys)
-                    (let ((out (assoc-ref outputs "out"))
-                          (cu  (assoc-ref inputs "coreutils"))
-                          (du  (assoc-ref inputs "diffutils")))
-                      (with-directory-excursion out
-                        (for-each (lambda (prog)
-                                    (substitute* prog
-                                      (("nawk") (which "awk"))))
-                                  (append (map (lambda (x)
-                                                 (string-append "bin/" x))
-                                               '("noweb" "nountangle"
-                                                 "noroots" "noroff"
-                                                 "noindex"))
-                                          (map (lambda (x)
-                                                 (string-append "lib/" x))
-                                               '("btdefn" "emptydefn" "noidx"
-                                                 "pipedocs" "toascii" "tohtml"
-                                                 "toroff" "totex" "unmarkup"))))
-                        (substitute* "bin/cpif"
-                          (("^PATH=.*$")
-                           (string-append "PATH=" cu "/bin:" du "/bin\n"))))
-                      #t))
-                  (alist-replace
-                   'configure
-                   (lambda _
-                     ;; Jump in the source.
-                     (chdir "src")
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'pre-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/share/texmf/tex/latex"))
+               #t)))
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (cu  (assoc-ref inputs "coreutils"))
+                   (du  (assoc-ref inputs "diffutils")))
+               (with-directory-excursion out
+                 (for-each (lambda (prog)
+                             (substitute* prog
+                               (("nawk") (which "awk"))))
+                           (append (map (lambda (x)
+                                          (string-append "bin/" x))
+                                        '("noweb" "nountangle"
+                                          "noroots" "noroff"
+                                          "noindex"))
+                                   (map (lambda (x)
+                                          (string-append "lib/" x))
+                                        '("btdefn" "emptydefn" "noidx"
+                                          "pipedocs" "toascii" "tohtml"
+                                          "toroff" "totex" "unmarkup"))))
+                 (substitute* "bin/cpif"
+                   (("^PATH=.*$")
+                    (string-append "PATH=" cu "/bin:" du "/bin\n"))))
+               #t)))
+         (replace 'configure
+           (lambda _
+             ;; Jump in the source.
+             (chdir "src")
 
-                     ;; The makefile reads "source: FAQ", but FAQ isn't
-                     ;; available.
-                     (substitute* "Makefile"
-                       (("FAQ") "")))
-                   %standard-phases)))
+             ;; The makefile reads "source: FAQ", but FAQ isn't
+             ;; available.
+             (substitute* "Makefile"
+               (("FAQ") ""))
+             #t)))
        #:make-flags (let ((out (assoc-ref %outputs "out")))
                       (list (string-append "BIN=" out "/bin")
                             (string-append "LIB=" out "/lib")
diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index 42da56194..c8491dc05 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -53,30 +53,31 @@
     (inputs `(("perl" ,perl)))
     (arguments
      '(#:parallel-tests? #f
-       #:phases (alist-cons-before
-                 'check 'patch-test-scripts
-                 (lambda _
-                   (let ((echo (which "echo")))
-                     (substitute*
-                         (find-files "tests" "^run-test$")
-                       (("/bin/echo") echo))))
-                 (alist-cons-after
-                  'install 'wrap-program
-                  ;; Point installed scripts to the utilities they need.
-                  (lambda* (#:key inputs outputs #:allow-other-keys)
-                    (let* ((out       (assoc-ref outputs "out"))
-                           (diffutils (assoc-ref inputs "diffutils"))
-                           (sed       (assoc-ref inputs "sed"))
-                           (gawk      (assoc-ref inputs "gawk")))
-                      (for-each
-                       (lambda (prog)
-                         (wrap-program (string-append out "/bin/" prog)
-                                       `("PATH" ":" prefix
-                                         ,(map (lambda (dir)
-                                                 (string-append dir "/bin"))
-                                               (list diffutils sed gawk)))))
-                       '("dehtmldiff" "editdiff" "espdiff"))))
-                  %standard-phases))))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-test-scripts
+           (lambda _
+             (let ((echo (which "echo")))
+               (substitute*
+                   (find-files "tests" "^run-test$")
+                 (("/bin/echo") echo)))
+             #t))
+         (add-after 'install 'wrap-program
+           ;; Point installed scripts to the utilities they need.
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out       (assoc-ref outputs "out"))
+                    (diffutils (assoc-ref inputs "diffutils"))
+                    (sed       (assoc-ref inputs "sed"))
+                    (gawk      (assoc-ref inputs "gawk")))
+               (for-each
+                (lambda (prog)
+                  (wrap-program (string-append out "/bin/" prog)
+                    `("PATH" ":" prefix
+                      ,(map (lambda (dir)
+                              (string-append dir "/bin"))
+                            (list diffutils sed gawk)))))
+                '("dehtmldiff" "editdiff" "espdiff")))
+             #t)))))
     (home-page "http://cyberelk.net/tim/software/patchutils")
     (synopsis "Collection of tools for manipulating patch files")
     (description
@@ -105,39 +106,39 @@ listing the files modified by a patch.")
               ("ed" ,ed)))
     (arguments
      '(#:parallel-tests? #f
-       #:phases 
-       (alist-cons-before
-        'check 'patch-tests
-        (lambda _
-          (substitute*
-              '("test/run"
-                "test/edit.test") 
-            (("/bin/sh") (which "sh")))
-          ;; TODO: Run the mail tests once the mail feature can be supported.
-          (delete-file "test/mail.test"))
-        (alist-cons-after
-         'install 'wrap-program
-         ;; quilt's configure checks for the absolute path to the utilities it
-         ;; needs, but uses only the name when invoking them, so we need to
-         ;; make sure the quilt script can find those utilities when run.
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (let* ((out       (assoc-ref outputs "out"))
-                  (coreutils (assoc-ref inputs "coreutils"))
-                  (diffutils (assoc-ref inputs "diffutils"))
-                  (findutils (assoc-ref inputs "findutils"))
-                  (less      (assoc-ref inputs "less"))
-                  (file      (assoc-ref inputs "file"))
-                  (ed        (assoc-ref inputs "ed"))
-                  (sed       (assoc-ref inputs "sed"))
-                  (bash      (assoc-ref inputs "bash"))
-                  (grep      (assoc-ref inputs "grep")))
-             (wrap-program (string-append out "/bin/quilt")
-                           `("PATH" ":" prefix
-                             ,(map (lambda (dir)
-                                     (string-append dir "/bin"))
-                                   (list coreutils diffutils findutils
-                                         less file ed sed bash grep))))))
-         %standard-phases))))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-tests
+           (lambda _
+             (substitute*
+                 '("test/run"
+                   "test/edit.test")
+               (("/bin/sh") (which "sh")))
+             ;; TODO: Run the mail tests once the mail feature can be supported.
+             (delete-file "test/mail.test")
+             #t))
+         (add-after 'install 'wrap-program
+           ;; quilt's configure checks for the absolute path to the utilities it
+           ;; needs, but uses only the name when invoking them, so we need to
+           ;; make sure the quilt script can find those utilities when run.
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out       (assoc-ref outputs "out"))
+                    (coreutils (assoc-ref inputs "coreutils"))
+                    (diffutils (assoc-ref inputs "diffutils"))
+                    (findutils (assoc-ref inputs "findutils"))
+                    (less      (assoc-ref inputs "less"))
+                    (file      (assoc-ref inputs "file"))
+                    (ed        (assoc-ref inputs "ed"))
+                    (sed       (assoc-ref inputs "sed"))
+                    (bash      (assoc-ref inputs "bash"))
+                    (grep      (assoc-ref inputs "grep")))
+               (wrap-program (string-append out "/bin/quilt")
+                 `("PATH" ":" prefix
+                   ,(map (lambda (dir)
+                           (string-append dir "/bin"))
+                         (list coreutils diffutils findutils
+                               less file ed sed bash grep)))))
+             #t)))))
     (home-page "https://savannah.nongnu.org/projects/quilt/")
     (synopsis "Script for managing patches to software")
     (description
@@ -164,8 +165,9 @@ refreshed, and more.")
        #:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))
                           "INSTALL_DIR=/bin" "MAN_DIR=/share/man/man1")
        #:phases
-       (alist-delete 'configure
-                     (alist-delete 'build %standard-phases))))
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build))))
     (inputs
      `(("perl" ,perl)
        ("xmlto" ,xmlto)))
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 0993543c2..ee0011340 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -296,23 +296,23 @@ reading and editing of existing PDF files.")
     `(#:tests? #f ; there is no check target
       #:parallel-build? #f ; build fails randomly on 8-way machines
       #:configure-flags
-        (list (string-append "--with-freetype2-includes="
-                             (assoc-ref %build-inputs "freetype")
-                             "/include/freetype2"))
+      (list (string-append "--with-freetype2-includes="
+                           (assoc-ref %build-inputs "freetype")
+                           "/include/freetype2"))
       #:phases
-       (alist-replace
-        'install
-        (lambda* (#:key outputs inputs #:allow-other-keys #:rest args)
-         (let* ((install (assoc-ref %standard-phases 'install))
-                (out (assoc-ref outputs "out"))
-                (xpdfrc (string-append out "/etc/xpdfrc"))
-                (gs-fonts (assoc-ref inputs "gs-fonts")))
-               (apply install args)
-               (substitute* xpdfrc
+      (modify-phases %standard-phases
+        (replace 'install
+          (lambda* (#:key outputs inputs #:allow-other-keys #:rest args)
+            (let* ((install (assoc-ref %standard-phases 'install))
+                   (out (assoc-ref outputs "out"))
+                   (xpdfrc (string-append out "/etc/xpdfrc"))
+                   (gs-fonts (assoc-ref inputs "gs-fonts")))
+              (apply install args)
+              (substitute* xpdfrc
                 (("/usr/local/share/ghostscript/fonts")
                  (string-append gs-fonts "/share/fonts/type1/ghostscript"))
-                (("#fontFile") "fontFile"))))
-        %standard-phases)))
+                (("#fontFile") "fontFile")))
+            #t)))))
    (synopsis "Viewer for PDF files based on the Motif toolkit")
    (description
     "Xpdf is a viewer for Portable Document Format (PDF) files.")
@@ -343,7 +343,7 @@ reading and editing of existing PDF files.")
                           "CC=gcc")
        #:tests? #f ; Package does not contain tests.
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://pwmt.org/projects/zathura-cb/")
     (synopsis "Comic book support for zathura (libarchive backend)")
     (description "The zathura-cb plugin adds comic book support to zathura
@@ -374,7 +374,7 @@ using libarchive.")
                           "CC=gcc")
        #:tests? #f ; Package does not contain tests.
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://pwmt.org/projects/zathura-ps/")
     (synopsis "PS support for zathura (libspectre backend)")
     (description "The zathura-ps plugin adds PS support to zathura
@@ -406,7 +406,7 @@ using libspectre.")
                           "CC=gcc")
        #:tests? #f ; Package does not contain tests.
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://pwmt.org/projects/zathura-djvu/")
     (synopsis "DjVu support for zathura (DjVuLibre backend)")
     (description "The zathura-djvu plugin adds DjVu support to zathura
@@ -439,7 +439,7 @@ using the DjVuLibre library.")
                           "CC=gcc")
        #:tests? #f ; Package does not include tests.
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://pwmt.org/projects/zathura-pdf-poppler/")
     (synopsis "PDF support for zathura (poppler backend)")
     (description "The zathura-pdf-poppler plugin adds PDF support to zathura
@@ -477,7 +477,7 @@ by using the poppler rendering engine.")
        #:tests? #f ; Tests fail: "Gtk cannot open display".
        #:test-target "test"
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://pwmt.org/projects/zathura/")
     (synopsis "Lightweight keyboard-driven PDF viewer")
     (description "Zathura is a customizable document viewer.  It provides a
@@ -510,14 +510,14 @@ interaction.")
      `(#:configure-flags '("-DPODOFO_BUILD_SHARED=ON"
                            "-DPODOFO_BUILD_STATIC=ON")
        #:phases
-         (alist-cons-before
-         'configure 'patch
-         (lambda* (#:key inputs #:allow-other-keys)
-           (let ((freetype (assoc-ref inputs "freetype")))
-             ;; Look for freetype include files in the correct place.
-             (substitute* "cmake/modules/FindFREETYPE.cmake"
-               (("/usr/local") freetype))))
-         %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((freetype (assoc-ref inputs "freetype")))
+               ;; Look for freetype include files in the correct place.
+               (substitute* "cmake/modules/FindFREETYPE.cmake"
+                 (("/usr/local") freetype)))
+             #t)))))
     (home-page "http://podofo.sourceforge.net")
     (synopsis "Tools to work with the PDF file format")
     (description
@@ -763,12 +763,13 @@ the PDF pages.")
                 "0bw224vb7jh0lrqaf4jgxk48xglvxs674qcpj5y0axyfbh896cfk"))))
     (build-system gnu-build-system)
     (arguments
-      '(#:phases (alist-cons-after
-                  'unpack 'patch-ldconfig
-                  (lambda _
-                   (substitute* "mk/Autoconf.mk"
-                    (("/sbin/ldconfig -p") "echo lib")) #t)
-                  (alist-delete 'configure %standard-phases))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-ldconfig
+           (lambda _
+             (substitute* "mk/Autoconf.mk"
+               (("/sbin/ldconfig -p") "echo lib")) #t))
+         (delete 'configure))
         #:tests? #f
         #:make-flags (list "CC=gcc"
                            (string-append "prefix=" (assoc-ref %outputs "out")))))
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 249f478f9..6c8cb607f 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -3071,11 +3071,9 @@ at the end of the scope.")
     (build-system perl-build-system)
     (arguments
      `(#:phases
-       (alist-cons-after
-        'unpack 'cd
-        (lambda* _
-         (chdir "List"))
-       %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'cd
+           (lambda* _ (chdir "List") #t)))))
     (license (package-license perl))
     (synopsis "Perl extension for crawling directory trees and compiling
 lists of files")
@@ -6958,16 +6956,17 @@ contents of a file is equal to a particular string.")
          "0chiqnzmna2mglm37nzxvn9qhq2j31iwz3i9isqjs7bf3k449gb9"))))
     (build-system perl-build-system)
     (arguments
-     `(#:phases (alist-cons-before
-                 'check 'patch-test
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   ;; This test looks for "#!/usr/bin/perl" in some source.
-                   ;; Patch what the test looks for.
-                   (substitute* "t/source.t"
-                     (("#!/usr/bin/perl")
-                      (string-append "#!" (assoc-ref inputs "perl")
-                                     "/bin/perl"))))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-test
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; This test looks for "#!/usr/bin/perl" in some source.
+             ;; Patch what the test looks for.
+             (substitute* "t/source.t"
+               (("#!/usr/bin/perl")
+                (string-append "#!" (assoc-ref inputs "perl")
+                               "/bin/perl")))
+             #t)))))
     (home-page "http://search.cpan.org/dist/Test-Harness")
     (synopsis "Run Perl standard test scripts with statistics")
     (description "Simple test harness which allows tests to be run and results
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 2378acd97..9911420de 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -152,13 +152,14 @@ from digital cameras.")
        ("libexif" ,libexif)
        ("libgphoto2" ,libgphoto2)))
     (arguments
-     '(#:phases (alist-cons-before
-                 'check 'pre-check
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (substitute* (find-files "tests/data" "\\.param$")
-                     (("/usr/bin/env")
-                      (which "env"))))
-                 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* (find-files "tests/data" "\\.param$")
+               (("/usr/bin/env")
+                (which "env")))
+             #t)))
 
        ;; FIXME: There are 2 test failures, most likely related to the build
        ;; environment.
diff --git a/gnu/packages/popt.scm b/gnu/packages/popt.scm
index 4978ea729..9c125dcc4 100644
--- a/gnu/packages/popt.scm
+++ b/gnu/packages/popt.scm
@@ -66,14 +66,15 @@ line syntax.")
                "1j2c61nn2n351nhj4d25mnf3vpiddcykq005w2h6kw79dwlysa77"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'configure 'patch-test
-                 (lambda _
-                   (substitute* "test-poptrc.in"
-                     (("/bin/echo") (which "echo")))
-                   (substitute* "testit.sh"   ; don't expect old libtool names
-                     (("lt-test1") "test1")))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-test
+           (lambda _
+             (substitute* "test-poptrc.in"
+               (("/bin/echo") (which "echo")))
+             (substitute* "testit.sh"   ; don't expect old libtool names
+               (("lt-test1") "test1"))
+             #t)))))
     (home-page "http://rpm5.org/files/popt/")
     (synopsis "Command line option parsing library")
     (description
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index 9de281974..e97193003 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -205,22 +205,23 @@ to @code{IOStreams}.")
        (list (string-append "--with-boost="
                             (assoc-ref %build-inputs "boost")))
        #:parallel-tests? #f             ;There appear to be race conditions
-       #:phases (alist-cons-before
-                 'check 'patch-test-files
-                 (lambda _
-                   ;; Unpatch shebangs in test input so that source-highlight
-                   ;; is still able to infer input language
-                   (substitute* '("tests/test.sh"
-                                  "tests/test2.sh"
-                                  "tests/test.tcl")
-                     (((string-append "#! *" (which "sh"))) "#!/bin/sh"))
-                   ;; Initial patching unrecoverably removes whitespace, so
-                   ;; remove it also in the comparison output.
-                   (substitute* '("tests/test.sh.html"
-                                  "tests/test2.sh.html"
-                                  "tests/test.tcl.html")
-                     (("#! */bin/sh") "#!/bin/sh")))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-test-files
+           (lambda _
+             ;; Unpatch shebangs in test input so that source-highlight
+             ;; is still able to infer input language
+             (substitute* '("tests/test.sh"
+                            "tests/test2.sh"
+                            "tests/test.tcl")
+               (((string-append "#! *" (which "sh"))) "#!/bin/sh"))
+             ;; Initial patching unrecoverably removes whitespace, so
+             ;; remove it also in the comparison output.
+             (substitute* '("tests/test.sh.html"
+                            "tests/test2.sh.html"
+                            "tests/test.tcl.html")
+               (("#! */bin/sh") "#!/bin/sh"))
+             #t)))))
     (home-page "https://www.gnu.org/software/src-highlite/")
     (synopsis "Produce a document with syntax highlighting from a source file")
     (description
@@ -292,22 +293,22 @@ highlighting.  Language definitions and color themes are customizable.")
        #:make-flags (list (string-append "prefix=" %output)
                           "INSTALL=install"
                           "all")
-       #:phases (alist-replace
-                 'configure
-                 (lambda _ (chdir "build/gcc"))
-                 (alist-cons-after
-                  'install 'install-libs
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    ;; Libraries are not installed by default
-                    (let* ((output (assoc-ref outputs "out"))
-                           (libdir (string-append output "/lib")))
-                      (begin
-                        (mkdir-p libdir)
-                        (for-each (lambda (l)
-                                    (copy-file
-                                     l (string-append libdir "/" (basename l))))
-                                  (find-files "bin" "lib*")))))
-                  %standard-phases))))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda _ (chdir "build/gcc") #t))
+         (add-after 'install 'install-libs
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Libraries are not installed by default
+             (let* ((output (assoc-ref outputs "out"))
+                    (libdir (string-append output "/lib")))
+               (begin
+                 (mkdir-p libdir)
+                 (for-each (lambda (l)
+                             (copy-file
+                              l (string-append libdir "/" (basename l))))
+                           (find-files "bin" "lib*"))))
+             #t)))))
     (home-page "http://astyle.sourceforge.net/")
     (synopsis "Source code indenter, formatter, and beautifier")
     (description
diff --git a/gnu/packages/pumpio.scm b/gnu/packages/pumpio.scm
index a74d47436..c692e6932 100644
--- a/gnu/packages/pumpio.scm
+++ b/gnu/packages/pumpio.scm
@@ -42,22 +42,22 @@
               (file-name (string-append name "-" version "-checkout"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   ;; Fix dependency tests.
-                   (substitute* "pumpa.pro"
-                     (("/usr/include/tidy\\.h")
-                      (string-append (assoc-ref inputs "tidy")
-                                     "/include/tidy.h"))
-                     (("/usr/include/aspell.h")
-                      (string-append (assoc-ref inputs "aspell")
-                                     "/include/aspell.h")))
-                   ;; Run qmake with proper installation prefix.
-                   (let ((prefix (string-append "PREFIX="
-                                                (assoc-ref outputs "out"))))
-                     (zero? (system* "qmake" prefix))))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Fix dependency tests.
+             (substitute* "pumpa.pro"
+               (("/usr/include/tidy\\.h")
+                (string-append (assoc-ref inputs "tidy")
+                               "/include/tidy.h"))
+               (("/usr/include/aspell.h")
+                (string-append (assoc-ref inputs "aspell")
+                               "/include/aspell.h")))
+             ;; Run qmake with proper installation prefix.
+             (let ((prefix (string-append "PREFIX="
+                                          (assoc-ref outputs "out"))))
+               (zero? (system* "qmake" prefix))))))))
     (inputs
      `(("aspell" ,aspell)
        ("qtbase" ,qtbase)
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 346faf434..225658ca1 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -484,11 +484,10 @@ pidof, tty, taskset, pmap.")
      `(("python-py-bcrypt" ,python-py-bcrypt)))
     (arguments
      `(#:phases
-       (alist-cons-before
-        'check 'set-PYTHON_EGG_CACHE
-        ;; some tests require access to "$HOME/.cython"
-        (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp"))
-         %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'check 'set-PYTHON_EGG_CACHE
+           ;; some tests require access to "$HOME/.cython"
+           (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t)))))
     (home-page "https://bitbucket.org/ecollins/passlib")
     (synopsis
      "Comprehensive password hashing framework")
@@ -1078,12 +1077,10 @@ multiple Unicode code points, e.g. \"G\" + acute-accent)
        ("gmp" ,gmp)))
     (arguments
      `(#:phases
-       (alist-cons-before
-        'build 'set-build-env
-        ;; pycrypto runs an autoconf configure script behind the scenes
-        (lambda _
-          (setenv "CONFIG_SHELL" (which "bash")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'build 'set-build-env
+           ;; pycrypto runs an autoconf configure script behind the scenes
+           (lambda _ (setenv "CONFIG_SHELL" (which "bash")) #t)))))
     (home-page "http://www.pycrypto.org/")
     (synopsis "Cryptographic modules for Python")
     (description
@@ -1468,11 +1465,11 @@ other Python program.")
     (build-system python-build-system)
     (arguments
      `(#:python ,python-2
-       #:phases (alist-replace
-                 'check
-                 (lambda _
-                   (zero? (system* "./test.sh")))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (zero? (system* "./test.sh")))))))
     (home-page "http://www.alcyone.com/software/empy/")
     (synopsis "Templating system for Python")
     (description
@@ -4637,10 +4634,10 @@ as the original project seems to have been abandoned circa 2007.")
        ("python-pytest" ,python-pytest)
        ("python-mock"   ,python-mock))) ;for tests
     (arguments
-     `(#:phases (alist-replace
-                 'check
-                 (lambda _ (zero? (system* "py.test")))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _ (zero? (system* "py.test")))))))
     (home-page "http://www.sqlalchemy.org")
     (synopsis "Database abstraction library")
     (description
@@ -8512,10 +8509,10 @@ automatically detect a wide range of file encodings.")
     (native-inputs
      `(("python-pytest" ,python-pytest)))
     (arguments
-     `(#:phases (alist-replace
-                 'check
-                 (lambda _ (zero? (system* "py.test")))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _ (zero? (system* "py.test")))))))
     (home-page "http://docopt.org")
     (synopsis "Command-line interface description language for Python")
     (description "This library allows the user to define a command-line
diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm
index 6b5cfb013..fbd8a45ba 100644
--- a/gnu/packages/rdf.scm
+++ b/gnu/packages/rdf.scm
@@ -127,26 +127,26 @@ Java Lucene text search engine API to C++.")
                 "18p2flb2sv2hq6w2qkd29z9c7knnwqr3f12i2srshlzx6vwkm05s"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-after
-                 'remove-out-of-tree-references 'autoreconf
-                 (lambda _
-                   (zero? (system* "autoreconf" "-vfi")))
-                 (alist-cons-after
-                  'unpack 'remove-out-of-tree-references
-                  (lambda _
-                    ;; remove symlinks to files in /usr/
-                    (delete-file-recursively "m4")
-                    (for-each delete-file '("config.guess"
-                                            "config.sub"
-                                            "depcomp"
-                                            "install-sh"
-                                            "ltmain.sh"
-                                            "missing"))
-                    ;; remove_test depends on an out-of-tree RDF file
-                    (substitute* "examples/Makefile.am"
-                      (("instances_test remove_test") "instances_test")
-                      (("\\$\\(TESTS\\) remove_test") "$(TESTS)")))
-                  %standard-phases))))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'remove-out-of-tree-references 'autoreconf
+           (lambda _
+             (zero? (system* "autoreconf" "-vfi"))))
+         (add-after 'unpack 'remove-out-of-tree-references
+           (lambda _
+             ;; remove symlinks to files in /usr/
+             (delete-file-recursively "m4")
+             (for-each delete-file '("config.guess"
+                                     "config.sub"
+                                     "depcomp"
+                                     "install-sh"
+                                     "ltmain.sh"
+                                     "missing"))
+             ;; remove_test depends on an out-of-tree RDF file
+             (substitute* "examples/Makefile.am"
+               (("instances_test remove_test") "instances_test")
+               (("\\$\\(TESTS\\) remove_test") "$(TESTS)"))
+             #t)))))
     (inputs
      `(("raptor" ,raptor2)
        ("cyrus-sasl" ,cyrus-sasl)
diff --git a/gnu/packages/regex.scm b/gnu/packages/regex.scm
index f35d3e63a..a49fd89bf 100644
--- a/gnu/packages/regex.scm
+++ b/gnu/packages/regex.scm
@@ -85,16 +85,16 @@ Python.  It is a C++ library.")
                 "0n36cgqys59r2gmb7jzbqiwsy790v8nbxk82d2n2saz0rp145ild"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases (alist-cons-before
-                 'check 'install-locales
-                 (lambda _
-                   ;; The tests require the availability of the
-                   ;; 'en_US.ISO-8859-1' locale.
-                   (setenv "LOCPATH" (getcwd))
-                   (zero? (system* "localedef" "--no-archive"
-                                   "--prefix" (getcwd) "-i" "en_US"
-                                   "-f" "ISO-8859-1" "./en_US.ISO-8859-1")))
-                 %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'install-locales
+           (lambda _
+             ;; The tests require the availability of the
+             ;; 'en_US.ISO-8859-1' locale.
+             (setenv "LOCPATH" (getcwd))
+             (zero? (system* "localedef" "--no-archive"
+                             "--prefix" (getcwd) "-i" "en_US"
+                             "-f" "ISO-8859-1" "./en_US.ISO-8859-1")))))))
     (synopsis "Approximate regex matching library and agrep utility")
     (description "Superset of the POSIX regex API, enabling approximate
 matching.  Also ships a version of the agrep utility which behaves similar to
diff --git a/gnu/packages/rrdtool.scm b/gnu/packages/rrdtool.scm
index a07d70537..fbb6a3403 100644
--- a/gnu/packages/rrdtool.scm
+++ b/gnu/packages/rrdtool.scm
@@ -53,15 +53,16 @@
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("groff" ,groff)))
     (arguments
-     '(#:phases (alist-cons-before
-                 'configure 'pre-configure
-                 (lambda _
-                   (substitute* "libtool"
-                     (("/bin/sed") (which "sed")))
-                   (substitute* "src/Makefile.in"
-                     (("^rrdcached_LDADD = librrd_th.la")
-                      "rrdcached_LDADD = librrd_th.la -lglib-2.0")))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda _
+             (substitute* "libtool"
+               (("/bin/sed") (which "sed")))
+             (substitute* "src/Makefile.in"
+               (("^rrdcached_LDADD = librrd_th.la")
+                "rrdcached_LDADD = librrd_th.la -lglib-2.0"))
+             #t)))))
     (home-page "http://oss.oetiker.ch/rrdtool/")
     (synopsis "Time-series data storage and display system")
     (description
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 6251145f0..166c092e2 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -176,16 +176,16 @@ a focus on simplicity and productivity.")
      `(#:test-target "test"
        #:parallel-tests? #f
        #:phases
-        (alist-cons-before
-         'configure 'replace-bin-sh
-         (lambda _
-           (substitute* '("Makefile.in"
-                          "ext/pty/pty.c"
-                          "io.c"
-                          "lib/mkmf.rb"
-                          "process.c")
-             (("/bin/sh") (which "sh"))))
-         %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'replace-bin-sh
+           (lambda _
+             (substitute* '("Makefile.in"
+                            "ext/pty/pty.c"
+                            "io.c"
+                            "lib/mkmf.rb"
+                            "process.c")
+               (("/bin/sh") (which "sh")))
+             #t)))))
     (native-search-paths
      (list (search-path-specification
             (variable "GEM_PATH")
@@ -210,16 +210,16 @@ a focus on simplicity and productivity.")
      `(#:test-target "test"
        #:parallel-tests? #f
        #:phases
-        (alist-cons-before
-         'configure 'replace-bin-sh
-         (lambda _
-           (substitute* '("Makefile.in"
-                          "ext/pty/pty.c"
-                          "io.c"
-                          "lib/mkmf.rb"
-                          "process.c")
-             (("/bin/sh") (which "sh"))))
-         %standard-phases)))))
+       (modify-phases %standard-phases
+         (add-before 'configure 'replace-bin-sh
+           (lambda _
+             (substitute* '("Makefile.in"
+                            "ext/pty/pty.c"
+                            "io.c"
+                            "lib/mkmf.rb"
+                            "process.c")
+               (("/bin/sh") (which "sh")))
+             #t)))))))
 
 (define-public ruby-hoe
   (package
diff --git a/gnu/packages/sawfish.scm b/gnu/packages/sawfish.scm
index 535dd8eb0..ebb8c5e1f 100644
--- a/gnu/packages/sawfish.scm
+++ b/gnu/packages/sawfish.scm
@@ -138,31 +138,31 @@ backend of Sawfish.")
     (arguments
      '(#:tests? #f ; no tests
        #:phases
-       (alist-cons-before
-        'configure 'patch-exec-rep
-        (lambda _
-          (substitute* '("lisp/sawfish/cfg/main.jl.in"
-                         "scripts/sawfish-about.jl.in"
-                         "scripts/sawfish-client.jl"
-                         "scripts/sawfish-menu.jl")
-            (("exec rep") (string-append "exec " (which "rep")))))
-        (alist-cons-after
-         'install 'wrap-scripts
-         ;; Wrap scripts with REP_DL_LOAD_PATH for finding rep-gtk
-         ;; and sawfish.client.
-         (lambda* (#:key outputs #:allow-other-keys)
-           (define (wrap-script script)
-             (let ((out (assoc-ref outputs "out")))
-               (wrap-program (string-append out script)
-                             `("REP_DL_LOAD_PATH" =
-                               ,(list (getenv "REP_DL_LOAD_PATH")
-                                      (string-append out "/lib/rep"))))))
-           (for-each wrap-script
-                     (list "/bin/sawfish-about"
-                           "/bin/sawfish-client"
-                           "/bin/sawfish-config"
-                           "/lib/sawfish/sawfish-menu")))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-exec-rep
+           (lambda _
+             (substitute* '("lisp/sawfish/cfg/main.jl.in"
+                            "scripts/sawfish-about.jl.in"
+                            "scripts/sawfish-client.jl"
+                            "scripts/sawfish-menu.jl")
+               (("exec rep") (string-append "exec " (which "rep"))))
+             #t))
+         (add-after 'install 'wrap-scripts
+           ;; Wrap scripts with REP_DL_LOAD_PATH for finding rep-gtk
+           ;; and sawfish.client.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (define (wrap-script script)
+               (let ((out (assoc-ref outputs "out")))
+                 (wrap-program (string-append out script)
+                   `("REP_DL_LOAD_PATH" =
+                     ,(list (getenv "REP_DL_LOAD_PATH")
+                            (string-append out "/lib/rep"))))))
+             (for-each wrap-script
+                       (list "/bin/sawfish-about"
+                             "/bin/sawfish-client"
+                             "/bin/sawfish-config"
+                             "/lib/sawfish/sawfish-menu"))
+             #t)))))
     (native-inputs
      `(("gettext"     ,gettext-minimal)
        ("makeinfo"    ,texinfo)
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 161138285..bafc3da33 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -417,73 +417,73 @@ implementation techniques and as an expository tool.")
     (build-system gnu-build-system)
     (arguments
      '(#:phases
-       (alist-cons-before
-        'configure 'pre-configure
-        (lambda* (#:key inputs #:allow-other-keys)
-          ;; Patch dynamically loaded libraries with their absolute paths.
-          (let* ((library-path   (search-path-as-string->list
-                                  (getenv "LIBRARY_PATH")))
-                 (find-so        (lambda (soname)
-                                   (search-path
-                                    library-path
-                                    (format #f "~a.so" soname))))
-                 (patch-ffi-libs (lambda (file libs)
-                                   (for-each
-                                    (lambda (lib)
-                                      (substitute* file
-                                        (((format #f "\"~a\"" lib))
-                                         (format #f "\"~a\"" (find-so lib)))))
-                                    libs))))
-            (substitute* "collects/db/private/sqlite3/ffi.rkt"
-              (("ffi-lib sqlite-so")
-               (format #f "ffi-lib \"~a\"" (find-so "libsqlite3"))))
-            (substitute* "collects/openssl/libssl.rkt"
-              (("ffi-lib libssl-so")
-               (format #f "ffi-lib \"~a\"" (find-so "libssl"))))
-            (substitute* "collects/openssl/libcrypto.rkt"
-              (("ffi-lib libcrypto-so")
-               (format #f "ffi-lib \"~a\"" (find-so "libcrypto"))))
-            (substitute* "share/pkgs/math-lib/math/private/bigfloat/gmp.rkt"
-              (("ffi-lib libgmp-so")
-               (format #f "ffi-lib \"~a\"" (find-so "libgmp"))))
-            (substitute* "share/pkgs/math-lib/math/private/bigfloat/mpfr.rkt"
-              (("ffi-lib libmpfr-so")
-               (format #f "ffi-lib \"~a\"" (find-so "libmpfr"))))
-            (for-each
-             (lambda (x) (apply patch-ffi-libs x))
-             '(("share/pkgs/draw-lib/racket/draw/unsafe/cairo-lib.rkt"
-                ("libfontconfig" "libcairo"))
-               ("share/pkgs/draw-lib/racket/draw/unsafe/glib.rkt"
-                ("libglib-2.0" "libgmodule-2.0" "libgobject-2.0"))
-               ("share/pkgs/draw-lib/racket/draw/unsafe/jpeg.rkt"
-                ("libjpeg"))
-               ("share/pkgs/draw-lib/racket/draw/unsafe/pango.rkt"
-                ("libpango-1.0" "libpangocairo-1.0"))
-               ("share/pkgs/draw-lib/racket/draw/unsafe/png.rkt"
-                ("libpng"))
-               ("share/pkgs/db-lib/db/private/odbc/ffi.rkt"
-                ("libodbc"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/x11.rkt"
-                ("libX11"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/gsettings.rkt"
-                ("libgio-2.0"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/gtk3.rkt"
-                ("libgdk-3" "libgtk-3"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/unique.rkt"
-                ("libunique-1.0"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/utils.rkt"
-                ("libgdk-x11-2.0" "libgdk_pixbuf-2.0" "libgtk-x11-2.0"))
-               ("share/pkgs/gui-lib/mred/private/wx/gtk/gl-context.rkt"
-                ("libGL"))
-               ("share/pkgs/sgl/gl.rkt"
-                ("libGL" "libGLU")))))
-          (chdir "src"))
-        (alist-cons-after
-         'unpack 'patch-/bin/sh
-         (lambda _
-           (substitute* "collects/racket/system.rkt"
-             (("/bin/sh") (which "sh"))))
-         %standard-phases))
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Patch dynamically loaded libraries with their absolute paths.
+             (let* ((library-path   (search-path-as-string->list
+                                     (getenv "LIBRARY_PATH")))
+                    (find-so        (lambda (soname)
+                                      (search-path
+                                       library-path
+                                       (format #f "~a.so" soname))))
+                    (patch-ffi-libs (lambda (file libs)
+                                      (for-each
+                                       (lambda (lib)
+                                         (substitute* file
+                                           (((format #f "\"~a\"" lib))
+                                            (format #f "\"~a\"" (find-so lib)))))
+                                       libs))))
+               (substitute* "collects/db/private/sqlite3/ffi.rkt"
+                 (("ffi-lib sqlite-so")
+                  (format #f "ffi-lib \"~a\"" (find-so "libsqlite3"))))
+               (substitute* "collects/openssl/libssl.rkt"
+                 (("ffi-lib libssl-so")
+                  (format #f "ffi-lib \"~a\"" (find-so "libssl"))))
+               (substitute* "collects/openssl/libcrypto.rkt"
+                 (("ffi-lib libcrypto-so")
+                  (format #f "ffi-lib \"~a\"" (find-so "libcrypto"))))
+               (substitute* "share/pkgs/math-lib/math/private/bigfloat/gmp.rkt"
+                 (("ffi-lib libgmp-so")
+                  (format #f "ffi-lib \"~a\"" (find-so "libgmp"))))
+               (substitute* "share/pkgs/math-lib/math/private/bigfloat/mpfr.rkt"
+                 (("ffi-lib libmpfr-so")
+                  (format #f "ffi-lib \"~a\"" (find-so "libmpfr"))))
+               (for-each
+                (lambda (x) (apply patch-ffi-libs x))
+                '(("share/pkgs/draw-lib/racket/draw/unsafe/cairo-lib.rkt"
+                   ("libfontconfig" "libcairo"))
+                  ("share/pkgs/draw-lib/racket/draw/unsafe/glib.rkt"
+                   ("libglib-2.0" "libgmodule-2.0" "libgobject-2.0"))
+                  ("share/pkgs/draw-lib/racket/draw/unsafe/jpeg.rkt"
+                   ("libjpeg"))
+                  ("share/pkgs/draw-lib/racket/draw/unsafe/pango.rkt"
+                   ("libpango-1.0" "libpangocairo-1.0"))
+                  ("share/pkgs/draw-lib/racket/draw/unsafe/png.rkt"
+                   ("libpng"))
+                  ("share/pkgs/db-lib/db/private/odbc/ffi.rkt"
+                   ("libodbc"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/x11.rkt"
+                   ("libX11"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/gsettings.rkt"
+                   ("libgio-2.0"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/gtk3.rkt"
+                   ("libgdk-3" "libgtk-3"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/unique.rkt"
+                   ("libunique-1.0"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/utils.rkt"
+                   ("libgdk-x11-2.0" "libgdk_pixbuf-2.0" "libgtk-x11-2.0"))
+                  ("share/pkgs/gui-lib/mred/private/wx/gtk/gl-context.rkt"
+                   ("libGL"))
+                  ("share/pkgs/sgl/gl.rkt"
+                   ("libGL" "libGLU")))))
+             (chdir "src")
+             #t))
+         (add-after 'unpack 'patch-/bin/sh
+           (lambda _
+             (substitute* "collects/racket/system.rkt"
+               (("/bin/sh") (which "sh")))
+             #t)))
        #:tests? #f                                ; XXX: how to run them?
        ))
     (inputs
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index af598ecb4..ca996e984 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -405,30 +405,30 @@ directory.")
                             (assoc-ref %build-inputs "sdl-union")))
        #:parallel-build? #f ; parallel build fails
        #:phases
-       (alist-cons-before
-        'configure 'fix-env-and-patch
-        (lambda* (#:key inputs #:allow-other-keys)
-          (setenv "GUILE_AUTO_COMPILE" "0")
-          ;; SDL_image needs to dlopen libjpeg in the test suite.
-          (setenv "LD_LIBRARY_PATH"
-                  (string-append (assoc-ref inputs "libjpeg") "/lib"))
-          ;; Change the site directory /site/2.0 like Guile expects.
-          (substitute* "build-aux/guile-baux/re-prefixed-site-dirs"
-            (("\"/site\"") "\"/site/2.0\""))
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-env-and-patch
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "GUILE_AUTO_COMPILE" "0")
+             ;; SDL_image needs to dlopen libjpeg in the test suite.
+             (setenv "LD_LIBRARY_PATH"
+                     (string-append (assoc-ref inputs "libjpeg") "/lib"))
+             ;; Change the site directory /site/2.0 like Guile expects.
+             (substitute* "build-aux/guile-baux/re-prefixed-site-dirs"
+               (("\"/site\"") "\"/site/2.0\""))
 
-          ;; Skip tests that rely on sound support, which is unavailable in
-          ;; the build environment.
-          (substitute* "test/Makefile.in"
-            (("HAVE_MIXER = .*$")
-             "HAVE_MIXER = 0\n")))
-        (alist-cons-before
-         'check 'start-xorg-server
-         (lambda* (#:key inputs #:allow-other-keys)
-           ;; The test suite requires a running X server.
-           (system (format #f "~a/bin/Xvfb :1 &"
-                           (assoc-ref inputs "xorg-server")))
-           (setenv "DISPLAY" ":1"))
-         %standard-phases))))
+             ;; Skip tests that rely on sound support, which is unavailable in
+             ;; the build environment.
+             (substitute* "test/Makefile.in"
+               (("HAVE_MIXER = .*$")
+                "HAVE_MIXER = 0\n"))
+             #t))
+         (add-before 'check 'start-xorg-server
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; The test suite requires a running X server.
+             (system (format #f "~a/bin/Xvfb :1 &"
+                             (assoc-ref inputs "xorg-server")))
+             (setenv "DISPLAY" ":1")
+             #t)))))
     (synopsis "Guile interface for SDL (Simple DirectMedia Layer)")
     (description "Guile-SDL is a set of bindings to the Simple DirectMedia
 Layer (SDL).  With them, Guile programmers can have easy access to graphics,
diff --git a/gnu/packages/serveez.scm b/gnu/packages/serveez.scm
index 974db8611..871fb00d3 100644
--- a/gnu/packages/serveez.scm
+++ b/gnu/packages/serveez.scm
@@ -40,13 +40,14 @@
     (inputs `(("guile" ,guile-2.0)))
     (arguments
      `(#:configure-flags '("--enable-libserveez-install")
-       #:phases (alist-cons-before
-                 'patch-source-shebangs 'patch-test-source
-                 (lambda _
-                   (substitute*
-                       (find-files "test" "^t[0-9]{3}$")
-                     (("/bin/sh") (which "sh"))))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'patch-source-shebangs 'patch-test-source
+           (lambda _
+             (substitute*
+                 (find-files "test" "^t[0-9]{3}$")
+               (("/bin/sh") (which "sh")))
+             #t)))))
     (home-page "https://www.gnu.org/software/serveez/")
     (synopsis "Framework for implementing IP-based servers")
     (description
diff --git a/gnu/packages/skribilo.scm b/gnu/packages/skribilo.scm
index 458d91e56..87dc3558d 100644
--- a/gnu/packages/skribilo.scm
+++ b/gnu/packages/skribilo.scm
@@ -46,20 +46,21 @@
                                               (assoc-ref %outputs "out")
                                               "/share/guile/site/2.0"))
 
-       #:phases (alist-cons-before
-                 'configure 'pre-configure
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   ;; Make sure the 'skribilo' command gets to see
-                   ;; Guile-Reader, even if Guile-Reader is not in the search
-                   ;; path.
-                   (let ((reader (assoc-ref inputs "guile-reader")))
-                     (substitute* "src/skribilo.in"
-                       (("^exec (.*) -c" _ things)
-                        (string-append "exec " things
-                                       " -L " reader "/share/guile/site/2.0"
-                                       " -C " reader "/share/guile/site/2.0"
-                                       " -c")))))
-                 %standard-phases)
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Make sure the 'skribilo' command gets to see
+             ;; Guile-Reader, even if Guile-Reader is not in the search
+             ;; path.
+             (let ((reader (assoc-ref inputs "guile-reader")))
+               (substitute* "src/skribilo.in"
+                 (("^exec (.*) -c" _ things)
+                  (string-append "exec " things
+                                 " -L " reader "/share/guile/site/2.0"
+                                 " -C " reader "/share/guile/site/2.0"
+                                 " -c"))))
+             #t)))
 
        #:parallel-build? #f))
 
diff --git a/gnu/packages/smalltalk.scm b/gnu/packages/smalltalk.scm
index f4a50ded2..a0d6c86df 100644
--- a/gnu/packages/smalltalk.scm
+++ b/gnu/packages/smalltalk.scm
@@ -60,14 +60,15 @@
     (inputs
      `(("zip" ,zip)))
     (arguments
-     `(#:phases (alist-cons-before
-                 'configure 'fix-libc
-                 (lambda _
-                   (let ((libc (assoc-ref %build-inputs "libc")))
-                     (substitute* "libc.la.in"
-                       (("@LIBC_SO_NAME@") "libc.so")
-                       (("@LIBC_SO_DIR@")  (string-append libc "/lib")))))
-                %standard-phases)))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-libc
+           (lambda _
+             (let ((libc (assoc-ref %build-inputs "libc")))
+               (substitute* "libc.la.in"
+                 (("@LIBC_SO_NAME@") "libc.so")
+                 (("@LIBC_SO_DIR@")  (string-append libc "/lib"))))
+             #t)))))
     (home-page "http://smalltalk.gnu.org/")
     (synopsis "Smalltalk environment")
     (description
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index 1d3d1d367..15f475510 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -154,7 +154,7 @@ optimising the environment for the application in use and the task performed.")
                                          (assoc-ref %build-inputs "freetype")
                                          "/include/freetype2"))
        #:phases
-       (alist-delete 'configure %standard-phases)))
+       (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("freetype" ,freetype)
        ("libxft" ,libxft)
@@ -211,7 +211,7 @@ numbers of user-defined menu items efficiently.")
      '(#:tests? #f ; no tests
        #:make-flags (list "CC=gcc"
                           (string-append "PREFIX=" %output))
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs
      `(("libx11" ,libx11)
        ("libxext" ,libxext)
diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm
index e0ce6df42..a4129e089 100644
--- a/gnu/packages/tcl.scm
+++ b/gnu/packages/tcl.scm
@@ -114,13 +114,14 @@
                (string-append "--exec-prefix=" out)
                (string-append "--mandir=" out "/share/man")))
 
-       #:phases (alist-cons-before
-                 'configure 'set-path-to-stty
-                 (lambda _
-                   (substitute* "configure"
-                     (("STTY_BIN=/bin/stty")
-                      (string-append "STTY_BIN=" (which "stty")))))
-                 %standard-phases)
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'set-path-to-stty
+           (lambda _
+             (substitute* "configure"
+               (("STTY_BIN=/bin/stty")
+                (string-append "STTY_BIN=" (which "stty"))))
+             #t)))
 
        #:test-target "test"))
     (home-page "http://expect.nist.gov/")
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index c3bf20360..5207bd241 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -56,12 +56,12 @@
                      "0kmgr5w3b1qwzxnsnw94q6rqs0hr8nbv9clf07ca2a2fyypx9kjk"))))
     (arguments
      `(#:phases
-       (alist-cons-before
-        'configure 'pre-configure
-        (lambda _
-          (substitute* "src/applog.cpp"
-            (("^// TODO sc.*") "#include <sys/types.h>\n#include <sys/stat.h>\n")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda _
+             (substitute* "src/applog.cpp"
+               (("^// TODO sc.*") "#include <sys/types.h>\n#include <sys/stat.h>\n"))
+             #t)))))
    (build-system gnu-build-system)
    (synopsis "(u)Common C++ framework for threaded applications")
    (description "GNU Common C++ is an portable, optimized class framework for
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 70b057ffd..688366b14 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -97,15 +97,15 @@ to DOS format and vice versa.")
     (native-inputs `(("python" ,python-2)))
     (arguments
      '(#:phases
-       (alist-cons-before
-        'check 'pre-check
-        (lambda _
-          (substitute* "tests/setup.py"
-            (("([[:space:]]*)include_dirs=.*" all space)
-             (string-append all space "library_dirs=['../src/.libs'],\n")))
-          ;; The test extension 'Recode.so' lacks RUNPATH for 'librecode.so'.
-          (setenv "LD_LIBRARY_PATH" (string-append (getcwd) "/src/.libs")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda _
+             (substitute* "tests/setup.py"
+               (("([[:space:]]*)include_dirs=.*" all space)
+                (string-append all space "library_dirs=['../src/.libs'],\n")))
+             ;; The test extension 'Recode.so' lacks RUNPATH for 'librecode.so'.
+             (setenv "LD_LIBRARY_PATH" (string-append (getcwd) "/src/.libs"))
+             #t)))))
     (home-page "https://github.com/pinard/Recode")
     (synopsis "Text encoding converter")
     (description "The Recode library converts files between character sets and
@@ -208,10 +208,9 @@ encoding, supporting Unicode version 9.0.0.")
     (build-system gnu-build-system)
     (arguments
      '(#:phases
-       (alist-cons-after
-        'unpack 'autoreconf
-        (lambda _ (zero? (system* "autoreconf" "-vif")))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autoreconf
+           (lambda _ (zero? (system* "autoreconf" "-vif")))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm
index ba54d1d00..3f84307e5 100644
--- a/gnu/packages/time.scm
+++ b/gnu/packages/time.scm
@@ -38,16 +38,16 @@
     (build-system gnu-build-system)
     (arguments
      '(#:phases
-       (alist-replace 'configure
-                      (lambda* (#:key outputs #:allow-other-keys)
-                        ;; This old `configure' script doesn't support
-                        ;; variables passed as arguments.
-                        (let ((out (assoc-ref outputs "out")))
-                          (setenv "CONFIG_SHELL" (which "bash"))
-                          (zero?
-                           (system* "./configure"
-                                    (string-append "--prefix=" out)))))
-                      %standard-phases)))
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; This old `configure' script doesn't support
+             ;; variables passed as arguments.
+             (let ((out (assoc-ref outputs "out")))
+               (setenv "CONFIG_SHELL" (which "bash"))
+               (zero?
+                (system* "./configure"
+                         (string-append "--prefix=" out)))))))))
     (home-page "https://www.gnu.org/software/time/")
     (synopsis "Run a command, then display its resource usage")
     (description
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 64acb4449..d727f926f 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -134,13 +134,13 @@ rejects UDP traffic from the application you're using.")
        #:configure-flags (list (string-append "--sysconfdir="
                                               (assoc-ref %outputs "out")
                                               "/etc/privoxy"))
-       #:phases (alist-cons-after
-                 'unpack 'autoconf
-                 (lambda _
-                   ;; Unfortunately, this is not a tarball produced by
-                   ;; "make dist".
-                   (zero? (system* "autoreconf" "-vfi")))
-                 %standard-phases)
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autoconf
+           (lambda _
+             ;; Unfortunately, this is not a tarball produced by
+             ;; "make dist".
+             (zero? (system* "autoreconf" "-vfi")))))
        #:tests? #f))
     (inputs
      `(("w3m" ,w3m)
diff --git a/gnu/packages/uucp.scm b/gnu/packages/uucp.scm
index 7bfe76365..f5d9c7005 100644
--- a/gnu/packages/uucp.scm
+++ b/gnu/packages/uucp.scm
@@ -35,18 +35,18 @@
                 "0b5nhl9vvif1w3wdipjsk8ckw49jj1w85xw1mmqi3zbcpazia306"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; The old 'configure' script doesn't support the arguments
-                   ;; that we pass by default.
-                   (setenv "CONFIG_SHELL" (which "sh"))
-                   (let ((out (assoc-ref outputs "out")))
-                     (zero? (system* "./configure"
-                                     (string-append "--prefix=" out)
-                                     (string-append "--infodir=" out
-                                                    "/share/info")))))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; The old 'configure' script doesn't support the arguments
+             ;; that we pass by default.
+             (setenv "CONFIG_SHELL" (which "sh"))
+             (let ((out (assoc-ref outputs "out")))
+               (zero? (system* "./configure"
+                               (string-append "--prefix=" out)
+                               (string-append "--infodir=" out
+                                              "/share/info")))))))))
     (home-page "https://www.gnu.org/software/uucp/uucp.html")
     (synopsis "UUCP protocol implementation")
     (description
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 4eb6b8b6e..2e35149ed 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1395,11 +1395,10 @@ encapsulated.")
        ("libtool" ,libtool)))
     (arguments
      '(#:phases
-       (alist-cons-after
-        'unpack 'autoreconf
-        (lambda _
-          (zero? (system* "autoreconf" "-vif")))
-        %standard-phases)))))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autoreconf
+           (lambda _
+             (zero? (system* "autoreconf" "-vif")))))))))
 
 (define-public libdvdcss
   (package
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index 8de0cf1d5..1dbecabe7 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -165,11 +165,11 @@ features including, tables, builtin image display, bookmarks, SSL and more.")
            "--enable-nls"
            "--enable-ipv6"))
        #:tests? #f  ; no check target
-       #:phases (alist-replace
-                 'install
-                 (lambda* (#:key (make-flags '()) #:allow-other-keys)
-                   (zero? (apply system* "make" "install-full" make-flags)))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key (make-flags '()) #:allow-other-keys)
+             (zero? (apply system* "make" "install-full" make-flags)))))))
     (synopsis "Text Web Browser")
     (description
      "Lynx is a fully-featured World Wide Web (WWW) client for users running
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index ac65a8536..e49fc7b04 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -672,14 +672,13 @@ used to validate and fix HTML data.")
         ;; For the log file, etc.
         "--localstatedir=/var")
        #:phases
-       (alist-cons-before
-        'build 'pre-build
-        (lambda* (#:key inputs #:allow-other-keys #:rest args)
-          ;; Uncommenting the next two lines may assist in debugging
-          ;; (substitute* "docs/man5/Makefile" (("a2x") "a2x -v"))
-          ;; (setenv "XML_DEBUG_CATALOG" "1")
-          #t)
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-before 'build 'pre-build
+           (lambda* (#:key inputs #:allow-other-keys #:rest args)
+             ;; Uncommenting the next two lines may assist in debugging
+             ;; (substitute* "docs/man5/Makefile" (("a2x") "a2x -v"))
+             ;; (setenv "XML_DEBUG_CATALOG" "1")
+             #t)))))
     ;; All of the below are used to generate the documentation
     ;; (Should they be propagated inputs of asciidoc ??)
     (native-inputs `(("asciidoc" ,asciidoc)))
diff --git a/gnu/packages/wicd.scm b/gnu/packages/wicd.scm
index 9de956c6f..4b03c07bc 100644
--- a/gnu/packages/wicd.scm
+++ b/gnu/packages/wicd.scm
@@ -71,123 +71,121 @@
        ;; we can't easily make setup.py use setuptools.
        #:use-setuptools? #f
        #:phases
-       (alist-cons-before
-        'build 'configure
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out"))
-                (python (assoc-ref inputs "python")))
-            (define (which* cmd)
-              (cond ((string=? cmd "ping")
-                     "/run/setuid-programs/ping")
-                    ((which cmd)
-                     => identity)
-                    (else
-                     (format (current-error-port)
-                             "WARNING: Unable to find absolute path for ~s~%"
-                             cmd)
-                     #f)))
-            (substitute* "setup.py"
-              ;; The handling of unrecognized distros in setup.py is
-              ;; broken.  Work around the problem.
-              (("\\('init=', " all)
-               (string-append "#" all))
-              ;; Inhibit attempts to install in /var or /etc.
-              (("\\(wpath\\.(log|etc|networks|.*scripts), " all)
-               (string-append "#" all)))
+       (modify-phases %standard-phases
+         (add-before 'build 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (python (assoc-ref inputs "python")))
+               (define (which* cmd)
+                 (cond ((string=? cmd "ping")
+                        "/run/setuid-programs/ping")
+                       ((which cmd)
+                        => identity)
+                       (else
+                        (format (current-error-port)
+                                "WARNING: Unable to find absolute path for ~s~%"
+                                cmd)
+                        #f)))
+               (substitute* "setup.py"
+                 ;; The handling of unrecognized distros in setup.py is
+                 ;; broken.  Work around the problem.
+                 (("\\('init=', " all)
+                  (string-append "#" all))
+                 ;; Inhibit attempts to install in /var or /etc.
+                 (("\\(wpath\\.(log|etc|networks|.*scripts), " all)
+                  (string-append "#" all)))
 
-            ;; Patch references to subprograms with absolute pathnames.
-            (substitute* "wicd/wnettools.py"
-              (("(misc\\.Run\\(\\[?[\"'])([^\"' ]*)" all pre cmd)
-               (string-append pre (which* cmd)))
-              (("(self\\._find_program_path|misc\\.find_path)\\([\"']([^\"']*)[\"']\\)"
-                all dummy cmd)
-               (let ((pathname (which* cmd)))
-                 (if pathname
-                     (string-append "'" pathname "'")
-                     "None")))
-              (("([\"'])(ifconfig|route|wpa_cli|wpa_supplicant|iwconfig|iwpriv|iwlist|ping)"
-                all open-quote cmd)
-               (string-append open-quote (which* cmd))))
+               ;; Patch references to subprograms with absolute pathnames.
+               (substitute* "wicd/wnettools.py"
+                 (("(misc\\.Run\\(\\[?[\"'])([^\"' ]*)" all pre cmd)
+                  (string-append pre (which* cmd)))
+                 (("(self\\._find_program_path|misc\\.find_path)\\([\"']([^\"']*)[\"']\\)"
+                   all dummy cmd)
+                  (let ((pathname (which* cmd)))
+                    (if pathname
+                        (string-append "'" pathname "'")
+                        "None")))
+                 (("([\"'])(ifconfig|route|wpa_cli|wpa_supplicant|iwconfig|iwpriv|iwlist|ping)"
+                   all open-quote cmd)
+                  (string-append open-quote (which* cmd))))
 
-            ;; setup.py cannot cope without LANG
-            (setenv "LANG" "C")
+               ;; setup.py cannot cope without LANG
+               (setenv "LANG" "C")
 
-            (let ((params
-                   (list
-                    (string-append "--python=" python "/bin/python")
-                    "--no-install-init"
-                    "--no-install-docs"
-                    "--no-install-acpi"
-                    "--no-install-pmutils"
-                    "--no-install-kde"
-                    "--no-install-gnome-shell-extensions"
+               (let ((params
+                      (list
+                       (string-append "--python=" python "/bin/python")
+                       "--no-install-init"
+                       "--no-install-docs"
+                       "--no-install-acpi"
+                       "--no-install-pmutils"
+                       "--no-install-kde"
+                       "--no-install-gnome-shell-extensions"
 
-                    "--distro=guixsd"
-                    "--wicdgroup=netdev"
-                    "--loggroup=root"
-                    "--logperms=0640"
+                       "--distro=guixsd"
+                       "--wicdgroup=netdev"
+                       "--loggroup=root"
+                       "--logperms=0640"
 
-                    ;; XXX setup.py configure asks us to pass --init=,
-                    ;; but if we do it says "no such option 'init'".
-                    ;; (string-append "--init=" out "/etc/init.d")
+                       ;; XXX setup.py configure asks us to pass --init=,
+                       ;; but if we do it says "no such option 'init'".
+                       ;; (string-append "--init=" out "/etc/init.d")
 
-                    (string-append "--initfile=" out "/etc/init.d/wicd")
-                    (string-append "--lib=" out "/lib/wicd")
-                    (string-append "--share=" out "/share/wicd")
+                       (string-append "--initfile=" out "/etc/init.d/wicd")
+                       (string-append "--lib=" out "/lib/wicd")
+                       (string-append "--share=" out "/share/wicd")
 
-                    "--etc=/etc/wicd"
-                    "--scripts=/etc/wicd/scripts"
-                    "--pmutils=/etc/pm-utils/sleep.d"
+                       "--etc=/etc/wicd"
+                       "--scripts=/etc/wicd/scripts"
+                       "--pmutils=/etc/pm-utils/sleep.d"
 
-                    (string-append "--encryption="
-                                   out "/etc/encryption/templates")
-                    (string-append "--bin=" out "/bin")
-                    (string-append "--sbin=" out "/sbin")
-                    (string-append "--daemon=" out "/share/wicd/daemon")
-                    (string-append "--backends=" out "/share/wicd/backends")
-                    (string-append "--curses=" out "/share/wicd/curses")
-                    (string-append "--gtk=" out "/share/wicd/gtk")
-                    (string-append "--cli=" out "/share/wicd/cli")
-                    (string-append "--gnome-shell-extensions="
-                                   out "/share/gnome-shell-extensions")
-                    (string-append "--icons=" out "/share/icons/hicolor")
-                    (string-append "--pixmaps=" out "/share/pixmaps")
-                    (string-append "--images=" out "/share/icons")
-                    (string-append "--dbus=" out "/etc/dbus-1/system.d")
-                    (string-append "--dbus-service="
-                                   out "/share/dbus-1/system-services")
-                    (string-append "--systemd=" out "/lib/systemd/system")
-                    (string-append "--logrotate=" out "/etc/logrotate.d")
-                    (string-append "--desktop=" out "/share/applications")
-                    (string-append "--translations=" out "/share/locale")
-                    (string-append "--autostart=" out "/etc/xdg/autostart")
-                    (string-append "--docdir=" out "/share/doc/wicd")
-                    (string-append "--mandir=" out "/share/man")
-                    (string-append "--kdedir=" out "/share/autostart"))))
-              (format #t
-                      "running ~s with command ~s and parameters ~s~%"
-                      "python setup.py" "configure" params)
-              (zero? (apply system* "python" "setup.py" "configure" params)))))
-        (alist-cons-after
-         'install 'post-install
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (let ((out (assoc-ref outputs "out")))
-             ;; wicd's installer tries to put dhclient.conf.template.default
-             ;; in /etc/wicd/other, which is not available in the build
-             ;; environment, so here we install it manually in the output
-             ;; directory.
-             (let ((dest-dir (string-append out "/etc/wicd"))
-                   (name "dhclient.conf.template.default"))
-               (install-file (string-append "other/" name) dest-dir))
+                       (string-append "--encryption="
+                                      out "/etc/encryption/templates")
+                       (string-append "--bin=" out "/bin")
+                       (string-append "--sbin=" out "/sbin")
+                       (string-append "--daemon=" out "/share/wicd/daemon")
+                       (string-append "--backends=" out "/share/wicd/backends")
+                       (string-append "--curses=" out "/share/wicd/curses")
+                       (string-append "--gtk=" out "/share/wicd/gtk")
+                       (string-append "--cli=" out "/share/wicd/cli")
+                       (string-append "--gnome-shell-extensions="
+                                      out "/share/gnome-shell-extensions")
+                       (string-append "--icons=" out "/share/icons/hicolor")
+                       (string-append "--pixmaps=" out "/share/pixmaps")
+                       (string-append "--images=" out "/share/icons")
+                       (string-append "--dbus=" out "/etc/dbus-1/system.d")
+                       (string-append "--dbus-service="
+                                      out "/share/dbus-1/system-services")
+                       (string-append "--systemd=" out "/lib/systemd/system")
+                       (string-append "--logrotate=" out "/etc/logrotate.d")
+                       (string-append "--desktop=" out "/share/applications")
+                       (string-append "--translations=" out "/share/locale")
+                       (string-append "--autostart=" out "/etc/xdg/autostart")
+                       (string-append "--docdir=" out "/share/doc/wicd")
+                       (string-append "--mandir=" out "/share/man")
+                       (string-append "--kdedir=" out "/share/autostart"))))
+                 (format #t
+                         "running ~s with command ~s and parameters ~s~%"
+                         "python setup.py" "configure" params)
+                 (zero? (apply system* "python" "setup.py" "configure" params))))))
+         (add-after 'install 'post-install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; wicd's installer tries to put dhclient.conf.template.default
+               ;; in /etc/wicd/other, which is not available in the build
+               ;; environment, so here we install it manually in the output
+               ;; directory.
+               (let ((dest-dir (string-append out "/etc/wicd"))
+                     (name "dhclient.conf.template.default"))
+                 (install-file (string-append "other/" name) dest-dir))
 
-             ;; Copy index.theme from hicolor-icon-theme.  This is needed to
-             ;; allow wicd-gtk to find its icons.
-             (let ((hicolor (assoc-ref inputs "hicolor-icon-theme"))
-                   (name "/share/icons/hicolor/index.theme"))
-               (install-file (string-append hicolor name)
-                             (string-append out "/share/icons/hicolor")))
-             #t))
-         %standard-phases))))
+               ;; Copy index.theme from hicolor-icon-theme.  This is needed to
+               ;; allow wicd-gtk to find its icons.
+               (let ((hicolor (assoc-ref inputs "hicolor-icon-theme"))
+                     (name "/share/icons/hicolor/index.theme"))
+                 (install-file (string-append hicolor name)
+                               (string-append out "/share/icons/hicolor")))
+               #t))))))
     (synopsis "Network connection manager")
     (description "Wicd is a network manager that aims to simplify wired and
 wireless networking.")
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 5ba29c3b3..39cff04ef 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -115,7 +115,7 @@ nested include statements).")
        ("xcb-util-keysyms" ,xcb-util-keysyms)
        ("xcb-util-wm" ,xcb-util-wm)))
     (arguments
-     '(#:phases (alist-delete 'configure %standard-phases)
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
        #:tests? #f  ; no check target
        #:make-flags (list "CC=gcc"
                           (string-append "PREFIX=" %output))))
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index edb70a37a..542f4a8cc 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -676,7 +676,7 @@ Guile will work for XBindKeys.")
        ("xcb-util-keysyms" ,xcb-util-keysyms)
        ("xcb-util-wm" ,xcb-util-wm)))
     (arguments
-     '(#:phases (alist-delete 'configure %standard-phases)
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
        #:tests? #f  ; no check target
        #:make-flags (list "CC=gcc"
                           (string-append "PREFIX=" %output))))
@@ -783,7 +783,8 @@ within a single process.")
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; no check target
-       #:phases (alist-delete 'configure %standard-phases) ; no configure script
+       ;; no configure script
+       #:phases (modify-phases %standard-phases (delete 'configure))
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
                           "MANDIR=/share/man/man1"
                           "CC=gcc")))
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index b936dc45d..7668a1d38 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -114,17 +114,17 @@ Xfce Desktop Environment.")
     (arguments
      '(#:phases
        ;; Run check after install phase to test dbus activation.
-       (alist-cons-after
-        'install 'check
-        (lambda _
-          (setenv "HOME" (getenv "TMPDIR")) ; xfconfd requires a writable HOME
-          ;; Run test-suite under a dbus session.
-          (setenv "XDG_DATA_DIRS" ; for finding org.xfce.Xfconf.service
-                  (string-append %output "/share"))
-          ;; For the missing '/etc/machine-id'.
-          (setenv "DBUS_FATAL_WARNINGS" "0");
-          (zero? (system* "dbus-launch" "make" "check")))
-        (alist-delete 'check %standard-phases))))
+       (modify-phases %standard-phases
+         (add-after 'install 'check
+           (lambda _
+             (setenv "HOME" (getenv "TMPDIR")) ; xfconfd requires a writable HOME
+             ;; Run test-suite under a dbus session.
+             (setenv "XDG_DATA_DIRS" ; for finding org.xfce.Xfconf.service
+                     (string-append %output "/share"))
+             ;; For the missing '/etc/machine-id'.
+             (setenv "DBUS_FATAL_WARNINGS" "0");
+             (zero? (system* "dbus-launch" "make" "check"))))
+         (delete 'check))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)))
diff --git a/gnu/packages/xfig.scm b/gnu/packages/xfig.scm
index 2e65000eb..8bd781b93 100644
--- a/gnu/packages/xfig.scm
+++ b/gnu/packages/xfig.scm
@@ -159,44 +159,43 @@ selected in various ways.  For text, 35 fonts are available.")
     (arguments
      `(#:tests? #f
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (let ((imake (assoc-ref inputs "imake"))
-                (out   (assoc-ref outputs "out")))
-            (substitute* '("fig2dev/Imakefile"
-                           "transfig/Imakefile")
-              (("XCOMM (BINDIR = )[[:graph:]]*" _ front)
-               (string-append front out "/bin"))
-              (("XCOMM USEINLINE") "USEINLINE")
-              ;; The variable name is deceptive.  The directory is used as an
-              ;; installation path for bitmaps.
-              (("(XFIGLIBDIR =[[:blank:]]*)[[:graph:]]*" _ front)
-               (string-append front out "/lib"))
-              (("(XPMLIBDIR = )[[:graph:]]*" _ front)
-               (string-append front (assoc-ref inputs "libxpm") "/lib"))
-              (("(XPMINC = -I)[[:graph:]]*" _ front)
-               (string-append front (assoc-ref inputs "libxpm") "/include/X11"))
-              (("/usr/local/lib/fig2dev") (string-append out "/lib")))
-            ;; The -a argument is required in order to pick up the correct paths
-            ;; to several X header files.
-            (zero? (system* "xmkmf" "-a"))
-            (substitute* '("Makefile"
-                           "fig2dev/Makefile"
-                           "transfig/Makefile")
-              ;; These imake variables somehow remain undefined
-              (("DefaultGcc2[[:graph:]]*Opt") "-O2")
-              ;; Reset a few variable defaults that are set in imake templates
-              ((imake) out)
-              (("(MANPATH = )[[:graph:]]*" _ front)
-               (string-append front out "/share/man"))
-              (("(CONFDIR = )([[:graph:]]*)" _ front default)
-               (string-append front out default)))))
-        (alist-cons-after
-         'install 'install/doc
-         (lambda _
-           (zero? (system* "make" "install.man")))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((imake (assoc-ref inputs "imake"))
+                   (out   (assoc-ref outputs "out")))
+               (substitute* '("fig2dev/Imakefile"
+                              "transfig/Imakefile")
+                 (("XCOMM (BINDIR = )[[:graph:]]*" _ front)
+                  (string-append front out "/bin"))
+                 (("XCOMM USEINLINE") "USEINLINE")
+                 ;; The variable name is deceptive.  The directory is used as an
+                 ;; installation path for bitmaps.
+                 (("(XFIGLIBDIR =[[:blank:]]*)[[:graph:]]*" _ front)
+                  (string-append front out "/lib"))
+                 (("(XPMLIBDIR = )[[:graph:]]*" _ front)
+                  (string-append front (assoc-ref inputs "libxpm") "/lib"))
+                 (("(XPMINC = -I)[[:graph:]]*" _ front)
+                  (string-append front (assoc-ref inputs "libxpm") "/include/X11"))
+                 (("/usr/local/lib/fig2dev") (string-append out "/lib")))
+               ;; The -a argument is required in order to pick up the correct paths
+               ;; to several X header files.
+               (zero? (system* "xmkmf" "-a"))
+               (substitute* '("Makefile"
+                              "fig2dev/Makefile"
+                              "transfig/Makefile")
+                 ;; These imake variables somehow remain undefined
+                 (("DefaultGcc2[[:graph:]]*Opt") "-O2")
+                 ;; Reset a few variable defaults that are set in imake templates
+                 ((imake) out)
+                 (("(MANPATH = )[[:graph:]]*" _ front)
+                  (string-append front out "/share/man"))
+                 (("(CONFDIR = )([[:graph:]]*)" _ front default)
+                  (string-append front out default))))
+             #t))
+         (add-after 'install 'install/doc
+           (lambda _
+             (zero? (system* "make" "install.man")))))))
     (home-page "http://www.xfig.org/")
     (synopsis "Create portable LaTeX figures")
     (description
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index b72153894..e986888b7 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -114,26 +114,25 @@
         ("xproto" ,xproto)))
     (arguments
      `(#:phases
-       (alist-cons-after
-        'install 'install-data
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (let ((cf-files (assoc-ref inputs "xorg-cf-files"))
-                (out (assoc-ref outputs "out"))
-                (unpack (assoc-ref %standard-phases 'unpack))
-                (patch-source-shebangs
-                 (assoc-ref %standard-phases 'patch-source-shebangs)))
-            (mkdir "xorg-cf-files")
-            (with-directory-excursion "xorg-cf-files"
-              (apply unpack (list #:source cf-files))
-              (apply patch-source-shebangs (list #:source cf-files))
-              (substitute* '("mingw.cf" "Imake.tmpl" "nto.cf" "os2.cf"
-                             "linux.cf" "Amoeba.cf" "cygwin.cf")
-                (("/bin/sh") (which "bash")))
-              (and (zero? (system* "./configure"
-                                   (string-append "SHELL=" (which "bash"))
-                                   (string-append "--prefix=" out)))
-                   (zero? (system* "make" "install"))))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'install 'install-data
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((cf-files (assoc-ref inputs "xorg-cf-files"))
+                   (out (assoc-ref outputs "out"))
+                   (unpack (assoc-ref %standard-phases 'unpack))
+                   (patch-source-shebangs
+                    (assoc-ref %standard-phases 'patch-source-shebangs)))
+               (mkdir "xorg-cf-files")
+               (with-directory-excursion "xorg-cf-files"
+                 (apply unpack (list #:source cf-files))
+                 (apply patch-source-shebangs (list #:source cf-files))
+                 (substitute* '("mingw.cf" "Imake.tmpl" "nto.cf" "os2.cf"
+                                "linux.cf" "Amoeba.cf" "cygwin.cf")
+                   (("/bin/sh") (which "bash")))
+                 (and (zero? (system* "./configure"
+                                      (string-append "SHELL=" (which "bash"))
+                                      (string-append "--prefix=" out)))
+                      (zero? (system* "make" "install"))))))))))
     (home-page "http://www.x.org")
     (synopsis "Source code configuration and build system")
     (description
-- 
2.14.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

^ permalink raw reply related	[relevance 6%]

* [bug#28426] [PATCH 2/2] gnu: python-apsw: Update to 3.20.1-r1.
  @ 2017-09-11 22:17 65% ` Jelle Licht
  0 siblings, 0 replies; 200+ results
From: Jelle Licht @ 2017-09-11 22:17 UTC (permalink / raw)
  To: 28426

* gnu/packages/python.scm (python-apsw): Update to 3.20.1-r1.
[origin]: Change to updated upstream url.
---
 gnu/packages/python.scm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3609ff055..6b9fe0325 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -6089,14 +6089,15 @@ implementation of D-Bus.")
 (define-public python-apsw
   (package
     (name "python-apsw")
-    (version "3.9.2-r1")
+    (version "3.20.1-r1")
     (source
       (origin
         (method url-fetch)
-        (uri (pypi-uri "apsw" version))
+        (uri (string-append "https://github.com/rogerbinns/apsw/archive/"
+                            version ".tar.gz"))
         (sha256
           (base32
-           "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
+           "00ai7m2pqi26qaflhz314d8k5i3syw7xzr145fhfl0crhyh6adz2"))))
     (build-system python-build-system)
     (inputs
       `(("sqlite" ,sqlite)))
-- 
2.14.1

^ permalink raw reply related	[relevance 65%]

* [bug#28463] [PATCH] gnu: Add python-schedule.
@ 2017-09-14 19:43 65% Stefan Reichör
  2017-09-15 14:45 65% ` bug#28463: " Ludovic Courtès
  0 siblings, 1 reply; 200+ results
From: Stefan Reichör @ 2017-09-14 19:43 UTC (permalink / raw)
  To: 28463

* gnu/packages/python.scm (python-schedule, python2-schedule): New variables.
---
 gnu/packages/python.scm |   28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 6c76df7..4943dad 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1249,6 +1249,34 @@ datetime module, available in Python 2.3+.")
 (define-public python2-parsedatetime
   (package-with-python2 python-parsedatetime))
 
+(define-public python-schedule
+  (package
+    (name "python-schedule")
+    (version "0.4.3")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (pypi-uri "schedule" version))
+      (sha256
+       (base32
+        "0vplyjcbfrq50sphlwya749z8p2pcyi2nycw3518i0qpd9a6189i"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-mock" ,python-mock)))
+    (home-page "https://github.com/dbader/schedule")
+    (synopsis
+     "Python job scheduling for humans")
+    (description
+     "An in-process scheduler for periodic jobs that uses the builder pattern
+for configuration.  Schedule lets you run Python functions (or any other
+callable) periodically at pre-determined intervals using a simple,
+human-friendly syntax.")
+    (license license:expat)))
+
+(define-public python2-schedule
+  (package-with-python2 python-schedule))
+
 (define-public python-pandas
   (package
     (name "python-pandas")

^ permalink raw reply related	[relevance 65%]

* bug#28463: [PATCH] gnu: Add python-schedule.
  2017-09-14 19:43 65% [bug#28463] [PATCH] gnu: Add python-schedule Stefan Reichör
@ 2017-09-15 14:45 65% ` Ludovic Courtès
  0 siblings, 0 replies; 200+ results
From: Ludovic Courtès @ 2017-09-15 14:45 UTC (permalink / raw)
  To: Stefan Reichör; +Cc: 28463-done

[-- Attachment #1: Type: text/plain, Size: 245 bytes --]

Stefan Reichör <stefan@xsteve.at> skribis:

> * gnu/packages/python.scm (python-schedule, python2-schedule): New variables.

I’ve adjusted the synopsis (see below) in an attempt to clarify things
and committed.

Thanks!

Ludo’.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 1009 bytes --]

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 4943dadfa..5927db0d6 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1265,12 +1265,11 @@ datetime module, available in Python 2.3+.")
      `(("python-pytest" ,python-pytest)
        ("python-mock" ,python-mock)))
     (home-page "https://github.com/dbader/schedule")
-    (synopsis
-     "Python job scheduling for humans")
+    (synopsis "Schedule periodic function calls in Python")
     (description
-     "An in-process scheduler for periodic jobs that uses the builder pattern
-for configuration.  Schedule lets you run Python functions (or any other
-callable) periodically at pre-determined intervals using a simple,
+     "Schedule is an in-process scheduler for periodic jobs that uses the
+builder pattern for configuration.  Schedule lets you run Python functions (or
+any other callable) periodically at pre-determined intervals using a simple,
 human-friendly syntax.")
     (license license:expat)))
 

^ permalink raw reply related	[relevance 65%]

* [bug#28594] nototools (required for building Noto from source)
@ 2017-09-25 12:18 95% ng0
  2017-10-01 18:41 95% ` ng0
  0 siblings, 1 reply; 200+ results
From: ng0 @ 2017-09-25 12:18 UTC (permalink / raw)
  To: 28594


[-- Attachment #1.1: Type: text/plain, Size: 274 bytes --]

This patch series adds the python2 application set "nototools".
It is a requirement for resolving #28404 (Google Noto Fonts).
-- 
ng0
GnuPG: A88C8ADD129828D7EAC02E52E22F9BBFEE348588
GnuPG: https://krosos.org/dist/keys/
https://www.infotropique.org https://krosos.org

[-- Attachment #1.2: 0001-gnu-python-fonttools-Update-to-3.15.1.patch --]
[-- Type: text/plain, Size: 2296 bytes --]

From f47baab3fecf69913409693254460a49cc8c4b24 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 11:31:51 +0000
Subject: [PATCH 1/7] gnu: python-fonttools: Update to 3.15.1.

* gnu/packages/python.scm (python-fonttools): Update to 3.15.1.
(source)[uri]: Use 'pypi-uri'.
---
 gnu/packages/python.scm | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3e266c5ef..fb149d91c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -23,7 +23,7 @@
 ;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
-;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
+;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
@@ -7360,15 +7360,13 @@ add functionality and customization to your projects with their own plugins.")
 (define-public python-fonttools
   (package
     (name "python-fonttools")
-    (version "2.5")
+    (version "3.15.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "https://pypi.python.org/packages/source/F/FontTools/"
-                    "fonttools-" version ".tar.gz"))
+              (uri (pypi-uri "fonttools" version ".zip"))
               (sha256
                (base32
-                "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
+                "1hhj97izwliy0vybmza72d90l5d4mcn50y8akq7kyccfl82vdx4d"))))
     (build-system python-build-system)
     (arguments
      '(#:test-target "check"
@@ -7382,6 +7380,8 @@ add functionality and customization to your projects with their own plugins.")
              (substitute* "setup.py"
                (("^[ \t]*extra_path *= *'FontTools',") ""))
              #t)))))
+    (native-inputs
+     `(("unzip" ,unzip)))
     (home-page "https://github.com/behdad/fonttools")
     (synopsis "Tools to manipulate font files")
     (description
-- 
2.14.1


[-- Attachment #1.3: 0002-gnu-Add-python2-ufolib.patch --]
[-- Type: text/plain, Size: 1648 bytes --]

From d73dfb5b471adaa7752f4ce2140e879f629d303c Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 11:39:29 +0000
Subject: [PATCH 2/7] gnu: Add python2-ufolib.

* gnu/packages/python.scm (python2-ufolib): New variable.
---
 gnu/packages/python.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index fb149d91c..3a9a39a7d 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7397,6 +7397,32 @@ from an XML-based format.")
 (define-public python2-fonttools
   (package-with-python2 python-fonttools))
 
+(define-public python2-ufolib
+  (package
+    (name "python2-ufolib")
+    (version "2.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ufoLib" version ".zip"))
+       (sha256
+        (base32 "1njin1465qqzshnrvcl5sbv0bsy15gj6fycbw4lmcnwkx5sldgyx"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (propagated-inputs
+     `(("python2-fonttools" ,python2-fonttools)))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("python2-pytest-3.0" ,python2-pytest-3.0)
+       ("python2-pytest-runner" ,python2-pytest-runner)))
+    (home-page "https://github.com/unified-font-object/ufoLib")
+    (synopsis "Low-level UFO reader and writer.")
+    (description
+     "ufoLib reads and writes Unified Font Object (UFO)
+files.  UFO is a file format that stores fonts source files.")
+    (license license:bsd-3)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.1


[-- Attachment #1.4: 0003-gnu-Add-python2-setuptools-scm-git-archive.patch --]
[-- Type: text/plain, Size: 1556 bytes --]

From e34aa6f3d4ca6f0e989b1d8fbaf7985cd2891099 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 11:49:31 +0000
Subject: [PATCH 3/7] gnu: Add python2-setuptools-scm-git-archive.

* gnu/packages/python.scm (python2-setuptools-scm-git-archive): New variable.
---
 gnu/packages/python.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3a9a39a7d..ae11c3b3b 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7423,6 +7423,28 @@ from an XML-based format.")
 files.  UFO is a file format that stores fonts source files.")
     (license license:bsd-3)))
 
+(define-public python2-setuptools-scm-git-archive
+  (package
+    (name "python2-setuptools-scm-git-archive")
+    (version "1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "setuptools_scm_git_archive" version))
+       (sha256
+        (base32
+         "1nii1sz5jq75ilf18bjnr11l9rz1lvdmyk66bxl7q90qan85yhjj"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (propagated-inputs
+     `(("python2-setuptools-scm" ,python2-setuptools-scm)))
+    (home-page "https://github.com/Changaco/setuptools_scm_git_archive/")
+    (synopsis "setuptools_scm plugin for git archives")
+    (description
+     "setuptools_scm plugin for git archives")
+    (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.1


[-- Attachment #1.5: 0004-gnu-Add-python2-pyclipper.patch --]
[-- Type: text/plain, Size: 1633 bytes --]

From 560acb742a36d97f20d78a5ac5d388a44c3b2ed2 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 12:00:41 +0000
Subject: [PATCH 4/7] gnu: Add python2-pyclipper.

* gnu/packages/python.scm (python2-pyclipper): New variable.
---
 gnu/packages/python.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index ae11c3b3b..2a13a6466 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7445,6 +7445,32 @@ files.  UFO is a file format that stores fonts source files.")
      "setuptools_scm plugin for git archives")
     (license license:expat)))
 
+(define-public python2-pyclipper
+(package
+  (name "python2-pyclipper")
+  (version "1.0.6")
+  (source
+   (origin
+     (method url-fetch)
+     (uri (pypi-uri "pyclipper" version ".zip"))
+     (sha256
+      (base32
+       "1zpmwv3bya3j984y5cf9x9d5108kf6mxldcba68wiq0frv5qrssw"))))
+  (build-system python-build-system)
+  (arguments
+   `(#:python ,python-2
+     #:tests? #f)); 8 Tests fail, 37 succeed
+  (propagated-inputs
+   `(("python2-setuptools-scm-git-archive" ,python2-setuptools-scm-git-archive)))
+  (native-inputs
+   `(("unzip" ,unzip)))
+  (home-page "https://github.com/greginvm/pyclipper")
+  (synopsis "Wrapper for Angus Johnson's Clipper library")
+  (description
+   "Pyclipper is a Cython wrapper for the C++ translation of the
+Angus Johnson's Clipper library (ver. 6.2.1)")
+  (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.1


[-- Attachment #1.6: 0005-gnu-Add-python2-booleanoperations.patch --]
[-- Type: text/plain, Size: 1814 bytes --]

From 05901d74378199516472562eaa175a4025bd438b Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 18:07:47 +0000
Subject: [PATCH 5/7] gnu: Add python2-booleanoperations.

* gnu/packages/python.scm (python2-booleanoperations): New variable.
---
 gnu/packages/python.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 2a13a6466..4bdd05a78 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7471,6 +7471,35 @@ files.  UFO is a file format that stores fonts source files.")
 Angus Johnson's Clipper library (ver. 6.2.1)")
   (license license:expat)))
 
+(define-public python2-booleanoperations
+  (package
+    (name "python2-booleanoperations")
+    (version "0.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "booleanOperations" version ".zip"))
+       (sha256
+        (base32
+         "1hw42fazdpvsn77glx96hwsj9l17mvx37sc5707s08y5w6fx16mn"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("python2-pytest-3.0" ,python2-pytest-3.0)
+       ("python2-pytest-runner" ,python2-pytest-runner)))
+    (propagated-inputs
+     `(("python-fonttools" ,python2-fonttools)
+       ("python-pyclipper" ,python2-pyclipper)
+       ("python-ufolib" ,python2-ufolib)))
+    (home-page "https://github.com/typemytype/booleanOperations")
+    (synopsis "Boolean operations on paths")
+    (description
+     "BooleanOperations provides a python library that enables
+boolean operations on paths.")
+    (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.1


[-- Attachment #1.7: 0006-gnu-Add-python2-defcon.patch --]
[-- Type: text/plain, Size: 2073 bytes --]

From a72beedccffc8c6baef91bf2548dfec4ff286d87 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Mon, 25 Sep 2017 11:13:03 +0000
Subject: [PATCH 6/7] gnu: Add python2-defcon.

* gnu/packages/python.scm (python2-defcon): New variable.
---
 gnu/packages/python.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 4bdd05a78..75bf2ab13 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7500,6 +7500,39 @@ Angus Johnson's Clipper library (ver. 6.2.1)")
 boolean operations on paths.")
     (license license:expat)))
 
+(define-public python2-defcon
+  (package
+    (name "python2-defcon")
+    (version "0.3.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "defcon" version ".zip"))
+       (sha256
+        (base32
+         "1f41w54fdjy9izxcwzqa142kd56whqsg9nq5k4508jb6iip84h89"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("python2-pytest-3.0" ,python2-pytest-3.0)
+       ("python2-pytest-runner" ,python2-pytest-runner)))
+    (propagated-inputs
+     `(("python2-fonttools" ,python2-fonttools)
+       ("python2-ufolib" ,python2-ufolib)))
+    (home-page "https://pypi.python.org/pypi/defcon")
+    (synopsis "set of flexible objects for representing UFO data")
+    (description
+     "Defcon is a set of UFO based objects optimized for use in
+font editing applications.  The objects are built to be lightweight,
+fast and flexible.  The objects are very bare-bones and they are not
+meant to be end-all, be-all objects.  Rather, they are meant to provide
+base functionality so that you can focus on your application’s behavior,
+not object observing or maintaining cached data.  Defcon implements
+UFO3 as described by the UFO font format.")
+    (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.1


[-- Attachment #1.8: 0007-gnu-Add-nototools.patch --]
[-- Type: text/plain, Size: 3400 bytes --]

From 53930f87fa54a13fde52246ad30d74e409b4020e Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Mon, 25 Sep 2017 12:12:55 +0000
Subject: [PATCH 7/7] gnu: Add nototools.

* gnu/packages/fontutils.scm (nototools): New variable.
---
 gnu/packages/fontutils.scm | 47 +++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 46 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 102def93d..3aec84414 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2017 ng0 <ng0@infotropique.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,7 +45,8 @@
   #:use-module (guix svn-download)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python))
 
 (define-public freetype
   (package
@@ -565,3 +567,46 @@ opentype fonts.  You can save fonts in many different outline formats, and
 generate bitmaps.")
    (license license:gpl3+)
    (home-page "https://fontforge.github.io/en-US/")))
+
+(define-public nototools
+  (let ((commit "fecf378cf98af95bf603707b99861ce698e4c384")
+        (revision "1"))
+    (package
+      (name "nototools")
+      (version (string-append "0.0.1-" revision "."
+                              (string-take commit 7)))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/googlei18n/nototools.git")
+               (commit commit)))
+         (file-name (string-append name "-" version "-checkout"))
+         (sha256
+          (base32
+           "0b2yx4kwniccc8v221rwrzavy1gchm7q658f46cp0wdx44bsr4xj"))))
+      (build-system python-build-system)
+      (arguments
+       `(#:python ,python-2))
+      (propagated-inputs
+       `(("python2-booleanoperations" ,python2-booleanoperations)
+         ("python2-defcon" ,python2-defcon)
+         ("python2-fonttools" ,python2-fonttools)
+         ("python2-pillow" ,python2-pillow)
+         ("python2-pyclipper" ,python2-pyclipper)
+         ("python2-ufolib" ,python2-ufolib)))
+      (home-page "https://github.com/googlei18n/nototools")
+      (synopsis "Noto fonts support tools and scripts")
+      (description
+       "Nototools is a python package containing python scripts used to
+maintain the Noto Fonts project.")
+      (license (list license:asl2.0
+                     ;; Sample texts are attributed to UN and OHCHR.
+                     ;; The permissions on the UDHR are pretty lax:
+                     ;; http://www.ohchr.org/EN/UDHR/Pages/Introduction.aspx
+                     ;; "If UDHR translations or materials are reproduced, users
+                     ;; should make reference to this website as a source by
+                     ;; providing a link."
+                     license:public-domain
+                     license:non-copyleft "file://sample_texts/attributions.txt"
+                     "See sample_texts/attributions.txt in the distribution.")))))
-- 
2.14.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply related	[relevance 95%]

* [bug#27922] [PATCH] gnu: python-numpy: Update to 1.12.1.
  @ 2017-09-26 16:59 58%     ` Thomas Danckaert
    0 siblings, 1 reply; 200+ results
From: Thomas Danckaert @ 2017-09-26 16:59 UTC (permalink / raw)
  To: leo; +Cc: 27922

[-- Attachment #1: Type: Text/Plain, Size: 1234 bytes --]

From: Leo Famulari <leo@famulari.name>
Subject: Re: [bug#27922] [PATCH] gnu: python-numpy: Update to 1.12.1.
Date: Tue, 26 Sep 2017 11:46:20 -0400

> On Tue, Sep 26, 2017 at 01:48:45PM +0200, Ludovic Courtès wrote:
>> Thomas Danckaert <post@thomasdanckaert.be> skribis:
>> > I can push a modified patch (with the pypi source) if it's ok.  
>> Is there
>> > any reason we would not update to version 1.13.1 rightaway?
>>
>> If the dependents of NumPy build fine, I see no reason not to 
>> upgrade to
>> 1.13.1.
>>
>> Thanks for picking this up!
>
> Yes, thank you! I got distracted and had to take a little break, 
> which
> is why this patch fell by the wayside.

Attached patch updates to 1.13.1.  I had to add bash-minimal as a 
native input because the numpy people made their build system a 
little more convoluted ;-) (external commands such as gcc are run 
within a shell with $SHELL -c 'gcc [...]', I didn't look up the 
motivation for that).

If there are no objections, I'll push this soon.

Thomas

ps I couldn't check if matplotlib still builds with this numpy 
version, because our bluez package (on which matplotlib apparently 
depends) appears to be broken.  But that's another story.

[-- Attachment #2: 0001-gnu-python-numpy-Update-to-1.13.1.patch --]
[-- Type: Text/X-Patch, Size: 2308 bytes --]

From 2b90b6e2a9b7ac73937ee8e52b08bb715ba33fb7 Mon Sep 17 00:00:00 2001
From: Thomas Danckaert <post@thomasdanckaert.be>
Date: Tue, 26 Sep 2017 16:26:08 +0200
Subject: [PATCH] gnu: python-numpy: Update to 1.13.1.

* gnu/packages/python.scm (python-numpy, python2-numpy): Update to 1.12.1.
[source]: Download the zip release from pypi instead of a git snapshot.
[native-inputs]: Add unzip and bash-minimal.
[arguments]: Set SHELL environment variable.

Co-authored by Leo Famulari <leo@famulari.name>
---
 gnu/packages/python.scm | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 5dcb5a05c..6b9de923d 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3720,22 +3720,24 @@ between language specification and implementation aspects.")
 (define-public python-numpy
   (package
     (name "python-numpy")
-    (version "1.12.0")
+    (version "1.13.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://github.com/numpy/numpy/archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (uri (pypi-uri "numpy" version ".zip"))
        (sha256
         (base32
-         "025d4j4aakcp8w5i5diqh812cbbjgac7jszx1j56ivrbi1i8vv7d"))))
+         "1fsgkhh1vdkhmlz8vmdgxnj9n9yaanckxxzz9s0b4p08fqvjic69"))))
     (build-system python-build-system)
     (inputs
      `(("openblas" ,openblas)
        ("lapack" ,lapack)))
     (native-inputs
-     `(("python-cython" ,python-cython)
+     `(("unzip" ,unzip)
+       ;; We need bash because numpy's distutils runs external commands with
+       ;; $SHELL -c '...'.
+       ("bash" ,bash-minimal)
+       ("python-cython" ,python-cython)
        ("python-nose" ,python-nose)
        ("gfortran" ,gfortran)))
     (arguments
@@ -3743,6 +3745,8 @@ between language specification and implementation aspects.")
        (modify-phases %standard-phases
         (add-before 'build 'set-environment-variables
          (lambda* (#:key inputs #:allow-other-keys)
+          (setenv "SHELL"
+                  (string-append (assoc-ref inputs "bash") "/bin/bash"))
           (call-with-output-file "site.cfg"
             (lambda (port)
               (format port
-- 
2.14.1


^ permalink raw reply related	[relevance 58%]

* [bug#27922] [PATCH] gnu: python-numpy: Update to 1.12.1.
  @ 2017-09-27  6:36 60%         ` Thomas Danckaert
  0 siblings, 0 replies; 200+ results
From: Thomas Danckaert @ 2017-09-27  6:36 UTC (permalink / raw)
  To: ludo; +Cc: 27922

[-- Attachment #1: Type: Text/Plain, Size: 523 bytes --]

From: ludo@gnu.org (Ludovic Courtès)
Subject: Re: [bug#27922] [PATCH] gnu: python-numpy: Update to 1.12.1.
Date: Tue, 26 Sep 2017 22:08:32 +0200

> This is weird: bash-minimal is an implicit input already.  What was 
> the
> error exactly?

Oops, just setting (setenv "SHELL" "bash") is enough. Indeed, bash is 
already there.

(I've been looking in (guix build-system ...) to try to find out the 
default native inputs for the different build systems, but couldn't 
find it.  Where are they set?)

Thomas

[-- Attachment #2: 0001-gnu-python-numpy-Update-to-1.13.1.patch --]
[-- Type: Text/X-Patch, Size: 2155 bytes --]

From f60e8593ca572477e2444a57ad508b9c558316ee Mon Sep 17 00:00:00 2001
From: Thomas Danckaert <post@thomasdanckaert.be>
Date: Tue, 26 Sep 2017 16:26:08 +0200
Subject: [PATCH] gnu: python-numpy: Update to 1.13.1.

* gnu/packages/python.scm (python-numpy, python2-numpy): Update to 1.13.1.
[source]: Download the zip release from pypi instead of a git snapshot.
[native-inputs]: Add unzip.
[arguments]: Set SHELL environment variable.

Co-authored by Leo Famulari <leo@famulari.name>
---
 gnu/packages/python.scm | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 5dcb5a05c..6988b44a9 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3720,22 +3720,21 @@ between language specification and implementation aspects.")
 (define-public python-numpy
   (package
     (name "python-numpy")
-    (version "1.12.0")
+    (version "1.13.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://github.com/numpy/numpy/archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (uri (pypi-uri "numpy" version ".zip"))
        (sha256
         (base32
-         "025d4j4aakcp8w5i5diqh812cbbjgac7jszx1j56ivrbi1i8vv7d"))))
+         "1fsgkhh1vdkhmlz8vmdgxnj9n9yaanckxxzz9s0b4p08fqvjic69"))))
     (build-system python-build-system)
     (inputs
      `(("openblas" ,openblas)
        ("lapack" ,lapack)))
     (native-inputs
-     `(("python-cython" ,python-cython)
+     `(("unzip" ,unzip)
+       ("python-cython" ,python-cython)
        ("python-nose" ,python-nose)
        ("gfortran" ,gfortran)))
     (arguments
@@ -3743,6 +3742,8 @@ between language specification and implementation aspects.")
        (modify-phases %standard-phases
         (add-before 'build 'set-environment-variables
          (lambda* (#:key inputs #:allow-other-keys)
+           ;; numpy's distutils uses $SHELL to run external commands.
+          (setenv "SHELL" "bash")
           (call-with-output-file "site.cfg"
             (lambda (port)
               (format port
-- 
2.14.1


^ permalink raw reply related	[relevance 60%]

* [bug#28660] [PATCH] gnu: python-numpy: Give sh store location instead of setting $SHELL.
@ 2017-10-01 12:44 60% Thomas Danckaert
  0 siblings, 0 replies; 200+ results
From: Thomas Danckaert @ 2017-10-01 12:44 UTC (permalink / raw)
  To: 28660

[-- Attachment #1: Type: Text/Plain, Size: 494 bytes --]

Hi Guix,

I slightly botched the last numpy update: setting $SHELL works, but 
then we have to set $SHELL for every package which uses numpy's 
distutils.  I don't know how many packages there are, but it includes 
scipy and python-hdf (and therefore those builds are currently broken 
on master...).

The attached patch should fix the issue for all packages, by setting 
the default shell to the “/bin/sh” of the build environment's bash 
package (i.e. bash-minimal).

Thomas

[-- Attachment #2: 0001-gnu-python-numpy-Give-sh-store-location-instead-of-s.patch --]
[-- Type: Text/X-Patch, Size: 1842 bytes --]

From cfaebf1b09c71585b5513629005e7cf3c5d17508 Mon Sep 17 00:00:00 2001
From: Thomas Danckaert <thomas.danckaert@gmail.com>
Date: Sun, 1 Oct 2017 14:32:04 +0200
Subject: [PATCH] gnu: python-numpy: Give sh store location instead of setting
 $SHELL.

* gnu/packages/python.scm (python-numpy): [arguments] Don't set $SHELL in the
  environment, but embed the location of bash as a default shell.  Otherwise,
  we have to set $SHELL for every package which uses numpy's distutils.
---
 gnu/packages/python.scm | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e95c22de1..267715b0f 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3742,8 +3742,6 @@ between language specification and implementation aspects.")
        (modify-phases %standard-phases
         (add-before 'build 'set-environment-variables
          (lambda* (#:key inputs #:allow-other-keys)
-           ;; numpy's distutils uses $SHELL to run external commands.
-          (setenv "SHELL" "bash")
           (call-with-output-file "site.cfg"
             (lambda (port)
               (format port
@@ -3762,6 +3760,10 @@ include_dirs = ~a/include
                       (assoc-ref inputs "openblas")
                       (assoc-ref inputs "lapack")
                       (assoc-ref inputs "lapack"))))
+          ;; Insert bash store location for default shell /bin/sh.
+          (substitute* "numpy/distutils/exec_command.py"
+            (("(os.environ.get\\('SHELL', ')(/bin/sh'\\))" match match-start match-end)
+            (string-append match-start (assoc-ref inputs "bash") match-end)))
           ;; Use "gcc" executable, not "cc".
           (substitute* "numpy/distutils/system_info.py"
             (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
-- 
2.14.1


^ permalink raw reply related	[relevance 60%]

* [bug#28594] nototools (required for building Noto from source)
  2017-09-25 12:18 95% [bug#28594] nototools (required for building Noto from source) ng0
@ 2017-10-01 18:41 95% ` ng0
  2017-10-01 18:47 95%   ` ng0
  0 siblings, 1 reply; 200+ results
From: ng0 @ 2017-10-01 18:41 UTC (permalink / raw)
  To: 28594


[-- Attachment #1.1: Type: text/plain, Size: 204 bytes --]

Update, using the snapshot nototools tagged per request.
-- 
ng0
GnuPG: A88C8ADD129828D7EAC02E52E22F9BBFEE348588
GnuPG: https://krosos.org/dist/keys/
https://www.infotropique.org https://krosos.org

[-- Attachment #1.2: 0001-gnu-python-fonttools-Update-to-3.15.1.patch --]
[-- Type: text/plain, Size: 2296 bytes --]

From fd3b03257e7382b555986c0a64300ce6c9ff03fa Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 11:31:51 +0000
Subject: [PATCH 1/7] gnu: python-fonttools: Update to 3.15.1.

* gnu/packages/python.scm (python-fonttools): Update to 3.15.1.
(source)[uri]: Use 'pypi-uri'.
---
 gnu/packages/python.scm | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 77c4a8347..e8af186f8 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -23,7 +23,7 @@
 ;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
-;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
+;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
@@ -7361,15 +7361,13 @@ add functionality and customization to your projects with their own plugins.")
 (define-public python-fonttools
   (package
     (name "python-fonttools")
-    (version "2.5")
+    (version "3.15.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "https://pypi.python.org/packages/source/F/FontTools/"
-                    "fonttools-" version ".tar.gz"))
+              (uri (pypi-uri "fonttools" version ".zip"))
               (sha256
                (base32
-                "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
+                "1hhj97izwliy0vybmza72d90l5d4mcn50y8akq7kyccfl82vdx4d"))))
     (build-system python-build-system)
     (arguments
      '(#:test-target "check"
@@ -7383,6 +7381,8 @@ add functionality and customization to your projects with their own plugins.")
              (substitute* "setup.py"
                (("^[ \t]*extra_path *= *'FontTools',") ""))
              #t)))))
+    (native-inputs
+     `(("unzip" ,unzip)))
     (home-page "https://github.com/behdad/fonttools")
     (synopsis "Tools to manipulate font files")
     (description
-- 
2.14.2


[-- Attachment #1.3: 0002-gnu-Add-python2-ufolib.patch --]
[-- Type: text/plain, Size: 1648 bytes --]

From 3f92924aa71d63beb1ade69261e17da26969eee9 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 11:39:29 +0000
Subject: [PATCH 2/7] gnu: Add python2-ufolib.

* gnu/packages/python.scm (python2-ufolib): New variable.
---
 gnu/packages/python.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e8af186f8..052547316 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7398,6 +7398,32 @@ from an XML-based format.")
 (define-public python2-fonttools
   (package-with-python2 python-fonttools))
 
+(define-public python2-ufolib
+  (package
+    (name "python2-ufolib")
+    (version "2.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ufoLib" version ".zip"))
+       (sha256
+        (base32 "1njin1465qqzshnrvcl5sbv0bsy15gj6fycbw4lmcnwkx5sldgyx"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (propagated-inputs
+     `(("python2-fonttools" ,python2-fonttools)))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("python2-pytest-3.0" ,python2-pytest-3.0)
+       ("python2-pytest-runner" ,python2-pytest-runner)))
+    (home-page "https://github.com/unified-font-object/ufoLib")
+    (synopsis "Low-level UFO reader and writer.")
+    (description
+     "ufoLib reads and writes Unified Font Object (UFO)
+files.  UFO is a file format that stores fonts source files.")
+    (license license:bsd-3)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.2


[-- Attachment #1.4: 0003-gnu-Add-python2-setuptools-scm-git-archive.patch --]
[-- Type: text/plain, Size: 1556 bytes --]

From 317715f0addbea342adbb7d02482f11390cf8ad1 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 11:49:31 +0000
Subject: [PATCH 3/7] gnu: Add python2-setuptools-scm-git-archive.

* gnu/packages/python.scm (python2-setuptools-scm-git-archive): New variable.
---
 gnu/packages/python.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 052547316..de42e6835 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7424,6 +7424,28 @@ from an XML-based format.")
 files.  UFO is a file format that stores fonts source files.")
     (license license:bsd-3)))
 
+(define-public python2-setuptools-scm-git-archive
+  (package
+    (name "python2-setuptools-scm-git-archive")
+    (version "1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "setuptools_scm_git_archive" version))
+       (sha256
+        (base32
+         "1nii1sz5jq75ilf18bjnr11l9rz1lvdmyk66bxl7q90qan85yhjj"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (propagated-inputs
+     `(("python2-setuptools-scm" ,python2-setuptools-scm)))
+    (home-page "https://github.com/Changaco/setuptools_scm_git_archive/")
+    (synopsis "setuptools_scm plugin for git archives")
+    (description
+     "setuptools_scm plugin for git archives")
+    (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.2


[-- Attachment #1.5: 0004-gnu-Add-python2-pyclipper.patch --]
[-- Type: text/plain, Size: 1633 bytes --]

From 4fbfc2bd54a173fba4a38547446e5e10aeef035d Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 12:00:41 +0000
Subject: [PATCH 4/7] gnu: Add python2-pyclipper.

* gnu/packages/python.scm (python2-pyclipper): New variable.
---
 gnu/packages/python.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index de42e6835..36be2e34a 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7446,6 +7446,32 @@ files.  UFO is a file format that stores fonts source files.")
      "setuptools_scm plugin for git archives")
     (license license:expat)))
 
+(define-public python2-pyclipper
+(package
+  (name "python2-pyclipper")
+  (version "1.0.6")
+  (source
+   (origin
+     (method url-fetch)
+     (uri (pypi-uri "pyclipper" version ".zip"))
+     (sha256
+      (base32
+       "1zpmwv3bya3j984y5cf9x9d5108kf6mxldcba68wiq0frv5qrssw"))))
+  (build-system python-build-system)
+  (arguments
+   `(#:python ,python-2
+     #:tests? #f)); 8 Tests fail, 37 succeed
+  (propagated-inputs
+   `(("python2-setuptools-scm-git-archive" ,python2-setuptools-scm-git-archive)))
+  (native-inputs
+   `(("unzip" ,unzip)))
+  (home-page "https://github.com/greginvm/pyclipper")
+  (synopsis "Wrapper for Angus Johnson's Clipper library")
+  (description
+   "Pyclipper is a Cython wrapper for the C++ translation of the
+Angus Johnson's Clipper library (ver. 6.2.1)")
+  (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.2


[-- Attachment #1.6: 0005-gnu-Add-python2-booleanoperations.patch --]
[-- Type: text/plain, Size: 1814 bytes --]

From 2cc7723d764503b031b8978db7c9f637d19fac11 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 18:07:47 +0000
Subject: [PATCH 5/7] gnu: Add python2-booleanoperations.

* gnu/packages/python.scm (python2-booleanoperations): New variable.
---
 gnu/packages/python.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 36be2e34a..90cc5283f 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7472,6 +7472,35 @@ files.  UFO is a file format that stores fonts source files.")
 Angus Johnson's Clipper library (ver. 6.2.1)")
   (license license:expat)))
 
+(define-public python2-booleanoperations
+  (package
+    (name "python2-booleanoperations")
+    (version "0.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "booleanOperations" version ".zip"))
+       (sha256
+        (base32
+         "1hw42fazdpvsn77glx96hwsj9l17mvx37sc5707s08y5w6fx16mn"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("python2-pytest-3.0" ,python2-pytest-3.0)
+       ("python2-pytest-runner" ,python2-pytest-runner)))
+    (propagated-inputs
+     `(("python-fonttools" ,python2-fonttools)
+       ("python-pyclipper" ,python2-pyclipper)
+       ("python-ufolib" ,python2-ufolib)))
+    (home-page "https://github.com/typemytype/booleanOperations")
+    (synopsis "Boolean operations on paths")
+    (description
+     "BooleanOperations provides a python library that enables
+boolean operations on paths.")
+    (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.2


[-- Attachment #1.7: 0006-gnu-Add-python2-defcon.patch --]
[-- Type: text/plain, Size: 2073 bytes --]

From b3b2c14cd0d67c3a2814485af4c68bf6e27cb879 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Mon, 25 Sep 2017 11:13:03 +0000
Subject: [PATCH 6/7] gnu: Add python2-defcon.

* gnu/packages/python.scm (python2-defcon): New variable.
---
 gnu/packages/python.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 90cc5283f..6e0dfd01c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7501,6 +7501,39 @@ Angus Johnson's Clipper library (ver. 6.2.1)")
 boolean operations on paths.")
     (license license:expat)))
 
+(define-public python2-defcon
+  (package
+    (name "python2-defcon")
+    (version "0.3.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "defcon" version ".zip"))
+       (sha256
+        (base32
+         "1f41w54fdjy9izxcwzqa142kd56whqsg9nq5k4508jb6iip84h89"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("python2-pytest-3.0" ,python2-pytest-3.0)
+       ("python2-pytest-runner" ,python2-pytest-runner)))
+    (propagated-inputs
+     `(("python2-fonttools" ,python2-fonttools)
+       ("python2-ufolib" ,python2-ufolib)))
+    (home-page "https://pypi.python.org/pypi/defcon")
+    (synopsis "set of flexible objects for representing UFO data")
+    (description
+     "Defcon is a set of UFO based objects optimized for use in
+font editing applications.  The objects are built to be lightweight,
+fast and flexible.  The objects are very bare-bones and they are not
+meant to be end-all, be-all objects.  Rather, they are meant to provide
+base functionality so that you can focus on your application’s behavior,
+not object observing or maintaining cached data.  Defcon implements
+UFO3 as described by the UFO font format.")
+    (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.2


[-- Attachment #1.8: 0007-gnu-Add-nototools.patch --]
[-- Type: text/plain, Size: 3286 bytes --]

From 6c1178def4bcbfd6f55f0aee44562070230d2e96 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Mon, 25 Sep 2017 12:12:55 +0000
Subject: [PATCH 7/7] gnu: Add nototools.

* gnu/packages/fontutils.scm (nototools): New variable.
---
 gnu/packages/fontutils.scm | 44 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 43 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 15401f652..eb4f7fb90 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2017 ng0 <ng0@infotropique.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,7 +45,8 @@
   #:use-module (guix svn-download)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python))
 
 (define-public freetype
   (package
@@ -565,3 +567,43 @@ opentype fonts.  You can save fonts in many different outline formats, and
 generate bitmaps.")
    (license license:gpl3+)
    (home-page "https://fontforge.github.io/en-US/")))
+
+(define-public nototools
+    (package
+      (name "nototools")
+      (version "20170925")
+      (source
+       (origin
+         (method url-fetch)
+         (uri (string-append "https://github.com/googlei18n/nototools/"
+                             "archive/v2017-09-25-tooling-for-phase3-"
+                             "update.tar.gz"))
+         (file-name (string-append name "-" version ".tar.gz"))
+         (sha256
+          (base32
+           "1pvacw18cm9l4sb66pqyjc7hc74xhhfxc7kd5ald8lixf4wzg0s8"))))
+      (build-system python-build-system)
+      (arguments
+       `(#:python ,python-2))
+      (propagated-inputs
+       `(("python2-booleanoperations" ,python2-booleanoperations)
+         ("python2-defcon" ,python2-defcon)
+         ("python2-fonttools" ,python2-fonttools)
+         ("python2-pillow" ,python2-pillow)
+         ("python2-pyclipper" ,python2-pyclipper)
+         ("python2-ufolib" ,python2-ufolib)))
+      (home-page "https://github.com/googlei18n/nototools")
+      (synopsis "Noto fonts support tools and scripts")
+      (description
+       "Nototools is a python package containing python scripts used to
+maintain the Noto Fonts project.")
+      (license (list license:asl2.0
+                     ;; Sample texts are attributed to UN and OHCHR.
+                     ;; The permissions on the UDHR are pretty lax:
+                     ;; http://www.ohchr.org/EN/UDHR/Pages/Introduction.aspx
+                     ;; "If UDHR translations or materials are reproduced, users
+                     ;; should make reference to this website as a source by
+                     ;; providing a link."
+                     license:public-domain
+                     license:non-copyleft "file://sample_texts/attributions.txt"
+                     "See sample_texts/attributions.txt in the distribution."))))
-- 
2.14.2


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply related	[relevance 95%]

* [bug#28594] nototools (required for building Noto from source)
  2017-10-01 18:41 95% ` ng0
@ 2017-10-01 18:47 95%   ` ng0
    0 siblings, 1 reply; 200+ results
From: ng0 @ 2017-10-01 18:47 UTC (permalink / raw)
  To: 28594


[-- Attachment #1.1: Type: text/plain, Size: 297 bytes --]

ng0 transcribed 16K bytes:
> Update, using the snapshot nototools tagged per request.

And another one, fixing the leading spaces / indentation.

-- 
ng0
GnuPG: A88C8ADD129828D7EAC02E52E22F9BBFEE348588
GnuPG: https://krosos.org/dist/keys/
https://www.infotropique.org https://krosos.org

[-- Attachment #1.2: 0001-gnu-python-fonttools-Update-to-3.15.1.patch --]
[-- Type: text/plain, Size: 2296 bytes --]

From fd3b03257e7382b555986c0a64300ce6c9ff03fa Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 11:31:51 +0000
Subject: [PATCH 1/7] gnu: python-fonttools: Update to 3.15.1.

* gnu/packages/python.scm (python-fonttools): Update to 3.15.1.
(source)[uri]: Use 'pypi-uri'.
---
 gnu/packages/python.scm | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 77c4a8347..e8af186f8 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -23,7 +23,7 @@
 ;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
-;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
+;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
@@ -7361,15 +7361,13 @@ add functionality and customization to your projects with their own plugins.")
 (define-public python-fonttools
   (package
     (name "python-fonttools")
-    (version "2.5")
+    (version "3.15.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "https://pypi.python.org/packages/source/F/FontTools/"
-                    "fonttools-" version ".tar.gz"))
+              (uri (pypi-uri "fonttools" version ".zip"))
               (sha256
                (base32
-                "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
+                "1hhj97izwliy0vybmza72d90l5d4mcn50y8akq7kyccfl82vdx4d"))))
     (build-system python-build-system)
     (arguments
      '(#:test-target "check"
@@ -7383,6 +7381,8 @@ add functionality and customization to your projects with their own plugins.")
              (substitute* "setup.py"
                (("^[ \t]*extra_path *= *'FontTools',") ""))
              #t)))))
+    (native-inputs
+     `(("unzip" ,unzip)))
     (home-page "https://github.com/behdad/fonttools")
     (synopsis "Tools to manipulate font files")
     (description
-- 
2.14.2


[-- Attachment #1.3: 0002-gnu-Add-python2-ufolib.patch --]
[-- Type: text/plain, Size: 1648 bytes --]

From 3f92924aa71d63beb1ade69261e17da26969eee9 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 11:39:29 +0000
Subject: [PATCH 2/7] gnu: Add python2-ufolib.

* gnu/packages/python.scm (python2-ufolib): New variable.
---
 gnu/packages/python.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e8af186f8..052547316 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7398,6 +7398,32 @@ from an XML-based format.")
 (define-public python2-fonttools
   (package-with-python2 python-fonttools))
 
+(define-public python2-ufolib
+  (package
+    (name "python2-ufolib")
+    (version "2.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ufoLib" version ".zip"))
+       (sha256
+        (base32 "1njin1465qqzshnrvcl5sbv0bsy15gj6fycbw4lmcnwkx5sldgyx"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (propagated-inputs
+     `(("python2-fonttools" ,python2-fonttools)))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("python2-pytest-3.0" ,python2-pytest-3.0)
+       ("python2-pytest-runner" ,python2-pytest-runner)))
+    (home-page "https://github.com/unified-font-object/ufoLib")
+    (synopsis "Low-level UFO reader and writer.")
+    (description
+     "ufoLib reads and writes Unified Font Object (UFO)
+files.  UFO is a file format that stores fonts source files.")
+    (license license:bsd-3)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.2


[-- Attachment #1.4: 0003-gnu-Add-python2-setuptools-scm-git-archive.patch --]
[-- Type: text/plain, Size: 1556 bytes --]

From 317715f0addbea342adbb7d02482f11390cf8ad1 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 11:49:31 +0000
Subject: [PATCH 3/7] gnu: Add python2-setuptools-scm-git-archive.

* gnu/packages/python.scm (python2-setuptools-scm-git-archive): New variable.
---
 gnu/packages/python.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 052547316..de42e6835 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7424,6 +7424,28 @@ from an XML-based format.")
 files.  UFO is a file format that stores fonts source files.")
     (license license:bsd-3)))
 
+(define-public python2-setuptools-scm-git-archive
+  (package
+    (name "python2-setuptools-scm-git-archive")
+    (version "1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "setuptools_scm_git_archive" version))
+       (sha256
+        (base32
+         "1nii1sz5jq75ilf18bjnr11l9rz1lvdmyk66bxl7q90qan85yhjj"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (propagated-inputs
+     `(("python2-setuptools-scm" ,python2-setuptools-scm)))
+    (home-page "https://github.com/Changaco/setuptools_scm_git_archive/")
+    (synopsis "setuptools_scm plugin for git archives")
+    (description
+     "setuptools_scm plugin for git archives")
+    (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.2


[-- Attachment #1.5: 0004-gnu-Add-python2-pyclipper.patch --]
[-- Type: text/plain, Size: 1633 bytes --]

From 4fbfc2bd54a173fba4a38547446e5e10aeef035d Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 12:00:41 +0000
Subject: [PATCH 4/7] gnu: Add python2-pyclipper.

* gnu/packages/python.scm (python2-pyclipper): New variable.
---
 gnu/packages/python.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index de42e6835..36be2e34a 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7446,6 +7446,32 @@ files.  UFO is a file format that stores fonts source files.")
      "setuptools_scm plugin for git archives")
     (license license:expat)))
 
+(define-public python2-pyclipper
+(package
+  (name "python2-pyclipper")
+  (version "1.0.6")
+  (source
+   (origin
+     (method url-fetch)
+     (uri (pypi-uri "pyclipper" version ".zip"))
+     (sha256
+      (base32
+       "1zpmwv3bya3j984y5cf9x9d5108kf6mxldcba68wiq0frv5qrssw"))))
+  (build-system python-build-system)
+  (arguments
+   `(#:python ,python-2
+     #:tests? #f)); 8 Tests fail, 37 succeed
+  (propagated-inputs
+   `(("python2-setuptools-scm-git-archive" ,python2-setuptools-scm-git-archive)))
+  (native-inputs
+   `(("unzip" ,unzip)))
+  (home-page "https://github.com/greginvm/pyclipper")
+  (synopsis "Wrapper for Angus Johnson's Clipper library")
+  (description
+   "Pyclipper is a Cython wrapper for the C++ translation of the
+Angus Johnson's Clipper library (ver. 6.2.1)")
+  (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.2


[-- Attachment #1.6: 0005-gnu-Add-python2-booleanoperations.patch --]
[-- Type: text/plain, Size: 1814 bytes --]

From 2cc7723d764503b031b8978db7c9f637d19fac11 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 18:07:47 +0000
Subject: [PATCH 5/7] gnu: Add python2-booleanoperations.

* gnu/packages/python.scm (python2-booleanoperations): New variable.
---
 gnu/packages/python.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 36be2e34a..90cc5283f 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7472,6 +7472,35 @@ files.  UFO is a file format that stores fonts source files.")
 Angus Johnson's Clipper library (ver. 6.2.1)")
   (license license:expat)))
 
+(define-public python2-booleanoperations
+  (package
+    (name "python2-booleanoperations")
+    (version "0.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "booleanOperations" version ".zip"))
+       (sha256
+        (base32
+         "1hw42fazdpvsn77glx96hwsj9l17mvx37sc5707s08y5w6fx16mn"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("python2-pytest-3.0" ,python2-pytest-3.0)
+       ("python2-pytest-runner" ,python2-pytest-runner)))
+    (propagated-inputs
+     `(("python-fonttools" ,python2-fonttools)
+       ("python-pyclipper" ,python2-pyclipper)
+       ("python-ufolib" ,python2-ufolib)))
+    (home-page "https://github.com/typemytype/booleanOperations")
+    (synopsis "Boolean operations on paths")
+    (description
+     "BooleanOperations provides a python library that enables
+boolean operations on paths.")
+    (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.2


[-- Attachment #1.7: 0006-gnu-Add-python2-defcon.patch --]
[-- Type: text/plain, Size: 2073 bytes --]

From b3b2c14cd0d67c3a2814485af4c68bf6e27cb879 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Mon, 25 Sep 2017 11:13:03 +0000
Subject: [PATCH 6/7] gnu: Add python2-defcon.

* gnu/packages/python.scm (python2-defcon): New variable.
---
 gnu/packages/python.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 90cc5283f..6e0dfd01c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7501,6 +7501,39 @@ Angus Johnson's Clipper library (ver. 6.2.1)")
 boolean operations on paths.")
     (license license:expat)))
 
+(define-public python2-defcon
+  (package
+    (name "python2-defcon")
+    (version "0.3.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "defcon" version ".zip"))
+       (sha256
+        (base32
+         "1f41w54fdjy9izxcwzqa142kd56whqsg9nq5k4508jb6iip84h89"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("python2-pytest-3.0" ,python2-pytest-3.0)
+       ("python2-pytest-runner" ,python2-pytest-runner)))
+    (propagated-inputs
+     `(("python2-fonttools" ,python2-fonttools)
+       ("python2-ufolib" ,python2-ufolib)))
+    (home-page "https://pypi.python.org/pypi/defcon")
+    (synopsis "set of flexible objects for representing UFO data")
+    (description
+     "Defcon is a set of UFO based objects optimized for use in
+font editing applications.  The objects are built to be lightweight,
+fast and flexible.  The objects are very bare-bones and they are not
+meant to be end-all, be-all objects.  Rather, they are meant to provide
+base functionality so that you can focus on your application’s behavior,
+not object observing or maintaining cached data.  Defcon implements
+UFO3 as described by the UFO font format.")
+    (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.2


[-- Attachment #1.8: 0007-gnu-Add-nototools.patch --]
[-- Type: text/plain, Size: 3212 bytes --]

From e5886bc21629d1f1badd074b48c8155bbdef2859 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Mon, 25 Sep 2017 12:12:55 +0000
Subject: [PATCH 7/7] gnu: Add nototools.

* gnu/packages/fontutils.scm (nototools): New variable.
---
 gnu/packages/fontutils.scm | 44 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 43 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 15401f652..ca10c10b0 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2017 ng0 <ng0@infotropique.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,7 +45,8 @@
   #:use-module (guix svn-download)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python))
 
 (define-public freetype
   (package
@@ -565,3 +567,43 @@ opentype fonts.  You can save fonts in many different outline formats, and
 generate bitmaps.")
    (license license:gpl3+)
    (home-page "https://fontforge.github.io/en-US/")))
+
+(define-public nototools
+  (package
+    (name "nototools")
+    (version "20170925")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/googlei18n/nototools/"
+                           "archive/v2017-09-25-tooling-for-phase3-"
+                           "update.tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1pvacw18cm9l4sb66pqyjc7hc74xhhfxc7kd5ald8lixf4wzg0s8"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (propagated-inputs
+     `(("python2-booleanoperations" ,python2-booleanoperations)
+       ("python2-defcon" ,python2-defcon)
+       ("python2-fonttools" ,python2-fonttools)
+       ("python2-pillow" ,python2-pillow)
+       ("python2-pyclipper" ,python2-pyclipper)
+       ("python2-ufolib" ,python2-ufolib)))
+    (home-page "https://github.com/googlei18n/nototools")
+    (synopsis "Noto fonts support tools and scripts")
+    (description
+     "Nototools is a python package containing python scripts used to
+maintain the Noto Fonts project.")
+    (license (list license:asl2.0
+                   ;; Sample texts are attributed to UN and OHCHR.
+                   ;; The permissions on the UDHR are pretty lax:
+                   ;; http://www.ohchr.org/EN/UDHR/Pages/Introduction.aspx
+                   ;; "If UDHR translations or materials are reproduced, users
+                   ;; should make reference to this website as a source by
+                   ;; providing a link."
+                   license:public-domain
+                   license:non-copyleft "file://sample_texts/attributions.txt"
+                   "See sample_texts/attributions.txt in the distribution."))))
-- 
2.14.2


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply related	[relevance 95%]

* [bug#28678] [PATCH 1/4] gnu: python-netaddr: Fix the source URL.
  @ 2017-10-03  1:19 65% ` Cyril Roelandt
  2017-10-03  1:19 65% ` [bug#28676] [PATCH 2/4] gnu: Add python-linecache2 Cyril Roelandt
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 200+ results
From: Cyril Roelandt @ 2017-10-03  1:19 UTC (permalink / raw)
  To: 28678

* gnu/packages/python.scm (python-netaddr, python2-netaddr): Fix the source URL.
---
 gnu/packages/python.scm | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 6ffd468b3..904b1e892 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7519,10 +7519,7 @@ reading and writing MessagePack data.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/n/netaddr/netaddr-"
-             version
-             ".tar.gz"))
+       (uri (pypi-uri "netaddr" version))
        (sha256
          (base32
           "1zdfadvpq4lmcqzr383gywxn4xyn355kj1n3lk9q2l03vmyfrbiq"))))
-- 
2.14.1

^ permalink raw reply related	[relevance 65%]

* [bug#28676] [PATCH 2/4] gnu: Add python-linecache2.
    2017-10-03  1:19 65% ` [bug#28678] [PATCH 1/4] gnu: python-netaddr: Fix the source URL Cyril Roelandt
@ 2017-10-03  1:19 65% ` Cyril Roelandt
  2017-10-03  1:19 65% ` [bug#28679] [PATCH 3/4] gnu: Add python-traceback2 Cyril Roelandt
  2017-10-03  1:19 64% ` [bug#28680] [PATCH 4/4] gnu: python2-unittest2: Update to 1.1.0 Cyril Roelandt
  3 siblings, 0 replies; 200+ results
From: Cyril Roelandt @ 2017-10-03  1:19 UTC (permalink / raw)
  To: 28676

* gnu/packages/python.scm (python-linecache2, python2-linecache2): New
  variables.
---
 gnu/packages/python.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 904b1e892..f6e395bfc 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -16436,3 +16436,32 @@ their files and supports any packaging format (including wheels).")
 
 (define-public python2-twine
   (package-with-python2 python-twine))
+
+(define-public python-linecache2
+  (package
+    (name "python-linecache2")
+    (version "1.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "linecache2" version))
+        (sha256
+          (base32
+            "0z79g3ds5wk2lvnqw0y2jpakjf32h95bd9zmnvp7dnqhf57gy9jb"))))
+    (build-system python-build-system)
+    (arguments
+     `(;; The tests depend on unittest2, and our version is a bit too old.
+       #:tests? #f))
+    (native-inputs
+     `(("python-pbr" ,python-pbr)))
+    (home-page
+      "https://github.com/testing-cabal/linecache2")
+    (synopsis "Backports of the linecache module")
+    (description
+      "The linecache module allows one to get any line from any file, while
+attempting to optimize internally, using a cache, the common case where many
+lines are read from a single file.")
+    (license license:psfl)))
+
+(define-public python2-linecache2
+  (package-with-python2 python-linecache2))
-- 
2.14.1

^ permalink raw reply related	[relevance 65%]

* [bug#28679] [PATCH 3/4] gnu: Add python-traceback2.
    2017-10-03  1:19 65% ` [bug#28678] [PATCH 1/4] gnu: python-netaddr: Fix the source URL Cyril Roelandt
  2017-10-03  1:19 65% ` [bug#28676] [PATCH 2/4] gnu: Add python-linecache2 Cyril Roelandt
@ 2017-10-03  1:19 65% ` Cyril Roelandt
  2017-10-03  1:19 64% ` [bug#28680] [PATCH 4/4] gnu: python2-unittest2: Update to 1.1.0 Cyril Roelandt
  3 siblings, 0 replies; 200+ results
From: Cyril Roelandt @ 2017-10-03  1:19 UTC (permalink / raw)
  To: 28679

* gnu/packages/python.scm (python-traceback2, python2-traceback2): New
  variables.
---
 gnu/packages/python.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index f6e395bfc..e66706086 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -16465,3 +16465,34 @@ lines are read from a single file.")
 
 (define-public python2-linecache2
   (package-with-python2 python-linecache2))
+
+(define-public python-traceback2
+  (package
+    (name "python-traceback2")
+    (version "1.4.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "traceback2" version))
+        (sha256
+          (base32
+            "0c1h3jas1jp1fdbn9z2mrgn3jj0hw1x3yhnkxp7jw34q15xcdb05"))))
+    (build-system python-build-system)
+    (arguments
+     `(;; python-traceback2 and python-unittest2 depend on one another.
+       #:tests? #f))
+    (native-inputs
+     `(("python-pbr" ,python-pbr)))
+    (propagated-inputs
+      `(("python-linecache2" ,python-linecache2)))
+    (home-page
+      "https://github.com/testing-cabal/traceback2")
+    (synopsis "Backports of the traceback module")
+    (description
+      "This module provides a standard interface to extract, format and print
+stack traces of Python programs.  It exactly mimics the behavior of the Python
+interpreter when it prints a stack trace.")
+    (license license:psfl)))
+
+(define-public python2-traceback2
+  (package-with-python2 python-traceback2))
-- 
2.14.1

^ permalink raw reply related	[relevance 65%]

* [bug#28680] [PATCH 4/4] gnu: python2-unittest2: Update to 1.1.0.
                     ` (2 preceding siblings ...)
  2017-10-03  1:19 65% ` [bug#28679] [PATCH 3/4] gnu: Add python-traceback2 Cyril Roelandt
@ 2017-10-03  1:19 64% ` Cyril Roelandt
  3 siblings, 0 replies; 200+ results
From: Cyril Roelandt @ 2017-10-03  1:19 UTC (permalink / raw)
  To: 28680

* gnu/packages/python.scm (python2-unittest2): Update to 1.1.0.
---
 gnu/packages/patches/python2-unittest2-remove-argparse.patch | 11 +++++++++++
 gnu/packages/python.scm                                      |  9 +++++++--
 2 files changed, 18 insertions(+), 2 deletions(-)
 create mode 100644 gnu/packages/patches/python2-unittest2-remove-argparse.patch

diff --git a/gnu/packages/patches/python2-unittest2-remove-argparse.patch b/gnu/packages/patches/python2-unittest2-remove-argparse.patch
new file mode 100644
index 000000000..c96738757
--- /dev/null
+++ b/gnu/packages/patches/python2-unittest2-remove-argparse.patch
@@ -0,0 +1,11 @@
+--- a/setup.py	2017-09-12 01:22:06.273997788 +0200
++++ b/setup.py	2017-09-12 01:22:14.297918757 +0200
+@@ -57,7 +57,7 @@
+ # Both install and setup requires - because we read VERSION from within the
+ # package, and the package also exports all the APIs.
+ # six for compat helpers
+-REQUIRES = ['argparse', 'six>=1.4', 'traceback2'],
++REQUIRES = ['six>=1.4', 'traceback2'],
+ 
+ params = dict(
+     name=NAME,
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e66706086..b45f9bb25 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1843,7 +1843,7 @@ standard library.")
 (define-public python2-unittest2
   (package (inherit python-unittest2)
     (name "python2-unittest2")
-    (version "0.5.1")
+    (version "1.1.0")
     (source
      (origin
        (method url-fetch)
@@ -1852,7 +1852,12 @@ standard library.")
              version ".tar.gz"))
        (sha256
         (base32
-         "0wbs4i4x3x7klr3v35ss6p9mcqz883i1xgcpkhvl7n2lyv6yhpda"))))
+         "0y855kmx7a8rnf81d3lh5lyxai1908xjp0laf4glwa4c8472m212"))
+       (patches
+        (search-patches "python2-unittest2-remove-argparse.patch"))))
+    (propagated-inputs
+     `(("python2-six" ,python2-six)
+       ("python2-traceback2" ,python2-traceback2)))
     (arguments
      `(#:python ,python-2
        #:tests? #f)))) ; no setup.py test command
-- 
2.14.1

^ permalink raw reply related	[relevance 64%]

* [bug#28693] [PATCH] gnu: Add missing input to python-py3status.
@ 2017-10-03 22:57 65% Tomáš Čech
  0 siblings, 0 replies; 200+ results
From: Tomáš Čech @ 2017-10-03 22:57 UTC (permalink / raw)
  To: 28693

* gnu/packages/python.scm (python-py3status): Add missing input.

file is used to determine configuration file encoding and py3status fails to
run when this tool is missing.
---
 gnu/packages/python.scm | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 6ffd468b3..88f7ff1e4 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -11468,6 +11468,8 @@ to occurrences in strings and comments.")
         (base32
          "0i283z1pivmir61z8kbiycigc94l61v33ygzkhczf1ifq7cppyds"))))
     (build-system python-build-system)
+    (inputs
+     `(("file" ,file)))
     (arguments
      '(#:tests? #f)) ; TODO: Requires many libraries not in Guix.
     (home-page "https://github.com/ultrabug/py3status")
-- 
2.14.2

^ permalink raw reply related	[relevance 65%]

* [bug#28693] [PATCH] gnu: Add missing input to python-py3status and fix call path.
  @ 2017-10-05 21:24 64% ` Tomáš Čech
  0 siblings, 0 replies; 200+ results
From: Tomáš Čech @ 2017-10-05 21:24 UTC (permalink / raw)
  To: Christopher Baines; +Cc: 28693

* gnu/packages/python.scm (python-py3status)[inputs, arguments]: Add missing
  file utility as input, adjust path used to call it.

file is used to determine configuration file encoding and py3status fails to
start when this tool is missing.
---
 gnu/packages/python.scm | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 6ffd468b3..426ff12eb 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -11468,8 +11468,21 @@ to occurrences in strings and comments.")
         (base32
          "0i283z1pivmir61z8kbiycigc94l61v33ygzkhczf1ifq7cppyds"))))
     (build-system python-build-system)
+    (inputs
+     `(("file" ,file)))
     (arguments
-     '(#:tests? #f)) ; TODO: Requires many libraries not in Guix.
+     '(#:phases
+       (modify-phases %standard-phases
+         ;; 'file' is used for detection of configuration file encoding
+         ;; let's make link the dependency to particular input
+         (add-before 'build 'patch-file-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((file-path (assoc-ref inputs "file")))
+               (substitute* "py3status/parse_config.py"
+                 (("check_output\\(\\['file'")
+                  (string-append "check_output(['" file-path "/bin/file'")))
+               #t))))
+       #:tests? #f)) ; TODO: Requires many libraries not in Guix.
     (home-page "https://github.com/ultrabug/py3status")
     (synopsis "Extensible i3status wrapper written in Python")
     (description "py3status is an i3status wrapper which extends i3status
-- 
2.14.2

^ permalink raw reply related	[relevance 64%]

* [bug#28726] [PATCH 4/5] gnu: python: Disable tests for python-graphene.
  @ 2017-10-06 20:27 65% ` Christopher Baines
  2017-10-06 20:27 65% ` [bug#28726] [PATCH 5/5] gnu: python: Update python-sqlparse Christopher Baines
  1 sibling, 0 replies; 200+ results
From: Christopher Baines @ 2017-10-06 20:27 UTC (permalink / raw)
  To: 28726

As the tests are missing from the PyPI release.

* gnu/packages/python.scm (python-graphene)[arguments]: Set #:tests? to #f.
---
 gnu/packages/python.scm | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 594dd38e4..6489bb415 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -13099,6 +13099,9 @@ from Facebook.")
          (base32
           "09zhac7igh9ixdz0ay6csy35b40l1jwbf2wrbxmgxwfhy51iy06q"))))
     (build-system python-build-system)
+    (arguments
+     ;; Tests missing from PyPI release.
+     '(#:tests? #f))
     (native-inputs
      `(("python-django-filter" ,python-django-filter)
        ("python-mock" ,python-mock)
-- 
2.14.2

^ permalink raw reply related	[relevance 65%]

* [bug#28726] [PATCH 5/5] gnu: python: Update python-sqlparse.
    2017-10-06 20:27 65% ` [bug#28726] [PATCH 4/5] gnu: python: Disable tests for python-graphene Christopher Baines
@ 2017-10-06 20:27 65% ` Christopher Baines
  1 sibling, 0 replies; 200+ results
From: Christopher Baines @ 2017-10-06 20:27 UTC (permalink / raw)
  To: 28726

* gnu/packages/python.scm (python-sqlparse)[version]: 0.1.19 -> 0.2.4.
  [source]: Update the sha256 hash.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 6489bb415..8362696e9 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -11548,13 +11548,13 @@ multiple processes (imagine multiprocessing, billiard, futures, celery etc).
 (define-public python-sqlparse
   (package
     (name "python-sqlparse")
-    (version "0.1.19")
+    (version "0.2.4")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "sqlparse" version))
               (sha256
                (base32
-                "1s2fvaxgh9kqzrd6iwy5h7i61ckn05plx9np13zby93z3hdbx5nq"))))
+                "1v3xh0bkfhb262dbndgzhivpnhdwavdzz8jjhx9vx0xbrx2880nf"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
-- 
2.14.2

^ permalink raw reply related	[relevance 65%]

* [bug#28737] [PATCH 2/5] gnu: python-arrow: Update to 0.10.0.
    2017-10-08  4:35 65% ` [bug#28738] [PATCH 1/5] gnu: python-apispec: Update to 0.25.3 Cyril Roelandt
@ 2017-10-08  4:35 65% ` Cyril Roelandt
  2017-10-08  4:35 65% ` [bug#28740] [PATCH 3/5] gnu: python-alembic: Update to 0.9.5 Cyril Roelandt
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 200+ results
From: Cyril Roelandt @ 2017-10-08  4:35 UTC (permalink / raw)
  To: 28737

* gnu/packages/python.scm (python-arrow, python2-arrow): Update to 0.10.0.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d36cbaf5a..52999997b 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -11939,13 +11939,13 @@ objects, patterned after the Mocha library for Ruby.")
 (define-public python-arrow
   (package
     (name "python-arrow")
-    (version "0.8.0")
+    (version "0.10.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "arrow" version))
               (sha256
                (base32
-                "1bz7hkdgpqcjs866y58z8jywpy7al0f4rxdr00bh2l5qddyw245j"))))
+                "08n7q2l69hlainds1byd4lxhwrq7zsw7s640zkqc3bs5jkq0cnc0"))))
     (build-system python-build-system)
     (native-inputs
      `(;; For testing
-- 
2.14.1

^ permalink raw reply related	[relevance 65%]

* [bug#28738] [PATCH 1/5] gnu: python-apispec: Update to 0.25.3.
  @ 2017-10-08  4:35 65% ` Cyril Roelandt
  2017-10-08  4:35 65% ` [bug#28737] [PATCH 2/5] gnu: python-arrow: Update to 0.10.0 Cyril Roelandt
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 200+ results
From: Cyril Roelandt @ 2017-10-08  4:35 UTC (permalink / raw)
  To: 28738

* gnu/packages/python.scm (python-apispec, python2-apispec): Update to 0.25.3.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 594dd38e4..d36cbaf5a 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15914,14 +15914,14 @@ complex datatypes to and from native Python datatypes.")
 (define-public python-apispec
   (package
     (name "python-apispec")
-    (version "0.22.0")
+    (version "0.25.3")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "apispec" version))
       (sha256
         (base32
-          "0y3jxmgp2d24am3hxl40f5rw9abb0r8037sagax3dv64h4n1azwq"))))
+          "0kxa8723zbisx10363yh4mmmn4higxrspymbjfz5zq8f644zagm9"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-pyyaml" ,python-pyyaml)))
-- 
2.14.1

^ permalink raw reply related	[relevance 65%]

* [bug#28740] [PATCH 3/5] gnu: python-alembic: Update to 0.9.5.
    2017-10-08  4:35 65% ` [bug#28738] [PATCH 1/5] gnu: python-apispec: Update to 0.25.3 Cyril Roelandt
  2017-10-08  4:35 65% ` [bug#28737] [PATCH 2/5] gnu: python-arrow: Update to 0.10.0 Cyril Roelandt
@ 2017-10-08  4:35 65% ` Cyril Roelandt
  2017-10-08  4:35 65% ` [bug#28741] [PATCH 4/5] gnu: python-aniso8601: Update to 1.3.0 Cyril Roelandt
  2017-10-08  4:35 65% ` [bug#28742] [PATCH 5/5] gnu: Add python2-aniso8601 Cyril Roelandt
  4 siblings, 0 replies; 200+ results
From: Cyril Roelandt @ 2017-10-08  4:35 UTC (permalink / raw)
  To: 28740

* gnu/packages/python.scm (python-alembic, python2-alembic): Update to 0.9.5.
---
 gnu/packages/python.scm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 52999997b..d2c081236 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -4902,20 +4902,21 @@ You might also want to install the following optional dependencies:
 (define-public python-alembic
   (package
     (name "python-alembic")
-    (version "0.8.10")
+    (version "0.9.5")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "alembic" version))
        (sha256
         (base32
-         "06br9sfqypnjlal6fsbnky3zb0askwcn3diz8k3kwa0qcblm0fqf"))))
+         "01gx2syqbaxh4hr9pf7pxhlb6p36qaf99140dy19lsx1paxb9p4b"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-mock" ,python-mock)
        ("python-pytest-cov" ,python-pytest-cov)))
     (propagated-inputs
-     `(("python-sqlalchemy" ,python-sqlalchemy)
+     `(("python-dateutil" ,python-dateutil)
+       ("python-sqlalchemy" ,python-sqlalchemy)
        ("python-mako" ,python-mako)
        ("python-editor" ,python-editor)))
     (home-page "http://bitbucket.org/zzzeek/alembic")
-- 
2.14.1

^ permalink raw reply related	[relevance 65%]

* [bug#28741] [PATCH 4/5] gnu: python-aniso8601: Update to 1.3.0.
                     ` (2 preceding siblings ...)
  2017-10-08  4:35 65% ` [bug#28740] [PATCH 3/5] gnu: python-alembic: Update to 0.9.5 Cyril Roelandt
@ 2017-10-08  4:35 65% ` Cyril Roelandt
  2017-10-08  4:35 65% ` [bug#28742] [PATCH 5/5] gnu: Add python2-aniso8601 Cyril Roelandt
  4 siblings, 0 replies; 200+ results
From: Cyril Roelandt @ 2017-10-08  4:35 UTC (permalink / raw)
  To: 28741

* gnu/packages/python.scm (python-aniso8601, python2-aniso8601): Update to 1.3.0.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d2c081236..893d7ecf3 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -13427,14 +13427,14 @@ useful as a validator for JSON data.")
 (define-public python-aniso8601
   (package
     (name "python-aniso8601")
-    (version "1.1.0")
+    (version "1.3.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "aniso8601" version))
         (sha256
           (base32
-            "1k5mjg9iqbjfslb5prrsfz7dhlvi6s35p1jxq8dm87w1b7dn5i2g"))))
+            "1waj54iv3n3lw1fapbz8a93yjgrybgpc86wif5baxdh1arpj9df3"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-dateutil" ,python-dateutil)))
-- 
2.14.1

^ permalink raw reply related	[relevance 65%]

* [bug#28742] [PATCH 5/5] gnu: Add python2-aniso8601.
                     ` (3 preceding siblings ...)
  2017-10-08  4:35 65% ` [bug#28741] [PATCH 4/5] gnu: python-aniso8601: Update to 1.3.0 Cyril Roelandt
@ 2017-10-08  4:35 65% ` Cyril Roelandt
  4 siblings, 0 replies; 200+ results
From: Cyril Roelandt @ 2017-10-08  4:35 UTC (permalink / raw)
  To: 28742

* gnu/packages/python.scm (python2-aniso8601): New variable.
---
 gnu/packages/python.scm | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 893d7ecf3..875a394da 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -13446,6 +13446,9 @@ useful as a validator for JSON data.")
       "This package contains a library for parsing ISO 8601 datetime strings.")
     (license license:bsd-3)))
 
+(define-public python2-aniso8601
+  (package-with-python2 python-aniso8601))
+
 (define-public python-flask-restful
   (package
     (name "python-flask-restful")
-- 
2.14.1

^ permalink raw reply related	[relevance 65%]

* [bug#28748] [PATCH] gnu: Add python-guzzle-sphinx-theme.
@ 2017-10-08 15:14 65% Tobias Geerinckx-Rice
  0 siblings, 0 replies; 200+ results
From: Tobias Geerinckx-Rice @ 2017-10-08 15:14 UTC (permalink / raw)
  To: 28748

* gnu/packages/python.scm (python-guzzle-sphinx-theme)
(python2-guzzle-sphinx-theme): New variables.
---

Guix,

This adds a dependency of the new borg@1.1.0.

I've included a python2- variant out of habit.
Pipe up if this needless frippery offends you.

Kind regards,

T G-R

 gnu/packages/python.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index cc7aa8fa4..19d97107e 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -16478,3 +16478,27 @@ their files and supports any packaging format (including wheels).")
 
 (define-public python2-twine
   (package-with-python2 python-twine))
+
+(define-public python-guzzle-sphinx-theme
+  (package
+    (name "python-guzzle-sphinx-theme")
+    (version "0.7.11")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "guzzle_sphinx_theme" version))
+        (sha256
+          (base32
+            "1rnkzrrsbnifn3vsb4pfaia3nlvgvw6ndpxp7lzjrh23qcwid34v"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-sphinx" ,python-sphinx)))
+    (home-page "https://github.com/guzzle/guzzle_sphinx_theme")
+    (synopsis "''Guzzle'' Sphinx documentation theme")
+    (description
+     "guzzle_sphinx_theme is a theme for the Sphinx documentation system, used
+by @uref{http://docs.guzzlephp.org, Guzzle} and several other projects.")
+    (license license:expat)))
+
+(define-public python2-guzzle-sphinx-theme
+  (package-with-python2 python-guzzle-sphinx-theme))
-- 
2.13.1

^ permalink raw reply related	[relevance 65%]

* [bug#28726] [PATCH 4/6] gnu: python: Disable tests for python-graphene.
  @ 2017-10-08 16:03 65% ` Christopher Baines
  2017-10-08 16:03 65% ` [bug#28726] [PATCH 5/6] gnu: python: Update python-sqlparse Christopher Baines
  1 sibling, 0 replies; 200+ results
From: Christopher Baines @ 2017-10-08 16:03 UTC (permalink / raw)
  To: 28726

As the tests are missing from the PyPI release.

* gnu/packages/python.scm (python-graphene)[arguments]: Set #:tests? to #f.
---
 gnu/packages/python.scm | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index cc7aa8fa4..eb98f5f13 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -13112,6 +13112,9 @@ from Facebook.")
          (base32
           "09zhac7igh9ixdz0ay6csy35b40l1jwbf2wrbxmgxwfhy51iy06q"))))
     (build-system python-build-system)
+    (arguments
+     ;; Tests missing from PyPI release.
+     '(#:tests? #f))
     (native-inputs
      `(("python-django-filter" ,python-django-filter)
        ("python-mock" ,python-mock)
-- 
2.14.2

^ permalink raw reply related	[relevance 65%]

* [bug#28726] [PATCH 5/6] gnu: python: Update python-sqlparse.
    2017-10-08 16:03 65% ` [bug#28726] [PATCH 4/6] gnu: python: Disable tests for python-graphene Christopher Baines
@ 2017-10-08 16:03 65% ` Christopher Baines
  1 sibling, 0 replies; 200+ results
From: Christopher Baines @ 2017-10-08 16:03 UTC (permalink / raw)
  To: 28726

* gnu/packages/python.scm (python-sqlparse)[version]: 0.1.19 -> 0.2.4.
  [source]: Update the sha256 hash.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index eb98f5f13..8b2ed6612 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -11561,13 +11561,13 @@ multiple processes (imagine multiprocessing, billiard, futures, celery etc).
 (define-public python-sqlparse
   (package
     (name "python-sqlparse")
-    (version "0.1.19")
+    (version "0.2.4")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "sqlparse" version))
               (sha256
                (base32
-                "1s2fvaxgh9kqzrd6iwy5h7i61ckn05plx9np13zby93z3hdbx5nq"))))
+                "1v3xh0bkfhb262dbndgzhivpnhdwavdzz8jjhx9vx0xbrx2880nf"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
-- 
2.14.2

^ permalink raw reply related	[relevance 65%]

* [bug#28778] [PATCH 1/2] gnu: Add python2-neo4j-driver.
@ 2017-10-10 11:27 63% Roel Janssen
  2017-10-10 11:31 65% ` [bug#28778] [PATCH 2/2] gnu: Add python2-py2neo Roel Janssen
  0 siblings, 1 reply; 200+ results
From: Roel Janssen @ 2017-10-10 11:27 UTC (permalink / raw)
  To: 28778

[-- Attachment #1: Type: text/plain, Size: 403 bytes --]

Dear Guix,

I'd like to add some Neo4j drivers.  This patch provides the 'officially
supported' driver.  Building for Python 3 fails with this version.  The
latest 1.5.0rc1 does seem to build for both Python 2 and Python 3, so
I'd suggest we add the Python 3 variant once 1.5.0 is out.

The other patch is for python2-py2neo, which is another driver.

Thanks for your time!

Kind regards,
Roel Janssen


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-python2-neo4j-driver.patch --]
[-- Type: text/x-diff, Size: 1470 bytes --]

From d1198131221a2ab4b0e8e4318e9747e8b5786f32 Mon Sep 17 00:00:00 2001
From: Roel Janssen <roel@gnu.org>
Date: Tue, 10 Oct 2017 13:23:39 +0200
Subject: [PATCH 1/2] gnu: Add python2-neo4j-driver.

* gnu/packages/python.scm (python2-neo4j-driver): New variable.
---
 gnu/packages/python.scm | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index f5e92d889..4557637b1 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7591,6 +7591,26 @@ and MAC network addresses.")
 (define-public python2-netaddr
   (package-with-python2 python-netaddr))
 
+(define-public python2-neo4j-driver
+  (package
+    (name "python2-neo4j-driver")
+    (version "1.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "neo4j-driver" version))
+              (sha256
+               (base32
+                "011r1vh182p8mm83d8dz9rfnc3l7rf7fd00cyrbyfzi71jmc4g98"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (home-page "https://neo4j.com/developer/python/")
+    (synopsis "Neo4j driver code written in Python")
+    (description "This package provides the Neo4j Python driver that connects
+to the database using Neo4j's binary protocol.  It aims to be minimal, while
+being idiomatic to Python.")
+    (license license:asl2.0)))
+
 (define-public python-wrapt
   (package
     (name "python-wrapt")
-- 
2.13.3


^ permalink raw reply related	[relevance 63%]

* [bug#28778] [PATCH 2/2] gnu: Add python2-py2neo.
  2017-10-10 11:27 63% [bug#28778] [PATCH 1/2] gnu: Add python2-neo4j-driver Roel Janssen
@ 2017-10-10 11:31 65% ` Roel Janssen
  0 siblings, 0 replies; 200+ results
From: Roel Janssen @ 2017-10-10 11:31 UTC (permalink / raw)
  To: 28778


>From 368fcbed4eed12c3115e09e9b5002d27ca4816bd Mon Sep 17 00:00:00 2001
From: Roel Janssen <roel@gnu.org>
Date: Tue, 10 Oct 2017 13:24:09 +0200
Subject: [PATCH 2/2] gnu: Add python2-py2neo.

* gnu/packages/python.scm (python2-py2neo): New variable.
---
 gnu/packages/python.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 4557637b1..27f4653f5 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7611,6 +7611,27 @@ to the database using Neo4j's binary protocol.  It aims to be minimal, while
 being idiomatic to Python.")
     (license license:asl2.0)))
 
+(define-public python2-py2neo
+  (package
+    (name "python2-py2neo")
+    (version "3.1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "py2neo" version))
+              (sha256
+               (base32
+                "1f1q95vqcvlc3nsc33p841swnjdcjazddlq2dzi3qfnjqjrajxw1"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (home-page "http://py2neo.org")
+    (synopsis "Library and toolkit for working with Neo4j in Python")
+    (description "This package provides a client library and toolkit for
+working with Neo4j from within Python applications and from the command
+line.  The core library has no external dependencies and has been carefully
+designed to be easy and intuitive to use.")
+    (license license:asl2.0)))
+
 (define-public python-wrapt
   (package
     (name "python-wrapt")
-- 
2.13.3

^ permalink raw reply related	[relevance 65%]

* [bug#28782] [PATCH] gnu: Add python-jupyter-console as input to python-ipython.
@ 2017-10-11  9:06 63% Christopher Baines
  0 siblings, 0 replies; 200+ results
From: Christopher Baines @ 2017-10-11  9:06 UTC (permalink / raw)
  To: 28782

This fixes running ipython console and ipython3 console.

As python-ipython is an input to python-jupyter-console, depend on a modified
version of the package which doesn't have this input.

* gnu/packages/python.scm (python-ipython)[propagated-inputs]: Add a modified
  version of python-jupyter-console.
---
 gnu/packages/python.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 8521ab352..6921a8944 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -5851,6 +5851,31 @@ tools for mocking system commands and recording calls to those.")
        ("python-numpy" ,python-numpy)
        ("python-numpydoc" ,python-numpydoc)
        ("python-jinja2" ,python-jinja2)
+       ("python-jupyter-console"
+        ;; The python-ipython and python-jupyter-console require each
+        ;; other. To get the functionality in both packages working, strip
+        ;; down the python-jupyter-console package when using it as an input
+        ;; to python-ipython.
+        ,(package
+           (inherit python-jupyter-console)
+           (arguments
+            (substitute-keyword-arguments
+                (package-arguments python-jupyter-console)
+              ((#:phases phases)
+               `(modify-phases ,phases
+                  (add-after 'install 'delete-bin
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      ;; Delete the bin files, to avoid conflicts in profiles
+                      ;; where python-ipython and python-jupyter-console are
+                      ;; both present.
+                      (delete-file-recursively
+                       (string-append
+                        (assoc-ref outputs "out") "/bin"))))))))
+           ;; Remove the python-ipython propagated input, to avoid the cycle
+           (propagated-inputs
+            (remove (lambda (input)
+                      (string=? (car input) name))
+                    (package-propagated-inputs python-jupyter-console)))))
        ("python-mistune" ,python-mistune)
        ("python-pexpect" ,python-pexpect)
        ("python-pickleshare" ,python-pickleshare)
-- 
2.14.2

^ permalink raw reply related	[relevance 63%]

* [bug#28783] Some of the python-autobahn dependencies
@ 2017-10-11 10:42 60% ng0
  0 siblings, 0 replies; 200+ results
From: ng0 @ 2017-10-11 10:42 UTC (permalink / raw)
  To: 28783


[-- Attachment #1.1: Type: text/plain, Size: 1089 bytes --]

commit 78fba0316ae80b0699f82f626d56ffcc2798c39d
Author: ng0 <ng0@infotropique.org>
Date:   Wed Oct 11 10:38:46 2017 +0000

    gnu: Add python-pyqrcode.
    
    * gnu/packages/python.scm (python-pyqrcode): New variable.

commit db0232d9bbfabd630bc4a222cbe9c3721fb2d510
Author: ng0 <ng0@infotropique.org>
Date:   Wed Oct 11 10:28:28 2017 +0000

    gnu: Add python-pynacl.
    
    * gnu/packages/crypto.scm (python-pynacl): New variable.

commit fb3fc419ee89f773ac2aed5c3be4a272cf073ac5
Author: ng0 <ng0@infotropique.org>
Date:   Wed Oct 11 09:59:36 2017 +0000

    gnu: Add python-py-ubjson.
    
    * gnu/packages/web.scm (python-py-ubjson): New variable.

commit a53a68a175768c2dd7712582553a5f0d125574f9
Author: ng0 <ng0@infotropique.org>
Date:   Wed Oct 11 09:47:15 2017 +0000

    gnu: Add python-cbor.
    
    * gnu/packages/serialization.scm (python-cbor): New variable.



-- 
ng0
GnuPG: A88C8ADD129828D7EAC02E52E22F9BBFEE348588
GnuPG: https://dist.ng0.infotropique.org/dist/keys/
https://www.infotropique.org https://ng0.infotropique.org

[-- Attachment #1.2: 0001-gnu-Add-python-cbor.patch --]
[-- Type: text/plain, Size: 1897 bytes --]

From a53a68a175768c2dd7712582553a5f0d125574f9 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 11 Oct 2017 09:47:15 +0000
Subject: [PATCH 1/5] gnu: Add python-cbor.

* gnu/packages/serialization.scm (python-cbor): New variable.
---
 gnu/packages/serialization.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 186692612..266d2eeee 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2017 Corentin Bocquillon <corentin@nybble.fr>
 ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
 ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
+;;; Copyright © 2017 ng0 <ng0@infotropique.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -385,3 +386,26 @@ style and key ordering are kept, so you can diff the source.")
 
 (define-public python2-ruamel.yaml
   (package-with-python2 python-ruamel.yaml))
+
+(define-public python-cbor
+  (package
+    (name "python-cbor")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "cbor" version))
+       (sha256
+        (base32
+         "1dmv163cnslyqccrybkxn0c9s1jk1mmafmgxv75iamnz5lk5l8hk"))))
+    (build-system python-build-system)
+    (home-page
+     "https://bitbucket.org/bodhisnarkva/cbor")
+    (synopsis "Implementation of Concise Binary Object Representation")
+    (description
+     "Python-cbor provides an implementation of
+Concise Binary Object Representation (CBOR).  CBOR is comparable to
+JSON, has a superset of JSON’s ability, but serializes to a binary format
+which is smaller and faster to generate and parse.
+The two primary functions are cbor.loads() and cbor.dumps().")
+    (license license:asl2.0)))
-- 
2.14.2


[-- Attachment #1.3: 0002-gnu-Add-python-py-ubjson.patch --]
[-- Type: text/plain, Size: 1370 bytes --]

From fb3fc419ee89f773ac2aed5c3be4a272cf073ac5 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 11 Oct 2017 09:59:36 +0000
Subject: [PATCH 2/5] gnu: Add python-py-ubjson.

* gnu/packages/web.scm (python-py-ubjson): New variable.
---
 gnu/packages/web.scm | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index a612be013..6b47d9d8f 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -5366,3 +5366,22 @@ file links.")
 file upload, download, on-screen display, namespace operations (move/copy),
 collection creation and deletion, and locking operations.")
     (license l:gpl2)))
+
+(define-public python-py-ubjson
+  (package
+    (name "python-py-ubjson")
+    (version "0.10.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "py-ubjson" version))
+       (sha256
+        (base32
+         "03l9m9w5ip4hw0y69wlys5gzsfb7zcq3a77blj88grgiqhn5vm5n"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/Iotic-Labs/py-ubjson")
+    (synopsis "Universal Binary JSON encoder/decoder")
+    (description
+     "Py-ubjson is a Python module providing an Universal Binary JSON
+encoder/decoder based on the draft-12 specification for UBJSON.")
+    (license l:asl2.0)))
-- 
2.14.2


[-- Attachment #1.4: 0003-gnu-Add-python-pynacl.patch --]
[-- Type: text/plain, Size: 2736 bytes --]

From db0232d9bbfabd630bc4a222cbe9c3721fb2d510 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 11 Oct 2017 10:28:28 +0000
Subject: [PATCH 3/5] gnu: Add python-pynacl.

* gnu/packages/crypto.scm (python-pynacl): New variable.
---
 gnu/packages/crypto.scm | 39 ++++++++++++++++++++++++++++++++++++++-
 1 file changed, 38 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 0f017888b..8e3956a35 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
 ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2016, 2017 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -39,6 +39,7 @@
   #:use-module (gnu packages nettle)
   #:use-module (gnu packages password-utils)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages search)
   #:use-module (gnu packages serialization)
@@ -594,3 +595,39 @@ or millenia for an attacker to try them all.
 data on your platform, so the seed itself will be as random as possible.
 @end enumerate\n")
     (license license:artistic2.0)))
+
+(define-public python-pynacl
+  (package
+    (name "python-pynacl")
+    (version "1.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "PyNaCl" version))
+       (modules '((guix build utils)))
+       ;; Remove bundled libsodium
+       (snippet '(delete-file-recursively "src/libsodium"))
+       (sha256
+        (base32
+         "135gz0020fqx8fbr9izpwyq49aww202nkqacq0cw61xz99sjpx9j"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'use-system-sodium
+           (lambda _
+             (setenv "SODIUM_INSTALL" "system")
+             #t)))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (propagated-inputs
+     `(("python-cffi" ,python-cffi)
+       ("python-six" ,python-six)
+       ("libsodium" ,libsodium)))
+    (home-page "https://github.com/pyca/pynacl/")
+    (synopsis "Python bindings to libsodium")
+    (description
+     "PyNaCl is a Python binding to libsodium, which is a fork of the
+Networking and Cryptography library.  These libraries have a stated goal
+of improving usability, security and speed.")
+    (license license:asl2.0)))
-- 
2.14.2


[-- Attachment #1.5: 0004-gnu-Add-python-pyqrcode.patch --]
[-- Type: text/plain, Size: 1951 bytes --]

From 78fba0316ae80b0699f82f626d56ffcc2798c39d Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 11 Oct 2017 10:38:46 +0000
Subject: [PATCH 4/5] gnu: Add python-pyqrcode.

* gnu/packages/python.scm (python-pyqrcode): New variable.
---
 gnu/packages/python.scm | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index f5e92d889..7d8126b9c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -23,7 +23,7 @@
 ;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
-;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
+;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
@@ -6609,6 +6609,26 @@ providing a clean and modern domain specific specification language (DSL) in
 Python style, together with a fast and comfortable execution environment.")
     (license license:expat)))
 
+(define-public python-pyqrcode
+  (package
+    (name "python-pyqrcode")
+    (version "1.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "PyQRCode" version))
+       (sha256
+        (base32
+         "1m9ln8k9v7dfbh1i81225hx5mdsh8mpf9g7r4wpbfmiyfcs7dgzx"))))
+    (build-system python-build-system)
+    (home-page
+     "https://github.com/mnooner256/pyqrcode")
+    (synopsis "QR code generator")
+    (description
+     "Pyqrcode is a QR code generator written purely in Python with
+SVG, EPS, PNG and terminal output.")
+    (license license:bsd-3)))
+
 (define-public python-seaborn
   (package
     (name "python-seaborn")
-- 
2.14.2


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply related	[relevance 60%]

* [bug#28887] [PATCH 1/1] gnu: Add python-hy.
  @ 2017-10-18  7:04 65% ` Oleg Pykhalov
  0 siblings, 0 replies; 200+ results
From: Oleg Pykhalov @ 2017-10-18  7:04 UTC (permalink / raw)
  To: bug#28887

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: [PATCH 1/1] gnu: Add python-hy. --]
[-- Type: text/x-patch, Size: 1622 bytes --]

From cbf5108f155a5160d8947deefbd4bd4eb74e9357 Mon Sep 17 00:00:00 2001
From: Oleg Pykhalov <go.wigust@gmail.com>
Date: Wed, 18 Oct 2017 09:55:41 +0300
Subject: [PATCH 1/1] gnu: Add python-hy.

* gnu/packages/python.scm (python-hy): New variable.
---
 gnu/packages/python.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 46df5eaca..7995a30d0 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -16723,3 +16723,33 @@ interpreter when it prints a stack trace.")
 
 (define-public python2-traceback2
   (package-with-python2 python-traceback2))
+
+(define-public python-hy
+  (package
+    (name "python-hy")
+    (version "0.13.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "hy" version))
+       (sha256
+        (base32
+         "19sfymaksx9jhksfnb15ahid46mzrhdfzz6yy2craz2qnzvpmky8"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-clint" ,python-clint)
+       ("python-astor" ,python-astor)
+       ("python-rply" ,python-rply)))
+    (arguments
+     `(#:tests? #f ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'set-home
+           (lambda _ (setenv "HOME" (assoc-ref %outputs "out")) #t)))))
+    (home-page "https://github.com/hylang/hy")
+    (synopsis "Dialect of Lisp embedded in Python")
+    (description "@code{hy} provides a dialect of Lisp embedded in Python.")
+    (license license:bsd-3)))
+
+(define-public python2-hy
+  (package-with-python2 python-hy))
-- 
2.14.2

^ permalink raw reply related	[relevance 65%]

* [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2.
  @ 2017-10-18 23:36 65%           ` Cyril Roelandt
  0 siblings, 0 replies; 200+ results
From: Cyril Roelandt @ 2017-10-18 23:36 UTC (permalink / raw)
  To: 27888


[-- Attachment #1.1: Type: text/plain, Size: 1075 bytes --]

On 10/19/2017 12:30 AM, Marius Bakke wrote:
> I just pushed a rebased version of this branch to a new 'python-updates'
> branch on Savannah, with Python 3.6.3 and 2.7.14.  I also have an update
> for 'python-hypothesis' coming, probably this weekend.

Do you wish to push the python-hypothesis update to core-updates as
well? I have the following patch ready to be pushed:

--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -10150,9 +10150,9 @@ seamlessly into your existing Python unit
testing work flow.")
   (let ((hypothesis (package-with-python2
                      (strip-python2-variant python-hypothesis))))
     (package (inherit hypothesis)
-      (native-inputs
+      (propagated-inputs
        `(("python2-enum34" ,python2-enum34)
-         ,@(package-native-inputs hypothesis))))))
+         ,@(package-propagated-inputs hypothesis))))))

 (define-public python-pytest-subtesthack
   (package


I need this to be able to upgrade python-chardet. Do you mind if I push
this patch to master first?


Regards,
Cyril.


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 862 bytes --]

^ permalink raw reply	[relevance 65%]

* [bug#28594] nototools (required for building Noto from source)
  @ 2017-10-20 20:09 94%               ` ng0
  0 siblings, 0 replies; 200+ results
From: ng0 @ 2017-10-20 20:09 UTC (permalink / raw)
  To: Christopher Baines; +Cc: 28594


[-- Attachment #1.1: Type: text/plain, Size: 204 bytes --]

Updated patchseries appended.

-- 
ng0
GnuPG: A88C8ADD129828D7EAC02E52E22F9BBFEE348588
GnuPG: https://dist.ng0.infotropique.org/dist/keys/
https://www.infotropique.org https://ng0.infotropique.org

[-- Attachment #1.2: 0001-gnu-Add-python2-ufolib.patch --]
[-- Type: text/plain, Size: 1647 bytes --]

From f830472640712346a80982ab3027e2bd64e5cdff Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 11:39:29 +0000
Subject: [PATCH 1/6] gnu: Add python2-ufolib.

* gnu/packages/python.scm (python2-ufolib): New variable.
---
 gnu/packages/python.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 0684090c3..1de08f2cd 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7412,6 +7412,32 @@ from an XML-based format.")
 (define-public python2-fonttools
   (package-with-python2 python-fonttools))
 
+(define-public python2-ufolib
+  (package
+    (name "python2-ufolib")
+    (version "2.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ufoLib" version ".zip"))
+       (sha256
+        (base32 "1njin1465qqzshnrvcl5sbv0bsy15gj6fycbw4lmcnwkx5sldgyx"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (propagated-inputs
+     `(("python2-fonttools" ,python2-fonttools)))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("python2-pytest-3.0" ,python2-pytest-3.0)
+       ("python2-pytest-runner" ,python2-pytest-runner)))
+    (home-page "https://github.com/unified-font-object/ufoLib")
+    (synopsis "Low-level UFO reader and writer")
+    (description
+     "UfoLib reads and writes Unified Font Object (UFO)
+files.  UFO is a file format that stores fonts source files.")
+    (license license:bsd-3)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.2


[-- Attachment #1.3: 0002-gnu-Add-python2-setuptools-scm-git-archive.patch --]
[-- Type: text/plain, Size: 1677 bytes --]

From afc7f67ba0269d77989c2534d5c1627af716fda9 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 11:49:31 +0000
Subject: [PATCH 2/6] gnu: Add python2-setuptools-scm-git-archive.

* gnu/packages/python.scm (python2-setuptools-scm-git-archive): New variable.
---
 gnu/packages/python.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 1de08f2cd..dac308e1b 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7438,6 +7438,30 @@ from an XML-based format.")
 files.  UFO is a file format that stores fonts source files.")
     (license license:bsd-3)))
 
+(define-public python2-setuptools-scm-git-archive
+  (package
+    (name "python2-setuptools-scm-git-archive")
+    (version "1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "setuptools_scm_git_archive" version))
+       (sha256
+        (base32
+         "1nii1sz5jq75ilf18bjnr11l9rz1lvdmyk66bxl7q90qan85yhjj"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (propagated-inputs
+     `(("python2-setuptools-scm" ,python2-setuptools-scm)))
+    (home-page "https://github.com/Changaco/setuptools_scm_git_archive/")
+    (synopsis "Setuptools_scm plugin for git archives")
+    (description
+     "The setuptools_scm_git_archive package is a plugin to
+setuptools_scm, which supports obtaining versions from git archives that
+belong to tagged versions.")
+    (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.2


[-- Attachment #1.4: 0003-gnu-Add-python2-pyclipper.patch --]
[-- Type: text/plain, Size: 1625 bytes --]

From 564f921e767c21f1683f5d6a39a874779a2c4628 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 12:00:41 +0000
Subject: [PATCH 3/6] gnu: Add python2-pyclipper.

* gnu/packages/python.scm (python2-pyclipper): New variable.
---
 gnu/packages/python.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index dac308e1b..879f6953a 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7462,6 +7462,32 @@ setuptools_scm, which supports obtaining versions from git archives that
 belong to tagged versions.")
     (license license:expat)))
 
+(define-public python2-pyclipper
+(package
+  (name "python2-pyclipper")
+  (version "1.0.6")
+  (source
+   (origin
+     (method url-fetch)
+     (uri (pypi-uri "pyclipper" version ".zip"))
+     (sha256
+      (base32
+       "1zpmwv3bya3j984y5cf9x9d5108kf6mxldcba68wiq0frv5qrssw"))))
+  (build-system python-build-system)
+  (arguments
+   `(#:python ,python-2
+     #:tests? #f)); 8 Tests fail, 37 succeed
+  (propagated-inputs
+   `(("python2-setuptools-scm-git-archive" ,python2-setuptools-scm-git-archive)))
+  (native-inputs
+   `(("unzip" ,unzip)))
+  (home-page "https://github.com/greginvm/pyclipper")
+  (synopsis "Wrapper for Angus Johnson's Clipper library")
+  (description
+   "Pyclipper is a Cython wrapper for the C++ translation of the
+Angus Johnson's Clipper library (ver. 6.2.1)")
+  (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.2


[-- Attachment #1.5: 0004-gnu-Add-python2-booleanoperations.patch --]
[-- Type: text/plain, Size: 1780 bytes --]

From 0d7311347e24b76c9898b3da1a417021c51e40de Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Wed, 20 Sep 2017 18:07:47 +0000
Subject: [PATCH 4/6] gnu: Add python2-booleanoperations.

* gnu/packages/python.scm (python2-booleanoperations): New variable.
---
 gnu/packages/python.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 879f6953a..50ce4e116 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7488,6 +7488,35 @@ belong to tagged versions.")
 Angus Johnson's Clipper library (ver. 6.2.1)")
   (license license:expat)))
 
+(define-public python2-booleanoperations
+  (package
+    (name "python2-booleanoperations")
+    (version "0.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "booleanOperations" version ".zip"))
+       (sha256
+        (base32
+         "1hw42fazdpvsn77glx96hwsj9l17mvx37sc5707s08y5w6fx16mn"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("python2-pytest-3.0" ,python2-pytest-3.0)
+       ("python2-pytest-runner" ,python2-pytest-runner)))
+    (propagated-inputs
+     `(("python-fonttools" ,python2-fonttools)
+       ("python-pyclipper" ,python2-pyclipper)
+       ("python-ufolib" ,python2-ufolib)))
+    (home-page "https://github.com/typemytype/booleanOperations")
+    (synopsis "Boolean operations on paths")
+    (description
+     "BooleanOperations provides a python library that enables
+boolean operations on paths.")
+    (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.2


[-- Attachment #1.6: 0005-gnu-Add-python2-defcon.patch --]
[-- Type: text/plain, Size: 2128 bytes --]

From 4678eb87f6ee5b2bf6bd3c9dbe2c7114985cb653 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Mon, 25 Sep 2017 11:13:03 +0000
Subject: [PATCH 5/6] gnu: Add python2-defcon.

* gnu/packages/python.scm (python2-defcon): New variable.
---
 gnu/packages/python.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 50ce4e116..893240fdf 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7517,6 +7517,39 @@ Angus Johnson's Clipper library (ver. 6.2.1)")
 boolean operations on paths.")
     (license license:expat)))
 
+(define-public python2-defcon
+  (package
+    (name "python2-defcon")
+    (version "0.3.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "defcon" version ".zip"))
+       (sha256
+        (base32
+         "1f41w54fdjy9izxcwzqa142kd56whqsg9nq5k4508jb6iip84h89"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("python2-pytest-3.0" ,python2-pytest-3.0)
+       ("python2-pytest-runner" ,python2-pytest-runner)))
+    (propagated-inputs
+     `(("python2-fonttools" ,python2-fonttools)
+       ("python2-ufolib" ,python2-ufolib)))
+    (home-page "https://pypi.python.org/pypi/defcon")
+    (synopsis "Flexible objects for representing @acronym{UFO, unified font object} data")
+    (description
+     "Defcon is a set of @acronym{UFO, unified font object} based objects
+optimized for use in font editing applications.  The objects are built to
+be lightweight, fast and flexible.  The objects are very bare-bones and
+they are not meant to be end-all, be-all objects.  Rather, they are meant
+to provide base functionality so that you can focus on your application’s
+behavior, not object observing or maintaining cached data.  Defcon
+implements UFO3 as described by the UFO font format.")
+    (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.2


[-- Attachment #1.7: 0006-gnu-Add-nototools.patch --]
[-- Type: text/plain, Size: 3238 bytes --]

From f0e5236fb62fb79a5deef3c3179ea9393483b7a7 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Mon, 25 Sep 2017 12:12:55 +0000
Subject: [PATCH 6/6] gnu: Add nototools.

* gnu/packages/fontutils.scm (nototools): New variable.
---
 gnu/packages/fontutils.scm | 45 ++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 44 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 323cfab6f..a72fc005c 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2017 ng0 <ng0@infotropique.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,7 +45,8 @@
   #:use-module (guix svn-download)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python))
 
 (define-public freetype
   (package
@@ -556,3 +558,44 @@ opentype fonts.  You can save fonts in many different outline formats, and
 generate bitmaps.")
    (license license:gpl3+)
    (home-page "https://fontforge.github.io/en-US/")))
+
+(define-public nototools
+  (package
+    (name "nototools")
+    (version "20170925")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/googlei18n/nototools/"
+                           "archive/v2017-09-25-tooling-for-phase3-"
+                           "update.tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1pvacw18cm9l4sb66pqyjc7hc74xhhfxc7kd5ald8lixf4wzg0s8"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (propagated-inputs
+     `(("python2-booleanoperations" ,python2-booleanoperations)
+       ("python2-defcon" ,python2-defcon)
+       ("python2-fonttools" ,python2-fonttools)
+       ("python2-pillow" ,python2-pillow)
+       ("python2-pyclipper" ,python2-pyclipper)
+       ("python2-ufolib" ,python2-ufolib)))
+    (home-page "https://github.com/googlei18n/nototools")
+    (synopsis "Noto fonts support tools and scripts")
+    (description
+     "Nototools is a python package containing python scripts used to
+maintain the Noto Fonts project.")
+    (license (list license:asl2.0
+                   ;; Sample texts are attributed to UN and OHCHR.
+                   ;; The permissions on the UDHR are pretty lax:
+                   ;; http://www.ohchr.org/EN/UDHR/Pages/Introduction.aspx
+                   ;; "If UDHR translations or materials are reproduced, users
+                   ;; should make reference to this website as a source by
+                   ;; providing a link."
+                   license:public-domain
+                   (license:non-copyleft
+                    "file://sample_texts/attributions.txt"
+                    "See sample_texts/attributions.txt in the distribution.")))))
-- 
2.14.2


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply related	[relevance 94%]

* [bug#28934] ROCA detect
@ 2017-10-21 23:49 91% ng0
  2017-10-26  4:59 51% ` bug#28934: " Ludovic Courtès
  0 siblings, 1 reply; 200+ results
From: ng0 @ 2017-10-21 23:49 UTC (permalink / raw)
  To: 28934


[-- Attachment #1.1: Type: text/plain, Size: 222 bytes --]

Some python modules to add a tool to detect ROCA.
-- 
ng0
GnuPG: A88C8ADD129828D7EAC02E52E22F9BBFEE348588
GnuPG: https://dist.ng0.infotropique.org/dist/keys/
https://www.infotropique.org https://ng0.infotropique.org

[-- Attachment #1.2: 0001-gnu-Add-python-humanfriendly.patch --]
[-- Type: text/plain, Size: 1729 bytes --]

From 412e84ce5e2f03ab67c29d751667bfd7b53ef34a Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Sat, 21 Oct 2017 22:46:06 +0000
Subject: [PATCH 1/6] gnu: Add python-humanfriendly.

* gnu/packages/python.scm (python-humanfriendly): New variable.
---
 gnu/packages/python.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 0684090c3..b64bdeda6 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1099,6 +1099,33 @@ etc.).  The package is structured to make adding new modules easy.")
             "python"
             (package-inputs pycrypto)))))))
 
+(define-public python-humanfriendly
+  (package
+    (name "python-humanfriendly")
+    (version "4.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "humanfriendly" version))
+       (sha256
+        (base32
+         "0pisgizjql86785jchfjv217g0lsgk114g2lja5j4y3lsc3b9szi"))))
+    (build-system python-build-system)
+    (arguments
+     `(; Tests depend on coloredlogs, which in turn depends on humanfriendly.
+       #:tests? #f))
+    (propagated-inputs
+     `(("python-monotonic" ,python-monotonic)))
+    (home-page "https://humanfriendly.readthedocs.io")
+    (synopsis "Human friendly input and output in Python")
+    (description
+     "The functions and classes in the humanfriendly package can be used
+to make text interfaces more user friendly.")
+    (license license:expat)))
+
+(define-public python2-humanfriendly
+  (package-with-python2 python-humanfriendly))
+
 (define-public python-eventlet
   (package
     (name "python-eventlet")
-- 
2.14.2


[-- Attachment #1.3: 0002-gnu-Add-python-capturer.patch --]
[-- Type: text/plain, Size: 1760 bytes --]

From 81e9157501ffa3e4f47498fe802702b3bf66004c Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Sat, 21 Oct 2017 22:56:09 +0000
Subject: [PATCH 2/6] gnu: Add python-capturer.

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

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index b64bdeda6..d6af5c0d6 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1126,6 +1126,34 @@ to make text interfaces more user friendly.")
 (define-public python2-humanfriendly
   (package-with-python2 python-humanfriendly))
 
+(define-public python-capturer
+  (package
+    (name "python-capturer")
+    (version "2.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "capturer" version))
+       (sha256
+        (base32
+         "05d6ji4j8ipiq0br7bwam38qc6hd9l1djmfxlzrxx19ziyjl4089"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-humanfriendly" ,python-humanfriendly)))
+    (home-page "https://capturer.readthedocs.io")
+    (synopsis "Capture stdout and stderr streams of the current process")
+    (description
+     "The capturer package makes it easy to capture the stdout and stderr
+streams of the current process and subprocesses.  Output can be relayed
+to the terminal in real time but is also available to the Python program
+for additional processing.")
+    (license license:expat)))
+
+(define-public python2-capturer
+  (package-with-python2 python-capturer))
+
 (define-public python-eventlet
   (package
     (name "python-eventlet")
-- 
2.14.2


[-- Attachment #1.4: 0003-gnu-Add-python-verboselogs.patch --]
[-- Type: text/plain, Size: 1641 bytes --]

From 662d4fa2c40202cfeb2e1ce8918d23f3cc4469b2 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Sat, 21 Oct 2017 23:12:17 +0000
Subject: [PATCH 3/6] gnu: Add python-verboselogs.

* gnu/packages/python.scm (python-verboselogs): New variable.
---
 gnu/packages/python.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d6af5c0d6..388d47d6d 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1154,6 +1154,32 @@ for additional processing.")
 (define-public python2-capturer
   (package-with-python2 python-capturer))
 
+(define-public python-verboselogs
+  (package
+    (name "python-verboselogs")
+    (version "1.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "verboselogs" version))
+       (sha256
+        (base32
+         "09z4d1jiasn7k1hs5af2ckmnrd0i1d1m04bhfjhv7z6svzfdwgg3"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-astroid" ,python-astroid)
+       ("python-pylint" ,python-pylint)))
+    (home-page "https://verboselogs.readthedocs.io")
+    (synopsis "Verbose logging level for Python's logging module")
+    (description
+     "The verboselogs package extends Python's logging module to add the
+log levels NOTICE, SPAM, SUCCESS and VERBOSE.")
+    (license license:expat)))
+
+(define-public python2-verboselogs
+  (package-with-python2 python-verboselogs))
+
 (define-public python-eventlet
   (package
     (name "python-eventlet")
-- 
2.14.2


[-- Attachment #1.5: 0004-gnu-Add-python-coloredlogs.patch --]
[-- Type: text/plain, Size: 1821 bytes --]

From 36170f8801dbb33d91626447ff3e69bf1ac31dca Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Sat, 21 Oct 2017 23:29:17 +0000
Subject: [PATCH 4/6] gnu: Add python-coloredlogs.

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

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 388d47d6d..12b6f891f 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1180,6 +1180,35 @@ log levels NOTICE, SPAM, SUCCESS and VERBOSE.")
 (define-public python2-verboselogs
   (package-with-python2 python-verboselogs))
 
+(define-public python-coloredlogs
+  (package
+    (name "python-coloredlogs")
+    (version "7.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "coloredlogs" version))
+       (sha256
+        (base32
+         "1blcann6dyg5dhps9pg12rn0q0rjrlajpmmil0gy0j4cbvnl2il9"))))
+    (build-system python-build-system)
+    (arguments
+     `(;Tests require some updated modules
+       #:tests? #f))
+    (propagated-inputs
+     `(("python-capturer" ,python-capturer)))
+    (home-page "https://coloredlogs.readthedocs.io")
+    (synopsis "Colored stream handler for Python's logging module")
+    (description
+     "The coloredlogs package enables colored terminal output for Python's
+logging module.  The ColoredFormatter class inherits from
+logging.Formatter and uses ANSI escape sequences to render your logging
+messages in color.  It uses only standard colors.")
+    (license license:expat)))
+
+(define-public python2-coloredlogs
+  (package-with-python2 python-coloredlogs))
+
 (define-public python-eventlet
   (package
     (name "python-eventlet")
-- 
2.14.2


[-- Attachment #1.6: 0005-gnu-Add-python-pgpdump.patch --]
[-- Type: text/plain, Size: 1743 bytes --]

From 8ff7e30582a6d84b6c9bf56cd985ef9c04af9eaa Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Sat, 21 Oct 2017 23:41:26 +0000
Subject: [PATCH 5/6] gnu: Add python-pgpdump.

* gnu/packages/gnupg.scm (python-pgpdump): New variable.
---
 gnu/packages/gnupg.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index ffad57ef5..9a6ff68f8 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -850,3 +850,34 @@ them to transform your existing public key into a secret key.")
 @uref{https://gnupg.org, GnuPG}.  It can be used to encrypt, decrypt, and sign
 files, to verify signatures, and to manage the private and public keys.")
     (license license:gpl3+)))
+
+(define-public python-pgpdump
+  (package
+    (name "python-pgpdump")
+    (version "1.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pgpdump" version))
+       (sha256
+        (base32
+         "0s4nh8h7qsdj2yf29bspjs1zvxd4lcd11r6g11dp7fppgf2h0iqw"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/toofishes/python-pgpdump")
+    (synopsis "Python library for parsing PGP packets")
+    (description
+     "Python-pgpdump is based on the pgpdump
+(http://www.mew.org/~kazu/proj/pgpdump/).  Currently supported things
+include:
+
+@enumerate
+@item Signature packets
+@item Public key packets
+@item Secret key packets
+@item Trust, user ID, and user attribute packets
+@item ASCII-armor decoding and CRC check
+@end enumerate\n")
+    (license license:bsd-3)))
+
+(define-public python2-pgpdump
+  (package-with-python2 python-pgpdump))
-- 
2.14.2


[-- Attachment #1.7: 0006-gnu-Add-python-roca-detect.patch --]
[-- Type: text/plain, Size: 2398 bytes --]

From ed8ec89c1bd898aa927ddca9c453bc6e950e61a3 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@infotropique.org>
Date: Sat, 21 Oct 2017 23:45:51 +0000
Subject: [PATCH 6/6] gnu: Add python-roca-detect.

* gnu/packages/crypto.scm (python-roca-detect): New variable.
---
 gnu/packages/crypto.scm | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 549955d7b..bb0aa8063 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -632,3 +632,40 @@ data on your platform, so the seed itself will be as random as possible.
 Networking and Cryptography library.  These libraries have a stated goal
 of improving usability, security and speed.")
     (license license:asl2.0)))
+
+(define-public python-roca-detect
+  (package
+    (name "python-roca-detect")
+    (version "1.0.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "roca-detect" version))
+       (sha256
+        (base32
+         "1di4akyw2lf5r8zfwvyhkilz8jv8g4b66rgaqwfabmjwma6gnw27"))))
+    (build-system python-build-system)
+    (native-inputs
+     ;; TODO: apk_parse_ph4, pyjks
+     `(("python2-dateutil" ,python2-dateutil)
+       ("python2-six" ,python2-six)
+       ("python2-cryptography" ,python2-cryptography)
+       ("python2-future" ,python2-future)
+       ("python2-coloredlogs" ,python2-coloredlogs)
+       ("python2-pgpdump" ,python2-pgpdump)))
+    (arguments
+     `(; Basic testing routine is quite simple and works with Py3
+       ;; but the rest of the code that processes the different
+       ;; key formats and extracts the modulus for inspection is
+       ;; not yet fully py3 ready.
+       #:python ,python-2))
+    (home-page "https://github.com/crocs-muni/roca")
+    (synopsis "ROCA detection tool")
+    (description
+     "This tool is related to the \"Return of the Coppersmith’s Attack: Practical
+Factorization of Widely Used RSA Moduli.\" paper.  It enables you to test public
+RSA keys for a presence of the described vulnerability.  Currently the tool
+supports the following key formats: X509 Certificate (DER encoded, PEM encoded),
+RSA PEM (encoded private key, public key), SSH public key, ASC encoded PGP key,
+APK android application, LDIFF file, and more.")
+    (license license:gpl3)))
-- 
2.14.2


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply related	[relevance 91%]

* bug#28934: ROCA detect
  2017-10-21 23:49 91% [bug#28934] ROCA detect ng0
@ 2017-10-26  4:59 51% ` Ludovic Courtès
  0 siblings, 0 replies; 200+ results
From: Ludovic Courtès @ 2017-10-26  4:59 UTC (permalink / raw)
  To: ng0; +Cc: 28934-done

[-- Attachment #1: Type: text/plain, Size: 469 bytes --]

Hi ng0,

ng0 <ng0@infotropique.org> skribis:

> From 412e84ce5e2f03ab67c29d751667bfd7b53ef34a Mon Sep 17 00:00:00 2001
> From: ng0 <ng0@infotropique.org>
> Date: Sat, 21 Oct 2017 22:46:06 +0000
> Subject: [PATCH 1/6] gnu: Add python-humanfriendly.
>
> * gnu/packages/python.scm (python-humanfriendly): New variable.

Note: commit logs should also mention the “python2-” variables that are
added.  I amended them.

Committed with these adjustments:


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 1342 bytes --]

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index edb434fb3..6e01d2e2d 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1112,15 +1112,18 @@ etc.).  The package is structured to make adding new modules easy.")
          "0pisgizjql86785jchfjv217g0lsgk114g2lja5j4y3lsc3b9szi"))))
     (build-system python-build-system)
     (arguments
-     `(; Tests depend on coloredlogs, which in turn depends on humanfriendly.
+     `(;; XXX: Tests depend on coloredlogs, which in turn depends on humanfriendly.
        #:tests? #f))
     (propagated-inputs
      `(("python-monotonic" ,python-monotonic)))
     (home-page "https://humanfriendly.readthedocs.io")
-    (synopsis "Human friendly input and output in Python")
+    (synopsis "Human-friendly input and output in Python")
     (description
-     "The functions and classes in the humanfriendly package can be used
-to make text interfaces more user friendly.")
+     "The functions and classes in @code{humanfriendly} can be used to make
+text interfaces more user-friendly.  It includes tools to parse and format
+numbers, file sizes, and timespans, timers for long-running operations, menus
+to allow the user to choose from a list of options, and terminal interaction
+helpers.")
     (license license:expat)))
 
 (define-public python2-humanfriendly

[-- Attachment #3: Type: text/plain, Size: 1150 bytes --]


> From 81e9157501ffa3e4f47498fe802702b3bf66004c Mon Sep 17 00:00:00 2001
> From: ng0 <ng0@infotropique.org>
> Date: Sat, 21 Oct 2017 22:56:09 +0000
> Subject: [PATCH 2/6] gnu: Add python-capturer.
>
> * gnu/packages/python.scm (python-capturer): New variable.

[...]

> From 662d4fa2c40202cfeb2e1ce8918d23f3cc4469b2 Mon Sep 17 00:00:00 2001
> From: ng0 <ng0@infotropique.org>
> Date: Sat, 21 Oct 2017 23:12:17 +0000
> Subject: [PATCH 3/6] gnu: Add python-verboselogs.
>
> * gnu/packages/python.scm (python-verboselogs): New variable.

[...]

> From 36170f8801dbb33d91626447ff3e69bf1ac31dca Mon Sep 17 00:00:00 2001
> From: ng0 <ng0@infotropique.org>
> Date: Sat, 21 Oct 2017 23:29:17 +0000
> Subject: [PATCH 4/6] gnu: Add python-coloredlogs.
>
> * gnu/packages/python.scm (python-coloredlogs): New variable.

Applied with similar modifications to descriptions.

> From 8ff7e30582a6d84b6c9bf56cd985ef9c04af9eaa Mon Sep 17 00:00:00 2001
> From: ng0 <ng0@infotropique.org>
> Date: Sat, 21 Oct 2017 23:41:26 +0000
> Subject: [PATCH 5/6] gnu: Add python-pgpdump.
>
> * gnu/packages/gnupg.scm (python-pgpdump): New variable.

I made these modifications:


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: Type: text/x-patch, Size: 1757 bytes --]

diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 9a6ff68f8..fabeee232 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -851,9 +851,9 @@ them to transform your existing public key into a secret key.")
 files, to verify signatures, and to manage the private and public keys.")
     (license license:gpl3+)))
 
-(define-public python-pgpdump
+(define-public python2-pgpdump
   (package
-    (name "python-pgpdump")
+    (name "python2-pgpdump")
     (version "1.5")
     (source
      (origin
@@ -863,21 +863,21 @@ files, to verify signatures, and to manage the private and public keys.")
         (base32
          "0s4nh8h7qsdj2yf29bspjs1zvxd4lcd11r6g11dp7fppgf2h0iqw"))))
     (build-system python-build-system)
+
+    ;; Currently fails to build with Python 3.
+    (arguments `(#:python ,python-2))
+
     (home-page "https://github.com/toofishes/python-pgpdump")
     (synopsis "Python library for parsing PGP packets")
     (description
-     "Python-pgpdump is based on the pgpdump
-(http://www.mew.org/~kazu/proj/pgpdump/).  Currently supported things
-include:
-
-@enumerate
-@item Signature packets
-@item Public key packets
-@item Secret key packets
-@item Trust, user ID, and user attribute packets
-@item ASCII-armor decoding and CRC check
-@end enumerate\n")
+     "Python-pgpdump is an OpenPGP packet parser based on
+@uref{http://www.mew.org/~kazu/proj/pgpdump/, pgpdump}.  It notably supports:
+
+@itemize
+@item signature packets;
+@item public key packets;
+@item secret key packets;
+@item trust, user ID, and user attribute packets;
+@item ASCII-armor decoding and CRC check.
+@end itemize\n")
     (license license:bsd-3)))
-
-(define-public python2-pgpdump
-  (package-with-python2 python-pgpdump))

[-- Attachment #5: Type: text/plain, Size: 2029 bytes --]


This is because the Python 3.x variant fails to build:

--8<---------------cut here---------------start------------->8---
======================================================================
FAIL: test_parse_partial_length (pgpdump.test.EncryptedPacketsTestCase)
This file contains an encrypted message with a Partial Body Length header
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/guix-build-python-pgpdump-1.5.drv-0/pgpdump-1.5/pgpdump/test.py", line 435, in test_parse_partial_length
    rawdata = self.load_data('partial_length.gpg')
  File "/tmp/guix-build-python-pgpdump-1.5.drv-0/pgpdump-1.5/pgpdump/test.py", line 102, in load_data
    self.assertTrue(os.path.exists(full_path))
AssertionError: False is not true

======================================================================
FAIL: test_parse_partial_length (pgpdump.test.EncryptedPacketsTestCase)
This file contains an encrypted message with a Partial Body Length header
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/guix-build-python-pgpdump-1.5.drv-0/pgpdump-1.5/pgpdump/test.py", line 435, in test_parse_partial_length
    rawdata = self.load_data('partial_length.gpg')
  File "/tmp/guix-build-python-pgpdump-1.5.drv-0/pgpdump-1.5/pgpdump/test.py", line 102, in load_data
    self.assertTrue(os.path.exists(full_path))
AssertionError: False is not true

----------------------------------------------------------------------
Ran 58 tests in 0.546s

FAILED (failures=2)
--8<---------------cut here---------------end--------------->8---

> From ed8ec89c1bd898aa927ddca9c453bc6e950e61a3 Mon Sep 17 00:00:00 2001
> From: ng0 <ng0@infotropique.org>
> Date: Sat, 21 Oct 2017 23:45:51 +0000
> Subject: [PATCH 6/6] gnu: Add python-roca-detect.
>
> * gnu/packages/crypto.scm (python-roca-detect): New variable.

Applied with similar changes as above.

Thank you!

Ludo’.

^ permalink raw reply related	[relevance 51%]

* [bug#29136] [PATCH 2/5] gnu: Add python-dukpy, python2-dukpy.
  @ 2017-11-03 15:44 65% ` Brendan Tildesley
  0 siblings, 0 replies; 200+ results
From: Brendan Tildesley @ 2017-11-03 15:44 UTC (permalink / raw)
  To: 29136

gnu/packages/python.scm (python-dukpy, python2-dukpy): New variables.
---
 gnu/packages/python.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e8a733919..664adfd58 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -44,6 +44,7 @@
 ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com>
+;;; Copyright © 2017 Brendan Tildesley <brendan.tildesley@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -16871,3 +16872,26 @@ executed more than a given number of times during a given period.")
 
 (define-public python2-ratelimiter
   (package-with-python2 python-ratelimiter))
+
+(define-public python-dukpy
+  (package
+    (name "python-dukpy")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/kovidgoyal/dukpy/archive/v"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "0pj39rfwlzivqm5hkrsza7gssg6ggpxlq5ivc8f3h7x5pfgc6y6c"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/kovidgoyal/dukpy")
+    (synopsis "Run JavaScript in python")
+    (description
+     "dukpy is a JavaScript runtime environment for Python using the duktape
+embeddable JavaScript engine.")
+    (license license:expat)))
+
+(define-public python2-dukpy
+  (package-with-python2 python-dukpy))
-- 
2.14.3

^ permalink raw reply related	[relevance 65%]

* [bug#29144] [PATCH 1/3] gnu: Add pydot.
@ 2017-11-04 19:36 65% Gábor Boskovits
  0 siblings, 0 replies; 200+ results
From: Gábor Boskovits @ 2017-11-04 19:36 UTC (permalink / raw)
  To: 29144; +Cc: Gábor Boskovits

    * gnu/packages/python.scm (python-pydot): New variable.
---
 gnu/packages/python.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e8a733919..c16122438 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -44,6 +44,7 @@
 ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com>
+;;; Copyright @ 2017 Gábor Boskovits <boskovits@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -16871,3 +16872,26 @@ executed more than a given number of times during a given period.")
 
 (define-public python2-ratelimiter
   (package-with-python2 python-ratelimiter))
+
+(define-public python-pydot
+  (package
+    (name "python-pydot")
+    (version "1.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pydot" version))
+       (sha256
+        (base32
+         "00imlz0033dygb9gdag1xr0cybn33gk5jsdi9ffbszzr97rd7dgd"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-pyparsing",python-pyparsing)
+       ("python-chardet",python-chardet)))
+    (home-page "https://github.com/erocarrera/pydot")
+    (synopsis "Python interface to Graphviz's Dot language")
+    (description
+     "An interface to Graphviz that can parse and dump
+into the DOT language used by GraphViz, is written in pure Python,
+and networkx can convert its graphs to pydot.")
+    (license license:expat)))
-- 
2.14.2

^ permalink raw reply related	[relevance 65%]

* [bug#29145] [PATCH 2/3] gnu: python-decorator: Update to 4.1.2.
@ 2017-11-04 19:39 65% Gábor Boskovits
  0 siblings, 0 replies; 200+ results
From: Gábor Boskovits @ 2017-11-04 19:39 UTC (permalink / raw)
  To: 29145; +Cc: Gábor Boskovits

* gnu/packages/python.scm (python-decorator): Update to 4.1.2.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index c16122438..765777160 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -5356,13 +5356,13 @@ PNG, PostScript, PDF, and SVG file output.")
 (define-public python-decorator
   (package
     (name "python-decorator")
-    (version "4.0.10")
+    (version "4.1.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "decorator" version))
        (sha256
-        (base32 "0w7hg59hlpq74jpyja4yfryap0ccjvchgpkfp20rhj9krgnrhvlw"))))
+        (base32 "1d8npb11kxyi36mrvjdpcjij76l5zfyrz2f820brf0l0rcw4vdkw"))))
     (build-system python-build-system)
     (arguments '(#:tests? #f)) ; no test target
     (home-page "https://pypi.python.org/pypi/decorator/")
-- 
2.14.2

^ permalink raw reply related	[relevance 65%]

* [bug#29146] [PATCH] gnu: add python-networkx2.
@ 2017-11-04 20:45 72% Gábor Boskovits
    2017-11-06 11:15 74% ` [bug#29146] " Gábor Boskovits
  0 siblings, 2 replies; 200+ results
From: Gábor Boskovits @ 2017-11-04 20:45 UTC (permalink / raw)
  To: 29146; +Cc: Gábor Boskovits

* gnu/packages/python.scm (python-networkx2): New variable.
* gnu/local.mk (python-networkx2-reproducible-build.patch): New patch registered.
* gnu/package/patches/python-networkx2-reproducible-build.patch: New file.
---
 gnu/local.mk                                       |  1 +
 .../python-networkx2-reproducible-build.patch      | 29 ++++++++++++++++++
 gnu/packages/python.scm                            | 35 ++++++++++++++++++++++
 3 files changed, 65 insertions(+)
 create mode 100644 gnu/packages/patches/python-networkx2-reproducible-build.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 90dc7aec1..b23bfb116 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -990,6 +990,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-genshi-isstring-helper.patch	\
   %D%/packages/patches/python-genshi-stripping-of-unsafe-script-tags.patch	\
   %D%/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch \
+  %D%/packages/pathces/python-networkx2-reproducible-build.patch	\
   %D%/packages/patches/python-nose-timer-drop-ordereddict.patch \
   %D%/packages/patches/python-parse-too-many-fields.patch	\
   %D%/packages/patches/python2-rdflib-drop-sparqlwrapper.patch	\
diff --git a/gnu/packages/patches/python-networkx2-reproducible-build.patch b/gnu/packages/patches/python-networkx2-reproducible-build.patch
new file mode 100644
index 000000000..8274767ab
--- /dev/null
+++ b/gnu/packages/patches/python-networkx2-reproducible-build.patch
@@ -0,0 +1,29 @@
+From c065b972ed294769a41936d6b9feb336473af5d1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=A1bor=20Boskovits?= <boskovits@gmail.com>
+Date: Sat, 4 Nov 2017 15:28:47 +0100
+Subject: Fix SOURCE_DATE_EPOCH ignored bug (#2735)
+
+* Fix SOURCE_DATE_EPOCH ignored bug
+
+Fix a bug in networkx/release.py that makes build
+non-reproducible.
+---
+ networkx/release.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/networkx/release.py b/networkx/release.py
+index e81fc0c0..6322cf0d 100644
+--- a/networkx/release.py
++++ b/networkx/release.py
+@@ -135,7 +135,7 @@ def get_revision():
+ 
+ def get_info(dynamic=True):
+     # Date information
+-    date_info = datetime.datetime.now()
++    date_info = datetime.datetime.utcfromtimestamp(int(os.environ.get('SOURCE_DATE_EPOCH', time.time())))
+     date = time.asctime(date_info.timetuple())
+ 
+     revision, version, version_info, vcs_info = None, None, None, None
+-- 
+2.14.2
+
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e8a733919..a290deec9 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -16871,3 +16871,38 @@ executed more than a given number of times during a given period.")
 
 (define-public python2-ratelimiter
   (package-with-python2 python-ratelimiter))
+
+(define-public python-networkx2
+  (package (inherit python-networkx)
+    (name "python-networkx2")
+    (version "2.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+                 (url "https://github.com/networkx/networkx.git")
+                 (commit "networkx-2.0")))
+       (sha256
+        (base32
+         "0wsfmbsqzvpb0vdz09rf6rfrkvyq56r8863nn3g4x0m7swygi1w3"))
+       (patches
+               (search-patches "python-networkx2-reproducible-build.patch"))))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before
+          'reset-gzip-timestamps 'fix-permissions
+           (lambda _
+             (chmod (string-append (assoc-ref %outputs "out") "/lib/python3.5/site-packages/networkx/generators/atlas.dat.gz") #o666)
+             (chmod (string-append (assoc-ref %outputs "out") "/share/doc/networkx-2.0/examples/drawing/knuth_miles.txt.gz") #o666)
+             (chmod (string-append (assoc-ref %outputs "out") "/share/doc/networkx-2.0/examples/graph/roget_dat.txt.gz") #o666)
+             (chmod (string-append (assoc-ref %outputs "out") "/share/doc/networkx-2.0/examples/graph/words_dat.txt.gz") #o666)
+             #t))
+         (add-after
+          'reset-gzip-timestamps 'reset-permissions
+           (lambda _
+             (chmod (string-append (assoc-ref %outputs "out") "/lib/python3.5/site-packages/networkx/generators/atlas.dat.gz") #o444)
+             (chmod (string-append (assoc-ref %outputs "out") "/share/doc/networkx-2.0/examples/drawing/knuth_miles.txt.gz") #o444)
+             (chmod (string-append (assoc-ref %outputs "out") "/share/doc/networkx-2.0/examples/graph/roget_dat.txt.gz") #o444)
+             (chmod (string-append (assoc-ref %outputs "out") "/share/doc/networkx-2.0/examples/graph/words_dat.txt.gz") #o444)
+             #t)))))))
-- 
2.14.2

^ permalink raw reply related	[relevance 72%]

* [bug#29146] [PATCH] gnu: add python-networkx2.
  2017-11-04 20:45 72% [bug#29146] [PATCH] gnu: add python-networkx2 Gábor Boskovits
  @ 2017-11-06 11:15 74% ` Gábor Boskovits
  1 sibling, 0 replies; 200+ results
From: Gábor Boskovits @ 2017-11-06 11:15 UTC (permalink / raw)
  To: 29146; +Cc: Gábor Boskovits

* gnu/packages/python.scm (python-networkx2): New variable.
* gnu/local.mk (python-networkx2-reproducible-build.patch): New patch registered.
* gnu/package/patches/python-networkx2-reproducible-build.patch: New file.
---
 gnu/local.mk                                       |  1 +
 .../python-networkx2-reproducible-build.patch      | 29 ++++++++++++++++++++++
 gnu/packages/python.scm                            | 27 ++++++++++++++++++++
 3 files changed, 57 insertions(+)
 create mode 100644 gnu/packages/patches/python-networkx2-reproducible-build.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index dbfe6829e..85969a041 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -993,6 +993,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-genshi-isstring-helper.patch	\
   %D%/packages/patches/python-genshi-stripping-of-unsafe-script-tags.patch	\
   %D%/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch \
+  %D%/packages/pathces/python-networkx2-reproducible-build.patch	\
   %D%/packages/patches/python-nose-timer-drop-ordereddict.patch \
   %D%/packages/patches/python-parse-too-many-fields.patch	\
   %D%/packages/patches/python2-rdflib-drop-sparqlwrapper.patch	\
diff --git a/gnu/packages/patches/python-networkx2-reproducible-build.patch b/gnu/packages/patches/python-networkx2-reproducible-build.patch
new file mode 100644
index 000000000..8274767ab
--- /dev/null
+++ b/gnu/packages/patches/python-networkx2-reproducible-build.patch
@@ -0,0 +1,29 @@
+From c065b972ed294769a41936d6b9feb336473af5d1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=A1bor=20Boskovits?= <boskovits@gmail.com>
+Date: Sat, 4 Nov 2017 15:28:47 +0100
+Subject: Fix SOURCE_DATE_EPOCH ignored bug (#2735)
+
+* Fix SOURCE_DATE_EPOCH ignored bug
+
+Fix a bug in networkx/release.py that makes build
+non-reproducible.
+---
+ networkx/release.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/networkx/release.py b/networkx/release.py
+index e81fc0c0..6322cf0d 100644
+--- a/networkx/release.py
++++ b/networkx/release.py
+@@ -135,7 +135,7 @@ def get_revision():
+ 
+ def get_info(dynamic=True):
+     # Date information
+-    date_info = datetime.datetime.now()
++    date_info = datetime.datetime.utcfromtimestamp(int(os.environ.get('SOURCE_DATE_EPOCH', time.time())))
+     date = time.asctime(date_info.timetuple())
+ 
+     revision, version, version_info, vcs_info = None, None, None, None
+-- 
+2.14.2
+
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e506f6dfd..4965d9185 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -6624,6 +6624,33 @@ of the structure, dynamics, and functions of complex networks.")
 (define-public python2-networkx
   (package-with-python2 python-networkx))
 
+;define new package, because current version of python-colormath does not compile
+(define-public python-networkx2
+  (package (inherit python-networkx)
+    (name "python-networkx2")
+    (version "2.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+                 (url "https://github.com/networkx/networkx.git")
+       (commit "networkx-2.0")))
+       (sha256
+        (base32
+         "0wsfmbsqzvpb0vdz09rf6rfrkvyq56r8863nn3g4x0m7swygi1w3"))
+       (patches
+        (search-patches "python-networkx2-reproducible-build.patch"))))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'reset-gzip-timestamps 'fix-permissions
+           (lambda _
+             (chmod (string-append (assoc-ref %outputs "out") "/lib/python3.5/site-packages/networkx/generators/atlas.dat.gz") #o666)
+             (chmod (string-append (assoc-ref %outputs "out") "/share/doc/networkx-2.0/examples/drawing/knuth_miles.txt.gz") #o666)
+             (chmod (string-append (assoc-ref %outputs "out") "/share/doc/networkx-2.0/examples/graph/roget_dat.txt.gz") #o666)
+             (chmod (string-append (assoc-ref %outputs "out") "/share/doc/networkx-2.0/examples/graph/words_dat.txt.gz") #o666)
+             #t)))))))
+
 (define-public snakemake
   (package
     (name "snakemake")
-- 
2.14.2

^ permalink raw reply related	[relevance 74%]

* [bug#29169] Update electrum to 3.0
@ 2017-11-06 11:49 73% Carlo Zancanaro
  2017-11-06 11:56 81% ` [bug#29169] Updated patch for python-jsonrpclib-pelix Carlo Zancanaro
  0 siblings, 1 reply; 200+ results
From: Carlo Zancanaro @ 2017-11-06 11:49 UTC (permalink / raw)
  To: 29169


[-- Attachment #1.1: Type: text/plain, Size: 86 bytes --]

Electrum recently updated to version 3.0. This included a move to
python3 and pyqt5.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-gnu-Add-python-jsonrpclib-pelix.patch --]
[-- Type: text/x-diff, Size: 1860 bytes --]

From 9ad15d684ece91b2bd869e2b568f47d42d4e4c48 Mon Sep 17 00:00:00 2001
From: Carlo Zancanaro <carlo@zancanaro.id.au>
Date: Mon, 6 Nov 2017 22:39:11 +1100
Subject: [PATCH 1/2] gnu: Add python-jsonrpclib-pelix.

* gnu/packages/python.scm (python-jsonrpclib-pelix, python2-jsonrpclib-pelix):
New variables.
---
 gnu/packages/python.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e8a733919..8a6a8e278 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -16871,3 +16871,32 @@ executed more than a given number of times during a given period.")
 
 (define-public python2-ratelimiter
   (package-with-python2 python-ratelimiter))
+
+(define-public python-jsonrpclib-pelix
+  (package
+    (name "python-jsonrpclib-pelix")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "jsonrpclib-pelix" version))
+       (sha256
+        (base32
+         "1qs95vxplxwspbrqy8bvc195s58iy43qkf75yrjfql2sim8b25sl"))))
+    (build-system python-build-system)
+    (home-page
+     "http://github.com/tcalmant/jsonrpclib/")
+    (synopsis
+     "This project is an implementation of the JSON-RPC v2.0
+specification (backwards-compatible) as a client library, for Python 2.7 and
+Python 3.This version is a fork of jsonrpclib by Josh Marshall, usable with
+Pelix remote services.")
+    (description
+     "This project is an implementation of the JSON-RPC v2.0
+specification (backwards-compatible) as a client library, for Python 2.7 and
+Python 3.This version is a fork of jsonrpclib by Josh Marshall, usable with
+Pelix remote services.")
+    (license #f)))
+
+(define-public python2-jsonrpclib-pelix
+  (package-with-python2 python-jsonrpclib-pelix))
-- 
2.14.3


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.3: 0002-gnu-electrum-Update-to-3.0.patch --]
[-- Type: text/x-diff, Size: 2451 bytes --]

From ff32be8c9ef2f2afab933cf562c47f9f21e0eda6 Mon Sep 17 00:00:00 2001
From: Carlo Zancanaro <carlo@zancanaro.id.au>
Date: Mon, 6 Nov 2017 22:40:28 +1100
Subject: [PATCH 2/2] gnu: electrum: Update to 3.0.

gnu/packages/finance.scm (electrum): Update to 3.0.
[inputs]: Change to python3 inputs.
[arguments]: Remove python-2. Disable tests.
---
 gnu/packages/finance.scm | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 50c9dd787..8b9a911d8 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -265,7 +265,7 @@ do so.")
 (define-public electrum
   (package
     (name "electrum")
-    (version "2.9.3")
+    (version "3.0")
     (source
      (origin
        (method url-fetch)
@@ -274,7 +274,7 @@ do so.")
                            version ".tar.gz"))
        (sha256
         (base32
-         "0d0fzb653g7b8ka3x90nl21md4g3n1fv11czdxpdq3s9yr6js6f2"))
+         "184cmpfqcznnm0wfjiarb6dps2vs0s2aykmy2ji7p77x20fbisfi"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -283,19 +283,19 @@ do so.")
            #t))))
     (build-system python-build-system)
     (inputs
-     `(("python-pyaes" ,python2-pyaes)
-       ("python-pysocks" ,python2-pysocks)
-       ("python-sip" ,python2-sip)
-       ("python-pyqt" ,python2-pyqt-4)
-       ("python-ecdsa" ,python2-ecdsa)
-       ("python-pbkdf2" ,python2-pbkdf2)
-       ("python-requests" ,python2-requests)
-       ("python-qrcode" ,python2-qrcode)
-       ("python-protobuf" ,python2-protobuf)
-       ("python-dnspython" ,python2-dnspython)
-       ("python-jsonrpclib" ,python2-jsonrpclib)))
+     `(("python-pyaes" ,python-pyaes)
+       ("python-pysocks" ,python-pysocks)
+       ("python-sip" ,python-sip)
+       ("python-pyqt" ,python-pyqt)
+       ("python-ecdsa" ,python-ecdsa)
+       ("python-pbkdf2" ,python-pbkdf2)
+       ("python-requests" ,python-requests)
+       ("python-qrcode" ,python-qrcode)
+       ("python-protobuf" ,python-protobuf)
+       ("python-dnspython" ,python-dnspython)
+       ("python-jsonrpclib-pelix" ,python-jsonrpclib-pelix)))
     (arguments
-     `(#:python ,python-2
+     `(#:tests? #f ;; package doesn't have any tests
        #:phases
        (modify-phases %standard-phases
          (add-before 'build 'patch-home
-- 
2.14.3


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply related	[relevance 73%]

* [bug#29169] Updated patch for python-jsonrpclib-pelix
  2017-11-06 11:49 73% [bug#29169] Update electrum to 3.0 Carlo Zancanaro
@ 2017-11-06 11:56 81% ` Carlo Zancanaro
  2017-11-06 22:36 64%   ` Ludovic Courtès
  0 siblings, 1 reply; 200+ results
From: Carlo Zancanaro @ 2017-11-06 11:56 UTC (permalink / raw)
  To: 29169


[-- Attachment #1.1: Type: text/plain, Size: 173 bytes --]

Whoops! I forgot to update my master branch before sending those patches
out. The python-jsonrpclib-pelix patch might not apply cleanly. Here's
an updated one that should.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-gnu-Add-python-jsonrpclib-pelix.patch --]
[-- Type: text/x-diff, Size: 1812 bytes --]

From 38646c4dbcf5c7dfe85e7685acfeab72da6a69db Mon Sep 17 00:00:00 2001
From: Carlo Zancanaro <carlo@zancanaro.id.au>
Date: Mon, 6 Nov 2017 22:39:11 +1100
Subject: [PATCH 1/2] gnu: Add python-jsonrpclib-pelix.

* gnu/packages/python.scm (python-jsonrpclib-pelix, python2-jsonrpclib-pelix):
New variables.
---
 gnu/packages/python.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e506f6dfd..090069ab2 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -16897,3 +16897,32 @@ embeddable JavaScript engine.")
 
 (define-public python2-dukpy
   (package-with-python2 python-dukpy))
+
+(define-public python-jsonrpclib-pelix
+  (package
+    (name "python-jsonrpclib-pelix")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "jsonrpclib-pelix" version))
+       (sha256
+        (base32
+         "1qs95vxplxwspbrqy8bvc195s58iy43qkf75yrjfql2sim8b25sl"))))
+    (build-system python-build-system)
+    (home-page
+     "http://github.com/tcalmant/jsonrpclib/")
+    (synopsis
+     "This project is an implementation of the JSON-RPC v2.0
+specification (backwards-compatible) as a client library, for Python 2.7 and
+Python 3.This version is a fork of jsonrpclib by Josh Marshall, usable with
+Pelix remote services.")
+    (description
+     "This project is an implementation of the JSON-RPC v2.0
+specification (backwards-compatible) as a client library, for Python 2.7 and
+Python 3.This version is a fork of jsonrpclib by Josh Marshall, usable with
+Pelix remote services.")
+    (license #f)))
+
+(define-public python2-jsonrpclib-pelix
+  (package-with-python2 python-jsonrpclib-pelix))
-- 
2.14.3


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply related	[relevance 81%]

* [bug#29169] Updated patch for python-jsonrpclib-pelix
  2017-11-06 11:56 81% ` [bug#29169] Updated patch for python-jsonrpclib-pelix Carlo Zancanaro
@ 2017-11-06 22:36 64%   ` Ludovic Courtès
  0 siblings, 0 replies; 200+ results
From: Ludovic Courtès @ 2017-11-06 22:36 UTC (permalink / raw)
  To: Carlo Zancanaro; +Cc: 29169

[-- Attachment #1: Type: text/plain, Size: 505 bytes --]

Hi Carlo,

Carlo Zancanaro <carlo@zancanaro.id.au> skribis:

> From 38646c4dbcf5c7dfe85e7685acfeab72da6a69db Mon Sep 17 00:00:00 2001
> From: Carlo Zancanaro <carlo@zancanaro.id.au>
> Date: Mon, 6 Nov 2017 22:39:11 +1100
> Subject: [PATCH 1/2] gnu: Add python-jsonrpclib-pelix.
>
> * gnu/packages/python.scm (python-jsonrpclib-pelix, python2-jsonrpclib-pelix):
> New variables.

Applied with the changes below.  Please make sure to run ‘guix lint’
next time.  :-)

Thanks,
Ludo’.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 1418 bytes --]

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 090069ab2..5b11a6371 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -16910,19 +16910,14 @@ embeddable JavaScript engine.")
         (base32
          "1qs95vxplxwspbrqy8bvc195s58iy43qkf75yrjfql2sim8b25sl"))))
     (build-system python-build-system)
-    (home-page
-     "http://github.com/tcalmant/jsonrpclib/")
-    (synopsis
-     "This project is an implementation of the JSON-RPC v2.0
-specification (backwards-compatible) as a client library, for Python 2.7 and
-Python 3.This version is a fork of jsonrpclib by Josh Marshall, usable with
-Pelix remote services.")
-    (description
-     "This project is an implementation of the JSON-RPC v2.0
-specification (backwards-compatible) as a client library, for Python 2.7 and
-Python 3.This version is a fork of jsonrpclib by Josh Marshall, usable with
-Pelix remote services.")
-    (license #f)))
+    (home-page "https://github.com/tcalmant/jsonrpclib/")
+    (synopsis "JSON-RPC 2.0 client library for Python")
+    (description
+     "This library implements the JSON-RPC v2.0
+specification (backwards-compatible) as a client library for Python.  This
+version is a fork of jsonrpclib by Josh Marshall, usable with Pelix remote
+services.")
+    (license license:asl2.0)))
 
 (define-public python2-jsonrpclib-pelix
   (package-with-python2 python-jsonrpclib-pelix))

^ permalink raw reply related	[relevance 64%]

* bug#29146: [PATCH] gnu: add python-networkx2.
  @ 2017-11-07 20:23 76%     ` Marius Bakke
  0 siblings, 0 replies; 200+ results
From: Marius Bakke @ 2017-11-07 20:23 UTC (permalink / raw)
  To: Gábor Boskovits, 29146-done


[-- Attachment #1.1: Type: text/plain, Size: 1047 bytes --]

Gábor Boskovits <boskovits@gmail.com> writes:

> Regarding the PyPi tarball I was trying like:
>
> (method url-fetch)
>        (uri (pypi-uri "networkx" version))
>
> with version "2.0"
>
> and got:
> Starting download of
> /gnu/store/7m7r6dj9vc4mz53a4p296nan1nf8h2d2-networkx-2.0.tar.gz
> From https://pypi.io/packages/source/n/networkx/networkx-2.0.tar.gz...
> following redirection to `
> https://pypi.org/packages/source/n/networkx/networkx-2.0.tar.gz'...
> following redirection to `
> https://files.pythonhosted.org/packages/source/n/networkx/networkx-2.0.tar.gz'.
> ..
> ERROR: download failed "
> https://files.pythonhosted.org/packages/source/n/networkx/networkx-2.0.tar.gz"
> 404 "Not Found"

This is because the PyPi archive is only available as a "zipball".
"pypi-uri" takes an optional argument for specifying file extension.

I went ahead and changed the source URI and added a Python2 variant --
not using git-fetch allowed us to also remove the 'reset-permissions'
phase.  Changes below.  Thank you!


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: networkx2.diff --]
[-- Type: text/x-patch, Size: 2816 bytes --]

diff --git a/gnu/local.mk b/gnu/local.mk
index 66df81d95..9b01b05b6 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -996,7 +996,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-genshi-isstring-helper.patch	\
   %D%/packages/patches/python-genshi-stripping-of-unsafe-script-tags.patch	\
   %D%/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch \
-  %D%/packages/pathces/python-networkx2-reproducible-build.patch	\
+  %D%/packages/patches/python-networkx2-reproducible-build.patch	\
   %D%/packages/patches/python-nose-timer-drop-ordereddict.patch \
   %D%/packages/patches/python-parse-too-many-fields.patch	\
   %D%/packages/patches/python2-rdflib-drop-sparqlwrapper.patch	\
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index be942c13a..370c9ef11 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -6624,32 +6624,24 @@ of the structure, dynamics, and functions of complex networks.")
 (define-public python2-networkx
   (package-with-python2 python-networkx))
 
-;define new package, because current version of python-colormath does not compile
+;; Define new package, because the current version of python-colormath does
+;; not build against 2.0.
 (define-public python-networkx2
   (package (inherit python-networkx)
     (name "python-networkx2")
     (version "2.0")
     (source
      (origin
-       (method git-fetch)
-       (uri (git-reference
-                 (url "https://github.com/networkx/networkx.git")
-       (commit "networkx-2.0")))
+       (method url-fetch)
+       (uri (pypi-uri "networkx" version ".zip"))
        (sha256
         (base32
-         "0wsfmbsqzvpb0vdz09rf6rfrkvyq56r8863nn3g4x0m7swygi1w3"))
+         "1ajl2jp8qry9nyjzzkqpy0vmsr14d23z1qk7y0vr5iwjbpvzhpyd"))
        (patches
-        (search-patches "python-networkx2-reproducible-build.patch"))))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'reset-gzip-timestamps 'fix-permissions
-           (lambda _
-             (chmod (string-append (assoc-ref %outputs "out") "/lib/python3.5/site-packages/networkx/generators/atlas.dat.gz") #o666)
-             (chmod (string-append (assoc-ref %outputs "out") "/share/doc/networkx-2.0/examples/drawing/knuth_miles.txt.gz") #o666)
-             (chmod (string-append (assoc-ref %outputs "out") "/share/doc/networkx-2.0/examples/graph/roget_dat.txt.gz") #o666)
-             (chmod (string-append (assoc-ref %outputs "out") "/share/doc/networkx-2.0/examples/graph/words_dat.txt.gz") #o666)
-             #t)))))))
+        (search-patches "python-networkx2-reproducible-build.patch"))))))
+
+(define-public python2-networkx2
+  (package-with-python2 python-networkx2))
 
 (define-public snakemake
   (package

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply related	[relevance 76%]

* [bug#29242] [PATCH] gnu: python-sympy: Update to 1.1.1.
@ 2017-11-10 12:03 81% Alex Vong
  0 siblings, 0 replies; 200+ results
From: Alex Vong @ 2017-11-10 12:03 UTC (permalink / raw)
  To: 29242


[-- Attachment #1.1: Type: text/plain, Size: 228 bytes --]

Hello,

This updates sympy to its latest version. I build both python-sympy and
python2-sympy on my laptop, both finish tests without error (my laptop
is slow, it takes serveral hours). Should I say have fun solving
equations?


[-- Attachment #1.2: 0001-gnu-python-sympy-Update-to-1.1.1.patch --]
[-- Type: text/x-diff, Size: 1793 bytes --]

From 085a61b91d88234417590c527a56a2a5be57587b Mon Sep 17 00:00:00 2001
From: Alex Vong <alexvong1995@gmail.com>
Date: Wed, 8 Nov 2017 22:49:53 +0800
Subject: [PATCH] gnu: python-sympy: Update to 1.1.1.

* gnu/packages/python.scm (python-sympy, python2-sympy): Update to 1.1.1.
---
 gnu/packages/python.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 7a0790675..7f46b6f05 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -29,7 +29,7 @@
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2016, 2017 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
-;;; Copyright © 2016 Alex Vong <alexvong1995@gmail.com>
+;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016, 2017 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -6771,7 +6771,7 @@ more advanced mathematics.")
 (define-public python-sympy
   (package
     (name "python-sympy")
-    (version "1.0")
+    (version "1.1.1")
     (source
      (origin
        (method url-fetch)
@@ -6779,7 +6779,7 @@ more advanced mathematics.")
              "https://github.com/sympy/sympy/releases/download/sympy-"
              version "/sympy-" version ".tar.gz"))
        (sha256
-        (base32 "1bpzjwr9hrr7w88v4vgnj9lr6vxcldc94si13n8xpr1rv08d5b1y"))))
+        (base32 "190n29sppw7g8ihilc5451y7jlfcaw56crqiqbf1jff43dlmfnxc"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-mpmath" ,python-mpmath)))
-- 
2.15.0


[-- Attachment #1.3: Type: text/plain, Size: 14 bytes --]


Cheers,
Alex

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

^ permalink raw reply related	[relevance 81%]

* [bug#29243] [PATCH] gnu: python2-rpython: Update to 0.2.1.
@ 2017-11-10 12:23 83% Alex Vong
  0 siblings, 0 replies; 200+ results
From: Alex Vong @ 2017-11-10 12:23 UTC (permalink / raw)
  To: 29243


[-- Attachment #1.1: Type: text/plain, Size: 36 bytes --]

Hi,

This updates python2-rpython.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-gnu-python2-rpython-Update-to-0.2.1.patch --]
[-- Type: text/x-diff, Size: 1131 bytes --]

From 13cacf3558fbd434d8c41983ea93a5b8c55f1ddd Mon Sep 17 00:00:00 2001
From: Alex Vong <alexvong1995@gmail.com>
Date: Fri, 10 Nov 2017 20:17:49 +0800
Subject: [PATCH] gnu: python2-rpython: Update to 0.2.1.

* gnu/packages/python.scm (python2-rpython): Update to 0.2.1.
---
 gnu/packages/python.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 7f46b6f05..0ed9b082a 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3838,14 +3838,14 @@ writing C extensions for Python as easy as Python itself.")
 (define-public python2-rpython
   (package
     (name "python2-rpython")
-    (version "0.1.4")
+    (version "0.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "rpython" version))
        (sha256
         (base32
-         "07pps06fq4c4wmi5ii0sgh9zgwniz5y7frqhm28g3a154l163fxc"))))
+         "02z9cvxf0y41dcvwnvf2zn0albhhw1drvjjbq27m6i1piw1k6fc0"))))
     (build-system python-build-system)
     (arguments `(#:python ,python-2))
     (native-inputs
-- 
2.15.0


[-- Attachment #1.3: Type: text/plain, Size: 14 bytes --]


Cheers,
Alex

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

^ permalink raw reply related	[relevance 83%]

* [bug#29392] [PATCH 01/11] gnu: scons: Update to 3.0.1.
  @ 2017-11-22  9:34 65% ` Arun Isaac
  0 siblings, 0 replies; 200+ results
From: Arun Isaac @ 2017-11-22  9:34 UTC (permalink / raw)
  To: 29392

* gnu/packages/python.scm (scons): Update to 3.0.1.
(scons-python2): New variable.
---
 gnu/packages/python.scm | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d46119718..34002245f 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1371,19 +1371,17 @@ existing ones.")
 (define-public scons
   (package
     (name "scons")
-    (version "2.5.1")
+    (version "3.0.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://sourceforge/scons/scons/" version
                                  "/scons-" version ".tar.gz"))
              (sha256
               (base32
-               "1wji1z9jdkhnmm99apx6fhld9cs52rr56aigniyrcsmlwy52298b"))))
+               "0wzid419mlwqw9llrg8gsx4nkzhqy16m4m40r0xnh6cwscw5wir4"))))
     (build-system python-build-system)
     (arguments
-     ;; With Python 3.x, fails to build with a syntax error.
-     `(#:python ,python-2
-       #:use-setuptools? #f                ; still relies on distutils
+     `(#:use-setuptools? #f                ; still relies on distutils
        #:tests? #f))                       ; no 'python setup.py test' command
     (home-page "http://scons.org/")
     (synopsis "Software construction tool written in Python")
@@ -1395,6 +1393,11 @@ In short, SCons is an easier, more reliable and faster way to build
 software.")
     (license license:x11)))
 
+(define-public scons-python2
+  (package
+    (inherit (package-with-python2 scons))
+    (name "scons-python2")))
+
 (define-public python-extras
   (package
     (name "python-extras")
-- 
2.15.0

^ permalink raw reply related	[relevance 65%]

* [bug#29408] [PATCH] gnu: python-pyopenssl: Update to 17.4.0.
@ 2017-11-23  8:15 65% Rutger Helling
  0 siblings, 0 replies; 200+ results
From: Rutger Helling @ 2017-11-23  8:15 UTC (permalink / raw)
  To: 29408


[-- Attachment #1.1: Type: text/plain, Size: 38 bytes --]

Here's an update for python-pyopenssl.

[-- Attachment #1.2: Type: text/html, Size: 225 bytes --]

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-python-pyopenssl-Update-to-17.4.0.patch --]
[-- Type: text/x-diff; name=0001-gnu-python-pyopenssl-Update-to-17.4.0.patch, Size: 1440 bytes --]

From 481bf7bb96b9574c40ffe2f60942f5b4f86d71b7 Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@mykolab.com>
Date: Thu, 23 Nov 2017 08:41:02 +0100
Subject: [PATCH] gnu: python-pyopenssl: Update to 17.4.0.

* gnu/packages/python-crypto.scm (python-pyopenssl): Update to 17.4.0.
---
 gnu/packages/python-crypto.scm | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 77409d86d..c3d9da985 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
 ;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
+;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -352,14 +353,14 @@ message digests and key derivation functions.")
 (define-public python-pyopenssl
   (package
     (name "python-pyopenssl")
-    (version "17.3.0")
+    (version "17.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pyOpenSSL" version))
        (sha256
         (base32
-         "0xkc1wfnpg6abzllivg3ylhc63npjdy1v81f4kc08bm8cj80nqr9"))))
+         "1aznkk77fvl8hc2xl83d6nf8xk1my3b6s394arn4dgv8syivd5id"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
-- 
2.15.0


^ permalink raw reply related	[relevance 65%]

* [bug#29415] [PATCH] gnu: python-axolotl: Update to 0.1.39 and fix build.
@ 2017-11-23 20:04 79% Adam Van Ymeren
  0 siblings, 0 replies; 200+ results
From: Adam Van Ymeren @ 2017-11-23 20:04 UTC (permalink / raw)
  To: 29415

Patch taken from the debian package for python-axolotl-0.1.39.

python-axolotl has been failing since March,
https://hydra.gnu.org/job/gnu/master/python-axolotl-0.1.35.x86_64-linux

This also fixes the OMEMO and OTR plugins for Gajim work.

---
 ...olotl-removes-IV-parameter-at-AES-creation.patch | 21 +++++++++++++++++++++
 gnu/packages/python-crypto.scm                      |  6 ++++--
 2 files changed, 25 insertions(+), 2 deletions(-)
 create mode 100644 gnu/packages/patches/python-axolotl-removes-IV-parameter-at-AES-creation.patch

diff --git a/gnu/packages/patches/python-axolotl-removes-IV-parameter-at-AES-creation.patch b/gnu/packages/patches/python-axolotl-removes-IV-parameter-at-AES-creation.patch
new file mode 100644
index 000000000..b25806ca2
--- /dev/null
+++ b/gnu/packages/patches/python-axolotl-removes-IV-parameter-at-AES-creation.patch
@@ -0,0 +1,21 @@
+Description: Removes IV paramenter from AES constructor, since it is not necessary for ctr mode.
+Author: Josue Ortega <josue@debian.org>
+Last-Update: 2017-04-13
+
+--- a/axolotl/sessioncipher.py
++++ b/axolotl/sessioncipher.py
+@@ -228,13 +228,7 @@
+         # counterint = struct.unpack(">L", counterbytes)[0]
+         # counterint = int.from_bytes(counterbytes, byteorder='big')
+         ctr = Counter.new(128, initial_value=counter)
+-
+-        # cipher = AES.new(key, AES.MODE_CTR, counter=ctr)
+-        ivBytes = bytearray(16)
+-        ByteUtil.intToByteArray(ivBytes, 0, counter)
+-
+-        cipher = AES.new(key, AES.MODE_CTR, IV=bytes(ivBytes), counter=ctr)
+-
++        cipher = AES.new(key, AES.MODE_CTR, counter=ctr)
+         return cipher
+ 
+ 
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 77409d86d..3ffa477fe 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -430,7 +430,7 @@ python-axolotl.")
 (define-public python-axolotl
   (package
     (name "python-axolotl")
-    (version "0.1.35")
+    (version "0.1.39")
     (source
      (origin
        (method url-fetch)
@@ -438,8 +438,10 @@ python-axolotl.")
              "https://github.com/tgalal/python-axolotl/archive/"
              version ".tar.gz"))
        (file-name (string-append name "-" version ".tar.gz"))
+       (patches (search-patches
+                 "python-axolotl-removes-IV-parameter-at-AES-creation.patch"))
        (sha256
-        (base32 "1z8d89p7v40p4bwywjm9h4z28fdvra79ddw06azlkrfjbl7dxmz8"))))
+        (base32 "0badsgkgz0ir3hqynxzsfjgacppi874syvvmgccc6j164053x6zm"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
-- 
2.15.0

^ permalink raw reply related	[relevance 79%]

* [bug#29392] [PATCH 01/11] gnu: scons: Update to 3.0.1.
  @ 2017-11-28 17:06 65% ` Arun Isaac
  0 siblings, 0 replies; 200+ results
From: Arun Isaac @ 2017-11-28 17:06 UTC (permalink / raw)
  To: 29392

* gnu/packages/python.scm (scons): Update to 3.0.1.
(scons-python2): New variable.
---
 gnu/packages/python.scm | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 7b2268d13..772564dd9 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1365,19 +1365,17 @@ existing ones.")
 (define-public scons
   (package
     (name "scons")
-    (version "2.5.1")
+    (version "3.0.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://sourceforge/scons/scons/" version
                                  "/scons-" version ".tar.gz"))
              (sha256
               (base32
-               "1wji1z9jdkhnmm99apx6fhld9cs52rr56aigniyrcsmlwy52298b"))))
+               "0wzid419mlwqw9llrg8gsx4nkzhqy16m4m40r0xnh6cwscw5wir4"))))
     (build-system python-build-system)
     (arguments
-     ;; With Python 3.x, fails to build with a syntax error.
-     `(#:python ,python-2
-       #:use-setuptools? #f                ; still relies on distutils
+     `(#:use-setuptools? #f                ; still relies on distutils
        #:tests? #f))                       ; no 'python setup.py test' command
     (home-page "http://scons.org/")
     (synopsis "Software construction tool written in Python")
@@ -1389,6 +1387,11 @@ In short, SCons is an easier, more reliable and faster way to build
 software.")
     (license license:x11)))
 
+(define-public scons-python2
+  (package
+    (inherit (package-with-python2 scons))
+    (name "scons-python2")))
+
 (define-public python-extras
   (package
     (name "python-extras")
-- 
2.15.0

^ permalink raw reply related	[relevance 65%]

* [bug#29571] [PATCH 1/2] gnu: Add python-olefile.
@ 2017-12-05  0:34 65% Kei Kebreau
  2017-12-05  0:34 71% ` [bug#29572] [PATCH 2/2] gnu: python-pillow: Update to 4.3.0 Kei Kebreau
  0 siblings, 1 reply; 200+ results
From: Kei Kebreau @ 2017-12-05  0:34 UTC (permalink / raw)
  To: 29571; +Cc: Kei Kebreau

* gnu/packages/python.scm (python-olefile): New variable.
---
 gnu/packages/python.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 01b4e2cd2..4304cd7f5 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3643,6 +3643,29 @@ Python's distutils.")
 services for your Python modules and applications.")
     (license license:lgpl3+)))
 
+(define-public python-olefile
+  (package
+    (name "python-olefile")
+    (version "0.44")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/decalage2/olefile/archive/v"
+                           version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1wmxbrhyqjry2000zx0zdhqdqxhgi06nz7sbzjlh222q2zjv1gpj"))))
+    (build-system python-build-system)
+    (home-page
+     "https://www.decalage.info/python/olefileio")
+    (synopsis "Read and write Microsoft OLE2 files.")
+    (description
+     "@code{olefile} can parse, read and write Microsoft OLE2 files (Structured
+Storage or Compound Document, Microsoft Office).  It is an improved version of
+the OleFileIO module from PIL, the Python Image Library.")
+    (license license:bsd-3)))
+
 (define-public python-pillow
   (package
     (name "python-pillow")
-- 
2.15.0

^ permalink raw reply related	[relevance 65%]

* [bug#29572] [PATCH 2/2] gnu: python-pillow: Update to 4.3.0.
  2017-12-05  0:34 65% [bug#29571] [PATCH 1/2] gnu: Add python-olefile Kei Kebreau
@ 2017-12-05  0:34 71% ` Kei Kebreau
    0 siblings, 1 reply; 200+ results
From: Kei Kebreau @ 2017-12-05  0:34 UTC (permalink / raw)
  To: 29572; +Cc: Kei Kebreau

* gnu/packages/python.scm (python-pillow): Update to 4.3.0.
* gnu/packages/patches/python-pillow-freetype-2.7-test-failure.patch:
Delete file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
 gnu/local.mk                                       |  1 -
 .../python-pillow-freetype-2.7-test-failure.patch  | 75 ----------------------
 gnu/packages/python.scm                            |  7 +-
 3 files changed, 4 insertions(+), 79 deletions(-)
 delete mode 100644 gnu/packages/patches/python-pillow-freetype-2.7-test-failure.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 856ade412..207c8d739 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1025,7 +1025,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-pandas-skip-failing-tests.patch	\
   %D%/packages/patches/python-paste-remove-website-test.patch	\
   %D%/packages/patches/python-paste-remove-timing-test.patch	\
-  %D%/packages/patches/python-pillow-freetype-2.7-test-failure.patch	\
   %D%/packages/patches/python-pygit2-disable-network-tests.patch	\
   %D%/packages/patches/python-pycrypto-CVE-2013-7459.patch	\
   %D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
diff --git a/gnu/packages/patches/python-pillow-freetype-2.7-test-failure.patch b/gnu/packages/patches/python-pillow-freetype-2.7-test-failure.patch
deleted file mode 100644
index 18bc30bc7..000000000
--- a/gnu/packages/patches/python-pillow-freetype-2.7-test-failure.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-Fix some test failures when building with freetype-2.7.
-
-https://github.com/python-pillow/Pillow/issues/2116
-https://github.com/python-pillow/Pillow/pull/2286
-
-Patch copied from upstream source repository:
-
-https://github.com/python-pillow/Pillow/commit/acf68c835c93ba144f83198306aa7e6082a43f43
-
-From acf68c835c93ba144f83198306aa7e6082a43f43 Mon Sep 17 00:00:00 2001
-From: hugovk <hugovk@users.noreply.github.com>
-Date: Mon, 12 Dec 2016 15:16:43 +0200
-Subject: [PATCH] Increase epsilon for FreeType 2.7
-
----
- Tests/test_imagefont.py | 15 ++++++++++-----
- 1 file changed, 10 insertions(+), 5 deletions(-)
-
-diff --git a/Tests/test_imagefont.py b/Tests/test_imagefont.py
-index de89ac92..5207dce3 100644
---- a/Tests/test_imagefont.py
-+++ b/Tests/test_imagefont.py
-@@ -125,7 +125,9 @@ try:
- 
-             target = 'Tests/images/rectangle_surrounding_text.png'
-             target_img = Image.open(target)
--            self.assert_image_similar(im, target_img, .5)
-+
-+            # Epsilon ~.5 fails with FreeType 2.7
-+            self.assert_image_similar(im, target_img, 2.5)
- 
-         def test_render_multiline(self):
-             im = Image.new(mode='RGB', size=(300, 100))
-@@ -144,7 +146,7 @@ try:
-             # some versions of freetype have different horizontal spacing.
-             # setting a tight epsilon, I'm showing the original test failure
-             # at epsilon = ~38.
--            self.assert_image_similar(im, target_img, .5)
-+            self.assert_image_similar(im, target_img, 6.2)
- 
-         def test_render_multiline_text(self):
-             ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE)
-@@ -158,7 +160,8 @@ try:
-             target = 'Tests/images/multiline_text.png'
-             target_img = Image.open(target)
- 
--            self.assert_image_similar(im, target_img, .5)
-+            # Epsilon ~.5 fails with FreeType 2.7
-+            self.assert_image_similar(im, target_img, 6.2)
- 
-             # Test that text() can pass on additional arguments
-             # to multiline_text()
-@@ -178,7 +181,8 @@ try:
-                 target = 'Tests/images/multiline_text'+ext+'.png'
-                 target_img = Image.open(target)
- 
--                self.assert_image_similar(im, target_img, .5)
-+                # Epsilon ~.5 fails with FreeType 2.7
-+                self.assert_image_similar(im, target_img, 6.2)
- 
-         def test_unknown_align(self):
-             im = Image.new(mode='RGB', size=(300, 100))
-@@ -227,7 +231,8 @@ try:
-             target = 'Tests/images/multiline_text_spacing.png'
-             target_img = Image.open(target)
- 
--            self.assert_image_similar(im, target_img, .5)
-+            # Epsilon ~.5 fails with FreeType 2.7
-+            self.assert_image_similar(im, target_img, 6.2)
- 
-         def test_rotated_transposed_font(self):
-             img_grey = Image.new("L", (100, 100))
--- 
-2.12.0
-
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 4304cd7f5..ea4de9484 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3669,15 +3669,14 @@ the OleFileIO module from PIL, the Python Image Library.")
 (define-public python-pillow
   (package
     (name "python-pillow")
-    (version "3.3.3")
+    (version "4.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Pillow" version))
-       (patches (search-patches "python-pillow-freetype-2.7-test-failure.patch"))
        (sha256
         (base32
-         "0xkv0p1d73gz0a1qaasf0ai4262g8f334j07vd60bjrxs2wr3nmj"))))
+         "09xmn7rl6840sli2iz1k3fgxfgmri2nqz6vkinmb9mgg8ifp2z59"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-nose"       ,python-nose)))
@@ -3689,6 +3688,8 @@ the OleFileIO module from PIL, the Python Image Library.")
        ("openjpeg" ,openjpeg)
        ("libtiff"  ,libtiff)
        ("libwebp"  ,libwebp)))
+    (propagated-inputs
+     `(("python-olefile" ,python-olefile)))
     (arguments
      `(#:phases (modify-phases %standard-phases
                   (add-after
-- 
2.15.0

^ permalink raw reply related	[relevance 71%]

* [bug#29673] [PATCH] gnu: xpra: Update to 2.2.
@ 2017-12-12  9:49 55% Rutger Helling
  0 siblings, 0 replies; 200+ results
From: Rutger Helling @ 2017-12-12  9:49 UTC (permalink / raw)
  To: 29673


[-- Attachment #1.1: Type: text/plain, Size: 65 bytes --]

Here's an update for Xpra. The first patch adds a new dependency.

[-- Attachment #1.2: Type: text/html, Size: 252 bytes --]

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-python-Add-python2-pyopengl-accelerate.patch --]
[-- Type: text/x-diff; name=0001-gnu-python-Add-python2-pyopengl-accelerate.patch, Size: 1104 bytes --]

From 33dae42ff4d0994c8bfdb509aa9ceb0ac092ca3b Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@mykolab.com>
Date: Tue, 12 Dec 2017 10:35:44 +0100
Subject: [PATCH] gnu: python: Add python2-pyopengl-accelerate.

* gnu/packages/python.scm (python2-pyopengl-accelerate): New variable.
---
 gnu/packages/python.scm | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 01b4e2cd2..2f1ce586b 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -11523,6 +11523,19 @@ related APIs.  The binding is created using the standard @code{ctypes}
 library.")
    (license license:bsd-3)))
 
+(define-public python2-pyopengl-accelerate
+  (package
+   (inherit python2-pyopengl)
+   (name "python2-pyopengl-accelerate")
+   (version "3.1.0")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (pypi-uri "PyOpenGL-accelerate" version))
+     (sha256
+      (base32
+       "0464c1ifzk0k92lyndikmvzjgnx1y25r7bkkc8pnxm4kp1q4czwj"))))))
+
 (define-public python-rencode
   (package
    (name "python-rencode")
-- 
2.15.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-xpra-Update-to-2.2.patch --]
[-- Type: text/x-diff; name=0002-gnu-xpra-Update-to-2.2.patch, Size: 3999 bytes --]

From edc401123133f3c7a13758e1794b9b1c757ac9e2 Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@mykolab.com>
Date: Tue, 12 Dec 2017 10:28:24 +0100
Subject: [PATCH] gnu: xpra: Update to 2.2.

* gnu/packages/xorg.scm (xpra): Update to 2.2. [inputs]: Add python2-netifaces,
  python2-pyopengl-accelerate. Fix position of commas.
---
 gnu/packages/xorg.scm | 55 ++++++++++++++++++++++++++-------------------------
 1 file changed, 28 insertions(+), 27 deletions(-)

diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index d4beff4ef..4407d41ab 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -5952,7 +5952,7 @@ basic eye-candy effects.")
 (define-public xpra
   (package
     (name "xpra")
-    (version "2.1.3")
+    (version "2.2")
     (source
      (origin
        (method url-fetch)
@@ -5960,41 +5960,42 @@ basic eye-candy effects.")
                            version ".tar.xz"))
        (sha256
         (base32
-         "0r0l3p59q05fmvkp3jv8vmny2v8m1vyhqkg6b9r2qgxn1kcxx7rm"))))
+         "0gi0i5pbhfzr5j4mbngjxvrk6r4lvigw4w2104znplmmrf1mw6y2"))))
     (build-system python-build-system)
-    (inputs `(("ffmpeg", ffmpeg)
-              ("flac", flac)
+    (inputs `(("ffmpeg" ,ffmpeg)
+              ("flac" ,flac)
               ("gtk+-2" ,gtk+-2) ;; no full GTK3 support yet
-              ("libjpeg", libjpeg)
-              ("libpng", libpng)
-              ("libvpx", libvpx)
-              ("libx264", libx264)
-              ("libxcomposite", libxcomposite)
-              ("libxdamage", libxdamage)
-              ("libxkbfile", libxkbfile)
-              ("libxrandr", libxrandr)
-              ("libxtst", libxtst)
-              ("lzo", lzo)
-              ("python2-cryptography", python2-cryptography)
-              ("python2-dbus", python2-dbus)
-              ("python2-lz4", python2-lz4)
-              ("python2-lzo", python2-lzo)
-              ("python2-numpy", python2-numpy)
+              ("libjpeg" ,libjpeg)
+              ("libpng" ,libpng)
+              ("libvpx" ,libvpx)
+              ("libx264" ,libx264)
+              ("libxcomposite" ,libxcomposite)
+              ("libxdamage" ,libxdamage)
+              ("libxkbfile" ,libxkbfile)
+              ("libxrandr" ,libxrandr)
+              ("libxtst" ,libxtst)
+              ("lzo" ,lzo)
+              ("python2-cryptography" ,python2-cryptography)
+              ("python2-dbus" ,python2-dbus)
+              ("python2-lz4" ,python2-lz4)
+              ("python2-lzo" ,python2-lzo)
+              ("python2-netifaces" ,python2-netifaces)
+              ("python2-numpy" ,python2-numpy)
               ("python2-pillow" ,python2-pillow)
-              ("python2-pycairo", python2-pycairo)
-              ("python2-pycrypto", python2-pycrypto)
-              ("python2-pygobject", python2-pygobject)
-              ("python2-pyopengl", python2-pyopengl)
-              ("python2-pygtk", python2-pygtk)
-              ("python2-rencode", python2-rencode)
-              ("xorg-server", xorg-server)))
+              ("python2-pycairo" ,python2-pycairo)
+              ("python2-pycrypto" ,python2-pycrypto)
+              ("python2-pygobject" ,python2-pygobject)
+              ("python2-pyopengl" ,python2-pyopengl)
+              ("python2-pyopengl-accelerate" ,python2-pyopengl-accelerate)
+              ("python2-pygtk" ,python2-pygtk)
+              ("python2-rencode" ,python2-rencode)
+              ("xorg-server" ,xorg-server)))
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("python2-cython", python2-cython)))
     (arguments
      `(#:python ,python-2 ;; no full Python 3 support yet
        #:configure-flags '("--with-tests"
                            "--with-bundle_tests"
-                           "--without-opengl" ;; TODO: pygtkglext needed.
                            "--without-Xdummy" ;; We use Xvfb instead.
                            "--without-Xdummy_wrapper"
                            "--without-strict")
-- 
2.15.1


^ permalink raw reply related	[relevance 55%]

* [bug#29733] Add virtaal (translation app)
@ 2017-12-16 10:09 46% Mark Meyer
  0 siblings, 0 replies; 200+ results
From: Mark Meyer @ 2017-12-16 10:09 UTC (permalink / raw)
  To: 29733

[-- Attachment #1: Type: text/plain, Size: 432 bytes --]

Hi,
I just wanted to quickly have someone look over the following changes:

  - Add python2-pycurl adds pycurl (it's Py2 only)
  - Update python2-gobject-2 to 2.28.7 (the most recent, patch still
  seems to apply

    This update pulls in a lot of changes that were present in
    distrubutions for a long time

  - Add virtaal

    This just adds virtaal with proper dependencies.

Cheers, Mark

-- 
  Mark Meyer
  mark@ofosos.org

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-python2-pycurl.patch --]
[-- Type: text/x-patch; name="0001-gnu-Add-python2-pycurl.patch", Size: 2521 bytes --]

From 6b2b028d4500a535faa3442daa0c228f9c98b93f Mon Sep 17 00:00:00 2001
From: Mark Meyer <mark@ofosos.org>
Date: Fri, 15 Dec 2017 10:09:28 +0100
Subject: [PATCH] gnu: Add python2-pycurl.

* gnu/packages/python-web.scm (python2-pycurl): New public variable.
---
 gnu/packages/python-web.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 12e45b2ef..502834bdc 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -22,6 +22,7 @@
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
+;;; Copyright © 2017 Mark Meyer <mark@ofosos.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -45,11 +46,13 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages django)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages tls)
   #:use-module (gnu packages time)
   #:use-module (gnu packages xml)
   #:use-module ((guix licenses) #:prefix license:)
@@ -238,6 +241,30 @@ C, yielding parse times that can be a thirtieth of the html5lib parse times.")
 (define-public python2-html5-parser
   (package-with-python2 python-html5-parser))
 
+(define-public python2-pycurl
+  (package
+    (name "python2-pycurl")
+    (version "7.43.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://dl.bintray.com/pycurl/pycurl/pycurl-" version ".tar.gz"))
+       (sha256
+        (base32 "1ali1gjs9iliwjra7w0y5hwg79a2fd0f4ydvv6k27sgxpbr1n8s3"))))
+    (build-system python-build-system)
+    (arguments `(#:python ,python-2)) ; no Python 3 support
+    (native-inputs
+     `(("python-nose" ,python-nose)
+       ("python-bottle" ,python-bottle)))
+    (inputs
+     `(("curl" ,curl)
+       ("gnutls" ,gnutls)))
+    (home-page "http://pycurl.io/")
+    (synopsis "Lightweight Python wrapper around libcurl")
+    (description "Pycurl is a lightweight wrapper around libcurl. It provides
+high speed transfers via libcurl and frequently outperforms alternatives.")
+    (license license:lgpl2.0)))
+
 (define-public python-webencodings
   (package
     (name "python-webencodings")
-- 
2.15.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0001-gnu-python2-gobject-2-Update-to-2.28.7.patch --]
[-- Type: text/x-patch; name="0001-gnu-python2-gobject-2-Update-to-2.28.7.patch", Size: 1230 bytes --]

From 8a71cee704727f80e4146ee87a06c462bf59a9c5 Mon Sep 17 00:00:00 2001
From: Mark Meyer <mark@ofosos.org>
Date: Sat, 16 Dec 2017 10:57:21 +0100
Subject: [PATCH] gnu: python2-gobject-2: Update to 2.28.7

* gnu/packages/glib.scm (python2-gobject-2): Update to 2.28.7.
---
 gnu/packages/glib.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index de7427859..40d23e104 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -543,7 +543,7 @@ useful for C++.")
     (name "python2-pygobject")
     ;; This was the last version to declare the 2.0 platform number, i.e. its
     ;; pkg-config files were named pygobject-2.0.pc
-    (version "2.28.6")
+    (version "2.28.7")
     (source
      (origin
        (method url-fetch)
@@ -552,7 +552,7 @@ useful for C++.")
                            "/pygobject-" version ".tar.xz"))
        (sha256
         (base32
-         "1f5dfxjnil2glfwxnqr14d2cjfbkghsbsn8n04js2c2icr7iv2pv"))
+         "0nkam61rsn7y3wik3vw46wk5q2cjfh2iph57hl9m39rc8jijb7dv"))
        (patches (search-patches
                  "python2-pygobject-2-gi-info-type-error-domain.patch"))))
     (build-system gnu-build-system)
-- 
2.15.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0001-gnu-Add-virtaal.patch --]
[-- Type: text/x-patch; name="0001-gnu-Add-virtaal.patch", Size: 2663 bytes --]

From c36fde0cfda0d5f9830876abbff804504004451d Mon Sep 17 00:00:00 2001
From: Mark Meyer <mark@ofosos.org>
Date: Fri, 15 Dec 2017 12:35:38 +0100
Subject: [PATCH] gnu: Add virtaal.

* gnu/packages/text-editors.scm (virtaal): New public variable.
---
 gnu/packages/text-editors.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 44b42ce9b..773000ff4 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2014 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.org>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017 Mark Meyer <mark@ofosos.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,6 +30,7 @@
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system glib-or-gtk)
+  #:use-module (guix build-system python)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages assembly)
@@ -41,11 +43,42 @@
   #:use-module (gnu packages lua)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages regex)
   #:use-module (gnu packages ruby)
   #:use-module (gnu packages terminals)
   #:use-module (gnu packages xml))
 
+(define-public virtaal
+  (package
+    (name "virtaal")
+    (version "0.7.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/translate/Virtaal/"
+                                  version "/virtaal-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0cyimjp3191qlmw6n0ipqdr9xr0cq4f6dqvz4rl9q31h6l3kywf9"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2
+       #:use-setuptools? #f
+       #:tests? #f))
+    (propagated-inputs
+     `(("python2-pycurl" ,python2-pycurl)
+       ("python2-pygtk" ,python2-pygtk)
+       ("python2-lxml" ,python2-lxml)
+       ("python2-translate-toolkit" ,python2-translate-toolkit)
+       ("python2-simplejson" ,python2-simplejson)))
+    (synopsis "An editor for translation files")
+    (description
+     "Virtaal, a feature rich translation tool that allows you to focus on
+translation, without the tool getting in the way.")
+    (home-page "http://virtaal.translatehouse.org/")
+    (license license:gpl2)))
+
 (define-public vis
   (package
     (name "vis")
-- 
2.15.1


^ permalink raw reply related	[relevance 46%]

* [bug#29572] [PATCH 2/2] gnu: python-pillow: Update to 4.3.0.
  @ 2017-12-16 15:15 86%     ` Kei Kebreau
  0 siblings, 0 replies; 200+ results
From: Kei Kebreau @ 2017-12-16 15:15 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: 29572


[-- Attachment #1.1: Type: text/plain, Size: 765 bytes --]

Ricardo Wurmus <rekado@elephly.net> writes:

> Hi Kei,
>
>> * gnu/packages/python.scm (python-pillow): Update to 4.3.0.
>> * gnu/packages/patches/python-pillow-freetype-2.7-test-failure.patch:
>> Delete file.
>> * gnu/local.mk (dist_patch_DATA): Remove it.
> […]
>> +    (propagated-inputs
>> +     `(("python-olefile" ,python-olefile)))
>
> The commit message fails to mention python-olefile.  I cannot find a
> definition for python-olefile; did you forget to attach it?
>

I've attached a patch with a corrected commit message. The definition
for python-olefile ended up as a different bug number (#29571).

Thanks for looking at this.

> --
> Ricardo
>
> GPG: BCA6 89B6 3655 3801 C3C6  2150 197A 5888 235F ACAC
> https://elephly.net

[-- Attachment #1.2: 0001-gnu-python-pillow-Update-to-4.3.0.patch --]
[-- Type: text/plain, Size: 5937 bytes --]

From 39d41a2c43598d0ebbad46ee552afe683305f031 Mon Sep 17 00:00:00 2001
From: Kei Kebreau <kkebreau@posteo.net>
Date: Mon, 4 Dec 2017 17:56:37 -0500
Subject: [PATCH] gnu: python-pillow: Update to 4.3.0.

* gnu/packages/python.scm (python-pillow): Update to 4.3.0.
[propagated-inputs]: Add python-olefile.
* gnu/packages/patches/python-pillow-freetype-2.7-test-failure.patch:
Delete file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
 gnu/local.mk                                       |  1 -
 .../python-pillow-freetype-2.7-test-failure.patch  | 75 ----------------------
 gnu/packages/python.scm                            |  7 +-
 3 files changed, 4 insertions(+), 79 deletions(-)
 delete mode 100644 gnu/packages/patches/python-pillow-freetype-2.7-test-failure.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 636919550..d7f4fb745 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1022,7 +1022,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-pandas-skip-failing-tests.patch	\
   %D%/packages/patches/python-paste-remove-website-test.patch	\
   %D%/packages/patches/python-paste-remove-timing-test.patch	\
-  %D%/packages/patches/python-pillow-freetype-2.7-test-failure.patch	\
   %D%/packages/patches/python-pygit2-disable-network-tests.patch	\
   %D%/packages/patches/python-pycrypto-CVE-2013-7459.patch	\
   %D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
diff --git a/gnu/packages/patches/python-pillow-freetype-2.7-test-failure.patch b/gnu/packages/patches/python-pillow-freetype-2.7-test-failure.patch
deleted file mode 100644
index 18bc30bc7..000000000
--- a/gnu/packages/patches/python-pillow-freetype-2.7-test-failure.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-Fix some test failures when building with freetype-2.7.
-
-https://github.com/python-pillow/Pillow/issues/2116
-https://github.com/python-pillow/Pillow/pull/2286
-
-Patch copied from upstream source repository:
-
-https://github.com/python-pillow/Pillow/commit/acf68c835c93ba144f83198306aa7e6082a43f43
-
-From acf68c835c93ba144f83198306aa7e6082a43f43 Mon Sep 17 00:00:00 2001
-From: hugovk <hugovk@users.noreply.github.com>
-Date: Mon, 12 Dec 2016 15:16:43 +0200
-Subject: [PATCH] Increase epsilon for FreeType 2.7
-
----
- Tests/test_imagefont.py | 15 ++++++++++-----
- 1 file changed, 10 insertions(+), 5 deletions(-)
-
-diff --git a/Tests/test_imagefont.py b/Tests/test_imagefont.py
-index de89ac92..5207dce3 100644
---- a/Tests/test_imagefont.py
-+++ b/Tests/test_imagefont.py
-@@ -125,7 +125,9 @@ try:
- 
-             target = 'Tests/images/rectangle_surrounding_text.png'
-             target_img = Image.open(target)
--            self.assert_image_similar(im, target_img, .5)
-+
-+            # Epsilon ~.5 fails with FreeType 2.7
-+            self.assert_image_similar(im, target_img, 2.5)
- 
-         def test_render_multiline(self):
-             im = Image.new(mode='RGB', size=(300, 100))
-@@ -144,7 +146,7 @@ try:
-             # some versions of freetype have different horizontal spacing.
-             # setting a tight epsilon, I'm showing the original test failure
-             # at epsilon = ~38.
--            self.assert_image_similar(im, target_img, .5)
-+            self.assert_image_similar(im, target_img, 6.2)
- 
-         def test_render_multiline_text(self):
-             ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE)
-@@ -158,7 +160,8 @@ try:
-             target = 'Tests/images/multiline_text.png'
-             target_img = Image.open(target)
- 
--            self.assert_image_similar(im, target_img, .5)
-+            # Epsilon ~.5 fails with FreeType 2.7
-+            self.assert_image_similar(im, target_img, 6.2)
- 
-             # Test that text() can pass on additional arguments
-             # to multiline_text()
-@@ -178,7 +181,8 @@ try:
-                 target = 'Tests/images/multiline_text'+ext+'.png'
-                 target_img = Image.open(target)
- 
--                self.assert_image_similar(im, target_img, .5)
-+                # Epsilon ~.5 fails with FreeType 2.7
-+                self.assert_image_similar(im, target_img, 6.2)
- 
-         def test_unknown_align(self):
-             im = Image.new(mode='RGB', size=(300, 100))
-@@ -227,7 +231,8 @@ try:
-             target = 'Tests/images/multiline_text_spacing.png'
-             target_img = Image.open(target)
- 
--            self.assert_image_similar(im, target_img, .5)
-+            # Epsilon ~.5 fails with FreeType 2.7
-+            self.assert_image_similar(im, target_img, 6.2)
- 
-         def test_rotated_transposed_font(self):
-             img_grey = Image.new("L", (100, 100))
--- 
-2.12.0
-
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 082856bfb..5db90df3e 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3660,15 +3660,14 @@ services for your Python modules and applications.")
 (define-public python-pillow
   (package
     (name "python-pillow")
-    (version "3.3.3")
+    (version "4.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Pillow" version))
-       (patches (search-patches "python-pillow-freetype-2.7-test-failure.patch"))
        (sha256
         (base32
-         "0xkv0p1d73gz0a1qaasf0ai4262g8f334j07vd60bjrxs2wr3nmj"))))
+         "09xmn7rl6840sli2iz1k3fgxfgmri2nqz6vkinmb9mgg8ifp2z59"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-nose"       ,python-nose)))
@@ -3680,6 +3679,8 @@ services for your Python modules and applications.")
        ("openjpeg" ,openjpeg)
        ("libtiff"  ,libtiff)
        ("libwebp"  ,libwebp)))
+    (propagated-inputs
+     `(("python-olefile" ,python-olefile)))
     (arguments
      `(#:phases (modify-phases %standard-phases
                   (add-after
-- 
2.15.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

^ permalink raw reply related	[relevance 86%]

* [bug#29768] [PATCH 1/5] gnu: Add python-txamqp.
  @ 2017-12-19  8:04 65% ` Ricardo Wurmus
  0 siblings, 0 replies; 200+ results
From: Ricardo Wurmus @ 2017-12-19  8:04 UTC (permalink / raw)
  To: 29768; +Cc: Ricardo Wurmus

* gnu/packages/python.scm (python-txamqp, python2-txamqp): New variables.
---
 gnu/packages/python.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 4baef4391..c72e35588 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7474,6 +7474,35 @@ alternative when librabbitmq is not available.")
                    #:tests? #f
                    ,@(package-arguments amqp))))))
 
+(define-public python-txamqp
+  (package
+    (name "python-txamqp")
+    (version "0.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "txAMQP" version))
+       (sha256
+        (base32
+         "1r43a66dd547mz40ikymm8y3d480cidy560fj81qc0jk4lncgmmr"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-six" ,python-six)
+       ("python-twisted" ,python-twisted)))
+    (home-page "https://github.com/txamqp/txamqp")
+    (synopsis "Communicate with AMQP peers and brokers using Twisted")
+    (description
+     "This package provides a Python library for communicating with AMQP peers
+and brokers using the asynchronous networking framework Twisted.  It contains
+all the necessary code to connect, send and receive messages to/from an
+AMQP-compliant peer or broker (Qpid, OpenAMQ, RabbitMQ) using Twisted.  It
+also includes support for using Thrift RPC over AMQP in Twisted
+applications.")
+    (license license:asl2.0)))
+
+(define-public python2-txamqp
+  (package-with-python2 python-txamqp))
+
 (define-public python-kombu
   (package
     (name "python-kombu")
-- 
2.15.0

^ permalink raw reply related	[relevance 65%]

* [bug#29783] [PATCH 1/2] gnu: Add python-tempdir.
@ 2017-12-19 11:50 65% Konrad Hinsen
  0 siblings, 0 replies; 200+ results
From: Konrad Hinsen @ 2017-12-19 11:50 UTC (permalink / raw)
  To: 29783

 gnu/packages/python.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 082856bfb..5580b7d50 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -11973,3 +11973,30 @@ belong to tagged versions.")
      "BooleanOperations provides a Python library that enables
 boolean operations on paths.")
     (license license:expat)))
+
+(define-public python-tempdir
+  (package
+    (name "python-tempdir")
+    (version "0.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "tempdir" version))
+       (sha256
+        (base32
+         "13msyyxqbicr111a294x7fsqbkl6a31fyrqflx3q7k547gnq15k8"))))
+    (build-system python-build-system)
+    (home-page "https://pypi.org/project/tempdir/")
+    (arguments
+     ;; the package has no tests
+     '(#:tests? #f))
+    (synopsis "Python library for managing temporary directories")
+    (description
+     "This library manages temporary directories that are automatically
+deleted with all their contents when they are no longer needed.  It is
+particularly convenient for use in tests.")
+    (license license:expat)))
+
+(define-public python2-tempdir
+  (package-with-python2 python-tempdir))
+
-- 
2.15.1

^ permalink raw reply related	[relevance 65%]

* [bug#29784] [PATCH 2/2] gnu: Add python-activepapers
@ 2017-12-19 11:50 60% Konrad Hinsen
  2017-12-21  9:57 59% ` Ludovic Courtès
  0 siblings, 1 reply; 200+ results
From: Konrad Hinsen @ 2017-12-19 11:50 UTC (permalink / raw)
  To: 29784

 gnu/packages/python.scm | 68 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 5580b7d50..1a376e04d 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -12000,3 +12000,71 @@ particularly convenient for use in tests.")
 (define-public python2-tempdir
   (package-with-python2 python-tempdir))
 
+(define-public python-activepapers
+  (package
+    (name "python-activepapers")
+    (version "0.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ActivePapers.Py" version))
+       (sha256
+        (base32
+         "02bpx36ixwag1g958plgjwpxaiadsj4669gsnxc8hb5aw2jplnr5"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'delete-python2-code
+           (lambda _
+             (for-each delete-file
+                       '("lib/activepapers/builtins2.py"
+                         "lib/activepapers/standardlib2.py"
+                         "lib/activepapers/utility2.py"))))
+         (replace 'check
+           (lambda _
+             (use-modules (srfi srfi-1)
+                          (ice-9 ftw))
+             ;; Deactivate the test cases that download files
+             (setenv "NO_NETWORK_ACCESS" "1")
+             ;; For some strange reason, some tests fail if nosetests runs all
+             ;; test modules in a single execution. They pass if each test
+             ;; module is run individually.
+             (every zero?
+                    (map (lambda (filename)
+                           (system* "nosetests"
+                                    (string-append "tests/" filename)))
+                         (scandir "tests"
+                                  (lambda (filename)
+                                    (string-suffix? ".py" filename))))))))))
+    (native-inputs
+     `(("python-tempdir" ,python-tempdir)
+       ("python-nose" ,python-nose)))
+    (propagated-inputs
+     `(("python-h5py" ,python-h5py)))
+    (home-page "http://www.activepapers.org/")
+    (synopsis "Executable papers for scientific computing")
+    (description
+     "ActivePapers is a tool for working with executable papers, which
+combine data, code, and documentation in single-file packages,
+suitable for publication as supplementary material or on repositories
+such as figshare or Zenodo.")
+    (properties `((python2-variant . ,(delay python2-activepapers))))
+    (license license:bsd-3)))
+
+(define-public python2-activepapers
+  (let ((base (package-with-python2
+               (strip-python2-variant python-activepapers))))
+    (package
+      (inherit base)
+      (arguments
+       (substitute-keyword-arguments (package-arguments base)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (delete 'delete-python2-code)
+             (add-after 'unpack 'delete-python3-code
+               (lambda _
+                 (for-each delete-file
+                           '("lib/activepapers/builtins3.py"
+                             "lib/activepapers/standardlib3.py"
+                             "lib/activepapers/utility3.py")))))))))))
-- 
2.15.1

^ permalink raw reply related	[relevance 60%]

* [bug#29795] [PATCH 1/2] gnu: python-numpy: reorganize patches
@ 2017-12-20 16:18 53% Konrad Hinsen
  0 siblings, 0 replies; 200+ results
From: Konrad Hinsen @ 2017-12-20 16:18 UTC (permalink / raw)
  To: 29795

Divide the (misnamed) build step 'set-environment-variables,
which applies patches to various files, into two build steps:

 'configure-blas-lapack  to patch site.cfg
 'fix-executable-paths to use executables from the store

This makes it easier to define variants (such as python-numpy-1.8,
or variants using a different BLAS/LAPACK implementation)
because only 'configure-blas-lapack needs to be redefined.

There is no impact on the result of the build. Only packages that inherit
from python-numpy could be affected, i.e. python-numpy-next and the Python 2
variants.
---
 gnu/packages/python.scm | 63 ++++++++++++++++++++++++++-----------------------
 1 file changed, 33 insertions(+), 30 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 1a376e04d..e768b60ed 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -2619,12 +2619,12 @@ between language specification and implementation aspects.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-        (add-before 'build 'set-environment-variables
-         (lambda* (#:key inputs #:allow-other-keys)
-          (call-with-output-file "site.cfg"
-            (lambda (port)
-              (format port
-                      "[openblas]
+         (add-before 'build 'configure-blas-lapack
+           (lambda* (#:key inputs #:allow-other-keys)
+             (call-with-output-file "site.cfg"
+               (lambda (port)
+                 (format port
+                         "[openblas]
 libraries = openblas
 library_dirs = ~a/lib
 include_dirs = ~a/include
@@ -2635,30 +2635,33 @@ lapack_libs = lapack
 library_dirs = ~a/lib
 include_dirs = ~a/include
 "
-                      (assoc-ref inputs "openblas")
-                      (assoc-ref inputs "openblas")
-                      (assoc-ref inputs "lapack")
-                      (assoc-ref inputs "lapack"))))
-          ;; Make /gnu/store/...-bash-.../bin/sh the default shell, instead of
-          ;; /bin/sh.
-          (substitute* "numpy/distutils/exec_command.py"
-            (("(os.environ.get\\('SHELL', ')(/bin/sh'\\))" match match-start match-end)
-            (string-append match-start (assoc-ref inputs "bash") match-end)))
-          ;; Use "gcc" executable, not "cc".
-          (substitute* "numpy/distutils/system_info.py"
-            (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
-             "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')"))
-          #t))
-        ;; Tests can only be run after the library has been installed and not
-        ;; within the source directory.
-        (delete 'check)
-        (add-after 'install 'check
-         (lambda* (#:key outputs inputs #:allow-other-keys)
-           ;; Make installed package available for running the tests
-           (add-installed-pythonpath inputs outputs)
-           (with-directory-excursion "/tmp"
-             (zero? (system* "python" "-c"
-                             "import numpy; numpy.test(verbose=2)"))))))))
+                         (assoc-ref inputs "openblas")
+                         (assoc-ref inputs "openblas")
+                         (assoc-ref inputs "lapack")
+                         (assoc-ref inputs "lapack"))))
+             #t))
+         (add-before 'build 'fix-executable-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Make /gnu/store/...-bash-.../bin/sh the default shell,
+             ;; instead of /bin/sh.
+             (substitute* "numpy/distutils/exec_command.py"
+               (("(os.environ.get\\('SHELL', ')(/bin/sh'\\))" match match-start match-end)
+                (string-append match-start (assoc-ref inputs "bash") match-end)))
+             ;; Use "gcc" executable, not "cc".
+             (substitute* "numpy/distutils/system_info.py"
+               (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
+                "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')"))
+             #t))
+         ;; Tests can only be run after the library has been installed and not
+         ;; within the source directory.
+         (delete 'check)
+         (add-after 'install 'check
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             ;; Make installed package available for running the tests
+             (add-installed-pythonpath inputs outputs)
+             (with-directory-excursion "/tmp"
+               (zero? (system* "python" "-c"
+                               "import numpy; numpy.test(verbose=2)"))))))))
     (home-page "http://www.numpy.org/")
     (synopsis "Fundamental package for scientific computing with Python")
     (description "NumPy is the fundamental package for scientific computing
-- 
2.14.3 (Apple Git-98)

^ permalink raw reply related	[relevance 53%]

* [bug#29796] [PATCH 2/2] gnu: Add python2-numpy@1.8
@ 2017-12-20 16:19 61% Konrad Hinsen
  0 siblings, 0 replies; 200+ results
From: Konrad Hinsen @ 2017-12-20 16:19 UTC (permalink / raw)
  To: 29796

NumPy 1.8 is the last version that contains the submodule numpy.oldnumeric
that ensures compatibility with code written for NumPy's predecessor Numeric.
---
 gnu/packages/python.scm | 43 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e768b60ed..3ebf3f2e2 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -2694,6 +2694,49 @@ capabilities.")
 (define-public python2-numpy-next
   (package-with-python2 python-numpy-next))
 
+;; NOTE: NumPy 1.8 is packaged only for Python 2 because it is of
+;; interest only for legacy code going back to NumPy's predecessor
+;; Numeric.
+(define-public python2-numpy-1.8
+  (package (inherit python2-numpy)
+    (version "1.8.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/numpy/numpy/archive/v" version ".tar.gz"))
+       (file-name (string-append "python2-numpy-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0sc20gz1b17xnyrkp5frca3ql5qfalpv916hfg2kqxpwr6jg0f1g"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments python2-numpy)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (replace 'configure-blas-lapack
+             (lambda* (#:key inputs #:allow-other-keys)
+               (call-with-output-file "site.cfg"
+                 (lambda (port)
+                   (format port
+                           "[openblas]
+libraries = openblas,lapack
+library_dirs = ~a/lib:~a/lib
+include_dirs = ~a/include:~a/include
+"
+                           (assoc-ref inputs "openblas")
+                           (assoc-ref inputs "lapack")
+                           (assoc-ref inputs "openblas")
+                           (assoc-ref inputs "lapack"))))
+               #t))))))
+    (description "NumPy is the fundamental package for scientific computing
+with Python.  It contains among other things: a powerful N-dimensional array
+object, sophisticated (broadcasting) functions, tools for integrating C/C++
+and Fortran code, useful linear algebra, Fourier transform, and random number
+capabilities.  Version 1.8 is the last one to contain the numpy.oldnumeric API
+that includes the compatibility layer numpy.oldnumeric with NumPy's predecessor
+Numeric.")
+    (license license:bsd-3)))
+
 (define-public python-munch
   (package
     (name "python-munch")
-- 
2.14.3 (Apple Git-98)

^ permalink raw reply related	[relevance 61%]

* [bug#29784] [PATCH 2/2] gnu: Add python-activepapers
  2017-12-19 11:50 60% [bug#29784] [PATCH 2/2] gnu: Add python-activepapers Konrad Hinsen
@ 2017-12-21  9:57 59% ` Ludovic Courtès
  0 siblings, 0 replies; 200+ results
From: Ludovic Courtès @ 2017-12-21  9:57 UTC (permalink / raw)
  To: Konrad Hinsen; +Cc: 29784

[-- Attachment #1: Type: text/plain, Size: 1976 bytes --]

Konrad Hinsen <konrad.hinsen@fastmail.net> skribis:

>  gnu/packages/python.scm | 68 +++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 68 insertions(+)
>
> diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
> index 5580b7d50..1a376e04d 100644
> --- a/gnu/packages/python.scm
> +++ b/gnu/packages/python.scm
> @@ -12000,3 +12000,71 @@ particularly convenient for use in tests.")
>  (define-public python2-tempdir
>    (package-with-python2 python-tempdir))
>  
> +(define-public python-activepapers
> +  (package
> +    (name "python-activepapers")

Awesome!  This had been on my to-do list for a while.  :-)

Below are some suggestions: avoid non-top-level ‘use-modules’ form, and
use ‘invoke’ as discussed recently on guix-devel.

I’m getting a hash mismatch on the source:

--8<---------------cut here---------------start------------->8---
Starting download of /gnu/store/gjxgw8jpak8jr34wpaay35a243xck97k-ActivePapers.Py-0.2.2.tar.gz
From https://pypi.io/packages/source/A/ActivePapers.Py/ActivePapers.Py-0.2.2.tar.gz...
following redirection to `https://pypi.org/packages/source/A/ActivePapers.Py/ActivePapers.Py-0.2.2.tar.gz'...
following redirection to `https://files.pythonhosted.org/packages/source/A/ActivePapers.Py/ActivePapers.Py-0.2.2.tar.gz'...
following redirection to `https://pypi.python.org/packages/32/e0/c7147c88d83f7520aded2308b34e5dcd36c91180a8c850119a749259f284/ActivePapers.Py-0.2.2.tar.gz'...
 ...y-0.2.2.tar.gz  32KiB             2.6MiB/s 00:00 [##################] 100.0%
sha256 hash mismatch for output path `/gnu/store/gjxgw8jpak8jr34wpaay35a243xck97k-ActivePapers.Py-0.2.2.tar.gz'
  expected: 02bpx36ixwag1g958plgjwpxaiadsj4669gsnxc8hb5aw2jplnr5
  actual:   12wkhjh90ffipjzv10swndp2xv9hd7xrxvg6v0n4n3i411pj4xb8
--8<---------------cut here---------------end--------------->8---

Could you check if something is amiss?

Apart from that it LGTM, thank you!

Ludo’.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 2023 bytes --]

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 5bc9dea27..dad58cb95 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -12014,7 +12014,12 @@ particularly convenient for use in tests.")
          "02bpx36ixwag1g958plgjwpxaiadsj4669gsnxc8hb5aw2jplnr5"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
+     `(#:modules ((ice-9 ftw)
+                  (srfi srfi-1)
+                  (guix build utils)
+                  (guix build python-build-system))
+
+       #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'delete-python2-code
            (lambda _
@@ -12024,20 +12029,17 @@ particularly convenient for use in tests.")
                          "lib/activepapers/utility2.py"))))
          (replace 'check
            (lambda _
-             (use-modules (srfi srfi-1)
-                          (ice-9 ftw))
              ;; Deactivate the test cases that download files
              (setenv "NO_NETWORK_ACCESS" "1")
              ;; For some strange reason, some tests fail if nosetests runs all
              ;; test modules in a single execution. They pass if each test
              ;; module is run individually.
-             (every zero?
-                    (map (lambda (filename)
-                           (system* "nosetests"
-                                    (string-append "tests/" filename)))
-                         (scandir "tests"
-                                  (lambda (filename)
-                                    (string-suffix? ".py" filename))))))))))
+             (for-each (lambda (filename)
+                         (invoke "nosetests"
+                                 (string-append "tests/" filename)))
+                       (scandir "tests"
+                                (lambda (filename)
+                                  (string-suffix? ".py" filename)))))))))
     (native-inputs
      `(("python-tempdir" ,python-tempdir)
        ("python-nose" ,python-nose)))

^ permalink raw reply related	[relevance 59%]

* [bug#29849] [PATCH] gnu: python-pillow: Fix test failures on i686-linux and armhf-linux.
@ 2017-12-25 17:04 79% Kei Kebreau
  0 siblings, 0 replies; 200+ results
From: Kei Kebreau @ 2017-12-25 17:04 UTC (permalink / raw)
  To: 29849; +Cc: Kei Kebreau

* gnu/packages/patches/python-pillow-fix-failing-tests.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/python.scm (python-pillow)[source]: Use it.
---
 gnu/local.mk                                           |   1 +
 .../patches/python-pillow-fix-failing-tests.patch      | Bin 0 -> 112346 bytes
 gnu/packages/python.scm                                |   4 +++-
 3 files changed, 4 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/python-pillow-fix-failing-tests.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 3dae58f82..2e28a938b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1015,6 +1015,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-networkx2-reproducible-build.patch	\
   %D%/packages/patches/python-nose-timer-drop-ordereddict.patch \
   %D%/packages/patches/python-parse-too-many-fields.patch	\
+  %D%/packages/patches/python-pillow-fix-failing-tests.patch	\
   %D%/packages/patches/python2-rdflib-drop-sparqlwrapper.patch	\
   %D%/packages/patches/python-statsmodels-fix-tests.patch	\
   %D%/packages/patches/python-scikit-learn-fix-test-non-determinism.patch	\
diff --git a/gnu/packages/patches/python-pillow-fix-failing-tests.patch b/gnu/packages/patches/python-pillow-fix-failing-tests.patch
new file mode 100644
index 0000000000000000000000000000000000000000..df99b0db3500f7317aa8c19a9edb91db0123855b
GIT binary patch
literal 112346
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
QxB#UF3k`nQ6By|I9}OZozyJUM

literal 0
HcmV?d00001

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 101967a16..142354e7c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3739,7 +3739,9 @@ the OleFileIO module from PIL, the Python Image Library.")
        (uri (pypi-uri "Pillow" version))
        (sha256
         (base32
-         "09xmn7rl6840sli2iz1k3fgxfgmri2nqz6vkinmb9mgg8ifp2z59"))))
+         "09xmn7rl6840sli2iz1k3fgxfgmri2nqz6vkinmb9mgg8ifp2z59"))
+       (patch-flags '("-p1" "--binary"))
+       (patches (search-patches "python-pillow-fix-failing-tests.patch"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-nose"       ,python-nose)))
-- 
2.15.1

^ permalink raw reply related	[relevance 79%]

* [bug#29856] [PATCH core-updates] guix: python-build-system: Modify ".py" files in-place.
@ 2017-12-26 12:21 61% Danny Milosavljevic
  0 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2017-12-26 12:21 UTC (permalink / raw)
  To: 29856

* guix/build/python-build-system.scm (wrap-python-program): New variable.
(wrap-program*): New variable.
(wrap): Use wrap-program*.
---
 guix/build/python-build-system.scm | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/guix/build/python-build-system.scm b/guix/build/python-build-system.scm
index dd07986b9..f5f6b07f8 100644
--- a/guix/build/python-build-system.scm
+++ b/guix/build/python-build-system.scm
@@ -25,6 +25,7 @@
   #:use-module (guix build utils)
   #:use-module (ice-9 match)
   #:use-module (ice-9 ftw)
+  #:use-module (ice-9 rdelim)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
   #:export (%standard-phases
@@ -184,6 +185,32 @@ when running checks after installing the package."
                          configure-flags)))
     (call-setuppy "install" params use-setuptools?)))
 
+(define (wrap-python-program file-name vars)
+  "Wrap the given program as a Python script (in-place)"
+  (match vars
+    (("PYTHONPATH" 'prefix python-path)
+     (let ((pythonish-path (string-join python-path "', '")))
+       (with-atomic-file-replacement file-name
+         (lambda (in out)
+           (display (format #f "#!~a
+import sys
+sys.path = ['~a'] + sys.path
+" (which "python") pythonish-path) out)
+           (let loop ((line (read-line in 'concat)))
+             (if (eof-object? line)
+               #t
+               (begin
+                 (display line out)
+                 (loop (read-line in 'concat)))))))))))
+
+(define (wrap-program* file-name vars)
+  "Wrap the given program.
+   If FILE-NAME is ending in '.py', wraps it in a Python way.
+   Otherwise wraps it in a Bash way."
+  (if (string-suffix? ".py" file-name)
+    (wrap-python-program file-name vars)
+    (wrap-program file-name vars)))
+
 (define* (wrap #:key inputs outputs #:allow-other-keys)
   (define (list-of-files dir)
     (map (cut string-append dir "/" <>)
@@ -209,7 +236,7 @@ when running checks after installing the package."
                         (or (getenv "PYTHONPATH") ""))))))
     (for-each (lambda (dir)
                 (let ((files (list-of-files dir)))
-                  (for-each (cut wrap-program <> var)
+                  (for-each (cut wrap-program* <> var)
                             files)))
               bindirs)))
 

^ permalink raw reply related	[relevance 61%]

* [bug#29912] [PATCH] gnu: python-pillow: Add more fixes from upstream.
@ 2017-12-30 23:25 65% Kei Kebreau
  0 siblings, 0 replies; 200+ results
From: Kei Kebreau @ 2017-12-30 23:25 UTC (permalink / raw)
  To: 29912; +Cc: Kei Kebreau

The whole of upstream commit 13d84993717cffd64a2e1d7e3e6edb185973d559 is added
in this patch. Previously it was thought that only commit
7a5d215022903151971df85e1ce947af42803c5b was relevant to i686-linux test
failures. The whole of upstream commit 13d84993717cffd64a2e1d7e3e6edb185973d559
is added in this patch to fix the tests.

* gnu/packages/patches/python-pillow-fix-failing-tests.patch: Add more relevant
code changes from upstream.
---
 .../patches/python-pillow-fix-failing-tests.patch  | Bin 112373 -> 44277 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/gnu/packages/patches/python-pillow-fix-failing-tests.patch b/gnu/packages/patches/python-pillow-fix-failing-tests.patch
index 2575d6f612450b717f7577bce1d6f0e7e9f03309..66757b89c7cbdc2552d23669e311f0a8a06c9942 100644
GIT binary patch
delta 11300
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

literal 112373
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

-- 
2.15.1

^ permalink raw reply	[relevance 65%]

* [bug#29944] [PATCH 1/2] gnu: Add python2-pyro.
@ 2018-01-02 15:52 64% Konrad Hinsen
  0 siblings, 0 replies; 200+ results
From: Konrad Hinsen @ 2018-01-02 15:52 UTC (permalink / raw)
  To: 29944

* gnu/packages/python.scm (python2-pyro): New public variable.
---
 gnu/packages/python.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 07302c729..0dff54a1b 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -12180,3 +12180,32 @@ such as figshare or Zenodo.")
 
 (define-public python2-semver
   (package-with-python2 python-semver))
+
+(define-public python2-pyro
+  (package
+    (name "python2-pyro")
+    (version "3.16")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "Pyro" version))
+       (file-name (string-append "Pyro-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0y75wzdqbjy565rpxaxscav4j8xg060sa90lnmb7aypgaf251v8v"))))
+    (build-system python-build-system)
+    (arguments
+     ;; Pyro is not compatible with Python 3
+     `(#:python ,python-2
+       ;; Pyro has no test cases for automatic execution
+       #:tests? #f))
+    (home-page "http://pythonhosted.org/Pyro/")
+    (synopsis "Distributed object manager for Python")
+    (description "Pyro is a Distributed Object Technology system
+written in Python that is designed to be easy to use.  It resembles
+Java's Remote Method Invocation (RMI).  It has less similarity to CORBA,
+which is a system and language independent Distributed Object Technology
+and has much more to offer than Pyro or RMI.  Pyro 3.x is no
+longer maintained.  New projects should use Pyro4 instead, which
+is the new Pyro version that is actively developed.")
+    (license license:expat)))
-- 
2.14.3 (Apple Git-98)

^ permalink raw reply related	[relevance 64%]

* [bug#29945] [PATCH 2/2] gnu: Add python2-scientific.
@ 2018-01-02 15:53 62% Konrad Hinsen
  0 siblings, 0 replies; 200+ results
From: Konrad Hinsen @ 2018-01-02 15:53 UTC (permalink / raw)
  To: 29945

* gnu/packages/python.scm (python2-scientific): New public variable.
---
 gnu/packages/python.scm | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 0dff54a1b..875982645 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -12209,3 +12209,43 @@ and has much more to offer than Pyro or RMI.  Pyro 3.x is no
 longer maintained.  New projects should use Pyro4 instead, which
 is the new Pyro version that is actively developed.")
     (license license:expat)))
+
+(define-public python2-scientific
+  (package
+    (name "python2-scientific")
+    (version "2.9.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://bitbucket.org/khinsen/"
+                           "scientificpython/downloads/ScientificPython-"
+                           version ".tar.gz"))
+       (file-name (string-append "ScientificPython-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0fc69zhlsn9d2jvbzyjl9ah53vj598h84nkq230c83ahfvgzx5y3"))))
+    (build-system python-build-system)
+    (inputs
+     `(("netcdf" ,netcdf)))
+    (propagated-inputs
+     `(("python-numpy" ,python2-numpy-1.8)
+       ("python-pyro", python2-pyro)))
+    (arguments
+     ;; ScientificPython is not compatible with Python 3
+     `(#:python ,python-2
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'build
+           (lambda* (#:key inputs #:allow-other-keys)
+             (zero? (system* "python" "setup.py" "build"
+                             (string-append "--netcdf_prefix="
+                                            (assoc-ref inputs "netcdf")))))))))
+    (home-page "https://bitbucket.org/khinsen/scientificpython")
+    (synopsis "Python modules for scientific computing")
+    (description "ScientificPython is a collection of Python modules that are
+useful for scientific computing.  Most modules are rather general (Geometry,
+physical units, automatic derivatives, ...) whereas others are more
+domain-specific (e.g. netCDF and PDB support).  The library is currently
+not actively maintained and works only with Python 2 and NumPy < 1.9.")
+    (license license:cecill-c)))
-- 
2.14.3 (Apple Git-98)

^ permalink raw reply related	[relevance 62%]

* [bug#29958] [PATCH] gnu: Add python2-mmtk.
@ 2018-01-02 19:04 62% Konrad Hinsen
  0 siblings, 0 replies; 200+ results
From: Konrad Hinsen @ 2018-01-02 19:04 UTC (permalink / raw)
  To: 29958

* gnu/packages/python.scm (python2-mmtk): New public variable.
---
 gnu/packages/python.scm | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 875982645..eeafe159d 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -12249,3 +12249,43 @@ physical units, automatic derivatives, ...) whereas others are more
 domain-specific (e.g. netCDF and PDB support).  The library is currently
 not actively maintained and works only with Python 2 and NumPy < 1.9.")
     (license license:cecill-c)))
+
+(define-public python2-mmtk
+  (package
+    (name "python2-mmtk")
+    (version "2.7.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://bitbucket.org/khinsen/"
+                           "mmtk/downloads/MMTK-" version ".tar.gz"))
+       (file-name (string-append "MMTK-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1k4gsd50zja89dbzgy3aji7h4zpvbvdfrds7rxr3whqrsgcffnir"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("netcdf" ,netcdf)))
+    (propagated-inputs
+     `(("python-scientific" ,python2-scientific)
+       ("python-tkinter" ,python-2 "tk")))
+    (arguments
+     `(#:python ,python-2
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'includes-from-scientific
+           (lambda* (#:key inputs #:allow-other-keys)
+             (invoke "cp" "-r"
+                     (string-append
+                      (assoc-ref inputs "python-scientific")
+                      "/include/python2.7/Scientific")
+                     "Include/"))))))
+    (home-page "http://dirac.cnrs-orleans.fr/MMTK")
+    (synopsis "Python library for molecular simulation")
+    (description "MMTK is a library for molecular simulations with an emphasis
+on biomolecules.  It provides widely used methods such as Molecular Dynamics
+and normal mode analysis, but also basic routines for implementing new methods
+for simulation and analysis.  The library is currently not actively maintained
+and works only with Python 2 and NumPy < 1.9.")
+    (license license:cecill-c)))
-- 
2.14.3 (Apple Git-98)

^ permalink raw reply related	[relevance 62%]

* [bug#29958] [PATCH v2] gnu: Add python2-mmtk.
  @ 2018-01-04 22:34 62% ` Danny Milosavljevic
  0 siblings, 0 replies; 200+ results
From: Danny Milosavljevic @ 2018-01-04 22:34 UTC (permalink / raw)
  To: 29958; +Cc: Konrad Hinsen

From: Konrad Hinsen <konrad.hinsen@fastmail.net>

* gnu/packages/python.scm (python2-mmtk): New public variable.
---
 gnu/packages/python.scm | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3dde9af34..d64c9bf85 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -12249,3 +12249,44 @@ physical units, automatic derivatives, ...) whereas others are more
 domain-specific (e.g. netCDF and PDB support).  The library is currently
 not actively maintained and works only with Python 2 and NumPy < 1.9.")
     (license license:cecill-c)))
+
+(define-public python2-mmtk
+  (package
+    (name "python2-mmtk")
+    (version "2.7.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://bitbucket.org/khinsen/"
+                           "mmtk/downloads/MMTK-" version ".tar.gz"))
+       (file-name (string-append "MMTK-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1k4gsd50zja89dbzgy3aji7h4zpvbvdfrds7rxr3whqrsgcffnir"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("netcdf" ,netcdf)))
+    (propagated-inputs
+     `(("python-scientific" ,python2-scientific)
+       ("python-tkinter" ,python-2 "tk")))
+    (arguments
+     `(#:python ,python-2
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'includes-from-scientific
+           (lambda* (#:key inputs #:allow-other-keys)
+             (mkdir-p "Include/Scientific")
+             (copy-recursively
+                     (string-append
+                      (assoc-ref inputs "python-scientific")
+                      "/include/python2.7/Scientific")
+                     "Include/Scientific"))))))
+    (home-page "http://dirac.cnrs-orleans.fr/MMTK")
+    (synopsis "Python library for molecular simulation")
+    (description "MMTK is a library for molecular simulations with an emphasis
+on biomolecules.  It provides widely used methods such as Molecular Dynamics
+and normal mode analysis, but also basic routines for implementing new methods
+for simulation and analysis.  The library is currently not actively maintained
+and works only with Python 2 and NumPy < 1.9.")
+    (license license:cecill-c)))

^ permalink raw reply related	[relevance 62%]

* [bug#30017] [PATCH] gnu: ledger: Fix test failures.
@ 2018-01-07 18:39 69% ericbavier
  0 siblings, 0 replies; 200+ results
From: ericbavier @ 2018-01-07 18:39 UTC (permalink / raw)
  To: 30017; +Cc: Eric Bavier

From: Eric Bavier <bavier@member.fsf.org>

* gnu/packages/patches/ledger-revert-boost-python-fix.patch,
gnu/packages/patches/ledger-fix-uninitialized.patch: New patches.
* gnu/local.mk (dist_patch_DATA): Add them.
* gnu/packages/finance.scm (ledger)[source]: Use them.
---
 gnu/local.mk                                       |  2 ++
 gnu/packages/finance.scm                           |  6 +++-
 .../patches/ledger-fix-uninitialized.patch         | 27 +++++++++++++++
 .../patches/ledger-revert-boost-python-fix.patch   | 39 ++++++++++++++++++++++
 4 files changed, 73 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/ledger-fix-uninitialized.patch
 create mode 100644 gnu/packages/patches/ledger-revert-boost-python-fix.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index e9ee25e4a..7c84580e6 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -791,6 +791,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/ldc-disable-tests.patch			\
   %D%/packages/patches/ldc-1.1.0-disable-dmd-tests.patch	\
   %D%/packages/patches/ldc-1.1.0-disable-phobos-tests.patch	\
+  %D%/packages/patches/ledger-fix-uninitialized.patch		\
+  %D%/packages/patches/ledger-revert-boost-python-fix.patch	\
   %D%/packages/patches/liba52-enable-pic.patch			\
   %D%/packages/patches/liba52-link-with-libm.patch		\
   %D%/packages/patches/liba52-set-soname.patch			\
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 8d2b734d9..be208bd1c 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
+;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,6 +30,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system python)
+  #:use-module (gnu packages)
   #:use-module (gnu packages base)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
@@ -130,7 +132,9 @@ line client and a client based on Qt.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "12jlv3gsjhrja25q9hrwh73cdacd2l3c2yyn8qnijav9mdhnbw4h"))))
+                "12jlv3gsjhrja25q9hrwh73cdacd2l3c2yyn8qnijav9mdhnbw4h"))
+              (patches (search-patches "ledger-revert-boost-python-fix.patch"
+                                       "ledger-fix-uninitialized.patch"))))
     (build-system cmake-build-system)
     (arguments
      `(#:modules ((guix build cmake-build-system)
diff --git a/gnu/packages/patches/ledger-fix-uninitialized.patch b/gnu/packages/patches/ledger-fix-uninitialized.patch
new file mode 100644
index 000000000..e8d4a6dea
--- /dev/null
+++ b/gnu/packages/patches/ledger-fix-uninitialized.patch
@@ -0,0 +1,27 @@
+This fixes failures of tests "BaseLine_opt-datetime-format" and
+"BaseLine_opt-time-report", which were printing a unexpected trailing '*' on
+the last line of output, e.g.:
+
+  @@ -5,4 +5,4 @@
+     04/05/13 12:00 PM    04/05/13 01:30 PM       1.50h    Lunch
+     04/05/13 11:30 AM    04/05/13 12:00 PM       30.0m    Walk
+   --------------------------------------------------
+  -
+  +                                          *
+
+Reported upstream at
+https://groups.google.com/d/msg/ledger-cli/EeJUrUk8YDc/pIR-LOTVEAAJ
+
+diff --git a/src/account.h b/src/account.h
+index 1b97463d..f2555593 100644
+--- a/src/account.h
++++ b/src/account.h
+@@ -187,7 +187,7 @@ public:
+
+       datetime_t         earliest_checkin;
+       datetime_t         latest_checkout;
+-      bool               latest_checkout_cleared;
++      bool               latest_checkout_cleared = false;
+
+       std::set<path>     filenames;
+       std::set<string>   accounts_referenced;
diff --git a/gnu/packages/patches/ledger-revert-boost-python-fix.patch b/gnu/packages/patches/ledger-revert-boost-python-fix.patch
new file mode 100644
index 000000000..99f48f6e4
--- /dev/null
+++ b/gnu/packages/patches/ledger-revert-boost-python-fix.patch
@@ -0,0 +1,39 @@
+From 01220484f428a447e9b00e071a0d85185f30e1de Mon Sep 17 00:00:00 2001
+From: Alexis Hildebrandt <afh@surryhill.net>
+Date: Wed, 22 Jun 2016 15:43:37 +0200
+Subject: [PATCH] Revert "[python] Add fix for Boost.Python compile errors"
+
+This reverts commit 11590e134eafa768ccc4a171cc7fb216e906095f.
+---
+ src/py_commodity.cc | 3 ---
+ src/py_journal.cc   | 3 ---
+ 2 files changed, 6 deletions(-)
+
+diff --git a/src/py_commodity.cc b/src/py_commodity.cc
+index 5aafa6c..c457e64 100644
+--- a/src/py_commodity.cc
++++ b/src/py_commodity.cc
+@@ -243,9 +243,6 @@ namespace {
+
+ void export_commodity()
+ {
+-#if BOOST_VERSION >= 106000
+-  python::register_ptr_to_python< shared_ptr<commodity_pool_t> >();
+-#endif
+   class_< commodity_pool_t, shared_ptr<commodity_pool_t>,
+           boost::noncopyable > ("CommodityPool", no_init)
+     .add_property("null_commodity",
+diff --git a/src/py_journal.cc b/src/py_journal.cc
+index c1c38a9..879f954 100644
+--- a/src/py_journal.cc
++++ b/src/py_journal.cc
+@@ -232,9 +232,6 @@ void export_journal()
+           boost::noncopyable >("PostHandler")
+     ;
+
+-#if BOOST_VERSION >= 106000
+-  python::register_ptr_to_python< shared_ptr<collector_wrapper> >();
+-#endif
+   class_< collector_wrapper, shared_ptr<collector_wrapper>,
+           boost::noncopyable >("PostCollectorWrapper", no_init)
+     .def("__len__", &collector_wrapper::length)
--
2.15.1

^ permalink raw reply related	[relevance 69%]

* [bug#30055] [PATCH] gnu: pelican: Enable Markdown support.
@ 2018-01-10  3:08 65% Ben Sturmfels
  0 siblings, 0 replies; 200+ results
From: Ben Sturmfels @ 2018-01-10  3:08 UTC (permalink / raw)
  To: 30055; +Cc: Hartmut Goebel, Efraim Flashner

[-- Attachment #1: Type: text/plain, Size: 245 bytes --]

Hi Folks,

I just tried to build my Pelican blog on GuixSD and found that it didn't
process the Markdown input files. After adding the python-markdown
dependency, Pelican processes the Markdown files successfully. Patch
attached.

Regards,
Ben


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-pelican-Enable-Markdown-support.patch --]
[-- Type: text/x-patch, Size: 1066 bytes --]

From bf975bb381b4f441323f15f2522230353e3b435b Mon Sep 17 00:00:00 2001
From: Ben Sturmfels <ben@sturm.com.au>
Date: Wed, 10 Jan 2018 12:23:08 +1100
Subject: [PATCH] gnu: pelican: Enable Markdown support.

* gnu/packages/python.scm (pelican)[propagated-inputs]: Require
   python-markdown to provide Markdown feature from package description.
---
 gnu/packages/python.scm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 29fa2809a..9d13a10c8 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -2472,7 +2472,8 @@ interested parties to subscribe to events, or \"signals\".")
        ("python-blinker" ,python-blinker)
        ("python-unidecode" ,python-unidecode)
        ("python-six" ,python-six)
-       ("python-dateutil" ,python-dateutil)))
+       ("python-dateutil" ,python-dateutil)
+       ("python-markdown" ,python-markdown)))
     (home-page "http://getpelican.com/")
     (arguments
      `(;; XXX Requires a lot more packages to do unit tests :P
-- 
2.15.1


^ permalink raw reply related	[relevance 65%]

* [bug#30117] [PATCH] gnu: Add python-shapely and python2-shapely.
@ 2018-01-15  1:31 78% Kei Kebreau
  0 siblings, 0 replies; 200+ results
From: Kei Kebreau @ 2018-01-15  1:31 UTC (permalink / raw)
  To: 30117; +Cc: Kei Kebreau

* gnu/packages/python.scm (python-shapely, python2-shapely): New variables.
---
 gnu/packages/python.scm | 50 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 49 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 0b582e6b7..17422673f 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -41,7 +41,7 @@
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
+;;; Copyright © 2017, 2018 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com>
 ;;; Copyright © 2017 Brendan Tildesley <brendan.tildesley@openmailbox.org>
@@ -76,6 +76,7 @@
   #:use-module (gnu packages file)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages geo)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
@@ -470,6 +471,53 @@ pidof, tty, taskset, pmap.")
 (define-public python2-psutil
   (package-with-python2 python-psutil))
 
+(define-public python-shapely
+  (package
+    (name "python-shapely")
+    (version "1.6.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "Shapely" version))
+       (sha256
+        (base32
+         "0svc58dzcw9gj92b4sgq35sdxkf85z0qwlzxarkzq4bp3h8jy58l"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-cython" ,python-cython)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-pyqt" ,python-pyqt)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-cov" ,python-pytest-cov)))
+    (inputs
+     `(("geos" ,geos)))
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-geos-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((geos (assoc-ref inputs "geos"))
+                   (glibc (assoc-ref inputs ,(if (%current-target-system)
+                                                 "cross-libc" "libc"))))
+               (substitute* "shapely/geos.py"
+                 (("_lgeos = load_dll\\('geos_c', fallbacks=.*\\)")
+                  (string-append "_lgeos = load_dll('geos_c', fallbacks=['"
+                                 geos "/lib/libgeos_c.so'])"))
+                 (("free = load_dll\\('c'\\)\\.free")
+                  (string-append "free = load_dll('c', fallbacks=['"
+                                 glibc "/lib/libc.so.6']).free"))))
+             #t)))))
+    (home-page
+     "https://github.com/Toblerity/Shapely")
+    (synopsis "Library for the manipulation and analysis of geometric objects")
+    (description "Geometric objects, predicates, and operations")
+    (license license:bsd-3)))
+
+(define-public python2-shapely
+  (package-with-python2 python-shapely))
+
 (define-public python-clyent
   (package
     (name "python-clyent")
-- 
2.15.1

^ permalink raw reply related	[relevance 78%]

* [bug#30135] [PATCH] gnu: python-matplotlib: Fix import failure
@ 2018-01-15 15:22 65% Konrad Hinsen
  0 siblings, 0 replies; 200+ results
From: Konrad Hinsen @ 2018-01-15 15:22 UTC (permalink / raw)
  To: 30135

* gnu/packages/python.scm (python-matplotlib)[propagated-inputs]: Add
  python-pyqt.
---
 gnu/packages/python.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 0b582e6b7..0a7ca2e77 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3213,6 +3213,7 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
        ;; object. For this reason we need to import both libraries.
        ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
        ("python-pycairo" ,python-pycairo)
+       ("python-pyqt" ,python-pyqt)
        ("python-cairocffi" ,python-cairocffi)))
     (inputs
      `(("libpng" ,libpng)
@@ -3222,7 +3223,6 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
        ("glib" ,glib)
        ;; FIXME: Add backends when available.
        ;("python-wxpython" ,python-wxpython)
-       ("python-pyqt" ,python-pyqt)
        ("tcl" ,tcl)
        ("tk" ,tk)))
     (native-inputs
-- 
2.14.3 (Apple Git-98)

^ permalink raw reply related	[relevance 65%]

* bug#30189: Retux game halts after preloading levels (missing ucd.sqlite uniseg database)
       [not found]       ` <87tvvfmyqy.fsf@sturm.com.au>
@ 2018-01-21  8:01 83%     ` Ben Sturmfels
  0 siblings, 0 replies; 200+ results
From: Ben Sturmfels @ 2018-01-21  8:01 UTC (permalink / raw)
  To: guix-patches; +Cc: 30189, Kei Kebreau


[-- Attachment #1.1: Type: text/plain, Size: 1677 bytes --]

Whoops, forgot to include guix-patches.

On Sun, 21 Jan 2018, Ben Sturmfels wrote:

> Thanks Gábor, adding zipfile fixes the build and Retux now runs.
>
> Patch attached and CC'd to guix-patches.
>
> Regards,
> Ben
>
> On Sun, 21 Jan 2018, Gábor Boskovits wrote:
>
>> I think unzip should be added to native-inputs. Can you try that?
>>
>> 2018-01-21 4:46 GMT+01:00 Ben Sturmfels <ben@sturm.com.au>:
>>
>>  Hi Folks,
>>
>>  I'd like to play the Retux game, but while the game starts up it
>>  crashes
>>  on me after the "preloading levels" screen.
>>
>>  There's no useful console output, but when running in the debugger, I
>>  see that the python-uniseg package is looking for a file called
>>  ucd.sqlite3 that doesn't exist, some kind of Unicode letter spacing
>>  database that's not present in the BitBucket repository.
>>
>>  python3 -m pdb -c continue \
>>  "/gnu/store/57psnlgdyri8phkxzasaf6q0gb8nskpz-retux-1.3.5/bin/.retux-real"
>>  
>>
>>  See uniseg/db.py:107 and 21. Since it's also looking in the current
>>  directory, I tried downloading ucd.sqlite3 from the PyPI zip package -
>>  that fixes the issue.
>>
>>  The python-uniseg package downloads the source from BitBucket, so
>>  I
>>  tried changing that to PyPI:
>>
>>  (uri (pypi-uri "uniseg" version ".zip"))
>>
>>  which downloads ok, but fails but the fails at the unpack phase
>>  without
>>  any details. Should Guix know how to unpack a .zip? Or maybe I
>>  should
>>  coerce the maintainer to publish a .tar.gz?
>>
>>  Currently Retux is the only program that uses python-uniseg (via
>>  python-sge-pygame dependency).
>>
>>  Regards,
>>  Ben

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-gnu-python-uniseg-Switch-to-PyPi-source-to-get-missi.patch --]
[-- Type: text/x-patch, Size: 1394 bytes --]

From 42c1e69526ec9781e3f7290fb74e2a561131e3be Mon Sep 17 00:00:00 2001
From: Ben Sturmfels <ben@sturm.com.au>
Date: Sun, 21 Jan 2018 18:43:07 +1100
Subject: [PATCH] gnu: python-uniseg: Switch to PyPi source to get missing
 ucd.sqlite3.

* gnu/packages/python.scm (python-uniseg): Use PyPI, add zipfile dependency to
  unpack.
---
 gnu/packages/python.scm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 0b582e6b7..2f1c20e31 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -773,15 +773,15 @@ Python 3 support.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://bitbucket.org/emptypage/uniseg-python/"
-                           "get/rel-" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (uri (pypi-uri "uniseg" version ".zip"))
        (sha256
         (base32
-         "1df4gddnj2a0v8z35wb2ra5vvh1f1qyxs8fgd25c8g64031mna6x"))))
+         "05jsazvz6nbmh6l3v1rph5ydkqn1hzx1pyggdyvgp2qgmgrnmiz2"))))
     (build-system python-build-system)
     (arguments
      '(#:tests? #f)) ; The test suite requires network access.
+    (native-inputs
+     `(("unzip" ,unzip)))
     (home-page
      "https://bitbucket.org/emptypage/uniseg-python")
     (synopsis
-- 
2.15.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

^ permalink raw reply related	[relevance 83%]

Results 1-200 of ~3995   | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2017-04-08 12:17 75% bug#26401: [PATCH] python-tryton (with no modules) Catonano
2017-05-08 14:33     ` Arun Isaac
2017-05-15 19:17 71%   ` Catonano
     [not found]         ` <c3fa946d.AEMAKXA0lrIAAAAAAAAAAAOu6r8AAAACwQwAAAAAAAW9WABZGzM6@mailjet.com>
2017-05-16 18:41           ` Catonano
     [not found]             ` <4d3632b9.AEEAKq6kKpkAAAAAAAAAAAOu6r8AAAACwQwAAAAAAAW9WABZG-Wd@mailjet.com>
2017-05-17  7:45               ` Catonano
     [not found]                 ` <7e6e3d0c.ADsAALmm2EQAAAAAAAAAAAOu6r8AAAACwQwAAAAAAAW9WABZHd6n@mailjet.com>
2017-05-20  7:39 74%               ` Catonano
2017-05-22 21:13 80%                 ` Arun Isaac
     [not found]     <20170215100241.7l5doqgev53yxbf4@wasp>
     [not found]     ` <20170323114011.ko5xf6uq2if4aq23@abyayala>
2017-04-08 16:39 38%   ` bug#25736: postorius (mailman) ng0
2017-04-11  0:33 54% bug#26438: [PATCH] Add fabric, python-paramiko: Update to 1.17.4 Ben Sturmfels
2017-04-15 18:59 91% bug#26524: Add conda and dependencies Frederick Muriithi
2017-04-27 15:55 65% ` bug#26524: [PATCH 1/3] gnu: Add python-radon Muriithi Frederick Muriuki
2017-05-25  8:42 63% ` bug#26524: [PATCH] " Frederick Muriithi
2017-05-28 15:32 65% ` bug#26524: [PATCH 1/5] gnu: Add python-sure Muriithi Frederick Muriuki
2017-05-28 15:32 65%   ` bug#26524: [PATCH 2/5] gnu: Add python2-couleur Muriithi Frederick Muriuki
2017-05-28 15:32 63%   ` bug#26524: [PATCH 3/5] gnu: Add python-misaka Muriithi Frederick Muriuki
2017-05-28 15:32 63%   ` bug#26524: [PATCH 4/5] gnu: Add python2-steadymark Muriithi Frederick Muriuki
2017-06-04 12:44 62%     ` Marius Bakke
2017-05-28 15:32 63%   ` bug#26524: [PATCH 5/5] gnu: Add python-nose-randomly Muriithi Frederick Muriuki
2017-06-04 12:15 83%   ` bug#26524: [PATCH 1/5] gnu: Add python-sure Marius Bakke
2017-06-11  1:07 65% ` bug#26524: [PATCH 1/3] gnu: python-sphinx-rtd-theme: Update to 0.2.4 Muriithi Frederick Muriuki
2017-06-11  1:07 65%   ` bug#26524: [PATCH 2/3] gnu: Add python2-rednose Muriithi Frederick Muriuki
2017-06-11  1:07 62%   ` bug#26524: [PATCH 3/3] gnu: Add python2-httpretty Muriithi Frederick Muriuki
2017-04-18 16:35 47% bug#26554: [PATCH] Enable tests for package fabric Ben Sturmfels
2017-04-22 21:13 83% bug#26613: Add pootle Julien Lepiller
2017-04-23  0:33     ` Leo Famulari
2017-04-23 15:25 94%   ` Julien Lepiller
2017-04-23 16:36     bug#26622: [PATCH] Add freexl Catonano
2017-04-25 20:16     ` Ricardo Wurmus
2017-04-25 20:33       ` Catonano
2017-04-25 20:41         ` Catonano
2017-04-26  6:45           ` Ricardo Wurmus
2017-04-26  7:52             ` Catonano
2017-04-27 10:54               ` Ricardo Wurmus
2017-04-28 16:40 60%             ` Catonano
2017-04-29 17:58                   ` Catonano
2017-04-29 18:02 57%                 ` Catonano
2017-04-28 12:42 65% bug#26692: [PATCH] gnu: python-openid: Fix tests Danny Milosavljevic
2017-04-28 12:52 65% ` bug#26692: [PATCH v2] gnu: python-openid: Fix package Danny Milosavljevic
2017-04-28 19:30 65% bug#26700: [PATCH] python-sphinxcontrib-programoutput: Update to 0.10 Christopher Allan Webber
2017-04-30 21:40     bug#26722: [PATCH] Add tailon Christopher Baines
2017-04-30 21:44 65% ` bug#26722: [PATCH 1/3] gnu: Add python-sockjs-tornado Christopher Baines
2017-04-30 21:44 65%   ` bug#26722: [PATCH 2/3] gnu: python-tornado: Update to 4.5.1 Christopher Baines
2017-05-01 19:22 65% ` bug#26722: [PATCH 1/3] gnu: Add python-sockjs-tornado Christopher Baines
2017-05-01 19:22 65%   ` bug#26722: [PATCH 2/3] gnu: python-tornado: Update to 4.5.1 Christopher Baines
2017-05-01 10:00     bug#26731: [Patch 0/2] Add python-flask-oidc and dependencies Danny Milosavljevic
2017-05-01 10:01 65% ` bug#26731: [PATCH 1/2] gnu: Add python-oauth2client Danny Milosavljevic
2017-05-01 10:01 65%   ` bug#26731: [PATCH 2/2] gnu: Add python-flask-oidc Danny Milosavljevic
2017-05-02  7:32 65% bug#26743: [PATCH] gnu: python-pytest-cov: Update to 2.4.0 Danny Milosavljevic
2017-05-02  8:18 65% bug#26744: [PATCH] gnu: Add python-mwclient Danny Milosavljevic
2017-05-04 10:04     bug#26772: [PATCH 0/3] Fix guix refresh errors Mathieu Othacehe
2017-05-04 10:06 65% ` bug#26772: [PATCH 1/3] gnu: python-termcolor: Fix uri Mathieu Othacehe
     [not found]     <20170507022943.20427-1-fredmanglis@gmail.com>
2017-05-07  2:29 65% ` bug#26524: [PATCH 4/4] gnu: Add python-sure Muriithi Frederick Muriuki
2017-05-07 18:46 69% bug#26818: Certbot with Python 3 Leo Famulari
2017-05-10 17:57 65% bug#26868: [PATCH] gnu: python-pytest-runner: Update to 2.11.1 Roel Janssen
2017-05-11  2:41     bug#26872: [PATCH 1/4] gnu: libpwquality: fix source URL Ethan R. Jones
2017-05-11  2:41 65% ` bug#26872: [PATCH 3/4] gnu: python2-dogtail: fix homepage URL python-kitchen: fix homepage URL Ethan R. Jones
2017-05-12 20:05 65% bug#26900: [PATCH] gnu: Enable python-parse-type tests Danny Milosavljevic
2017-05-12 20:35 64% ` bug#26900: [PATCH v2] " Danny Milosavljevic
2017-05-13  8:52 65% bug#26906: [PATCH] gnu: Add python-behave-web-api Danny Milosavljevic
2017-05-22 20:14 65% bug#27026: [PATCH] gnu: python-cairocffi: Update to 0.8.0 José Miguel Sánchez García
     [not found]     ` <a71ab1b3.AEAAKdIQjMIAAAAAAAAAAAPCjAEAAAACwQwAAAAAAAW9WABZI4vx@mailjet.com>
2017-05-23 15:39 76%   ` José Miguel Sánchez García
2017-05-25 17:51     bug#27071: [PATCH 0/3] Add flask-script, flask-migrate, flasgger Danny Milosavljevic
2017-05-25 17:57 65% ` bug#27071: [PATCH 1/3] gnu: Add python-flask-script Danny Milosavljevic
2017-05-25 17:57 65%   ` bug#27071: [PATCH 2/3] gnu: Add python-flask-migrate Danny Milosavljevic
2017-05-25 17:57 65%   ` bug#27071: [PATCH 3/3] gnu: Add python-flasgger Danny Milosavljevic
2017-05-25 19:30 81% bug#27074: [PATCH] gnu: Add python-ansi2html Stefan Reichör
2017-05-25 21:28 83% ` Marius Bakke
2017-05-25 21:55 65% bug#27077: [PATCH] gnu: python-xcffib: Update to 0.5.1 José Miguel Sánchez García
2017-05-25 22:40     ` Marius Bakke
2017-05-26 14:54 75%   ` José Miguel Sánchez García
2017-05-26  7:38     bug#27081: Update python-cryptography to 1.8.1 Leo Famulari
2017-05-26  7:41 65% ` bug#27081: [PATCH 1/2] gnu: Add python-packaging Leo Famulari
2017-05-26  7:41 63%   ` bug#27081: [PATCH 2/2] gnu: python-cryptography: Update to 1.8.1 Leo Famulari
2017-05-27 13:54     bug#27071: [PATCH 3/3] gnu: Add python-flasgger Danny Milosavljevic
2017-06-03  6:22     ` bug#27071: [PATCH v2 0/8] Add python-flasgger and its dependencies Danny Milosavljevic
2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 1/8] gnu: Add python-jsonpointer Danny Milosavljevic
2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 2/8] gnu: Add python-rfc3987 Danny Milosavljevic
2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 3/8] gnu: Add python-validate-email Danny Milosavljevic
2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 4/8] gnu: Add python-flex Danny Milosavljevic
2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 5/8] gnu: Add python-marshmallow Danny Milosavljevic
2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 6/8] gnu: Add python-bottle Danny Milosavljevic
2017-06-03  6:22 65%   ` bug#27071: [PATCH v2 7/8] gnu: Add python-apispec Danny Milosavljevic
2017-06-03  6:22 63%   ` bug#27071: [PATCH v2 8/8] gnu: Add python-flasgger Danny Milosavljevic
2017-05-31  7:05 65% bug#27160: [PATCH] gnu: scons: Update to 2.5.1 Roel Janssen
2017-05-31 20:08 75% bug#27174: [PATCH] gpu: packages: python-file: drop outdated patch Sergei Trofimovich
2017-06-04 12:49 65% bug#27232: [PATCH] gnu: python-apsw: Build with all extensions Jelle Licht
2017-06-04 16:19     ` Danny Milosavljevic
2017-07-20  9:29       ` [bug#27232] " Ludovic Courtès
2017-07-27 13:38 64%     ` Jelle Licht
2017-06-12 19:07 28% [bug#27347] [PATCH] gnu: Move contents of zip module into compression module Arun Isaac
2017-06-15 15:39     [bug#27382] Patches for python-updates Muriithi Frederick Muriuki
2017-06-15 15:39 65% ` [bug#27381] [PATCH 1/2] gnu: python-pbr-minimal: Update to 3.0.1 Muriithi Frederick Muriuki
2017-06-15 15:39 65% ` [bug#27380] [PATCH 2/2] gnu: python-mock: Update to 2.0.0 Muriithi Frederick Muriuki
2017-06-16 21:21 60% [bug#27400] [PATCH] gnu: Add python-apache-libcloud Danny Milosavljevic
2017-06-18 18:50     [bug#27423] gnu: Add python2-xenon Frederick Muriithi
2017-06-18 18:53 63% ` [bug#27423] [PATCH] " Muriithi Frederick Muriuki
2017-06-24  3:56 63% ` [bug#27423] [PATCH] gnu: Add python-xenon Muriithi Frederick Muriuki
2017-06-21 11:00     [bug#27440] [PATCH 0/4] Add Xpra Rutger Helling
2017-06-21 11:05 65% ` [bug#27440] [PATCH 1/4] gnu: python: Add python2-pyopengl Rutger Helling
2017-06-22 19:46       ` Ludovic Courtès
2017-06-22 20:42 61%     ` Rutger Helling
2017-06-23  3:55 61%       ` Rutger Helling
2017-06-21 11:05 65% ` [bug#27440] [PATCH 2/4] gnu: python: Add python-rencode Rutger Helling
2017-06-21 11:06 65% ` [bug#27440] [PATCH 3/4] gnu: python: Add python2-rencode Rutger Helling
2017-06-22 19:21 81% [bug#27451] [PATCH] gnu: Add python-uniseg Kei Kebreau
2017-07-01 14:44 63% [bug#27548] [PATCH] gnu: Add python-xenon Muriithi Frederick Muriuki
2017-07-03  3:47 64% [bug#27558] [PATCH] gnu: Add python-ruamel.yaml Muriithi Frederick Muriuki
2017-07-11 23:17 64% ` Muriithi Frederick Muriuki
2017-07-10  7:29 62% [bug#27637] [PATCH] gnu: Add python-conda Frederick Muriithi
2017-07-15  7:19     [bug#27699] [PATCH 0/4] gnu: Add python-internetarchive Oleg Pykhalov
2017-07-15  7:19 65% ` [bug#27701] [PATCH 1/4] gnu: Add python-schema Oleg Pykhalov
2017-07-15  7:19 65% ` [bug#27700] [PATCH 2/4] gnu: Add python-backports-csv Oleg Pykhalov
2017-07-15  7:19 64% ` [bug#27702] [PATCH 3/4] gnu: Add python-jsonpatch Oleg Pykhalov
2017-07-17 20:03     [bug#27740] [PATCH 1/3] gnu: Add python-xapian-bindings Ricardo Wurmus
2017-07-17 20:03 64% ` [bug#27741] [PATCH 2/3] gnu: Add python-sphinxcontrib-websupport Ricardo Wurmus
2017-07-17 20:03 65% ` [bug#27742] [PATCH 3/3] gnu: Add python-sphinx-1.6 Ricardo Wurmus
2017-07-20  9:22     [bug#27461] [PATCH] gnu: Add z3 Ludovic Courtès
2017-07-25 16:11     ` [bug#27461] [PATCH v2 1/2] " Theodoros Foradis
2017-07-25 16:11 65%   ` [bug#27461] [PATCH v2 2/2] gnu: Add python2-z3 Theodoros Foradis
2017-07-25 18:50 65% [bug#27827] [PATCH] gnu: python2-urwid: Actually build urwid for Python 2 Kei Kebreau
2017-07-27 15:04 61% [bug#27851] Update eyed3. ([PATCH 1/2] gnu: Add python-grako) Thomas Danckaert
     [not found]     <handler.27888.B.150153147718000.ack@debbugs.gnu.org>
2017-07-31 20:07 51% ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Marius Bakke
2017-07-31 20:07 65%   ` [bug#27888] [PATCH 02/18] gnu: python-py: Update to 1.4.34 Marius Bakke
2017-07-31 20:07 65%   ` [bug#27888] [PATCH 03/18] gnu: python-six: Really enable tests Marius Bakke
2017-07-31 20:07 40%   ` [bug#27888] [PATCH 04/18] gnu: Remove python-pytest@2 Marius Bakke
2017-07-31 20:07 54%   ` [bug#27888] [PATCH 05/18] gnu: python-pytest: Add a minimal variant for bootstrapping Marius Bakke
2017-07-31 20:07 65%   ` [bug#27888] [PATCH 06/18] gnu: python-setuptools-scm: Update to 1.15.6 Marius Bakke
2017-07-31 20:07 65%   ` [bug#27888] [PATCH 07/18] gnu: python-pytest: Update to 3.1.3 Marius Bakke
2017-07-31 20:07 65%   ` [bug#27888] [PATCH 08/18] gnu: python-pyflakes: Update to 1.5.0 Marius Bakke
2017-07-31 20:07 65%   ` [bug#27888] [PATCH 09/18] gnu: python-mccabe: Update to 0.6.1 Marius Bakke
2017-07-31 20:07 65%   ` [bug#27888] [PATCH 10/18] gnu: python-mock@2: Add dependency on python-six Marius Bakke
2017-07-31 20:07 65%   ` [bug#27888] [PATCH 11/18] gnu: Add python2-enum Marius Bakke
2017-07-31 20:07 58%   ` [bug#27888] [PATCH 12/18] gnu: python-flake8: Update to 3.4.1 Marius Bakke
2017-07-31 20:07 65%   ` [bug#27888] [PATCH 13/18] gnu: Add python-linecache2 Marius Bakke
2017-07-31 20:07 65%   ` [bug#27888] [PATCH 14/18] gnu: Add python-traceback2 Marius Bakke
2017-07-31 20:07 71%   ` [bug#27888] [PATCH 15/18] gnu: python-unittest2: Update to 1.1.0 Marius Bakke
2017-07-31 20:07 65%   ` [bug#27888] [PATCH 16/18] gnu: Add python2-funcsigs Marius Bakke
2017-07-31 20:07 53%   ` [bug#27888] [PATCH 17/18] gnu: python-mock: Make 2.0 the default package Marius Bakke
2017-07-31 20:07 65%   ` [bug#27888] [PATCH 18/18] gnu: python-hypothesis: Update to 3.14.0 Marius Bakke
2017-07-31 23:07       ` [bug#27888] [PATCH 01/18] gnu: python@3: Update to 3.6.2 Leo Famulari
2017-08-01  0:30         ` Marius Bakke
2017-10-18 21:17           ` Ricardo Wurmus
2017-10-18 22:30             ` bug#27888: " Marius Bakke
2017-10-18 23:36 65%           ` [bug#27888] " Cyril Roelandt
2017-08-01  7:18     [bug#27898] Clean-up of package phases Kei Kebreau
2017-08-01  7:21  3% ` [bug#27898] [PATCH 1/2] gnu: Use 'modify-phases' syntax Kei Kebreau
2017-08-02 19:49 65% [bug#27922] [PATCH] gnu: python-numpy: Update to 1.12.1 Leo Famulari
2017-08-05  2:07     [bug#27961] [PATCH 0/5] Update python-orator, Move to databases.scm Ben Woodcroft
2017-08-05  2:09 64% ` [bug#27961] [PATCH 1/5] gnu: Add python-backpack Ben Woodcroft
2017-08-05  2:09 62%   ` [bug#27961] [PATCH 4/5] gnu: python-orator: Update to 0.9.7 Ben Woodcroft
2017-08-05  2:10 54%   ` [bug#27961] [PATCH 5/5] gnu: python-orator: Move to (gnu packages databases) Ben Woodcroft
2017-08-09  7:29     [bug#28024] [PATCH] Upgrade Tailon from 1.1.1 to 1.3.0 Christopher Baines
2017-08-09  8:06 65% ` [bug#28024] [PATCH 1/5] gnu: Add python-tornado-http-auth Christopher Baines
2017-08-11 18:49 65% [bug#28052] [PATCH] gnu: python-pylint: Use Python2 variant system Danny Milosavljevic
2017-08-19 19:49 65% [bug#28151] [PATCH] gnu: Add honcho Stefan Reichör
2017-08-21 22:00     ` Marius Bakke
2017-08-22 19:42       ` Stefan Reichör
2017-08-22 20:21         ` Marius Bakke
2017-08-23 20:23 60%       ` Stefan Reichör
2017-08-20  5:15     [bug#28155] Update electrum to 2.9.3 Carlo Zancanaro
2017-08-20  5:40 65% ` [bug#28155] [PATCH 1/3] gnu: Add python-pysocks Carlo Zancanaro
2017-08-20  5:40 65%   ` [bug#28155] [PATCH 2/3] gnu: Add python-pyaes Carlo Zancanaro
2017-08-25 18:22     [bug#28235] [PATCH] Update calibre to 3.6.0 Roel Janssen
2017-08-25 18:25 65% ` [bug#28235] [PATCH 1/3] gnu: Update python-lxml to 3.8.0 Roel Janssen
2017-08-25 18:26 64% ` [bug#28235] [PATCH 2/3] gnu: Add python-html5-parser, python2-html5-parser Roel Janssen
2017-08-28  2:47 42% [bug#28259] [PATCH] Update e-mail for Kei Kebreau Kei Kebreau
2017-08-29 19:57     [bug#28282] Add tests for a python2-cliapp, python2-ttystatus and python2-larch Arun Isaac
2017-08-29 20:09 83% ` [bug#28282] [PATCH 1/3] gnu: python2-cliapp: Enable tests Arun Isaac
     [not found]     <20170829200905.30771-1-arunisaac@systemreboot.net>
2017-08-29 20:09 83% ` [bug#28282] [PATCH 2/3] gnu: python2-ttystatus: " Arun Isaac
2017-08-29 20:09 74% ` [bug#28282] [PATCH 3/3] gnu: python2-larch: " Arun Isaac
2017-09-06  8:18 65% [bug#28364] [PATCH] gnu: Add python-betamax-matchers Oleg Pykhalov
2017-09-06  8:18 65% [bug#28363] [PATCH] gnu: Add python-uritemplate Oleg Pykhalov
2017-09-07 16:43     [bug#28384] [PATCH] gnu: Fix build failures caused by commit Kei Kebreau
2017-09-08 15:43     ` Ludovic Courtès
2017-09-08 16:41  6%   ` Kei Kebreau
2017-09-11 22:17     [bug#28424] [PATCH 0/2] Unbundle sqlite from python-apsw Jelle Licht
2017-09-11 22:17 65% ` [bug#28426] [PATCH 2/2] gnu: python-apsw: Update to 3.20.1-r1 Jelle Licht
2017-09-14 19:43 65% [bug#28463] [PATCH] gnu: Add python-schedule Stefan Reichör
2017-09-15 14:45 65% ` bug#28463: " Ludovic Courtès
2017-09-25 12:18 95% [bug#28594] nototools (required for building Noto from source) ng0
2017-10-01 18:41 95% ` ng0
2017-10-01 18:47 95%   ` ng0
2017-10-13  7:12         ` Christopher Baines
2017-10-13  8:23           ` ng0
2017-10-13 19:34             ` Christopher Baines
2017-10-13 20:00               ` ng0
2017-10-14  6:32                 ` Christopher Baines
2017-10-20 20:09 94%               ` ng0
2017-09-26  9:53     [bug#27922] [PATCH] gnu: python-numpy: Update to 1.12.1 Thomas Danckaert
2017-09-26 11:48     ` Ludovic Courtès
2017-09-26 15:46       ` Leo Famulari
2017-09-26 16:59 58%     ` Thomas Danckaert
2017-09-26 20:08           ` Ludovic Courtès
2017-09-27  6:36 60%         ` Thomas Danckaert
2017-10-01 12:44 60% [bug#28660] [PATCH] gnu: python-numpy: Give sh store location instead of setting $SHELL Thomas Danckaert
2017-10-03  1:19     [bug#28677] [PATCH 0/4] Update python2-unittest2 Cyril Roelandt
2017-10-03  1:19 65% ` [bug#28678] [PATCH 1/4] gnu: python-netaddr: Fix the source URL Cyril Roelandt
2017-10-03  1:19 65% ` [bug#28676] [PATCH 2/4] gnu: Add python-linecache2 Cyril Roelandt
2017-10-03  1:19 65% ` [bug#28679] [PATCH 3/4] gnu: Add python-traceback2 Cyril Roelandt
2017-10-03  1:19 64% ` [bug#28680] [PATCH 4/4] gnu: python2-unittest2: Update to 1.1.0 Cyril Roelandt
2017-10-03 22:57 65% [bug#28693] [PATCH] gnu: Add missing input to python-py3status Tomáš Čech
2017-10-04  6:59     Christopher Baines
2017-10-05 21:24 64% ` [bug#28693] [PATCH] gnu: Add missing input to python-py3status and fix call path Tomáš Čech
2017-10-06 20:26     [bug#28726] [PATCH 1/5] gnu: django: Fix the build for python-django-gravatar2 Christopher Baines
2017-10-06 20:27 65% ` [bug#28726] [PATCH 4/5] gnu: python: Disable tests for python-graphene Christopher Baines
2017-10-06 20:27 65% ` [bug#28726] [PATCH 5/5] gnu: python: Update python-sqlparse Christopher Baines
2017-10-08  4:35     [bug#28739] [PATCH 0/5] Update python{,2}-a* Cyril Roelandt
2017-10-08  4:35 65% ` [bug#28738] [PATCH 1/5] gnu: python-apispec: Update to 0.25.3 Cyril Roelandt
2017-10-08  4:35 65% ` [bug#28737] [PATCH 2/5] gnu: python-arrow: Update to 0.10.0 Cyril Roelandt
2017-10-08  4:35 65% ` [bug#28740] [PATCH 3/5] gnu: python-alembic: Update to 0.9.5 Cyril Roelandt
2017-10-08  4:35 65% ` [bug#28741] [PATCH 4/5] gnu: python-aniso8601: Update to 1.3.0 Cyril Roelandt
2017-10-08  4:35 65% ` [bug#28742] [PATCH 5/5] gnu: Add python2-aniso8601 Cyril Roelandt
2017-10-08 15:14 65% [bug#28748] [PATCH] gnu: Add python-guzzle-sphinx-theme Tobias Geerinckx-Rice
2017-10-08 16:03     [bug#28726] [PATCH 1/6] gnu: django: Fix the build for python-django-gravatar2 Christopher Baines
2017-10-08 16:03 65% ` [bug#28726] [PATCH 4/6] gnu: python: Disable tests for python-graphene Christopher Baines
2017-10-08 16:03 65% ` [bug#28726] [PATCH 5/6] gnu: python: Update python-sqlparse Christopher Baines
2017-10-10 11:27 63% [bug#28778] [PATCH 1/2] gnu: Add python2-neo4j-driver Roel Janssen
2017-10-10 11:31 65% ` [bug#28778] [PATCH 2/2] gnu: Add python2-py2neo Roel Janssen
2017-10-11  9:06 63% [bug#28782] [PATCH] gnu: Add python-jupyter-console as input to python-ipython Christopher Baines
2017-10-11 10:42 60% [bug#28783] Some of the python-autobahn dependencies ng0
2017-10-18  7:02     [bug#28887] [PATCH 0/1] gnu: Add python-hy Oleg Pykhalov
2017-10-18  7:04 65% ` [bug#28887] [PATCH 1/1] " Oleg Pykhalov
2017-10-21 23:49 91% [bug#28934] ROCA detect ng0
2017-10-26  4:59 51% ` bug#28934: " Ludovic Courtès
2017-11-03 15:43     [bug#29136] [PATCH 1/5] gnu: calibre: Update to 3.11.1 Brendan Tildesley
2017-11-03 15:44 65% ` [bug#29136] [PATCH 2/5] gnu: Add python-dukpy, python2-dukpy Brendan Tildesley
2017-11-04 19:36 65% [bug#29144] [PATCH 1/3] gnu: Add pydot Gábor Boskovits
2017-11-04 19:39 65% [bug#29145] [PATCH 2/3] gnu: python-decorator: Update to 4.1.2 Gábor Boskovits
2017-11-04 20:45 72% [bug#29146] [PATCH] gnu: add python-networkx2 Gábor Boskovits
2017-11-05 16:39     ` Marius Bakke
2017-11-06 10:56       ` Gábor Boskovits
2017-11-07 20:23 76%     ` bug#29146: " Marius Bakke
2017-11-06 11:15 74% ` [bug#29146] " Gábor Boskovits
2017-11-06 11:49 73% [bug#29169] Update electrum to 3.0 Carlo Zancanaro
2017-11-06 11:56 81% ` [bug#29169] Updated patch for python-jsonrpclib-pelix Carlo Zancanaro
2017-11-06 22:36 64%   ` Ludovic Courtès
2017-11-10 12:03 81% [bug#29242] [PATCH] gnu: python-sympy: Update to 1.1.1 Alex Vong
2017-11-10 12:23 83% [bug#29243] [PATCH] gnu: python2-rpython: Update to 0.2.1 Alex Vong
2017-11-22  8:41     [bug#29392] [PATCH 00/11] New scons build system Arun Isaac
2017-11-22  9:34 65% ` [bug#29392] [PATCH 01/11] gnu: scons: Update to 3.0.1 Arun Isaac
2017-11-23  8:15 65% [bug#29408] [PATCH] gnu: python-pyopenssl: Update to 17.4.0 Rutger Helling
2017-11-23 20:04 79% [bug#29415] [PATCH] gnu: python-axolotl: Update to 0.1.39 and fix build Adam Van Ymeren
2017-11-28 17:06     [bug#29392] [PATCH 00/11] Add scons build system Arun Isaac
2017-11-28 17:06 65% ` [bug#29392] [PATCH 01/11] gnu: scons: Update to 3.0.1 Arun Isaac
2017-12-05  0:34 65% [bug#29571] [PATCH 1/2] gnu: Add python-olefile Kei Kebreau
2017-12-05  0:34 71% ` [bug#29572] [PATCH 2/2] gnu: python-pillow: Update to 4.3.0 Kei Kebreau
2017-12-16  8:46       ` Ricardo Wurmus
2017-12-16 15:15 86%     ` Kei Kebreau
2017-12-12  9:49 55% [bug#29673] [PATCH] gnu: xpra: Update to 2.2 Rutger Helling
2017-12-16 10:09 46% [bug#29733] Add virtaal (translation app) Mark Meyer
2017-12-18 22:44     [bug#29768] [PATCH 0/5] Graphite Ricardo Wurmus
2017-12-19  8:04 65% ` [bug#29768] [PATCH 1/5] gnu: Add python-txamqp Ricardo Wurmus
2017-12-19 11:50 65% [bug#29783] [PATCH 1/2] gnu: Add python-tempdir Konrad Hinsen
2017-12-19 11:50 60% [bug#29784] [PATCH 2/2] gnu: Add python-activepapers Konrad Hinsen
2017-12-21  9:57 59% ` Ludovic Courtès
2017-12-20 16:18 53% [bug#29795] [PATCH 1/2] gnu: python-numpy: reorganize patches Konrad Hinsen
2017-12-20 16:19 61% [bug#29796] [PATCH 2/2] gnu: Add python2-numpy@1.8 Konrad Hinsen
2017-12-25 17:04 79% [bug#29849] [PATCH] gnu: python-pillow: Fix test failures on i686-linux and armhf-linux Kei Kebreau
2017-12-26 12:21 61% [bug#29856] [PATCH core-updates] guix: python-build-system: Modify ".py" files in-place Danny Milosavljevic
2017-12-30 23:25 65% [bug#29912] [PATCH] gnu: python-pillow: Add more fixes from upstream Kei Kebreau
2018-01-02 15:52 64% [bug#29944] [PATCH 1/2] gnu: Add python2-pyro Konrad Hinsen
2018-01-02 15:53 62% [bug#29945] [PATCH 2/2] gnu: Add python2-scientific Konrad Hinsen
2018-01-02 19:04 62% [bug#29958] [PATCH] gnu: Add python2-mmtk Konrad Hinsen
2018-01-04 17:47     Leo Famulari
2018-01-04 22:34 62% ` [bug#29958] [PATCH v2] " Danny Milosavljevic
2018-01-07 18:39 69% [bug#30017] [PATCH] gnu: ledger: Fix test failures ericbavier
2018-01-10  3:08 65% [bug#30055] [PATCH] gnu: pelican: Enable Markdown support Ben Sturmfels
2018-01-15  1:31 78% [bug#30117] [PATCH] gnu: Add python-shapely and python2-shapely Kei Kebreau
2018-01-15 15:22 65% [bug#30135] [PATCH] gnu: python-matplotlib: Fix import failure Konrad Hinsen
     [not found]     <87vafvnaan.fsf@sturm.com.au>
     [not found]     ` <CAE4v=piiV78887BZvMtc9XjHJWjDuh0zBdb9ApE1vzE687qJMQ@mail.gmail.com>
     [not found]       ` <87tvvfmyqy.fsf@sturm.com.au>
2018-01-21  8:01 83%     ` bug#30189: Retux game halts after preloading levels (missing ucd.sqlite uniseg database) Ben Sturmfels

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).