GNU bug report logs - #33185
[PATCH 0/7] Add patchwork package and service.

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: guix-patches; Reported by: Christopher Baines <mail@HIDDEN>; Keywords: patch; dated Sun, 28 Oct 2018 09:22:01 UTC; Maintainer for guix-patches is guix-patches@HIDDEN.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 22 Jan 2019 22:31:31 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 22 17:31:31 2019
Received: from localhost ([127.0.0.1]:41746 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gm4Zu-0006Um-TX
	for submit <at> debbugs.gnu.org; Tue, 22 Jan 2019 17:31:31 -0500
Received: from li622-129.members.linode.com ([212.71.249.129]:54006
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gm4Zs-0006SO-EH
 for 33185 <at> debbugs.gnu.org; Tue, 22 Jan 2019 17:31:29 -0500
Received: from localhost (cpc102582-walt20-2-0-cust14.13-2.cable.virginm.net
 [86.27.34.15])
 by mira.cbaines.net (Postfix) with ESMTPSA id 81C4E16A71;
 Tue, 22 Jan 2019 22:31:27 +0000 (GMT)
Received: from capella (localhost [127.0.0.1])
 by localhost (OpenSMTPD) with ESMTP id e13f7f52;
 Tue, 22 Jan 2019 22:31:27 +0000 (UTC)
References: <20181104104455.3527-1-mail@HIDDEN>
 <20181104104455.3527-6-mail@HIDDEN> <87h8gdxbu0.fsf@HIDDEN>
User-agent: mu4e 1.0; emacs 26.1
From: Christopher Baines <mail@HIDDEN>
To: Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Subject: Re: [bug#33185] [PATCH 6/7] gnu: Add patchwork.
In-reply-to: <87h8gdxbu0.fsf@HIDDEN>
Date: Tue, 22 Jan 2019 22:31:24 +0000
Message-ID: <87ef94iatf.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha512; protocol="application/pgp-signature"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
Cc: 33185 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable


Ludovic Court=C3=A8s <ludo@HIDDEN> writes:

> Christopher Baines <mail@HIDDEN> skribis:
>
>> ---
>>  gnu/packages/patchutils.scm | 103 ++++++++++++++++++++++++++++++++++++
>>  1 file changed, 103 insertions(+)
>
> [...]
>
>> +         (add-after 'install 'install-patchwork-admin
>> +           (lambda* (#:key inputs outputs #:allow-other-keys)
>> +             (let* ((out (assoc-ref outputs "out")))
>> +               (mkdir-p (string-append out "/bin"))
>> +               (call-with-output-file (string-append out "/bin/patchwor=
k-admin")
>> +                 (lambda (port)
>> +                   (display "#!/usr/bin/env python3
>> +import os, sys
>> +
>> +if __name__ =3D=3D \"__main__\":
>> +    os.environ.setdefault(
>> +      \"DJANGO_SETTINGS_MODULE\",
>> +      \"guix.patchwork.settings\"
>> +    )
>> +
>> +    from django.core.management import execute_from_command_line
>> +
>> +    execute_from_command_line(sys.argv)" port)))
>> +               (chmod (string-append out "/bin/patchwork-admin") #o555))
>> +             #t)))))
>
> IMO these phases would be less intimidating with a few comments
> explaining what=E2=80=99s going on.  :-)
>
>> +    (synopsis "")
>> +    (description "")
>> +    (home-page "")
>> +    (license "")))
>
> As swedebugia noted, you=E2=80=99re missing a few things here and in the =
commit
> log. :-)
>
> With these things fixed it should be good!

Thanks for taking a look. I've finally got around to taking another look
at these patches, and sent updated patches for the package, service and
system test.

I think it's a lot further forward, but there are still a few bits to
sort out. I'll send some comments in reply to the patches.

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQKTBAEBCgB9FiEEPonu50WOcg2XVOCyXiijOwuE9XcFAlxHmbxfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcACgkQXiijOwuE
9Xew2BAAqagVbKEY7gKlXY6Sn/zR2XSi/wbkjWcNnNEXoY61IPauqWjEBDQF/sUS
m/zgcpvBq3pYuTdchcuZwgymfgtYLmelxE9SolfSbaA76QNEdFvUz6UbjX3Hj1rS
oNsLzKxyQQOSz15AOnR9GDlhJhBM1/ndULFH7K/meIuwcvJK+Gt4NZrd+S/aEyoA
Ua8jH1XRW59hagQ9jprr/Xu6Nn0DWMyHw4OH3my8GvhpmMHLAF3PE3KrVe/is3Hs
G2Eu4Lhh1+nhLnerTuOTwygT6FR0L90wILx6bEjvfOQCYruH0FAof3HU91vXwHVk
Cq1NsYJbn10Yg3HEWZtS7oC0CWLcO1ixBjyVcq0XTXJEpiHcIZB1nen0A7oB29YW
GaLELIdU6Y3GRSzkVXhTLw3YTX0rxawPjwQuj6lNX5+DiVzzLgNe7BtbsETXIDcp
caNTtj6SNNqh9Fcy9pykKyYH+GQWY0jZwRYZAgQ07Y0woZpPrdVe9cSM+gPU6XKP
2JAGcnrCbY9Qe8HelegpLyWkSG0t3Urlf6fDfBt693WsrnvD0O7Hd2zuH1oQc94s
+dZyqxsPy99axLF66jv7jakgD1K+xNYPN+quodlFnNMaP7t9k/apA0RIt75dapT0
8p9I3VVXiHUfYO3QB29chZV/5jr+J6KCS8bdhPxW4JU+SGGnOBE=
=eF/9
-----END PGP SIGNATURE-----
--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 22 Jan 2019 22:09:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 22 17:09:44 2019
Received: from localhost ([127.0.0.1]:41710 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gm4Ep-0002hZ-RZ
	for submit <at> debbugs.gnu.org; Tue, 22 Jan 2019 17:09:44 -0500
Received: from li622-129.members.linode.com ([212.71.249.129]:53922
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gm4Ec-0002h7-ER
 for 33185 <at> debbugs.gnu.org; Tue, 22 Jan 2019 17:09:31 -0500
Received: from localhost (cpc102582-walt20-2-0-cust14.13-2.cable.virginm.net
 [86.27.34.15])
 by mira.cbaines.net (Postfix) with ESMTPSA id 3D22216A8A
 for <33185 <at> debbugs.gnu.org>; Tue, 22 Jan 2019 22:09:29 +0000 (GMT)
Received: from localhost (localhost [local])
 by localhost (OpenSMTPD) with ESMTPA id b16d782b
 for <33185 <at> debbugs.gnu.org>; Tue, 22 Jan 2019 22:09:28 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
To: 33185 <at> debbugs.gnu.org
Subject: [PATCH v2 2/2] services: Add patchwork.
Date: Tue, 22 Jan 2019 22:09:28 +0000
Message-Id: <20190122220928.17927-2-mail@HIDDEN>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20190122220928.17927-1-mail@HIDDEN>
References: <87y3aie8a1.fsf@HIDDEN>
 <20190122220928.17927-1-mail@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/service/web.scm (<patchwork-database-configuration>
<patchwork-settings-module>, <patchwork-configuration>): New record types.
(patchwork-virtualhost): New procedure.
(patchwork-service-type): New variable.
* gnu/tests/web.scm (%test-patchwork): New variable.
---
 gnu/services/web.scm | 284 ++++++++++++++++++++++++++++++++++++++++++-
 gnu/tests/web.scm    | 160 +++++++++++++++++++++++-
 2 files changed, 442 insertions(+), 2 deletions(-)

diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index d71fed20ed..1986c2095c 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -32,12 +32,17 @@
   #:use-module (gnu system pam)
   #:use-module (gnu system shadow)
   #:use-module (gnu packages admin)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages web)
+  #:use-module (gnu packages patchutils)
   #:use-module (gnu packages php)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages logging)
+  #:use-module (guix packages)
   #:use-module (guix records)
   #:use-module (guix modules)
+  #:use-module (guix utils)
   #:use-module (guix gexp)
   #:use-module ((guix store) #:select (text-file))
   #:use-module ((guix utils) #:select (version-major))
@@ -211,7 +216,42 @@
             varnish-configuration-parameters
             varnish-configuration-extra-options
 
-            varnish-service-type))
+            varnish-service-type
+
+            <patchwork-database-configuration>
+            patchwork-database-configuration
+            patchwork-database-configuration?
+            patchwork-database-configuration-engine
+            patchwork-database-configuration-name
+            patchwork-database-configuration-user
+            patchwork-database-configuration-password
+            patchwork-database-configuration-host
+            patchwork-database-configuration-port
+
+            <patchwork-settings-module>
+            patchwork-settings-module
+            patchwork-settings-module?
+            patchwork-settings-module-database-configuration
+            patchwork-settings-module-secret-key
+            patchwork-settings-module-allowed-hosts
+            patchwork-settings-module-default-from-email
+            patchwork-settings-module-static-url
+            patchwork-settings-module-admins
+            patchwork-settings-module-debug?
+            patchwork-settings-module-enable-rest-api?
+            patchwork-settings-module-enable-xmlrpc?
+            patchwork-settings-module-force-https-links?
+            patchwork-settings-module-extra-settings
+
+            <patchwork-configuration>
+            patchwork-configuration
+            patchwork-configuration?
+            patchwork-configuration-patchwork
+            patchwork-configuration-settings-module
+            patchwork-configuration-domain
+
+            patchwork-virtualhost
+            patchwork-service-type))
 
 ;;; Commentary:
 ;;;
@@ -1269,3 +1309,245 @@ files.")
                              varnish-shepherd-service)))
    (default-value
      (varnish-configuration))))
+
+
+;;;
+;;; Patchwork
+;;;
+
+(define-record-type* <patchwork-database-configuration>
+  patchwork-database-configuration make-patchwork-database-configuration
+  patchwork-database-configuration?
+  (engine          patchwork-database-configuration-engine
+                   (default "django.db.backends.postgresql_psycopg2"))
+  (name            patchwork-database-configuration-name
+                   (default "patchwork"))
+  (user            patchwork-database-configuration-user
+                   (default "httpd"))
+  (password        patchwork-database-configuration-password
+                   (default ""))
+  (host            patchwork-database-configuration-host
+                   (default ""))
+  (port            patchwork-database-configuration-port
+                   (default "")))
+
+(define-record-type* <patchwork-settings-module>
+  patchwork-settings-module make-patchwork-settings-module
+  patchwork-settings-module?
+  (database-configuration    patchwork-settings-module-database-configuration
+                             (default (patchwork-database-configuration)))
+  (secret-key-file           patchwork-settings-module-secret-key-file
+                             (default "/etc/patchwork/django-secret-key"))
+  (allowed-hosts             patchwork-settings-module-allowed-hosts)
+  (default-from-email        patchwork-settings-module-default-from-email)
+  (static-url                patchwork-settings-module-static-url
+                             (default "/static/"))
+  (admins                    patchwork-settings-module-admins
+                             (default '()))
+  (debug?                    patchwork-settings-module-debug?
+                             (default #f))
+  (enable-rest-api?          patchwork-settings-module-enable-rest-api?
+                             (default #t))
+  (enable-xmlrpc?            patchwork-settings-module-enable-xmlrpc?
+                             (default #t))
+  (force-https-links?        patchwork-settings-module-force-https-links?
+                             (default #t))
+  (extra-settings            patchwork-settings-module-extra-settings
+                             (default "")))
+
+(define-record-type* <patchwork-configuration>
+  patchwork-configuration make-patchwork-configuration
+  patchwork-configuration?
+  (patchwork            patchwork-configuration-patchwork
+                        (default patchwork))
+  (settings-module      patchwork-configuration-settings-module)
+  (domain               patchwork-configuration-domain))
+
+;; Django uses a Python module for configuration, so this compiler generates a
+;; Python module from the configuration record.
+(define-gexp-compiler (patchwork-settings-module-compiler
+                       (file <patchwork-settings-module>) system target)
+  (match file
+    (($ <patchwork-settings-module> database-configuration secret-key-file
+                                    allowed-hosts default-from-email
+                                    static-url admins debug? enable-rest-api?
+                                    enable-xmlrpc? force-https-links?
+                                    extra-configuration)
+     (gexp->derivation
+      "patchwork-settings"
+      (with-imported-modules '((guix build utils))
+        #~(let ((output #$output))
+            (define (create-__init__.py filename)
+              (call-with-output-file filename
+                (lambda (port) (display "" port))))
+
+            (use-modules (guix build utils)
+                         (srfi srfi-1))
+
+            (mkdir-p (string-append output "/guix/patchwork"))
+            (create-__init__.py
+             (string-append output "/guix/__init__.py"))
+            (create-__init__.py
+             (string-append output "/guix/patchwork/__init__.py"))
+
+            (call-with-output-file
+                (string-append output "/guix/patchwork/settings.py")
+              (lambda (port)
+                (display
+                 (string-append "from patchwork.settings.base import *
+
+# Configuration from Guix
+with open('" #$secret-key-file "') as f:
+    SECRET_KEY = f.read().strip()
+
+ALLOWED_HOSTS = [
+" #$(string-concatenate
+     (map (lambda (allowed-host)
+            (string-append "  '" allowed-host "'\n"))
+          allowed-hosts))
+"]
+
+DEBUG = " #$(if debug? "True" "False") "
+
+ENABLE_REST_API = " #$(if enable-xmlrpc? "True" "False") "
+ENABLE_XMLRPC = " #$(if enable-xmlrpc? "True" "False") "
+
+FORCE_HTTPS_LINKS = " #$(if force-https-links? "True" "False") "
+
+DATABASES = {
+    'default': {
+" #$(match database-configuration
+      (($ <patchwork-database-configuration>
+          engine name user password host port)
+       (string-append
+        "        'ENGINE': '" engine "',\n"
+        "        'NAME': '" name "',\n"
+        "        'USER': '" user "',\n"
+        "        'PASSWORD': '" password "',\n"
+        "        'HOST': '" host "',\n"
+        "        'PORT': '" port "',\n"))) "
+    },
+}
+
+" #$(if debug?
+        #~(string-append "STATIC_ROOT = '" #$(file-append patchwork "/share/patchwork/htdocs") "'")
+        #~(string-append "STATIC_URL = '" #$static-url "'")) "
+
+STATICFILES_STORAGE = (
+  'django.contrib.staticfiles.storage.StaticFilesStorage'
+)
+
+# Guix Extra Configuration
+" #$extra-configuration "
+") port)))
+            #t))
+      #:local-build? #t))))
+
+(define patchwork-virtualhost
+  (match-lambda
+    (($ <patchwork-configuration> patchwork settings-module
+                                  domain)
+
+     (define wsgi.py
+       (file-append patchwork
+                    (string-append
+                     "/lib/python"
+                     (version-major+minor
+                      (package-version python))
+                     "/site-packages/patchwork/wsgi.py")))
+
+     (httpd-virtualhost
+      "*:8080"
+      `("ServerAdmin admin@HIDDEN
+ServerName " ,domain "
+
+LogFormat \"%v %h %l %u %t \\\"%r\\\" %>s %b \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\" customformat
+LogLevel info
+CustomLog \"/var/log/httpd/" ,domain "-access_log\" customformat
+
+ErrorLog /var/log/httpd/error.log
+
+WSGIScriptAlias / " ,wsgi.py "
+WSGIDaemonProcess " ,(package-name patchwork) " user=httpd group=httpd processes=1 threads=2 display-name=%{GROUP} lang='en_US.UTF-8' locale='en_US.UTF-8' python-path=" ,settings-module "
+WSGIProcessGroup " ,(package-name patchwork) "
+WSGIPassAuthorization On
+
+<Files " ,wsgi.py ">
+  Require all granted
+</Files>
+
+Alias /static " ,patchwork "/share/patchwork/htdocs
+<Directory \"/srv/http/" ,domain "/\">
+    AllowOverride None
+    Options MultiViews Indexes SymlinksIfOwnerMatch IncludesNoExec
+    Require method GET POST OPTIONS
+</Directory>")))))
+
+(define (patchwork-httpd-configuration patchwork-configuration)
+  (list "WSGISocketPrefix /var/run/mod_wsgi"
+        (list "LoadModule wsgi_module "
+              (file-append mod-wsgi "/modules/mod_wsgi.so"))
+        (patchwork-virtualhost patchwork-configuration)))
+
+(define (patchwork-django-admin-gexp patchwork settings-module)
+  #~(lambda command
+      (let ((pid (primitive-fork))
+            (user (getpwnam "httpd")))
+        (if (eq? pid 0)
+            (dynamic-wind
+              (const #t)
+              (lambda ()
+                (setgid (passwd:gid user))
+                (setuid (passwd:uid user))
+
+                (setenv "DJANGO_SETTINGS_MODULE" "guix.patchwork.settings")
+                (setenv "PYTHONPATH" #$settings-module)
+                (primitive-exit
+                 (if (zero?
+                      (apply system*
+                             #$(file-append patchwork "/bin/patchwork-admin")
+                             command))
+                     0
+                     1)))
+              (lambda ()
+                (primitive-exit 1)))
+            (zero? (cdr (waitpid pid)))))))
+
+(define (patchwork-django-admin-action patchwork settings-module)
+  (shepherd-action
+   (name 'django-admin)
+   (documentation
+    "Run a django admin command for patchwork")
+   (procedure (patchwork-django-admin-gexp patchwork settings-module))))
+
+(define patchwork-service-type
+  (service-type
+   (name 'patchwork-setup)
+   (extensions
+    (list (service-extension httpd-service-type
+                             patchwork-httpd-configuration)
+          (service-extension
+           shepherd-root-service-type
+           (match-lambda
+             (($ <patchwork-configuration> patchwork settings-module
+                                           domain)
+              (list (shepherd-service
+                     (requirement '(postgres))
+                     (provision (list (string->symbol
+                                       (string-append (package-name patchwork)
+                                                      "-setup"))))
+                     (start
+                      #~(lambda ()
+                          (define run-django-admin-command
+                            #$(patchwork-django-admin-gexp patchwork
+                                                           settings-module))
+
+                          (run-django-admin-command "migrate")))
+                     (stop #~(const #f))
+                     (actions
+                      (list (patchwork-django-admin-action patchwork
+                                                           settings-module)))
+                     (respawn? #f)
+                     (documentation "Setup patchwork."))))))))
+   (description
+    "Patchwork patch tracking system.")))
diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm
index 319655396a..0b109c0ed7 100644
--- a/gnu/tests/web.scm
+++ b/gnu/tests/web.scm
@@ -28,15 +28,27 @@
   #:use-module (gnu system vm)
   #:use-module (gnu services)
   #:use-module (gnu services web)
+  #:use-module (gnu services databases)
   #:use-module (gnu services networking)
+  #:use-module (gnu services shepherd)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages patchutils)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages web)
+  #:use-module (guix packages)
+  #:use-module (guix modules)
+  #:use-module (guix records)
   #:use-module (guix gexp)
   #:use-module (guix store)
+  #:use-module (guix utils)
+  #:use-module (ice-9 match)
   #:export (%test-httpd
             %test-nginx
             %test-varnish
             %test-php-fpm
             %test-hpcguix-web
-            %test-tailon))
+            %test-tailon
+            %test-patchwork))
 
 (define %index.html-contents
   ;; Contents of the /index.html file.
@@ -498,3 +510,149 @@ HTTP-PORT."
    (name "tailon")
    (description "Connect to a running Tailon server.")
    (value (run-tailon-test))))
+
+
+;;;
+;;; Patchwork
+;;;
+
+(define patchwork-initial-database-setup-service
+  (match-lambda
+    (($ <patchwork-database-configuration>
+        engine name user password host port)
+
+     (define start-gexp
+       #~(lambda ()
+           (let ((pid (primitive-fork))
+                 (postgres (getpwnam "postgres")))
+             (if (eq? pid 0)
+                 (dynamic-wind
+                   (const #t)
+                   (lambda ()
+                     (setgid (passwd:gid postgres))
+                     (setuid (passwd:uid postgres))
+                     (primitive-exit
+                      (if (and
+                           (zero?
+                            (system* #$(file-append postgresql "/bin/createuser")
+                                     #$user))
+                           (zero?
+                            (system* #$(file-append postgresql "/bin/createdb")
+                                     "-O" #$user #$name)))
+                          0
+                          1)))
+                   (lambda ()
+                     (primitive-exit 1)))
+                 (zero? (cdr (waitpid pid)))))))
+
+     (shepherd-service
+      (requirement '(postgres))
+      (provision '(patchwork-postgresql-user-and-database))
+      (start start-gexp)
+      (stop #~(const #f))
+      (respawn? #f)
+      (documentation "Setup patchwork database.")))))
+
+(define (patchwork-os patchwork)
+  (simple-operating-system
+   (service dhcp-client-service-type)
+   (service httpd-service-type
+            (httpd-configuration
+             (config
+              (httpd-config-file
+               (listen '("8080"))))))
+   (service postgresql-service-type)
+   (simple-service 'patchwork-create-django-secret-key
+                   activation-service-type
+                   #~(begin
+                       (mkdir "/etc/patchwork")
+                       (call-with-output-file "/etc/patchwork/django-secret-key"
+                         (lambda (p)
+                           (display "000000\n" p)))
+                       #t))
+   (service patchwork-service-type
+            (patchwork-configuration
+             (patchwork patchwork)
+             (settings-module
+              (patchwork-settings-module
+               (allowed-hosts '("*"))
+               (default-from-email "")
+               (debug? #t)))
+             (domain "localhost")))
+   (simple-service 'patchwork-database-setup
+                   shepherd-root-service-type
+                   (list
+                    (patchwork-initial-database-setup-service
+                     (patchwork-database-configuration))))))
+
+(define (run-patchwork-test patchwork)
+  "Run tests in %NGINX-OS, which has nginx running and listening on
+HTTP-PORT."
+  (define os
+    (marionette-operating-system
+     (patchwork-os patchwork)
+     #:imported-modules '((gnu services herd)
+                          (guix combinators))))
+
+  (define forwarded-port 8080)
+
+  (define vm
+    (virtual-machine
+     (operating-system os)
+     (port-forwardings `((8080 . ,forwarded-port)))))
+
+  (define test
+    (with-imported-modules '((gnu build marionette))
+      #~(begin
+          (use-modules (srfi srfi-11) (srfi srfi-64)
+                       (gnu build marionette)
+                       (web uri)
+                       (web client)
+                       (web response))
+
+          (define marionette
+            (make-marionette (list #$vm)))
+
+          (mkdir #$output)
+          (chdir #$output)
+
+          (test-begin "patchwork")
+
+          (test-assert "patchwork-postgresql-user-and-service started"
+            (marionette-eval
+             '(begin
+                (use-modules (gnu services herd))
+                (match (start-service 'patchwork-postgresql-user-and-database)
+                  (#f #f)
+                  (('service response-parts ...)
+                   (match (assq-ref response-parts 'running)
+                     ((#t) #t)
+                     ((pid) (number? pid))))))
+             marionette))
+
+          (test-assert "httpd running"
+            (marionette-eval
+             '(begin
+                (use-modules (gnu services herd))
+                (start-service 'httpd))
+             marionette))
+
+          (test-equal "http-get"
+            200
+            (let-values
+                (((response text)
+                  (http-get #$(simple-format
+                               #f "http://localhost:~A/" forwarded-port)
+                            #:decode-body? #t)))
+              (response-code response)))
+
+          (test-end)
+          (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
+
+  (gexp->derivation "patchwork-test" test))
+
+(define %test-patchwork
+  (system-test
+   (name "patchwork")
+   (description "Connect to a running Patchwork service.")
+   (value (run-patchwork-test patchwork))))
-- 
2.20.1





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 22 Jan 2019 22:09:43 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 22 17:09:43 2019
Received: from localhost ([127.0.0.1]:41708 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gm4Ee-0002hM-OR
	for submit <at> debbugs.gnu.org; Tue, 22 Jan 2019 17:09:43 -0500
Received: from li622-129.members.linode.com ([212.71.249.129]:53924
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gm4Ec-0002h8-EG
 for 33185 <at> debbugs.gnu.org; Tue, 22 Jan 2019 17:09:31 -0500
Received: from localhost (cpc102582-walt20-2-0-cust14.13-2.cable.virginm.net
 [86.27.34.15])
 by mira.cbaines.net (Postfix) with ESMTPSA id 2E5FF16A89
 for <33185 <at> debbugs.gnu.org>; Tue, 22 Jan 2019 22:09:29 +0000 (GMT)
Received: from localhost (localhost [local])
 by localhost (OpenSMTPD) with ESMTPA id 7bc8b304
 for <33185 <at> debbugs.gnu.org>; Tue, 22 Jan 2019 22:09:28 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
To: 33185 <at> debbugs.gnu.org
Subject: [PATCH v2 1/2] gnu: Add patchwork.
Date: Tue, 22 Jan 2019 22:09:27 +0000
Message-Id: <20190122220928.17927-1-mail@HIDDEN>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <87y3aie8a1.fsf@HIDDEN>
References: <87y3aie8a1.fsf@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/patchutils.scm (patchwork): New variable.
---
 gnu/packages/patchutils.scm | 154 ++++++++++++++++++++++++++++++++++++
 1 file changed, 154 insertions(+)

diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index 09f5afbb28..cba2076175 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -31,6 +31,8 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages django)
   #:use-module (gnu packages file)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages gettext)
@@ -305,3 +307,155 @@ directories, and has support for many popular version control systems.
 Meld helps you review code changes and understand patches.  It might even help
 you to figure out what is going on in that merge you keep avoiding.")
     (license gpl2)))
+
+(define-public patchwork
+  (package
+    (name "patchwork")
+    (version "2.1.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/getpatchwork/patchwork.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1wpcgkji9cb50lyv12ifgk08sjn7dkqkzis9qjwhx6y855dfdfn1"))))
+    (build-system python-build-system)
+    (arguments
+     `(;; TODO: Tests require a running database
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (add-after 'unpack 'replace-wsgi.py
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (delete-file "patchwork/wsgi.py")
+             (call-with-output-file "patchwork/wsgi.py"
+               (lambda (port)
+                 ;; Embed the PYTHONPATH containing the dependencies, as well
+                 ;; as the python modules in this package in the wsgi.py file,
+                 ;; as this will ensure they are available at runtime.
+                 (define pythonpath
+                   (string-append (getenv "PYTHONPATH")
+                                  ":"
+                                  (site-packages inputs outputs)))
+                 (display
+                  (string-append "
+import os, sys
+
+sys.path.extend('" pythonpath "'.split(':'))
+
+from django.core.wsgi import get_wsgi_application
+
+# By default, assume that patchwork is running as a Guix service, which
+# provides the settings as the 'guix.patchwork.settings' Python module.
+#
+# When using httpd, it's hard to set environment variables, so rely on the
+# default set here.
+os.environ['DJANGO_SETTINGS_MODULE'] = os.getenv(
+  'DJANGO_SETTINGS_MODULE',
+  'guix.patchwork.settings' # default
+)
+
+application = get_wsgi_application()\n") port)))))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (or (not tests?)
+                 (begin
+                   (setenv "DJANGO_SETTINGS_MODULE" "patchwork.settings.dev")
+                   (invoke
+                    "python" "-Wonce" "./manage.py" "test" "--noinput")
+                   #t))))
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (for-each (lambda (directory)
+                           (copy-recursively
+                            directory
+                            (string-append (site-packages inputs outputs)
+                                           "/" directory)))
+                         '("patchwork"
+                           "templates"))
+               (delete-file-recursively (string-append
+                                    (site-packages inputs outputs)
+                                    "patchwork/tests"))
+               ;; pwclient
+               (for-each (lambda (file)
+                           (install-file file (string-append out "/bin")))
+                         (list
+                          (string-append (site-packages inputs outputs)
+                                         "/patchwork/bin/pwclient")
+                          (string-append (site-packages inputs outputs)
+                                         "/patchwork/bin/parsemail.sh")
+                          (string-append (site-packages inputs outputs)
+                                         "patchwork/bin/parsemail-batch.sh")))
+
+               (simple-format #t "replacing template pwclient symlink")
+               (let ((template-pwclient (string-append
+                                         (site-packages inputs outputs)
+                                         "/patchwork/templates/patchwork/pwclient")))
+                 (delete-file template-pwclient)
+                 (copy-file (string-append (site-packages inputs outputs)
+                                           "/patchwork/bin/pwclient")
+                            template-pwclient))
+
+               (let ((static-root
+                      (string-append out "/share/patchwork/htdocs")))
+                 (mkdir-p static-root)
+                 (copy-file "patchwork/settings/production.example.py"
+                            "patchwork/settings/assets.py")
+                 (setenv "DJANGO_SECRET_KEY" "dummyvalue")
+                 (setenv "DJANGO_SETTINGS_MODULE" "patchwork.settings.assets")
+                 (setenv "STATIC_ROOT" static-root)
+                 (invoke "./manage.py" "collectstatic" "--no-input"))
+
+               (copy-recursively "lib"
+                                 (string-append
+                                  out "/share/doc/" ,name "-" ,version)))
+             #t))
+         (add-after 'install 'install-hasher
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (chmod (string-append (site-packages inputs outputs)
+                                     "/patchwork/hasher.py")
+                      #o555)
+               (symlink (string-append (site-packages inputs outputs)
+                                       "/patchwork/hasher.py")
+                        (string-append out "/bin/hasher")))
+             #t))
+         ;; Create a patchwork specific version of Django's command line admin
+         ;; utility.
+         (add-after 'install 'install-patchwork-admin
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/bin"))
+               (call-with-output-file (string-append out "/bin/patchwork-admin")
+                 (lambda (port)
+                   (display "#!/usr/bin/env python3
+import os, sys
+
+if __name__ == \"__main__\":
+    from django.core.management import execute_from_command_line
+
+    execute_from_command_line(sys.argv)" port)))
+               (chmod (string-append out "/bin/patchwork-admin") #o555))
+             #t)))))
+    (inputs
+     `(("python-wrapper" ,python-wrapper)))
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ;; TODO: Make this configurable
+       ("python-psycopg2" ,python-psycopg2)
+       ("python-mysqlclient" ,python-mysqlclient)
+       ("python-django-filter" ,python-django-filter)
+       ("python-djangorestframework" ,python-djangorestframework)
+       ("python-django-debug-toolbar" ,python-django-debug-toolbar)))
+    (synopsis "Web based patch tracking system")
+    (description
+     "Patchwork is a patch tracking system.  It takes in emails containing
+patches, and displays the patches along with comments and state information.
+Users can login allowing them to change the state of patches.")
+    (home-page "http://jk.ozlabs.org/projects/patchwork/")
+    (license gpl2+)))
-- 
2.20.1





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 20 Nov 2018 20:03:22 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 20 15:03:22 2018
Received: from localhost ([127.0.0.1]:37433 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gPCF0-0007Bo-AC
	for submit <at> debbugs.gnu.org; Tue, 20 Nov 2018 15:03:22 -0500
Received: from li622-129.members.linode.com ([212.71.249.129]:42618
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gPCEz-0007Bg-8p
 for 33185 <at> debbugs.gnu.org; Tue, 20 Nov 2018 15:03:21 -0500
Received: by mira.cbaines.net (Postfix, from userid 113)
 id D902516832; Tue, 20 Nov 2018 20:03:20 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (cpc102582-walt20-2-0-cust14.13-2.cable.virginm.net
 [86.27.34.15])
 by mira.cbaines.net (Postfix) with ESMTPSA id A60D21682E;
 Tue, 20 Nov 2018 20:03:20 +0000 (GMT)
Received: from capella (localhost [127.0.0.1])
 by localhost (OpenSMTPD) with ESMTP id e96abd6f;
 Tue, 20 Nov 2018 20:03:20 +0000 (UTC)
References: <20181104104455.3527-1-mail@HIDDEN>
 <20181104104455.3527-5-mail@HIDDEN> <87pnv1xc0i.fsf@HIDDEN>
User-agent: mu4e 1.0; emacs 26.1
From: Christopher Baines <mail@HIDDEN>
To: Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Subject: Re: [bug#33185] [PATCH 5/7] gnu: Add python-django-debug-toolbar.
In-reply-to: <87pnv1xc0i.fsf@HIDDEN>
Date: Tue, 20 Nov 2018 20:03:20 +0000
Message-ID: <878t1nseif.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha512; protocol="application/pgp-signature"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
Cc: 33185 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable


Ludovic Court=C3=A8s <ludo@HIDDEN> writes:

> Christopher Baines <mail@HIDDEN> skribis:
>
>> * gnu/packages/django.scm (python-django-debug-toolbar,
>> python2-django-debug-toolbar): New variables.
>
> [...]
>
>> +    (synopsis "Toolbar to help with developing Django applications")
>> +    (description
>> +     "A configurable set of panels that display various debug informati=
on
>> +about the current request/response.")
>
> Please make a full sentence.  Otherwise LGTM.

Sure, I've expanded this a bit now and pushed. Thanks for taking a look :)

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQKTBAEBCgB9FiEEPonu50WOcg2XVOCyXiijOwuE9XcFAlv0aIhfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcACgkQXiijOwuE
9XfknhAArDxPZICIBgbbNEU1R+1KK6T0e/YK14wyQw1/aONlj17bz/li01Q/xXb5
xJqr6EC6sdQFT5Gd4cfG90+76TaxWtw7QWpkodmQa8xiv6g7IiwJg7KV4b7ndKvo
F3HaxwS6OvXEbLXYj21Yj4+lIIAQa7JSY4/2ftFusAAoZaoTixfZO20VcE4377Rb
A9Q1y4HkEqvKMquJzwKeHdOmoguPr5vgTKmKG/xLt6Zv99ig6tDAfU8bTewXFGQs
L9qyv8PKLdvPKo4l8P7Pu1tTPG4D1b589K3EmG1KkXHuIwxD+dmHyIeEbwNSrjku
Csi8HLjxDu5fXLGV3Rs0rloJYGyojz2vBukEUp7jdR0O4gKR7fjedZCo3BLLzP0O
NbJpQCKaUgCn9v/egU1aIhn12TL6yjDNnQOoEfLpy4fZHgHYAQX83xxQ0EHKFHf6
wfb8hMPqLat/lMKy2h9SvFXdtaXcx6CjvOj3e5YnVSm1+vmRE2DtWsRpIV+Z3anK
iICBxMiRfy4jo3zPzr6MZAx8oelB4n8kerei/w0VK+8F4WwonFKa7nB6+LoDOmNS
k92ZNasbR/nkqqA4brW435Q4pmD7qHAXspiAr4/pPlx4g3dKufI/wigorlwA79Kj
9BtqEYkjK0Ul+kFOqS8j+yUrQFSjlC7QShEJJN7wAcu3FBsE6dE=
=ZyNY
-----END PGP SIGNATURE-----
--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 20 Nov 2018 20:02:57 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 20 15:02:57 2018
Received: from localhost ([127.0.0.1]:37429 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gPCEa-0007Af-Vy
	for submit <at> debbugs.gnu.org; Tue, 20 Nov 2018 15:02:57 -0500
Received: from li622-129.members.linode.com ([212.71.249.129]:42606
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gPCEX-0007AV-DO
 for 33185 <at> debbugs.gnu.org; Tue, 20 Nov 2018 15:02:53 -0500
Received: by mira.cbaines.net (Postfix, from userid 113)
 id F317B16832; Tue, 20 Nov 2018 20:02:52 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (cpc102582-walt20-2-0-cust14.13-2.cable.virginm.net
 [86.27.34.15])
 by mira.cbaines.net (Postfix) with ESMTPSA id AE1B41682E;
 Tue, 20 Nov 2018 20:02:52 +0000 (GMT)
Received: from capella (localhost [127.0.0.1])
 by localhost (OpenSMTPD) with ESMTP id f865a589;
 Tue, 20 Nov 2018 20:02:52 +0000 (UTC)
References: <20181104104455.3527-1-mail@HIDDEN>
 <20181104104455.3527-4-mail@HIDDEN> <87tvkdxc1k.fsf@HIDDEN>
User-agent: mu4e 1.0; emacs 26.1
From: Christopher Baines <mail@HIDDEN>
To: Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Subject: Re: [bug#33185] [PATCH 4/7] gnu: Add python-django-jinja.
In-reply-to: <87tvkdxc1k.fsf@HIDDEN>
Date: Tue, 20 Nov 2018 20:02:52 +0000
Message-ID: <87a7m3sej7.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha512; protocol="application/pgp-signature"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
Cc: 33185 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable


Ludovic Court=C3=A8s <ludo@HIDDEN> writes:

> Christopher Baines <mail@HIDDEN> skribis:
>
>> * gnu/packages/django.scm (python-django-jinja, python2-django-jinja): N=
ew
>> variables.
>
> [...]
>
>> +    (home-page
>> +     "https://niwinz.github.io/django-jinja/latest/")
>> +    (synopsis "Simple and nonobstructive jinja2 backend for Django")
>> +    (description
>> +     "Jinja2 provides certain advantages over the native system of Djan=
go, for
>> +example, explicit calls to callable from templates and better performan=
ce.
>> +@code{django-jinja} is a alternative to the jinja2 backend built in to =
Django.")
>
> This is not crystal-clear to someone unfamiliar with Django and Jinja,
> so bonus points if you can come up with a clearer synopsis and
> description.  Otherwise LGTM!

Yep, I've made another pass at the synopsis and description, which is
hopefully much clearer now, and pushed this. Somehow I'd neglected to
mention that this related to templates!

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQKTBAEBCgB9FiEEPonu50WOcg2XVOCyXiijOwuE9XcFAlv0aGxfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcACgkQXiijOwuE
9XdzOQ//Uk00N2Z5yiM39Sb0S6a2iQVdrKnk402JlsiYo8iSYxs8hZ34Xt80uEvg
ZCEOGQd+eOk3NrUbhuifAqYpbxFxhUacHnubQKva50uGDGiOiPuS92yXiuYgxafg
ymjgp+Zc5el2M8gW+ew1FCbk3FJrJJWOxHwEMfHOQmzQy2t8fhjdgxn4StvDF6rc
QNBmrTaFZZPoCtPZCMyGVyDVkCZ+RjhfErZ2v8BL3zjvEC71NIKrwj3eBZfZdDAh
f8R/6di1rBCRENZ/3lyr3iB0AbUYob3N3ovUCqgJtRZXwdaBV+5xXubvuBvXDR9H
f/gWxW2n5lm8q8tKtj7h8CXX6VIFI0cBd0XCPupEfO6Dsx8Dt0Ap1KC6i3cBwUVl
d9KDfMGLCyd0e9qbM5FMFaUBselqvJnUYG+wwCsLs3USe0DwwaQAaQIzmhNR1B6+
a8PPv4gg0WiGPMwBvIGjRpw8IbAW5r8UY/NBXPsLqWPo9jLD+TQATWZFCrZ0Yqv4
BCOkL1vB0VfMez/AdeH62mKRZOGnBLTH7oU3D/6TaU1y3usF82fAx67mCgvEWjj/
lY7gHG7XFDLtGsfzYjRYw76J5mtnEy8/XyWvpCO5XYQSeHhpohh01wg1Gp+O3rbU
zfamoQUTbhOAWLTfZ7fReky+NQW3F4zwA6QREXgOcjLXtqN8blc=
=dr8F
-----END PGP SIGNATURE-----
--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 20 Nov 2018 19:58:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 20 14:58:35 2018
Received: from localhost ([127.0.0.1]:37424 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gPCAN-00071W-Ci
	for submit <at> debbugs.gnu.org; Tue, 20 Nov 2018 14:58:35 -0500
Received: from li622-129.members.linode.com ([212.71.249.129]:42588
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gPCAK-00071M-Mm
 for 33185 <at> debbugs.gnu.org; Tue, 20 Nov 2018 14:58:33 -0500
Received: by mira.cbaines.net (Postfix, from userid 113)
 id 8E00916832; Tue, 20 Nov 2018 19:58:31 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (cpc102582-walt20-2-0-cust14.13-2.cable.virginm.net
 [86.27.34.15])
 by mira.cbaines.net (Postfix) with ESMTPSA id 4C03F1682E;
 Tue, 20 Nov 2018 19:58:31 +0000 (GMT)
Received: from capella (localhost [127.0.0.1])
 by localhost (OpenSMTPD) with ESMTP id 72a2f5d6;
 Tue, 20 Nov 2018 19:58:31 +0000 (UTC)
References: <20181028092702.22549-1-mail@HIDDEN>
 <20181028092702.22549-2-mail@HIDDEN> <8736rxyqqn.fsf@HIDDEN>
User-agent: mu4e 1.0; emacs 26.1
From: Christopher Baines <mail@HIDDEN>
To: Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Subject: Re: [bug#33185] [PATCH 2/7] gnu: Add python-slimit.
In-reply-to: <8736rxyqqn.fsf@HIDDEN>
Date: Tue, 20 Nov 2018 19:58:28 +0000
Message-ID: <87bm6jseqj.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha512; protocol="application/pgp-signature"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
Cc: 33185 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable


Ludovic Court=C3=A8s <ludo@HIDDEN> writes:

> Christopher Baines <mail@HIDDEN> skribis:
>
>> * gnu/packages/python-web.scm (python-slimit, python2-slimit): New varia=
bles.
>
> [...]
>
>> +    (synopsis "JavaScript minifier, parser and lexer written in Python")
>> +    (description
>> +     "@code{SlimIt} is a JavaScript minifier written in Python.  It com=
piles
>
> I think you can avoid @code here.  Otherwise LGTM!

Great, I've pushed now with this change :)

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQKTBAEBCgB9FiEEPonu50WOcg2XVOCyXiijOwuE9XcFAlv0Z2RfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcACgkQXiijOwuE
9XfaEQ//S+pgbRjy8BEL8NhZP+YN7aWuuGTfMkYWDt3JUpHm5spEOB7iaMPNkf2T
rUSlJGqj6IjMEs0spe/nzKnFtaeE1p13f185O70KkCPX/+uRJ7ZAKST8nJ3hi9Up
yh3Ls5bf0OphvkUNoqx7a4IuUX1tKIioXxWs8MQne5SuHDxTa0671hnohZBfEgNX
TH3QcEExMJ92kPljhR/MwGJo57CCJ5R/dNt6zS37oR2Kd6KVKDLt3dloGgkXZrVO
Q29UGhVCSTR8TZj4YYV0whmWmq/pgKRBSPIIgjjKQT73VHh2DyzD3Z8Lm/TgfMkq
cEdTuFaWreTMj4uozynNaVFXkYsw1MmtFuEuHyRQ5ltQZptl1oj3CgQlNmvkDPP9
vdqgfk3KkPNNRF2nmn50dHZQXBh67ZdUjqy2U/V4muvkkn+30uB7jdn+ucagaQOS
nbk6tl5A8Y3xdmAA8O1U/rEx4eTHGW2k4iEaT0CtaG+mJegBiaVaJwE50zKSHByV
a4hcht+5sTKROs4IPAsnHaHYphavfl4jez4SgW3SeCBW7hpoUNg1zKaYDBWU2AE3
g7l/sqeZ2fuJzGcmev+EtaFUsgyHrd7qprysbnioHTRYouR6F6P1PzCsHVQnh3Ss
q16SxeEhnuODlcsF/KeVxAgRnejvg0KTXSZ8wvq7a3mfVxTyaQY=
=L09Z
-----END PGP SIGNATURE-----
--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 20 Nov 2018 18:22:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 20 13:22:12 2018
Received: from localhost ([127.0.0.1]:36638 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gPAf5-0000AY-KF
	for submit <at> debbugs.gnu.org; Tue, 20 Nov 2018 13:22:12 -0500
Received: from li622-129.members.linode.com ([212.71.249.129]:42462
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gPAf2-00009u-D6
 for 33185 <at> debbugs.gnu.org; Tue, 20 Nov 2018 13:22:09 -0500
Received: by mira.cbaines.net (Postfix, from userid 113)
 id B29EE1682B; Tue, 20 Nov 2018 18:22:07 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00,
 URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0
Received: from localhost (cpc102582-walt20-2-0-cust14.13-2.cable.virginm.net
 [86.27.34.15])
 by mira.cbaines.net (Postfix) with ESMTPSA id 3C227167FF;
 Tue, 20 Nov 2018 18:22:06 +0000 (GMT)
Received: from capella (localhost [127.0.0.1])
 by localhost (OpenSMTPD) with ESMTP id f67a6031;
 Tue, 20 Nov 2018 18:22:06 +0000 (UTC)
References: <20181104104455.3527-1-mail@HIDDEN>
 <20181104104455.3527-7-mail@HIDDEN>
 <b32159e7-080a-ecb8-513b-3cd57959a0dd@HIDDEN> <87d0r1xblc.fsf@HIDDEN>
User-agent: mu4e 1.0; emacs 26.1
From: Christopher Baines <mail@HIDDEN>
To: Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Subject: Re: [bug#33185] [PATCH 7/7] services: Add patchwork.
In-reply-to: <87d0r1xblc.fsf@HIDDEN>
Date: Tue, 20 Nov 2018 18:22:03 +0000
Message-ID: <87d0qzsj78.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha512; protocol="application/pgp-signature"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
Cc: 33185 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable


Ludovic Court=C3=A8s <ludo@HIDDEN> writes:

> Hello,
>
> swedebugia <swedebugia@HIDDEN> skribis:
>
>> On 2018-11-04 11:44, Christopher Baines wrote:
>>> ---
>>>   gnu/services/web.scm | 297 ++++++++++++++++++++++++++++++++++++++++++-
>>>   gnu/tests/web.scm    | 104 ++++++++++++++-
>>>   2 files changed, 399 insertions(+), 2 deletions(-)
>>
>> Nice work with the service-declaration. :) (untested)
>
> +1!
>
>> Would you be willing to update the patch with documentation also?
>
> Yes, also with =E2=80=98documentation=E2=80=99 fields.  :-)
>
> I spotted a typo here:
>
> +(define-record-type* <patchwork-configuration>
> +  patchwork-configuration make-patchwork-configuration
> +  patckwork-configuration?
>       ^^

Good spot!

> Regarding =E2=80=98patchwork-setup-gexp=E2=80=99, I wonder if you could u=
se
> =E2=80=98make-forkexec-constructor=E2=80=99 with the appropriate environm=
ent variables
> and move the =E2=80=9Ccreateuser=E2=80=9D bit to an activation snippet.
>
> Hmm maybe the activation snippet would run too early, right?  In that
> case, perhaps you could create another Shepherd service,
> =E2=80=98patchwork-initialization=E2=80=99, that would do the createuser =
stuff, and have
> =E2=80=98patchwork=E2=80=99 depend on it.

So, I've made some changes since I last sent this patch, the biggest
being splitting the database creation out from running of the database
migrations.

Assuming that the shepherd service defined as part of the
patchwork-service-type just runs the migrations, yes, it needs
PostgreSQL (or whatever database you're using) to be available.

At the moment, the service is hardcoded to use mod_wsgi, so it runs
through the httpd-service, no shepherd service for running patchwork is
needed in the service-type at least.

It would be good to try and make it more flexible in the future, at
least so that you can pick and choose a bit more (and instead use uwsgi,
gunicorn, ...).

Thanks for taking a look :)

Chris

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQKSBAEBCgB9FiEEPonu50WOcg2XVOCyXiijOwuE9XcFAlv0UMtfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcACgkQXiijOwuE
9Xcvsg/3Sand6E/rpQZ+mSeb36Mnj++b7mk02DW5Ly8s+NdEv2aSy2g83Xfjrbyk
hyE3frkYLLZSjCm96CbZkLSvhEQXQPCmi7A+WlNoCtg3vDBq6PYKN9vwn/PtU5mu
kdgtXXTQ2woaI5BYxUC3HATCAMGk/vXkDlRhcQPp8SDNXzgCGWEOPo8zfGrVxK8p
LnXG6wHU1XSMe32AVP36pJESQhd4PdvNv+/d8HHXyeK8XRbL5pus8TZLhbl0Xaep
A4ffkmGlh6HzHT6eg6HgIpC/mQbZjQG4Qd3oOCKtzcV4YGEbuiSijOVOHIe4oPdy
kbGVmlLqJPamCkDgAxsmshtt9TLXjNnkMYel69b/NEoPMpUiM2aHMRN1zS4a9Z2V
6kadfJwORGFM8bThg1pqmOkPM0UPpXY+jvVgFk8FWFiTp0RvvJOqoHveliwAwvrN
H/cV+strqk/foDZKOQzyhnVKl4BkbWanwNI0Qz8qLVM2QEPxggASXYTZerdRfocL
mdmsEHOhpkk1f/OCsSatPsOJvdh0QBPamE6j42ehpOhZqzfnKNfUm4bJhkRbJWNI
CydNiyJDvX5jlVt8aD+zmoPH43TsDnaqFC+MNyaifAmr/iufVJAEW7fVh3ON03qA
cbLe/chE8TEhvK78XNGq2TdnF9r0/TPNaUh31mVzYFEqo63a7A==
=9ElR
-----END PGP SIGNATURE-----
--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 20 Nov 2018 18:06:42 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 20 13:06:41 2018
Received: from localhost ([127.0.0.1]:36378 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gPAQ4-0005oM-Tf
	for submit <at> debbugs.gnu.org; Tue, 20 Nov 2018 13:06:41 -0500
Received: from li622-129.members.linode.com ([212.71.249.129]:42438
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gPAQ2-0005ng-46
 for 33185 <at> debbugs.gnu.org; Tue, 20 Nov 2018 13:06:39 -0500
Received: by mira.cbaines.net (Postfix, from userid 113)
 id 73EF21682A; Tue, 20 Nov 2018 18:06:37 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (cpc102582-walt20-2-0-cust14.13-2.cable.virginm.net
 [86.27.34.15])
 by mira.cbaines.net (Postfix) with ESMTPSA id 0C766167FF;
 Tue, 20 Nov 2018 18:06:37 +0000 (GMT)
Received: from capella (localhost [127.0.0.1])
 by localhost (OpenSMTPD) with ESMTP id 5b0769fc;
 Tue, 20 Nov 2018 18:06:36 +0000 (UTC)
References: <20181104104455.3527-1-mail@HIDDEN>
 <20181104104455.3527-7-mail@HIDDEN>
 <b32159e7-080a-ecb8-513b-3cd57959a0dd@HIDDEN>
User-agent: mu4e 1.0; emacs 26.1
From: Christopher Baines <mail@HIDDEN>
To: swedebugia <swedebugia@HIDDEN>
Subject: Re: [bug#33185] [PATCH 7/7] services: Add patchwork.
In-reply-to: <b32159e7-080a-ecb8-513b-3cd57959a0dd@HIDDEN>
Date: Tue, 20 Nov 2018 18:06:34 +0000
Message-ID: <87efbfsjx1.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha512; protocol="application/pgp-signature"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
Cc: 33185 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain


swedebugia <swedebugia@HIDDEN> writes:

> Hi
>
> On 2018-11-04 11:44, Christopher Baines wrote:
>> ---
>>   gnu/services/web.scm | 297 ++++++++++++++++++++++++++++++++++++++++++-
>>   gnu/tests/web.scm    | 104 ++++++++++++++-
>>   2 files changed, 399 insertions(+), 2 deletions(-)
>
> Nice work with the service-declaration. :) (untested)

Thanks :)

> Would you be willing to update the patch with documentation also?

Yep, I hope to get to this eventually :)

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQKTBAEBCgB9FiEEPonu50WOcg2XVOCyXiijOwuE9XcFAlv0TSpfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcACgkQXiijOwuE
9Xelhw//fu+4KEh2lpIzNq7/4Bw0bNEpg59rsHSkgrwmQpSecNpIfcwMVIrxYswH
9Jxq9RZtHNO0MxgFBXjpw+ZOJUwGg0aM7e+MCoE3oJ+MDNPqebVQcCYO3Ao9JQ+q
73JbgjWWSzSmD5Lha9S97p6iDFGALDQhVOJdWZK538CuPuEM+ZjeCaa3vKRMua9z
ftBUud7AlYvTo2R4fobX4stdKkWlT6QHCIYQGcZJjqTUF2c327Sro0hjb5NHAuZL
vyWdPbUdis3G9e1Ke+FsC4gWiU2T+/gV0SaOZlH5HGhResgRIW1KpdBidiV34sr7
Olzot1ZVzG4tfWmnnwQGyJ1Me0gURVdsUkcm3fmhXLwtTUlGhJMbDzQ0wAZoAhMn
qnv/FmBzvHeWu6DSZXHdyUxOXn5YuBXmBomtECG7YC9VGIlDGFp3qfGuDO4H3wkV
hUm+iyaIb3XN23iCLiK7Wkw4IGSejo4VGeau+eTQgDdAX9SWI8ea87eoobJI4AUk
m4iqoi0r3h0jVX8dVGA2XuaoZxzj0b7w/Fu/ajdyTO0bSwa9tNYulPg7lY25eK+j
DdfP/ZhWvA/GDA3s9VfZHOZ5G7ZFT6zptq1f/FRrklMJnBbuBxW9CHkVQ4QtqYjS
4bSXR2zcOogPtAOKtxZqZFkJjoeRVRnSvUxTzlGjMwrLJLeubKE=
=l0ni
-----END PGP SIGNATURE-----
--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 19 Nov 2018 16:43:05 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 19 11:43:05 2018
Received: from localhost ([127.0.0.1]:32933 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gOmdc-0008FP-Pu
	for submit <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:43:04 -0500
Received: from eggs.gnu.org ([208.118.235.92]:48688)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1gOmdb-0008Ev-Br
 for 33185 <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:43:03 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <ludo@HIDDEN>) id 1gOmdV-0005WX-D7
 for 33185 <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:42:58 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled
 version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54353)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>)
 id 1gOmdV-0005WK-A4; Mon, 19 Nov 2018 11:42:57 -0500
Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=32860 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1gOmdU-0006ch-Pq; Mon, 19 Nov 2018 11:42:57 -0500
From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=)
To: swedebugia <swedebugia@HIDDEN>
Subject: Re: [bug#33185] [PATCH 7/7] services: Add patchwork.
References: <20181104104455.3527-1-mail@HIDDEN>
 <20181104104455.3527-7-mail@HIDDEN>
 <b32159e7-080a-ecb8-513b-3cd57959a0dd@HIDDEN>
Date: Mon, 19 Nov 2018 17:42:55 +0100
In-Reply-To: <b32159e7-080a-ecb8-513b-3cd57959a0dd@HIDDEN> (swedebugia's
 message of "Sun, 4 Nov 2018 20:10:42 +0100")
Message-ID: <87d0r1xblc.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: 33185
Cc: Christopher Baines <mail@HIDDEN>, 33185 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -6.0 (------)

Hello,

swedebugia <swedebugia@HIDDEN> skribis:

> On 2018-11-04 11:44, Christopher Baines wrote:
>> ---
>>   gnu/services/web.scm | 297 ++++++++++++++++++++++++++++++++++++++++++-
>>   gnu/tests/web.scm    | 104 ++++++++++++++-
>>   2 files changed, 399 insertions(+), 2 deletions(-)
>
> Nice work with the service-declaration. :) (untested)

+1!

> Would you be willing to update the patch with documentation also?

Yes, also with =E2=80=98documentation=E2=80=99 fields.  :-)

I spotted a typo here:

+(define-record-type* <patchwork-configuration>
+  patchwork-configuration make-patchwork-configuration
+  patckwork-configuration?
      ^^

Regarding =E2=80=98patchwork-setup-gexp=E2=80=99, I wonder if you could use
=E2=80=98make-forkexec-constructor=E2=80=99 with the appropriate environmen=
t variables
and move the =E2=80=9Ccreateuser=E2=80=9D bit to an activation snippet.

Hmm maybe the activation snippet would run too early, right?  In that
case, perhaps you could create another Shepherd service,
=E2=80=98patchwork-initialization=E2=80=99, that would do the createuser st=
uff, and have
=E2=80=98patchwork=E2=80=99 depend on it.

Thoughts?

Thanks, Chris!

Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 19 Nov 2018 16:38:00 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 19 11:38:00 2018
Received: from localhost ([127.0.0.1]:32925 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gOmYb-00087Y-Of
	for submit <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:38:00 -0500
Received: from eggs.gnu.org ([208.118.235.92]:48097)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1gOmYa-00087M-Gi
 for 33185 <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:37:52 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <ludo@HIDDEN>) id 1gOmYU-0001u5-Az
 for 33185 <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:37:47 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled
 version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54315)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>)
 id 1gOmYT-0001tT-5G; Mon, 19 Nov 2018 11:37:45 -0500
Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=32858 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1gOmYS-0006K6-Se; Mon, 19 Nov 2018 11:37:45 -0500
From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=)
To: Christopher Baines <mail@HIDDEN>
Subject: Re: [bug#33185] [PATCH 6/7] gnu: Add patchwork.
References: <20181104104455.3527-1-mail@HIDDEN>
 <20181104104455.3527-6-mail@HIDDEN>
Date: Mon, 19 Nov 2018 17:37:43 +0100
In-Reply-To: <20181104104455.3527-6-mail@HIDDEN> (Christopher Baines's
 message of "Sun, 4 Nov 2018 10:44:54 +0000")
Message-ID: <87h8gdxbu0.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: 33185
Cc: 33185 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Christopher Baines <mail@HIDDEN> skribis:

> ---
>  gnu/packages/patchutils.scm | 103 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 103 insertions(+)

[...]

> +         (add-after 'unpack 'patch-wsgi.py
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (substitute* "patchwork/wsgi.py"
> +               (("import os")
> +                (string-append
> +                 "import os, sys
> +
> +sys.path.extend('" (string-append (getenv "PYTHONPATH") ":" (site-packag=
es inputs outputs)) "'.split(':'))"))
> +               (("'patchwork\\.settings\\.production'")
> +                "os.getenv('DJANGO_SETTINGS_MODULE', 'guix.patchwork.set=
tings')"))))
> +         (replace 'check
> +           (lambda* (#:key tests? #:allow-other-keys)
> +             (or (not tests?)
> +                 (begin
> +                   (setenv "DJANGO_SETTINGS_MODULE" "patchwork.settings.=
dev")
> +                   (invoke
> +                    "python" "-Wonce" "./manage.py" "test" "--noinput")
> +                   #t))))
> +         (replace 'install
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (let ((out (assoc-ref outputs "out")))
> +               (for-each (lambda (directory)
> +                           (copy-recursively
> +                            directory
> +                            (string-append (site-packages inputs outputs)
> +                                           "/" directory)))
> +                         '("patchwork"
> +                           "templates"))
> +               (delete-file-recursively (string-append
> +                                    (site-packages inputs outputs)
> +                                    "patchwork/tests"))
> +               (let ((static-root
> +                      (string-append out "/share/patchwork/htdocs")))
> +                 (mkdir-p static-root)
> +                 (copy-file "patchwork/settings/production.example.py"
> +                            "patchwork/settings/assets.py")
> +                 (setenv "DJANGO_SECRET_KEY" "dummyvalue")
> +                 (setenv "DJANGO_SETTINGS_MODULE" "patchwork.settings.as=
sets")
> +                 (setenv "STATIC_ROOT" static-root)
> +                 (invoke "./manage.py" "collectstatic" "--no-input"))
> +
> +               (copy-recursively "lib"
> +                                 (string-append
> +                                  out "/share/doc/" ,name "-" ,version)))
> +             #t))
> +         (add-after 'install 'install-patchwork-admin
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (let* ((out (assoc-ref outputs "out")))
> +               (mkdir-p (string-append out "/bin"))
> +               (call-with-output-file (string-append out "/bin/patchwork=
-admin")
> +                 (lambda (port)
> +                   (display "#!/usr/bin/env python3
> +import os, sys
> +
> +if __name__ =3D=3D \"__main__\":
> +    os.environ.setdefault(
> +      \"DJANGO_SETTINGS_MODULE\",
> +      \"guix.patchwork.settings\"
> +    )
> +
> +    from django.core.management import execute_from_command_line
> +
> +    execute_from_command_line(sys.argv)" port)))
> +               (chmod (string-append out "/bin/patchwork-admin") #o555))
> +             #t)))))

IMO these phases would be less intimidating with a few comments
explaining what=E2=80=99s going on.  :-)

> +    (synopsis "")
> +    (description "")
> +    (home-page "")
> +    (license "")))

As swedebugia noted, you=E2=80=99re missing a few things here and in the co=
mmit
log. :-)

With these things fixed it should be good!

Thanks,
Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 19 Nov 2018 16:34:00 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 19 11:34:00 2018
Received: from localhost ([127.0.0.1]:32919 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gOmUp-00081q-4Q
	for submit <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:34:00 -0500
Received: from eggs.gnu.org ([208.118.235.92]:47361)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1gOmUn-00081a-0d
 for 33185 <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:33:57 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <ludo@HIDDEN>) id 1gOmUh-0007QH-CG
 for 33185 <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:33:51 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled
 version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54219)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>)
 id 1gOmUh-0007Q9-9M; Mon, 19 Nov 2018 11:33:51 -0500
Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=32850 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1gOmUh-00061R-0d; Mon, 19 Nov 2018 11:33:51 -0500
From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=)
To: Christopher Baines <mail@HIDDEN>
Subject: Re: [bug#33185] [PATCH 5/7] gnu: Add python-django-debug-toolbar.
References: <20181104104455.3527-1-mail@HIDDEN>
 <20181104104455.3527-5-mail@HIDDEN>
Date: Mon, 19 Nov 2018 17:33:49 +0100
In-Reply-To: <20181104104455.3527-5-mail@HIDDEN> (Christopher Baines's
 message of "Sun, 4 Nov 2018 10:44:53 +0000")
Message-ID: <87pnv1xc0i.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: 33185
Cc: 33185 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -6.0 (------)

Christopher Baines <mail@HIDDEN> skribis:

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

[...]

> +    (synopsis "Toolbar to help with developing Django applications")
> +    (description
> +     "A configurable set of panels that display various debug information
> +about the current request/response.")

Please make a full sentence.  Otherwise LGTM.




Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 19 Nov 2018 16:33:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 19 11:33:21 2018
Received: from localhost ([127.0.0.1]:32916 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gOmUC-00080w-QN
	for submit <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:33:21 -0500
Received: from eggs.gnu.org ([208.118.235.92]:47070)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1gOmUB-00080j-2N
 for 33185 <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:33:19 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <ludo@HIDDEN>) id 1gOmU5-0006qA-6T
 for 33185 <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:33:13 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_20 autolearn=disabled
 version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54208)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>)
 id 1gOmU5-0006pv-3H; Mon, 19 Nov 2018 11:33:13 -0500
Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=32848 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1gOmU4-0005yH-Qe; Mon, 19 Nov 2018 11:33:13 -0500
From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=)
To: Christopher Baines <mail@HIDDEN>
Subject: Re: [bug#33185] [PATCH 4/7] gnu: Add python-django-jinja.
References: <20181104104455.3527-1-mail@HIDDEN>
 <20181104104455.3527-4-mail@HIDDEN>
Date: Mon, 19 Nov 2018 17:33:11 +0100
In-Reply-To: <20181104104455.3527-4-mail@HIDDEN> (Christopher Baines's
 message of "Sun, 4 Nov 2018 10:44:52 +0000")
Message-ID: <87tvkdxc1k.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: 33185
Cc: 33185 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -6.0 (------)

Christopher Baines <mail@HIDDEN> skribis:

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

[...]

> +    (home-page
> +     "https://niwinz.github.io/django-jinja/latest/")
> +    (synopsis "Simple and nonobstructive jinja2 backend for Django")
> +    (description
> +     "Jinja2 provides certain advantages over the native system of Django, for
> +example, explicit calls to callable from templates and better performance.
> +@code{django-jinja} is a alternative to the jinja2 backend built in to Django.")

This is not crystal-clear to someone unfamiliar with Django and Jinja,
so bonus points if you can come up with a clearer synopsis and
description.  Otherwise LGTM!




Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 19 Nov 2018 16:30:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 19 11:30:54 2018
Received: from localhost ([127.0.0.1]:32905 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gOmRp-0007wt-S2
	for submit <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:30:54 -0500
Received: from eggs.gnu.org ([208.118.235.92]:46383)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1gOmRn-0007wb-Hv
 for 33185 <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:30:53 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <ludo@HIDDEN>) id 1gOmRh-0002wi-Op
 for 33185 <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:30:46 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled
 version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54159)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>)
 id 1gOmRh-0002wW-Lj; Mon, 19 Nov 2018 11:30:45 -0500
Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=32846 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1gOmRh-0007dZ-Cd; Mon, 19 Nov 2018 11:30:45 -0500
From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=)
To: Christopher Baines <mail@HIDDEN>
Subject: Re: [bug#33185] [PATCH 3/7] gnu: Add python-django-pipeline.
References: <20181028092702.22549-1-mail@HIDDEN>
 <20181028092702.22549-3-mail@HIDDEN>
Date: Mon, 19 Nov 2018 17:30:44 +0100
In-Reply-To: <20181028092702.22549-3-mail@HIDDEN> (Christopher Baines's
 message of "Sun, 28 Oct 2018 09:26:58 +0000")
Message-ID: <87y39pxc5n.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: 33185
Cc: 33185 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -6.0 (------)

Christopher Baines <mail@HIDDEN> skribis:

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

LGTM!




Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 19 Nov 2018 16:30:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 19 11:30:33 2018
Received: from localhost ([127.0.0.1]:32900 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gOmRV-0007wE-JN
	for submit <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:30:33 -0500
Received: from eggs.gnu.org ([208.118.235.92]:46332)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1gOmRT-0007w2-N3
 for 33185 <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:30:31 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <ludo@HIDDEN>) id 1gOmRO-0002B5-4K
 for 33185 <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:30:26 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled
 version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54156)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>)
 id 1gOmRO-0002Ax-10; Mon, 19 Nov 2018 11:30:26 -0500
Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=32844 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1gOmRN-0006f8-NR; Mon, 19 Nov 2018 11:30:25 -0500
From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=)
To: Christopher Baines <mail@HIDDEN>
Subject: Re: [bug#33185] [PATCH 2/7] gnu: Add python-slimit.
References: <20181028092702.22549-1-mail@HIDDEN>
 <20181028092702.22549-2-mail@HIDDEN>
Date: Mon, 19 Nov 2018 17:30:24 +0100
In-Reply-To: <20181028092702.22549-2-mail@HIDDEN> (Christopher Baines's
 message of "Sun, 28 Oct 2018 09:26:57 +0000")
Message-ID: <8736rxyqqn.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: 33185
Cc: 33185 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -6.0 (------)

Christopher Baines <mail@HIDDEN> skribis:

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

[...]

> +    (synopsis "JavaScript minifier, parser and lexer written in Python")
> +    (description
> +     "@code{SlimIt} is a JavaScript minifier written in Python.  It compiles

I think you can avoid @code here.  Otherwise LGTM!




Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 19 Nov 2018 16:30:05 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 19 11:30:05 2018
Received: from localhost ([127.0.0.1]:32897 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gOmR3-0007ui-Ax
	for submit <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:30:05 -0500
Received: from eggs.gnu.org ([208.118.235.92]:46211)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1gOmR1-0007th-Rv
 for 33185 <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:30:04 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <ludo@HIDDEN>) id 1gOmQw-0001h9-6D
 for 33185 <at> debbugs.gnu.org; Mon, 19 Nov 2018 11:29:58 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled
 version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54144)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>)
 id 1gOmQw-0001gz-3U; Mon, 19 Nov 2018 11:29:58 -0500
Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=32842 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1gOmQv-0005AC-Qo; Mon, 19 Nov 2018 11:29:58 -0500
From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=)
To: Christopher Baines <mail@HIDDEN>
Subject: Re: [bug#33185] [PATCH 1/7] gnu: Add python-jsmin.
References: <87y3aie8a1.fsf@HIDDEN>
 <20181028092702.22549-1-mail@HIDDEN>
Date: Mon, 19 Nov 2018 17:29:56 +0100
In-Reply-To: <20181028092702.22549-1-mail@HIDDEN> (Christopher Baines's
 message of "Sun, 28 Oct 2018 09:26:56 +0000")
Message-ID: <877eh9yqrf.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: 33185
Cc: 33185 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -6.0 (------)

Hello,

Christopher Baines <mail@HIDDEN> skribis:

> * gnu/packages/python-web.scm (python-jsmin, python2-jsmin): New variable=
s.

LGTM!

For the record, if the =E2=80=98python2-=E2=80=99 version is not strictly n=
eeded, you
should omit it.

Thanks,
Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 4 Nov 2018 19:10:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 04 14:10:48 2018
Received: from localhost ([127.0.0.1]:34265 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gJNnM-0005oq-9w
	for submit <at> debbugs.gnu.org; Sun, 04 Nov 2018 14:10:48 -0500
Received: from mx1.riseup.net ([198.252.153.129]:56014)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <swedebugia@HIDDEN>) id 1gJNnK-0005oh-GS
 for 33185 <at> debbugs.gnu.org; Sun, 04 Nov 2018 14:10:46 -0500
Received: from cotinga.riseup.net (cotinga-pn.riseup.net [10.0.1.164])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (Client CN "*.riseup.net",
 Issuer "COMODO RSA Domain Validation Secure Server CA" (verified OK))
 by mx1.riseup.net (Postfix) with ESMTPS id 111E21A0197;
 Sun,  4 Nov 2018 11:10:46 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak;
 t=1541358646; bh=/Deyc4k7XEYt8OOnUF8rd5y6fReT/ywMEIj8JAMfK0M=;
 h=Subject:To:References:From:Date:In-Reply-To:From;
 b=D5KLz+DAwNEWqYoSlELBmeujZv8rCVE9tIo71lOFYjgds738oR5K/l1P9zYWh6DL2
 GgH8n6pvIctr1LEtrEa+MYAS4RrQQZQ5huIuZFwcNpjbUCcWEDreAwOrUQY22tgVB8
 57LVUIBaQREjW/d6YWPYEjJnYcOhWzHASW8ckTcI=
X-Riseup-User-ID: 9EDD883B13B46E5F392B37EE89805C5929FD58BE1A95C1BCBBD37A20B2913A43
Received: from [127.0.0.1] (localhost [127.0.0.1])
 by cotinga.riseup.net with ESMTPSA id 1A937E6DD0;
 Sun,  4 Nov 2018 11:10:44 -0800 (PST)
Subject: Re: [bug#33185] [PATCH 7/7] services: Add patchwork.
To: Christopher Baines <mail@HIDDEN>, 33185 <at> debbugs.gnu.org
References: <20181104104455.3527-1-mail@HIDDEN>
 <20181104104455.3527-7-mail@HIDDEN>
From: swedebugia <swedebugia@HIDDEN>
Message-ID: <b32159e7-080a-ecb8-513b-3cd57959a0dd@HIDDEN>
Date: Sun, 4 Nov 2018 20:10:42 +0100
MIME-Version: 1.0
In-Reply-To: <20181104104455.3527-7-mail@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Content-Language: en-US
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Hi

On 2018-11-04 11:44, Christopher Baines wrote:
> ---
>   gnu/services/web.scm | 297 ++++++++++++++++++++++++++++++++++++++++++-
>   gnu/tests/web.scm    | 104 ++++++++++++++-
>   2 files changed, 399 insertions(+), 2 deletions(-)

Nice work with the service-declaration. :) (untested)

Would you be willing to update the patch with documentation also?

-- 
Cheers
Swedebugia





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 4 Nov 2018 19:09:38 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 04 14:09:38 2018
Received: from localhost ([127.0.0.1]:34261 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gJNmD-0005mr-Uy
	for submit <at> debbugs.gnu.org; Sun, 04 Nov 2018 14:09:38 -0500
Received: from mx1.riseup.net ([198.252.153.129]:55837)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <swedebugia@HIDDEN>) id 1gJNmC-0005mj-7v
 for 33185 <at> debbugs.gnu.org; Sun, 04 Nov 2018 14:09:36 -0500
Received: from cotinga.riseup.net (cotinga-pn.riseup.net [10.0.1.164])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (Client CN "*.riseup.net",
 Issuer "COMODO RSA Domain Validation Secure Server CA" (verified OK))
 by mx1.riseup.net (Postfix) with ESMTPS id 682E01A049D;
 Sun,  4 Nov 2018 11:09:35 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak;
 t=1541358575; bh=8zW+BO7X6Iuqsz0G6eHiisfG/NtO/6waf/UFnGMw1sE=;
 h=Subject:To:References:From:Date:In-Reply-To:From;
 b=iip4inLft3KEO4Q6PUKgjPJdB4PzM3LHELN0tzioZCpxEjg9zCtQZFsWg5xKpYRmI
 3YIxNmpLeeRVd8F+9PFhAdjd2AIIkw41hlqfjW6K24UkhPCU9cu41npqCESqAPro2f
 AgD1Rfv8fcB7Bc8VVTsXni9vZhgX08WsSWYnnmG8=
X-Riseup-User-ID: 81AAAD16A17A3015DD0B6EF577421739170229F035AEA830155EEF3333BEA642
Received: from [127.0.0.1] (localhost [127.0.0.1])
 by cotinga.riseup.net with ESMTPSA id 536B2E6D58;
 Sun,  4 Nov 2018 11:09:33 -0800 (PST)
Subject: Re: [bug#33185] [PATCH 6/7] gnu: Add patchwork.
To: Christopher Baines <mail@HIDDEN>, 33185 <at> debbugs.gnu.org
References: <20181104104455.3527-1-mail@HIDDEN>
 <20181104104455.3527-6-mail@HIDDEN>
From: swedebugia <swedebugia@HIDDEN>
Message-ID: <8334382e-d993-2375-6a27-79e6fd42c571@HIDDEN>
Date: Sun, 4 Nov 2018 20:09:32 +0100
MIME-Version: 1.0
In-Reply-To: <20181104104455.3527-6-mail@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Content-Language: en-US
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Hi

I did not run the code. See question below.

On 2018-11-04 11:44, Christopher Baines wrote:
> ---
>   gnu/packages/patchutils.scm | 103 ++++++++++++++++++++++++++++++++++++
>   1 file changed, 103 insertions(+)
>
> diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
snip
> +
> +(define-public patchwork
> +
snip
> +    (synopsis "")
> +    (description "")
> +    (home-page "")
> +    (license "")))
Perhaps you forgot to populate these 4 fields?

-- 
Cheers
Swedebugia





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 4 Nov 2018 10:45:03 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 04 05:45:03 2018
Received: from localhost ([127.0.0.1]:33367 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gJFtu-0004Nr-I3
	for submit <at> debbugs.gnu.org; Sun, 04 Nov 2018 05:45:03 -0500
Received: from li622-129.members.linode.com ([212.71.249.129]:51544
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gJFtq-0004MI-2e
 for 33185 <at> debbugs.gnu.org; Sun, 04 Nov 2018 05:44:58 -0500
Received: by mira.cbaines.net (Postfix, from userid 113)
 id 9C13C167A1; Sun,  4 Nov 2018 10:44:57 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UNPARSEABLE_RELAY,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (unknown [185.80.85.115])
 by mira.cbaines.net (Postfix) with ESMTPSA id 718AC167A8
 for <33185 <at> debbugs.gnu.org>; Sun,  4 Nov 2018 10:44:56 +0000 (GMT)
Received: from localhost (localhost [local])
 by localhost (OpenSMTPD) with ESMTPA id 57eb208c
 for <33185 <at> debbugs.gnu.org>; Sun, 4 Nov 2018 10:44:55 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
To: 33185 <at> debbugs.gnu.org
Subject: [PATCH 7/7] services: Add patchwork.
Date: Sun,  4 Nov 2018 10:44:55 +0000
Message-Id: <20181104104455.3527-7-mail@HIDDEN>
X-Mailer: git-send-email 2.18.0
In-Reply-To: <20181104104455.3527-1-mail@HIDDEN>
References: <20181104104455.3527-1-mail@HIDDEN>
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

---
 gnu/services/web.scm | 297 ++++++++++++++++++++++++++++++++++++++++++-
 gnu/tests/web.scm    | 104 ++++++++++++++-
 2 files changed, 399 insertions(+), 2 deletions(-)

diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index fcf453c24..41db75153 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -32,12 +32,16 @@
   #:use-module (gnu system pam)
   #:use-module (gnu system shadow)
   #:use-module (gnu packages admin)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages web)
+  #:use-module (gnu packages patchutils)
   #:use-module (gnu packages php)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages logging)
   #:use-module (guix records)
   #:use-module (guix modules)
+  #:use-module (guix utils)
   #:use-module (guix gexp)
   #:use-module ((guix store) #:select (text-file))
   #:use-module ((guix utils) #:select (version-major))
@@ -210,7 +214,41 @@
             varnish-configuration-parameters
             varnish-configuration-extra-options
 
-            varnish-service-type))
+            varnish-service-type
+
+            <patchwork-database-configuration>
+            patchwork-database-configuration
+            patchwork-database-configuration?
+            patchwork-database-configuration-engine
+            patchwork-database-configuration-name
+            patchwork-database-configuration-user
+            patchwork-database-configuration-password
+            patchwork-database-configuration-host
+            patchwork-database-configuration-port
+
+            <patchwork-settings-module>
+            patchwork-settings-module
+            patchwork-settings-module?
+            patchwork-settings-module-database-configuration
+            patchwork-settings-module-secret-key
+            patchwork-settings-module-allowed-hosts
+            patchwork-settings-module-default-from-email
+            patchwork-settings-module-static-url
+            patchwork-settings-module-admins
+            patchwork-settings-module-debug?
+            patchwork-settings-module-enable-rest-api?
+            patchwork-settings-module-enable-xmlrpc?
+            patchwork-settings-module-force-https-links?
+            patchwork-settings-module-extra-settings
+
+            <patchwork-configuration>
+            patchwork-configuration
+            patchwork-configuration?
+            patchwork-configuration-patchwork
+            patchwork-configuration-settings-module
+            patchwork-configuration-domain
+
+            patchwork-service-type))
 
 ;;; Commentary:
 ;;;
@@ -1261,3 +1299,260 @@ files.")
                              varnish-shepherd-service)))
    (default-value
      (varnish-configuration))))
+
+
+;;;
+;;; Patchwork
+;;;
+
+(define-record-type* <patchwork-database-configuration>
+  patchwork-database-configuration make-patchwork-database-configuration
+  patchwork-database-configuration?
+  (engine          patchwork-database-configuration-engine
+                   (default "django.db.backends.postgresql_psycopg2"))
+  (name            patchwork-database-configuration-name
+                   (default "patchwork"))
+  (user            patchwork-database-configuration-user
+                   (default ""))
+  (password        patchwork-database-configuration-password
+                   (default ""))
+  (host            patchwork-database-configuration-host
+                   (default ""))
+  (port            patchwork-database-configuration-port
+                   (default "")))
+
+(define-record-type* <patchwork-settings-module>
+  patchwork-settings-module make-patchwork-settings-module
+  patchwork-settings-module?
+  (database-configuration    patchwork-settings-module-database-configuration
+                             (default (patchwork-database-configuration)))
+  (secret-key                patchwork-settings-module-secret-key)
+  (allowed-hosts             patchwork-settings-module-allowed-hosts)
+  (default-from-email        patchwork-settings-module-default-from-email)
+  (static-url                patchwork-settings-module-static-url
+                             (default "/static/"))
+  (admins                    patchwork-settings-module-admins
+                             (default '()))
+  (debug?                    patchwork-settings-module-debug?
+                             (default #f))
+  (enable-rest-api?          patchwork-settings-module-enable-rest-api?
+                             (default #t))
+  (enable-xmlrpc?            patchwork-settings-module-enable-xmlrpc?
+                             (default #t))
+  (force-https-links?        patchwork-settings-module-force-https-links?
+                             (default #t))
+  (extra-settings            patchwork-settings-module-extra-settings
+                             (default "")))
+
+(define-record-type* <patchwork-configuration>
+  patchwork-configuration make-patchwork-configuration
+  patckwork-configuration?
+  (patchwork            patchwork-configuration-patchwork
+                        (default patchwork))
+  (settings-module      patchwork-configuration-settings-module)
+  (domain               patchwork-configuration-domain))
+
+(define-gexp-compiler (patchwork-settings-module-compiler
+                       (file <patchwork-settings-module>) system target)
+  (match file
+    (($ <patchwork-settings-module> database-configuration secret-key
+                                    allowed-hosts default-from-email
+                                    static-url admins debug? enable-rest-api?
+                                    enable-xmlrpc? force-https-links?
+                                    extra-configuration)
+     (gexp->derivation
+      "patchwork-settings"
+      (with-imported-modules '((guix build utils))
+        #~(let ((output #$output))
+            (define (create-__init__.py filename)
+              (call-with-output-file filename
+                (lambda (port) (display "" port))))
+
+            (use-modules (guix build utils)
+                         (srfi srfi-1))
+
+            (mkdir-p (string-append output "/guix/patchwork"))
+            (create-__init__.py
+             (string-append output "/guix/__init__.py"))
+            (create-__init__.py
+             (string-append output "/guix/patchwork/__init__.py"))
+
+            (call-with-output-file
+                (string-append output "/guix/patchwork/settings.py")
+              (lambda (port)
+                (display
+                 (string-append "from patchwork.settings.base import *
+
+# Configuration from Guix
+SECRET_KEY = '" #$secret-key "'
+
+ALLOWED_HOSTS = [
+" #$(string-concatenate
+     (map (lambda (allowed-host)
+            (string-append "  '" allowed-host "'\n"))
+          allowed-hosts))
+"]
+
+DEBUG = " #$(if debug? "True" "False") "
+
+ENABLE_REST_API = " #$(if enable-xmlrpc? "True" "False") "
+ENABLE_XMLRPC = " #$(if enable-xmlrpc? "True" "False") "
+
+FORCE_HTTPS_LINKS = " #$(if force-https-links? "True" "False") "
+
+DATABASES = {
+    'default': {
+" #$(match database-configuration
+      (($ <patchwork-database-configuration>
+          engine name user password host port)
+       (string-append
+        "        'ENGINE': '" engine "',\n"
+        "        'NAME': '" name "',\n"
+        "        'USER': '" user "',\n"
+        "        'PASSWORD': '" password "',\n"
+        "        'HOST': '" host "',\n"
+        "        'PORT': '" port "',\n"))) "
+    },
+}
+
+" #$(if debug?
+        #~(string-append "STATIC_ROOT = '" #$(file-append patchwork "/share/patchwork/htdocs") "'")
+        #~(string-append "STATIC_URL = '" #$static-url "'")) "
+
+STATICFILES_STORAGE = (
+  'django.contrib.staticfiles.storage.StaticFilesStorage'
+)
+
+# Guix Extra Configuration
+" #$extra-configuration "
+") port)))
+            #t))
+      #:local-build? #t))))
+
+(define (patchwork-wsgi-wrapper patchwork)
+  (define patchwork-wsgi.py
+    (file-append patchwork
+                 (string-append
+                  "/lib/python"
+                  (version-major+minor
+                   (package-version python))
+                  "/site-packages/patchwork/wsgi.py")))
+
+  (mixed-text-file
+   "patchwork-wsgi.py"
+   "import os\n"
+   "\n"
+   "exec(open(\"" patchwork-wsgi.py "\").read())\n"))
+
+(define patchwork-httpd-configuration
+  (match-lambda
+    (($ <patchwork-configuration> patchwork settings-module
+                                  domain)
+
+     (define wsgi.py (patchwork-wsgi-wrapper patchwork))
+
+     (list "WSGISocketPrefix /var/run/mod_wsgi"
+           (list "LoadModule wsgi_module "
+                 (file-append mod-wsgi "/modules/mod_wsgi.so"))
+           (httpd-virtualhost
+            "*:8080"
+            `("ServerAdmin admin@HIDDEN
+ServerName " ,domain "
+
+LogFormat \"%v %h %l %u %t \\\"%r\\\" %>s %b \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\" customformat
+LogLevel info
+CustomLog \"/var/log/httpd/" ,domain "-access_log\" customformat
+
+ErrorLog /var/log/httpd/error.log
+
+WSGIScriptAlias / " ,wsgi.py "
+WSGIDaemonProcess patchwork user=httpd group=httpd processes=1 threads=2 display-name=%{GROUP} lang='en_US.UTF-8' locale='en_US.UTF-8' python-path=" ,settings-module "
+WSGIProcessGroup patchwork
+WSGIPassAuthorization On
+
+<Files " ,wsgi.py ">
+  Require all granted
+</Files>
+
+Alias /static " ,patchwork "/share/patchwork/htdocs
+<Directory \"/srv/http/" ,domain "/\">
+    AllowOverride None
+    Options MultiViews Indexes SymlinksIfOwnerMatch IncludesNoExec
+    Require method GET POST OPTIONS
+</Directory>"))))))
+
+(define (patchwork-setup-gexp settings-module)
+  (with-imported-modules (source-module-closure
+                          '((guix build utils)))
+    #~(lambda ()
+        (catch #t
+          (lambda ()
+            (let ((pid (primitive-fork))
+                  (user (getpwnam "postgres")))
+              (if (eq? pid 0)
+                  (dynamic-wind
+                    (const #t)
+                    (lambda ()
+                      (setgid (passwd:gid user))
+                      (setuid (passwd:uid user))
+                      (primitive-exit
+                       (if (and
+                            (zero?
+                             (system* #$(file-append postgresql "/bin/createuser")
+                                      "httpd"))
+                            (zero?
+                             (system* #$(file-append postgresql "/bin/createdb")
+                                      "-O" "httpd" "patchwork")))
+                           0
+                           1)))
+                    (lambda ()
+                      (primitive-exit 1)))
+                  (zero? (cdr (waitpid pid)))))
+            (let ((pid (primitive-fork))
+                  (user (getpwnam "httpd")))
+              (if (eq? pid 0)
+                  (dynamic-wind
+                    (const #t)
+                    (lambda ()
+                      (setgid (passwd:gid user))
+                      (setuid (passwd:uid user))
+                      ;; TODO Extract
+                      (setenv "DJANGO_SECRET_KEY" "testsecretkey")
+                      (setenv "DATABASE_NAME" "patchwork")
+                      (setenv "PYTHONPATH" #$settings-module)
+                      (primitive-exit
+                       (if (and
+                            (zero?
+                             (system* #$(file-append patchwork
+                                                     "/bin/patchwork-admin")
+                                      "migrate")))
+                           0
+                           1)))
+                    (lambda ()
+                      (primitive-exit 1)))
+                  (zero? (cdr (waitpid pid))))))
+          (lambda (key . parameters)
+            (format (current-error-port)
+                    "Uncaught throw to '~a: ~a\n" key parameters)
+            #f)))))
+
+(define patchwork-service-type
+  (service-type
+   (name 'patchwork-setup)
+   (extensions
+    (list (service-extension httpd-service-type
+                             patchwork-httpd-configuration)
+          (service-extension
+           shepherd-root-service-type
+           (match-lambda
+             (($ <patchwork-configuration> patchwork settings-module
+                                           domain)
+              (list (shepherd-service
+                     (requirement '(postgres))
+                     (provision '(patchwork-setup))
+                     (start (patchwork-setup-gexp settings-module))
+                     (stop #~(const #f))
+                     (respawn? #f)
+                     (documentation "Setup patchwork."))))))))
+   (description
+    "patchwork")))
diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm
index 319655396..fbdf78a03 100644
--- a/gnu/tests/web.scm
+++ b/gnu/tests/web.scm
@@ -28,15 +28,27 @@
   #:use-module (gnu system vm)
   #:use-module (gnu services)
   #:use-module (gnu services web)
+  #:use-module (gnu services databases)
   #:use-module (gnu services networking)
+  #:use-module (gnu services shepherd)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages patchutils)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages web)
+  #:use-module (guix packages)
+  #:use-module (guix modules)
+  #:use-module (guix records)
   #:use-module (guix gexp)
   #:use-module (guix store)
+  #:use-module (guix utils)
+  #:use-module (ice-9 match)
   #:export (%test-httpd
             %test-nginx
             %test-varnish
             %test-php-fpm
             %test-hpcguix-web
-            %test-tailon))
+            %test-tailon
+            %test-patchwork))
 
 (define %index.html-contents
   ;; Contents of the /index.html file.
@@ -498,3 +510,93 @@ HTTP-PORT."
    (name "tailon")
    (description "Connect to a running Tailon server.")
    (value (run-tailon-test))))
+
+
+;;;
+;;; Patchwork
+;;;
+
+(define %patchwork-os
+  (simple-operating-system
+   (service dhcp-client-service-type)
+   (service httpd-service-type
+            (httpd-configuration
+             (config
+              (httpd-config-file
+               (listen '("8080"))))))
+   (service postgresql-service-type)
+   (service patchwork-service-type
+            (patchwork-configuration
+             (settings-module
+              (patchwork-settings-module
+               (secret-key "00000")
+               (allowed-hosts '("*"))
+               (default-from-email "")
+               (debug? #t)))
+             (domain "localhost")))))
+
+(define* (run-patchwork-test)
+  "Run tests in %NGINX-OS, which has nginx running and listening on
+HTTP-PORT."
+  (define os
+    (marionette-operating-system
+     %patchwork-os
+     #:imported-modules '((gnu services herd)
+                          (guix combinators))))
+
+  (define forwarded-port 8080)
+
+  (define vm
+    (virtual-machine
+     (operating-system os)
+     (port-forwardings `((8080 . ,forwarded-port)))))
+
+  (define test
+    (with-imported-modules '((gnu build marionette))
+      #~(begin
+          (use-modules (srfi srfi-11) (srfi srfi-64)
+                       (gnu build marionette)
+                       (web uri)
+                       (web client)
+                       (web response))
+
+          (define marionette
+            (make-marionette (list #$vm)))
+
+          (mkdir #$output)
+          (chdir #$output)
+
+          (test-begin "patchwork")
+
+          (test-assert "httpd service running"
+            (marionette-eval
+             '(begin
+                (use-modules (gnu services herd))
+                (match (start-service 'httpd)
+                  (#f #f)
+                  (('service response-parts ...)
+                   (match (assq-ref response-parts 'running)
+                     ((#t) #t)
+                     ((pid) (number? pid))))))
+             marionette))
+
+          ;; Retrieve the index.html file we put in /srv.
+          (test-equal "http-get"
+            200
+            (let-values
+                (((response text)
+                  (http-get #$(simple-format
+                               #f "http://localhost:~A/" forwarded-port)
+                            #:decode-body? #t)))
+              (response-code response)))
+
+          (test-end)
+          (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
+
+  (gexp->derivation "patchwork-test" test))
+
+(define %test-patchwork
+  (system-test
+   (name "patchwork")
+   (description "")
+   (value (run-patchwork-test))))
-- 
2.18.0





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 4 Nov 2018 10:45:00 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 04 05:45:00 2018
Received: from localhost ([127.0.0.1]:33365 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gJFts-0004ND-45
	for submit <at> debbugs.gnu.org; Sun, 04 Nov 2018 05:45:00 -0500
Received: from li622-129.members.linode.com ([212.71.249.129]:51542
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gJFtp-0004MG-SK
 for 33185 <at> debbugs.gnu.org; Sun, 04 Nov 2018 05:44:58 -0500
Received: by mira.cbaines.net (Postfix, from userid 113)
 id 6C69116753; Sun,  4 Nov 2018 10:44:57 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UNPARSEABLE_RELAY,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (unknown [185.80.85.115])
 by mira.cbaines.net (Postfix) with ESMTPSA id 5D20F167A6
 for <33185 <at> debbugs.gnu.org>; Sun,  4 Nov 2018 10:44:56 +0000 (GMT)
Received: from localhost (localhost [local])
 by localhost (OpenSMTPD) with ESMTPA id c52e51ea
 for <33185 <at> debbugs.gnu.org>; Sun, 4 Nov 2018 10:44:55 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
To: 33185 <at> debbugs.gnu.org
Subject: [PATCH 6/7] gnu: Add patchwork.
Date: Sun,  4 Nov 2018 10:44:54 +0000
Message-Id: <20181104104455.3527-6-mail@HIDDEN>
X-Mailer: git-send-email 2.18.0
In-Reply-To: <20181104104455.3527-1-mail@HIDDEN>
References: <20181104104455.3527-1-mail@HIDDEN>
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

---
 gnu/packages/patchutils.scm | 103 ++++++++++++++++++++++++++++++++++++
 1 file changed, 103 insertions(+)

diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index 688e62cdc..0981cbc08 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -29,6 +29,8 @@
   #:use-module (gnu packages ed)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages django)
   #:use-module (gnu packages file)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages gettext)
@@ -240,3 +242,104 @@ hexadecimal and ASCII (or EBCDIC).  It can also display two files at once, and
 highlight the differences between them.  It works well with large files (up to 4
 GiB).")
     (license gpl2+)))
+
+(define-public patchwork
+  (package
+    (name "patchwork")
+    (version "2.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/getpatchwork/patchwork/archive/v"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1q4i46gwwxvr8gjj983r8aacfsssp062dzi29ha7zba380fsxayy"))
+              (file-name (string-append name "-" version))))
+    (build-system python-build-system)
+    (arguments
+     `(;; TODO: Tests require a running database
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (add-after 'unpack 'patch-wsgi.py
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "patchwork/wsgi.py"
+               (("import os")
+                (string-append
+                 "import os, sys
+
+sys.path.extend('" (string-append (getenv "PYTHONPATH") ":" (site-packages inputs outputs)) "'.split(':'))"))
+               (("'patchwork\\.settings\\.production'")
+                "os.getenv('DJANGO_SETTINGS_MODULE', 'guix.patchwork.settings')"))))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (or (not tests?)
+                 (begin
+                   (setenv "DJANGO_SETTINGS_MODULE" "patchwork.settings.dev")
+                   (invoke
+                    "python" "-Wonce" "./manage.py" "test" "--noinput")
+                   #t))))
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (for-each (lambda (directory)
+                           (copy-recursively
+                            directory
+                            (string-append (site-packages inputs outputs)
+                                           "/" directory)))
+                         '("patchwork"
+                           "templates"))
+               (delete-file-recursively (string-append
+                                    (site-packages inputs outputs)
+                                    "patchwork/tests"))
+               (let ((static-root
+                      (string-append out "/share/patchwork/htdocs")))
+                 (mkdir-p static-root)
+                 (copy-file "patchwork/settings/production.example.py"
+                            "patchwork/settings/assets.py")
+                 (setenv "DJANGO_SECRET_KEY" "dummyvalue")
+                 (setenv "DJANGO_SETTINGS_MODULE" "patchwork.settings.assets")
+                 (setenv "STATIC_ROOT" static-root)
+                 (invoke "./manage.py" "collectstatic" "--no-input"))
+
+               (copy-recursively "lib"
+                                 (string-append
+                                  out "/share/doc/" ,name "-" ,version)))
+             #t))
+         (add-after 'install 'install-patchwork-admin
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/bin"))
+               (call-with-output-file (string-append out "/bin/patchwork-admin")
+                 (lambda (port)
+                   (display "#!/usr/bin/env python3
+import os, sys
+
+if __name__ == \"__main__\":
+    os.environ.setdefault(
+      \"DJANGO_SETTINGS_MODULE\",
+      \"guix.patchwork.settings\"
+    )
+
+    from django.core.management import execute_from_command_line
+
+    execute_from_command_line(sys.argv)" port)))
+               (chmod (string-append out "/bin/patchwork-admin") #o555))
+             #t)))))
+    (inputs
+     `(("python-wrapper" ,python-wrapper)))
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ;; TODO: Make this configurable
+       ("python-psycopg2" ,python-psycopg2)
+       ("python-mysqlclient" ,python-mysqlclient)
+       ("python-django-filter" ,python-django-filter)
+       ("python-djangorestframework" ,python-djangorestframework)
+       ("python-django-debug-toolbar" ,python-django-debug-toolbar)))
+    (synopsis "")
+    (description "")
+    (home-page "")
+    (license "")))
-- 
2.18.0





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 4 Nov 2018 10:45:00 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 04 05:45:00 2018
Received: from localhost ([127.0.0.1]:33363 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gJFtr-0004N6-Nm
	for submit <at> debbugs.gnu.org; Sun, 04 Nov 2018 05:45:00 -0500
Received: from li622-129.members.linode.com ([212.71.249.129]:51540
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gJFtp-0004M2-6P
 for 33185 <at> debbugs.gnu.org; Sun, 04 Nov 2018 05:44:58 -0500
Received: by mira.cbaines.net (Postfix, from userid 113)
 id B0B7116754; Sun,  4 Nov 2018 10:44:56 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UNPARSEABLE_RELAY,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (unknown [185.80.85.115])
 by mira.cbaines.net (Postfix) with ESMTPSA id 3175C167A1
 for <33185 <at> debbugs.gnu.org>; Sun,  4 Nov 2018 10:44:56 +0000 (GMT)
Received: from localhost (localhost [local])
 by localhost (OpenSMTPD) with ESMTPA id df16d4e5
 for <33185 <at> debbugs.gnu.org>; Sun, 4 Nov 2018 10:44:55 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
To: 33185 <at> debbugs.gnu.org
Subject: [PATCH 4/7] gnu: Add python-django-jinja.
Date: Sun,  4 Nov 2018 10:44:52 +0000
Message-Id: <20181104104455.3527-4-mail@HIDDEN>
X-Mailer: git-send-email 2.18.0
In-Reply-To: <20181104104455.3527-1-mail@HIDDEN>
References: <20181104104455.3527-1-mail@HIDDEN>
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

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

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 589ba282e..48f36835d 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -338,6 +338,55 @@ merging, minifying and compiling CSS and Javascript files.")
 (define-public python2-django-assets
   (package-with-python2 python-django-assets))
 
+(define-public python-django-jinja
+  (package
+    (name "python-django-jinja")
+    (version "2.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/niwinz/django-jinja/archive/"
+             version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0bzrb4m6wx9ph5cpvz7wpvg5k6ksvj0dnxlg0nhhqskhvp46brs1"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ("python-jinja2" ,python-jinja2)
+       ("python-pytz" ,python-pytz)
+       ("python-django-pipeline" ,python-django-pipeline)))
+    (arguments
+     '(;; TODO Tests currently fail due to issues with the configuration for
+       ;; django-pipeline
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (or
+              (not tests?)
+              (with-directory-excursion "testing"
+                (invoke "python" "runtests.py"))))))))
+    (home-page
+     "https://niwinz.github.io/django-jinja/latest/")
+    (synopsis "Simple and nonobstructive jinja2 backend for Django")
+    (description
+     "Jinja2 provides certain advantages over the native system of Django, for
+example, explicit calls to callable from templates and better performance.
+@code{django-jinja} is a alternative to the jinja2 backend built in to Django.")
+    (license license:bsd-3)))
+
+(define-public python2-django-jinja
+  (let ((base (package-with-python2 (strip-python2-variant python-django-jinja))))
+    (package
+      (inherit base)
+      (native-inputs
+       `(("python2-mock" ,python2-mock)
+         ,@(package-native-inputs base))))))
+
 (define-public python-django-jsonfield
   (package
     (name "python-django-jsonfield")
-- 
2.18.0





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 4 Nov 2018 10:44:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 04 05:44:59 2018
Received: from localhost ([127.0.0.1]:33361 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gJFtr-0004Mz-Ej
	for submit <at> debbugs.gnu.org; Sun, 04 Nov 2018 05:44:59 -0500
Received: from li622-129.members.linode.com ([212.71.249.129]:51538
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gJFtp-0004M1-1L
 for 33185 <at> debbugs.gnu.org; Sun, 04 Nov 2018 05:44:57 -0500
Received: by mira.cbaines.net (Postfix, from userid 113)
 id 89942167A9; Sun,  4 Nov 2018 10:44:56 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UNPARSEABLE_RELAY,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (unknown [185.80.85.115])
 by mira.cbaines.net (Postfix) with ESMTPSA id 4D29A16753
 for <33185 <at> debbugs.gnu.org>; Sun,  4 Nov 2018 10:44:56 +0000 (GMT)
Received: from localhost (localhost [local])
 by localhost (OpenSMTPD) with ESMTPA id 8bb7a928
 for <33185 <at> debbugs.gnu.org>; Sun, 4 Nov 2018 10:44:55 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
To: 33185 <at> debbugs.gnu.org
Subject: [PATCH 5/7] gnu: Add python-django-debug-toolbar.
Date: Sun,  4 Nov 2018 10:44:53 +0000
Message-Id: <20181104104455.3527-5-mail@HIDDEN>
X-Mailer: git-send-email 2.18.0
In-Reply-To: <20181104104455.3527-1-mail@HIDDEN>
References: <20181104104455.3527-1-mail@HIDDEN>
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/django.scm (python-django-debug-toolbar,
python2-django-debug-toolbar): 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 48f36835d..3a761bf60 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -265,6 +265,44 @@ account authentication.")
 (define-public python2-django-allauth
   (package-with-python2 python-django-allauth))
 
+(define-public python-django-debug-toolbar
+  (package
+    (name "python-django-debug-toolbar")
+    (version "1.10.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/jazzband/django-debug-toolbar/archive/"
+             version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1rww056hyzks8spbgf4h7kf6ybxlc5p08a2b6gn1nqrrzs4yx9sy"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-sqlparse" ,python-sqlparse)
+       ("python-django" ,python-django)))
+    (native-inputs
+     `(("python-django-jinja" ,python-django-jinja)
+       ("python-html5lib" ,python-html5lib)))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "make" "test"))))))
+    (home-page
+     "https://github.com/jazzband/django-debug-toolbar")
+    (synopsis "Toolbar to help with developing Django applications")
+    (description
+     "A configurable set of panels that display various debug information
+about the current request/response.")
+    (license license:bsd-3)))
+
+(define-public python2-django-debug-toolbar
+  (package-with-python2 python-django-debug-toolbar))
+
 (define-public python-django-gravatar2
   (package
     (name "python-django-gravatar2")
-- 
2.18.0





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 4 Nov 2018 10:44:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 04 05:44:59 2018
Received: from localhost ([127.0.0.1]:33359 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gJFtr-0004Mr-5G
	for submit <at> debbugs.gnu.org; Sun, 04 Nov 2018 05:44:59 -0500
Received: from li622-129.members.linode.com ([212.71.249.129]:51534
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gJFto-0004M0-UT
 for 33185 <at> debbugs.gnu.org; Sun, 04 Nov 2018 05:44:57 -0500
Received: by mira.cbaines.net (Postfix, from userid 113)
 id 7377D167AA; Sun,  4 Nov 2018 10:44:56 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UNPARSEABLE_RELAY,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (unknown [185.80.85.115])
 by mira.cbaines.net (Postfix) with ESMTPSA id 15A3A16754
 for <33185 <at> debbugs.gnu.org>; Sun,  4 Nov 2018 10:44:56 +0000 (GMT)
Received: from localhost (localhost [local])
 by localhost (OpenSMTPD) with ESMTPA id b78d51e2
 for <33185 <at> debbugs.gnu.org>; Sun, 4 Nov 2018 10:44:55 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
To: 33185 <at> debbugs.gnu.org
Subject: [PATCH 3/7] gnu: Add python-django-pipeline.
Date: Sun,  4 Nov 2018 10:44:51 +0000
Message-Id: <20181104104455.3527-3-mail@HIDDEN>
X-Mailer: git-send-email 2.18.0
In-Reply-To: <20181104104455.3527-1-mail@HIDDEN>
References: <20181104104455.3527-1-mail@HIDDEN>
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/django.scm (python-django-pipeline, python2-django-pipeline):
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 dea925e56..589ba282e 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -518,6 +518,49 @@ project.")
 (define-public python2-django-overextends
   (package-with-python2 python-django-overextends))
 
+(define-public python-django-pipeline
+  (package
+    (name "python-django-pipeline")
+    (version "1.6.14")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "django-pipeline" version))
+       (sha256
+        (base32
+         "1a207y71r7za033ira0qmh2yrgp5rq0l04gw2fg9b8jri7sslrzg"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           (lambda _
+             (substitute* "tests/tests/test_compiler.py"
+               (("\\/usr\\/bin\\/env")
+                (which "env")))))
+         (replace 'check
+           (lambda*(#:key tests? #:allow-other-keys)
+             (or
+              (not tests?)
+              (begin
+                (setenv "DJANGO_SETTINGS_MODULE" "tests.settings")
+                (invoke "django-admin" "test" "tests"))))))))
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ("python-slimit" ,python-slimit)
+       ("python-jsmin" ,python-jsmin)))
+    (home-page
+     "https://github.com/jazzband/django-pipeline")
+    (synopsis "Asset packaging library for Django")
+    (description
+     "Pipeline is an asset packaging library for Django, providing both CSS
+and JavaScript concatenation and compression, built-in JavaScript template
+support, and optional data-URI image and font embedding.")
+    (license license:expat)))
+
+(define-public python2-django-pipeline
+  (package-with-python2 python-django-pipeline))
+
 (define-public python-django-redis
   (package
     (name "python-django-redis")
-- 
2.18.0





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 4 Nov 2018 10:44:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 04 05:44:59 2018
Received: from localhost ([127.0.0.1]:33357 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gJFtq-0004Mf-RE
	for submit <at> debbugs.gnu.org; Sun, 04 Nov 2018 05:44:59 -0500
Received: from li622-129.members.linode.com ([212.71.249.129]:51528
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gJFto-0004Lz-Pu
 for 33185 <at> debbugs.gnu.org; Sun, 04 Nov 2018 05:44:57 -0500
Received: by mira.cbaines.net (Postfix, from userid 113)
 id 43E22167A7; Sun,  4 Nov 2018 10:44:56 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UNPARSEABLE_RELAY,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (unknown [185.80.85.115])
 by mira.cbaines.net (Postfix) with ESMTPSA id 05E9A16753
 for <33185 <at> debbugs.gnu.org>; Sun,  4 Nov 2018 10:44:56 +0000 (GMT)
Received: from localhost (localhost [local])
 by localhost (OpenSMTPD) with ESMTPA id a50460cc
 for <33185 <at> debbugs.gnu.org>; Sun, 4 Nov 2018 10:44:55 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
To: 33185 <at> debbugs.gnu.org
Subject: [PATCH 2/7] gnu: Add python-slimit.
Date: Sun,  4 Nov 2018 10:44:50 +0000
Message-Id: <20181104104455.3527-2-mail@HIDDEN>
X-Mailer: git-send-email 2.18.0
In-Reply-To: <20181104104455.3527-1-mail@HIDDEN>
References: <20181104104455.3527-1-mail@HIDDEN>
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

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

diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 3671454c2..26134e808 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -1983,6 +1983,34 @@ transfers.")
        `(("python2-futures" ,python2-futures)
          ,@(package-native-inputs base))))))
 
+(define-public python-slimit
+  (package
+    (name "python-slimit")
+    (version "0.8.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "slimit" version ".zip"))
+       (sha256
+        (base32
+         "02vj2x728rs1127q2nc27frrqra4fczivnb7gch6n5lzi7pxqczl"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (propagated-inputs
+     `(("python-ply" ,python-ply)))
+    (home-page "https://slimit.readthedocs.io/")
+    (synopsis "JavaScript minifier, parser and lexer written in Python")
+    (description
+     "@code{SlimIt} is a JavaScript minifier written in Python.  It compiles
+JavaScript into more compact code so that it downloads and runs faster.
+SlimIt also provides a library that includes a JavaScript parser, lexer,
+pretty printer and a tree visitor.")
+    (license license:expat)))
+
+(define-public python2-slimit
+  (package-with-python2 python-slimit))
+
 (define-public python-flask-restful
   (package
     (name "python-flask-restful")
-- 
2.18.0





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 4 Nov 2018 10:44:58 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 04 05:44:58 2018
Received: from localhost ([127.0.0.1]:33355 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gJFtq-0004Md-H9
	for submit <at> debbugs.gnu.org; Sun, 04 Nov 2018 05:44:58 -0500
Received: from li622-129.members.linode.com ([212.71.249.129]:51524
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gJFto-0004Ly-PW
 for 33185 <at> debbugs.gnu.org; Sun, 04 Nov 2018 05:44:57 -0500
Received: by mira.cbaines.net (Postfix, from userid 113)
 id 2A1E716561; Sun,  4 Nov 2018 10:44:56 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UNPARSEABLE_RELAY,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (unknown [185.80.85.115])
 by mira.cbaines.net (Postfix) with ESMTPSA id E8E8416561
 for <33185 <at> debbugs.gnu.org>; Sun,  4 Nov 2018 10:44:55 +0000 (GMT)
Received: from localhost (localhost [local])
 by localhost (OpenSMTPD) with ESMTPA id aa066143
 for <33185 <at> debbugs.gnu.org>; Sun, 4 Nov 2018 10:44:55 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
To: 33185 <at> debbugs.gnu.org
Subject: [PATCH 1/7] gnu: Add python-jsmin.
Date: Sun,  4 Nov 2018 10:44:49 +0000
Message-Id: <20181104104455.3527-1-mail@HIDDEN>
X-Mailer: git-send-email 2.18.0
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

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

diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index eda796e01..3671454c2 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -2168,6 +2168,28 @@ It comes with safe defaults and easily configurable options.")
 (define-public python2-flask-htmlmin
   (package-with-python2 python-flask-htmlmin))
 
+(define-public python-jsmin
+  (package
+    (name "python-jsmin")
+    (version "2.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "jsmin" version))
+       (sha256
+        (base32
+         "0fsmqbjvpxvff0984x7c0y8xmf49ax9mncz48b9xjx8wrnr9kpxn"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/tikitu/jsmin/")
+    (synopsis "Python JavaScript minifier")
+    (description
+     "@code{jsmin} is a JavaScript minifier, usable from both Python code and
+on the command line.")
+    (license license:expat)))
+
+(define-public python2-jsmin
+  (package-with-python2 python-jsmin))
+
 (define-public python-flask-login
   (package
     (name "python-flask-login")
-- 
2.18.0





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 28 Oct 2018 09:27:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 28 05:27:12 2018
Received: from localhost ([127.0.0.1]:46702 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gGhLk-0000Zh-7A
	for submit <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:27:12 -0400
Received: from li622-129.members.linode.com ([212.71.249.129]:44460
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gGhLc-0000Yf-T8
 for 33185 <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:27:05 -0400
Received: by mira.cbaines.net (Postfix, from userid 113)
 id 7B22716754; Sun, 28 Oct 2018 09:27:04 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UNPARSEABLE_RELAY,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (127.103.9.51.dyn.plus.net [51.9.103.127])
 by mira.cbaines.net (Postfix) with ESMTPSA id 564061675C
 for <33185 <at> debbugs.gnu.org>; Sun, 28 Oct 2018 09:27:03 +0000 (GMT)
Received: from localhost (localhost [local])
 by localhost (OpenSMTPD) with ESMTPA id 686f03d0
 for <33185 <at> debbugs.gnu.org>; Sun, 28 Oct 2018 09:27:02 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
To: 33185 <at> debbugs.gnu.org
Subject: [PATCH 7/7] services: Add patchwork.
Date: Sun, 28 Oct 2018 09:27:02 +0000
Message-Id: <20181028092702.22549-7-mail@HIDDEN>
X-Mailer: git-send-email 2.18.0
In-Reply-To: <20181028092702.22549-1-mail@HIDDEN>
References: <20181028092702.22549-1-mail@HIDDEN>
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

---
 gnu/services/web.scm | 291 ++++++++++++++++++++++++++++++++++++++++++-
 gnu/tests/web.scm    | 104 +++++++++++++++-
 2 files changed, 393 insertions(+), 2 deletions(-)

diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index 1edb1f4d3..6d0bfee94 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -32,12 +32,16 @@
   #:use-module (gnu system pam)
   #:use-module (gnu system shadow)
   #:use-module (gnu packages admin)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages web)
+  #:use-module (gnu packages patchutils)
   #:use-module (gnu packages php)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages logging)
   #:use-module (guix records)
   #:use-module (guix modules)
+  #:use-module (guix utils)
   #:use-module (guix gexp)
   #:use-module ((guix store) #:select (text-file))
   #:use-module ((guix utils) #:select (version-major))
@@ -205,7 +209,41 @@
             varnish-configuration-parameters
             varnish-configuration-extra-options
 
-            varnish-service-type))
+            varnish-service-type
+
+            <patchwork-database-configuration>
+            patchwork-database-configuration
+            patchwork-database-configuration?
+            patchwork-database-configuration-engine
+            patchwork-database-configuration-name
+            patchwork-database-configuration-user
+            patchwork-database-configuration-password
+            patchwork-database-configuration-host
+            patchwork-database-configuration-port
+
+            <patchwork-settings-module>
+            patchwork-settings-module
+            patchwork-settings-module?
+            patchwork-settings-module-database-configuration
+            patchwork-settings-module-secret-key
+            patchwork-settings-module-allowed-hosts
+            patchwork-settings-module-default-from-email
+            patchwork-settings-module-static-url
+            patchwork-settings-module-admins
+            patchwork-settings-module-debug?
+            patchwork-settings-module-enable-rest-api?
+            patchwork-settings-module-enable-xmlrpc?
+            patchwork-settings-module-force-https-links?
+            patchwork-settings-module-extra-settings
+
+            <patchwork-configuration>
+            patchwork-configuration
+            patchwork-configuration?
+            patchwork-configuration-patchwork
+            patchwork-configuration-settings-module
+            patchwork-configuration-domain
+
+            patchwork-service-type))
 
 ;;; Commentary:
 ;;;
@@ -1256,3 +1294,254 @@ files.")
                              varnish-shepherd-service)))
    (default-value
      (varnish-configuration))))
+
+
+;;;
+;;; Patchwork
+;;;
+
+(define-record-type* <patchwork-database-configuration>
+  patchwork-database-configuration make-patchwork-database-configuration
+  patchwork-database-configuration?
+  (engine          patchwork-database-configuration-engine
+                   (default "django.db.backends.postgresql_psycopg2"))
+  (name            patchwork-database-configuration-name
+                   (default "patchwork"))
+  (user            patchwork-database-configuration-user
+                   (default ""))
+  (password        patchwork-database-configuration-password
+                   (default ""))
+  (host            patchwork-database-configuration-host
+                   (default ""))
+  (port            patchwork-database-configuration-port
+                   (default "")))
+
+(define-record-type* <patchwork-settings-module>
+  patchwork-settings-module make-patchwork-settings-module
+  patchwork-settings-module?
+  (database-configuration    patchwork-settings-module-database-configuration
+                             (default (patchwork-database-configuration)))
+  (secret-key                patchwork-settings-module-secret-key)
+  (allowed-hosts             patchwork-settings-module-allowed-hosts)
+  (default-from-email        patchwork-settings-module-default-from-email)
+  (static-url                patchwork-settings-module-static-url
+                             (default "/static/"))
+  (admins                    patchwork-settings-module-admins
+                             (default '()))
+  (debug?                    patchwork-settings-module-debug?
+                             (default #f))
+  (enable-rest-api?          patchwork-settings-module-enable-rest-api?
+                             (default #t))
+  (enable-xmlrpc?            patchwork-settings-module-enable-xmlrpc?
+                             (default #t))
+  (force-https-links?        patchwork-settings-module-force-https-links?
+                             (default #t))
+  (extra-settings            patchwork-settings-module-extra-settings
+                             (default "")))
+
+(define-record-type* <patchwork-configuration>
+  patchwork-configuration make-patchwork-configuration
+  patckwork-configuration?
+  (patchwork            patchwork-configuration-patchwork
+                        (default patchwork))
+  (settings-module      patchwork-configuration-settings-module)
+  (domain               patchwork-configuration-domain))
+
+(define-gexp-compiler (patchwork-settings-module-compiler
+                       (file <patchwork-settings-module>) system target)
+  (match file
+    (($ <patchwork-settings-module> database-configuration secret-key
+                                    allowed-hosts default-from-email
+                                    static-url admins debug? enable-rest-api?
+                                    enable-xmlrpc? force-https-links?
+                                    extra-configuration)
+     (gexp->derivation
+      "patchwork-settings"
+      (with-imported-modules '((guix build utils))
+        #~(let ((output #$output))
+            (define (create-__init__.py filename)
+              (call-with-output-file filename
+                (lambda (port) (display "" port))))
+
+            (use-modules (guix build utils)
+                         (srfi srfi-1))
+
+            (mkdir-p (string-append output "/guix/patchwork"))
+            (create-__init__.py
+             (string-append output "/guix/__init__.py"))
+            (create-__init__.py
+             (string-append output "/guix/patchwork/__init__.py"))
+
+            (call-with-output-file
+                (string-append output "/guix/patchwork/settings.py")
+              (lambda (port)
+                (display
+                 (string-append "from patchwork.settings.base import *
+
+# Configuration from Guix
+SECRET_KEY = '" #$secret-key "'
+
+ALLOWED_HOSTS = [
+" #$(string-concatenate
+     (map (lambda (allowed-host)
+            (string-append "  '" allowed-host "'\n"))
+          allowed-hosts))
+"]
+
+DEBUG = " #$(if debug? "True" "False") "
+
+DATABASES = {
+    'default': {
+" #$(match database-configuration
+      (($ <patchwork-database-configuration>
+          engine name user password host port)
+       (string-append
+        "        'ENGINE': '" engine "',\n"
+        "        'NAME': '" name "',\n"
+        "        'USER': '" user "',\n"
+        "        'PASSWORD': '" password "',\n"
+        "        'HOST': '" host "',\n"
+        "        'PORT': '" port "',\n"))) "
+    },
+}
+
+" #$(if debug?
+        #~(string-append "STATIC_ROOT = '" #$(file-append patchwork "/share/patchwork/htdocs") "'")
+        #~(string-append "STATIC_URL = '" #$static-url "'")) "
+
+STATICFILES_STORAGE = (
+  'django.contrib.staticfiles.storage.StaticFilesStorage'
+)
+
+# Guix Extra Configuration
+" #$extra-configuration "
+") port)))
+            #t))
+      #:local-build? #t))))
+
+(define (patchwork-wsgi-wrapper patchwork)
+  (define patchwork-wsgi.py
+    (file-append patchwork
+                 (string-append
+                  "/lib/python"
+                  (version-major+minor
+                   (package-version python))
+                  "/site-packages/patchwork/wsgi.py")))
+
+  (mixed-text-file
+   "patchwork-wsgi.py"
+   "import os\n"
+   "\n"
+   "exec(open(\"" patchwork-wsgi.py "\").read())\n"))
+
+(define patchwork-httpd-configuration
+  (match-lambda
+    (($ <patchwork-configuration> patchwork settings-module
+                                  domain)
+
+     (define wsgi.py (patchwork-wsgi-wrapper patchwork))
+
+     (list "WSGISocketPrefix /var/run/mod_wsgi"
+           (list "LoadModule wsgi_module "
+                 (file-append mod-wsgi "/modules/mod_wsgi.so"))
+           (httpd-virtualhost
+            "*:8080"
+            `("ServerAdmin admin@HIDDEN
+ServerName " ,domain "
+
+LogFormat \"%v %h %l %u %t \\\"%r\\\" %>s %b \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\" customformat
+LogLevel info
+CustomLog \"/var/log/httpd/" ,domain "-access_log\" customformat
+
+ErrorLog /var/log/httpd/error.log
+
+WSGIScriptAlias / " ,wsgi.py "
+WSGIDaemonProcess patchwork user=httpd group=httpd processes=1 threads=2 display-name=%{GROUP} lang='en_US.UTF-8' locale='en_US.UTF-8' python-path=" ,settings-module "
+WSGIProcessGroup patchwork
+
+<Files " ,wsgi.py ">
+  Require all granted
+</Files>
+
+Alias /static " ,patchwork "/share/patchwork/htdocs
+<Directory \"/srv/http/" ,domain "/\">
+    AllowOverride None
+    Options MultiViews Indexes SymlinksIfOwnerMatch IncludesNoExec
+    Require method GET POST OPTIONS
+</Directory>"))))))
+
+(define (patchwork-setup-gexp settings-module)
+  (with-imported-modules (source-module-closure
+                          '((guix build utils)))
+    #~(lambda ()
+        (catch #t
+          (lambda ()
+            (let ((pid (primitive-fork))
+                  (user (getpwnam "postgres")))
+              (if (eq? pid 0)
+                  (dynamic-wind
+                    (const #t)
+                    (lambda ()
+                      (setgid (passwd:gid user))
+                      (setuid (passwd:uid user))
+                      (primitive-exit
+                       (if (and
+                            (zero?
+                             (system* #$(file-append postgresql "/bin/createuser")
+                                      "httpd"))
+                            (zero?
+                             (system* #$(file-append postgresql "/bin/createdb")
+                                      "-O" "httpd" "patchwork")))
+                           0
+                           1)))
+                    (lambda ()
+                      (primitive-exit 1)))
+                  (zero? (cdr (waitpid pid)))))
+            (let ((pid (primitive-fork))
+                  (user (getpwnam "httpd")))
+              (if (eq? pid 0)
+                  (dynamic-wind
+                    (const #t)
+                    (lambda ()
+                      (setgid (passwd:gid user))
+                      (setuid (passwd:uid user))
+                      ;; TODO Extract
+                      (setenv "DJANGO_SECRET_KEY" "testsecretkey")
+                      (setenv "DATABASE_NAME" "patchwork")
+                      (setenv "PYTHONPATH" #$settings-module)
+                      (primitive-exit
+                       (if (and
+                            (zero?
+                             (system* #$(file-append patchwork
+                                                     "/bin/patchwork-admin")
+                                      "migrate")))
+                           0
+                           1)))
+                    (lambda ()
+                      (primitive-exit 1)))
+                  (zero? (cdr (waitpid pid))))))
+          (lambda (key . parameters)
+            (format (current-error-port)
+                    "Uncaught throw to '~a: ~a\n" key parameters)
+            #f)))))
+
+(define patchwork-service-type
+  (service-type
+   (name 'patchwork-setup)
+   (extensions
+    (list (service-extension httpd-service-type
+                             patchwork-httpd-configuration)
+          (service-extension
+           shepherd-root-service-type
+           (match-lambda
+             (($ <patchwork-configuration> patchwork settings-module
+                                           domain)
+              (list (shepherd-service
+                     (requirement '(postgres))
+                     (provision '(patchwork-setup))
+                     (start (patchwork-setup-gexp settings-module))
+                     (stop #~(const #f))
+                     (respawn? #f)
+                     (documentation "Setup patchwork."))))))))
+   (description
+    "patchwork")))
diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm
index 319655396..fbdf78a03 100644
--- a/gnu/tests/web.scm
+++ b/gnu/tests/web.scm
@@ -28,15 +28,27 @@
   #:use-module (gnu system vm)
   #:use-module (gnu services)
   #:use-module (gnu services web)
+  #:use-module (gnu services databases)
   #:use-module (gnu services networking)
+  #:use-module (gnu services shepherd)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages patchutils)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages web)
+  #:use-module (guix packages)
+  #:use-module (guix modules)
+  #:use-module (guix records)
   #:use-module (guix gexp)
   #:use-module (guix store)
+  #:use-module (guix utils)
+  #:use-module (ice-9 match)
   #:export (%test-httpd
             %test-nginx
             %test-varnish
             %test-php-fpm
             %test-hpcguix-web
-            %test-tailon))
+            %test-tailon
+            %test-patchwork))
 
 (define %index.html-contents
   ;; Contents of the /index.html file.
@@ -498,3 +510,93 @@ HTTP-PORT."
    (name "tailon")
    (description "Connect to a running Tailon server.")
    (value (run-tailon-test))))
+
+
+;;;
+;;; Patchwork
+;;;
+
+(define %patchwork-os
+  (simple-operating-system
+   (service dhcp-client-service-type)
+   (service httpd-service-type
+            (httpd-configuration
+             (config
+              (httpd-config-file
+               (listen '("8080"))))))
+   (service postgresql-service-type)
+   (service patchwork-service-type
+            (patchwork-configuration
+             (settings-module
+              (patchwork-settings-module
+               (secret-key "00000")
+               (allowed-hosts '("*"))
+               (default-from-email "")
+               (debug? #t)))
+             (domain "localhost")))))
+
+(define* (run-patchwork-test)
+  "Run tests in %NGINX-OS, which has nginx running and listening on
+HTTP-PORT."
+  (define os
+    (marionette-operating-system
+     %patchwork-os
+     #:imported-modules '((gnu services herd)
+                          (guix combinators))))
+
+  (define forwarded-port 8080)
+
+  (define vm
+    (virtual-machine
+     (operating-system os)
+     (port-forwardings `((8080 . ,forwarded-port)))))
+
+  (define test
+    (with-imported-modules '((gnu build marionette))
+      #~(begin
+          (use-modules (srfi srfi-11) (srfi srfi-64)
+                       (gnu build marionette)
+                       (web uri)
+                       (web client)
+                       (web response))
+
+          (define marionette
+            (make-marionette (list #$vm)))
+
+          (mkdir #$output)
+          (chdir #$output)
+
+          (test-begin "patchwork")
+
+          (test-assert "httpd service running"
+            (marionette-eval
+             '(begin
+                (use-modules (gnu services herd))
+                (match (start-service 'httpd)
+                  (#f #f)
+                  (('service response-parts ...)
+                   (match (assq-ref response-parts 'running)
+                     ((#t) #t)
+                     ((pid) (number? pid))))))
+             marionette))
+
+          ;; Retrieve the index.html file we put in /srv.
+          (test-equal "http-get"
+            200
+            (let-values
+                (((response text)
+                  (http-get #$(simple-format
+                               #f "http://localhost:~A/" forwarded-port)
+                            #:decode-body? #t)))
+              (response-code response)))
+
+          (test-end)
+          (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
+
+  (gexp->derivation "patchwork-test" test))
+
+(define %test-patchwork
+  (system-test
+   (name "patchwork")
+   (description "")
+   (value (run-patchwork-test))))
-- 
2.18.0





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 28 Oct 2018 09:27:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 28 05:27:12 2018
Received: from localhost ([127.0.0.1]:46700 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gGhLj-0000Za-SU
	for submit <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:27:12 -0400
Received: from li622-129.members.linode.com ([212.71.249.129]:44458
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gGhLc-0000Ye-Pi
 for 33185 <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:27:05 -0400
Received: by mira.cbaines.net (Postfix, from userid 113)
 id 6319016753; Sun, 28 Oct 2018 09:27:04 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UNPARSEABLE_RELAY,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (127.103.9.51.dyn.plus.net [51.9.103.127])
 by mira.cbaines.net (Postfix) with ESMTPSA id 355A416758
 for <33185 <at> debbugs.gnu.org>; Sun, 28 Oct 2018 09:27:03 +0000 (GMT)
Received: from localhost (localhost [local])
 by localhost (OpenSMTPD) with ESMTPA id 07d34f8f
 for <33185 <at> debbugs.gnu.org>; Sun, 28 Oct 2018 09:27:02 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
To: 33185 <at> debbugs.gnu.org
Subject: [PATCH 6/7] gnu: Add patchwork.
Date: Sun, 28 Oct 2018 09:27:01 +0000
Message-Id: <20181028092702.22549-6-mail@HIDDEN>
X-Mailer: git-send-email 2.18.0
In-Reply-To: <20181028092702.22549-1-mail@HIDDEN>
References: <20181028092702.22549-1-mail@HIDDEN>
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

---
 gnu/packages/patchutils.scm | 95 +++++++++++++++++++++++++++++++++++++
 1 file changed, 95 insertions(+)

diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index 688e62cdc..7dabda9ee 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -29,6 +29,8 @@
   #:use-module (gnu packages ed)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages django)
   #:use-module (gnu packages file)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages gettext)
@@ -240,3 +242,96 @@ hexadecimal and ASCII (or EBCDIC).  It can also display two files at once, and
 highlight the differences between them.  It works well with large files (up to 4
 GiB).")
     (license gpl2+)))
+
+(define-public patchwork
+  (package
+    (name "patchwork")
+    (version "2.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/getpatchwork/patchwork/archive/v"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1q4i46gwwxvr8gjj983r8aacfsssp062dzi29ha7zba380fsxayy"))
+              (file-name (string-append name "-" version))))
+    (build-system python-build-system)
+    (arguments
+     `(;; TODO: Tests require a running database
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (add-after 'unpack 'patch-wsgi.py
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "patchwork/wsgi.py"
+               (("import os")
+                (string-append
+                 "import os, sys
+
+sys.path.extend('" (string-append (getenv "PYTHONPATH") ":" (site-packages inputs outputs)) "'.split(':'))"))
+               (("'patchwork\\.settings\\.production'")
+                "os.getenv('DJANGO_SETTINGS_MODULE', 'guix.patchwork.settings')"))))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (or (not tests?)
+                 (begin
+                   (setenv "DJANGO_SETTINGS_MODULE" "patchwork.settings.dev")
+                   (invoke
+                    "python" "-Wonce" "./manage.py" "test" "--noinput")
+                   #t))))
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (for-each (lambda (directory)
+                           (copy-recursively
+                            directory
+                            (string-append (site-packages inputs outputs)
+                                           "/" directory)))
+                         '("patchwork"
+                           "templates"))
+               (delete-file-recursively (string-append
+                                    (site-packages inputs outputs)
+                                    "patchwork/tests"))
+               (copy-recursively "htdocs"
+                                 (string-append
+                                  out "/share/patchwork/htdocs"))
+               (copy-recursively "lib"
+                                 (string-append
+                                  out "/share/doc/" ,name "-" ,version)))
+             #t))
+         (add-after 'install 'install-patchwork-admin
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/bin"))
+               (call-with-output-file (string-append out "/bin/patchwork-admin")
+                 (lambda (port)
+                   (display "#!/usr/bin/env python3
+import os, sys
+
+if __name__ == \"__main__\":
+    os.environ.setdefault(
+      \"DJANGO_SETTINGS_MODULE\",
+      \"guix.patchwork.settings\"
+    )
+
+    from django.core.management import execute_from_command_line
+
+    execute_from_command_line(sys.argv)" port)))
+               (chmod (string-append out "/bin/patchwork-admin") #o555))
+             #t)))))
+    (inputs
+     `(("python-wrapper" ,python-wrapper)))
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ;; TODO: Make this configurable
+       ("python-psycopg2" ,python-psycopg2)
+       ("python-django-filter" ,python-django-filter)
+       ("python-djangorestframework" ,python-djangorestframework)
+       ("python-django-debug-toolbar" ,python-django-debug-toolbar)))
+    (synopsis "")
+    (description "")
+    (home-page "")
+    (license "")))
-- 
2.18.0





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 28 Oct 2018 09:27:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 28 05:27:11 2018
Received: from localhost ([127.0.0.1]:46698 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gGhLj-0000ZT-IE
	for submit <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:27:11 -0400
Received: from li622-129.members.linode.com ([212.71.249.129]:44456
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gGhLc-0000Yd-PG
 for 33185 <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:27:05 -0400
Received: by mira.cbaines.net (Postfix, from userid 113)
 id 4957616750; Sun, 28 Oct 2018 09:27:04 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UNPARSEABLE_RELAY,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (127.103.9.51.dyn.plus.net [51.9.103.127])
 by mira.cbaines.net (Postfix) with ESMTPSA id C49CF16753
 for <33185 <at> debbugs.gnu.org>; Sun, 28 Oct 2018 09:27:02 +0000 (GMT)
Received: from localhost (localhost [local])
 by localhost (OpenSMTPD) with ESMTPA id cc9cd7b9
 for <33185 <at> debbugs.gnu.org>; Sun, 28 Oct 2018 09:27:02 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
To: 33185 <at> debbugs.gnu.org
Subject: [PATCH 3/7] gnu: Add python-django-pipeline.
Date: Sun, 28 Oct 2018 09:26:58 +0000
Message-Id: <20181028092702.22549-3-mail@HIDDEN>
X-Mailer: git-send-email 2.18.0
In-Reply-To: <20181028092702.22549-1-mail@HIDDEN>
References: <20181028092702.22549-1-mail@HIDDEN>
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/django.scm (python-django-pipeline, python2-django-pipeline):
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 dea925e56..589ba282e 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -518,6 +518,49 @@ project.")
 (define-public python2-django-overextends
   (package-with-python2 python-django-overextends))
 
+(define-public python-django-pipeline
+  (package
+    (name "python-django-pipeline")
+    (version "1.6.14")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "django-pipeline" version))
+       (sha256
+        (base32
+         "1a207y71r7za033ira0qmh2yrgp5rq0l04gw2fg9b8jri7sslrzg"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           (lambda _
+             (substitute* "tests/tests/test_compiler.py"
+               (("\\/usr\\/bin\\/env")
+                (which "env")))))
+         (replace 'check
+           (lambda*(#:key tests? #:allow-other-keys)
+             (or
+              (not tests?)
+              (begin
+                (setenv "DJANGO_SETTINGS_MODULE" "tests.settings")
+                (invoke "django-admin" "test" "tests"))))))))
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ("python-slimit" ,python-slimit)
+       ("python-jsmin" ,python-jsmin)))
+    (home-page
+     "https://github.com/jazzband/django-pipeline")
+    (synopsis "Asset packaging library for Django")
+    (description
+     "Pipeline is an asset packaging library for Django, providing both CSS
+and JavaScript concatenation and compression, built-in JavaScript template
+support, and optional data-URI image and font embedding.")
+    (license license:expat)))
+
+(define-public python2-django-pipeline
+  (package-with-python2 python-django-pipeline))
+
 (define-public python-django-redis
   (package
     (name "python-django-redis")
-- 
2.18.0





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 28 Oct 2018 09:27:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 28 05:27:11 2018
Received: from localhost ([127.0.0.1]:46696 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gGhLj-0000ZR-8a
	for submit <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:27:11 -0400
Received: from li622-129.members.linode.com ([212.71.249.129]:44454
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gGhLc-0000YL-3Z
 for 33185 <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:27:04 -0400
Received: by mira.cbaines.net (Postfix, from userid 113)
 id A0F051675D; Sun, 28 Oct 2018 09:27:03 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UNPARSEABLE_RELAY,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (127.103.9.51.dyn.plus.net [51.9.103.127])
 by mira.cbaines.net (Postfix) with ESMTPSA id D7CD616754
 for <33185 <at> debbugs.gnu.org>; Sun, 28 Oct 2018 09:27:02 +0000 (GMT)
Received: from localhost (localhost [local])
 by localhost (OpenSMTPD) with ESMTPA id 39bb4704
 for <33185 <at> debbugs.gnu.org>; Sun, 28 Oct 2018 09:27:02 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
To: 33185 <at> debbugs.gnu.org
Subject: [PATCH 4/7] gnu: Add python-django-jinja.
Date: Sun, 28 Oct 2018 09:26:59 +0000
Message-Id: <20181028092702.22549-4-mail@HIDDEN>
X-Mailer: git-send-email 2.18.0
In-Reply-To: <20181028092702.22549-1-mail@HIDDEN>
References: <20181028092702.22549-1-mail@HIDDEN>
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

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

diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 589ba282e..48f36835d 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -338,6 +338,55 @@ merging, minifying and compiling CSS and Javascript files.")
 (define-public python2-django-assets
   (package-with-python2 python-django-assets))
 
+(define-public python-django-jinja
+  (package
+    (name "python-django-jinja")
+    (version "2.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/niwinz/django-jinja/archive/"
+             version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0bzrb4m6wx9ph5cpvz7wpvg5k6ksvj0dnxlg0nhhqskhvp46brs1"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ("python-jinja2" ,python-jinja2)
+       ("python-pytz" ,python-pytz)
+       ("python-django-pipeline" ,python-django-pipeline)))
+    (arguments
+     '(;; TODO Tests currently fail due to issues with the configuration for
+       ;; django-pipeline
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (or
+              (not tests?)
+              (with-directory-excursion "testing"
+                (invoke "python" "runtests.py"))))))))
+    (home-page
+     "https://niwinz.github.io/django-jinja/latest/")
+    (synopsis "Simple and nonobstructive jinja2 backend for Django")
+    (description
+     "Jinja2 provides certain advantages over the native system of Django, for
+example, explicit calls to callable from templates and better performance.
+@code{django-jinja} is a alternative to the jinja2 backend built in to Django.")
+    (license license:bsd-3)))
+
+(define-public python2-django-jinja
+  (let ((base (package-with-python2 (strip-python2-variant python-django-jinja))))
+    (package
+      (inherit base)
+      (native-inputs
+       `(("python2-mock" ,python2-mock)
+         ,@(package-native-inputs base))))))
+
 (define-public python-django-jsonfield
   (package
     (name "python-django-jsonfield")
-- 
2.18.0





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 28 Oct 2018 09:27:06 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 28 05:27:06 2018
Received: from localhost ([127.0.0.1]:46694 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gGhLd-0000ZA-V8
	for submit <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:27:06 -0400
Received: from li622-129.members.linode.com ([212.71.249.129]:44450
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gGhLb-0000YK-Qh
 for 33185 <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:27:04 -0400
Received: by mira.cbaines.net (Postfix, from userid 113)
 id 63BE21675E; Sun, 28 Oct 2018 09:27:03 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UNPARSEABLE_RELAY,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (127.103.9.51.dyn.plus.net [51.9.103.127])
 by mira.cbaines.net (Postfix) with ESMTPSA id 1569F16750
 for <33185 <at> debbugs.gnu.org>; Sun, 28 Oct 2018 09:27:03 +0000 (GMT)
Received: from localhost (localhost [local])
 by localhost (OpenSMTPD) with ESMTPA id b01b9af8
 for <33185 <at> debbugs.gnu.org>; Sun, 28 Oct 2018 09:27:02 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
To: 33185 <at> debbugs.gnu.org
Subject: [PATCH 5/7] gnu: Add python-django-debug-toolbar.
Date: Sun, 28 Oct 2018 09:27:00 +0000
Message-Id: <20181028092702.22549-5-mail@HIDDEN>
X-Mailer: git-send-email 2.18.0
In-Reply-To: <20181028092702.22549-1-mail@HIDDEN>
References: <20181028092702.22549-1-mail@HIDDEN>
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/django.scm (python-django-debug-toolbar,
python2-django-debug-toolbar): 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 48f36835d..3a761bf60 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -265,6 +265,44 @@ account authentication.")
 (define-public python2-django-allauth
   (package-with-python2 python-django-allauth))
 
+(define-public python-django-debug-toolbar
+  (package
+    (name "python-django-debug-toolbar")
+    (version "1.10.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/jazzband/django-debug-toolbar/archive/"
+             version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1rww056hyzks8spbgf4h7kf6ybxlc5p08a2b6gn1nqrrzs4yx9sy"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-sqlparse" ,python-sqlparse)
+       ("python-django" ,python-django)))
+    (native-inputs
+     `(("python-django-jinja" ,python-django-jinja)
+       ("python-html5lib" ,python-html5lib)))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "make" "test"))))))
+    (home-page
+     "https://github.com/jazzband/django-debug-toolbar")
+    (synopsis "Toolbar to help with developing Django applications")
+    (description
+     "A configurable set of panels that display various debug information
+about the current request/response.")
+    (license license:bsd-3)))
+
+(define-public python2-django-debug-toolbar
+  (package-with-python2 python-django-debug-toolbar))
+
 (define-public python-django-gravatar2
   (package
     (name "python-django-gravatar2")
-- 
2.18.0





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 28 Oct 2018 09:27:06 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 28 05:27:05 2018
Received: from localhost ([127.0.0.1]:46692 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gGhLd-0000Yx-IP
	for submit <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:27:05 -0400
Received: from li622-129.members.linode.com ([212.71.249.129]:44444
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gGhLb-0000YH-K2
 for 33185 <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:27:04 -0400
Received: by mira.cbaines.net (Postfix, from userid 113)
 id 02C2116759; Sun, 28 Oct 2018 09:27:03 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UNPARSEABLE_RELAY,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (127.103.9.51.dyn.plus.net [51.9.103.127])
 by mira.cbaines.net (Postfix) with ESMTPSA id AF9DA16750
 for <33185 <at> debbugs.gnu.org>; Sun, 28 Oct 2018 09:27:02 +0000 (GMT)
Received: from localhost (localhost [local])
 by localhost (OpenSMTPD) with ESMTPA id bf8d0fc4
 for <33185 <at> debbugs.gnu.org>; Sun, 28 Oct 2018 09:27:02 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
To: 33185 <at> debbugs.gnu.org
Subject: [PATCH 2/7] gnu: Add python-slimit.
Date: Sun, 28 Oct 2018 09:26:57 +0000
Message-Id: <20181028092702.22549-2-mail@HIDDEN>
X-Mailer: git-send-email 2.18.0
In-Reply-To: <20181028092702.22549-1-mail@HIDDEN>
References: <20181028092702.22549-1-mail@HIDDEN>
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

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

diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index c00992c71..a7af71bd5 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -1945,6 +1945,34 @@ transfers.")
        `(("python2-futures" ,python2-futures)
          ,@(package-native-inputs base))))))
 
+(define-public python-slimit
+  (package
+    (name "python-slimit")
+    (version "0.8.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "slimit" version ".zip"))
+       (sha256
+        (base32
+         "02vj2x728rs1127q2nc27frrqra4fczivnb7gch6n5lzi7pxqczl"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (propagated-inputs
+     `(("python-ply" ,python-ply)))
+    (home-page "https://slimit.readthedocs.io/")
+    (synopsis "JavaScript minifier, parser and lexer written in Python")
+    (description
+     "@code{SlimIt} is a JavaScript minifier written in Python.  It compiles
+JavaScript into more compact code so that it downloads and runs faster.
+SlimIt also provides a library that includes a JavaScript parser, lexer,
+pretty printer and a tree visitor.")
+    (license license:expat)))
+
+(define-public python2-slimit
+  (package-with-python2 python-slimit))
+
 (define-public python-flask-restful
   (package
     (name "python-flask-restful")
-- 
2.18.0





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at 33185 <at> debbugs.gnu.org:


Received: (at 33185) by debbugs.gnu.org; 28 Oct 2018 09:27:05 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 28 05:27:05 2018
Received: from localhost ([127.0.0.1]:46690 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gGhLd-0000Yq-9F
	for submit <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:27:05 -0400
Received: from li622-129.members.linode.com ([212.71.249.129]:44440
 helo=mira.cbaines.net) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gGhLb-0000YG-Jn
 for 33185 <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:27:04 -0400
Received: by mira.cbaines.net (Postfix, from userid 113)
 id E673A1672F; Sun, 28 Oct 2018 09:27:02 +0000 (GMT)
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UNPARSEABLE_RELAY,
 URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0
Received: from localhost (127.103.9.51.dyn.plus.net [51.9.103.127])
 by mira.cbaines.net (Postfix) with ESMTPSA id 9AA2E1672F
 for <33185 <at> debbugs.gnu.org>; Sun, 28 Oct 2018 09:27:02 +0000 (GMT)
Received: from localhost (localhost [local])
 by localhost (OpenSMTPD) with ESMTPA id fe756f41
 for <33185 <at> debbugs.gnu.org>; Sun, 28 Oct 2018 09:27:02 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
To: 33185 <at> debbugs.gnu.org
Subject: [PATCH 1/7] gnu: Add python-jsmin.
Date: Sun, 28 Oct 2018 09:26:56 +0000
Message-Id: <20181028092702.22549-1-mail@HIDDEN>
X-Mailer: git-send-email 2.18.0
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 33185
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

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

diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index f8052458a..c00992c71 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -2130,6 +2130,28 @@ It comes with safe defaults and easily configurable options.")
 (define-public python2-flask-htmlmin
   (package-with-python2 python-flask-htmlmin))
 
+(define-public python-jsmin
+  (package
+    (name "python-jsmin")
+    (version "2.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "jsmin" version))
+       (sha256
+        (base32
+         "0fsmqbjvpxvff0984x7c0y8xmf49ax9mncz48b9xjx8wrnr9kpxn"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/tikitu/jsmin/")
+    (synopsis "Python JavaScript minifier")
+    (description
+     "@code{jsmin} is a JavaScript minifier, usable from both Python code and
+on the command line.")
+    (license license:expat)))
+
+(define-public python2-jsmin
+  (package-with-python2 python-jsmin))
+
 (define-public python-flask-login
   (package
     (name "python-flask-login")
-- 
2.18.0





Information forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 28 Oct 2018 09:21:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 28 05:21:48 2018
Received: from localhost ([127.0.0.1]:46679 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1gGhGW-0000QT-K9
	for submit <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:21:48 -0400
Received: from eggs.gnu.org ([208.118.235.92]:38827)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mail@HIDDEN>) id 1gGhGV-0000QH-Df
 for submit <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:21:47 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <mail@HIDDEN>) id 1gGhGP-0001EN-BU
 for submit <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:21:41 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_20 autolearn=disabled
 version=3.3.2
Received: from lists.gnu.org ([2001:4830:134:3::11]:37583)
 by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)
 (Exim 4.71) (envelope-from <mail@HIDDEN>) id 1gGhGO-0001Dq-2H
 for submit <at> debbugs.gnu.org; Sun, 28 Oct 2018 05:21:41 -0400
Received: from eggs.gnu.org ([2001:4830:134:3::10]:48432)
 by lists.gnu.org with esmtp (Exim 4.71)
 (envelope-from <mail@HIDDEN>) id 1gGhGN-0002xo-Bj
 for guix-patches@HIDDEN; Sun, 28 Oct 2018 05:21:39 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <mail@HIDDEN>) id 1gGhGJ-0001Br-HR
 for guix-patches@HIDDEN; Sun, 28 Oct 2018 05:21:39 -0400
Received: from mira.cbaines.net ([2a01:7e00::f03c:91ff:fe69:8da9]:60346)
 by eggs.gnu.org with esmtp (Exim 4.71)
 (envelope-from <mail@HIDDEN>) id 1gGhGF-00019Y-Ug
 for guix-patches@HIDDEN; Sun, 28 Oct 2018 05:21:33 -0400
Received: by mira.cbaines.net (Postfix, from userid 113)
 id 3A40A1672F; Sun, 28 Oct 2018 09:21:30 +0000 (GMT)
Received: from localhost (127.103.9.51.dyn.plus.net [51.9.103.127])
 by mira.cbaines.net (Postfix) with ESMTPSA id 0DF13165AF
 for <guix-patches@HIDDEN>; Sun, 28 Oct 2018 09:21:30 +0000 (GMT)
Received: from phact (localhost [127.0.0.1])
 by localhost (OpenSMTPD) with ESMTP id 034ebde7
 for <guix-patches@HIDDEN>; Sun, 28 Oct 2018 09:21:29 +0000 (UTC)
User-agent: mu4e 1.0; emacs 26.1
From: Christopher Baines <mail@HIDDEN>
To: guix-patches@HIDDEN
Subject: [PATCH 0/7] Add patchwork package and service.
Date: Sun, 28 Oct 2018 09:21:26 +0000
Message-ID: <87y3aie8a1.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha512; protocol="application/pgp-signature"
X-detected-operating-system: by eggs.gnu.org: Genre and OS details not
 recognized.
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x
X-Received-From: 2001:4830:134:3::11
X-Spam-Score: -4.0 (----)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -5.0 (-----)

--=-=-=
Content-Type: text/plain

These patches add a package for patchwork, a web-based patch tracking
system, along with some missing dependencies and the beginnings of a
system service and test.

Everything up to the patchwork package should be ready to merge, but the
patchwork package, service and system test is currently very rough and
unready.


Christopher Baines (7):
  gnu: Add python-jsmin.
  gnu: Add python-slimit.
  gnu: Add python-django-pipeline.
  gnu: Add python-django-jinja.
  gnu: Add python-django-debug-toolbar.
  gnu: Add patchwork.
  services: Add patchwork.

 gnu/packages/django.scm     | 130 ++++++++++++++++
 gnu/packages/patchutils.scm |  95 ++++++++++++
 gnu/packages/python-web.scm |  50 +++++++
 gnu/services/web.scm        | 291 +++++++++++++++++++++++++++++++++++-
 gnu/tests/web.scm           | 104 ++++++++++++-
 5 files changed, 668 insertions(+), 2 deletions(-)

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQKTBAEBCgB9FiEEPonu50WOcg2XVOCyXiijOwuE9XcFAlvVf5dfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcACgkQXiijOwuE
9Xe97Q//dPZXf+LyaQLJco+D0HcJDqQ3Zzd96GrxJEH1Zj8iMBppyrTfIZZ1eqwF
kidJxEn/6AHBIRRoRi5YgqVYi6V4xLNQQAd31xUs0NSUtoUP/l7TzXHFUqnMLbq1
5Ck2HwyESV8McMlSBnYtV4tXf8qFg9toG78DVWvNL4R0hHdC8ydnHV4tsC8II0b3
xDCnPLFYYKv71wv1xtUr80+O3n1/fXZEhiyOWuCNnJcS5IZfJF3sxb4bBICqH6Cd
8Lm0cWpkyOsUgRaPRsVvWaJJDXHIZMXvcG4e1wC1eAKLY8sMiPihJ9mvDY0/OFrU
2MaqcpEYI6sAfm1OQujEUViqrPb3ARyU8UomO/2p0XH5HVWwy9dLqbacLUncCdkk
9HOPMROh7lNulGz4dWGDOPJXKLZHL7o8chZUZ9JJXrISpAQc6y+ZdA8guXLt8rtg
78hWWyJdDS7oNg4TLGxxb5XZd5gUOjx5VN6tBGyHFIzUcjGXjZMabb47d8EBjQ8z
JCBuYuzBpReqlXA9q7NWbQn4UjOWVA6D5oV6gXjADw8ggNjNOD8EJmddSNeBWgn/
r5y8Go0kut2cRvxYv41qg1d9XqJ3iZqnfnUOTdmHobdNMo7K3H0wRIG8BIVhHHa5
MTYcPYd4RJ+kHMU7wxB8SlFOyzv0n792/ZrW9yIF0UbfKxNj9pU=
=jUoC
-----END PGP SIGNATURE-----
--=-=-=--




Acknowledgement sent to Christopher Baines <mail@HIDDEN>:
New bug report received and forwarded. Copy sent to guix-patches@HIDDEN. Full text available.
Report forwarded to guix-patches@HIDDEN:
bug#33185; Package guix-patches. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Tue, 22 Jan 2019 22:30:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.