>From a7f0c26705aad362acc35e632bed2dcc9e32d004 Mon Sep 17 00:00:00 2001 From: swedebugia Date: Wed, 2 Jan 2019 23:47:07 +0100 Subject: [PATCH] gnu: artanis: Move to web.scm and update to 0.3.1. * gnu/packages/guile.scm (artanis): Move from here... * gnu/packages/web.scm (artanis): To here and Update to 0.3.1. --- gnu/packages/guile.scm | 360 +++++++++++++++++++++++++++++++---------- gnu/packages/web.scm | 95 +++++++++++ 2 files changed, 368 insertions(+), 87 deletions(-) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 07b568ee7..998090c75 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -527,93 +527,6 @@ program can be installed in one go.") ;;; Extensions. ;;; -(define-public artanis - (let ((release "0.2.1") - (revision 3)) - (package - (name "artanis") - (version (if (zero? revision) - release - (string-append release "-" - (number->string revision)))) - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/artanis/artanis-" - release ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "041ajcg2pz918kd9iqcj4inpzddc3impvz3r2nhlpbv8zrz011hn")) - (modules '((guix build utils))) - (snippet - '(begin - (delete-file-recursively "artanis/third-party/json.scm") - (delete-file-recursively "artanis/third-party/json") - (substitute* '("artanis/artanis.scm" - "artanis/oht.scm") - (("(#:use-module \\()artanis third-party (json\\))" _ - use-module json) - (string-append use-module json))) - (substitute* "artanis/oht.scm" - (("([[:punct:][:space:]]+)(->json-string)([[:punct:][:space:]]+)" - _ pre json-string post) - (string-append pre - "scm" json-string - post))) - (substitute* "artanis/artanis.scm" - (("[[:punct:][:space:]]+->json-string[[:punct:][:space:]]+") - "")) - #t)))) - (build-system gnu-build-system) - ;; TODO: Add guile-dbi and guile-dbd optional dependencies. - (inputs `(("guile" ,guile-2.2) - ("guile-json" ,guile-json))) - (native-inputs `(("bash" ,bash) ;for the `source' builtin - ("pkgconfig" ,pkg-config) - ("util-linux" ,util-linux))) ;for the `script' command - (arguments - '(#:make-flags - ;; TODO: The documentation must be built with the `docs' target. - (let* ((out (assoc-ref %outputs "out")) - (scm (string-append out "/share/guile/site/2.2")) - (go (string-append out "/lib/guile/2.2/site-ccache"))) - ;; Don't use (%site-dir) for site paths. - (list (string-append "MOD_PATH=" scm) - (string-append "MOD_COMPILED_PATH=" go))) - #:test-target "test" - #:phases - (modify-phases %standard-phases - (add-before 'install 'substitute-root-dir - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* "Makefile" ;ignore the execution of bash.bashrc - ((" /etc/bash.bashrc") " /dev/null")) - (substitute* "Makefile" ;set the root of config files to OUT - ((" /etc") (string-append " " out "/etc"))) - (mkdir-p (string-append out "/bin")) ;for the `art' executable - #t))) - (add-after 'install 'wrap-art - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (scm (string-append out "/share/guile/site/2.2")) - (go (string-append out "/lib/guile/2.2/site-ccache"))) - (wrap-program (string-append bin "/art") - `("GUILE_LOAD_PATH" ":" prefix (,scm)) - `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,go))) - #t)))))) - (synopsis "Web application framework written in Guile") - (description "GNU Artanis is a web application framework written in Guile -Scheme. A web application framework (WAF) is a software framework that is -designed to support the development of dynamic websites, web applications, web -services and web resources. The framework aims to alleviate the overhead -associated with common activities performed in web development. Artanis -provides several tools for web development: database access, templating -frameworks, session management, URL-remapping for RESTful, page caching, and -more.") - (home-page "https://www.gnu.org/software/artanis/") - (license (list license:gpl3+ license:lgpl3+))))) ;dual license - (define-public guile-reader (package (name "guile-reader") @@ -629,6 +542,13 @@ more.") (native-inputs `(("pkgconfig" ,pkg-config) ("gperf" ,gperf-3.0))) (inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "Framework for building readers for GNU Guile") (description "Guile-Reader is a simple framework for building readers for GNU Guile. @@ -684,6 +604,13 @@ many readers as needed).") (format #f "\"~a/lib/guile/2.2/libguile-ncurses\"" out))) #t))))))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://www.gnu.org/software/guile-ncurses/") (synopsis "Guile bindings to ncurses") (description @@ -815,6 +742,13 @@ format is also supported.") (inputs `(("guile" ,guile-2.2))) (propagated-inputs `(("guile-config" ,guile-config))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "Guile project tooling") (description "Hall is a command-line application and a set of Guile libraries that @@ -848,6 +782,13 @@ provides tight coupling to Guix.") ("pkg-config" ,pkg-config))) (inputs `(("guile" ,guile-2.2) ("which" ,which))) (propagated-inputs `(("guile-lib" ,guile-lib))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://github.com/artyom-poptsov/guile-ics") (synopsis "Guile parser library for the iCalendar format") (description @@ -885,6 +826,13 @@ $(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")) #t))))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://www.nongnu.org/guile-lib/") (synopsis "Collection of useful Guile Scheme modules") (description @@ -920,6 +868,13 @@ for Guile\".") (native-inputs `(("pkg-config" ,pkg-config) ("guile" ,guile-2.2))) (inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "JSON module for Guile") (description "Guile-JSON supports parsing and building JSON documents according to the @@ -957,6 +912,13 @@ specification. These are the main features: (build-system guile-build-system) (native-inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://github.com/ijp/minikanren") (synopsis "MiniKanren declarative logic system, packaged for Guile") (description @@ -995,6 +957,13 @@ See http://minikanren.org/ for more on miniKanren generally.") (build-system guile-build-system) (native-inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://github.com/fisherdj/miniAdapton") (synopsis "Minimal implementation of incremental computation in Guile Scheme") @@ -1039,6 +1008,13 @@ understand, extend, and port to host languages other than Scheme.") #:source-directory "src")) (native-inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "http://synthcode.com/scheme/irregex") (synopsis "S-expression based regular expressions") (description @@ -1095,6 +1071,13 @@ inspired by the SCSH regular expression system.") `(("guile" ,guile-2.2))) (inputs `(("gdbm" ,gdbm))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://github.com/ijp/guile-gdbm") (synopsis "Guile bindings to the GDBM library via Guile's FFI") (description @@ -1130,6 +1113,13 @@ Guile's foreign function interface.") (inputs `(("guile" ,guile-2.2) ("sqlite" ,sqlite))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "Access SQLite databases from Guile") (description "This package provides Guile bindings to the SQLite database system.") @@ -1195,6 +1185,13 @@ Guile's foreign function interface.") (propagated-inputs `(("guile-reader" ,guile-reader) ("guile-commonmark" ,guile-commonmark))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "Functional static site generator") (description "Haunt is a static site generator written in Guile Scheme. Haunt features a functional build system and an extensible @@ -1227,6 +1224,13 @@ interface for reading articles in any format.") ("pkg-config" ,pkg-config) ("texinfo" ,texinfo))) (inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "Guile application configuration parsing library.") (description @@ -1258,6 +1262,13 @@ above command-line parameters.") ("automake" ,automake) ("pkg-config" ,pkg-config) ("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "Redis client library for Guile") (description "Guile-redis provides a Scheme interface to the Redis key-value cache and store.") @@ -1336,6 +1347,13 @@ key-value cache and store.") (native-inputs `(("python" ,python) ("pkg-config" ,pkg-config))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "Whitespace to lisp syntax for Guile") (description "Wisp is a syntax for Guile which provides a Python-like whitespace-significant language. It may be easier on the eyes for some @@ -1388,6 +1406,13 @@ users and in some situations.") ("gsl" ,gsl) ("freeimage" ,freeimage) ("mesa" ,mesa))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "2D/3D game engine for GNU Guile") (description "Sly is a 2D/3D game engine written in Guile Scheme. Sly features a functional reactive programming interface and live coding @@ -1425,6 +1450,13 @@ capabilities.") (("guilemoduledir =.*guile/site" all) (string-append all "/@GUILE_EFFECTIVE_VERSION@"))) #t)))))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "Generate C bindings for Guile") (description "G-Wrap is a tool and Guile library for generating function wrappers for inter-language calls. It currently only supports generating Guile @@ -1468,6 +1500,13 @@ provides access to that interface and its types from the Scheme level.") `(("guile-dbd-sqlite3" ,guile-dbd-sqlite3))) ; only shared library, no scheme files (propagated-inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "Guile database abstraction layer") (home-page "http://home.gna.org/guile-dbi/guile-dbi.html") (description @@ -1550,6 +1589,13 @@ $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) "guilesitedir = \ $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) #t))))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://github.com/artyom-poptsov/guile-dsv") (synopsis "DSV module for Guile") (description @@ -1579,6 +1625,13 @@ Unix-style DSV format and RFC 4180 format.") ("libxext" ,libxext) ("libxinerama" ,libxinerama) ("xosd" ,xosd))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://github.com/alezost/guile-xosd") (synopsis "XOSD bindings for Guile") (description @@ -1604,6 +1657,13 @@ library}.") `(("pkg-config" ,pkg-config))) (inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://github.com/alezost/guile-daemon") (synopsis "Evaluate code in a running Guile process") (description @@ -1629,6 +1689,13 @@ you send to a FIFO file.") `(("guile" ,guile-2.2))) (native-inputs `(("pkg-config" ,pkg-config))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "CommonMark parser for Guile") (description "guile-commonmark is a library for parsing CommonMark, a fully specified @@ -1661,6 +1728,13 @@ is no support for parsing block and inline level HTML.") `(("pkg-config" ,pkg-config))) (inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://github.com/TaylanUB/scheme-bytestructures") (synopsis "Structured access to bytevector contents for Guile") (description @@ -1707,6 +1781,13 @@ $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("guile" ,guile-2.2) ("aspell" ,aspell))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://github.com/spk121/guile-aspell") (synopsis "Spell-checking from Guile") (description @@ -1807,6 +1888,13 @@ and then run @command{scm example.scm}.") ;; quiet warnings (setenv "GUILE_AUTO_COMPILE" "0") #t))))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://gnu.org/s/8sync/") (synopsis "Asynchronous actor model library for Guile") (description @@ -1847,6 +1935,13 @@ Note that 8sync is only available for Guile 2.2.") ("pkg-config" ,pkg-config))) (inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "Lightweight concurrency facility for Guile") (description "Fibers is a Guile library that implements a a lightweight concurrency @@ -1886,6 +1981,13 @@ is not available for Guile 2.0.") ("libgit2" ,libgit2))) (propagated-inputs `(("guile-bytestructures" ,guile-bytestructures))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "Guile bindings for libgit2") (description "This package provides Guile bindings to libgit2, a library to @@ -1913,6 +2015,13 @@ manipulate repositories of the Git version control system.") `(("pkg-config" ,pkg-config))) (inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "General-purpose syntax highlighter for GNU Guile") (description "Guile-syntax-highlight is a general-purpose syntax highlighting library for GNU Guile. It can parse code written in various @@ -1939,6 +2048,13 @@ HTML (via SXML) or any other format for rendering.") ("pkg-config" ,pkg-config))) (inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://gitlab.com/dustyweb/guile-sjson") (synopsis "S-expression based json reader/writer for Guile") (description "guile-sjson is a json reader/writer for Guile. @@ -1960,6 +2076,13 @@ It has a nice, simple s-expression based syntax.") (build-system guile-build-system) (native-inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://github.com/NalaGinrut/guile-colorized") (synopsis "Colorized REPL for Guile") (description @@ -2018,6 +2141,13 @@ It has a nice, simple s-expression based syntax.") #t))))) (native-inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "Purely functional data structures for Guile") (description "This package provides purely functional data structures written in R6RS @@ -2051,6 +2181,13 @@ Vicare Scheme and IronScheme. Right now it contains: "0044c105r3q9vpl17pv3phl1b79kjm1llhkakqgiasixyav01blh")))) (build-system guile-build-system) (native-inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) ;; https://savannah.nongnu.org/projects/guile-aa-tree (home-page "https://qlfiles.net/guile-aa-tree/") (synopsis "AA tree data structure for Guile") @@ -2093,6 +2230,13 @@ convenient nested tree operations.") `(("guile" ,guile-2.2))) (inputs `(("zeromq" ,zeromq))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://github.com/jerry40/guile-simple-zmq") (synopsis "Guile wrapper over ZeroMQ library") (description @@ -2182,6 +2326,13 @@ messaging library.") ("guile" ,guile-2.2) ("guile-json" ,guile-json) ("guile-simple-zmq" ,guile-simple-zmq))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "Guile kernel for the Jupyter Notebook") (description "This package provides a Guile 2.x kernel for the Jupyter Notebook. It @@ -2206,6 +2357,13 @@ allows users to interact with the Guile REPL through Jupyter.") `(("pkg-config" ,pkg-config))) (inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://github.com/roelj/guile-sparql") (synopsis "SPARQL module for Guile") (description "This package provides the functionality to query a SPARQL @@ -2233,6 +2391,13 @@ using S-expressions.") (native-inputs `(("guile" ,guile-2.2) ("pkg-config" ,pkg-config))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://savannah.gnu.org/projects/guile-debbugs/") (synopsis "Guile interface to the Debbugs bug tracking service") (description @@ -2263,6 +2428,13 @@ tracker's SOAP service, such as @url{https://bugs.gnu.org}.") ("automake" ,automake))) (inputs `(("guile" ,guile-2.2))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://git.systemreboot.net/guile-email") (synopsis "Guile email parser") (description "This package provides an email parser written in pure @@ -2321,6 +2493,13 @@ Guile.") `(("autoconf" ,autoconf) ("automake" ,automake) ("pkg-config" ,pkg-config))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (synopsis "Guile bindings to Newt") (description "This package provides bindings for Newt, a programming library for @@ -2351,6 +2530,13 @@ Scheme by using Guile’s foreign function interface.") `(("guile" ,guile-2.2) ("gnutls" ,gnutls) ("guile-json" ,guile-json))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site/2.2"))) + (search-path-specification + (variable "GUILE_LOAD_COMPILED_PATH") + (files '("lib/guile/2.2/site-ccache"))))) (home-page "https://framagit.org/prouby/guile-mastodon") (synopsis "Guile Mastodon REST API module") (description "This package provides Guile modules to access the diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 84bd795a8..28ce26223 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -67,6 +67,7 @@ #:use-module (gnu packages admin) #:use-module (gnu packages adns) #:use-module (gnu packages apr) + #:use-module (gnu packages bash) #:use-module (gnu packages check) #:use-module (gnu packages cran) #:use-module (gnu packages documentation) @@ -6878,3 +6879,97 @@ instructions on how to use Guix in a shared HPC environment.") "This package provides UI widget and layout functions for writing Shiny apps that work well on small screens.") (license l:gpl3))) + +(define-public artanis + (let ((release "0.3.1") + (revision 3)) + (package + (name "artanis") + (version (if (zero? revision) + release + (string-append release "-" + (number->string revision)))) + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/artanis/artanis-" + release ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0hqr5m3mb558bdhkc2sadmd9cbrhp3y525wx7cwirgy6i0zmay68")) + (modules '((guix build utils))) + (snippet + '(begin + (delete-file-recursively "artanis/third-party/json.scm") + (delete-file-recursively "artanis/third-party/json") + (substitute* '("artanis/artanis.scm" + "artanis/lpc.scm" + "artanis/oht.scm") + (("(#:use-module \\()artanis third-party (json\\))" _ + use-module json) + (string-append use-module json))) + (substitute* "artanis/oht.scm" + (("([[:punct:][:space:]]+)(->json-string)([[:punct:][:space:]]+)" + _ pre json-string post) + (string-append pre + "scm" json-string + post))) + (substitute* "artanis/artanis.scm" + (("[[:punct:][:space:]]+->json-string[[:punct:][:space:]]+") + "")) + #t)))) + (build-system gnu-build-system) + ;; TODO replace bundled csv with guile-csv + ;; TODO: Add guile-dbi and guile-dbd optional dependencies. + (inputs `(("guile" ,guile-2.2) + ("guile-json" ,guile-json))) + (native-inputs `(("bash" ,bash) ;for the `source' builtin + ("pkgconfig" ,pkg-config) + ("util-linux" ,util-linux))) ;for the `script' command + (arguments + '(#:make-flags + ;; TODO: The documentation must be built with the `docs' target. + (let* ((out (assoc-ref %outputs "out")) + (scm (string-append out "/share/guile/site/2.2")) + (go (string-append out "/lib/guile/2.2/site-ccache"))) + ;; Don't use (%site-dir) for site paths. + (list (string-append "MOD_PATH=" scm) + (string-append "MOD_COMPILED_PATH=" go))) + #:test-target "test" + #:phases + (modify-phases %standard-phases + (add-before 'install 'substitute-root-dir + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "Makefile" ;ignore the execution of bash.bashrc + ((" /etc/bash.bashrc") " /dev/null")) + (substitute* "Makefile" ;set the root of config files to OUT + ((" /etc") (string-append " " out "/etc"))) + (mkdir-p (string-append out "/bin")) ;for the `art' executable + #t))) + (add-after 'install 'wrap-art + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (scm (string-append out "/share/guile/site/2.2")) + (go (string-append out "/lib/guile/2.2/site-ccache"))) + (wrap-program (string-append bin "/art") + `("GUILE_LOAD_PATH" ":" prefix (,scm)) + `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,go))) + #t))) + (delete 'strip)))) + (native-search-paths + (list (search-path-specification + (variable "GUILE_LOAD_PATH") + (files '("share/guile/site"))))) + (synopsis "Web application framework written in Guile") + (description "GNU Artanis is a web application framework written in Guile +Scheme. A web application framework (WAF) is a software framework that is +designed to support the development of dynamic websites, web applications, web +services and web resources. The framework aims to alleviate the overhead +associated with common activities performed in web development. Artanis +provides several tools for web development: database access, templating +frameworks, session management, URL-remapping for RESTful, page caching, and +more.") + (home-page "https://www.gnu.org/software/artanis/") + (license (list l:gpl3+ l:lgpl3+))))) ;dual license -- 2.19.2