;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2019 swedebugia <swedebugia@riseup.net>
;;; Copyright © 2019 Amar Singh <nly@disroot.org>
+;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
;;;
;;; This file is part of GNU Guix.
;;;
(define-module (gnu packages guile-xyz)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
+ #:use-module (gnu packages algebra)
#:use-module (gnu packages aspell)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages networking)
#:use-module (gnu packages noweb)
+ #:use-module (gnu packages nss)
#:use-module (gnu packages password-utils)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module ((srfi srfi-1) #:select (alist-delete)))
(define-public artanis
- (let ((release "0.3.1")
- (revision 0))
- (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
- ;; Unbundle guile-redis and guile-json
- (delete-file-recursively "artanis/third-party/json.scm")
- (delete-file-recursively "artanis/third-party/json")
- (delete-file-recursively "artanis/third-party/redis.scm")
- (delete-file-recursively "artanis/third-party/redis")
- (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/lpc.scm"
- "artanis/session.scm")
- (("(#:use-module \\()artanis third-party (redis\\))" _
- use-module redis)
- (string-append use-module redis)))
- (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)
- ;; FIXME the bundled csv contains one more exported procedure
- ;; (sxml->csv-string) than guile-csv. The author is maintainer of both
- ;; projects.
- ;; TODO: Add guile-dbi and guile-dbd optional dependencies.
- (inputs `(("guile" ,guile-2.2)
- ("guile-json" ,guile-json-1)
- ("guile-redis" ,guile-redis)))
- (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-after 'unpack 'patch-site-dir
- (lambda* (#:key outputs #:allow-other-keys)
- (substitute* "artanis/commands/help.scm"
- (("\\(%site-dir\\)")
- (string-append "\""
- (assoc-ref outputs "out")
- "/share/guile/site/2.2\"")))))
- (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 inputs 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 ,(getenv "GUILE_LOAD_PATH")))
- `("GUILE_LOAD_COMPILED_PATH" ":" prefix
- (,go ,(getenv "GUILE_LOAD_COMPILED_PATH"))))
- #t))))))
- (synopsis "Web application framework written in Guile")
- (description "GNU Artanis is a web application framework written in Guile
+ (package
+ (name "artanis")
+ (version "0.4.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/artanis/artanis-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0nnmdfx5xwcc3kck64var7msz7g3qk817d7bv9l159nkmic0v9w4"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Unbundle guile-redis and guile-json
+ (delete-file-recursively "artanis/third-party/json.scm")
+ (delete-file-recursively "artanis/third-party/json")
+ (delete-file-recursively "artanis/third-party/redis.scm")
+ (delete-file-recursively "artanis/third-party/redis")
+ (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/lpc.scm"
+ "artanis/session.scm")
+ (("(#:use-module \\()artanis third-party (redis\\))" _
+ use-module redis)
+ (string-append use-module redis)))
+ (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)
+ (inputs
+ `(("guile" ,guile-2.2)
+ ("nss" ,nss)))
+ ;; FIXME the bundled csv contains one more exported procedure
+ ;; (sxml->csv-string) than guile-csv. The author is maintainer of both
+ ;; projects.
+ ;; TODO: Add guile-dbi and guile-dbd optional dependencies.
+ (propagated-inputs
+ `(("guile-json" ,guile-json-1)
+ ("guile-readline" ,guile-readline)
+ ("guile-redis" ,guile-redis)))
+ (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-after 'unpack 'patch-site-dir
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "artanis/commands/help.scm"
+ (("\\(%site-dir\\)")
+ (string-append "\""
+ (assoc-ref outputs "out")
+ "/share/guile/site/2.2\"")))))
+ (add-after 'unpack 'patch-reference-to-libnss
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "artanis/security/nss.scm"
+ (("ffi-binding \"libnss3\"")
+ (string-append
+ "ffi-binding \""
+ (assoc-ref inputs "nss") "/lib/nss/libnss3.so"
+ "\"")))
+ #t))
+ (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 inputs 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 ,(getenv "GUILE_LOAD_PATH")))
+ `("GUILE_LOAD_COMPILED_PATH" ":" prefix
+ (,go ,(getenv "GUILE_LOAD_COMPILED_PATH"))))
+ #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
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
;; There has not been any release yet.
(define-public guildhall
(uri (git-reference
(url "https://github.com/jerry40/guile-kernel")
(commit commit)))
+ (file-name (git-file-name name version))
(sha256
(base32
"0aj04853bqm47ivfcmrgpb7w3wkis847kc7qrwsa5zcn9h38qh2f"))))
(define-public guile-email
(package
(name "guile-email")
- (version "0.2.1")
+ (version "0.2.2")
(source
(origin
(method url-fetch)
version ".tar.lz"))
(sha256
(base32
- "1ph3pb69hr3d8mj05fmbpf5rc67dlm8qnb35cc7cxz8ingvl7kv3"))))
+ "1rc8r0fgvflnyq5ckl7ii8sghpsgpkzxa8vskjr1ak2kyar6m35k"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
(home-page "https://www.nongnu.org/guile-reader/")
(license license:gpl3+)))
-(define-public guile2.2-reader
- (deprecated-package "guile2.2-reader" guile-reader))
-
(define-public guile-ncurses
(package
(name "guile-ncurses")
- (version "2.2")
+ (version "3.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/guile-ncurses/guile-ncurses-"
version ".tar.gz"))
(sha256
(base32
- "1wvggbr4xv8idh1hzd8caj4xfp4pln78a7w1wqzd4zgzwmnzxr2f"))))
+ "038xbffalhymg26lvmzgf7ljilxz2f2zmqg5r5nfzbipfbprwjhf"))))
(build-system gnu-build-system)
(inputs `(("ncurses" ,ncurses)
("guile" ,guile-2.2)))
(name "guile2.0-lib")
(inputs `(("guile" ,guile-2.0)))))
-(define-public guile2.2-lib
- (deprecated-package "guile2.2-lib" guile-lib))
-
(define-public guile-minikanren
(package
(name "guile-minikanren")
(name "guile2.0-minikanren")
(native-inputs `(("guile" ,guile-2.0)))))
-(define-public guile2.2-minikanren
- (deprecated-package "guile2.2-minikanren" guile-minikanren))
+(define-public guile3.0-minikanren
+ (package
+ (inherit guile-minikanren)
+ (name "guile3.0-minikanren")
+ (native-inputs `(("guile" ,guile-next)))))
(define-public guile-irregex
(package
(name "guile2.0-irregex")
(native-inputs `(("guile" ,guile-2.0)))))
-(define-public guile2.2-irregex
- (deprecated-package "guile2.2-irregex" guile-irregex))
+(define-public guile3.0-irregex
+ (package
+ (inherit guile-irregex)
+ (name "guile3.0-irregex")
+ (native-inputs `(("guile" ,guile-next)))))
(define-public haunt
(package
(name "guile2.0-haunt")
(inputs `(("guile" ,guile-2.0)))))
-(define-public guile2.2-haunt
- (deprecated-package "guile2.2-haunt" haunt))
-
(define-public guile-redis
(package
(name "guile-redis")
(version "1.3.0")
(home-page "https://github.com/aconchillo/guile-redis")
(source (origin
- (method url-fetch)
- (uri (string-append home-page "/archive/" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
(base32
- "1li70a2716my9q9zfq0qn2x5d1cir9k2vx0jm9glm464yaf1vj39"))))
+ "14izs8daxh7pb7vwpxi5g427qa31137jkaxrb1cy5rpjkwchy723"))))
(build-system gnu-build-system)
(native-inputs
`(("autoconf" ,autoconf)
,@(alist-delete "guile"
(package-native-inputs guile-redis))))))
-(define-public guile2.2-redis
- (deprecated-package "guile2.2-redis" guile-redis))
-
(define-public guile-commonmark
(package
(name "guile-commonmark")
(name "guile2.0-commonmark")
(inputs `(("guile" ,guile-2.0)))))
-(define-public guile2.2-commonmark
- (deprecated-package "guile2.2-commonmark" guile-commonmark))
-
(define-public mcron
(package
(name "mcron")
- (version "1.1.2")
+ (version "1.1.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/mcron/mcron-"
version ".tar.gz"))
(sha256
(base32
- "069m3ri7nc8lgy3h9ka7gj3v3anqj69x9jw4l3cfq65nqkxsch4g"))))
+ "00kv7fgllzjpis0g1m9csycp4f6l11774m09dqy255cvmim2g743"))))
(build-system gnu-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
+ (add-after 'unpack 'fix-finding-guile
+ (lambda _
+ (substitute* "configure"
+ (("2\\.0") "2.2 2.0"))
+ #t))
(add-before 'check 'adjust-tests
(lambda _
(substitute* "tests/job-specifier.scm"
(("\\(test-equal \"next-year\"" all)
(string-append "(test-skip 4)\n" all)))
#t)))))
- (native-inputs `(("autoconf" ,autoconf)
- ("automake" ,automake)
- ("help2man" ,help2man)
- ("pkg-config" ,pkg-config)
- ("texinfo" ,texinfo)
+ (native-inputs `(("pkg-config" ,pkg-config)
("tzdata" ,tzdata-for-tests)))
(inputs `(("guile" ,guile-2.2)))
(home-page "https://www.gnu.org/software/mcron/")
(uri (git-reference
(url "https://git.elephly.net/software/guile-picture-language.git")
(commit commit)))
+ (file-name (git-file-name name version))
(sha256
(base32
"1ydvw9dvssdvlvhh1dr8inyzy2x6m41qgp8hsivca1xysr4gc23a"))))
(license license:lgpl3+))))
(define-public guile-studio
- (let ((commit "e2da64f014942a73996286c4abe3c3b1f8bd220c")
- (revision "1"))
- (package
- (name "guile-studio")
- (version (git-version "0" revision commit))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://git.elephly.net/software/guile-studio.git")
- (commit commit)))
- (sha256
- (base32
- "10v3kw41bzd8c2a6vxgrwbvl216d0k8f5s9h6pm8hahpd03jl7lm"))))
- (build-system gnu-build-system)
- (arguments
- `(#:tests? #f ; there are none
- #:phases
- (modify-phases %standard-phases
- (delete 'configure)
- (replace 'build
- (lambda* (#:key source inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin/"))
- (share (string-append out "/share/")))
- (mkdir-p share)
- (mkdir-p bin)
- (apply invoke "guile" "-s" "guile-studio-configure.scm"
- out
- (assoc-ref inputs "emacs")
- (assoc-ref inputs "guile-picture-language")
- (string-append (assoc-ref inputs "adwaita-icon-theme")
- "/share/icons/Adwaita/")
- (map cdr inputs))
- #t)))
- (delete 'install))))
- (inputs
- `(("guile" ,guile-2.2)
- ("guile-picture-language" ,guile-picture-language)
- ("emacs" ,emacs)
- ("emacs-geiser" ,emacs-geiser)
- ("emacs-company" ,emacs-company)
- ("emacs-flycheck" ,emacs-flycheck)
- ("emacs-smart-mode-line" ,emacs-smart-mode-line)
- ("emacs-paren-face" ,emacs-paren-face)
- ("adwaita-icon-theme" ,adwaita-icon-theme)))
- (home-page "https://gnu.org/software/guile")
- (synopsis "IDE for Guile")
- (description
- "This is Emacs with a few settings that make working with Guile easier
+ (package
+ (name "guile-studio")
+ (version "0.0.2")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.elephly.net/software/guile-studio.git")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "10ls4ra148hd9ra7sin4kh9vv0am5pwk48p7dsjhrlg2l1hsh4hi"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:modules
+ ((ice-9 match)
+ (srfi srfi-1)
+ ,@%gnu-build-system-modules)
+ #:tests? #f ; there are none
+ #:make-flags
+ (list (string-append "ICONS_DIR="
+ (assoc-ref %build-inputs "adwaita-icon-theme")
+ "/share/icons/Adwaita/")
+ (string-append "PICT_DIR="
+ (assoc-ref %build-inputs "guile-picture-language"))
+ (string-append "EMACS_DIR="
+ (assoc-ref %build-inputs "emacs"))
+ (string-append "GUILE_DIR="
+ (assoc-ref %build-inputs "guile"))
+ (string-join (cons "INPUTS="
+ (filter-map
+ (lambda (input)
+ (match input
+ ((label . pkg)
+ (and (string-prefix? "emacs" label) pkg))))
+ %build-inputs)))
+ (string-append "PREFIX=" (assoc-ref %outputs "out")))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'install))))
+ (inputs
+ `(("guile" ,guile-2.2)
+ ("guile-picture-language" ,guile-picture-language)
+ ("emacs" ,emacs)
+ ("emacs-geiser" ,emacs-geiser)
+ ("emacs-company" ,emacs-company)
+ ("emacs-flycheck" ,emacs-flycheck)
+ ("emacs-smart-mode-line" ,emacs-smart-mode-line)
+ ("emacs-paren-face" ,emacs-paren-face)
+ ("adwaita-icon-theme" ,adwaita-icon-theme)))
+ (native-inputs
+ `(("texinfo" ,texinfo)))
+ (home-page "https://gnu.org/software/guile")
+ (synopsis "IDE for Guile")
+ (description
+ "This is Emacs with a few settings that make working with Guile easier
for people new to Emacs. Features include: CUA mode, Geiser, tool bar icons
to evaluate Guile buffers, support for Guile's very own picture language, code
completion, a simple mode line, etc.")
- (license license:gpl3+))))
+ (license license:gpl3+)))
(define-public guile-stis-parser
(let ((commit "6e85d37ffc333b722f4413a6c648263701eb75bd")
(define-public guile-file-names
(package
(name "guile-file-names")
- (version "0.2")
+ (version "0.3")
(source (origin
(method url-fetch)
(uri (string-append "http://brandon.invergo.net/software/download/"
version ".tar.gz"))
(sha256
(base32
- "1kwx5hanl40960w2nhyga7ry4l6c3c57zdrihk4yajj87vn3pmi8"))))
+ "01chizdxkhw6aqv629vxka9f5x3534ij7r0jqndawsg2vxm1r9sz"))))
(build-system gnu-build-system)
(arguments
`(#:phases
(define-public guile-gi
(package
(name "guile-gi")
- (version "0.2.0")
+ (version "0.2.1")
(source (origin
(method url-fetch)
(uri (string-append "http://lonelycactus.com/tarball/guile_gi-"
version ".tar.gz"))
(sha256
(base32
- "1n4pbrmbrjkrx826a4m31ag5c35rgkj1sirqh4qalk7gg67cfb41"))))
+ "1ah5bmkzplsmkrk7v9vlxlqch7i91qv4cq2d2nar9xshbpcrj484"))))
(build-system gnu-build-system)
(arguments
- `(#:configure-flags '("--with-gnu-filesystem-hierarchy")))
+ `(#:configure-flags '("--with-gnu-filesystem-hierarchy")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'start-xorg-server
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; The init_check test requires a running X server.
+ (system (format #f "~a/bin/Xvfb :1 &"
+ (assoc-ref inputs "xorg-server")))
+ (setenv "DISPLAY" ":1")
+ #t)))))
(native-inputs
`(("gettext" ,gnu-gettext)
("glib:bin" ,glib "bin") ; for glib-compile-resources
("libtool" ,libtool)
- ("pkg-config" ,pkg-config)))
+ ("pkg-config" ,pkg-config)
+ ("xorg-server" ,xorg-server)))
(propagated-inputs
`(("glib" ,glib)
("gobject-introspection" ,gobject-introspection)
(define-public nomad
(package
(name "nomad")
- (version "0.1.1-alpha")
+ (version "0.1.2-alpha")
(source (origin
(method git-fetch)
(uri (git-reference
(file-name (git-file-name name version))
(sha256
(base32
- "0abz07hl5dh802ciy71xzkvkhyryypq1i94wna40a2wndbd73f7z"))))
+ "1dnkr1hmvfkwgxd75dcf93pg39yfgawvdpzdhv991yhghv0qxc9h"))))
(build-system gnu-build-system)
(native-inputs
`(("autoconf" ,autoconf)
("pkg-config" ,pkg-config)
("libtool" ,libtool)
("guile" ,guile-2.2)
- ("glib:bin" ,glib "bin")))
+ ("glib:bin" ,glib "bin")
+ ("texinfo" ,texinfo)
+ ("perl" ,perl)))
(inputs
`(("guile" ,guile-2.2)
("guile-lib" ,guile-lib)
enriched with pure Guile Scheme algorithms, all accessible through a nice,
clean and easy to use high level API.")
(license license:gpl3+)))
+
+(define-public guile-ffi-fftw
+ (let ((commit "294ad9e7491dcb40026d2fec9be2af05263be1c0")
+ (revision "2"))
+ (package
+ (name "guile-ffi-fftw")
+ (version (git-version "0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/lloda/guile-ffi-fftw.git")
+ (commit commit)))
+ (file-name (git-file-name "guile-ffi-fftw" version))
+ (sha256
+ (base32
+ "08j40a5p6a8pgvhffmzb5rfdnrav2mksy3gfjkdqy93jfj1z5afg"))))
+ (build-system guile-build-system)
+ (arguments
+ `(#:source-directory "mod"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'prepare-build
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "mod/ffi/fftw.scm"
+ (("\\(getenv \"GUILE_FFI_FFTW_LIBFFTW3_PATH\"\\)")
+ (format #f "\"~a/lib\"" (assoc-ref inputs "fftw"))))
+ #t))
+ (add-after 'build 'check
+ (lambda _
+ (invoke "guile" "-L" "mod"
+ "-s" "test/test-ffi-fftw.scm"))))))
+ (inputs
+ `(("fftw" ,fftw)
+ ("guile" ,guile-2.2)))
+ (home-page "https://github.com/lloda/guile-ffi-fftw/")
+ (synopsis "Access FFTW through Guile's FFI")
+ (description "This is a minimal set of Guile FFI bindings for the FFTW
+library's ‘guru interface’. It provides two functions: @code{fftw-dft! rank
+sign in out} and @code{fftw-dft rank sign in}. These bindings being minimal,
+there is no support for computing & reusing plans, or split r/i transforms, or
+anything other than straight complex DFTs.")
+ (license license:lgpl3+))))
+
+(define-public srfi-64-driver
+ (package
+ (name "srfi-64-driver")
+ (version "0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://files.ngyro.com/srfi-64-driver/"
+ "srfi-64-driver-" version ".tar.gz"))
+ (sha256
+ (base32
+ "188b6mb7sjjg0a8zldikinglf40ky8mg8rwh5768gjmch6gkk3ph"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'build))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("guile" ,guile-2.2)))
+ (home-page "https://ngyro.com/software/srfi-64-driver.html")
+ (synopsis "Automake test driver for SRFI 64 test suites")
+ (description "This package provides an Automake test driver that can
+run SRFI 64 test suites. It gives Automake insight into the individual
+tests being run, resulting clearer and more specific output.")
+ (license license:gpl3+)))
+
+(define-public guile-semver
+ (package
+ (name "guile-semver")
+ (version "0.1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://files.ngyro.com/guile-semver/"
+ "guile-semver-" version ".tar.gz"))
+ (sha256
+ (base32
+ "06b66rj7nyhr6i3dpkwvfw1xb10w2pngrsw2hxfxkznwsbh9byfz"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("srfi-64-driver" ,srfi-64-driver)))
+ (inputs
+ `(("guile" ,guile-2.2)))
+ (home-page "https://ngyro.com/software/guile-semver.html")
+ (synopsis "Semantic Versioning (SemVer) for Guile")
+ (description "This Guile library provides tools for reading,
+comparing, and writing Semantic Versions. It also includes ranges in
+the style of the Node Package Manager (NPM).")
+ (license license:gpl3+)))