aboutsummaryrefslogtreecommitdiff
path: root/nix/libstore/worker-protocol.hh
blob: ea67b10a5be9a18a56ca75900a90a699d3676d10 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#pragma once

namespace nix {


#define WORKER_MAGIC_1 0x6e697863
#define WORKER_MAGIC_2 0x6478696f

#define PROTOCOL_VERSION 0x163
#define GET_PROTOCOL_MAJOR(x) ((x) & 0xff00)
#define GET_PROTOCOL_MINOR(x) ((x) & 0x00ff)


typedef enum {
    wopIsValidPath = 1,
    wopHasSubstitutes = 3,
    wopQueryPathHash = 4,
    wopQueryReferences = 5,
    wopQueryReferrers = 6,
    wopAddToStore = 7,
    wopAddTextToStore = 8,
    wopBuildPaths = 9,
    wopEnsurePath = 10,
    wopAddTempRoot = 11,
    wopAddIndirectRoot = 12,
    wopSyncWithGC = 13,
    wopFindRoots = 14,
    wopExportPath = 16,
    wopQueryDeriver = 18,
    wopSetOptions = 19,
    wopCollectGarbage = 20,
    wopQuerySubstitutablePathInfo = 21,
    wopQueryDerivationOutputs = 22,
    wopQueryAllValidPaths = 23,
    wopQueryFailedPaths = 24,
    wopClearFailedPaths = 25,
    wopQueryPathInfo = 26,
    wopImportPaths = 27,
    wopQueryDerivationOutputNames = 28,
    wopQueryPathFromHashPart = 29,
    wopQuerySubstitutablePathInfos = 30,
    wopQueryValidPaths = 31,
    wopQuerySubstitutablePaths = 32,
    wopQueryValidDerivers = 33,
    wopOptimiseStore = 34,
    wopVerifyStore = 35,
    wopBuiltinBuilders = 80
} WorkerOp;


#define STDERR_NEXT  0x6f6c6d67
#define STDERR_READ  0x64617461 // data needed from source
#define STDERR_WRITE 0x64617416 // data for sink
#define STDERR_LAST  0x616c7473
#define STDERR_ERROR 0x63787470


Path readStorePath(Source & from);
template<class T> T readStorePaths(Source & from);


}
unjie <873216071@qq.com> ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages web) #:use-module (ice-9 match) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix cvs-download) #:use-module (guix hg-download) #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system ant) #:use-module (guix build-system cargo) #:use-module (guix build-system cmake) #:use-module (guix build-system copy) #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system gnu) #:use-module (guix build-system go) #:use-module (guix build-system meson) #:use-module (guix build-system perl) #:use-module (guix build-system pyproject) #:use-module (guix build-system python) #:use-module (guix build-system scons) #:use-module (guix build-system trivial) #:use-module (gnu packages) #:use-module (gnu packages admin) #:use-module (gnu packages adns) #:use-module (gnu packages apr) #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages bison) #:use-module (gnu packages bittorrent) #:use-module (gnu packages boost) #:use-module (gnu packages build-tools) #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages cpp) #:use-module (gnu packages crates-crypto) #:use-module (gnu packages crates-io) #:use-module (gnu packages crates-gtk) #:use-module (gnu packages crates-tls) #:use-module (gnu packages crates-web) #:use-module (gnu packages crypto) #:use-module (gnu packages curl) #:use-module (gnu packages cyrus-sasl) #:use-module (gnu packages databases) #:use-module (gnu packages django) #:use-module (gnu packages docbook) #:use-module (gnu packages datastructures) #:use-module (gnu packages documentation) #:use-module (gnu packages emacs) #:use-module (gnu packages emacs-xyz) #:use-module (gnu packages flex) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gcc) #:use-module (gnu packages gd) #:use-module (gnu packages geo) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages gnu-doc) #:use-module (gnu packages gnunet) #:use-module (gnu packages gnupg) #:use-module (gnu packages golang) #:use-module (gnu packages golang-build) #:use-module (gnu packages golang-check) #:use-module (gnu packages golang-compression) #:use-module (gnu packages golang-web) #:use-module (gnu packages golang-xyz) #:use-module (gnu packages gperf) #:use-module (gnu packages graphviz) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages guile-xyz) #:use-module (gnu packages icu4c) #:use-module (gnu packages image) #:use-module (gnu packages java) #:use-module (gnu packages jemalloc) #:use-module (gnu packages imagemagick) #:use-module (gnu packages kde) #:use-module (gnu packages kerberos) #:use-module (gnu packages libbsd) #:use-module (gnu packages libevent) #:use-module (gnu packages libidn) #:use-module (gnu packages libunistring) #:use-module (gnu packages libunwind) #:use-module (gnu packages linux) #:use-module (gnu packages lisp-xyz) #:use-module (gnu packages lsof) #:use-module (gnu packages lua) #:use-module (gnu packages mail) #:use-module (gnu packages man) #:use-module (gnu packages markup) #:use-module (gnu packages ncurses) #:use-module (gnu packages networking) #:use-module (gnu packages node) #:use-module (gnu packages nss) #:use-module (gnu packages openldap) #:use-module (gnu packages openstack) #:use-module (gnu packages package-management) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages perl-check) #:use-module (gnu packages perl-compression) #:use-module (gnu packages prometheus) #:use-module (gnu packages python) #:use-module (gnu packages python-build) #:use-module (gnu packages python-check) #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages pkg-config) #:use-module (gnu packages qt) #:use-module (gnu packages re2c) #:use-module (gnu packages readline) #:use-module (gnu packages sdl) #:use-module (gnu packages search) #:use-module (gnu packages serialization) #:use-module (gnu packages skribilo) #:use-module (gnu packages sphinx) #:use-module (gnu packages texinfo) #:use-module (gnu packages textutils) #:use-module (gnu packages time) #:use-module (gnu packages tls) #:use-module (gnu packages valgrind) #:use-module (gnu packages version-control) #:use-module (gnu packages video) #:use-module (gnu packages vim) #:use-module (gnu packages wget) #:use-module (gnu packages xdisorg) #:use-module (gnu packages xml) #:use-module ((srfi srfi-1) #:select (delete-duplicates))) (define-public qhttp (package (name "qhttp") (version "3.1") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/azadkuh/qhttp") (commit (string-append "version-" version)))) (file-name (git-file-name name version)) (sha256 (base32 "0cx23g4y4k4v9p5ph6h7gfhp8sfy1gcdv1g6bl44hppar1y0zfdq")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no target #:imported-modules ((guix build copy-build-system) ,@%default-gnu-imported-modules) #:modules (((guix build copy-build-system) #:prefix copy:) (guix build gnu-build-system) (guix build utils)) #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-source (lambda* (#:key outputs #:allow-other-keys) (substitute* "commondir.pri" (("\\$\\$PRJDIR/xbin") (string-append (assoc-ref outputs "out") "/lib")) (("-L") "-lhttp_parser -L") (("\\$\\$PRJDIR/3rdparty") "")) (substitute* "src/src.pro" (("SOURCES \\+= \\$\\$PRJDIR/3rdparty/http-parser/http_parser.c") "") (("HEADERS \\+= \\$\\$PRJDIR/3rdparty/http-parser/http_parser.h") "")) (substitute* '("src/private/qhttpbase.hpp" "src/qhttpabstracts.cpp") (("http-parser/http_parser.h") "http_parser.h")) #t)) (replace 'configure (lambda _ (invoke "qmake"))) (replace 'install (lambda args (apply (assoc-ref copy:%standard-phases 'install) #:install-plan '(("src" "include" #:include-regexp ("\\.hpp$"))) args))) (add-after 'install 'remove-examples (lambda* (#:key outputs #:allow-other-keys) (with-directory-excursion (string-append (assoc-ref outputs "out") "/lib") (for-each delete-file (list "basic-server" "helloworld" "postcollector"))) #t))))) (inputs (list http-parser qtbase-5)) (home-page "https://github.com/azadkuh/qhttp/") (synopsis "Qt-based HTTP Library") (description "Qhttp is a light-weight and asynchronous HTTP library (both server & client) in Qt5 and C++14.") (license license:expat))) (define-public httpd (package (name "httpd") (version "2.4.58") (source (origin (method url-fetch) (uri (string-append "mirror://apache/httpd/httpd-" version ".tar.bz2")) (sha256 (base32 "1id45r2ccgkbjm9i998997ch32lvicpyynyx8x6aa4420wmdf5ps")))) (build-system gnu-build-system) (native-inputs (list `(,pcre "bin"))) ;for 'pcre-config' (inputs (list apr apr-util libxcrypt openssl perl)) ; needed to run bin/apxs (arguments (list #:test-target "test" #:configure-flags #~(list "--enable-rewrite" "--enable-userdir" "--enable-vhost-alias" "--enable-ssl" "--enable-mime-magic" (string-append "--sysconfdir=" #$output "/etc/httpd")))) (synopsis "Featureful HTTP server") (description "The Apache HTTP Server Project is a collaborative software development effort aimed at creating a robust, commercial-grade, featureful, and freely-available source code implementation of an HTTP (Web) server. The project is jointly managed by a group of volunteers located around the world, using the Internet and the Web to communicate, plan, and develop the server and its related documentation.") (license license:asl2.0) (home-page "https://httpd.apache.org/"))) ;; A package variant that may be out of date and vulnerable. Only for use in ;; test suites and should never be referred to by a built package. (define-public httpd/pinned (hidden-package (package (inherit httpd) (version "2.4.52") (source (origin (method url-fetch) (uri (string-append "mirror://apache/httpd/httpd-" version ".tar.bz2")) (sha256 (base32 "1jgmfbazc2n9dnl7axhahwppyq25bvbvwx0lqplq76by97fgf9q1"))))))) (define-public miniflux (package (name "miniflux") (version "2.2.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/miniflux/v2") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "0w8q8x9rw4xq065va96xvlzjzl1qrvzfb1zah3dnnb5g34gjqk94")))) (build-system go-build-system) (arguments (list #:go go-1.22 #:install-source? #f #:import-path "miniflux.app/v2" #:build-flags #~(list (string-append "-ldflags= -X miniflux.app/v2/internal/version.Version=" #$version)) #:phases #~(modify-phases %standard-phases ;; XXX: Replace when go-build-system supports nested path. (replace 'check (lambda* (#:key import-path tests? #:allow-other-keys) (when tests? (with-directory-excursion (string-append "src/" import-path) (invoke "go" "test" "-v" "./..."))))) (add-after 'install 'install-manpage (lambda* (#:key import-path #:allow-other-keys) (let ((man1 (string-append #$output "/share/man/man1/")) (page (format #f "src/~a/miniflux.1" import-path))) (install-file page man1)))) (add-after 'install-manpage 'rename-binary (lambda _ (let ((bindir (string-append #$output "/bin/"))) (rename-file (string-append bindir "v2") (string-append bindir "miniflux")))))))) (inputs (list go-github-com-abadojack-whatlanggo go-github-com-andybalholm-brotli go-github-com-coreos-go-oidc-v3 go-github-com-go-webauthn-webauthn go-github-com-gorilla-mux go-github-com-lib-pq go-github-com-prometheus-client-golang go-github-com-puerkitobio-goquery go-github-com-tdewolff-minify-v2 go-github-com-yuin-goldmark go-golang-org-x-crypto go-golang-org-x-net go-golang-org-x-oauth2 go-golang-org-x-term go-golang-org-x-text go-mvdan-cc-xurls)) (home-page "https://miniflux.app/") (synopsis "Minimalist and opinionated feed reader") (description "Miniflux is a minimalist and opinionated feed reader: @itemize @item Written in Go (Golang) @item Works only with Postgresql @item Doesn't use any ORM @item Doesn't use any complicated framework @item Use only modern vanilla Javascript (ES6 and Fetch API) @item Single binary compiled statically without dependency @item The number of features is voluntarily limited @end itemize") (license license:asl2.0))) (define-public mod-wsgi (package (name "mod-wsgi") (version "4.9.4") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/GrahamDumpleton/mod_wsgi") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "1zf921nd9xxdvvc8awzzfrljr0n29vi28mlam0jdwvsk0xv4gd7a")))) (build-system gnu-build-system) (arguments `(#:disallowed-references (,httpd) #:tests? #f ; TODO: can't figure out if there are tests #:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out")) "LIBEXECDIR=/modules"))) (native-inputs `(("httpd" ,httpd))) (inputs `(("python" ,python-wrapper))) (synopsis "Apache HTTPD module for Python WSGI applications") (description "The mod_wsgi module for the Apache HTTPD Server adds support for running applications that support the Python @acronym{WSGI, Web Server Gateway Interface} specification.") (license license:asl2.0) (home-page "https://modwsgi.readthedocs.io/"))) (define-public ablorb (package (name "ablorb") (version "0.1.0") (source (origin (method git-fetch) (uri (git-reference (url "https://gitlab.gnome.org/lilyp/ablorb") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "1i705p2gw5aryj0myfj3rmsrmj3ilqdn5w7xd5dwjkyi80rc20kj")))) (build-system meson-build-system) (inputs (list glib gconf gnome-vfs libxml2)) (native-inputs (list pkg-config)) (home-page "https://gitlab.gnome.org/lilyp/ablorb") (synopsis "Replace asset links with data URIs") (description "Ablorb takes an XML file and resolves relative links, replacing them with data URIs.") (license license:gpl3+))) (define-public monolith (package (name "monolith") (version "2.8.1") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/Y2Z/monolith") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "0xr63302yb5k9c2sihd1iy97j5c44d4jrzfaiwm81d9li577ih58")))) (build-system cargo-build-system) (arguments `(#:cargo-inputs (("rust-atty" ,rust-atty-0.2) ("rust-base64" ,rust-base64-0.21) ("rust-chrono" ,rust-chrono-0.4) ("rust-clap" ,rust-clap-3) ("rust-cssparser" ,rust-cssparser-0.33) ("rust-encoding-rs" ,rust-encoding-rs-0.8) ("rust-html5ever" ,rust-html5ever-0.24) ("rust-percent-encoding" ,rust-percent-encoding-2) ("rust-regex" ,rust-regex-1) ("rust-reqwest" ,rust-reqwest-0.11) ("rust-sha2" ,rust-sha2-0.10) ("rust-url" ,rust-url-2)) #:cargo-development-inputs (("rust-assert-cmd" ,rust-assert-cmd-2)))) (native-inputs (list pkg-config)) (inputs (list openssl)) (home-page "https://github.com/Y2Z/monolith") (synopsis "Command line tool for saving web pages as a single HTML file") (description "Monolith bundles any web page into a single HTML file. Unlike conventional ``Save page as…'', Monolith not only saves the target document, it embeds CSS, image, and JavaScript assets all at once, producing a single HTML5 document. If compared to saving websites with @samp{wget -mpk}, Monolith embeds all assets as data URLs and therefore displays the saved page exactly the same, being completely separated from the Internet.") (license license:unlicense))) (define-public nginx (package (name "nginx") ;; Please update the nginx-documentation package together with this one! ;; Track the ‘mainline’ branch. Upstream considers it more reliable than ;; ’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/) (version "1.27.1") (source (origin (method url-fetch) (uri (string-append "https://nginx.org/download/nginx-" version ".tar.gz")) (sha256 (base32 "1z5x0i0k1hmnxm7mb3dfn6qrz9am96my5ivinxl3gsp1dj5acyxx")))) (build-system gnu-build-system) (inputs (list libxcrypt libxml2 libxslt openssl pcre zlib)) (arguments (list #:tests? #f ; no test target #:configure-flags #~(list "--with-http_ssl_module" "--with-http_v2_module" "--with-http_xslt_module" "--with-http_gzip_static_module" "--with-http_gunzip_module" "--with-http_addition_module" "--with-http_sub_module" "--with-pcre-jit" "--with-debug" "--with-compat" "--with-stream" "--with-stream_ssl_module" "--with-http_stub_status_module" ;; 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))) #:phases #~(modify-phases %standard-phases (add-before 'configure 'patch-/bin/sh (lambda _ (substitute* "auto/feature" (("/bin/sh") (which "sh"))))) (replace 'configure ;; The configure script is hand-written, not from GNU autotools. (lambda* (#:key configure-flags inputs #:allow-other-keys) (setenv "CC" #$(cc-for-target)) ;; Fix ./configure test for ‘#include <libxml/parser.h>’. (setenv "CFLAGS" ; CPPFLAGS is not respected (string-append "-O2 -g " "-I" (search-input-directory inputs "/include/libxml2"))) (format #t "configure flags: ~s~%" configure-flags) (apply invoke "./configure" (string-append "--prefix=" #$output) configure-flags))) (add-after 'install 'install-man-page (lambda _ (let ((man (string-append #$output "/share/man"))) (install-file "objs/nginx.8" (string-append man "/man8"))))) (add-after 'install 'fix-root-dirs (lambda _ ;; 'make install' puts things in strange places, so we need to ;; clean it up ourselves. (let* ((out #$output) (share (string-append out "/share/nginx"))) ;; This directory is empty, so get rid of it. (rmdir (string-append out "/logs")) ;; Example configuration and HTML files belong in ;; /share. (mkdir-p share) (rename-file (string-append out "/conf") (string-append share "/conf")) (rename-file (string-append out "/html") (string-append share "/html")))))))) (home-page "https://nginx.org") (synopsis "HTTP and reverse proxy server") (description "Nginx (\"engine X\") is a high-performance web and reverse proxy server created by Igor Sysoev. It can be used both as a stand-alone web server and as a proxy to reduce the load on back-end HTTP or mail servers.") ;; Almost all of nginx is distributed under the bsd-2 license. ;; The exceptions are: ;; * The 'nginx-http-push' module is covered by the expat license. ;; * The 'nginx-development-kit' module is mostly covered by bsd-3, ;; except for two source files which are bsd-4 licensed. (license (list license:bsd-2 license:expat license:bsd-3 license:bsd-4)))) (define-public nginx-documentation ;; This documentation should be relevant for the current nginx package. (let ((version "1.27.1") (revision 3114) (changeset "051789a80bcb")) (package (name "nginx-documentation") (version (simple-format #f "~A-~A-~A" version revision changeset)) (source (origin (method hg-fetch) (uri (hg-reference (url "http://hg.nginx.org/nginx.org") (changeset changeset))) (file-name (string-append name "-" version)) (sha256 (base32 "0p198cjnhypssmj4mrj6wx2lbrfgw84i2fa4ydzdbjgkdzp803mv")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; no test suite #:phases (modify-phases %standard-phases (delete 'configure) ; no configure script (replace 'build (lambda* (#:key outputs #:allow-other-keys) (let ((output (assoc-ref outputs "out"))) (substitute* "tools/umasked.sh" ((" /bin/sh") (string-append " " (which "sh")))) ;; The documentation includes a banner, which makes sense on ;; the NGinx website, but doesn't make much sense when ;; viewing locally. Therefore, modify the CSS to remove the ;; banner. (substitute* "xslt/style.xslt" (("#banner \\{ background: black;") "#banner { display: none;")) (invoke "make") #t))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let ((output (assoc-ref outputs "out"))) (mkdir-p output) (copy-recursively "libxslt" output) #t)))))) (native-inputs (list libxml2 libxslt nginx-xslscript)) (home-page "https://nginx.org") (synopsis "Documentation for the nginx web server") (description "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") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "1hjysrl15kh5233w7apq298cc2bp4q1z5mvaqcka9pdl90m0vhbw")))) (build-system gnu-build-system) (inputs `(("libxcrypt" ,libxcrypt) ("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~%") (let ((tar (assoc-ref inputs "tar")) (nginx-srcs (assoc-ref inputs "nginx-sources"))) (invoke (string-append tar "/bin/tar") "xvf" nginx-srcs "--strip-components=1")) #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" "--with-compat" ;; 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 ;; <https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus>. ;; 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 nginx-xslscript (let ((revision 11) (changeset "01dc9ba12e1b")) (package (name "nginx-xslscript") (version (simple-format #f "2014-03-31-~A-~A" revision changeset)) (source (origin (method hg-fetch) (uri (hg-reference (url "https://hg.nginx.org/xslscript") (changeset changeset))) (file-name (string-append name "-" version)) (sha256 (base32 "0am8zvdx3jmiwkg5q07qjaw5r26r4i2v5i4yr8a1k0jgib6ii08g")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; No test suite #:phases (modify-phases %standard-phases (delete 'configure) (delete 'build) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let ((out-bin (string-append (assoc-ref outputs "out") "/bin"))) (mkdir-p out-bin) (copy-file "xslscript.pl" (string-append out-bin "/xslscript.pl")) #t)))))) (home-page "https://hg.nginx.org/xslscript") (synopsis "XSLScript with NGinx specific modifications") (description "XSLScript is a terse notation for writing complex XSLT stylesheets. This is modified version, specifically intended for use with the NGinx documentation.") (license license:bsd-2)))) (define nginx-socket-cloexec (package (inherit nginx) (name "nginx-socket-cloexec") ;required for lua-resty-shell (source (origin (inherit (package-source nginx)) (patches (append (search-patches "nginx-socket-cloexec.patch") (origin-patches (package-source nginx)))))))) (define-public nginx-lua-module (package (inherit nginx) (name "nginx-lua-module") (version "0.10.16") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/openresty/lua-nginx-module") (commit (string-append "v" version)))) (file-name (git-file-name "lua-nginx-module" version)) (sha256 (base32 "0nwcbqm1visg1dkxav7qa16w0d0n8cgqn4881xiqn88xfkxj0dyg")))) (build-system gnu-build-system) (inputs `(("nginx-sources" ,(package-source nginx-socket-cloexec)) ("luajit" ,luajit) ,@(package-inputs nginx))) (arguments (substitute-keyword-arguments `(#:make-flags '("modules") #:modules ((guix build utils) (guix build gnu-build-system) (ice-9 popen) (ice-9 regex) (ice-9 textual-ports)) ,@(package-arguments nginx) #:configure-flags '("--add-dynamic-module=.")) ((#:phases phases) #~(modify-phases #$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~%") (let ((tar (assoc-ref inputs "tar")) (nginx-srcs (assoc-ref inputs "nginx-sources"))) (invoke (string-append tar "/bin/tar") "xvf" nginx-srcs "--strip-components=1")) #t))) (add-before 'configure 'set-luajit-env (lambda* (#:key inputs #:allow-other-keys) (let ((luajit (assoc-ref inputs "luajit"))) (setenv "LUAJIT_LIB" (string-append luajit "/lib")) (setenv "LUAJIT_INC" (string-append luajit "/include/luajit-2.1")) #t))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let ((modules-dir (string-append (assoc-ref outputs "out") "/etc/nginx/modules"))) (install-file "objs/ngx_http_lua_module.so" modules-dir) #t))) (delete 'fix-root-dirs) (delete 'install-man-page))))) (synopsis "NGINX module for Lua programming language support") (description "This NGINX module provides a scripting support with Lua programming language."))) (define-public nginx-rtmp-module (package (inherit nginx) (name "nginx-rtmp-module") (version "1.2.2") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/arut/nginx-rtmp-module") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "0y45bswk213yhkc2v1xca2rnsxrhx8v6azxz9pvi71vvxcggqv6h")))) (build-system gnu-build-system) (inputs `(("nginx-sources" ,(package-source nginx)) ,@(package-inputs nginx))) (arguments (substitute-keyword-arguments `(#:make-flags '("modules") ;Only build this module not all of nginx. ,@(package-arguments nginx)) ((#:configure-flags flags) #~(cons "--add-dynamic-module=." #$flags)) ((#:phases phases) #~(modify-phases #$phases (add-after 'unpack 'unpack-nginx-sources (lambda _ (begin ;; The nginx source code is part of the module’s source. (format #t "decompressing nginx source code~%") (invoke "tar" "xvf" #$(this-package-input "nginx-sources") ;; This package's LICENSE file would be ;; overwritten with the one from nginx when ;; unpacking the nginx source, so rename the nginx ;; one when unpacking. "--transform=s,/LICENSE$,/LICENSE.nginx," "--strip-components=1")))) (replace 'install (lambda _ (let ((modules-dir (string-append #$output "/etc/nginx/modules"))) (install-file "objs/ngx_rtmp_module.so" modules-dir)))) (delete 'fix-root-dirs) (delete 'install-man-page))))) (home-page "https://github.com/arut/nginx-rtmp-module") (synopsis "NGINX module for audio and video streaming with RTMP") (description "This NGINX module provides streaming with the @acronym{RTMP, Real-Time Messaging Protocol}, @acronym{DASH, Dynamic Adaptive Streaming over HTTP}, and @acronym{HLS, HTTP Live Streaming} protocols. It allows NGINX to accept incoming RTMP streams for recording or redistribution. It also supports on-demand streaming from a file on disk and pulling from an upstream RTMP stream. Remote control of the module is possible over HTTP.") (license license:bsd-2))) (define-public nginx-module-vts (package (inherit nginx) (name "nginx-module-vts") (version "0.2.1") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/vozlt/nginx-module-vts") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "017298vpp1ra16xyfdbsczdrz0b0y67x6adkzcc98y6gb3kg52n7")))) (build-system gnu-build-system) (inputs `(("nginx-sources" ,(package-source nginx)) ,@(package-inputs nginx))) (arguments (substitute-keyword-arguments `(#:make-flags '("modules") ;Only build this module not all of nginx. ,@(package-arguments nginx)) ((#:configure-flags flags) #~(cons "--add-dynamic-module=." #$flags)) ((#:phases phases) #~(modify-phases #$phases (add-after 'unpack 'unpack-nginx-sources (lambda _ (begin ;; The nginx source code is part of the module’s source. (format #t "decompressing nginx source code~%") (invoke "tar" "xvf" #$(this-package-input "nginx-sources") ;; This package's LICENSE file would be ;; overwritten with the one from nginx when ;; unpacking the nginx source, so rename the nginx ;; one when unpacking. "--transform=s,/LICENSE$,/LICENSE.nginx," "--strip-components=1")))) (replace 'install (lambda _ (let ((modules-dir (string-append #$output "/etc/nginx/modules"))) (install-file "objs/ngx_http_vhost_traffic_status_module.so" modules-dir)))) (delete 'fix-root-dirs) (delete 'install-man-page))))) (home-page "https://github.com/vozlt/nginx-module-vts") (synopsis "NGINX module for monitoring virtual host traffic status") (description "This NGINX module provides access to virtual host status information, similar to live activity monitoring provided with NGINX plus.") (license license:bsd-2))) (define-public lighttpd (package (name "lighttpd") (version "1.4.76") (source (origin (method url-fetch) (uri (string-append "https://download.lighttpd.net/lighttpd/" "releases-" (version-major+minor version) ".x/" "lighttpd-" version ".tar.xz")) (sha256 (base32 "04ahiyn622mgpkib8j20vj7wa1av1dv7ing9vz7d1kvkwfb45gwc")))) (build-system gnu-build-system) (arguments (list #:configure-flags #~(list "--with-krb5" "--with-ldap" "--with-libev" "--with-libunwind" "--with-openssl" "--with-pam" "--with-sasl") #:phases #~(modify-phases %standard-phases (add-after 'unpack 'embed-/bin/sh-reference (lambda* (#:key inputs #:allow-other-keys) (substitute* "src/mod_ssi.c" (("/bin/sh") (search-input-file inputs "/bin/sh"))))) (add-after 'unpack 'fix-tests (lambda _ (setenv "SHELL" (which "sh")) ;; gethostbyaddr fails (substitute* "tests/LightyTest.pm" (("\\{HOSTNAME\\} = \\$name;") "{HOSTNAME} = \"127.0.0.1\";")))) (add-after 'unpack 'skip-failing-tests ;; XXX It would be wonderful if you, reader, felt suddenly and ;; irresistibly compelled to investigate & fix these failures. (lambda _ ;; Throws a bunch of ‘connect failed: Connection refused’. (delete-file "tests/mod-scgi.t") ;; test_mod_ssi_read_fd: Assertion `cq->first' failed. (substitute* "src/t/test_mod.c" ((".*\\btest_mod_ssi\\b.*") ""))))))) (inputs (list bash-minimal cyrus-sasl libev libunwind linux-pam mit-krb5 openldap openssl pcre2 zlib)) (native-inputs (list autoconf automake libtool perl ; for tests pkg-config which)) (home-page "https://www.lighttpd.net/") (synopsis "Lightweight HTTP and reverse proxy server") (description "Lighttpd is a secure, fast, compliant, and very flexible web-server that has been optimized for high-performance environments. It has a very low memory footprint compared to other webservers. Its features include FastCGI, CGI, authentication, output compression, URL rewriting and many more.") (license license:bsd-3))) (define-public fcgi (package (name "fcgi") (version "2.4.2") (source (origin (method git-fetch) ;; Upstream has disappeared. (uri (git-reference (url "https://github.com/FastCGI-Archives/fcgi2") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "1jhz6jfwv5kawa8kajvg18nfwc1b30f38zc0lggszd1vcmrwqkz1")))) (build-system gnu-build-system) ;; Parallel building is not supported. (arguments `(#:parallel-build? #f)) (native-inputs (list autoconf automake 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") (description "FastCGI is a language-independent, scalable extension to CGI that provides high performance without the limitations of server specific APIs.") ;; This package is released under the Open Market License, a variant of ;; the Expat license, incompatible with the GPL. (license (license:non-copyleft "file://LICENSE.TERMS")))) (define-public fcgiwrap (let ((commit "2870d2729a3930988f0041e2d78fec672e69afac") (revision "1")) (package (name "fcgiwrap") (version (git-version "1.1.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference ;; Upstream last updated in 2015, this forked version has better ;; socket cleanup. (url "https://github.com/flu0r1ne/fcgiwrap") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "0rkpp4apfhdcrmym3pcpqlncd0r4fyr3pa45i8g6x4p38b4azmmm")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no tests included #:make-flags (list "CC=gcc") #:phases (modify-phases %standard-phases (add-after 'unpack 'fix-CFLAGS ;; Remove broken options unconditionally added to CFLAGS. (lambda _ (substitute* "configure.ac" ((" -Werror") "")) #t))))) (native-inputs (list autoconf automake pkg-config)) (inputs (list fcgi)) (home-page "https://nginx.localdomain.pl/wiki/FcgiWrap") (synopsis "Simple server for running CGI applications over FastCGI") (description "Fcgiwrap is a simple server for running CGI applications over FastCGI. It hopes to provide clean CGI support to Nginx (and other web servers that may need it).") (license license:expat)))) (define-public starman (package (name "starman") (version "0.4015") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/" "Starman-" version ".tar.gz")) (sha256 (base32 "1y1kn4929k299fbf6sw9lxcsdlq9fvq777p6yrzk591rr9xhkx8h")))) (build-system perl-build-system) (native-inputs (list perl-libwww perl-module-build-tiny perl-test-requires)) (propagated-inputs (list perl-data-dump perl-http-date perl-http-message perl-http-parser-xs perl-net-server perl-plack perl-test-tcp)) (home-page "https://metacpan.org/release/Starman") (synopsis "PSGI/Plack web server") (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 license:perl-license))) (define-public icedtea-web (package (name "icedtea-web") (version "1.6.2") (source (origin (method url-fetch) (uri (string-append "http://icedtea.wildebeest.org/download/source/" name "-" version ".tar.gz")) (sha256 (base32 "004kwrngyxxlrlzby4vzxjr0xcyngcdc9dfgnvi61ffnjr006ryf")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list "--disable-plugin" ;NPAPI plugins are obsolete nowadays. (string-append "BIN_BASH=" (search-input-file %build-inputs "/bin/bash")) (string-append "--with-jdk-home=" (assoc-ref %build-inputs "jdk"))))) (outputs '("out" "doc")) (native-inputs (list pkg-config zip)) (inputs `(("gtk+" ,gtk+) ("jdk" ,icedtea "jdk"))) (home-page "http://icedtea.classpath.org/wiki/IcedTea-Web") (synopsis "Java Web Start") (description "IcedTea-Web is an implementation of the @dfn{Java Network Launching Protocol}, also known as Java Web Start. This package provides tools and libraries for working with JNLP applets.") ;; The program is mainly GPL2+, with some individual files under LGPL2.1+ ;; or dual licenses. (license license:gpl2+))) (define-public jansson (package (name "jansson") (version "2.14") (source (origin (method url-fetch) (uri (string-append "https://github.com/akheron/jansson" "/releases/download/v" version "/jansson-" version ".tar.bz2")) (sha256 (base32 "1fdgji964mrrz19glx0zh91asji542fvybymvzk6rrbagkr5dagv")))) (build-system gnu-build-system) (arguments (list #:configure-flags #~'("--disable-static") #:phases #~(modify-phases %standard-phases (add-after 'unpack 'patch-tests (lambda _ ;; Take a fix from upstream for testing with symbol versioning: ;; https://github.com/akheron/jansson/pull/593 (substitute* "test/suites/api/check-exports" (("(grep ' \\[DT\\] ' \\$test_log/symbols.*) \\| sort" _ cmd) (string-append cmd "| sed 's/@@libjansson.*//' | sort")))))))) (home-page "https://github.com/akheron/jansson") (synopsis "JSON C library") (description "Jansson is a C library for encoding, decoding and manipulating JSON data.") (license license:expat))) (define-public json-c (package (name "json-c") (version "0.15") (source (origin (method url-fetch) (uri (string-append "https://s3.amazonaws.com/json-c_releases/releases/json-c-" version ".tar.gz")) (sha256 (base32 "1im484iz08j3gmzpw07v16brwq46pxxj65i996kkp2vivcfhmn5q")))) (build-system cmake-build-system) (home-page "https://github.com/json-c/json-c/wiki") (synopsis "JSON implementation in C") (description "JSON-C implements a reference counting object model that allows you to easily construct JSON objects in C, output them as JSON-formatted strings and parse JSON-formatted strings back into the C representation of JSON objects. It aims to conform to RFC 7159.") (license license:x11))) ;; TODO: Remove these old versions when all dependents have been updated. (define-public json-c-0.13 (package (inherit json-c) (version "0.13.1") (source (origin (method url-fetch) (uri (string-append "https://s3.amazonaws.com/json-c_releases/releases/json-c-" version ".tar.gz")) (sha256 (base32 "0ws8dz9nk8q2c0gbf66kg2r6mrkl7kamd3gpdv9zsyrz9n6n0zmq")) (patches (search-patches "json-c-0.13-CVE-2020-12762.patch")) (modules '((guix build utils))) (snippet '(begin ;; Somehow 'config.h.in' is older than ;; 'aclocal.m4', which would trigger a rule to ;; run 'autoheader'. (set-file-time "config.h.in" (stat "aclocal.m4")) #t)))) (build-system gnu-build-system))) (define-public json-c-0.12 (package (inherit json-c-0.13) (version "0.12.1") (source (origin (method url-fetch) (uri (string-append "https://s3.amazonaws.com/json-c_releases/releases/json-c-" version ".tar.gz")) (sha256 (base32 "08qibrq29a5v7g23wi5icy6l4fbfw90h9ccps6vq0bcklx8n84ra")) (patches (search-patches "json-c-0.12-CVE-2020-12762.patch")) (modules '((guix build utils))) (snippet '(begin ;; Somehow 'config.h.in' is older than ;; 'aclocal.m4', which would trigger a rule to ;; run 'autoheader'. (set-file-time "config.h.in" (stat "aclocal.m4")) ;; Don't try to build with -Werror. (substitute* (find-files "." "Makefile\\.in") (("-Werror") "")) #t)))))) (define-public json-parser (package (name "json-parser") (version "1.1.0") (source (origin ;; do not use auto-generated tarballs (method git-fetch) (uri (git-reference (url "https://github.com/udp/json-parser") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1ls7z4fx0sq633s5bc0j1gh36sv087gmrgr7rza22wjq2d4606yf")))) ;; FIXME: we should build the python bindings in a separate package (build-system gnu-build-system) ;; the tests are written for the python bindings which are not built here (arguments '(#:tests? #f)) (home-page "https://github.com/udp/json-parser") (synopsis "JSON parser written in ANSI C") (description "This package provides a very low footprint JSON parser written in portable ANSI C. @itemize @item BSD licensed with no dependencies (i.e. just drop the C file into your project) @item Never recurses or allocates more memory than it needs @item Very simple API with operator sugar for C++ @end itemize") (license license:bsd-2))) (define-public qjson (package (name "qjson") (version "0.9.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/flavio/qjson") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "1f4wnxzx0qdmxzc7hqk28m0sva7z9p9xmxm6aifvjlp0ha6pmfxs")))) (build-system cmake-build-system) (arguments ;; The tests require a running X server. `(#:configure-flags '("-DQJSON_BUILD_TESTS=ON" "-DCMAKE_CXX_FLAGS=-std=gnu++11 -fPIC") #:phases (modify-phases %standard-phases (add-after 'unpack 'disable-broken-test (lambda _ ;; FIXME: One test fails. See ;; https://github.com/flavio/qjson/issues/105 (substitute* "tests/scanner/testscanner.cpp" (("QTest::newRow\\(\"too large exponential\"\\)" line) (string-append "//" line))) #t)) (add-before 'check 'render-offscreen (lambda _ (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (inputs (list qtbase-5)) (home-page "https://qjson.sourceforge.net") (synopsis "Library that maps JSON data to QVariant objects") (description "QJson is a Qt-based library that maps JSON data to @code{QVariant} objects. JSON arrays will be mapped to @code{QVariantList} instances, while JSON's objects will be mapped to @code{QVariantMap}.") ;; Only version 2.1 of the license (license license:lgpl2.1))) (define-public qoauth (package (name "qoauth") (version "2.0.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/ayoy/qoauth") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1b2jdqs526ac635yb2whm049spcsk7almnnr6r5b4yqhq922anw3")))) (build-system gnu-build-system) (inputs (list qca qtbase-5)) (arguments '(#:tests? #f ;FIXME: some tests are failing #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-code (lambda _ (make-file-writable "src/qoauth.pc") (substitute* "src/src.pro" (("/lib64") "/lib")) #t)) (add-after 'unpack 'adjust-mkspecs-directory (lambda* (#:key outputs #:allow-other-keys) (substitute* "src/src.pro" ;; Do not attempt to install the .prf file into qtbase ;; "lib/qt5/mkspecs/features", ref <https://bugs.gnu.org/45031>. (("\\$\\$\\[QMAKE_MKSPECS\\]") (string-append (assoc-ref outputs "out") "/lib/qt5/mkspecs"))) #t)) (replace 'configure (lambda* (#:key inputs #:allow-other-keys) (let ((qca (assoc-ref inputs "qca"))) (invoke "qmake" (string-append "PREFIX=" (assoc-ref %outputs "out")) (string-append "QMAKE_INCDIR+=" qca "/include/Qca-qt5/QtCrypto") (string-append "LIBS+=-L" qca "/lib") (string-append "LIBS+=-lqca-qt5")))))))) (home-page "https://github.com/ayoy/qoauth") (synopsis "Qt-based C++ library for OAuth authorization scheme") (description "QOAuth is an attempt to support interaction with OAuth-powered network services in a Qt way, i.e. simply, clearly and efficiently. It gives the application developer no more than 4 methods.") (license license:lgpl2.1+))) (define-public krona-tools (package (name "krona-tools") (version "2.8") (source (origin (method url-fetch) (uri (string-append "https://github.com/marbl/Krona/releases/download/v" version "/KronaTools-" version ".tar")) (sha256 (base32 "1h698wddb3hii68mnkby7s1x81vbhd4z1sf4ivm1lsi2nqlc1vsn")))) (build-system perl-build-system) (arguments `(#:phases (modify-phases %standard-phases ;; There is no configure or build steps. (delete 'configure) (delete 'build) ;; Install script "install.pl" expects the build directory to remain ;; after installation, creating symlinks etc., so re-implement it ;; here. (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let ((bin (string-append (assoc-ref outputs "out") "/bin")) (perl (string-append (assoc-ref outputs "out") "/lib/perl5/site_perl/krona-tools/lib")) (share (string-append (assoc-ref outputs "out") "/share/krona-tools"))) (mkdir-p bin) (for-each (lambda (script) (let ((executable (string-append "scripts/" script ".pl"))) ;; Prefix executables with 'kt' as install script does. (copy-file executable (string-append bin "/kt" script)))) '("ClassifyBLAST" "GetContigMagnitudes" "GetLCA" "GetTaxIDFromAcc" "GetTaxInfo" "ImportBLAST" "ImportDiskUsage" "ImportEC" "ImportFCP" "ImportGalaxy" "ImportKrona" "ImportMETAREP-BLAST" "ImportMETAREP-EC" "ImportMGRAST" "ImportPhymmBL" "ImportRDP" "ImportRDPComparison" "ImportTaxonomy" "ImportText" "ImportXML")) (for-each (lambda (directory) (copy-recursively directory (string-append perl "/../" directory))) (list "data" "img" "taxonomy" "src")) (install-file "lib/KronaTools.pm" perl) ;; Install downloaders (substitute* "updateAccessions.sh" (("ktPath=.*") (string-append "ktPath=" share "\n"))) (substitute* "updateTaxonomy.sh" (("ktPath=.*") (string-append "ktPath=" share "\n")) (("command -v curl") (string-append "command -v " (which "curl"))) (("curl -s") (string-append (which "curl") " -s")) (("curl\\$timestring") (string-append (which "curl") "$timestring")) (("perl -M") (string-append (which "perl") " -M")) (("make ") (string-append (which "make") " "))) (for-each (lambda (file) (install-file file (string-append share "/scripts"))) '("scripts/extractTaxonomy.pl" "scripts/accession2taxid.make" "scripts/taxonomy.make")) (for-each (lambda (file) (install-file file share)) '("updateAccessions.sh" "updateTaxonomy.sh"))))) (add-after 'install 'wrap-program (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (path (getenv "PERL5LIB"))) (for-each (lambda (executable) (wrap-program executable `("PERL5LIB" ":" prefix (,(string-append out "/lib/perl5/site_perl/krona-tools/lib"))))) (find-files (string-append out "/bin/") ".*"))))) (delete 'check) (add-after 'wrap-program 'check (lambda* (#:key inputs outputs #:allow-other-keys) (with-directory-excursion "data" (invoke (string-append (assoc-ref outputs "out") "/bin/ktImportText") "ec.tsv"))))))) (inputs (list bash-minimal curl gnu-make perl)) (home-page "https://github.com/marbl/Krona/wiki") (synopsis "Hierarchical data exploration with zoomable HTML5 pie charts") (description "Krona is a flexible tool for exploring the relative proportions of hierarchical data, such as metagenomic classifications, using a radial, space-filling display. It is implemented using HTML5 and JavaScript, allowing charts to be explored locally or served over the Internet, requiring only a current version of any major web browser.") (license license:bsd-3))) (define-public rapidjson ;; Last release was in 2016, but this commit is from 2023. (let ((commit "949c771b03de448bdedea80c44a4a5f65284bfeb") (revision "1")) (package (name "rapidjson") (version (git-version "1.1.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/Tencent/rapidjson") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "1xlj0cj88ls3avwmlhd2gf5757fjpfbqx6qf49z1mzi381gcl72m")) (modules '((guix build utils))) (snippet '(begin ;; Remove code using the problematic JSON license (see ;; <https://www.gnu.org/licenses/license-list.html#JSON>). (delete-file-recursively "bin/jsonchecker"))))) (build-system cmake-build-system) (arguments '(#:phases (modify-phases %standard-phases (add-after 'unpack 'fix-march=native (lambda _ (substitute* "CMakeLists.txt" (("-m[^-]*=native") ""))))))) (home-page "https://github.com/Tencent/rapidjson") (synopsis "JSON parser/generator for C++ with both SAX/DOM style API") (description "RapidJSON is a fast JSON parser/generator for C++ with both SAX/DOM style API.") (license license:expat)))) (define-public yajl (package (name "yajl") (version "2.1.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/lloyd/yajl") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "00yj06drb6izcxfxfqlhimlrb089kka0w0x8k27pyzyiq7qzcvml")))) (build-system cmake-build-system) (arguments '(#:phases (modify-phases %standard-phases (add-after 'patch-source-shebangs 'patch-tests (lambda _ (substitute* "test/parsing/run_tests.sh" (("`which echo`") (which "echo")))))))) (home-page "https://lloyd.github.io/yajl/") (synopsis "C library for parsing and generating JSON") (description "@acronym{YAJL, Yet Another JSON Library} is a small event-driven (SAX-style) JSON parser and validating generator written in ANSI C.") (license license:isc))) (define-public libyajl (deprecated-package "libyajl" yajl)) (define-public libwebsockets (package (name "libwebsockets") (version "4.3.2") (source (origin ;; The project does not publish tarballs, so we have to take ;; things from Git. (method git-fetch) (uri (git-reference (url "https://github.com/warmcat/libwebsockets") (commit (string-append "v" version)))) (sha256 (base32 "0rxgb05f6jignb0y367rs88cla2s1ndd9jfl4ms77q8w0wnbq762")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (native-inputs (list perl)) ; to build the HTML doc (inputs (list zlib openssl)) (synopsis "WebSockets library written in C") (description "Libwebsockets is a library that allows C programs to establish client and server WebSockets connections---a protocol layered above HTTP that allows for efficient socket-like bidirectional reliable communication channels.") (home-page "https://libwebsockets.org") (license license:expat))) (define-public wabt (package (name "wabt") (version "1.0.34") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/WebAssembly/wabt") (commit version) (recursive? #true))) (file-name (git-file-name name version)) (sha256 (base32 "1vxvc34b7a7lkrmzdb5cjv0b54vhiyr33sy0i2ps5jrmg5rqqmia")) (modules '((guix build utils))) (snippet '(delete-file-recursively "third_party/gtest/")))) (build-system cmake-build-system) (arguments (list ;; Tests on non-x86_64 architectures are not well supported upstream. #:tests? (target-x86-64?) #:test-target "run-tests" #:configure-flags '(list "-DUSE_SYSTEM_GTEST=ON") #:phases '(modify-phases %standard-phases (add-after 'unpack 'use-gcc (lambda _ (setenv "CC" "gcc"))) ;; XXX This is the only test that fails. (add-after 'unpack 'delete-broken-test (lambda _ (delete-file "test/wasm2c/spec/memory_init.txt")))))) (native-inputs (list python googletest)) (home-page "https://github.com/WebAssembly/wabt") (synopsis "WebAssembly Binary Toolkit") (description "WABT (pronounced: wabbit) is a suite of tools for WebAssembly, including: @enumerate @item @command{wat2wasm} translates from WebAssembly text format to the WebAssembly binary format @item @command{wasm2wat} is the inverse; it translates from the binary format back to the text format (also known as a .wat) @item @command{wasm-objdump} prints information about a wasm binary, similarly to @command{objdump}. @item @command{wasm-interp} decodes ands run a WebAssembly binary file using a stack-based interpreter @item @command{wat-desugar} parses .wat text form as supported by the spec interpreter (s-expressions, flat syntax, or mixed) and prints the canonical flat format @item @command{wasm2c} converts a WebAssembly binary file to a C source and header file. @end enumerate These tools are intended for use in (or for development of) toolchains or other systems that want to manipulate WebAssembly files.") (license license:asl2.0))) (define-public wasm3 (package (name "wasm3") (version "0.5.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/wasm3/wasm3") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "07zzmk776j8ydyxhrnnjiscbhhmz182a62r6aix6kfk5kq2cwia2")))) (build-system cmake-build-system) (arguments ;; The default WASI option "uvwasi" causes CMake to initiate a 'git ;; clone' which cannot happen within the build container. '(#:configure-flags '("-DBUILD_WASI=simple") ;; No check target. There are tests but they require a network ;; connection to download the WebAssembly core test suite. #:tests? #f ;; There is no install target. Instead, we have to manually copy the ;; wasm3 build artifacts to the output directory. #:phases (modify-phases %standard-phases (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bindir (string-append out "/bin")) (includedir (string-append out "/include")) (libdir (string-append out "/lib"))) (mkdir-p bindir) (mkdir-p includedir) (mkdir-p libdir) (copy-file "wasm3" (string-append bindir "/wasm3")) (for-each (lambda (header) (copy-file header (string-append includedir "/" (basename header)))) (find-files "../source/source" "\\.h$")) (copy-file "source/libm3.a" (string-append libdir "/libm3.a")))))))) (home-page "https://github.com/wasm3/wasm3") (synopsis "WebAssembly interpreter") (description "WASM3 is a fast WebAssembly interpreter.") (license license:expat))) (define-public wasm-micro-runtime (package (name "wasm-micro-runtime") (version "1.2.3") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/bytecodealliance/wasm-micro-runtime") (commit (string-append "WAMR-" version)))) (file-name (git-file-name "WAMR" version)) (sha256 (base32 "1s7r8vfxixf737jp12cf7as68fd63lrmqdxj7fiqdla2wk89ly3f")))) (build-system cmake-build-system) (arguments (list ;; Running the tests is difficult. The test script in ;; tests/wamr-test-suites insists on downloading and building wabt (even ;; if we provide it) and it has a hard time accepting a separately ;; provided clone of the https://github.com/WebAssembly/spec repository. ;; Future releases provide unit tests which may be easier to run. #:tests? #false #:phases '(modify-phases %standard-phases (add-after 'unpack 'chdir (lambda _ (chdir "product-mini/platforms/linux")))))) (home-page "https://bytecodealliance.github.io/wamr.dev") (synopsis "WebAssembly Micro Runtime") (description "WebAssembly Micro Runtime (WAMR) is a lightweight standalone WebAssembly (Wasm) runtime with small footprint, high performance and highly configurable features for applications cross from embedded, IoT, edge to Trusted Execution Environment (TEE), smart contract, cloud native and other features.") (license license:asl2.0))) (define-public websocketpp (package (name "websocketpp") (version "0.8.2") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/zaphoyd/websocketpp") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "1ww4fhl8qf12hkv6jaild8zzsygdspxm1gqpk2f63gv1xfi31wpm")) (patches (search-patches "websocketpp-fix-for-cmake-3.15.patch")))) (build-system cmake-build-system) (inputs (list boost openssl)) (arguments '(#:configure-flags '("-DBUILD_TESTS=ON") #:phases (modify-phases %standard-phases (add-after 'install 'remove-tests (lambda* (#:key outputs #:allow-other-keys) (let* ((install-dir (assoc-ref outputs "out")) (bin-dir (string-append install-dir "/bin"))) (delete-file-recursively bin-dir) #t)))))) (home-page "https://www.zaphoyd.com/websocketpp/") (synopsis "C++ library implementing the WebSocket protocol") (description "WebSocket++ is a C++ library that can be used to implement WebSocket functionality. The goals of the project are to provide a WebSocket implementation that is simple, portable, flexible, lightweight, low level, and high performance.") (license license:bsd-3))) (define-public wslay (package (name "wslay") (version "1.1.1") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/tatsuhiro-t/wslay") (commit (string-append "release-" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1w32iljg4inqf0712w5fxxhggvmjh6ipl2lnz0h36dv1xrj0d964")))) (build-system gnu-build-system) (arguments ;; Parallel builds don't reliably succeed. `(#:parallel-build? #f #:phases (modify-phases %standard-phases (add-after 'unpack 'fix-sphinx-error ;; XXX: Remove in next version: fix applied upstream. See ;; <https://github.com/tatsuhiro-t/wslay/commit/43fda1207ea5977043630500e0c8e77b98b35320>. (lambda _ (substitute* "doc/sphinx/conf.py.in" (("add_stylesheet") "add_css_file"))))))) (native-inputs (list autoconf automake cunit ; for tests libtool pkg-config python-sphinx)) (home-page "https://tatsuhiro-t.github.io/wslay/") (synopsis "C WebSocket library") (description "@code{Wslay} is an event-based C library for the WebSocket protocol version 13, described in RFC 6455. Besides a high-level API it provides callbacks for sending and receiving frames directly. @code{Wslay} only supports the data transfer part of WebSocket protocol and does not perform the opening handshake in HTTP.") (license license:expat))) (define-public libpsl (package (name "libpsl") (version "0.21.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/rockdaboot/libpsl/" "releases/download/" version "/libpsl-" version ".tar.gz")) (sha256 (base32 "0k0d46bbh1jj2ll369f134vciplrzbqkg7fv9m62bl6lzghy2v5c")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) ;; For tests. ("python" ,python-wrapper))) (inputs (list libidn2 libunistring)) (home-page "https://github.com/rockdaboot/libpsl") (synopsis "C library for the Publix Suffix List") (description "A \"public suffix\" is a domain name under which Internet users can directly register own names. Browsers and other web clients can use it to avoid privacy-leaking \"supercookies\", avoid privacy-leaking \"super domain\" certificates, domain highlighting parts of the domain in a user interface, and sorting domain lists by site. Libpsl has built-in PSL data for fast access, allowing to load PSL data from files, checks if a given domain is a public suffix, provides immediate cookie domain verification, finds the longest public part of a given domain, finds the shortest private part of a given domain, works with international domains (UTF-8 and IDNA2008 Punycode), is thread-safe, and handles IDNA2008 UTS#46.") (license license:x11))) (define-public esbuild (package (name "esbuild") (version "0.14.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/evanw/esbuild") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "09r1xy0kk6c9cpz6q0mxr4why373pwxbm439z2ihq3k1d5kk7x4w")) (modules '((guix build utils))) (snippet '(begin ;; Remove prebuilt binaries (delete-file-recursively "npm") #t)))) (build-system go-build-system) (arguments `(#:import-path "github.com/evanw/esbuild/cmd/esbuild" #:unpack-path "github.com/evanw/esbuild" #:phases (modify-phases %standard-phases (replace 'check (lambda* (#:key tests? unpack-path #:allow-other-keys) (when tests? ;; The "Go Race Detector" is only supported on 64-bit ;; platforms, this variable disables it. ;; TODO: Causes too many rebuilds, rewrite to limit to x86_64, ;; aarch64 and ppc64le. ,(if (target-riscv64?) `(setenv "ESBUILD_RACE" "") `(unless ,(target-64bit?) (setenv "ESBUILD_RACE" ""))) (with-directory-excursion (string-append "src/" unpack-path) (invoke "make" "test-go"))) #t))))) (inputs `(("golang.org/x/sys" ,go-golang-org-x-sys))) (native-inputs `(("github.com/kylelemons/godebug" ,go-github-com-kylelemons-godebug))) (home-page "https://esbuild.github.io/") (synopsis "Bundler and minifier tool for JavaScript and TypeScript") (description "The esbuild tool provides a unified bundler, transpiler and minifier. It packages up JavaScript and TypeScript code, along with JSON and other data, for distribution on the web.") (license license:expat))) (define-public tinyproxy (package (name "tinyproxy") (version "1.11.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/tinyproxy/tinyproxy/" "releases/download/" version "/tinyproxy-" version ".tar.xz")) (sha256 (base32 "0z0gnk74y68fv34vlgn2mf0zp1h3s27dbz8a1nwsxl0mh928hqyn")))) (build-system gnu-build-system) (arguments `(#:test-target "test" ; ‘make check’ silently does nothing #:configure-flags (list ;; For the log file, etc. "--localstatedir=/var") #:phases (modify-phases %standard-phases (add-before 'build 'pre-build (lambda* (#:key inputs #:allow-other-keys #:rest args) ;; Uncommenting the next two lines may assist in debugging ;; (substitute* "docs/man5/Makefile" (("a2x") "a2x -v")) ;; (setenv "XML_DEBUG_CATALOG" "1") #t))))) (native-inputs (list perl)) ; for tests (home-page "https://tinyproxy.github.io/") (synopsis "Light-weight HTTP/HTTPS proxy daemon") (description "Tinyproxy is a light-weight HTTP/HTTPS proxy daemon. Designed from the ground up to be fast and yet small, it is an ideal solution for use cases such as embedded deployments where a full featured HTTP proxy is required, but the system resources for a larger proxy are unavailable.") (license license:gpl2+))) (define-public polipo (package (name "polipo") (version "1.1.1") (source (origin (method url-fetch) (uri (string-append "http://www.pps.univ-paris-diderot.fr/~jch/software/files/polipo/polipo-" version ".tar.gz")) (sha256 (base32 "05g09sg9qkkhnc2mxldm1w1xkxzs2ylybkjzs28w8ydbjc3pand2")))) (native-inputs (list texinfo)) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases (delete 'configure)) #:make-flags (let ((out (assoc-ref %outputs "out"))) (list (string-append "PREFIX=" out) (string-append "LOCAL_ROOT=" out "/share/polipo/www") "CC=gcc")) ;; No 'check' target. #:tests? #f)) (home-page "https://www.pps.univ-paris-diderot.fr/~jch/software/polipo/") (synopsis "Small caching web proxy") (description "Polipo is a small caching web proxy (web cache, HTTP proxy, and proxy server). It was primarily designed to be used by one person or a small group of people.") (license license:expat))) (define-public websockify (package (name "websockify") (version "0.11.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/novnc/websockify") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "0ysqylpyv17s52634wn3vrwf7y9b5ig7fdfv8vwj1272lvv68qgk")))) (build-system pyproject-build-system) (native-inputs (list python-nose2)) (inputs (list python-jwcrypto python-numpy python-redis python-requests ;; TODO: Remove simplejson for versions > 0.11.0. python-simplejson)) (home-page "https://github.com/novnc/websockify") (synopsis "WebSockets support for any application/server") (description "Websockify translates WebSockets traffic to normal socket traffic. Websockify accepts the WebSockets handshake, parses it, and then begins forwarding traffic between the client and the target in both directions.") (license license:lgpl3))) ;; This is a variant of esbuild that builds and installs the nodejs API. ;; Eventually, this should probably be merged with the esbuild package. (define-public esbuild-node (package (inherit esbuild) (name "esbuild-node") (version (package-version esbuild)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/evanw/esbuild") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "09r1xy0kk6c9cpz6q0mxr4why373pwxbm439z2ihq3k1d5kk7x4w")) (modules '((guix build utils))) (snippet ;; Remove prebuilt binaries '(delete-file-recursively "lib/npm/exit0")))) (arguments (list #:import-path "github.com/evanw/esbuild/cmd/esbuild" #:unpack-path "github.com/evanw/esbuild" #:phases #~(modify-phases %standard-phases (add-after 'build 'build-platform (lambda* (#:key unpack-path #:allow-other-keys) (with-directory-excursion (string-append "src/" unpack-path) ;; We're using Node 10, which doesn't have this method. (substitute* "scripts/esbuild.js" (("exports.buildNativeLib" m) (string-append "Object.fromEntries = entries => entries.reduce((result, entry) => (result[entry[0]] = entry[1], result), {});\n" m))) ;; Must be writable. (for-each make-file-writable (find-files "." ".")) (invoke "node" "scripts/esbuild.js" (string-append #$output "/bin/esbuild")) (let ((modules (string-append #$output "/lib/node_modules/esbuild"))) (mkdir-p modules) (copy-recursively "npm/esbuild" modules))))) (replace 'check (lambda* (#:key tests? unpack-path #:allow-other-keys) (when tests? ;; The "Go Race Detector" is only supported on 64-bit ;; platforms, this variable disables it. ;; TODO: Causes too many rebuilds, rewrite to limit to x86_64, ;; aarch64 and ppc64le. #$(if (target-riscv64?) `(setenv "ESBUILD_RACE" "") #~(unless #$(target-64bit?) (setenv "ESBUILD_RACE" ""))) (with-directory-excursion (string-append "src/" unpack-path) (invoke "make" "test-go")))))))) (native-inputs (modify-inputs (package-native-inputs esbuild) (append node))))) (define-public wwwoffle (package (name "wwwoffle") (version "2.9j") (source (origin (method url-fetch) (uri (string-append "https://www.gedanken.org.uk/software/" "wwwoffle/download/wwwoffle-" version ".tgz")) (sha256 (base32 "1ihil1xq9dp21hf108khxbw6f3baq0w5c0j3af038y6lkmad4vdi")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--with-gnutls") #:tests? #f)) ; no test target (native-inputs (list flex)) (inputs `(("gnutls" ,gnutls) ("libcrypt" ,libgcrypt))) (home-page "https://www.gedanken.org.uk/software/wwwoffle/") (synopsis "Caching web proxy optimized for intermittent internet links") (description "WWWOFFLE is a proxy web server that is especially good for intermittent internet links. It can cache HTTP, HTTPS, FTP, and finger protocols, and supports browsing and requesting pages while offline, indexing, modifying pages and incoming and outgoing headers, monitoring pages for changes, and much more.") (license license:gpl2+))) (define-public liboauth (package (name "liboauth") (version "1.0.3") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/liboauth/liboauth-" version ".tar.gz")) (sha256 (base32 "07w1aq8y8wld43wmbk2q8134p3bfkp2vma78mmsfgw2jn1bh3xhd")))) (build-system gnu-build-system) (arguments (list #:configure-flags ''("--enable-nss") #:phases #~(modify-phases %standard-phases (add-after 'unpack 'use-C-unicode-locale (lambda _ (substitute* "tests/commontest.c" (("en_US\\.UTF-8") "C.UTF-8"))))))) (native-inputs (list pkg-config)) (propagated-inputs (list curl nss)) (home-page "https://sourceforge.net/projects/liboauth") (synopsis "C library implementing the OAuth API") (description "liboauth is a collection of C functions implementing the OAuth API. liboauth provides functions to escape and encode strings according to OAuth specifications and offers high-level functionality built on top to sign requests or verify signatures using either NSS or OpenSSL for calculating the hash/signatures.") ;; Source code may be distributed under either license. (license (list license:expat license:gpl2+)))) (define-public libquvi-scripts (package (name "libquvi-scripts") (version "0.4.21") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/quvi/" (version-major+minor version) "/" name "/" name "-" version ".tar.xz")) (sha256 (base32 "0d0giry6bb57pnidymvdl7i5x9bq3ljk3g4bs294hcr5mj3cq0kw")))) (build-system gnu-build-system) (home-page "https://quvi.sourceforge.net/") (synopsis "Media stream URL parser") (description "This package contains support scripts called by libquvi to parse media stream properties.") (license license:lgpl2.1+))) (define-public libquvi (package (name "libquvi") (version "0.4.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/quvi/" (version-major+minor version) "/" name "/" name "-" version ".tar.xz")) (sha256 (base32 "00x9gbmzc5cns0gnfag0hsphcr3cb33vbbb9s7ppvvd6bxz2z1mm")))) (build-system gnu-build-system) (native-inputs (list pkg-config)) (inputs (list curl cyrus-sasl libquvi-scripts lua-5.1 openssl zlib)) (arguments ;; Lua provides no .pc file, so add CFLAGS/LIBS manually. '(#:configure-flags (let ((lua (assoc-ref %build-inputs "lua"))) (list (string-append "liblua_CFLAGS=-I" lua "/include") (string-append "liblua_LIBS=-L" lua "/libs -llua"))))) (home-page "https://quvi.sourceforge.net/") (synopsis "Media stream URL parser") (description "libquvi is a library with a C API for parsing media stream URLs and extracting their actual media files.") (license license:lgpl2.1+))) (define-public quvi (package (name "quvi") (version "0.4.2") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/" name "/" (version-major+minor version) "/" name "/" name "-" version ".tar.xz")) (sha256 (base32 "09lhl6dv5zpryasx7yjslfrcdcqlsbwapvd5lg7w6sm5x5n3k8ci")))) (build-system gnu-build-system) (native-inputs (list pkg-config)) (inputs (list curl libquvi)) (home-page "https://quvi.sourceforge.net/") (synopsis "Media stream URL parser") (description "quvi is a command-line-tool suite to extract media files from streaming URLs. It is a command-line wrapper for the libquvi library.") (license license:lgpl2.1+))) (define-public serf (package (name "serf") (version "1.3.9") (source (origin (method url-fetch) (uri (string-append "mirror://apache/serf/serf-" version ".tar.bz2")) (patches (search-patches "serf-python3.patch")) (sha256 (base32 "1k47gbgpp52049andr28y28nbwh9m36bbb0g8p0aka3pqlhjv72l")))) (build-system scons-build-system) (propagated-inputs (list apr apr-util openssl-1.1)) (inputs (list ;; TODO: Fix build with gss. ;;("gss" ,gss) zlib)) (arguments `(#:scons-flags (list (string-append "APR=" (assoc-ref %build-inputs "apr")) (string-append "APU=" (assoc-ref %build-inputs "apr-util")) (string-append "OPENSSL=" (assoc-ref %build-inputs "openssl")) ;; (string-append "GSSAPI=" (assoc-ref %build-inputs "gss")) (string-append "ZLIB=" (assoc-ref %build-inputs "zlib")) (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases (add-after 'unpack 'scons-propagate-environment (lambda _ ;; By design, SCons does not, by default, propagate ;; environment variables to subprocesses. See: ;; <http://comments.gmane.org/gmane.linux.distributions.nixos/4969> ;; Here, we modify the SConstruct file to arrange for ;; environment variables to be propagated. (substitute* "SConstruct" (("^env = Environment\\(") "env = Environment(ENV=os.environ, ")))) (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)))))) (home-page "https://serf.apache.org/") (synopsis "High-performance asynchronous HTTP client library") (description "serf is a C-based HTTP client library built upon the Apache Portable Runtime (APR) library. It multiplexes connections, running the read/write communication asynchronously. Memory copies and transformations are kept to a minimum to provide high performance operation.") ;; Most of the code is covered by the Apache License, Version 2.0, but the ;; bundled CuTest framework uses a different non-copyleft license. (properties '((release-monitoring-url . "https://serf.apache.org/download"))) (license (list license:asl2.0 (license:non-copyleft "file://test/CuTest-README.txt"))))) (define-public libsass (package (name "libsass") ;; When updating, check whether sassc/libsass-3.5 is still needed. (version "3.6.4") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/sass/libsass") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "0r8lfqvr3rjhjd8r036zd1wc9q17gyiskppcw9m13jks9an7xp4j")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-before 'bootstrap 'set-LIBSASS_VERSION (lambda _ (setenv "LIBSASS_VERSION" ,version) #t))))) (native-inputs (list autoconf automake libtool)) (home-page "https://sass-lang.com/libsass") (synopsis "SASS Compiler, implemented as a C/C++ library") (description "LibSass is a @acronym{SASS,Syntactically awesome style sheets} compiler library designed for portability and efficiency. To actually compile SASS stylesheets, you'll need to use another program that uses this library, @var{sassc} for example.") (license license:expat))) (define-public sassc (package (name "sassc") (version "3.6.2") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/sass/sassc") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "0m7flrs0hz3ivib8kvsgn3d0fgkabqviadkp1dyspa6iibx3gjwd")))) (build-system gnu-build-system) (arguments `(#:make-flags (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out"))) #:tests? #f ; no test suite #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-Makefile (lambda _ (substitute* "Makefile" (("build-shared: \\$\\(RESOURCES\\) \\$\\(OBJECTS\\) \\$\\(LIB_SHARED\\)") "build-shared: $(RESOURCES) $(OBJECTS)") (("\\$\\(SASSC_EXE\\): libsass build") "$(SASSC_EXE): build") (("install: libsass-install-\\$\\(BUILD\\) \\\\") "install: \\")) #t)) ;; This phase fails because… (delete 'bootstrap) ;; …there is no configure script to be generated. (delete 'configure) (add-before 'build 'setup-environment (lambda _ (setenv "BUILD" "shared") (setenv "SASSC_VERSION" ,version) #t))))) (inputs (list libsass)) (synopsis "CSS pre-processor") (description "SassC is a compiler written in C for the CSS pre-processor language known as SASS.") (home-page "https://sass-lang.com/libsass") (license license:expat))) (define-public sassc/libsass-3.5 ;; Newer libsass versions suffor from a memory leak when building (some?) ;; GTK themes <https://github.com/sass/libsass/issues/3033>. (package (inherit sassc) (name "sassc") (inputs (list (package (inherit libsass) (name "libsass") (version "3.5.5") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/sass/libsass") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "0830pjcvhzxh6yixj82x5k5r1xnadjqzi16kp53213icbly0r9ma"))))))) (properties '((hidden? . #t))))) (define-public perl-apache-logformat-compiler (package (name "perl-apache-logformat-compiler") (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 "05xcl7j65vakx7x79jqjikyw0nzf60bc2w6hhc0q5sklxq1ral4l")))) (build-system perl-build-system) (native-inputs (list perl-http-message perl-module-build-tiny perl-test-mocktime perl-try-tiny perl-uri)) (propagated-inputs (list perl-posix-strftime-compiler)) (arguments `(#:tests? #f)) ; TODO: Timezone test failures (home-page "https://metacpan.org/release/Apache-LogFormat-Compiler") (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 license:perl-license))) (define-public perl-authen-sasl (package (name "perl-authen-sasl") (version "2.16") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/G/GB/GBARR/" "Authen-SASL-" version ".tar.gz")) (sha256 (base32 "02afhlrdq5hh5g8b32fa79fqq5i76qzwfqqvfi9zi57h31szl536")))) (build-system perl-build-system) (arguments '(#:phases (modify-phases %standard-phases (add-after 'unpack 'set-env ;; Fix the build with Perl 5.26.0. Try removing this phase for later ;; versions of perl-authen-sasl. (lambda _ (setenv "PERL_USE_UNSAFE_INC" "1") #t))))) (propagated-inputs (list perl-digest-hmac perl-gssapi)) (home-page "https://metacpan.org/release/Authen-SASL") (synopsis "SASL authentication framework") (description "Authen::SASL provides an SASL authentication framework.") (license license:perl-license))) (define-public perl-catalyst-action-renderview (package (name "perl-catalyst-action-renderview") (version "0.16") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/" "Catalyst-Action-RenderView-" version ".tar.gz")) (sha256 (base32 "0j1rrld13cjk7ks92b5hv3xw4rfm2lvmksb4rlzd8mx0a0wj0rc5")))) (build-system perl-build-system) (native-inputs (list perl-http-request-ascgi perl-module-install)) (propagated-inputs (list perl-catalyst-runtime perl-data-visitor perl-mro-compat)) (home-page "https://metacpan.org/release/Catalyst-Action-RenderView") (synopsis "Sensible default Catalyst action") (description "This Catalyst action implements a sensible default end action, which will forward to the first available view.") (license license:perl-license))) (define-public perl-catalyst-action-rest (package (name "perl-catalyst-action-rest") (version "1.21") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/" "Catalyst-Action-REST-" version ".tar.gz")) (sha256 (base32 "086bykggzalbjfk0islac4b48g9s2ypj7y81d6ns1lq0aax1py6c")))) (build-system perl-build-system) (native-inputs (list perl-test-requires perl-module-install)) (propagated-inputs (list perl-catalyst-runtime perl-class-inspector perl-config-general perl-cpanel-json-xs perl-libwww perl-moose perl-mro-compat perl-namespace-autoclean perl-params-validate perl-uri-find perl-xml-simple)) (home-page "https://metacpan.org/release/Catalyst-Action-REST") (synopsis "Automated REST Method Dispatching") (description "This Action handles doing automatic method dispatching for 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 license:perl-license))) (define-public perl-catalyst-authentication-store-dbix-class (package (name "perl-catalyst-authentication-store-dbix-class") (version "0.1506") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/" "Catalyst-Authentication-Store-DBIx-Class-" version ".tar.gz")) (sha256 (base32 "0i5ja7690fs9nhxcij6lw51j804sm8s06m5mvk1n8pi8jljrymvw")))) (build-system perl-build-system) (native-inputs (list perl-catalyst-plugin-authorization-roles perl-catalyst-plugin-session-state-cookie perl-dbd-sqlite perl-module-install perl-test-www-mechanize-catalyst)) (propagated-inputs (list perl-catalyst-runtime perl-catalyst-plugin-authentication perl-dbix-class perl-catalyst-model-dbic-schema)) (home-page "https://metacpan.org/release/Catalyst-Authentication-Store-DBIx-Class") (synopsis "Storage class for Catalyst authentication using DBIx::Class") (description "The Catalyst::Authentication::Store::DBIx::Class class provides access to authentication information stored in a database via DBIx::Class.") (license license:perl-license))) (define-public perl-catalyst-component-instancepercontext (package (name "perl-catalyst-component-instancepercontext") (version "0.001001") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/G/GR/GRODITI/" "Catalyst-Component-InstancePerContext-" version ".tar.gz")) (sha256 (base32 "0wfj4vnn2cvk6jh62amwlg050p37fcwdgrn9amcz24z6w4qgjqvz")))) (build-system perl-build-system) (native-inputs (list perl-module-install)) (propagated-inputs (list perl-catalyst-runtime perl-moose)) (home-page "https://metacpan.org/release/Catalyst-Component-InstancePerContext") (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 license:perl-license))) (define-public perl-catalyst-devel (package (name "perl-catalyst-devel") (version "1.42") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/" "Catalyst-Devel-" version ".tar.gz")) (sha256 (base32 "1gcaqivyxwsdq87v9za1ijjibh6llirzqsbpwjbw1f5mravg1iky")))) (build-system perl-build-system) (native-inputs (list perl-file-sharedir-install perl-test-fatal)) (propagated-inputs (list perl-catalyst-action-renderview perl-catalyst-plugin-configloader perl-catalyst-plugin-static-simple perl-catalyst-runtime perl-config-general perl-file-changenotify perl-file-copy-recursive perl-file-sharedir perl-module-install perl-moose perl-moosex-emulate-class-accessor-fast perl-namespace-autoclean perl-namespace-clean perl-path-class perl-template-toolkit)) (home-page "https://metacpan.org/release/Catalyst-Devel") (synopsis "Catalyst Development Tools") (description "The Catalyst-Devel distribution includes a variety of modules useful for the development of Catalyst applications, but not required 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 license:perl-license))) (define-public perl-catalyst-dispatchtype-regex (package (name "perl-catalyst-dispatchtype-regex") (version "5.90035") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/M/MG/MGRIMES/" "Catalyst-DispatchType-Regex-" version ".tar.gz")) (sha256 (base32 "06jq1lmpq88rmp9zik5gqczg234xac0hiyc3l698iif7zsgcyb80")))) (build-system perl-build-system) (native-inputs (list perl-module-build ;needs Module::Build >= 0.4004 perl-namespace-autoclean perl-catalyst-runtime)) (propagated-inputs (list perl-moose perl-text-simpletable)) (home-page "https://metacpan.org/release/Catalyst-DispatchType-Regex") (synopsis "Regex DispatchType for Catalyst") (description "Dispatch type managing path-matching behaviour using regexes. Regex dispatch types have been deprecated and removed from Catalyst 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 license:perl-license))) (define-public perl-catalyst-model-dbic-schema (package (name "perl-catalyst-model-dbic-schema") (version "0.65") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/G/GB/GBJK/" "Catalyst-Model-DBIC-Schema-" version ".tar.gz")) (sha256 (base32 "1spfjcjc0b9dv3k2gbanqj1m1cqzyxb32p76dhdwizzpbvpi3a96")))) (build-system perl-build-system) (native-inputs (list perl-dbd-sqlite perl-module-install perl-test-exception perl-test-requires)) (propagated-inputs (list perl-carp-clan perl-catalyst-component-instancepercontext perl-catalyst-runtime perl-catalystx-component-traits perl-dbix-class perl-dbix-class-cursor-cached perl-dbix-class-schema-loader perl-hash-merge perl-list-moreutils perl-module-runtime perl-moose perl-moosex-markasmethods perl-moosex-nonmoose perl-moosex-types perl-moosex-types-loadableclass perl-namespace-autoclean perl-namespace-clean perl-tie-ixhash perl-try-tiny)) (home-page "https://metacpan.org/release/Catalyst-Model-DBIC-Schema") (synopsis "DBIx::Class::Schema Model Class") (description "This is a Catalyst Model for DBIx::Class::Schema-based Models.") (license license:perl-license))) (define-public perl-catalyst-plugin-accesslog (package (name "perl-catalyst-plugin-accesslog") (version "1.10") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/A/AR/ARODLAND/" "Catalyst-Plugin-AccessLog-" version ".tar.gz")) (sha256 (base32 "0811rj45q4v2y8wka3wb9d5m4vbyhcmkvddf2wz4x69awzjbhgc7")))) (build-system perl-build-system) (propagated-inputs (list perl-catalyst-runtime perl-datetime perl-moose perl-namespace-autoclean)) (home-page "https://metacpan.org/release/Catalyst-Plugin-AccessLog") (synopsis "Request logging from within Catalyst") (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 license:perl-license))) (define-public perl-catalyst-plugin-authentication (package (name "perl-catalyst-plugin-authentication") (version "0.10023") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/" "Catalyst-Plugin-Authentication-" version ".tar.gz")) (sha256 (base32 "0v6hb4r1wv3djrnqvnjcn3xx1scgqzx8nyjdg9lfc1ybvamrl0rn")))) (build-system perl-build-system) (native-inputs (list perl-module-install)) (propagated-inputs (list perl-catalyst-plugin-session perl-catalyst-runtime perl-class-inspector perl-moose perl-moosex-emulate-class-accessor-fast perl-mro-compat perl-namespace-autoclean perl-string-rewriteprefix perl-test-exception perl-try-tiny)) (home-page "https://metacpan.org/release/Catalyst-Plugin-Authentication") (synopsis "Infrastructure plugin for the Catalyst authentication framework") (description "The authentication plugin provides generic user support for 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 license:perl-license))) (define-public perl-catalyst-plugin-authorization-roles (package (name "perl-catalyst-plugin-authorization-roles") (version "0.09") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/" "Catalyst-Plugin-Authorization-Roles-" version ".tar.gz")) (sha256 (base32 "0l83lkwmq0lngwh8b1rv3r719pn8w1gdbyhjqm74rnd0wbjl8h7f")))) (build-system perl-build-system) (native-inputs (list perl-module-install perl-test-exception)) (propagated-inputs (list perl-catalyst-plugin-authentication perl-catalyst-runtime perl-set-object perl-universal-isa)) (home-page "https://metacpan.org/release/Catalyst-Plugin-Authorization-Roles") (synopsis "Role-based authorization for Catalyst") (description "Catalyst::Plugin::Authorization::Roles provides role-based authorization for Catalyst based on Catalyst::Plugin::Authentication.") (license license:perl-license))) (define-public perl-catalyst-plugin-captcha (package (name "perl-catalyst-plugin-captcha") (version "0.04") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/D/DI/DIEGOK/" "Catalyst-Plugin-Captcha-" version ".tar.gz")) (sha256 (base32 "0llyj3v5nx9cx46jdbbvxf1lc9s9cxq5ml22xmx3wkb201r5qgaa")))) (build-system perl-build-system) (propagated-inputs (list perl-catalyst-plugin-session perl-catalyst-runtime perl-gd-securityimage perl-http-date)) (home-page "https://metacpan.org/release/Catalyst-Plugin-Captcha") (synopsis "Captchas for Catalyst") (description "This plugin creates and validates Captcha images for Catalyst.") (license license:perl-license))) (define-public perl-catalyst-plugin-configloader (package (name "perl-catalyst-plugin-configloader") (version "0.35") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/" "Catalyst-Plugin-ConfigLoader-" version ".tar.gz")) (sha256 (base32 "0w8r3bbxqnlykvra6sx3sh3wh8ylkj914xg5ql6nw11ddy56jaly")))) (build-system perl-build-system) (native-inputs (list perl-path-class perl-module-install)) (propagated-inputs (list perl-catalyst-runtime perl-config-any perl-data-visitor perl-mro-compat)) (home-page "https://metacpan.org/release/Catalyst-Plugin-ConfigLoader") (synopsis "Load config files of various types") (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 license:perl-license))) (define-public perl-catalyst-plugin-session (package (name "perl-catalyst-plugin-session") (version "0.41") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/" "Catalyst-Plugin-Session-" version ".tar.gz")) (sha256 (base32 "0a451997zc2vjx7rvndgx1ldbrpic8sfbddyvncynh0zr8bhlqc5")))) (build-system perl-build-system) (native-inputs (list perl-module-install perl-test-deep perl-test-exception)) (propagated-inputs (list perl-catalyst-runtime perl-moose perl-moosex-emulate-class-accessor-fast perl-mro-compat perl-namespace-clean perl-object-signature perl-test-www-mechanize-psgi)) (home-page "https://metacpan.org/release/Catalyst-Plugin-Session") (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 license:perl-license))) (define-public perl-catalyst-plugin-session-state-cookie (package (name "perl-catalyst-plugin-session-state-cookie") (version "0.17") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/M/MS/MSTROUT/" "Catalyst-Plugin-Session-State-Cookie-" version ".tar.gz")) (sha256 (base32 "1rvxbfnpf9x2pc2zgpazlcgdlr2dijmxgmcs0m5nazs0w6xikssb")))) (build-system perl-build-system) (native-inputs (list perl-module-install)) (propagated-inputs (list perl-catalyst-plugin-session perl-catalyst-runtime perl-moose perl-mro-compat perl-namespace-autoclean)) (home-page "https://metacpan.org/release/Catalyst-Plugin-Session-State-Cookie") (synopsis "Maintain session IDs using cookies") (description "In order for Catalyst::Plugin::Session to work, the session 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 license:perl-license))) (define-public perl-catalyst-plugin-session-store-fastmmap (package (name "perl-catalyst-plugin-session-store-fastmmap") (version "0.16") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/" "Catalyst-Plugin-Session-Store-FastMmap-" version ".tar.gz")) (sha256 (base32 "0x3j6zv3wr41jlwr6yb2jpmcx019ibyn11y8653ffnwhpzbpzsxs")))) (build-system perl-build-system) (propagated-inputs (list perl-cache-fastmmap perl-catalyst-plugin-session perl-catalyst-runtime perl-moosex-emulate-class-accessor-fast perl-mro-compat perl-path-class)) (home-page "https://metacpan.org/release/Catalyst-Plugin-Session-Store-FastMmap") (synopsis "FastMmap session storage backend") (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 license:perl-license))) (define-public perl-catalyst-plugin-stacktrace (package (name "perl-catalyst-plugin-stacktrace") (version "0.12") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/" "Catalyst-Plugin-StackTrace-" version ".tar.gz")) (sha256 (base32 "1b2ksz74cpigxqzf63rddar3vfmnbpwpdcbs11v0ml89pb8ar79j")))) (build-system perl-build-system) (native-inputs (list perl-module-install)) (propagated-inputs (list perl-catalyst-runtime perl-devel-stacktrace perl-mro-compat)) (home-page "https://metacpan.org/release/Catalyst-Plugin-StackTrace") (synopsis "Stack trace on the Catalyst debug screen") (description "This plugin enhances the standard Catalyst debug screen by 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 license:perl-license))) (define-public perl-catalyst-plugin-static-simple (package (name "perl-catalyst-plugin-static-simple") (version "0.36") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/" "Catalyst-Plugin-Static-Simple-" version ".tar.gz")) (sha256 (base32 "0m4l627p2fvzr4i6sgdxhdvsx4wpa6qmaibsbxlg5x5yjs7k7drn")))) (build-system perl-build-system) (native-inputs (list perl-module-install)) (propagated-inputs (list perl-catalyst-runtime perl-mime-types perl-moose perl-moosex-types perl-namespace-autoclean)) (home-page "https://metacpan.org/release/Catalyst-Plugin-Static-Simple") (synopsis "Simple serving of static pages") (description "The Static::Simple plugin is designed to make serving static content in your application during development quick and easy, without requiring a single line of code from you. This plugin detects static files by 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 license:perl-license))) (define-public perl-catalyst-runtime (package (name "perl-catalyst-runtime") (version "5.90124") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/" "Catalyst-Runtime-" version ".tar.gz")) (sha256 (base32 "001yk1i0xwn4v308qx15nvnp6v9qfdigdlvz1rgw5zpnq7kwnq1a")))) (build-system perl-build-system) (native-inputs (list perl-test-fatal)) (propagated-inputs (list perl-cgi-simple perl-cgi-struct perl-class-c3-adopt-next perl-class-date perl-class-load perl-data-dump perl-http-body perl-http-message perl-json-maybexs perl-libwww perl-module-pluggable perl-moose perl-moosex-emulate-class-accessor-fast perl-moosex-getopt perl-moosex-methodattributes perl-namespace-clean perl-path-class perl-perlio-utf8_strict perl-plack perl-plack-middleware-fixmissingbodyinredirect perl-plack-middleware-methodoverride perl-plack-middleware-removeredundantbody perl-plack-middleware-reverseproxy perl-plack-test-externalserver perl-safe-isa perl-string-rewriteprefix perl-text-simpletable perl-tree-simple perl-tree-simple-visitorfactory perl-try-tiny perl-uri perl-uri-ws)) (home-page "https://metacpan.org/release/Catalyst-Runtime") (synopsis "The Catalyst Framework Runtime") (description "Catalyst is a modern framework for making web applications. 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 license:perl-license))) (define-public perl-catalyst-traitfor-request-proxybase (package (name "perl-catalyst-traitfor-request-proxybase") (version "0.000005") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/" "Catalyst-TraitFor-Request-ProxyBase-" version ".tar.gz")) (sha256 (base32 "02kir63d5cs2ipj3fn1qlmmx3gqi1xqzrxfr4pv5vjhjgsm0zgx7")))) (build-system perl-build-system) (native-inputs (list perl-catalyst-runtime perl-catalystx-roleapplicator perl-http-message perl-module-install)) (propagated-inputs (list perl-moose perl-namespace-autoclean perl-uri)) (home-page "https://metacpan.org/release/Catalyst-TraitFor-Request-ProxyBase") (synopsis "Replace request base with value passed by HTTP proxy") (description "This module is a Moose::Role which allows you more 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 license:perl-license))) (define-public perl-catalyst-view-download (package (name "perl-catalyst-view-download") (version "0.09") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/G/GA/GAUDEON/" "Catalyst-View-Download-" version ".tar.gz")) (sha256 (base32 "1qgq6y9iwfbhbkbgpw9czang2ami6z8jk1zlagrzdisy4igqzkvs")))) (build-system perl-build-system) (native-inputs (list perl-catalyst-runtime perl-module-install perl-test-simple perl-test-www-mechanize-catalyst perl-text-csv perl-xml-simple)) (home-page "https://metacpan.org/release/Catalyst-View-Download") (synopsis "Download data in many formats") (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 license:perl-license))) (define-public perl-catalyst-view-json (package (name "perl-catalyst-view-json") (version "0.37") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/" "Catalyst-View-JSON-" version ".tar.gz")) (sha256 (base32 "1v4xkzazs743sc7cd1kxkbi99cf00a4dadyyancckcbpi9p3znn5")))) (build-system perl-build-system) (native-inputs (list perl-module-install perl-yaml)) (inputs (list perl-catalyst-runtime perl-json-maybexs perl-mro-compat)) (home-page "https://metacpan.org/release/Catalyst-View-JSON") (synopsis "Catalyst JSON view") (description "Catalyst::View::JSON is a Catalyst View handler that returns stash data in JSON format.") (license license:perl-license))) (define-public perl-catalyst-view-tt (package (name "perl-catalyst-view-tt") (version "0.45") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/" "Catalyst-View-TT-" version ".tar.gz")) (sha256 (base32 "0jzgpkgq5pwq82zlb0nykdyk40dfpsyn9ilz91d0wpixgi9i5pr8")))) (build-system perl-build-system) (propagated-inputs (list perl-catalyst-runtime perl-class-accessor perl-data-dump perl-mro-compat perl-path-class perl-template-timer perl-template-toolkit)) (home-page "https://metacpan.org/release/Catalyst-View-TT&