help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Wrapping an Emacs dynamic module in a package


From: Stefan Monnier
Subject: Re: Wrapping an Emacs dynamic module in a package
Date: Mon, 17 Oct 2016 09:27:16 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux)

> 1) I wrote an emacs module _mymod.so, as well as wrappers mymod.el (with
> some local setup) and mymod-pkg.el (which only has a call to
> define-package).

FWIW, I doubt you wrote _mymod.so.  Most likely you wrote something like
_mymod.c and then you asked a C compiler and a linker turn that into
a _mycmd.so.

Yes, it's a nitpick, but when you send your bug-report, please try to
use precise wording, because it's often surprisingly easy to introduce
major confusion otherwise.

> In my messages buffer, I see that Emacs tries to generate autoloads for the
> .so, and fails with the error indicated in the original email ("_mymod.so:0:0:
> error: scan-error: (Containing expression ends prematurely 238020
> 238021))").

In your bug-report, please show the corresponding backtrace.

> 1) Should Emacs be able to generate autoloads for an .so?

No.  It shouldn't scan those files for autoloads.

> 2) Does anybody have any experience with embedding an emacs module in an
> emacs package? Any best practices I should be aware of?

You might very well be the first to try it out.

Note, tho, that the ELPA format is a tarball containing .el files,
i.e. *source* files.  Similarly, it should hold _mycmd.c rather than
_mycmd.so.  Then again, package.el doesn't know how to turn that
_mycmd.c into _mycmd.so.   You can probably work around that problem by
adding something like

    (eval-when-compile
      (call-process "cc" nil nil nil <args>))

in your mymod.el (so that when the .el file gets byte-compiled, it
triggers compilation and linking of the C module).

But yes, including the .so *should* happen work (barring bugs) as long
as you're lucky enough to use the package on the right OS with the right
Emacs version, on the right architecture.


        Stefan




reply via email to

[Prev in Thread] Current Thread [Next in Thread]