宋文武 <iyzs...@gmail.com> writes: > * gnu/packages/web.scm (uwsgi): New variable. > --- > gnu/packages/web.scm | 73 > ++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 73 insertions(+) > > diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm > index 516e623..53ab1a6 100644 > --- a/gnu/packages/web.scm > +++ b/gnu/packages/web.scm > @@ -7,6 +7,7 @@ > ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayi...@gmail.com> > ;;; Copyright © 2015, 2016 Eric Bavier <bav...@member.fsf.org> > ;;; Copyright © 2015 Eric Dvorsak <e...@dvorsak.fr> > +;;; Copyright © 2016 Sou Bunnbu <iyzs...@gmail.com> > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -3109,3 +3110,75 @@ callback or connection interfaces.") > "Gumbo is an implementation of the HTML5 parsing algorithm implemented > as > a pure C99 library.") > (license l:asl2.0))) > + > +(define-public uwsgi > + (package > + (name "uwsgi") > + (version "2.0.12") > + (source (origin > + (method url-fetch) > + (uri (string-append "http://projects.unbit.it/downloads/uwsgi-" > + version ".tar.gz")) > + (sha256 > + (base32 > + "02g46dnw5j1iw8fsq392bxbk8d21b9pdgb3ypcinv3b4jzdm2srh")))) > + (build-system gnu-build-system) > + (outputs '("out" "python")) > + (arguments > + '(;; XXX: The 'check' target runs cppcheck to do static code analysis. > + ;; But there is no obvious way to run the real tests. > + #:tests? #f > + #:phases > + (modify-phases %standard-phases > + (replace 'configure > + ;; Configuration is done by writting an ini file.
Should be “writing” not “writting”. > + (lambda* (#:key outputs #:allow-other-keys) > + (let* ((out (assoc-ref outputs "out")) > + (bindir (string-append out "/bin")) > + (plugindir (string-append out "/lib/uwsgi"))) > + ;; The build phase outputs files to these directories > directly. > + (mkdir-p bindir) > + (mkdir-p plugindir) > + ;; XXX: Enable other plugins. > + (call-with-output-file "buildconf/guix.ini" > + (lambda (port) > + (format port "[uwsgi] > +yaml = libyaml > +bin_name = ~a/uwsgi > +plugin_dir = ~a > + > +inherit = base > +plugins = cgi,python > +embedded_plugins = > +" bindir plugindir)))) > + (setenv "PROFILE" "guix") > + #t)) > + (replace 'install > + ;; Move plugins into their own output. > + (lambda* (#:key outputs #:allow-other-keys) > + (let* ((out (assoc-ref outputs "out")) > + (plugindir (string-append out "/lib/uwsgi")) > + (python-plugin (string-append > + plugindir "/python_plugin.so"))) > + (install-file python-plugin > + (string-append > + (assoc-ref outputs "python") "/lib/uwsgi")) > + (delete-file python-plugin) > + #t)))))) Is there any other reference to Python outside of this plugin? > + (native-inputs > + `(("pkg-config" ,pkg-config) > + ("python" ,python-wrapper))) Should Python by among the regular inputs when it’s used by the Python plugin? > + (inputs > + `(("jansson" ,jansson) > + ("libxml2" ,libxml2) > + ("libyaml" ,libyaml) > + ("openssl" ,openssl) > + ("pcre" ,pcre) > + ("zlib" ,zlib))) > + (home-page "https://uwsgi-docs.readthedocs.org/") > + (synopsis "Application container server") > + (description > + "uWSGI presents a complete stack for networked/clustered web > applications, > +implementing message/object passing, caching, RPC and process management. > +It uses the uwsgi protocol for all the networking/interprocess > communications.") > + (license l:gpl2+))) ; with linking exception The rest looks good to me. Thanks! ~~ Ricardo