all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Roman Scherer <roman.scherer@burningswell.com>
To: Maxime Devos <maximedevos@telenet.be>
Cc: 54581@debbugs.gnu.org
Subject: [bug#54581] Add emacs-sqlite3-api package
Date: Fri, 01 Apr 2022 12:11:39 +0200	[thread overview]
Message-ID: <87fsmxkt7v.fsf@burningswell.com> (raw)
In-Reply-To: <11f5d0db1bb596cae8e2ee746a8dc77d5d6bbb37.camel@telenet.be>


[-- Attachment #1.1: Type: text/plain, Size: 68 bytes --]


Ok, thank you. The attached patch uses the inverse condition now.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-Add-emacs-sqlite3-api-package.patch --]
[-- Type: text/x-patch, Size: 4713 bytes --]

From 2f6a85911d6e6542c5ccbbecaf753605008ed7ea 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.

The original source code uses a file called constants.c, which is checked into
the repository, but can be generated by running make in the tools directory of
the source.

However, the procedure to generate this file downloads a list of constants
from the SQLite website. We are patching the scripts to generate those
constants, to not download anything from the internet to have a stable build
process.
---
 gnu/packages/emacs-xyz.scm | 61 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 42fc13f4c2..b3575e9297 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -5731,6 +5731,67 @@ (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 outputs #:allow-other-keys)
+               ;; Remove code that fetches constants from the SQLite website
+               ;; and the call to generate a timestamp.
+               (invoke "sed" "--in-place" "3,4d;24,28d;31d" "tools/gen-consts.sh")
+               ;; Remove filter logic from the script that generates the constants.
+               (invoke "sed" "--in-place" "7,11d;18,22d" "tools/gen-consts.py")
+               ;; Generate the consts.c file.
+               (invoke "make" "--directory=tools")
+               ;; Remove the SQLITE_STATIC and SQLITE_TRANSIENT
+               ;; constants. They cause a compilation warning and would have
+               ;; been removed by the original script.
+               (invoke "sed" "--in-place" "/ifdef SQLITE_STATIC/,+2d" "consts.c")
+               (invoke "sed" "--in-place" "/ifdef SQLITE_TRANSIENT/,+2d" "consts.c")
+               ;; 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? ,(not (%current-target-system))
+         #:test-command '("make" "test" "EMACS=emacs")))
+      (inputs (list sqlite))
+      (native-inputs (list python sed))
+      (home-page "https://github.com/pekingduck/emacs-sqlite3-api")
+      (synopsis "Dynamic module for Emacs to access the SQLite C interface")
+      (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


[-- Attachment #1.3: Type: text/plain, Size: 544 bytes --]


Maxime Devos <maximedevos@telenet.be> writes:

> [[PGP Signed Part:Undecided]]
> Roman Scherer schreef op vr 01-04-2022 om 11:07 [+0200]:
>> I changed the #:tests? keyword to (%current-target-system), but I
>> noticed the tests of the package are now not run anymore when I build
>> the package. Is this expected?
>
> You need the inverse condition:
>
>   #:tests? ,(not (%current-target-system))
>
> otherwise, tests are only run when cross-compiling, and not when
> building natively.
>
> Greetings,
> Maxime.
>
> [[End of PGP Signed Part]]

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 528 bytes --]

  reply	other threads:[~2022-04-01 10:18 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-26 14:09 [bug#54581] Add emacs-sqlite3-api package Roman Scherer
2022-03-26 21:17 ` Maxime Devos
2022-03-26 21:20 ` Maxime Devos
2022-03-26 21:21 ` Maxime Devos
2022-03-26 21:23 ` Maxime Devos
2022-03-26 21:25 ` Maxime Devos
2022-03-27 17:55   ` Roman Scherer
2022-03-27 19:19     ` Maxime Devos
2022-03-27 19:20     ` Maxime Devos
2022-03-27 19:34     ` Maxime Devos
2022-03-27 19:45     ` Maxime Devos
2022-04-01  9:07       ` Roman Scherer
2022-04-01  9:57         ` Maxime Devos
2022-04-01 10:11           ` Roman Scherer [this message]
2022-05-05  7:46             ` Roman Scherer
2022-05-05 10:51               ` Maxime Devos
2022-09-18 12:44             ` bug#54581: " Nicolas Goaziou
2022-09-19  6:46               ` [bug#54581] " Roman Scherer
2022-04-01  9:59         ` Maxime Devos
2022-04-01 10:13           ` Roman Scherer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87fsmxkt7v.fsf@burningswell.com \
    --to=roman.scherer@burningswell.com \
    --cc=54581@debbugs.gnu.org \
    --cc=maximedevos@telenet.be \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.