X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/ad01c7aa14683362a128d989de6ded9219da0384..a3a932c008d0d9051eb8cdfdcea07ebd7b68b1b3:/gnu/packages/guile.scm diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index b654bbc96e..3bc18ffdd0 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -7,12 +7,16 @@ ;;; Copyright © 2016 Erik Edrosa ;;; Copyright © 2016 Eraim Flashner ;;; Copyright © 2016, 2017 Alex Kost -;;; Copyright © 2016 Adonay "adfeno" Felipe Nogueira +;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira ;;; Copyright © 2016 Amirouche ;;; Copyright © 2016 Jan Nieuwenhuizen ;;; Copyright © 2017 Andy Wingo ;;; Copyright © 2017 David Thompson ;;; Copyright © 2017 Mathieu Othacehe +;;; Copyright © 2017 Theodoros Foradis +;;; Copyright © 2017 ng0 +;;; Copyright © 2017 Tobias Geerinckx-Rice +;;; Copyright © 2018 Maxim Cournoyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -69,7 +73,8 @@ #: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: ;;; @@ -93,24 +98,24 @@ (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))) @@ -153,7 +158,11 @@ without requiring the source code to be rewritten.") (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 @@ -212,24 +221,20 @@ without requiring the source code to be rewritten.") (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 @@ -249,6 +254,32 @@ without requiring the source code to be rewritten.") (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)) @@ -281,6 +312,7 @@ without requiring the source code to be rewritten.") (uri (git-reference (url "git://git.hcoop.net/git/bpt/guile.git") (commit "d8d9a8da05ec876acba81a559798eb5eeceb5a17"))) + (file-name (string-append name "-" version "-checkout")) (sha256 (base32 "00sprsshy16y8pxjy126hr2adqcvvzzz96hjyjwgg8swva1qh6b0")))) @@ -352,7 +384,7 @@ AM_SCM_LOG_FLAGS = --no-auto-compile -s") ;; 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 @@ -383,55 +415,81 @@ 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 @@ -439,8 +497,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 @@ -519,6 +577,13 @@ many readers as needed).") 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") @@ -566,31 +631,43 @@ format is also supported.") ("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 @@ -608,12 +685,12 @@ format is also supported.") (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) @@ -1012,13 +1089,16 @@ inspired by the SCSH regular expression system.") (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) @@ -1031,7 +1111,7 @@ inspired by the SCSH regular expression system.") ;; 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") @@ -1041,8 +1121,11 @@ inspired by the SCSH regular expression system.") 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")) @@ -1080,7 +1163,7 @@ Guile's foreign function interface.") ("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 @@ -1216,7 +1299,7 @@ key-value cache and store.") (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/" @@ -1224,25 +1307,26 @@ key-value cache and store.") 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, @@ -1252,37 +1336,33 @@ key-value cache and store.") (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 @@ -1299,7 +1379,24 @@ users and in some situations.") 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 @@ -1310,11 +1407,11 @@ users and in some situations.") (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") @@ -1339,20 +1436,21 @@ capabilities.") (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 @@ -1427,6 +1525,55 @@ It currently supports MySQL, Postgres and SQLite3.") 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") @@ -1525,73 +1672,18 @@ is no support for parsing block and inline level HTML.") (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") @@ -1604,6 +1696,9 @@ an abstraction over raw memory. It's also more powerful than the C 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") @@ -1687,7 +1782,11 @@ dictionary and suggesting spelling corrections.") ("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") @@ -1780,8 +1879,8 @@ is not available for Guile 2.0.") (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))) @@ -1791,17 +1890,30 @@ is not available for Guile 2.0.") (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) @@ -1814,6 +1926,9 @@ is not available for Guile 2.0.") 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")) @@ -1826,6 +1941,7 @@ manipulate repositories of the Git version control system.") (uri (git-reference (url "git://dthompson.us/guile-syntax-highlight.git") (commit commit))) + (file-name (string-append name "-" version "-checkout")) (sha256 (base32 "1zjr6sg3n7xbdsliy45i39dqanxvcms58ayx36wxrz72zpq58vq3")))) @@ -1878,4 +1994,49 @@ HTML (via SXML) or any other format for rendering.") 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