X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/a557810ac72effd6841b76772195b10c03dee345..4427417bd74c369162aff3ca51b37bc6313a6438:/gnu/packages/web.scm diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 7d64c4db46..1fbd3dcb7a 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -25,7 +25,7 @@ ;;; Copyright © 2017 Pierre Langlois ;;; Copyright © 2017 Rutger Helling ;;; Copyright © 2017, 2019 Christopher Baines -;;; Copyright © 2018 Julien Lepiller +;;; Copyright © 2018, 2019 Julien Lepiller ;;; Copyright © 2018 Pierre-Antoine Rouby ;;; Copyright © 2018 Gábor Boskovits ;;; Copyright © 2018 Mădălin Ionel Patrașcu @@ -35,6 +35,7 @@ ;;; Copyright © 2019 Alex Griffin ;;; Copyright © 2019 Hartmut Goebel ;;; Copyright © 2019 Jakob L. Kreuze +;;; Copyright © 2019 Florian Pelz ;;; ;;; This file is part of GNU Guix. ;;; @@ -102,6 +103,7 @@ #:use-module (gnu packages guile) #:use-module (gnu packages guile-xyz) #:use-module (gnu packages java) + #:use-module (gnu packages javascript) #:use-module (gnu packages jemalloc) #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) @@ -109,7 +111,6 @@ #:use-module (gnu packages libidn) #:use-module (gnu packages libunistring) #:use-module (gnu packages linux) - #:use-module (gnu packages lisp) #:use-module (gnu packages lua) #:use-module (gnu packages markup) #:use-module (gnu packages ncurses) @@ -134,7 +135,8 @@ #:use-module (gnu packages valgrind) #:use-module (gnu packages version-control) #:use-module (gnu packages vim) - #:use-module (gnu packages xml)) + #:use-module (gnu packages xml) + #:use-module ((srfi srfi-1) #:select (delete-duplicates))) (define-public httpd (package @@ -212,14 +214,14 @@ Interface} specification.") ;; ’stable’ and recommends that “in general you deploy the NGINX mainline ;; branch at all times” (https://www.nginx.com/blog/nginx-1-6-1-7-released/) ;; Consider updating the nginx-documentation package together with this one. - (version "1.17.5") + (version "1.17.6") (source (origin (method url-fetch) (uri (string-append "https://nginx.org/download/nginx-" version ".tar.gz")) (sha256 (base32 - "1hqhziic4csci8xs4q8vbzpmj2qjkhmmx68zza7h5bvmbbhkbvk3")))) + "1dipq90h3n1xdslwbijwlhbk84r7q0bswlbvi970may09lqsbd1w")))) (build-system gnu-build-system) (inputs `(("openssl" ,openssl) ("pcre" ,pcre) @@ -395,24 +397,173 @@ documentation.") "This package provides HTML documentation for the nginx web server.") (license license:bsd-2)))) +(define-public nginx-accept-language-module + ;; Upstream has never made a release; use current commit instead. + (let ((commit "2f69842f83dac77f7d98b41a2b31b13b87aeaba7") + (revision "1")) + (package + (name "nginx-accept-language-module") + (version (git-version "0.0.0" ;upstream has no version number + revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/giom/nginx_accept_language_module.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1hjysrl15kh5233w7apq298cc2bp4q1z5mvaqcka9pdl90m0vhbw")))) + (build-system gnu-build-system) + (inputs `(("openssl" ,openssl) + ("pcre" ,pcre) + ("nginx-sources" ,(package-source nginx)) + ("zlib" ,zlib))) + (arguments + `(#:tests? #f ; no test target + #:make-flags (list "modules") + #:modules ((guix build utils) + (guix build gnu-build-system) + (ice-9 popen) + (ice-9 regex) + (ice-9 textual-ports)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'unpack-nginx-sources + (lambda* (#:key inputs native-inputs #:allow-other-keys) + (begin + ;; The nginx source code is part of the module’s source. + (format #t "decompressing nginx source code~%") + (call-with-output-file "nginx.tar" + (lambda (out) + (let* ((gzip (assoc-ref inputs "gzip")) + (nginx-srcs (assoc-ref inputs "nginx-sources")) + (pipe (open-pipe* OPEN_READ + (string-append gzip "/bin/gzip") + "-cd" + nginx-srcs))) + (dump-port pipe out) + (unless (= (status:exit-val (close-pipe pipe)) 0) + (error "gzip decompress failed"))))) + (invoke (string-append (assoc-ref inputs "tar") "/bin/tar") + "xvf" "nginx.tar" "--strip-components=1") + (delete-file "nginx.tar") + #t))) + (add-after 'unpack 'convert-to-dynamic-module + (lambda _ + (begin + (with-atomic-file-replacement "config" + (lambda (in out) + ;; cf. https://www.nginx.com/resources/wiki/extending/new_config/ + (format out "ngx_module_type=HTTP~%") + (format out "ngx_module_name=\ +ngx_http_accept_language_module~%") + (let* ((str (get-string-all in)) + (rx (make-regexp + "NGX_ADDON_SRCS=\"\\$NGX_ADDON_SRCS (.*)\"")) + (m (regexp-exec rx str)) + (srcs (match:substring m 1))) + (format out (string-append "ngx_module_srcs=\"" + srcs "\"~%"))) + (format out ". auto/module~%") + (format out "ngx_addon_name=$ngx_module_name~%")))))) + (add-before 'configure 'patch-/bin/sh + (lambda _ + (substitute* "auto/feature" + (("/bin/sh") (which "sh"))) + #t)) + (replace 'configure + ;; This phase is largely copied from the nginx package. + (lambda* (#:key outputs #:allow-other-keys) + (let ((flags + (list ;; A copy of nginx’ flags follows, otherwise we + ;; get a binary compatibility error. FIXME: Code + ;; duplication is bad. + (string-append "--prefix=" (assoc-ref outputs "out")) + "--with-http_ssl_module" + "--with-http_v2_module" + "--with-pcre-jit" + "--with-debug" + ;; Even when not cross-building, we pass the + ;; --crossbuild option to avoid customizing for the + ;; kernel version on the build machine. + ,(let ((system "Linux") ; uname -s + (release "3.2.0") ; uname -r + ;; uname -m + (machine (match (or (%current-target-system) + (%current-system)) + ("x86_64-linux" "x86_64") + ("i686-linux" "i686") + ("mips64el-linux" "mips64") + ;; Prevent errors when querying + ;; this package on unsupported + ;; platforms, e.g. when running + ;; "guix package --search=" + (_ "UNSUPPORTED")))) + (string-append "--crossbuild=" + system ":" release ":" machine)) + ;; The following are the args decribed on + ;; . + ;; Enabling --with-compat here and in the nginx package + ;; would ensure binary compatibility even when using + ;; different configure options from the main nginx + ;; package. This is not needed for Guix. + ;; "--with-compat" + "--add-dynamic-module=."))) + (setenv "CC" "gcc") + (format #t "environment variable `CC' set to `gcc'~%") + (format #t "configure flags: ~s~%" flags) + (apply invoke "./configure" flags) + #t))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (modules-dir (string-append out "/etc/nginx/modules")) + (doc-dir (string-append + out "/share/doc/nginx-accept-language-module"))) + (mkdir-p modules-dir) + (copy-file "objs/ngx_http_accept_language_module.so" + (string-append + modules-dir "/ngx_http_accept_language_module.so")) + (mkdir-p doc-dir) + (copy-file "README.textile" + (string-append doc-dir "/README.textile")) + #t)))))) + (home-page + "https://www.nginx.com/resources/wiki/modules/accept_language/") + (synopsis "Nginx module for parsing the Accept-Language HTTP header") + (description + "This nginx module parses the Accept-Language field in HTTP headers and +chooses the most suitable locale for the user from the list of locales +supported at your website.") + (license (delete-duplicates + (cons license:bsd-2 ;license of nginx-accept-language-module + ;; The module’s code is linked statically with nginx, + ;; therefore nginx’ other licenses may also apply to its + ;; binary: + (package-license nginx))))))) + (define-public fcgi (package (name "fcgi") - (version "2.4.0") + (version "2.4.2") (source (origin - (method url-fetch) + (method git-fetch) ;; Upstream has disappeared. - (uri (string-append "https://sources.archlinux.org/other/packages/fcgi/" - "fcgi-" version ".tar.gz")) + (uri (git-reference + (url "https://github.com/FastCGI-Archives/fcgi2") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 - "1f857wnl1d6jfrgfgfpz3zdaj8fch3vr13mnpcpvy8bang34bz36")) - (patches (search-patches "fcgi-2.4.0-poll.patch" - "fcgi-2.4.0-gcc44-fixes.patch")))) + (base32 "1jhz6jfwv5kawa8kajvg18nfwc1b30f38zc0lggszd1vcmrwqkz1")))) (build-system gnu-build-system) ;; Parallel building is not supported. (arguments `(#:parallel-build? #f)) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool))) ;; This is an archived fork of the original home page, www.fastcgi.com. (home-page "https://fastcgi-archives.github.io/") (synopsis "Language-independent, high-performant extension to CGI") @@ -922,7 +1073,8 @@ other systems that want to manipulate WebAssembly files.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "12ffczcrryh74c1xssww35ic6yiy2l2xgdd30lshiq9wnzl2brgy")))) + (base32 "12ffczcrryh74c1xssww35ic6yiy2l2xgdd30lshiq9wnzl2brgy")) + (patches (search-patches "websocketpp-fix-for-boost-1.70.patch")))) (build-system cmake-build-system) (inputs `(("boost" ,boost) ("openssl" ,openssl))) @@ -1193,6 +1345,20 @@ hash/signatures.") "LibYAML is a YAML 1.1 parser and emitter written in C.") (license license:expat))) +(define-public libyaml-2.1 + (package + (inherit libyaml) + (version "0.2.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://pyyaml.org/download/libyaml/yaml-" + version ".tar.gz")) + (sha256 + (base32 + "1karpcfgacgppa82wm2drcfn2kb6q2wqfykf5nrhy20sci2i2a3q")))))) + (define-public libquvi-scripts (package (name "libquvi-scripts") @@ -1434,14 +1600,14 @@ language known as SASS.") (define-public perl-apache-logformat-compiler (package (name "perl-apache-logformat-compiler") - (version "0.35") + (version "0.36") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/K/KA/KAZEBURO/" "Apache-LogFormat-Compiler-" version ".tar.gz")) (sha256 - (base32 "06i70ydxk2wa2rcqn16842kra2qz3jwk0vk1abq8lah4180c0m0n")))) + (base32 "05xcl7j65vakx7x79jqjikyw0nzf60bc2w6hhc0q5sklxq1ral4l")))) (build-system perl-build-system) (native-inputs `(("perl-http-message" ,perl-http-message) @@ -2860,7 +3026,7 @@ jar in conformance with RFC 6265 .") (define-public perl-http-cookies (package (name "perl-http-cookies") - (version "6.04") + (version "6.06") (source (origin (method url-fetch) (uri (string-append @@ -2868,7 +3034,7 @@ jar in conformance with RFC 6265 .") version ".tar.gz")) (sha256 (base32 - "1m0kxcirbvbkrm2c59p1bkbvzlcdymg8fdpa7wlxijlx0xwz1iqc")))) + "13rnz3233vbsfariya4njiyfaj6k94j6bvlyh3dmfmh24hpqgx77")))) (build-system perl-build-system) (propagated-inputs `(("perl-http-message" ,perl-http-message))) @@ -3204,7 +3370,7 @@ select or poll.") (define-public perl-libwww (package (name "perl-libwww") - (version "6.39") + (version "6.41") (source (origin (method url-fetch) (uri (string-append @@ -3212,7 +3378,7 @@ select or poll.") version ".tar.gz")) (sha256 (base32 - "1mblfwz3g7vmyykmb0mcbmmad77rwx55fwaca9ymv9wajd3pg3cs")))) + "0jh67946fwd33ap3xy8df0421d2mr6lmhalhkf1p7dx2b7fil9wf")))) (build-system perl-build-system) (native-inputs `(("perl-test-fatal" ,perl-test-fatal) @@ -4028,8 +4194,8 @@ CDF, Atom 0.3, and Atom 1.0 feeds.") (package-with-python2 python-feedparser)) (define-public guix-data-service - (let ((commit "5e2bc7c6e920e1542ab8fde39dbddca443a7cbc8") - (revision "4")) + (let ((commit "af1324855e1ecaf9b1dd7afcc714d09aaa38f081") + (revision "6")) (package (name "guix-data-service") (version (string-append "0.0.1-" revision "." (string-take commit 7))) @@ -4041,7 +4207,7 @@ CDF, Atom 0.3, and Atom 1.0 feeds.") (file-name (git-file-name name version)) (sha256 (base32 - "0awfvps7k9bpg3gpgc93y401g7pjabx7mr9960vigad8vddhixqi")))) + "1qxs1sbyx894njw4f898wzc5shjj85h9kgz95p8mq1acmazhlhkv")))) (build-system gnu-build-system) (arguments '(#:modules ((guix build utils) @@ -4051,12 +4217,6 @@ CDF, Atom 0.3, and Atom 1.0 feeds.") #:test-target "check-with-tmp-database" #:phases (modify-phases %standard-phases - (add-after 'set-paths 'set-GUIX_ENVIRONMENT - (lambda* (#:key inputs #:allow-other-keys) - ;; This means guix.el finds the Emacs modules - (setenv "GUIX_ENVIRONMENT" - (assoc-ref inputs "emacs-with-modules")) - #t)) (add-before 'build 'set-GUILE_AUTO_COMPILE (lambda _ ;; To avoid errors relating to guild @@ -4107,10 +4267,8 @@ CDF, Atom 0.3, and Atom 1.0 feeds.") ("autoconf" ,autoconf) ("automake" ,automake) ("ephemeralpg" ,ephemeralpg) - ("emacs-with-modules" ,(directory-union - "emacs-union" - (list emacs-no-x - emacs-htmlize))) + ("emacs-minimal" ,emacs-minimal) + ("emacs-htmlize" ,emacs-htmlize) ("pkg-config" ,pkg-config))) (synopsis "Store and provide data about GNU Guix") (description @@ -5175,25 +5333,27 @@ additional capabilities.") (define-public xinetd (package (name "xinetd") - (version "2.3.15") + ;; This is the maintenance fork currently used by openSUSE and Debian. + (version "2.3.15.4") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/xinetd-org/xinetd.git") - (commit (string-append "xinetd-" - (string-join (string-split version #\.) - "-"))))) + (url "https://github.com/openSUSE/xinetd.git") + (commit version))) (file-name (git-file-name name version)) - (patches (search-patches "xinetd-CVE-2013-4342.patch" - "xinetd-fix-fd-leak.patch")) (sha256 - (base32 "0wjai6qagcgxpa1khh639ih7kswgkryc7ll1i4hxhs29sc7irdcn")))) + (base32 "0lrp3lcj6azhjplwxws2rx40bkyp6i6bp7n77ndcisb7ninad30q")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--with-loadavg") #:tests? #f)) ; no tests - (home-page "https://github.com/xinetd-org/xinetd") + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) + (home-page "https://github.com/openSUSE/xinetd") (synopsis "Internet services daemon") (description "@code{xinetd}, a more secure replacement for @code{inetd}, listens for incoming requests over a network and launches the appropriate @@ -5434,7 +5594,7 @@ inspired by Ruby's @code{fakeweb}.") (define-public jo (package (name "jo") - (version "1.2") + (version "1.3") (source (origin (method url-fetch) @@ -5442,7 +5602,7 @@ inspired by Ruby's @code{fakeweb}.") version "/jo-" version ".tar.gz")) (sha256 (base32 - "1bmdck53jslrl3anqqpm6iyjdxrz445qzcc4fr37hr3wjg22zv1n")))) + "0r6yb8pjsbcqfyac4240a0sj93pb91fv385bpk395cx3f5bcj9fy")))) (build-system gnu-build-system) (home-page "https://github.com/jpmens/jo") (synopsis "Output JSON from a shell") @@ -6412,6 +6572,36 @@ provides a very convenient API for extracting and manipulating data, using the best of DOM, CSS, and jQuery-like methods.") (license license:expat))) +(define-public java-signpost-core + (package + (name "java-signpost-core") + (version "1.2.1.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mttkay/signpost") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1l04yj2znch3hpyw90c4g4jan453w7d88l84bgl0c72i2kbb8z7h")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "signpost-core.jar" + #:source-dir "signpost-core/src/main/java" + #:test-dir "signpost-core/src/test" + ;; Tests all fail with InstantiationException from mockito + #:tests? #f)) + (propagated-inputs + `(("java-commons-codec" ,java-commons-codec))) + (home-page "https://github.com/mttkay/signpost") + (synopsis "Lightweight client-side OAuth library for Java") + (description "Signpost is the easy and intuitive solution for signing +HTTP messages on the Java platform in conformance with the OAuth Core 1.0a +standard. Signpost follows a modular and flexible design, allowing you to +combine it with different HTTP messaging layers.") + (license license:asl2.0))) + (define-public tidyp (package (name "tidyp") @@ -6806,7 +6996,7 @@ Anonip can also be uses as a Python module in your own Python application.") (build-system go-build-system) (propagated-inputs `(("go-github-com-robfig-cron" ,go-github-com-robfig-cron) - ("go-golang-org-x-time-rate" ,go-golang-org-x-time-rate))) + ("go-golang-org-x-time" ,go-golang-org-x-time))) (arguments `(#:import-path "github.com/tsileo/poussetaches")) (home-page "https://github.com/tsileo/poussetaches")