GNU bug report logs - #77990
[PATCH] gnu: Add emacs-ffi.

Previous Next

Package: guix-patches;

Reported by: "Suhail Singh" <suhailsingh247 <at> gmail.com>

Date: Tue, 22 Apr 2025 15:26:02 UTC

Severity: normal

Tags: patch

Done: Christopher Baines <mail <at> cbaines.net>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Christopher Baines <mail <at> cbaines.net>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#77990: closed ([PATCH] gnu: Add emacs-ffi.)
Date: Sun, 11 May 2025 09:32:01 +0000
[Message part 1 (text/plain, inline)]
Your message dated Sun, 11 May 2025 10:31:11 +0100
with message-id <87selb1okg.fsf <at> cbaines.net>
and subject line Re: [bug#77990] [PATCH v2] gnu: Add emacs-ffi.
has caused the debbugs.gnu.org bug report #77990,
regarding [PATCH] gnu: Add emacs-ffi.
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
77990: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=77990
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: "Suhail Singh" <suhailsingh247 <at> gmail.com>
To: guix-patches <at> gnu.org
Subject: [PATCH] gnu: Add emacs-ffi.
Date: Tue, 22 Apr 2025 10:51:53 -0400
* gnu/packages/emacs-xyz.scm (emacs-ffi): New variable.

Change-Id: I3379ff4728d3e3f45d5327978b5e284fcc0e664e
---
 gnu/packages/emacs-xyz.scm | 53 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 08bd88fd08..efdb658bf7 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -236,6 +236,7 @@ (define-module (gnu packages emacs-xyz)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages image)
   #:use-module (gnu packages image-viewers)
+  #:use-module (gnu packages libffi)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages lisp)
@@ -23092,6 +23093,58 @@ (define-public emacs-display-wttr
 @uref{https://wttr.in} and then displays it on the mode line.")
     (license license:gpl3+)))
 
+(define-public emacs-ffi
+  (package
+    (name "emacs-ffi")
+    (version "0.2.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emacs-ffi/emacs-ffi")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "05crpgscpbzkg4k0ylbfjz2wyw2r8lki8q9w2kmdpljsqrpdrwl0"))))
+    (build-system emacs-build-system)
+    (arguments
+     (list
+      #:tests? (not (%current-target-system))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-module-load
+            (lambda _
+              (make-file-writable "src/ffi.el")
+              (emacs-substitute-sexps "src/ffi.el"
+                ("(require 'ffi-module nil t)"
+                 `(module-load
+                   ,(string-append #$output "/lib/ffi-module.so"))))))
+          (add-before 'check 'build-emacs-module
+            (lambda _
+              ;; Compile the shared object file.
+              (invoke "make"
+                      #$(string-append "CC="
+                                       (cc-for-target)))
+              ;; Copy the build artifacts to root and let the install phase do
+              ;; its thing
+              (copy-recursively "build/lib" ".")
+              ;; Install the shared object file into /lib.
+              (install-file "build/lib/ffi-module.so"
+                            (string-append #$output "/lib"))))
+          (add-before 'install 'installinfo
+            (lambda _
+              (install-file "build/doc/emacs-ffi.info"
+                            (string-append #$output "/share/info")))))))
+    (inputs (list emacs-compat libltdl libffi))
+    (native-inputs (list texinfo))
+    (home-page "https://emacs-ffi.github.io/emacs-ffi/")
+    (synopsis "FFI for Emacs based in libffi")
+    (description
+     "This package provides an FFI for Emacs.  It is based on
+libffi and relies on the dynamic module support in order to be loaded into
+Emacs.  It is relatively full-featured, but for the time being low-level.")
+    (license license:gpl3+)))
+
 (define-public emacs-free-keys
   (package
     (name "emacs-free-keys")

base-commit: c8194a529724721e2b96e0fe259cd92b63ff57aa


[Message part 3 (message/rfc822, inline)]
From: Christopher Baines <mail <at> cbaines.net>
To: Suhail Singh <suhailsingh247 <at> gmail.com>
Cc: Cayetano Santos <csantosb <at> inventati.org>, 77990-done <at> debbugs.gnu.org
Subject: Re: [bug#77990] [PATCH v2] gnu: Add emacs-ffi.
Date: Sun, 11 May 2025 10:31:11 +0100
[Message part 4 (text/plain, inline)]
Suhail Singh <suhailsingh247 <at> gmail.com> writes:

> Cayetano Santos <csantosb <at> inventati.org> writes:
>
>>> +              ;; Install the shared object file into /lib.
>>> +              (install-file "build/lib/ffi-module.so"
>>> +                            (string-append #$output "/lib"))))
>>
>> I have a doubt about where do we  put .so files.
>>
>> - lib
>> - lib/package
>> - lib/emacs (see emacs-jinx)
>>
>> Other than this, LFTM.
>
> IIUC the standard place for shared libraries is in #$output/lib.  I
> don't know of any reason to deviate from that in this case.  To the
> extent it matters, at least one other dynamic module (emacs-sqlite3-api)
> also uses that convention.
>
> I'm no authority, but it seems that Emacs dynamic modules are simply
> less consistent about storing libraries in the standard location, rather
> than there being a principled reason against using the standard
> convention.
>
> Thanks for the review.

Thanks both, I've pushed this to master as
65dea0cde084dc364dbd0dbd51e589733951fed6.

Chris
[signature.asc (application/pgp-signature, inline)]

This bug report was last modified 67 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.