;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com>
;;; Copyright © 2016 Eraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
-;;; Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
+;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
;;; Copyright © 2016 Amirouche <amirouche@hypermove.net>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
;;; Copyright © 2017 David Thompson <davet@gnu.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
+;;; Copyright © 2017 ng0 <ng0@infotropique.org>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (guix utils)
- #:use-module (ice-9 match))
+ #:use-module (ice-9 match)
+ #:use-module ((srfi srfi-1) #:prefix srfi-1:))
;;; Commentary:
;;;
(arguments '(#:configure-flags '("--disable-error-on-warning")
;; Insert a phase before `configure' to patch things up.
- #:phases (alist-cons-before
- 'configure
- 'patch-stuff
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Add a call to `lt_dladdsearchdir' so that
- ;; `libguile-readline.so' & co. are in the
- ;; loader's search path.
- (substitute* "libguile/dynl.c"
- (("lt_dlinit.*$" match)
- (format #f
- " ~a~% lt_dladdsearchdir(\"~a/lib\");~%"
- match
- (assoc-ref outputs "out"))))
-
- ;; The usual /bin/sh...
- (substitute* "ice-9/popen.scm"
- (("/bin/sh") (which "sh"))))
- %standard-phases)))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'patch-stuff
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Add a call to `lt_dladdsearchdir' so that
+ ;; `libguile-readline.so' & co. are in the
+ ;; loader's search path.
+ (substitute* "libguile/dynl.c"
+ (("lt_dlinit.*$" match)
+ (format #f
+ " ~a~% lt_dladdsearchdir(\"~a/lib\");~%"
+ match
+ (assoc-ref outputs "out"))))
+
+ ;; The usual /bin/sh...
+ (substitute* "ice-9/popen.scm"
+ (("/bin/sh") (which "sh")))
+ #t)))))
(inputs `(("gawk" ,gawk)
("readline" ,readline)))
(inputs `(("libffi" ,libffi)
("readline" ,readline)
,@(libiconv-if-needed)
- ,@(if (target-mingw?) '() `(("bash" ,bash)))))
+
+ ;; We need Bash when cross-compiling because some of the scripts
+ ;; in bin/ refer to it. Use 'bash-minimal' because we don't need
+ ;; an interactive Bash with Readline and all.
+ ,@(if (target-mingw?) '() `(("bash" ,bash-minimal)))))
(propagated-inputs
`( ;; These ones aren't normally needed here, but since `libguile-2.0.la'
;; reads `-lltdl -lunistring', adding them here will add the needed
(home-page "https://www.gnu.org/software/guile/")
(license license:lgpl3+)))
-(define-public guile-2.0/fixed
- ;; A package of Guile 2.0 that's rarely changed. It is the one used
- ;; in the `base' module, and thus changing it entails a full rebuild.
- (package
- (inherit guile-2.0)
- (properties '((hidden? . #t))))) ;people should install 'guile-2.0'
-
(define-public guile-2.2
(package (inherit guile-2.0)
(name "guile")
- (version "2.2.2")
+ (version "2.2.2") ;TODO: Update to 2.2.3 (see below).
(source (origin
(method url-fetch)
+
+ ;; Note: we are limited to one of the compression formats
+ ;; supported by the bootstrap binaries, so no lzip here.
(uri (string-append "mirror://gnu/guile/guile-" version
- ".tar.lz"))
+ ".tar.xz"))
(sha256
(base32
- "1dnh75h4rkx1zflpsngznkwcd6afn6zrc5x3xq7n946pm5bnx5bq"))
+ "1azm25zcmxif0skxfrp11d2wc89nrzpjaann9yxdw6pvjxhs948w"))
(modules '((guix build utils)))
;; Remove the pre-built object files. Instead, build everything
(files '("lib/guile/2.2/site-ccache"
"share/guile/site/2.2")))))))
+(define-public guile-2.2.3
+ ;; TODO: Make it the new 'guile-2.2' on the next rebuild cycle.
+ (package
+ (inherit guile-2.2)
+ (version "2.2.3")
+ (source (origin (inherit (package-source guile-2.2))
+ (uri (list (string-append "mirror://gnu/guile/guile-"
+ version ".tar.xz")
+ (string-append
+ "https://wingolog.org/priv/guile-"
+ version ".tar.xz")))
+ (sha256
+ (base32
+ "11j01agvnci2cx32wwpqs9078856yxmvs15gcsz7ganpkj2ahlw3"))))))
+
+(define-public guile-2.2/fixed
+ ;; A package of Guile 2.2 that's rarely changed. It is the one used
+ ;; in the `base' module, and thus changing it entails a full rebuild.
+ (package
+ (inherit guile-2.2)
+ (properties '((hidden? . #t) ;people should install 'guile-2.2'
+ (timeout . 72000) ;20 hours
+ (max-silent-time . 36000))) ;10 hours (needed on ARM
+ ; when heavily loaded)
+ (replacement #f)))
+
(define-public guile-next
(deprecated-package "guile-next" guile-2.2))
(uri (git-reference
(url "git://git.hcoop.net/git/bpt/guile.git")
(commit "d8d9a8da05ec876acba81a559798eb5eeceb5a17")))
+ (file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"00sprsshy16y8pxjy126hr2adqcvvzzz96hjyjwgg8swva1qh6b0"))))
;; reasons. It does not fail when run outside of Guix.
(("tests/database.scm") ""))
#t))
- (add-before 'configure 'autogen
+ (add-after 'fix-bug-22 'autogen
(lambda _
(zero? (system* "sh" "autogen.sh")))))))
(inputs
;;;
(define-public artanis
- (package
- (name "artanis")
- (version "0.2.1")
- (source (origin
- (method url-fetch)
- (uri (string-append "ftp://alpha.gnu.org/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
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
library.")
(license license:lgpl3+)))
+(define-public guile-ncurses/gpm
+ (package
+ (inherit guile-ncurses)
+ (name "guile-ncurses-with-gpm")
+ (inputs `(("ncurses" ,ncurses/gpm)
+ ("guile" ,guile-2.2)))))
+
(define-public mcron
(package
(name "mcron")
("pkg-config" ,pkg-config)
("texinfo" ,texinfo)
("help2man" ,help2man)))
+ (inputs
+ `(("guile-2.2" ,guile-2.2)
+ ,@(srfi-1:alist-delete "guile" (package-inputs mcron))))
(arguments
`(#:modules ((ice-9 match) (ice-9 ftw)
,@%gnu-build-system-modules)
-
- #:phases (modify-phases %standard-phases
- (add-after 'unpack 'bootstrap
- (lambda _
- (zero? (system* "autoreconf" "-vfi"))))
- (add-after 'install 'wrap-mcron
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Wrap the 'mcron' command to refer to the right
- ;; modules.
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin"))
- (site (string-append
- out "/share/guile/site")))
- (match (scandir site)
- (("." ".." version)
- (let ((modules (string-append site "/" version)))
- (wrap-program (string-append bin "/mcron")
- `("GUILE_LOAD_PATH" ":" prefix
- (,modules))
- `("GUILE_LOAD_COMPILED_PATH" ":" prefix
- (,modules)))
- #t))))))))))))
+ ;; When building the targets in parallel, help2man tries to generate
+ ;; the manpage from ./cron --help before it is built, which fails.
+ #:parallel-build? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'use-guile-2.2
+ (lambda _
+ (substitute* "configure.ac"
+ (("PKG_CHECK_MODULES\\(\\[GUILE\\],.*$")
+ "PKG_CHECK_MODULES([GUILE], [guile-2.2])\n"))
+ #t))
+ (add-after 'use-guile-2.2 'bootstrap
+ (lambda _
+ (invoke "autoreconf" "-vfi")))
+ (add-after 'install 'wrap-mcron
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Wrap the 'mcron' command to refer to the right
+ ;; modules.
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (site (string-append
+ out "/share/guile/site")))
+ (match (scandir site)
+ (("." ".." version)
+ (let ((modules (string-append site "/" version)))
+ (wrap-program (string-append bin "/mcron")
+ `("GUILE_LOAD_PATH" ":" prefix
+ (,modules))
+ `("GUILE_LOAD_COMPILED_PATH" ":" prefix
+ (,modules)))
+ #t))))))))))))
(define-public guile-ics
(package
(build-system gnu-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
- (add-before 'configure 'autoreconf
- (lambda _
- ;; Repository comes with a broken symlink
- (delete-file "README")
- (symlink "README.org" "README")
- (zero? (system* "autoreconf" "-fi")))))))
+ (add-after 'unpack 'autoreconf
+ (lambda _
+ ;; Repository comes with a broken symlink
+ (delete-file "README")
+ (symlink "README.org" "README")
+ (zero? (system* "autoreconf" "-fi")))))))
(native-inputs
`(("autoconf" ,(autoconf-wrapper))
("automake" ,automake)
(compile-file
(lambda (in-file out-file)
(system* guild "compile" "-o" out-file in-file))))
- ;; Make installation directories.
- (mkdir-p module-dir)
- (mkdir-p doc)
-
;; Switch directory for compiling and installing
(chdir source)
+ ;; Install the documentation.
+ (install-file "README.md" doc)
+ (copy-recursively "examples" (string-append doc "/examples"))
+
+ ;; Make installation directories.
+ (mkdir-p module-dir)
+
;; copy the source
(copy-file "gdbm.scm" gdbm.scm-dest)
;; compile to the destination
(compile-file gdbm.scm-dest gdbm.go-dest)))))
(inputs
- `(("guile" ,guile-2.0)))
+ `(("guile" ,guile-2.2)))
(propagated-inputs
`(("gdbm" ,gdbm)))
(home-page "https://github.com/ijp/guile-gdbm")
Guile's foreign function interface.")
(license license:gpl3+)))
+(define-public guile2.0-gdbm-ffi
+ (package-for-guile-2.0 guile-gdbm-ffi))
+
(define-public guile2.2-gdbm-ffi
- (package-for-guile-2.2 guile-gdbm-ffi))
+ (deprecated-package "guile2.2-gdbm-ffi" guile-gdbm-ffi))
(define-public guile-sqlite3
(let ((commit "607721fe1174a299e45d457acacf94eefb964071"))
("sqlite" ,sqlite)))
(arguments
'(#:phases (modify-phases %standard-phases
- (add-before 'configure 'autoreconf
+ (add-after 'unpack 'autoreconf
(lambda _
(zero? (system* "autoreconf" "-vfi"))))
(add-before 'build 'set-sqlite3-file-name
(define-public guile-wisp
(package
(name "guile-wisp")
- (version "0.9.0")
+ (version "0.9.8")
(source (origin
(method url-fetch)
(uri (string-append "https://bitbucket.org/ArneBab/"
version ".tar.gz"))
(sha256
(base32
- "0y5fxacalkgbv9s71h58vdvm2h2ln3rk024dd0vszwcf953as5fq"))))
+ "1f2bbicq1rxnwmiplrm4r75wj06w385mjkyvi7g4k740bgwcrzxr"))))
(build-system gnu-build-system)
(arguments
- `(#:modules ((system base compile)
- ,@%gnu-build-system-modules)
+ `(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (ice-9 rdelim)
+ (ice-9 popen))
+
#:phases
(modify-phases %standard-phases
- (add-before
- 'configure 'substitute-before-config
+ (add-before 'configure 'substitute-before-config
(lambda* (#:key inputs #:allow-other-keys)
(let ((bash (assoc-ref inputs "bash")))
- ;; configure checks for guile-2.0, but ours is just named "guile" :)
- (substitute* "configure"
- (("guile-2.0") "guile"))
;; Puts together some test files with /bin/bash hardcoded
(substitute* "Makefile.in"
- (("/bin/bash")
- (string-append bash "/bin/bash") ))
+ (("/usr/bin/env bash")
+ (string-append bash "/bin/bash"))
+ (("\\$\\(GUILE_EFFECTIVE_VERSION\\)/site")
+ "site/$(GUILE_EFFECTIVE_VERSION)")) ;use the right order
#t)))
;; auto compilation breaks, but if we set HOME to /tmp,
(lambda _
(setenv "HOME" "/tmp")
#t))
- (replace
- 'install
+ (add-after 'install 'install-go-files
(lambda* (#:key outputs inputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
- (module-dir (string-append out "/share/guile/site/2.0"))
- (language-dir
- (string-append module-dir "/language/wisp"))
- (guild (string-append (assoc-ref inputs "guile")
- "/bin/guild")))
- ;; Make installation directories.
- (mkdir-p module-dir)
- (mkdir-p language-dir)
-
- ;; copy the source
- (copy-file "wisp-scheme.scm"
- (string-append module-dir "/wisp-scheme.scm"))
- (copy-file "language/wisp/spec.scm"
- (string-append language-dir "/spec.scm"))
-
+ (effective (read-line
+ (open-pipe* OPEN_READ
+ "guile" "-c"
+ "(display (effective-version))")))
+ (module-dir (string-append out "/share/guile/site/"
+ effective))
+ (object-dir (string-append out "/lib/guile/" effective
+ "/site-ccache"))
+ (prefix (string-length module-dir)))
;; compile to the destination
- (compile-file "wisp-scheme.scm"
- #:output-file (string-append
- module-dir "/wisp-scheme.go"))
- (compile-file "language/wisp/spec.scm"
- #:output-file (string-append
- language-dir "/spec.go"))
+ (for-each (lambda (file)
+ (let* ((base (string-drop (string-drop-right file 4)
+ prefix))
+ (go (string-append object-dir base ".go")))
+ (invoke "guild" "compile" "-L" module-dir
+ file "-o" go)))
+ (find-files module-dir "\\.scm$"))
#t))))))
(home-page "http://draketo.de/english/wisp")
(inputs
- `(("guile" ,guile-2.0)
- ("python" ,python)))
+ `(("guile" ,guile-2.2)))
+ (native-inputs
+ `(("python" ,python)
+ ("pkg-config" ,pkg-config)))
(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
version ".tar.gz"))
(sha256
(base32
- "1svzlbz2vripmyq2kjh0rig16bsrnbkwbsm558pjln9l65mcl4qq"))))
+ "1svzlbz2vripmyq2kjh0rig16bsrnbkwbsm558pjln9l65mcl4qq"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (substitute* "configure"
+ (("_guile_required_version=\"2.0.11\"")
+ "_guile_required_version=\"2\"")
+ (("ac_subst_vars='")
+ "ac_subst_vars='GUILE_EFFECTIVE_VERSION\n"))
+ (substitute* (find-files "." "Makefile.in")
+ (("moddir = .*$")
+ (string-append
+ "moddir = "
+ "$(prefix)/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n"))
+ (("godir = .*$")
+ (string-append
+ "godir = "
+ "$(prefix)/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")))))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags
(native-inputs
`(("pkg-config" ,pkg-config)))
(propagated-inputs
- `(("guile" ,guile-2.0)
- ("guile-sdl" ,guile-sdl)
+ `(("guile-sdl" ,guile-sdl)
("guile-opengl" ,guile-opengl)))
(inputs
- `(("gsl" ,gsl)
+ `(("guile" ,guile-2.2)
+ ("gsl" ,gsl)
("freeimage" ,freeimage)
("mesa" ,mesa)))
(synopsis "2D/3D game engine for GNU Guile")
(native-inputs
`(("pkg-config" ,pkg-config)))
(propagated-inputs
- `(("guile" ,guile-2.0)
+ `(("guile" ,guile-2.2)
("guile-lib" ,guile-lib)))
(inputs
`(("libffi" ,libffi)))
(arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'configure 'pre-configure
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (substitute* (find-files "." "^Makefile.in$")
- (("guilemoduledir =.*guile/site" all)
- (string-append all "/2.0")))
- #t))))))
+ `(#:configure-flags '("--disable-Werror")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'pre-configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* (find-files "." "^Makefile.in$")
+ (("guilemoduledir =.*guile/site" all)
+ (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
+ #t))))))
(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
SQL databases. This package implements the interface for SQLite.")
(license license:gpl2+)))
+(define-public guile-dsv
+ (package
+ (name "guile-dsv")
+ (version "0.2.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/artyom-poptsov/guile-dsv")
+ (commit "bdc5267d007478abc20ea96d7c459b7dd9560b3d")))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "1irw6mz8998nwyhzrw9g94jcz60b9zljgqfmipaz1ybn8579qjx0"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("pkg-config" ,pkg-config)
+ ("texinfo" ,texinfo)))
+ (inputs `(("guile" ,guile-2.2)))
+ (propagated-inputs `(("guile-lib" ,guile-lib)))
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (add-before 'configure 'set-guilesitedir
+ (lambda _
+ (substitute* "Makefile.in"
+ (("^guilesitedir =.*$")
+ "guilesitedir = \
+$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
+ (substitute* "modules/Makefile.in"
+ (("^guilesitedir =.*$")
+ "guilesitedir = \
+$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
+ (substitute* "modules/dsv/Makefile.in"
+ (("^guilesitedir =.*$")
+ "guilesitedir = \
+$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
+ #t))
+ (add-after 'unpack 'autoreconf
+ (lambda _
+ (zero? (system* "autoreconf" "-vfi")))))))
+ (home-page "https://github.com/artyom-poptsov/guile-dsv")
+ (synopsis "DSV module for Guile")
+ (description
+ "Guile-DSV is a GNU Guile module for working with the
+delimiter-separated values (DSV) data format. Guile-DSV supports the
+Unix-style DSV format and RFC 4180 format.")
+ (license license:gpl3+)))
+
(define-public guile-xosd
(package
(name "guile-xosd")
(define-public guile-bytestructures
(package
(name "guile-bytestructures")
- (version "20170402.91d042e")
+ (version "1.0.1")
(source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/TaylanUB/scheme-bytestructures")
- (commit "91d042e3427e1d7740b604b6296c616cf2eec13d")))
- (file-name (string-append name "-" version "-checkout"))
+ (method url-fetch)
+ (uri (string-append "https://github.com/TaylanUB/scheme-bytestructures"
+ "/releases/download/v" version
+ "/bytestructures-" version ".tar.gz"))
(sha256
(base32
- "04lgh0nk6ddnwgh20hnz4pyhczaik0xbd50kikjsxcwcl46shavb"))))
- (build-system trivial-build-system)
- (arguments
- `(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils)
- (ice-9 match)
- (ice-9 popen)
- (ice-9 rdelim))
- (let* ((out (assoc-ref %outputs "out"))
- (guile (assoc-ref %build-inputs "guile"))
- (effective (read-line
- (open-pipe* OPEN_READ
- (string-append guile "/bin/guile")
- "-c" "(display (effective-version))")))
- (module-dir (string-append out "/share/guile/site/"
- effective))
- (source (assoc-ref %build-inputs "source"))
- (doc (string-append out "/share/doc/scheme-bytestructures"))
- (sld-files (with-directory-excursion source
- (find-files "bytestructures/r7" "\\.exports.sld$")))
- (scm-files (filter (lambda (path)
- (not (string-prefix? "bytestructures/r7" path)))
- (with-directory-excursion source
- (find-files "bytestructures" "\\.scm$"))))
- (guild (string-append (assoc-ref %build-inputs "guile")
- "/bin/guild")))
- ;; Make installation directories.
- (mkdir-p doc)
-
- ;; Compile .scm files and install.
- (chdir source)
- (setenv "GUILE_AUTO_COMPILE" "0")
- (for-each (lambda (file)
- (let* ((dest-file (string-append module-dir "/"
- file))
- (go-file (string-append module-dir "/"
- (substring file 0
- (string-rindex file #\.))
- ".go")))
- ;; Install source module.
- (mkdir-p (dirname dest-file))
- (copy-file file dest-file)
-
- ;; Install compiled module.
- (mkdir-p (dirname go-file))
- (unless (zero? (system* guild "compile"
- "-L" source
- "-o" go-file
- file))
- (error (format #f "Failed to compile ~s to ~s!"
- file go-file)))))
- (append sld-files scm-files))
-
- ;; Also copy over the README.
- (install-file "README.md" doc)
- #t))))
+ "1lnfcy65mqj823lamy2n2vaghdz0g7mj011bgnhmd6hwpnaidnh2"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
(inputs
`(("guile" ,guile-2.2)))
(home-page "https://github.com/TaylanUB/scheme-bytestructures")
type system, elevating types to first-class status.")
(license license:gpl3+)))
+(define-public guile2.0-bytestructures
+ (package-for-guile-2.0 guile-bytestructures))
+
(define-public guile-aspell
(package
(name "guile-aspell")
("automake" ,automake)
("libtool" ,libtool)
;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
- ("gettext" ,gettext-minimal)))
+ ("gettext" ,gettext-minimal)
+
+ ;; Bash with loadable module support, for the test
+ ;; suite.
+ ("bash-full" ,bash)))
(inputs `(("guile" ,guile-2.0)
("bash:include" ,bash "include")))
(synopsis "Extend Bash using Guile")
(license license:lgpl3+)))
(define-public guile-git
- (let ((revision "2")
- (commit "06f9fc3d9ac95798d4a51e6310f7b594ce5597e0"))
+ (let ((revision "4")
+ (commit "951a32c56cc4d80f8836e3c7394783e69c1fcbad"))
(package
(name "guile-git")
(version (string-append "0.0-" revision "." (string-take commit 7)))
(uri (git-reference (url home-page) (commit commit)))
(sha256
(base32
- "0rcq0f8dhl89ia7336bq8y279q5ada0b1kabcqw9zl3125k3cp4v"))
+ "0qri9x73ij6g40ijs4hyhj8knxw39ydgghiafq74dp99bc8hh0qc"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments
- '(#:phases (modify-phases %standard-phases
+ `(#:phases (modify-phases %standard-phases
(add-after 'unpack 'bootstrap
(lambda _
- (zero? (system* "autoreconf" "-vfi")))))))
+ (zero? (system* "autoreconf" "-vfi"))))
+
+ ;; FIXME: On i686, bytestructures miscalculates the offset
+ ;; of the 'old-file' and 'new-file' fields within the
+ ;; '%diff-delta' structure.
+ ,@(if (string=? (%current-system) "x86_64-linux")
+ '()
+ '((add-before 'check 'skip-tests
+ (lambda _
+ (substitute* "Makefile"
+ (("tests/status\\.scm")
+ ""))
+ #t)))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
+ ("texinfo" ,texinfo)
("pkg-config" ,pkg-config)))
(inputs
`(("guile" ,guile-2.2)
manipulate repositories of the Git version control system.")
(license license:gpl3+))))
+(define-public guile2.0-git
+ (package-for-guile-2.0 guile-git))
+
(define-public guile-syntax-highlight
(let ((commit "a047675e66861b647426372aa2ba7820f749616d")
(revision "0"))
(uri (git-reference
(url "git://dthompson.us/guile-syntax-highlight.git")
(commit commit)))
+ (file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"1zjr6sg3n7xbdsliy45i39dqanxvcms58ayx36wxrz72zpq58vq3"))))
It has a nice, simple s-expression based syntax.")
(license license:lgpl3+)))
+(define-public guile-colorized
+ (package
+ (name "guile-colorized")
+ (version "0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/NalaGinrut/guile-colorized/"
+ "archive/v" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "16xhc3an6aglnca8xl3mvgi8hsqzqn68vsl5ga4bz8bvbap5fn4p"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:modules ((system base compile)
+ ,@%gnu-build-system-modules)
+ #:tests? #f ;No tests included
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure) ;No configure script
+ (replace 'install
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (module-dir (string-append out "/share/guile/site/2.2"))
+ (language-dir (string-append module-dir "/ice-9"))
+ (guild (string-append (assoc-ref inputs "guile")
+ "/bin/guild")))
+ ;; The original 'make install' is too primitive.
+
+ ;; copy the source
+ (install-file "ice-9/colorized.scm" language-dir)
+
+ ;; compile to the destination
+ (compile-file "ice-9/colorized.scm"
+ #:output-file (string-append
+ language-dir "/colorized.go"))
+ #t))))))
+ (inputs
+ `(("guile" ,guile-2.2)))
+ (home-page "https://github.com/NalaGinrut/guile-colorized")
+ (synopsis "Colorized REPL for Guile")
+ (description
+ "Guile-colorized provides you with a colorized REPL for GNU Guile.")
+ (license license:gpl3+)))
+
;;; guile.scm ends here