Message ID | 87zglbs1hp.fsf@burningswell.com |
---|---|
State | Accepted |
Headers | show |
Series | [bug#54581] Add emacs-sqlite3-api package | expand |
Roman Scherer schreef op zo 27-03-2022 om 19:55 [+0200]: > + (add-before 'check 'build-emacs-module > + (lambda* (#:key (make-flags '()) outputs #:allow-other- > keys) 'make-flags' can be removed here.
Roman Scherer schreef op zo 27-03-2022 om 19:55 [+0200]:
> + #:tests? #t
To allow (*) cross-compilation, this needs to be #:tests? ,(%current-
target-system).
(*) cross-compilation won't work yet because Emacs is not yet cross-
compilable.
Greetings,
Maxime.
Roman Scherer schreef op zo 27-03-2022 om 19:55 [+0200]: > But I also wonder if generating the consts.c file is actually better > than just using the checked in consts.c file. The command to generate > the file fetches a web page from the Sqlite website and builds the > consts.c file with this information. And I think this is kind of a > brittle approach. How would this approach would even work with > Software > heritage? As-is, it won't even build, because the build container does not have network access. Something you could try, is adding an origin to the 'inputs': (package (name "emacs-sqlite...") (inputs `(("web-page" ,(origin [...] https://sqlite.org/c3ref/constlist.html [...]))))) and do some appropriate substitutions. Problem is that this page is not stable ... To resolve this, you could modify gen-consts.py to not use the web page to filter things out, basically, delete: useful_codes = [] with open(sys.argv[1]) as f: for l in f.readlines(): useful_codes.append(l.rstrip()) and #print("{0}".format(fields[1])) if not fields[1] in useful_codes: #print("{0} excluded".format(fields[1])) continue and strip out the curl stuff from gen-consts.sh. If you do this, don't forget to remove the non-deterministic NOW=$(date ...). Greetings, Maxime.
Roman Scherer schreef op zo 27-03-2022 om 19:55 [+0200]: > I think my preference would be to go without generating the consts.c > file, the patch works, it uses the same file the maintainer of the > packages is using, and I believe it is less brittle. :) I don't expect any practical problems but technically it isn't source code, and rather a binary (or, as GPL words it, ‘object code’), at least according to the GPL's definition: The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. , and Guix builds things from source. I don't think constants.c is in preferred form, rather it seems to be sqlite.h Maybe it's not much of a problem here though, I donk't know. I don't see the relevancy of what files the maintainer is using. What does maintainerhood have to do with anything? Greetings, Maxime.
From f2726c3c87d890dfb547e7e9de880c5c57954ccf Mon Sep 17 00:00:00 2001 From: r0man <roman@burningswell.com> Date: Sat, 26 Mar 2022 14:59:01 +0100 Subject: [PATCH] Add emacs-sqlite3-api package This patch adds the emacs-sqlite3-api package to Guix. The package provides a dynamic module for Emacs that allows direct access to the SQLite C interface. It only exposes a subset of the full SQLite C interface, but should satisfy most user's needs. --- gnu/packages/emacs-xyz.scm | 51 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 42fc13f4c2..87595db74c 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -5731,6 +5731,57 @@ (define-public emacs-sqlite It is not intended as a user interface.") (license license:gpl3+)))) +(define-public emacs-sqlite3-api + (let ((version "0.15") + (revision "0") + (commit "7cb4b660fe30deb8a4229f3abb18bd99ca9c971c")) + (package + (name "emacs-sqlite3-api") + (version (git-version version revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pekingduck/emacs-sqlite3-api") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1b7if1dp6i5kqwhq25gna89xbca66i4mmgx1a5yn12kncfdgs6d7")))) + (build-system emacs-build-system) + (arguments + `(#:modules ((guix build emacs-build-system) + (guix build emacs-utils) + (guix build utils)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-module-load + (lambda* (#:key outputs #:allow-other-keys) + (chmod "sqlite3.el" #o644) + (emacs-substitute-sexps "sqlite3.el" + ("(require 'sqlite3-api nil t)" + `(module-load ,(string-append (assoc-ref outputs "out") + "/lib/sqlite3-api.so")))))) + (add-before 'check 'build-emacs-module + (lambda* (#:key (make-flags '()) outputs #:allow-other-keys) + ;; Generate the consts.c file. + (invoke "make" "--directory=tools") + ;; Compile the shared object file. + (invoke "make" (string-append "CC=" ,(cc-for-target))) + ;; Move the shared object file into /lib. + (install-file "sqlite3-api.so" + (string-append (assoc-ref outputs "out") + "/lib"))))) + #:tests? #t + #:test-command '("make" "test" "EMACS=emacs"))) + (inputs (list sqlite)) + (native-inputs (list curl pandoc python)) + (home-page "https://github.com/pekingduck/emacs-sqlite3-api") + (synopsis "SQLite dynamic module for Emacs Lisp") + (description "This package provides a dynamic module for Emacs that allows +direct access to the SQLite C interface. It only exposes a subset of the full +SQLite C interface, but should satisfy most user's needs.") + (license license:gpl3+)))) + (define-public emacs-sr-speedbar (let ((commit "77a83fb50f763a465c021eca7343243f465b4a47") (revision "0")) -- 2.34.0