[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#27590: artanis has a bundled and customized copy of guile-json packa
From: |
Adonay Felipe Nogueira |
Subject: |
bug#27590: artanis has a bundled and customized copy of guile-json package |
Date: |
Fri, 28 Jul 2017 11:28:21 -0300 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) |
The following patch is an attempt to fix this.
I noticed that the '->json-string procedure doesn't exist in the
official guile-json. I tried checking for it also in multiple revisions,
but couldn't find it. Due to my lack of understanding on how both GNU
Artanis and guile-json work internally, I assume however that
'->json-string was similar to 'scm->json-string.
>From 8ec0eaaa0e552e7d99be369a4251b2577ac927ac Mon Sep 17 00:00:00 2001
From: Adonay Felipe Nogueira <address@hidden>
Date: Fri, 28 Jul 2017 11:18:03 -0300
Subject: [PATCH] gnu: artanis: Unbundled guile-json and version according to
documentation.
* gnu/packages/guile.scm (artanis): Unbundled guile-json and version
according to documentation.
---
gnu/packages/guile.scm | 129 +++++++++++++++++++++++++++++--------------------
1 file changed, 77 insertions(+), 52 deletions(-)
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index f1ffc0e..3bcfbc0 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -7,7 +7,7 @@
;;; Copyright © 2016 Erik Edrosa <address@hidden>
;;; Copyright © 2016 Eraim Flashner <address@hidden>
;;; Copyright © 2016, 2017 Alex Kost <address@hidden>
-;;; Copyright © 2016 Adonay "adfeno" Felipe Nogueira
<https://libreplanet.org/wiki/User:Adfeno> <address@hidden>
+;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira
<https://libreplanet.org/wiki/User:Adfeno> <address@hidden>
;;; Copyright © 2016 Amirouche <address@hidden>
;;; Copyright © 2016 Jan Nieuwenhuizen <address@hidden>
;;; Copyright © 2017 Andy Wingo <address@hidden>
@@ -67,6 +67,7 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
+ #:use-module (guix build utils)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (guix utils)
@@ -384,55 +385,79 @@ program can be installed in one go.")
;;;
(define-public artanis
- (package
- (name "artanis")
- (version "0.2.1")
- (source (origin
- (method url-fetch)
- (uri (string-append "mirror://gnu/artanis/artanis-"
- version ".tar.gz"))
- (sha256
- (base32
- "041ajcg2pz918kd9iqcj4inpzddc3impvz3r2nhlpbv8zrz011hn"))))
- (build-system gnu-build-system)
- ;; TODO: Add guile-dbi and guile-dbd optional dependencies.
- (inputs `(("guile" ,guile-2.2)))
- (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
+ (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:]]+")
+ ""))))))
+ (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
@@ -440,8 +465,8 @@ 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
+ (home-page "https://www.gnu.org/software/artanis/")
+ (license (list license:gpl3+ license:lgpl3+))))) ;dual license
(define-public guile-reader
(package
--
1.9.1