summary refs log tree commit diff
path: root/gnu/packages/web.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/web.scm')
-rw-r--r--gnu/packages/web.scm366
1 files changed, 208 insertions, 158 deletions
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 24141b5ecf..bcc20bfdde 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2013 Aljosha Papsch <misc@rpapsch.de>
 ;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015, 2016, 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
@@ -14,10 +14,11 @@
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
-;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Bake Timmons <b3timmons@speedymail.org>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
+;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -79,7 +80,6 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages qt)
   #:use-module (gnu packages valgrind)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages curl)
@@ -130,14 +130,14 @@ and its related documentation.")
 (define-public nginx
   (package
     (name "nginx")
-    (version "1.11.11")
+    (version "1.12.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://nginx.org/download/nginx-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0qkj4xqv2f986dwqwlkidmr6jpxhv3ds67pxd1pd4a4f4j0c8yjs"))))
+                "0c2vg6530qplwk8rhldww5r3cwcbw1avka53qg9sh85nzlk2w8ml"))))
     (build-system gnu-build-system)
     (inputs `(("pcre" ,pcre)
               ("openssl" ,openssl)
@@ -300,7 +300,7 @@ servers that may need it).")
     (description "Starman is a PSGI perl web server that has unique features
 such as high performance, preforking, signal support, superdaemon awareness,
 and UNIX socket support.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public jansson
   (package
@@ -808,17 +808,14 @@ from streaming URLs.  It is a command-line wrapper for the libquvi library.")
 (define-public serf
   (package
     (name "serf")
-    (version "1.3.8")
+    (version "1.3.9")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://archive.apache.org/dist/serf/serf-"
                            version ".tar.bz2"))
        (sha256
-        (base32 "14155g48gamcv5s0828bzij6vr14nqmbndwq8j8f9g6vcph0nl70"))
-       (patches (search-patches "serf-comment-style-fix.patch"
-                                "serf-deflate-buckets-test-fix.patch"))
-       (patch-flags '("-p0"))))
+        (base32 "1k47gbgpp52049andr28y28nbwh9m36bbb0g8p0aka3pqlhjv72l"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("scons" ,scons)
@@ -864,6 +861,33 @@ from streaming URLs.  It is a command-line wrapper for the libquvi library.")
                                       ;;(string-append "GSSAPI=" gss)
                                       (string-append "ZLIB=" zlib)
                                       (string-append "PREFIX=" out))))))
+         (add-before 'check 'disable-broken-tests
+           (lambda _
+             ;; These tests rely on SSL certificates that expired 2017-04-18.
+             ;; While there are newer certs available upstream, we don't want
+             ;; this package to suddenly "expire" some time in the future.
+             ;; https://bugs.gnu.org/26671
+             (let ((broken-tests
+                    '("test_ssl_trust_rootca"
+                      "test_ssl_certificate_chain_with_anchor"
+                      "test_ssl_certificate_chain_all_from_server"
+                      "test_ssl_no_servercert_callback_allok"
+                      "test_ssl_large_response"
+                      "test_ssl_large_request"
+                      "test_ssl_client_certificate"
+                      "test_ssl_future_server_cert"
+                      "test_setup_ssltunnel"
+                      "test_ssltunnel_basic_auth"
+                      "test_ssltunnel_basic_auth_server_has_keepalive_off"
+                      "test_ssltunnel_basic_auth_proxy_has_keepalive_off"
+                      "test_ssltunnel_basic_auth_proxy_close_conn_on_200resp"
+                      "test_ssltunnel_digest_auth")))
+               (for-each
+                (lambda (test)
+                  (substitute* "test/test_context.c"
+                    (((string-append "SUITE_ADD_TEST\\(suite, " test "\\);")) "")))
+                broken-tests)
+               #t)))
          (replace 'check   (lambda _ (zero? (system* "scons" "check"))))
          (replace 'install (lambda _ (zero? (system* "scons" "install")))))))
     (home-page "https://serf.apache.org/")
@@ -957,7 +981,7 @@ language known as SASS.")
     (synopsis "Compile a log format string to perl-code")
     (description "This module provides methods to compile a log format string
 to perl-code, for faster generation of access_log lines.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-authen-sasl
   (package
@@ -978,7 +1002,7 @@ to perl-code, for faster generation of access_log lines.")
     (home-page "http://search.cpan.org/dist/Authen-SASL")
     (synopsis "SASL authentication framework")
     (description "Authen::SASL provides an SASL authentication framework.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-action-renderview
   (package
@@ -1004,7 +1028,7 @@ to perl-code, for faster generation of access_log lines.")
     (synopsis "Sensible default Catalyst action")
     (description "This Catalyst action implements a sensible default end
 action, which will forward to the first available view.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-action-rest
   (package
@@ -1039,7 +1063,7 @@ REST requests.  It takes a normal Catalyst action, and changes the dispatch to
 append an underscore and method name.  First it will try dispatching to an
 action with the generated name, and failing that it will try to dispatch to a
 regular method.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-authentication-store-dbix-class
   (package
@@ -1074,7 +1098,7 @@ regular method.")
     (description "The Catalyst::Authentication::Store::DBIx::Class class
 provides access to authentication information stored in a database via
 DBIx::Class.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-component-instancepercontext
   (package
@@ -1098,7 +1122,7 @@ DBIx::Class.")
     (synopsis "Create only one instance of Moose component per context")
     (description "Catalyst::Component::InstancePerContext returns a new
 instance of a component on each request.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-devel
   (package
@@ -1140,7 +1164,7 @@ to run them.  Catalyst-Devel includes the Catalyst::Helper system, which
 autogenerates scripts and tests; Module::Install::Catalyst, a Module::Install
 extension for Catalyst; and requirements for a variety of development-related
 modules.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-dispatchtype-regex
   (package
@@ -1170,7 +1194,7 @@ core.  It is recommend that you use Chained methods or other techniques
 instead.  As part of the refactoring, the dispatch priority of Regex vs Regexp
 vs LocalRegex vs LocalRegexp may have changed.  Priority is now influenced by
 when the dispatch type is first seen in your application.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-model-dbic-schema
   (package
@@ -1215,7 +1239,7 @@ when the dispatch type is first seen in your application.")
   (synopsis "DBIx::Class::Schema Model Class")
   (description "This is a Catalyst Model for DBIx::Class::Schema-based
 Models.")
-  (license (package-license perl))))
+  (license l:perl-license)))
 
 (define-public perl-catalyst-plugin-accesslog
   (package
@@ -1240,7 +1264,7 @@ Models.")
     (description "This Catalyst plugin enables you to create \"access logs\"
 from within a Catalyst application instead of requiring a webserver to do it
 for you.  It will work even with Catalyst debug logging turned off.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-plugin-authentication
   (package
@@ -1274,7 +1298,7 @@ for you.  It will work even with Catalyst debug logging turned off.")
 Catalyst apps.  It is the basis for both authentication (checking the user is
 who they claim to be), and authorization (allowing the user to do what the
 system authorises them to do).")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-plugin-authorization-roles
   (package
@@ -1303,7 +1327,7 @@ system authorises them to do).")
     (synopsis "Role-based authorization for Catalyst")
     (description "Catalyst::Plugin::Authorization::Roles provides role-based
 authorization for Catalyst based on Catalyst::Plugin::Authentication.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-plugin-captcha
   (package
@@ -1327,7 +1351,7 @@ authorization for Catalyst based on Catalyst::Plugin::Authentication.")
     (synopsis "Captchas for Catalyst")
     (description "This plugin creates and validates Captcha images for
 Catalyst.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-plugin-configloader
   (package
@@ -1355,7 +1379,7 @@ Catalyst.")
     (description "This module will attempt to load find and load configuration
 files of various types.  Currently it supports YAML, JSON, XML, INI and Perl
 formats.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-plugin-session
   (package
@@ -1386,7 +1410,7 @@ formats.")
     (synopsis "Catalyst generic session plugin")
     (description "This plugin links the two pieces required for session
 management in web applications together: the state, and the store.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-plugin-session-state-cookie
   (package
@@ -1415,7 +1439,7 @@ management in web applications together: the state, and the store.")
 ID needs to be stored on the client, and the session data needs to be stored
 on the server.  This plugin stores the session ID on the client using the
 cookie mechanism.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-plugin-session-store-fastmmap
   (package
@@ -1445,7 +1469,7 @@ cookie mechanism.")
     (description "Catalyst::Plugin::Session::Store::FastMmap is a fast session
 storage plugin for Catalyst that uses an mmap'ed file to act as a shared
 memory interprocess cache.  It is based on Cache::FastMmap.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-plugin-stacktrace
   (package
@@ -1470,7 +1494,7 @@ memory interprocess cache.  It is based on Cache::FastMmap.")
 including a stack trace of your application up to the point where the error
 occurred.  Each stack frame is displayed along with the package name, line
 number, file name, and code context surrounding the line number.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-plugin-static-simple
   (package
@@ -1500,7 +1524,7 @@ looking at the file extension in the URL (such as .css or .png or .js).  The
 plugin uses the lightweight MIME::Types module to map file extensions to
 IANA-registered MIME types, and will serve your static files with the correct
 MIME type directly to the browser, without being processed through Catalyst.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-runtime
   (package
@@ -1565,7 +1589,7 @@ MIME type directly to the browser, without being processed through Catalyst.")
 It is designed to make it easy to manage the various tasks you need to do to
 run an application on the web, either by doing them itself, or by letting you
 \"plug in\" existing Perl modules that do what you need.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-traitfor-request-proxybase
   (package
@@ -1596,7 +1620,7 @@ run an application on the web, either by doing them itself, or by letting you
 flexibility in your application's deployment configurations when deployed
 behind a proxy.  Using this module, the request base ($c->req->base) is
 replaced with the contents of the X-Request-Base header.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-view-download
   (package
@@ -1622,7 +1646,7 @@ replaced with the contents of the X-Request-Base header.")
     (description "The purpose of this module is to provide a method for
 downloading data into many supportable formats.  For example, downloading a
 table based report in a variety of formats (CSV, HTML, etc.).")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-view-json
   (package
@@ -1647,7 +1671,7 @@ table based report in a variety of formats (CSV, HTML, etc.).")
     (synopsis "Catalyst JSON view")
     (description "Catalyst::View::JSON is a Catalyst View handler that returns
 stash data in JSON format.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalyst-view-tt
   (package
@@ -1674,7 +1698,7 @@ stash data in JSON format.")
   (synopsis "Template View Class")
   (description "This module is a Catalyst view class for the Template
 Toolkit.")
-  (license (package-license perl))))
+  (license l:perl-license)))
 
 (define-public perl-catalystx-component-traits
   (package
@@ -1707,7 +1731,7 @@ Catalyst component base class that reads the optional \"traits\" parameter
 from app and component config and instantiates the component subclass with
 those traits using \"new_with_traits\" in MooseX::Traits from
 MooseX::Traits::Pluggable.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalystx-roleapplicator
   (package
@@ -1730,7 +1754,7 @@ MooseX::Traits::Pluggable.")
     (synopsis "Apply roles to Catalyst classes")
     (description "CatalystX::RoleApplicator applies roles to Catalyst
 application classes.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-catalystx-script-server-starman
   (package
@@ -1757,7 +1781,7 @@ application classes.")
     (synopsis "Catalyst development server with Starman")
     (description "This module provides a Catalyst extension to replace the
 development server with Starman.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-cgi
   (package
@@ -1785,7 +1809,7 @@ processing and preparing HTTP requests and responses.  Major features include
 processing form submissions, file uploads, reading and writing cookies, query
 string generation and manipulation, and processing and preparing HTTP
 headers.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-cgi-simple
   (package
@@ -1808,7 +1832,7 @@ headers.")
     (description "CGI::Simple provides a relatively lightweight drop in
 replacement for CGI.pm.  It shares an identical OO interface to CGI.pm for
 parameter parsing, file upload, cookie handling and header generation.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-cgi-struct
   (package
@@ -1853,7 +1877,7 @@ inputs, in a manner reminiscent of how PHP does.")
     (synopsis "Date conversion routines")
     (description "This module provides functions that deal with the date
 formats used by the HTTP protocol.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-digest-md5-file
   (package
@@ -1874,7 +1898,7 @@ formats used by the HTTP protocol.")
     (synopsis "MD5 sums for files and urls")
     (description "Digest::MD5::File is a Perl extension for getting MD5 sums
 for files and urls.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-encode-locale
   (package
@@ -1889,7 +1913,7 @@ for files and urls.")
               (base32
                "1h8fvcdg3n20c2yp7107yhdkkx78534s9hnvn7ps8hpmf4ks0vqp"))))
     (build-system perl-build-system)
-    (license (package-license perl))
+    (license l:perl-license)
     (synopsis "Perl locale encoding determination")
     (description
      "The POSIX locale system is used to specify both the language
@@ -1927,7 +1951,7 @@ with Encode::decode(locale => $string).")
     (description "@code{Feed::Find} implements feed auto-discovery for finding
 syndication feeds, given a URI.  It will discover the following feed formats:
 RSS 0.91, RSS 1.0, RSS 2.0, Atom.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-file-listing
   (package
@@ -1944,7 +1968,7 @@ RSS 0.91, RSS 1.0, RSS 2.0, Atom.")
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-http-date" ,perl-http-date)))
-    (license (package-license perl))
+    (license l:perl-license)
     (synopsis "Perl directory listing parser")
     (description
      "The File::Listing module exports a single function called parse_dir(),
@@ -2006,7 +2030,7 @@ Yahoo! Finance, Fidelity Investments, and the Australian Stock Exchange.")
     (synopsis "Perl extension providing access to the GSSAPIv2 library")
     (description "This is a Perl extension for using GSSAPI C bindings as
 described in RFC 2744.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-html-element-extended
   (package
@@ -2028,7 +2052,7 @@ described in RFC 2744.")
     (description
      "HTML::Element::Extended is a Perl extension for manipulating a table
 composed of HTML::Element style components.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-html-form
   (package
@@ -2053,7 +2077,7 @@ composed of HTML::Element style components.")
     (synopsis "Perl class representing an HTML form element")
     (description "Objects of the HTML::Form class represents a single HTML
 <form> ... </form> instance.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-html-lint
   (package
@@ -2099,7 +2123,7 @@ syntactic legitmacy.")
     (description
      "HTML::TableExtract is a Perl module for extracting the content contained
 in tables within an HTML document, either as text or encoded element trees.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-html-tree
   (package
@@ -2125,7 +2149,7 @@ in tables within an HTML document, either as text or encoded element trees.")
     (synopsis "Work with HTML in a DOM-like tree structure")
     (description "This distribution contains a suite of modules for
 representing, creating, and extracting information from HTML syntax trees.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-html-parser
   (package
@@ -2143,7 +2167,7 @@ representing, creating, and extracting information from HTML syntax trees.")
     (inputs
      `(("perl-html-tagset" ,perl-html-tagset)
        ("perl-http-message" ,perl-http-message)))
-    (license (package-license perl))
+    (license l:perl-license)
     (synopsis "Perl HTML parser class")
     (description
      "Objects of the HTML::Parser class will recognize markup and separate
@@ -2165,7 +2189,7 @@ are invoked.")
               (base32
                "1qh8249wgr4v9vgghq77zh1d2zs176bir223a8gh3k9nksn7vcdd"))))
     (build-system perl-build-system)
-    (license (package-license perl))
+    (license l:perl-license)
     (synopsis "Perl data tables useful in parsing HTML")
     (description
      "The HTML::Tagset module contains several data tables useful in various
@@ -2196,7 +2220,7 @@ It extends standard HTML with a few new HTML-esque tags: @code{<TMPL_VAR>},
 these new tags is called a template.  Using this module you fill in the values
 for the variables, loops and branches declared in the template.  This allows
 you to separate design from the data.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-http-body
   (package
@@ -2221,7 +2245,7 @@ you to separate design from the data.")
     (description "HTTP::Body parses chunks of HTTP POST data and supports
 application/octet-stream, application/json, application/x-www-form-urlencoded,
 and multipart/form-data.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-http-cookiejar
   (package
@@ -2265,7 +2289,7 @@ jar in conformance with RFC 6265 <http://tools.ietf.org/html/rfc6265>.")
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-http-message" ,perl-http-message)))
-    (license (package-license perl))
+    (license l:perl-license)
     (synopsis "Perl HTTP cookie jars")
     (description
      "The HTTP::Cookies class is for objects that represent a cookie jar,
@@ -2289,7 +2313,7 @@ object knows about.")
     (propagated-inputs
      `(("perl-http-message" ,perl-http-message)
        ("perl-lwp-mediatypes" ,perl-lwp-mediatypes)))
-    (license (package-license perl))
+    (license l:perl-license)
     (synopsis "Perl simple http server class")
     (description
      "Instances of the HTTP::Daemon class are HTTP/1.1 servers that listen
@@ -2310,7 +2334,7 @@ IO::Socket::INET, so you can perform socket operations directly on it too.")
               (base32
                "0cz357kafhhzw7w59iyi0wvhw7rlh5g1lh38230ckw7rl0fr9fg8"))))
     (build-system perl-build-system)
-    (license (package-license perl))
+    (license l:perl-license)
     (synopsis "Perl date conversion routines")
     (description
      "The HTTP::Date module provides functions that deal with date formats
@@ -2336,7 +2360,7 @@ used by the HTTP protocol (and then some more).")
        ("perl-io-html" ,perl-io-html)
        ("perl-lwp-mediatypes" ,perl-lwp-mediatypes)
        ("perl-uri" ,perl-uri)))
-    (license (package-license perl))
+    (license l:perl-license)
     (synopsis "Perl HTTP style message")
     (description
      "An HTTP::Message object contains some headers and a content body.")
@@ -2357,7 +2381,7 @@ used by the HTTP protocol (and then some more).")
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-http-message" ,perl-http-message)))
-    (license (package-license perl))
+    (license l:perl-license)
     (synopsis "Perl http content negotiation")
     (description
      "The HTTP::Negotiate module provides a complete implementation of the
@@ -2390,7 +2414,7 @@ fields in the request.")
 received and returns a 'hint' as to what is required, or returns the
 HTTP::Request when a complete request has been read.  HTTP/1.1 chunking is
 supported.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-http-parser-xs
   (package
@@ -2409,7 +2433,7 @@ supported.")
     (synopsis "Fast HTTP request parser")
     (description "HTTP::Parser::XS is a fast, primitive HTTP request/response
 parser.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-http-request-ascgi
   (package
@@ -2431,7 +2455,7 @@ parser.")
     (synopsis "Set up a CGI environment from an HTTP::Request")
     (description "This module provides a convenient way to set up a CGI
 environment from an HTTP::Request.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-http-server-simple
   (package
@@ -2457,7 +2481,7 @@ environment from an HTTP::Request.")
     (description "HTTP::Server::Simple is a simple standalone HTTP daemon with
 no non-core module dependencies.  It can be used for building a standalone
 http-based UI to your existing tools.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-http-tiny
   (package
@@ -2483,7 +2507,7 @@ http-based UI to your existing tools.")
     (description "This is a very simple HTTP/1.1 client, designed for doing
 simple requests without the overhead of a large framework like LWP::UserAgent.
 It supports proxies and redirection.  It also correctly resumes after EINTR.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-io-html
   (package
@@ -2498,7 +2522,7 @@ It supports proxies and redirection.  It also correctly resumes after EINTR.")
               (base32
                "06nj3a0xgp5jxwxx6ayglfk2v7npf5a7gwkqsjlkapjkybarzqh4"))))
     (build-system perl-build-system)
-    (license (package-license perl))
+    (license l:perl-license)
     (synopsis "Perl module to open an HTML file with automatic charset detection")
     (description
      "IO::HTML provides an easy way to open a file containing HTML while
@@ -2524,7 +2548,7 @@ algorithm specified in section 8.2.2.1 of the draft standard.")
     (synopsis "Family-neutral IP socket supporting both IPv4 and IPv6")
     (description "This module provides a protocol-independent way to use IPv4
 and IPv6 sockets, intended as a replacement for IO::Socket::INET.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-io-socket-ssl
   (package
@@ -2551,7 +2575,7 @@ necessary functionality into the familiar IO::Socket interface and providing
 secure defaults whenever possible.  This way existing applications can be made
 SSL-aware without much effort, at least if you do blocking I/O and don't use
 select or poll.")
-    (license (package-license perl))
+    (license l:perl-license)
     (home-page "https://github.com/noxxi/p5-io-socket-ssl")))
 
 (define-public perl-libwww
@@ -2579,7 +2603,7 @@ select or poll.")
        ("perl-net-http" ,perl-net-http)
        ("perl-uri" ,perl-uri)
        ("perl-www-robotrules" ,perl-www-robotrules)))
-    (license (package-license perl))
+    (license l:perl-license)
     (synopsis "Perl modules for the WWW")
     (description
      "The libwww-perl collection is a set of Perl modules which provides a
@@ -2603,7 +2627,7 @@ help you implement simple HTTP servers.")
               (base32
                "0xmnblp962qy02akah30sji8bxrqcyqlff2w95l199ghql60ny8q"))))
     (build-system perl-build-system)
-    (license (package-license perl))
+    (license l:perl-license)
     (synopsis "Perl module to guess the media type for a file or a URL")
     (description
      "The LWP::MediaTypes module provides functions for handling media (also
@@ -2635,7 +2659,7 @@ exists it is used instead.")
     (synopsis "HTTPS support for LWP::UserAgent")
     (description "The LWP::Protocol::https module provides support for using
 https schemed URLs with LWP.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-lwp-useragent-determined
   (package
@@ -2658,7 +2682,7 @@ https schemed URLs with LWP.")
 except that when you use it to get a web page but run into a
 possibly-temporary error (like a DNS lookup timeout), it'll wait a few seconds
 and retry a few times.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-net-amazon-s3
   (package
@@ -2701,7 +2725,7 @@ and retry a few times.")
     (home-page "http://search.cpan.org/dist/Net-Amazon-S3")
     (synopsis "Perl interface to Amazon S3")
     (description "This module provides a Perlish interface to Amazon S3.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-net-http
   (package
@@ -2719,7 +2743,7 @@ and retry a few times.")
     (propagated-inputs
      `(("perl-io-socket-ssl" ,perl-io-socket-ssl)
        ("perl-uri" ,perl-uri)))
-    (license (package-license perl))
+    (license l:perl-license)
     (synopsis "Perl low-level HTTP connection (client)")
     (description
      "The Net::HTTP class is a low-level HTTP client.  An instance of the
@@ -2753,7 +2777,7 @@ children (Net::Server::PreForkSimple), or as a managed preforking server which
 maintains the number of children based on server load (Net::Server::PreFork).
 In all but the inetd type, the server provides the ability to connect to one
 or to multiple server ports.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-net-smtp-ssl
   (package
@@ -2773,7 +2797,7 @@ or to multiple server ports.")
     (home-page "http://search.cpan.org/dist/Net-SMTP-SSL")
     (synopsis "SSL support for Net::SMTP")
     (description "SSL support for Net::SMTP.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-plack
   (package
@@ -2811,7 +2835,7 @@ or to multiple server ports.")
 contains middleware components, a reference server, and utilities for Web
 application frameworks.  Plack is like Ruby's Rack or Python's Paste for
 WSGI.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-plack-middleware-fixmissingbodyinredirect
   (package
@@ -2836,7 +2860,7 @@ WSGI.")
     (synopsis "Plack::Middleware which sets body for redirect response")
     (description "This module sets the body in redirect response, if it's not
 already set.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-plack-middleware-methodoverride
   (package
@@ -2862,7 +2886,7 @@ already set.")
 something else: by adding either a header named X-HTTP-Method-Override to the
 request, or a query parameter named x-tunneled-method to the URI, the client
 can say what method it actually meant.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-plack-middleware-removeredundantbody
   (package
@@ -2885,7 +2909,7 @@ can say what method it actually meant.")
     (synopsis "Plack::Middleware which removes body for HTTP response")
     (description "This module removes the body in an HTTP response if it's not
 required.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-plack-middleware-reverseproxy
   (package
@@ -2908,7 +2932,7 @@ required.")
     (description "Plack::Middleware::ReverseProxy resets some HTTP headers,
 which are changed by reverse-proxy.  You can specify the reverse proxy address
 and stop fake requests using 'enable_if' directive in your app.psgi.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-plack-test-externalserver
   (package
@@ -2930,7 +2954,7 @@ and stop fake requests using 'enable_if' directive in your app.psgi.")
     (description "This module allows your to run your Plack::Test tests
 against an external server instead of just against a local application through
 either mocked HTTP or a locally spawned server.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-test-tcp
   (package
@@ -2951,7 +2975,7 @@ either mocked HTTP or a locally spawned server.")
     (home-page "http://search.cpan.org/dist/Test-TCP")
     (synopsis "Testing TCP programs")
     (description "Test::TCP is test utilities for TCP/IP programs.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-test-www-mechanize
   (package
@@ -3016,7 +3040,7 @@ WWW::Mechanize that incorporates features for web application testing.")
     (description "The Test::WWW::Mechanize::Catalyst module meshes the
 Test::WWW:Mechanize module and the Catalyst web application framework to allow
 testing of Catalyst applications without needing to start up a web server.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-test-www-mechanize-psgi
   (package
@@ -3043,7 +3067,7 @@ from web application framework code.  Test::WWW::Mechanize is a subclass of
 WWW::Mechanize that incorporates features for web application testing.  The
 Test::WWW::Mechanize::PSGI module meshes the two to allow easy testing of PSGI
 applications.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-uri
   (package
@@ -3057,7 +3081,7 @@ applications.")
               (base32
                "05a1ck1bhvqkkk690xhsxf7276dnagk96qkh2jy4prrrgw6wm3lw"))))
     (build-system perl-build-system)
-    (license (package-license perl))
+    (license l:perl-license)
     (synopsis "Perl Uniform Resource Identifiers (absolute and relative)")
     (description
      "The URI module implements the URI class.  Objects of this class
@@ -3088,7 +3112,7 @@ and updated by RFC 2732.")
     (description "@code{URI::Fetch} is a smart client for fetching HTTP pages,
 notably syndication feeds (RSS, Atom, and others), in an intelligent, bandwidth-
 and time-saving way.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-uri-find
   (package
@@ -3113,7 +3137,7 @@ and time-saving way.")
 considers a URI) in plain text.  It only finds URIs which include a
 scheme (http:// or the like), for something a bit less strict, consider
 URI::Find::Schemeless.  For a command-line interface, urifind is provided.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-uri-ws
   (package
@@ -3134,7 +3158,7 @@ URI::Find::Schemeless.  For a command-line interface, urifind is provided.")
     (synopsis "WebSocket support for URI package")
     (description "With this module, the URI package provides the same set of
 methods for WebSocket URIs as it does for HTTP URIs.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-uri-template
   (package
@@ -3158,7 +3182,7 @@ methods for WebSocket URIs as it does for HTTP URIs.")
     (synopsis "Object for handling URI templates")
     (description "This perl module provides a wrapper around URI templates as described in
 RFC 6570.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-www-curl
   (package
@@ -3181,7 +3205,7 @@ RFC 6570.")
     (description
      "This is a Perl extension interface for the libcurl file downloading
 library.")
-    (license (package-license perl))
+    (license l:perl-license)
     (home-page "http://search.cpan.org/~szbalint/WWW-Curl-4.17/lib/WWW/Curl.pm")))
 
 (define-public perl-www-mechanize
@@ -3211,7 +3235,7 @@ library.")
     (synopsis "Web browsing in a Perl object")
     (description "WWW::Mechanize is a Perl module for stateful programmatic
 web browsing, used for automating interaction with websites.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-www-opensearch
   (package
@@ -3239,7 +3263,7 @@ web browsing, used for automating interaction with websites.")
     (description
      "@code{WWW::OpenSearch} is a module to search @url{A9's OpenSearch,
 http://opensearch.a9.com} compatible search engines.")
-    (license (package-license perl))))
+    (license l:perl-license)))
 
 (define-public perl-www-robotrules
   (package
@@ -3256,7 +3280,7 @@ http://opensearch.a9.com} compatible search engines.")
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-uri" ,perl-uri)))
-    (license (package-license perl))
+    (license l:perl-license)
     (synopsis "Perl database of robots.txt-derived permissions")
     (description
      "The WWW::RobotRules module parses /robots.txt files as specified in
@@ -3319,13 +3343,13 @@ particularly easy to create complete web applications using httpuv alone.")
 (define-public r-jsonlite
   (package
     (name "r-jsonlite")
-    (version "1.2")
+    (version "1.4")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "jsonlite" version))
               (sha256
                (base32
-                "0k966hzp3qnwck7fgd76w49zrz39s7pqyywws17bhbcd8rh4csyb"))))
+                "11rgkjp5qir79niad0aizjxvjzyvkl6l9nsrv3ikv446vllmrasn"))))
     (build-system r-build-system)
     (home-page "http://arxiv.org/abs/1403.2805")
     (synopsis "Robust, high performance JSON parser and generator for R")
@@ -3425,18 +3449,20 @@ applications.")
 (define-public r-htmltable
   (package
     (name "r-htmltable")
-    (version "1.7")
+    (version "1.9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "htmlTable" version))
        (sha256
         (base32
-         "0x2f2hrbhvm53zqwn0ny9wxbk34nwf6zww8cx4bjy5ax15asdllm"))))
+         "0ciic1f4iczq14j81fg7kxibn65sy8z1zxkvk1yxnxxg6dzplj2v"))))
     (properties `((upstream-name . "htmlTable")))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-knitr" ,r-knitr)
+     `(("r-checkmate" ,r-checkmate)
+       ("r-htmlwidgets" ,r-htmlwidgets)
+       ("r-knitr" ,r-knitr)
        ("r-magrittr" ,r-magrittr)
        ("r-stringr" ,r-stringr)))
     (home-page "http://gforge.se/packages/")
@@ -3454,13 +3480,13 @@ LaTeX.")
 (define-public r-curl
   (package
     (name "r-curl")
-    (version "2.3")
+    (version "2.5")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "curl" version))
               (sha256
                (base32
-                "0gbw5l0wnsw26fbr08gj9vgxrzxg8axvqxfshmd8g9khpgbdl0gr"))))
+                "09p86i5f88gx1i7cidm1ka56g0jjkghqfam96p1jhwlh2fv6nrks"))))
     (build-system r-build-system)
     (arguments
      `(#:phases
@@ -4221,17 +4247,12 @@ and similar services.")
     (version "1.12")
     (source
      (origin
-       ;; The darkhttpd release tarball URL fails to download with a
-       ;; 'TLS warning alert'. Download from the darkhttpd git repo
-       ;; until the problem has been fixed upstream.
-       (method git-fetch)
-       (uri (git-reference
-             (url (string-append "https://unix4lyfe.org/git/darkhttpd"))
-             (commit "41b68476c35270f47dcd2ddebe27cbcd87e43d41")))
+       (method url-fetch)
+       (uri (string-append "https://unix4lyfe.org/darkhttpd/darkhttpd-"
+                           version ".tar.bz2"))
        (sha256
         (base32
-         "0wi8dfgj4ic0fsy4dszl69xgxdxlwxz4c30vsw2i2dpnczgjm04k"))
-       (file-name (string-append name "-" version "-checkout"))))
+         "0185wlyx4iqiwfigp1zvql14zw7gxfacncii3d15yaxk4av1f155"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags '("CC=gcc")
@@ -4474,63 +4495,92 @@ Features include the ability to stop SQL injections, XSS and CSRF attacks and
 exploit attempts.")
     (license l:gpl2)))
 
-(define-public qutebrowser
+(define-public python-httpbin
   (package
-    (name "qutebrowser")
-    (version "0.10.1")
+    (name "python-httpbin")
+    (version "0.5.0")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://github.com/The-Compiler/"
-                           "qutebrowser/releases/download/v" version "/"
-                           "qutebrowser-" version ".tar.gz"))
+       (uri (pypi-uri "httpbin" version))
        (sha256
         (base32
-         "05qryn56w2pbqhir4pl99idx7apx2xqw9f8wmbrhj59b1xgr3x2p"))))
+         "1dc92lnk846hpilslrqnr63x55cxll4qx88gif8fm521gv9cbyvr"))))
     (build-system python-build-system)
-    (native-inputs
-     `(("asciidoc" ,asciidoc)))
-    (inputs
-     `(("python-colorama" ,python-colorama)
-       ("python-cssutils" ,python-cssutils)
-       ("python-jinja2" ,python-jinja2)
+    (propagated-inputs
+     `(("python-decorator" ,python-decorator)
+       ("python-flask" ,python-flask)
+       ("python-itsdangerous" ,python-itsdangerous)
        ("python-markupsafe" ,python-markupsafe)
-       ("python-pygments" ,python-pygments)
-       ("python-pypeg2" ,python-pypeg2)
-       ("python-pyyaml" ,python-pyyaml)
-       ("python-pyqt" ,python-pyqt)
-       ("qtwebkit" ,qtwebkit)))
+       ("python-six" ,python-six)))
+    (home-page "https://github.com/Runscope/httpbin")
+    (synopsis "HTTP request and response service")
+    (description "Testing an HTTP Library can become difficult sometimes.
+@code{RequestBin} is fantastic for testing POST requests, but doesn't let you control the
+response.  This exists to cover all kinds of HTTP scenarios.  All endpoint responses are
+JSON-encoded.")
+    (license l:isc)))
+
+(define-public python2-httpbin
+  (package-with-python2 python-httpbin))
+
+(define-public python-pytest-httpbin
+  (package
+    (name "python-pytest-httpbin")
+    (version "0.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-httpbin" version))
+       (sha256
+        (base32
+         "1y0v2v7xpzpyd4djwp7ad8ifnlxp8r1y6dfbxg5ckzvllkgridn5"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-six" ,python-six)
+       ("python-httpbin" ,python-httpbin)
+       ("python-pytest" ,python-pytest)))
+    (home-page
+     "https://github.com/kevin1024/pytest-httpbin")
+    (synopsis
+     "Test your HTTP library against a local copy of httpbin")
+    (description
+     "@code{Pytest-httpbin} creates a @code{pytest} fixture that is dependency-injected
+into your tests.  It automatically starts up a HTTP server in a separate thread running
+@code{httpbin} and provides your test with the URL in the fixture.")
+    (license l:expat)))
+
+(define-public python2-pytest-httpbin
+  (package-with-python2 python-pytest-httpbin))
+
+(define-public http-parser
+  (package
+    (name "http-parser")
+    (version "2.7.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/nodejs/http-parser/"
+                                  "archive/v" version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1cw6nf8xy4jhib1w0jd2y0gpqjbdasg8b7pkl2k2vpp54k9rlh3h"))))
+    (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f                      ;no tests
+     `(#:test-target "test"
+       #:make-flags
+       (list (string-append "PREFIX="
+                            (assoc-ref %outputs "out"))
+             "CC=gcc" "library")
        #:phases
        (modify-phases %standard-phases
-         (add-after 'install 'install-more
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (app (string-append out "/share/applications"))
-                    (hicolor (string-append out "/share/icons/hicolor")))
-               (system* "a2x" "-f" "manpage" "doc/qutebrowser.1.asciidoc")
-               (install-file "doc/qutebrowser.1"
-                             (string-append out "/share/man/man1"))
-
-               (for-each
-                (lambda (i)
-                  (let ((src  (format #f "icons/qutebrowser-~dx~d.png" i i))
-                        (dest (format #f "~a/~dx~d/apps/qutebrowser.png"
-                                      hicolor i i)))
-                    (mkdir-p (dirname dest))
-                    (copy-file src dest)))
-                '(16 24 32 48 64 128 256 512))
-               (install-file "icons/qutebrowser.svg"
-                             (string-append hicolor "/scalable/apps"))
-
-               (substitute* "qutebrowser.desktop"
-                 (("Exec=qutebrowser")
-                  (string-append "Exec=" out "/bin/qutebrowser")))
-               (install-file "qutebrowser.desktop" app)
-               #t))))))
-    (home-page "https://qutebrowser.org/")
-    (synopsis "Minimal, keyboard-focused, vim-like web browser")
-    (description "qutebrowser is a keyboard-focused browser with a minimal
-GUI.  It is based on PyQt5 and QtWebKit.")
-    (license l:gpl3+)))
+         (delete 'configure))))
+    (home-page "https://github.com/nodejs/http-parser")
+    (synopsis "HTTP request/response parser for C")
+    (description "This is a parser for HTTP messages written in C.  It parses
+both requests and responses.  The parser is designed to be used in
+high-performance HTTP applications.  It does not make any syscalls nor
+allocations, it does not buffer data, it can be interrupted at anytime.
+Depending on your architecture, it only requires about 40 bytes of data per
+message stream (in a web server that is per connection).")
+    (license l:expat)))