Subject: bug#26613: Add pootle

From: Leo Famulari <[email-masked]>
Date: Sat, 22 Apr 2017 20:33:21 -0400

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 :)

> Subject: [PATCH 02/34] gnu: Add python-pytest-warnings.
> 
> * gnu/packages/python.scm (python-pytest-warnings, python2-pytest-warnings):
> New variables.

> +    (description
> +     "Pytest plugin to list Python warnings in pytest report.")

I know it can be hard to write detailed descriptions for these little
modules, but please at least write a complete English sentence. For
example, "Python-pytest-warnings is a pytest plugin to list Python
warnings in the pytest report".

> Subject: [PATCH 03/34] gnu: Add python-pytest-catchlog.
> 
> * gnu/packages/python.scm (python-pytest-catchlog, python2-pytest-catchlog):
> New variables.

> +    (home-page "https://github.com/fschulze/pytest-warnings")

Wrong home-page?

> Subject: [PATCH 04/34] gnu: Add python-utils.
> 
> * gnu/packages/python.scm (python-utils, python2-utils): New variables.

> +    (version "2.0.1")

We should use the latest release (2.1.0) or leave a code comment
explaining why we are using an older version. I won't mention this again
if it's an issue for the rest of the new packages.

> Subject: [PATCH 05/34] gnu: Add python-webassets.
> 
> * gnu/packages/python.scm (python-webassets, python2-webassets): New variables.

> +    (home-page "http://github.com/miracle2k/webassets")

Please use the HTTPS URL.

> 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.

We can add this to the commit message:

[source]: Use pypi-uri.

> Subject: [PATCH 11/34] gnu: Add python-nosexcover.
> 
> * gnu/packages/python.scm (python-nosexcover, python2-nosexcover): New variables.

> +    (description "Companion to the built-in nose.plugins.cover.  This plugin
> +will write out an XML coverage report to a file named coverage.xml.

"Nose-xcover is a companion to the built-in @code{nose.plugins.cover}.

> +
> +It will honor all the options you pass to the Nose coverage plugin, especially
> +???cover-package.")

Is '???cover-package' intended?

> Subject: [PATCH 17/34] gnu: Add python-factory-boy.
> 
> * gnu/packages/python.scm (python-factory-boy, python2-factory-boy): New variables.

> +    (arguments
> +     `(#:tests? #f))

Why?

> Subject: [PATCH 18/34] gnu: Add python-translate-toolkit.
> 
> * gnu/packages/python.scm (python-translate-toolkit, python2-translate-toolkit):
> New variables.

> +    (arguments
> +     ;; TODO: tests don't run properly
> +     `(#:tests? #f))

Does it indicate a real problem? If not, can you include a bit about how
it fails in the comment?

> Subject: [PATCH 20/34] gnu: Add python-django-assets.
> 
> * gnu/packages/django.scm (python-django-assets, python2-django-assets):
> New variables.

> +              (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"))))))

I think we should do this in a build phase so that the result of `guix
build --source` is not affected. Origin snippets should be used for
removing non-free components and fixing serious security bugs.

> +    (home-page "http://github.com/miracle2k/django-assets")

HTTPS URL, please :)

> Subject: [PATCH 21/34] gnu: Add python-django-jsonfield.
> 
> * gnu/packages/django.scm (python-django-jsonfield, python2-django-jsonfield):
> New variables.

> +            (snippet
> +              '(substitute* "jsonfield/tests.py"
> +                 (("django.forms.util") "django.forms.utils")))))

I'd do this in a build phase, too.

> Subject: [PATCH 22/34] gnu: Add python-django-bulk-update.
> 
> * gnu/packages/django.scm (python-django-bulk-update, python2-django-bulk-update):
> New variables.

> +    (arguments
> +     ;; tests seem to be broken
> +     `(#:tests? #f))

I assume the installed package seems to be working ;)

> Subject: [PATCH 23/34] gnu: Add python-django-contact-form.
> 
> * gnu/packages/django.scm (python-django-contact-form, python2-django-contact-form):
> New variables.

> +    (arguments
> +     `(#:tests? #f))

Why?

> Subject: [PATCH 25/34] gnu: Add python-django-overextends.
> 
> * gnu/packages/django.scm (python-django-overextends, python2-django-overextends):
> New variables.

> +    (arguments
> +     `(#:tests? #f))

? :)

> Subject: [PATCH 26/34] gnu: Add python-django-redis.
> 
> * gnu/packages/django.scm (python-django-redis, python2-django-redis):
> New variables.

> +    (arguments
> +     `(#:tests? #f))

? :)

> Subject: [PATCH 27/34] gnu: Add python-django-rq.
> 
> * gnu/packages/django.scm (python-django-rq, python2-django-rq): New variables.

> +    (arguments
> +     `(#:tests? #f))

? :)

> Subject: [PATCH 28/34] gnu: Add python-django-sortedm2m.
> 
> * gnu/packages/django.scm (python-django-sortedm2m, python2-django-sortedm2m):
> New variables.

> +    (arguments
> +     `(#:tests? #f))

? :)

> 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.

I think this will need the python2-variant system, which was introduced
to handle Python packages whose python-2 variants can't be automatically
created by package-with-python2.

See:
https://bugs.gnu.org/22437

> 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?

> +        (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"))))))

Let's do this in a build phase.

> +    (arguments
> +     `(#:python ,python-2

If it only supports python-2, can you mention that in a code comment?

> +       #:tests? #f))

Why skip the tests?

> +    (description "Community localization server.")

How about copying the text from <https://github.com/translate/pootle>
for the description?