gnu: emacs-emacsql: Update to 3.1.1-0.e1baaf2.

There is an issue in release version, which affects sqlite based packages
like org-roam, forge, etc.
https://github.com/magit/emacsql/issues/68

* gnu/packages/emacs-xyz.scm (emacs-emacsql): Update to 3.1.1-0.e1baaf2.
[arguments]<#:phases>{remove-sqlite-builtin}: New phase.
This commit is contained in:
Andrew Tropin 2023-02-04 08:36:03 +04:00
parent c3e50c731d
commit 7cea27a8d5
No known key found for this signature in database
GPG key ID: 2208D20958C1DEB0

View file

@ -20406,69 +20406,77 @@ object has been freed.")
(license license:unlicense))) (license license:unlicense)))
(define-public emacs-emacsql (define-public emacs-emacsql
(package (let ((commit "e1baaf2f874df7f9259a8ecca978e03d3ddae5b5")
(name "emacs-emacsql") (revision "0"))
(version "3.1.1") (package
(source (name "emacs-emacsql")
(origin (version (git-version "3.1.1" revision commit))
(method git-fetch) (source
(uri (git-reference (origin
(url "https://github.com/magit/emacsql") (method git-fetch)
(commit (string-append version)))) (uri (git-reference
(file-name (git-file-name name version)) (url "https://github.com/magit/emacsql")
(sha256 (commit commit)))
(base32 "1xpmji2qgr9r38cdhws65x9s9jy7fk93q8g1j2fm7j8kcfjh9x3g")))) (file-name (git-file-name name version))
(build-system emacs-build-system) (sha256
(arguments (base32 "0dvqs1jg5zqn0i3r67sn1a40h5rm961q9vxvmqxbgvdhkjvip8fn"))))
(list (build-system emacs-build-system)
#:tests? #true (arguments
#:test-command #~(list "emacs" "-Q" "--batch" (list
"-L" "tests" #:tests? #true
"-L" "." #:test-command #~(list "emacs" "-Q" "--batch"
"-l" "tests/emacsql-tests.el" "-L" "tests"
"-f" "ert-run-tests-batch-and-exit") "-L" "."
#:modules '((guix build emacs-build-system) "-l" "tests/emacsql-tests.el"
(guix build utils) "-f" "ert-run-tests-batch-and-exit")
(guix build emacs-utils) #:modules '((guix build emacs-build-system)
(srfi srfi-26)) (guix build utils)
#:phases (guix build emacs-utils)
#~(modify-phases %standard-phases (srfi srfi-26))
(add-before 'install 'patch-elisp-shell-shebangs #:phases
(lambda _ #~(modify-phases %standard-phases
(substitute* (find-files "." "\\.el") (add-before 'install 'remove-sqlite-builtin
(("/bin/sh") (which "sh"))))) ;; Current emacs 28.2 doesn't have sqlite feature and compilation
(add-after 'patch-elisp-shell-shebangs 'setenv-shell ;; of this file fails. This phase should be removed, when emacs
(lambda _ ;; package is updated to 29.
(setenv "SHELL" "sh"))) (lambda _
(add-after 'setenv-shell 'build-emacsql-sqlite (delete-file "emacsql-sqlite-builtin.el")))
(lambda _ (add-before 'install 'patch-elisp-shell-shebangs
(invoke "make" "binary" (string-append "CC=" #$(cc-for-target))))) (lambda _
(add-after 'build-emacsql-sqlite 'install-emacsql-sqlite (substitute* (find-files "." "\\.el")
;; This build phase installs emacs-emacsql binary. (("/bin/sh") (which "sh")))))
(lambda _ (add-after 'patch-elisp-shell-shebangs 'setenv-shell
(install-file "sqlite/emacsql-sqlite" (lambda _
(string-append #$output "/bin")))) (setenv "SHELL" "sh")))
(add-after 'install-emacsql-sqlite 'patch-emacsql-sqlite.el (add-after 'setenv-shell 'build-emacsql-sqlite
;; This build phase removes interactive prompts (lambda _
;; and makes sure Emacs look for binaries in the right places. (invoke "make" "binary" (string-append "CC=" #$(cc-for-target)))))
(lambda _ (add-after 'build-emacsql-sqlite 'install-emacsql-sqlite
(emacs-substitute-variables "emacsql-sqlite.el" ;; This build phase installs emacs-emacsql binary.
("emacsql-sqlite-executable" (lambda _
(string-append #$output "/bin/emacsql-sqlite")) (install-file "sqlite/emacsql-sqlite"
;; Make sure Emacs looks for GCC binary in the right place. (string-append #$output "/bin"))))
("emacsql-sqlite-c-compilers" (add-after 'install-emacsql-sqlite 'patch-emacsql-sqlite.el
`(list ,(which "gcc"))))))))) ;; This build phase removes interactive prompts
(inputs ;; and makes sure Emacs look for binaries in the right places.
(list emacs-minimal `(,mariadb "dev") `(,mariadb "lib") postgresql)) (lambda _
(propagated-inputs (emacs-substitute-variables "emacsql-sqlite.el"
(list emacs-finalize emacs-pg)) ("emacsql-sqlite-executable"
(home-page "https://github.com/magit/emacsql") (string-append #$output "/bin/emacsql-sqlite"))
(synopsis "Emacs high-level SQL database front-end") ;; Make sure Emacs looks for GCC binary in the right place.
(description "Any readable Lisp value can be stored as a value in EmacSQL, ("emacsql-sqlite-c-compilers"
`(list ,(which "gcc")))))))))
(inputs
(list emacs-minimal `(,mariadb "dev") `(,mariadb "lib") postgresql))
(propagated-inputs
(list emacs-finalize emacs-pg emacs-sqlite3-api))
(home-page "https://github.com/magit/emacsql")
(synopsis "Emacs high-level SQL database front-end")
(description "Any readable Lisp value can be stored as a value in EmacSQL,
including numbers, strings, symbols, lists, vectors, and closures. EmacSQL including numbers, strings, symbols, lists, vectors, and closures. EmacSQL
has no concept of @code{TEXT} values; it's all just Lisp objects. The Lisp has no concept of @code{TEXT} values; it's all just Lisp objects. The Lisp
object @code{nil} corresponds 1:1 with @code{NULL} in the database.") object @code{nil} corresponds 1:1 with @code{NULL} in the database.")
(license license:gpl3+))) (license license:gpl3+))))
(define-public emacs-emacsql-sqlite3 (define-public emacs-emacsql-sqlite3
(package (package